<?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>166809</bug_id>
          
          <creation_ts>2017-01-07 09:27:10 -0800</creation_ts>
          <short_desc>Remove PassRefPtr from more of &quot;platform&quot;</short_desc>
          <delta_ts>2018-01-29 06:35:46 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264708</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-07 09:27:10 -0800</bug_when>
    <thetext>Remove PassRefPtr from more of &quot;platform&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264755</commentid>
    <comment_count>1</comment_count>
      <attachid>298285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-07 14:07:54 -0800</bug_when>
    <thetext>Created attachment 298285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264757</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-07 14:10:33 -0800</bug_when>
    <thetext>Attachment 298285 did not pass style-queue:


ERROR: Source/WebCore/platform/animation/Animation.h:73:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 86 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264764</commentid>
    <comment_count>3</comment_count>
      <attachid>298287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-07 15:38:59 -0800</bug_when>
    <thetext>Created attachment 298287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264767</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-07 15:41:49 -0800</bug_when>
    <thetext>Attachment 298287 did not pass style-queue:


ERROR: Source/WebCore/platform/animation/Animation.h:73:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264774</commentid>
    <comment_count>5</comment_count>
      <attachid>298287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:44:20 -0800</bug_when>
    <thetext>Comment on attachment 298287
Patch

Attachment 298287 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/2851138

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264775</commentid>
    <comment_count>6</comment_count>
      <attachid>298291</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:44:23 -0800</bug_when>
    <thetext>Created attachment 298291
Archive of layout-test-results from ews113 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews113  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264776</commentid>
    <comment_count>7</comment_count>
      <attachid>298287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:45:46 -0800</bug_when>
    <thetext>Comment on attachment 298287
Patch

Attachment 298287 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/2851147

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264777</commentid>
    <comment_count>8</comment_count>
      <attachid>298292</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:45:49 -0800</bug_when>
    <thetext>Created attachment 298292
Archive of layout-test-results from ews101 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264778</commentid>
    <comment_count>9</comment_count>
      <attachid>298287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:45:52 -0800</bug_when>
    <thetext>Comment on attachment 298287
Patch

Attachment 298287 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2851139

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264779</commentid>
    <comment_count>10</comment_count>
      <attachid>298293</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 16:45:55 -0800</bug_when>
    <thetext>Created attachment 298293
Archive of layout-test-results from ews105 for mac-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews105  Port: mac-elcapitan-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264782</commentid>
    <comment_count>11</comment_count>
      <attachid>298287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 17:00:30 -0800</bug_when>
    <thetext>Comment on attachment 298287
Patch

Attachment 298287 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2851160

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264783</commentid>
    <comment_count>12</comment_count>
      <attachid>298295</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-07 17:00:32 -0800</bug_when>
    <thetext>Created attachment 298295
Archive of layout-test-results from ews121 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews121  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264808</commentid>
    <comment_count>13</comment_count>
      <attachid>298300</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-08 01:48:36 -0800</bug_when>
    <thetext>Created attachment 298300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264809</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-08 01:51:49 -0800</bug_when>
    <thetext>Attachment 298300 did not pass style-queue:


ERROR: Source/WebCore/platform/animation/Animation.h:73:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264810</commentid>
    <comment_count>15</comment_count>
      <attachid>298300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 02:55:55 -0800</bug_when>
    <thetext>Comment on attachment 298300
Patch

Attachment 298300 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/2853037

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264811</commentid>
    <comment_count>16</comment_count>
      <attachid>298301</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 02:55:58 -0800</bug_when>
    <thetext>Created attachment 298301
Archive of layout-test-results from ews100 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews100  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264812</commentid>
    <comment_count>17</comment_count>
      <attachid>298300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 02:56:39 -0800</bug_when>
    <thetext>Comment on attachment 298300
Patch

Attachment 298300 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2853036

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264813</commentid>
    <comment_count>18</comment_count>
      <attachid>298302</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 02:56:43 -0800</bug_when>
    <thetext>Created attachment 298302
Archive of layout-test-results from ews107 for mac-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-elcapitan-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264814</commentid>
    <comment_count>19</comment_count>
      <attachid>298300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 03:00:52 -0800</bug_when>
    <thetext>Comment on attachment 298300
Patch

Attachment 298300 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/2853027

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264815</commentid>
    <comment_count>20</comment_count>
      <attachid>298303</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 03:00:55 -0800</bug_when>
    <thetext>Created attachment 298303
Archive of layout-test-results from ews113 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews113  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264816</commentid>
    <comment_count>21</comment_count>
      <attachid>298300</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 03:14:20 -0800</bug_when>
    <thetext>Comment on attachment 298300
Patch

Attachment 298300 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2853047

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264817</commentid>
    <comment_count>22</comment_count>
      <attachid>298304</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-08 03:14:23 -0800</bug_when>
    <thetext>Created attachment 298304
Archive of layout-test-results from ews121 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews121  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264920</commentid>
    <comment_count>23</comment_count>
      <attachid>298337</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-09 02:39:06 -0800</bug_when>
    <thetext>Created attachment 298337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265302</commentid>
    <comment_count>24</comment_count>
      <attachid>298447</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-09 23:46:04 -0800</bug_when>
    <thetext>Created attachment 298447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265660</commentid>
    <comment_count>25</comment_count>
      <attachid>298547</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-10 19:29:53 -0800</bug_when>
    <thetext>Created attachment 298547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265671</commentid>
    <comment_count>26</comment_count>
      <attachid>298551</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-10 20:46:14 -0800</bug_when>
    <thetext>Created attachment 298551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265682</commentid>
    <comment_count>27</comment_count>
      <attachid>298554</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-10 22:05:39 -0800</bug_when>
    <thetext>Created attachment 298554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265688</commentid>
    <comment_count>28</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-10 23:16:09 -0800</bug_when>
    <thetext>930KB!?!?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265690</commentid>
    <comment_count>29</comment_count>
      <attachid>298554</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-10 23:22:46 -0800</bug_when>
    <thetext>Comment on attachment 298554
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        * wtf/Ref.h: Changed the template so that a const Ref&lt;T&gt; does not prohibit non-const
&gt; +        use of T. We can still use const Ref&lt;const T&gt; to express that. The earlier design

Might I suggest doing just this in one patch and removing the const_casts?  Then the rest of this patch would go through EWS much faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265695</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-10 23:55:12 -0800</bug_when>
    <thetext>I can break up the patch in that way, and many other ways too.

But that approach won’t get me through EWS faster, unless it’s actually landed. I can’t upload the rest of the patch until after it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265698</commentid>
    <comment_count>31</comment_count>
      <attachid>298558</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-11 00:06:45 -0800</bug_when>
    <thetext>Created attachment 298558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265728</commentid>
    <comment_count>32</comment_count>
      <attachid>298558</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-11 03:10:32 -0800</bug_when>
    <thetext>Comment on attachment 298558
Patch

Attachment 298558 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2868890

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265729</commentid>
    <comment_count>33</comment_count>
      <attachid>298566</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-11 03:10:37 -0800</bug_when>
    <thetext>Created attachment 298566
Archive of layout-test-results from ews107 for mac-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-elcapitan-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265776</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-11 09:24:03 -0800</bug_when>
    <thetext>Hooray, looks like it’s building on all platforms now. Tonight I have to figure out why those tests failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266060</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-11 20:49:05 -0800</bug_when>
    <thetext>Test failures don’t look like they are caused by the patch; look like EWS malfunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266311</commentid>
    <comment_count>36</comment_count>
      <attachid>298558</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-12 15:01:37 -0800</bug_when>
    <thetext>Comment on attachment 298558
Patch

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

partial review.  This patch is huge.

&gt; Source/WebCore/ChangeLog:573
&gt; +        * rendering/style/StyleBackgroundData.cpp: Update data member names.
&gt; +        * rendering/style/StyleBackgroundData.h: Ditto; make them public and remove the
&gt; +        getter functions.

Don&apos;t we usually make such classes into structs?

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:-2899
&gt; -            // NOTE: Gecko always returns this as a comma-separated CSSPrimitiveValue string.

Would it be useful to keep this comment around?  Is it a problem that we behave differently than Gecko?  Is there a spec?

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3608
&gt; +            if (auto* animList = style-&gt;transitions()) {

If we&apos;re dropping the type in favor of auto, we should probably change the variable name to animationList.

&gt; Source/WebCore/css/StyleBuilderCustom.h:64
&gt; +inline Length forwardInheritedValue(const Length&amp; value) { auto copy = value; return copy; }
&gt; +inline LengthSize forwardInheritedValue(const LengthSize&amp; value) { auto copy = value; return copy; }
&gt; +inline LengthBox forwardInheritedValue(const LengthBox&amp; value) { auto copy = value; return copy; }

Are we sure we only want to copy these three types?  Could we make these a template, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266406</commentid>
    <comment_count>37</comment_count>
      <attachid>298747</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-12 18:53:56 -0800</bug_when>
    <thetext>Created attachment 298747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266476</commentid>
    <comment_count>38</comment_count>
      <attachid>298747</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-13 09:27:07 -0800</bug_when>
    <thetext>Comment on attachment 298747
Patch

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

Very nice.  My biggest takeaway from reading this is that our list-like classes need iterators so they can participate in modern-for-loops more cleanly.

&gt; Source/WebCore/page/PrintContext.cpp:311
&gt; +        return String::number(style-&gt;pageSize().width.value()) + &apos; &apos; + String::number(style-&gt;pageSize().height.value());

Would be nice to have a makeString overload that that allowed passing numbers if we don&apos;t have one already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266738</commentid>
    <comment_count>39</comment_count>
      <attachid>298558</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-13 19:30:00 -0800</bug_when>
    <thetext>Comment on attachment 298558
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:573
&gt;&gt; +        getter functions.
&gt; 
&gt; Don&apos;t we usually make such classes into structs?

Sure; I could do that with all of these. The downside is that all of these style data classes have some private members as well as the public members, so they feel like a bit of a hybrid. But I think they should be structs, eventually if not immediately.

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:-2899
&gt;&gt; -            // NOTE: Gecko always returns this as a comma-separated CSSPrimitiveValue string.
&gt; 
&gt; Would it be useful to keep this comment around?  Is it a problem that we behave differently than Gecko?  Is there a spec?

No, it would not. There is a specification, CSS 2.1, that says this should be &quot;as specified&quot; and I am pretty sure that this is both tested and behaves as it should. This comment is from a very old period in this project; it’s likely that Firefox no longer behaves this way, in fact, but not really worth researching.

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3608
&gt;&gt; +            if (auto* animList = style-&gt;transitions()) {
&gt; 
&gt; If we&apos;re dropping the type in favor of auto, we should probably change the variable name to animationList.

Good point, I agree that would be better.

&gt;&gt; Source/WebCore/css/StyleBuilderCustom.h:64
&gt;&gt; +inline LengthBox forwardInheritedValue(const LengthBox&amp; value) { auto copy = value; return copy; }
&gt; 
&gt; Are we sure we only want to copy these three types?  Could we make these a template, too?

Yes, I am sure about this; we only want to copy types where it’s necessary to make a copy to compile. Moving is OK for all other cases.

No, there is no simple way to make these three a template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266743</commentid>
    <comment_count>40</comment_count>
      <attachid>298747</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-13 19:33:05 -0800</bug_when>
    <thetext>Comment on attachment 298747
Patch

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

&gt;&gt; Source/WebCore/page/PrintContext.cpp:311
&gt;&gt; +        return String::number(style-&gt;pageSize().width.value()) + &apos; &apos; + String::number(style-&gt;pageSize().height.value());
&gt; 
&gt; Would be nice to have a makeString overload that that allowed passing numbers if we don&apos;t have one already.

I agree. Would even be pretty simple. We don’t have one yet. I added this for StringBuilder a while back, but not for makeString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266746</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-13 19:34:19 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; My biggest takeaway from reading this is that our list-like
&gt; classes need iterators so they can participate in modern-for-loops more
&gt; cleanly.

I definitely noticed that, too. Another fix for this in many cases is to just use Vector directly instead of defining a class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266747</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-13 19:37:05 -0800</bug_when>
    <thetext>Committed r210758: &lt;http://trac.webkit.org/changeset/210758&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394061</commentid>
    <comment_count>43</comment_count>
      <attachid>298747</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-01-29 06:35:46 -0800</bug_when>
    <thetext>Comment on attachment 298747
Patch

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

&gt; Source/WTF/ChangeLog:13
&gt; +        * wtf/Ref.h: Changed the template so that a const Ref&lt;T&gt; does not prohibit non-const
&gt; +        use of T. We can still use const Ref&lt;const T&gt; to express that. The earlier design
&gt; +        was intentional, but was not consistent with either actual references or with
&gt; +        other smart pointer classes like RefPtr. One way to see how much better this is,
&gt; +        is to see all the many, many cases where we have const_cast just to work around
&gt; +        this. I searched for those and included fixes for many in this patch.

Still not a fan of stealth const_casting over doing it explicitly but I suppose consistency with std::unique_ptr is a decent argument for it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298285</attachid>
            <date>2017-01-07 14:07:54 -0800</date>
            <delta_ts>2017-01-07 15:38:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170107140621.patch</filename>
            <type>text/plain</type>
            <size>201762</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2JkMTI1ODBlZWFkNjlkNzEyOTQ4ZmUyZmE5Yzc3NzdjNDFkN2E2Li4xOGMzZGVjZmFiMDJjMmFl
MWRjZjNkYzFkMWZiYmYxMjFiYTVkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
c2xpY2UgaW50cmluc2ljIHRvIHRoZSBERkcvRlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5ZTdhMzcyNDM0NDBlZTFjNTQy
ZDU0MTBhYmFkYmY2YjU0ZjE3OTEuLjVmODM5YmRkZjVmNmMxMzRkNjE4OWZlNDU5MWQxNGJmNWEx
NGZkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDEtMDcgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBvZiAi
cGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDogQ2hhbmdlZCB0aGUgdGVtcGxhdGUgc28gdGhhdCBhIGNvbnN0IFJlZjxU
PiBkb2VzIG5vdCBwcm9oaWJpdCBub24tY29uc3QKKyAgICAgICAgdXNlIG9mIFQuIFdlIGNhbiBz
dGlsbCB1c2UgY29uc3QgUmVmPGNvbnN0IFQ+IHRvIGV4cHJlc3MgdGhhdC4gVGhlIGVhcmxpZXIg
ZGVzaWduCisgICAgICAgIHdhcyBpbnRlbnRpb25hbCwgYnV0IHdhcyBub3QgY29uc2lzdGVudCB3
aXRoIGVpdGhlciBhY3R1YWwgcmVmZXJlbmNlcyBvciB3aXRoCisgICAgICAgIG90aGVyIHNtYXJ0
IHBvaW50ZXIgY2xhc3NlcyBsaWtlIFJlZlB0ci4gT25lIHdheSB0byBzZWUgaG93IG11Y2ggYmV0
dGVyIHRoaXMgaXMsCisgICAgICAgIGlzIHRvIHNlZSBhbGwgdGhlIG1hbnksIG1hbnkgY2FzZXMg
d2hlcmUgd2UgaGF2ZSBjb25zdF9jYXN0IGp1c3QgdG8gd29yayBhcm91bmQKKyAgICAgICAgdGhp
cy4gSSBzZWFyY2hlZCBmb3IgdGhvc2UgYW5kIGluY2x1ZGVkIGZpeGVzIGZvciBtYW55IGluIHRo
aXMgcGF0Y2guCisKIDIwMTctMDEtMDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYXJldHMgY2FuIHNwbGl0IHVwIG1hcnJpYWdlcyBhbmQgZmFt
aWxpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBkYjZlMWNlZWUwZWYyNzY5MGI0NmVjMDZlZTkxYWRiM2JkYjM0
NDIwLi44OTMyNmZkMjU5ZTBlNzdhYWViYjIzZTRkMWY3OGMxMjk4M2QxNTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzE2IEBACisyMDE3LTAxLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1vcmUgb2YgInBsYXRmb3Jt
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcC4KKworICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgor
ICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg6IFR3ZWFrcywgbXNh
ZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQgZmluYWwuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFp
bDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6
On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6IFVwZGF0ZSB0byB1c2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVy
cy4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRpbWluZ0Z1bmN0aW9uVmFsdWUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0QW5pbWF0aW9uVHJpZ2dlclZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6aW1h
Z2UpOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlm
cmFtZXNSdWxlOjppdGVtKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBE
aXR0by4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OmZhbWlseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0eWxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6d2VpZ2h0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6dmFyaWFudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncyk6IERpdHRvLgorCisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6IFBhc3MgcmVmZXJlbmNlcyB3aGVuCisgICAgICAgIGNy
ZWF0aW5nIFNoYXBlVmFsdWUuCisKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KTogVXNl
IGF1dG8uCisKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMaXZlTm9kZUxpc3Q6Om93bmVyTm9kZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25z
dF9jYXN0LgorCisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlRXZlbnQ6OnNvdXJjZSk6IFJlbW92ZWQgdW5uZWVkZWQgc3RhdGljX2Nhc3Qu
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJl
VHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKTogVHdlYWtlZCBmb3JtYXR0aW5nLgor
CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6b3duZXJE
b2N1bWVudCk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAq
IGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6OmNhbGxiYWNrKTogRGl0dG8uCisgICAgICAgICogZG9tL1Njcmlw
dFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5u
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRl
bTo6bm9kZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQpOiBDdXQgZG93biBvbiB0aGUgbnVtYmVyCisgICAgICAgIG9mIGRpZmZl
cmVudCBmdW5jdGlvbnMgaGVyZS4gQWxzbyB1c2UgcmVmZXJlbmNlIHJhdGhlciB0aGFuIHBvaW50
ZXIuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oOiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFBy
b3Zpc2lvbmFsSXRlbSk6IFJlbW92ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9j
YXN0LgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9J
dGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpvd25lclJlbmRlcmVyKTogVXNlIGF1dG8uIExldCB0aGUgaXM8PiBmdW5jdGlv
biBkbyBudWxsCisgICAgICAgIGNoZWNraW5nIGZvciB1cy4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpmcmFtZUZvcldpZGdldCk6IFRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2lu
dGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjppbnZhbGlkYXRlUmVjdCk6IFVzZSBDaHJvbWUgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZwor
ICAgICAgICBIb3N0V2luZG93LiBIb3N0V2luZG93IGlzIGFuIGFic3RyYWN0aW9uIGZvciB0aGUg
cGxhdGZvcm0gbGF5ZXIsIGFuZCB0aGVyZQorICAgICAgICBpcyBubyBnb29kIHJlYXNvbiB0byB1
c2UgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1bGVBbmltYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Z3JhcGhpY3NMYXllckZv
clBsYXRmb3JtV2lkZ2V0KTogVXBkYXRlZCB0byB1c2UgcmVmZXJlbmNlCisgICAgICAgIHdoZW4g
Y2FsbGluZyBSZW5kZXJXaWRnZXQ6OmZpbmQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOiBVc2UgQ2hyb21lIGluc3RlYWQgb2YgSG9zdFdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6IFVzZSBlYXJseSBy
ZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6
IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0aHJvdWdoIHRvIGJhc2UKKyAgICAgICAgY2xhc3MgZnVu
Y3Rpb24sIHdoaWNoIHdhcyBlbXB0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aGFz
Q3VzdG9tU2Nyb2xsYmFycyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cKKyAg
ICAgICAgY29udGFpbnMgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KTogVXNlIGVhcmx5IHJldHVybi4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25zKTogVXNlIHJlZmVyZW5j
ZSBpbnN0ZWFkIG9mIHBvaW50ZXIuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDogVXNlIGZp
bmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIFJlbW92ZSBub3ctdW5uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVn
aW5WaWV3cyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMKKyAg
ICAgICAgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Zmly
ZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0bworICAgICAg
ICB0aGUgdHlwZXMgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uIG1lbWJlcnMuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZy
YW1lKTogVHdlYWtlZCB0bworICAgICAgICB1c2UgYXV0bywgcGFzcyByZWZlcmVuY2VzLgorCisg
ICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
cy5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQYXNz
UmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKTogVGFrZQorICAgICAgICBhIHJl
ZmVyZW5jZS4gSW5pdGlhbGl6ZSBkYXRhIG1lbWJlcnMgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSk6IFJldHVybiBSZWYgcmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGQpOiBUYWtlIGEgcmVmZXJlbmNlIHJh
dGhlciB0aGFuIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNl
dEhhc1Njcm9sbGJhckludGVybmFsKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGFkZENoaWxkCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogRGVs
ZXRlZC4gVGhpcyB3YXMgbmV2ZXIgY2FsbGVkLAorICAgICAgICBzbyBtYWRlIGl0IHB1cmUgdmly
dHVhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKTog
VXNlIGEgbW9kZXJuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2xp
cFJlY3RDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxDb3JuZXIpOiBEZWxldGVkLiBUaGlzIHdhcyBlbXB0eSBzbyBtYWRlIGl0IHB1cmUK
KyAgICAgICAgdmlydHVhbCBhbmQgY2hhbmdlZCBGcmFtZVZpZXcgdG8gbm90IGNhbGwgaXQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKTogVXNlIGEgbWRv
cmVuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aGlkZSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuaDogQ2hhbmdlZCB0aGUgY2hpbGRyZW4gc2V0IHRvIGNvbnRh
aW4gUmVmIGluc3RlYWQgb2YgUmVmUHRyLgorICAgICAgICBDaGFuZ2VkIGZ1bmN0aW9ucyB0aGF0
IHdlcmUgbmV2ZXIgb3ZlcnJpZGRlbiB0byBlaXRoZXIgYmUgZmluYWwgb3Igbm9uLXZpcnR1YWws
CisgICAgICAgIENoYW5nZWQgZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBjYWxsZWQgdG8gYmUg
cHVyZSB2aXJ0dWFsLgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5o
OiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgorICAgICAgICBy
YXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRpbWluZ0Z1bmN0
aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5kIFJlZiYmIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rpb24gYW5kCisg
ICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50IGNoZWNrIGlu
IEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25MaXN0OjpB
bmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJlZiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250YWluIFJlZiBp
bnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudAor
ICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y2xv
bmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRl
ZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisg
ICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBSZWZQdHIgaW5z
dGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
Lmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9yZQorICAgICAg
ICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGluZyB0byBSZWYg
aW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIFBhc3NSZWZQ
dHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6IFJldHVy
biBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZS4gTWFkZSBl
dmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2YgZmluaXNo
RW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOiBSZW1vdmVkIGluY2x1ZGVkIG9mIFBhc3NSZWZQdHIu
aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDogVHdl
YWtlZCBmb3JtYXR0aW5nLiBSZW1vdmVkIG5lc3RpbmcKKyAgICAgICAgZnJvbSAjaWYgc2luY2Ug
b3VyIGZvcm1hdHRpbmcgbWFrZXMgaXQgaGFyZCB0byBzZWUgbmVzdGluZy4gTGV0IHRoZSBjb21w
aWxlcgorICAgICAgICBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBtb3ZlIGFuZCBjb3B5IGNvbnN0cnVj
dG9ycyBhbmQgYXNzaWduZW1udCBvcGVyYXRvcnMgZXhjZXB0CisgICAgICAgIGluIHRoZSBVU0Uo
RlJFRVRZUEUpIGNhc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25WYWx1ZTo6QW5pbWF0aW9uVmFsdWUp
OiBVcGRhdGVkIHNpbmNlIGNsb25lIG5vdyByZXR1cm5zIGEgUmVmCisgICAgICAgIHJhdGhlciB0
aGFuIGEgUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRBbmltYXRpb25WYWx1ZTo6Rmxv
YXRBbmltYXRpb25WYWx1ZSk6IERlbGV0ZWQuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2Vu
ZXJhdGUgdGhlIGNvcHkgY29uc3RydWN0b3Igd2l0aG91dCBkZWZpbmluZyBpdCBleHBsaWNpdGx5
LgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKTogVXNlIGEgbW9kZXJuIGZvcgorICAgICAgICBsb29wLCByZXNlcnZlSW5p
dGlhbENhcGFjaXR5LCBhbmQgdW5jaGVja2VkIGFwcGVuZC4gQWxzbyB0ZWxsIHRoZSBjb21waWxl
ciB0bworICAgICAgICBnZW5lcmF0ZSB0aGUgbW92ZSBjb25zdHJ1Y3Rvciwgc2luY2UgdGhlIHNw
ZWNpYWwgd29yayBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlCisgICAgICAgIGNvcHkgY29uc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0
aW9uVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjpL
ZXlmcmFtZVZhbHVlTGlzdCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TGVnYWN5Q0RNU2Vzc2lvbi5oOiBSZW1vdmVkIGluY2x1ZGUgb2YgUGFzc1JlZlB0ci5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwg
bm93IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1
ZGUgZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgor
ICAgICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAg
ICAgICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Rmls
dGVyQW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAg
ICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2Vk
IGFyZ3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQ
dHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0OjpzZXRGb2N1cyk6IFVwZGF0ZWQgdG8gcGFzcyBhIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHA6IFJlbW92
ZWQuIFVudXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1v
Y2suaDogUmVtb3ZlZC4gVW51c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJzb3IpOiBSZXR1cm4gYSBS
ZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2hhcmVk
Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb2FkQ3Vyc29yQnlOYW1lKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCk6IFJlbW92ZWQgYSBu
by1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6b3V0cHV0UmVjdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3Jv
bGxiYXIpOiBQYXNzIHdpZGdldCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFs
c28gZGlkIGEgZmV3IG90aGVyIHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6IFVzZSBtb3ZlCisgICAgICAg
IGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9vcCBpbnN0ZWFkIG9mIGl0ZXJhdG9y
cy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOiBUYWtlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lk
Z2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBv
aW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBVcGRhdGVkIGZvciBh
Ym92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUpOiBVcGRh
dGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVtb3ZlZCBu
by1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0dXJuIGEg
cmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5jZSBtYXRo
TUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNob3VsZE1v
dmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQ
YXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRl
TWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9w
ZXJhdG9yPSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6
IFVwZGF0ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2lu
dGVyLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVt
b3ZlZCB1bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0
aGF0IGFyZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQor
ICAgICAgICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9w
ZXJhdG9yPT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6Y3Jl
YXRlKTogVGFrZSBhIFJlZiYmIGluc3RlYWQgb2YgYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZVZhbHVlOjpTaGFwZVZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hl
ZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKIDIw
MTctMDEtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
c3VyZSBuYXZpZ2F0aW9uIG9ubHkgYWxsb3dlZCBmb3IgZG9jdW1lbnRzIG5vdCBpbiB0aGUgcGFn
ZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVmMTRhMWRmYWFkYmEyYTI5ZGZjYWY4NWYyMmE3
OWRlZDE0NzgwZmUuLjgwMDNhOTQyNjNjNDRjYTcxYTJhMjczODg2MTdkNGY0Y2QzMGVlZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3Jl
IG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChOZXRzY2FwZVBsdWdpbldpZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Ny
b2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6Cisg
ICAgICAgIFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGlu
c3RlYWQgb2YgUmVmUHRyLgorCiAyMDE3LTAxLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVHVybiBwcmVmZXJMb3dQb3dlcldlYkdMUmVuZGVyaW5nIHNldHRp
bmcgb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmNDRkNzQ4NmJkZWM2YzlhNDdhNTExYjMw
MmQ3ZjE2NDBjODBlY2EuLjcxNGZlYzAxNzIxNzQzZDkxYTljY2MwNDRhZDQ4ZDhiNmYyMjE4YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9m
ICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjgwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcik6IFVwZGF0ZWQgc2luY2Ug
YWRkQ2hpbGQgbm93IHRha2VzIGEgcmVmZXJlbmNlLgorCiAyMDE3LTAxLTA2ICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgRUZM
IGJ1aWxkIGZvbGxvd2luZyA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjEwNDYx
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5oCmluZGV4IDFiZDRkNzdkNmM1NTkxNzAxMzc4ZGI0YmYwM2Y2ZGRlYTdlNjg5
OTUuLmVkZTc1NDM3YTM0ZjNmNWRlOTJmMjUwZDVkMTBkMWZiOGEzZTJkNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBJbmplY3RlZFNjcmlwdEhvc3Qm
IGltcGwoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEluamVjdGVkU2NyaXB0SG9zdCY+KG1f
d3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbmplY3RlZFNjcmlwdEhvc3QmIGltcGwoKSBjb25zdCB7
IHJldHVybiBtX3dyYXBwZWQ7IH0KIAogICAgIC8vIEF0dHJpYnV0ZXMuCiAgICAgSlNDOjpKU1Zh
bHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCA0Yjg2ZGVjNzFhNzIzNzRlNzExMjNlMjky
NDE2YzkyZjdlNmYzYjdhLi5lYTQzZmYxNWY3YjVmMDdmY2JmMmQ2YjFiNTNmNjE3YzNkYmViMjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgUHJpdmF0ZU5hbWUoUHJpdmF0ZU5hbWUmJikgPSBk
ZWZhdWx0OwogCi0gICAgU3ltYm9sSW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxTeW1ib2xJbXBsJj4obV91aWQuZ2V0KCkpOyB9CisgICAgU3ltYm9sSW1wbCYgdWlkKCkgY29u
c3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRl
TmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAmb3RoZXIudWlkKCk7IH0KICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
ZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDQ3ZTVmYTA5NmU4MTYwM2MwOGU1NmJh
ZjFlOGFiZGRmMDkwMWFiMjUuLmU5NTUzNTJkZmY3YTU1Mjk5OTgwYTljOWM2N2UyZjNlNzVjNzE2
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oCkBAIC0xMzMsMTcgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3B0
cik7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJUKG1f
cHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IEFTU0VSVCht
X3B0cik7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0cigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0
dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7
IHJldHVybiAqbV9wdHI7IH0KLSAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLQotICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1f
cHRyOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9wdHIp
OyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBwdHIoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiBtX3B0cjsgfQorICAgIFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQorICAgIG9wZXJhdG9yIFQmKCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWY8VD4gcmVwbGFjZShS
ZWY8VT4mJikgV0FSTl9VTlVTRURfUkVUVVJOOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZl
YjMxNDY5OWFiZDUxNDlhOWQ0YjVmZjllOTE2ODU4NjU0OTgxM2QuLjMwODgxZDNiZTI4MWQwMWM3
MTMzYTdjNzZmZmViMGY3YmUxZWNlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjc3LDcg
KzIyNzcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1NEUFByb2Nlc3NvclNjcmlwdFJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vbW9jay9EZXZp
Y2VNb3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAogICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDBiYjQ2ZWJlNDkyZTkwMWU2
ODU4NjgzN2UzNzhkY2FiNDA1NzNkZmMuLmUxZTczNWE0MGI1NTBmYTYxYWY1MWE2YjBlODM3OGE0
MDJhYzk5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApp
bmRleCBkOGJjN2E1NWMzMDk5OTE4MDUzYzcxM2MyYjZjOThhZTM1N2RkMWEzLi42NzQ2ZjRlZjRh
ZjNlYTY4MGNlNGYxMTgzMTcwYTM2NzBkODhmMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ28KIAogU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIoJmNvbnRleHQpCi0gICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0
ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoKnRoaXMpKQog
ewogICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oCmluZGV4IDVmMTQxOTc1OTU3ZTRmZWQ5YzJkZGNmYzI2NjdiZTQyM2FiNThjZjEuLmI1Y2I1
MjAwMjM2MTBhYjEzOGQ0NmNlZmUwNDVhYjkxYmMxNGY1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSBmaW5hbCA6IHB1
YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICB+U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KCk7CisgICAgdmlydHVhbCB+U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT50ZXh0
KCk7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1V
dHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KQEAgLTYyLDIxICs2MiwyMSBAQCBwdWJsaWM6CiAg
ICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Ut
PnN0YXJ0VGltZSgpOyB9CiAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkg
eyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQogCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+OjpyZWY7Ci0gICAgdXNp
bmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+OjpkZXJlZjsKLQotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOyB9CisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OmRlcmVmOwogCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHBs
YXRmb3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKwogICAgIFJlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsKICAgICBSZWZQ
dHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0KLSAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IGY5MGY5
NmEwZWVhNzNiOWY5YTUxYmI0NTExNDBmMDZkMDNiOTAxNDcuLjdhNjFiY2FkYjBjM2JjOWIzMDAw
ZmVjMjE5YzUxNzlhMzU2ZmU3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydC5oCkBAIC00NDksOCArNDQ5LDggQEAgbmFtZXNwYWNlIERldGFpbCB7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29uc3QgVCogcCkgeyByZXR1
cm4gY29uc3RfY2FzdDxUKj4ocCk7IH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCYg
Z2V0UHRyT3JSZWYoY29uc3QgVCYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUJj4ocCk7IH0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+
JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLmdldCgpKTsgfQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8VD4mIHApIHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8VCY+KHAuZ2V0KCkpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQq
IGdldFB0ck9yUmVmKGNvbnN0IFJlZlB0cjxUPiYgcCkgeyByZXR1cm4gcC5nZXQoKTsgfQordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8VD4mIHAp
IHsgcmV0dXJuIHAuZ2V0KCk7IH0KIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCmluZGV4IDM4NTI5YmI2MWZkNDUyNWJiOTc1NThiYThkZjNjN2RkZTEzYjc1
OGUuLjZmMzc0NjJhMjgxMjExN2IzYmZmZjIzNGEyMzBlYWY5OTc0NDgyMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uQ2xhc3MgRE9NV3JhcHBlZDsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNET01XcmFwcGVyID0gdHJ1ZTsKIAotICAgIEltcGxlbWVudGF0
aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEltcGxlbWVudGF0
aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CisgICAgSW1wbGVtZW50YXRpb25DbGFzcyYg
d3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZXcmFwcGVkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRE9NV3JhcHBl
cjxJbXBsZW1lbnRhdGlvbkNsYXNzPiwgbV93cmFwcGVkKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRl
eCBlMTJhMjQwZDdlNjg3YjljYTY5NjQwZDgyZDZjNDM0ZmU3OGQ2YTQyLi5hZWVjYzcyNTI0ZThk
MGQ1ZGQyNGNhNDlmOWM1MmQyYTg4MTYwZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTUzLDEwICs1Myw5IEBAIFNjcmlw
dE1vZHVsZUxvYWRlcjo6U2NyaXB0TW9kdWxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCkKIFNj
cmlwdE1vZHVsZUxvYWRlcjo6flNjcmlwdE1vZHVsZUxvYWRlcigpCiB7CiAgICAgZm9yIChhdXRv
JiBsb2FkZXIgOiBtX2xvYWRlcnMpCi0gICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyJj4obG9hZGVyLmdldCgpKS5jbGVhckNsaWVudCgpOworICAgICAgICBsb2FkZXIt
PmNsZWFyQ2xpZW50KCk7CiB9CiAKLQogc3RhdGljIGJvb2wgaXNSb290TW9kdWxlKEpTQzo6SlNW
YWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICByZXR1cm4gaW1wb3J0ZXJNb2R1bGVLZXku
aXNTeW1ib2woKSB8fCBpbXBvcnRlck1vZHVsZUtleS5pc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAy
ZmJlOWMxNGQ0MmVjMWNkYzZmYTE4MjNiODVjYzNlNDcyMjM0Mjc4Li4xNjkxZmYzMTlmYzg0Y2Vh
OWJiOTRhM2I1OWMxYzg5NTIzOGI2YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTQ4NCwxMSArMTQ4NCwxMSBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0RHVyYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25M
aXN0KiBhbmltTGlzdCkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1
ZT4gY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5n
RnVuY3Rpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVl
KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbikKIHsKLSAgICBzd2l0Y2ggKHRp
bWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUo
KSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKLSAg
ICAgICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBz
dGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rp
b24pOwogICAgICAgICBpZiAoZnVuY3Rpb24udGltaW5nRnVuY3Rpb25QcmVzZXQoKSAhPSBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uOjpDdXN0b20pIHsKICAgICAgICAgICAgIENTU1ZhbHVlSUQg
dmFsdWVJZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rpb24u
dGltaW5nRnVuY3Rpb25QcmVzZXQoKSkgewpAQCAtMTUxMSwxNSArMTUxMSwxNSBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdAogICAgICAgICByZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ueDEoKSwgZnVuY3Rpb24ueTEoKSwgZnVuY3Rpb24u
eDIoKSwgZnVuY3Rpb24ueTIoKSk7CiAgICAgfQogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlN0
ZXBzRnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29u
c3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYg
ZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5n
RnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpj
cmVhdGUoZnVuY3Rpb24ubnVtYmVyT2ZTdGVwcygpLCBmdW5jdGlvbi5zdGVwQXRTdGFydCgpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3ByaW5nRnVuY3Rpb246IHsKLSAgICAg
ICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rp
b24qPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gc3RhdGljX2Nh
c3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAg
IHJldHVybiBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubWFz
cygpLCBmdW5jdGlvbi5zdGlmZm5lc3MoKSwgZnVuY3Rpb24uZGFtcGluZygpLCBmdW5jdGlvbi5p
bml0aWFsVmVsb2NpdHkoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh0
aW1pbmdGdW5jdGlvbi0+dHlwZSgpID09IFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbik7
CisgICAgICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlvbi50eXBlKCkgPT0gVGltaW5nRnVuY3Rpb246
OkxpbmVhckZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZWFyKTsKICAgICB9CiB9CkBAIC0x
NTI5LDI2ICsxNTI5LDI3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUaW1pbmdGdW5j
dGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVl
KGFuaW1MaXN0LT5hbmltYXRpb24oaSkudGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAg
ICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbUxp
c3QtPmFuaW1hdGlvbihpKS50aW1pbmdGdW5jdGlvbigpKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IC8vIE5vdGUgdGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKSBpcyB1c2VkIGZv
ciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVu
Y3Rpb24oKS5nZXQoKSkpOworICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUaW1pbmdG
dW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICBy
ZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1h
dGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlv
blRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0
Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAg
ICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2Vy
ID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKnRyaWdnZXIpOworICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZh
bHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxB
bmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwgc3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENT
U0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFs
dWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRW
YWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJp
Z2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpB
dXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAgICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkg
PT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9uVHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25U
cmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgIH0KIH0KQEAgLTE1NTgsMTIg
KzE1NTksMTIgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRyaWdnZXJW
YWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwKICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGFu
aW1MaXN0LT5hbmltYXRpb24oaSkudHJpZ2dlcigpLmdldCgpLCBzdHlsZSkpOworICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZSgqYW5pbUxpc3QtPmFu
aW1hdGlvbihpKS50cmlnZ2VyKCksIHN0eWxlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShBbmltYXRpb246OmluaXRp
YWxUcmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7Ci0KKyAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0
ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShBbmltYXRpb246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0KCks
IHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CisKICNlbmRpZgogCiBzdGF0aWMgUmVmPENT
U1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVlKHVuc2lnbmVkIGxpbmVCb3hDb250YWlu
KQpAQCAtMzYzNywyOCArMzYzOCwyNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgogICAgICAgICAgICAg
cmV0dXJuIGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjogewotICAgICAgICAgICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKTsKLSAgICAgICAgICAg
IGlmIChhbmltTGlzdCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRy
YW5zaXRpb25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byB0cmFuc2l0aW9uc0xpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24gPSBhbmltTGlz
dC0+YW5pbWF0aW9uKGkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8m
IGFuaW1hdGlvbiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmltYXRpb24pKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShhbmltYXRpb24uZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGFu
aW1hdGlvbi50aW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltYXRpb24udGltaW5nRnVu
Y3Rpb24oKSkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGFuaW1hdGlvbi5kZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1Mp
KTsKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQobGlzdC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBl
bmQoV1RGTW92ZShsaXN0KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cmFuc2l0aW9uc0xpc3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUodHJh
bnNpdGlvbnNMaXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24tcHJvcGVydHkgZGVmYXVsdCB2YWx1ZS4KICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQWxsKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUykpOwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9u
VmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjpp
bml0aWFsVGltaW5nRnVuY3Rpb24oKSkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVBvaW50ZXJFdmVudHM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb2ludGVyRXZlbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGM4YjYxNTUwYjZiYTdlNjJjM2I3MzNkNDVhYTA4
NTQxYTA4NTUwOGEuLjNjN2MyOTk1NjBhODFmMTdhZDY4N2E1YzNjOGIyOTYzOTM0NzlmNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Q2FjaGVkR2VuZXJhdGVk
SW1hZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhY2hl
ZEdlbmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmLCBGbG9hdFNpemUsIEdlbmVy
YXRlZEltYWdlJik7Ci0gICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxHZW5lcmF0ZWRJbWFnZSY+KG1faW1hZ2UuZ2V0KCkpOyB9CisgICAgR2VuZXJh
dGVkSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIHZvaWQgcHVu
dEV2aWN0aW9uVGltZXIoKSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAwNjQyYjg3OGNl
OTM1MjNjZmUwYWNkOTYxZTkxNzU0YWViZTBlYTBhLi4wOWU3YWQzMTA2NTFkMWEwODdmMmRiN2Qz
Zjg0NGI3MzE4MzMyNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3Bw
CkBAIC0yMTEsMTIgKzIxMSwxMCBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6
Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7IAogICAgIGlmIChpbmRleCA+PSBsZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzLnNpemUoKSA9PSBtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpLnNpemUoKSk7
Ci0gICAgUmVmUHRyPENTU0tleWZyYW1lUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3Jh
cHBlcnNbaW5kZXhdOworICAgIGF1dG8mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNb
aW5kZXhdOwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcnVsZSA9IGFkb3B0UmVmKG5ldyBDU1NL
ZXlmcmFtZVJ1bGUoY29uc3RfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZSY+KG1fa2V5ZnJhbWVzUnVs
ZS0+a2V5ZnJhbWVzKClbaW5kZXhdLmdldCgpKSwgY29uc3RfY2FzdDxDU1NLZXlmcmFtZXNSdWxl
Kj4odGhpcykpKTsKLQorICAgICAgICBydWxlID0gYWRvcHRSZWYoKm5ldyBDU1NLZXlmcmFtZVJ1
bGUobV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpbmRleF0sIGNvbnN0X2Nhc3Q8Q1NTS2V5
ZnJhbWVzUnVsZSo+KHRoaXMpKSk7CiAgICAgcmV0dXJuIHJ1bGUuZ2V0KCk7IAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVSdWxlLmgKaW5kZXggODEwYjlhNDU0ZDY1NzZlOGFlNzhlNGY1ZWJjZmYw
YjAxMmI3M2YyMC4uNzFmMzU1MDU1NmM2ODVmOGY1ZjA1MTVkYTAwMzJhODk5MTY3YTcxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIAogICAgIC8vIEZJ
WE1FOiBOb3QgQ1NTT00uIFJlbW92ZS4KLSAgICBTdHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U3R5bGVSdWxlJj4obV9zdHlsZVJ1bGUuZ2V0KCkpOyB9Cisg
ICAgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUnVsZS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIENTU1N0eWxlUnVsZShTdHlsZVJ1bGUmLCBDU1NTdHlsZVNo
ZWV0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBjOWZiNzMzNTk4NWI4YmM3YmU2ODY3
YjhmNzFjZjIxMzE2MjU2YTNhLi5jMjg5Zjc4NDBhYTY4Yzk4MTdlYmY0MWQ1NTI3NjZmYTIxNzYx
OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTI1OCwxMyArMjU4LDEzIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBm
ZWF0dXJlU2V0dGluZ3MpCiAKIFN0cmluZyBGb250RmFjZTo6ZmFtaWx5KCkgY29uc3QKIHsKLSAg
ICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIG1fYmFja2luZy0+ZmFtaWxpZXMoKS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZh
Y2U6OnN0eWxlKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNr
aW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZv
bnRTdHlsZU1hc2spIHsKICAgICBjYXNlIEZvbnRTdHlsZU5vcm1hbE1hc2s6CiAgICAgICAgIHJl
dHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogCiBTdHJpbmcg
Rm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+
KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNr
KCkgJiBGb250V2VpZ2h0TWFzaykgewogICAgIGNhc2UgRm9udFdlaWdodDEwME1hc2s6CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpA
QCAtMzA5LDcgKzMwOSw3IEBAIFN0cmluZyBGb250RmFjZTo6c3RyZXRjaCgpIGNvbnN0CiAKIFN0
cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENT
U0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAg
bV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJh
bmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIp
OwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKQEAgLTMyMCwxMyArMzIwLDEzIEBAIFN0cmluZyBGb250RmFjZTo6
dW5pY29kZVJhbmdlKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp2YXJpYW50KCkgY29uc3QK
IHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAg
ICAgcmV0dXJuIGNvbXB1dGVGb250VmFyaWFudChtX2JhY2tpbmctPnZhcmlhbnRTZXR0aW5ncygp
KS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNv
bnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBk
YXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggZTRjNzk0M2Y4MDgyNTVlMjkx
NmE2NzFlNGY1OTUzYzdkYWZkMjE3MS4uYmIyMGQ3ZTk0YjI3MmUwYWY5YWZhOGE3NGNiOTI4ODRm
Mzg0ZTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApA
QCAtNzY2LDcgKzc2Niw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyCiAgICAgfQogCiAgICAg
aWYgKGlzSW1hZ2VTaGFwZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVh
dGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTaGFw
ZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKS5yZWxlYXNlTm9u
TnVsbCgpKTsKIAogICAgIFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsKICAgICBDU1NCb3hUeXBl
IHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CkBAIC03ODYsNyArNzg2LDcgQEAgaW5saW5lIFJl
ZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVl
KFN0eWxlUmVzb2x2ZXIKICAgICB9CiAKICAgICBpZiAoc2hhcGUpCi0gICAgICAgIHJldHVybiBT
aGFwZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShzaGFwZSksIHJlZmVyZW5jZUJveCk7CisgICAgICAg
IHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc2hhcGUucmVsZWFzZU5vbk51bGwoKSwgcmVmZXJl
bmNlQm94KTsKIAogICAgIGlmIChyZWZlcmVuY2VCb3ggIT0gQm94TWlzc2luZykKICAgICAgICAg
cmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmNwcAppbmRleCBjMmJkZDA1Njc3ODY3YTAyOWM1MWFmYTNlN2NmOTczN2VlNzk2ZWJlLi43
NzcxMjgxYWI5NDdhMzE0ZjY0MGEwOWFiZDNlNDc4YjcyMjYyM2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoLmNwcApAQCAtMjU4LDIzICsyNTgsMjEgQEAgYm9vbCBFdmVudFBhdGg6Omhhc0V2ZW50
TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogVmVjdG9yPEV2
ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQoY29uc3Qg
RXZlbnRUYXJnZXQmIHRhcmdldCkgY29uc3QKIHsKICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqPiBw
YXRoOwotICAgIGNvbnN0IE5vZGUqIHRhcmdldE5vZGUgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0
Jj4odGFyZ2V0KS50b05vZGUoKTsKKyAgICBhdXRvKiB0YXJnZXROb2RlID0gY29uc3RfY2FzdDxF
dmVudFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CiAgICAgaWYgKCF0YXJnZXROb2RlKSB7Ci0g
ICAgICAgIGNvbnN0IERPTVdpbmRvdyogZG9tV2luZG93ID0gY29uc3RfY2FzdDxFdmVudFRhcmdl
dCY+KHRhcmdldCkudG9ET01XaW5kb3coKTsKKyAgICAgICAgYXV0byogZG9tV2luZG93ID0gY29u
c3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9ET01XaW5kb3coKTsKICAgICAgICAgaWYg
KCFkb21XaW5kb3cpCiAgICAgICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgICAgdGFyZ2V0Tm9k
ZSA9IGRvbVdpbmRvdy0+ZG9jdW1lbnQoKTsKICAgICAgICAgQVNTRVJUKHRhcmdldE5vZGUpOwog
ICAgIH0KLQogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkgewotICAgICAgICBpZiAo
Tm9kZSogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKS0+dG9Ob2RlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIG5vZGVJblBhdGggPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkt
PnRvTm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGUtPmlzQ2xvc2VkU2hhZG93
SGlkZGVuKCpub2RlSW5QYXRoKSkKICAgICAgICAgICAgICAgICBwYXRoLmFwcGVuZChjb250ZXh0
LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhdGguYXBw
ZW5kKGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgfQotCiAgICAgcmV0dXJuIHBhdGg7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBhMmU5NjExZDZjNTQ4ODg2MTQ2
YmJhOTFhMTA1ZDgwOTFiOGNmYWFlLi5kZWU2NDZjMzdkMTVhZDQ0MzNjMDMxYjVlM2E1YWM0MWU2
MTQyOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgPSAwOwog
CiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9u
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQotICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fb3duZXJOb2RlLmdl
dCgpKTsgfQorICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXJOb2RlOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghYXR0ck5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5n
ZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyTmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCmluZGV4IGNjMWE2YTRhMDY2NjhmNjA0YmNiZGQ0M2M0ZWI2MmM3YTcyNjZlNjIuLjVi
YTM3Y2Y4MDZlYmRjZWZhMzJhMzY1ZGU5YzZkY2I2M2I0ZWEyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCkBAIC0xNTgsOCArMTU4LDggQEAgRXZlbnRUYXJnZXQqIE1lc3NhZ2VF
dmVudDo6c291cmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZS52YWx1ZSgpLAotICAgICAgICBbXShjb25zdCBSZWZQ
dHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2Fz
dDxFdmVudFRhcmdldCo+KHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFyZ2V0Kj4od2luZG93Lmdl
dCgpKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxNZXNzYWdlUG9ydD4mIG1lc3NhZ2VQ
b3J0KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHN0
YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFyZ2V0Kj4obWVzc2FnZVBvcnQuZ2V0KCkpKTsgfQorICAg
ICAgICBbXSAoY29uc3QgUmVmUHRyPERPTVdpbmRvdz4mIHdpbmRvdykgLT4gRXZlbnRUYXJnZXQq
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RE9NV2luZG93Kj4od2luZG93LmdldCgpKTsgfSwKKyAgICAg
ICAgW10gKGNvbnN0IFJlZlB0cjxNZXNzYWdlUG9ydD4mIG1lc3NhZ2VQb3J0KSAtPiBFdmVudFRh
cmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxNZXNzYWdlUG9ydCo+KG1lc3NhZ2VQb3J0LmdldCgp
KTsgfQogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlMmZiYmNmODFhMTNjZmQwNDA1
ZTEyMDM5MWU1MmIzZGU1ZDNlMjg5Li4zYzcxMjBlYWE0ZjhhMzBiOWY0NmI4YjVhYTk5NmQ3Zjg2
MTdlOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MzAsMTEgKzQzMCwxMCBAQCBzdGF0aWMgSGFz
aFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdW
ZWN0b3IoY29uc3QgVgogICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0OwogICAgIGZv
ciAoY29uc3QgYXV0byYgdmFyaWFudCA6IHZlY3RvcikgewogICAgICAgICBXVEY6OnN3aXRjaE9u
KHZhcmlhbnQsCi0gICAgICAgICAgICBbJl0oY29uc3QgUmVmUHRyPE5vZGU+JiBub2RlKSB7IG5v
ZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0KCkpKTsgfSwKLSAgICAgICAgICAg
IFtdKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Tm9k
ZT4mIG5vZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5nZXQoKSkpOyB9
LAorICAgICAgICAgICAgW10gKGNvbnN0IFN0cmluZyYpIHsgfQogICAgICAgICApOwogICAgIH0K
LQogICAgIHJldHVybiBub2RlU2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4IDgwM2Y4ZmUyM2Y3
MzcwYmNjY2QyYTc1ZjcwMzkxNTczZmVhZDNhN2QuLmI5YTAyMmQ1MGQxMzY4ZDkzNTNmMDJjYjUw
MjMzZTc5MDFkZDI4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB+UmFuZ2UoKTsKIAotICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fb3duZXJEb2N1bWVudC5nZXQoKSk7
IH0KKyAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJE
b2N1bWVudDsgfQogCiAgICAgTm9kZSYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IEFTU0VSVCht
X3N0YXJ0LmNvbnRhaW5lcigpKTsgcmV0dXJuICptX3N0YXJ0LmNvbnRhaW5lcigpOyB9CiAgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Lm9mZnNldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCmluZGV4IDEw
YjJhZDk0M2NjM2I5MDMzMWRjN2FiNjhkNTVmY2Y5NDkyZmUwODIuLjJhNThhM2ZhMGJjMWQ5ZTU0
YjZhMWMzNDUxYTk3MjlhNjM3MmEzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5l
ciksIG9wdGlvbnMpKTsKICAgICB9CiAKLSAgICBFdmVudExpc3RlbmVyJiBjYWxsYmFjaygpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRMaXN0ZW5lciY+KG1fY2FsbGJhY2suZ2V0KCkp
OyB9CisgICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrOyB9CiAgICAgYm9vbCB1c2VDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV91c2VDYXB0dXJl
OyB9CiAgICAgYm9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzUGFzc2l2ZTsgfQog
ICAgIGJvb2wgaXNPbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc09uY2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdFJ1bm5lci5jcHAKaW5kZXggMDQxZTZkMTMzMWY0NDIzYzE1Yzk4NzY5ZjlhMjI3NGNl
ZDBhZDBmZi4uMWQ1MmU1ODg4ZTI3MWIwZTgxYjMwNWYxZWYwYzljMjhkYzVmYzRiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU2NyaXB0UnVubmVy
Ojp+U2NyaXB0UnVubmVyKCkKICAgICB9CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nU2NyaXB0IDog
bV9wZW5kaW5nQXN5bmNTY3JpcHRzKSB7CiAgICAgICAgIGlmIChwZW5kaW5nU2NyaXB0LT53YXRj
aGluZ0ZvckxvYWQoKSkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UGVuZGluZ1NjcmlwdCY+KHBl
bmRpbmdTY3JpcHQuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgICAgICBwZW5kaW5nU2Ny
aXB0LT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVudExvYWRFdmVu
dERlbGF5Q291bnQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgK
aW5kZXggNmZhYWQ0MDc1MDUwNDUwZGQzYjkwOWJlZGFjMDAzMDBjYzllMmE4Ni4uNDgwMTI2YjY1
MTZiN2U3OTUzOGI2MjlmYjg2YWVjMDJjOTE3MmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlubGluZSBDb2xsZWN0aW9uVHlwZSBIVE1M
Q29sbGVjdGlvbjo6dHlwZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWluZXJOb2RlJiBIVE1MQ29s
bGVjdGlvbjo6b3duZXJOb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDb250
YWluZXJOb2RlJj4obV9vd25lck5vZGUuZ2V0KCkpOworICAgIHJldHVybiBtX293bmVyTm9kZTsK
IH0KIAogaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCmluZGV4IGVmMjA2ZjZj
MWUxYTU2MTQ3NTA5NmUyMmFiNzk3ZDMyMmM5YmUxMGYuLjk4NTMxOTgzMWIxNTMyOWJiYTk0ZmNm
YTkwNTQ0ZThjZjM3Y2ZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Rh
Y2tJdGVtLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhU
TUxTdGFja0l0ZW06OmNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkKIAogaW5saW5l
IENvbnRhaW5lck5vZGUmIEhUTUxTdGFja0l0ZW06Om5vZGUoKSBjb25zdAogewotICAgIHJldHVy
biBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX25vZGUuZ2V0KCkpOworICAgIHJldHVybiBt
X25vZGUuZ2V0KCk7CiB9CiAKIGlubGluZSBFbGVtZW50JiBIVE1MU3RhY2tJdGVtOjplbGVtZW50
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKaW5kZXggM2FjMjg3MDc3M2I4MzQwYWU1ZTNiNGI5NjcyOTJhZGNkMmIwOTMx
MS4uYzJlNTE0Y2I3YzcyMTFiYzM3YzI0MzI4YmQ0MDJmNDllNjg0NDhhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTEz
Myw1OCArMTMzLDQ0IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0
UGF1c2VkKGNvbnN0IFBhZ2VHcm91cCYgcGFnZUdyb3VwLCBib29sCiB7CiAgICAgc2V0TWFpblRo
cmVhZENhbGxiYWNrc1BhdXNlZChwYXVzZWQpOwogCi0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFn
ZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZSwgcGF1c2Vk
KTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQo
UGFnZSogcGFnZSwgYm9vbCBwYXVzZWQpCi17Ci0gICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsK
LQotICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKLQotICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLCBwYXVz
ZWQpOwotCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCA9
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSB7
Ci0gICAgICAgIGlmIChwYXVzZWQpCi0gICAgICAgICAgICBmcm9udGVuZENsaWVudC0+cGFnZVBh
dXNlZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcm9udGVuZENsaWVudC0+cGFnZVVu
cGF1c2VkKCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpIHsKKyAg
ICAgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOworCisgICAgICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZCgqZnJh
bWUsIHBhdXNlZCk7CisKKyAgICAgICAgaWYgKGF1dG8qIGZyb250ZW5kQ2xpZW50ID0gcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChwYXVzZWQpCisgICAgICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQtPnBhZ2VQ
YXVzZWQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVVucGF1c2VkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgUGFnZVNjcmlw
dERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBmcmFtZSwgYm9vbCBwYXVz
ZWQpCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFt
ZSYgZnJhbWUsIGJvb2wgcGF1c2VkKQogewotICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsK
LQotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKKyAgICBpZiAoIWZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUt
PnNjcmlwdCgpLnNldFBhdXNlZChwYXVzZWQpOworICAgIGZyYW1lLnNjcmlwdCgpLnNldFBhdXNl
ZChwYXVzZWQpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmZy
YW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKHBhdXNlZCkgewotICAgICAgICBkb2N1bWVudC0+c3Vz
cGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwotICAgICAgICBkb2N1
bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0
RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5kU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBkb2N1bWVudC0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3Rp
dmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7Ci0gICAgICAgIGRvY3VtZW50
LT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAg
ZG9jdW1lbnQucmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3Jp
cHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnJlc3VtZVNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIAotICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQoZnJhbWUtPnZpZXcoKSwgcGF1c2VkKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBhdXNlZCkKLXsK
LSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgY2hpbGQg
OiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCpj
aGlsZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBkb3duY2FzdDxQbHVnaW5W
aWV3QmFzZT4oKmNoaWxkKS5zZXRKYXZhU2NyaXB0UGF1c2VkKHBhdXNlZCk7CisgICAgaWYgKGF1
dG8qIHZpZXcgPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IHZp
ZXctPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KGNo
aWxkLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGRvd25j
YXN0PFBsdWdpblZpZXdCYXNlPihjaGlsZC5nZXQoKSkuc2V0SmF2YVNjcmlwdFBhdXNlZChwYXVz
ZWQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggM2I0OTc5MWVlMjllNWM1MGYwYTNjOGFj
MWM0MTZkYTVhN2M3N2JkMS4uN2Y1OGM2YzhiMDQ4YmYzZGMyNzdhYjlkZjY1ZmVhMjQ2ODIyYjdj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFt
ZTsKLWNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlR3JvdXA7CiAKQEAg
LTU2LDkgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2Vk
SW50ZXJuYWwoKTsKIAogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChjb25zdCBQYWdlR3Jv
dXAmLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKFBhZ2UqLCBi
b29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiwgYm9vbCBw
YXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqLCBib29sIHBh
dXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lJiwgYm9vbCBwYXVzZWQp
OwogCiAgICAgUGFnZSYgbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwCmluZGV4IDRlODI3NTQ1ZTJjMDhlNGQzZWZhMjI0YTYzZGZkNWViMzU3
MGE5Y2IuLjI5NWI5NGExYTU1NWIyYTI4ZTc1MDM2YzZiMWQwMjU3MDcyOTk3Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtNzQxLDcgKzc0MSw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShI
aXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0g
bV9mcmFtZS50cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoY2hp
bGRGcmFtZSk7CiAKLSAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vy
c2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4oY2hpbGRJdGVt
LmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhp
c3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY2hpbGRJdGVtLCBmcm9tQ2hpbGRJ
dGVtKTsKICAgICB9CiB9CiAKQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZy
b21JdAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGls
ZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGZyb21DaGls
ZEl0ZW0pOwogICAgICAgICBpZiAoRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5j
aGlsZChjaGlsZEZyYW1lTmFtZSkpCi0gICAgICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxk
SXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICAgICAgY2hpbGRGcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNoaWxkSXRlbSwgZnJvbUNo
aWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDBiYjI4
OGVhZWZjZjgwODFiMWYwY2Y0MWRjNTZhOWExODc3Y2ZlN2UuLmQ1YTUxMDYwMTc0YTg3MDZmODk5
ZDUyODg0YWQ2YmI0Y2Y2NzAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MjMsMzEgKzcy
MywyNyBAQCBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKIAogUmVu
ZGVyV2lkZ2V0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKKyAgICBhdXRvKiBv
d25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKICAgICBpZiAoIW93bmVyRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogb2JqZWN0ID0gb3duZXJFbGVtZW50LT5y
ZW5kZXJlcigpOwotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAvLyBGSVhNRTogSWYgPG9iamVjdD4gaXMgZXZlciBmaXhlZCB0byBkaXNhc3NvY2lhdGUgaXRz
ZWxmIGZyb20gZnJhbWVzCiAgICAgLy8gdGhhdCBpdCBoYXMgc3RhcnRlZCBidXQgY2FuY2VsZWQs
IHRoZW4gdGhpcyBjYW4gdHVybiBpbnRvIGFuIEFTU0VSVAotICAgIC8vIHNpbmNlIG1fb3duZXJF
bGVtZW50IHdvdWxkIGJlIDAgd2hlbiB0aGUgbG9hZCBpcyBjYW5jZWxlZC4KKyAgICAvLyBzaW5j
ZSBtX293bmVyRWxlbWVudCB3b3VsZCBiZSBudWxscHRyIHdoZW4gdGhlIGxvYWQgaXMgY2FuY2Vs
ZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTg1
Ci0gICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KCpvYmplY3QpKQorICAgIGlmICghaXM8UmVuZGVy
V2lkZ2V0PihvYmplY3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyV2lkZ2V0PihvYmplY3QpOwogfQogCi1GcmFtZSogRnJhbWU6OmZyYW1lRm9y
V2lkZ2V0KGNvbnN0IFdpZGdldCogd2lkZ2V0KQorRnJhbWUqIEZyYW1lOjpmcmFtZUZvcldpZGdl
dChjb25zdCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBBU1NFUlRfQVJHKHdpZGdldCwgd2lkZ2V0
KTsKLQotICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0OjpmaW5k
KHdpZGdldCkpCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdp
ZGdldCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+ZnJhbWVPd25lckVsZW1lbnQoKS5kb2N1
bWVudCgpLmZyYW1lKCk7CiAKICAgICAvLyBBc3N1bWUgYWxsIHdpZGdldHMgYXJlIGVpdGhlciBh
IEZyYW1lVmlldyBvciBvd25lZCBieSBhIFJlbmRlcldpZGdldC4KICAgICAvLyBGSVhNRTogVGhh
dCBhc3N1bXB0aW9uIGlzIG5vdCByaWdodCBmb3Igc2Nyb2xsIGJhcnMhCi0gICAgcmV0dXJuICZk
b3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmZyYW1lKCk7CisgICAgcmV0dXJuICZkb3duY2Fz
dDxGcmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKTsKIH0KIAogdm9pZCBGcmFtZTo6Y2xlYXJUaW1l
cnMoRnJhbWVWaWV3ICp2aWV3LCBEb2N1bWVudCAqZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggNjgzNDExMDdkOTgxYzRhMzJhYmViOWM1MTA5M2M4N2E4MWRmODY1NS4uOWE4ZjczY2NiNThk
NzdlZGQ0OTE5NmE1N2ZmZGJhZjEzOGExZWM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTY0LDcg
KzE2NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KExheWVyVHJlZUZsYWdzID0gMCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQmKTsKIAog
ICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NzA3NWZkNTc5YmZjYjM5ZjY2ZjZkOTM2
NjlkZWQ1MDc2YTAzNzQ1Li5iMjkxMjM2M2YyMWRkODBkNmJlMDEwZDA4YWNhMjdhZTkyZjc1YjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAg
ICAgICAgICAgICAgICAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CiAgKiAgICAgICAg
ICAgICAgICAgICAgIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CiAgKiAg
ICAgICAgICAgICAgICAgICAgIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFo
YW0uZGVubmlzQGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUwNiwxOCArNTA2LDE3IEBAIGJvb2wgRnJhbWVWaWV3
OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7Ci0gICAgICAgIGlm
IChIb3N0V2luZG93KiB3aW5kb3cgPSBob3N0V2luZG93KCkpCi0gICAgICAgICAgICB3aW5kb3ct
PmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOworICAgICAgICBpZiAoYXV0byog
cGFnZSA9IGZyYW1lKCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuaW52YWxp
ZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7Cisg
ICAgYXV0byogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKTsKICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0gcmVj
dDsKLSAgICByZXBhaW50UmVjdC5tb3ZlKHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJl
ci0+cGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5ib3JkZXJU
b3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOworICAgIHJlcGFpbnRSZWN0Lm1vdmUocmVu
ZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLCByZW5kZXJlci0+
Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKICAgICByZW5kZXJlci0+cmVw
YWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7CiB9CiAKQEAgLTU0NCwxNCArNTQzLDE2IEBAIHZv
aWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKIH0KIAog
I2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKwogYm9vbCBGcmFtZVZpZXc6OnNj
aGVkdWxlQW5pbWF0aW9uKCkKIHsKLSAgICBpZiAoSG9zdFdpbmRvdyogd2luZG93ID0gaG9zdFdp
bmRvdygpKSB7Ci0gICAgICAgIHdpbmRvdy0+c2NoZWR1bGVBbmltYXRpb24oKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBwYWdlID0g
ZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcGFnZS0+Y2hyb21lKCkuc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KKwogI2VuZGlmCiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRNYXJnaW5XaWR0aChMYXlvdXRVbml0
IHcpCkBAIC0xMDU2LDIyICsxMDU3LDIyIEBAIEdyYXBoaWNzTGF5ZXIqIEZyYW1lVmlldzo6Z3Jh
cGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtCiB7CiAg
ICAgLy8gVG8gZmluZCB0aGUgV2lkZ2V0IHRoYXQgY29ycmVzcG9uZHMgd2l0aCBwbGF0Zm9ybVdp
ZGdldCB3ZSBoYXZlIHRvIGRvIGEgbGluZWFyCiAgICAgLy8gc2VhcmNoIG9mIG91ciBjaGlsZCB3
aWRnZXRzLgotICAgIFdpZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRyOworICAgIGNvbnN0IFdp
ZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogY2hp
bGRyZW4oKSkgewogICAgICAgICBpZiAod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpICE9IHBsYXRm
b3JtV2lkZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZvdW5kV2lkZ2V0ID0g
d2lkZ2V0LmdldCgpOworICAgICAgICBmb3VuZFdpZGdldCA9IHdpZGdldC5wdHIoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZFdpZGdldCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQo
Zm91bmRXaWRnZXQpOworICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdldDo6Zmlu
ZCgqZm91bmRXaWRnZXQpOwogICAgIGlmICghcmVuZGVyV2lkZ2V0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlbmRlckxheWVyKiB3aWRnZXRMYXllciA9IHJlbmRlcldpZGdldC0+
bGF5ZXIoKTsKKyAgICBhdXRvKiB3aWRnZXRMYXllciA9IHJlbmRlcldpZGdldC0+bGF5ZXIoKTsK
ICAgICBpZiAoIXdpZGdldExheWVyIHx8ICF3aWRnZXRMYXllci0+aXNDb21wb3NpdGVkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMTgwLDExICsyMTgxLDExIEBAIGJvb2wgRnJh
bWVWaWV3OjpzaG91bGRTZXRDdXJzb3IoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENv
bnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3Qm
IHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgaWYgKCFtX3Zp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzIHx8IG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMt
PmlzRW1wdHkoKSkgewotICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwg
cmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUo
KS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBib29sIGlzQ29tcG9zaXRlZENvbnRlbnRM
YXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgYm9vbCBpc0NvbXBvc2l0ZWRD
b250ZW50TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogCiAgICAgLy8gR2V0IHRo
ZSByZWN0cyBvZiB0aGUgZml4ZWQgb2JqZWN0cyB2aXNpYmxlIGluIHRoZSByZWN0VG9TY3JvbGwK
ICAgICBSZWdpb24gcmVnaW9uVG9VcGRhdGU7CkBAIC0yMjIwLDcgKzIyMjEsNyBAQCBib29sIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdAogICAgIH0KIAogICAgIC8vIDEpIHNjcm9sbAotICAgIGhvc3RXaW5k
b3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBm
cmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuc2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGws
IGNsaXBSZWN0KTsKIAogICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmplY3Rz
IHRoYXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKICAgICBmb3IgKGF1dG8mIHVwZGF0ZVJlY3QgOiBy
ZWdpb25Ub1VwZGF0ZS5yZWN0cygpKSB7CkBAIC0yMjM1LDcgKzIyMzYsNyBAQCBib29sIEZyYW1l
Vmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwg
Y29uc3QgSW50UmVjdAogICAgICAgICB9CiAgICAgICAgIGlmIChjbGlwc1JlcGFpbnRzKCkpCiAg
ICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOwotICAgICAgICBo
b3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0ZVJlY3QpOwor
ICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9v
dFZpZXcodXBkYXRlUmVjdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNjQyLDkg
KzI2NDMsMTAgQEAgYm9vbCBGcmFtZVZpZXc6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShj
b25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRpb24pCiAKIEhvc3RXaW5kb3cqIEZyYW1lVmlldzo6
aG9zdFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwogfQogCiB2b2lk
IEZyYW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKQEAg
LTI3ODQsMTAgKzI3ODYsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFRpbGVkQmFja2luZ1Nj
cm9sbGFiaWxpdHkoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCiB2b2lkIEZyYW1lVmlldzo6
dW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpCiB7CiAgICAgYWRqdXN0VGlsZWRCYWNraW5n
U2Nyb2xsYWJpbGl0eSgpOwogfQorCiAjZW5kaWYKIAogc3RhdGljIExheWVyRmx1c2hUaHJvdHRs
ZVN0YXRlOjpGbGFncyBkZXRlcm1pbmVMYXllckZsdXNoVGhyb3R0bGVTdGF0ZShQYWdlJiBwYWdl
KQpAQCAtNDA4Miw4ICs0MDg2LDYgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5l
cigpCiAgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92ZSgqY29ybmVy
U3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihjb3JuZXJSZWN0KTsKICAg
ICB9Ci0KLSAgICBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKTsKIH0KIAogdm9pZCBG
cmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkKQEAgLTQxNTcsMTUgKzQxNTksMTQgQEAgQ29sb3IgRnJh
bWVWaWV3Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6
aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBj
aGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7Ci0gICAg
ICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5oYXNDdXN0b21TY3JvbGxi
YXJzKCkpCisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkuaGFzQ3VzdG9tU2Ny
b2xsYmFycygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2Ug
aWYgKGlzPFNjcm9sbGJhcj4oKndpZGdldCkpIHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxT
Y3JvbGxiYXI+KCp3aWRnZXQpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCisgICAgICAgIH0gZWxzZSBp
ZiAoaXM8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoZG93bmNh
c3Q8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTQxNzMsMTEgKzQxNzQsMTAgQEAgRnJhbWVWaWV3KiBGcmFtZVZpZXc6OnBh
cmVudEZyYW1lVmlldygpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUoKS50cmVl
KCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygpOwotCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogcGFyZW50RnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5w
YXJlbnQoKTsKKyAgICBpZiAoIXBhcmVudEZyYW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Omlz
SW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpIGNvbnN0CkBAIC01MTgzLDggKzUxODMs
OCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25zKCkKICAgICAvLyBzY3Jp
cHRzIGluIHJlc3BvbnNlIHRvIE5QUF9TZXRXaW5kb3csIGZvciBleGFtcGxlKSwgc28gd2UgbmVl
ZCB0byBrZWVwIHRoZSBXaWRnZXRzCiAgICAgLy8gYWxpdmUgZHVyaW5nIGVudW1lcmF0aW9uLgog
ICAgIGZvciAoYXV0byYgd2lkZ2V0IDogY29sbGVjdEFuZFByb3RlY3RXaWRnZXRzKG1fd2lkZ2V0
c0luUmVuZGVyVHJlZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0
ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldC5nZXQoKSkpIHsKLSAgICAgICAgICAgIGF1dG8g
aWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJXaWRnZXQtPnVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7
CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6ZmluZCgqd2lkZ2V0
KSkgeworICAgICAgICAgICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRlcmVyLT51cGRh
dGVXaWRnZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGlnbm9yZVdpZGdl
dFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDIz
YTdmZDFiNDRmNmVlOTA0MjBiMjA1MDg5M2M3ODNhYWU4NTAzYjYuLjcxMWI3NGI0NjdiMzc1ODg0
YTM1NzhhNDAyYTRlNDRjNDYyMzM1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNCw3
ICs0LDcgQEAKICAgICAgICAgICAgICAoQykgMTk5OCwgMTk5OSBUb3JiZW4gV2VpcyAod2Vpc0Br
ZGUub3JnKQogICAgICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgICAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
Ci0gICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOSwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAgIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTc0LDE2ICs3NCwxNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GcmFtZVZpZXcoKTsKIAotICAgIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93KCkg
Y29uc3QgZmluYWw7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVj
dChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJl
Y3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAg
ICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzY2hlZHVsZUFu
aW1hdGlvbigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBGcmFtZSYgZnJhbWUoKSBjb25zdCB7IHJl
dHVybiBjb25zdF9jYXN0PEZyYW1lJj4obV9mcmFtZS5nZXQoKSk7IH0KKyAgICBGcmFtZSYgZnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3Q7CiAKQEAgLTk1LDE1ICs5NSwxNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRNYXJnaW5XaWR0aChMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldE1hcmdp
bkhlaWdodChMYXlvdXRVbml0KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuSGF2
ZVNjcm9sbGJhcnMoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
YW5IYXZlU2Nyb2xsYmFycyhib29sKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCk7CiAKLSAgICBSZWY8U2Nyb2xsYmFyPiBjcmVhdGVTY3Jv
bGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxTY3JvbGxiYXI+
IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgZmluYWw7CiAKLSAgICBib29s
IGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGF2b2lk
U2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgc2V0Q29udGVudHNT
aXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2l6
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2l6ZSgpIGZpbmFsOwogCiAgICAgdm9pZCBs
YXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUgPSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGRpZEZpcnN0TGF5b3V0KCkgY29uc3Q7CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXJGb3JQbGF0Zm9ybVdp
ZGdldChQbGF0Zm9ybVdpZGdldCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZUxh
eWVyRmx1c2hBbGxvd2luZ1Rocm90dGxpbmcoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFRpbGVk
QmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIElu
IHRoZSBmdXR1cmUgd2hlbiBhbnkgU2Nyb2xsYWJsZUFyZWEgY2FuIGhhdmUgYSBub2RlIGluIHRo
IFNjcm9sbGluZ1RyZWUsIHRoaXMgc2hvdWxkCiAgICAgLy8gYmVjb21lIGEgdmlydHVhbCBmdW5j
dGlvbiBvbiBTY3JvbGxhYmxlQXJlYS4KQEAgLTIyNSwyMSArMjI1LDIxIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
SW50U2l6ZSk7CiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkg
Y29uc3Q7CiAgICAgCi0gICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0Rm9yRnJhbWVPd25lcihjb25zdCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqLCBib29sIGNsaXBUb0xheWVyQ29udGVudHMpIGNvbnN0OwogCi0gICAg
ZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGZs
b2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBmaW5hbDsKIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBv
c2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBmaW5h
bDsKKyAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIGZpbmFsOworICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gVGhlIHNjcm9sbE9y
aWdpbiwgc2Nyb2xsUG9zaXRpb24sIG1pbmltdW1TY3JvbGxQb3NpdGlvbiBhbmQgbWF4aW11bVNj
cm9sbFBvc2l0aW9uIGFyZSBhbGwgYWZmZWN0ZWQgYnkgZnJhbWUgc2NhbGUsCiAgICAgLy8gYnV0
IGxheW91dFZpZXdwb3J0IGNvbXB1dGF0aW9ucyByZXF1aXJlIHVuc2NhbGVkIHNjcm9sbCBwb3Np
dGlvbnMuCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7
CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAgICAgICAgIFBhaW50QmVoYXZpb3IgcGFp
bnRCZWhhdmlvcjsKQEAgLTM3OSw5ICszNzksOSBAQCBwdWJsaWM6CiAgICAgZW51bSBDb29yZGlu
YXRlU3BhY2VGb3JTbmFwc2hvdCB7IERvY3VtZW50Q29vcmRpbmF0ZXMsIFZpZXdDb29yZGluYXRl
cyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU2VsZWN0aW9uSW5TbmFw
c2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiwgQ29vcmRpbmF0ZVNwYWNlRm9yU25hcHNob3QpOwog
Ci0gICAgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBw
YWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYs
IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50T3Zl
cmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIGZpbmFsOworICAgIHZvaWQg
cGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVj
dCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdDsKIApAQCAtNDM2LDEwICs0MzYsMTAgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgLy8gT3Zl
cnJpZGUgU2Nyb2xsVmlldyBtZXRob2RzIHRvIGRvIHBvaW50IGNvbnZlcnNpb24gdmlhIHJlbmRl
cmVycywgaW4gb3JkZXIgdG8gdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBJbnRS
ZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydEZyb21D
b250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJl
Y3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOwor
ICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29u
c3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50
UG9pbnQmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzRnJhbWVWaWV3
U2Nyb2xsQ29ybmVyKGNvbnN0IFJlbmRlclNjcm9sbGJhclBhcnQmIHNjcm9sbENvcm5lcikgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0gJnNjcm9sbENvcm5lcjsgfQogCkBAIC00NTEs
MjAgKzQ1MSwyMCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBTY3JvbGxhYmlsaXR5IHsgU2Ny
b2xsYWJsZSwgU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUgfTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzU2Nyb2xsYWJsZShTY3JvbGxhYmlsaXR5IGRlZmluaXRpb25PZlNjcm9sbGFibGUg
PSBTY3JvbGxhYmlsaXR5OjpTY3JvbGxhYmxlKTsKIAotICAgIGJvb2wgaXNTY3JvbGxhYmxlT3JS
dWJiZXJiYW5kYWJsZSgpIG92ZXJyaWRlOwotICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnViYmVy
YmFuZGFibGVBbmNlc3RvcigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZSgpIGZpbmFsOworICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFi
bGVBbmNlc3RvcigpIGZpbmFsOwogCiAgICAgZW51bSBTY3JvbGxiYXJNb2Rlc0NhbGN1bGF0aW9u
U3RyYXRlZ3kgeyBSdWxlc0Zyb21XZWJDb250ZW50T25seSwgQW55UnVsZSB9OwogICAgIHZvaWQg
Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNj
cm9sbGJhck1vZGUmIHZNb2RlLCBTY3JvbGxiYXJNb2Rlc0NhbGN1bGF0aW9uU3RyYXRlZ3kgPSBB
bnlSdWxlKTsKIAotICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNob3Vs
ZFNldEN1cnNvcigpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBv
bmNlIHBsdWdpbiBsb2FkaW5nIGlzIGRlY291cGxlZCBmcm9tIGxheW91dC4KICAgICB2b2lkIGZs
dXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpOwogCi0gICAgYm9vbCBzaG91bGRTdXNwZW5k
U2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3VzcGVu
ZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxl
Q2hhbmdlZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAg
ICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OwpAQCAtNDgzLDcgKzQ4Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFy
ZWEqKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYVNldCogc2Nyb2xsYWJsZUFyZWFz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYXMuZ2V0KCk7IH0KIAotICAgIHZvaWQg
cmVtb3ZlQ2hpbGQoV2lkZ2V0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDaGlsZChXaWRn
ZXQmKSBmaW5hbDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciBwb3J0cyB0aGF0
IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAgICAvLyBPbiBNYWMgV2Vi
S2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2VzIHRoZSBzY3JvbGxpbmcs
IGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwpAQCAtNTAxLDcgKzUwMSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBQYWdpbmF0aW9uJiBwYWdpbmF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQ
YWdpbmF0aW9uKGNvbnN0IFBhZ2luYXRpb24mKTsKICAgICAKLSAgICBib29sIGluUHJvZ3JhbW1h
dGljU2Nyb2xsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pblByb2dyYW1tYXRpY1Njcm9s
bDsgfQorICAgIGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAgICAgdm9pZCBzZXRJblByb2dyYW1tYXRpY1Nj
cm9sbChib29sIHByb2dyYW1tYXRpY1Njcm9sbCkgeyBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsID0g
cHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9O
KQpAQCAtNTA5LDggKzUwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluaXRpYWxWaWV3cG9y
dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2luaXRpYWxWaWV3cG9ydFNpemUgPSBzaXpl
OyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGlu
ZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVz
dGluZygpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIFdF
QkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIHNldFdhbnRzTGF5ZXJGb3JUb3BPdmVySGFuZ0Fy
ZWEoYm9vbCkgY29uc3Q7CkBAIC01MjMsMjAgKzUyMywyMCBAQCBwdWJsaWM6CiAKICAgICBMYXlv
dXRQb2ludCBzY3JvbGxQb3NpdGlvblJlc3BlY3RpbmdDdXN0b21GaXhlZFBvc2l0aW9uKCkgY29u
c3Q7CiAKLSAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9o
ZWFkZXJIZWlnaHQ7IH0KKyAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9oZWFkZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhlYWRlckhl
aWdodChpbnQpOwotICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Zvb3RlckhlaWdodDsgfQorICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9v
dGVySGVpZ2h0KGludCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB0b3BDb250ZW50SW5z
ZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5cGU6OldlYkNvcmVDb250
ZW50SW5zZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHRvcENv
bnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0VHlwZTo6V2Vi
Q29yZUNvbnRlbnRJbnNldCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB0b3BDb250ZW50SW5zZXRE
aWRDaGFuZ2UoZmxvYXQgbmV3VG9wQ29udGVudEluc2V0KTsKIAogICAgIHZvaWQgdG9wQ29udGVu
dERpcmVjdGlvbkRpZENoYW5nZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsU3Rh
cnRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsRW5k
TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbFN0YXJ0
TGl2ZVJlc2l6ZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEVuZExpdmVS
ZXNpemUoKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXZhaWxhYmxlQ29udGVu
dFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNp
emVDaGFuZ2VSZWFzb24pIGZpbmFsOwogCiAgICAgdm9pZCBhZGp1c3RUaWxlZEJhY2tpbmdTY3Jv
bGxhYmlsaXR5KCk7CiAKQEAgLTU3NCwyOSArNTc0LDI5IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3
RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCB1
cGRhdGVTbmFwT2Zmc2V0cygpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSBmaW5h
bDsKKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKSBjb25z
dDsKICNlbmRpZgogCi0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChm
bG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpIG92ZXJy
aWRlOworICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQoZmxvYXQgc3Rl
cCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBmaW5hbDsKIAogICAg
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiAKLSAgICB2b2lkIHNob3coKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNob3coKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkUGxhY2VCbG9ja0Rp
cmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWRSZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBzY3JvbGxDb250ZW50
c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0
VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNj
cm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0
KSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYg
dXBkYXRlUmVjdCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZXBhaW50U2xvd1JlcGFpbnRPYmpl
Y3RzKCk7CiAKLSAgICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
VmVydGljYWxEb2N1bWVudCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNGbGlwcGVkRG9jdW1l
bnQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJh
bWUmKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpblByZUxheW91
dFN0eWxlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9PSBJblByZUxheW91
dFN0eWxlVXBkYXRlOyB9CiAKLSAgICBib29sIGlzRnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyV2lkZ2V0OwogICAgIGJvb2wg
dXNlU2xvd1JlcGFpbnRzKGJvb2wgY29uc2lkZXJPdmVybGFwID0gdHJ1ZSkgY29uc3Q7CkBAIC02
MjgsOSArNjI4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVwZGF0ZUNvbXBvc2l0aW5n
TGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBjb25zdDsKICAgICBib29sIGZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gpOwogCi0gICAg
Ym9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNo
YW5nZSgpIGZpbmFsOwogCi0gICAgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1X
aWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZz
ZXQmIG5ld09mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlh
UGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBT
Y3JvbGxPZmZzZXQmIG5ld09mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIGFwcGx5T3ZlcmZsb3dU
b1ZpZXdwb3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Ny
b2xsYmFyTW9kZSYgdk1vZGUpOwogICAgIHZvaWQgYXBwbHlQYWdpbmF0aW9uVG9WaWV3cG9ydCgp
OwpAQCAtNjUxLDM5ICs2NTEsMzkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyRmx1
c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxlZEJhY2tp
bmdDb3ZlcmFnZSgpOwogCi0gICAgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYp
IGZpbmFsOworICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSBmaW5hbDsKIAotICAg
IHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIC8vIFNjcm9sbGFibGVB
cmVhIGludGVyZmFjZQotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Ny
b2xsUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1i
UmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xv
c2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UmVjdCBzY3JvbGxh
YmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBHcmFwaGlj
c0xheWVyKiBsYXllckZvclNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIEdyYXBoaWNz
TGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24m
KSBmaW5hbDsKKyAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRS
ZWN0JikgZmluYWw7CisgICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVh
KCkgY29uc3QgZmluYWw7CisgICAgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJv
b2wqID0gbnVsbHB0cikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJs
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbGluZygp
IGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxT
Y3JvbGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9s
bENvcm5lcigpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBH
cmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25zdCBmaW5hbDsKICNl
bmRpZgotICAgIHZvaWQgY29udGVudHNSZXNpemVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250
ZW50c1Jlc2l6ZWQoKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIHVub2Jz
Y3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVub2JzY3VyZWRD
b250ZW50U2l6ZUNoYW5nZWQoKSBmaW5hbDsKICNlbmRpZgogCi0gICAgYm9vbCB1c2VzQ29tcG9z
aXRlZFNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdXNlc0FzeW5jU2Nyb2xs
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNv
bnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXNlc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHVzZXNBc3luY1Njcm9sbGluZygpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmltYXRvcigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25z
dCBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRlIHNjcm9sbGJhciBub3RpZmljYXRpb25zIHRvIHVw
ZGF0ZSB0aGUgQVhPYmplY3QgY2FjaGUuCi0gICAgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbFJlbW92
ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24p
IGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxi
YXJPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICBJbnRTaXplIHNpemVGb3JSZXNpemVFdmVudCgp
IGNvbnN0OwogICAgIHZvaWQgc2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQoKTsKQEAgLTY5Myw3ICs2
OTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoKTsKICAg
ICB2b2lkIHVwZGF0ZUxheW91dFZpZXdwb3J0KCk7CiAKLSAgICB2b2lkIG5vdGlmeVBhZ2VUaGF0
Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeVBh
Z2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZW5h
YmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRlZCgpOwogICAgIHZvaWQgc3BlY3VsYXRpdmVUaWxp
bmdFbmFibGVUaW1lckZpcmVkKCk7CkBAIC03MDgsNyArNzA4LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVTY3Jv
bGxDb3JuZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpIGZpbmFs
OwogCiAgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggZmVjYmMzYmVmMGFhODU1OWE0MjY5MWJiNzFjMTM1Y2YyNDQyYzRmZi4uOWFi
NTc0YzNiMTk4MDUzOTA3MWFiZTRjZThmZDA5ZTYyMmE5NGFhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xMzM0LDE4ICsxMzM0LDE1IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNo
YW5nZWQoKQogVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IFBhZ2U6OnBsdWdpblZpZXdzKCkK
IHsKICAgICBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gdmlld3M7Ci0KICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygp
OworICAgICAgICBhdXRvKiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3
KQogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiB2aWV3
LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRn
ZXQpKQotICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQbHVnaW5WaWV3QmFz
ZT4oKndpZGdldCkpOworICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQu
Z2V0KCkpKQorICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQbHVnaW5WaWV3
QmFzZT4od2lkZ2V0LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICByZXR1cm4gdmll
d3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAKaW5kZXggMWM0N2UzZGZjNGRkZDFiZDQ1YzMyNTdmN2I0ZWQzMGRlYjhmOWE2OC4uNzZl
ODBjMDc4ZjFjNjZiZGFkNmI4MDFmODkzN2RiZDAwMWJmY2M1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCgpCiAgICAg
ICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkt
PmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7CiAgICAgICAgICAgICBpZiAobV9vYmplY3Qp
IHsKICAgICAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+
YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFu
aW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAgICAgICAgIGlmIChvZmZz
ZXQgPiBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpKQogICAgICAgICAgICAgICAg
ICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lckZp
cmVkLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTU3Nyw3ICs1NzcsNyBAQCBkb3VibGUgQW5pbWF0
aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAgICBpZiAobV9hbmltYXRpb24tPnRy
aWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmICht
X29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9
IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xsUG9zaXRpb25Gb3JGaXhlZFBvc2l0
aW9uKCkueSgpLnRvRmxvYXQoKTsKLSAgICAgICAgICAgICAgICBTY3JvbGxBbmltYXRpb25Ucmln
Z2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1f
YW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHNjcm9s
bFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24t
PnRyaWdnZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA+
PSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpICYmICghc2Nyb2xsVHJpZ2dlci5o
YXNFbmRWYWx1ZSgpIHx8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA8PSBzY3JvbGxUcmlnZ2VyLmVu
ZFZhbHVlKCkudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgfQpAQCAtNjUzLDcgKzY1Myw3IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVz
cyhkb3VibGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiAgICAg
fQogCiAgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBt
X2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAgICAgdGltaW5nRnVuY3Rp
b24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKTsKIAogICAgIHN3aXRjaCAodGltaW5n
RnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVy
RnVuY3Rpb246IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6Z2V0
RWxhcHNlZFRpbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8y
KQogICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5pbWF0aW9uLT50cmlnZ2Vy
KCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAgICAgIFNjcm9sbEFuaW1hdGlv
blRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
PigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgICAgIGF1dG8mIHNjcm9sbFRy
aWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRy
aWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2VyLmhhc0VuZFZhbHVlKCkgJiYgbV9v
YmplY3QpIHsKICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1fY29tcG9zaXRlQW5pbWF0aW9u
LT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgIGZs
b2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IGVkOTZhYjE1Mzg4MmI1OWRjOTljYmRmNWFjOTg2NGRiMGYwMDVhMDQuLjIy
YmRlNDY4YTA2YWI0NmMwYmEwZTg4OGI5YjczNWQxNDUxMmMwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTk5LDI4ICs5OSwyOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Nj
cm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYQogCiBFdmVudFRyYWNraW5n
UmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9u
c0ZvckZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKLSAgICBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyVmll
dyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyVmlldyB8fCByZW5k
ZXJWaWV3LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybiBFdmVudFRy
YWNraW5nUmVnaW9ucygpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgLy8g
T24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVzZW50IHRoZSBy
ZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRsZXJzLgogICAg
IEFTU0VSVChmcmFtZS5pc01haW5GcmFtZSgpKTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNraW5nUmVnaW9u
cygpOwogICAgIHJldHVybiBkb2N1bWVudC0+ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICNlbHNl
Ci0gICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lLnZpZXco
KTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEV2ZW50VHJhY2tpbmdSZWdp
b25zKCk7CiAKKyAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CisKICAgICAvLyBG
SVhNRTogc2hvdWxkIEFTU0VSVCghZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSBoZXJlLCBidXQg
bmVlZCB0byBmaXggRGVidWdQYWdlT3ZlcmxheXMKICAgICAvLyB0byBub3QgYXNrIGZvciByZWdp
b25zIGF0IGJhZCB0aW1lcy4KIAotICAgIGlmIChjb25zdCBGcmFtZVZpZXc6OlNjcm9sbGFibGVB
cmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpKSB7
CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFy
ZWFzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxl
QXJlYXMpIHsKICAgICAgICAgICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xsYWJsZSBhcmVhcyBjYW4g
YmUgc2Nyb2xsZWQgb2ZmIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAgIGlmIChzY3JvbGxh
YmxlQXJlYS0+dXNlc0FzeW5jU2Nyb2xsaW5nKCkpCkBAIC0xMzYsMTggKzEzNiwyMSBAQCBFdmVu
dFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNr
aW5nUmVnaW9uc0ZvckZyYW1lKAogICAgIH0KIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogZnJh
bWVWaWV3LT53aWRnZXRzSW5SZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiBy
ZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KTsKLSAgICAgICAgaWYgKCFy
ZW5kZXJXaWRnZXQgfHwgIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKKyAgICAgICAgaWYg
KCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAKLSAgICAgICAgaWYgKGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1do
ZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShy
ZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICBpZiAoIWRv
d25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1doZWVsRXZlbnRzKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCp3aWRnZXQpOworICAgICAgICBpZiAoIXJlbmRlcldpZGdldCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShyZW5k
ZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwogICAgIH0KICAgICAKLSAgICAv
LyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJhbWUgYXMg
YSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBoZXJlLgog
ICAgIEV2ZW50VHJhY2tpbmdSZWdpb25zIGV2ZW50VHJhY2tpbmdSZWdpb25zOworCisgICAgLy8g
RklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZyYW1lIGFzIGEg
c2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQgaGVyZS4KICAg
ICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZy
YW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewotICAgICAg
ICBGcmFtZVZpZXcqIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CisgICAgICAgIGF1
dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghc3ViZnJh
bWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2MCw3ICsxNjMsNyBAQCBFdmVu
dFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNr
aW5nUmVnaW9uc0ZvckZyYW1lKAogICAgICAgICBldmVudFRyYWNraW5nUmVnaW9ucy51bml0ZShz
dWJmcmFtZVJlZ2lvbik7CiAgICAgfQogCi0gICAgRG9jdW1lbnQ6OlJlZ2lvbkZpeGVkUGFpciB3
aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0ZVJlZ2lvbkZvckV2
ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0cygpKTsKKyAgICBh
dXRvIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFic29sdXRlUmVnaW9u
Rm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRUYXJnZXRzKCkpOwog
ICAgIGJvb2wgd2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQgPSB3aGVlbEhhbmRsZXJSZWdpb24u
c2Vjb25kOwogICAgIGlmICh3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCkgewogICAgICAgICAv
LyBGSVhNRTogbmVlZCB0byBoYW5kbGUgcG9zaXRpb246c3RpY2t5IGhlcmUgdG9vLgpAQCAtMTcy
LDYgKzE3NSw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjph
YnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAKICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBub3QgdGhlIG1haW4gZnJhbWUsIHdlIGNvdWxkIGNsaXAgdGhlIHJlZ2lvbiB0byB0
aGUgZnJhbWUncyBib3VuZHMuCiAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMudW5pdGVTeW5jaHJv
bm91c1JlZ2lvbihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbm9uRmFzdFNjcm9sbGFibGVSZWdp
b24pOworCiAgICAgcmV0dXJuIGV2ZW50VHJhY2tpbmdSZWdpb25zOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA5ZTcwZTlkMzZiOTk1ZWRjYmVhMjky
NTQzNjczNjZjNDkxOGEzYmMxLi5iMTExNjRmMDg1NWRiZGYyNWY2YjFjNjg2ZjcxNmI0NjcyMzJj
NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEtl
eWVkQ29kaW5nX2gKLSNkZWZpbmUgS2V5ZWRDb2RpbmdfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNTYsNyArMTU1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
QEAgLTIxMSw1ICsyMTAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gS2V5ZWRDb2RpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE0MzQwMDE0YWQ1YTk5NTM1OWFmN2I2OTljNTI4ZGQzODAzMjA5NWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzX2gKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotY2xhc3MgU3BlZWNoU3ludGhl
c2lzOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOwotY2xhc3MgU3BlZWNoU3ludGhl
c2lzVm9pY2U7Ci0gICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IGNyZWF0ZShTcGVlY2hTeW50aGVz
aXMqKTsKLSAgICAKLSAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVZvaWNlTGlzdChWZWN0b3I8
UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7Ci0gICAgdm9pZCBwbGF0Zm9ybVNwZWFr
KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwotICAgIAotcHJpdmF0ZToKLSAgICBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hTeW50aGVzaXMqKTsKLQotICAgIFNwZWVjaFN5bnRoZXNp
cyogbV9zcGVlY2hTeW50aGVzaXM7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKaW5kZXggMWYyMDdmNDQz
NjY5OWI0ZDFjODQ1ZDcwY2NjNzI5ZDM2ZTkwYmJhMi4uMTBhODMwZTM5YzdiN2ZlZDg5MzhlYzBi
NTQwMDBlZTg0N2NlMGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE2ICszMCwxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkKK1JlZjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYgY2xpZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CiB9CiAgICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNs
aWVudCkKLSAgICAsIG1fdm9sdW1lKDEuMGYpCi0gICAgLCBtX3JhdGUoMS4wZikKLSAgICAsIG1f
cGl0Y2goMS4wZikKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2VDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGllbnQpCiB7CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCBhODY5YmI4NzI4NGRjNTllMDdlZTY0MjMzNmVhZDE4
Y2E5YzVkODg0Li5lMDg3NzViMjVlZjQwMGU2NmJkYzJlOGRjNDVjODJiNmYxMGM4Njg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyOSArMjMsMjEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCi0jZGVmaW5lIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgLy8gSW1wbGVtZW50IG1ldGhvZHMgYXMgbmVlZGVkLgotcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkg
eyB9CiB9OwogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKLSAg
ICAKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVh
dGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmKTsKKwogICAgIGNvbnN0
IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIHZvaWQgc2V0VGV4
dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgfQogICAgIApAQCAtNzQsMjAg
KzY2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENsaWVudChQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAg
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CisgICAgZXhwbGljaXQg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VDbGllbnQmKTsKIAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Q2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7
CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0gICAg
ZmxvYXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9yYXRlOwotICAgIGZsb2F0IG1fcGl0Y2g7Ci0g
ICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGZsb2F0IG1fdm9sdW1lIHsgMSB9OworICAgIGZs
b2F0IG1fcmF0ZSB7IDEgfTsKKyAgICBmbG9hdCBtX3BpdGNoIHsgMSB9OworICAgIGRvdWJsZSBt
X3N0YXJ0VGltZSB7IDAgfTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKaW5kZXggNTgwZjE5ZDE2Nzhk
ZTk1ZWZlNmM5NzIwMDU5ZDBlYjYyYjNkMDFiOC4uMjQzNzZjZGU5MjMwOGY2NjAzMDdhM2NkMzVk
NmRmYjcxZDU1MmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwxNyArMzAsMTcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KQorUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBp
c0RlZmF1bHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkp
OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgpCitSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSk7CiB9Ci0g
ICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCisKK2lubGlu
ZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgOiBtX3Zv
aWNlVVJJKHZvaWNlVVJJKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2xhbmcobGFuZykK
QEAgLTQ5LDEyICs0OSw2IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSCiB7CiB9CiAKLVBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKQot
ICAgIDogbV9sb2NhbFNlcnZpY2UoZmFsc2UpCi0gICAgLCBtX2RlZmF1bHQoZmFsc2UpCi17Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDM0M2I5ZTdiYWNmMTVlNDk5MzIwOGY1NTgxNGZjZTM3
Zjc0NTFkOWQuLjAxNThiMzQ5ODRkZjU2MWVjYTdlYmZlNzQzMGZlODgzZjlhMTkwNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywyMSArMjMsMTggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKLSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQog
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIHN0
YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CiAKICAgICBj
b25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsgfQogICAg
IHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID0g
dm9pY2VVUkk7IH0KQEAgLTU2LDE3ICs1MywxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJv
b2wgaXNEZWZhdWx0KTsKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7CisgICAg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpID0gZGVmYXVsdDsKIAogICAgIFN0cmluZyBt
X3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fbGFuZzsKLSAgICBi
b29sIG1fbG9jYWxTZXJ2aWNlOwotICAgIGJvb2wgbV9kZWZhdWx0OworICAgIGJvb2wgbV9sb2Nh
bFNlcnZpY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kZWZhdWx0IHsgZmFsc2UgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGNiZmZlNmUxYzgxMmI0ZGRkMTRlNDcw
MDNhODc4NDhiNGVmMWFkY2IuLmI4OWQ1NjYxMTNmNWNjN2ZkZTVlNGVlNGI1OGE4YzI5YTliNjQ2
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxNC0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjIsMTQgKzYyLDE0IEBAIFNjcm9sbFZpZXc6On5TY3JvbGxWaWV3KCkKIHsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChQYXNzUmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQp
IAordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRnZXQmIGNoaWxkKQogewotICAgIFdpZGdl
dCogY2hpbGQgPSBwcnBDaGlsZC5nZXQoKTsKLSAgICBBU1NFUlQoY2hpbGQgIT0gdGhpcyAmJiAh
Y2hpbGQtPnBhcmVudCgpKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hp
bGRyZW4uYWRkKHBycENoaWxkKTsKLSAgICBpZiAoY2hpbGQtPnBsYXRmb3JtV2lkZ2V0KCkpCi0g
ICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoY2hpbGQpOworICAgIEFTU0VSVCgmY2hpbGQgIT0gdGhp
cyk7CisgICAgQVNTRVJUKCFjaGlsZC5wYXJlbnQoKSk7CisgICAgY2hpbGQuc2V0UGFyZW50KHRo
aXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsKKyAgICBpZiAoY2hpbGQucGxhdGZvcm1X
aWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1BZGRDaGlsZCgmY2hpbGQpOwogfQogCiB2b2lkIFNj
cm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hpbGQpCkBAIC05Nyw3ICs5Nyw3IEBAIGJv
b2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4m
IHNjcm9sbGJhciwgU2Nyb2xsYmFyCiAKICAgICBpZiAoaGFzQmFyICYmICFzY3JvbGxiYXIpIHsK
ICAgICAgICAgc2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKG9yaWVudGF0aW9uKTsKLSAgICAg
ICAgYWRkQ2hpbGQoc2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAgYWRkQ2hpbGQoKnNjcm9sbGJh
cik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcihzY3JvbGxiYXIuZ2V0KCksIG9yaWVudGF0aW9u
KTsKICAgICAgICAgc2Nyb2xsYmFyLT5zdHlsZUNoYW5nZWQoKTsKICAgICAgICAgaWYgKGNvbnRl
bnRTaXplQWZmZWN0ZWQpCkBAIC04MjksMTIgKzgyOSw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Ny
b2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgd2luZG93LT5pbnZh
bGlkYXRlUm9vdFZpZXcoSW50UmVjdCgpKTsKIH0KIAotYm9vbCBTY3JvbGxWaWV3OjpzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGhvc3RXaW5k
b3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRo
KGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlk
YXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJlY3QpOwpAQCAtMTAzOCwxNyArMTAzMiwx
NCBAQCB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKIHsKICAgICBpZiAocGxh
dGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgSGFzaFNldDxSZWZQdHI8V2lk
Z2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IG1fY2hpbGRy
ZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgKCpjdXJyZW50
KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJl
bikKKyAgICAgICAgY2hpbGQtPmZyYW1lUmVjdHNDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgU2Nyb2xs
Vmlldzo6Y2xpcFJlY3RDaGFuZ2VkKCkKIHsKLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gbV9jaGlsZHJlbi5iZWdp
bigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICAoKmN1cnJlbnQpLT5jbGlw
UmVjdENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAg
ICAgY2hpbGQtPmNsaXBSZWN0Q2hhbmdlZCgpOwogfQogCiBzdGF0aWMgdm9pZCBwb3NpdGlvblNj
cm9sbGJhckxheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIFNjcm9sbGJhciogc2Ny
b2xsYmFyKQpAQCAtMTE1MCwxMCArMTE0MSw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlIG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlCiAg
ICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxDb3JuZXIoKQotewotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkK
IHsKICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5wYWludFNjcm9sbENvcm5lcih0aGlzLCBj
b250ZXh0LCBjb3JuZXJSZWN0KTsKQEAgLTEzOTIsOSArMTM3OSw4IEBAIHZvaWQgU2Nyb2xsVmll
dzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgaWYgKCFpc1NlbGZWaXNpYmxl
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0
Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJl
ZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CisgICAg
Zm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRW
aXNpYmxlKHZpc2libGUpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNob3coKQpAQCAtMTQwMiw5
ICsxMzg4LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93KCkKICAgICBpZiAoIWlzU2VsZlZpc2li
bGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0cnVlKTsKICAgICAgICAgaWYgKGlzUGFy
ZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRl
cmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSGFzaFNldDxS
ZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUodHJ1ZSk7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgICAg
ICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTQxNSw5ICsxNDAwLDggQEAgdm9pZCBTY3JvbGxWaWV3OjpoaWRlKCkKIHsKICAgICBpZiAo
aXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChpc1BhcmVudFZpc2libGUoKSkgewotICAg
ICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRy
ZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVy
YXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAg
ICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRQYXJl
bnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBzZXRTZWxmVmlzaWJsZShmYWxz
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGRiNTcwZGQ5
ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMuLjZiMzFmOTgyZjQyOGIwOGFhYjU1OTY1
ODVmZGZjNzExYWY0ZTdmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNs
dWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgotCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKKwogT0JKQ19DTEFTUyBXQUtTY3JvbGxW
aWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwogCkBAIC00Niw2ICs0Niw3IEBAIE9CSkNfQ0xBU1Mg
V0FLVmlldzsKICNpZm5kZWYgTlNWaWV3CiAjZGVmaW5lIE5TVmlldyBXQUtWaWV3CiAjZW5kaWYK
KwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZp
bmVkIF9fT0JKQ19fCkBAIC02NCwxMCArNjUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNj
cm9sbFZpZXcoKTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KLSAgICBpbnQg
c2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50
IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0Jikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgZmluYWw7
CisgICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zm
c2V0JikgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBm
b3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRD
b250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwpAQCAtODUsMTQgKzg2LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCA9IDA7CiAKICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlvbiBhbmQgaW5zcGVjdGlvbi4KLSAgICBj
b25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkKFBh
c3NSZWZQdHI8V2lkZ2V0Pik7CisgICAgY29uc3QgSGFzaFNldDxSZWY8V2lkZ2V0Pj4mIGNoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkQ2hpbGQoV2lkZ2V0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdl
dCYpOwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3
aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNl
IGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxiYXJz
LgotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQotICAgIFNjcm9sbGJhciogdmVy
dGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xs
YmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgU2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2Nyb2xsVmlld1Njcm9sbGJhcihjb25zdCBX
aWRnZXQqIGNoaWxkKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgPT0gY2hp
bGQgfHwgdmVydGljYWxTY3JvbGxiYXIoKSA9PSBjaGlsZDsgfQogCiAgICAgdm9pZCBwb3NpdGlv
blNjcm9sbGJhckxheWVycygpOwpAQCAtMTIxLDcgKzEyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlT
dHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKSBmaW5hbDsKIAogICAgIC8vIEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVj
ZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRoYXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNh
c2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tpbmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24g
Y2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWludHMgdGhlIGVudGlyZSBjb250ZW50cy4K
QEAgLTE2Nyw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW4gdGhlIHNpdHVhdGlvbiB0aGUg
Y2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsaW5nIChpZS4gd2l0aCBhIHRpbGVk
IGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQogICAgIC8vIHRoZSBzZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0aGUgbWFpbmZyYW1lLCB0aG91Z2ggdGhp
cyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBqdXN0IGJlZm9yZSByZXN1bWluZyB0aGUg
cGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBoYXBwZW4gd2hlbiBwYW5uaW5nLCBwaW5j
aGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBzY2FsZSBvciBwb3NpdGlvbiBhcmUgY2hh
bmdlZCBtYW51YWxseS4KLSAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3Qp
LnNpemUoKTsgfQorICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgp
OyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIHNl
dEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVj
dCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OyB9CkBA
IC0yMTcsMTMgKzIxOCwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGdldHRp
bmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluc2lkZSB0aGUg
U2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBpbmRpdmlkdWFsIHdpZHRoIGFuZCBoZWln
aHQKICAgICAvLyB2YWx1ZXMpLgotICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgY29udGVudHNT
aXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBhdCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZp
c2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXpl
IGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFz
IHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCiAgICAgaW50IGNvbnRlbnRzV2lk
dGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgpOyB9CiAgICAgaW50IGNv
bnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkuaGVpZ2h0KCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAg
IC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24g
KGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFsIFggYW5kIFkgdmFsdWVz
KS4KLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5s
b2NhdGlvbigpOyB9CisgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxl
UmVjdCkubG9jYXRpb24oKTsgfQogCiAgICAgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBi
ZSBzY3JvbGxlZCB0by4KIApAQCAtMjU4LDcgKzI1OSw3IEBAIHB1YmxpYzoKICAgICAvLyByZWxh
dGl2ZSB0byB0aGUgdmVyeSB0b3Agb2YgdGhlIHZpZXcuCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Ny
b2xsUG9zaXRpb24gZG9jdW1lbnRTY3JvbGxQb3NpdGlvblJlbGF0aXZlVG9WaWV3T3JpZ2luKCkg
Y29uc3Q7CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBjYWNo
ZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9s
bFBvc2l0aW9uKCk7IH0KICAgICBTY3JvbGxQb3NpdGlvbiBjYWNoZWRTY3JvbGxQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0KQEAgLTMxMywxMyArMzE0
LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Zmc2NyZWVuKCkgY29uc3Q7CiAKICAgICAvLyBD
YWxsZWQgd2hlbiBvdXIgZnJhbWUgcmVjdCBjaGFuZ2VzIChvciB0aGUgcmVjdC9zY3JvbGwgcG9z
aXRpb24gb2YgYW4gYW5jZXN0b3IgY2hhbmdlcykuCi0gICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBmaW5hbDsKICAgICAK
ICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRlIG91ciBzY3JvbGxiYXJzIGFuZCBub3Rp
Znkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlIHRvIG5vdGlm
eSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBjaGFuZ2UuCi0gICAgdm9pZCBjbGlwUmVjdENo
YW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBSZWN0Q2hhbmdlZCgpIGZpbmFsOwogCiAg
ICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gaGl0IHRlc3Qgc2Nyb2xsYmFycyBmcm9t
IHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxlcnMgKGxpa2UgV2luMzIpLgogICAgIFNj
cm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwpA
QCAtMzQzLDEzICszNDQsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpZGdldCBvdmVy
cmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29udGVudHMgb2YgdGhlIHZpZXcgYXMgd2Vs
bCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICAg
ICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jik7
CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidz
IHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBh
bmQgaGlkZGVuLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhpZGUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhcmVudFZp
c2libGUoYm9vbCkgZmluYWw7CiAgICAgCiAgICAgLy8gUGFuIHNjcm9sbGluZy4KICAgICBzdGF0
aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVzID0gMTU7CkBAIC0zNTcsMjEgKzM1OCwxOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQYW5TY3JvbGxJY29uKCk7CiAgICAgdm9pZCBwYWlu
dFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
b2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29s
IHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsKLSAgICBJbnRSZWN0IHNjcm9sbENvcm5l
clJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUG9pbnRJblNjcm9sbGJhckNvcm5l
cihjb25zdCBJbnRQb2ludCYpOworICAgIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNv
bnN0OworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IGZpbmFsOwogICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhp
Y3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgSW50UmVjdCBj
b252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29u
c3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3QgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFp
bmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29u
c3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRS
ZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWlu
aW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwor
ICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBT
Y3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBjYWxj
dWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KTsKIAotICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxPZmZzZXRD
aGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNv
bnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KTsKIAogcHJvdGVjdGVkOgpAQCAtMzg0LDI2ICsz
ODMsMjYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5n
ZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0
ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Ny
b2xsaW5nRGlkQ2hhbmdlKCkgPSAwOwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2Vk
IHRvIGNyZWF0ZS9kZXN0cm95IHNjcm9sbGJhcnMuCiAgICAgLy8gVGhleSByZXR1cm4gdHJ1ZSBp
ZiB0aGUgc2Nyb2xsYmFyIHdhcyBhZGRlZCBvciByZW1vdmVkLgotICAgIGJvb2wgc2V0SGFzSG9y
aXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gMCk7Ci0g
ICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFm
ZmVjdGVkID0gMCk7CisgICAgYm9vbCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wsIGJv
b2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRyKTsKKyAgICBib29sIHNldEhhc1ZlcnRp
Y2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRyKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsKLSAgICB2b2lkIGludmFs
aWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCkgPSAwOworICAgIHZvaWQgaW52YWxpZGF0ZVNj
cm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAgICAgLy8gU2Nyb2xsIHRo
ZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMuCi0gICAgdmlydHVhbCBib29sIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSA9IDA7
CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGludmFsaWRhdGluZyBldmVyeXRoaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVw
ZGF0ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmLCBi
b29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRpb25TeW5jaHJvbm91c2x5
KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJhbWVWaWV3IHRvIGNoZWNrIHRoZSB3cml0aW5n
LW1vZGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0
aWNhbERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1
bWVudCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJh
cnMgdG8gYWNjdXJhdGVseSByZWZsZWN0IHRoZSBzdGF0ZSBvZiB0aGUgdmlldy4KICAgICB2b2lk
IHVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbik7
CkBAIC00MTEsMjcgKzQxMCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgZmxvYXQgcGxhdGZvcm1Ub3BD
b250ZW50SW5zZXQoKSBjb25zdDsKICAgICB2b2lkIHBsYXRmb3JtU2V0VG9wQ29udGVudEluc2V0
KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFm
dGVyQ29udGVudFNpemVDaGFuZ2UoKTsKKyAgICB2b2lkIGhhbmRsZURlZmVycmVkU2Nyb2xsVXBk
YXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZERl
ZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6
ZUNoYW5nZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlh
UGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNvbnN0IFNjcm9sbE9mZnNl
dCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1X
aWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNvbnN0IFNjcm9sbE9mZnNldCYpID0gMDsK
IAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgdW5vYnNjdXJlZENvbnRlbnRT
aXplQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bm9ic2N1cmVkQ29udGVudFNpemVD
aGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8gU2l6ZSBhdmFpbGFibGUg
Zm9yIHZpZXcgY29udGVudHMsIGV4Y2x1ZGluZyBjb250ZW50IGluc2V0cy4gTm90IGFmZmVjdGVk
IGJ5IHpvb21pbmcuCiAgICAgSW50U2l6ZSBzaXplRm9yVW5vYnNjdXJlZENvbnRlbnQoVmlzaWJs
ZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0
OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVu
dFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25z
dCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2li
bGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZp
b3IpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0g
RXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wbGV0ZVVwZGF0ZXNBZnRl
clNjcm9sbFRvKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKTsKIAogICAgIGJvb2wgc2V0SGFz
U2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mLCBTY3JvbGxiYXJPcmllbnRhdGlv
biwgYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQpOwogCisgICAgYm9vbCBp
c1Njcm9sbFZpZXcoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBSZWZQdHI8
U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4g
bV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBTY3JvbGxiYXJNb2RlIG1faG9yaXpvbnRhbFNjcm9s
bGJhck1vZGU7CkBAIC00NDIsNyArNDQzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9o
aWJpdHNTY3JvbGxpbmc7CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiBtX2NoaWxkcmVu
OworICAgIEhhc2hTZXQ8UmVmPFdpZGdldD4+IG1fY2hpbGRyZW47CiAKICAgICAvLyBUaGlzIGJv
b2wgaXMgdW51c2VkIG9uIE1hYyBPUyBiZWNhdXNlIHdlIGRpcmVjdGx5IGFzayB0aGUgcGxhdGZv
cm0gd2lkZ2V0CiAgICAgLy8gd2hldGhlciBpdCBpcyBzYWZlIHRvIGJsaXQgb24gc2Nyb2xsLgpA
QCAtNDgzLDkgKzQ4NCw5IEBAIHByaXZhdGU6CiAKICAgICBJbnRSZWN0IHJlY3RUb0NvcHlPblNj
cm9sbCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3
aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMuICBGcmFtZVZpZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2Vu
ZXJhdGUgcmVwYWludCBpbnZhbGlkYXRpb25zLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXll
clBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSB7IH0KKyAgICAvLyBDYWxsZWQgd2hlbiB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZpZXcgY2hhbmdlcy4gRnJhbWVWaWV3IG92
ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQgaW52YWxpZGF0aW9ucy4KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpID0gMDsK
IAogICAgIHZvaWQgcGxhdGZvcm1BZGRDaGlsZChXaWRnZXQqKTsKICAgICB2b2lkIHBsYXRmb3Jt
UmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uLmgKaW5kZXggOWEwZGYxNzAwOGYyMTc0YmQxN2ZiMzYxNjgzNzQ5NWE0M2Mx
OGE3Yy4uMWJlZWY3ZjUxYmIzNjU5MjE5NTQ2NzJiYTFmMmI4OTUyNTJkYzVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApAQCAtMiw3ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChn
cmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwyMSArMjIsMTYgQEAK
ICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25faAotI2RlZmluZSBBbmltYXRpb25faAorI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaWYgRU5B
QkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0jaW5jbHVkZSAiQW5pbWF0aW9uVHJpZ2dlci5o
IgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlRp
bWluZ0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYg
RU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCisjaW5jbHVkZSAiQW5pbWF0aW9uVHJpZ2dl
ci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMjAgKzU3LDIwIEBA
IHB1YmxpYzoKIAogICAgIC8vIEZsYWdzIHRoaXMgdG8gYmUgdGhlIHNwZWNpYWwgIm5vbmUiIGFu
aW1hdGlvbiAoYW5pbWF0aW9uLW5hbWU6IG5vbmUpCiAgICAgYm9vbCBpc05vbmVBbmltYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzTm9uZTsgfQorCiAgICAgLy8gV2UgY2FuIG1ha2UgcGxhY2Vo
b2xkZXIgQW5pbWF0aW9uIG9iamVjdHMgdG8ga2VlcCB0aGUgY29tbWEtc2VwYXJhdGVkIGxpc3Rz
CiAgICAgLy8gb2YgcHJvcGVydGllcyBpbiBzeW5jLiBpc1ZhbGlkQW5pbWF0aW9uIG1lYW5zIHRo
aXMgaXMgbm90IGEgcGxhY2Vob2xkZXIuCiAgICAgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gIW1faXNOb25lICYmICFtX25hbWUuaXNFbXB0eSgpOyB9CiAKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICghbV9kaXJlY3Rpb25TZXQg
JiYgIW1fZHVyYXRpb25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKLSAgICAgICAgICAgICAgICAmJiAh
bV9uYW1lU2V0ICYmICFtX3BsYXlTdGF0ZVNldCAmJiAhbV9pdGVyYXRpb25Db3VudFNldAotICAg
ICAgICAgICAgICAgICYmICFtX2RlbGF5U2V0ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0ICYmICFt
X3Byb3BlcnR5U2V0CisgICAgICAgIHJldHVybiAhbV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRp
b25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1f
cGxheVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CisgICAgICAgICAgICAmJiAhbV9k
ZWxheVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9wZXJ0eVNldAogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgICAgICAgICAgICAgICYmICFtX3RyaWdn
ZXJTZXQpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgJiYgIW1fdHJp
Z2dlclNldAogI2VuZGlmCisgICAgICAgICAgICA7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5
T3JaZXJvRHVyYXRpb24oKSBjb25zdApAQCAtMTE0LDExICsxMDksNyBAQCBwdWJsaWM6CiAKICAg
ICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5OyB9CiAKLSAgICBlbnVtIEFu
aW1hdGlvbk1vZGUgewotICAgICAgICBBbmltYXRlQWxsLAotICAgICAgICBBbmltYXRlTm9uZSwK
LSAgICAgICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5Ci0gICAgfTsKKyAgICBlbnVtIEFuaW1hdGlv
bk1vZGUgeyBBbmltYXRlQWxsLCBBbmltYXRlTm9uZSwgQW5pbWF0ZVNpbmdsZVByb3BlcnR5IH07
CiAKICAgICBlbnVtIEFuaW1hdGlvbkRpcmVjdGlvbiB7CiAgICAgICAgIEFuaW1hdGlvbkRpcmVj
dGlvbk5vcm1hbCwKQEAgLTEzOSwxMCArMTMwLDEwIEBAIHB1YmxpYzoKICAgICBTdHlsZTo6U2Nv
cGVPcmRpbmFsIG5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVN0
eWxlU2NvcGVPcmRpbmFsOyB9CiAgICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFuaW1QbGF5U3RhdGU+KG1fcGxheVN0YXRlKTsgfQogICAg
IENTU1Byb3BlcnR5SUQgcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5OyB9Ci0g
ICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CisgICAgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJp
Z2dlcj4gdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcjsgfQorICAgIEFuaW1hdGlv
blRyaWdnZXIqIHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXIuZ2V0KCk7IH0KICNl
bmRpZgogCiAgICAgdm9pZCBzZXREZWxheShkb3VibGUgYykgeyBtX2RlbGF5ID0gYzsgbV9kZWxh
eVNldCA9IHRydWU7IH0KQEAgLTE1OCwxMCArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICB9CiAgICAg
dm9pZCBzZXRQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgZCkgeyBtX3BsYXlTdGF0ZSA9IGQ7IG1f
cGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0gdHJ1ZTsgfQotICAgIHZvaWQg
c2V0VGltaW5nRnVuY3Rpb24oUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gZikgeyBtX3RpbWlu
Z0Z1bmN0aW9uID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0KKyAgICB2b2lkIHNl
dFRpbWluZ0Z1bmN0aW9uKFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mJiBmdW5jdGlvbikgeyBtX3Rp
bWluZ0Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0
cnVlOyB9CiAgICAgdm9pZCBzZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbk1vZGUgbW9kZSkgeyBt
X21vZGUgPSBtb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
dm9pZCBzZXRUcmlnZ2VyKFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gdCkgeyBtX3RyaWdn
ZXIgPSB0OyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRUcmlnZ2VyKFJlZjxB
bmltYXRpb25UcmlnZ2VyPiYmIHRyaWdnZXIpIHsgbV90cmlnZ2VyID0gV1RGTW92ZSh0cmlnZ2Vy
KTsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldElzTm9uZUFu
aW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CkBAIC0xOTcsMjIgKzE4OCwyMiBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlsbE1vZGUgOiAyOwogCiAKLSAgICB1bnNpZ25lZCBt
X3BsYXlTdGF0ZSAgICAgOiAyOworICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlIDogMjsKIAotICAg
IGJvb2wgbV9kZWxheVNldCAgICAgICAgICA6IDE7Ci0gICAgYm9vbCBtX2RpcmVjdGlvblNldCAg
ICAgIDogMTsKLSAgICBib29sIG1fZHVyYXRpb25TZXQgICAgICAgOiAxOwotICAgIGJvb2wgbV9m
aWxsTW9kZVNldCAgICAgICA6IDE7CisgICAgYm9vbCBtX2RlbGF5U2V0IDogMTsKKyAgICBib29s
IG1fZGlyZWN0aW9uU2V0IDogMTsKKyAgICBib29sIG1fZHVyYXRpb25TZXQgOiAxOworICAgIGJv
b2wgbV9maWxsTW9kZVNldCA6IDE7CiAgICAgYm9vbCBtX2l0ZXJhdGlvbkNvdW50U2V0IDogMTsK
LSAgICBib29sIG1fbmFtZVNldCAgICAgICAgICAgOiAxOwotICAgIGJvb2wgbV9wbGF5U3RhdGVT
ZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX3Byb3BlcnR5U2V0ICAgICAgIDogMTsKKyAgICBib29s
IG1fbmFtZVNldCA6IDE7CisgICAgYm9vbCBtX3BsYXlTdGF0ZVNldCA6IDE7CisgICAgYm9vbCBt
X3Byb3BlcnR5U2V0IDogMTsKICAgICBib29sIG1fdGltaW5nRnVuY3Rpb25TZXQgOiAxOwogI2lm
IEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIGJvb2wgbV90cmlnZ2VyU2V0ICAg
ICAgICA6IDE7CisgICAgYm9vbCBtX3RyaWdnZXJTZXQgOiAxOwogI2VuZGlmCiAKLSAgICBib29s
IG1faXNOb25lICAgICAgICAgICAgOiAxOworICAgIGJvb2wgbV9pc05vbmUgOiAxOwogCiBwdWJs
aWM6CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsRGVsYXkoKSB7IHJldHVybiAwOyB9CkBAIC0y
MjMsMTIgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgaW5pdGlh
bE5hbWUoKTsKICAgICBzdGF0aWMgRUFuaW1QbGF5U3RhdGUgaW5pdGlhbFBsYXlTdGF0ZSgpIHsg
cmV0dXJuIEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9CiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQg
aW5pdGlhbFByb3BlcnR5KCkgeyByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxUaW1pbmdGdW5jdGlv
bigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpOyB9CisgICAg
c3RhdGljIFJlZjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1
cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KICNpZiBFTkFCTEUoQ1NT
X0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxBbmltYXRp
b25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRpb25UcmlnZ2Vy
OjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8QW5pbWF0aW9uVHJpZ2dlcj4gaW5pdGlhbFRy
aWdnZXIoKSB7IHJldHVybiBBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKCk7IH0KICNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQW5pbWF0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0
LmNwcAppbmRleCA2MjVkNzkwMTVhMDc0MDZhMjk5ODgwMTNhNjUyMDZiNTA4NDI3MWVhLi4wYTMy
MDIyNTQ1OWIxZmQwNjYyNjVlZjJjZDdhNTlkZTcyMjU3MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCkBAIC0yNiwxNSAr
MjYsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIEZJTExfVU5TRVRfUFJPUEVS
VFkodGVzdCwgcHJvcEdldCwgcHJvcFNldCkgXAogZm9yIChpID0gMDsgaSA8IHNpemUoKSAmJiBh
bmltYXRpb24oaSkudGVzdCgpOyArK2kpIHsgfSBcCi1pZiAoaSA8IHNpemUoKSAmJiBpICE9IDAp
IHsgXAoraWYgKGkpIHsgXAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBpIDwgc2l6ZSgpOyArK2ks
ICsraikgXAogICAgICAgICBhbmltYXRpb24oaSkucHJvcFNldChhbmltYXRpb24oaikucHJvcEdl
dCgpKTsgXAogfQogCiBBbmltYXRpb25MaXN0OjpBbmltYXRpb25MaXN0KGNvbnN0IEFuaW1hdGlv
bkxpc3QmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUob3Ro
ZXIuYW5pbWF0aW9uKGkpKSk7CisgICAgbV9hbmltYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkob3RoZXIuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG90aGVyLm1fYW5p
bWF0aW9ucykKKyAgICAgICAgbV9hbmltYXRpb25zLnVuY2hlY2tlZEFwcGVuZChBbmltYXRpb246
OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAogdm9pZCBBbmltYXRpb25MaXN0OjpmaWxs
VW5zZXRQcm9wZXJ0aWVzKCkKQEAgLTU1LDkgKzU2LDEwIEBAIGJvb2wgQW5pbWF0aW9uTGlzdDo6
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAo
c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9uKGkpICE9IG90aGVyLmFuaW1h
dGlvbihpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb25MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCmluZGV4IGM4NGNiOWIxZDE1MTYzZDA3Njg5Mzc0NjE3NDA2ZDg0OTQwZGFhZmUu
LmVhN2M5Yjc4YTE5NTBmMTVlOTRmYWFiYWE5NTFiNDgxNTUyZjdjY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaApAQCAtMjIsOCAr
MjIsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbkxpc3RfaAotI2RlZmluZSBBbmlt
YXRpb25MaXN0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzYsNiArMzUsNyBAQCBjbGFzcyBBbmltYXRpb25MaXN0
IHsKIHB1YmxpYzoKICAgICBBbmltYXRpb25MaXN0KCkgeyB9CiAgICAgQW5pbWF0aW9uTGlzdChj
b25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0aW9uTGlzdChBbmltYXRpb25MaXN0JiYp
ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZmlsbFVuc2V0UHJvcGVydGllcygpOwogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JikgY29uc3Q7CkBAIC00OSwyMiArNDksMTcg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBuKSB7IG1fYW5pbWF0aW9u
cy5yZXNpemUobik7IH0KICAgICB2b2lkIHJlbW92ZShzaXplX3QgaSkgeyBtX2FuaW1hdGlvbnMu
cmVtb3ZlKGkpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBbmltYXRpb24+IGFuaW1h
dGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRpb24pOwotICAgICAgICBtX2FuaW1h
dGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7Ci0gICAgfQotICAgIAotICAgIEFuaW1hdGlvbiYgYW5p
bWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiAqbV9hbmltYXRpb25zW2ldOyB9Ci0gICAgY29uc3Qg
QW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuICptX2FuaW1hdGlv
bnNbaV07IH0KKyAgICB2b2lkIGFwcGVuZChSZWY8QW5pbWF0aW9uPiYmIGFuaW1hdGlvbikgeyBt
X2FuaW1hdGlvbnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0aW9uKSk7IH0KKworICAgIEFuaW1hdGlv
biYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0uZ2V0KCk7IH0K
KyAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3QgeyByZXR1cm4g
bV9hbmltYXRpb25zW2ldLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIEFuaW1hdGlvbkxp
c3QmIG9wZXJhdG9yPShjb25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0aW9uTGlzdCYg
b3BlcmF0b3I9KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCi0gICAgVmVjdG9yPFJlZlB0
cjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CisgICAgVmVjdG9yPFJlZjxBbmltYXRpb24+PiBt
X2FuaW1hdGlvbnM7CiB9OyAgICAKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBBbmltYXRpb25MaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCmluZGV4IGZjYTQ1YzEwZDIxMDRmMDVlZGViYjc4
ODAwMTRhMjYzYTY1YjFlMTEuLjVlYTAxYjIwYjI2MjdiOGQ5N2JhMzVmM2UyZDdjYmU0YTU1Mjk0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25UcmlnZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvblRyaWdnZXIuaApAQCAtMjMsMjkgKzIzLDI0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQW5pbWF0aW9uVHJpZ2dlcl9oCi0jZGVmaW5lIEFuaW1hdGlvblRyaWdnZXJfaAor
I3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKIAogI2lu
Y2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNh
c3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uVHJpZ2dlciA6
IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRyaWdnZXI+IHsKIHB1YmxpYzoKLQotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQot
ICAgIGVudW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUgewotICAgICAgICBBdXRvQW5pbWF0
aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlCi0gICAgfTsKKyAgICB2
aXJ0dWFsIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgfkFuaW1hdGlvblRyaWdnZXIoKSB7IH0KIAorICAgIGVudW0gY2xhc3MgQW5pbWF0aW9u
VHJpZ2dlclR5cGUgeyBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFuaW1hdGlvblRy
aWdnZXJUeXBlIH07CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBpc0F1dG9BbmltYXRpb25UcmlnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IEFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlclR5cGU7IH0KQEAgLTYyLDE2ICs1NywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgQW5pbWF0aW9u
VHJpZ2dlclR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgQXV0b0FuaW1hdGlvblRyaWdnZXIgOiBw
dWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBBdXRvQW5pbWF0aW9uVHJpZ2dlciBmaW5h
bCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEF1dG9B
bmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5BdXRvQW5pbWF0
aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvblRy
aWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRp
b25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBvdGhlci5pc0F1
dG9BbmltYXRpb25UcmlnZ2VyKCk7CiAgICAgfQpAQCAtODIsMjIgKzc1LDIwIEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0
IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25U
cmlnZ2VyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1hdGlvblRyaWdn
ZXIpOwogICAgIH0KIH07CiAKLWNsYXNzIFNjcm9sbEFuaW1hdGlvblRyaWdnZXIgOiBwdWJsaWMg
QW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyIGZpbmFsIDog
cHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZShMZW5ndGggc3RhcnRWYWx1ZSwgTGVuZ3Ro
IGVuZFZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRl
KExlbmd0aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIoc3RhcnRWYWx1ZSwgZW5kVmFs
dWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflNjcm9sbEFu
aW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRp
b25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5p
bWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW90aGVyLmlz
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTMzLDkgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2VuZFZhbHVlID0gZW5kVmFs
dWU7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5kVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5kVmFsdWUpKTsK
ICAgICB9CiAKICAgICBMZW5ndGggbV9zdGFydFZhbHVlOwpAQCAtMTU0LDUgKzE0NSwzIEBAIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoQXV0b0FuaW1hdGlvblRyaWdn
ZXIsIGlzQXV0b0FuaW1hdGlvblRyCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FOSU1BVElPTl9U
UklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcik7
CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQW5pbWF0aW9uVHJpZ2dlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmluZGV4IGY1ZTY2
MTZhOTdjZDUzYzZiY2FlMTM1ZGQzNmNjNDdjMmZiN2M4Y2MuLjE4YmFlYTFkOTk4ODkyYmRjYWJl
YmM5M2RlMzU3MzNlMTBjMjlmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMiw1NCArMjIsNDkgQEAKICAqCiAgKi8K
IAotI2lmbmRlZiBUaW1pbmdGdW5jdGlvbl9oCi0jZGVmaW5lIFRpbWluZ0Z1bmN0aW9uX2gKKyNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4dFN0cmVhbTsKKwogY2xhc3Mg
VGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1pbmdGdW5jdGlvbj4gewogcHVi
bGljOgorICAgIHZpcnR1YWwgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCA9
IDA7Ci0KLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7Ci0gICAgICAgIExpbmVhckZ1bmN0
aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9uLCBTcHJpbmdGdW5jdGlvbgot
ICAgIH07Ci0gICAgCiAgICAgdmlydHVhbCB+VGltaW5nRnVuY3Rpb24oKSB7IH0KIAorICAgIGVu
dW0gVGltaW5nRnVuY3Rpb25UeXBlIHsgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rp
b24sIFN0ZXBzRnVuY3Rpb24sIFNwcmluZ0Z1bmN0aW9uIH07CiAgICAgVGltaW5nRnVuY3Rpb25U
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAKKwogICAgIGJvb2wgaXNM
aW5lYXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMaW5lYXJGdW5j
dGlvbjsgfQogICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247IH0KICAgICBib29sIGlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTdGVwc0Z1bmN0aW9uOyB9
CiAgICAgYm9vbCBpc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFNwcmluZ0Z1bmN0aW9uOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFRp
bWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQorICAgIGV4cGxpY2l0IFRpbWlu
Z0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBl
KQogICAgIHsKICAgICB9Ci0gICAgCisKK3ByaXZhdGU6CiAgICAgVGltaW5nRnVuY3Rpb25UeXBl
IG1fdHlwZTsKIH07CiAKIGNsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGlj
IFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMaW5lYXJU
aW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPExpbmVhclRpbWluZ0Z1bmN0
aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJU
aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWlu
Z0Z1bmN0aW9uKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+TGluZWFyVGltaW5nRnVuY3Rp
b24oKSB7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlv
biYgb3RoZXIpIGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1p
bmdGdW5jdGlvbigpOwogICAgIH0KQEAgLTgwLDUyICs3NSw0MyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwogICAgIH0K
IH07CiAKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGlt
aW5nRnVuY3Rpb24gewogcHVibGljOgotICAgIGVudW0gVGltaW5nRnVuY3Rpb25QcmVzZXQgewot
ICAgICAgICBFYXNlLAotICAgICAgICBFYXNlSW4sCi0gICAgICAgIEVhc2VPdXQsCi0gICAgICAg
IEVhc2VJbk91dCwKLSAgICAgICAgQ3VzdG9tCi0gICAgfTsKKyAgICBlbnVtIFRpbWluZ0Z1bmN0
aW9uUHJlc2V0IHsgRWFzZSwgRWFzZUluLCBFYXNlT3V0LCBFYXNlSW5PdXQsIEN1c3RvbSB9Owog
ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCisgICAgc3Rh
dGljIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoZG91YmxlIHgxLCBkb3Vi
bGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEN1c3RvbSwgeDEsIHkxLCB4MiwgeTIp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bihDdXN0b20sIHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CiAgICAgfQogICAg
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0
ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpCisgICAgc3RhdGljIFJlZjxDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQogICAg
IHsKICAgICAgICAgc3dpdGNoIChwcmVzZXQpIHsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIEVhc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkp
OwogICAgICAgICBjYXNlIEVhc2VJbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAxLjApKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFzZU91dDoK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VPdXQsIDAuMCwgMC4wLCAw
LjU4LCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlSW5PdXQ6Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAwLjQyLCAw
LjAsIDAuNTgsIDEuMCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAwLjQyLCAw
LjAsIDAuNTgsIDEuMCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChvdGhl
ci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgY29uc3QgQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7CkBAIC0xNDksMjEgKzEzNSwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1feDIgPSB4MjsKICAgICAgICAgbV95MiA9IHkyOwogICAgIH0KLSAgICAKKwog
ICAgIFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHRpbWluZ0Z1bmN0aW9uUHJlc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldDsgfQogICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rp
b25QcmVzZXQoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KSB7IG1fdGltaW5nRnVuY3Rpb25Q
cmVzZXQgPSBwcmVzZXQ7IH0KLSAgICAKLSAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbiogZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCkKKworICAgIHN0YXRpYyBjb25zdCBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBkZWZhdWx0VGltaW5nRnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGR0ZiA9IGNy
ZWF0ZSgpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGR0ZjsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGZ1bmN0aW9uID0gY3JlYXRlKCkubGVha1Jl
ZigpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNlZCgpIGNvbnN0CisgICAgUmVm
PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2VkKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBjcmVhdGUoMS4wIC0gbV94MiwgMS4wIC0gbV95MiwgMS4wIC0gbV94
MSwgMS4wIC0gbV95MSk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0ID0gRWFz
ZSwgZG91YmxlIHgxID0gMC4yNSwgZG91YmxlIHkxID0gMC4xLCBkb3VibGUgeDIgPSAwLjI1LCBk
b3VibGUgeTIgPSAxLjApCiAgICAgICAgIDogVGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJGdW5j
dGlvbikKQEAgLTE3NSw5ICsxNjEsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVm
PFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24obV90aW1pbmdGdW5jdGlv
blByZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKG1fdGltaW5nRnVuY3Rpb25QcmVzZXQs
IG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKICAgICB9CiAKICAgICBkb3VibGUgbV94MTsKQEAg
LTE5MCwxOCArMTc2LDE2IEBAIHByaXZhdGU6CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uIGZp
bmFsIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0
ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGlu
dCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0U3RhcnQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0U3Rh
cnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RlcHNUaW1pbmdGdW5jdGlvbj4g
Y3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oMSwg
dHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9u
KDEsIHRydWUpKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+U3RlcHNUaW1pbmdGdW5jdGlv
bigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYg
b3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiBvdGhlcikgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc1N0ZXBzVGltaW5nRnVu
Y3Rpb24oKSkgewogICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7CkBAIC0yMTUs
NyArMTk5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RlcEF0U3RhcnQ7IH0KICAgICB2b2lkIHNldFN0ZXBBdFN0YXJ0KGJvb2wgc3RlcEF0
U3RhcnQpIHsgbV9zdGVwQXRTdGFydCA9IHN0ZXBBdFN0YXJ0OyB9Ci0gICAgCisKIHByaXZhdGU6
CiAgICAgU3RlcHNUaW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAg
ICAgICAgIDogVGltaW5nRnVuY3Rpb24oU3RlcHNGdW5jdGlvbikKQEAgLTIyNCw5ICsyMDgsOSBA
QCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9u
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgp
IGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGlt
aW5nRnVuY3Rpb24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9uKG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsK
ICAgICB9CiAgICAgCiAgICAgaW50IG1fc3RlcHM7CkBAIC0yNDcsNyArMjMxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gY3JlYXRlKDAsIDAsIDAsIDApOwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGZpbmFsCiAgICAg
ewogICAgICAgICBpZiAob3RoZXIuaXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICBjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiYgb3RoZXJTdHJpbmcgPSAqc3RhdGljX2Nh
c3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24qPigmb3RoZXIpOwpAQCAtMjc5LDkgKzI2Myw5
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rp
b24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25l
KCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ByaW5n
VGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0aWZmbmVzcywgbV9kYW1waW5nLCBtX2luaXRpYWxW
ZWxvY2l0eSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcHJpbmdUaW1pbmdGdW5j
dGlvbihtX21hc3MsIG1fc3RpZmZuZXNzLCBtX2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7
CiAgICAgfQogCiAgICAgZG91YmxlIG1fbWFzczsKQEAgLTI5MCw5ICsyNzQsNiBAQCBwcml2YXRl
OgogICAgIGRvdWJsZSBtX2luaXRpYWxWZWxvY2l0eTsKIH07CiAKLWNsYXNzIFRleHRTdHJlYW07
CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBUaW1pbmdGdW5jdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMu
aAppbmRleCA0ZjliNWY1NWNjODQzZjRhYjg3ZGUzNTU0MzlmODZkOTc4NmQxNmVhLi5kMThkYmRk
OTQ0MjQ2NWQzM2U3ZTlkMGU3ZGNmODRlNmUwM2MwNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsg
fQogCiAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0dXJu
IG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNo
YW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1
cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9D
aGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5l
bHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5z
aWduZWQgdHlwZSk7CiAgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2ln
bmVkIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKaW5kZXggMWVjNTNkOGEwMTI3ZmMxOWJhNThiYTZkNGRmMmM5ZDE5YTk3NTZi
Zi4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFkZTExODJhNGUxZTUwZTM1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQwLDEyICsxNDAs
MTEgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5y
ZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRv
cHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290
RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51
bGxwdHIpKTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0
YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZE
YXRhKGRhdGEuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaAppbmRleCBmYzU4ZmI2NWRmZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAz
Li44MmI2YjYxNTY4NzdlMDQzY2M2MWQ4MzZiYWE5MmE0YjJjNDcxMjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5j
b2RlckNGX2gKLSNkZWZpbmUgS2V5ZWRFbmNvZGVyQ0ZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJLZXllZENvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDI1
ICszNiwyNSBAQCBwdWJsaWM6CiAgICAgS2V5ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNv
ZGVyQ0YoKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7
CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25z
dCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQg
ZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcm9vdERpY3Rpb25hcnk7CiAK
QEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEtleWVkRW5jb2RlckNGX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVm
bC5oCmluZGV4IGIzOGQyY2FmZTdiNjkwM2RkNDRmYTZjMzZjZTM0MDFlOGU3M2I1NmIuLjc3ODIw
MTc0MTI3YWU1ZGEzNWE2MWJhNGE4NmFkMGZiZTM0ZjMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
UHJvdmlkZXJFZmwuaApAQCAtMjMsMTMgKzIzLDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmxfaAotI2RlZmluZSBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlIDxzcGVha19saWIuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNSArNzQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRp
ZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IGQ0OTIxMzY0
MzA5OWMyYmE3NDVlYmZkNjk3ZWIxNTFhM2ZlNTNmZjEuLjgxY2JlZDUzZDExNWU0NGYxMzRjMTIy
NmQ2MzQ2MmM1OThlNDQ5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZWRFbmNv
ZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAK
LVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92
YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IDJkN2IxYzM0ZjcxOWIyNDg2Nzcy
NjIyNWUxM2I5Nzc0MmQyY2IzYmMuLmY5MWI0ZGRiMzMxNWY2NmVjNGUwYzE5ZmQyNzA2NzNiNmM0
NzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVuY29kZXJHbGliX2gKLSNkZWZpbmUgS2V5ZWRFbmNv
ZGVyR2xpYl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5j
bHVkZSA8Z2xpYi5oPgpAQCAtMzksMjUgKzM4LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVuY29k
ZXJHbGliKCk7CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRl
OgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBr
ZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmlu
ZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0
cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0
IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29u
c3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmco
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFs
OworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFs
OworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
KSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJy
aWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVj
dChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsK
IAotICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVt
ZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQg
YmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5
RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAg
dm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAgICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1
aWxkZXI7CiAgICAgVmVjdG9yPEdWYXJpYW50QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVy
U3RhY2s7CkBAIC02Niw1ICs2NSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVuY29kZXJHbGliX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggZDA1NmViZmUyMmFhZTgxNTk0ZTg4
YmE0YjJlNzgyMTUzOWRiNzk3YS4uYWY0OGIwYjkyNDJjNTk3MDBlZWViMzYyY2FiNmUwM2U1YWY2
ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgK
QEAgLTI3LDE1ICsyNywxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRDYWNo
ZV9oCi0jZGVmaW5lIEZvbnRDYWNoZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5j
bHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMjkwLDUg
KzI4OCwzIEBAIGlubGluZSB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9u
dERhdGEoKQogI2VuZGlmCiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggOTMwM2E5MDViMDk3MTNh
MmQ1Y2NiMjM5YjJkOTc3NWRlODExYWE1Ni4uYWQzODJmNDE1YTNiNTEwZWZlNDEzYmVmN2E5ZGFj
ZjFkZjljMzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIwMTMtMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBDZW50ZXIgVVNBLCBJbmMuCkBAIC0yMiwxMCArMjIs
MTUgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBGb250UGxhdGZvcm1EYXRhX2gKLSNkZWZpbmUgRm9u
dFBsYXRmb3JtRGF0YV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKIAogI2lmIFBMQVRGT1JNKFdJTikKICNp
bmNsdWRlICJDT01QdHIuaCIKQEAgLTQ0LDI1ICs0OSwxOCBAQAogI2luY2x1ZGUgIk9wZW5UeXBl
VmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShB
UFBLSVQpCiBPQkpDX0NMQVNTIE5TRm9udDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NURm9udCogQ1RGb250UmVmOwotCiAjZW5kaWYKIAog
I2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5k
aWYKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KICNpZiBQTEFURk9STShXSU4p
CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIHR5cGVkZWYgc3RydWN0IEhGT05UX18q
IEhGT05UOwpAQCAtNzAsNyArNjgsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnQ7CiBpbnRlcmZh
Y2UgSURXcml0ZUZvbnRGYWNlOwogI2VuZGlmCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGb250RGVzY3JpcHRpb247CkBAIC04MiwxMCArNzksNyBAQCBjbGFzcyBGb250UGxhdGZv
cm1EYXRhIHsKIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YSgpOwotI2lmICFVU0UoRlJFRVRZ
UEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZh
dWx0OwotI2VuZGlmCi0gICAgRm9udFBsYXRmb3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0g
ZGVmYXVsdDsKKwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQg
c2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmll
bnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRl
eHRSZW5kZXJpbmdNb2RlID0gQXV0b1RleHRSZW5kZXJpbmcpOwogCkBAIC0xMDMsMjcgKzk3LDM2
IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBGb250UGxhdGZvcm1EYXRhKEdE
SU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7CisjZW5kaWYKIAotI2lmIFVTRShDRykKKyNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShDRykKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxI
Rk9OVD4sIENHRm9udFJlZiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJKTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoRElSRUNUMkQpCiAgICAgRm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+LCBJRFdyaXRlRm9udCosIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi0gICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19m
b250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlm
CisKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDQUlSTykKKyAgICBGb250UGxhdGZvcm1EYXRh
KEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2ZvbnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBi
b2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYKIAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250
UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZv
bnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24m
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSk7CiAgICAgRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0
YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBv
cGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEm
IG9wZXJhdG9yPShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKICAgICB+Rm9udFBsYXRm
b3JtRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQo
KSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wg
dXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91c2VHREk7IH0KLSNlbGlmIFBMQVRGT1JNKENPQ09B
KQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBDVEZvbnRSZWYgZm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIENURm9udFJl
ZiByZWdpc3RlcmVkRm9udCgpIGNvbnN0OyAvLyBSZXR1cm5zIG51bGxwdHIgaWZmIHRoZSBmb250
IGlzIG5vdCByZWdpc3RlcmVkLCBzdWNoIGFzIHdlYiBmb250cyAob3RoZXJ3aXNlIHJldHVybnMg
Zm9udCgpKS4KIApAQCAtMTg5LDEyICsxOTIsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAK
LSNpZiBVU0UoRlJFRVRZUEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSNlbHNlCi0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0
b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLQogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBwbGF0Zm9ybUlzRXF1YWwob3RoZXIpCkBAIC0yMzIsMTIgKzIyOSwx
NSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBwbGF0Zm9ybUlzRXF1YWwoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ0dG
bG9hdCBjdEZvbnRTaXplKCkgY29uc3Q7CiAjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZPTlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZh
Y2VOYW1lKTsKICNlbmRpZgorCiAjaWYgVVNFKEZSRUVUWVBFKQogICAgIHZvaWQgYnVpbGRTY2Fs
ZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7CiAjZW5kaWYKQEAgLTI1MywxMyArMjUzLDE2IEBA
IHByaXZhdGU6CiAjaWYgVVNFKENHKSAmJiAoUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKSB8fCAoUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMCkpCiAg
ICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9jZ0ZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShESVJF
Q1QyRCkKICAgICBDT01QdHI8SURXcml0ZUZvbnQ+IG1fZHdGb250OwogICAgIENPTVB0cjxJRFdy
aXRlRm9udEZhY2U+IG1fZHdGb250RmFjZTsKICNlbmRpZgorCiAjaWYgVVNFKENBSVJPKQogICAg
IFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKwogI2lm
IFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8RmNQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgbXV0
YWJsZSBGY1VuaXF1ZVB0cjxGY0ZvbnRTZXQ+IG1fZmFsbGJhY2tzOwpAQCAtMjg1LDE1ICsyODgs
MTggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzRW1vamkgeyBm
YWxzZSB9OwogI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7
IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkKICAgICBib29sIG1fZml4ZWRX
aWR0aCB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKICNpZiBVU0UoQVBQS0lUKQorCiAvLyBOU0Zv
bnRzIGFuZCBDVEZvbnRSZWZzIGFyZSB0b2xsLWZyZWUtYnJpZGdlZC4KIGlubGluZSBDVEZvbnRS
ZWYgdG9DVEZvbnQoTlNGb250ICpmb250KQogewpAQCAtMzA0LDkgKzMxMCwxMSBAQCBpbmxpbmUg
TlNGb250ICp0b05TRm9udChDVEZvbnRSZWYgZm9udCkKIHsKICAgICByZXR1cm4gKE5TRm9udCAq
KWZvbnQ7CiB9CisKICNlbmRpZgogCiAjaWYgVVNFKENHKQorCiBjbGFzcyBTY29wZWRUZXh0TWF0
cml4IHsKIHB1YmxpYzoKICAgICBTY29wZWRUZXh0TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtIG5l
d01hdHJpeCwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCkBAIC0zMzAsOCArMzM4LDcgQEAgcHJpdmF0
ZToKICAgICBDR0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1f
dGV4dE1hdHJpeDsKIH07CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBkOTE5ZmZkYmU1NGZjMjU5YTYxZjE1MWFk
ZTc3MDViNzNkODM2MDBjLi42ZjMyNDc3YWZiMjIxMTJjZjQxOWEwMmQ5Mzk1NzhjZGQ5OWEzMWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYg
R3JhcGhpY3NMYXllcl9oCi0jZGVmaW5lIEdyYXBoaWNzTGF5ZXJfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtODAsMTEgKzc5
LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIEFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiBvdGhlcikKICAgICAgICAgOiBtX2tleVRpbWUob3RoZXIubV9rZXlUaW1lKQotICAgICAg
ICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/IG90aGVyLm1fdGlt
aW5nRnVuY3Rpb24tPmNsb25lKCkgOiBudWxscHRyKQorICAgICAgICAsIG1fdGltaW5nRnVuY3Rp
b24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4geyBvdGhl
ci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgpIH0gOiBudWxscHRyKQogICAgIHsKICAgICB9CiAK
KyAgICBBbmltYXRpb25WYWx1ZShBbmltYXRpb25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKIHByaXZh
dGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQW5pbWF0aW9uVmFsdWUmKSA9IGRlbGV0ZTsK
KwogICAgIGRvdWJsZSBtX2tleVRpbWU7CiAgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3Rp
bWluZ0Z1bmN0aW9uOwogfTsKQEAgLTEwNCwxMiArMTA3LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAg
fQogCi0gICAgRmxvYXRBbmltYXRpb25WYWx1ZShjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJiBv
dGhlcikKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShvdGhlcikKLSAgICAgICAgLCBtX3ZhbHVl
KG90aGVyLm1fdmFsdWUpCi0gICAgewotICAgIH0KLQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAtMTM0LDEwICsxMzEsMTMgQEAgcHVi
bGljOgogICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJiBvdGhlcikKICAgICAgICAgOiBBbmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCku
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3Ro
ZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9w
ZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9u
cygpLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1
ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNr
ZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgpKTsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZShUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYpID0gZGVmYXVsdDsKKwogICAgIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQogCiBwcml2YXRlOgpAQCAtMTYyLDEwICsxNjIsMTMgQEAgcHVibGljOgogICAgIEZpbHRlckFu
aW1hdGlvblZhbHVlKGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAg
OiBBbmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClb
aV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAg
ICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9u
ZSgpKTsKICAgICB9CiAKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShGaWx0ZXJBbmltYXRpb25W
YWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTE4NSwxMyArMTg4LDEy
IEBAIHB1YmxpYzoKICAgICBLZXlmcmFtZVZhbHVlTGlzdChjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgb3RoZXIpCiAgICAgICAgIDogbV9wcm9wZXJ0eShvdGhlci5wcm9wZXJ0eSgpKQogICAgIHsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3ZhbHVlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChvdGhlci5tX3ZhbHVlc1tpXS0+Y2xvbmUo
KSk7CisgICAgICAgIG1fdmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1
ZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG90aGVyLm1fdmFsdWVzKQor
ICAgICAgICAgICAgbV92YWx1ZXMudW5jaGVja2VkQXBwZW5kKHZhbHVlLT5jbG9uZSgpKTsKICAg
ICB9CiAKLSAgICB+S2V5ZnJhbWVWYWx1ZUxpc3QoKQotICAgIHsKLSAgICB9CisgICAgS2V5ZnJh
bWVWYWx1ZUxpc3QoS2V5ZnJhbWVWYWx1ZUxpc3QmJikgPSBkZWZhdWx0OwogCiAgICAgS2V5ZnJh
bWVWYWx1ZUxpc3QmIG9wZXJhdG9yPShjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAg
ICAgewpAQCAtMjAwLDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KIAorICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0oS2V5ZnJhbWVWYWx1ZUxp
c3QmJikgPSBkZWZhdWx0OworCiAgICAgdm9pZCBzd2FwKEtleWZyYW1lVmFsdWVMaXN0JiBvdGhl
cikKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX3Byb3BlcnR5LCBvdGhlci5tX3Byb3BlcnR5
KTsKQEAgLTIxMCwxMCArMjE0LDEwIEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9CiAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUm
IGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiAqbV92YWx1ZXMuYXQoaSk7IH0KLSAgICAKKwog
ICAgIC8vIEluc2VydCwgc29ydGVkIGJ5IGtleVRpbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnQoc3RkOjp1bmlxdWVfcHRyPGNvbnN0IEFuaW1hdGlvblZhbHVlPik7Ci0gICAgCisK
IHByb3RlY3RlZDoKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGNvbnN0IEFuaW1hdGlvblZh
bHVlPj4gbV92YWx1ZXM7CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CkBAIC0y
MjUsNyArMjI5LDYgQEAgcHJvdGVjdGVkOgogY2xhc3MgR3JhcGhpY3NMYXllciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NMYXllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotCiAgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgTm9ybWFsLAogICAg
ICAgICBQYWdlVGlsZWRCYWNraW5nLApAQCAtMjQxLDcgKzI0NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFR5cGUpIHsgfQogCi0gICAgdHlwZWRlZiB1aW50NjRf
dCBQbGF0Zm9ybUxheWVySUQ7CisgICAgdXNpbmcgUGxhdGZvcm1MYXllcklEID0gdWludDY0X3Q7
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQgcHJpbWFyeUxheWVySUQoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAKICAgICBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWVudDsgfQpAQCAtNjgzLDUgKzY4NiwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKIC8vIE91dHNpZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGlu
dm9jYXRpb24gZnJvbSB0aGUgZGVidWdnZXIuCiB2b2lkIHNob3dHcmFwaGljc0xheWVyVHJlZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcik7CiAjZW5kaWYKLQotI2VuZGlmIC8v
IEdyYXBoaWNzTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IDgyNDVkNGU2ZGE3MzUzODgyZWE5Y2UyN2E1Mzcy
NWUxY2ZlODE2ZGUuLjg1NDZjNzEyZjY0YTE3MDZkNjIwYjM1MjM0NjRiZWY1NWJkOGNhMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNz
aW9uLmgKQEAgLTIzLDIxICsyMywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgQ0RNU2Vzc2lvbl9oCi0jZGVmaW5lIENETVNlc3Npb25faAor
I3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xpZW50KCkgeyB9OworICAgIHZpcnR1YWwg
fkNETVNlc3Npb25DbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWlu
dDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAwOwogCiAgICAgZW51bSB7CkBAIC02
NCw3ICs2MSw2IEBAIGVudW0gQ0RNU2Vzc2lvblR5cGUgewogCiBjbGFzcyBDRE1TZXNzaW9uIHsK
IHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uKCkgeyB9CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbigp
IHsgfQogCiAgICAgdmlydHVhbCBDRE1TZXNzaW9uVHlwZSB0eXBlKCkgeyByZXR1cm4gQ0RNU2Vz
c2lvblR5cGVVbmtub3duOyB9CkBAIC03OSw1ICs3NSwzIEBAIHB1YmxpYzoKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaAppbmRleCBkZjAzY2NiNjEyOTAxOWUwYzg4NDI2ZDc4MGFhZWRlNTI2ZTIwYjI5Li5i
YmMwNWQ1MDdmNDI1NjY3OWZiN2Q3YmNmNzIwZDg1MjZjMWFjMzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAgLTIzLDEy
ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAotI2RlZmluZSBDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQ19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Np
b24uaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogCkBAIC02Niw1ICs2NiwzIEBAIHByb3RlY3RlZDoKIH0KIAogI2Vu
ZGlmCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCBiYTQ5NjM1OTdkYWRmMGUyZmNjNTI4ZmM4MWNjMzIxNWU4Y2QyYmVlLi4wMTJkNDIx
NWExMGNlMThhMDYxNWE5NDc3YjI3MjU4NWNlZjFlZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTky
NCw4ICs5MjQsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVy
YXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaQogCiAjaWYgRU5BQkxFKENTU19B
TklNQVRJT05TX0xFVkVMXzIpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSB0cmlnZ2VyIHRoYXQgZGVw
ZW5kcyBvbiB0aGUgc2Nyb2xsIHBvc2l0aW9uLCB3ZSBjYW5ub3QgYWNjZWxlcmF0ZSB0aGUgYW5p
bWF0aW9uLgotICAgIGlmIChhbmltLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cigpKSB7Ci0gICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBk
b3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqYW5pbS0+dHJpZ2dlcigpLmdldCgpKTsK
KyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oYW5pbS0+dHJpZ2dlcigpKSkgewor
ICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKmFuaW0tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2VyLmhhc0Vu
ZFZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzAyNCwxMyAr
MzAyNCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1D
QUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbgogICAgIHByb3BlcnR5QW5pbS0+c2V0
RmlsbE1vZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NM
YXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0
aW9uJiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewog
ICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgICAgICByZXR1cm4gKmFuaW1WYWx1ZS50aW1pbmdG
dW5jdGlvbigpOwogICAgIGlmIChhbmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAg
cmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLSAgICAKKyAgICAgICAgcmV0dXJu
ICphbmltLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0zMDU0LDkgKzMwNTMsNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQg
Zm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRo
ZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJz
aW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWlu
ZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlv
bik7Ci0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQotICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWlu
Z0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0
VGltaW5nRnVuY3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0
LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMzA4Niw3ICszMDgzLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktl
eWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGlt
aW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndh
cmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwor
ICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmlt
YXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSks
ICphbmltYXRpb24pKTsKICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1l
cyhrZXlUaW1lcyk7CkBAIC0zMTQ5LDcgKzMxNDYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlv
bnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0
aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhl
IGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pOworICAgIGF1dG8qIHRpbWluZ0Z1
bmN0aW9uID0gJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDAp
LCAqYW5pbWF0aW9uKTsKICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1
bmN0aW9uLCAhZm9yd2FyZHMpOwogCiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5j
dGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3Jt
T3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CkBAIC0zMjA0LDcgKzMyMDEsNyBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0
LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3Qu
YXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25z
LmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZh
bHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAgICB9CiAgICAg
CiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0zMjYwLDcgKzMy
NTcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBp
cyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9v
ayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhl
IHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRo
ZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbiks
ICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9y
d2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjg4LDcgKzMyODUsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVM
aXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxp
c3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rp
b25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAgICB9CiAg
ICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IGQyNDk3YzMxZGFhYjNiNGZhZDk1OTU0ZDc1M2UwNmEzMmE1ZjVkNjYuLjIyM2IxNWZmMGZl
YzYxMzA1MmY4ZjQzNDI5NmU1ZGRmMGIxMGMwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0yMzksNyArMjM5
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlU3By
aW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkaXRp
dmUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiosIGNvbnN0
IEFuaW1hdGlvbiosIGJvb2wgYWRkaXRpdmUpOwogICAgIAotICAgIGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVl
JiwgY29uc3QgQW5pbWF0aW9uJik7CisgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmlt
YXRpb24mKTsKICAgICAKICAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsK
ICAgICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYs
IGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJ
T1MubW0KaW5kZXggNTg0ZmRhYmQ5MjQ3ZmE1OGQ5YjBmMGYwNDY4ZDQyNjBhNjZkMjA1YS4uZWZi
ZTgwZmFlMDNjNGNhMjg4NGRjMmZiOTJhMTc3ZmZhYWMwMmNlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJ
T1MubW0KQEAgLTYwLDcgKzYwLDcgQEAgQGludGVyZmFjZSBXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIDogTlNPYmplY3Q8QVZTcGVlY2hTeW50aGVzaXplckRlbGVnYXRlPgogfQogCiAtIChXZWJT
cGVlY2hTeW50aGVzaXNXcmFwcGVyICopaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjooV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciopc3ludGhlc2l6ZXI7Ci0tICh2b2lkKXNwZWFr
VXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPil1dHRlcmFuY2U7CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlOwogCiBAZW5k
CiAKQEAgLTg3LDcgKzg3LDcgQEAgLSAoZmxvYXQpbWFwU3BlZWNoUmF0ZVRvUGxhdGZvcm1SYXRl
OihmbG9hdClyYXRlCiAgICAgcmV0dXJuIHJhdGU7CiB9CiAKLS0gKHZvaWQpc3BlYWtVdHRlcmFu
Y2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
KXV0dGVyYW5jZQorLSAodm9pZClzcGVha1V0dGVyYW5jZTooUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKXV0dGVyYW5jZQogewogICAgIC8vIFdoZW4g
c3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlzdGluZyBzcGVlY2ggdXR0
ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIC0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0CiAgICAgW2F2VXR0ZXJhbmNlIHNldFZv
bHVtZTp1dHRlcmFuY2UtPnZvbHVtZSgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0UGl0Y2hNdWx0
aXBsaWVyOnV0dGVyYW5jZS0+cGl0Y2goKV07CiAgICAgW2F2VXR0ZXJhbmNlIHNldFZvaWNlOmF2
Vm9pY2VdOwotICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0g
V1RGTW92ZSh1dHRlcmFuY2UpOwogCiAgICAgW21fc3ludGhlc2l6ZXIgc3BlYWtVdHRlcmFuY2U6
YXZVdHRlcmFuY2VdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDQzMTVjY2M1N2E1ZDE1ZmNkYjU2NTlj
NzFmMWJmZDlmZGUyODIxM2MuLmVkMzBhYjAzMjcwMWNkZTNkMmE2ZGM2OTE3ODJmNzMyZTE1ZWJh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtODksNyAr
ODksNyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogICAgIGlmICghZm9j
dXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1l
Rm9yV2lkZ2V0KHRoaXMpOworICAgIEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdl
dCgqdGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIyYWQ0Mzk3YTA0YzA1NTYxYzdjMWQ2
MDY3YWRlYzUxNTlmMjM1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1v
Y2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgiCi0KLSNpbmNs
dWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
RGV2aWNlTW90aW9uQ2xpZW50TW9jazo6RGV2aWNlTW90aW9uQ2xpZW50TW9jaygpCi0gICAgOiBt
X2NvbnRyb2xsZXIoMCkKLSAgICAsIG1fdGltZXIoKnRoaXMsICZEZXZpY2VNb3Rpb25DbGllbnRN
b2NrOjp0aW1lckZpcmVkKQotICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQotewotfQotCi12b2lk
IERldmljZU1vdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJv
bGxlciogY29udHJvbGxlcikKLXsKLSAgICBBU1NFUlQoIW1fY29udHJvbGxlcik7Ci0gICAgbV9j
b250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKLX0KLQot
dm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKLXsKLSAgICBtX2lz
VXBkYXRpbmcgPSB0cnVlOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnN0b3BV
cGRhdGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Ci0gICAgbV90aW1lci5zdG9w
KCk7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c2V0TW90aW9uKFBhc3NSZWZQ
dHI8RGV2aWNlTW90aW9uRGF0YT4gbW90aW9uKQotewotICAgIG1fbW90aW9uID0gbW90aW9uOwot
ICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90
aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6
dGltZXJGaXJlZCgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9jb250cm9sbGVyLT5k
aWRDaGFuZ2VEZXZpY2VNb3Rpb24obV9tb3Rpb24uZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rldmlj
ZU1vdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzYyNjgy
OGVhNGYzOTQxZGU1YmNlMDE1MzU4OGQxYjA0Y2FlOTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2
aWNlTW90aW9uQ2xpZW50TW9jay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50TW9ja19oCi0jZGVmaW5lIERldmljZU1v
dGlvbkNsaWVudE1vY2tfaAotCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCi0jaW5j
bHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOwotCi0vLyBBIG1vY2sg
aW1wbGVtZW50YXRpb24gb2YgRGV2aWNlTW90aW9uQ2xpZW50IHVzZWQgdG8gdGVzdCB0aGUgZmVh
dHVyZSBpbgotLy8gRHVtcFJlbmRlclRyZWUuIEVtYmVkZGVycyBzaG91bGQgc2hvdWxkIGNvbmZp
Z3VyZSB0aGUgUGFnZSBvYmplY3QgdG8gdXNlIHRoaXMKLS8vIGNsaWVudCB3aGVuIHJ1bm5pbmcg
RHVtcFJlbmRlclRyZWUuCi1jbGFzcyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrIDogcHVibGljIERl
dmljZU1vdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgRGV2aWNlTW90aW9uQ2xpZW50TW9jaygp
OwotCi0gICAgLy8gRGV2aWNlTW90aW9uQ2xpZW50Ci0gICAgdm9pZCBzZXRDb250cm9sbGVyKERl
dmljZU1vdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIERldmlj
ZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21vdGlv
bi5nZXQoKTsgfQotICAgIC8vIG1vY2sgaXMgb3duZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3Jr
LCB3aGljaCBzaG91bGQgaGFuZGxlIGRlbGV0aW9uCi0gICAgdm9pZCBkZXZpY2VNb3Rpb25Db250
cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2b2lkIHNldE1vdGlvbihQYXNz
UmVmUHRyPERldmljZU1vdGlvbkRhdGE+KTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKLQotICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBtX21vdGlvbjsKLSAgICBEZXZp
Y2VNb3Rpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgVGltZXIgbV90aW1lcjsKLSAg
ICBib29sIG1faXNVcGRhdGluZzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIERldmljZU1vdGlvbkNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcAppbmRleCAzODgxMWZjMTA4MTg4Y2ZlMjZlMTgwZjAwZjlmNTBmZDYx
NWRiN2QzLi42ZDkxZjVhOTBiNGU2NDc3ZDIyMjM4MDAzZDM3ZjJlNzQyYjgzY2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcApAQCAtNDAsMTAgKzQwLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+
IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkK
K3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEN1cnNvcj4gaW1w
bDsKLQogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGlt
ZywgaG90U3BvdCk7CiAgICAgc3RhdGljIGJvb2wgZG9BbHBoYSA9IHdpbmRvd3NWZXJzaW9uKCkg
Pj0gV2luZG93c1hQOwogICAgIEJpdG1hcEluZm8gY3Vyc29ySW1hZ2UgPSBCaXRtYXBJbmZvOjpj
cmVhdGUoSW50U2l6ZShpbWctPndpZHRoKCksIGltZy0+aGVpZ2h0KCkpKTsKQEAgLTcxLDcgKzY5
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3Io
SW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGgKICAgICAgICAgaWkuaGJtTWFzayA9IGhNYXNr
LmdldCgpOwogICAgICAgICBpaS5oYm1Db2xvciA9IGhDdXJzb3IuZ2V0KCk7CiAKLSAgICAgICAg
aW1wbCA9IFNoYXJlZEN1cnNvcjo6Y3JlYXRlKDo6Q3JlYXRlSWNvbkluZGlyZWN0KCZpaSkpOwor
ICAgICAgICByZXR1cm4gU2hhcmVkQ3Vyc29yOjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3Qo
JmlpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0
IGFscGhhIGJsZW5kZWQgY3Vyc29ycywgc28gd2UgbmVlZAogICAgICAgICAvLyB0byBjcmVhdGUg
dGhlIG1hc2sgbWFudWFsbHkKQEAgLTEwOCwxOCArMTA2LDE2IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBv
aW50JiBoCiAgICAgICAgIGljb24ueUhvdHNwb3QgPSBlZmZlY3RpdmVIb3RTcG90LnkoKTsKICAg
ICAgICAgaWNvbi5oYm1NYXNrID0gYW5kTWFzay5nZXQoKTsKICAgICAgICAgaWNvbi5oYm1Db2xv
ciA9IHhvck1hc2suZ2V0KCk7Ci0gICAgICAgIGltcGwgPSBTaGFyZWRDdXJzb3I6OmNyZWF0ZShD
cmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEN1cnNvcjo6
Y3JlYXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOwogICAgIH0KLQotICAgIHJldHVybiBp
bXBsLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBsb2Fk
U2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBoSW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1lKQor
c3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGxvYWRTaGFyZWRDdXJzb3IoSElOU1RBTkNFIGhJbnN0
YW5jZSwgTFBDV1NUUiBscEN1cnNvck5hbWUpCiB7CiAgICAgcmV0dXJuIFNoYXJlZEN1cnNvcjo6
Y3JlYXRlKDo6TG9hZEN1cnNvclcoaEluc3RhbmNlLCBscEN1cnNvck5hbWUpKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29yQnlOYW1lKGNoYXIqIG5hbWUs
IGludCB4LCBpbnQgeSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29yQnlOYW1l
KGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKIHsKICAgICBJbnRQb2ludCBob3RTcG90KHgsIHkp
OwogICAgIFJlZlB0cjxJbWFnZT4gY3Vyc29ySW1hZ2UoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCmluZGV4IDAwMDg3ZDIzZjYyNjg2NWY5NzZhNzYyODYxZjY3NDM5YTBjY2Ji
ZDMuLmY1OWYxNWY2YjRlMDcxZjAzOTk5NzAzMzNlMWRiZDkxZjhjMWM0MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzY0
LDcgKzM2NCw3IEBAIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVTb3Vy
Y2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0CiAKIEltYWdlQnVmZmVyKiBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2Fz
dDxGaWx0ZXJFZmZlY3QmPihtX2VmZmVjdHMubGFzdCgpLmdldCgpKS5hc0ltYWdlQnVmZmVyKCk7
CisgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCktPmFzSW1hZ2VCdWZmZXIoKTsKIH0KIAogdm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0
JiBlZmZlY3RSZWN0KQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVy
ZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKIAogSW50
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0
byYgbGFzdEVmZmVjdCA9IGNvbnN0X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxhc3Qo
KS5nZXQoKSk7CisgICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7
CiAgICAgaWYgKCFsYXN0RWZmZWN0Lmhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoSW50
UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMDUxZDQ0YmY1NjY5NjdjYWFkYWY5NzQyMDI5ODJjYjkxOGJmZTg1MS4u
YWNlZWQ3ZDU5MGRlMjVjYzQzOTk4Nzg0ODNiODk4NzdhZjI5NTY4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTQzLDE3ICszMTQzLDE4IEBAIHN0YXRp
YyBpbmxpbmUgUmVuZGVyRWxlbWVudCogcmVuZGVyZXJGb3JTY3JvbGxiYXIoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYgcmVuZGVyCiBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRlU2Ny
b2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJlZlB0cjxT
Y3JvbGxiYXI+IHdpZGdldDsKLSAgICBSZW5kZXJFbGVtZW50KiBhY3R1YWxSZW5kZXJlciA9IHJl
bmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xs
YmFyU3R5bGUgPSBhY3R1YWxSZW5kZXJlci0+aXNCb3goKSAmJiBhY3R1YWxSZW5kZXJlci0+c3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIEFTU0VSVChyZW5kZXJlckZvclNj
cm9sbGJhcihyZW5kZXJlcigpKSk7CisgICAgYXV0byYgYWN0dWFsUmVuZGVyZXIgPSAqcmVuZGVy
ZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJT
dHlsZSA9IGlzPFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJv
eD4oYWN0dWFsUmVuZGVyZXIpLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKICAg
ICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCi0gICAgICAgIHdpZGdldCA9IFJlbmRlclNj
cm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgYWN0dWFs
UmVuZGVyZXItPmVsZW1lbnQoKSk7CisgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6
Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgZG93bmNhc3Q8UmVuZGVy
Qm94PihhY3R1YWxSZW5kZXJlcikuZWxlbWVudCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgd2lk
Z2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9u
LCBSZWd1bGFyU2Nyb2xsYmFyKTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdldC5nZXQo
KSwgb3JpZW50YXRpb24pOwogICAgICAgICBpZiAocGFnZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJp
Z2dlcnMoKSkKICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RU
cmlnZ2VyKHBhZ2UoKS50ZXN0VHJpZ2dlcigpKTsKICAgICB9Ci0gICAgcmVuZGVyZXIoKS52aWV3
KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICByZW5kZXJlcigpLnZp
ZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAgICByZXR1cm4gd2lkZ2V0LnJl
bGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAppbmRleCAyMmVlOTgxMTA3N2ZmZDgwOGJmYmExMzk0MDliNmM5NjBmNjM0ZmFmLi5j
ZGY4MDYwYmNiNWVkOGE4ZjRmOTM3YTdlNDk3ZTE0NjdkNmViYjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgUmVmPFNj
cm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKICAgICAgICAgaWYgKHBh
Z2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmlt
YXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIoKSk7CiAg
ICAgfQotICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCh3aWRnZXQuZ2V0KCkpOworICAg
IHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAgICByZXR1cm4gd2lkZ2V0
LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKaW5kZXggMzczOTVlNDM2NjY3YTIxNWFhYjZlNzYzMDU4ZDQ3Y2I4MjZkNzQwZC4u
NjIzYTZjNzk0Yjk2MTBlMzJhOWIzNmNiNTY5ODdjMmYwNjVjNDI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTUyLDI5ICs1MiwyNyBAQCBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYgV2lkZ2V0
SGllcmFyY2h5VXBkYXRlcwogCiB2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9u
U2NvcGU6Om1vdmVXaWRnZXRzKCkKIHsKLSAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXA7Ci0gICAg
d2lkZ2V0TmV3UGFyZW50TWFwKCkuc3dhcChtYXApOwotICAgIFdpZGdldFRvUGFyZW50TWFwOjpp
dGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgZm9yIChXaWRnZXRUb1BhcmVudE1hcDo6aXRl
cmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdpZGdl
dCogY2hpbGQgPSBpdC0+a2V5LmdldCgpOwotICAgICAgICBTY3JvbGxWaWV3KiBjdXJyZW50UGFy
ZW50ID0gY2hpbGQtPnBhcmVudCgpOwotICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGl0
LT52YWx1ZTsKKyAgICBhdXRvIG1hcCA9IFdURk1vdmUod2lkZ2V0TmV3UGFyZW50TWFwKCkpOwor
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApIHsKKyAgICAgICAgYXV0byYgY2hpbGQgPSAqZW50
cnkua2V5OworICAgICAgICBhdXRvKiBjdXJyZW50UGFyZW50ID0gY2hpbGQucGFyZW50KCk7Cisg
ICAgICAgIGF1dG8qIG5ld1BhcmVudCA9IGVudHJ5LnZhbHVlOwogICAgICAgICBpZiAobmV3UGFy
ZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50KQot
ICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKCpjaGlsZCk7CisgICAg
ICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICAg
ICAgaWYgKG5ld1BhcmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNo
aWxkKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFy
ZW50U29vbihXaWRnZXQqIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKK3N0YXRpYyB2b2lkIG1v
dmVXaWRnZXRUb1BhcmVudFNvb24oV2lkZ2V0JiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCiB7
CiAgICAgaWYgKCFXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjppc1N1c3Bl
bmRlZCgpKSB7CiAgICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQtPmFkZENo
aWxkKGNoaWxkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21Q
YXJlbnQoKTsKKyAgICAgICAgICAgIGNoaWxkLnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
OjpzY2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKQEAgLTE2Nyw3ICsxNjUsNyBA
QCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lkZ2V0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93aWRnZXQpIHsKLSAgICAgICAgbW92ZVdpZGdl
dFRvUGFyZW50U29vbihtX3dpZGdldC5nZXQoKSwgMCk7CisgICAgICAgIG1vdmVXaWRnZXRUb1Bh
cmVudFNvb24oKm1fd2lkZ2V0LCBudWxscHRyKTsKICAgICAgICAgdmlldygpLmZyYW1lVmlldygp
LndpbGxSZW1vdmVXaWRnZXRGcm9tUmVuZGVyVHJlZSgqbV93aWRnZXQpOwogICAgICAgICB3aWRn
ZXRSZW5kZXJlck1hcCgpLnJlbW92ZShtX3dpZGdldC5nZXQoKSk7CiAgICAgICAgIG1fd2lkZ2V0
ID0gbnVsbHB0cjsKQEAgLTE5Myw3ICsxOTEsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lk
Z2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29u
KG1fd2lkZ2V0LmdldCgpLCAmdmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgbW92ZVdpZGdl
dFRvUGFyZW50U29vbigqbV93aWRnZXQsICZ2aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgIH0KIH0K
IApAQCAtMzM4LDkgKzMzNiw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRTZWxlY3Rpb25TdGF0
ZShTZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAgbV93aWRnZXQtPnNldElzU2VsZWN0ZWQo
aXNTZWxlY3RlZCgpKTsKIH0KIAotUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29u
c3QgV2lkZ2V0KiB3aWRnZXQpCitSZW5kZXJXaWRnZXQqIFJlbmRlcldpZGdldDo6ZmluZChjb25z
dCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQo
d2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQoJndpZGdldCk7CiB9
CiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgKaW5kZXggNmUwMTFkNzM5ZTUzYzZkYTliMTFhN2RhODZkOGVkY2VjM2U0NDk3Yi4uYzZhOWJj
NWY5MzVjMzM5NDgwODcyYTExZjM2MDc5ODBlYjRiYTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaApAQCAtNDQsMTQgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBzdGF0aWMgYm9vbCBpc1N1c3BlbmRlZCgpIHsgcmV0dXJuIHNfd2lkZ2V0SGllcmFyY2h5
VXBkYXRlU3VzcGVuZENvdW50OyB9Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01v
dmUoV2lkZ2V0KiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFw
KCkuc2V0KHdpZGdldCwgZnJhbWUpOyB9CisgICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRU
b01vdmUoV2lkZ2V0JiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50
TWFwKCkuc2V0KCZ3aWRnZXQsIGZyYW1lKTsgfQogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7CisgICAg
dXNpbmcgV2lkZ2V0VG9QYXJlbnRNYXAgPSBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZp
ZXcqPjsKICAgICBzdGF0aWMgV2lkZ2V0VG9QYXJlbnRNYXAmIHdpZGdldE5ld1BhcmVudE1hcCgp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwotCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENv
dW50OwogfTsKICAgICAKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lk
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV93aWRnZXQuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmKTsKIAotICAgIHN0YXRpYyBSZW5kZXJX
aWRnZXQqIGZpbmQoY29uc3QgV2lkZ2V0Kik7CisgICAgc3RhdGljIFJlbmRlcldpZGdldCogZmlu
ZChjb25zdCBXaWRnZXQmKTsKIAogICAgIGVudW0gY2xhc3MgQ2hpbGRXaWRnZXRTdGF0ZSB7IFZh
bGlkLCBEZXN0cm95ZWQgfTsKICAgICBDaGlsZFdpZGdldFN0YXRlIHVwZGF0ZVdpZGdldFBvc2l0
aW9uKCkgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL01hdGhNTFN0eWxlLmNwcAppbmRleCBjYTQ2YzJlYmNkMDJmZGUzNGU1ZTZjMGJmMGJk
OGI3MmEwNGEyZTA0Li42MTYyYWNiYjkzZjczZWI1Zjk5NTczYmQxNWRjMWM2MzNkMTEzMTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcApA
QCAtNDksMTQgKzQ5LDExIEBAIFJlZjxNYXRoTUxTdHlsZT4gTWF0aE1MU3R5bGU6OmNyZWF0ZSgp
CiAKIGNvbnN0IE1hdGhNTFN0eWxlKiBNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1h
dGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/Ci0gICAgICAgIGlmIChpczxSZW5k
ZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJl
bmRlck1hdGhNTFRhYmxlPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0gICAgICAgIGlmIChp
czxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0gICAgfQot
CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBm
cm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/CisgICAgaWYg
KGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiAmZG93bmNh
c3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpyZW5kZXJlcikubWF0aE1MU3R5bGUoKTsKKyAgICBpZiAo
aXM8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2Fz
dDxSZW5kZXJNYXRoTUxCbG9jaz4oKnJlbmRlcmVyKS5tYXRoTUxTdHlsZSgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCkBAIC02NSw5ICs2Miw5IEBAIHZvaWQgTWF0aE1MU3R5bGU6OnJlc29s
dmVNYXRoTUxTdHlsZVRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBmb3IgKGF1dG8q
IGNoaWxkID0gcmVuZGVyZXI7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5QcmVPcmRlcihy
ZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhN
TFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5
IHRoaXM/CiAgICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4oY2hpbGQpKQotICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KGNoaWxkKS0+bWF0aE1MU3R5bGUoKS0+
cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1h
dGhNTFRhYmxlPigqY2hpbGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxk
KTsKICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KGNoaWxkKSkKLSAgICAg
ICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihjaGlsZCktPm1hdGhNTFN0eWxlKCkt
PnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJN
YXRoTUxCbG9jaz4oKmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29sdmVNYXRoTUxTdHlsZShjaGls
ZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYmIxNDJhMjU0MjBhM2E2YmNlMTRjMTU0YmRlOTMy
MzM2MzQzNGUxMi4uNjFhMTJjYTQ4N2YzYTViYmM1NTRkZWUwYzgzYWY2NDVhNjIxZGU2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MQmxvY2soRG9j
dW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNYXRoTUxCbG9jaygp
OwogCi0gICAgTWF0aE1MU3R5bGUqIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3Rf
Y2FzdDxNYXRoTUxTdHlsZSo+KCZtX21hdGhNTFN0eWxlLmdldCgpKTsgfQorICAgIE1hdGhNTFN0
eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE1MU3R5bGU7IH0KIAogICAg
IGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIAotICAgIE1hdGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8TWF0aE1MU3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0KKyAgICBNYXRoTUxT
dHlsZSYgbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21hdGhNTFN0eWxlOyB9CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCAzNWU0NDE0NWY3Zjg2MmMwOGJkMDRlMjE3
ZWQ1ZmQwZGU2MzBjMTA4Li5hMjBiZDEyMmQ4OGNlMGYwOGQ3NDU3N2VlNzk4NWEwM2E1OTg5MDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6RnJhY3Rpb25QYXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmcmFjdGlvblBhcmFt
ZXRlcgogICAgIC8vIFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMgdG8gZHJhdyB0aGUgZnJhY3Rp
b24gZnJvbSB0aGUgT3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxiYWNrIHZhbHVlcyBvdGhlcndp
c2UuCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCku
cHJpbWFyeUZvbnQoKTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAgYm9vbCBkaXNwbGF5ID0gbWF0
aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5
bGUoKS5kaXNwbGF5U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEpIHsKICAgICAgICAgcGFyYW1l
dGVycy5udW1lcmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlG
b250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25OdW1EaXNwbGF5U3R5bGVH
YXBNaW4gOiBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51bWVyYXRvckdhcE1pbik7CiAgICAg
ICAgIHBhcmFtZXRlcnMuZGVub21pbmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0
YW50KHByaW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25EZW5v
bURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uRGVub21pbmF0
b3JHYXBNaW4pOwpAQCAtMTE2LDcgKzExNiw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpTdGFj
a1BhcmFtZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycygpCiAgICAg
Ly8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0YW50cyB0byBkcmF3IHRoZSBzdGFjayBmcm9tIHRoZSBP
cGVuVHlwZSBNQVRIIGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25z
dCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgp
OwogICAgIGNvbnN0IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1h
cnlGb250KCkubWF0aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5k
aXNwbGF5U3R5bGUoKTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlT
dHlsZSgpOwogICAgIGlmIChtYXRoRGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLmdhcE1pbiA9
IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlw
ZU1hdGhEYXRhOjpTdGFja0Rpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OlN0
YWNrR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy50b3BTaGlmdFVwID0gbWF0aERhdGEtPmdl
dE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0
YWNrVG9wRGlzcGxheVN0eWxlU2hpZnRVcCA6IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrVG9wU2hp
ZnRVcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZTIxMmU5YmY3MzRhZDI1NWYwNmU2OTBlYzI1ZTE3ODVh
OTI5OWUwNS4uMDJmZDQ0ZTU1NDRlOWY3MjIxMjY3M2U5MTZkZDY1YjgxNDNiYTE1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFN0cmV0Y2hT
aXplKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeTo6RmxhZykgY29uc3Q7Ci0gICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJbkRpc3Bs
YXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeTo6TGFyZ2VPcCkgJiYgbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7IH0KLSAg
ICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVybiBoYXNPcGVyYXRvckZsYWco
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRzKSAmJiAhbWF0aE1MU3R5bGUo
KS0+ZGlzcGxheVN0eWxlKCk7IH0KKyAgICBib29sIGlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0
eWxlKCkgY29uc3QgeyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OlN0cmV0Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjpMYXJnZU9wKSAmJiBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOyB9CisgICAgYm9v
bCBzaG91bGRNb3ZlTGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFzT3BlcmF0b3JGbGFnKE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYgIW1hdGhNTFN0eWxlKCkuZGlz
cGxheVN0eWxlKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbCgpIGNvbnN0OwogICAg
IExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE9wZXJh
dG9yLml0YWxpY0NvcnJlY3Rpb24oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCAxYTY2ZWM4N2U2ZDkzNDNi
ZjVjYTU1OWI5NzgwYTkwMmY3ZjE0ZTIyLi4zZDc1N2E3YTg1NmFjYjYxZjBlNmY4MjNkOTZhOTk4
OTUyOTVhNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJNYXRoTUxSb290
OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0ZXJz
KCkKICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5w
cmltYXJ5Rm9udCgpOwogICAgIGlmIChhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5ydWxl
VGhpY2tuZXNzID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3BlblR5
cGVNYXRoRGF0YTo6UmFkaWNhbFJ1bGVUaGlja25lc3MpOwotICAgICAgICBwYXJhbWV0ZXJzLnZl
cnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgbWF0aE1M
U3R5bGUoKS0+ZGlzcGxheVN0eWxlKCkgPyBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGlzcGxh
eVN0eWxlVmVydGljYWxHYXAgOiBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsVmVydGljYWxHYXAp
OworICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1hdGhDb25z
dGFudChwcmltYXJ5Rm9udCwgbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSA/IE9wZW5UeXBl
TWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5UeXBlTWF0aERh
dGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CiAgICAgICAgIHBhcmFtZXRlcnMuZXh0cmFBc2NlbmRl
ciA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERh
dGE6OlJhZGljYWxFeHRyYUFzY2VuZGVyKTsKICAgICAgICAgaWYgKG1fa2luZCA9PSBSb290V2l0
aEluZGV4KQogICAgICAgICAgICAgcGFyYW1ldGVycy5kZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQg
PSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1hdGhEYXRh
OjpSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBS
ZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKCkKICAgICAgICAgLy8gUmFkaWNhbEV4dHJhQXNjZW5kZXI6IFN1Z2dl
c3RlZCB2YWx1ZSBpcyBSYWRpY2FsUnVsZVRoaWNrbmVzcy4KICAgICAgICAgLy8gUmFkaWNhbERl
Z3JlZUJvdHRvbVJhaXNlUGVyY2VudDogU3VnZ2VzdGVkIHZhbHVlIGlzIDYwJS4KICAgICAgICAg
cGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzc0ZhbGxiYWNrKCk7Ci0gICAg
ICAgIGlmIChtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSkKKyAgICAgICAgaWYgKG1hdGhN
TFN0eWxlKCkuZGlzcGxheVN0eWxlKCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2Fs
R2FwID0gcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzICsgc3R5bGUoKS5mb250TWV0cmljcygpLnhI
ZWlnaHQoKSAvIDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGlj
YWxHYXAgPSA1ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXgg
NTU1YmQ2OGQ2NTFiNWY4YWYwNTFmMDE1ZDNlYWZjNzdlMDY4ZjM5MS4uYTVjNGMxYzBkMGM1ZDlh
ZTYwZmUxMTIwODRmNjg0YTY3MTlhZjg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUyOCw3ICs1MjgsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkKIAogICAg
IGNvbnN0IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKICAgICBpZiAoYXV0byBjb2Rl
UG9pbnQgPSBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChlbGVt
ZW50KCkudGV4dENvbnRlbnQoKSkpIHsKLSAgICAgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlh
bnQgbWF0aHZhcmlhbnQgPSBtYXRoTUxTdHlsZSgpLT5tYXRoVmFyaWFudCgpOworICAgICAgICBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0eWxlKCkubWF0
aFZhcmlhbnQoKTsKICAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6Ok1h
dGhWYXJpYW50OjpOb25lKQogICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1lbnQu
aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlh
bnQ6Okl0YWxpYyA6IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAgICAgICAg
IFVDaGFyMzIgdHJhbnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9pbnQudmFs
dWUoKSwgbWF0aHZhcmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmgKaW5kZXggM2Y5M2E1N2VmNTgyNjFkZmFhMmNlZmRmNmRhOWIyYTliMzlmMjM5Yy4uNzNiZmMy
ODZlNzE3OTUwMjM2ZWUyYWM1OTU0NWVhOWU4NjEzN2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0zMCw4ICszMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRGF0YVJlZiB7CiBwdWJsaWM6CiAgICAg
RGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBE
YXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShjb25zdF9jYXN0PFQmPihvdGhl
ci5tX2RhdGEuZ2V0KCkpKSB7IH0KLSAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3QgRGF0YVJl
ZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdldCgpKTsg
cmV0dXJuICp0aGlzOyB9CisgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikgOiBtX2Rh
dGEob3RoZXIubV9kYXRhLmNvcHlSZWYoKSkgeyB9CisgICAgRGF0YVJlZihEYXRhUmVmJiYpID0g
ZGVmYXVsdDsKKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIHsg
bV9kYXRhID0gb3RoZXIubV9kYXRhLmNvcHlSZWYoKTsgcmV0dXJuICp0aGlzOyB9CisgICAgRGF0
YVJlZiYgb3BlcmF0b3I9KERhdGFSZWYmJikgPSBkZWZhdWx0OwogCiAgICAgY29uc3QgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnB0cigpOyB9CiAKQEAgLTQ1LDE0ICs0NywxNCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IERhdGFSZWY8VD4mIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YS5wdHIoKSA9PSBvLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gby5tX2RhdGEu
Z2V0KCk7CisgICAgICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgd2h5IHdlIHNob3VsZCBkbyB0aGUg
cG9pbnRlciBjb21wYXJpc29uIGhlcmU7IG9wZXJhdG9yPT0gb2YgdGhlIHVuZGVybHlpbmcgY2xh
c3Mgc2hvdWxkIGRvIGl0LgorICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG90aGVyLm1f
ZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOwogICAgIH0K
LSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgbykgY29uc3QKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgb3RoZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpICE9IG8ubV9kYXRhLnB0cigpICYmIG1fZGF0YS5n
ZXQoKSAhPSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0tleWZyYW1lTGlzdC5jcHAKaW5kZXggNzY1MjM4MDVhMjVjOTQyNmFmZTAzYzMzOTFjMGU3ODk5
OGE1MWQyNi4uOTcyOThhYjQ0NzlhN2VhMjdkZTlmYmUzODJlMmI3NDcwYjZmNDAyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKQEAgLTI5
LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRpbWluZ0Z1bmN0aW9uKiBLZXlm
cmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgpOworICAg
IGF1dG8qIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgpOwogICAgIGlmICgha2V5ZnJhbWVTdHlsZSB8
fCAha2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygp
LT5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiA9IGtl
eWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwogICAgICAgICBpZiAobmFt
ZSA9PSBhbmltYXRpb24ubmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi50aW1p
bmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi50aW1pbmdG
dW5jdGlvbigpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNDQsNyArNDQsNiBA
QCBUaW1pbmdGdW5jdGlvbiogS2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdAogCiBLZXlmcmFtZUxpc3Q6On5LZXlmcmFtZUxpc3QoKQog
ewotICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVMaXN0OjpjbGVhcigpCkBAIC01OCwx
NSArNTcsMTIgQEAgYm9vbCBLZXlmcmFtZUxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgS2V5ZnJhbWVM
aXN0JiBvKSBjb25zdAogICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgIT0gby5tX2tleWZyYW1l
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxLZXlmcmFtZVZh
bHVlPjo6Y29uc3RfaXRlcmF0b3IgaXQyID0gby5tX2tleWZyYW1lcy5iZWdpbigpOwotICAgIGZv
ciAoVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDEgPSBtX2tleWZyYW1l
cy5iZWdpbigpOyBpdDEgIT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxKSB7CisgICAgYXV0byBp
dDIgPSBvLm1fa2V5ZnJhbWVzLmJlZ2luKCk7CisgICAgZm9yIChhdXRvIGl0MSA9IG1fa2V5ZnJh
bWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5lbmQoKTsgKytpdDEsICsraXQyKSB7CiAg
ICAgICAgIGlmIChpdDEtPmtleSgpICE9IGl0Mi0+a2V5KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTEgPSAqaXQxLT5zdHlsZSgp
OwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUyID0gKml0Mi0+c3R5bGUoKTsKLSAg
ICAgICAgaWYgKHN0eWxlMSAhPSBzdHlsZTIpCisgICAgICAgIGlmICgqaXQxLT5zdHlsZSgpICE9
ICppdDItPnN0eWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICsraXQy
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4M2YyMjQ5ZTQ5MGVjOTA2
YTMzYjhlOC4uYjc0OWEyNmMwY2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5NTc4ZjdjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXBlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+
IGNyZWF0ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCisg
ICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUs
IENTU0JveFR5cGUgY3NzQm94KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcGVWYWx1ZShXVEZNb3ZlKHNoYXBlKSwgY3NzQm94KSk7CiAgICAgfQpAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoYm94
U2hhcGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWZQ
dHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0
ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXBlVmFsdWUoV1RGTW92ZShpbWFnZSkpKTsKICAgICB9CkBAIC03MiwxNCArNzIs
MTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaGFwZVZhbHVlKFJlZlB0cjxC
YXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBTaGFwZVZhbHVlKFJl
ZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICAgICAgOiBtX3R5
cGUoVHlwZTo6U2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEZNb3ZlKHNoYXBlKSkKICAgICAg
ICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFNoYXBl
VmFsdWUoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhwbGljaXQgU2hhcGVWYWx1
ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6SW1hZ2Up
CiAgICAgICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggZjcw
NjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3MmEyMTEzZjczNWFkYy4uNjkyMzk1YjFlMzUwZjFjYTBk
M2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBDYWNoZWRJ
bWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6Y2FjaGVkSW1hZ2UoKSBjb25zdAogCiBSZWY8Q1NTVmFs
dWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29u
c3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBtX2Nzc1Zh
bHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKaW5kZXggMmM4NGIyZjU2N2YwN2ExOTU4YzcwZTY2YjZmM2Y0ZmM3ZDY4ZmUyMi4uYjAw
NjM3ODE0ZWEzYjRiNzE2MDE3OTAzZGZjZGRmZTI0YmEzMGJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApAQCAt
MzksNyArMzksNyBAQCBTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdlKFJl
ZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogCiBSZWY8Q1NTVmFsdWU+IFN0eWxl
R2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2Fz
dDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKTsK
KyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBT
dHlsZUdlbmVyYXRlZEltYWdlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtNTYsNyArNTYsNyBAQCBG
bG9hdFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBmbG9hdCBtdQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgaWYg
KG1fZml4ZWRTaXplKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBjb25zdF9jYXN0
PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmZp
eGVkU2l6ZSgqcmVuZGVyZXIpOworICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gbV9pbWFn
ZUdlbmVyYXRvclZhbHVlLT5maXhlZFNpemUoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKG11bHRp
cGxpZXIgPT0gMS4wZikKICAgICAgICAgICAgIHJldHVybiBmaXhlZFNpemU7CiAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKIFJlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1h
Z2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QK
IHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgIHJldHVybiBjb25zdF9jYXN0PENTU0ltYWdl
R2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmltYWdlKCpyZW5k
ZXJlciwgc2l6ZSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1hZ2UoKnJl
bmRlcmVyLCBzaXplKTsKIH0KIAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVP
cGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IGZlMjhmZDRlYTVlNTA3ZWI4NmI4M2U3MWFkNjgwOWYzMDY2OTM4NzQuLjRlOWIyZTI3
MmQyZDM5ZGFhODBkYTBjY2E0M2RkMmZhMDk4OWMxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0x
ODQ5LDcgKzE4NDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQqIGV2ZW50KQogICAgIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1l
Rm9yV2lkZ2V0KHRoaXMpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JX
aWRnZXQoKnRoaXMpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwYzVmZGEwMWYw
OGE5MDVkMTZjOTNjNGI3MzgyYjY0MmQ4MmVmNWFhLi5jOTExNTUyMGYyYzg5NTIzOWU0MTQyY2E4
NjdhN2Y2ZDRmNjA2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0z
NDcwLDggKzM0NzAsOCBAQCAtICh2b2lkKV9hZGRTY3JvbGxlckRhc2hib2FyZFJlZ2lvbnNGb3JG
cmFtZVZpZXc6KEZyYW1lVmlldyopZnJhbWVWaWV3IGRhc2hib2FyZAogICAgIE5TVmlldyAqZG9j
dW1lbnRWaWV3ID0gW1traXQoJmZyYW1lVmlldy0+ZnJhbWUoKSkgZnJhbWVWaWV3XSBkb2N1bWVu
dFZpZXddOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiB3aWRnZXQ6IGZyYW1lVmlldy0+Y2hpbGRy
ZW4oKSkgewotICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgewotICAgICAgICAg
ICAgW3NlbGYgX2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzpkb3duY2Fz
dDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25zXTsKKyAg
ICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0KSkgeworICAgICAgICAgICAgW3NlbGYgX2Fk
ZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzomZG93bmNhc3Q8RnJhbWVWaWV3
Pih3aWRnZXQuZ2V0KCkpIGRhc2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggYmFlOTZi
NmEyY2RkZjliYjJjODA5MTFmNzZhNmY0NDhhY2RkZjI0Yi4uODUwOWFlNjUwMjRkNGVlNTkyZWQx
MjVhMTIxMjE0MGYwN2ZjZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtNjY2LDcg
KzY2Niw3IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9s
bGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1h
dG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOwogICAg
ICAgICB9CiAgICAgfQotICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGls
ZCh3aWRnZXQucHRyKCkpOworICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRD
aGlsZCh3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298287</attachid>
            <date>2017-01-07 15:38:59 -0800</date>
            <delta_ts>2017-01-08 01:48:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170107153727.patch</filename>
            <type>text/plain</type>
            <size>209423</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2JkMTI1ODBlZWFkNjlkNzEyOTQ4ZmUyZmE5Yzc3NzdjNDFkN2E2Li4xOGMzZGVjZmFiMDJjMmFl
MWRjZjNkYzFkMWZiYmYxMjFiYTVkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
c2xpY2UgaW50cmluc2ljIHRvIHRoZSBERkcvRlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5ZTdhMzcyNDM0NDBlZTFjNTQy
ZDU0MTBhYmFkYmY2YjU0ZjE3OTEuLjVmODM5YmRkZjVmNmMxMzRkNjE4OWZlNDU5MWQxNGJmNWEx
NGZkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDEtMDcgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBvZiAi
cGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDogQ2hhbmdlZCB0aGUgdGVtcGxhdGUgc28gdGhhdCBhIGNvbnN0IFJlZjxU
PiBkb2VzIG5vdCBwcm9oaWJpdCBub24tY29uc3QKKyAgICAgICAgdXNlIG9mIFQuIFdlIGNhbiBz
dGlsbCB1c2UgY29uc3QgUmVmPGNvbnN0IFQ+IHRvIGV4cHJlc3MgdGhhdC4gVGhlIGVhcmxpZXIg
ZGVzaWduCisgICAgICAgIHdhcyBpbnRlbnRpb25hbCwgYnV0IHdhcyBub3QgY29uc2lzdGVudCB3
aXRoIGVpdGhlciBhY3R1YWwgcmVmZXJlbmNlcyBvciB3aXRoCisgICAgICAgIG90aGVyIHNtYXJ0
IHBvaW50ZXIgY2xhc3NlcyBsaWtlIFJlZlB0ci4gT25lIHdheSB0byBzZWUgaG93IG11Y2ggYmV0
dGVyIHRoaXMgaXMsCisgICAgICAgIGlzIHRvIHNlZSBhbGwgdGhlIG1hbnksIG1hbnkgY2FzZXMg
d2hlcmUgd2UgaGF2ZSBjb25zdF9jYXN0IGp1c3QgdG8gd29yayBhcm91bmQKKyAgICAgICAgdGhp
cy4gSSBzZWFyY2hlZCBmb3IgdGhvc2UgYW5kIGluY2x1ZGVkIGZpeGVzIGZvciBtYW55IGluIHRo
aXMgcGF0Y2guCisKIDIwMTctMDEtMDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYXJldHMgY2FuIHNwbGl0IHVwIG1hcnJpYWdlcyBhbmQgZmFt
aWxpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3ZWJjYTMzYzhjNmNhZTM1MTM0OWJlZDUyZWVkYTI4MDcwYzNm
OWFhLi4zOWU4NDM4ZGY3MmE5OWIyYTU3MTViOTA1NDk1NjBlZmExY2Q5ZjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzE2IEBACisyMDE3LTAxLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1vcmUgb2YgInBsYXRmb3Jt
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcC4KKworICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgor
ICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg6IFR3ZWFrcywgbXNh
ZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQgZmluYWwuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFp
bDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6
On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6IFVwZGF0ZSB0byB1c2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVy
cy4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRpbWluZ0Z1bmN0aW9uVmFsdWUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0QW5pbWF0aW9uVHJpZ2dlclZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6aW1h
Z2UpOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlm
cmFtZXNSdWxlOjppdGVtKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBE
aXR0by4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OmZhbWlseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0eWxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6d2VpZ2h0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6dmFyaWFudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncyk6IERpdHRvLgorCisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6IFBhc3MgcmVmZXJlbmNlcyB3aGVuCisgICAgICAgIGNy
ZWF0aW5nIFNoYXBlVmFsdWUuCisKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KTogVXNl
IGF1dG8uCisKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMaXZlTm9kZUxpc3Q6Om93bmVyTm9kZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25z
dF9jYXN0LgorCisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlRXZlbnQ6OnNvdXJjZSk6IFJlbW92ZWQgdW5uZWVkZWQgc3RhdGljX2Nhc3Qu
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJl
VHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKTogVHdlYWtlZCBmb3JtYXR0aW5nLgor
CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6b3duZXJE
b2N1bWVudCk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAq
IGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6OmNhbGxiYWNrKTogRGl0dG8uCisgICAgICAgICogZG9tL1Njcmlw
dFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5u
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRl
bTo6bm9kZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQpOiBDdXQgZG93biBvbiB0aGUgbnVtYmVyCisgICAgICAgIG9mIGRpZmZl
cmVudCBmdW5jdGlvbnMgaGVyZS4gQWxzbyB1c2UgcmVmZXJlbmNlIHJhdGhlciB0aGFuIHBvaW50
ZXIuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oOiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFBy
b3Zpc2lvbmFsSXRlbSk6IFJlbW92ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9j
YXN0LgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9J
dGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpvd25lclJlbmRlcmVyKTogVXNlIGF1dG8uIExldCB0aGUgaXM8PiBmdW5jdGlv
biBkbyBudWxsCisgICAgICAgIGNoZWNraW5nIGZvciB1cy4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpmcmFtZUZvcldpZGdldCk6IFRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2lu
dGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjppbnZhbGlkYXRlUmVjdCk6IFVzZSBDaHJvbWUgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZwor
ICAgICAgICBIb3N0V2luZG93LiBIb3N0V2luZG93IGlzIGFuIGFic3RyYWN0aW9uIGZvciB0aGUg
cGxhdGZvcm0gbGF5ZXIsIGFuZCB0aGVyZQorICAgICAgICBpcyBubyBnb29kIHJlYXNvbiB0byB1
c2UgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1bGVBbmltYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Z3JhcGhpY3NMYXllckZv
clBsYXRmb3JtV2lkZ2V0KTogVXBkYXRlZCB0byB1c2UgcmVmZXJlbmNlCisgICAgICAgIHdoZW4g
Y2FsbGluZyBSZW5kZXJXaWRnZXQ6OmZpbmQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOiBVc2UgQ2hyb21lIGluc3RlYWQgb2YgSG9zdFdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6IFVzZSBlYXJseSBy
ZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6
IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0aHJvdWdoIHRvIGJhc2UKKyAgICAgICAgY2xhc3MgZnVu
Y3Rpb24sIHdoaWNoIHdhcyBlbXB0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aGFz
Q3VzdG9tU2Nyb2xsYmFycyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cKKyAg
ICAgICAgY29udGFpbnMgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KTogVXNlIGVhcmx5IHJldHVybi4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25zKTogVXNlIHJlZmVyZW5j
ZSBpbnN0ZWFkIG9mIHBvaW50ZXIuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDogVXNlIGZp
bmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIFJlbW92ZSBub3ctdW5uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVn
aW5WaWV3cyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMKKyAg
ICAgICAgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Zmly
ZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0bworICAgICAg
ICB0aGUgdHlwZXMgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uIG1lbWJlcnMuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZy
YW1lKTogVHdlYWtlZCB0bworICAgICAgICB1c2UgYXV0bywgcGFzcyByZWZlcmVuY2VzLgorCisg
ICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
cy5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQYXNz
UmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKTogVGFrZQorICAgICAgICBhIHJl
ZmVyZW5jZS4gSW5pdGlhbGl6ZSBkYXRhIG1lbWJlcnMgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSk6IFJldHVybiBSZWYgcmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGQpOiBUYWtlIGEgcmVmZXJlbmNlIHJh
dGhlciB0aGFuIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNl
dEhhc1Njcm9sbGJhckludGVybmFsKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGFkZENoaWxkCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogRGVs
ZXRlZC4gVGhpcyB3YXMgbmV2ZXIgY2FsbGVkLAorICAgICAgICBzbyBtYWRlIGl0IHB1cmUgdmly
dHVhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKTog
VXNlIGEgbW9kZXJuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2xp
cFJlY3RDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxDb3JuZXIpOiBEZWxldGVkLiBUaGlzIHdhcyBlbXB0eSBzbyBtYWRlIGl0IHB1cmUK
KyAgICAgICAgdmlydHVhbCBhbmQgY2hhbmdlZCBGcmFtZVZpZXcgdG8gbm90IGNhbGwgaXQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKTogVXNlIGEgbWRv
cmVuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aGlkZSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuaDogQ2hhbmdlZCB0aGUgY2hpbGRyZW4gc2V0IHRvIGNvbnRh
aW4gUmVmIGluc3RlYWQgb2YgUmVmUHRyLgorICAgICAgICBDaGFuZ2VkIGZ1bmN0aW9ucyB0aGF0
IHdlcmUgbmV2ZXIgb3ZlcnJpZGRlbiB0byBlaXRoZXIgYmUgZmluYWwgb3Igbm9uLXZpcnR1YWws
CisgICAgICAgIENoYW5nZWQgZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBjYWxsZWQgdG8gYmUg
cHVyZSB2aXJ0dWFsLgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5o
OiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgorICAgICAgICBy
YXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRpbWluZ0Z1bmN0
aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5kIFJlZiYmIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rpb24gYW5kCisg
ICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50IGNoZWNrIGlu
IEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25MaXN0OjpB
bmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJlZiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250YWluIFJlZiBp
bnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudAor
ICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y2xv
bmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRl
ZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisg
ICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBSZWZQdHIgaW5z
dGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
Lmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9yZQorICAgICAg
ICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGluZyB0byBSZWYg
aW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIFBhc3NSZWZQ
dHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6IFJldHVy
biBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZS4gTWFkZSBl
dmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2YgZmluaXNo
RW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOiBSZW1vdmVkIGluY2x1ZGVkIG9mIFBhc3NSZWZQdHIu
aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDogVHdl
YWtlZCBmb3JtYXR0aW5nLiBSZW1vdmVkIG5lc3RpbmcKKyAgICAgICAgZnJvbSAjaWYgc2luY2Ug
b3VyIGZvcm1hdHRpbmcgbWFrZXMgaXQgaGFyZCB0byBzZWUgbmVzdGluZy4gTGV0IHRoZSBjb21w
aWxlcgorICAgICAgICBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBtb3ZlIGFuZCBjb3B5IGNvbnN0cnVj
dG9ycyBhbmQgYXNzaWduZW1udCBvcGVyYXRvcnMgZXhjZXB0CisgICAgICAgIGluIHRoZSBVU0Uo
RlJFRVRZUEUpIGNhc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25WYWx1ZTo6QW5pbWF0aW9uVmFsdWUp
OiBVcGRhdGVkIHNpbmNlIGNsb25lIG5vdyByZXR1cm5zIGEgUmVmCisgICAgICAgIHJhdGhlciB0
aGFuIGEgUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRBbmltYXRpb25WYWx1ZTo6Rmxv
YXRBbmltYXRpb25WYWx1ZSk6IERlbGV0ZWQuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2Vu
ZXJhdGUgdGhlIGNvcHkgY29uc3RydWN0b3Igd2l0aG91dCBkZWZpbmluZyBpdCBleHBsaWNpdGx5
LgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKTogVXNlIGEgbW9kZXJuIGZvcgorICAgICAgICBsb29wLCByZXNlcnZlSW5p
dGlhbENhcGFjaXR5LCBhbmQgdW5jaGVja2VkIGFwcGVuZC4gQWxzbyB0ZWxsIHRoZSBjb21waWxl
ciB0bworICAgICAgICBnZW5lcmF0ZSB0aGUgbW92ZSBjb25zdHJ1Y3Rvciwgc2luY2UgdGhlIHNw
ZWNpYWwgd29yayBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlCisgICAgICAgIGNvcHkgY29uc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0
aW9uVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjpL
ZXlmcmFtZVZhbHVlTGlzdCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TGVnYWN5Q0RNU2Vzc2lvbi5oOiBSZW1vdmVkIGluY2x1ZGUgb2YgUGFzc1JlZlB0ci5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwg
bm93IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1
ZGUgZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgor
ICAgICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAg
ICAgICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Rmls
dGVyQW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAg
ICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2Vk
IGFyZ3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQ
dHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0OjpzZXRGb2N1cyk6IFVwZGF0ZWQgdG8gcGFzcyBhIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHA6IFJlbW92
ZWQuIFVudXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1v
Y2suaDogUmVtb3ZlZC4gVW51c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJzb3IpOiBSZXR1cm4gYSBS
ZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2hhcmVk
Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb2FkQ3Vyc29yQnlOYW1lKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCk6IFJlbW92ZWQgYSBu
by1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6b3V0cHV0UmVjdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3Jv
bGxiYXIpOiBQYXNzIHdpZGdldCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFs
c28gZGlkIGEgZmV3IG90aGVyIHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6IFVzZSBtb3ZlCisgICAgICAg
IGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9vcCBpbnN0ZWFkIG9mIGl0ZXJhdG9y
cy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOiBUYWtlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lk
Z2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBv
aW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBVcGRhdGVkIGZvciBh
Ym92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUpOiBVcGRh
dGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVtb3ZlZCBu
by1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0dXJuIGEg
cmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5jZSBtYXRo
TUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNob3VsZE1v
dmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQ
YXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRl
TWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9w
ZXJhdG9yPSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6
IFVwZGF0ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2lu
dGVyLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVt
b3ZlZCB1bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0
aGF0IGFyZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQor
ICAgICAgICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9w
ZXJhdG9yPT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6Y3Jl
YXRlKTogVGFrZSBhIFJlZiYmIGluc3RlYWQgb2YgYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZVZhbHVlOjpTaGFwZVZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hl
ZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKIDIw
MTctMDEtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBQYXNzUmVmUHRyIHVzZSBmcm9tICJpbnNwZWN0b3IiLCAicGxhdGZvcm0vc3FsIiwgYW5kICJw
bGF0Zm9ybS90ZXh0IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2
NzI4OTUyOWViYWU0YzYzZGEuLjM1ZjMwMzgyY2Y2ZTVhNDY1NGQ2ZWI2Y2MzNWNiNmQ1NzM3YThl
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJv
bSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChOZXRzY2FwZVBsdWdpbldpZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJl
bmNlLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
YWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6
XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMg
UmVmIGluc3RlYWQgb2YgUmVmUHRyLgorCiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVj
dG9yIiwgInBsYXRmb3JtL3NxbCIsIGFuZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBj
NDA1YjVlZGJmNTE5MmVjZTU3ODc2ZWI5Njg1YTNlMzMxMTIyZTBiLi42MWI0NzJhYjEyZjAwOWVl
N2MzN2UxMDQwMGQ1YWJjMWVjYjEzYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTctMDEtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBvZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVw
cmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVT
Y3JvbGxiYXIpOiBVcGRhdGVkIHNpbmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4K
KwogMjAxNy0wMS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFBhc3NSZWZQdHIgdXNlIGZyb20gImluc3BlY3RvciIsICJwbGF0Zm9ybS9zcWwiLCBh
bmQgInBsYXRmb3JtL3RleHQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhk
YjRiZjAzZjZkZGVhN2U2ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNl
MmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIElu
amVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0
ZWRTY3JpcHRIb3N0Jj4obV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRl
cy4KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3
MWE3MjM3NGU3MTEyM2UyOTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZi
MWI1M2Y2MTdjM2RiZWIyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJp
dmF0ZU5hbWUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQ
cml2YXRlTmFtZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1i
b2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZv
dGhlci51aWQoKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZh
MDk2ZTgxNjAzYzA4ZTU2YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBh
OWM5YzY3ZTJmM2U3NWM3MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG1fcHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+
KCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigp
IGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBB
U1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0
IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVCht
X3B0cik7IHJldHVybiAqbV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsg
QVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IEFTU0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsg
QVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NF
UlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFT
U0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFJlZjxUPiByZXBsYWNlKFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggNmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4u
MzA4ODFkM2JlMjgxZDAxYzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyNzcsNyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBw
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2lu
dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXgg
MGJiNDZlYmU0OTJlOTAxZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZh
NjFhZjUxYTZiMGU4Mzc4YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
U2Vzc2lvbkNsZWFyS2V5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNE
TVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuY3BwCmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3
ZGQxYTMuLjY3NDZmNGVmNGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Dbwog
CiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRl
cmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAg
ICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2Jl
NDIzYWI1OGNmMS4uYjVjYjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1VdHRlcmFuY2UtPnRleHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYy
LDIxIEBAIHB1YmxpYzoKICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShk
b3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFy
dFRpbWUpOyB9CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46
OmRlcmVmOwotCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogcGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtVXR0ZXJhbmNlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAg
ICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0
ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VU
eXBlOyB9Ci0gICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKaW5kZXggZjkwZjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2
MWJjYWRiMGMzYmM5YjMwMDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2Ug
RGV0YWlsIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihj
b25zdCBUKiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9j
YXN0PFQmPihwKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJl
Zihjb25zdCBSZWZQdHI8VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxU
PiYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVy
biBwLmdldCgpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVm
KGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1
OGJhOGRmM2M3ZGRlMTNiNzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0
ODIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01X
cmFwcGVkOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwog
Ci0gICAgSW1wbGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8SW1wbGVtZW50YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBs
ZW1lbnRhdGlvbkNsYXNzJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNET01XcmFwcGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IGUxMmEyNDBkN2U2ODdiOWNhNjk2NDBkODJkNmM0MzRmZTc4ZDZh
NDIuLmFlZWNjNzI1MjRlOGQwZDVkZDI0Y2E0OWY5YzUyZDJhODgxNjBkNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTMs
MTAgKzUzLDkgQEAgU2NyaXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1l
bnQmIGRvY3VtZW50KQogU2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkK
IHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2Fz
dDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7
CisgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jv
b3RNb2R1bGUoSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBp
bXBvcnRlck1vZHVsZUtleS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZp
bmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzgu
LjE2OTFmZjMxOWZjODRjZWE5YmI5NGEzYjU5YzFjODk1MjM4YjZjNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNDg0
LDExICsxNDg0LDExIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXREdXJhdGlvblZhbHVl
KGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogICAgIHJldHVybiBsaXN0OwogfQogCi1z
dGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uKQog
ewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgeworICAgIHN3aXRjaCAodGlt
aW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6Q3ViaWNCZXpp
ZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25z
dCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBh
dXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5jdGlvbi50aW1pbmdGdW5jdGlv
blByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OkN1c3RvbSkgewogICAgICAg
ICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAg
c3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpKSB7CkBAIC0xNTExLDE1ICsx
NTExLDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUo
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAgICAgIHJldHVybiBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi54MSgpLCBmdW5jdGlv
bi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsKICAgICB9CiAgICAgY2FzZSBU
aW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24p
OworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5n
RnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBDU1NTdGVwc1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJPZlN0ZXBzKCksIGZ1bmN0aW9u
LnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTcHJpbmdG
dW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBT
cHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVu
Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1
bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNy
ZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVzcygpLCBmdW5jdGlvbi5kYW1w
aW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAgICB9CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkgPT0gVGltaW5nRnVuY3Rpb246
OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSA9
PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lYXIp
OwogICAgIH0KIH0KQEAgLTE1MjksMjYgKzE1MjksMjcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3Qp
CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwog
ICAgIGlmIChhbmltTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1M
aXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50aW1pbmdGdW5jdGlvbigp
LmdldCgpKSk7CisgICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUaW1pbmdGdW5j
dGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1bmN0aW9uKCkpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5j
dGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMKLSAgICAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246
OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVu
Y3Rpb24oKSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCiAjaWYgRU5BQkxFKENTU19BTklNQVRJ
T05TX0xFVkVMXzIpCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVBbmltYXRpb25UcmlnZ2Vy
VmFsdWUoY29uc3QgQW5pbWF0aW9uVHJpZ2dlciogdHJpZ2dlciwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQorCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVBbmltYXRpb25UcmlnZ2VyVmFs
dWUoY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgdHJpZ2dlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewotICAgIHN3aXRjaCAodHJpZ2dlci0+dHlwZSgpKSB7CisgICAgc3dpdGNoICh0cmln
Z2VyLnR5cGUoKSkgewogICAgIGNhc2UgQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9uVHJpZ2dl
clR5cGU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlOiB7Ci0gICAgICAgIGF1dG8mIHNjcm9s
bEFuaW1hdGlvblRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqdHJp
Z2dlcik7CisgICAgICAgIGF1dG8mIHNjcm9sbEFuaW1hdGlvblRyaWdnZXIgPSBkb3duY2FzdDxT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyPih0cmlnZ2VyKTsKICAgICAgICAgaWYgKHNjcm9sbEFuaW1h
dGlvblRyaWdnZXIuZW5kVmFsdWUoKS5pc0F1dG8oKSkKICAgICAgICAgICAgIHJldHVybiBDU1NB
bmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU6OmNyZWF0ZSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHNjcm9sbEFuaW1hdGlvblRyaWdnZXIuc3RhcnRWYWx1ZSgpLCBzdHlsZSkpOwog
ICAgICAgICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0
VmFsdWUoKSwgc3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmlt
YXRpb25UcmlnZ2VyLmVuZFZhbHVlKCksIHN0eWxlKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVCh0cmlnZ2VyLT50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0
aW9uVHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CisgICAgICAgIEFTU0VS
VCh0cmlnZ2VyLnR5cGUoKSA9PSBBbmltYXRpb25UcmlnZ2VyOjpBbmltYXRpb25UcmlnZ2VyVHlw
ZTo6QXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlKTsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAg
fQogfQpAQCAtMTU1OCwxMiArMTU1OSwxMiBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0
QW5pbWF0aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0LAogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBp
ZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVBbmltYXRp
b25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCkuZ2V0KCksIHN0
eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZh
bHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVl
KEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQorICAgICAgICBs
aXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KKwogI2VuZGlm
CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUodW5zaWdu
ZWQgbGluZUJveENvbnRhaW4pCkBAIC0zNjM3LDI4ICszNjM4LDI3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b246CiAgICAgICAgICAgICByZXR1cm4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJh
bnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uOiB7Ci0gICAg
ICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9u
cygpOwotICAgICAgICAgICAgaWYgKGFuaW1MaXN0KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gdHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOworICAgICAgICAgICAgaWYgKGF1dG8qIGFuaW1MaXN0ID0gc3R5bGUtPnRy
YW5zaXRpb25zKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25zTGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBBbmltYXRpb24mIGFu
aW1hdGlvbiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9uID0gYW5pbUxpc3QtPmFuaW1hdGlvbihpKTsKICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZh
bHVlKGFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGFuaW1hdGlvbi5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWlu
Z0Z1bmN0aW9uVmFsdWUoYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoKmFu
aW1hdGlvbi50aW1pbmdGdW5jdGlvbigpKSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3Qt
PmFwcGVuZChsaXN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFu
c2l0aW9uc0xpc3QtPmFwcGVuZChXVEZNb3ZlKGxpc3QpKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25zTGlzdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZSh0cmFuc2l0aW9uc0xpc3QpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgLy8gdHJhbnNpdGlvbi1wcm9wZXJ0eSBk
ZWZhdWx0IHZhbHVlLgogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGwpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRHVyYXRpb24oKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Jl
YXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigp
LmdldCgpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpKSk7CiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbERl
bGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgcmV0dXJuIGxp
c3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggYzhiNjE1NTBiNmJh
N2U2MmMzYjczM2Q0NWFhMDg1NDFhMDg1NTA4YS4uM2M3YzI5OTU2MGE4MWYxN2FkNjg3YTVjM2M4
YjI5NjM5MzQ3OWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpDYWNoZWRHZW5lcmF0ZWRJbWFnZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYs
IEZsb2F0U2l6ZSwgR2VuZXJhdGVkSW1hZ2UmKTsKLSAgICBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyYXRlZEltYWdlJj4obV9pbWFnZS5nZXQo
KSk7IH0KKyAgICBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
OyB9CiAgICAgdm9pZCBwdW50RXZpY3Rpb25UaW1lcigpIHsgbV9ldmljdGlvblRpbWVyLnJlc3Rh
cnQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3Bw
CmluZGV4IDA2NDJiODc4Y2U5MzUyM2NmZTBhY2Q5NjFlOTE3NTRhZWJlMGVhMGEuLjA5ZTdhZDMx
MDY1MWQxYTA4N2YyZGI3ZDNmODQ0YjczMTgzMzI1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTIxMSwxMiArMjExLDEwIEBAIENTU0tleWZyYW1lUnVsZSog
Q1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsgCiAgICAgaWYg
KGluZGV4ID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIEFTU0VS
VChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fa2V5ZnJhbWVzUnVsZS0+a2V5
ZnJhbWVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Q1NTS2V5ZnJhbWVSdWxlPiYgcnVsZSA9IG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF07CisgICAgYXV0byYgcnVsZSA9IG1fY2hpbGRS
dWxlQ1NTT01XcmFwcGVyc1tpbmRleF07CiAgICAgaWYgKCFydWxlKQotICAgICAgICBydWxlID0g
YWRvcHRSZWYobmV3IENTU0tleWZyYW1lUnVsZShjb25zdF9jYXN0PFN0eWxlUnVsZUtleWZyYW1l
Jj4obV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpbmRleF0uZ2V0KCkpLCBjb25zdF9jYXN0
PENTU0tleWZyYW1lc1J1bGUqPih0aGlzKSkpOwotCisgICAgICAgIHJ1bGUgPSBhZG9wdFJlZigq
bmV3IENTU0tleWZyYW1lUnVsZShtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2luZGV4XSwg
Y29uc3RfY2FzdDxDU1NLZXlmcmFtZXNSdWxlKj4odGhpcykpKTsKICAgICByZXR1cm4gcnVsZS5n
ZXQoKTsgCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAppbmRleCA4MTBiOWE0NTRkNjU3
NmU4YWU3OGU0ZjVlYmNmZjBiMDEyYjczZjIwLi43MWYzNTUwNTU2YzY4NWY4ZjVmMDUxNWRhMDAz
MmE4OTkxNjdhNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHls
ZSgpOwogCiAgICAgLy8gRklYTUU6IE5vdCBDU1NPTS4gUmVtb3ZlLgotICAgIFN0eWxlUnVsZSYg
c3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxTdHlsZVJ1bGUmPihtX3N0eWxl
UnVsZS5nZXQoKSk7IH0KKyAgICBTdHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGVSdWxlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVSdWxlKFN0eWxl
UnVsZSYsIENTU1N0eWxlU2hlZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGM5ZmI3
MzM1OTg1YjhiYzdiZTY4NjdiOGY3MWNmMjEzMTYyNTZhM2EuLmMyODlmNzg0MGFhNjhjOTgxN2Vi
ZjQxZDU1Mjc2NmZhMjE3NjE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMjU4LDEz
ICsyNTgsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldEZlYXR1cmVTZXR0aW5n
cyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykKIAogU3RyaW5nIEZvbnRGYWNlOjpmYW1p
bHkoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0
KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICByZXR1cm4gbV9iYWNraW5nLT5mYW1pbGllcygpLT5jc3NUZXh0KCk7CiB9
CiAKIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NT
Rm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBt
X2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBzd2l0Y2ggKG1fYmFja2luZy0+
dHJhaXRzTWFzaygpICYgRm9udFN0eWxlTWFzaykgewogICAgIGNhc2UgRm9udFN0eWxlTm9ybWFs
TWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpzdHlsZSgp
IGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6d2VpZ2h0KCkgY29uc3QKIHsKLSAgICBjb25zdF9j
YXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoIChtX2Jh
Y2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRXZWlnaHRNYXNrKSB7CiAgICAgY2FzZSBGb250V2Vp
Z2h0MTAwTWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygiMTAwIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CkBAIC0zMDksNyArMzA5LDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpzdHJl
dGNoKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBjb25zdAogewot
ICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBp
ZiAoIW1fYmFja2luZy0+cmFuZ2VzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJVKzAtMTBGRkZGIik7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpAQCAtMzIwLDEzICszMjAsMTMgQEAg
U3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6
OnZhcmlhbnQoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tp
bmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gY29tcHV0ZUZvbnRWYXJpYW50KG1fYmFja2luZy0+
dmFyaWFudFNldHRpbmdzKCkpLT5jc3NUZXh0KCk7CiB9CiAKIFN0cmluZyBGb250RmFjZTo6ZmVh
dHVyZVNldHRpbmdzKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9i
YWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygp
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9ybWFsIik7CiAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBl
NGM3OTQzZjgwODI1NWUyOTE2YTY3MWU0ZjU5NTNjN2RhZmQyMTcxLi5iYjIwZDdlOTRiMjcyZTBh
ZjlhZmE4YTc0Y2I5Mjg4NGYzODRlNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCkBAIC03NjYsNyArNzY2LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZh
bHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2
ZXIKICAgICB9CiAKICAgICBpZiAoaXNJbWFnZVNoYXBlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2Uo
dmFsdWUpLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBl
OwogICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKQEAgLTc4Niw3ICs3
ODYsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlcgogICAgIH0KIAogICAgIGlmIChzaGFwZSkK
LSAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKHNoYXBlKSwgcmVmZXJl
bmNlQm94KTsKKyAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzaGFwZS5yZWxlYXNl
Tm9uTnVsbCgpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hN
aXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGMyYmRkMDU2Nzc4NjdhMDI5YzUxYWZhM2U3
Y2Y5NzM3ZWU3OTZlYmUuLjc3NzEyODFhYjk0N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0yNTgsMjMgKzI1OCwyMSBAQCBib29sIEV2
ZW50UGF0aDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
IGNvbnN0CiBWZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9z
ZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIFZlY3Rv
cjxFdmVudFRhcmdldCo+IHBhdGg7Ci0gICAgY29uc3QgTm9kZSogdGFyZ2V0Tm9kZSA9IGNvbnN0
X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOworICAgIGF1dG8qIHRhcmdldE5v
ZGUgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKICAgICBpZiAo
IXRhcmdldE5vZGUpIHsKLSAgICAgICAgY29uc3QgRE9NV2luZG93KiBkb21XaW5kb3cgPSBjb25z
dF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOworICAgICAgICBhdXRv
KiBkb21XaW5kb3cgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRv
dygpOwogICAgICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAgICAgIHJldHVybiBwYXRoOwog
ICAgICAgICB0YXJnZXROb2RlID0gZG9tV2luZG93LT5kb2N1bWVudCgpOwogICAgICAgICBBU1NF
UlQodGFyZ2V0Tm9kZSk7CiAgICAgfQotCiAgICAgZm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRo
KSB7Ci0gICAgICAgIGlmIChOb2RlKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdl
dCgpLT50b05vZGUoKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUluUGF0aCA9IGNvbnRleHQt
PmN1cnJlbnRUYXJnZXQoKS0+dG9Ob2RlKCkpIHsKICAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9k
ZS0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm5vZGVJblBhdGgpKQogICAgICAgICAgICAgICAgIHBh
dGguYXBwZW5kKGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgcGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICB9Ci0K
ICAgICByZXR1cm4gcGF0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xp
dmVOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGEy
ZTk2MTFkNmM1NDg4ODYxNDZiYmE5MWExMDVkODA5MWI4Y2ZhYWUuLmRlZTY0NmMzN2QxNWFkNDQz
M2MwMzFiNWUzYTVhYzQxZTYxNDI5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
aXZlTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1l
bnQoKSBjb25zdCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9u
VHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxp
c3RJbnZhbGlkYXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9Ci0gICAgQ29udGFpbmVy
Tm9kZSYgb3duZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Jj4obV9vd25lck5vZGUuZ2V0KCkpOyB9CisgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9vd25lck5vZGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW52
YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKCFhdHRyTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlw
ZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJOYW1lKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggY2MxYTZhNGEwNjY2OGY2MDRiY2JkZDQzYzRl
YjYyYzdhNzI2NmU2Mi4uNWJhMzdjZjgwNmViZGNlZmEzMmEzNjVkZTljNmRjYjYzYjRlYTIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBFdmVu
dFRhcmdldCogTWVzc2FnZUV2ZW50Ojpzb3VyY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAg
ICAgIFtdKGNvbnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0KiB7
IHJldHVybiBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRU
YXJnZXQqPih3aW5kb3cuZ2V0KCkpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPE1lc3Nh
Z2VQb3J0PiYgbWVzc2FnZVBvcnQpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0
PEV2ZW50VGFyZ2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPihtZXNzYWdlUG9y
dC5nZXQoKSkpOyB9CisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93
KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxET01XaW5kb3cqPih3aW5kb3cu
Z2V0KCkpOyB9LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYgbWVzc2Fn
ZVBvcnQpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PE1lc3NhZ2VQb3J0Kj4o
bWVzc2FnZVBvcnQuZ2V0KCkpOyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGUy
ZmJiY2Y4MWExM2NmZDA0MDVlMTIwMzkxZTUyYjNkZTVkM2UyODkuLjNjNzEyMGVhYTRmOGEzMGI5
ZjQ2YjhiNWFhOTk2ZDdmODYxN2U4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQzMCwxMSArNDMw
LDEwIEBAIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVk
RnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihjb25zdCBWCiAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+
IG5vZGVTZXQ7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CiAgICAg
ICAgIFdURjo6c3dpdGNoT24odmFyaWFudCwKLSAgICAgICAgICAgIFsmXShjb25zdCBSZWZQdHI8
Tm9kZT4mIG5vZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5nZXQoKSkp
OyB9LAotICAgICAgICAgICAgW10oY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgICAgICBbJl0g
KGNvbnN0IFJlZlB0cjxOb2RlPiYgbm9kZSkgeyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUq
Pihub2RlLmdldCgpKSk7IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgU3RyaW5nJikgeyB9CiAg
ICAgICAgICk7CiAgICAgfQotCiAgICAgcmV0dXJuIG5vZGVTZXQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgK
aW5kZXggODAzZjhmZTIzZjczNzBiY2NjZDJhNzVmNzAzOTE1NzNmZWFkM2E3ZC4uYjlhMDIyZDUw
ZDEzNjhkOTM1M2YwMmNiNTAyMzNlNzkwMWRkMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IGNy
ZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SYW5nZSgpOwogCi0gICAgRG9jdW1lbnQmIG93
bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9vd25l
ckRvY3VtZW50LmdldCgpKTsgfQorICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9vd25lckRvY3VtZW50OyB9CiAKICAgICBOb2RlJiBzdGFydENvbnRhaW5lcigp
IGNvbnN0IHsgQVNTRVJUKG1fc3RhcnQuY29udGFpbmVyKCkpOyByZXR1cm4gKm1fc3RhcnQuY29u
dGFpbmVyKCk7IH0KICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnQub2Zmc2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmgKaW5kZXggMTBiMmFkOTQzY2MzYjkwMzMxZGM3YWI2OGQ1NWZjZjk0OTJmZTA4Mi4u
MmE1OGEzZmEwYmMxZDllNTRiNmExYzM0NTFhOTcyOWE2MzcyYTM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
cihXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIH0KIAotICAgIEV2ZW50TGlzdGVu
ZXImIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudExpc3RlbmVyJj4o
bV9jYWxsYmFjay5nZXQoKSk7IH0KKyAgICBFdmVudExpc3RlbmVyJiBjYWxsYmFjaygpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbGJhY2s7IH0KICAgICBib29sIHVzZUNhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3VzZUNhcHR1cmU7IH0KICAgICBib29sIGlzUGFzc2l2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQYXNzaXZlOyB9CiAgICAgYm9vbCBpc09uY2UoKSBjb25zdCB7IHJldHVybiBtX2lzT25j
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAwNDFlNmQxMzMxZjQ0MjNj
MTVjOTg3NjlmOWEyMjc0Y2VkMGFkMGZmLi4xZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFlZjBjOWMy
OGRjNWZjNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogICAgIH0KICAgICBmb3IgKGF1dG8m
IHBlbmRpbmdTY3JpcHQgOiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKICAgICAgICAgaWYgKHBl
bmRpbmdTY3JpcHQtPndhdGNoaW5nRm9yTG9hZCgpKQotICAgICAgICAgICAgY29uc3RfY2FzdDxQ
ZW5kaW5nU2NyaXB0Jj4ocGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKKyAgICAg
ICAgICAgIHBlbmRpbmdTY3JpcHQtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1fZG9jdW1lbnQu
ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uaAppbmRleCA2ZmFhZDQwNzUwNTA0NTBkZDNiOTA5YmVkYWMwMDMwMGNj
OWUyYTg2Li40ODAxMjZiNjUxNmI3ZTc5NTM4YjYyOWZiODZhZWMwMmM5MTcyZjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIENv
bGxlY3Rpb25UeXBlIEhUTUxDb2xsZWN0aW9uOjp0eXBlKCkgY29uc3QKIAogaW5saW5lIENvbnRh
aW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25zdAogewotICAgIHJldHVy
biBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9kZS5nZXQoKSk7CisgICAgcmV0
dXJuIG1fb3duZXJOb2RlOwogfQogCiBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpk
b2N1bWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVt
LmgKaW5kZXggZWYyMDZmNmMxZTFhNTYxNDc1MDk2ZTIyYWI3OTdkMzIyYzliZTEwZi4uOTg1MzE5
ODMxYjE1MzI5YmJhOTRmY2ZhOTA1NDRlOGNmMzdjZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBSZWY8
SFRNTFN0YWNrSXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZy
YWdtZW50KQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTFN0YWNrSXRlbTo6bm9kZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fbm9kZS5nZXQo
KSk7CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKIH0KIAogaW5saW5lIEVsZW1lbnQmIEhUTUxT
dGFja0l0ZW06OmVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzYWMyODcwNzczYjgzNDBhZTVlM2I0
Yjk2NzI5MmFkY2QyYjA5MzExLi5jMmU1MTRjYjdjNzIxMWJjMzdjMjQzMjhiZDQwMmY0OWU2ODQ0
OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmNwcApAQCAtMTMzLDU4ICsxMzMsNDQgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wK
IHsKICAgICBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHBhdXNlZCk7CiAKLSAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBh
dXNlZChwYWdlLCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
SmF2YVNjcmlwdFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRf
QVJHKHBhZ2UsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOwot
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQ
YXVzZWQoZnJhbWUsIHBhdXNlZCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IGZyb250ZW5kQ2xpZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZy
b250ZW5kQ2xpZW50KCkpIHsKLSAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlUGF1c2VkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3Jv
dXAucGFnZXMoKSkgeworICAgICAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7CisK
KyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBzZXRKYXZh
U2NyaXB0UGF1c2VkKCpmcmFtZSwgcGF1c2VkKTsKKworICAgICAgICBpZiAoYXV0byogZnJvbnRl
bmRDbGllbnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoKSkgeworICAgICAgICAgICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgICAgICBmcm9u
dGVuZENsaWVudC0+cGFnZVBhdXNlZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGZyb250ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICAgICAgfQogICAgIH0KIH0K
IAotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUq
IGZyYW1lLCBib29sIHBhdXNlZCkKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZh
U2NyaXB0UGF1c2VkKEZyYW1lJiBmcmFtZSwgYm9vbCBwYXVzZWQpCiB7Ci0gICAgQVNTRVJUX0FS
RyhmcmFtZSwgZnJhbWUpOwotCi0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNj
cmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgIGlmICghZnJhbWUuc2NyaXB0KCku
Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBmcmFtZS0+c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CisgICAgZnJhbWUu
c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgYXV0
byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAocGF1c2VkKSB7Ci0gICAg
ICAgIGRvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tz
KCk7Ci0gICAgICAgIGRvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01P
YmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnN1c3Bl
bmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1l
bnQuc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVi
dWdnZXJQYXVzZWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVBY3Rp
dmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsK
LSAgICAgICAgZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxi
YWNrcygpOworICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURP
TU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQucmVz
dW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogCi0gICAg
c2V0SmF2YVNjcmlwdFBhdXNlZChmcmFtZS0+dmlldygpLCBwYXVzZWQpOwotfQotCi12b2lkIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqIHZpZXcs
IGJvb2wgcGF1c2VkKQotewotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yIChhdXRvJiBjaGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKCFpczxQ
bHVnaW5WaWV3QmFzZT4oKmNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqY2hpbGQpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1
c2VkKTsKKyAgICBpZiAoYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAgICAgaWYgKCFpczxQ
bHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGNoaWxkLmdldCgpKS5zZXRKYXZh
U2NyaXB0UGF1c2VkKHBhdXNlZCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAzYjQ5Nzkx
ZWUyOWU1YzUwZjBhM2M4YWMxYzQxNmRhNWE3Yzc3YmQxLi43ZjU4YzZjOGIwNDhiZjNkYzI3N2Fi
OWRmNjVmZWEyNDY4MjJiN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgUGFnZTsKIGNsYXNz
IFBhZ2VHcm91cDsKIApAQCAtNTYsOSArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZl
bnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCgpOwogCiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1
c2VkKGNvbnN0IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3Jp
cHRQYXVzZWQoUGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVz
ZWQoRnJhbWUqLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZy
YW1lVmlldyosIGJvb2wgcGF1c2VkKTsKKyAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJh
bWUmLCBib29sIHBhdXNlZCk7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNGU4Mjc1NDVlMmMwOGU0ZDNl
ZmEyMjRhNjNkZmQ1ZWIzNTcwYTljYi4uMjk1Yjk0YTFhNTU1YjJhMjhlNzUwMzZjNmIxZDAyNTcw
NzI5OTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0
UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQKICAgICAgICAgRnJh
bWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSk7CiAg
ICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKIAotICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIo
KS5oaXN0b3J5KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNvbnN0X2Nhc3Q8SGlzdG9y
eUl0ZW0mPihjaGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRG
cmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjaGls
ZEl0ZW0sIGZyb21DaGlsZEl0ZW0pOwogICAgIH0KIH0KIApAQCAtNzYxLDcgKzc2MSw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVt
LCBIaXN0b3J5SXRlbSogZnJvbUl0CiAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVt
ID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAg
ICBBU1NFUlQoZnJvbUNoaWxkSXRlbSk7CiAgICAgICAgIGlmIChGcmFtZSogY2hpbGRGcmFtZSA9
IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKSkKLSAgICAgICAgICAgIGNoaWxk
RnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhp
c3RvcnlJdGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAg
ICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0o
Y2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggMGJiMjg4ZWFlZmNmODA4MWIxZjBjZjQxZGM1NmE5YTE4NzdjZmU3ZS4uZDVh
NTEwNjAxNzRhODcwNmY4OTlkNTI4ODRhZDZiYjRjZjY3MDE5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTcyMywzMSArNzIzLDI3IEBAIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVy
ZXIoKSBjb25zdAogCiBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QK
IHsKLSAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVt
ZW50OworICAgIGF1dG8qIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAgIGlmICgh
b3duZXJFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiBvYmplY3Qg
PSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRv
IGRpc2Fzc29jaWF0ZSBpdHNlbGYgZnJvbSBmcmFtZXMKICAgICAvLyB0aGF0IGl0IGhhcyBzdGFy
dGVkIGJ1dCBjYW5jZWxlZCwgdGhlbiB0aGlzIGNhbiB0dXJuIGludG8gYW4gQVNTRVJUCi0gICAg
Ly8gc2luY2UgbV9vd25lckVsZW1lbnQgd291bGQgYmUgMCB3aGVuIHRoZSBsb2FkIGlzIGNhbmNl
bGVkLgorICAgIC8vIHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIG51bGxwdHIgd2hlbiB0
aGUgbG9hZCBpcyBjYW5jZWxlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg1ODUKLSAgICBpZiAoIWlzPFJlbmRlcldpZGdldD4oKm9iamVjdCkpCisg
ICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG9iamVjdCk7CiB9CiAKLUZyYW1l
KiBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCitGcmFtZSogRnJh
bWU6OmZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVF9B
Ukcod2lkZ2V0LCB3aWRnZXQpOwotCi0gICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBS
ZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KSkKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5k
ZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5mcmFtZU93
bmVyRWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKIAogICAgIC8vIEFzc3VtZSBhbGwgd2lk
Z2V0cyBhcmUgZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0Lgog
ICAgIC8vIEZJWE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0IGZvciBzY3JvbGwgYmFy
cyEKLSAgICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKKyAg
ICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpOwogfQogCiB2b2lk
IEZyYW1lOjpjbGVhclRpbWVycyhGcmFtZVZpZXcgKnZpZXcsIERvY3VtZW50ICpkb2N1bWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAppbmRleCA2ODM0MTEwN2Q5ODFjNGEzMmFiZWI5YzUxMDkzYzg3YTgxZGY4
NjU1Li45YThmNzNjY2I1OGQ3N2VkZDQ5MTk2YTU3ZmZkYmFmMTM4YTFlYzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRn
ZXQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNv
bnN0IFdpZGdldCYpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4g
Km1fc2V0dGluZ3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDc3MDc1ZmQ1
NzliZmNiMzlmNjZmNmQ5MzY2OWRlZDUwNzZhMDM3NDUuLmIyOTEyMzYzZjIxZGQ4MGQ2YmUwMTBk
MDhhY2EyN2FlOTJmNzViMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMsNyAr
Myw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2Rl
Lm9yZz4KICAqICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlz
dG9Aa2RlLm9yZz4KICAqICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIgPG11
ZWxsZXJAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdy
YWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogICAgICAgICAgIChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA2LDE4ICs1MDYsMTcg
QEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50
KCkpIHsKLSAgICAgICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKSkKLSAg
ICAgICAgICAgIHdpbmRvdy0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7Cisg
ICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgICAgICBwYWdl
LT5jaHJvbWUoKS5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93
bmVyUmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3Qg
cmVwYWludFJlY3QgPSByZWN0OwotICAgIHJlcGFpbnRSZWN0Lm1vdmUocmVuZGVyZXItPmJvcmRl
ckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAotICAgICAgICAgICAgICAgICAgICAg
cmVuZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CisgICAgcmVw
YWludFJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdM
ZWZ0KCksIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwog
ICAgIHJlbmRlcmVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsKIH0KIApAQCAtNTQ0
LDE0ICs1NDMsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0
JiBuZXdSZWN0KQogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCiBi
b29sIEZyYW1lVmlldzo6c2NoZWR1bGVBbmltYXRpb24oKQogewotICAgIGlmIChIb3N0V2luZG93
KiB3aW5kb3cgPSBob3N0V2luZG93KCkpIHsKLSAgICAgICAgd2luZG93LT5zY2hlZHVsZUFuaW1h
dGlvbigpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zY2hlZHVsZUFuaW1hdGlvbigpOwor
ICAgIHJldHVybiB0cnVlOwogfQorCiAjZW5kaWYKIAogdm9pZCBGcmFtZVZpZXc6OnNldE1hcmdp
bldpZHRoKExheW91dFVuaXQgdykKQEAgLTEwNTYsMjIgKzEwNTcsMjIgQEAgR3JhcGhpY3NMYXll
ciogRnJhbWVWaWV3OjpncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRn
ZXQgcGxhdGZvcm0KIHsKICAgICAvLyBUbyBmaW5kIHRoZSBXaWRnZXQgdGhhdCBjb3JyZXNwb25k
cyB3aXRoIHBsYXRmb3JtV2lkZ2V0IHdlIGhhdmUgdG8gZG8gYSBsaW5lYXIKICAgICAvLyBzZWFy
Y2ggb2Ygb3VyIGNoaWxkIHdpZGdldHMuCi0gICAgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxw
dHI7CisgICAgY29uc3QgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CiAgICAgZm9yIChh
dXRvJiB3aWRnZXQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmICh3aWRnZXQtPnBsYXRmb3Jt
V2lkZ2V0KCkgIT0gcGxhdGZvcm1XaWRnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgZm91bmRXaWRnZXQgPSB3aWRnZXQuZ2V0KCk7CisgICAgICAgIGZvdW5kV2lkZ2V0ID0gd2lk
Z2V0LnB0cigpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoIWZvdW5kV2lkZ2V0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJl
bmRlcldpZGdldDo6ZmluZChmb3VuZFdpZGdldCk7CisgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0g
UmVuZGVyV2lkZ2V0OjpmaW5kKCpmb3VuZFdpZGdldCk7CiAgICAgaWYgKCFyZW5kZXJXaWRnZXQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVuZGVyTGF5ZXIqIHdpZGdldExheWVy
ID0gcmVuZGVyV2lkZ2V0LT5sYXllcigpOworICAgIGF1dG8qIHdpZGdldExheWVyID0gcmVuZGVy
V2lkZ2V0LT5sYXllcigpOwogICAgIGlmICghd2lkZ2V0TGF5ZXIgfHwgIXdpZGdldExheWVyLT5p
c0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxODAsMTEgKzIx
ODEsMTEgQEAgYm9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiBib29sIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkK
IHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgfHwgbV92aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGhvc3RXaW5kb3coKS0+c2Ny
b2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICAgICAgZnJhbWUo
KS5wYWdlKCktPmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlw
UmVjdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IGJvb2wgaXND
b21wb3NpdGVkQ29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICBi
b29sIGlzQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7
CiAKICAgICAvLyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4g
dGhlIHJlY3RUb1Njcm9sbAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKQEAgLTIyMjAsNyAr
MjIyMSw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IElu
dFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgfQogCiAgICAgLy8gMSkgc2Ny
b2xsCi0gICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwg
Y2xpcFJlY3QpOworICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVs
dGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwogCiAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVh
IG9mIGZpeGVkIG9iamVjdHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAogICAgIGZvciAoYXV0
byYgdXBkYXRlUmVjdCA6IHJlZ2lvblRvVXBkYXRlLnJlY3RzKCkpIHsKQEAgLTIyMzUsNyArMjIz
Niw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNs
aXBzUmVwYWludHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Nj
cm9sbCk7Ci0gICAgICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZp
ZXcodXBkYXRlUmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5pbnZhbGlk
YXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0KTsKICAgICB9CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI2NDIsOSArMjY0MywxMCBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNjcm9s
bFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbikKIAogSG9zdFdp
bmRvdyogRnJhbWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKIHsKLSAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpKQotICAgICAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmcGFnZS0+Y2hy
b21lKCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjphZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByKQpAQCAtMjc4NCwxMCArMjc4NiwxMiBAQCB2b2lkIEZyYW1lVmlldzo6YWRq
dXN0VGlsZWRCYWNraW5nU2Nyb2xsYWJpbGl0eSgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisK
IHZvaWQgRnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkKIHsKICAgICBh
ZGp1c3RUaWxlZEJhY2tpbmdTY3JvbGxhYmlsaXR5KCk7CiB9CisKICNlbmRpZgogCiBzdGF0aWMg
TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzIGRldGVybWluZUxheWVyRmx1c2hUaHJvdHRs
ZVN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC00MDgyLDggKzQwODYsNiBAQCB2b2lkIEZyYW1lVmlldzo6
dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHls
ZShXVEZNb3ZlKCpjb3JuZXJTdHlsZSkpOwogICAgICAgICBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVy
KGNvcm5lclJlY3QpOwogICAgIH0KLQotICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5l
cigpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQpAQCAtNDE1NywxNSArNDE1
OSwxNCBAQCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QK
IGJvb2wgRnJhbWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8mIHdpZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4o
KndpZGdldCkpIHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQp
Lmhhc0N1c3RvbVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0
LmdldCgpKSkgeworICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0Lmdl
dCgpKS5oYXNDdXN0b21TY3JvbGxiYXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkgewotICAgICAgICAg
ICAgaWYgKGRvd25jYXN0PFNjcm9sbGJhcj4oKndpZGdldCkuaXNDdXN0b21TY3JvbGxiYXIoKSkK
KyAgICAgICAgfSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChkb3duY2FzdDxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkuaXNDdXN0b21TY3Jv
bGxiYXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0K
LQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDE3MywxMSArNDE3NCwxMCBAQCBGcmFtZVZp
ZXcqIEZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXBhcmVu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChGcmFtZSogcGFyZW50RnJh
bWUgPSBmcmFtZSgpLnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1l
LT52aWV3KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBwYXJlbnRGcmFtZSA9
IGZyYW1lKCkudHJlZSgpLnBhcmVudCgpOworICAgIGlmICghcGFyZW50RnJhbWUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygpOwogfQogCiBi
b29sIEZyYW1lVmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QK
QEAgLTUxODMsOCArNTE4Myw4IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlv
bnMoKQogICAgIC8vIHNjcmlwdHMgaW4gcmVzcG9uc2UgdG8gTlBQX1NldFdpbmRvdywgZm9yIGV4
YW1wbGUpLCBzbyB3ZSBuZWVkIHRvIGtlZXAgdGhlIFdpZGdldHMKICAgICAvLyBhbGl2ZSBkdXJp
bmcgZW51bWVyYXRpb24uCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBjb2xsZWN0QW5kUHJvdGVj
dFdpZGdldHMobV93aWRnZXRzSW5SZW5kZXJUcmVlKSkgewotICAgICAgICBpZiAoUmVuZGVyV2lk
Z2V0KiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0LmdldCgpKSkgewot
ICAgICAgICAgICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRlcldpZGdldC0+dXBkYXRl
V2lkZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCp3aWRnZXQpKSB7CisgICAgICAgICAgICBhdXRvIGlnbm9yZVdpZGdldFN0YXRl
ID0gcmVuZGVyZXItPnVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oaWdub3JlV2lkZ2V0U3RhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggMjNhN2ZkMWI0NGY2ZWU5MDQyMGIyMDUwODkzYzc4M2FhZTg1MDNiNi4u
NzExYjc0YjQ2N2IzNzU4ODRhMzU3OGE0MDJhNGU0NGM0NjIzMzU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICAgIChDKSAxOTk4LCAxOTk5IFRv
cmJlbiBXZWlzICh3ZWlzQGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKLSAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA5LCAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NzQsMTYgKzc0LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCi0g
ICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3coKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzZXRG
cmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQotICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAg
ICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIEZyYW1lJiBm
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RnJhbWUmPihtX2ZyYW1lLmdldCgpKTsg
fQorICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIApAQCAtOTUsMTUg
Kzk1LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1hcmdpbldpZHRoKExheW91dFVuaXQpOwog
ICAgIHZvaWQgc2V0TWFyZ2luSGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpIGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKTsKIAotICAgIFJlZjxTY3Jv
bGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Cisg
ICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBm
aW5hbDsKIAotICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAg
dm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dXBkYXRlQ29udGVudHNTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c1NpemUo
Y29uc3QgSW50U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNTaXplKCkgZmlu
YWw7CiAKICAgICB2b2lkIGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25zdDsKQEAgLTE2Miw3ICsxNjIs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllckZvclBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjaGVkdWxlTGF5ZXJGbHVzaEFsbG93aW5nVGhyb3R0bGluZygpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IGZp
bmFsOwogCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIGFueSBTY3JvbGxhYmxlQXJlYSBjYW4g
aGF2ZSBhIG5vZGUgaW4gdGggU2Nyb2xsaW5nVHJlZSwgdGhpcyBzaG91bGQKICAgICAvLyBiZWNv
bWUgYSB2aXJ0dWFsIGZ1bmN0aW9uIG9uIFNjcm9sbGFibGVBcmVhLgpAQCAtMjI1LDIxICsyMjUs
MjEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cyhJbnRTaXplKTsKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKICAgICAKLSAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93
bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50
cykgY29uc3Q7CiAKLSAgICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IGZp
bmFsOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZvaWQgc2V0Rml4ZWRW
aXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9s
bGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNj
cm9sbGluZygpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRl
KGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1J1YmJlckJhbmRJ
blByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9z
aXRpb24gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBT
Y3JvbGxQb3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbGluZygpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
clNjcm9sbGluZygpIGZpbmFsOworICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRl
KGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgZmluYWw7CisgICAgYm9vbCBpc1J1YmJlckJhbmRJblBy
b2dyZXNzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24g
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CiAKICAg
ICAvLyBUaGUgc2Nyb2xsT3JpZ2luLCBzY3JvbGxQb3NpdGlvbiwgbWluaW11bVNjcm9sbFBvc2l0
aW9uIGFuZCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24gYXJlIGFsbCBhZmZlY3RlZCBieSBmcmFtZSBz
Y2FsZSwKICAgICAvLyBidXQgbGF5b3V0Vmlld3BvcnQgY29tcHV0YXRpb25zIHJlcXVpcmUgdW5z
Y2FsZWQgc2Nyb2xsIHBvc2l0aW9ucy4KQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAg
ICAgdm9pZCByZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0
Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwpAQCAtMzc5LDkgKzM3OSw5IEBAIHB1YmxpYzoK
ICAgICBlbnVtIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRl
cywgVmlld0Nvb3JkaW5hdGVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRl
bnRzRm9yU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3Bh
Y2VGb3JTbmFwc2hvdCk7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIo
R3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zlcmhh
bmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFsOworICAgIHZvaWQgcGFpbnRT
Y3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkg
ZmluYWw7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxi
YXImLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBk
b2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogCkBAIC00MzYsMTAgKzQzNiwxMCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29u
c3Q7CiAKICAgICAvLyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29u
dmVyc2lvbiB2aWEgcmVuZGVyZXJzLCBpbiBvcmRlciB0byB0YWtlIHRyYW5zZm9ybXMgaW50byBh
Y2NvdW50LgotICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmll
dyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydFRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQ
b2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0
JikgY29uc3QgZmluYWw7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWlu
aW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIAogICAg
IGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoY29uc3QgUmVuZGVyU2Nyb2xsYmFyUGFydCYg
c2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9PSAmc2Nyb2xsQ29y
bmVyOyB9CiAKQEAgLTQ1MSwyMCArNDUxLDIwIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNj
cm9sbGFiaWxpdHkgeyBTY3JvbGxhYmxlLCBTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSB9Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTY3JvbGxhYmxlKFNjcm9sbGFiaWxpdHkgZGVmaW5p
dGlvbk9mU2Nyb2xsYWJsZSA9IFNjcm9sbGFiaWxpdHk6OlNjcm9sbGFibGUpOwogCi0gICAgYm9v
bCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBoYXNT
Y3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkgZmluYWw7CisgICAgYm9vbCBoYXNTY3JvbGxh
YmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgZmluYWw7CiAKICAgICBlbnVtIFNjcm9sbGJh
ck1vZGVzQ2FsY3VsYXRpb25TdHJhdGVneSB7IFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5LCBBbnlS
dWxlIH07CiAgICAgdm9pZCBjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxi
YXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNjcm9sbGJhck1vZGVzQ2FsY3Vs
YXRpb25TdHJhdGVneSA9IEFueVJ1bGUpOwogCi0gICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQ
b3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2hvdWxkU2V0Q3Vyc29yKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIG9uY2UgcGx1Z2luIGxvYWRpbmcgaXMgZGVjb3VwbGVkIGZyb20gbGF5
b3V0LgogICAgIHZvaWQgZmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKLSAgICBi
b29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRl
KSBvdmVycmlkZTsKIAogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7
CkBAIC00ODMsNyArNDgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxl
QXJlYShTY3JvbGxhYmxlQXJlYSopIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0
KiBzY3JvbGxhYmxlQXJlYXMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQo
KTsgfQogCi0gICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbW92ZUNoaWxkKFdpZGdldCYpIGZpbmFsOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlz
dHMgZm9yIHBvcnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5Lgog
ICAgIC8vIE9uIE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRv
ZXMgdGhlIHNjcm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCkBAIC01MDEsNyAr
NTAxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25z
dDsKICAgICB2b2lkIHNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogICAgIAotICAg
IGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lu
UHJvZ3JhbW1hdGljU2Nyb2xsOyB9CisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7IH0KICAgICB2b2lkIHNl
dEluUHJvZ3JhbW1hdGljU2Nyb2xsKGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsKSB7IG1faW5Qcm9n
cmFtbWF0aWNTY3JvbGwgPSBwcm9ncmFtbWF0aWNTY3JvbGw7IH0KIAogI2lmIEVOQUJMRShDU1Nf
REVWSUNFX0FEQVBUQVRJT04pCkBAIC01MDksOCArNTA5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SW5pdGlhbFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1faW5pdGlhbFZp
ZXdwb3J0U2l6ZSA9IHNpemU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9y
UGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFk
Rm9yUGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoUlVCQkVS
X0JBTkRJTkcpCiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2V0V2FudHNMYXll
ckZvclRvcE92ZXJIYW5nQXJlYShib29sKSBjb25zdDsKQEAgLTUyMywyMCArNTIzLDIwIEBAIHB1
YmxpYzoKIAogICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZp
eGVkUG9zaXRpb24oKSBjb25zdDsKIAotICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQorICAgIGludCBoZWFkZXJIZWlnaHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SGVhZGVySGVpZ2h0KGludCk7Ci0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdo
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGZs
b2F0IHRvcENvbnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0
VHlwZTo6V2ViQ29yZUNvbnRlbnRJbnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgZmxvYXQgdG9wQ29udGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250
ZW50SW5zZXRUeXBlOjpXZWJDb3JlQ29udGVudEluc2V0KSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHRvcENvbnRlbnRJbnNldERpZENoYW5nZShmbG9hdCBuZXdUb3BDb250ZW50SW5zZXQpOwogCiAg
ICAgdm9pZCB0b3BDb250ZW50RGlyZWN0aW9uRGlkQ2hhbmdlKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNo
YW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CiAKICAgICB2b2lkIGFkanVz
dFRpbGVkQmFja2luZ1Njcm9sbGFiaWxpdHkoKTsKIApAQCAtNTc0LDI5ICs1NzQsMjkgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLSAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0cygpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFw
UHJvcGVydGllcygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVw
Rm9yRml4ZWRDb250ZW50KGZsb2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSkgb3ZlcnJpZGU7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVk
Q29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKIAotICAgIHZv
aWQgc2hvdygpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIGZpbmFsOwogCiAgICAgYm9vbCBz
aG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QgZmluYWw7CiAK
ICAgICB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBi
b29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRh
dGVSZWN0KSBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0
aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlcGFp
bnRTbG93UmVwYWludE9iamVjdHMoKTsKIAotICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEZyYW1lVmlldyhGcmFtZSYpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGluUHJlTGF5b3V0U3R5bGVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFBo
YXNlID09IEluUHJlTGF5b3V0U3R5bGVVcGRhdGU7IH0KIAotICAgIGJvb2wgaXNGcmFtZVZpZXco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZyYW1lVmlldygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJX
aWRnZXQ7CiAgICAgYm9vbCB1c2VTbG93UmVwYWludHMoYm9vbCBjb25zaWRlck92ZXJsYXAgPSB0
cnVlKSBjb25zdDsKQEAgLTYyOCw5ICs2MjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxk
VXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIGNvbnN0OwogICAgIGJvb2wg
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNvbnN0IEZyYW1lJiByb290RnJhbWVG
b3JGbHVzaCk7CiAKLSAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50
U2l6ZUNoYW5nZSgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVB
ZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHNjcm9sbE9mZnNldENo
YW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQs
IGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9s
bE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBv
bGRPZmZzZXQsIGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAogICAgIHZv
aWQgYXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJh
ck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2lu
YXRpb25Ub1ZpZXdwb3J0KCk7CkBAIC02NTEsMzkgKzY1MSwzOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlTGF5ZXJGbHVzaFRocm90dGxpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CiAKLSAgICB2b2lkIHJlcGFpbnRDb250ZW50
UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZGVkT3JSZW1v
dmVkU2Nyb2xsYmFyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBhaW50Q29udGVudFJlY3Rhbmds
ZShjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJh
cigpIGZpbmFsOwogCi0gICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIGZpbmFsOwogCiAg
ICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xs
YmFyUmVjdChTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
Y3JvbGxUbyhjb25zdCBTY3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Vmlz
aWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICBTY3Jv
bGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJh
cigpIGNvbnN0IG92ZXJyaWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29y
bmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzY3JvbGxUbyhjb25z
dCBTY3JvbGxQb3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1
bWJSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9z
aW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVB
cmVhQm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNj
cm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyRm9yU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJG
b3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciog
bGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5
ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFJVQkJF
Ul9CQU5ESU5HKQotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygp
IGNvbnN0IGZpbmFsOwogI2VuZGlmCi0gICAgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbnRlbnRzUmVzaXplZCgpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogI2VuZGlmCiAKLSAg
ICBib29sIHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNNb2Nr
U2Nyb2xsQW5pbWF0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGxvZ01vY2tTY3JvbGxB
bmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1
c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc0FzeW5j
U2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9y
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGUgc2Nyb2xsYmFyIG5v
dGlmaWNhdGlvbnMgdG8gdXBkYXRlIHRoZSBBWE9iamVjdCBjYWNoZS4KLSAgICB2b2lkIGRpZEFk
ZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0
aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNj
cm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIEludFNpemUgc2l6
ZUZvclJlc2l6ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kUmVzaXplRXZlbnRJZk5lZWRl
ZCgpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxh
YmxlQXJlYVNldCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0Vmlld3BvcnQoKTsKIAotICAgIHZv
aWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCBlbmFibGVTcGVjdWxhdGl2ZVRpbGluZ0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBzcGVjdWxhdGl2ZVRpbGluZ0VuYWJsZVRpbWVyRmlyZWQoKTsKQEAgLTcwOCw3ICs3MDgsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2Ny
b2xsQ29ybmVyKCkgZmluYWw7CiAKICAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5MzMxYjMwMjkwN2U3OWI3YzExYjVlYzA4NDZi
YWZkNWMzZmVjNDk3Li42YzQ3NjVmMGNiYzQ1MjQyODJlMDdjNjE4NjY0ZTc2YTAyNTMxMWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEzMzMsMTggKzEzMzMsMTUgQEAgdm9pZCBQYWdlOjpkbnNQ
cmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpCiBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFn
ZTo6cGx1Z2luVmlld3MoKQogewogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiB2aWV3
czsKLQogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmll
dyA9IGZyYW1lLT52aWV3KCk7CisgICAgICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOwog
ICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBmb3IgKGF1
dG8mIHdpZGdldCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxQbHVn
aW5WaWV3QmFzZT4oKndpZGdldCkpCi0gICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25j
YXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSk7CisgICAgICAgICAgICBpZiAoaXM8UGx1Z2lu
Vmlld0Jhc2U+KHdpZGdldC5nZXQoKSkpCisgICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRv
d25jYXN0PFBsdWdpblZpZXdCYXNlPih3aWRnZXQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0K
LQogICAgIHJldHVybiB2aWV3czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAxYzQ3ZTNkZmM0ZGRkMWJkNDVjMzI1N2Y3YjRl
ZDMwZGViOGY5YTY4Li43NmU4MGMwNzhmMWM2NmJkYWQ2YjgwMWY4OTM3ZGJkMDAxYmZjYzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApA
QCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlvbkV2ZW50
c0lmTmVlZGVkKCkKICAgICAgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYgbV9hbmlt
YXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAgICAgICAg
ICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1fY29t
cG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRpb24oKTsK
LSAgICAgICAgICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCku
Z2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKG9mZnNldCA+IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1ZSgpLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0OjpTdGFydFRpbWVyRmlyZWQsIDApOwogICAgICAgICAgICAgfQpAQCAtNTc3LDcgKzU3Nyw3
IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSgpCiAgICAgICAgIGlm
IChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewog
ICAgICAgICAgICAgaWYgKG1fb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY3VycmVu
dFNjcm9sbFBvc2l0aW9uID0gbV9vYmplY3QtPnZpZXcoKS5mcmFtZVZpZXcoKS5zY3JvbGxQb3Np
dGlvbkZvckZpeGVkUG9zaXRpb24oKS55KCkudG9GbG9hdCgpOwotICAgICAgICAgICAgICAgIFNj
cm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dFNjcm9sbFBvc2l0aW9uID49IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1ZSgpLnZhbHVlKCkgJiYg
KCFzY3JvbGxUcmlnZ2VyLmhhc0VuZFZhbHVlKCkgfHwgY3VycmVudFNjcm9sbFBvc2l0aW9uIDw9
IHNjcm9sbFRyaWdnZXIuZW5kVmFsdWUoKS52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC02NTMsNyArNjUzLDcgQEAgZG91YmxlIEFuaW1h
dGlvbkJhc2U6OnByb2dyZXNzKGRvdWJsZSBzY2FsZSwgZG91YmxlIG9mZnNldCwgY29uc3QgVGlt
aW5nRnVuY3Rpb24KICAgICB9CiAKICAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAgICAgICB0
aW1pbmdGdW5jdGlvbiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAg
ICAgICB0aW1pbmdGdW5jdGlvbiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpOwogCiAg
ICAgc3dpdGNoICh0aW1pbmdGdW5jdGlvbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdGdW5j
dGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewpAQCAtNzQzLDcgKzc0Myw3IEBAIGRvdWJsZSBB
bmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTU19B
TklNQVRJT05TX0xFVkVMXzIpCiAgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYgbV9h
bmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKLSAgICAg
ICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9s
bEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAg
ICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+
KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAgICAgICAgaWYgKHNjcm9sbFRyaWdnZXIuaGFz
RW5kVmFsdWUoKSAmJiBtX29iamVjdCkgewogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gbV9j
b21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS5zY3JvbGxQb3NpdGlvbigp
OwogICAgICAgICAgICAgZmxvYXQgc3RhcnRWYWx1ZSA9IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1
ZSgpLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZWQ5NmFiMTUzODgyYjU5ZGM5OWNiZGY1YWM5
ODY0ZGIwZjAwNWEwNC4uMjJiZGU0NjhhMDZhYjQ2YzBiYTBlODg4YjliNzM1ZDE0NTEyYzBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcApAQCAtOTksMjggKzk5LDI4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJh
CiAKIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2
ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogewot
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAg
ICBhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJWaWV3IHx8IHJlbmRlclZpZXctPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAg
ICAgcmV0dXJuIEV2ZW50VHJhY2tpbmdSZWdpb25zKCk7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKICAgICAvLyBPbiBpT1MsIHdlIHVzZSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiB0
byByZXByZXNlbnQgdGhlIHJlZ2lvbiBjb3ZlcmVkIGJ5IGVsZW1lbnRzIHdpdGggdG91Y2ggZXZl
bnQgaGFuZGxlcnMuCiAgICAgQVNTRVJUKGZyYW1lLmlzTWFpbkZyYW1lKCkpOwotCi0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9
IGZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEV2
ZW50VHJhY2tpbmdSZWdpb25zKCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5ldmVudFRyYWNraW5n
UmVnaW9ucygpOwogI2Vsc2UKLSAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247Ci0g
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogZnJhbWVW
aWV3ID0gZnJhbWUudmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4g
RXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKIAorICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbjsKKwogICAgIC8vIEZJWE1FOiBzaG91bGQgQVNTRVJUKCFmcmFtZVZpZXctPm5lZWRzTGF5
b3V0KCkpIGhlcmUsIGJ1dCBuZWVkIHRvIGZpeCBEZWJ1Z1BhZ2VPdmVybGF5cwogICAgIC8vIHRv
IG5vdCBhc2sgZm9yIHJlZ2lvbnMgYXQgYmFkIHRpbWVzLgogCi0gICAgaWYgKGNvbnN0IEZyYW1l
Vmlldzo6U2Nyb2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Ny
b2xsYWJsZUFyZWFzKCkpIHsKKyAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVW
aWV3LT5zY3JvbGxhYmxlQXJlYXMoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNjcm9sbGFibGVB
cmVhIDogKnNjcm9sbGFibGVBcmVhcykgewogICAgICAgICAgICAgLy8gQ29tcG9zaXRlZCBzY3Jv
bGxhYmxlIGFyZWFzIGNhbiBiZSBzY3JvbGxlZCBvZmYgdGhlIG1haW4gdGhyZWFkLgogICAgICAg
ICAgICAgaWYgKHNjcm9sbGFibGVBcmVhLT51c2VzQXN5bmNTY3JvbGxpbmcoKSkKQEAgLTEzNiwx
OCArMTM2LDIxIEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjph
YnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiB3aWRnZXQgOiBmcmFtZVZpZXctPndpZGdldHNJblJlbmRlclRyZWUoKSkgewotICAgICAg
ICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQp
OwotICAgICAgICBpZiAoIXJlbmRlcldpZGdldCB8fCAhaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRn
ZXQpKQorICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgIAotICAgICAgICBpZiAoZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+
KCp3aWRnZXQpLndhbnRzV2hlZWxFdmVudHMoKSkKLSAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uLnVuaXRlKHJlbmRlcldpZGdldC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7
CisgICAgICAgIGlmICghZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLndhbnRzV2hl
ZWxFdmVudHMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvKiByZW5kZXJX
aWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoKndpZGdldCk7CisgICAgICAgIGlmICghcmVuZGVy
V2lkZ2V0KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uLnVuaXRlKHJlbmRlcldpZGdldC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAg
ICAgfQogICAgIAotICAgIC8vIEZJWE1FOiBpZiB3ZSd2ZSBhbHJlYWR5IGFjY291bnRlZCBmb3Ig
dGhpcyBzdWJmcmFtZSBhcyBhIHNjcm9sbGFibGUgYXJlYSwgd2UgY2FuIGF2b2lkIHJlY3Vyc2lu
ZyBpbnRvIGl0IGhlcmUuCiAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgZXZlbnRUcmFja2luZ1Jl
Z2lvbnM7CisKKyAgICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRo
aXMgc3ViZnJhbWUgYXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcg
aW50byBpdCBoZXJlLgogICAgIGZvciAoRnJhbWUqIHN1YmZyYW1lID0gZnJhbWUudHJlZSgpLmZp
cnN0Q2hpbGQoKTsgc3ViZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUtPnRyZWUoKS5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogc3ViZnJhbWVWaWV3ID0gc3ViZnJhbWUtPnZp
ZXcoKTsKKyAgICAgICAgYXV0byogc3ViZnJhbWVWaWV3ID0gc3ViZnJhbWUtPnZpZXcoKTsKICAg
ICAgICAgaWYgKCFzdWJmcmFtZVZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTYw
LDcgKzE2Myw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjph
YnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAgICAgICAgIGV2ZW50VHJhY2tp
bmdSZWdpb25zLnVuaXRlKHN1YmZyYW1lUmVnaW9uKTsKICAgICB9CiAKLSAgICBEb2N1bWVudDo6
UmVnaW9uRml4ZWRQYWlyIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFi
c29sdXRlUmVnaW9uRm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRU
YXJnZXRzKCkpOworICAgIGF1dG8gd2hlZWxIYW5kbGVyUmVnaW9uID0gZnJhbWUuZG9jdW1lbnQo
KS0+YWJzb2x1dGVSZWdpb25Gb3JFdmVudFRhcmdldHMoZnJhbWUuZG9jdW1lbnQoKS0+d2hlZWxF
dmVudFRhcmdldHMoKSk7CiAgICAgYm9vbCB3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCA9IHdo
ZWVsSGFuZGxlclJlZ2lvbi5zZWNvbmQ7CiAgICAgaWYgKHdoZWVsSGFuZGxlckluRml4ZWRDb250
ZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBwb3NpdGlvbjpzdGlja3kg
aGVyZSB0b28uCkBAIC0xNzIsNiArMTc1LDcgQEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZlbnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKIAog
ICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIG5vdCB0aGUgbWFpbiBmcmFtZSwgd2UgY291bGQgY2xp
cCB0aGUgcmVnaW9uIHRvIHRoZSBmcmFtZSdzIGJvdW5kcy4KICAgICBldmVudFRyYWNraW5nUmVn
aW9ucy51bml0ZVN5bmNocm9ub3VzUmVnaW9uKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisKICAgICByZXR1cm4gZXZlbnRUcmFja2luZ1JlZ2lvbnM7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDllNzBl
OWQzNmI5OTVlZGNiZWEyOTI1NDM2NzM2NmM0OTE4YTNiYzEuLmIxMTE2NGYwODU1ZGJkZjI1ZjZi
MWM2ODZmNzE2YjQ2NzIzMmM2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgS2V5ZWRDb2RpbmdfaAotI2RlZmluZSBLZXllZENvZGluZ19oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTE1Niw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURv
dWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmlu
ZyYga2V5LCBUIHZhbHVlKQpAQCAtMjExLDUgKzIxMCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZENvZGluZ19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzNDAwMTRhZDVhOTk1MzU5YWY3YjY5OWM1MjhkZDM4MDMy
MDk1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLSNkZWZpbmUgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNfaAotCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1j
bGFzcyBTcGVlY2hTeW50aGVzaXM7Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7Ci1j
bGFzcyBTcGVlY2hTeW50aGVzaXNWb2ljZTsKLSAgICAKLWNsYXNzIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4gY3Jl
YXRlKFNwZWVjaFN5bnRoZXNpcyopOwotICAgIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mKTsKLSAgICB2
b2lkIHBsYXRmb3JtU3BlYWsoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik7Ci0gICAgCi1wcml2
YXRlOgotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwotCi0g
ICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVjaFN5bnRoZXNpczsKLX07Ci0gICAgCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQot
I2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cAppbmRleCAxZjIwN2Y0NDM2Njk5YjRkMWM4NDVkNzBjY2M3MjlkMzZlOTBiYmEyLi4xMGE4MzBl
MzljN2I3ZmVkODkzOGVjMGI1NDAwMGVlODQ3Y2UwYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzAsMTYgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xp
ZW50KQorUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKIH0KICAgICAKLVBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQot
ICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAsIG1fcmF0
ZSgxLjBmKQotICAgICwgbV9waXRjaCgxLjBmKQoraW5saW5lIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoJmNs
aWVudCkKIHsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IGE4NjliYjg3Mjg0ZGM1
OWUwN2VlNjQyMzM2ZWFkMThjYTljNWQ4ODQuLmUwODc3NWIyNWVmNDAwZTY2YmRjMmU4ZGM0NWM4
MmI2ZjEwYzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyMSBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gK
LSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICAvLyBJbXBsZW1lbnQgbWV0aG9kcyBhcyBu
ZWVkZWQuCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VDbGllbnQoKSB7IH0KIH07CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZUNsaWVudCopOwotICAgIAorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVu
dCYpOworCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9
CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0OyB9
CiAgICAgCkBAIC03NCwyMCArNjYsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQg
PSBjbGllbnQ7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQq
KTsKKyAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYpOwogCiAgICAgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3RleHQ7CiAg
ICAgU3RyaW5nIG1fbGFuZzsKICAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZT4gbV92b2ljZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsKLSAgICBmbG9hdCBtX3JhdGU7Ci0gICAg
ZmxvYXQgbV9waXRjaDsKLSAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZmxvYXQgbV92b2x1
bWUgeyAxIH07CisgICAgZmxvYXQgbV9yYXRlIHsgMSB9OworICAgIGZsb2F0IG1fcGl0Y2ggeyAx
IH07CisgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgMCB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5k
aWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApp
bmRleCA1ODBmMTlkMTY3OGRlOTVlZmU2Yzk3MjAwNTlkMGViNjJiM2QwMWI4Li4yNDM3NmNkZTky
MzA4ZjY2MDMwN2EzY2QzNWQ2ZGZiNzFkNTUyZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE3ICszMCwx
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCitSZWY8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5n
LCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2Vy
dmljZSwgaXNEZWZhdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK1JlZjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlKTsKIH0KLSAgICAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlz
RGVmYXVsdCkKKworaW5saW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVm
YXVsdCkKICAgICA6IG1fdm9pY2VVUkkodm9pY2VVUkkpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fbGFuZyhsYW5nKQpAQCAtNDksMTIgKzQ5LDYgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNl
VVIKIHsKIH0KIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZSgpCi0gICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKLSAgICAsIG1fZGVm
YXVsdChmYWxzZSkKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggMzQzYjllN2JhY2YxNWU0
OTkzMjA4ZjU1ODE0ZmNlMzdmNzQ1MWQ5ZC4uMDE1OGIzNDk4NGRmNTYxZWNhN2ViZmU3NDMwZmU4
ODNmOWExOTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIxICsyMywxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2VfaAotI2RlZmluZSBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVm
YXVsdCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZT4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlz
RGVmYXVsdCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBj
cmVhdGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VVUkkoKSBjb25zdCB7IHJldHVybiBt
X3ZvaWNlVVJJOyB9CiAgICAgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
KSB7IG1fdm9pY2VVUkkgPSB2b2ljZVVSSTsgfQpAQCAtNTYsMTcgKzUzLDE1IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmlu
ZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29s
IGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UoKTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgPSBkZWZhdWx0
OwogCiAgICAgU3RyaW5nIG1fdm9pY2VVUkk7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJp
bmcgbV9sYW5nOwotICAgIGJvb2wgbV9sb2NhbFNlcnZpY2U7Ci0gICAgYm9vbCBtX2RlZmF1bHQ7
CisgICAgYm9vbCBtX2xvY2FsU2VydmljZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RlZmF1bHQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggY2JmZmU2
ZTFjODEyYjRkZGQxNGU0NzAwM2E4Nzg0OGI0ZWYxYWRjYi4uYjg5ZDU2NjExM2Y1Y2M3ZmRlNWU0
ZWU0YjU4YThjMjlhOWI2NDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MiwxNCArNjIsMTQgQEAgU2Nyb2xsVmlldzo6flNj
cm9sbFZpZXcoKQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFBhc3NSZWZQdHI8
V2lkZ2V0PiBwcnBDaGlsZCkgCit2b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFdpZGdldCYgY2hp
bGQpCiB7Ci0gICAgV2lkZ2V0KiBjaGlsZCA9IHBycENoaWxkLmdldCgpOwotICAgIEFTU0VSVChj
aGlsZCAhPSB0aGlzICYmICFjaGlsZC0+cGFyZW50KCkpOwotICAgIGNoaWxkLT5zZXRQYXJlbnQo
dGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hZGQocHJwQ2hpbGQpOwotICAgIGlmIChjaGlsZC0+cGxh
dGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcGxhdGZvcm1BZGRDaGlsZChjaGlsZCk7CisgICAgQVNT
RVJUKCZjaGlsZCAhPSB0aGlzKTsKKyAgICBBU1NFUlQoIWNoaWxkLnBhcmVudCgpKTsKKyAgICBj
aGlsZC5zZXRQYXJlbnQodGhpcyk7CisgICAgbV9jaGlsZHJlbi5hZGQoY2hpbGQpOworICAgIGlm
IChjaGlsZC5wbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBwbGF0Zm9ybUFkZENoaWxkKCZjaGls
ZCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGlsZCkKQEAg
LTk3LDcgKzk3LDcgQEAgYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChS
ZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyLCBTY3JvbGxiYXIKIAogICAgIGlmIChoYXNCYXIg
JiYgIXNjcm9sbGJhcikgewogICAgICAgICBzY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIob3Jp
ZW50YXRpb24pOwotICAgICAgICBhZGRDaGlsZChzY3JvbGxiYXIuZ2V0KCkpOworICAgICAgICBh
ZGRDaGlsZCgqc2Nyb2xsYmFyKTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHNjcm9sbGJhci5n
ZXQoKSwgb3JpZW50YXRpb24pOwogICAgICAgICBzY3JvbGxiYXItPnN0eWxlQ2hhbmdlZCgpOwog
ICAgICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKQEAgLTgyOSwxMiArODI5LDYgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkK
ICAgICB3aW5kb3ctPmludmFsaWRhdGVSb290VmlldyhJbnRSZWN0KCkpOwogfQogCi1ib29sIFNj
cm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
Ci17Ci0gICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwg
Y2xpcFJlY3QpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnNjcm9s
bENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKIHsKICAgICBob3N0
V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwodXBkYXRlUmVjdCk7CkBA
IC0xMDM4LDE3ICsxMDMyLDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6ZnJhbWVSZWN0c0NoYW5nZWQo
KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5l
bmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBj
dXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQot
ICAgICAgICAoKmN1cnJlbnQpLT5mcmFtZVJlY3RzQ2hhbmdlZCgpOworICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsK
IH0KIAogdm9pZCBTY3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQoKQogewotICAgIEhhc2hTZXQ8
UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQg
PSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAg
ICgqY3VycmVudCktPmNsaXBSZWN0Q2hhbmdlZCgpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBt
X2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+Y2xpcFJlY3RDaGFuZ2VkKCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0xMTUwLDEwICsxMTQxLDYgQEAgdm9pZCBTY3Jv
bGxWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUsIGJv
b2wgZm9yY2VVcGRhdGUKICAgICBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCi17Ci19Ci0KIHZvaWQgU2Nyb2xsVmll
dzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb3JuZXJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnBhaW50U2Ny
b2xsQ29ybmVyKHRoaXMsIGNvbnRleHQsIGNvcm5lclJlY3QpOwpAQCAtMTM5Miw5ICsxMzc5LDgg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBp
ZiAoIWlzU2VsZlZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBIYXNo
U2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4u
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c2V0UGFyZW50VmlzaWJs
ZSh2aXNpYmxlKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAg
Y2hpbGQtPnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6
c2hvdygpCkBAIC0xNDAyLDkgKzEzODgsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNob3coKQogICAg
IGlmICghaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIHNldFNlbGZWaXNpYmxlKHRydWUpOwog
ICAgICAgICBpZiAoaXNQYXJlbnRWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgICAgICAg
ICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVu
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0UGFy
ZW50VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxk
cmVuKQorICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xNDE1LDkgKzE0MDAsOCBAQCB2b2lkIFNjcm9sbFZpZXc6Omhp
ZGUoKQogewogICAgIGlmIChpc1NlbGZWaXNpYmxlKCkpIHsKICAgICAgICAgaWYgKGlzUGFyZW50
VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0
b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSGFzaFNldDxSZWZQ
dHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgICAgICAg
ICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgICAgICB9CiAgICAgICAgIHNl
dFNlbGZWaXNpYmxlKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgKaW5kZXggZGI1NzBkZDk4NWIxNzcyNDA5YTUxNTBhZmQ3NjNjMzBjMjQ3MTQ4Yy4uNmIzMWY5
ODJmNDI4YjA4YWFiNTU5NjU4NWZkZmM3MTFhZjRlN2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJTY3JvbGxh
YmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
Ci0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorCiBPQkpD
X0NMQVNTIFdBS1Njcm9sbFZpZXc7CiBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKQEAgLTQ2LDYgKzQ2
LDcgQEAgT0JKQ19DTEFTUyBXQUtWaWV3OwogI2lmbmRlZiBOU1ZpZXcKICNkZWZpbmUgTlNWaWV3
IFdBS1ZpZXcKICNlbmRpZgorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIGRlZmluZWQgX19PQkpDX18KQEAgLTY0LDEwICs2NSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U2Nyb2xsVmlldygpOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVu
Y3Rpb25zLgotICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBv
dmVycmlkZTsKLSAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25z
dCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25z
dCBTY3JvbGxPZmZzZXQmKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0
aW9uKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9yaWVudGF0
aW9uKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9mZnNl
dChjb25zdCBTY3JvbGxPZmZzZXQmKSBmaW5hbDsKKyAgICBib29sIGlzU2Nyb2xsQ29ybmVyVmlz
aWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9s
bGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Q7CkBAIC04NSwxNCAr
ODYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNv
bnN0ID0gMDsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBp
bnNwZWN0aW9uLgotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKKyAgICBjb25zdCBIYXNoU2V0PFJl
ZjxXaWRnZXQ+PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZChXaWRnZXQmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2hpbGQoV2lkZ2V0Jik7CiAKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBu
b3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0g
U2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWlu
IHRob3NlIHNjcm9sbGJhcnMuCi0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0g
ICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIGhvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0
KCk7IH0KKyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3JvbGxWaWV3
U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxT
Y3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxkOyB9CiAK
ICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMjEsNyArMTIyLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIGZpbmFsOwogCiAgICAgLy8gQnkgZGVm
YXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFyZWEgdGhhdCBpcyB2
aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQgYmFja2luZyBzdG9y
ZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3IHBhaW50cyB0aGUg
ZW50aXJlIGNvbnRlbnRzLgpAQCAtMTY3LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBJbiB0
aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3JvbGxpbmcg
KGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8gdXNlCiAg
ICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRoZSBtYWlu
ZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1c3QgYmVm
b3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhhcHBlbiB3
aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNjYWxlIG9y
IHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIEludFNpemUgdmlzaWJsZVNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CisgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0KS5zaXplKCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYg
dmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxl
Q29udGVudFJlY3Q7IH0KQEAgLTIxNywxMyArMjE4LDEzIEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1
bmN0aW9ucyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBjb250
YWluZWQgaW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGluZGl2aWR1
YWwgd2lkdGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgV0VCQ09SRV9FWFBPUlQg
SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsgLy8gQWx3YXlzIGF0IGxlYXN0
IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkvdmlzaWJsZUhlaWdodCgpLgorICAgIFdFQkNP
UkVfRVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgZmluYWw7IC8vIEFsd2F5cyBh
dCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KICAg
ICBpbnQgY29udGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndpZHRo
KCk7IH0KICAgICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1Np
emUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3Qg
SW50U2l6ZSYpOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3VycmVudCBz
Y3JvbGxlZCBwb3NpdGlvbiAoYm90aCBhcyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGluZGl2aWR1
YWwgWCBhbmQgWSB2YWx1ZXMpLgotICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCk7IH0KKyAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CiAKICAgICBTY3JvbGxQb3NpdGlv
biBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogCkBAIC0yNTgsNyArMjU5LDcgQEAgcHVi
bGljOgogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSB2ZXJ5IHRvcCBvZiB0aGUgdmlldy4KICAgICBX
RUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBkb2N1bWVudFNjcm9sbFBvc2l0aW9uUmVsYXRp
dmVUb1ZpZXdPcmlnaW4oKSBjb25zdDsKIAotICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgZmluYWw7
CiAKICAgICB2b2lkIGNhY2hlQ3VycmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hlZFNjcm9s
bFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb24oKTsgfQogICAgIFNjcm9sbFBvc2l0aW9uIGNhY2hl
ZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3NpdGlvbjsg
fQpAQCAtMzEzLDEzICszMTQsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNPZmZzY3JlZW4oKSBj
b25zdDsKIAogICAgIC8vIENhbGxlZCB3aGVuIG91ciBmcmFtZSByZWN0IGNoYW5nZXMgKG9yIHRo
ZSByZWN0L3Njcm9sbCBwb3NpdGlvbiBvZiBhbiBhbmNlc3RvciBjaGFuZ2VzKS4KLSAgICB2b2lk
IGZyYW1lUmVjdHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdl
ZCgpIGZpbmFsOwogICAgIAogICAgIC8vIFdpZGdldCBvdmVycmlkZSB0byB1cGRhdGUgb3VyIHNj
cm9sbGJhcnMgYW5kIG5vdGlmeSBvdXIgY29udGVudHMgb2YgdGhlIHJlc2l6ZS4KICAgICB2b2lk
IHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBXaWRnZXQg
b3ZlcnJpZGUgdG8gbm90aWZ5IG91ciBjb250ZW50cyBvZiBhIGNsaXByZWN0IGNoYW5nZS4KLSAg
ICB2b2lkIGNsaXBSZWN0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFJlY3RDaGFu
Z2VkKCkgZmluYWw7CiAKICAgICAvLyBGb3IgcGxhdGZvcm1zIHRoYXQgbmVlZCB0byBoaXQgdGVz
dCBzY3JvbGxiYXJzIGZyb20gd2l0aGluIHRoZSBlbmdpbmUncyBldmVudCBoYW5kbGVycyAobGlr
ZSBXaW4zMikuCiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXJBdFBvaW50KGNvbnN0IEludFBvaW50
JiB3aW5kb3dQb2ludCk7CkBAIC0zNDMsMTMgKzM0NCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBv
ZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdpZGdldCBvdmVycmlkZXMgdG8gZW5zdXJlIHRo
YXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaXMga2VwdCB1cCB0byBkYXRlIHdo
ZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93
KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBmaW5hbDsKICAgICAKICAgICAvLyBQYW4gc2Ny
b2xsaW5nLgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKQEAg
LTM1NywyMSArMzU4LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVBhblNjcm9sbEljb24o
KTsKICAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwotICAgIElu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNQb2lu
dEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBvaW50Jik7CisgICAgYm9vbCBzY3JvbGxiYXJD
b3JuZXJQcmVzZW50KCkgY29uc3Q7CisgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29u
c3QgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7
CiAKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25z
dCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UmVj
dCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwg
Y29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOworICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRS
ZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21T
Y3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50
JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1Rv
U2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7
CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgYm9vbCBpc1Njcm9sbFZpZXco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldChjb25zdCBTY3JvbGxPZmZz
ZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpOwogCiBwcm90ZWN0
ZWQ6CkBAIC0zODQsMjYgKzM4MywyNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGF2YWlsYWJs
ZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSA9IDA7CiAKICAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgYXJlIHVzZWQgdG8gY3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KICAgICAvLyBU
aGV5IHJldHVybiB0cnVlIGlmIHRoZSBzY3JvbGxiYXIgd2FzIGFkZGVkIG9yIHJlbW92ZWQuCi0g
ICAgYm9vbCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQgPSAwKTsKLSAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJv
b2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSAwKTsKKyAgICBib29sIHNldEhhc0hvcml6b250YWxT
Y3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCA9IG51bGxwdHIpOworICAg
IGJvb2wgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVBZmZl
Y3RlZCA9IG51bGxwdHIpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigp
OwotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSA9IDA7CisgICAg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CiAK
ICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscy4KLSAgICB2
aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCk7CisgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpID0gMDsKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0
aW5nIGV2ZXJ5dGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgo
Y29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CiAKICAgICB2b2lkIHNldFNjcm9sbE9yaWdpbihj
b25zdCBJbnRQb2ludCYsIGJvb2wgdXBkYXRlUG9zaXRpb25BdEFsbCwgYm9vbCB1cGRhdGVQb3Np
dGlvblN5bmNocm9ub3VzbHkpOwogCiAgICAgLy8gU3ViY2xhc3NlZCBieSBGcmFtZVZpZXcgdG8g
Y2hlY2sgdGhlIHdyaXRpbmctbW9kZSBvZiB0aGUgZG9jdW1lbnQuCi0gICAgdmlydHVhbCBib29s
IGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHRvIHVw
ZGF0ZSB0aGUgc2Nyb2xsYmFycyB0byBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIHN0YXRlIG9mIHRo
ZSB2aWV3LgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYg
ZGVzaXJlZFBvc2l0aW9uKTsKQEAgLTQxMSwyNyArNDEwLDI5IEBAIHByb3RlY3RlZDoKICAgICBm
bG9hdCBwbGF0Zm9ybVRvcENvbnRlbnRJbnNldCgpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1T
ZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZURlZmVy
cmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOworICAgIHZvaWQgaGFuZGxl
RGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRh
dGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNjcm9s
bE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0Jiwg
Y29uc3QgU2Nyb2xsT2Zmc2V0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbE9mZnNldENo
YW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiwgY29uc3QgU2Ny
b2xsT2Zmc2V0JikgPSAwOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCB1
bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVub2Jz
Y3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSA9IDA7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICAv
LyBTaXplIGF2YWlsYWJsZSBmb3IgdmlldyBjb250ZW50cywgZXhjbHVkaW5nIGNvbnRlbnQgaW5z
ZXRzLiBOb3QgYWZmZWN0ZWQgYnkgem9vbWluZy4KICAgICBJbnRTaXplIHNpemVGb3JVbm9ic2N1
cmVkQ29udGVudChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRl
U2Nyb2xsYmFycykgY29uc3Q7CiAKLSAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdEludGVy
bmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNvbnRlbnRS
ZWN0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxl
Q29udGVudFJlY3RCZWhhdmlvcikgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW50
UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNs
dWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CiAKICAgICB2b2lkIGNv
bXBsZXRlVXBkYXRlc0FmdGVyU2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpOwog
CiAgICAgYm9vbCBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChSZWZQdHI8U2Nyb2xsYmFyPiYsIFNj
cm9sbGJhck9yaWVudGF0aW9uLCBib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVBZmZlY3Rl
ZCk7CiAKKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBS
ZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIFNjcm9sbGJhck1vZGUg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZTsKQEAgLTQ0Miw3ICs0NDMsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX3Byb2hpYml0c1Njcm9sbGluZzsKIAotICAgIEhhc2hTZXQ8UmVmUHRyPFdp
ZGdldD4+IG1fY2hpbGRyZW47CisgICAgSGFzaFNldDxSZWY8V2lkZ2V0Pj4gbV9jaGlsZHJlbjsK
IAogICAgIC8vIFRoaXMgYm9vbCBpcyB1bnVzZWQgb24gTWFjIE9TIGJlY2F1c2Ugd2UgZGlyZWN0
bHkgYXNrIHRoZSBwbGF0Zm9ybSB3aWRnZXQKICAgICAvLyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8g
YmxpdCBvbiBzY3JvbGwuCkBAIC00ODMsOSArNDg0LDkgQEAgcHJpdmF0ZToKIAogICAgIEludFJl
Y3QgcmVjdFRvQ29weU9uU2Nyb2xsKCkgY29uc3Q7CiAKLSAgICAvLyBDYWxsZWQgd2hlbiB0aGUg
c2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZpZXcgY2hhbmdlcy4gIEZyYW1lVmlldyBvdmVy
cmlkZXMgdGhpcyB0byBnZW5lcmF0ZSByZXBhaW50IGludmFsaWRhdGlvbnMuCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIHsgfQorICAg
IC8vIENhbGxlZCB3aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoaXMgdmlldyBjaGFu
Z2VzLiBGcmFtZVZpZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZhbGlk
YXRpb25zLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xs
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVy
U2Nyb2xsaW5nKCkgPSAwOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopOwog
ICAgIHZvaWQgcGxhdGZvcm1SZW1vdmVDaGlsZChXaWRnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAppbmRleCA5YTBkZjE3MDA4ZjIxNzRiZDE3
ZmIzNjE2ODM3NDk1YTQzYzE4YTdjLi4xZjI1ZGRiMjkzNzI2MTliZDhlNDZlYTI3YWFhNmM3NGE0
Mjk4Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAg
LTIyLDIxICsyMiwxNiBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbl9oCi0jZGVmaW5l
IEFuaW1hdGlvbl9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFj
cm9zLmgiCi0KLSNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSNpbmNsdWRlICJB
bmltYXRpb25UcmlnZ2VyLmgiCi0jZW5kaWYKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTdHlsZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKKyNpbmNsdWRl
ICJBbmltYXRpb25UcmlnZ2VyLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02MiwyMCArNTcsMjAgQEAgcHVibGljOgogCiAgICAgLy8gRmxhZ3MgdGhpcyB0byBiZSB0aGUg
c3BlY2lhbCAibm9uZSIgYW5pbWF0aW9uIChhbmltYXRpb24tbmFtZTogbm9uZSkKICAgICBib29s
IGlzTm9uZUFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25lOyB9CisKICAgICAvLyBX
ZSBjYW4gbWFrZSBwbGFjZWhvbGRlciBBbmltYXRpb24gb2JqZWN0cyB0byBrZWVwIHRoZSBjb21t
YS1zZXBhcmF0ZWQgbGlzdHMKICAgICAvLyBvZiBwcm9wZXJ0aWVzIGluIHN5bmMuIGlzVmFsaWRB
bmltYXRpb24gbWVhbnMgdGhpcyBpcyBub3QgYSBwbGFjZWhvbGRlci4KICAgICBib29sIGlzVmFs
aWRBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiAhbV9pc05vbmUgJiYgIW1fbmFtZS5pc0VtcHR5
KCk7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
KCFtX2RpcmVjdGlvblNldCAmJiAhbV9kdXJhdGlvblNldCAmJiAhbV9maWxsTW9kZVNldAotICAg
ICAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxheVN0YXRlU2V0ICYmICFtX2l0ZXJh
dGlvbkNvdW50U2V0Ci0gICAgICAgICAgICAgICAgJiYgIW1fZGVsYXlTZXQgJiYgIW1fdGltaW5n
RnVuY3Rpb25TZXQgJiYgIW1fcHJvcGVydHlTZXQKKyAgICAgICAgcmV0dXJuICFtX2RpcmVjdGlv
blNldCAmJiAhbV9kdXJhdGlvblNldCAmJiAhbV9maWxsTW9kZVNldAorICAgICAgICAgICAgJiYg
IW1fbmFtZVNldCAmJiAhbV9wbGF5U3RhdGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRTZXQKKyAg
ICAgICAgICAgICYmICFtX2RlbGF5U2V0ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0ICYmICFtX3By
b3BlcnR5U2V0CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgICAgICAg
ICAgICAgJiYgIW1fdHJpZ2dlclNldCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICAmJiAhbV90cmlnZ2VyU2V0CiAjZW5kaWYKKyAgICAgICAgICAgIDsKICAgICB9CiAK
ICAgICBib29sIGlzRW1wdHlPclplcm9EdXJhdGlvbigpIGNvbnN0CkBAIC0xMTQsMTEgKzEwOSw3
IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7
IH0KIAotICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7Ci0gICAgICAgIEFuaW1hdGVBbGwsCi0gICAg
ICAgIEFuaW1hdGVOb25lLAotICAgICAgICBBbmltYXRlU2luZ2xlUHJvcGVydHkKLSAgICB9Owor
ICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1hdGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRl
U2luZ2xlUHJvcGVydHkgfTsKIAogICAgIGVudW0gQW5pbWF0aW9uRGlyZWN0aW9uIHsKICAgICAg
ICAgQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTM5LDEwICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIFN0eWxlOjpTY29wZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lU3R5bGVTY29wZU9yZGluYWw7IH0KICAgICBFQW5pbVBsYXlTdGF0ZSBw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBsYXlTdGF0ZT4obV9w
bGF5U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KKyAgICBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgUGFzc1Jl
ZlB0cjxBbmltYXRpb25UcmlnZ2VyPiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
OyB9CisgICAgQW5pbWF0aW9uVHJpZ2dlciogdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJp
Z2dlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1f
ZGVsYXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQpAQCAtMTU4LDEwICsxNDksMTAgQEAgcHVi
bGljOgogICAgIH0KICAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7IG1f
cGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYm
IGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgbV90aW1p
bmdGdW5jdGlvblNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbk1vZGUoQW5pbWF0
aW9uTW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKLSAgICB2b2lkIHNldFRyaWdnZXIoUGFzc1JlZlB0cjxBbmltYXRpb25Ucmln
Z2VyPiB0KSB7IG1fdHJpZ2dlciA9IHQ7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KKyAgICB2b2lk
IHNldFRyaWdnZXIoUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+JiYgdHJpZ2dlcikgeyBtX3RyaWdn
ZXIgPSBXVEZNb3ZlKHRyaWdnZXIpOyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9uKGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KQEAg
LTE5NywyMiArMTg4LDIyIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9maWxsTW9kZSA6IDI7
CiAKIAotICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlICAgICA6IDI7CisgICAgdW5zaWduZWQgbV9w
bGF5U3RhdGUgOiAyOwogCi0gICAgYm9vbCBtX2RlbGF5U2V0ICAgICAgICAgIDogMTsKLSAgICBi
b29sIG1fZGlyZWN0aW9uU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9kdXJhdGlvblNldCAgICAg
ICA6IDE7Ci0gICAgYm9vbCBtX2ZpbGxNb2RlU2V0ICAgICAgIDogMTsKKyAgICBib29sIG1fZGVs
YXlTZXQgOiAxOworICAgIGJvb2wgbV9kaXJlY3Rpb25TZXQgOiAxOworICAgIGJvb2wgbV9kdXJh
dGlvblNldCA6IDE7CisgICAgYm9vbCBtX2ZpbGxNb2RlU2V0IDogMTsKICAgICBib29sIG1faXRl
cmF0aW9uQ291bnRTZXQgOiAxOwotICAgIGJvb2wgbV9uYW1lU2V0ICAgICAgICAgICA6IDE7Ci0g
ICAgYm9vbCBtX3BsYXlTdGF0ZVNldCAgICAgIDogMTsKLSAgICBib29sIG1fcHJvcGVydHlTZXQg
ICAgICAgOiAxOworICAgIGJvb2wgbV9uYW1lU2V0IDogMTsKKyAgICBib29sIG1fcGxheVN0YXRl
U2V0IDogMTsKKyAgICBib29sIG1fcHJvcGVydHlTZXQgOiAxOwogICAgIGJvb2wgbV90aW1pbmdG
dW5jdGlvblNldCA6IDE7CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
Ym9vbCBtX3RyaWdnZXJTZXQgICAgICAgIDogMTsKKyAgICBib29sIG1fdHJpZ2dlclNldCA6IDE7
CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc05vbmUgICAgICAgICAgICA6IDE7CisgICAgYm9vbCBt
X2lzTm9uZSA6IDE7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEZWxheSgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMywxMiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBpbml0aWFsTmFtZSgpOwogICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBp
bml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgICBz
dGF0aWMgQ1NTUHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHkoKSB7IHJldHVybiBDU1NQcm9wZXJ0
eUludmFsaWQ7IH0KLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4g
aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsVGlt
aW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25z
dCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4g
QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxBbmltYXRp
b25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRpb25UcmlnZ2Vy
OjpjcmVhdGUoKTsgfQogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBbmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCmluZGV4IDYyNWQ3OTAxNWEwNzQwNmEyOTk4ODAxM2E2
NTIwNmI1MDg0MjcxZWEuLjBhMzIwMjI1NDU5YjFmZDA2NjI2NWVmMmNkN2E1OWRlNzIyNTcyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZp
bmUgRklMTF9VTlNFVF9QUk9QRVJUWSh0ZXN0LCBwcm9wR2V0LCBwcm9wU2V0KSBcCiBmb3IgKGkg
PSAwOyBpIDwgc2l6ZSgpICYmIGFuaW1hdGlvbihpKS50ZXN0KCk7ICsraSkgeyB9IFwKLWlmIChp
IDwgc2l6ZSgpICYmIGkgIT0gMCkgeyBcCitpZiAoaSkgeyBcCiAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGkgPCBzaXplKCk7ICsraSwgKytqKSBcCiAgICAgICAgIGFuaW1hdGlvbihpKS5wcm9wU2V0
KGFuaW1hdGlvbihqKS5wcm9wR2V0KCkpOyBcCiB9CiAKIEFuaW1hdGlvbkxpc3Q6OkFuaW1hdGlv
bkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvdGhlci5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChB
bmltYXRpb246OmNyZWF0ZShvdGhlci5hbmltYXRpb24oaSkpKTsKKyAgICBtX2FuaW1hdGlvbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5zaXplKCkpOworICAgIGZvciAoYXV0byYgYW5p
bWF0aW9uIDogb3RoZXIubV9hbmltYXRpb25zKQorICAgICAgICBtX2FuaW1hdGlvbnMudW5jaGVj
a2VkQXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSkpOwogfQogCiB2b2lk
IEFuaW1hdGlvbkxpc3Q6OmZpbGxVbnNldFByb3BlcnRpZXMoKQpAQCAtNTUsOSArNTYsMTAgQEAg
Ym9vbCBBbmltYXRpb25MaXN0OjpvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVy
KSBjb25zdAogewogICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChhbmltYXRp
b24oaSkgIT0gb3RoZXIuYW5pbWF0aW9uKGkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgKaW5kZXggYzg0Y2I5YjFkMTUxNjNkMDc2ODkz
NzQ2MTc0MDZkODQ5NDBkYWFmZS4uZWE3YzliNzhhMTk1MGYxNWU5NGZhYWJhYTk1MWI0ODE1NTJm
N2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCkBAIC0yMiw4ICsyMiw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9u
TGlzdF9oCi0jZGVmaW5lIEFuaW1hdGlvbkxpc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw2ICszNSw3IEBA
IGNsYXNzIEFuaW1hdGlvbkxpc3QgewogcHVibGljOgogICAgIEFuaW1hdGlvbkxpc3QoKSB7IH0K
ICAgICBBbmltYXRpb25MaXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsKKyAgICBBbmltYXRpb25M
aXN0KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9w
ZXJ0aWVzKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmKSBjb25z
dDsKQEAgLTQ5LDIyICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6
ZV90IG4pIHsgbV9hbmltYXRpb25zLnJlc2l6ZShuKTsgfQogICAgIHZvaWQgcmVtb3ZlKHNpemVf
dCBpKSB7IG1fYW5pbWF0aW9ucy5yZW1vdmUoaSk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGlv
bik7Ci0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKLSAgICB9Ci0gICAg
Ci0gICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuICptX2FuaW1hdGlv
bnNbaV07IH0KLSAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gKm1fYW5pbWF0aW9uc1tpXTsgfQorICAgIHZvaWQgYXBwZW5kKFJlZjxBbmltYXRp
b24+JiYgYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24p
KTsgfQorCisgICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuIG1fYW5p
bWF0aW9uc1tpXS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0uZ2V0KCk7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsK
KyAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oQW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKKyAgICBWZWN0
b3I8UmVmPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIH07ICAgIAogCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFuaW1hdGlvbkxpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKaW5kZXggZmNh
NDVjMTBkMjEwNGYwNWVkZWJiNzg4MDAxNGEyNjNhNjViMWUxMS4uNWVhMDFiMjBiMjYyN2I4ZDk3
YmEzNWYzZTJkN2NiZTRhNTUyOTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCkBAIC0yMywyOSArMjMsMjQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25UcmlnZ2VyX2gKLSNkZWZpbmUg
QW5pbWF0aW9uVHJpZ2dlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFU
SU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBbmltYXRpb25UcmlnZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVHJpZ2dlcj4g
ewogcHVibGljOgotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGNs
b25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7
Ci0gICAgICAgIEF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
clR5cGUKLSAgICB9OworICAgIHZpcnR1YWwgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVHJpZ2dlcigpIHsgfQogCisgICAg
ZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7IEF1dG9BbmltYXRpb25UcmlnZ2VyVHlw
ZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5cGUgfTsKICAgICBBbmltYXRpb25UcmlnZ2VyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGlzQXV0b0FuaW1h
dGlvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQW5pbWF0aW9uVHJpZ2dlclR5
cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZTsgfQpAQCAtNjIsMTYgKzU3LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICBBbmltYXRpb25UcmlnZ2VyVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBBdXRv
QW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIEF1dG9B
bmltYXRpb25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBSZWY8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgfkF1dG9BbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG90aGVyLmlzQXV0b0FuaW1hdGlvblRyaWdnZXIoKTsKICAgICB9CkBAIC04Miwy
MiArNzUsMjAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmlt
YXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRy
aWdnZXI+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogfTsKIAotY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0
aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCisgICAgc3RhdGljIFJlZjxTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3RoIHN0YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmICghb3RoZXIuaXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1hdGlv
blRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRWYWx1ZSwgbV9lbmRWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRW
YWx1ZSwgbV9lbmRWYWx1ZSkpOwogICAgIH0KIAogICAgIExlbmd0aCBtX3N0YXJ0VmFsdWU7CkBA
IC0xNTQsNSArMTQ1LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dF
UihBdXRvQW5pbWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHIKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciwgaXNTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyKTsKIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBBbmltYXRpb25Ucmln
Z2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKaW5kZXggZjVlNjYxNmE5N2NkNTNjNmJjYWUxMzVkZDM2Y2M0N2MyZmI3YzhjYy4u
ZmNhYTNjM2ZmZGI2ZGViMmFiZWViYzhkMDIwYTBkMzlkYTMyZjc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTIyLDU0
ICsyMiw1MCBAQAogICoKICAqLwogCi0jaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKLSNkZWZpbmUg
VGltaW5nRnVuY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBU
ZXh0U3RyZWFtOworCiBjbGFzcyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRp
bWluZ0Z1bmN0aW9uPiB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBSZWY8VGltaW5nRnVuY3Rpb24+
IGNsb25lKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsK
LSAgICAgICAgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rp
b24sIFNwcmluZ0Z1bmN0aW9uCi0gICAgfTsKLSAgICAKICAgICB2aXJ0dWFsIH5UaW1pbmdGdW5j
dGlvbigpIHsgfQogCisgICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgeyBMaW5lYXJGdW5jdGlv
biwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbiwgU3ByaW5nRnVuY3Rpb24gfTsK
ICAgICBUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIAorCiAgICAgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IExpbmVhckZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3ViaWNCZXppZXJGdW5jdGlvbjsg
fQogICAgIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFN0ZXBzRnVuY3Rpb247IH0KICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KLSAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3Qg
PSAwOworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBUaW1p
bmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKKyAgICBleHBsaWNpdCBUaW1pbmdG
dW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQotICAgIAorCitwcml2YXRlOgogICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSBt
X3R5cGU7CiB9OwogCiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBU
aW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGluZWFyVGlt
aW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxMaW5lYXJUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGlt
aW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdG
dW5jdGlvbik7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkxpbmVhclRpbWluZ0Z1bmN0aW9u
KCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzTGluZWFy
VGltaW5nRnVuY3Rpb24oKTsKICAgICB9CkBAIC04MCw2MSArNzYsNTQgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKICAg
ICB9CiB9OwogCiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGlj
IFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uUHJlc2V0
IHsKLSAgICAgICAgRWFzZSwKLSAgICAgICAgRWFzZUluLAotICAgICAgICBFYXNlT3V0LAotICAg
ICAgICBFYXNlSW5PdXQsCi0gICAgICAgIEN1c3RvbQotICAgIH07CisgICAgZW51bSBUaW1pbmdG
dW5jdGlvblByZXNldCB7IEVhc2UsIEVhc2VJbiwgRWFzZU91dCwgRWFzZUluT3V0LCBDdXN0b20g
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAg
IHN0YXRpYyBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGRvdWJsZSB4MSwg
ZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihDdXN0b20sIHgxLCB5MSwgeDIs
IHkyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5MikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJl
ZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQorICAgIHN0YXRpYyBSZWY8Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAocHJlc2V0KSB7CiAgICAgICAgIGNhc2UgRWFzZToKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24pOwogICAgICAgICBjYXNlIEVhc2VJbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAx
LjApKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFz
ZU91dDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VPdXQsIDAuMCwg
MC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlSW5PdXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICBjYXNlIEN1c3RvbToKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5DdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBm
aW5hbAogICAgIHsKLSAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsK
LSAgICAgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ICE9IEN1c3RvbSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldCA9PSBjdGYtPm1fdGltaW5n
RnVuY3Rpb25QcmVzZXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtX3gxID09
IGN0Zi0+bV94MSAmJiBtX3kxID09IGN0Zi0+bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBt
X3kyID09IGN0Zi0+bV95MjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghb3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyQ3ViaWMgPSBzdGF0aWNfY2FzdDxj
b25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAgICAgICBpZiAobV90
aW1pbmdGdW5jdGlvblByZXNldCAhPSBvdGhlckN1YmljLm1fdGltaW5nRnVuY3Rpb25QcmVzZXQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9u
UHJlc2V0ICE9IEN1c3RvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gbV94MSA9PSBvdGhlckN1YmljLm1feDEgJiYgbV95MSA9PSBvdGhlckN1YmljLm1feTEgJiYg
bV94MiA9PSBvdGhlckN1YmljLm1feDIgJiYgbV95MiA9PSBvdGhlckN1YmljLm1feTI7CiAgICAg
fQogCiAgICAgZG91YmxlIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQpAQCAtMTQ5LDIxICsx
MzgsMjEgQEAgcHVibGljOgogICAgICAgICBtX3gyID0geDI7CiAgICAgICAgIG1feTIgPSB5MjsK
ICAgICB9Ci0gICAgCisKICAgICBUaW1pbmdGdW5jdGlvblByZXNldCB0aW1pbmdGdW5jdGlvblBy
ZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQ7IH0KICAgICB2b2lk
IHNldFRpbWluZ0Z1bmN0aW9uUHJlc2V0KFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkgeyBt
X3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID0gcHJlc2V0OyB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGRlZmF1bHRUaW1pbmdGdW5jdGlvbigpCisKKyAg
ICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZGVmYXVsdFRpbWluZ0Z1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKiBkdGYgPSBjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBkdGY7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBmdW5jdGlvbiA9
IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQo
KSBjb25zdAorICAgIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNl
ZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKDEuMCAtIG1feDIsIDEuMCAt
IG1feTIsIDEuMCAtIG1feDEsIDEuMCAtIG1feTEpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uUHJl
c2V0IHByZXNldCA9IEVhc2UsIGRvdWJsZSB4MSA9IDAuMjUsIGRvdWJsZSB5MSA9IDAuMSwgZG91
YmxlIHgyID0gMC4yNSwgZG91YmxlIHkyID0gMS4wKQogICAgICAgICA6IFRpbWluZ0Z1bmN0aW9u
KEN1YmljQmV6aWVyRnVuY3Rpb24pCkBAIC0xNzUsOSArMTY0LDkgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KG1fdGltaW5nRnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihtX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CiAgICAgfQogCiAgICAg
ZG91YmxlIG1feDE7CkBAIC0xODksMjUgKzE3OCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoK
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUo
aW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdG
dW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0
U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihzdGVwcywgc3RlcEF0U3RhcnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rl
cHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBz
VGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+
U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlm
IChvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgY29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5j
dGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3Rl
cHMgJiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1fc3RlcEF0U3RhcnQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3RlcHNUaW1pbmdGdW5j
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlclN0
ZXBzID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXJTdGVwcy5tX3N0ZXBzICYmIG1fc3RlcEF0U3Rh
cnQgPT0gb3RoZXJTdGVwcy5tX3N0ZXBBdFN0YXJ0OwogICAgIH0KICAgICAKICAgICBpbnQgbnVt
YmVyT2ZTdGVwcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcHM7IH0KQEAgLTIxNSw3ICsyMDAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
QXRTdGFydDsgfQogICAgIHZvaWQgc2V0U3RlcEF0U3RhcnQoYm9vbCBzdGVwQXRTdGFydCkgeyBt
X3N0ZXBBdFN0YXJ0ID0gc3RlcEF0U3RhcnQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBTdGVw
c1RpbWluZ0Z1bmN0aW9uKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBU
aW1pbmdGdW5jdGlvbihTdGVwc0Z1bmN0aW9uKQpAQCAtMjI0LDkgKzIwOSw5IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0ZXBzVGltaW5nRnVuY3Rpb24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOwogICAgIH0KICAg
ICAKICAgICBpbnQgbV9zdGVwczsKQEAgLTI0NywxMyArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSgwLCAwLCAwLCAwKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsK
LSAgICAgICAgaWYgKG90aGVyLmlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAg
ICAgY29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mIG90aGVyU3RyaW5nID0gKnN0YXRpY19jYXN0
PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVy
biBtX21hc3MgPT0gb3RoZXJTdHJpbmcubV9tYXNzICYmIG1fc3RpZmZuZXNzID09IG90aGVyU3Ry
aW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlclN0cmluZy5tX2RhbXBpbmcgJiYg
bV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTdHJpbmcubV9pbml0aWFsVmVsb2NpdHk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3ByaW5n
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0
byYgb3RoZXJTcHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlclNwcmluZy5tX21hc3MgJiYg
bV9zdGlmZm5lc3MgPT0gb3RoZXJTcHJpbmcubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90
aGVyU3ByaW5nLm1fZGFtcGluZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlclNwcmluZy5t
X2luaXRpYWxWZWxvY2l0eTsKICAgICB9CiAKICAgICBkb3VibGUgbWFzcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWFzczsgfQpAQCAtMjc5LDkgKzI2Myw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0
aWZmbmVzcywgbV9kYW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3RpZmZuZXNzLCBt
X2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CiAgICAgfQogCiAgICAgZG91YmxlIG1fbWFz
czsKQEAgLTI5MCw5ICsyNzQsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2luaXRpYWxWZWxv
Y2l0eTsKIH07CiAKLWNsYXNzIFRleHRTdHJlYW07CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUaW1pbmdGdW5jdGlvbiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA0ZjliNWY1NWNjODQzZjRhYjg3
ZGUzNTU0MzlmODZkOTc4NmQxNmVhLi5kMThkYmRkOTQ0MjQ2NWQzM2U3ZTlkMGU3ZGNmODRlNmUw
M2MwNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQogCiAgICAgQXVkaW9DaGFubmVsKiBjaGFu
bmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7
IH0KLSAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5u
ZWxdLmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNo
YW5uZWwpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBB
dWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWVjNTNkOGEw
MTI3ZmMxOWJhNThiYTZkNGRmMmM5ZDE5YTk3NTZiZi4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFk
ZTExODJhNGUxZTUwZTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQwLDEyICsxNDAsMTEgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKKyAgICBhdXRvIGRhdGEgPSBh
ZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jv
b3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmYzU4ZmI2NWRm
ZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAzLi44MmI2YjYxNTY4NzdlMDQzY2M2MWQ4MzZi
YWE5MmE0YjJjNDcxMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5jb2RlckNGX2gKLSNkZWZpbmUgS2V5ZWRFbmNv
ZGVyQ0ZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDI1ICszNiwyNSBAQCBwdWJsaWM6CiAgICAgS2V5
ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAotICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2
YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0
cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9i
amVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5h
bDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlF
bGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZv
aWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFy
cmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7Cisg
ICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG1fcm9vdERpY3Rpb25hcnk7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5jb2RlckNG
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCmluZGV4IGIzOGQyY2FmZTdiNjkwM2Rk
NDRmYTZjMzZjZTM0MDFlOGU3M2I1NmIuLjc3ODIwMTc0MTI3YWU1ZGEzNWE2MWJhNGE4NmFkMGZi
ZTM0ZjMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtMjMsMTMgKzIz
LDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmxfaAotI2RlZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRl
IDxzcGVha19saWIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNSAr
NzQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCmluZGV4IGQ0OTIxMzY0MzA5OWMyYmE3NDVlYmZkNjk3ZWIxNTFhM2Zl
NTNmZjEuLjgxY2JlZDUzZDExNWU0NGYxMzRjMTIyNmQ2MzQ2MmM1OThlNDQ5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJp
YW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVp
bGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IDJkN2IxYzM0ZjcxOWIyNDg2NzcyNjIyNWUxM2I5Nzc0MmQyY2IzYmMuLmY5MWI0
ZGRiMzMxNWY2NmVjNGUwYzE5ZmQyNzA2NzNiNmM0NzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVu
Y29kZXJHbGliX2gKLSNkZWZpbmUgS2V5ZWRFbmNvZGVyR2xpYl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzksMjUgKzM4
LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVuY29kZXJHbGliKCk7CiAgICAgfktleWVkRW5jb2Rl
ckdsaWIoKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7
CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25z
dCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQg
ZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAg
ICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1aWxkZXI7CiAgICAgVmVjdG9yPEdWYXJpYW50
QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVyU3RhY2s7CkBAIC02Niw1ICs2NSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVu
Y29kZXJHbGliX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKaW5kZXggZDA1NmViZmUyMmFhZTgxNTk0ZTg4YmE0YjJlNzgyMTUzOWRiNzk3YS4uYWY0OGIw
YjkyNDJjNTk3MDBlZWViMzYyY2FiNmUwM2U1YWY2ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTI3LDE1ICsyNywxMyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRDYWNoZV9oCi0jZGVmaW5lIEZvbnRDYWNoZV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMjkwLDUgKzI4OCwzIEBAIGlubGluZSB2b2lkIEZvbnRD
YWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKQogI2VuZGlmCiAKIH0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggOTMwM2E5MDViMDk3MTNhMmQ1Y2NiMjM5YjJkOTc3NWRlODExYWE1Ni4u
YWQzODJmNDE1YTNiNTEwZWZlNDEzYmVmN2E5ZGFjZjFkZjljMzg4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIw
MTMtMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1l
bCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBD
ZW50ZXIgVVNBLCBJbmMuCkBAIC0yMiwxMCArMjIsMTUgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBG
b250UGxhdGZvcm1EYXRhX2gKLSNkZWZpbmUgRm9udFBsYXRmb3JtRGF0YV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CisKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJDT01QdHIuaCIKQEAgLTQ0LDI1
ICs0OSwxOCBAQAogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TRm9udDsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NU
Rm9udCogQ1RGb250UmVmOwotCiAjZW5kaWYKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmpl
Y3QuaD4KIHR5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOwpAQCAtNzAsNyArNjgsNiBAQCBp
bnRlcmZhY2UgSURXcml0ZUZvbnQ7CiBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogI2VuZGlm
CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CkBAIC04
MiwxMCArNzksNyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSgpOwotI2lmICFVU0UoRlJFRVRZUEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OwotI2VuZGlmCi0gICAgRm9udFBsYXRm
b3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKKwogICAgIEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkp
OwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gQXV0b1RleHRS
ZW5kZXJpbmcpOwogCkBAIC0xMDMsMjcgKzk3LDM2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7
CisjZW5kaWYKIAotI2lmIFVTRShDRykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykKICAg
ICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIENHRm9udFJlZiwgZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJ
KTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoRElSRUNUMkQpCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBJRFdy
aXRlRm9udCosIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgRm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVT
RShDQUlSTykKKyAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2Zv
bnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYK
IAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9m
YWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljT2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVm
YXVsdDsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShGb250UGxhdGZvcm1EYXRh
JiYpID0gZGVmYXVsdDsKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBt
X2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91
c2VHREk7IH0KLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBDVEZvbnRSZWYgZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIENURm9udFJlZiByZWdpc3RlcmVkRm9udCgpIGNvbnN0OyAv
LyBSZXR1cm5zIG51bGxwdHIgaWZmIHRoZSBmb250IGlzIG5vdCByZWdpc3RlcmVkLCBzdWNoIGFz
IHdlYiBmb250cyAob3RoZXJ3aXNlIHJldHVybnMgZm9udCgpKS4KIApAQCAtMTg5LDEyICsxOTIs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBVU0UoRlJFRVRZUEUpCi0gICAgRm9u
dFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSNlbHNl
Ci0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwbGF0Zm9ybUlz
RXF1YWwob3RoZXIpCkBAIC0yMzIsMTIgKzIyOSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0Owor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ0dGbG9hdCBjdEZvbnRTaXplKCkgY29uc3Q7CiAj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZP
TlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgorCiAjaWYgVVNF
KEZSRUVUWVBFKQogICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7
CiAjZW5kaWYKQEAgLTI1MywxMyArMjUzLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSAmJiAo
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMCkpCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9j
Z0ZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SURXcml0ZUZv
bnQ+IG1fZHdGb250OwogICAgIENPTVB0cjxJRFdyaXRlRm9udEZhY2U+IG1fZHdGb250RmFjZTsK
ICNlbmRpZgorCiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90
PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8
RmNQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgbXV0YWJsZSBGY1VuaXF1ZVB0cjxGY0ZvbnRTZXQ+
IG1fZmFsbGJhY2tzOwpAQCAtMjg1LDE1ICsyODgsMTggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2lzRW1vamkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFVT
RShGUkVFVFlQRSkKICAgICBib29sIG1fZml4ZWRXaWR0aCB7IGZhbHNlIH07CiAjZW5kaWYKIH07
CiAKICNpZiBVU0UoQVBQS0lUKQorCiAvLyBOU0ZvbnRzIGFuZCBDVEZvbnRSZWZzIGFyZSB0b2xs
LWZyZWUtYnJpZGdlZC4KIGlubGluZSBDVEZvbnRSZWYgdG9DVEZvbnQoTlNGb250ICpmb250KQog
ewpAQCAtMzA0LDkgKzMxMCwxMSBAQCBpbmxpbmUgTlNGb250ICp0b05TRm9udChDVEZvbnRSZWYg
Zm9udCkKIHsKICAgICByZXR1cm4gKE5TRm9udCAqKWZvbnQ7CiB9CisKICNlbmRpZgogCiAjaWYg
VVNFKENHKQorCiBjbGFzcyBTY29wZWRUZXh0TWF0cml4IHsKIHB1YmxpYzoKICAgICBTY29wZWRU
ZXh0TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtIG5ld01hdHJpeCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCkBAIC0zMzAsOCArMzM4LDcgQEAgcHJpdmF0ZToKICAgICBDR0NvbnRleHRSZWYgbV9jb250
ZXh0OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdGV4dE1hdHJpeDsKIH07CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApp
bmRleCBkOTE5ZmZkYmU1NGZjMjU5YTYxZjE1MWFkZTc3MDViNzNkODM2MDBjLi5mZTM3ZDI1MzRi
ZmMxMDcxMmI2NDAxMjFlMmY1YmQyMzI0YmFlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgR3JhcGhpY3NMYXllcl9oCi0jZGVmaW5lIEdy
YXBoaWNzTGF5ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNp
bmNsdWRlICJDb2xvci5oIgpAQCAtODAsMTEgKzc5LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIEFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBtX2tl
eVRpbWUob3RoZXIubV9rZXlUaW1lKQotICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIu
bV90aW1pbmdGdW5jdGlvbiA/IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkgOiBudWxs
cHRyKQorICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/
IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4geyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgp
IH0gOiBudWxscHRyKQogICAgIHsKICAgICB9CiAKKyAgICBBbmltYXRpb25WYWx1ZShBbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQW5pbWF0aW9uVmFsdWUmKSA9IGRlbGV0ZTsKKwogICAgIGRvdWJsZSBtX2tleVRpbWU7CiAg
ICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOwogfTsKQEAgLTEwNCwx
MiArMTA3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCi0gICAgRmxvYXRBbmltYXRpb25WYWx1
ZShjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJiBvdGhlcikKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShvdGhlcikKLSAgICAgICAgLCBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCi0gICAgewotICAg
IH0KLQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2
YXRlOgpAQCAtMTM0LDEwICsxMzEsMTMgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0t
PmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgp
KTsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTE2MiwxMCAr
MTYyLDEzIEBAIHB1YmxpYzoKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5pbWF0aW9uVmFsdWUob3RoZXIpCiAg
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fdmFsdWUub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkuYXBw
ZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92
YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlLm9w
ZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG90aGVy
Lm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCku
dW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiAgICAgfQogCisgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoRmlsdGVyQW5pbWF0aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CiAKIHByaXZhdGU6CkBAIC0xODUsMTMgKzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgICAgICA6IG1fcHJv
cGVydHkob3RoZXIucHJvcGVydHkoKSkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIubV92YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiBvdGhlci5tX3ZhbHVlcykKKyAgICAgICAgICAgIG1fdmFsdWVzLnVuY2hl
Y2tlZEFwcGVuZCh2YWx1ZS0+Y2xvbmUoKSk7CiAgICAgfQogCi0gICAgfktleWZyYW1lVmFsdWVM
aXN0KCkKLSAgICB7Ci0gICAgfQorICAgIEtleWZyYW1lVmFsdWVMaXN0KEtleWZyYW1lVmFsdWVM
aXN0JiYpID0gZGVmYXVsdDsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKQEAgLTIwMCw2ICsyMDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICBLZXlmcmFtZVZhbHVl
TGlzdCYgb3BlcmF0b3I9KEtleWZyYW1lVmFsdWVMaXN0JiYpID0gZGVmYXVsdDsKKwogICAgIHZv
aWQgc3dhcChLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3
YXAobV9wcm9wZXJ0eSwgb3RoZXIubV9wcm9wZXJ0eSk7CkBAIC0yMTAsMTAgKzIxNCwxMCBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUo
KTsgfQogICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1
cm4gKm1fdmFsdWVzLmF0KGkpOyB9Ci0gICAgCisKICAgICAvLyBJbnNlcnQsIHNvcnRlZCBieSBr
ZXlUaW1lLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBBbmltYXRpb25WYWx1ZT4pOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBBbmltYXRpb25WYWx1ZT4+IG1fdmFsdWVzOwogICAgIEFuaW1h
dGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OwpAQCAtMjI1LDcgKzIyOSw2IEBAIHByb3RlY3RlZDoK
IGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
TGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIGVudW0gY2xh
c3MgVHlwZSB7CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgUGFnZVRpbGVkQmFja2luZywKQEAg
LTI0MSw3ICsyNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShU
eXBlKSB7IH0KIAotICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOworICAgIHVz
aW5nIFBsYXRmb3JtTGF5ZXJJRCA9IHVpbnQ2NF90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
cklEIHByaW1hcnlMYXllcklEKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTY4Myw1
ICs2ODYsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAvLyBPdXRzaWRlIHRoZSBX
ZWJDb3JlIG5hbWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gdGhlIGRlYnVnZ2Vy
Lgogdm9pZCBzaG93R3JhcGhpY3NMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogbGF5ZXIpOwogI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCA4MjQ1ZDRlNmRhNzM1Mzg4MmVhOWNlMjdhNTM3MjVlMWNmZTgxNmRlLi44NTQ2YzcxMmY2NGEx
NzA2ZDYyMGIzNTIzNDY0YmVmNTViZDhjYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0yMywyMSArMjMsMTggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNl
c3Npb25faAotI2RlZmluZSBDRE1TZXNzaW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Q0RNU2Vz
c2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRp
b25VUkwpID0gMDsKIAogICAgIGVudW0gewpAQCAtNjQsNyArNjEsNiBAQCBlbnVtIENETVNlc3Np
b25UeXBlIHsKIAogY2xhc3MgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbigp
IHsgfQogICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KIAogICAgIHZpcnR1YWwgQ0RNU2Vz
c2lvblR5cGUgdHlwZSgpIHsgcmV0dXJuIENETVNlc3Npb25UeXBlVW5rbm93bjsgfQpAQCAtNzks
NSArNzUsMyBAQCBwdWJsaWM6CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKLQotI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZGYwM2NjYjYxMjkw
MTllMGM4ODQyNmQ3ODBhYWVkZTUyNmUyMGIyOS4uYmJjMDVkNTA3ZjQyNTY2NzlmYjdkN2JjZjcy
MGQ4NTI2YzFhYzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIApAQCAtNjYs
NSArNjYsMyBAQCBwcm90ZWN0ZWQ6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYmE0OTYzNTk3ZGFkZjBlMmZj
YzUyOGZjODFjYzMyMTVlOGNkMmJlZS4uZmE0NDQ0YjFlY2ZhYTJjMGU2MjkwNzgwODVmZmE2ZmMy
YjI5NmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC05MjQsOCArOTI0LDggQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OmFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGkKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIC8v
IElmIHRoZXJlIGlzIGEgdHJpZ2dlciB0aGF0IGRlcGVuZHMgb24gdGhlIHNjcm9sbCBwb3NpdGlv
biwgd2UgY2Fubm90IGFjY2VsZXJhdGUgdGhlIGFuaW1hdGlvbi4KLSAgICBpZiAoYW5pbS0+dHJp
Z2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewotICAgICAgICBTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKmFuaW0tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlv
blRyaWdnZXI+KGFuaW0tPnRyaWdnZXIoKSkpIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dl
ciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkpOwog
ICAgICAgICBpZiAoc2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTI4MDUsNyArMjgwNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXll
ckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1CiAgICAgaW50IGFuaW1hdGlvbkluZGV4ID0gMDsKICAgICAKICAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb247Ci0gICAgCisKICAgICBpZiAoaXNLZXlmcmFt
ZSkgewogICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1h
dGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUp
OwogICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHUKICAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNB
bmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5
KCkpLCBhZGRpdGl2ZSk7CiAgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRz
KHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKCF2YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDI0LDEz
ICszMDI0LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5z
ZXRGaWxsTW9kZShmaWxsTW9kZSk7CiB9CiAKLWNvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGlj
c0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9u
VmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQorY29uc3QgVGltaW5nRnVu
Y3Rpb24mIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShj
b25zdCBBbmltYXRpb25WYWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCiB7
CiAgICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5p
bVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAqYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CiAgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAg
ICByZXR1cm4gYW5pbS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotICAgIAorICAgICAgICByZXR1
cm4gKmFuaW0udGltaW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTMwNTQsOSArMzA1Myw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNl
ZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4g
dGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZl
cnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGlt
aW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0
aW9uKTsKLSAgICBpZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5z
ZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxp
c3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0zMDg2LDEzICszMDgzLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRp
b25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShm
b3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24p
KTsKKyAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAt
IDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAga2V5ZnJhbWVBbmltLT5zZXRL
ZXlUaW1lcyhrZXlUaW1lcyk7CiAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModmFsdWVzKTsK
ICAgICBrZXlmcmFtZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFm
b3J3YXJkcyk7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSw4ICszMTAy
LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAh
Zm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
ICAgIGF1dG8mIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBhdXRvJiBlbmRWYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0
KHRvSW5kZXgpKTsKIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKQEAgLTMxNDksMTAg
KzMxNDYsOSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5k
cG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0
aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8g
bG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4g
dGhlIHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVz
IHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCks
ICphbmltYXRpb24pOwotICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVu
Y3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24p
LCAhZm9yd2FyZHMpOwogCi0gICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5
cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0
aW9uKHRyYW5zZm9ybU9wVHlwZSk7CisgICAgYXV0byB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVG
dW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKICAgICBp
ZiAodmFsdWVGdW5jdGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24p
CiAgICAgICAgIGJhc2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKIApA
QCAtMzIwNCw3ICszMjAwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFu
aW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRp
bWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3
YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsK
KyAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEp
LCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGlt
ZXMoa2V5VGltZXMpOwpAQCAtMzI2MCw3ICszMjU2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWUKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRp
b25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEg
dGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRo
ZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGJhc2lj
QW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2
YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+
c2V0VGltaW5nRnVuY3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVM
aXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzI4OCw3ICszMjg0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFu
aW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShm
b3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24p
KTsKKyAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAt
IDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5
VGltZXMoa2V5VGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBkMjQ5N2MzMWRhYWIzYjRmYWQ5NTk1NGQ3
NTNlMDZhMzJhNWY1ZDY2Li4yMjNiMTVmZjBmZWM2MTMwNTJmOGY0MzQyOTZlNWRkZjBiMTBjMGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24q
LCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9u
KFBsYXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsK
ICAgICAKLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0
IEFuaW1hdGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRB
bmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRp
b24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFt
ZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNB
QW5pbWF0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKaW5kZXggMGJl
ZGQwYTU3NGMyNDk5ZTVlM2FjZTkyN2I1NDExZjk0MjAxYTg1MC4uOWNjMWRmNmFkM2JlNTcyOWQz
YjJhODE3OTNlNWE1NzA0YWUxZWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9u
LmNwcApAQCAtMTI4LDE5ICsxMjgsMTYgQEAgc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVTdGVw
c0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVwQXRTdGFydCwgZG91YmxlIHQKICAgICBy
ZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0ZXBzOwogfQogCi1zdGF0aWMgaW5saW5l
IGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1cmF0aW9uKQorc3RhdGljIGlubGluZSBm
bG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5j
dGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBpZiAoIXRpbWlu
Z0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7Ci0KLSAgICBpZiAodGltaW5nRnVu
Y3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvbnN0IEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybiBzb2x2
ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLCBjdGYtPnkxKCksIGN0Zi0+eDIoKSwgY3Rm
LT55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOworICAgIGlmICh0aW1pbmdGdW5jdGlvbi5pc0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBhdXRvJiBjdGYgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOwor
ICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGN0Zi54MSgpLCBjdGYueTEo
KSwgY3RmLngyKCksIGN0Zi55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOwogICAgIH0KIAotICAg
IGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAg
Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNU
aW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIHNvbHZlU3Rl
cHNGdW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpLCBkb3Vi
bGUocHJvZ3Jlc3MpKTsKKyAgICBpZiAodGltaW5nRnVuY3Rpb24uaXNTdGVwc1RpbWluZ0Z1bmN0
aW9uKCkpIHsKKyAgICAgICAgYXV0byYgc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1p
bmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNG
dW5jdGlvbihzdGYubnVtYmVyT2ZTdGVwcygpLCBzdGYuc3RlcEF0U3RhcnQoKSwgZG91YmxlKHBy
b2dyZXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb2dyZXNzOwpAQCAtMTk0LDEzICsxOTEs
MTIgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9u
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGYKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1z
dGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
KQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltYXRpb25WYWx1ZSwgY29uc3QgQW5pbWF0
aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0t
PnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigp
LmdldCgpOwotCisgICAgaWYgKGFuaW1hdGlvblZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAg
ICAgIHJldHVybiAqYW5pbWF0aW9uVmFsdWUudGltaW5nRnVuY3Rpb24oKTsKKyAgICBpZiAoYW5p
bWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiAqYW5pbWF0aW9uLnRpbWlu
Z0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1
bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0yNTcsNyArMjUzLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgbV9hbmltYXRpb24uZ2V0KCkpOworICAgICAgICBh
dXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9r
ZXlmcmFtZXMuYXQoMCksICptX2FuaW1hdGlvbik7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9
IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9h
bmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgbV9r
ZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEpLCBub3JtYWxpemVkVmFsdWUpOwogICAg
ICAgICByZXR1cm47CkBAIC0yNzAsNyArMjY2LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0
aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLmtleVRpbWUoKSkg
LyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwotICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAgICAgYXV0byYgdGltaW5nRnVuY3Rpb24g
PSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sICptX2FuaW1hdGlvbik7CiAg
ICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rp
b24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBh
cHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5vcm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRleCA1ODRmZGFiZDkyNDdmYTU4ZDliMGYw
ZjA0NjhkNDI2MGE2NmQyMDVhLi5lZmJlODBmYWUwM2M0Y2EyODg0ZGMyZmI5MmExNzdmZmFhYzAy
Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAtNjAsNyArNjAsNyBAQCBAaW50ZXJmYWNl
IFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09iamVjdDxBVlNwZWVjaFN5bnRoZXNpemVy
RGVsZWdhdGU+CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgKilpbml0V2l0aFNw
ZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKilzeW50
aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtV
dHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4mJil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAtODcsNyArODcsNyBAQCAtIChmbG9hdCltYXBT
cGVlY2hSYXRlVG9QbGF0Zm9ybVJhdGU6KGZsb2F0KXJhdGUKICAgICByZXR1cm4gcmF0ZTsKIH0K
IAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0ZXJhbmNlCistICh2b2lkKXNwZWFrVXR0ZXJhbmNl
OihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0
ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZl
IGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFt
X3V0dGVyYW5jZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgLSAodm9pZClzcGVha1V0dGVyYW5jZToo
UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXQK
ICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9sdW1lOnV0dGVyYW5jZS0+dm9sdW1lKCldOwogICAgIFth
dlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0ZXJhbmNlLT5waXRjaCgpXTsKICAgICBb
YXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07Ci0gICAgbV91dHRlcmFuY2UgPSB1dHRlcmFu
Y2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7CiAKICAgICBbbV9zeW50
aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5jZV07CiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXgg
NDMxNWNjYzU3YTVkMTVmY2RiNTY1OWM3MWYxYmZkOWZkZTI4MjEzYy4uZWQzMGFiMDMyNzAxY2Rl
M2QyYTZkYzY5MTc4MmY3MzJlMTVlYmFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29s
IGZvY3VzZWQpCiAgICAgaWYgKCFmb2N1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFt
ZSogZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7CisgICAgRnJhbWUqIGZyYW1l
ID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KCp0aGlzKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2
aWNlTW90aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MjJhZDQzOTdhMDRjMDU1NjFjN2MxZDYwNjdhZGVjNTE1OWYyMzU0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlv
bkNsaWVudE1vY2suaCIKLQotI2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1EZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpEZXZpY2VNb3Rp
b25DbGllbnRNb2NrKCkKLSAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwgbV90aW1lcigqdGhp
cywgJkRldmljZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpCi0gICAgLCBtX2lzVXBkYXRp
bmcoZmFsc2UpCi17Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c2V0Q29udHJv
bGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAgIEFTU0VSVCgh
bV9jb250cm9sbGVyKTsKLSAgICBtX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotICAgIEFTU0VS
VChtX2NvbnRyb2xsZXIpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnN0YXJ0
VXBkYXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IHRydWU7Ci19Ci0KLXZvaWQgRGV2aWNl
TW90aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKLXsKLSAgICBtX2lzVXBkYXRpbmcgPSBm
YWxzZTsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRN
b2NrOjpzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBtb3Rpb24pCi17Ci0g
ICAgbV9tb3Rpb24gPSBtb3Rpb247Ci0gICAgaWYgKG1faXNVcGRhdGluZyAmJiAhbV90aW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBE
ZXZpY2VNb3Rpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKCkKLXsKLSAgICBtX3RpbWVyLnN0b3Ao
KTsKLSAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU1vdGlvbihtX21vdGlvbi5nZXQo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdjNjI2ODI4ZWE0ZjM5NDFkZTViY2UwMTUzNTg4ZDFiMDRjYWU5OTgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEZXZpY2VNb3Rpb25DbGllbnRN
b2NrX2gKLSNkZWZpbmUgRGV2aWNlTW90aW9uQ2xpZW50TW9ja19oCi0KLSNpbmNsdWRlICJEZXZp
Y2VNb3Rpb25DbGllbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERldmljZU1vdGlvbkNv
bnRyb2xsZXI7Ci0KLS8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VNb3Rpb25DbGll
bnQgdXNlZCB0byB0ZXN0IHRoZSBmZWF0dXJlIGluCi0vLyBEdW1wUmVuZGVyVHJlZS4gRW1iZWRk
ZXJzIHNob3VsZCBzaG91bGQgY29uZmlndXJlIHRoZSBQYWdlIG9iamVjdCB0byB1c2UgdGhpcwot
Ly8gY2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KLWNsYXNzIERldmljZU1vdGlv
bkNsaWVudE1vY2sgOiBwdWJsaWMgRGV2aWNlTW90aW9uQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBE
ZXZpY2VNb3Rpb25DbGllbnRNb2NrKCk7Ci0KLSAgICAvLyBEZXZpY2VNb3Rpb25DbGllbnQKLSAg
ICB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciopIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0aW5n
KCkgb3ZlcnJpZGU7Ci0gICAgRGV2aWNlTW90aW9uRGF0YSogbGFzdE1vdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fbW90aW9uLmdldCgpOyB9Ci0gICAgLy8gbW9jayBpcyBvd25lZCBi
eSB0aGUgdGVzdGluZyBmcmFtZXdvcmssIHdoaWNoIHNob3VsZCBoYW5kbGUgZGVsZXRpb24KLSAg
ICB2b2lkIGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KLQot
ICAgIHZvaWQgc2V0TW90aW9uKFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4pOwotCi1wcml2
YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZCgpOwotCi0gICAgUmVmUHRyPERldmljZU1vdGlvbkRh
dGE+IG1fbW90aW9uOwotICAgIERldmljZU1vdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsK
LSAgICBUaW1lciBtX3RpbWVyOwotICAgIGJvb2wgbV9pc1VwZGF0aW5nOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRGV2aWNlTW90aW9uQ2xpZW50TW9ja19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCmluZGV4IDM4ODExZmMxMDgx
ODhjZmUyNmUxODBmMDBmOWY1MGZkNjE1ZGI3ZDMuLjZkOTFmNWE5MGI0ZTY0NzdkMjIyMzgwMDNk
MzdmMmU3NDJiODNjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
dXJzb3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4u
Y3BwCkBAIC00MCwxMCArNDAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNv
bnN0IEludFBvaW50JiBob3RTcG90KQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNo
YXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBpbXBsOwotCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3Bv
dCA9IGRldGVybWluZUhvdFNwb3QoaW1nLCBob3RTcG90KTsKICAgICBzdGF0aWMgYm9vbCBkb0Fs
cGhhID0gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzWFA7CiAgICAgQml0bWFwSW5mbyBjdXJz
b3JJbWFnZSA9IEJpdG1hcEluZm86OmNyZWF0ZShJbnRTaXplKGltZy0+d2lkdGgoKSwgaW1nLT5o
ZWlnaHQoKSkpOwpAQCAtNzEsNyArNjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJz
b3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaAogICAg
ICAgICBpaS5oYm1NYXNrID0gaE1hc2suZ2V0KCk7CiAgICAgICAgIGlpLmhibUNvbG9yID0gaEN1
cnNvci5nZXQoKTsKIAotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29yOjpjcmVhdGUoOjpDcmVh
dGVJY29uSW5kaXJlY3QoJmlpKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRDdXJzb3I6OmNyZWF0
ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBQ
bGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgYmxlbmRlZCBjdXJzb3JzLCBzbyB3ZSBuZWVk
CiAgICAgICAgIC8vIHRvIGNyZWF0ZSB0aGUgbWFzayBtYW51YWxseQpAQCAtMTA4LDE4ICsxMDYs
MTYgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3Io
SW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGgKICAgICAgICAgaWNvbi55SG90c3BvdCA9IGVm
ZmVjdGl2ZUhvdFNwb3QueSgpOwogICAgICAgICBpY29uLmhibU1hc2sgPSBhbmRNYXNrLmdldCgp
OwogICAgICAgICBpY29uLmhibUNvbG9yID0geG9yTWFzay5nZXQoKTsKLSAgICAgICAgaW1wbCA9
IFNoYXJlZEN1cnNvcjo6Y3JlYXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOworICAgICAg
ICByZXR1cm4gU2hhcmVkQ3Vyc29yOjpjcmVhdGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7
CiAgICAgfQotCi0gICAgcmV0dXJuIGltcGwucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGxvYWRTaGFyZWRDdXJzb3IoSElOU1RBTkNFIGhJbnN0YW5jZSwg
TFBDV1NUUiBscEN1cnNvck5hbWUpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZFNoYXJl
ZEN1cnNvcihISU5TVEFOQ0UgaEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFtZSkKIHsKICAg
ICByZXR1cm4gU2hhcmVkQ3Vyc29yOjpjcmVhdGUoOjpMb2FkQ3Vyc29yVyhoSW5zdGFuY2UsIGxw
Q3Vyc29yTmFtZSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+IGxvYWRD
dXJzb3JCeU5hbWUoY2hhciogbmFtZSwgaW50IHgsIGludCB5KQorc3RhdGljIFJlZjxTaGFyZWRD
dXJzb3I+IGxvYWRDdXJzb3JCeU5hbWUoY2hhciogbmFtZSwgaW50IHgsIGludCB5KQogewogICAg
IEludFBvaW50IGhvdFNwb3QoeCwgeSk7CiAgICAgUmVmUHRyPEltYWdlPiBjdXJzb3JJbWFnZShJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UobmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMDAwODdkMjNmNjI2ODY1
Zjk3NmE3NjI4NjFmNjc0MzlhMGNjYmJkMy4uZjU5ZjE1ZjZiNGUwNzFmMDM5OTk3MDMzM2UxZGJk
OTFmOGMxYzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgTGF5b3V0UmVjdCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlv
dXQKIAogSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXQoKSBjb25zdAog
ewotICAgIHJldHVybiBjb25zdF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5sYXN0KCku
Z2V0KCkpLmFzSW1hZ2VCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9lZmZlY3RzLmxhc3QoKS0+YXNJ
bWFnZUJ1ZmZlcigpOwogfQogCiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpzZXRNYXhFZmZl
Y3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRS
ZWN0JiBlZmZlY3RSZWN0KQogCiBJbnRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRS
ZWN0KCkgY29uc3QKIHsKLSAgICBhdXRvJiBsYXN0RWZmZWN0ID0gY29uc3RfY2FzdDxGaWx0ZXJF
ZmZlY3QmPihtX2VmZmVjdHMubGFzdCgpLmdldCgpKTsKKyAgICBhdXRvJiBsYXN0RWZmZWN0ID0g
bV9lZmZlY3RzLmxhc3QoKS5nZXQoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QuaGFzUmVzdWx0KCkp
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIGxhc3RFZmZlY3QucmVxdWVzdGVkUmVn
aW9uT2ZJbnB1dEltYWdlRGF0YShJbnRSZWN0IHsgbV9maWx0ZXJSZWdpb24gfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAwNTFkNDRiZjU2Njk2N2NhYWRh
Zjk3NDIwMjk4MmNiOTE4YmZlODUxLi5hY2VlZDdkNTkwZGUyNWNjNDM5OTg3ODQ4M2I4OTg3N2Fm
Mjk1NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMx
NDMsMTcgKzMxNDMsMTggQEAgc3RhdGljIGlubGluZSBSZW5kZXJFbGVtZW50KiByZW5kZXJlckZv
clNjcm9sbGJhcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXIKIFJlZjxTY3JvbGxiYXI+
IFJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiB7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwotICAgIFJlbmRlckVsZW1l
bnQqIGFjdHVhbFJlbmRlcmVyID0gcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0g
ICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IGFjdHVhbFJlbmRlcmVyLT5pc0JveCgp
ICYmIGFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7Cisg
ICAgQVNTRVJUKHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpKTsKKyAgICBhdXRvJiBh
Y3R1YWxSZW5kZXJlciA9ICpyZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKTsKKyAgICBi
b29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gaXM8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJl
cikgJiYgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuc3R5bGUoKS5oYXNQc2V1
ZG9TdHlsZShTQ1JPTExCQVIpOwogICAgIGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKLSAg
ICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRo
aXMsIG9yaWVudGF0aW9uLCBhY3R1YWxSZW5kZXJlci0+ZWxlbWVudCgpKTsKKyAgICAgICAgd2lk
Z2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVu
dGF0aW9uLCBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5lbGVtZW50KCkpOwog
ICAgIGVsc2UgewogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9s
bGJhcigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgICAgICBkaWRB
ZGRTY3JvbGxiYXIod2lkZ2V0LmdldCgpLCBvcmllbnRhdGlvbik7CiAgICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAg
IH0KLSAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCh3aWRnZXQuZ2V0
KCkpOworICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKCp3aWRnZXQp
OwogICAgIHJldHVybiB3aWRnZXQucmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDIyZWU5ODExMDc3ZmZkODA4YmZi
YTEzOTQwOWI2Yzk2MGY2MzRmYWYuLmNkZjgwNjBiY2I1ZWQ4YThmNGY5MzdhN2U0OTdlMTQ2N2Q2
ZWJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAg
LTkwMiw3ICs5MDIsNyBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3Jv
bGxiYXIoKQogICAgICAgICBpZiAocGFnZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkK
ICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBh
Z2UoKS50ZXN0VHJpZ2dlcigpKTsKICAgICB9Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmFkZENo
aWxkKHdpZGdldC5nZXQoKSk7CisgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKCp3aWRn
ZXQpOwogICAgIHJldHVybiB3aWRnZXQucmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzNzM5NWU0MzY2NjdhMjE1YWFi
NmU3NjMwNThkNDdjYjgyNmQ3NDBkLi42MjNhNmM3OTRiOTYxMGUzMmE5YjM2Y2I1Njk4N2MyZjA2
NWM0MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAt
NTIsMjkgKzUyLDI3IEBAIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Oldp
ZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzCiAKIHZvaWQgV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMoKQogewotICAgIFdpZGdl
dFRvUGFyZW50TWFwIG1hcDsKLSAgICB3aWRnZXROZXdQYXJlbnRNYXAoKS5zd2FwKG1hcCk7Ci0g
ICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICBmb3Ig
KFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgV2lkZ2V0KiBjaGlsZCA9IGl0LT5rZXkuZ2V0KCk7Ci0gICAgICAg
IFNjcm9sbFZpZXcqIGN1cnJlbnRQYXJlbnQgPSBjaGlsZC0+cGFyZW50KCk7Ci0gICAgICAgIEZy
YW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOworICAgIGF1dG8gbWFwID0gV1RGTW92ZSh3
aWRnZXROZXdQYXJlbnRNYXAoKSk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgeworICAg
ICAgICBhdXRvJiBjaGlsZCA9ICplbnRyeS5rZXk7CisgICAgICAgIGF1dG8qIGN1cnJlbnRQYXJl
bnQgPSBjaGlsZC5wYXJlbnQoKTsKKyAgICAgICAgYXV0byogbmV3UGFyZW50ID0gZW50cnkudmFs
dWU7CiAgICAgICAgIGlmIChuZXdQYXJlbnQgIT0gY3VycmVudFBhcmVudCkgewogICAgICAgICAg
ICAgaWYgKGN1cnJlbnRQYXJlbnQpCi0gICAgICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVt
b3ZlQ2hpbGQoKmNoaWxkKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVD
aGlsZChjaGlsZCk7CiAgICAgICAgICAgICBpZiAobmV3UGFyZW50KQogICAgICAgICAgICAgICAg
IG5ld1BhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCogY2hpbGQsIEZyYW1lVmlldyog
cGFyZW50KQorc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZXQmIGNoaWxk
LCBGcmFtZVZpZXcqIHBhcmVudCkKIHsKICAgICBpZiAoIVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6OmlzU3VzcGVuZGVkKCkpIHsKICAgICAgICAgaWYgKHBhcmVudCkKICAg
ICAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjaGlsZC0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICAgICAgY2hpbGQucmVtb3Zl
RnJvbVBhcmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKGNoaWxkLCBwYXJl
bnQpOwpAQCAtMTY3LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVm
UHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dpZGdl
dCkgewotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKG1fd2lkZ2V0LmdldCgpLCAwKTsK
KyAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50U29vbigqbV93aWRnZXQsIG51bGxwdHIpOwogICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkud2lsbFJlbW92ZVdpZGdldEZyb21SZW5kZXJUcmVlKCpt
X3dpZGdldCk7CiAgICAgICAgIHdpZGdldFJlbmRlcmVyTWFwKCkucmVtb3ZlKG1fd2lkZ2V0Lmdl
dCgpKTsKICAgICAgICAgbV93aWRnZXQgPSBudWxscHRyOwpAQCAtMTkzLDcgKzE5MSw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAg
ICAgICAgICAgICAgcmVwYWludCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IG1vdmVXaWRnZXRUb1BhcmVudFNvb24obV93aWRnZXQuZ2V0KCksICZ2aWV3KCkuZnJhbWVWaWV3
KCkpOworICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKCptX3dpZGdldCwgJnZpZXcoKS5m
cmFtZVZpZXcoKSk7CiAgICAgfQogfQogCkBAIC0zMzgsOSArMzM2LDkgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICBt
X3dpZGdldC0+c2V0SXNTZWxlY3RlZChpc1NlbGVjdGVkKCkpOwogfQogCi1SZW5kZXJXaWRnZXQq
IFJlbmRlcldpZGdldDo6ZmluZChjb25zdCBXaWRnZXQqIHdpZGdldCkKK1JlbmRlcldpZGdldCog
UmVuZGVyV2lkZ2V0OjpmaW5kKGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIHJldHVybiB3
aWRnZXRSZW5kZXJlck1hcCgpLmdldCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXRSZW5kZXJl
ck1hcCgpLmdldCgmd2lkZ2V0KTsKIH0KIAogYm9vbCBSZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCA2ZTAxMWQ3MzllNTNjNmRhOWIxMWE3ZGE4
NmQ4ZWRjZWMzZTQ0OTdiLi5jNmE5YmM1ZjkzNWMzMzk0ODA4NzJhMTFmMzYwNzk4MGViNGJhM2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC00NCwxNCArNDQs
MTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzU3VzcGVuZGVkKCkgeyBy
ZXR1cm4gc193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzY2hlZHVsZVdpZGdldFRvTW92ZShXaWRnZXQqIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFt
ZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAoKS5zZXQod2lkZ2V0LCBmcmFtZSk7IH0KKyAgICBzdGF0
aWMgdm9pZCBzY2hlZHVsZVdpZGdldFRvTW92ZShXaWRnZXQmIHdpZGdldCwgRnJhbWVWaWV3KiBm
cmFtZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAoKS5zZXQoJndpZGdldCwgZnJhbWUpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZpZXcqPiBX
aWRnZXRUb1BhcmVudE1hcDsKKyAgICB1c2luZyBXaWRnZXRUb1BhcmVudE1hcCA9IEhhc2hNYXA8
UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+OwogICAgIHN0YXRpYyBXaWRnZXRUb1BhcmVudE1h
cCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVX
aWRnZXRzKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgc193aWRnZXRI
aWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7CiB9OwogICAgIApAQCAtNjQsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBtX3dpZGdldC5nZXQo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYp
OwogCi0gICAgc3RhdGljIFJlbmRlcldpZGdldCogZmluZChjb25zdCBXaWRnZXQqKTsKKyAgICBz
dGF0aWMgUmVuZGVyV2lkZ2V0KiBmaW5kKGNvbnN0IFdpZGdldCYpOwogCiAgICAgZW51bSBjbGFz
cyBDaGlsZFdpZGdldFN0YXRlIHsgVmFsaWQsIERlc3Ryb3llZCB9OwogICAgIENoaWxkV2lkZ2V0
U3RhdGUgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCmluZGV4IGNhNDZj
MmViY2QwMmZkZTM0ZTVlNmMwYmYwYmQ4YjcyYTA0YTJlMDQuLjYxNjJhY2JiOTNmNzNlYjVmOTk1
NzNiZDE1ZGMxYzYzM2QxMTMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvTWF0aE1MU3R5bGUuY3BwCkBAIC00OSwxNCArNDksMTEgQEAgUmVmPE1hdGhNTFN0eWxl
PiBNYXRoTUxTdHlsZTo6Y3JlYXRlKCkKIAogY29uc3QgTWF0aE1MU3R5bGUqIE1hdGhNTFN0eWxl
OjpnZXRNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChyZW5k
ZXJlcikgewotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFi
bGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhp
cz8KLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCi0gICAgICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKS0+bWF0aE1M
U3R5bGUoKTsKLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlcikpCi0g
ICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKS0+
bWF0aE1MU3R5bGUoKTsKLSAgICB9Ci0KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVu
ZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8g
c2ltcGxpZnkgdGhpcz8KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKSkK
KyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4oKnJlbmRlcmVyKS5t
YXRoTUxTdHlsZSgpOworICAgIGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpKQor
ICAgICAgICByZXR1cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqcmVuZGVyZXIpLm1h
dGhNTFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTY1LDkgKzYyLDkgQEAg
dm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogICAgIGZvciAoYXV0byogY2hpbGQgPSByZW5kZXJlcjsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRJblByZU9yZGVyKHJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxv
Y2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KICAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhN
TFRhYmxlPihjaGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4o
Y2hpbGQpLT5tYXRoTUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOworICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpjaGlsZCkubWF0aE1MU3R5bGUoKS5y
ZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOwogICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJNYXRo
TUxCbG9jaz4oY2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+
KGNoaWxkKS0+bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKKyAgICAg
ICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqY2hpbGQpLm1hdGhNTFN0eWxlKCku
cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBiYjE0MmEy
NTQyMGEzYTZiY2UxNGMxNTRiZGU5MzIzMzYzNDM0ZTEyLi42MWExMmNhNDg3ZjNhNWJiYzU1NGRl
ZTBjODNhZjY0NWE2MjFkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1
YWwgflJlbmRlck1hdGhNTEJsb2NrKCk7CiAKLSAgICBNYXRoTUxTdHlsZSogbWF0aE1MU3R5bGUo
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0aE1MU3R5bGUu
Z2V0KCkpOyB9CisgICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9tYXRoTUxTdHlsZTsgfQogCiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIH0KIAogCi0gICAgTWF0aE1MU3R5bGUqIG1hdGhNTFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxTdHlsZSo+KCZtX21hdGhNTFN0eWxl
LmdldCgpKTsgfQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF0aE1MU3R5bGU7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFi
bGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IDM1
ZTQ0MTQ1ZjdmODYyYzA4YmQwNGUyMTdlZDVmZDBkZTYzMGMxMDguLmEyMGJkMTIyZDg4Y2UwZjA4
ZDc0NTc3ZWU3OTg1YTAzYTU5ODkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3
IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpGcmFjdGlvblBhcmFtZXRlcnMgUmVuZGVyTWF0aE1M
RnJhY3Rpb246OmZyYWN0aW9uUGFyYW1ldGVyCiAgICAgLy8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0
YW50cyB0byBkcmF3IHRoZSBmcmFjdGlvbiBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIGFuZCB1c2Ug
ZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9
IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGNvbnN0IGF1dG8qIG1h
dGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKTsK
LSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsKKyAgICBi
b29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOwogICAgIGlmIChtYXRo
RGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLm51bWVyYXRvckdhcE1pbiA9IG1hdGhEYXRhLT5n
ZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRhOjpG
cmFjdGlvbk51bURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9u
TnVtZXJhdG9yR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy5kZW5vbWluYXRvckdhcE1pbiA9
IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlw
ZU1hdGhEYXRhOjpGcmFjdGlvbkRlbm9tRGlzcGxheVN0eWxlR2FwTWluIDogT3BlblR5cGVNYXRo
RGF0YTo6RnJhY3Rpb25EZW5vbWluYXRvckdhcE1pbik7CkBAIC0xMTYsNyArMTE2LDcgQEAgUmVu
ZGVyTWF0aE1MRnJhY3Rpb246OlN0YWNrUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6
c3RhY2tQYXJhbWV0ZXJzKCkKICAgICAvLyBXZSB0cnkgYW5kIHJlYWQgY29uc3RhbnRzIHRvIGRy
YXcgdGhlIHN0YWNrIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5kIHVzZSBmYWxsYmFjayB2YWx1
ZXMgb3RoZXJ3aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5mb250
Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0byogbWF0aERhdGEgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpOwotICAgIGJvb2wgZGlz
cGxheSA9IG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOworICAgIGJvb2wgZGlzcGxheSA9
IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYgKG1hdGhEYXRhKSB7CiAgICAg
ICAgIHBhcmFtZXRlcnMuZ2FwTWluID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5
Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrRGlzcGxheVN0eWxlR2FwTWlu
IDogT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tHYXBNaW4pOwogICAgICAgICBwYXJhbWV0ZXJzLnRv
cFNoaWZ0VXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5
ID8gT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tUb3BEaXNwbGF5U3R5bGVTaGlmdFVwIDogT3BlblR5
cGVNYXRoRGF0YTo6U3RhY2tUb3BTaGlmdFVwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBlMjEyZTliZjcz
NGFkMjU1ZjA2ZTY5MGVjMjVlMTc4NWE5Mjk5ZTA1Li4wMmZkNDRlNTU0NGU5ZjcyMjEyNjczZTkx
NmRkNjViODE0M2JhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc2V0U3RyZXRjaFNpemUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVy
YXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKSBjb25zdDsKLSAgICBib29s
IGlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gIWhhc09wZXJh
dG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0Y2h5KSAmJiBoYXNPcGVyYXRv
ckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9wKSAmJiBtYXRoTUxTdHlsZSgp
LT5kaXNwbGF5U3R5bGUoKTsgfQotICAgIGJvb2wgc2hvdWxkTW92ZUxpbWl0cygpIGNvbnN0IHsg
cmV0dXJuIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6Ok1vdmFibGVM
aW1pdHMpICYmICFtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsgfQorICAgIGJvb2wgaXNM
YXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JG
bGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxh
ZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYmIG1hdGhNTFN0eWxlKCkuZGlz
cGxheVN0eWxlKCk7IH0KKyAgICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVy
biBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRz
KSAmJiAhbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1ZlcnRpY2FsKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRoT3BlcmF0b3IuaXRhbGljQ29ycmVjdGlvbigpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3Bw
CmluZGV4IDFhNjZlYzg3ZTZkOTM0M2JmNWNhNTU5Yjk3ODBhOTAyZjdmMTRlMjIuLjNkNzU3YTdh
ODU2YWNiNjFmMGU2ZjgyM2Q5NmE5OTg5NTI5NWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxS
b290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0g
c3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgaWYgKGF1dG8qIG1hdGhE
YXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKSkgewog
ICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0
YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsUnVsZVRoaWNrbmVzcyk7
Ci0gICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0
YW50KHByaW1hcnlGb250LCBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSA/IE9wZW5UeXBl
TWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5UeXBlTWF0aERh
dGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CisgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAg
PSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBtYXRoTUxTdHlsZSgpLmRp
c3BsYXlTdHlsZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbERpc3BsYXlTdHlsZVZlcnRp
Y2FsR2FwIDogT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFZlcnRpY2FsR2FwKTsKICAgICAgICAg
cGFyYW1ldGVycy5leHRyYUFzY2VuZGVyID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmlt
YXJ5Rm9udCwgT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEV4dHJhQXNjZW5kZXIpOwogICAgICAg
ICBpZiAobV9raW5kID09IFJvb3RXaXRoSW5kZXgpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmRl
Z3JlZUJvdHRvbVJhaXNlUGVyY2VudCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFy
eUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQp
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1ldGVy
cyBSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgICAgICAvLyBSYWRp
Y2FsRXh0cmFBc2NlbmRlcjogU3VnZ2VzdGVkIHZhbHVlIGlzIFJhZGljYWxSdWxlVGhpY2tuZXNz
LgogICAgICAgICAvLyBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OiBTdWdnZXN0ZWQg
dmFsdWUgaXMgNjAlLgogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBydWxlVGhp
Y2tuZXNzRmFsbGJhY2soKTsKLSAgICAgICAgaWYgKG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHls
ZSgpKQorICAgICAgICBpZiAobWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSkKICAgICAgICAg
ICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBz
dHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IDUgKiBwYXJhbWV0ZXJzLnJ1bGVUaGlja25l
c3MgLyA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcAppbmRleCA1NTViZDY4ZDY1MWI1ZjhhZjA1MWYwMTVkM2VhZmM3N2Uw
NjhmMzkxLi5hNWM0YzFjMGQwYzVkOWFlNjBmZTExMjA4NGY2ODRhNjcxOWFmODk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZU1h
dGhWYXJpYW50R2x5cGgoKQogCiAgICAgY29uc3QgYXV0byYgdG9rZW5FbGVtZW50ID0gZWxlbWVu
dCgpOwogICAgIGlmIChhdXRvIGNvZGVQb2ludCA9IE1hdGhNTFRva2VuRWxlbWVudDo6Y29udmVy
dFRvU2luZ2xlQ29kZVBvaW50KGVsZW1lbnQoKS50ZXh0Q29udGVudCgpKSkgewotICAgICAgICBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0eWxlKCktPm1h
dGhWYXJpYW50KCk7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IG1hdGh2YXJp
YW50ID0gbWF0aE1MU3R5bGUoKS5tYXRoVmFyaWFudCgpOwogICAgICAgICBpZiAobWF0aHZhcmlh
bnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vbmUpCiAgICAgICAgICAgICBtYXRo
dmFyaWFudCA9IHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykgPyBN
YXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6SXRhbGljIDogTWF0aE1MRWxlbWVudDo6TWF0aFZh
cmlhbnQ6Ok5vcm1hbDsKICAgICAgICAgVUNoYXIzMiB0cmFuc2Zvcm1lZENvZGVQb2ludCA9IG1h
dGhWYXJpYW50KGNvZGVQb2ludC52YWx1ZSgpLCBtYXRodmFyaWFudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAppbmRleCAzZjkzYTU3ZWY1ODI2MWRmYWEyY2VmZGY2
ZGE5YjJhOWIzOWYyMzljLi43M2JmYzI4NmU3MTc5NTAyMzZlZTJhYzU5NTQ1ZWE5ZTg2MTM3YTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKQEAgLTMwLDggKzMw
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBE
YXRhUmVmIHsKIHB1YmxpYzoKICAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpIDogbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQotICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3RoZXIpIDogbV9k
YXRhKGNvbnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSkpIHsgfQotICAgIERhdGFSZWYm
IG9wZXJhdG9yPShjb25zdCBEYXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBjb25zdF9jYXN0PFQm
PihvdGhlci5tX2RhdGEuZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBEYXRhUmVmKGNvbnN0
IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShvdGhlci5tX2RhdGEuY29weVJlZigpKSB7IH0KKyAg
ICBEYXRhUmVmKERhdGFSZWYmJikgPSBkZWZhdWx0OworICAgIERhdGFSZWYmIG9wZXJhdG9yPShj
b25zdCBEYXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBvdGhlci5tX2RhdGEuY29weVJlZigpOyBy
ZXR1cm4gKnRoaXM7IH0KKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0oRGF0YVJlZiYmKSA9IGRlZmF1
bHQ7CiAKICAgICBjb25zdCBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IApAQCAtNDUsMTQgKzQ3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIo
KTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVJlZjxUPiYgbykgY29u
c3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVJlZjxUPiYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG8ubV9kYXRhLnB0cigpIHx8IG1f
ZGF0YS5nZXQoKSA9PSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgLy8gRklYTUU6IE5vdCBjbGVh
ciB3aHkgd2Ugc2hvdWxkIGRvIHRoZSBwb2ludGVyIGNvbXBhcmlzb24gaGVyZTsgb3BlcmF0b3I9
PSBvZiB0aGUgdW5kZXJseWluZyBjbGFzcyBzaG91bGQgZG8gaXQuCisgICAgICAgIHJldHVybiBt
X2RhdGEucHRyKCkgPT0gb3RoZXIubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9PSBvdGhl
ci5tX2RhdGEuZ2V0KCk7CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBE
YXRhUmVmPFQ+JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmPFQ+
JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgIT0gby5t
X2RhdGEucHRyKCkgJiYgbV9kYXRhLmdldCgpICE9IG8ubV9kYXRhLmdldCgpOworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAppbmRleCA3NjUyMzgwNWEy
NWM5NDI2YWZlMDNjMzM5MWMwZTc4OTk4YTUxZDI2Li45NzI5OGFiNDQ3OWE3ZWEyN2RlOWZiZTM4
MmUyYjc0NzBiNmY0MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
S2V5ZnJhbWVMaXN0LmNwcApAQCAtMjksMTQgKzI5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0aW9uKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSoga2V5ZnJh
bWVTdHlsZSA9IHN0eWxlKCk7CisgICAgYXV0byoga2V5ZnJhbWVTdHlsZSA9IHN0eWxlKCk7CiAg
ICAgaWYgKCFrZXlmcmFtZVN0eWxlIHx8ICFrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlm
cmFtZVN0eWxlLT5hbmltYXRpb25zKCktPnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEFu
aW1hdGlvbiYgYW5pbWF0aW9uID0ga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpLT5hbmltYXRp
b24oaSk7CiAgICAgICAgIGlmIChuYW1lID09IGFuaW1hdGlvbi5uYW1lKCkpCi0gICAgICAgICAg
ICByZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAgICBy
ZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC00NCw3ICs0NCw2IEBAIFRpbWluZ0Z1bmN0aW9uKiBLZXlmcmFtZVZhbHVlOjp0
aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAKIEtleWZyYW1l
TGlzdDo6fktleWZyYW1lTGlzdCgpCiB7Ci0gICAgY2xlYXIoKTsKIH0KIAogdm9pZCBLZXlmcmFt
ZUxpc3Q6OmNsZWFyKCkKQEAgLTU4LDE1ICs1NywxMiBAQCBib29sIEtleWZyYW1lTGlzdDo6b3Bl
cmF0b3I9PShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0CiAgICAgaWYgKG1fa2V5ZnJhbWVz
LnNpemUoKSAhPSBvLm1fa2V5ZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDIgPSBvLm1fa2V5
ZnJhbWVzLmJlZ2luKCk7Ci0gICAgZm9yIChWZWN0b3I8S2V5ZnJhbWVWYWx1ZT46OmNvbnN0X2l0
ZXJhdG9yIGl0MSA9IG1fa2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5lbmQo
KTsgKytpdDEpIHsKKyAgICBhdXRvIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVnaW4oKTsKKyAgICBm
b3IgKGF1dG8gaXQxID0gbV9rZXlmcmFtZXMuYmVnaW4oKTsgaXQxICE9IG1fa2V5ZnJhbWVzLmVu
ZCgpOyArK2l0MSwgKytpdDIpIHsKICAgICAgICAgaWYgKGl0MS0+a2V5KCkgIT0gaXQyLT5rZXko
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlMSA9ICppdDEtPnN0eWxlKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZTIgPSAqaXQyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUxICE9IHN0eWxlMikKKyAgICAg
ICAgaWYgKCppdDEtPnN0eWxlKCkgIT0gKml0Mi0+c3R5bGUoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgKytpdDI7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2ZDc2N2FlMjM3
MzdkYjZmNzgzZjIyNDllNDkwZWM5MDZhMzNiOGU4Li5iNzQ5YTI2YzBjYTVhY2ZjNjJlZjJmM2Vj
YmJlZDNlNDk1NzhmN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhcGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFw
ZVZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
aGFwZVZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcGVWYWx1ZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBl
LCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShS
ZWY8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZVZhbHVlKFdURk1vdmUoc2hhcGUpLCBjc3NCb3gp
KTsKICAgICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcGVWYWx1ZShib3hTaGFwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8
U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKQorICAgIHN0YXRp
YyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZjxTdHlsZUltYWdlPiYmIGltYWdlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShXVEZNb3ZlKGltYWdlKSkp
OwogICAgIH0KQEAgLTcyLDE0ICs3MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIFNoYXBlVmFsdWUoUmVmUHRyPEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3Nz
Qm94KQorICAgIFNoYXBlVmFsdWUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUg
Y3NzQm94KQogICAgICAgICA6IG1fdHlwZShUeXBlOjpTaGFwZSkKICAgICAgICAgLCBtX3NoYXBl
KFdURk1vdmUoc2hhcGUpKQogICAgICAgICAsIG1fY3NzQm94KGNzc0JveCkKICAgICB7CiAgICAg
fQogCi0gICAgZXhwbGljaXQgU2hhcGVWYWx1ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkK
KyAgICBleHBsaWNpdCBTaGFwZVZhbHVlKFJlZjxTdHlsZUltYWdlPiYmIGltYWdlKQogICAgICAg
ICA6IG1fdHlwZShUeXBlOjpJbWFnZSkKICAgICAgICAgLCBtX2ltYWdlKFdURk1vdmUoaW1hZ2Up
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmNwcAppbmRleCBmNzA2OTFiYzZhMTUzMzU3NGFlMWZiMTVkMjcyYTIxMTNmNzM1
YWRjLi42OTIzOTViMWUzNTBmMWNhMGQzZmQ5M2IxZDVlNTRkMTZiZmI1ZTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIENhY2hlZEltYWdlKiBTdHlsZUNhY2hlZEltYWdlOjpjYWNoZWRJbWFn
ZSgpIGNvbnN0CiAKIFJlZjxDU1NWYWx1ZT4gU3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUoKSBj
b25zdAogewotICAgIHJldHVybiBjb25zdF9jYXN0PENTU1ZhbHVlJj4obV9jc3NWYWx1ZS5nZXQo
KSk7CisgICAgcmV0dXJuIG1fY3NzVmFsdWUuY29weVJlZigpOwogfQogCiBib29sIFN0eWxlQ2Fj
aGVkSW1hZ2U6OmNhblJlbmRlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCAyYzg0YjJmNTY3ZjA3YTE5NThjNzBl
NjZiNmYzZjRmYzdkNjhmZTIyLi5iMDA2Mzc4MTRlYTNiNGI3MTYwMTc5MDNkZmNkZGZlMjRiYTMw
YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5l
cmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0eWxlR2VuZXJhdGVkSW1hZ2U6
OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+JiYgdmFsdWUp
CiAKIFJlZjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAog
ewotICAgIHJldHVybiBjb25zdF9jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdl
R2VuZXJhdG9yVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUu
Y29weVJlZigpOwogfQogCiBib29sIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmlzUGVuZGluZygpIGNv
bnN0CkBAIC01Niw3ICs1Niw3IEBAIEZsb2F0U2l6ZSBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFn
ZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11CiB7CiAgICAgQVNT
RVJUKHJlbmRlcmVyKTsKICAgICBpZiAobV9maXhlZFNpemUpIHsKLSAgICAgICAgRmxvYXRTaXpl
IGZpeGVkU2l6ZSA9IGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5nZXQoKSkuZml4ZWRTaXplKCpyZW5kZXJlcik7CisgICAgICAgIEZsb2F0
U2l6ZSBmaXhlZFNpemUgPSBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmZpeGVkU2l6ZSgqcmVuZGVy
ZXIpOwogICAgICAgICBpZiAobXVsdGlwbGllciA9PSAxLjBmKQogICAgICAgICAgICAgcmV0dXJu
IGZpeGVkU2l6ZTsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFn
ZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogUmVmUHRyPEltYWdlPiBT
dHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JW
YWx1ZS5nZXQoKSkuaW1hZ2UoKnJlbmRlcmVyLCBzaXplKTsKKyAgICByZXR1cm4gbV9pbWFnZUdl
bmVyYXRvclZhbHVlLT5pbWFnZSgqcmVuZGVyZXIsIHNpemUpOwogfQogCiBib29sIFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZmUyOGZkNGVhNWU1MDdlYjg2YjgzZTcxYWQ2
ODA5ZjMwNjY5Mzg3NC4uNGU5YjJlMjcyZDJkMzlkYWE4MGRhMGNjYTQzZGQyZmEwOTg5YzEwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KQEAgLTE4NDksNyArMTg0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAgICAgewotICAgICAgICBGcmFt
ZSogZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7CisgICAgICAgIEZyYW1lKiBm
cmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgICAgIGlmICghZnJhbWUp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IDBjNWZkYTAxZjA4YTkwNWQxNmM5M2M0YjczODJiNjQyZDgyZWY1YWEuLmM5
MTE1NTIwZjJjODk1MjM5ZTQxNDJjYTg2N2E3ZjZkNGY2MDYyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTM0NzAsOCArMzQ3MCw4IEBAIC0gKHZvaWQpX2FkZFNjcm9s
bGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzooRnJhbWVWaWV3KilmcmFtZVZpZXcgZGFz
aGJvYXJkCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW2tpdCgmZnJhbWVWaWV3LT5mcmFt
ZSgpKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdp
ZGdldDogZnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+
KCp3aWRnZXQpKSB7Ci0gICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9h
cmRSZWdpb25zOnJlZ2lvbnNdOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQpKSB7
CisgICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVW
aWV3OiZkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpy
ZWdpb25zXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQppbmRleCBiYWU5NmI2YTJjZGRmOWJiMmM4MDkxMWY3NmE2ZjQ0OGFjZGRmMjRi
Li44NTA5YWU2NTAyNGQ0ZWU1OTJlZDEyNWExMjEyMTQwZjA3ZmNlMzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tCkBAIC02NjYsNyArNjY2LDcgQEAgUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2lu
OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAg
ICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFn
ZS0+dGVzdFRyaWdnZXIoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcGx1Z2luVmlldygpLT5m
cmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5wdHIoKSk7CisgICAgcGx1Z2luVmlldygp
LT5mcmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldDsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298291</attachid>
            <date>2017-01-07 16:44:23 -0800</date>
            <delta_ts>2017-01-08 01:49:32 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews113 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>376406</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
cVh1eAsAAQT1AQAABBQAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAAnYAnSphceX8V
AAAAFQAAAB0AHABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUCQADKYJxWCmCcVh1eAsA
AQT1AQAABBQAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAAnYAnSq+J1TQ3AAAANwAA
ABgAHABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAkAAymCcVgpgnFYdXgLAAEE9QEAAAQUAAAA
VgkxNzAyMDcwMDA0NTdaCQkwNDJEOTEJdW5rbm93bgkvQ049d2ViLXBsYXRmb3JtLXRlc3RzClBL
AwQUAAIACACdgCdKVQmCqA8FAACPBgAAGAAcAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUCQAD
KYJxWCqCcVh1eAsAAQT1AQAABBQAAABtlbcSq9oSRHO+4uSqU7gNguAGG4/wIITJEB6E8Pbrr96N
31RNNMmq7q7pv39/w4myav5xPfjHdtUXfIp/NDH63+EvYqiqOECVg1DjoSPC3U6fPqo3ZcOnMBeX
lM67FU8WBygngGRqDGCepvhlUVjAlEOK7C/XYPcNt3zPXfvwUZYqQ3/W2Ovo5YsC0EtGNPhjjEuL
pRKirEiUKl2ekkgldIKoQHIyviiC4ZutActcs3h2XxusEOW7y6eVRdqvZvKJB1cMrC7q/dfrmp55
EFFi3p5L6CmIVxLJa1KpJ3upsbjKAtoW77K0wSsilj4cUplSqDUTyF34zvGTMNug49cLpK6E+eSb
Qj479lxaIIKR0pWj+BpfR3AtHbSkR9jwSX+3pil3yqubcE88nVm9KIsU0l3UdIRAURBpQmPt7cg9
OjvLEvXo1s5A5l/7nE6Hprw/s9iNuypAB3Kw/4nt8NH2/Pp++/7xJCyS1PpT5PobCICsKQzFSHR9
dOlB3ZYjInNWVc9B2NwIlY2CUWS8iunRtUSAi/ElYPGAVD9/yvgeF9ijttmbdoLJXOl0bfbxXtYe
9SUZlmXD/gPnIv7gpRVktfXWcceKVuwulUhv8oJzjx409fI4lC7QW6dgiaA2RmRBRg1TpV0WfGyb
K/JaHrP2dVlPrOKsymCgOQLEZgz7cQ9ULC4fCU/tvib7vLOIgsz+vDXj2Sd9zsm82G7aR/s43xJK
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
4z7989P5x6tP7h389rF6c/7+x/ls9//Vf32ojr92ef7f6W54/+nHq/k364d1sXyo75rNsll9O599
f/g50kB3d//LzC23t79hrbqrx3qJy3fihxFh3nZ/zGfhzXyT4A7mtyglNpNdUSG6dyS8A5vt03n7
whxV6cl3WNZPuasgB2xjDVvrKW3JQW/CnJGL3jv/uJz/4/xq/rnN0gQSlw+rib4O/fBj73zTZrDi
zCbazsibQz/7n/0zc1jS9WqFaJxzIBqD8HvL49vZ2wR7NXd4Zf5+vWymv09G1oV79+59OL2QtDrj
F92Md+98fqofV/MvONdTP5x1/ej57EO73efwib5smvn5+ubh2SVweeXC2/mbT+5jeZQ20CUPn8bA
O1uwPp7ZGJScqf47P11cpxG5qxPbYi5IR5uaz35uFiiNL9L0H+unRxun89n1demu3GnaGO3eYaB2
wjvnF+5NdfolmS/p6+t35z++rUpYbke7UeYwB20/V9U/r06TJtSZ7mgT+M6nH8/D+/IkdWAQ92m7
Txzu6OZspzcx4MP32fGBe7CQH78ee4kf1huO5//Cpq7eXyV2eXrxnJndFpWc7N759/k9cI5NtlHb
DZpGQEU31+md2f8CUEsDBBQAAgAIAMKAJ0pTkVJ16AIAAB4HAAA2ABwAYWNjZXNzaWJpbGl0eS9t
YWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1zdGRlcnIudHh0VVQJAANsgnFYbIJxWHV4CwAB
BPUBAAAEFAAAAJWUXW/TMBSG7/srfIVaGCROu3wJkLa1kyoGm7qyXiCEHPu4tZTYleMwxq/HzlfL
2opxVTt+3+ccn3Pqi/v72WI5v/2Cri/mN7NpioofW6MH3oPKqwJKb0oM8Ware28F2Sdh2p/LSuTM
m0JWrb2q1F6uKMk9IWleMfAeDfcWwN9thtjHI5Qiu3m//IherZbXaeo2lnKlNKTpvXnK4VL9cmE+
pqnagiZG6Q/DzvJqhL4t0Qd01PF9gBFC/i/sZwFQ7vvIRrjSpNwMguYA+yyMccLQf4T+h9SmNBi3
dBzSDEK+y84pXhjlZRYXbbIXjUTRLtoCJANd64+i984d57zlBISwLBk/58xyKECaNC3B1J4ToLNn
zZgKzkGDpDAahF2qPicxi/cKo2jV0DXYWaHPArR3uNoQubaYaIdhUXR+DEM1EANNYksNMBwN4n0X
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
93YefUXN6Uba7SPNIRV+9+CRzeqrhOfUvVuzPRZmMXP9/91j/ZmnPhr5w7E81Pmm1dKVImkh/6FW
auXJdwdobnS9a1YOmhygs5jCJai/2QFyVN8xKsIdKoljnvQo9CZ1O5c4iakYueex7c2ecK34FyEq
9xu4uyiun12bo6hTZBhPMeK//H8NpLJX6Ghy3exHo4MiAvfA//qP5304qxrvVbMIT+MIlS4uiJq5
iYUQyYxRMqEcNVMWBP8CUEsDBBQAAgAIAOCAJ0pyt4jZ6QIAAB4HAAAwABwAYW5pbWF0aW9ucy9D
U1NLZXlmcmFtZXNSdWxlLW5hbWUtbnVsbC1zdGRlcnIudHh0VVQJAAOjgnFYo4JxWHV4CwABBPUB
AAAEFAAAAJWUUW/aMBDH3/kUfpqg6xY7FEKitlJbqITWtRVl5aGaKsc+g6XERo6ztvv0sxMCrIDW
PWHH///vzneHLx4eRpPp+O4WXV+Mb0bDBOXPS2tawaPOyhyKYEgtDUazh2AG6TdpVz+Xpcx4MIS0
nAdlYYJMM5oFUrGs5BC8WBFMQHxdtAkmHZQgtzmdnqNPs+l1kviNo1xpA0nyYN8yuNSvPsx5kugl
GGq1OWs3lk8d9DRFZ2iv42eLIITwK8FpiInAGLkIV4YWi1ZYHxDMoojEHP1H6H9IXUqt7opOepxC
X2yy84oPRvmYxUc72YpGo2gTbQKKg6n0e9Fb557TW3HCOGVp3H3PGWWQg7JJUoCtPAdAx++aMZRC
gAHFoNPqN6liHA/4YKswmpU13YCbFfYuwOoOVwuq5g4TbTCuf719GGaAWqgTmxqAdqc12HaxvS4u
+SUwncNVaVzKtjkZq2tDcw+JG0g3DRkjG0glqIrTmNaTcm/N6U6wqnUENynxlMViN6WZkRZMkqQw
l2pTjx+TG8S0Kqyrdqp1drzrPHJ00tBjfMJhV3OjKfd0d+NcWj9QbbagpkYfHaNSFXKugKNMq7nj
hRsejrqHeUIqWSyA+71U8zbXZZq5vpHuGtBjLDwMyOlbCn4zypf2zZWdnGycQMhhZ2Gpsau436lU
Eyh0aZhvHemtW5fSbviudQ3ApW69uF+LKY9igdlOnxtZtJaRVAD6/OSE9ay4xVi55imaddBzPY8+
o+p0Ju3ins4hEX5365HV6lHCS+LercEKC4OIufp/8Vh/5qn3Rv5yLA91fdNq7FKRNJO/qZVaefL1
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
APoAAABHABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3Np
dGVkLWxheWVyLWNyYXNoLWxvZy50eHRVVAkAA6yCcVisgnFYdXgLAAEE9QEAAAQUAAAAtc69DoIw
FEDh3ae4GxP2h6AJszgRTRqdjCGlvUAT5JLbEsPby0u4nuU7tTF3U8HVhgk9JAJG6yETz4gcRbeG
yXeURBM6tryJhoYoLsEOM8UUnMGFOO1l/SwGZ4/8YMRWS3XOpcrlKZdaF2XZ4jcqVRwd2zhmFbxq
5plAv+FGEFc3Qr/7QAw+MLpEvFV/njj8AFBLAwQUAAIACADkgCdKDMD0T+sCAAAeBwAARAAcAGNv
bXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1z
dGRlcnIudHh0VVQJAAOsgnFYrIJxWHV4CwABBPUBAAAEFAAAAJWUXW/aMBSG7/kVvppg65Y4H4RE
66S2UAmt6yrKxsU0VY59DJYSGznO2u7Xz04IsAJad4Udv+9zjs85+OL+fjKbT7/eouuL6c1knKHy
YW10z/uuirqEyhsTQ7zJ4t5bQP5ZmM3PZS0K5o0hr5deXWmvUJQUnpC0qBl4j4Z7M+AfVn3s4wHK
kN18nH9Cbxbz6yxzG0u5Uhqy7N48F3CpnlyYT1mm1qCJUfq831neDNCPOTpHRx0/exgh5D9hn/I0
576PbIQrTapVL2gPcEBsDilD/xH6H1KbUi/c0MMwCWHId9k5xSujvM7iokV70UiS7KLNQDLQjf4o
eu/cceINJ0riOE/Dl5xJASVIk2UVmMZzAnT2ohljwTlokBQGvWFXdkaCERvtFUbRuqVrsLNCXwTY
3OFqReTSYpIdJk6S+BiGaiAG2sTmGqA/6I32XfSoiwl2CVSVcFVrm7LpTqbyWpPSQdKu2DjKKcU7
SCNoitOZtpNyZ/THg2BN67C/SQmSiKb8MKWFFgZ0luWwFHJXj2+zG0SVrIytdq5UcXbofGvpuKMH
acTgUHOjCHN0e+NSGDdQfboiukW/PUO1rMRSAkOFkkvLC3Y8PwlP87iQoloBc3shl32m6rywfcPh
FgCUBqcBJXnOwW0m5do827LjaOcEjE87K0O02cT9QoScQaVqTV3rcNy1Lo5IGLxoXQewqRsnHrZi
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
fXTuOJM9JwSaZLPRa86igBKUTdMKbKO5ALp6NYy5FAIMKAZDL+5KHYvxlE+PGqNZ3dINoFfYqwT7
O9xuqcoRk/SYJEkm5zDMALXQe3ww9KbHKnZWxSW/AaZLuK0Nlmy7k6W6M7R0kFkHmc44Y2EPaQKa
5nSig1Merfl4kqwZXRjsaRMWs5k4LWljpAWTphnkUvX9+Gt1T5hWlcVuZ1oXV6fK90gPO3qSjTmc
xtxryh0db1xK6ww1YFtqWvT7K1KrSuYKOL4eKkde1POCZHSZJ6SS1Ra420uVD/BVyQqcWzjqANOA
segyoKQvGbjNotzZF2x7OO6VEIaXlZWlxu7z/kmlWkGla8Pc6MJJNzoa01H0anQdAEu3Ljhug2kU
ByJgJ3PuwpIubDLNBJDfvmFg6xVcLBUOT9FiSL63fnQVNacbabePNIdUuN2DQzarrxKeU3y3pnvs
KAaG/f/dYd2Zoz4a+QNZDopz02qJpUhayH+olVo58t0Bmhtd75oVQmcHqEgoXIK6mx0gR/Udo6Kg
QyWQ8FmPIm9St74Mpmh5rIW0vdkTrhX/IkSFvwHeRXH9jG2Ook5BgyAOCP/l/2sglb0iR85F70ej
gyICfOB//cdzczirGu9VPAziJCIlxnlR45tECDFDWjihnDQu87x/AVBLAwQUAAIACADggCdKiJ5Y
hOkCAAAeBwAAPAAcAGNvbXBvc2l0aW5nL2NvbHVtbnMvYW5jZXN0b3ItY2xpcHBlZC1pbi1wYWdp
bmF0ZWQtc3RkZXJyLnR4dFVUCQADpIJxWKSCcVh1eAsAAQT1AQAABBQAAACVlFFv0zAQx9/7KfyE
WhgkTtukjQBpWzupYsDUFfqAEHLsc2spsSvHYYxPzzlp2rK2YjzFju//u7/vLrm8v5/OF7PPn8jN
5ex2OklJ8WPjbCf4avKqgDKYMMeC6fI+WEL2Qbnt46pSuQgmkFWroCptkBvO8kBpnlcCggcngznI
N+suDWmPpAQ3bxfvyYvl4iZN/QYp18ZCmt67xxyuzC+f5n2amg1Y5ox9120lL3rk24K8IycV3zuU
EBL+oiGLJZVhSDDDtWXluhM1B2ggjuhYkP9I/Y9QtNTpt3TGhxDLvTsf8cwsz5P4bIODbCxJ9tnm
oAXYOv4k+uDcc4ZbDgWWZOP+U840hwK0S9MSXK05A7p40oyJkhIsaA69TtxaHcjBSIwOCmN41dAt
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
U2uOgE7eNGMkOAcNkkKvM2xTTWAYs3inMIpWDV2DnRX6xmB9h8slkQuLibaYJIoGhzBUAzHQJDbT
AN1eJ95V0YMqJtgFUFXAZaVtyqY9mcgrTQoHSVoIizmleAupA+ritKLNpNwZfbpnVrcO+2sayWKa
8P2U5loY0GmawULIbT1+TK8RVbI0ttqZUvnJvvKjpeOWPmR9Bvsx14owR7c3LoRxA9WlS6Ib9McT
VMlSLCQwlCu5sLxgy/Oj8DiPCynKJTC3F3LRZarKcts3HLaAKKA0OA4oyGsGbjMuVubVlh33t0rA
+LiyNESbte93IuQUSlVp6lqHB23rkpiEwZvWtQCbunHBwyY4iwYh9+len9uwqA3rZxkH9OnRBjaz
YhcTaZsnSd5DT808uozq07kwyzuygJS73Y1D1qsHAc+pfbfiNTYeYmrr/9lh3Zmj3mnxy7Ic1PZN
yYlNRZBc/CZGKOnIVxvoQqtqVa8sNNlAg4jAMai72Qayk98uKvBbVIQjlmxR6F3qZi59gmMe2uex
qc2acC7ZLeel/Qb2LpKpZ1vmIGgVie8PfcSqYrXz3xbSnKCdybWzH4QbRQD2gR/9pXB9OKjqr1WB
tYkCVNi4TlDPTcQ5T2JK8IAwVE9Z5w9QSwMECgAAAAAA4YAnSgAAAAAAAAAAAAAAABYAHABjb21w
b3NpdGluZy9mcmFtZXNldHMvVVQJAAOlgnFYGINxWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADh
gCdK8KytShIDAABeBwAAPgAcAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVkLWZyYW1l
LWFsaWdubWVudC1jcmFzaC1sb2cudHh0VVQJAAOlgnFYpYJxWHV4CwABBPUBAAAEFAAAAJWVXW8a
ORSG7+dX+KqCbrbzCcNYbaUkEAltNo0IWy6qVWXs48HSjI08nqbZX7/2fDA0gDZ7AzY+73OOz3ll
HhSimlQ7VKgccVVLZj81mtflfgWSgV5rAJwkkyT94HmVYao2uFmA1ti7fnparNbLLw/o7np5v5hj
VH7fG+35X1VRl1D5c2KIv9g8+RvY/iFM93VTi4L5c9jWuV9X2i8UJYUvJC1qBv6z4f4K+IfdKAzC
McLIbj6uP6N3m/Udxm5jKbdKA8ZP5qWAG/XTpfmMsdqDJkbpT6Ne8m6Mvq3RJ3RW8bcXIoSCn2EA
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
wgAAIgAYAAAAAAABAAAApIGMdQAARHVtcFJlbmRlclRyZWUtNDQ1ODQtY3Jhc2gtbG9nLnR4dFVU
BQADFYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuBJ0rxD8wQaDoAAObCAAAiABgAAAAA
AAEAAACkgVSwAABEdW1wUmVuZGVyVHJlZS00NDU4Ni1jcmFzaC1sb2cudHh0VVQFAAMVg3FYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAnYAnSgAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BGOsA
AF93cHRfY2VydHMvVVQFAAMpgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnYAnSk3ho9cP
CQAAOhEAABUAGAAAAAAAAQAAAKSBXesAAF93cHRfY2VydHMvMDQyRDkxLnBlbVVUBQADKYJxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ2AJ0ppXFT96QkAADsSAAAVABgAAAAAAAEAAACkgbv0
AABfd3B0X2NlcnRzLzA0MkQ5Mi5wZW1VVAUAAymCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACdgCdKTeGj1w8JAAA6EQAAFQAYAAAAAAABAAAApIHz/gAAX3dwdF9jZXJ0cy9jYWNlcnQucGVt
VVQFAAMpgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnYAnSmnnoUNIBQAA1wYAABQAGAAA
AAAAAQAAAKSBUQgBAF93cHRfY2VydHMvY2FrZXkucGVtVVQFAAMpgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAnYAnSuw/jhdJAAAAZQAAABQAGAAAAAAAAQAAAKSB5w0BAF93cHRfY2VydHMv
aW5kZXgudHh0VVQFAAMpgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAnYAnSphceX8VAAAA
FQAAABkAGAAAAAAAAQAAAKSBfg4BAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJVVAUAAymCcVh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACdgCdKmFx5fxUAAAAVAAAAHQAYAAAAAAABAAAApIHm
DgEAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0ci5vbGRVVAUAAymCcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAACdgCdKr4nVNDcAAAA3AAAAGAAYAAAAAAABAAAApIFSDwEAX3dwdF9jZXJ0cy9p
bmRleC50eHQub2xkVVQFAAMpgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnYAnSlUJgqgP
BQAAjwYAABgAGAAAAAAAAQAAAKSB2w8BAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUBQADKYJx
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ2AJ0ppXFT96QkAADsSAAAYABgAAAAAAAEAAACk
gTwVAQBfd3B0X2NlcnRzL2xvY2FsaG9zdC5wZW1VVAUAAymCcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAACdgCdKKkl3WgcAAAAHAAAAEQAYAAAAAAABAAAApIF3HwEAX3dwdF9jZXJ0cy9zZXJp
YWxVVAUAAymCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACdgCdKa3hsQwcAAAAHAAAAFQAY
AAAAAAABAAAApIHJHwEAX3dwdF9jZXJ0cy9zZXJpYWwub2xkVVQFAAMpgnFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAm4AnSgAAAAAAAAAAAAAAAA4AGAAAAAAAAAAAAKSBHyABAGFjY2Vzc19s
b2cudHh0VVQFAAMlgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABoEnSgAAAAAAAAAAAAAA
AA4AGAAAAAAAAAAQAO1BZyABAGFjY2Vzc2liaWxpdHkvVVQFAAPsgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAG4EnSviZ64RqOgAAxsMAAEsAGAAAAAAAAQAAAKSBryABAGFjY2Vzc2liaWxp
dHkvYWNjZXNzaWJpbGl0eS1jcmFzaC13aXRoLWR5bmFtaWMtaW5saW5lLWNvbnRlbnQtY3Jhc2gt
bG9nLnR4dFVUBQADFYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMOAJ0pCnGOO6gIAAB4H
AABIABgAAAAAAAEAAACkgZ5bAQBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktY3Jhc2gtd2l0
aC1keW5hbWljLWlubGluZS1jb250ZW50LXN0ZGVyci50eHRVVAUAA22CcVh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAbgSdKiXWUem46AADmwgAAQAAYAAAAAAABAAAApIEKXwEAYWNjZXNzaWJp
bGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVtb3J5LW1hbmFnZW1lbnQtY3Jhc2gtbG9nLnR4dFVU
BQADFYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOSAJ0o2NVNy6QIAAB4HAAA9ABgAAAAA
AAEAAACkgfKZAQBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdl
bWVudC1zdGRlcnIudHh0VVQFAAOsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABoEnSk6c
vWJsOgAA5cIAADcAGAAAAAAAAQAAAKSBUp0BAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1u
b2RlLXJlcGFyZW50LWNyYXNoLWxvZy50eHRVVAUAA+yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAGgSdK5k4fQekCAAAeBwAANAAYAAAAAAABAAAApIEv2AEAYWNjZXNzaWJpbGl0eS9hY2Nl
c3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtc3RkZXJyLnR4dFVUBQAD7IJxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQYbbAQBhY2Nlc3NpYmls
aXR5L21hYy9VVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAbgSdKA0Yvh286AADG
wwAAMQAYAAAAAAABAAAApIHS2wEAYWNjZXNzaWJpbGl0eS9tYWMvYWJici1hY3JvbnltLXRhZ3Mt
Y3Jhc2gtbG9nLnR4dFVUBQADFYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMOAJ0pPko3s
5wIAAB4HAAAuABgAAAAAAAEAAACkgawWAgBhY2Nlc3NpYmlsaXR5L21hYy9hYmJyLWFjcm9ueW0t
dGFncy1zdGRlcnIudHh0VVQFAANtgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG4EnSg2d
jBdpOgAA5cIAACkAGAAAAAAAAQAAAKSB+xkCAGFjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2tleS1j
cmFzaC1sb2cudHh0VVQFAAMVg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5IAnSjb0Kmbp
AgAAHgcAACYAGAAAAAAAAQAAAKSBx1QCAGFjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2tleS1zdGRl
cnIudHh0VVQFAAOsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABoEnSsAi7pVtOgAA5sIA
ADMAGAAAAAAAAQAAAKSBEFgCAGFjY2Vzc2liaWxpdHkvbWFjL2FsdC1mb3ItY3NzLWNvbnRlbnQt
Y3Jhc2gtbG9nLnR4dFVUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAaBJ0rh3CFb
6gIAAB4HAAAwABgAAAAAAAEAAACkgeqSAgBhY2Nlc3NpYmlsaXR5L21hYy9hbHQtZm9yLWNzcy1j
b250ZW50LXN0ZGVyci50eHRVVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADkgCdK
AAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UE+lgIAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRl
eHQvVVQFAAOsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG4EnSt2Q7NBrOgAA1MIAADkA
GAAAAAAAAQAAAKSBlpYCAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0
LTEtY3Jhc2gtbG9nLnR4dFVUBQADFYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMKAJ0pT
kVJ16AIAAB4HAAA2ABgAAAAAAAEAAACkgXTRAgBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4
dC9zZWxlY3QtdGV4dC0xLXN0ZGVyci50eHRVVAUAA2yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAbgSdKllWYWWg6AADmwgAAOQAYAAAAAAABAAAApIHM1AIAYWNjZXNzaWJpbGl0eS9tYWMv
c2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMi1jcmFzaC1sb2cudHh0VVQFAAMVg3FYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA5IAnSuAQ72LqAgAAHgcAADYAGAAAAAAAAQAAAKSBpw8DAGFjY2Vz
c2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTItc3RkZXJyLnR4dFVUBQADrIJx
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAfABgAAAAAAAAAEADt
QQETAwBhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvVVQFAAPrgnFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAG4EnSvURW85oOgAA1MIAAFMAGAAAAAAAAQAAAKSBWhMDAGFjY2Vzc2li
aWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLWNvbnRlbnRlZGl0
YWJsZS1jcmFzaC1sb2cudHh0VVQFAAMVg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAw4An
Shj8kWvqAgAAHgcAAFAAGAAAAAAAAQAAAKSBT04DAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNo
YW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLWNvbnRlbnRlZGl0YWJsZS1zdGRlcnIudHh0VVQF
AANtgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG4EnSuxwvuBsOgAA5sIAAEwAGAAAAAAA
AQAAAKSBw1EDAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNl
ci1pbmZvLXRleHRhcmVhLWNyYXNoLWxvZy50eHRVVAUAAxWDcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADkgCdKM8vJweoCAAAeBwAASQAYAAAAAAABAAAApIG1jAMAYWNjZXNzaWJpbGl0eS9t
YWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFyZWEtc3RkZXJyLnR4
dFVUBQADrIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuBJ0q7L9F7YjoAAObCAABNABgA
AAAAAAEAAACkgSKQAwBhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdl
LXVzZXItaW5mby10ZXh0ZmllbGQtY3Jhc2gtbG9nLnR4dFVUBQADFYNxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAAaBJ0qcLA6W5wIAAB4HAABKABgAAAAAAAEAAACkgQvLAwBhY2Nlc3NpYmls
aXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0ZmllbGQtc3Rk
ZXJyLnR4dFVUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAA
AAAaABgAAAAAAAAAEADtQXbOAwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL1VUBQAD64JxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuBJ0p3MSGnazoAAN/CAABZABgAAAAAAAEAAACkgcrO
AwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3Np
dGlvbi1jb252ZXJzaW9uLWhhbmctY3Jhc2gtbG9nLnR4dFVUBQADFYNxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAMKAJ0pb2WYc6gIAAB4HAABWABgAAAAAAAEAAACkgcgJBABhY2Nlc3NpYmls
aXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252ZXJz
aW9uLWhhbmctc3RkZXJyLnR4dFVUBQADbIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuB
J0pSU1VnajoAAOXCAABBABgAAAAAAAEAAACkgUINBABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtY3Jhc2gtbG9nLnR4dFVUBQADFYNxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOSAJ0rmE29N6AIAAB4HAAA+ABgAAAAAAAEAAACkgSdIBABhY2Nl
c3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtc3RkZXJyLnR4
dFVUBQADrIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAaBJ0o71HH3ZzoAAOXCAABKABgA
AAAAAAEAAACkgYdLBABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXJhbmdl
LXN0YWxlLW5vZGUtY3Jhc2gtY3Jhc2gtbG9nLnR4dFVUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAAaBJ0qFvkd16wIAAB4HAABHABgAAAAAAAEAAACkgXKGBABhY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXJhbmdlLXN0YWxlLW5vZGUtY3Jhc2gtc3RkZXJyLnR4
dFVUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAALABgA
AAAAAAAAEADtQd6JBABhbmltYXRpb25zL1VUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAOCAJ0oAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQSOKBABhbmltYXRpb25zLzNkL1VUBQAD
o4JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCAJ0rMQmvxEwMAAF4HAAA5ABgAAAAAAAEA
AACkgWuKBABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNo
LWxvZy50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKDKxhnekCAAAe
BwAANgAYAAAAAAABAAAApIHxjQQAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVu
ZC1ldmVudC1zdGRlcnIudHh0VVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAn
SuQwDdoTAwAAXgcAADMAGAAAAAAAAQAAAKSBSpEEAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVs
ZS1uYW1lLW51bGwtY3Jhc2gtbG9nLnR4dFVUBQADo4JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAOCAJ0pyt4jZ6QIAAB4HAAAwABgAAAAAAAEAAACkgcqUBABhbmltYXRpb25zL0NTU0tleWZy
YW1lc1J1bGUtbmFtZS1udWxsLXN0ZGVyci50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADkgCdK59V+6aUAAADuAgAANAAYAAAAAAABAAAApIEdmAQAYW5pbWF0aW9ucy9DU1NL
ZXlmcmFtZXNSdWxlLXBhcmFtZXRlcnMtY3Jhc2gtbG9nLnR4dFVUBQADrIJxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAOSAJ0qmZ0MA6QIAAB4HAAAxABgAAAAAAAEAAACkgTCZBABhbmltYXRp
b25zL0NTU0tleWZyYW1lc1J1bGUtcGFyYW1ldGVycy1zdGRlcnIudHh0VVQFAAOsgnFYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgABoEnSvEPzBBoOgAA5sIAAC4AGAAAAAAAAQAAAKSBhJwEAGFu
aW1hdGlvbnMvYWRkZWQtd2hpbGUtc3VzcGVuZGVkLWNyYXNoLWxvZy50eHRVVAUAA+uCcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAGgSdKLPcgGuoCAAAeBwAAKwAYAAAAAAABAAAApIFU1wQA
YW5pbWF0aW9ucy9hZGRlZC13aGlsZS1zdXNwZW5kZWQtc3RkZXJyLnR4dFVUBQAD64JxWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAOCAJ0oAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQaPaBABj
YW52YXMvVVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA4IAnSgAAAAAAAAAAAAAA
AA4AGAAAAAAAAAAQAO1B5NoEAGNhbnZhcy9waGlsaXAvVVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAA4IAnSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BLNsEAGNhbnZhcy9waGls
aXAvdGVzdHMvVVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSocd+nQUAwAA
XgcAADQAGAAAAAAAAQAAAKSBetsEAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRv
bmx5LWNyYXNoLWxvZy50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdK
3V2ereoCAAAeBwAAMQAYAAAAAAABAAAApIH83gQAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52
YXMucmVhZG9ubHktc3RkZXJyLnR4dFVUBQADo4JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AOSAJ0oAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQVHiBABjb21wb3NpdGluZy9VVAUAA6yCcVh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKR48hTBMDAABeBwAAOwAYAAAAAAABAAAApIGX
4gQAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxv
Zy50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKNX6snOoCAAAeBwAA
OAAYAAAAAAABAAAApIEf5gQAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3
LWZpeGVkLXN0ZGVyci50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADkgCdK
DogUgJEAAAD6AAAARwAYAAAAAAABAAAApIF76QQAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRp
b24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWNyYXNoLWxvZy50eHRVVAUAA6yCcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADkgCdKDMD0T+sCAAAeBwAARAAYAAAAAAABAAAApIGN6gQA
Y29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVy
LXN0ZGVyci50eHRVVAUAA6yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADggCdKAAAAAAAA
AAAAAAAAFgAYAAAAAAAAABAA7UH27QQAY29tcG9zaXRpbmcvYW5pbWF0aW9uL1VUBQADo4JxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCAJ0pGn3cFEgMAAF4HAABFABgAAAAAAAEAAACkgUbu
BABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNpZGUtaGlkZGVu
LWNyYXNoLWxvZy50eHRVVAUAA6OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdK2VcX
SeoCAAAeBwAAQgAYAAAAAAABAAAApIHX8QQAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVk
LWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQFAAOjgnFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAA4IAnSgAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BPfUEAGNvbXBvc2l0
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA4IAnSq8LUSsTAwAAXgcAAEQAGAAAAAAAAQAAAKSBl/UEAGNvbXBvc2l0aW5nL2JhY2tmYWNl
LXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQFAAOjgnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSiddHh/qAgAAHgcAAEEAGAAAAAAAAQAAAKSB
KPkEAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0z
ZC1zdGRlcnIudHh0VVQFAAOjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA4IAnSgAAAAAA
AAAAAAAAABQAGAAAAAAAAAAQAO1BjfwEAGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQFAAOkgnFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSqaB7gcQAwAAXgcAADoAGAAAAAAAAQAAAKSB2/wE
AGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50
eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKlDs5GecCAAAeBwAANwAY
AAAAAAABAAAApIFfAAUAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZs
aXAtc3RkZXJyLnR4dFVUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOCAJ0oAAAAA
AAAAAAAAAAATABgAAAAAAAAAEADtQbcDBQBjb21wb3NpdGluZy9jYW52YXMvVVQFAAOkgnFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSox6c/cSAwAAXgcAAD8AGAAAAAAAAQAAAKSBBAQF
AGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29tcG9zaXRpbmctY3Jhc2gt
bG9nLnR4dFVUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCAJ0r2csgV6QIAAB4H
AAA8ABgAAAAAAAEAAACkgY8HBQBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2FudmFz
LWNvbXBvc2l0aW5nLXN0ZGVyci50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AADggCdKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHuCgUAY29tcG9zaXRpbmcvY2xpcHBpbmcv
VVQFAAOkgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSuKM3A0TAwAAXgcAAFEAGAAA
AAAAAQAAAKSBPQsFAGNvbXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRpdXMtb3ZlcmZsb3ct
aGlkZGVuLXN0YWNraW5nLWNvbnRleHQtY3Jhc2gtbG9nLnR4dFVUBQADpIJxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAOCAJ0prHZNx6gIAAB4HAABOABgAAAAAAAEAAACkgdsOBQBjb21wb3Np
dGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1zdGFja2luZy1jb250
ZXh0LXN0ZGVyci50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADggCdKAAAA
AAAAAAAAAAAAGwAYAAAAAAAAABAA7UFNEgUAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvVVQF
AAOkgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4IAnSg0UjyIRAwAAXgcAAD0AGAAAAAAA
AQAAAKSBohIFAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5n
LWNyYXNoLWxvZy50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKk9S2
2+gCAAAeBwAAOgAYAAAAAAABAAAApIEqFgUAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1h
Z2UtY29sb3ItbWF0Y2hpbmctc3RkZXJyLnR4dFVUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAOCAJ0oAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQYYZBQBjb21wb3NpdGluZy9jb2x1
bW5zL1VUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCAJ0pTccDcEwMAAF4HAAA/
ABgAAAAAAAEAAACkgdQZBQBjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQtaW4t
cGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADggCdKiJ5YhOkCAAAeBwAAPAAYAAAAAAABAAAApIFgHQUAY29tcG9zaXRpbmcvY29sdW1ucy9h
bmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1zdGRlcnIudHh0VVQFAAOkgnFYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA4IAnSgAAAAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BvyAFAGNvbXBv
c2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9VVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADggCdKxTJpVhIDAABeBwAAOQAYAAAAAAABAAAApIEVIQUAY29tcG9zaXRpbmcvY29udGVudHMt
b3BhcXVlL2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cudHh0VVQFAAOkgnFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA4IAnStnDsHrpAgAAHgcAADYAGAAAAAAAAQAAAKSBmiQFAGNvbXBvc2l0
aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtc3RkZXJyLnR4dFVUBQADpIJxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOCAJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQfMn
BQBjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9VVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADggCdKvtfjJBIDAABeBwAAMgAYAAAAAAABAAAApIFIKAUAY29tcG9zaXRpbmcvY29u
dGVudHMtc2NhbGUvYW5pbWF0aW5nLWNyYXNoLWxvZy50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADggCdK5d009ekCAAAeBwAALwAYAAAAAAABAAAApIHGKwUAY29tcG9zaXRp
bmcvY29udGVudHMtc2NhbGUvYW5pbWF0aW5nLXN0ZGVyci50eHRVVAUAA6SCcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADggCdKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEYLwUAY29tcG9z
aXRpbmcvY3VsbGluZy9VVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdKsynO
+hUDAABeBwAANAAYAAAAAAABAAAApIFmLwUAY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhl
ZC1pZnJhbWUtY3Jhc2gtbG9nLnR4dFVUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AOCAJ0qLd8Sn6wIAAB4HAAAxABgAAAAAAAEAAACkgekyBQBjb21wb3NpdGluZy9jdWxsaW5nL2Ns
ZWFyLWZpeGVkLWlmcmFtZS1zdGRlcnIudHh0VVQFAAOkgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA4YAnSgAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BPzYFAGNvbXBvc2l0aW5nL2ZyYW1l
c2V0cy9VVAUAA6WCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADhgCdK8KytShIDAABeBwAA
PgAYAAAAAAABAAAApIGPNgUAY29tcG9zaXRpbmcvZnJhbWVzZXRzL2NvbXBvc2l0ZWQtZnJhbWUt
YWxpZ25tZW50LWNyYXNoLWxvZy50eHRVVAUAA6WCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADhgCdKttWIRukCAAAeBwAAOwAYAAAAAAABAAAApIEZOgUAY29tcG9zaXRpbmcvZnJhbWVzZXRz
L2NvbXBvc2l0ZWQtZnJhbWUtYWxpZ25tZW50LXN0ZGVyci50eHRVVAUAA6WCcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADhgCdKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UF3PQUAY29tcG9z
aXRpbmcvZ2VvbWV0cnkvVVQFAAOlgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4YAnSh8r
gssSAwAAXgcAAD4AGAAAAAAAAQAAAKSBxj0FAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Ficy1wb3Np
dGlvbi1pbnNpZGUtb3BhY2l0eS1jcmFzaC1sb2cudHh0VVQFAAOlgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA4YAnSijQe+XoAgAAHgcAADsAGAAAAAAAAQAAAKSBUEEFAGNvbXBvc2l0aW5n
L2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS1zdGRlcnIudHh0VVQFAAOlgnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5IAnSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B
rUQFAGNvbXBvc2l0aW5nL2lmcmFtZXMvVVQFAAOsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA5IAnSg6IFICRAAAA+gAAAEIAGAAAAAAAAQAAAKSB+0QFAGNvbXBvc2l0aW5nL2lmcmFtZXMv
YmVjb21lLWNvbXBvc2l0ZWQtbmVzdGVkLWlmcmFtZXMtY3Jhc2gtbG9nLnR4dFVUBQADrIJxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOSAJ0rpmG4h6AIAAB4HAAA/ABgAAAAAAAEAAACkgQhG
BQBjb21wb3NpdGluZy9pZnJhbWVzL2JlY29tZS1jb21wb3NpdGVkLW5lc3RlZC1pZnJhbWVzLXN0
ZGVyci50eHRVVAUAA6yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAGgSdKraFHTcUCAABU
CAAADQAYAAAAAAABAAAApIFpSQUAZXJyb3JfbG9nLnR4dFVUBQAD7IJxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABuBJ0o0NSiyhQMAAEIQAAARABgAAAAAAAEAAACkgXVMBQBmdWxsX3Jlc3Vs
dHMuanNvblVUBQADFoNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJuAJ0pbBFgOogUAAE0Q
AAAKABgAAAAAAAEAAACkgUVQBQBodHRwZC5jb25mVVQFAAMlgnFYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAnIAnSgAAAAAAAAAAAAAAABoAGAAAAAAAAAAAAKSBK1YFAHB5d2Vic29ja2V0Lndz
LmxvZy1lcnIudHh0VVQFAAMngnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAm4AnSgAAAAAA
AAAAAAAAABoAGAAAAAAAAAAAAKSBf1YFAHB5d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQFAAMm
gnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAnIAnSgAAAAAAAAAAAAAAABsAGAAAAAAAAAAA
AKSB01YFAHB5d2Vic29ja2V0Lndzcy5sb2ctZXJyLnR4dFVUBQADKIJxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAJyAJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgShXBQBweXdlYnNvY2tl
dC53c3MubG9nLW91dC50eHRVVAUAAyeCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcgSdK
RSYdOdEnAADLqgAADAAYAAAAAAABAAAApIF9VwUAcmVzdWx0cy5odG1sVVQFAAMXg3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAG4EnSmdjt8L0AwAAswsAAAoAGAAAAAAAAQAAAKSBlH8FAHN0
YXRzLmpzb25VVAUAAxaDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACtgCdK/Qa/aNgEAACe
GgAAGQAYAAAAAAABAAAApIHMgwUAd3B0d2tfcHJvY2Vzc19sb2cub3V0LnR4dFVUBQADRYJxWHV4
CwABBPUBAAAEFAAAAFBLBQYAAAAAeAB4AEk1AAD3iAUAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298292</attachid>
            <date>2017-01-07 16:45:49 -0800</date>
            <delta_ts>2017-01-08 01:49:35 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews101 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>280876</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
CQInKT+IcM72Nbj3qcg+Ztm3MnZ97UT/IvwjeRjv2xvW0bIoemh8myRPKYotkHjl2wqg/+lJssT/
r63/AFBLAwQUAAIACADFgCdKq03mt0wAAABlAAAAFAAcAF93cHRfY2VydHMvaW5kZXgudHh0VVQJ
AANxgnFYcYJxWHV4CwABBPUBAAAEFAAAAAvjNDQ3MDIwNzAwMDOwiOLkNDBzdbYw4yzNy87LL8/j
1Hf2sy1PTdItyEksScsvytUtSS0uKeYKQ9ZmCdNmjqItJz85MScjv7iECwBQSwMECgACAAAAxYAn
SphceX8VAAAAFQAAABkAHABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyVVQJAANxgnFYcYJxWHV4
CwABBPUBAAAEFAAAAHVuaXF1ZV9zdWJqZWN0ID0geWVzClBLAwQKAAIAAADFgCdKmFx5fxUAAAAV
AAAAHQAcAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHIub2xkVVQJAANxgnFYcYJxWHV4CwABBPUB
AAAEFAAAAHVuaXF1ZV9zdWJqZWN0ID0geWVzClBLAwQKAAIAAADFgCdKl5Qf0jcAAAA3AAAAGAAc
AF93cHRfY2VydHMvaW5kZXgudHh0Lm9sZFVUCQADcYJxWHGCcVh1eAsAAQT1AQAABBQAAABWCTE3
MDIwNzAwMDYwOFoJCTA2RUM4Ngl1bmtub3duCS9DTj13ZWItcGxhdGZvcm0tdGVzdHMKUEsDBBQA
AgAIAMWAJ0qoqEc+CAUAAI8GAAAYABwAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQJAANxgnFY
cYJxWHV4CwABBPUBAAAEFAAAAG2Vt9KjWgCDe55ie88OmGCg2IJwOAQTbYLpSCbnzNPff7e+atV8
o5FGv3//iAdQMX45L+6X5Sge9wa/NPD5a/xGdEUBA6fwHKcJnA24sb9PauhzZV7zL6W5V5S8u1TM
1MnC0o3IX7K5VdHzfU0+xiv9hVxUrm4FX82+35ez0JmphS+qWUZToLx0Juf4+AQbtFwicZa4vmP5
JVTxNWeBTrffx4hs3GzT74LSYbVZWL7MdAP3zDO4N23TGmV2B76OfHA8Dri6qU0d2AilGZUKaDDS
ec6IPe8LzjQDeMo+jgv+ONiq/e2IokcbqPU37rLIZWMfrPdqmEg0SgzWrb0FmJk+cP0gkCuP08p+
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
c2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L1VUCQADIoNxWE+DcVh1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAOIEnSp+B8aSpOQAAt70AADkAHABhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9z
ZWxlY3QtdGV4dC0xLWNyYXNoLWxvZy50eHRVVAkAA0yDcVirgnFYdXgLAAEE9QEAAAQUAAAA5Ftb
c9u4kn5e/Qo+TclJKONOQJWTKl5zvJM4HtvJZGtqSkWRoM2NRCqUlMT767dB6kaKiu2ZeTt+iGkB
7P660f2hG1CuqjLRy+XYav8E6/niWheprm4rra0/GFVI/Dm4ilf33anwc/6pnK3nenn+6cO7j+/D
8xfn7fcHF6kuVnmW62p8Wsvgk66WeVl0FaCBX6baun1Y6PbQZylswazhZbzKv+kzQFeBGuuqY9LV
w+q+LBob+J+Da71clMUyn85a4k5Y/HGpK+si6GLiCA8GQbzS57f5vAOLIOzYCNvIsbAYIzHGaEQ5
s2wkERp8uLH67HwfJxYMfbZgMsYjYQ0xf4sJJmcAeFFWq6O3MB64RVk8zMv10vr48QCjF7jY95AL
CCiyGQU4kQyRHYTCjXzEuMvdwWBgkFvu9/iLtm7yItGWV5arscUpQsha6qQs0uVgcPOwXOm5dVGs
9F2Vrx6Me1c6WdVQdBGDG9PBwK/i5b1Ordv7SsfpDgkCv+bLRbxK7q2va70GTyXlfBQvFjM9msd5
Ya/qFwaD8EeiF0Zoe53Dz/7Ec4OJ6/vhzY01vLl4exO+/XR2MN8Ex26xfw2vLycXl5/cdxfwUhBc
m7filYV+oM7PgYRLMKil0f9wfXUTTi4/3F5E/zMYfHpvXes7mLm0LnVcWWg8sO031sBMn0xuw8+3
RxmxUYIRo8kUHuz9BwybD6w/LIsS9OufVmX/OK++/7Bu3v/L//B7TzINBm9n5TSeWbdVbFZpnWUQ
k8NKf4OI0FZyX5VFOSvv8gTmbNbtbDzgzgiiFILR4PGjS736XlZfjpD+V+MaJ8syhRnCXGjLhzVZ
5cWdleosXs9WsGjll1xby1VZxXfa+p6v7q1Fk2bn03WRzrSV71J8p5k8UzMSVmTUGc05LGz079vb
K79WfbPRvISxmV6VxVYJFc9TQhVvKbm8+ZmSQRPPEMebAB+PnxjQEPkHI7/rqV9Wug9ZHRRCITIl
0trMG48bJrpZPQBJjcuFrmLA9q9h3/gvv5xZLy0CPHitM79cQ6Kmo/uxkmcD/CwQDhZZkrAuiHCm
57C04/FSr2qFJ1C82r9YfxLkJk41EIvBR5E0AM38D9P/Bf4AiBg7ZwPyPEeJKUvUdK8qKJN1A6/S
EP9JB+HGg/59XNzVODjn1nD70ihZLMZYYnQ2oM+FIZggfTASkzt6v5MMjVbMREcrgXA/G7Dna417
jU/z1IPMn2t/XZlNcDtyUURVPG9AcNW1XEgIEv48DBLHKEv2GGr5dXBsZQ9/v41MbGRXq+r1EdY3
TbxiE7AXxXIBoVBW8LCq6uHYMDLEBuGw84lnuicjMpXH7vkd9i2oPMZTIPFiHxsfr9+BdNAMoTst
y9mr4zdf1H6TAHW9ymew+40dwc8GzjNxpYl02LH0d2WcGlwgap6voJqIh8k97C81qBevrDVUKXcF
7KqzsrirnaZEB4l8NhKi8WkkWV7khubM30CCw7Rcw/5e8ws5yJtm+iaGYJ3UM1FoJLP0NIp5/DDV
5o9wvlg91LGrjPqW5Rg9V+dUqNM6l6u4Wm3Mfg88DlViua6STeZw2m88RxSQ4GcmUJKBvHYCbWGA
/1e1SqkgWw+GGtKQxnDSUfdrvnqn7+LkoU+dQgmbQq69/ANmNlwAD6aaq4p4dmZNGr4yJtejv8PW
fgWb4Dgzf12a3K6fPuX6+/hPQ+QMWcOtrNF8PqaUASj6LFCYpooklm1AGclG4FWVfwMkBhLkQ1lc
gCvyeJb/X00JBle0g3RXletF/VRDwqKboZg9F08m8Ck8ZlF2+g8c00ZBkKodY943fsHMUQCEPw8I
U1k63QOxnqYbS6elm3MCuwsWR21Nf3W0qVTTKYqx1QTERphbpB+ybAmfaViCIi2/19FJMOzmbdFG
rcNN0eE8U2uiIJfT1hvDvFi9sg7I8EVT4xCnTy2mdRrKZ+rVRKLOGyYN+nVjATV7n25Gjc3AgLN8
mj7M0hH8k09/VodKJ1GcQ1VZc46Rvasz8bguHEHAsm67Jl8gTfWsLfNQFJep4JpAG2Kq36/1/Eqv
1lVh5KK6AtxLWzTFaUtcC1iGMu5Iaztx8v1r81Bv2JLWxdqzxKWU4cbOliy6s5j8tKI2Pt0M2vO4
AF6q/oKDoImxvkC3VKwmX8tlyzFb6T2rdigFip4UC25NtvMn87sKeOFbCc2zSQexdc3TBSZpknYE
7hzEyc5B9D8uJNh/nMX8r1iMUQwWL/X8e5yvJqZShPa/x97ksVCEpjhFmVXERbmcab2oC021NTN5
+XKE+0mtjUhRRBCYCT3yZILH49V9vtxENJRXRvAkK6vhfkJzcAG9y7qqt/jXpsyta91XB2LqsdcY
qnO8O7uZvbHebEp3w80O77Rv/x1/i2+SKl+s9qXYIflzgjWbTq3pPJ7NymQ8/reOFwAyiYEk7vQB
xnWRAylNYNKX17vZN6ZLSd6vV/rHm18Osf4Vi4wt9QZjGtPJZG6kTqbxUo+xcrod4lMMIxnrGgau
Spq+8GZrolEpZFcjxd1+8AkaM+DGvUZ3+VAkt/HywF8GxCvrW5mn1rCD7MXZ8OyNiRUTJtfr4l1Z
LpqCH3b6nShzVkB4tx98CjSVpv8ItLBYVQ9XJZQGw78jriljVKeBfIohiUxruS8OAmmySa/Joip/
PLw+SL01iH3dwAC9fw/xq7/lwBcQ3sMaeL2q0EfN9bysHsZEcKfpX59HzUqle2qelulDTaW47kGf
KQnHe0m7WkzIurV8JsFzbHUF7eldjA9rmsubj9fv/LIomkP0pr17Nv8nWeYQax6bymF5N1lV8aKP
/J8iiE7pTlDd7HbO5ExQRuW6SGtOO5YxJTE2xzmTiR9tUvhGV9/yBMrp5P6qrN1BMOmQ9BPEIq6T
Q7Hwq/YsFx1efFyWyjSV1qGkm4VO8ixP6owUHdrrO1DuHCWzWMA2/kdnOYfNekLXWG1OEMwHRmXd
qDFwQ5vFurC7mqhQWgvj3cubJp4mTYxNJo0vcM0m/0wSyX8uiZT1zyYRgsa0uWOqbx8+S7G5bLLM
dqytoWD2NF+djQeWVcU/xhb6AQwD8qVRIrS5c7GqaT3QvQuCgeTUQHo8QBAyStL8YAQjraZCMPPK
cjdgbONTSXHCpNG+OBqY4vqN44FYGyVWJTtKFI+JIYtKdQZ03ADGqDXgOFzHqh7AZiAz7oaBqQGl
aiUVJicswfR4oFHCTpiIeZ8fjZJ80ZK1vfKwqmzWeQWDhyFJkoqckDV4t7nt8q8+Nhd3bBBWVVnV
l4Gbq7zdm2xwa9jxcj2fbu+fMRsMBl5exNWDdTGHtnI5Hmxv7n7sLu0s2zr8kOEYSNd62TlkGKIz
67XvojDigttIutymLg1t5YW+7UYR5jgIQhKQN4/fk7fUxVkPBoBgMEAWbQ4Qb/VydXOfzzepVaNB
NOKRdHxb8lACmojZXgRPXIVuBGg8wqM+NKektnFN2TEuTmQfrvXCXF0fQuPEZ4EnsM2JS2waOZHt
CsBHiOMoj4SRH3lPgHYouIWOT5MjdJxMWZZNf1JyDQViL+El+AXNDn0JQD1KIhJ6ni0Edmzo4CJb
Id+3vYCKwCUEhTTsA9qWPKpP7MxGcr65v1+eu505h/ihsSPH+BMO+LPjg8Q+3FyGykOuZ0eR9GwK
iWa7AXCjlJJTRyDuuW4f7kZiP95m7BCnoDo9wulIAeFJ+07De4D6xHeII4ntcYBHFVa2RyASIkWx
CAPMoDM9AfS0ZzeDh1AVMmd3HagKKupjqPuz2R68EnuEATKbODiEpOLUdt0A26FHSCiRIl4kTzu2
kfsz9zYzWsgdfkwByhG4DgaIfP/tZ/NtiZG7zTAl0MgBrBGkmacCbntUCMCqqO3hUNhgA5dUONzD
CrA23+04f5dPK2DC82gLbnlunPgWWPM+T5b9oLcXJMvzYyCDBqzZGkRG0EFE7z6kKmZQt5gTU2tI
ATYhxseSOYJGvu37KILghXxzfZ/ZDncl4n7IEA4A93pZGa3n5u0DXRI7LO3qgg857WTPxQc3SfSs
uVW3hgTxEcbwVvNgYpNjL3IIM9+bAQL1VGRLBEvvIuQLjiBgGT/23+bG4MCNLUX9fmxNaRsjpsfG
xGi3+nOdxKB4u/ZCiREH7GEkfOQFzOaG8imLPFu6QWQLBSHrh75yXHXgw66gQwgEx+gIAsG63oMO
/FkudJHMwJEjZ2Rm17/NPuREnoyoqP0GbowC2/OptFXIQp9JppAT/jQMP4Bg/12/45qxNtysD262
89imGF1C4V/ku22JGKiUeNiVvrADXwIbRSyyPenDLu5y4jHHp6HwDrzWSDo/IbMDihyDYkp2fGgy
zlwBW0NMzGzBgHcAmEsAAlPYFlgomzoElpNIiEcWhsiPAub57NFUNoL7vbgdHbTRqWPIYhr3QK6r
J8CMR6xeeuAbeKpd6jgEey7ntosRECYj3JZUEdvngQMJhkLX9R5FXss/Db0eHrRhJn3Ys7oAgLW5
qe+yrnV9qbqJAEYAtOEfLCLfUUDqjDvUpqFCtmI8sn0PdvyAY8mjoJ07x+LaaJJjT1KSkY4n3cWi
2c5HCuaa5nLEah6HugNHQDxBIE0REiAbYlTavoBaCdgqZDUfnnZhI7jPf/5m7BAulc6x86hU6hju
TH+6cneKTOrjEalTH36bxfeI8JxA2W7ogScDqIU95kL+M+UBtwcYSfIUBt2q6g+B7WjLCCWPE44q
Ne1sAn5kGCTIq/obKLDl19+8NO5XzIQCjhQXDrE5DxEQggpshR2oW0Ppc+GGoWLyUe7aSe+Hfxjr
0RPmdya1rdY9SwcfdqyO12lejtZAVcuRa54/Fibw8AhTYzr8MmToSI8TSNWIYCgfCFSTniASYo9S
1yGBAyX1z8NuK/nEsm2HDy2Avf1482aIOx0LfgugYBhhE2wUmVBDUcgplsgmUkHvBZUjME5ovvNK
ghBDpIkQP5YkM2gnzRnM5uBq+eh6/Rb0T/ktaNvksB6bHFYnFJDFLF4Xu8vCoSP4iKORNJUQZWEA
1brNMdhDYTeAapMFduhHFHsSYZ+j3v3oUGIHCu+Bksrt5uh+iup12YLBoslk7CoZeBG1YbuGhgK2
dFsR6douVJRUhCLkwSMc9Gl/xvWEWrKNo2WCQ/SxCY6Tbb2ZrBfLEdmxOuW1AQpzyVwG8YHBgZRC
VeQKTG0/JARCBlHHl21SP5TTBpDgYwASkS2At+8+7twHTGgqycBxuTJZFFIogULwo0scKMyJxNCY
eEr53qM08vZECdRMzxu/7XS3EGe0B3Emuox+reflqv6SzzYDDKWb9wCl6YaJlJgxBRQQhSbHDJ17
kY051MIIdnVO6VPo/FjPqYjozmtbJY4DgRNT50+7BcpOjx9X07JoulGMqai3q+YBDCSB50a+cm3h
B7BYHMNWhaEblU4gsesKaKHRo8XKk9ljj+UE0e/GD83mlItjs6kpbuimH6y/2JXFBsMmDil2RgoM
ZA5lwCnm4MXUkchxoCpnjh1AFYEIc0NBH2HJbZuiHzXv20+qtlbMHgNu2yuO9zTOTefeDt74uw+a
oIPZfBcd6ihsCinJzE4eYahniRfYgQqgIRJhCA0Rx7aSqj7HwZKJY8sP1/O8qwFGAXexWp6/j5MP
N/vxQRvp8YYGKyi7hYg5127+k4euNidb+2rEwWY7QFyCCRw2NeIDh5kexVPwD2LYiQR0+TjwnpJ/
fbpOhGDPzEHbENVnXdq1rv4y31Vc6NnS1BlkJOAdJUxIuqETcjeEEsvUiE7k2soLQuBGipnjBi4J
HzmlqNPk8Ww7gHCqldjP6BjZQzQC892OU84XOWTFZH/KKQyduJjCTg2JFnEV2VSCkRIcZjueA7Zx
FHl+0Lt9Hwlsw8E9BCCgodgQgLlzmn0bqR0W04e5giOP+9LGikMlK1xoIgT0OMgjTJjKyYvc9v7X
FtNG0FNFcBGrntbwU57q0iy5rIvqpp0FLgWywR60VHWfLUxpCWsOVQ50WtCIMeU/yrO15NNNYT3c
Qu2Q7Bi1ZMnuYODrLF9pujsRwNAPAtjApwFXUEoq7JoAZZGtuOPbQijlEOUHknhtz7UEDdraeshA
xmgXSQffszFHAHX1ICNAgClsuwj6aMqUtJXrc1sw4fieEzEodjuly15MW/20zwNpulXfd188pITJ
kaj/Q9qmFvR9KiOoAEPPgVqQocB2fUpsqGgkcjF3feT+7JTkUPwhPDF1jr0D+xrunNEudbI2/wkt
21+aAteb9zjHxHBKAFVyFECf7EQmvpDr2l4oYN2E56lIOjhCzk/j62aj4rGa9Xhey6AE/T9x17Ic
x61k9/qKWXoDBt6PJZ7XipFmFFe2txPV3dUSRxSpICmHfb9+MlHd1Y0qNNUzZng2FsUqA5koIPOc
fEDr9dZ7uozj//z2l4eHu83DHxODRoNvqalrjZhfRKnwxIIJkRmUiDSTAgdWAK3JSqvXsI6zCP03
58fn6hm6Nyv1DICp43Ya/wD3iEPM1Aa9WElO8eQ1CZgbEzFocMJg+pGlMWA0UcncbufFOI0MTK7R
gVnHVibG+3zQsVKLec2XtJdmp0KEQ65BPKc5GMoYCexsCcbcU2Hdj2nvi6t5/kajjLBirYxw4mih
Nk9fb+h8LtE4mYyOREbibQCzrgxAAp0DUUkVHyLYJ67bxTwbo53brUmqAbZ3/JgFwM6H4fHpFDAD
RnWDp41r453PksBWBWjFGKxYMoKEVFJ0WmkwFq9Ovf0vH6+gkUuhG40tX/tRY2ty9XzrvMc+weeH
79vPK6gEHwFTQ1MUAn/A1YCF5wYj3QDHwF2AYfShKCB8jnFJfdJeXgPSXpj2XN3Va62KctNTcVyq
ONx/enz4HTnRRPcqF7IAKX0CNxPB7YUAOytqTVgsiUZHM+Dqq/Q4jH1B/MPTVmrLOlI7fjwG26/f
5mgJbsDggYXyqMHcS+ClIoCDTMkQzVx0OVhEYQsHOY/QTDzs1qkDs9nvFg5oSkD/AfhcqIkfA2yZ
vr5PIVsBbjpJ+OZCAOf3OkoCzJElgIwxXxGox7EvAxt8+qYVcA1PzVbO4aXh+/MpnmNxwZxzWTNa
4MSWiKE9QXyKnqgcqXRBq1QWkOY0xpt2FtWZ2rEFBf/57SmgABiCV1eNqFQHo4NkkcSiPLg3WCnr
gHDnkkz0GGFw6dVNx0maS86uF24AtXhPV3XMKZz1fZxymYVREThgpQS2HShADARoqAdnp0OKgVLw
J12sdBqtFWJwHSGGJRn+PN59w6UWN+jZJH5zoZKXSVpA/JGDp/AMrXQkEhiciqnIouWrIAmY+sK6
wpNWmW3H5ezkdkUegYT/+XXzcPzSNfSLe8hSgKasEgodgOEjiSywzBx+skCGAWJwHlzkFrjXVcx4
OdXlY9i81qi1px1Isj/RxW413E/gO2+A7qNTFwmAXQGnDogIADa4D2IjmLcgAos5AzxR7iWA3Yzc
itZx8pZyth/3vW6BnzBBU7E/OgTACCJxzIWIjLgtwgbikeQUc5A6S0CoL0m1XcsDU/OOPGYZ7fcZ
sCOtgZAaiPRJOm4kJ8UivgdHRTxYIlI8fGoGEL94+XpxOp8vwLjc6mJsT5dhrtP47f3HD3ffP93e
LyqijkFiRQXmecFUeFhfJxSxGbiVdlEZAFEyaPo6QeILkrTauDW2t8y64ya+3T7c/34WZq8xNqo8
9WDIwcI5wD/aEls4fBYOPDV5rkNeFB00o7xppxo687tl2AyLDj7dTWs4QZf6A7oWDvQ8KAeoJYG9
84YBIAV3nLJRGOb1JvL/83JOz1qBB9UReDeDlkVP2E+KshtJJ9QQAWg7qxCxYOFgMsCoVfYEHHGM
Fth/cbzvJZpBW3l2oifP0grBB9jffjq0qhxlg3NZZat8KAHNBwGIBmsLeDbDOkbwZZTB97W8FFpe
PvbrCRo5OV1jLvzl0gScAs+/j9t31cmCvYT/7/BX/BsGS6RlXCUANAVTZoprAjRGkVJiCjBsTEa/
WoS7ztx/bXrWaAq4cK3pdi/220bT3w/VFLbuZ1s3s1UFYBLPJAcBNE8K0M848G8CjmmBz6Es/Tvi
9r+vSi3sjq3Rp91pukAk78fnAc6p0jXyi3/g3qKKYcQAHAkFtQycVu8ZBrpoEtHarJ14Ua066gVm
gY9aSXsmZbfCTh8/g6G8/4Q2DWyJqPIef8TYUkrgYwCy6gxgDutDwUzDodAuFCC7Jkhvr4Eah2ku
xJWmh634w74j/mZJVwERfxzudzWyMVXjcF0tDa+Ft0ZrzugUJBABWLoPgDEkzxQ4fOI52ysLMg6T
XCzJODxvVRg7X2Ckc+r2A6zH0SnKGrYGR8IMVrxIiQTBJ9gcTDLgU5Rn51ky4uX4V92wb//ziljB
PPm5yG7cr0V2e6oXm+bFKhIB8NT4pIiKFXpT8JAa+KnlDHB3iJI5/VerSC7WhLi9WbPpQUhXMV+L
sv2vEePesG2mjTP9hJ7d0ghkuiZG4aBSxQmgak4oImuuTIzRXouvYZLLqBoengs/SLEGVYPE4tdp
x/zxbdupm1AyMcFtJlRhQCB5D7Qyc7QwhvPiErN9nzUP1wqh1yh10JwfmV945z/O+5ZpXo9akJEz
C+5H1dqnqBMJgDxI9NJanXnQ/m9xRI18jVp6t+moNc4Qb/OviqVmTmsrCchKcmVJpFgCYJMEA2I0
YQbIu48xCLnIRTSjNPOPfI1QhlGMx/njP8vH77eg/nnAE1A2rGyyRHsbYSdqQwIPntDIPQ0+WB9F
K0A7TCPBnq5B7rBnM2YD+NdidEOTYloC+pE+YuqDAsIF/+V1iVwBhOM/CA7/Lwo5evIy0ZN3Drh/
Gf/8+mmOz/KphMgAZ1RYCJwwZ5wBEAOeJNnZaDQLuuR+CdH5WAshZEcIOZe/PB0cw5zHAkuOHLKG
x8DRRwqbhodsiGC1jhVwrwjUSiNMsnpRWrkYrZXEdDbw3s7h8vcVGs9ycCymFD7SUIIlJmMFRAqZ
eGYUMUU4CV9RKrXYwM0o7fzWdeZ3bOGR/2N8Lh+PKSo54TnJvRJSE16DqwVMqcsRvoqyGgtlPSsv
k5M6Zn8b1UetnE715LTzQcPGyY9x2H4eT2bM1TpyLqwDOuJJsLkQAUQfEJovpIScMmUx5ehfiZQu
hThXYcPp2g3DL/fLQPa4ux3QcD49AbnEm4COIW3jKsXOsOWBDYDDhU0HGIKANYaDzDL4iwAcLPAf
4M3l+JfA5/K9VhtGO9qwJah4+jaOsPXAqT98wnuQzsNRAKUPqcL6JwZ1s/LOArYoEtPEHBs/QgYj
HQAsMRtha+fXCPB9rFL9sydUA2GXry1WYG15N9ruOhUEpUnz1tJoMLXo5VliRWA6vuRaVQdIXFhO
ODj/ZFSxABl/GAX6UYa3fedNK+7Y0cEtAflqIabqM0AJN6bWSvParaODp5o7SpLEMgMFDMMaoN1B
s1w0A56truo26U535Sda1ppt9LDtqLhV+/FU+fKIm/wUO6hep1hRJKBbwhhAHiHBxAO98ISFHBQ4
XS/oIsGwGqmVY6t7cswW7J8DnLf77bhgDyUDv6SJoxiV7sCaFljiWITioZYxiFdiD60EjfCuQ9w2
g1rars2w/fL92/kJZzfmRtbMtKlx4SKozNiY4BwDMmRcBh6BEa5iVRQqSEuvQuFhMdO5UtOzRv6h
U5YBvxwXWbFvwFjP0lY3H/DvlQpNJLQS/mxVweQo+BRJaiViAAZBIiuKiuJcTP41bNSHVpbzt+qj
hX6972Pn/BleizAn0KxR1doKxPayeKIAABKBRYWWW/AsRXMgHVmCF+/iqrPRWims6kkxx+u+389M
h7sahwgsO2lINEZNSc8AxIhokYFxaGfLBQHmgRbTd07YiKUqzUeuVVVnlRM15GoEeCB1w2m1Y9FE
DvaKxKCxCRpWx3EAe0z76BOg0Vxejs2fT9H/hOdvnCux5XINTbdcDcc1fHd7Pw6P/u7TeNYyNzO2
AuZCZsDGhWrAOhFcqdXSEyA2JgRssuLpb2JsHUFbRd2aCKBV1mpS9GHz39tTQ6i2aAyTUklZCl8C
wBsmfRVxjCoiZTK+ZG0jN61NPh+lmV7rdUhhq+3mrIxt2NzOvO1Qy+Q4zyUITWgGyyXQJFtuKMmW
+SiFNDzSVR3bPE4rQMekbvVmJm5P327v8TLB+Rs7U08tdXBYjC2EFs+wwU+SgN28wDxK4lHxuOwC
aEdqhdiInhBilb7cPgy1Grl2l9YOV2qMNT6QxAWKoYBBOhfgPwI8FxdRGfYD5AJjXgIs8KiVc8s7
cu55p6rB/xZ/Tggtp+AzbBeKjXy1TNeXwCJmAKgF3g3IxEes1cU+WPx2VMarI0A4ywsxIHzcaGA6
aHFrBO0kg55qR32N36LbrEE47SaTrXMo2gPwF3CqBewJxItAuoAJB24wQRBew/kg5fl4FONytG5+
pVVV246q2p76fZ+Hu/96vv06Pj0Ppw0OxvsGPtX0rVIGAsm4IcYj+kJg7MF4EZ8BOccAvwxXQcl/
fPg1HiqRz9S4JESjBjiUtRp2MydDmwX49fn27tRwNH0sn2jyEaCBs/LQqeCcA6zvc9SgXEh+gSAv
DNmKtaUdsbZ20Rt8P137s6pfFFZhJF0glNGaOpWiIVoJENDCIjsFdEsiIFBFJ9pU5a7yYv05Gmkd
W1u53QYhwergHtv0cdfXvVDL66d7ADQDaOExZSc8HF2B/aMerI1IaGcMmL4g/uI9AOdvnKuw69Wr
7HaniH+7GHNu1AoM5daeI6wVxTyF4yliKNeQgBVCwTqXNLbgR3bFMq9Xd7fbrKNHI8PwZ5uOu61f
pwzbcSJu4maqPql/Yqu9kpTbDDiB4x0h1FjieWAEvEmW2G2m3FW1J8cZLtiXw9M3rbRDT4Xd6qaD
j99re00t6AC+Wctdp59qUigjldaYBcKQWAJHxHQk0nKuwHho/oOatXn8S5cbHB43svNOF8MoVnnD
Lej8/bYWRh8ay2tJPBNWC0BpnqI9Z3AMrQORVVFGGvDtgftrvdGvby/v6V/fNjLLTjnlKPWyJf7E
gWprMhbYsNodX9Ey4+xGTIbaUWlA2gy7WSgs+WDE0hJISUD3eQAC3St/u9AfXad5oUO6Pm/V0T11
zNKt/hLjeWFoASsHSBhOpML97oB9OAOIkvMYbGYsWH9VFyAM25cWHrRidroWRrudL3R45z/4+O8r
OC85FzYDzdTBeGRoFIgyWGkg0Z5Gbg1n4u+C82cSvmm14D3VdmedRV8f7uPjn99OJZxwbIw6mkeH
BcZAt4BLh3p/DlhG48EVgcFnHjhqCv5Si9Fi5EYwt+ucTjcuO0WGp7M2kdlmS1ZwIxTCAmYLC7ZR
euExt6+MyclZ/2L92jxqK9I4dkTam1XIEBXz358/z/nvGnKXwWojMqyUBuAnSsYqdUEBxRofVZLF
hnKdyTiO/1IXGT5vpB/sGtfBLzfLW0kO6Y516oR7bYNwEb6vxdt8gLlZ/NJKA3WzUrsS7It3k5yP
vBBtHeQbNyt0He6+j88PD9O6yqksAv/c109ODc944VnhmGbiEVh/YI44ASIDYzBUsR/4kHn8S15k
fqGRfmNlR3rn1mUR2K45ALF+7BRGFOwBNZQTFrESJSQ4Qk4KEk02KoogJbu2MGKe5qItnt9oFBl3
HVuwV5vF/v4wPu4fHr9irNHfD3d/Pt0+nVtnalKEfY37AhuGPNhpKxIWxEfJRPDA8q/a5p1pLsTT
1i+eq7Wneh093Nf21xajbE8V3BixqO5e20P7fM4pZE2KEhjGxdJljklEEbBIPFkn3VUXMW1/VCV+
/karxWbNQPds1cU7tRlVEos/4UYTh7SfqFYoewOmBrSgmgds4UXmbyOJ1nEtE6XpBxeKzGO/wJ/x
8ZtWUNeTftkGkm6fvvjHze3z4yHdcsxQTLeJKUe590SJeh0IXuljKAOskpMKSgn6g060xeh9+Rcv
LbTYd7SogfTWAdw9PH78836Lq+8Oq++mtGuJwmROgbMZhyXMcMqTxBJR4eCRTcWaV283mOW59MUO
jxtduVsj+71gbD9uDsDgcdw2sEAIdeJMkaqSDPFATTD74sFVYBF5BismAZ5FZi6AgnbURiThNh2R
tstq/X/gv9B37niDdFQIcP8iYN24AzDmE4DG6rWy83iN7ouLDiP2lw4etBJuO6ZG7ObKhM/j7dfd
cEeGp/tTcYIStdQVJXWWpSwp4G+PW1wX4JrZAU6I1mMiS8e0qF9ej9gIpDr1JXtllib952mUdtlU
EloJsA82KAzXKkcsIBhSogQbAjQzpKto5WHwSy0Z9WErdOf6p72yZq4W+Ayu62n85eHLeH/7r7N2
QIyKGBds1Ii3KYLSCGTY4WUFUsNaMAdQJS3KK/rDNRL1LhnYazl2qOLT8VRiBeW4K7d347vbp2cw
ZbKm0uAPLGtgicMeNIEYDAbD4uKFLPXeIOoFB+jMWXy9BoJWlssVn6d3WvXlvqf+/mKFdG1pxf/h
7Fds2uLKCmYMw4wbFp5orjB77giPMejAs8n5r10Acnre6LDrZAz2u2EZqejmEI+3tdS7WqSZ2J3y
2XqvA4mZOrQqwDGwsIgWB6oUVox5/c6xWZwXUovLIM1+t85dw3bGQEe3q/3ffpquT1RGCHME/5ln
7LoxhFsMwXNXm4GwhZoFET0274qrGtpfbmN/04i4Btb4yzlW+m34eur/qHf9xRITcyGht4lY1YQN
WCwSGbnIFjQobHHHxNkYzdydKycBfMhlX9C74f7T9+HT+P5hN94dYv5HIKxsZNZLMOEJS81iwJaw
SIlxAPNdYoZ6do39XM5xoZRp8VajzTDu19oM+zlbVa+reB/vbvHfZFwUYClNk8GYkKF4hwgFxup0
dMCzJECWYJLX6fUKsFopGiU2iq+V2AxyzbPuxt/OLwVUN/RG1JbP+gMiAjRBArxaZNpPu9k50Ckm
T2GfgP29rtTlMNdLtwL6Vod9Z1tt4IweCnkPVHl3//S0O93kovAUypq2Y9Y5Z0FkbLbHGClALQWI
2CojwTkzkV6i4GfjLsRya7G2jM45H/hGT3O+GiXJ0sFBo4IkPG7CF0z+C02A46nobBaFLk7a+RjN
5FvVWZOtcYvAxO39foaa0uA/uzuVpHjvONfYJZ4wjaodgQ1piY4eu7JNKfLFJTkN2wplhrVQu1W5
3+39l6ZehtbyMM7q1Y3F6IjXzoqCWF9jfQSgfxIBE/siZBDCvka27+25DA2XvP/S6DTyzkKPWh2v
7cG7CvBfmH56fvzzdMXCdHsdMK0ERAXsWO1vlckTFxlYARnQJtPsNPt/vGKhFbvVWuue1kvi/D+9
XdlzGzeTf9dfwZevyqna0eI+XJUHHAN/ii3LG8lJdl9UPEY2KxLlFSnHzl+/3RhyOBcpbaKKymXL
cwANDNAXun+NlatX6wb2quHi1rMkk/VFGTO2BE+F17ADI/NKgZSJ6nlHmbn9J0fcpuKAM7f1RGec
N5YOx4nivzvOvWqD7PbXZVq2DgYIrTFzreXSskRBxmNsUXJZosaidIYHrqgPIT33dAO7OOwqwLvt
YVAQO4NhUCr6OMVxmeucQLedxH7cfMAYctoggd+kYIiai953dAhSxOGReChdUi3tC6boDuk55F7o
P9cdvRgZPUPw0Y6qtqjWv2/uv6xbQwfWs8WQ2Q7fKUsU6KOBeAyXiPAxpbEFEUqVshSwfJ/lsop1
Vztq8YEDIxs+eNIdhRkb2uCoEAMew/TL5hF17tp7UvtOXChDIl4XOlrMp2Ws8AnUq9LA+kwiSK5f
hp+2KDjAWFtPdMbIh1B7liojBpi/u7I+rzT61/OX2/6GUj54G8AUKiKqXZxiigt1ZcGcTCVhxkX1
RJjIrv1D+L3b2x3a9RAgHy+K3sbDBKWmrhKWwsRixG2GGTGzDEQwMEzM8MOIBC+jLUrOHfeJUOrl
E5ZCr/VDJkPvsd5o5NhoFj2cgS+30w06j5sULrHzxzPrLJFlKpTWqL1zXhhUulTgzoAN5B2VRyEQ
Oi33aKuGtFnanMQs54/oSdiHz0lJT+FPzuQD/c9TAUqFQc9aFK4AYlyRSm5plJHJoPsZ7p3WOpTM
R2QjXNQ7dfShurv/Wt0sb5u4ZpEtG8nKxG1ZUBExiwHLzBBpCyGVdIElY8V45Ge/vS4xdj5CzLRR
Quft9BCNpomVAkxwdB44j5oJ+hLKUBaOOR0EuvfEATfjaJIH9kZHSLi5GcMD2bH5i8u9BNLM1FBe
9S+4jHSgzAO/0gYx1EyMhTcsFjFIr7QBmqN6OSm0p+VA1NflqNRZDDPg4SKlvbPWzcN0H+DOSCNq
SsspGLa8QEyfgnuKue8cK+oIK1VKiamjp62tdrtk0RGOtDBkBAa+r1mC5jh5xTUeHnAr8s6xWtsS
IZCJNiAQgwtYjCQUSRkfPGUOJOI/p8HCje5YzWxkrJXafYKrs5R6uQVcg0JuQRF3wgE/CAHBLhQp
EiJEWssCJ+KFcgv2vbeJZnQYwAQXF7q3bup6jI05q7O7G9kImKyl8QiiQjGXMajC4OIBNsIop0wr
ffRAud1uhy5R6SFdatYPW/uvx+nD5s+tc68OjhWYN535bCidVrBaFEckEVCWCq+cKYRWPqnIkzTH
ZfC+8QMI7c39ky6Vaoz0Blv5cfXHcrVHeZJ5AyZVephKWYhIMb3bIiy6BNXPIk66Ly0R/EAk/r61
HhnzETJupnuE8RqjoZuc6j1NFKv8SLAkQOXGok+e6sJEw1NA8Iv0Ysmprf47lI9E6lqs73QwQipb
Ie/c+xEziHuOYJC80CkgrBvH+jtgRwjOkhM0xhDLJ5k3tn3E/oG7HfpnI44HuNgP05hhLeAGXVvl
IwUmRMRqS0mhwSM9onMQmH1lJA1MeFghx7ZTu8kuSdaMkIQBDttaJvn9U79fDUyhbMjRAKDiCxNi
oTLqvUskg0iBVqWSYDqyEHvwkN3WuoRMh4oTm8/JTqn7Gi8/NDqT4rX7EvRaJQko0wnDxqM0GHCf
QFYl4piBu/6fCsLak9cZ1UKMjGoh+1l821zM9ffV5nPVCYZAD+cWBLL+BY/BaHQELT9ZYoE7pnyB
0PmFtFh2T1KWnjgs/yvSrk7nuxxSOMz5ax7qToXmI1MxSGgMnx9Xvy9Xn7Zk48mfzmH2Osdt68SM
DAUheGypYBtY44AnYboU5ZJz/zwktm4nB7Zw96HOYG7EUJmEi9MdK9/FB99vljctfxvZiccojI8l
xxMljYWLAnB1klIRpDag7VujQzgaeNxquEuYHllwN4NZflOtqjoIYnp7ubl/yJhANdok43WMvAmG
USFALDKLiRlcFTaAzYS40CB74Cv4ZzkZRro6cOA+fLA7tMVwzkENUgedYGcXueIRDGtbiEFb9Cxn
l6ckNiOhWQQt5NRjiG/QuJmcdiDM9BO52rntQ7Fk3ZpHQOQwoQquTJscwD/3MAJYEWUbZ8FL7wWD
CYcVAYQZXdhEgM8SUxIRBdEudLnrnyM4AtjPUGhyysViMSy49NOH8k3b3vewOqPHkG2wZRA+Px94
iaJEjDxOSawLvT3vLAUbP3Kagrc7hNNhiTC82C+ydFnNsSTrrw/w39HoO5oMBjhQ4I+YoeBB0lsB
f0UVDdNCwVp+Vp2obkcHzzpbz3SHM6K4crZorIBvd7esdeRp6zKB0buoEN4lJkTWZyUB04vRIkmp
YgKV0GnaXQXtdk66fU3HCGi0j9vp6tNy0RL0aFiFIBL6F0FXoltVOWBWU8mdpCkSw1i3+3Yrve6H
aifnpPFHTB/mn5dfq/0UcI5bgeWsT65BoGP6aUJFQ+GBlAe2j2obKD9a9xO+e42ddPs0I4RUdMQR
kJEWxjNRNQmwCTA/IBdBBXsGbDVGEG28pESxwPjT1Vxy+4cVyHy7Q7ucDw97ueLVYE/gBLyty27V
GyL/mzFjcRuglYxCh6tECxcMYr9Rz02wz8rXeb7WsCPk0HbZ3u4MUg0TbS3iPe52SmYkXXvZMJc0
ol4B1wR7GdEArADJGrgARRCLwYX0Qvbyvvcu0WqEW9lZ3wV+EG9Cg3EFEokUBAwtLOWE+cGJF1Rg
Lop0qnwCtOU41kT4z1GcCSRxqDDw2SDrZPq1XRBhV7dJwBBqnVRQHyMBriol+sJyOVNEydawF4SR
3pVP2NRPl/BqP9EZwmzEVQEXFz2zqhPB1aTu1iIChIJ0KWQgR5j8ABq1B0tbSm7gyyYwb+NxGMp+
020CBRkiK8FFtthpi7d/3k1P5R4WF6NdAgFbn2K0ICIYBSdxm9ICRK4iHHGGQq+OQbuRbu8j9j5c
7Ae47UKEPi93RzNSEoJhd7TUvpQMdG1dIjIEBWW1BOZBy5K5yATI0RfBVdgFCv377Hgg0b/POuNj
cihYBZv2Uzd6IM80R+whyHOONAAJAgxEIvSQxaSSsgAF1yHEcwLTmpcmPE9HeBre+RC0M9A8IyMD
uZmNwNZkyXB2gcDF2xBwbWu3W7QM66eVGtOnDPzmytIUxIlotbJK2/Q8qXSIF7Ye6BDPR46YBN+j
nV1+wUoJo2B2KsFKB/OnMAQzeoyIhQHFvvCwBYIoI/X+n4JG6FPZHSKTI0NkDZ+Z33/53j5PoRkT
zCEDx5C1xDE/TMBf3oMGI4KSoEBRBtrpgXjpdnNdSobYZPliX4XJ+w4Nzwz0InWOUldY9ZGBNiyw
/iyzCPbKMXyF05IFanj8y5u5vtcldVGNkHozpm21coD2JkgpQU+xjoEJEkCykyDBZlOwPYXG9DOL
mB9Prugnsn86j7Spl2IYrpwv7j45mqyfvncOT2hj5MOmszSgiihQeU5RYpY5gro4jKdialDbadBc
l5gh0hpcnDaIdN+mD3tDclu4lIO2mpQqGB4k8ojhkxHEiCZJBCMt4aEXMd1qpNO5nA6tB7w4EqHX
cy2BSYbluYTJDpwILAp0G4qWLS+TLHyKBgxKrHRFQVUw4mVcVyMP9sYzGxtPk4P4v4/Th+lqs1xV
e9zqXAlWUAV2eEFyEW/HYADoRyiF9lwaFS0ZP9fot9clZjZ0bWBFsd7kfjxrq4/1HoGFVEMaOO8l
AysEhLVGlG8gjMCyK5WSPjoTR5FxhhKs3cf4zLaf6IxCi5H1qW8ayM2v58v1vO/D9UlRlnQERQfT
rxIqjgjfaIDtB89oGYL8p3y4e/q647oZGl3SDKJbahJDG5E8nz3VIFv55MkgOCsBvusRvp67nB0E
ql0yNnkCaqcqj2cGjPRxSMsYPHjSJb8aGZOZj+gau+2T62iuMJMEa7blcCz8FwV4SSlNxBVRY0iZ
5qZwGBcdkjXcR1EG459dIKPX25EaGb0nO+OzIxJSWmRXnWDcu30NU4KrkZiSZjQThZ5PHlF/kiaA
7h005xIWZnkUd2MkJETaahg4BBteDMLNsarysXiDmKxTNvCCKId+QIXIKzDrkoCOxIKjJriXM927
9BwKTG8/0xn1Qg6NeLg4PxZukS7Lr1jyNHufeD5mygby9ne0kpPEDHRUV7D+VXKgvVhviihBsaIl
tdq+4BTs6Dnw4PZub9gjH/uG9cE3B+6GGvkjKz21R8MBY48Sod8Fun+5owVYbbyIQfFSG2KZ+RvY
5NubHdJvOBkhHbWLWT8top0brLfuJZ3dS9RERil8IIcJJdxgEVwNqgdsLBkFrAmhX/5sqk3S4QyK
kQRiq+gQmc4qbhv4h3S/vr1efF9N75b7ujXqlCE3l8nGHPCD6G0Ft5KB0cgpJg0xkiwvo+hl9A1b
O+n2O7ShlCB9XRlE73RRbTIa+3qeQxzqj1CvnNIoqhKhCNMQsH4N7BZgDYVgqlQxUheel9sXoZu4
6+ZwsMPgsZMu9aNDamym37+16loNaoF6jmCUFmGwE4Js8DqfWTBPLNWmBCYwDi/9baS+FfY7FHrK
ivmgmgSYt8dhCDH1PYGe5TEFHmzVDHoEdIIZnF3SIamnoX6PwhC2nzjp0jvkMCobATvvKOs5R3WK
inGKYe7egnjWCcFfCfyXBjAGg0qMvphzdMTjrqaCjJAsmk0Wl9NPq/v1Zjk/r9Zr6GvdS1ciGWOD
Ce6VFwUohTAMKX1hA9YDkg4sB8a5t71wg+Pt9khkYySqBqz9rB+iBQq1oQEr3MmEoA7ApS2IoQIj
4rxmzilqX2hWm847JM9GLBg1m7NBDZ6HanPbeDxNzkhGXSdYEl0JupoghgGfoKDmUCML5pQzXmmt
mHnK6dk03KFsBJcLLs6a7/0m/VZnpPZijFLy3GN5boIFP7nUpIbjAkuAWJ6M1vqF8MB7FHSor6ZD
zUVVs/4Zy9vqYVY93K9Rcu+cFdQLLYRHqHWssmVK0NCcVEXJWOQMjG5WHg9j3zU6PoTd3Ta5miyG
5GqqxQC8HIQGsOrsoKjFhdXslNeCTBAdMOuMCTRqqcQiOQRxMKInsDOYeMF0ih0lhyvr4N2T7nDk
2Bj7/q7fPoQtFc0RBY6uZKBCRlWkhOEyUmJuAVWFTcDDOTAU8rzC9vvWxynf3+/SPhLYhBePKMJj
yn+JxggWGysDOuGZYKBYge5hJbA9obzU3vzNb9R+ojMENoQKhIuiOZD7tr7dtCqL1zG5mgWQL04g
Iiyo6kozLAMK9pSxzmtBlbG9LMJ2M93+RzJnYGJ4P2+omj1+qt3rqJnmtFCac0IZmNosAHP2VoCB
ajQoRyVsThGMdsDOiXxeole7h0OZMvsnumMYSXiGi9WwnEONLlUXdFBZqY7KMk/LVKCVA+QjakTJ
UsG8dzoYl6J+lm9n2/jByg4ZV+qk/La188/vF8ub3YHJ5ePdHbT6GgYVprcwwXegg05m3yf3m8/V
w+TLwz3WI4C1u5k+fKoyRurmM1gI2xuv82Rspuvfr2/uH66/LBevJzVeXF1O8noOf2+q1xPSvriu
NtfrTXO92/FTzZO/1zz8pzUqmIHcHwJsL1fVWH/MMvv/HNLJL+cTTG9sz+/P8NTF6vb7BLMA8c79
zaSRXa8nV/eb6e2PnJhTez55qNbLBSg0P5K3r8i/fpis/8C4k8X1/ePmGsh6XOUoauhssX0DVal/
/XDy68NyM53dVtAAdt40C2r3m8kfcHNTrXZtHuljd6ndDzax7WWSx33855ezn68+unfw28/lm7OL
95OT7b9X//2hPPza5dn/5Lvh4uP7q8mr1f2qmN9Pb6v1vFr8MDn5cf9zoIHm7u6XEzffLL8iRMLV
w3SOy3fkhxFh3jb/mZyEN5N1ViMmS1Tm1qNdUSGadwS8k5Ef6xcmeL4z+g7r9BO3lRiBUaAL+TFv
yV5vYDuR89Y7P11Ofjq7mnyqo+qAxPn9YqSvfT/80Duv6sNtnNlM2yl5s+9n97N7ZgJLerpYYLWF
CRCNori1PH44AR1mVd1OHF6ZXKzm1fj36ZB17t69uwhH1xEl9pTvhk9V886nx+nDYvIF53rsh7Om
Hz05+VBv9wl8oi/ranK2url/cglcXrnwdvLmo/s5HiROqtanMfDOZjr//YmNAVqaar/zy/l1HpG7
OrItJoI0tMEc/FrNMAboPE//oX7EnjZOJifX19FdueO0MXJqtu8wmt85O3dvyuMvye6Svr5+d/b+
bRlhuR2cAmZPZfNNKb5zVf52dXzatD0VDW0C3/n4/ixcxKPUgU7Ypu0uc7iDm7OeXtn0k7/Plg/c
VXdYo+/AD9+vN5y3v8Kmri6uMrs8PgunartFJafbd/5jcgecY93ZqPUGzcPhWaDs3zn5P1BLAwQU
AAIACAA4gSdKpPJH66g5AADKvQAAOQAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3Nl
bGVjdC10ZXh0LTItY3Jhc2gtbG9nLnR4dFVUCQADTINxWOuCcVh1eAsAAQT1AQAABBQAAADkW11z
27iSfV79Cj5NyUko45uAKjdV/Mz1TuJ4LCeTrakpFUWCNjcSqVBSEu+v3wYpySJFxfbMvF0/xLIA
dp9udB90A8xVVSZ6tRpb7Z9gs1he6yLV1U2ltfUHo4o7fw6u4vVddyr8nH8q55uFXp1/+vDu4/vw
/MV5+/nBRaqLdZ7luhqf1jL4pKtVXhZdBWjgl6m2bu6Xuj30WQpbMGt4Ga/zb/oM0FWgxrrqmHR1
v74ri9oGxP8cXOvVsixW+WzeEnfC4o8rXVkXQRcTR3gwCOK1Pr/JFx1YBGHHRthGjoXFGDljJEeI
UMtGEqHBh4nVZ+f7OLFg6LOF0QjjkbCGmL/FBJMzALwsq/XRUxgP3KIs7hflZmV9/HiA0Qtc7HvI
BQQU2YwCnEiGyA5C4UY+Ytzl7mAwMMgt93v8RVuTvEi05ZXlemxxihCyVjopi3Q1GEzuV2u9sC6K
tb6t8vW9ce9aJ+saii5icGM6GPhVvLrTqXVzV+k43SNB4Nd8tYzXyZ31daM34KmkXIzi5XKuR4s4
L+x1/cBgEP5I9NIIba9z+Nmfem4wdX0/nEys4eTi7SR8++nsYL4Jjv1i/xpeX04vLj+57y7goSC4
Nk/Fawv9QJ2fAwmXYFBLo//h+moSTi8/3FxE/zMYfHpvXetbmLmyLnVcWWg8sO031sBMn05vws83
RxmxVYIRSWt/2gdfxLWD/7AsStCvf1qV/eO8+v7Dmrz/l//h955kGgzezstZPLduqtis0ibLICaH
lf4GEaGt5K4qi3Je3uYJzNmu29l4gCVjwmEMgmDEOWdIWn50qdffy+rLEd7/ahzkZFmmMEOYC235
sDLrvLi1Up3Fm/kalq78kmtrtS6r+FZb3/P1nbVsku18tinSubbyfaL/Tf1IWJFRavTnsMjRv29u
rvwawGSrfwVjc70ui7+nCvK8pepy8jNVgybCIbK3IT8ePzHEIRcORn7XM7+sdB+yOkw4kdmMSGs7
bzxuuGmyvgfaGpdLXcWA7V/DvvFffjmzXloEmPFaZ365gdRNR3djJc8G+Hkg4ixJEtYFEc71ApZ5
PF7pda3wBIpXDw/W3wS5iVwNVGPwUVilYTP/w+x/gVEAIsbO2YA8DyNiOFGzB1VBmWwaeJWGjEg6
CLce9O/i4rbGAQFjDXcPjZLlcowlRmcD+lwYlAnSByMxeaQf9pah0YqZ6GglEPRnA/Z8rXGv8Wme
esAFC+1vKrMt7kYuiqiKFw0IrrqWCwlBwp+HAccOypIHDLX8Ojh2soe/30QmNrKrdfX6COubJl6x
CdiLYrWEUCgr+LCu6uHYcDTEBuGwF4pnusfJZCqP3fM77GRQi4xnQOvFQ2x8vH4H0kEzhO6sLOev
jp98UftNAtTNOp/Dfjh2BD8bOM/EJZR02LH0d2WcGlwgapGvob6Ih8kd7Dg1qBevrA3ULbcF7LPz
sritnaZEB4l8NhKi8WkkWV7khubM30CCw7TcwI5f8ws5yJtm+jaGYJ3Uc1GkMktPo1jE9zNt/ggX
y/V9HbvKqG9ZjtFzdc6EOq1ztY6r9dbs98DjUDeWmyrZZg6n/cZzRAEJfmYCqQzktRNoBwP8v65V
SgXZejDUkIY0hpOOul/z9Tt9Gyf3feqcmLMZ5NrLP2BmwwXwwdR3VRHPz6xpw1fG5Hr0d9jmr2AT
HGfmr0uT2/WnT7n+Pv7TEDlD1nAna7RYjCllAIo+D1SSKpJYtgFlJBuBV1X+DZAYSJAPZXEBrsjj
ef5/NSUYXNEe0m1Vbpb1pxoSFt0Mxey5eDKBT+Exi7LXf+CYNgqCVO0Y87zxC2aOAiD8eUBSlaWz
ByDW03Rj6bR0c05gd8HiqNHpr462paqgKMZWExBbYW6RfsiyFXynYQmKtPxeRyfBsJu3RRu1DjdF
h/NMrUxBLqetJ4Z5sX5lHZDhi6bGIU6fWkzrNJTP1CuIRJ0nTBr068YCqvg+3Ywam4EB5/ksvZ+n
I/gnn/2sDpVOojiHqrLmHCN7X2ficV04goBV3YhNv0Ca6nlb5qEoLlPBNYHGxFS/X+v5lV5vqsLI
RXUF+CBt2RSnLXEtYBnKuCOt3cTp96/Nh3rDlrQu1p4lLqUMN3a2ZNG9xeSnFbXx6XbQXsQF8FL1
FxwEDY31BfqnYj39Wq5ajtlJ71m1QykSxykW3Jru5k8XtxXwwrcS2mmTDmLnmqcLTNIk7QjcO4iT
vYPof1xIsP84i/lfsRijGCxe6cX3OF9PTaUYz/vsTR4LRWiKU5RZRVyUq7nWy7rQVDszk5cvR7if
1NqIFEUEgZnQI0+neDxe3+WrbURDeWUET7OyGj5MaI4yoHfZVPUW/9qUuXWt++pATD32GkN1jven
OfM31ptt6W642eGd9u2/42/xJKny5fqhFDskfzqLMzabWbNFPJ+XyXj8bx0vAWQSA0nc6gOMmyIH
UprCpC+v97MnpktJ3m/W+sebXw6x/hWLjC31BmMa0+l0YaROZ/FKj7Fyuh3iUwwjGesaBq5Kmr5w
sjPRqBSyq5Hibj/4uMYZAm580Oiu7ovkJl4d+MuAeGV9K/PUGnaQvTgbnr0xsWLC5HpTvCvLZVPw
w06/F2XOCgjv9oNPgabS9B+BFhbr6v6qhNJg+HfENWWM6jSQTzEkkWkt98VBIE236TVdVuWP+9cH
qbcBsa8bGKD37yF+9bcc+ALCe1gDr1cV+qiFXpTV/ZgI7jT96/OoWan0gZpnZXpfUymue9BnSsLx
g6R9LSZk3Vo+k+A5trqCHuhdjA9rmsvJx+t3flkUzbF60949m/+TLHOItYhN5bC6na6reNlH/k8R
RGd0L6hudjtnciYoo3JTpDWnHcuYkRib45zp1I+2KTzR1bc8gXI6ubsqa3cQTDok/QSxiOvkUCz8
qj3LRYcXH5elMk3NOfGDpMlSJ3mWJ3VGig7t9R0od46SWSxgG/+js5zDZj2ha6y2JwjmC6OybtQY
uKHNYl3YXU1UKK2F8e7lpImnaRNj02njC1yzyT+TRPKfSyJl/bNJhKAxbW6d6puIz1Jsr58ssx1r
ayiYPcvXZ+OBZVXxj7GFfgDDgHxplAhtbmGsalYPdG+HYCA5NZAeDxCEjJI0PxjBgH8mBDOPrPYD
xjae6FglTBrty6OBGa6fOB6ItVFiVbKjRPGYGLKoVGdAxw1gjFoDAulZrOoBbAYy424YmCHOElUr
qTA5YQmmxwONEnbCRMz7/GiU5MuWrN2Vh1Vl884j0J0jSJKkIidkDd5t77/8q4/NVR4hg7Cqyqq+
H9ze7u0fZYMbQ4+Xm8VsdyWN2WAw8PIiru6tiwX0lavxYHeZ92N/j2fZVuvLmADrWi87pwxDdGa9
9l0URlxwG0mX29Sloa280LfdKMIcB0FIAvLm8avzQ3WaOscY4MsaA6TR9gTxRq/Wk7t8sc2tGg2i
EY+k49uShxLQRMz2IvjEVehGgMYjPOpDc0pqGxdDPbhmrA/XZmlusw+hceKzwBPY5sQlNo2cyHYF
4CPEcZRHwsiPvCdAOxTcQpex9AgdTRjPstlPaq6hQOwlPAS/oNuhLwGoR0lEQs+zhcCODS1cZCvk
+7YXUBG4hKCQhn1A25JH9ZGd2UnOt1f6q3O3M+cQPyOCHOFnXIN3s+OTxD7cXIbKQ65nR5H0bAoM
YLsBkKOUklNHIO65bh/uRmI/3mashTN14iOcAmcQnbTvOLwHqE98hziS2B4HeFRhZXsEIiFSFIsw
wAxa0xNAT3t2O3gI1VGxOILqzEwJdfrUugevxB5hgMwmDg4hqTi1XTfAdugREkqkiBfJ045t5P7M
vc2MQ+QS6WMKgC9VHQwQ+f7bz+YFipG7yzAl0MgBrBGkmacCbntUCMCqqO3hUNhgA5dUONzDCrA2
r3ucv8tnFTDhebQDtzo3TnwLrHmXJ6t+0LsbktX5MZBBA9bsDYLE2YERuy9nRMcMChdzZGoNKcAm
xPhYMkfQyLd9H0UQvJBvru8z2+GuRNwPGcIB4N6sKqP13Dx9oEti5zD7919y2smeiw9ukuh5c61u
DQniI4zhqeaDiU2OvcghzLxKAwTqqciWCJbeRcgXHEHAMn7sv+2VwYEbW4r6/dia0jZGzI6NiRHe
rf5CJzEo3q29UGLEAXsYCR95AbO5oXzKIs+WbhDZQkHI+qGvHFcd+LAr6BACwTE6gkCwzgzXH/iz
XOoimYMjR87IzK5/m33IiTwZUVH7DdwYBbbnU2mrkIU+k0whJ/xpGH4Awf67fsc1Y224WR/cbO+x
bTW6gsq/yPfbEjFQKfGwK31hB74ENopYZHvSh13c5cRjjk9D4R14rZF0fkJmBxQ5BsWU7PjQZJy5
A7aGmJjZggHvADCXAASmsC2wUDZ1CCwnkRCPLAyRHwXM89mjqWwE93txNzpoo1PHkMUs7oFcV0+A
GY9YvfTAN/CpdqnjEOy5nNsuRkCYjHBbUkVsnwcOJBgKXdd7FHkt/zT0enjQhpn0Yc/qAgDWZlJf
Zl3r+lZ1GwGw646Y4R8sIt9RQOqMO9SmoUK2YjyyfQ92/IBjyaOgnTvH4tpokmNPUpKRjifd5bLZ
zkcK5prucsRqHoe6A0dAPEEgTRESIBtiVNq+gFoJ2CpkNR+edmEjuM9//nbsEC6VzrHzqFTqGO5c
f7py94pM6uMRqVMffpvF94jwnEDZbuiBJwOohT3mQv4z5QG3B7CRkacw6E5VfwjsRltGKHmccFSp
WWcT8CPDIEFe1a+gwJZfv4xp3K+YCQUcKS4cYnMeIiAEFdgKO1C3htLnwg1DxeSj3LWX3g//MNaj
J8zvTGpbrXuWDr7sWB1v0rwcbYCqViPXfP5YmMDDI0yN6fDLkKEjPU4gVSOCoXwgUE16gkiIPUpd
hwQOtG8/D7ud5BPLths+tAD29uPNmyHudCz4LYCCYYRNsFFkQg1FIadYIptIBb0XVI7AOKF5DZYE
IYZIEyF+LEnm0E+aQ5jtydXq0fX6Leif8lvQtslhPTY5dbNk2Ggeb4r9beHQEXzE0UiaSoiyMIBq
3eYY7KGwG0C1yQI79COKPYmwz1HvfnQosQOF90BJ5W5zdD9F9brswGDRZDJ2lQy8iNqwXUNDAVu6
rYh0bRcqSipCEfLgEQ769HDI9YRaso2jZYJD9LEJjpPtvJlslqsR2bM65bUBCnPJXAbxgcGBlEJV
5ApMbT8kBEIGUceXbVI/lNMGkOBjABKRHYC37z7u3QdMaCrJwHG5MlkUUiiBQvCjSxwozInECAtP
Kd97lEbeniiBmul547e97hbijPYgzkSX0a/1olzXb/nsMsBQunkOUJpumEiJGVNAAVFocszQuRfZ
mEMtjGBX55Q+hc6P9ZyKiO68tlXiOBA4MXX+rFug7PX4cTUri6YbxZiKertqPoCBJPDcyFeuLfwA
Fotj2KowdKPSCSR2XQEtNHq0WHkyezxgOUH0+/FDsznl4thsaoobuu0H6ze7sthg2MYhxc5IgYHM
oQw4xRy8mDoSOQ5U5cyxA6giEGFuKOgjLLlrU/Sj5n37SdXWitljwG17xfGexnmWdIM3/u6DJuhg
ti+mQx2FTSElmdnJIwz1LPECO1ABNEQiDKEh4thWUtXnOFgycWz54XqedzXAKOAu1qvz93HyYfIw
PmgjPd7QYAVltxAxB9vN//vQ1fZk66EacbDZDhCXYAKHTY34wGGmR/EU/IMYdiIBXT4OvKfkX5+u
EyHYM3PQNkT1WZd2ravf5ruKCz1fmTqDjAQ8o4QJSTd0Qu6GUGKZGtGJXFt5QQjcSDFz3MAl4SOn
FHWaPJ5tBxBOtRIPMzpG9hCNwHy/45SLZQ5ZMX045RSGTlxMYaeGRIu4imwqwUgJDrMdzwHbOIo8
P+jdvo8EtuHgHgIQ0FBsCcBcOs2/jdQei+nDXMGRx31pY8WhkhUuNBECehzkESZM5eRFbnv/a4tp
I+ipIriIVU9r+ClPdWmWXNZFddPOApcC2WAPWqq6zxamtIQ1hyoHOi1oxJjyH+XZWvLpprAebqF2
SHaMWrJkfzDwdZ6vNd2fCGDoBwFs4NOAKyglFXZNgLLIVtzxbSGUcojyA0m8tudaggZtbT1kIGO0
j6SDF23MEUBdPcgIEGAK2y6CPpoyJW3l+twWTDi+50QMit1O6fIgpq1+1ueBNN2p77swHlLC5EjU
/0dtWwv6PpURVICh50AtyFBguz4lNlQ0ErmYuz5yf3ZKcij+EJ6YOcfegX0Nd85oVzrZmP+Xlj3c
mgLXm+c4x8RwSgBVchRAn+xEJr6Q69peKGDdhOepSDo4Qs5P42uyVfFYzfr/xF1Jcxy3kr7rV8zR
FzCwL0esz4qRZhSm7etEdXe1xBFFKrg4rPfrJxPdXd2oQpM9zwy/i0WxykAmCsj8vlyg5XuNQmu6
XG+9pfM4/s/vf72/v13d/7lj0GjwLTV1rRHziygVnlgwITKDEpFmUuDACqA1WWn1FtZxEqH/5vT4
VD1Dl0FdWFsmDttp/BPcIw4xURv0YiU5xZPXJGBuTMSgwQmD6UeWxoDRRCVzu51n4zQyMLlEB2YZ
W9kx3qe9jpVaTGs+p700OxUiHHIN4jnNwVDGSGBnSzDmngrrXqe9L67m6RuNMsKKpTLCiYOFWj1+
u6LTuUTjZDI6EhmJtwHMujIACXQORCVVfIhgn7huF/NkjHZutySpBtje4WMWADufhofHY8AMGNUV
njaujXc+SwJbFaAVY7BiyQgSUknRaaXBWLw59fa/Xl9AI+dCNxpbvvSjxsphdjo/YqPg0/3z+ssC
KsFHwNTQLgqBP+BqwMJzg5FugGPgLsAw+lAUED7HuKQ+aS8vAWkvTHuq7uK1VkW56qk4zlUc7j4/
3P+BnGhH9yoXsgApfQI3E8HthQA7K2pNWCyJRkcz4OqL9NiPfUb8/dNWass6Ujt+OAbrb9+naAlu
wOCBhfKowdxL4KUigINMyRDNXHQ5WERhMwc5jdBMPGyWqQOz2m5mDmiXgP4T8LlQO34MsGX39X0K
2Qpw00nCNxcCOL/XURJgjiwBZIz5gkA9jn0e2ODTd62AS3hq1nIKLw3PT8d4jsUFc85lzWiBE1si
hvYE8Sl6onKk0gWtUplBmuMY79pZVGdqx2YU/Of3x4ACYAheXTWiUh2MDpJFEovy4N5gpawDwp1L
MtFjhMGlNzcdR2nOObteuAHU4j1d1SGncNL4ccxlFkZF4ICVEth2oAAxEKChHpydDikGSsGfdLHS
cbRWiMF1hBjmZPjLePsdl1pcoWeT+M2FSl4maQHxRw6ewjO00pFIYHAqpiKLlm+CJGDqM+sKT1pl
1h2Xs5HrBXkEEv7j2+r+8KVr6Bf3kKUATVklFDoAw0cSWWCZOfxkgQwDxOA8uMgtcK+LmPF8qvPH
sHmtUWtLO5Bke6SL3XK4n8B3XgHdR6cuEgC7Ak4dEBEAbHAfxEYwb0EEFnMGeKLcSwC7GbkVrePk
LeVsO2577QI/YYKmYn90CIARROKYCxEZcVuEDcQjySnmIHWWgFBfkmq9lAem5h15zDza7zNgR1oD
ITUQ6ZN03EhOikV8D46KeLBEpHj41AwgfvHy7eJ0Pp+BcbnVxdieLsNUp/H7x+tPt8+fb+5mFVGH
ILGiAvO8YCo8rK8TitgM3Eq7qAyAKBk0fZsg8RlJWm3cEttbZt1hE9+s7+/+OAmz1xgbVZ56MORg
4RzgH22JLRw+CweemjzXIc+KDppR3rVTDZ353TxshkUHn293a7iDLvUHdC0c6HlQDlBLAnvnDQNA
Cu44ZaMwzOtN5P/ycu6etQIPqiPwZgIts6awnxRlV5LuUEMEoO2sQsSChYPJAKNW2RNwxDFaYP/F
8b6XaAZt5dmInjxzKwQfYHvzed+rcpANzmWVrfKhBDQfBCAarC3g2QzrGMGXUQbf1/JSaHn52C8n
aOTkdIm58JdzE3AMPP8xrj9UJwv2Ev6//V/xbxgskZZxlQDQFEyZKa4J0BhFSokpwLAxGf1mEe46
c/+13bNGU8CFS03XW7FdN5r+sa+msHU/27qZrSoAk3gmOQigeVKAfsaBfxNwTAt8DmXp3xG3/2NR
amE3bIk+7UbTGSL5OD4NcE6VrpFf/AP3FlUMIwbgSCioZeC0es8w0EWTiNZm7cSLatVRzzALfNRK
2jMpmwV2uv4ChvLuM9o0sCWiynv4EWNLKYGPAciqM4A5rA8FMw2HQrtQgOyaIL29BGrspzkTV9o9
bMUfth3xV3O6Coj4erjb1MjGrhqH62ppeC28NVpzRndBAhGApfsAGEPyTIHDJ56zvbAgYz/J2ZKM
/fNWhbHzBUY6pW4/wXocnKKsYWtwJMxgxYuUSBB8gs3BJAM+RXl2niUjXo5/1Q37/r8viBVMk5+K
7MbtUmS3pXq2aV6sIhEAT41PiqhYoTcFD6mBn1rOAHeHKJnTf7WK5GxNiNuaJZsehHQV87Uo2/8W
Me4N22a3cXY/oWe3NAKZrolROKhUcQKomhOKyJorE2O0l+JrmOQ8qoaHp8IPUixB1SA1O+yYP7+v
O3UTSiYmuM2EKgwIJO+BVmaOFsZwXlxitu+zpuFaIfQSpQ6a8wPzCx/89bRvmeb1qAUZObPgflSt
fYo6kQDIg0QvrdWZB+3/FkfUyNeopTerjlrjBPFW/6xYauK0tpKArCRXlkSKJQA2STAgRhNmgLz7
GIOQs1xEM0oz/8iXCGUYxXiYP/5Srp9vQP3TgCegbFjZZIn2NsJO1IYEHjyhkXsafLA+ilaAdphG
gi1dgtxhyybMBvCvxeiGJsW0BPQjfcTUBwWEC/7L6xK5AgjHXwkO/z8KOXryMtGTdwq4fx1/fPs8
xWf5roTIAGdUWAicMGecARADniTZ2Wg0C7rkfgnR6VgzIWRHCDmVvzzuHcOUxwJLjhyyhsfA0UcK
m4aHbIhgtY4VcK8I1EojTLJ6Vlo5G62VxHQ28NZO4fKPFRpPcnAsphQ+0lCCJSZjBUQKmXhmFDFF
OAlfUSo128DNKO381nXmd2zmkf9rfCrXhxSV3OE5yb0SUhNeg6sFTKnLEb6KshoLZT0rL5OTOmZ/
G9VHrZxO9eS000HDzsnrOKy/jEcz5modORfWAR3xJNhciACiDwjNF1JCTpmymHL0b0RK50KcqrDi
dOmG4ZfbeSB73NwMaDgfH4Fc4lVAh5C2cZViZ9jywAbA4cKmAwxBwBrDQWYZ/EUADhb4K3hzPv45
8Dl/r9WG0Y42bA4qHr+PI2w9cOr3n/EipNNwFEDpfaqw/olB3ay8s4AtisQ0McfGj5DBSAcAS8xG
2Nr5LQJ811WqX3pCNRB2/tpsBZaWd6XtplNBUJo0by2NBlOLXp4lVgSm40uuVXWAxIXlhIPzT0YV
C5Dx1SjQaxne9p13rbhjRwc3B+SLhdhVnwFKuDK1VprXbh0dPNXcUZIklhkoYBjWAO0OmuWiGfBs
dVG3SXe6Cz/RvNZspYd1R8W12o7HypcH3OTH2EH1OsWKIgHdEsYA8ggJJh7ohScs5KDA6XpBZwmG
xUitHGvdk2OyYL8McN7u1uOMPZQM/JImjmJUugNrWmCJYxGKh1rGIN6IPbQSNMK7DnFbDWpuu1bD
+uvz99MTzq7MlayZaVPjwkVQmbExwTkGZMi4DDwCI1zFqihUkJZehMLDbKZTpXbPGvmHTlkG/HKc
ZcW+A2M9SVtdfcK/Vyq0I6GV8GerCiZHwadIUisRAzAIEllRVBTnYvJvYaM+tbKcvlUfzfTrfR87
5c/wXoQpgWaNqtZWILaXxRMFAJAILCq03IJnKZoD6cgSvHgXV52M1kphVU+KKV73fDcxHe5qHCKw
7KQh0Ri1S3oGIEZEiwyMQztbzggwDTSbvnPCRixVaT5yrao6qZyoIVcjwAOpK06rHYsmcrBXJAaN
TdCwOo4D2GPaR58Ajebycmz+dIr+Jzx941SJNZdLaLrmajis4Yebu3F48Lefx5OWuYmxFTAXMgM2
LlQD1ongSq2WngCxMSFgkxVPfxNj6wjaKuqWRACtslY7Re9X/7s+NoRqi8YwKZWUpfAlALxh0lcR
x6giUibjS9Y2ctPa5NNRmum1XoYU1tquTsrYhtXNxNv2tUyO81yC0IRmsFwCTbLlhpJsmY9SSMMj
XdSxTeO0AnRM6lqvJuL2+P3mDm8TnL6xM/XUUgeHxdhCaPEMG/wkCdjNC8yjJB4Vj/MugHakVoiV
6AkhFunL9f1Qq5Frd2ntcKXGWOMDSVygGAoYpHMB/iPAc3ERlWGvIBcY8xxggUetnGvekXPLO1UN
/vf4c0JouQs+w3ah2MhXy3R9CSxiBoBa4N2ATHzEWl3sg8VvR2W8OAKEs7wQA8LHjQamgxbXRtBO
MuixdtTX+C26zRqE025nsnUORXsA/gJOtYA9gXgRSBcw4cANJgjCWzgfpDzXBzHOR+umV1pVte2o
qu2x3/dpuP2fp5tv4+PTcNzgYLyv4FPtvlXKQCAZN8R4RF8IjD0YL+IzIOcY4JfhIij5j0+/xX0l
8oka54Ro1ACHslTDrqZkaLMAvz3d3B4bjnYfyyeafARo4Kzcdyo45wDr+xw1KBeSnyHIM0O2Yq1p
R6y1nfUG3+3u/VnULwqrMJIuEMpoTZ1K0RCtBAhoYZGdArolERCoohNtqnIXebH+HI20ji2t3GaF
kGBxcA9t+rjr616o5fW7ewA0A2jhMWUnPBxdgf2jHqyNSGhnDJi+IP7iPQCnb5yqsOnVq2w2x4h/
uxhTbtQKDOXWniOsFcU8heMpYijXkIAVQsE6lzS24Ed2wTIvV3ezWS2jRyPb36twko67qV+nDOtx
R9zE1a76pP6JrfZKUm4z4ASOd4RQY4nngRHwJllit5lyF9WeHGY4Y1/2T9+10g49FTaLmw6un2t7
TS3oAL5Zy113P9WkUEYqrTELhCGxBI6I6Uik5VyB8dD8lZq1afxzlxvsHzey804XwygWecM16Px8
Uwuj943ltSSeCasFoDRP0Z4zOIbWgciqKCMN+PbA/aXe6Lf35/f0b+8bmWWnnHKUet4Sf+RAtTUZ
C2xY7Y6vaJlxdiV2htpRaUDaDLtZKCz5YMTSEkhJQPd5AALdK3870x9dp3mhQ7o+b9XRPXXM3K3+
GuNpYWgBKwdIGE6kwv3ugH04A4iS8xhsZixYf1EXIAzblxYetGJ2uhZGu54udPjgP/n4nws4LzkX
NgPN1MF4ZGgUiDJYaSDRnkZuDWfi74LzJxK+a7XgPdU2J51F3+7v4sOP78cSTjg2Rh3Mo8MCY6Bb
wKVDvT8HLKPx4IrA4DMPHDUFf67FaDZyI5jbdE6nG+edIsPjSZvIZLMlK7gRCmEBs4UF2yi98Jjb
V8bk5Kx/sX5tGrUVaRw7Im3NImSIivnnpy9T/ruG3GWw2ogMK6UB+ImSsUpdUECxxkeVZLGhXGYy
DuO/1EWGzxvpB7vEdfDL1fxWkn26Y5k64V7bIFyE72vxNh9gbha/tNJA3azUrgT74t0kpyPPRFsG
+cbVAl2H2+fx6f5+t65yVxaBf27rJ6eGZ7zwrHBMM/EIrD8wR5wAkYExGKrYKz5kGv+cF5leaKRf
WdmR3rllWQS2aw5ArB86hREFe0AN5YRFrEQJCY6Qk4JEk42KIkjJLi2MmKY5a4unNxpFxk3HFmzV
ara/P40P2/uHbxhr9HfD7Y/Hm8dT60xNirCvcV9gw5AHO21FwoL4KJkIHlj+Rdu8M82ZeNryxVO1
tlQvo4fb2v7aYpT1sYIbIxbV3Wu7b5/POYWsSVECw7hYuswxiSgCFokn66S76CKm9WtV4qdvtFqs
lgx0yxZdvLs2o0pi8SfcaGKf9hPVCmVvwNSAFlTzgC28yPxtJNE6rmWiNL1yocg09gv8GR+/awV1
PennbSDp5vGrf1jdPD3s0y2HDMXuNjHlKPeeKFGvA8ErfQxlgFVyUkEpQV/pRJuN3pd/9tJMi21H
ixpIbx3A7f3D9Y+7Na6+26++26VdSxQmcwqczTgsYYZTniSWiAoHj2wq1rx5u8Ekz7kvtn/c6Mrd
EtlvBWPbcbUHBg/juoEFQqgjZ4pUlWSIB2qC2RcPrgKLyDNYMQnwLDJzBhS0ozYiCbfqiLSeV+v/
A//RvlPHG6SjQoD7FwHrxh2AMZ8ANFavlZ3He3RfXHQYsb908KCVcN0xNWIzVSZ8GW++bYZbMjze
HYsTlKilriipsyxlSQF/e9ziugDXzA5wQrQeE1k6pln98nLERiDVqS/ZKjM36T/vRmmXTSWhlQD7
YIPCcK1yxAKCISVKsCFAM0O6iFbuBz/XklEftkJ3rn/aKmumaoEv4Loex1/vv453N/88aQfEqIhx
wUaNeJsiKI1Ahh1eViA1rAVzAFXSrLyiP1wjUe+Sga2WY4cqPh5OJVZQjptyczt+uHl8AlMmayoN
/sCyBpY47EETiMFgMCwuXshS7w2iXnCAzpzFt2sgaGU5X/F5fKdVX2576m/PVkjXllb8H05+xXZb
XFnBjGGYccPCE80VZs8d4TEGHXg2Of+1C0COzxsdNp2MwXYzzCMV3Rzi4baWeleLNDt2p3y23utA
YqYOrQpwDCwsosWBKoUVY96+c2wS54XU4jxIs90sc9ewnTHQ0e1q/4+fdtcnKiOEOYD/zDN23RjC
LYbguavNQNhCzYKIHpt3xUUN7S+3sb9rRFwCa/zlFCv9Pnw79n/Uu/5iiYm5kNDbRKxqwgYsFomM
XGQLGhQ2u2PiZIxm7s6VkwA+5Lwv6MNw9/l5+Dx+vN+Mt/uY/wEIKxuZ9RJMeMJSsxiwJSxSYhzA
fJeYoZ5dYj/nc5wpZZq91WgzjNulNviPdBw6g/C6io/x9gb/UcZZAZbSNBmMCRmKd4hQYKxORwc8
SwJkCSZ5nd6uAKuVolFipfhSidUglzzrdvz99FJAdUWvRG35rD8gIkATJMCrRab9bjc7BzrF5Cns
E7C/l5W67Od66VZA3+qw7WyrFZzRfSHvnipv7h4fN8ebXBSeQlnTdsw65yyIjM32GCMFqKUAEVtl
JDhnJtJLFPxk3JlYbinWmtEp5wPf6HHKV6MkWTo4aFSQhMdN+ILJf6EJcDwVnc2i0NlJOx2jmXyt
OmuyNm4WmLi5205QUxqDULOWpHjvONfYJZ4wjaodgQ1piY4eu7JNKfLFJTkO2wplhqVQm0W5383d
16ZehtbyMM7q1Y3F6IjXzoqCWF9jfQSgfxIBE/siZBDCvkW27/2pDA2XvPva6DTyzkKPWh2u7cG7
CvAfnX58evhxvGJhd3sdMK0ERAXsWO1vlckTFxlYARnQJtPsNPs3XrHQiv1/vV3Zcxs3k3/XX8GX
r8qp2tHiPlyVBxwDf4otyxvJSXZfVDxGNisS5RUpx85fv90YcjgXKW2iisply3MA3Rig0d3o/nWX
a6XGuO4bzljMerVuYK8aKW49SzJZX5QxY0vwVHgNKzAyrxTsMlE97ygzt/8kx20qDjhzW090+Lyx
dMgnbv9dPveqDYrbX5dp2ToYILTGzLWWS8sShT0eY4uSyztqLEpneOCK+hDSc083sIvDrgK822aD
wrYzYINS0ccpjstc6AS67ST24+IDwZDTBgn8JgVD1Fz0vqNDkCIOj8RD6ZJqaV8wRXdIzyH3Qv+5
LvdihHsm+3j2i2r9++b+y7rFOoieLYbMln2nLFGgjwbiMVwiwseUxhZEKFXKUsD0fZbLKtZd7ajF
Bw5wNnzwpMuFGWNtcFSIAY9h+mXziDp37T2pfSculCERrwsdLebTMlb4BOpVaWB+JhEk1y8jT1sU
HBCsrSc6PPIh1J6lyogB5u+urs8rjf71/OW2v+EuH7wNYAoVEdUuTjHFhbqyYE6mkjDjonoiTGTX
/iH83u3tDu2aDNUruCh6Cw8TlJrCSlgLE6sRtwVmxMwy2IJBYGKGH0YkeBltUXLuuE+EUi+fsBR6
rR8yGXqP9biRY9wsejgDX26nG3QeNylcYuePZ9ZZIstUKK1Re+e8MKh0qcCdARvIOyqPQiB0Wu7R
Vg1ps7Q5iVnOH9GTsA+fk5Kewp+cyQf6n6cClAqDnrUoXAHEuCKV3NIoI5NB9zPcO611KJmP7I1w
Ue/U0Yfq7v5rdbO8beKaRbZsJCsTt2VBRcQsBiwzQ6QthFTSBZaMFeORn/32usTY+Qgx00YJnbfT
QzSaJlYKMMHReeA8aiboSyhDWTjmdBDo3hMH3IyjSR7YGx0h4eZmDA9kJ+YvLvc7kGamhvKqf8Fp
pANlHuSVNoihZmIsvGGxiEF6pQ3QHNXL7UJ7Wg5EfV2O7jqLYQY8XKS0d9a6eZjuA9wZabaa0nIK
hi0vENOn4J5i7jvHijrCSpVSYuroaWur3S5ZdEQiLQwZgYHva5agOU5ecY2HB9yKvHKs1rZECGSi
DWyIwQUsRhKKpIwPnjIHO+I/p8HCjS6vZjbCa6V2n+DqLKVebgHXoJBbUMSdcCAPQkCwC0WKhAiR
1rLAiXih3IJ9722iGR0GMMHFhe7Nm7ogY2PO6uzuRjECJmtpPIKoUMxlDKowOHlAjDDKKdNKHz1Q
brfboUtUekiXmvXD1v7rcfqw+XPr3KuDYwXmTWc5G0qnFcwWxRFJBJSlwitnCqGVTyryJM3xPXjf
+AGE9ub+SZdKNUZ6g638uPpjudqjPMm8AJMqPQylLESkmN5tERZdgupnESfdl5YIfiASf99aj4z5
CBk30z3CeI3R0E1O9Z4milV+JFgSoHJj0SdPdWGi4Skg+EV6seTUVv8dykcidS3WdzoYIZWtkHfu
/YgZxD1HMEhe6BQQ1o1j/R2wIwRnyQkaY4jlk8Ib2z5i/8DdDv2zEccDXOyHacywGHCDrq3ykQIT
ImK1paTQ4JEe0TkIjL4ykgYmPMyQY8up3WSXJGtGSMIAh20tk/z+qd/PBqZwb8jRAKDiCxNioTLq
vUskg0iBVqWSYDqyEHvwkN3WuoRMh4oTm8/JTqn7Gi8/NDqT4rX7EvRaJQko0wnDxqM0GHCfYK9K
xDEDd/0/FYS1J6/D1UKMcLWQ/Sy+bS7m+vtq87nqBEOgh3MLAln/gsdgNDqClp8sscAdU75A6PxC
Wiy7JylLTxyW/5Xdrk7nuxxSOMz5ax7qDoXmI0MxSGgMnx9Xvy9Xn7Zk48mfzmH2Osdt68SMDAUh
eGypYBlY40AmYboU5ZJz/zwktm4nB5Zw96EOMzdiqEzCxelOlO/ig+83y5uWv43stscojI8lxxMl
jYWLAkh1klIRpDag7VujQzgaeNxquEuYHplwN4NRflOtqjoIYnp7ubl/yJhANdok43WMvAmGUSFg
W2QWEzO4KmwAmwlxoWHvga/gn+VkGOnqwIH78MEua4vhmIMapA46wc4ucsUjYGtbiEFb9Cxnl6ck
NiOhWQQt5NRjiG/QuJicdrCZ6SdytXPbh2LJujWPgMhhQhVcmTY5gH/uYQSwIso2zoKX3gsGAw4z
AggzurCJgJwlpiQiCqJd6ErXP0dwBLCf4abJKReLxbDg0k8fyjdte9/D7IweQ7bBlkH4/HzgJYoS
MfI4JbEu9Pa8sxRs/MhpCt7uEE6HJcLwYr/I0mU1x5Ksvz7Af0ej72gyGOBAQT5ihoKHnd4K+Cuq
aJgWCubys+pEdTs6eNbZeqbLzojiytmisQK+3d2y1pGnrcsERu+iQniXmBBZn5UETC9GiySliglU
Qqdpdxa02znp9jUdI6DRPm6nq0/LRWujR8MqBJHQvwi6Et2qygGzmkruJE2RGMa63bdb6XU/VDs5
J40/Yvow/7z8Wu2HgHNcCixnfXINGzqmnyZUNBQeSHkQ+6i2gfKjdT/hu9fYSbdPM0JIRUccARlp
YTwTVZMAiwDzA3IRVLBnwFZjBNHGS0oUC4w/Xc0lt39Ygcy3O7TL+fCwlyteDdYEDsDbuuxWvSDy
vxkzFpcBWsm46XCVaOGCQew36rkJ9ln5Os/XGnaEHFou29sdJtUw0dYi3uNupWRB0rWXDXNJI+oV
SE2wlxENwArYWQMXoAhiMbiQXshe3vfeJVqNSCs767vAD+JNaDCuYEciBQFDC0s5YX5w4gUVmIsi
nSqfAG05jjUR/nMUZwJJHCoMfDbIOpl+bRdE2NVtEsBCrZMK6mMkIFWlRF9YLmeKKNka1oIw0rvy
CZv66RJe7Sc6LMxGXBVwcdEzqzoRXE3qbr1FwKYgXQoZyBEGP4BG7cHSlpIb+LIJzNt4HIay33Sb
QEGGyEpwkS122uLtn3fTU7mHxcVol0DA1qcYLYgIRsFJXKa0gC1XEY44Q6FXx6DdSLf3EXsfLvYD
3HYhQp+Xu6MZKQnBsDtaal9KBrq2LhEZgoKyWoLwoGXJXGQC9tEXwVXYBQr9++x4ING/zzr8MTnc
WAWb9lM3eiDPNEfsIchzjjSAHQQEiEToIYtJJWUBCq5DiOcEpjUvTXiejvA0vPMhaGegeUZGGLmZ
jcDW5J3h7AKBi7ch4NrWbrdoGdZPKzWmTxn4zZWlKYgT0WpllbbpebvSIVnYeqBDPB85YhJ8j3Z2
+QUrJYyC2akEMx3Mn8IQzOgxIhYGFPvCwxIIoozU+38KGqFPZZdFJkdYZI2cmd9/+d4+T6EZE8yh
AMeQtcQxP0zAX96DBiOCkqBAUQba6YF46XZzXUqG2GT5Yl+FyesODc8M9CJ1jlJXWPWRgTYssP4s
swj2yjF8hdOSBWp4/MuLub7XJXVRjZB6M6ZttXKA9iZIKUFPsY6BCRJgZydBgs2mYHkKjelnFjE/
npzRT2T/dB5pUy/FMFw5X9x9cjRZP33vHJ7QxsiHRWdpQBVRoPKcosQscwR1cRhPxdSgttOguS4x
Q6Q1uDhtEOm+TR/2huS2cCkHbTUpVTA8SOQRwycjbCOaJBGMtISHXsR0q5FO53I6tB7w4kiEXs+1
BCYZlucSJjtwIogo0G0oWra8TLLwKRowKLHSFQVVwYiXcV2NPNjjZzbGT5OD+L+P04fparNcVXvc
6lwJVlAFdnhBchFvx4AB9COUQnsujYqWjJ9r9NvrEjMbujawolhvcD+etdXHeo3ARKohDZz3koEV
Apu1RpRvIIzAtCuVkj46E0eRcYY7WLuP8ZFtP9HhQouR+alvGsjNr+fL9bzvw/VJUZZ0BEUH068S
Ko4I32hA7AfPaBmC/Kd8uHv6unzdDI0uaQbRLTWJoY1Ins+eapCtfPJkEJyVgNz1CF/PXc4OAtUu
GZs8AbVTlcczA0b6OKRlDB486ZJfjfBk5iO6xm755DqaK8wkwZptORwL/8UNvKSUJuKKqDGkTHNT
OIyLDska7qMog/HPLpDR6+1IjYzekx3+7MgOKS2Kq04w7t2+hinB2UhMSTOaiULPJ4+oP0kTQPcO
mnMJE7M8irsxEhIibTUMHIIFLwbh5lhV+Vi8QUzWKRt4QZRDP6BC5BUYdUlAR2LBURPcy5nuXXoO
Baa3n+lwvZBDIx4uzo+FW6TL8iuWPM3eJ56PmbKBvP0dreQkMQMd1RWsf5UcaC/WmyJKUKxoSa22
LzgEO3oOPLi922N75GPfsD745sDdUCN/ZKWn9mg4EOxRIvS7QPcvd7QAq40XMSheakMsM38Dm3x7
s0P6DScjpKN2MeunRbRzg/XWvaSze4mayCiFD+QwoYQbLIKrQfWAhSWjgDkh9MufTbVJOpxBMZJA
bBUdItNZxW0D/5Du17fXi++r6d1yX7dGnTKU5jLZmAN+EL2t4FYyMBo5xaQhRpLlZRS9jL5hayfd
foc2lBKkryvD1jtdVJuMxr6e5xCH+iPUM6c0iqpEKMI0BKxfA6sFREMhmCpVjNSF5+X2Regm7ro5
HOwweOykS/0oS43N9Pu3Vl2rQS1QzxGM0iIMdkKQDV7nMwvmiaXalCAExuGlv43Ut8J+h5uesmI+
qCYB5u1xGEJMfU+gZ3lMgQdbNYMeAZ1gBmeXdEjqaajfozCE7SdOuvQOJYzKRsDOO8p6zlGdomKc
Ypi7t7A964TgrwT+SwMYg0ElRl/MOTricVdTQUZIFs0ii8vpp9X9erOcn1frNfS17qUrkYyxwQT3
yosClEJgQ0pf2ID1gKQDy4Fx7m0v3OB4uz0S2RiJqgFrP+uHaIFCbWjACncyIagDSGkL21CBEXFe
M+cUtS80qk3nHZJnIxaMms3ZoAbPQ7W5bTyeJmcko64TLImuBF1NEMNATlBQc6iRBXPKGa+0Vsw8
5fRsGu5QNoLLBRdnzfd+k36rM1J7MUYpee6xPDfBgp9calLDcYElQCxPRmv9QnjgPQo61FfToeai
qln/jOVt9TCrHu7XuHPvnBXUCy2ER6h1rLJlStDQnFRFyVjkDIxuVh4PY981Os7C7m6bXE0WQ3I1
1WIAXg6bBojq7KCotwur2SmvNzJBdMCsMybQqKUSi+QQxMGInsDKYOIF0yl2lByurIN3T7rsyDEe
+/6u3z6ELRXNEQVyVzJQIaMqUsJwGSkxt4CqwiaQ4RwECnleYft96+OU7+93aR8JbMKLRxThMeW/
RGMEi42VAZ3wTDBQrED3sBLEnlBeam/+5jdqP9FhgQ2hAuGiaA7kvq1vN63K4nVMrmYB9hcnEBEW
VHWlGZYBBXvKWOe1oMrYXhZhu5lu/yOZMzAwvJ83VM0eP9XuddRMc1oozTmhDExtFkA4eyvAQDUa
lKMSFqcIRjsQ50Q+L9Gr3cOhTJn9E10eRhKe4WI1LOdQo0vVBR1UVqqjsszTMhVo5QD5iBpRslQw
750OxqWon+Xb2TZ+sLJDxpU6Kb9t7fzz+8XyZndgcvl4dwetvgamwvQWBvgOdNDJ7PvkfvO5eph8
ebjHegQwdzfTh09VxkjdfAYLYXvjdR6MzXT9+/XN/cP1l+Xi9aTGi6vLSV7P4e9N9XpC2hfX1eZ6
vWmudzt+qnny95qH/7S4ghHI/SHA9nJVjfXHLLPm/9fnyS/nE0xvbI/vz/DUxer2+wSzAPHO/c2k
2bteT67uN9PbHzkxp/Z88lCtlwtQaH4kb1+Rf/0wWf+BcSeL6/vHzTWQ9bjKUdTQ2WL7BqpS//rh
5NeH5WY6u62gAey8aRbU7jeTP+Dmplrt2jzSx+5Sux9sYtvLJPN9/OeXs5+vPrp38NvP5Zuzi/eT
k+2/V//9oTz82uXZ/+S74eLj+6vJq9X9qpjfT2+r9bxa/DA5+XH/c6CB5u7ulxM33yy/IkTC1cN0
jtN35IcRYd42/5mchDeTdVYjJktU5tajXVEhmnckvJORH+sXJni+M/oO6/QTt5UYQVCgC/kxL8le
b2A7kfPWOz9dTn46u5p8qqPqgMT5/WKkr30//NA7r+rDbRzZTNspebPvZ/eze2YCU3q6WGC1hQkQ
jVtxa3r8cAI6zKq6nTi8MrlYzavx79Mh69y9e3cRjs4jRDTgO/apat759Dh9WEy+4FiP/XDW9KMn
Jx/q5T6BT/RlXU3OVjf3T06ByysX3k7efHQ/x4PESdX6NAbe2Uznvz+xMEBLU+13fjm/zhy5qyPL
YiJIQxuMwa/VDGOAzvPwH+pH7GnjZHJyfR3dlTtOGyOnZvsOo/mds3P3pjz+kuxO6evrd2fv35YR
ptvBIWD2VDbflOI7V+VvV8eHTdtT0dAm8J2P78/CRTxKHeiEbdrusoQ7uDjr4ZVNP/n7bOXAXXWH
NfoO/PD9fEN+/oqYurq4yuLy+Cicqu0SlZxv3/mPyR1IjnVnodYLNLMj8oayf+fk/wBQSwMEFAAC
AAgAOIEnSmsyCRqlOQAAyr0AADkAHABhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxl
Y3QtdGV4dC0zLWNyYXNoLWxvZy50eHRVVAkAA0yDcVgig3FYdXgLAAEE9QEAAAQUAAAA5Ftbc9u4
kn5e/Qo+TclJKONOQJWTKl5zvJM4HtvJZGtqSkXxYnMjkQolJfH++m2QuvCm2J6Zt+OHWCbA7q8b
3R+6AeWqLKJkvZ4a7R9vu1xdJ3mclLdlkhh/MKqE+HN0FW7uu1Ph5/xTsdguk/X5pw/vPr73z1+c
t98fXcRJvsnSLCmnp7WMPiXlOivyrgI0cos4MW4fVkl76LMUpmDG+DLcZN+SM0BXghrjqmPS1cPm
vsgrGxD/c3SdrFdFvs7mi5a4ExZ/XCelceF1MXGERyMv3CTnt9myA4sgbJkIm8gysJgiOcV4QhQ3
TCQRGn24MYbsfB9GBgx9NjCawHxhjDF/iwkmZwB4VZSb3lsYj+y8yB+WxXZtfPzYwOh4NnYdZAMC
ikxGAU4gfWR6vrADFzFuc3s0Gmnkhv09/JIYN1keJYZTFJupwSlCyFgnUZHH69Ho5mG9SZbGRb5J
7sps86Ddu0miTQUlyUNwYzwauWW4vk9i4/a+TML4gASBX7P1KtxE98bXbbIFT0XFchKuVotksgyz
3NxUL4xG/o8oWWmh7XX2P7szx/Zmtuv6NzfG+Obi7Y3/9tNZY74OjsNi/+pfX84uLj/Z7y7gJc+7
1m+FGwP9QJ2fhoRLMKil0f1wfXXjzy4/3F4E/zMafXpvXCd3MHNtXCZhaaDpyDTfGCM9fTa79T/f
9jJipwQjElkMPpiNB5F+YPxhGJSgX/80SvPHefn9h3Hz/l/uh98Hkmk0erso5uHCuC1DvUrbNIWY
HJfJN4iIxIjuyyIvFsVdFsGc3bqdTUdYMiYsxkDnhEiMOTbc4DLZfC/KLz28/1U7yErTVGF4hYvE
cGFlNll+Z8RJGm4XG1i64kuWGOtNUYZ3ifE929wbqzrZzufbPF4kRnZI9L+pHwkj0Eq1/gwWOfj3
7e2VWwG42elfw9gi2RR5XxV/hioKqdlUdXnzM1WjOsIhsnchP50+McQhFxojvydztyiTIWRVmHAc
kjmRxm7edFpz083mAWhrWqySMgRs/xoPjf/yy5nx0iDAjNdJ6hZbSN14cj9V8myEnwciRCmEaxeE
v0iWsMzT6TrZVApPoHh1fLF64mU6chOgGo2PIqkB6vkf5v8LjAIQMbbORuRZGFnKWaTmR1VeEW1r
eGUCGRF1EO486N6H+V2Fg0O0jPcvTaLVaoolRmcj+lwYggkyBCPSeZQc95ax1oqZ6GglEPRnI/Z8
reGg8XEWO8AFy8Tdlnpb3I9c5EEZLmsQXHUtFxKChD8vSNBch8kRQyW/Co697PHvt4GOjfRqU77u
YX1TxyvWAXuRr1cQCkUJHzZlNRxqjobYIBz2QvFM9ygiY9l3z++wk0EtMp0DrefH2Ph4/Q6kg2YI
3XlRLF7133xR+U0C1O0mW8B+OLUEPxtZz8RlRdJifenvijDWuEDUMttAfRGOo3vYcSpQL14ZW6hb
7nLYZxdFflc5TYkOEvlsJCTBp5GkWZ5pmtN/AwmO42ILO37FL6SRN/X0XQzBOqlnopBIpvFpFMvw
YZ7oP/zlavNQxa7S6luWY/RcnXOhTutcb8JyszP7PfA41I3Ftox2mcPpsPEcUUCCn5lAUQry2gm0
hwH+31QqpYJsbQzVpCG14aSj7tds8y65C6OHIXWWEngOufbyD5hZcwF80PVdmYeLM2NW85U2uRr9
Hbb5K9gEp6n+61LndvXpU5Z8n/6piZwhY7yXNVkup5QyAEWfByoOFYkMU4PSkrXAqzL7Bkg0JMiH
Ir8AV2ThIvu/ihI0ruAA6a4stqvqUwUJi26GYvZcPKnAp/DoRTnobzimjYIgVTlGv6/9gpmlAAh/
HpBEpPH8CMR4mm4srZZuzgnsLlj0Gp3h6mhXqkqGQmzUAbETZufxhzRdw7MEliCPi+9VdBIMu3lb
tFZrcV10WM/UyhXkctx6Y5zlm1dGgwxf1DUOsYbUYlqloXymXotI1HlDp8Gwbiygih/Szai2GRhw
kc3jh0U8gX+y+c/qUGlFinOoKivO0bIPdSaeVoUjCFhXjdjsC6RpsmjLbIriMhY8IdCY6Or3azW/
TDbbMtdyUVUBHqWt6uK0Ja4FLEUpt6Sxnzj7/rX+UG3YklbF2rPExZTh2s6WLHqwmPy0otY+3Q2a
yzAHXir/goOgoTG+QP+Ub2Zfi3XLMXvpA6vWlCJxGGPBjdl+/mx5VwIvfCugndbpIPauebrAKI7i
jsCDgzg5OIj+x4UE+4+zmP8VizEKweJ1svweZpuZrhTDxZC90WOhCE1xjFIjD/NivUiSVVVoqr2Z
0cuXEzxMam1EiiKCwEzokWczPJ1u7rP1LqKhvNKCZ2lRjo8T6qMM6F22ZbXFv9ZlblXrvmqIqcZe
Y6jO8eE0Z/HGeLMr3TU3W7zTvv13+C28icpstTmWYk3yp2HE2XxuzJfhYlFE0+m/k3AFIKMQSOIu
aWDc5hmQ0gwmfXl9mH2ju5To/XaT/HjzSxPrX7FI21JtMLoxnc2WWupsHq6TKVZWt0N8imEkZV3D
wFVR3Rfe7E3UKoXsaqS42w8+QaMAbjxqtNcPeXQbrhv+0iBeGd+KLDbGHWQvzsZnb3Ss6DC53ubv
imJVF/yw0x9E6bMCwrv94FOgqTj+R6D5+aZ8uCqgNBj/HXF1GaM6DeRTDIlkXMl90Qik2S69Zquy
+PHwupF6WxD7uoYBev8e4ld/y4EvILzHFfBqVaGPWibLonyYEsGtun99HjUrFR+peV7EDxWV4qoH
faYkHB4lHWoxIavW8pkEz7HRFXSkdzFt1jSXNx+v37lFntfH6nV792z+j9LUIsYy1JXD+m62KcPV
EPk/RRCd04OgqtntnMnpoAyKbR5XnNaXMSch1sc5s5kb7FL4Jim/ZRGU09H9VVG5g2DSIekniEU8
iZpi4VflWS46vPi4LJUmVBpNSTerJMrSLKoyUnRob+hAuXOUzEIB2/gfneUc1+sJXWO5O0HQD7TK
qlFj4IY2i3VhdzVRoZJEaO9e3tTxNKtjbDarfYErNvlnkkj+c0mkjH82iRA0pvWtU3UT8VmK3fWT
obfjxBgLZs6zzdl0ZBhl+GNqoB/AMCBfaiUi0bcwRjmvBrq3QzAQnRqI+wMEIa0kzhojGMV4LgTT
r6wPA9o2HkGNFTGpta96A3NcvdEfCBOtxChlR4niIdFkUarOQBLWgDFqDfA0TUJVDWA9kGp3w8Ac
ERGrSkmJyQlLMO0P1ErYCRMxH/KjVpKt2rh2Vx5GmS46r0B3jiBJopKckDV6t7v/cq8+1ld5kFZ+
WRZldT+4u907vMpGt5oeL7fL+f5KGrPRaORkeVg+GBdL6CvX09H+Mu/H4R7PMI3Ww4gC6xovO6cM
Y3RmvHZt5AdccBNJm5vUpr6pHN817SDAHHueTzzy5vGr86a6mPM+BnhYYYA02p0g3ibrzc19ttzl
VoUG0YAH0nJNyX0JaAJmOgF84sq3A0DjEB4MoTkltYNLDeCK4iFc25W+zW5C48RlniOwyYlNTBpY
gWkLwEeIZSmH+IEbOE+A1hTcQpcI2kNH53yepvOf1FxjgdhLeAl+QbdDXwJQh5KA+I5jCoEtE1q4
wFTIdU3Ho8KzCUE+9YeAtiVPqiM7vZOc76701+d2Z04TP8NWf9UZS3Wa9U8Sh3Bz6SsH2Y4ZBNIx
KUbCtD0gRyklp5ZA3LHtIdy1xGG89VgLJxSkPZy6J01TOnQcPgDUJa5FLElMhwM8qrAyHQKRECiK
he9hBq3pCaCnPbsbbEK15LwfElaoVB/q8XB2AK/EDmGAzCQW9iGpODVt28Om7xDiS6SIE8jTjq3l
/sy99Ywm8ijFfeTwkFfBAJHvvv2sv0AxsfcZpgSaWIA1gDRzlMdNhwoBWBU1HewLE2zgkgqLO1gB
1vrrHufvsnkJTHge7MGtz7UT3wJr3mfRehj0/oZkfd4HMqrB6qAVnJHoaMThoaAhg8JFH5kaYwqw
CdE+lswSNHBN10UBBC/km+26zLS4LRF3fYawB7i361JrPddvN3RJbLG4qwsectrJnosPdhQli/pa
3RgTxCcYw1v1Bx2bHDuBRZj+Kg0QqKMCUyJYehshV3AEAct433+7K4OGG1uKhv3YmtI2Rsz7xoQI
71d/mUQhKN6vvVBiwgG7HwgXOR4zuaZ8ygLHlLYXmEJByLq+qyxbNXzYFdSEQHCIehAITlLN9Q1/
FqskjxbgyIk10bOr33ofsgJHBlRUfgM3Bp7puFSayme+yyRTyPJ/GoYfQLD7bthx9VgbbjoENz14
bFeNrqHyz7PDtkQ0VEocbEtXmJ4rgY0CFpiOdGEXtzlxmOVSXzgNr9WSzk/I7IAifVBMyY4Pdcbp
O2BjjImeLRjwDgCzCUBgCpsCC2VSi8ByEgnxyHwfuYHHHJc9mspa8LAX96OjNjrVhyzm4QDkqnoC
zHjCqqUHvoFPlUsti2DH5ty0MQLCZISbkipiutyzIMGQb9vOo8gr+aehV8OjNsxoCHtaFQCwNjfV
ZdZ1Ut2q7iKAEQCt+QeLwLUUkDrjFjWpr5CpGA9M14Ed3+NY8sBr505fXBtN1PckJSnpeNJerert
fKJgru4uJ6zicag7cADE43lSFyEeMiFGpekKqJWArXxW8eFpF9aCh/zn7saacKm0+s6jUm+VXbiL
5NOVfVCkUx9PSJX68FsvvkOEY3nKtH0HPOlBLewwG/KfKQe43cNIkqcw6F7VcAjsR1tGKNlPOKrU
vLMJuIFmEC8rq6+gwJZffRlTu18xHQo4UFxYxOTcR0AIyjMVtqBu9aXLhe37islHuesgfRh+M9aD
J8zvTGpbnQwsHTzsWB1u46yYbIGq1hNbf/6Y68DDE0y16fBLk6ElHU4gVQOCoXwgUE06gkiIPUpt
i3gW4uTnYbeXfGLZ9sNNC2Bv72/eDPFu6fubBwXDBOtgo0iHGgp8TrFEJpEKei+oHIFxfP01WOL5
GCJN+PixJFlAP6kPYXYnV+tH1+s3b3jKb17bpmYj2XhYJRSQxSLc5ofbwrEl+ISjidSVEGW+B9W6
yTHYQ2E3gGqTeabvBhQ7EmGXo8H9qCmxA4UPQInlfnO0PwXVuuzBYFFnMraV9JyAmrBdQ0MBW7qp
iLRNGypKKnzhc+8RDvp0POR6Qi3ZxtEywSJJ3wTLSvfejLar9YQcWJ3yygCFuWQ2g/jA4EBKoSqy
Baam6xMCIYOo5co2qTfltAFEuA9AIrIH8Pbdx4P7gAl1JelZNlc6i3wKJZAPfrSJBYU5kRhh4Sjl
Oo/SyNsTJVA9Pav9dtDdQpzSAcSp6DL6dbIsNtW3fPYZoCldvwcodTdMpMSMKaCAwNc5puncCUzM
oRZGsKtzSp9C5309pyKiO69tlegHAie6zp93C5SDHjcs50Ved6MYU1FtV/UHMJB4jh24yjaF68Fi
cQxbFYZuVFqexLYtoIVGjxYrT2aPI5YTRH8Yb5rNKRd9s6kubuiuH6y+2ZWGGsMuDim2JgoMZBZl
wCn64EXXkciyoCpnlulBFYEIs31BH2HJfZuSPGret59Uba2Y7QNu2yv6exrnadQN3vC7C5qgg9l9
MR3qKKwLKcn0Th5gqGeJ45me8qAhEr4PDRHHppKqOsfBkom+5c31PO9qgFHAnW/W5+/D6MPNcXzU
Rtrf0GAFZbcQ0Qfb9f/7SMrdydaxGrGw3g4Ql2ACh02NuMBhukdxFPyjD4wCAV0+9pyn5N+QrhMh
ODBz1DZEDVkXd62rvs13FebJYq3rDDIR8I4SOiRt3/K57UOJpWtEK7BN5Xg+cCPFzLI9m/iPnFJU
afJ4tjUgnGoljjM6Rg4QjcD8sOMUy1UGWTE7nnIKTSc2prBTQ6IFXAUmlWCkBIeZlmOBbRwFjusN
bt89gW04eIAABDQUOwLQl06LbxN1wKL7MFtw5HBXmlhxqGSFDU2EgB4HOYQJXTk5gd3e/9pi2ggG
qgguQjXQGn7K4qTQSy6rorpuZ4FLgWywAy1V1WcLXVrCmkOVA50WNGJMuY/ybCX5dFNYDbdQWyTt
o5YsOhwMfF1km4QeTgQw9IMA1nOpxxWUkgrbOkBZYCpuuaYQSllEuZ4kTttzLUGjtrYBMpAhOkRS
44s2+gigqh5kAAgwhW0XQR9NmZKmsl1uCiYs17ECBsVup3Q5immrnw95II736ocujMeUMDkR1f9R
29WCrktlABWg71hQCzLkmbZLiQkVjUQ25raL7J+dkjTFN+GJudX3DuxruHNGu06irf5/aenx1hS4
Xr/HOSaaUzyokgMP+mQr0PGFbNt0fAHrJhxHBdLCAbJ+Gl83OxWP1az9eS2DItT3t/h/4q6kOY5b
Sd/1K+boCxjYlyPWZ8VIMwrT9nWiurta4ogiFVwc1vv1k4nurm5UocmeZ4bfxaJYZSATBWR+Xy7Q
lsqZdfz5/a/397er+z93DBoNvqWmrjVifhGlwhMLJkRmUCLSTAocWAG0Jiut3sI6TiL035wen6pn
6NYs1DMApg7bafwT3CMOMVEb9GIlOcWT1yRgbkzEoMEJg+lHlsaA0UQlc7udZ+M0MjC5RAdmGVvZ
Md6nvY6VWkxrPqe9NDsVIhxyDeI5zcFQxkhgZ0sw5p4K616nvS+u5ukbjTLCiqUywomDhVo9frui
07lE42QyOhIZibcBzLoyAAl0DkQlVXyIYJ+4bhfzZIx2brckqQbY3uFjFgA7n4aHx2PADBjVFZ42
ro13PksCWxWgFWOwYskIElJJ0WmlwVi8OfX2v15fQCPnQjcaW770o8bKYXY6P2Kj4NP98/rLAirB
R8DU0C4KgT/gasDCc4ORboBj4C7AMPpQFBA+x7ikPmkvLwFpL0x7qu7itVZFueqpOM5VHO4+P9z/
gZxoR/cqF7IAKX0CNxPB7YUAOytqTVgsiUZHM+Dqi/TYj31G/P3TVmrLOlI7fjgG62/fp2gJbsDg
gYXyqMHcS+ClIoCDTMkQzVx0OVhEYTMHOY3QTDxslqkDs9puZg5ol4D+E/C5UDt+DLBl9/V9CtkK
cNNJwjcXAji/11ESYI4sAWSM+YJAPY59Htjg03etgEt4atZyCi8Nz0/HeI7FBXPOZc1ogRNbIob2
BPEpeqJypNIFrVKZQZrjGO/aWVRnasdmFPzn98eAAmAIXl01olIdjA6SRRKL8uDeYKWsA8KdSzLR
Y4TBpTc3HUdpzjm7XrgB1OI9XdUhp3DS+HHMZRZGReCAlRLYdqAAMRCgoR6cnQ4pBkrBn3Sx0nG0
VojBdYQY5mT4y3j7HZdaXKFnk/jNhUpeJmkB8UcOnsIztNKRSGBwKqYii5ZvgiRg6jPrCk9aZdYd
l7OR6wV5BBL+49vq/vCla+gX95ClAE1ZJRQ6AMNHEllgmTn8ZIEMA8TgPLjILXCvi5jxfKrzx7B5
rVFrSzuQZHuki91yuJ/Ad14B3UenLhIAuwJOHRARAGxwH8RGMG9BBBZzBnii3EsAuxm5Fa3j5C3l
bDtue+0CP2GCpmJ/dAiAEUTimAsRGXFbhA3EI8kp5iB1loBQX5JqvZQHpuYdecw82u8zYEdaAyE1
EOmTdNxITopFfA+OiniwRKR4+NQMIH7x8u3idD6fgXG51cXYni7DVKfx+8frT7fPn2/uZhVRhyCx
ogLzvGAqPKyvE4rYDNxKu6gMgCgZNH2bIPEZSVpt3BLbW2bdYRPfrO/v/jgJs9cYG1WeejDkYOEc
4B9tiS0cPgsHnpo81yHPig6aUd61Uw2d+d08bIZFB59vd2u4gy71B3QtHOh5UA5QSwJ75w0DQAru
OGWjMMzrTeT/8nLunrUCD6oj8GYCLbOmsJ8UZVeS7lBDBKDtrELEgoWDyQCjVtkTcMQxWmD/xfG+
l2gGbeXZiJ48cysEH2B783nfq3KQDc5lla3yoQQ0HwQgGqwt4NkM6xjBl1EG39fyUmh5+dgvJ2jk
5HSJufCXcxNwDDz/Ma4/VCcL9hL+v/1f8W8YLJGWcZUA0BRMmSmuCdAYRUqJKcCwMRn9ZhHuOnP/
td2zRlPAhUtN11uxXTea/rGvprB1P9u6ma0qAJN4JjkIoHlSgH7GgX8TcEwLfA5l6d8Rt/9jUWph
N2yJPu1G0xki+Tg+DXBOla6RX/wD9xZVDCMG4EgoqGXgtHrPMNBFk4jWZu3Ei2rVUc8wC3zUStoz
KZsFdrr+Aoby7jPaNLAlosp7+BFjSynhhTOR6AxgDutDwUzDodAuFCC7JkhvL4Ea+2nOxJV2D1vx
h21H/NWcrgIivh7uNjWysavG4bpaGl4Lb43WnNFdkEAEYOk+AMaQPFPg8InnbC8syNhPcrYkY/+8
VWHsfIGRTqnbT7AeB6coa9gaHAkzWPEiJRIEn2BzMMmAT1GenWfJiJfjX3XDvv/vC2IF0+SnIrtx
uxTZbamebZoXq0gEwFPjkyIqVuhNwUNq4KeWM8DdIUrm9F+tIjlbE+K2ZsmmByFdxXwtyva/RYx7
w7bZbZzdT+jZLY1ApmtiFA4qVZwAquaEIrLmysQY7aX4GiY5j6rh4anwgxRLUDVIzQ475s/v607d
hJKJCW4zoQoDAsl7oJWZo4UxnBeXmO37rGm4Vgi9RKmD5vzA/MIHfz3tW6Z5PWpBRs4suB9Va5+i
TiQA8iDRS2t15kH7v8URNfI1aunNqqPWOEG81T8rlpo4ra0kICvJlSWRYgmATRIMiNGEGSDvPsYg
5CwX0YzSzD/yJUIZRjEe5o+/lOvnG1D/NOAJKBtWNlmivY2wE7UhgQdPaOSeBh+sj6IVoB2mkWBL
lyB32LIJswH8azG6oUkxLQH9SB8x9UEB4YL/8rpErgDC8VeCw/+PQo6evEz05J0C7l/HH98+T/FZ
vishMsAZFRYCJ8wZZwDEgCdJdjYazYIuuV9CdDrWTAjZEUJO5S+Pe8cw5bHAkiOHrOExcPSRwqbh
IRsiWK1jBdwrArXSCJOsnpVWzkZrJTGdDby1U7j8Y4XGkxwciymFjzSUYInJWAGRQiaeGUVMEU7C
V5RKzTZwM0o7v3Wd+R2beeT/Gp/K9SFFJXd4TnKvhNSE1+BqAVPqcoSvoqzGQlnPysvkpI7Z30b1
USunUz057XTQsHPyOg7rL+PRjLlaR86FdUBHPAk2FyKA6ANC84WUkFOmLKYc/RuR0rkQpyqsOF26
Yfjldh7IHjc3AxrOx0cgl3gV0CGkbVyl2Bm2PLABcLiw6QBDELDGcJBZBn8RgIMF/grenI9/DnzO
32u1YbSjDZuDisfv4whbD5z6/We8COk0HAVQep8qrH9iUDcr7yxgiyIxTcyx8SNkMNIBwBKzEbZ2
fosA33WV6peeUA2Enb82W4Gl5V1pu+lUEJQmzVtLo8HUopdniRWB6fiSa1UdIHFhOeHg/JNRxQJk
fDUK9FqGt33nXSvu2NHBzQH5YiF21WeAEq5MrZXmtVtHB081d5QkiWUGChiGNUC7g2a5aAY8W13U
bdKd7sJPNK81W+lh3VFxrbbjsfLlATf5MXZQvU6xokhAt4QxgDxCgokHeuEJCzkocLpe0FmCYTFS
K8da9+SYLNgvA5y3u/U4Yw8lA7+kiaMYle7AmhZY4liE4qGWMYg3Yg+tBI3wrkPcVoOa267VsP76
/P30hLMrcyVrZtrUuHARVGZsTHCOARkyLgOPwAhXsSoKFaSlF6HwMJvpVKnds0b+oVOWAb8cZ1mx
78BYT9JWV5/w75UK7UhoJfzZqoLJUfApktRKxAAMgkRWFBXFuZj8W9ioT60sp2/VRzP9et/HTvkz
vBdhSqBZo6q1FYjtZfFEAQAkAosKLbfgWYrmQDqyBC/exVUno7VSWNWTYorXPd9NTIe7GocILDtp
SDRG7ZKeAYgR0SID49DOljMCTAPNpu+csBFLVZqPXKuqTionasjVCPBA6orTaseiiRzsFYlBYxM0
rI7jAPaY9tEnQKO5vBybP52i/wlP3zhVYs3lEpquuRoOa/jh5m4cHvzt5/GkZW5ibAXMhcyAjQvV
gHUiuFKrpSdAbEwI2GTF09/E2DqCtoq6JRFAq6zVTtH71f+ujw2h2qIxTEolZSl8CQBvmPRVxDGq
iJTJ+JK1jdy0Nvl0lGZ6rZchhbW2q5MytmF1M/G2fS2T4zyXIDShGSyXQJNsuaEkW+ajFNLwSBd1
bNM4rQAdk7rWq4m4PX6/ucPbBKdv7Ew9tdTBYTG2EFo8wwY/SQJ28wLzKIlHxeO8C6AdqRViJXpC
iEX6cn0/1Grk2l1aO1ypMdb4QBIXKIYCBulcgP8I8FxcRGXYK8gFxjwHWOBRK+ead+Tc8k5Vg/89
/pwQWu6Cz7BdKDby1TJdXwKLmAGgFng3IBMfsVYX+2Dx21EZL44A4SwvxIDwcaOB6aDFtRG0kwx6
rB31NX6LbrMG4bTbmWydQ9EegL+AUy1gTyBeBNIFTDhwgwmC8BbOBynP9UGM89G66ZVWVW07qmp7
7Pd9Gm7/5+nm2/j4NBw3OBjvK/hUu2+VMhBIxg0xHtEXAmMPxov4DMg5BvhluAhK/uPTb3FfiXyi
xjkhGjXAoSzVsKspGdoswG9PN7fHhqPdx/KJJh8BGjgr950KzjnA+j5HDcqF5GcI8syQrVhr2hFr
bWe9wXe7e38W9YvCKoykC4QyWlOnUjREKwECWlhkp4BuSQQEquhEm6rcRV6sP0cjrWNLK7dZISRY
HNxDmz7u+roXann97h4AzQBaeEzZCQ9HV2D/qAdrIxLaGQOmL4i/eA/A6RunKmx69SqbzTHi3y7G
lBu1AkO5tecIa0UxT+F4ihjKNSRghVCwziWNLfiRXbDMy9XdbFbL6NHIMPzZpuNu6tcpw3rcETdx
tas+qX9iq72SlNsMOIHjHSHUWOJ5YAS8SZbYbabcRbUnhxnO2Jf903ettENPhc3ipoPr59peUws6
gG/WctfdTzUplJFKa8wCYUgsgSNiOhJpOVdgPDR/pWZtGv/c5Qb7x43svNPFMIpF3nANOj/f1MLo
fWN5LYlnwmoBKM1TtOcMjqF1ILIqykgDvj1wf6k3+u39+T392/tGZtkppxylnrfEHzlQbU3GAhtW
u+MrWmacXYmdoXZUGpA2w24WCks+GLG0BFIS0H0egED3yt/O9EfXaV7okK7PW3V0Tx0zd6u/xnha
GFrAygEShhOpcL87YB/OAKLkPAabGQvWX9QFCMP2pYUHrZidroXRrqcLHT74Tz7+5wLOS86FzUAz
dTAeGRoFogxWGki0p5Fbw5n4u+D8iYTvWi14T7XNSWfRt/u7+PDj+7GEE46NUQfz6LDAGOgWcOlQ
788By2g8uCIw+MwDR03Bn2sxmo3cCOY2ndPpxnmnyPB40iYy2WzJCm6EQljAbGHBNkovPOb2lTE5
OetfrF+bRm1FGseOSHgpklm2mvnnpy9T/ruG3GWw2ogMK6UB+ImSsUpdUECxxkeVZLGhXGYyDuO/
1EWGzxvpB7vEdfDL1fxWkn26Y5k64V7bIFyE72vxNh9gbha/tNJA3azUrgT74t0kpyPPRFsG+cbV
Al2H2+fx6f5+t65yVxaBf27rJ6eGZ7zwrHBMM/EIrD8wR5wAkYExGKrYKz5kGv+cF5leaKRfWdmR
3rllWQS2aw5ArB86hREFe0AN5YRFrEQJCY6Qk4JEk42KIkjJLi2MmKY5a4unNxpFxk3HFmzVara/
P40P2/uHbxhr9HfD7Y/Hm8dT60xNirCvcV9gw5AHO21FwoL4KJkIHlj+Rdu8M82ZeNryxVO1tlQv
o4fb2v7aYpT1sYIbIxbV3Wu7b5/POYWsSVECw7hYuswxiSgCFokn66S76CKm9WtV4qdvtFqslgx0
yxZdvLs2o0pi8SfcaGKf9hPVCmVvwNSAFlTzgC28yPxtJNE6rmWiNL1yocg09gv8GR+/awV1Penn
bSDp5vGrf1jdPD3s0y2HDMXuNjHlKPeeKFGvA8ErfQxlgFVyUkEpQV/pRJuN3pd/9tJMi21Hi0Et
4i239w/XP+7WuPpuv/pul3YtUZjMKXA247CEGU55klgiKhw8sqlY8+btBpM8577Y/nGjK3dLZL8V
jG3H1R4YPIzrBhYIoY6cKVJVkiEeqAlmXzy4Ciwiz2DFJMCzyMwZUNCO2ogk3Koj0nperf8P/Ef7
Th1vkI4KAe5fBKwbdwDGfALQWL1Wdh7v0X1x0WHE/tLBg1bCdcfUiM1UmfBlvPm2GW7J8Hh3LE5Q
opa6oqTOspQlBfztcYvrAlwzO8AJ0XpMZOmYZvXLyxEbgVSnvmSrzNyk/7wbpV02lYRWAuyDDQrD
tcoRCwiGlCjBhgDNDOkiWrkf/FxLRn3YCt25/mmrrJmqBb6A63ocf73/Ot7d/POkHRCjIsYFGzXi
bYqgNAIZdnhZgdSwFswBVEmz8or+cI1EvUsGtlqOHar4eDiVWEE5bsrN7fjh5vEJTJmsqTT4A8sa
WOKwB00gBoPBsLh4IUu9N4h6wQE6cxbfroGgleV8xefxnVZ9ue2pvz1bIV1bWvF/OPkV221xZQUz
hmHGDQtPNFeYPXeExxh04Nnk/NcuADk+b3TYdDIG280wj1R0c4iH21rqXS3S7Nid8tl6rwOJmTq0
KsAxsLCIFgeqFFaMefvOsUmcF1KL8yDNdrPMXcN2xkBHt6v9P37aXZ+ojBDmAP4zz9h1Ywi3GILn
rjYDYQs1CyJ6bN4VFzW0v9zG/q4RcQms8ZdTrPT78O3Y/1Hv+oslJuZCQm8TsaoJG7BYJDJykS1o
UNjsjomTMZq5O1dOAviQ876gD8Pd5+fh8/jxfjPe7mP+ByCsbGTWSzDhCUvNYsCWsEiJcQDzXWKG
enaJ/ZzPcaaUafZWo80wbpfaDNspW1Wvq/gYb2/wH2WcFWApTZPBmJCheIcIBcbqdHTAsyRAlmCS
1+ntCrBaKRolVoovlVgNcsmzbsffTy8FVFf0StSWz/oDIgI0QQK8WmTa73azc6BTTJ7CPgH7e1mp
y36ul24F9K0O2862WsEZ3Rfy7qny5u7xcXO8yUXhKZQ1bcesc86CyNhsjzFSgFoKELFVRoJzZiK9
RMFPxp2J5ZZirRmdcj7wjR6nfDVKkqWDg0YFSXjchC+Y/BeaAMdT0dksCp2dtNMxmsnXqrMma+Nm
gYmbu+0ENaUxCDVrSYr3jnONXeIJ06jaEdiQlujosSvblCJfXJLjsK1QZlgKtVmU+93cfW3qZWgt
D+OsXt1YjI547awoiPU11kcA+icRMLEvQgYh7Ftk+96fytBwybuvjU4j7yz0qNXh2h68qwD/0enH
p4cfxysWdrfXAdNKQFTAjtX+Vpk8cZGBFZABbTLNTrN/4xULrdit1vr/eruy5zZuJv+uv4IvX5VT
taPFfbgqDzgG/hRbljeSk+y+qHiMbFYkyitSjp2/frsx5HAuUtpEFZXLouYAGiDQF7p/rcZG3Tec
sZj1at3AXjVc3HqWZLK+KGPGluCp8Bp2YGReKZAyUT3vKDO3/+SI21QccOa2nuiM88bS4ThR/HfH
uVdtkN3+ukzL1sEAoTVmrrVcWpYoyHiMLUouS9RYlM7wwBX1IaTnnm5gF4ddBXi3PQwKYmcwDEpF
H6c4LnOhE+i2k9iPmw8YQ04bJPBJCoaoueh9R4cgRRweiYfSJdXSvmCK7pCeQ+6F/nPd0YuR0TME
H+2oaotq/fvm/su6NXRgPVsMme3wnbJEgT4aiMdwiQhfpjS2IEKpUpYClu+zXFax7mpHLT5wYGTD
B0+6ozBjQxscFWLAY5h+2Tyizl17T2rfiQtlSMTrQkeL+bSMFT6BelUaWJ9JBMn1y/DTFgUHGGvr
ic4Y+RBqz1JlxADzd1fX55VG/3r+5rafUMoHbwOYQkVEtYtTTHGhriyYk6kkzLionggT2bV/CL93
e7tDuyZD9Qouit7GwwSlprAS1sLEasRthhkxswxEMDBMzPDDiAQvoy1Kzh33iVDq5ROWQq/1QyZD
77HeaOTYaBY9nIEvt9MNOo+bFC6x88cz6yyRZSqU1qi9c14YVLpU4M6ADeQdlUchEDot92irhrRZ
2pzELOeP6EnYh89JSU/hX87kA/3PUwFKhUHPWhSuAGJckUpuaZSRyaD7Ge6d1jqUzEdkI1zUO3X0
obq7/1rdLG+buGaRLRvJysRtWVARMYsBy8wQaQshlXSBJWPFeORnv70uMXY+Qsy0UULn7fQQjaaJ
lQJMcHQeOI+aCfoSylAWjjkdBLr3xAE342iSB/ZGR0i4uRnDA9mx+YvLvQTSzNRQXvUHXEY6UOaB
X2mDGGomxsIbFosYpFfaAM1RvZwU2tNyIOrrclTqLIYZ8HCR0t5Z6+Zhug9wZ6QRNaXlFAxbXiCm
T8E9xdx3jhV1hJUqpcTU0dPWVrtdsugIR1oYMgID39csQXOcvOIaDw+4FXnnWK1tiRDIRBsQiMEF
LEYSiqSMD54yBxLxn9Ng4UZ3rGY2MtZK7b6Cq7OUerkFXINCbkERd8IBPwgBwS4UKRIiRFrLAifi
hXIL9r23iWZ0GMAEFxe6t27qgoyNOauzuxvZCJispfEIokIxlzGowuDiATbCKKdMK330QLndbocu
UekhXWrWD1v7r8fpw+bPrXOvDo4VmDed+WwonVawWhRHJBFQlgqvnCmEVj6pyJM0x2XwvvEDCO3N
/ZMulWqM9AZb+XH1x3K1R3mSeQMmVXqYSlmISDG92yIsugTVzyJOui8tEfxAJP6+tR4Z8xEybqZ7
hPEao6GbnOo9TRSr/EiwJEDlxqJPnurCRMNTQPCL9GLJqa3+O5SPROparO90MEIqWyHv3PsRM4h7
jmCQvNApIKwbx/o7YEcIzpITNMYQyyeZN7Z9xP6Bux36ZyOOB7jYD9OYYTHgBl1b5SMFJkTEaktJ
ocEjPaJzEJh9ZSQNTHhYIce2U7vJLknWjJCEAQ7bWib5/VO/Xw1MoWzI0QCg4gsTYqEy6r1LJINI
gValkmA6shB78JDd1rqETIeKE5vPyU6p+xovPzQ6k+K1+xL0WiUJKNMJw8ajNBhwn0BWJeKYgbv+
nwrC2pPXGdVCjIxqIftZfNtczPX31eZz1QmGQA/nFgSy/oDHYDQ6gpafLLHAHVO+QOj8Qlosuycp
S08clv8VaVen810OKRzm/DUPdadC85GpGCQ0hs+Pq9+Xq09bsvHkT+cwe53jtnViRoaCEDy2VLAN
rHHAkzBdinLJuX8eElu3kwNbuPtQZzA3YqhMwsXpjpXv4oPvN8ublr+N7MRjFMbHkuOJksbCRQG4
OkmpCFIb0Pat0SEcDTxuNdwlTI8suJvBLL+pVlUdBDG9vdzcP2RMoBptkvE6Rt4Ew6gQIBaZxcQM
rgobwGZCXGiQPfAt+Gc5GUa6OnDgPnywO7TFcM5BDVIHnWBnF7niEQxrW4hBW/QsZ5enJDYjoVkE
LeTUY4hv0LiZnHYgzPQTudq57UOxZN2aR0DkMKEKrkybHMA/9zACWBFlG2fBS+8FgwmHFQGEGV3Y
RIDPElMSEQXRLnS5658jOALYz1BocsrFYjEsuPTTh/JN2973sDqjx5BtsGUQPj8feImiRIw8Tkms
C7097ywFGz9ymoK3O4TTYYkwvNgvsnRZzbEk668P8Odo9B1NBgMcKPBHzFDwIOmtgP+iioZpoWAt
P6tOVLejg2edrWe6wxlRXDlbNFbAt7tb1jrytHWZwOhdVAjvEhMi67OSgOnFaJGkVDGBSug07a6C
djsn3b6mYwQ02sftdPVpuWgJejSsQhAJ/YugK9Gtqhwwq6nkTtIUiWGs2327lV73Q7WTc9L4I6YP
88/Lr9V+CjjHrcBy1ifXINAx/TShoqHwQMoD20e1DZQfrfsJ373GTrp9mhFCKjriCMhIC+OZqJoE
2ASYH5CLoII9A7YaI4g2XlKiWGD86Wouuf3DCmS+3aFdzoeHvVzxarAncALe1mW36g2Rf2fMWNwG
aCWj0OEq0cIFg9hv1HMT7LPydZ6vNewIObRdtrc7g1TDRFuLeI+7nZIZSddeNswljahXwDXBXkY0
ACtAsgYuQBHEYnAhvZC9vO+9S7Qa4VZ21neBH8Sb0GBcgUQiBQFDC0s5YX5w4gUVmIsinSqfAG05
jjUR/nMUZwJJHCoMfDbIOpl+bRdE2NVtEjCEWicV1MdIgKtKib6wXM4UUbI17AVhpHflEzb10yW8
2k90hjAbcVXAxUXPrOpEcDWpu7WIAKEgXQoZyBEmP4BG7cHSlpIb+GYTmLfxOAxlv+k2gYIMkZXg
IlvstMXbP++mp3IPi4vRLoGArU8xWhARjIKTuE1pASJXEY44Q6FXx6DdSLf3EXsfLvYD3HYhQp+X
u6MZrA6OYXe01L6UDHRtXSIyBAVltQTmQcuSucgEyNEXwVXYBQr9++x4ING/zzrjY3IoWAWb9lM3
eiDPNEfsIchzjjQACQIMRCL0kMWkkrIABdchxHMC05qXJjxPR3ga3vkQtDPQPCMjA7mZjcDWZMlw
doHAxdsQcG1rt1u0DOunlRrTpwx8cmVpCuJEtFpZpW16nlQ6xAtbD3SI5yNHTILv0c4uv2ClhFEw
O5VgpYP5UxiCGT1GxMKAYl942AJBlJF6/09BI/Sp7A6RyZEhsobPzO+/fG+fp9CMCeaQgWPIWuKY
HybgP+9BgxFBSVCgKAPt9EC8dLu5LiVDbLJ8sa/C5H2HhmcGepE6R6krrPrIQBsWWH+WWQR75Ri+
wmnJAjU8/uXNXN/rkrqoRki9GdO2WjlAexOklKCnWMfABAkg2UmQYLMp2J5CY/qZRcyPJ1f0E9k/
nUfa1EsxDFfOF3dfOZqsn753Dk9oY+TDprM0oIooUHlOUWKWOYK6OIynYmpQ22nQXJeYIdIaXJw2
iHTfpg97Q3JbuJSDtpqUKhgeJPKI4ZMRxIgmSQQjLeGhFzHdaqTTuZwOrQe8OBKh13MtgUmG5bmE
yQ6cCCwKdBuKli0vkyx8igYMSqx0RUFVMOJlXFcjD/bGMxsbT5OD+L+P04fparNcVXvc6lwJVlAF
dnhBchFvx2AA6EcohfZcGhUtGT/X6LfXJWY2dG1gRbHe5H48a6uP9R6BhVRDGjjvJQMrBIS1RpRv
IIzAsiuVkj46E0eRcYYSrN3H+My2n+iMQouR9alvGsjNr+fL9bzvw/VJUZZ0BEUH068SKo4I32iA
7QfPaBmC/Kd8uHv6uuO6GRpd0gyiW2oSQxuRPJ891SBb+eTJIDgrAb7rEb6eu5wdBKpdMjZ5Amqn
Ko9nBoz0cUjLGDx40iW/GhmTmY/oGrvtk+torjCTBGu25XAs/I0CvKSUJuKKqDGkTHNTOIyLDska
7qMog/HPLpDR6+1IjYzek53x2REJKS2yq04w7t2+hinB1UhMSTOaiULPJ4+oP0kTQPcOmnMJC7M8
irsxEhIibTUMHIINLwbh5lhV+Vi8QUzWKRt4QZRDP6BC5BWYdUlAR2LBURPcy5nuXXoOBaa3n+mM
eiGHRjxcnB8Lt0iX5VcseZq9TzwfM2UDefsZreQkMQMd1RWsf5UcaC/WmyJKUKxoSa22LzgFO3oO
PLi92xv2yJd9w/rgmwN3Q438kZWe2qPhgLFHidDvAt2/3NECrDZexKB4qQ2xzPwNbPLtzQ7pN5yM
kI7axayfFtHODdZb95LO7iVqIqMUviCHCSXcYBFcDaoHbCwZBawJoV/+bKpN0uEMipEEYqvoEJnO
Km4b+Id0v769XnxfTe+W+7o16pQhN5fJxhzwg+htBbeSgdHIKSYNMZIsL6PoZfQNWzvp9ju0oZQg
fV0ZRO90UW0yGvt6nkMc6i+hXjmlUVQlQhGmIWD9GtgtwBoKwVSpYqQuPC+3L0I3cdfN4WCHwWMn
XepHh9TYTL9/a9W1GtQC9RzBKC3CYCcE2eB1PrNgnliqTQlMYBxe+ttIfSvsdyj0lBXzQTUJMG+P
wxBi6nsCPctjCjzYqhn0COgEMzi7pENST0P9HoUhbD9x0qV3yGFUNgJ23lHWc47qFBXjFMPcvQXx
rBOCvxL4kwYwBoNKjL6Yc3TE466mgoyQLJpNFpfTT6v79WY5P6/Wa+hr3UtXIhljgwnulRcFKIUw
DCl9YQPWA5IOLAfGube9cIPj7fZIZGMkqgas/awfogUKtaEBK9zJhKAOwKUtiKECI+K8Zs4pal9o
VpvOOyTPRiwYNZuzQQ2eh2pz23g8Tc5IRl0nWBJdCbqaIIYBn6Cg5lAjC+aUM15prZh5yunZNNyh
bASXCy7Omu/7TfqtzkjtxRil5LnH8twEC35yqUkNxwWWALE8Ga31C+GB9yjoUF9Nh5qLqmb9M5a3
1cOserhfo+TeOSuoF1oIj1DrWGXLlKChOamKkrHIGRjdrDwexr5rdHwIu7ttcjVZDMnVVIsBeDkI
DWDV2UFRiwur2SmvBZkgOmDWGRNo1FKJRXII4mBET2BnMPGC6RQ7Sg5X1sG7J93hyLEx9v1dv30I
WyqaIwocXclAhYyqSAnDZaTE3AKqCpuAh3NgKOR5he33rY9Tvr/fpX0ksAkvHlGEx5T/Eo0RLDZW
BnTCM8FAsQLdw0pge0J5qb35m99R+4nOENgQKhAuiuZA7tv6dtOqLF7H5GoWQL44gYiwoKorzbAM
KNhTxjqvBVXG9rII2810+x/JnIGJ4f28oWr2+Kl2r6NmmtNCac4JZWBqswDM2VsBBqrRoByVsDlF
MNoBOyfyeYle7R4OZcrsn+iOYSThGS5Ww3IONbpUXdBBZaU6Kss8LVOBVg6Qj6gRJUsF897pYFyK
+lm+nW3jBys7ZFypk/Lb1s4/v18sb3YHJpePd3fQ6msYVJjewgTfgQ46mX2f3G8+Vw+TLw/3WI8A
1u5m+vCpyhipm89gIWxvvM6TsZmuf7++uX+4/rJcvJ7UeHF1OcnrOfy/qV5PSPviutpcrzfN9W7H
TzVP/l7z8EdrVDADuT8E2F6uqrH+mIVd+f/r8+SX8wmmN7bn92d46mJ1+32CWYB45/5m0siu15Or
+8309kdOzKk9nzxU6+UCFJofydtX5F8/TNZ/YNzJ4vr+cXMNZD2uchQ1dLbYvoGq1L9+OPn1YbmZ
zm4raAA7b5oFtfvN5A+4ualWuzaP9LG71O4Hm9j2MsnjPv7zy9nPVx/dO/j0c/nm7OL95GT7++q/
P5SHX7s8+598N1x8fH81ebW6XxXz++lttZ5Xix8mJz/ufw400NzdfThx883yK0IkXD1M57h8R34Y
EeZt88fkJLyZrLMaMVmiMrce7YoK0bwj4Z2M/Fi/MMHzndF3WKefuK3ECIwCXciPeUv2egPbiZy3
3vnpcvLT2dXkUx1VByTO7xcjfe374YfeeVUfbuPMZtpOyZt9P7uf3TMTWNLTxQKrLUyAaBTFreXx
wwnoMKvqduLwyuRiNa/Gv58OWefu3buLcHQdUUFP+W74VDfvfHqcPiwmX3Cux344a/qBdz7U230C
X9GXdTU5W93cP7kELq9ceDt589H9HA8SJ1XrqzHwzmY6//2JjQFammq/88v5dR6RuzqyLSaCNLSp
ycmv1QxjgM7z9B+cuD1tDObg+jq6K3ecNkZOzfYdRgm+c3bu3pTHX5LdJX19/e7s/dsywnI7OAXM
nsrmO6X4zlX529XxadP2VDS0CXzn4/uzcBGPUgc6YZu2u8zhDm7Oenpl009eO1s+cFfdYY2+Az98
v95w3v4Km7q6uMrs8vgsnOo3u1m323f+Y3IHnGPd2aj1Bs3D0QQFyv6dk/8DUEsDBAoAAAAAACOB
J0oAAAAAAAAAAAAAAAAfABwAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL1VUCQADIoNx
WE+DcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAOIEnSjqvu+WpOQAAzr0AAFMAHABhY2Nlc3Np
YmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby1jb250ZW50ZWRp
dGFibGUtY3Jhc2gtbG9nLnR4dFVUCQADTINxWKuCcVh1eAsAAQT1AQAABBQAAADkW1tz27iSfl79
Cj5NyUko40LcVDmp4jXHO4njsZ1MtqamVBQJ2txIpEJJSby/fhukbqSo2J6Zt+OHmBbA7q8b3R+6
AeWqKhO9XI6t9k+wni+udZHq6rbS2vrDoQqpPwdX8eq+OxV+zj+Vs/VcL88/fXj38X14/uK8/f7g
ItXFKs9yXY1Paxl80tUyL4uuAjTwy1Rbtw8L3R76LLnNHWt4Ga/yb/oM0FWgxrrqmHT1sLovi8YG
+efgWi8XZbHMp7OWuBMWf1zqyroIupgYwoNBEK/0+W0+78AiCAsbYRsJC/Mx4mOMRg5nlo0kQoMP
N1afne/jxIKhzxZMxnjErSFmbzHB5AwAL8pqdfQWxgO3KIuHebleWh8/HmD0Ahf7HnIBAUW2QwFO
JENkByF3Ix85zGXuYDAwyC33e/xFWzd5kWjLK8vV2GIUIWQtdVIW6XIwuHlYrvTcuihW+q7KVw/G
vSudrGoouojBjelg4Ffx8l6n1u19peN0hwSBX/PlIl4l99bXtV6Dp5JyPooXi5kezeO8sFf1C4NB
+CPRCyO0vc7hZ3/iucHE9f3w5sYa3ly8vQnffjo7mG+CY7fYv4bXl5OLy0/uuwt4KQiuzVvxykI/
UOfnQMIlGNTS6H+4vroJJ5cfbi+i/xkMPr23rvUdzFxalzquLDQe2PYba2CmTya34efbo4zYKMGI
xJjBg33wATcfWH9YFiXo1z+tyv5xXn3/Yd28/5f/4feeZBoM3s7KaTyzbqvYrNI6yyAmh5X+BhGh
reS+KotyVt7lCczZrNvZeMDEiErhcGHw+NGlXn0vqy9HSP+rcY3IskxhB2HGteXDmqzy4s5KdRav
ZytYtPJLrq3lqqziO219z1f31qJJs/Ppukhn2sp3Kf6XNSNuRUad0ZzDwkb/vr298mvVNxvNSxib
6VVZ/FUlVLGWksubnykZNPEMcbwJ8PH4iQENkX8w8rue+mWl+5DVQeFkTjol0trMG48bJrpZPQBJ
jcuFrmLA9q9h3/gvv5xZLy0CPHitM79cQ6Kmo/uxkmcD/CwQTEzjJHG6IMKZnsPSjsdLvaoVnkDx
av9i/UmQmzjVQCwGH0XSADTzP0z/F/gDIGIszgbkeY5KsixR072qoEzWDbxKQ/wnHYQbD/r3cXFX
42CMWcPtS6NksRhjidHZgD4PRoqww0kfjMTkjt7vJEOjFSZ3tBII97OB83ytca/xaZ56kPlz7a8r
swluRy6KqIrnDQimupZzCUHCnodBA31lyR5DLb8Ojq3s4e+3kYmN7GpVvT7C+qaJV2wC9qJYLiAU
ygoeVlU9HBtGhtggDHY+/kz30FSm8tg9v8O+BZXHeAokXuxj4+P1O5AOmiF0p2U5e3X85ovabxKg
rlf5DHa/seDsbCCeiYsIYKpj6e/KODW4QNQ8X0E1EQ+Te9hfalAvXllrqFLuCthVZ2VxVztN8Q4S
+WwkROPTSLK8yA3Nmb+BBIdpuYb9veYXcpA3zfRNDME6qeeimMosPY1iHj9MtfkjnC9WD3XsKqO+
ZTlGz9U55eq0zuUqrlYbs98Dj0OVWK6rZJM5jPYbzxAFJPiZCSQykNdOoC0M8P+qVikVZOvBUEMa
0hhOOup+zVfv9F2cPPSpEwLTKeTayz9gZsMF8GCquaqIZ2fWpOErY3I9+jts7VewCY4z89elye36
6VOuv4//NETuIGu4lTWaz8eUOgCKPg+UTBRJLNuAMpKNwKsq/wZIDCTIh7K4AFfk8Sz/v5oSDK5o
B+muKteL+qmGhHk3Q7HzXDwZx6fwmEXZ6T9wTBsFQap2jHnf+AU7QgEQ9jwgCjJjugdiPU03lqKl
mzECuwvmR21Nf3W0KUwJQzG2moDYCHOL9EOWLeEzDUtQpOX3OjoJht28LdqoFcwUHeKZWrmCXE5b
bwzzYvXKOiDDF02NQ0SfWkzrNJTP1CuJRJ03TBr068YcavY+3Q41NgMDzvJp+jBLR/BPPv1ZHSpF
ohiDqrLmHCN7V2ficV04goBl3XZNvkCa6llb5qEoJlPONIE2xFS/X+v5lV6tq8LIRXUFuJe2aIrT
lrgWsAxlTEhrO3Hy/WvzUG/YktbF2rPEpdTBjZ0tWXRnMflpRW18uhm053EBvFT9BQdBE2N9gW6p
WE2+lsuWY7bSe1btUIrEcYqhhZ9s50/mdxXwwrcSmmeTDnzrmqcLTNIk7QjcOYiRnYPof1xIOP9x
FrPx7pHvH8Vf8QNGMfhhqeff43w1MfVjPOvzQvJYgEKrnKLMKuKiXM60XtTlp9oan7x8OcL9VNdG
pCgiCIyHznkywePx6j5fbuIcii4jeJKV1XA/oTnOgI5mXdUb/2tT/NYV8KsDMfXYaww1O96d6Mze
WG82Bb1hbME6Td1/x9/im6TKF6t9gXa4JVDJtTOdWtN5PJuVyXj8bx0vAGQSA3Xc6QOM6yIHqprA
pC+vd7NvTO+SvF+v9I83vxxi/SsWGVvqbce0q5PJ3EidTOOlHmMlun3jUwwjmdM1DFyVNN3izdZE
o5LLrkaKu13iEzRmwJh7je7yoUhu4+WBvwyIV9a3Mk+tYQfZi7Ph2RsTKyZMrtfFu7JcNG0A7P87
UeYEgbBul/gUaCpN/xFoYbGqHq5KKBiGf0dcU9yoTlv5FEMSmdZyXxwE0mSTXpNFVf54eH2QemsQ
+7qBAXr/HuJXf8uBLyC8hzXwelWhu5rreVk9jAlnoulqn0fYSqV7wp6W6UNNsLjuTJ8pCcd7SbsK
jcu64Xwm7TNsdQXtSV+ODyudy5uP1+/8siiao/Wm6Xs2/ydZJog1j009sbybrKp40Uf+TxFEp3Qn
qG6BOyd1Jiijcl2kNacdy5iSGJtDnsnEjzYpfKOrb3kCRXZyf1XW7iCYdEj6CWIR08mhWPhVe5bx
Di8+LktlmkrrUNLNQid5lid1RvIO7fUdM3cOmJ2Yw+b+R2c5h816Qi9Zbc4VzAdGZd2+OeCGNot1
YXc1Ua605sa7lzdNPE2aGJtMGl/gmk3+mSSS/1wSKeufTSIE7Wpz81TfSXyWfHMFZZntWFtD7tjT
fHU2HlhWFf8YW+gHMAzIl0YJ1+Ymxqqm9UD3hggGklMD6fEAQcgoSfODEYySbMq5Y15Z7gaMbSzF
WiSONNoXRwNTXL9xPBBro8SqZEeJYjExZFGpzoCOG8AYtQZYGqtY1QPYDGTG3TAQZxppVSupMDlh
CabHA40S54SJmPX50SjJFy1Z24sQq8pmnVegZ0eQJElFTsgavNvcgflXH5vrPGjLwqoqq/qOcHPD
t3vVGdwaerxcz6fba2nsDAYDLy/i6sG6mEO3uRwPthd6P3Z3eZZttT7kDrCu9bJz9jBEZ9Zr30Vh
xDizkXSZTV0a2soLfduNIsxwEIQkIG8evz5vqcviHgxZXGOANNqcK97q5ermPp9vcqtGg2jEIil8
W7JQAprIsb0InpgK3QjQeIRFfWhOSW3hmiJ8jGsqWB+u9cLcaB9CY8R3Ao9jmxGX2DQSke1ywEeI
EMojYeRH3hOgHQpuoUtQcoSOKgi3bPqTmmvIkfMSXoJf0O3QlwDUoyQioefZnGNhQ2MX2Qr5vu0F
lAcuISikYR/QtuRRfZBndpLzzbX+8tztzDnETzOcHeF3IB4hzY7PF/twMxkqD7meHUXSsylG3HYD
IEcpJaOCI+a5bh/uRmI/3mbsEKcTU3mEk+kpRAHtOyTvAeoTXxAhie0xgEcVVrZHIBIiRTEPA+xA
a3oC6GnPbgYPoQrOj5NZSGd6DHV/ZNuDV2KPOIDMJgKHkFSM2q4bYDv0CAklUsSL5GnHNnJ/5t5m
Rgs5cPcx8jSe1sEAke+//Wy+RDFytxmmOBoJwBpBmnkqYLZHOQesitoeDrkNNjBJuWAeVoC1+crH
+bt8WgETnkdbcMtz48S3wJr3ebLsB729N1meHwMZNGDN3sBjlIm9EdsPMdGxA4WLOUi1hhRgE2J8
LB3BaeTbvo8iCF7IN9f3HVswVyLmhw7CAeBeLyuj9dy8faBLYuGkXV3wIaOd7Ln44CaJnjWX7daQ
IDbCGN5qHkxsMuxFgjjm6zRAoJ6KbIlg6V2EfIgmCFiHHftvc5Fw4MaWon4/tqa0jeHTY2NihLer
P9dJDIq3a88VHzHAHkbcR17g2MxQPnUiz5ZuENlcQcj6oa+Eqw582BV0CIHgGB1BIFhnhusP/Fku
dJHMwJEjMTKz699mHxKRJyPKa7+BG6PA9nwqbRU6oe9IRyER/jQMP4Bg/12/45qxNtysD26289im
Gl1C5V/ku22JGKiUeNiVPrcDXwIbRU5ke9KHXdxlxHOET0PuHXitkXR+QmYHFDkG5SjZ8aHJOHMz
bA0xMbO5A7wDwFwCEByFbY65sqkgsJxEQjw6YYj8KHA833k0lY3gfi9uRwdtdOoYMp/GPZDr6gkw
45FTLz3wDTzVLhWCYM9lzHYxAsJ0CLMlVcT2WSAgwVDout6jyGv5p6HXw4M2zKQPe1YXALA2N/UV
17Wu71o3EeAQAG34B/PIFwpI3WGC2jRUyFYOi2zfgx0/YFiyKGjnzrG4Nprk2JOUZKTjSXexaLbz
kYK5prscOTWPQ92BIyCeIJCmCAmQDTEqbZ9DrQRsFTo1H552YSO4z3/+ZuwQLpXi2HlUKnUMd6Y/
Xbk7RSb18YjUqQ+/zeJ7hHsiULYbeuDJAGphz3Eh/x3lAbcHGEnyFAbdquoPge1oywgljxOOKjXt
bAJ+ZBgkyKv6iymw5ddfyDTuV44JBRwpxgWxGQsREIIKbIUF1K2h9Bl3w1A58lHu2knvh38Y69ET
5ncmta3WPUsHH3asjtdpXo7WQFXLkWuePxYm8PAIU2M6/DJkKKTHCKRqRDCUDwSqSY8TCbFHqStI
IBAjPw+7reQTy7YdPrQA9vbjzdtBTHQs+C2AgmGETbBRZEINRSGjWCKbSAW9F1SOwDih+SosCUIM
kcZD/FiSzKCfNIcwm5Or5aPr9VvQP+W3oG2TcHpsEnUjadhoFq+L3R3iUHA2YmgkTSVEnTCAat1m
GOyhsBtAtekEduhHFHsSYZ+h3v3oUGIHCuuBksrt5uh+iup12YLBvMlk7CoZeBG1YbuGhgK2dFsR
6douVJSUhzxkwSMc9Gl/yPWEWrKNo2WCIPrYBCGyrTeT9WI5IjtWp6w2QGEmHdeB+MDgQEqhKnI5
prYfEgIhg6jwZZvUD+W0AST4GIBEZAvg7buPO/cBE5pKMhAuUyaLQgolUAh+dImAwpxIjDD3lPK9
R2nk7YkSqJmeN37b6W4hzmgP4ox3Gf1az8tV/d2fbQYYSjfvAUrTDRMpseMooIAoNDlm6NyLbMyg
FoYGmzBKn0Lnx3pORUR3XtsqfhwIjJg6f9otUHZ6/LialkXTjWJMeb1dNQ9gIAk8N/KVa3M/gMVi
GLYqDN2oFIHErsuhhUaPFitPZo89lhNEvxs/NJtRxo/NprzpZOs2rP6+VxYbDJs4pFiMFBjoCOoA
p5iDF1NHIiGgKneEHUAVgYjjhpw+wpLbNkU/at63n1RtrZg9Bty2lx/vaYxlSTd44+8+aIIOZvMV
daijsCmkpGN28ghDPUu8wA5UAA0RD0NoiBi2lVT1OQ6WDj+2/HA9z7saYBRwF6vl+fs4+XCzHx+0
kR5vaLCCsluImIPt5v9+6GpzsrWvRgQ22wFiEkxgsKkRHzjM9Ciegn+Qg0XEocvHgfeU/OvTdSIE
e2YO2oaoPuvSrnX1d/yu4kLPlqbOICMO7yhuQtINRcjcEEosUyOKyLWVF4TAjRQ7wg1cEj5ySlGn
yePZdgDhVCuxn9ExsodoOGa7HaecL3LIisn+lJMbOnExhZ0aEi1iKrKpBCMlOMwWngDbGIo8P+jd
vo8EtuHgHgLg0FBsCMBcOs2+jdQOi+nDXM6Qx3xpY8WgkuUuNBEcehzkEYebysmL3Pb+1xbTRtBT
RTAeq57W8FOe6tIsuayL6qadBS4FssEetFR1n81NaQlrDlUOdFrQiDnKf5Rna8mnm8J6uIVakOwY
tXSS3cHA11m+0nR3IoChHwSwgU8DpqCUVNg1AepEtmLCtzlXShDlB5J4bc+1BA3a2nrIQMZoF0kH
X7QxRwB19SAjQIApbLsI+mjqKGkr12c2d7jwPRE5UOx2Spe9mLb6aZ8H0nSrvu/CeEiJI0e8/n9q
m1rQ96mMoAIMPQG1oIMC2/UpsaGikcjFzPWR+7NTkkPxh/D4VBx7B/Y13DmjXepkbf5vWra/NQWu
N+8xhonhlACq5CiAPllEJr6Q69peyGHduOepSAocIfHT+Lr5f+KupDmOW0nf9Svm6AsY2Jcj1mfF
SDMK0/Z1orq7WuKIIhVcHNb79ZOJ7q5uVKHJnmeG38WiWGUgEwVkfl8u0H6K1zDr8r1GoTVdrrfe
Yh6isY4/v//1/v52df/njkGjwbfU1LVGzC+iVHhiwYTIDEpEmkmBAyuA1mSl1VtYx0mE/pvT41P1
TCeoC2vLxGE7jX+Ce8QhJmqDXqwkp3jymgTMjYkYNDhhMP3I0hgwmqhkbrfzbJxGBiaX6MAsYys7
xvu017FSi2nN57SXZqdChEOuQTynORjKGAnsbAnG3FNh3eu098XVPH2jUUZYsVRGOHGwUKvHb1d0
OpdonExGRyIj8TaAWVcGIIHOgaikig8R7BPX7WKejNHO7ZYk1QDbO3zMAmDn0/DweAyYAaO6wtPG
tfHOZ0lgqwK0YgxWLBlBQiopOq00GIs3p97+1+sLaORc6EZjy5d+1Fg5zE7nR2wffLp/Xn9ZQCX4
CJga2kUh8AdcDVh4bjDSDXAM3AUYRh+KAsLnGJfUJ+3lJSDthWlP1V281qooVz0Vx7mKw93nh/s/
kBPt6F7lQhYgpU/gZiK4vRBgZ0WtCYsl0ehoBlx9kR77sc+Iv3/aSm1ZR2rHD8dg/e37FC3BDRg8
sFAeNZh7CbxUBHCQKRmimYsuB4sobOYgpxGaiYfNMnVgVtvNzAHtEtB/Aj4XasePAbbsvr5PIVsB
bjpJ+OZCAOf3OkoCzJElgIwxXxCox7HPAxt8+q4VcAlPzVpO4aXh+ekYz7G4YM65rBktcGJLxNCe
ID5FT1SOVLqgVSozSHMc4107i+pM7diMgv/8/hhQAAzBq6tGVKqD0UGySGJRHtwbrJR1QLhzSSZ6
jDC49Oam4yjNOWfXCzeAWrynqzrkFE7aQY65zMKoCBywUgLbDhQgBgI01IOz0yHFQCn4ky5WOo7W
CjG4jhDDnAx/GW+/41KLK/RsEr+5UMnLJC0g/sjBU3iGVjoSCQxOxVRk0fJNkARMfWZd4UmrzLrj
cjZyvSCPQMJ/fFvdH750Df3iHrIUoCmrhEIHYPhIIgssM4efLJBhgBicBxe5Be51ETOeT3X+GDav
NWptaQeSbI90sVsO9xP4ziu8OgI/VQJgV8CpAyICgA3ug9gI5i2IwGLOAE+UewlgNyO3onWcvKWc
bcdtr13gJ0zQVOyPDgEwgkgccyEiI26LsIF4JDnFHKTOEhDqS1Ktl/LA1Lwjj5lH+30G7EhrIKQG
In2SjhvJSbGI78FREQ+WiBQPn5oBxC9evl2czuczMC63uhjb02WY6jR+/3j96fb5883drCLqECRW
VGCeF0yFh/V1QhGbgVtpF5UBECWDpm8TJD4jSauNW2J7y6w7bOKb9f3dHydh9hpjo8pTD4YcLJwD
/KMtsYXDZ+HAU5PnOuRZ0UEzyrt2qqEzv5uHzbDo4PPtbg130KX+gK6FAz0PygFqSWDvvGEASMEd
p2wUhnm9ifxfXs7ds1bgQXUE3kygZdYq9pOi7ErSHWqIALSdVYhYsHAwGWDUKnsCjjhGC+y/ON73
Es2grTwb0ZNnboXgA2xvPu97VQ6ywbmsslU+lIDmgwBEg7UFPJthHSP4Msrg+1peCi0vH/vlBI2c
nC4xF/5ybgKOgec/xvWH6mTBXsL/t/8r/g2DJdIyrhIAmoIpM8U1ARqjSCkxBRg2JqPfLMJdZ+6/
tnvWaAq4cKnpeiu260bTP/bVFLbuZ1s3s1UFYBLPJAcBNE8K0M848G8CjmmBz6Es/Tvi9n8sSi3s
hi3Rp91oOkMkH8enAc6p0jXyi3/g3qKKYcQAHAkFtQycVu8ZBrpoEtHarJ14Ua066hlmgY9aSXsm
ZbPATtdfwFDefUabBrZEVHkPP2JsKSXwMQBZdQYwh/WhYKbhUGgXCpBdE6S3l0CN/TRn4kq7h634
w7Yj/mpOVwERXw93mxrZ2FXjcF0tDa+Ft0ZrzuguSCACsHQfAGNInilw+MRzthcWZOwnOVuSsX/e
qjB2vsBIp9TtJ1iPg1OUNWwNjoQZrHiREgmCT7A5mGTApyjPzrNkxMvxr7ph3//3BbGCafJTkd24
XYrstlTPNs2LVSQC4KnxSREVK/Sm4CE18FPLGeDuECVz+q9WkZytCXFbs2TTg5CuYr4WZfvfIsa9
YdvsNs7uJ/TslkYg0zUxCgeVKk4AVXNCEVlzZWKM9lJ8DZOcR9Xw8FT4QYolqBqkZocd8+f3dadu
QsnEBLeZUIUBgeQ90MrM0cIYzotLzPZ91jRcK4ReotRBc35gfuGDv572LdO8HrUgI2cW3I+qtU9R
JxIAeZDopbU686D93+KIGvkatfRm1VFrnCDe6p8VS02c1lYSkJXkypJIsQTAJgkGxGjCDJB3H2MQ
cpaLaEZp5h/5EqEMoxgP88dfyvXzDah/GvAElA0rmyzR3kbYidqQwIMnNHJPgw/WR9EK0A7TSLCl
S5A7bNmE2QD+tRjd0KSYloB+pI+Y+qCAcMF/eV0iVwDh+CvB4f9HIUdPXiZ68k4B96/jj2+fp/gs
35UQGeCMCguBE+aMMwBiwJMkOxuNZkGX3C8hOh1rJoTsCCGn8pfHvWOY8lhgyZFD1vAYOPpIYdPw
kA0RrNaxAu4VgVpphElWz0orZ6O1kpjOBt7aKVz+sULjSQ6OxZTCRxpKsMRkrIBIIRPPjCKmCCfh
K0qlZhu4GaWd37rO/G7epvFf41O5PqSo5A7PSe6VkJrwGlwtYEpdjvBVlNVYKOtZeZmc1DH726g+
auV0qiennQ4adk5ex2H9ZTyaMVfryLmwDuiIJ8HmQgQQfUBovpAScsqUxZSjfyNSOhfiVIUVp0s3
DL/czgPZ4+ZmQMP5+AjkEi8IOoS0jasUO8OWBzYADhc2HWAIAtYYDjLL4C8CcLDAX8Gb8/HPgc/5
e602jHa0YXNQ8fh9HGHrgVO//4zXI52GowBK71OF9U8M6mblnQVsUSSmiTk2foQMRjoAWGI2wtbO
bxHgu65S/dITqoGw89dmK7C0vCttN50KgtKkeWtpNJha9PIssSIwHV9yraoDJC4sJxycfzKqWICM
r0aBXsvwtu+8a8UdOzq4OSBfLMSu+gxQwpWptdK8duvo4KnmjpIkscxAAcOwBmh30CwXzYBnq4u6
TbrTXfiJ5rVmKz2sOyqu1XY8Vr484CY/xg6q1ylWFAnoljAGkEdIMPFALzxhIQcFTtcLOkswLEZq
5VjrnhyTBftlgPN2tx5n7KFk4Jc0cRSj0h1Y0wJLHItQPNQyBvFG7KGVoBHedYjbalBz27Ua1l+f
v5+ecHZlrmTNTJsaFy6CyoyNCc4xIEPGZeARGOEqVkWhgrT0IhQeZjOdKrV71sg/dMoy4JfjLCv2
HRjrSdrq6hP+vVKhHQmthD9bVTA5Cj5FklqJGIBBkMiKoqI4F5N/Cxv1qZXl9K36aKZf7/vYKX+G
9yJMCTRrVLW2ArG9LJ4oAIBEYFGh5RY8S9EcSEeW4MW7uOpktFYKq3pSTPG657uJ6XBX4xCBZScN
icaoXdIzADEiWmRgHNrZckaAaaDZ9J0TNmKpSvORa1XVSeVEDbkaAR5IXXFa7Vg0kYO9IjFobIKG
1XEcwB7TPvoEaDSXl2Pzp1P0P+HpG6dKrLlcQtM1V8NhDT/c3I3Dg7/9PJ60zE2MrYC5kBmwcaEa
sE4EV2q19ASIjQkBm6x4+psYW0fQVlG3JAJolbXaKXq/+t/1sSFUWzSGSamkLIUvAeANk76KOEYV
kTIZX7K2kZvWJp+O0kyv9TKksNZ2dVLGNqxuJt62r2VynOcShCY0g+USaJItN5Rky3yUQhoe6aKO
bRqnFaBjUtd6NRG3x+83d3jH4PSNnamnljo4LMYWQotn2OAnScBuXmAeJfGoeJx3AbQjtUKsRE8I
sUhfru+HWo1cu0trhyveQWl8IIkLFEMBg3QuwH8EXjQsojLsFeQCY54DLPColXPNO3Jueaeqwf8e
f04ILXfBZ9guFBv5apmuL4FFzABQC7wbkImPWKuLfbD47aiMF0eAcJYXYkD4uNHAdNDi2gjaSQY9
1o76Gr9Ft1mDcNrtTLbOoWgPwF/AqRawJxAvAukCJhy4wQRBeAvng5Tn+iDG+Wjd9EqrqrYdVbU9
9vs+Dbf/83TzbXx8Go4bHIz3FXyq3bdKGQgk44YYj+gLgbEH40V8BuQcA/wyXAQl//Hpt7ivRD5R
45wQjRrgUJZq2NWUDG0W4Lenm9tjw9HuY/lEk48ADZyV+04F5xxgfZ+jBuVC8jMEeWbIVqw17Yi1
trPe4LvdvT+L+kVhFUbSBUIZralTKRqilQABLSyyU0C3JAICVXSiTVXuIi/Wn6OR1rGlldusrOoc
3EObPu76uhdqef3uHgDNAFp4TNkJD0dXYP+oB2sjEtoZA6YviL94D8DpG6cqbHr1KpvNMeLfLsaU
G7UCQ7m15whrRTFP4XiKGMo1JGCFULDOJY0t+JFdsMzL1d1sVsvo0cgw/Nmm427q1ynDetwRN3G1
qz6pf2KrvZKU2ww4geMdIdRY4nlgBLxJlthtptxFtSeHGc7Yl/3Td620Q0+FzeKmg+vn2l5TCzqA
b9Zy191PNSmUkUprzAJhSCyBI2I6Emk5V2A8NH+lZm0a/9zlBvvHjey808UwikXecA06P9/Uwuh9
Y3ktiWfCagEozVO05wyOoXUgsirKSAO+PXB/qTf67f35Pf3b+0Zm2SmnHKWet8QfOVBtTcYCG1a7
4ytaZpxdiZ2hdlQakDbDbhYKSz4YsbQEUhLQfR6AQPfK3870R9dpXuiQrs9bdXRPHTN3q7/GeFoY
WsDKARKGE6lwvztgH84AouQ8BpsZC9Zf1AUIw/alhQetmJ2uhdGupwsdPvhPPv7nAs5LzoXNQDN1
MB4ZGgWiDFYaSLSnkVvDmfi74PyJhO9aLXhPtc1JZ9G3+7v48OP7sYQTjo1RB/PosMAY6BZw6VDv
zwHLaDy4IjD4zANHTcGfazGajdwI5jad0+nGeafI8HjSJjLZbMkKboRCWMBsYcE2Si885vaVMTk5
61+sX5tGbUUax45IW7MIGaJi/vnpy5T/riF3Gaw2IsNKaQB+omSsUhcUUKzxUSVZbCiXmYzD+C91
keHzRvrBLnEd/HI1v5Vkn+5Ypk641zYIF+H7WrzNB5ibxS+tNFA3K7Urwb54N8npyDPRlkG+cbVA
1+H2eXy6v9+tq9yVReCf2/rJqeEZLzwrHNNMPALrD8wRJ0BkYAyGKvaKD5nGP+dFphca6VdWdqR3
blkWge2aAxDrh05hRMEeUEM5YRErUUKCI+SkINFko6IIUrJLCyOmac7a4umNRpFx07EFW7Wa7e9P
48P2/uEbxhr93XD74/Hm8dQ6U5Mi7GvcF9gw5MFOW5GwID5KJoIHln/RNu9McyaetnzxVK0t1cvo
4ba2v7YYZX2s4MaIRXX32u7b53NOIWtSlMAwLpYuc0wiioBF4sk66S66iGn9WpX46RutFqslA92y
RRfvrs2oklj8CTea2Kf9RLVC2RswNaAF1TxgCy8yfxtJtI5rmShNr1woMo39An/Gx+9aQV1P+nkb
SLp5/OofVjdPD/t0yyFDsbtNTDnKvSdK1OtA8EofQxlglZxUUErQVzrRZqP35Z+9NNNi29GiBtJb
B3B7/3D9426Nq+/2q+92adcShcmcAmczDkuY4ZQniSWiwsEjm4o1b95uMMlz7ovtHze6crdE9lvB
2HZc7YHBw7huYIEQ6siZIlUlGeKBmmD2xYOrwCLyDFZMAjyLzJwBBe2ojUjCrToirefV+v/Af7jv
1PEG6agQ4P5FwLpxB2DMJwCN1Wtl5/Ee3RcXHUbsLx08aCVcd0yN2EyVCV/Gm2+b4ZYMj3fH4gQl
aqkrSuosS1lSwN8et7guwDWzA5wQrcdElo5pVr+8HLERSHXqS7bKzE36z7tR2mVTSWglwD7YoDBc
qxyxgGBIiRJsCNDMkC6ilfvBz7Vk1Iet0J3rn7bKmqla4Au4rsfx1/uv493NP0/aATEqYlywUSPe
pghKI5Bhh5cVSA1rwRxAlTQrr+gP10jUu2Rgq+XYoYqPh1OJFZTjptzcjh9uHp/AlMmaSoM/sKyB
JQ570ARiMBgMi4sXstR7g6gXHKAzZ/HtGghaWc5XfB7fadWX257627MV0rWlFf+Hk1+x3RZXVjBj
GGbcsPBEc4XZc0d4jEEHnk3Of+0CkOPzRodNJ2Ow3QzzSEU3h3i4raXe1SLNjt0pn633OpCYqUOr
AhwDC4tocaBKYcWYt+8cm8R5IbU4D9JsN8vcNWxnDHR0u9r/46fd9YnKCGEO4D/zjF03hnCLIXju
ajMQtlCzIKLH5l1xUUP7y23s7xoRl8AafznFSr8P3479H/Wuv1hiYi4k9DYRq5qwAYtFIiMX2YIG
hc3umDgZo5m7c+UkgA857wv6MNx9fh4+jx/vN+PtPuZ/AMLKRma9BBOesNQsBmwJi5QYBzDfJWao
Z5fYz/kcZ0qZZm812gzjdqnNsJ2yVfW6io/x9gb/qcZZAZbSNBmMCRmKd4hQYKxORwc8SwJkCSZ5
nd6uAKuVolFipfhSidUglzzrdvz99FJAdUWvRG35rD8gIkATJMCrRab9bjc7BzrF5CnsE7C/l5W6
7Od66VZA3+qw7WyrFZzRfSHvnipv7h4fN8ebXBSeQlnTdsw65yyIjM32GCMFqKUAEVtlJDhnJtJL
FPxk3JlYbinWmtEp5wPf6HHKV6MkWTo4aFSQhMdN+ILJf6EJcDwVnc2i0NlJOx2jmXytOmuyNm4W
mLi5205QUxqDULOWpHjvONfYJZ4wjaodgQ1piY4eu7JNKfLFJTkO2wplhqVQm0W5383d16Zehtby
MM7q1Y3F6IjXzoqCWF9jfQSgfxIBE/siZBDCvkW27/2pDA2XvPva6DTyzkKPWh2u7cG7CvAfnn58
evhxvGJhd3sdMK0ERAXsWO1vlckTFxlYARnQJtPsNPs3XrHQit1qrfX/9XZlz23cTP6dfwVfviqn
akeL+3BVHnAM/Cm2LG8kJ9l9UVHkyGZForwi5dj567cbQw7nIqVNVFG5bHkOoIEB+kL3r8dG3Tec
saD1at3AXjVc3HqWZLK+KGPGluCp8Bp2YGReKZAyUT3vKDO3/+SI21QccOa2nuiM88bS4ThR/HfH
uVdtkN3+ukzL1sEAoTVmrrVcWpYoyHiMLUouS9RYlM7wwBX1IaTnnm5gF4ddBXi3PQwKYmcwDEpF
H6c4LnOhE+i2k9iPmw8YQ04bJPCbFAxRc9H7jg5Bijg8Eg+lS6qlfcEU3SE9h9wL/ee6oxcjo2cI
PtpR1RbV+vfN/Zd1a+jAerYYMtvhO2WJAn00EI/hEhE+pjS2IEKpUpYClu+zXFax7mpHLT5wYGTD
ByfdUZixoQ2OCjHgMcy+bB5R5669J7XvxIUyJOJ1oaPFfFrGCp9AvSoNrM8kguT6Zfhpi4IDjLX1
RGeMfAi1Z6kyYoD5u6vr80qjfz1/ue1vKOWDtwFMoSKi2sUpprhQVxbMyVQSZlxUT4SJ7No/hN+7
vd2hXZOhegUXRW/jYYJSU1gJK2RijeI2w4yYWQYiGBgmZvhhRIKX0RYl5477RCj18glLodf6IZOh
91hvNHJsNIsezsCX29kGncdNCpfY+eOZdZbIMhVKa9TeOS8MKl0qcGfABvKOyqMQCJ2We7RVQ9os
bU5ilvNH9CTsw+ekpCfwJ2fygf7nqQClwqBnLQpXADGuSCW3NMrIZND9DPdOax1K5iOyES7qnTr6
UN3df61ulrdNXLPIlo1kZeK2LKiImMWAZWaItIWQSrrAkrFiPPKz316XGDsfIWbWKKHzdnqIRtPE
SgEmODoPnEfNBH0JZSgLx5wOAt174oCbcTTJA3ujIyTc3IzhgezY/PnFXgJpZmoor/oXXEY6UOaB
X2mDGGomxsIbFosYpFfaAM1RvZwU2tNyIOrrYlTqLIYZ8HCR0t5Z6+Zhtg9wZ6QRNaXlFAxbXiCm
T8E9xdx3jhV1hJUqpcTU0dPWVrtdsugIR1oYMgID39csQXOcvuIaDw+4FXnnWK1tiRDIRBsQiMEF
LEYSiqSMD54yBxLxn9Ng4UZ3rOZ6ZKyV2n2Cy9OUerkFXINCbkERd8IBPwgBwS4UKRIiRFrLAifi
hXIL9r23iWZ0GMAEFxe6t27qgoyNOauzuxvZCJispfEIokIxlzGowuDiATbCKKdMK330QLndbocu
UekhXWpQFei/HmcPmz+3zr06OFZg3nTms6F0WsFqURyRREBZKrxyphBa+aQiT9Icl8H7xg8gtDf3
J10q1RjpDbby4+qP5WqP8iTzBkyq9DCVshCRYnq3RVh0CaqfRZx0X1oi+IFI/H1rPTLmI2TczPYI
4zVGQzc51XuaKFb5kWBJgMqNRZ881YWJhqeA4BfpxZJTW/13KB+J1LVY3+lghFS2Qt659yNmEPcc
wSB5oVNAWDeO9XfAjhCcJSdojCGWTzJvbPuI/QN3O/Rfjzge4GI/TOMaiwE36NoqHykwISJWW0oK
DR7pEZ2DwOwrI2lgwsMKObad2k12SbJmhCQMcNjWMsnvn/j9amAKZUOOBgAVX5gQC5VR710iGUQK
tCqVBNORhdiDh+y21iVkNlSc2HxOdkrd13jxodGZFK/dl6DXKklAmU4YNh6lwYD7BLIqEccM3PX/
VBDWnrzOqBZiZFQL2c/i2+Zirr+vNp+rTjAEeji3IJD1L3gMRqMjaPnJEgvcMeULhM4vpMWye5Ky
9MRh+V+RdnU638WQwmHOX/NQdyo0H5mKQUJj+Py4+n25+rQlG0/+dA6z1zluWydmZCgIwWNLBdvA
Ggc8CdOlKJec++chsXU7ObCFuw91BnMjhsokXJztWPkuPvh+s7xp+dvITjxGYXwsOZ4oaSxcFICr
k5SKILUBbd8aHcLRwONWw13C9MiCuxnM8ptqVdVBELPbi839Q8YEqtEmGa9j5E0wjAoBYpFZTMzg
qrABbCbEhQbZA1/BP8vJMNLVgQP34YPdoS2Gcw5qkDroBDs9zxWPYFjbQgzaomc5uzwlsRkJzSJo
IaceQ3yDxs3ktANhpp/I1c5tH4ol69Y8AiKHCVVwZdbkAP65hxHAiijbOAteei8YTDisCCDM6MIm
AnyWmJKIKIh2octd/xzBEcB+hkKTUy4Wi2HBpZ8+lG/a9r6H1Rk9hmyDLYPw+fnASxQlYuRxSmJd
6O15ZynY+JHTFLzdIZwOS4ThxX6RpYtqjiVZf32A/45G39FkMMCBAn/EDAUPkt4K+CuqaJgWCtby
s+pEdTs6eNbZeqY7nBHFlbNFYwV8u7tlrSNPW5cJjN5FhfAuMSGyPisJmF6MFklKFROohE7T7ipo
tzPp9jUbI6DRPm5nq0/LRUvQo2EVgkjoXwRdiW5V5YBZTSV3kqZIDGPd7tut9Lofqp2ck8YfMXuY
f15+rfZTwDluBZazPrkGgY7ppwkVDYUHUh7YPqptoPxo3U/47jU26fZpRgip6IgjICMtjGeiahJg
E2B+QC6CCvYM2GqMINp4SYligfGnq7nk9g8rkPl2h3Y5Hx72csWrwZ7ACXhbl92qN0T+N2PG4jZA
KxmFDleJFi4YxH6jnptgn5Wv83ytYUfIoe2yvd0ZpBom2lrEe9ztlMxIuvayYS5pRL0Crgn2MqIB
WAGSNXABiiAWgwvphezlfe9dotUIt7LXfRf4QbwJDcYVSCRSEDC0sJQT5gcnXlCBuSjSqfIJ0Jbj
WBPhP0dxJpDEocLArwdZJ7Ov7YIIu7pNAoZQ66SC+hgJcFUp0ReWy5kiSraGvSCM9K58wqZ+uoRX
+4nOEK5HXBVwcdEzqzoRXE3qbi0iQChIl0IGcoTJD6BRe7C0peQGvmwC8zYeh6HsN90mUJAhshJc
ZIudtnj7593sRO5hcTHaJRCw9SlGCyKCUXAStyktQOQqwhFnKPTqGLQb6fY+Yu/DxX6A2y5E6PNy
dzQjJSEYdkdL7UvJQNfWJSJDUFBWS2AetCyZi0yAHH0RXIVdoNC/T48HEv37tDM+JoeCVbBZP3Wj
B/JMc8QegjznSAOQIMBAJEIPWUwqKQtQcB1CPCcwrXlpwvN0hKfhnQ9BOwPN12RkIDfXI7A1WTKc
niNw8TYEXNva7RYtw/pppcb0KQO/ubI0BXEiWq2s0jY9Tyod4oWtBzrE85EjJsH3aGcXX7BSwiiY
nUqw0sH8KQzBjB4jYmFAsS88bIEgyki9/6egEfpUdofI5MgQWcNn5vdfvrfPU2jGBHPIwDFkLXHM
DxPwl/egwYigJChQlIF2eiBeut1cl5IhNlm+2Fdh8r5DwzMDvUido9QVVn1koA0LrD/LLIK9cgxf
4bRkgRoe//Jmru91SV1UI6TejGlbrRygvQlSStBTrGNgggSQ7CRIsNkUbE+hMf3MIubHkyv6ieyf
ziNt6qUYhivni7tPjibrp++dwxPaGPmw6SwNqCIKVJ5TlJhljqAuDuOpmBrUdho01yVmiLQGF2cN
It232cPekNwWLuWgrSalCoYHiTxi+GQEMaJJEsFIS3joRUy3Gul0LmdD6wEvjkTo9VxLYJJheS5h
sgMnAosC3YaiZcvLJAufogGDEitdUVAVjHgZ19XIg73xXI+Np8lB/N/H2cNstVmuqj1uda4EK6gC
O7wguYi3YzAA9COUQnsujYqWjJ9r9NvrEnM9dG1gRbHe5H48bauP9R6BhVRDGjjvJQMrBIS1RpRv
IIzAsiuVkj46E0eRcYYSrN3H+My2n+iMQouR9alvGsjNr2fL9bzvw/VJUZZ0BEUH068SKo4I32iA
7QfPaBmC/Kd8uHv6uuO6GRpd0gyiW2oSQxuRPJ891SBb+eTJIDgrAb7rEb6eu5wdBKpdMjZ5Amqn
Ko9nBoz0cUjLGDw46ZJfjYzJzEd0jd32yXU0V5hJgjXbcjgW/osCvKSUJuKKqDGkTHNTOIyLDska
7qMog/HPLpDR6+1IjYzek53x2REJKS2yq04w7t2+hinB1UhMSTOaiULPJ4+oP0kTQPcOmnMJC7M8
irsxEhIibTUMHIINLwbh5lhV+Vi8QUzWKRt4QZRDP6BC5BWYdUlAR2LBURPcy5nuXXoOBaa3n+mM
eiGHRjxcnB8Lt0gX5VcseZq9TzwfM2UDefs7WslJYgY6qitY/yo50F6sN0WUoFjRklptX3AKdvQc
eHB7tzfskY99w/rgmwN3Q438kZWe2qPhgLFHidDvAt2/3NECrDZexKB4qQ2xzPwNbPLtzQ7pN5yM
kI7axXU/LaKdG6y37iWd3UvUREYpfCCHCSXcYBFcDaoHbCwZBawJoV/+bKpN0uEMipEEYqvoEJnO
Km4b+Id0v769Wnxfze6W+7o16oQhN5fJxhzwg+htBbeSgdHIKSYNMZIsL6PoZfQNW5t0+x3aUEqQ
vq4Mone2qDYZjX09zyEO9UeoV05pFFWJUIRpCFi/BnYLsIZCMFWqGKkLz8vti9BN3HVzONhh8Nik
S/3okBqb6fdvrbpWg1qgniMYpUUY7IQgG7zOZxbME0u1KYEJjMNLfxupb4X9DoWesmI+qCYB5u1x
GEJMfU+gZ3lMgQdbNYMeAZ1gBmeXdEjqaajfozCE7ScmXXqHHEZlI2DnHWU956hOUTFOMczdWxDP
OiH4K4H/0gDGYFCJ0Rdzjo543NVMkBGSRbPJ4nL2aXW/3iznZ9V6DX2te+lKJGNsMMG98qIApRCG
IaUvbMB6QNKB5cA497YXbnC83R6JbIxE1YC1n/ZDtEChNjRghTuZENQBuLQFMVRgRJzXzDlF7QvN
atN5h+TrEQtGXc/ZoAbPQ7W5bTyeJmcko64TLImuBF1NEMOAT1BQc6iRBXPKGa+0Vsw85fRsGu5Q
NoLLBRevm+/9Jv1WZ6T2YoxS8txjeW6CBT+51KSG4wJLgFiejNb6hfDAexR0qK9mQ81FVdf9M5a3
1cN19XC/Rsm9c1ZQL7QQHqHWscqWKUFDc1IVJWORMzC6WXk8jH3X6PgQdnfb5GqyGJKrqRYD8HIQ
GsCqs4OiFhdWsxNeCzJBdMCsMybQqKUSi+QQxMGInsDOYOIF0yl2lByurIN3J93hyLEx9v1dv30I
WyqaIwocXclAhYyqSAnDZaTE3AKqCpuAh3NgKOR5he33rY9Tvr/fpX0ksAkvHlGEx5T/Eo0RLDZW
BnTCM8FAsQLdw0pge0J5qb35m9+o/URnCGwIFQgXRXMg9219u2lVFq9jcjULIF+cQERYUNWVZlgG
FOwpY53Xgipje1mE7Wa6/Y9kzsDE8H7eUHX9+Kl2r6NmmtNCac4JZWBqswDM2VsBBqrRoByVsDlF
MNoBOyfyeYle7R4OZcrsn+iOYSThGS5Ww3IONbpUXdBBZaU6Kss8LVOBVg6Qj6gRJUsF897pYFyK
+lm+nW3jBys7ZFypSflta+ef3S+WN7sDk4vHuzto9TUMKsxuYYLvQAedXn+f3m8+Vw/TLw/3WI8A
1u5m9vCpyhipm89gIWxvvM6TsZmtf7+6uX+4+rJcvJ7WeHF1OcmrOfy9qV5PSfviutpcrTfN9W7H
TzVP/l7z8J/WqGAGcn8IsL1cVWP9Mcvs/7PPyS9nU0xvbM/vz/DU+er2+xSzAPHO/c20kV2vp5f3
m9ntj5yYE3s2fajWywUoND+St6/Iv36Yrv/AuJPF1f3j5grIelzlKGrobLF9A1Wpf/0w+fVhuZld
31bQAHbeNAtq95vpH3BzU612bR7pY3ep3Q82se1lmsd9/OeX058vP7p38NvP5ZvT8/fTyfbfy//+
UB5+7eL0f/LdcP7x/eX01ep+VczvZ7fVel4tfphOftz/HGigubv7ZeLmm+VXhEi4fJjNcfmO/DAi
zNvmP9NJeDNdZzViukRlbj3aFRWieUfAOxn5sX5hiuc7o++wTj9xW4kRGAW6kB/zluz1BrYTOWu9
89PF9KfTy+mnOqoOSJzfL0b62vfDD73zqj7cxpnNtJ2QN/t+dj+7Z6awpGeLBVZbmALRKIpby+OH
Cegwq+p26vDK9Hw1r8a/T4esM/fu3Xk4uo4wrpvvhk9V886nx9nDYvoF53rsh7OmHz2dfKi3+xQ+
0Zd1NT1d3dw/uQQuLl14O33z0f0cDxInVevTGHhnM5v//sTGAC1Ntd/55ewqj8hdHtkWU0Ea2uR0
8mt1jTFAZ3n6D/Uj9rRxMp1cXUV36Y7TxsiJ2b7DaH7n9My9KY+/JLtL+urq3en7t2WE5XZwCpg9
kc03pfjOZfnb5fFp0/ZENLQJfOfj+9NwHo9SBzphm7a7zOEObs78o2TTT/4+Wz5wV91hjb4DP3y/
3nDe/gqbujy/zOzy+CycqO0WlfhN8zv/Mb0DzrHubNR6g+bhcIICZf/O5P8AUEsDBBQAAgAIADiB
J0ptXNwmrjkAAMq9AABMABwAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNo
YW5nZS11c2VyLWluZm8tdGV4dGFyZWEtY3Jhc2gtbG9nLnR4dFVUCQADTINxWOuCcVh1eAsAAQT1
AQAABBQAAADkW11z28aSfV7+CjylKNug5hszLF9X4dNXG1tWLNnJVirFAoGBhDUJMCBpW/vrtwcg
KQAELSnJ29WDRWEG3ad7us90z9BXVZno9XpqdX+C7XL1UReprm4qra3fGVWc/zG6ijd3/anwc/65
XGyXen3++cO7T+/D8xfn3fdHF6kuNnmW62p6Wsvos67WeVn0FaCRX6baurlf6e7Qb1LYglnjy3iT
f9VngK4CNdZVz6Sr+81dWdQ2IPnH6KNer8pinc8XHXEnLP601pV1EfQxcYRHoyDe6PObfNmDRRB2
bIRt5FhYTJEzRXKCsLBsJBEafbi2hux8HycWDP1mYTTBeCKsMeZvMcHkDACvympz9BbGI7coi/tl
uV1bnz61MHqBi30PuYCAIptRgBPJENlBKNzIR4y73B2NRga55X6Lv2jrOi8SbXlluZlanCKErLVO
yiJdj0bX9+uNXloXxUbfVvnm3rh3o5NNDUUXMbgxHY38Kl7f6dS6uat0nB6QIPBrvl7Fm+TO+nOr
t+CppFxO4tVqoSfLOC/sTf3CaBR+T/TKCO2uc/ibP/PcYOb6fnh9bY2vL95eh28/n7Xmm+A4LPbP
4cfL2cXlZ/fdBbwUBB/NW/HGQt9R76cl4RIM6mj0P3y8ug5nlx9uLqL/GY0+v7c+6luYubYudVxZ
aDqy7TfWyEyfzW7C326OMmKnBCMVSwUf7NaD1DywfrcsStDPf1iV/f28+vbdun7/L//DrwPJNBq9
XZTzeGHdVLFZpW2WQUyOK/0VIkJbyV1VFuWivM0TmLNbt7PpCEvGhMMYBMGEcy4IsfzoUm++ldWX
I7z/1TjIybJMYYYwF9ryYWU2eXFrpTqLt4sNLF35JdfWelNW8a22vuWbO2vVJNv5fFukC23lh0T/
m/qRsCKj1OjPYZGjf9/cXPk1gOud/jWMLfSmLI5UUfQMVZDnHVWX1z9SNWoiHCJ7F/LT6RNDHHKh
NfKrnvtlpYeQ1WEyz+bpnEhrN286bbjpenMPtDUtV7qKAdu/xkPjP/10Zr20CDDjR5355RZSN53c
TZU8G+FngUgkiZOE9UGEC72EZZ5O13pTKzyB4tXDi/WTIDeRq4FqDD6KpAFo5n+Y/y8wCkDE2Dkb
kec5KhVZouYPqoIy2TbwKg0ZkfQQ7jzo38XFbY0DAsYa71+aJKvVFEuMzkb0mTAczAQZgpGYPNIP
e8vYaIXJPa0Egv5sxJ6vNR40Ps1TD7hgqf1tZbbF/chFEVXxsgHBVd9yISFI+PMw6JSjLHnAUMuv
g2Mve/zrTWRiI7vaVK+PsL5p4hWbgL0o1isIhbKCD5uqHo4NR0NsEA57oXime+JUpvLYPb/CTga1
yHQOtF48xManj+9AOmiG0J2X5eLV8Zsvar9JgLrd5AvYD6eO4Gcj55m4lCMddiz9XRmnBheIWuYb
qC/icXIHO04N6sUrawt1y20B++yiLG5rpynRQyKfjYRofBpJlhe5oTnzN5DgOC23sOPX/EJaedNM
38UQrJN6Loq5zNLTKJbx/VybP8LlanNfx64y6juWY/RcnXOhTutcb+JqszP7PfA41I3ltkp2mcPp
sPEcUUCCn5lATgbyugm0hwH+39QqpYJsbQ01pCGN4aSn7ud8807fxsn9kDrtOMkccu3l7zCz4QL4
YOq7qogXZ9as4Stjcj36K2zzV7AJTjPz16XJ7frT51x/m/5hiJwha7yXNVkup5QyAEWfByrjiiSW
bUAZyUbgVZV/BSQGEuRDWVyAK/J4kf9fTQkGV3SAdFuV21X9qYaERT9DMXsunkzgU3jMohz0txzT
RUGQqh1j3jd+wcxRAIQ/C4hEOEvnD0Csp+nG0uno5pzA7gJdSL/RGa6OdqWqUijGVhMQO2FukX7I
sjU807AERVp+q6OTYNjNu6KNWoebosN5ptZYQS6nnTfGebF5ZbXI8EVT4xBnSC2mdRrKZ+pNiES9
N0waDOvGAqr4Id2MGpuBARf5PL1fpBP4J5//qA6VTgLNJlSVNecY2Yc6E0/rwhEErOtGbPYF0lQv
ujLborhMBdcEGhNT/f5Zz6/0ZlsVRi6qK8AHaaumOO2I6wDLUMYdae0nzr792XyoN2xJ62LtWeJS
ynBjZ0cWPVhMflhRG5/uBu1lXAAvVX/BQdDQWF+gfyo2sz/Ldccxe+kDq9aWInGcYsGt2X7+bHlb
AS98LaGdNukg9q55usAkTdKewIODODk4iP7HhQT7j7OY/xWLMYrB4rVefovzzcxUivFiyN7ksVCE
pjhFmVXERbleaL2qC021NzN5+XKCh0mti0hRRBCYCT3ybIan081dvt5FNJRXRvAsK6vxw4TmKAN6
l21Vb/GvTZlb17qvWmLqsdcYqnN8OM1ZvLHe7Ep3w80O77Vv/x1/ja+TKl9tHkqxNvnHMs3YfG7N
l/FiUSbT6b91vAKQSQwkcatbGLdFDqQ0g0lfXh9mX5suJXm/3ejvb35qY/0rFhlb6g3GNKaz2dJI
nc3jtZ5i5fQ7xKcYRjLWNwxclTR94fXeRKNSyL5Givv94OMaNQJufNDoru+L5CZet/xlQLyyvpZ5
ao17yF6cjc/emFgxYfJxW7wry1VT8MNOfxBlzgoI7/eDT4Gm0vQfgRYWm+r+qoTSYPx3xDVljOo1
kE8xJJFpLfdFK5Bmu/Sarary+/3rVuptQezrBgbo/XuIX/0tB76A8B7XwOtVhT5qqZdldT8lgjtN
//o8alYqfaDmeZne11SK6x70mZJw/CDpUIsJWbeWzyR4jq2+oAd6F9N2TXN5/enjO78siuZYvWnv
ns3/SZY5xFrGpnJY3842VbwaIv+nCKJzehBUN7u9MzkTlFG5LdKa045lzEmMzXHObOZHuxS+1tXX
PIFyOrm7Kmt3EEx6JP0EsYjrpC0WftWe5aLHi4/LUpmm0mpLul7pJM/ypM5I0aO9oQPl3lEyiwVs
47/3lnPcrCd0jdXuBME8MCrrRo2BG7os1ofd10SF0loY715eN/E0a2JsNmt8gWs2+WeSSP5zSaSs
fzaJEDSmza1TfRPxmxS76yfLbMfaGgtmz/PN2XRkWVX8fWqh78AwIF8aJUKbWxirmtcD/dshGEhO
DaTHAwQhoyTNWyMY02wuBDOvrA8DxjYusEMTJo321dHAHNdvHA/E2iixKtlTonhMDFlUqjeg4wYw
Ru0BlGgMvW49gM1AZtwNA/NUS6JqJRUmJyzB9HigUcJOmIj5kB+NknzVwbW/8rCqbNF7BYOHIUmS
ipyQNXq3u//yrz41V3mQVmFVlVV9P7i73Tu8ykY3hh4vt8v5/koas9Fo5OVFXN1bF0voK9fT0f4y
7/vhHs+yrc7DVALrWi97pwxjdGa99l0URlxwG0mX29Sloa280LfdKMIcB0FIAvLm8avztrq5mB9j
gIc1Bkij3QnijV5vru/y5S63ajSIRjySjm9LHkpAEzHbi+ATV6EbARqP8GgIzSmpPVx6AJcmQ7i2
K3Ob3YbGic8CT2CbE5fYNHIi2xWAjxDHUR4JIz/yngCtLbiDLnHSI3SxcniWzX9Qc40FYi/hJfgF
3Q59CUA9SiISep4tILptaOEiWyHft72AisAlBIU0HALalTypj+zMTnK+u9Jfn7u9OW38MTDqEf45
hdTLsuOTxCHcXIbKQ65nR5H0bIqRsN0AyFFKyakjEPdcdwh3I3EYbzPWxjmPY3mEM8kI+JkOHYcP
APWJ7xBHEtvjAI8qrGyPQCREimIRBphBa3oC6GnP7gbbULVIjgNWyzk7hvpwODuAV2KPMEBmEweH
kFSc2q4bYDv0CAklUsSL5GnHNnJ/5N5mRgs59OXkyMnmYVwHA0S+//Y38wWKibvPMCXQxAGsEaSZ
pwJue1QIwKqo7eFQ2GADl1Q43MMKsDZf9zh/l88rYMLzaA9ufW6c+BZY8y5P1sOg9zck6/NjIKMG
rNkbBCayZcTh4TyLGRQu5sjUGlOATYjxsWSOoJFv+z6KIHgh31zfZ7bDXYm4HzKEA8C9XVdG67l5
u6VLYoelfV3wkPez5+KDmyR60VyrW2OC+ARjeKv5YGKTYy9yCDNfpQEC9VRkSwRL7yLkC44gYBk/
9t/uyqDlxo6iYT92pnSNaW8A+4cxwvvVX+okBsX7tRdKTDhgDyPhIy9gNjeUT1nk2dINIlsoCFk/
9JXjqpYP+4LaEAiO0REEgnVmuL7lz3Kli2QBjpw4EzO7/m32ISfyZERF7TdwYxTYnk+lrUIW+kwy
hZzwh2H4AQT774Yd14x14WZDcLODx3bV6Boq/yI/bEvEQKXEw670hR34EtgoYpHtSR92cZcTjzk+
DYXX8loj6fyEzB4ocgyKKdnzock4cwdsjTExswUD3gFgLgEITGFbYKFs6hBYTiIhHlkYIj8KmOez
R1PZCB724n501EWnjiGLeTwAua6eADOesHrpgW/gU+1SxyHYczm3XYyAMBnhtqSK2D4PHEgwFLqu
9yjyWv5p6PXwqAszGcKe1QUArM11fZn1Ude3qrsIYARAG/7BIvIdBaTOuENtGipkK8Yj2/dgxw84
ljwKurlzLK6LJjn2JCUZ6XnSXa2a7XyiYK7pLies5nGoO3AExBME0hQhAbIhRqXtC6iVgK1CVvPh
aRc2gof85+/G2nCpdI6dR6VSx3AX+vOVe1BkUh9PSJ368NssvkeE5wTKdkMPPBlALewxF/KfKQ+4
PcBIkqcw6F7VcAjsRztGKHmccFSpeW8T8CPDIEFe1V9BgS2//jKmcb9iJhRwpLhwiM15iIAQVGAr
7EDdGkqfCzcMFZOPctdB+jD8dqxHT5jfm9S1Wg8sHTzsWR1v07ycbIGq1hPXfP5UmMDDE0yN6fDL
kKEjPU4gVSOCoXwgUE16gkiIPUpdhwQO4uTHYbeXfGLZ9sNtC2BvP968GeJOz4JfAigYJtgEG0Um
1FAUcoolsolU0HtB5QiME5qvwZIgxBBpIsSPJckC+klzCLM7uVo/ul6/BMNTfgm6NjlswCaH1QkF
ZLGIt8XhtnDsCD7haCJNJURZGEC1bnMM9lDYDaDaZIEd+hHFnkTY52hwP2pL7EHhA1BMT9tsju7n
qF6XPRgsmkzGrpKBF1EbtmtoKGBLtxWRru1CRUlFKEIePMJBnx8OuZ5QS3ZxdExwiD42wXGyvTeT
7Wo9IQdWp7w2QGEumcsgPjA4kFKoilyBqe2HhEDIIOr4skvqbTldAAk+BiAR2QN4++7TwX3AhKaS
DByXK5NFIYUSKAQ/usSBwpxIjLDwlPK9R2nk7YkSqJmeN3476O4gzugA4kz0Gf2jXpab+ls++www
lG7eA5SmG4YqHjOmgAKi0OSYoXMvsjGHWhjBrs4pfQqdH+s5FRH9eV2rxHEgcGLq/Hm/QDno8eNq
XhZNNwptlKi3q+YDGEgCz4185drCD2CxOIatCkM3Kp1AYtcV0EKjR4uVJ7PHA5YTRH8Yb5vNKRfH
ZlNT3NBdP1h/syuLDYZdHFLsTBQYyBzKgFPMwYupI5HjQFXOHDuAKgIR5oaCPsKS+zZFP2re1x9U
bZ2YPQbctVcc72mcZ0k/eONvPmiCDmb3xXSoo7AppCQzO3mEoZ4lXmAHKoCGSIQhNEQc20qq+hwH
SyaOLW+v53lfA4wC7mKzPn8fJx+uH8ZHXaTHGxqsoOwXIuZgu/l/H7ranWw9VCMONtsB4hJM4LCp
ER84zPQonoJ/EMNOJKDLx4H3lPwb0nUiBAdmjrqGqCHr0r519bf5ruJCL9amziATAe8oYULSDZ2Q
uyGUWKZGdCLXVl4QAjdSzBw3cEn4yClFnSaPZ1sLwqlW4mFGz8gBohGYH3accrnKIStmD6ecwtCJ
iyns1JBoEVeRTSUYKcFhtuM5YBtHkecHg9v3kcAuHDxAAAIaih0BmEunxdeJOmAxfZgrOPK4L22s
OFSywoUmQkCPgzzChKmcvMjt7n9dMV0EA1UEF7EaaA0/56kuzZLLuqhu2lngUiAb7EFLVffZwpSW
sOZQ5UCnBY0YU/6jPFtLPt0U1sMd1A7JjlFLlhwOBv5c5BtNDycCGPpBABv4NOAKSkmFXROgLLIV
d3xbCKUcovxAEq/ruY6gUVfbABnIGB0iqfVFG3MEUFcPMgIEmMK2i6CPpkxJW7k+twUTju85EYNi
t1e6PIjpqp8PeSBN9+qHLozHlDA5EfX/UdvVgr5PZQQVYOg5UAsyFNiuT4kNFY1ELuauj9wfnZK0
xbfhiblz7B3Y13DvjHatk635f2nZw60pcL15j3NMDKcEUCVHAfTJTmTiC7mu7YUC1k14noqkgyPk
/DC+rv+ft2tpjuNG0nf9ijn6AgbejyOeY8VKuwrT9nWiurta4ogiFXw4rPn1m4nurm5UocneNcMX
i2KVgUwUkPl9+YD2U7yGWZfvNQqt6XK99ZbKmXX8+f2v9/e3q/s/dwwaDb6lpq41Yn4RpcITCyZE
ZlAi0kwKHFgBtCYrrd7COk4i9N+cHp+qZ+jWLNQzmCHcb6fxT3CPOMREbdCLleQUT16TgLkxEYMG
JwymH1kaA0YTlcztdp6N08jA5BIdmGVsZcd4n/Y6Vmoxrfmc9tLsVIhwyDWI5zQHQxkjgZ0twZh7
Kqx7nfa+uJqnbzTKCCuWyggnDhZq9fjtik7nEo2TyehIZCTeBjDrygAk0DkQlVTxIYJ94rpdzJMx
2rndkqQaYHuHj1kA7HwaHh6PATNgVFd42rg23vksCWxVgFaMwYolI0hIJUWnlQZj8ebU2/96fQGN
nAvdaGz50o8aK4fZ6fyIjYJP98/rLwuoBB8BU0O7KAT+gKsBC88NRroBjoG7AMPoQ1FA+Bzjkvqk
vbwEpL0w7am6i9daFeWqp+I4V3G4+/xw/wdyoh3dq1zIAqT0CdxMBLcXAuysqDVhsSQaHc2Aqy/S
Yz/2GfH3T1upLetI7fjhGKy/fZ+iJbgBgwcWyqMGcy+Bl4oADjIlQzRz0eVgEYXNHOQ0QjPxsFmm
Dsxqu5k5oF0C+k/A50Lt+DHAlt3X9ylkK8BNJwnfXAjg/F5HSYA5sgSQMeYLAvU49nlgg0/ftQIu
4alZyym8NDw/HeM5FhfMOZc1owVObIkY2hPEp+iJypFKF7RKZQZpjmO8a2dRnakdm1Hwn98fAwqA
IXh11YhKdTA6SBZJLMqDe4OVsg4Idy7JRI8RBpfe3HQcpTnn7HrhBlCL93RVh5zCSePHMZdZGBWB
A1ZKYNuBAsRAgIZ6cHY6pBgoBX/SxUrH0VohBtcRYpiT4S/j7XdcanGFnk3iNxcqeZmkBcQfOXgK
z9BKRyKBwamYiixavgmSgKnPrCs8aZVZd1zORq4X5BFI+I9vq/vDl66hX9xDlgI0ZZVQ6AAMH0lk
gWXm8JMFMgwQg/PgIrfAvS5ixvOpzh/D5rVGrS3tQJLtkS52y+F+At95BXQfnbpIAOwKOHVARACw
wX0QG8G8BRFYzBngiXIvAexm5Fa0jpO3lLPtuO21C/yECZqK/dEhAEYQiWMuRGTEbRE2EI8kp5iD
1FkCQn1JqvVSHpiad+Qx82i/z4AdaQ2E1ECkT9JxIzkpFvE9OCriwRKR4uFTM4D4xcu3i9P5fAbG
5VYXY3u6HOs0fv94/en2+fPN3awi6hAkVlRgnhdMhYf1dUIRm4FbaReVARAlg6ZvEyQ+I0mrjVti
e8usO2zim/X93R8nYfYaY6PKUw+GHCycA/yjLbGFw2fhwFOT5zrkWdFBM8q7dqqhM7+bh82w6ODz
7W4Nd9Cl/oCuhQM9D8oBaklg77xhAEjBHadsFIZ5vYn8/72cu2etwIPqCLyZQMusKewnRdmVpDvU
EAFoO6sQsWDhYDLAqFX2BBxxjBbYf3G87yWaQVt5NqInz9wKwQfY3nze96ocZINzWWWrfCgBzQcB
iAZrC3g2wzpG8GWUwfe1vBRaXj72ywkaOTldYi785dwEHAPPf4zrD9XJgr2E/2//V/wbBkukZVwl
ADQFU2aKawI0RpFSYgowbExGv1mEu87cf233rNEUcOFS0/VWbNeNpn/sqyls3c+2bmarCsAknkkO
AmieFKCfceDfBBzTAp9DWfp3xO3/WJRa2A1bok+70XSGSD6OTwOcU6Vr5Bf/wL1FFcOIATgSCmoZ
OK3eMwx00SSitVk78aJaddQzzAIftZL2TMpmgZ2uv4ChvPuMNg1siajyHn7E2FJK4GMAsuoMYA7r
Q8FMw6HQLhQguyZIby+BGvtpzsSVdg9b8YdtR/zVnK4CIr4e7jY1srGrxuG6WhpeC2+N1pzRXZBA
BGDpPgDGkDxT4PCJ52wvLMjYT3K2JGP/vFVh7HyBkU6p20+wHgenKGvYGhwJM1jxIiUSBJ9gczDJ
gE9Rnp1nyYiX4191w77/nwtiBdPkpyK7cbsU2W2pnm2aF6tIBMBT45MiKlboTcFDauCnljPA3SFK
5vRfrSI5WxPitmbJpgchXcV8Lcr2v0WMe8O22W2c3U/o2S2NQKZrYhQOKlWcAKrmhCKy5srEGO2l
+BomOY+q4eGp8IMUS1A1SM0OO+bP7+tO3YSSiQluM6EKAwLJe6CVmaOFMZwXl5jt+6xpuFYIvUSp
g+b8wPzCB3897VumeT1qQUbOLLgfVWufok4kAPIg0UtrdeZB+7/FETXyNWrpzaqj1jhBvNV/Kpaa
OK2tJCAryZUlkWIJgE0SDIjRhBkg7z7GIOQsF9GM0sw/8iVCGUYxHuaPv5Tr5xtQ/zTgCSgbVjZZ
or2NsBO1IYEHT2jkngYfrI+iFaAdppFgS5cgd9iyCbMB/GsxuqFJMS0B/UgfMfVBAeGC//K6RK4A
wvFXgsP/h0KOnrxM9OSdAu5fxx/fPk/xWb4rITLAGRUWAifMGWcAxIAnSXY2Gs2CLrlfQnQ61kwI
2RFCTuUvj3vHMOWxwJIjh6zhMXD0kcKm4SEbIlitYwXcKwK10giTrJ6VVs5GayUxnQ28tVO4/GOF
xpMcHIsphY80lGCJyVgBkUImnhlFTBFOwleUSs02cDNKO791nfkdm3nk/x6fyvUhRSV3eE5yr4TU
hNfgagFT6nKEr6KsxkJZz8rL5KSO2d9G9VErp1M9Oe100LBz8joO6y/j0Yy5WkfOhXVARzwJNhci
gOgDQvOFlJBTpiymHP0bkdK5EKcqrDhdumH45XYeyB43NwMazsdHIJd4FdAhpG1cpdgZtjywAXC4
sOkAQxCwxnCQWQZ/EYCDBf4K3pyPfw58zt9rtWG0ow2bg4rH7+MIWw+c+v1nvAjpNBwFUHqfKqx/
YlA3K+8sYIsiMU3MsfEjZDDSAcASsxG2dn6LAN91leqXnlANhJ2/NluBpeVdabvpVBCUJs1bS6PB
1KKXZ4kVgen4kmtVHSBxYTnh4PyTUcUCZHw1CvRahrd9510r7tjRwc0B+WIhdtVngBKuTK2V5rVb
RwdPNXeUJIllBgoYhjVAu4NmuWgGPFtd1G3Sne7CTzSvNVvpYd1Rca2247Hy5QE3+TF2UL1OsaJI
QLeEMYA8QoKJB3rhCQs5KHC6XtBZgmExUivHWvfkmCzYLwOct7v1OGMPJQO/pImjGJXuwJoWWOJY
hOKhljGIN2IPrQSN8K5D3FaDmtuu1bD++vz99ISzK3Mla2ba1LhwEVRmbExwjgEZMi4Dj8AIV7Eq
ChWkpReh8DCb6VSp3bNG/qFTlgG/HGdZse/AWE/SVlef8O+VCu1IaCX82aqCyVHwKZLUSsQADIJE
VhQVxbmY/FvYqE+tLKdv1Ucz/Xrfx075M7wXYUqgWaOqtRWI7WXxRAEAJAKLCi234FmK5kA6sgQv
3sVVJ6O1UljVk2KK1z3fTUyHuxqHCCw7aUg0Ru2SngGIEdEiA+PQzpYzAkwDzabvnLCRzvsja1XV
SeVEDbkaAR5IXXFa7Vg0kYO9IjFobIKG1XEcwB7TPvoEaDSXl2Pzp1P0P+HpG6dKrLlcQtM1V8Nh
DT/c3I3Dg7/9PJ60zE2MrYC5kBmwcaEasE4EV2q19ASIjQkBm6x4+psYW0fQVlG3JAJolbXaKXq/
+vf62BCqLRrDpFRSlsKXAPCGSV9FHKOKSJmML1nbyE1rk09HaabXehlSWGu7OiljG1Y3E2/b1zI5
znMJQhOawXIJNMmWG0qyZT5KIQ2PdFHHNo3TCtAxqWu9mojb4/ebO7xNcPrGztRTSx0cFmMLocUz
bPCTJGA3LzCPknhUPM67ANqRWiFWoieEWKQv1/dDrUau3aW1w5UaY40PJHGBYihgkM4F+I/AK4VF
VIa9glxgzHOABR61cq55R84t71Q1+N/jzwmh5S74DNuFYiNfLdP1JbCIGQBqgXcDMvERa3WxDxa/
HZXx4ggQzvJCDAgfNxqYDlpcG0E7yaDH2lFf47foNmsQTrudydY5FO0B+As41QL2BOJFIF3AhAM3
mCAIb+F8kPJcH8Q4H62bXmlV1bajqrbHft+n4fZfTzffxsen4bjBwXhfwafafauUgUAybojxiL4Q
GHswXsRnQM4xwC/DRVDyn59+i/tK5BM1zgnRqAEOZamGXU3J0GYBfnu6uT02HO0+lk80+QjQwFm5
71RwzgHW9zlqUC4kP0OQZ4ZsxVrTjlhrO+sNvtvd+7OoXxRWYSRdIJTRmjqVoiFaCRDQwiI7BXRL
IiBQRSfaVOUu8mL9ORppHVtauc3Kqs7BPbTp466ve6GW1+/uAdAMoIXHlJ3wcHQF9o96sDYioZ0x
YPqC+Iv3AJy+carCplevstkcI/7tYky5USswlFt7jrBWFPMUjqeIoVxDAlYIBetc0tiCH9kFy7xc
3c1mtYwejQzDn2067qZ+nTKsxx1xE1e76pP6J7baK0m5zYATON4RQo0lngdGwJtkid1myl1Ue3KY
4Yx92T9910o79FTYLG46uH6u7TW1oAP4Zi133f1Uk0IZqbTGLBCGxBI4IqYjkZZzBcZD81dq1qbx
z11usH/cyM47XQyjWOQN16Dz800tjN43lteSeCasFoDSPEV7zuAYWgciq6KMNODbA/eXeqPf3p/f
07+9b2SWnXLKUep5S/yRA9XWZCywYbU7vqJlxtmV2BlqR6UBaTPsZqGw5IMRS0sgJQHd5wEIdK/8
7Ux/dJ3mhQ7p+rxVR/fUMXO3+muMp4WhBawcIGE4kQr3uwP24QwgSs5jsJmxYP1FXYAwbF9aeNCK
2elaGO16utDhg//k438t4LzkXNgMNFMH45GhUSDKYKWBRHsauTWcib8Lzp9I+K7VgvdU25x0Fn27
v4sPP74fSzjh2Bh1MI8OC4yBbgGXDvX+HLCMxoMrAoPPPHDUFPy5FqPZyI1gbtM5nW6cd4oMjydt
IpPNlqzgRiiEBcwWFmyj9MJjbl8Zk5Oz/sX6tWnUVqRx7Ii0NYuQISrmn5++TPnvGnKXwWojMqyU
BuAnSsYqdUEBxRofVZLFhnKZyTiM/1IXGT5vpB+WF+DgL1fzW0n26Y5l6oR7bYNwEb6vxdt8gLlZ
/NJKA3WzUrsS7It3k5yOPBNtGeQbVwt0HW6fx6f7+926yl1ZBP65rZ+cGp7xwrPCMc3EI7D+wBxx
AkQGxmCoYq/4kGn8c15keqGRfmVlR3rnlmUR2K45ALF+6BRGFOwBNZQTFrESJSQ4Qk4KEk02Koog
Jbu0MGKa5qwtnt5oFBk3HVuwVavZ/v40PmzvH75hrNHfDbc/Hm8eT60zNSnCvsZ9gQ1DHuy0FQkL
4qNkInhg+Rdt8840Z+JpyxdP1dpSvYwebmv7a4tR1scKboxYVHev7b59PucUsiZFCQzjYukyxySi
CFgknqyT7qKLmNavVYmfvtFqsVoy0C1bdPHu2owqicWfcKOJfdpPVCuUvQFTA1pQzQO28CLzt5FE
67iWidL0yoUi09gv8Gd8/K4V1PWkn7eBpJvHr/5hdfP0sE+3HDIUu9vElKPce6JEvQ4Er/QxlAFW
yUkFpQR9pRNtNnpf/tlLMy22HS1qIL11ALf3D9c/7ta4+m6/+m6Xdi1RmMwpcDbjsIQZTnmSWCIq
HDyyqVjz5u0Gkzznvtj+caMrd0tkvxWMbcfVHhg8jOsGFgihjpwpUlWSIR6oCWZfPLgKLCLPYMUk
wLPIzBlQ0I7aiCTcqiPSel6t/0/8R/tOHW+QjgoB7l8ErBt3AMZ8AtBYvVZ2Hu/RfXHRYcT+0sGD
VsJ1x9SIzVSZ8GW8+bYZbsnweHcsTlCilrqipM6ylCUF/O1xi+sCXDM7wAnRekxk6Zhm9cvLERuB
VKe+ZKvM3KT/vBulXTaVhFYC7IMNCsO1yhELCIaUKMGGAM0M6SJauR/8XEtGfdgK3bn+aausmaoF
voDrehx/vf863t3856QdEKMixgUbNeJtiqA0Ahl2eFmB1LAWzAFUSbPyiv5wjUS9Swa2Wo4dqvh4
OJVYQTluys3t+OHm8QlMmaypNPgDyxpY4rAHTSAGg8GwuHghS703iHrBATpzFt+ugaCV5XzF5/Gd
Vn257am/PVshXVta8X84+RXbbXFlBTOGYcYNC080V5g9d4THGHTg2eT81y4AOT5vdNh0MgbbzTCP
VHRziIfbWupdLdLs2J3y2XqvA4mZOrQqwDGwsIgWB6oUVox5+86xSZwXUovzIM12s8xdw3bGQEe3
q/0fP+2uT1RGCHMA/5ln7LoxhFsMwXNXm4GwhZoFET0274qLGtpfbmN/14i4BNb4yylW+n34duz/
qHf9xRITcyGht4lY1YQNWCwSGbnIFjQobHbHxMkYzdydKycBfMh5X9CH4e7z8/B5/Hi/GW/3Mf8D
EFY2MuslmPCEpWYxYEtYpMQ4gPkuMUM9u8R+zuc4U8o0e6vRZhi3S22G7ZStqtdVfIy3N/iPMs4K
sJSmyWBMyFC8Q4QCY3U6OuBZEiBLMMnr9HYFWK0UjRIrxZdKrAa55Fm34++nlwKqK3olastn/QER
AZogAV4tMu13u9k50CkmT2GfgP29rNRlP9dLtwL6VodtZ1ut4IzuC3n3VHlz9/i4Od7kovAUypq2
Y9Y5Z0FkbLbHGClALQWI2CojwTkzkV6i4CfjzsRyS7HWjE45H/hGj1O+GiXJ0sFBo4IkPG7CF0z+
C02A46nobBaFzk7a6RjN5GvVWZO1cbPAxM3ddoKa0hiEmrUkxXvHucYu8YRpVO0IbEhLdPTYlW1K
kS8uyXHYVigzLIXaLMr9bu6+NvUytJaHcVavbixGR7x2VhTE+hrrIwD9kwiY2BchgxD2LbJ9709l
aLjk3ddGp5F3FnrU6nBtD95VgP/o9OPTw4/jFQu72+uAaSUgKmDHan+rTJ64yMAKyIA2mWan/7e4
K2uO40bS7/wV/TIRdsQWB/fhCD/gKGhoSZbXpI/dF0ZflDpMNjXspiz5128mqru6UFXd5NgML0Mh
UXUAmSggkZnI/JL+P0IslGSXXCs1xnXfcMZi1utNC3vVSnHrWZLJ+qqOGVuCp8prWIGReaVgl4nq
eUeZuf0nOe5SccSZ23mi4LOAbG8v3vT5PKg2KG5/WaVV52CA0AYz11ouLUsU9niMLUou76ixqp3h
gSvqQ0jPPd3ALo67CvBulw0K286ADUpFH6c4rnKhE+i2SOzHxQeCIacNEvhNCoaoueh9R4cgRRwe
iYfSNdXSvmCK7pCeY+6F/nMl92KEe4bgo4Wqtlhuftvef9x0WAfRs8OQ2bHvlCUK9NFAPIZLRPiY
0tiKCKVqWQuYvs9yWcWmqz21+MARzoYPnpVcmDHWBkeFGPAYph+3j6hzN96TxnfiQh0S8brS0WI+
LWOVT6Be1QbmZxJBcv0y8rRDwRHB2nmi4JEPofYsVUYMMH/3dX2+0uhfz19u9xvu8sHbAKZQFVHt
4hRTXKirK+ZkqgkzLqonwkT27R/D793dLmjXZKhewUXRW3iYoNQWVsJamFiNuCswI2aWwRYMAhMz
/DAiwctoq5pzx30ilHr5hKXQa/2YydB7rMeNHONm0cMZ+Hg73aLzuE3hEnt/PLPOElmnSmmN2jvn
lUGlSwXuDNhA3lF5EgKhaLlH23JIm6XtScxq/oiehEP4nJT0HP7kTD7Q/zwVoFQY9KxF4SogxlWp
5pZGGZkMup/hXrRWUDIf2Rvhot6row/Lu/tPy5vVbRvXLLJlI1mduK0rKiJmMWCZGSJtJaSSLrBk
rBiP/Oy3VxJj5yPETFsldN5ND9FomlgpwARH54HzqJmgL6EOdeWY00Gge08ccTOOJnlgb3SEhJub
MTyQvZh/d3nYgTQzDZRX8wtOIx0o8yCvtEEMNRNj5Q2LVQzSK22A5qhebhc60HIk6utydNdZDDPg
4SKlvbPW7cP0EODOSLvV1JZTMGx5hZg+FfcUc985VtQRVqqUElMnT1s77ZZk0RGJtDBkBAa+r1mC
5jj5ims8POBW5JVjtbY1QiATbWBDDC5gMZJQJWV88JQ52BH/Pg0WbpS8mtkIr0u1/wRXFyn1cgu4
BoXcgiLuhAN5EAKCXShSJUSItJYFTsQL5RYceu8SzegwgAkuLnRv3jQFGVtzVmd3N4oRMFlr4xFE
hWIuY1CVwckDYoRRTplW+uSBcrfdgi6x1EO61Kwftvbfj9OH7R87514THCswbzrL2VA7rWC2KI5I
IqAsVV45UwmtfFKRJ2lO78GHxo8gtLf3z0oq1RjpLbby4/r31fqA8iTzAkyq9jCUshKRYnq3RVh0
CaqfRZx0X1si+JFI/ENrPTLmI2TcTA8I4w1GQ5mc6j1NFKv8SLAkQOXGok+e6spEw1NA8Iv0Ysmp
nf4LykcidS3WdzoaIZWtkDfu+xEziHuOYJC80ikgrBvH+jtgRwjOkhM0xhDrJ4U3tn3C/oG7Bf2z
EccDXOyHacywGHCLrq3ykQITImK1paTQ4JEe0TkIjL4ykgYmPMyQU8up22RJkjUjJGGAw66WSX7/
3B9mA1O4N+RoAFDxhQmxUhn13iWSQaRAq1JJMB1ZiD14yLK1kpDpUHFi8znZK3Wf4uUPrc6keOO+
BL1WSQLKdMKw8SgNBtwn2KsScczAXf93BWEdyCu4WogRrhayn8W3y8XcfFlvPyyLYAj0cO5AIJtf
8BiMRkfQ8pM1FrhjylcInV9Ji2X3JGXpicPyP7PbNel8l0MKhzl/7UPlUGg+MhSDhMbw4XH922r9
fkc2nvzpHGavc9y2TszIUBGCx5YKloE1DmQSpktRLjn3z0NiKzs5soTLhwpmbsRQmYSL070o38cH
329XNx1/G9lvj1EYH2uOJ0oaCxcFkOokpSpIbUDbt0aHcDLwuNNwSZgemXA3g1F+tVwvmyCI6e3l
9v4hYwI1aJOMNzHyJhhGhYBtkVlMzOCqsgFsJsSFhr0HvoJ/lpNhpKsjB+7DB0vWFsMxBzVIHXWC
XbzLFY+ArV0hBm3Rs5xdnpLYjIRmEbSQU48hvkHjYnLawWamn8jVzm0fiyUrax4BkcOEKrgybXMA
/zjACGBFlF2cBa+9FwwGHGYEEGZ0ZRMBOUtMTUQURLtQStc/RnAEsJ/hpskpF4vFsODSdz/Ur7r2
vofZGT2GbIMtg/D5+cBLVDVi5HFKYlPo7XlnKdj4idMUvF0QToclwvBiv8jS5XKOJVl/eYD/jkbf
0WQwwIGCfMQMBQ87vRXwV1TRMC0UzOVn1YkqOzp61tl5pmRnRHHlbNFaAZ/vblnnyNM2ZQKjd1Eh
vEtMiKzPagKmF6NVklLFBCqh07ScBd12zsq+pmMEtNrH7XT9frXobPRoWIUgEvoXQVeiO1U5YFZT
zZ2kKRLDWNl9t5Ve90O1k3PS+iOmD/MPq0/LwxBwjkuB5axPrmFDx/TThIqGwgMpD2If1TZQfrTu
J3z3Gjsr+zQjhCzpiCMgIy2MZ6JqEmARYH5ALoIK9gzYaowg2nhNiWKB8aerueT2jyuQ+XZBu5wP
D3u54svBmsABeN2U3WoWRP43Y8biMkArGTcdrhKtXDCI/UY9N8E+K1/n+VrDnpBjy2V3u2BSDRNt
LeI97ldKFiSlvWyYSxpRr0Bqgr2MaABWwM4auABFEIvBhfRC9vKh95JoNSKt7KzvAj+KN6HBuIId
iVQEDC0s5YT5wYlXVGAuinSqfgK05TTWRPjnKM4EkjhUGPhskHUy/dQtiLCv2ySAhUYnFdTHSECq
Som+sFzOFFGyNawFYaR39RM29dMlvLpPFCzMRlwVcHHRM6uKCK42dbfZImBTkC6FDOQIgx9Ao/Zg
aUvJDXzZBOZtPA1D2W+6S6AgQ2QluMgWe23x9o+76bk8wOJitEsgYOtTjBZEBKPgJC5TWsGWqwhH
nKHQq2PQbaTsfcTeh4v9ALd9iNCH1f5oRkpCMOyO1trXkoGurWtEhqCgrNYgPGhdMxeZgH30RXAV
9oFC/7o4HUj0r4uCPyaHG6tg037qRg/kmeaIPQR5zpEGsIOAAJEIPWQxqaSuQMF1CPGcwLTmtQnP
0xGehnc+Bu0MNM/ICCM3sxHYmrwzXLxD4OJdCLi2jdstWob102qN6VMGfnN1bSriRLRaWaVtet6u
dEwWdh4oiOcjR0yCH9DOLj9ipYRRMDuVYKaD+VMZghk9RsTKgGJfeVgCQdSRev93QSP0qSxZZHKE
RdbKmfn9xy/d8xSaMcEcCnAMWUsc88ME/OU9aDAiKAkKFGWgnR6Jl+42V1IyxCbLF/sqTF53aHhm
oBepc5S6wqqPDLRhgfVnmUWwV47hK5zWLFDD459ezM29ktTFcoTUmzFtq5MDdDBBagl6inUMTJAA
OzsJEmw2BctTaEw/s4j58eSMfiL7p3ikS70Uw3DlfHH/ydFkff+lODyhrZEPi87SgCqiQOU5RYlZ
5gjq4jCeiqlBbadBcyUxQ6Q1uDhtEek+Tx8OhuSucCkHbTUpVTE8SOQRwycjbCOaJBGMtISHXsR0
p5GiczkdWg94cSRCr+daApMMy3MJkx04EUQU6DYULVteJ1n5FA0YlFjpioKqYMTLuK5GHuzxMxvj
p81B/Pfj9GG63q7WywNuda4EK6gCO7wiuYi3Y8AA+hFqoT2XRkVLxs81+u2VxMyGrg2sKNYb3J8u
uupjs0ZgIjWQBs57ycAKgc1aI8o3EEZg2tVKSR+diaPIOMMdrNvH+Mh2nyi40GJkfuqbFnLz09vV
Zt734fqkKEs6gqKD6VcJFUeEbzQg9oNntA5B/l0+3AN9JV83Q6NLmkF0S0Ni6CKS57OnBmQrnzwZ
BGclIHc9wtdzl7ODQLVLxiZPQO1U9enMgJE+jmkZgwfPSvKXIzyZ+YiusV8+uY7mGjNJsGZbDsfC
f3EDrymlibgqagwp09xUDuOiQ7KG+yjqYPyzC2T0ejtRI6P3ZMGfHdkhpUVxVQTj3h1qmBKcjcTU
NKOZKPR88oj6kzQBdO+gOZcwMeuTuBsjISHSLoeBQ7DgxSDcHKsqn4o3iMk6ZQOviHLoB1SIvAKj
LgnoSCw4aoJ7OdO9pOdYYHr3mYLrhRwa8XBxfircIl3Wn7DkafY+8XzMlA3k3e9oJSeJGeiormD9
q+RAe7HeVFGCYkVrarV9wSHY03Pkwd3dHtsjH/uG9cE3B+6GBvkjKz2NR8OBYI8Sod8Fun+5oxVY
bbyKQfFaG2KZ+QvY5LubBek3nIyQjtrFrJ8W0c0N1jv3ks7uJWoioxQ+kMOEEm6wCK4G1QMWlowC
5oTQL3821SXpeAbFSAKxVXSITGcVty38Q7rf3F4vvqynd6tD3Rp1zlCay2RjDvhB9LaKW8nAaOQU
k4YYSZbXUfQy+oatnZX9Dm0oJUhfV4atd7pYbjMa+2aeQxyaj9DMnNooqhKhCNMQsH4NrBYQDZVg
qlYxUheel9sXoZu47+Z4sMPgsbOS+lGWWpvpt8+dulaDWqCeIxilRRjshCAbvMlnFswTS7WpQQiM
w0t/Hqlvhf0ONz1lxXxQTQLM29MwhJj6nkDP8pgCD7ZqBj0COsEMzi7pkNTTUL8nYQi7T5yV9A4l
jMpGwN47ynrOUZ2iYpximLu3sD3rhOCvBP5LAxiDQSVGX8w5OuJxV1NBRkgW7SKLq+n79f1mu5q/
XW420Neml65EMsYGE9wrLypQCoENKX1lA9YDkg4sB8a5t71wg9Pt9khkYySqFqz9oh+iBQq1oQEr
3MmEoA4gpS1sQxVGxHnNnFPUvtCotp0XJM9GLBg1m7NBDZ6H5fa29XianJGMuk6wJLoadDVBDAM5
QUHNoUZWzClnvNJaMfOU07NtuKBsBJcLLs7a7/0q/dpkpPZijFLy3GN5boIFP7nUpIHjAkuAWJ6M
1vqF8MB7FBTUL6dDzUUtZ/0zltfLh9ny4X6DO/feWUG90EJ4hFrHKlumBg3NSVXVjEXOwOhm9ekw
9n2j4yzs73bJ1WQxJFdTLQbg5bBpgKjODopmu7CanfNmIxNEB8w6YwKNWiqxSA5BHIzoCawMJl4w
nWJPyfHKOnj3rGRHjvHY93f9+kPYUdEeUSB3NQMVMqoqJQyXkRJzC6iqbAIZzkGgkOcVtj+0Pk75
4X5J+0hgE148oQiPKf81GiNYbKwO6IRngoFiBbqHlSD2hPJSe/MXv1H3iYIFNoQKhIuiPZD7vLnd
diqLNzG5mgXYX5xARFhQ1ZVmWAYU7CljndeCKmN7WYTdZsr+RzJnYGB4P29oOXt837jXUTPNaaE0
54QyMLVZAOHsrQAD1WhQjmpYnCIY7UCcE/m8RK9uD8cyZQ5PlDyMJDzDxeWwnEODLtUUdFBZqY7K
Mk/rVKGVA+QjakTNUsW8dzoYl6J+lm9n1/jRyg4ZV+qs/ryz89/eL1Y3+wOTy8e7O2j1G2AqTG9h
gO9AB53Mvkzutx+WD5OPD/dYjwDm7nb68H6ZMVK3H8BC2N34Jg/Gdrr57frm/uH642rxzaTBi2vK
SV7P4e/t8psJ6V7cLLfXm217vez4qebJX2se/tPhCkYg94cA26v1cqw/Zpk1/1mfZz+/nWB6Y3d8
f4Sn3q1vv0wwCxDv3N9M2r3rm8nV/XZ6+y0n5ty+nTwsN6sFKDTfktdfkX98Pdn8jnEni+v7x+01
kPW4zlHU0Nli9waqUv/4+uyXh9V2OrtdQgPYedssqN2vJr/Dze1yvW/zRB/7S91+sIldL5PM9+mf
ny9+vPrJvYHffqxfXbz7fnK2+/fqf36oj792efG/+W5499P3V5Ov1vfran4/vV1u5svF15Ozbw8/
Rxpo7+5/OXPz7eoTQiRcPUznOH1HfhgR5nX7n8lZeDXZZDViskJlbjPaFRWifUfBOxn5sXlhguc7
o++wop+4q8QIggJdyI95SfZ6A9uJvO28893l5LuLq8n7JqoOSJzfL0b6OvTDj73zVXO4jSObaTsn
rw797H/2z0xgSk8XC6y2MAGicSvuTI+vz0CHWS9vJw6vTN6t58vx71OQ9da9efMunJxHlJFzvmef
qvad94/Th8XkI4712A9nbT96cvZDs9wn8Ik+bpaTi/XN/ZNT4PLKhdeTVz+5H+NR4qTqfBoD72yn
89+eWBigpanuOz+/vc4cuasTy2IiSHeq/bKcYQzQ2zz8x/oRB9oY9HN9Hd2VO00bjLXZvcMowXcu
3rpX9emXZDmlr6/fXHz/uo4w3Y5/U3su229K8Z2r+ter08Om7bloaRP4zk/fX4R38SR1oBN2abvL
Eu7o4myGV7b95LmzkwN3yzus0Xfkhx/mG47bnxFTV++usrg8PQrnardEJSe7d/5rcgeSY1Ms1GaB
ZnaExQ3l8M7Z/wFQSwMEFAACAAgAOIEnSvPgVO6rOQAA1L0AAE0AHABhY2Nlc3NpYmlsaXR5L21h
Yy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0ZmllbGQtY3Jhc2gtbG9n
LnR4dFVUCQADTINxWCKDcVh1eAsAAQT1AQAABBQAAADkW1tz28aSfl7+CjylKNug5o4Zlo+rcPXR
xpYVS3aylUqxQGAgYU0CDEja1v767QFICgBBS0rydvRgQZiZ7q97+joDX1VlotfrqdX9CbbL1Udd
pLq6qbS2fmdUCf7H6Cre3PWnws/553KxXer1+ecP7z69D89fnHfXjy5SXWzyLNfV9DSX0WddrfOy
6DNAI79MtXVzv9Ldod+ksAWzxpfxJv+qzwBdBWysq55IV/ebu7KoZUDyj9FHvV6VxTqfLzrkTkj8
aa0r6yLoY+IIj0ZBvNHnN/myB4sg7NgI28ixsJgiOcV4QpS0bCQRGn24tobkfB8nFgz9ZmE0gfnC
GmP+FhNMzgDwqqw2R6swHrlFWdwvy+3a+vSphdELXOx7yAUEFNmMApxIhsgOQuFGPmLc5e5oNDLI
Lfdb/EVb13mRaMsry83U4hQhZK11UhbpejS6vl9v9NK6KDb6tso390a9G51saii6iEGN6WjkV/H6
TqfWzV2l4/SABIFe8/Uq3iR31p9bvQVNJeVyEq9WCz1Zxnlhb+oFo1H4PdErQ7S7z+Fv/sxzg5nr
++H1tTW+vnh7Hb79fNaab4zjsNk/hx8vZxeXn913F7AoCD6aVfHGQt9R76dF4RIE6nD0P3y8ug5n
lx9uLqL/GY0+v7c+6luYubYudVxZaDqy7TfWyEyfzW7C326OPGLHBCOKjDqR3XohzYP1u2VRgn7+
w6rs7+fVt+/W9ft/+R9+HXCm0ejtopzHC+umis0ubbMMbHJc6a9gEdpK7qqyKBflbZ7AnN2+nU1H
WDImHMaA54RIJKW0/OhSb76V1ZcjvP/VKMjJskxhWMKFtnzYmU1e3FqpzuLtYgNbV37JtbXelFV8
q61v+ebOWjXOdj7fFulCW/nB0f8mfySsyDA1/HPY5OjfNzdXfg3gesd/DWMLvSmLI1aKP4MVhdlt
VpfXP2I1aiwcLHtn8tPpE00cfKE18que+2Wlh5DVZsK5mM+JtHbzptMmNl1v7iFsTcuVrmLA9q/x
0PhPP51ZLy0CkfGjzvxyC66bTu6mSp6N8PNApKlMEtYHES70ErZ5Ol3rTc3wBIpXDwvrN0FuLFdD
qDH4wBEMQDP/w/x/IaIARIydsxF5HkaK00TNH1gFZbJt4FUaPCLpIdxp0L+Li9saB+fcGu8XTZLV
aoolRmcj+lwYGRNkCEZi/Eg/5Jax4YqZ6HElYPRnI/Z8rvGg8GmeehALltrfViYt7kcuiqiKlw0I
rvqSCwlGwp+HgUmKsuQBQ02/No497fGvN5GxjexqU70+wvqmsVdsDPaiWK/AFMoKHjZVPRybGA22
QTjkQvFM9fC5TOWxen6FTAa1yHQOYb14sI1PH98BdeAMpjsvy8Wr45Uvar1JgLrd5AvIh1NH8LOR
80xcjEuHHVN/V8apwQWklvkG6ot4nNxBxqlBvXhlbaFuuS0gzy7K4rZWmhI9JPLZSIjGp5FkeZGb
MGf+hiA4TsstZPw6vpCW3zTTdzYE+6Sei0LJLD2NYhnfz7X5I1yuNve17SrDviM5Rs/lORfqNM/1
Jq42O7HfQxyHurHcVsnOczgdFp4jCkjwMx2IZ0Cv60B7GKD/Tc1SKvDW1lATNKQRnPTY/Zxv3unb
OLkfYuekJJ6Dr738HWY2sQAeTH1XFfHizJo18cqIXI/+Cmn+CpLgNDN/XRrfrp8+5/rb9A8TyBmy
xntak+VySikDUPR5oGKqSGLZBpShbAheVflXQGIggT+UxQWoIo8X+f/VIcHgig6Qbqtyu6qfakhY
9D0Us+fiyQQ+hcdsyoF/SzFdFASpWjFmvdELZo4CIPyZQLIsnT8AsZ7GG0unw5tzAtkFi6NGZ7g6
2pWqDKEYW41B7Ii5Rfohy9bwTsMWFGn5rbZOgiGbd0kbtg43RYfzTK5YgS+nnRXjvNi8slrB8EVT
4xBniC2mtRvKZ/KlUDz2Vhg3GOaNBVTxQ7wZNTJDBFzk8/R+kU7gn3z+ozpUOoniHKrKOuYY2oc6
E0/rwhEIrOtGbPYF3FQvujTbpLhMBdcEGhNT/f5Zz6/0ZlsVhi6qK8AHaqumOO2Q6wDLUMYdae0n
zr792TzUCVvSulh7FrmUMtzI2aFFDxKTH1bURqe7QXsZFxCXqr+gIGhorC/QPxWb2Z/luqOYPfWB
XWtTkThOseDWbD9/trytIC58LaGdNu4g9qp5OsEkTdIewYOCODkoiP7HmQT7j5OYTw+P4q8Ij1EM
wq/18lucb2amaIwXQ6Inj1kl9McpyqwiLsr1QutVXXOqvcTJy5cTPBzfuogURQSBxNAuz2Z4Ot3c
5eudcUOlZQjPsrIaP0xoTjWgjdlWdbZ/bSreuux91SJTj73GUKjjw8HO4o31ZlfFmzDt8F4n99/x
1/g6qfLV5qEq6+QBDaX5fG7Nl/FiUSbT6b91vAKQSQzx4la3MG6LHOLTDCZ9eX2YfW0aluT9dqO/
v/mpjfWvSGRkqXON6VFns6WhOpvHaz3Fyuk3i08RjGSsLxioKmlaxOu9iIalkH2OFPdbwydwlBAm
Hzi66/siuYnXLX0ZEK+sr2WeWuMeshdn47M3xlaMmXzcFu/KctXU/pD0D6TMsQHh/dbwKdBUmv4j
0MJiU91flVAljP8OuaaiUb1e8imCJDKt6b5oGdJs516zVVV+v3/dcr0tkH3dwAC+fw/xq7+lwBdg
3uMaeL2r0FIt9bKs7qdEcKdpZZ8XpZVKH6L0vEzv66iK63b0mZRw/EDpUJYJWXeZz4z1HFt9Qg+R
3pm2y5vL608f3/llUTQn7E2n9+z4n2SZQ6xlbIqI9e1sU8WroeD/FEJ0Tg+E6r63dzxnjDIqt0Va
x7RjGnMSY3OyM5v50c6Fr3X1NU+gsk7urspaHQSTXpB+AlnEddImC79qzXLRi4uP01KZpuZ0+oHS
9UoneZYntUeKXtgbOlvunSqzWEBG/723neNmP6GBrHaHCeaFYVn3bAzU0I1ifdh9TlQorYXR7uV1
Y0+zxsZms0YXuI4m/4wTyX/OiZT1zzoRgh61uYCqLyV+k2J3E2WZdKytsWD2PN+cTUeWVcXfpxb6
DhEG6Nd3MUKbCxmrmtcD/YsiGEhODaTHAwQhwyTNWyMYpXwuBDNL1ocBIxtP5kmSMGm4r44G5rhe
cTwQa8PEqmSPieIxMcGiUr0BHTeAMeoMCJo4saoHsBnIjLphYI5iolTNpMLkhCSYHg80TNgJETEf
0qNhkq86tPa3H1aVLXpLMGgYnCSpyAlao3e7qzD/6lNzq0dGYVWVVX1TuLvnO6xkoxsTHS+3y/n+
chqz0Wjk5UVc3VsXS+gw19PR/lrv++FGz7KtzksjqmO97J03jNGZ9dp3URhxwW0kXW5Tl4a28kLf
dqMIcxwEIQnIm8cv0dvsMB7AAC9rDOBFu7PEG73eXN/ly51r1WgQjXgkHd+WPJSAJmK2F8ETV6Eb
ARqP8GgIzSmqPVxiAJeMh3BtV+Zeuw2NE58FnsA2Jy6xaeREtisAHyGOozwSRn7kPQFam3AHHSH8
GF2G0yyb/6DkGgvEXsIi+AXNDn0JQD1KIhJ6ni0Edmxo5iJbId+3vYCKwCUEhTQcAtqlPKkP70wi
Od9d7q/P3d6cNn7GaXKEn8m5BtM7PlMcws1lqDzkenYUSc+mEABsN4DYKKXk1BGIe647hLuhOIy3
GWvj5IgfW4FgKc0yOnQwPgDUJ75DHElsjwM8qrCyPQKWECmKRRhgBp3pCaCnNbsbbEN1EudYpY4W
5BjqwzHtAF6JPcIAmU0cHIJTcWq7boDt0CMklEgRL5KnFdvQ/ZF6mxlt5JIm7Ag5vBS1MYDl+29/
M59STNy9hymBJg5gjcDNPBVw26NCAFZFbQ+HwgYZuKTC4R5WgLX58OP8XT6vIBKeR3tw63OjxLcQ
Ne/yZD0Men9Xsj4/BjJqwJp4KZCKW0IcXqbzmEHdYg5PrTEF2IQYHUvmCBr5tu+jCIwX/M31fWY7
3JWI+yFDOADc23VluJ6b1S1eEjss7fOCl5z2vOfig5sketFcsFtjgvgEY1jVPBjb5NiLHMLMRzUQ
QD0V2RLB1rsI+cLYPmP8WH+7y4OWGjuMhvXYmdIVRsyPhYkR3u/+UicxMN7vvVBiwgF7GAkfeQGz
uQn5lEWeLd0gsoUCk/VDXzmuaumwT6gNgeAYHUEgWNd5sKXPcqWLZAGKnDgTM7v+bfKQE3kyoqLW
G6gxCmzPp9JWIQt9JplCTvhDM/wAhP13w4prxrpwsyG42UFju2J0DYV/kR/SEjFQKfGwK31hB76E
aBSxyPakD1nc5cRjjk9D4bW01lA6P0GzB4ocgzKXoV0dGo8zt8HWGBMzWzCIOwDMJQCBKWwLLJRN
HQLbSSTYIwtD5EcB83z2qCsbwsNa3I+OuujUMWQxjwcg19UTYMYTVm89xBt4qlXqOAR7Lue2ixEE
TEa4Lakits8DBxwMha7rPYq8pn8aej086sJMhrBndQEAe3NdX2t91PX96s4CGAHQJv5gEfmOgqDO
uENtGipkK8Yj2/cg4wccSx4FXd85JtdFkxxrkpKM9DTprlZNOp8omGuaywmr4zjUHTiCwBME0hQh
AbLBRqXtC6iVIFqFrI6Hp1XYEB7Sn78ba8Ol0jlWHpVKHcNd6M9X7oGRcX08IbXrw2+z+R4RnhMo
2w090GQAtbDHXPB/pjyI7QEkMvKUCLpnNWwC+9GOEEoeOxxVat5LAn5kIkiQV/XHKJDy688yjfoV
M6aAI8WFQ2zOQwQBQQW2wg7UraH0uXDDUDH5aOw6UB+G37b16Anze5O6UuuBrYOXPanjbZqXky2E
qvXENc+fCmN4eIKpER1+mWDoSI8TcNWIYCgfCFSTniASbI9S1yGBgzj5sdntKZ/Ytv1wWwLI7cfJ
myHu9CT4JYCCYYKNsVFkTA1FIYcGBNlEKui9oHKEiBOaD2JJEGKwNBHix5xkAe2kOYPZHVytH92v
X4LhKb8EXZkcNiCTw2qHgmCxiLfF4d5w7Ag+4WgiTSVEWRhAtW5zDPJQyAZQbbLADv2IYk8i7HM0
mI/aFHtQ+ACUVO6To/s5qvdlDwaLxpOxq2TgRdSGdA0NBaR0WxHp2i5UlFSEIuTBIzHo88MZ1xNq
yS6OjggO0cciOE1bXt9VbVfrCTlEdcprARTmkrkM7AODAimFqsgVmNp+SAiYDKKOL7tBvU2nCyDB
xwAkInsAb999OqgPIqGpJAPH5cp4UUihBApBjy5xoDAnEiMsPKV879Ew8vZECdRMzxu9HXh3EGd0
AHEm+hH9o16Wm/p7n70HmJBu1gFK0w0TKTFjCkJAFBofM+Hci2zMoRZGkNU5pU8J58d8TllEf15X
KnFsCJyYOn/eL1AOfPy4mpdF041iTEWdrpoHEJAEnhv5yrWFH8BmcQypCkM3Kp1AYtcV0EKjR4uV
J0ePBywnAv1hvC02p+2m+/DSFDd01w/W33hlscGws0OKnYkCAZlDGcQUc/Bi6kjkOFCVM8cOoIpA
hLmhoI9EyX2boh8V7+sPqraOzR4D7sorjnMa51nSN974mw+coIPZfaIOdRQ2hZRkJpNHGOpZ4gV2
oAJoiEQYQkPEsa2kqs9xsGTiWPL2fp73OcAo4C426/P3cfLh+mF81EV6nNBgB2W/EDHn2s3/ANHV
7mTroRpxsEkHiEsQgUNSIz7EMNOjeAr+QQw7kYAuHwfeU/xviNcJExyYOeoKooakS/vS1d/1XcWF
XqxNnUEmAtYoYUzSDZ2QuyGUWKZGdCLXVl4QQmykmDlu4JLwkVOK2k0e97YWhFOtxMOMnpADgUZg
fsg45XKVg1fMHk45hQknLqaQqcHRIq4im0oQUoLCbMdzQDaOIs8PBtP3EcEuHDwQAAQl+wBg7pwW
XyfqgMX0Ya7gyOO+tLHiUMkKF5oIAT0O8ggTpnLyIreb/7pkuggGqgguYjXQGn7OU12aLZd1Ud20
sxBLIdhgD1qqus8WprSEPYcqBzotaMSY8h+NszXl001hPdxB7ZDsGLVkyeFg4M9FvtH0cCKAoR8E
sIFPA66glFTYNQbKIltxx7eFUMohyg8k8bqa6xAadbkNBAMZo4Mltb6zMUcAdfUgI0CAKaRdBH20
+YTaVq7PbcGE43tOxKDY7ZUuD2S67OdDGkjTPfuh++IxJUxORP2/1Xa1oO9TGUEFGHoO1IIMBbbr
U2JDRSORi7nrI/dHpyRt8m14Yu4cawfyGu6d0a51sjX/Qy17uDSFWG/WcY6JiSkBVMlRAH2yExn7
Qq5re6GAfROepyLp4Ag5P7Sv6x2Lx2rW43kdgRJ0rG+RIfb/xF1Jcxy3kr7rV8zRFzCwL0esz4qR
ZhSm7etEdXe1xBFFKrg4rPfrJxPdXd2oQpM9zwy/i0WxykAmCsj8vlygmXX8+f2v9/e3q/s/dwwa
Db6lpq41Yn4RpcITCyZEZlAi0kwKHFgBtCYrrd7COk4i9N+cHp+qZ+jWLNQzAKYO22n8E9wjDjFR
G/RiJTnFk9ckYG5MxKDBCYPpR5bGgNFEJXO7nWfjNDIwuUQHZhlb2THep72OlVpMaz6nvTQ7FSIc
cg3iOc3BUMZIYGdLMOaeCutep70vrubpG40ywoqlMsKJg4VaPX67otO5RONkMjoSGYm3Acy6MgAJ
dA5EJVV8iGCfuG4X82SMdm63JKkG2N7hYxYAO5+Gh8djwAwY1RWeNq6Ndz5LAlsVoBVjsGLJCBJS
SdFppcFYvDn19r9eX0Aj50I3Glu+9KPGymF2Oj9iy+DT/fP6ywIqwUfA1NAuCoE/4GrAwnODkW6A
Y+AuwDD6UBQQPse4pD5pLy8BaS9Me6ru4rVWRbnqqThPJH4c7j4/3P+BnGhH9yoXsgApfQI3E8Ht
hQA7K2pNWCyJRkcz4OqL9NiPfUb8/dNWass6Ujt+OAbrb9+naAluwOCBhfKowdxL4KUigINMyRDN
XHQ5WERhMwc5jdBMPGyWqQOz2m5mDmiXgP4T8LlQO34MsGX39X0K2Qpw00nCNxcCOL/XURJgjiwB
ZIz5gkA9jn0e2ODTd62AS3hq1nIKLw3PT8d4jsUFc85lzWiBE1sihvYE8Sl6onKk0gWtUplBmuMY
79pZVGdqx2YU/Of3x4ACYAheXTWiUh2MDpJFEovy4N5gpawDwp1LMtFjhMGlNzcdR2nOObteuAHU
4j1d1SGncNICcsxlFkZF4ICVEth2oAAxEKChHpydDikGSsGfdLHScbRWiMF1hBjmZPjLePsdl1pc
oWeT+M2FSl4maQHxRw6ewjO00pFIYHAqpiKLlm+CJGDqM+sKT1pl1h2Xs5HrBXkEEv7j2+r+8KVr
6Bf3kKUATVklFDoAw0cSWWCZOfxkgQwDxOA8uMgtcK+LmPF8qvPHsHmtUWtLO5Bke6SL3Wq4n8B3
XgHdR6cuEgC7Ak4dEBEAbHAfxEYwb0EEFnMGeKLcSwC7GbkVrePkLeVsO2573QI/YYKmYn90CIAR
ROKYCxEZcVuEDcQjySnmIHWWgFBfkmq9lAem5h15zDza7zNgR1oDITUQ6ZN03EhOikV8D46KeLBE
pHj41AwgfvHy7eJ0Pp+BcbnVxdieLsNUp/H7x+tPt8+fb+5mFVGHILGiAvO8YCo8rK8TitgM3Eq7
qAyAKBk0fZsg8RlJWm3cEttbZt1hE9+s7+/+OAmz1xgbVZ56MORg4RzgH22JLRw+CweemjzXIc+K
DppR3rVTDZ353TxshkUHn293a7iDLvUHdC0c6HlQDlBLAnvnDQNACu44ZaMwzOtN5P/ycu6etQIP
qiPwZgIts/awnxRlV5LuUEMEoO2sQsSChYPJAKNW2RNwxDFaYP/F8b6XaAZt5dmInjxzKwQfYHvz
ed+qcpANzmWVrfKhBDQfBCAarC3g2QzrGMGXUQbf1/JSaHn52C8naOTkdIm58JdzE3AMPP8xrj9U
Jwv2Ev6//V/xbxgskZZxlQDQFEyZKa4J0BhFSokpwLAxGf1mEe46c/+13bNGU8CFS03XW7FdN5r+
sa+msHU/27qZrSoAk3gmOQigeVKAfsaBfxNwTAt8DmXp3xG3/2NRamE3bIk+7UbTGSL5OD4NcE6V
rpFf/AP3FlUMIwbgSCioZeC0es8w0EWTiNZm7cSLatVRzzALfNRK2jMpmwV2uv4ChvLuM9o0sCWi
ynv4EWNLKYGPAciqM4A5rA8FMw2HQrtQgOyaIL29BGrspzkTV9o9bMUfth3xV3O6Coj4erjb1MjG
rhqH62ppeC28NVpzRndBAhGApfsAGEPyTIHDJ56zvbAgYz/J2ZKM/fNWhbHzBUY6pW4/wXocnKKs
YWtwJMxgxYuUSBB8gs3BJAM+RXl2niUjXo5/1Q37/r8viBVMk5+K7MbtUmS3pXq2aV6sIhEAT41P
iqhYoTcFD6mBn1rOAHeHKJnTf7WK5GxNiNuaJZsehHQV87Uo2/8WMe4N22a3cXY/oWe3NAKZrolR
OKhUcQKomhOKyJorE2O0l+JrmOQ8qoaHp8IPUixB1SA1O+yYP7+vO3UTSiYmuM2EKgwIJO+BVmaO
FsZwXlxitu+zpuFaIfQSpQ6a8wPzCx/89bRvmeb1qAUZObPgflStfYo6kQDIg0QvrdWZB+3/FkfU
yNeopTerjlrjBPFW/6xYauK0tpKArCRXlkSKJQA2STAgRhNmgLz7GIOQs1xEM0oz/8iXCGUYxXiY
P/5Srp9vQP3TgCegbFjZZIn2NsJO1IYEHjyhkXsafLA+ilaAdphGgi1dgtxhyybMBvCvxeiGJsW0
BPQjfcTUBwWEC/7L6xK5AgjHXwkO/z8KOXryMtGTdwq4fx1/fPs8xWf5roTIAGdUWAicMGecARAD
niTZ2Wg0C7rkfgnR6VgzIWRHCDmVvzzuHcOUxwJLjhyyhsfA0UcKm4aHbIhgtY4VcK8I1EojTLJ6
Vlo5G62VxHQ28NZO4fKPFRpPcnAsphQ+0lCCJSZjBUQKmXhmFDFFOAlfUSo128DNKO381nXmd2zm
kf9rfCrXhxSV3OE5yb0SUhNeg6sFTKnLEb6KshoLZT0rL5OTOmZ/G9VHrZxO9eS000HDxsnrOKy/
jEcz5modORfWAR3xJNhciACiDwjNF1JCTpmymHL0b0RK50KcqrDidOmG4ZfbeSB73NwMaDgfH4Fc
4qVAh5C2cZViZ9jywAbA4cKmAwxBwBrDQWYZ/EUADhb4K3hzPv458Dl/r9WG0Y42bA4qHr+PI2w9
cOr3n/FKpNNwFEDpfaqw/olB3ay8s4AtisQ0McfGj5DBSAcAS8xG2Nr5LQJ811WqX3pCNRB2/tps
BZaWd6XtplNBUJo0by2NBlOLXp4lVgSm40uuVXWAxIXlhIPzT0YVC5Dx1SjQaxne9p13rbhjRwc3
B+SLhdhVnwFKuDK1VprXbh0dPNXcUZIklhkoYBjWAO0OmuWiGfBsdVG3SXe6Cz/RvNZspYd1R8W1
2o7HypcH3OTH2EH1OsWKIgHdEsYA8ggJJh7ohScs5KDA6XpBZwmGxUitHGvdk2OyYL8McN7u1uOM
PZQM/JImjmJUugNrWmCJYxGKh1rGIN6IPbQSNMK7DnFbDWpuu1bD+uvz99MTzq7MlayZaVPjwkVQ
mbExwTkGZMi4DDwCI1zFqihUkJZehMLDbKZTpXbPGvmHTlkG/HKcZcW+A2M9SVtdfcK/Vyq0I6GV
8GerCiZHwadIUisRAzAIEllRVBTnYvJvYaM+tbKcvlUfzfTrfR875c/wWoQpgWaNqtZWILaXxRMF
AJAILCq03IJnKZoD6cgSvHgXV52M1kphVU+KKV73fDcxHe5qHCKw7KQh0Ri1S3oGIEZEiwyMQztb
zggwDTSbvnPCRixVaT5yrao6qZyoIVcjwAOpK06rHYsmcrBXJAaNTdCwOo4D2GPaR58Ajebycmz+
dIr+Jzx941SJNZdLaLrmajis4Yebu3F48Lefx5OWuYmxFTAXMgM2LlQD1ongSq2WngCxMSFgkxVP
fxNj6wjaKuqWRACtslY7Re9X/7s+NoRqi8YwKZWUpfAlALxh0lcRx6giUibjS9Y2ctPa5NNRmum1
XoYU1tquTsrYhtXNxNv2tUyO81yC0IRmsFwCTbLlhpJsmY9SSMMjXdSxTeO0AnRM6lqvJuL2+P3m
Du8VnL6xM/XUUgeHxdhCaPEMG/wkCdjNC8yjJB4Vj/MugHakVoiV6AkhFunL9f1Qq5Frd2ntcKXG
WOMDSVygGAoYpHMB/iPAc3ERlWGvIBcY8xxggUetnGvekXPLO1UN/vf4c0JouQs+w3ah2MhXy3R9
CSxiBoBa4N2ATHzEWl3sg8VvR2W8OAKEs7wQA8LHjQamgxbXRtBOMuixdtTX+C26zRqE025nsnUO
RXsA/gJOtYA9gXgRSBcw4cANJgjCWzgfpDzXBzHOR+umV1pVte2oqu2x3/dpuP2fp5tv4+PTcNzg
YLyv4FPtvlXKQCAZN8R4RF8IjD0YL+IzIOcY4JfhIij5j0+/xX0l8oka54Ro1ACHslTDrqZkaLMA
vz3d3B4bjnYfyyeafARo4Kzcdyo45wDr+xw1KBeSnyHIM0O2Yq1pR6y1nfUG3+2u/VnULwqrMJIu
EMpoTZ1K0RCtBAhoYZGdArolERCoohNtqnIXebH+HI20ji2t3GaFkGBxcA9t+rjr616o5fW7ewA0
A2jhMWUnPBxdgf2jHqyNSGhnDJi+IP7iPQCnb5yqsOnVq2w2x4h/uxhTbtQKDOXWniOsFcU8heMp
YijXkIAVQsE6lzS24Ed2wTIvV3ezWS2jRyPD8GebjrupX6cM63FH3MTVrvqk/omt9kpSbjPgBI53
hFBjieeBEfAmWWK3mXIX1Z4cZjhjX/ZP37XSDj0VNoubDq6fa3tNLegAvlnLXXc/1aRQRiqtMQuE
IbEEjojpSKTlXIHx0PyVmrVp/HOXG+wfN7LzThfDKBZ5wzXo/HxTC6P3jeW1JJ4JqwWgNE/RnjM4
htaByKooIw349sD9pd7ot/fn9/Rv7xuZZaeccpR63hJ/5EC1NRkLbFjtjq9omXF2JXaG2lFpQNoM
u1koLPlgxNISSElA93kAAt0rfzvTH12neaFDuj5v1dE9dczcrf4a42lhaAErB0gYTqTC/e6AfTgD
iJLzGGxmLFh/URcgDNuXFh60Yna6Fka7ni50+OA/+fifCzgvORc2A83UwXhkaBSIMlhpINGeRm4N
Z+LvgvMnEr5rteA91TYnnUXf7u/iw4/vxxJOODZGHcyjwwJjoFvApUO9Pwcso/HgisDgMw8cNQV/
rsVoNnIjmNt0Tqcb550iw+NJm8hksyUruBEKYQGzhQXbKL3wmNtXxuTkrH+xfm0atRVpHDsibc0i
ZIiK+eenL1P+u4bcZbDaiAwrpQH4iZKxSl1QQLHGR5VksaFcZjIO47/URYbPG+kHu8R18MvV/FaS
fbpjmTrhXtsgXITva/E2H2BuFr+00kDdrNSuBPvi3SSnI89EWwb5xtUCXYfb5/Hp/n63rnJXFoF/
busnp4ZnvPCscEwz8QisPzBHnACRgTEYqtgrPmQa/5wXmV5opF9Z2ZHeuWVZBLZrDkCsHzqFEQV7
QA3lhEWsRAkJjpCTgkSTjYoiSMkuLYyYpjlri6c3GkXGTccWbNVqtr8/jQ/b+4dvGGv0d8Ptj8eb
x1PrTE2KsK9xX2DDkAc7bUXCgvgomQgeWP5F27wzzZl42vLFU7W2VC+jh9va/tpilPWxghsjFtXd
a7tvn885haxJUQLDuFi6zDGJKAIWiSfrpLvoIqb1a1Xip2+0WqyWDHTLFl28uzajSmLxJ9xoYp/2
E9UKZW/A1IAWVPOALbzI/G0k0TquZaI0vXKhyDT2C/wZH79rBXU96edtIOnm8at/WN08PezTLYcM
xe42MeUo954oUa8DwSt9DGWAVXJSQSlBX+lEm43el3/20kyLbUeLGkhvHcDt/cP1j7s1rr7br77b
pV1LFCZzCpzNOCxhhlOeJJaICgePbCrWvHm7wSTPuS+2f9zoyt0S2W8FY9txtQcGD+O6gQVCqCNn
ilSVZIgHaoLZFw+uAovIM1gxCfAsMnMGFLSjNiIJt+qItJ5X6/8D//m+U8cbpKNCgPsXAevGHYAx
nwA0Vq+VncdrdF9cdBixv3TwoJVw3TE1YjNVJnwZb75thlsyPN4dixOUqKWuKKmzLGVJAX973OK6
ANfMDnBCtB4TWTqmWf3ycsRGINWpL9kqMzfpP+9GaZdNJaGVAPtgg8JwrXLEAoIhJUqwIUAzQ7qI
Vu4HP9eSUR+2Qneuf9oqa6ZqgS/guh7HX++/jnc3/zxpB8SoiHHBRo14myIojUCGHV5WIDWsBXMA
VdKsvKI/XCNR75KBrZZjhyo+Hk4lVlCOm3JzO364eXwCUyZrKg3+wLIGljjsQROIwWAwLC5eyFLv
DaJecIDOnMW3ayBoZTlf8Xl8p1Vfbnvqb89WSNeWVvwfTn7FdltcWcGMYZhxw8ITzRVmzx3hMQYd
eDY5/7ULQI7PGx02nYzBdjPMIxXdHOLhtpZ6V4s0O3anfLbe60Bipg6tCnAMLCyixYEqhRVj3r5z
bBLnhdTiPEiz3Sxz17CdMdDR7Wr/j5921ycqI4Q5gP/MM3bdGMIthuC5q81A2ELNgogem3fFRQ3t
L7exv2tEXAJr/OUUK/0+fDv2f9S7/mKJibmQ0NtErGrCBiwWiYxcZAsaFDa7Y+JkjGbuzpWTAD7k
vC/ow3D3+Xn4PH6834y3+5j/AQgrG5n1Ekx4wlKzGLAlLFJiHMB8l5ihnl1iP+dznCllmr3VaDOM
26U2w3bKVtXrKj7G2xv85xlnBVhK02QwJmQo3iFCgbE6HR3wLAmQJZjkdXq7AqxWikaJleJLJVaD
XPKs2/H300sB1RW9ErXls/6AiABNkACvFpn2u93sHOgUk6ewT8D+Xlbqsp/rpVsBfavDtrOtVnBG
94W8e6q8uXt83BxvclF4CmVN2zHrnLMgMjbbY4wUoJYCRGyVkeCcmUgvUfCTcWdiuaVYa0annA98
o8cpX42SZOngoFFBEh434Qsm/4UmwPFUdDaLQmcn7XSMZvK16qzJ2rhZYOLmbjtBTWkMQs1akuK9
41xjl3jCNKp2BDakJTp67Mo2pcgXl+Q4bCuUGZZCbRblfjd3X5t6GVrLwzirVzcWoyNeOysKYn2N
9RGA/kkETOyLkEEI+xbZvvenMjRc8u5ro9PIOws9anW4tgfvKsB/fvrx6eHH8YqF3e11wLQSEBWw
Y7W/VSZPXGRgBWRAm0yz0+zfeMVCK3artdY9refEGf9Z6//r7cqe27iZ/Lv+Cr58VU7Vjhb34ao8
4Bj4U2xZ3khOsvui4jGyWZEor0g5dv767caQw7lIaRNVVC5bngNoYIC+0P3r1bqBvWq4uPUsyWR9
UcaMLcFT4TXswMi8UiBlonreUWZu/8kRt6k44MxtPdEZ542lw3Gi+O+Oc6/aILv9dZmWrYMBQmvM
XGu5tCxRkPEYW5RclqixKJ3hgSvqQ0jPPd3ALg67CvBuexgUxM5gGJSKPk5xXOY6J9BtJ7EfNx8w
hpw2SOA3KRii5qL3HR2CFHF4JB5Kl1RL+4IpukN6DrkX+s91Ry9GRs8QfLSjqi2q9e+b+y/r1tCB
9WwxZLbDd8oSBfpoIB7DJSJ8TGlsQYRSpSwFLN9nuaxi3dWOWnzgwMiGD550R2HGhjY4KsSAxzD9
snlEnbv2ntS+ExfKkIjXhY4W82kZK3wC9ao0sD6TCJLrl+GnLQoOMNbWE50x8iHUnqXKiAHm766s
zyuN/vX85ba/oZQP3gYwhYqIahenmOJCXVkwJ1NJmHFRPREmsmv/EH7v9naHdk2G6hVcFL2NhwlK
TV0lrIqJdYnbDDNiZhmIYGCYmOGHEQleRluUnDvuE6HUyycshV7rh0yG3mO90cix0Sx6OANfbqcb
dB43KVxi549n1lkiy1QorVF757wwqHSpwJ0BG8g7Ko9CIHRa7tFWDWmztDmJWc4f0ZOwD5+Tkp7C
n5zJB/qfpwKUCoOetShcAcS4IpXc0igjk0H3M9w7rXUomY/IRriod+roQ3V3/7W6Wd42cc0iWzaS
lYnbsqAiYhYDlpkh0hZCKukCS8aK8cjPfntdYux8hJhpo4TO2+khGk0TKwWY4Og8cB41E/QllKEs
HHM6CHTviQNuxtEkD+yNjpBwczOGB7Jj8xeXewmkmamhvOpfcBnpQJkHfqUNYqiZGAtvWCxikF5p
AzRH9XJSaE/Lgaivy1GpsxhmwMNFSntnrZuH6T7AnZFG1JSWUzBseYGYPgX3FHPfOVbUEVaqlBJT
R09bW+12yaIjHGlhyAgMfF+zBM1x8oprPDzgVuSdY7W2JUIgE21AIAYXsBhJKJIyPnjKHEjEf06D
hRvdsZrZyFgrtfsEV2cp9XILuAaF3IIi7oQDfhACgl0oUiREiLSWBU7EC+UW7HtvE83oMIAJLi50
b93U9Rgbc1ZndzeyETBZS+MRRIViLmNQhcHFA2yEUU6ZVvrogXK73Q5dotJDutSsH7b2X4/Th82f
W+deHRwrMG8689lQOq1gtSiOSCKgLBVeOVMIrXxSkSdpjsvgfeMHENqb+yddKtUY6Q228uPqj+Vq
j/Ik8wZMqvQwlbIQkWJ6t0VYdAmqn0WcdF9aIviBSPx9az0y5iNk3Ez3COM1RkM3OdV7mihW+ZFg
SYDKjUWfPNWFiYangOAX6cWSU1v9dygfidS1WN/pYIRUtkLeufcjZhD3HMEgeaFTQFg3jvV3wI4Q
nCUnaIwhlk8yb2z7iP0Ddzv0z0YcD3CxH6Yxw1rADbq2ykcKTIiI1ZaSQoNHekTnIDD7ykgamPCw
Qo5tp3aTXZKsGSEJAxy2tUzy+6d+vxqYQtmQowFAxRcmxEJl1HuXSAaRAq1KJcF0ZCH24CG7rXUJ
mQ4VJzafk51S9zVefmh0JsVr9yXotUoSUKYTho1HaTDgPoGsSsQxA3f9PxWEtSevM6qFGBnVQvaz
+La5mOvvq83nqhMMgR7OLQhk/Qseg9HoCFp+ssQCd0z5AqHzC2mx7J6kLD1xWP5XpF2dznc5pHCY
89c81J0KzUemYpDQGD4/rn5frj5tycaTP53D7HWO29aJGRkKQvDYUsE2sMYBT8J0Kcol5/55SGzd
Tg5s4e5DncHciKEyCRenO1a+iw++3yxvWv42shOPURgfS44nShoLFwXg6iSlIkhtQNu3RodwNPC4
1XCXMD2y4G4Gs/ymWlV1EMT09nJz/5AxgWq0ScbrGHkTDKNCgFhkFhMzuCpsAJsJcaFB9sBX8M9y
Mox0deDAffhgd2iL4ZyDGqQOOsHOLnLFIxjWthCDtuhZzi5PSWxGQrMIWsipxxDfoHEzOe1AmOkn
crVz24diybo1j4DIYUIVXJk2OYB/7mEEsCLKNs6Cl94LBhMOKwIIM7qwiQCfJaYkIgqiXehy1z9H
cASwn6HQ5JSLxWJYcOmnD+Wbtr3vYXVGjyHbYMsgfH4+8BJFiRh5nJJYF3p73lkKNn7kNAVvdwin
wxJheLFfZOmymmNJ1l8f4L+j0Xc0GQxwoMAfMUPBg6S3Av6KKhqmhYK1/Kw6Ud2ODp51tp7pDmdE
ceVs0VgB3+5uWevI09ZlAqN3USG8S0yIrM9KAqYXo0WSUsUEKqHTtLsK2u2cdPuajhHQaB+309Wn
5aIl6NGwCkEk9C+CrkS3qnLArKaSO0lTJIaxbvftVnrdD9VOnive1prG9GH+efm12k8B57gVWM76
5BoEOqafJlQ0FB5IeWD7qLaB8qN1P+G719hJt08zQkhFRxwBGWlhPBNVkwCbAPMDchFUsGfAVmME
0cZLShQLjD9dzSW3f1iBzLc7tMv58LCXK14N9gROwNu67Fa9IfK/GTMWtwFaySh0uEq0cMEg9hv1
3AT7rHyd52sNO0IObZft7c4g1TDR1iLe426nZEbStZcNc0kj6hVwTbCXEQ3ACpCsgQtQBLEYXEgv
ZC/ve+8SrUa4lZ31XeAH8SY0GFcgkUhBwNDCUk6YH5x4QQXmokinyidAW45jTYT/HMWZQBKHCgOf
DbJOpl/bBRF2dZsEDKHWSQX1MRLgqlKiLyyXM0WUbI01e430rnzCpn66hFf7ic4QZiOuCri46JlV
nQiuJnW3FhEgFKRLIQM5wuQH0Kg9WNpScgNfNoF5G4/DUPabbhMoyBBZCS6yxU5bvP3zbnoq97C4
GO0SCNj6FKMFEcEoOInblBYgchXhiDMUenUM2o10ex+x9+FiP8BtFyL0ebk7mpGSEAy7o6X2pWSg
a+sSkSEoKKslMA9alsxFJkCOvgiuwi5Q6N9nxwOJ/n3WGR+TQ8Eq2LSfutEDeaY5Yg9BnnOkAUgQ
YCASoYcsJpWUBSi4DiGeE5jWvDTheTrC0/DOh6CdgeYZGRnIzWwEtiZLhrMLBC7ehoBrW7vdomVY
P63UmD5l4DdXlqYgTkSrlVXapudJpUO8sPVAh3g+csQk+B7t7PILVkoYBbNTCVY6mD+FIZjRY0Qs
DCj2hYctEEQZqff/FDRCn8ruEJkcGSJr+Mz8/sv39nkKzZhgDhk4hqwljvlhAv7yHjQYEZQEBYoy
0E4PxEu3m+tSMsQmyxf7Kkzed2h4ZqAXqXOUusKqjwy0YYH1Z5lFsFeO4SuclixQw+Nf3sz1vS6p
i2qE1JsxbauVA7Q3QUoJeop1DEyQAJKdBAk2m4LtKTSmn1nE/HhyRT+R/dN5pE29FMNw5Xxx98nR
ZP30vXN4QhsjHzadpQFVRIHKc4oSs8wR1MVhPBVTg9pOg+a6xAyR1uDitEGk+zZ92BuS28KlHLTV
pFTB8CCRRwyfjCBGNEkiGGkJD72I6VYjnc7ldGg94MWRCL2eawlMMizPJUx24ERgUaDbULRseZlk
4VM0YFBipSsKqoIRL+O6GnmwN57Z2HiaHMT/fZw+TFeb5ara41bnSrCCKrDDC5KLeDsGA0A/Qim0
59KoaMn4uUa/vS4xs6FrAyuK9Sb341lbfaz3CCykGtLAeS8ZWCEgrDWifANhBJZdqZT00Zk4iowz
lGDtPsZntv1EZxRajKxPfdNAbn49X67nfR+uT4qypCMoOph+lVBxRPhGA2w/eEbLEOQ/5cPd09cd
183Q6JJmEN1SkxjaiOT57KkG2conTwbBWQnwXY/w9dzl7CBQ7ZKxyRNQO1V5PDNgpI9DWsbgwZMu
+dXImMx8RNfYbZ9cR3OFmSRYsy2HY+G/KMBLSmkirogaQ8o0N4XDuOiQrOE+ijIY/+wCGb3ejtTI
6D3ZGZ8dkZDSIrvqBOPe7WuYElyNxJQ0o5ko9HzyiPqTNAF076A5l7Awy6O4GyMhIdJWw8Ah2PBi
EG6OVZWPxRvEZJ2ygRdEOfQDKkRegVmXBHQkFhw1wb2c6d6l51BgevuZzqgXcmjEw8X5sXCLdFl+
xZKn2fvE8zFTNpC3v6OVnCRmoKO6gvWvkgPtxXpTRAmKFS2p1fYFp2BHz4EHt3d7wx752DesD745
cDfUyB9Z6ak9Gg4Ye5QI/S7Q/csdLcBq40UMipfaEMvM38Am397skH7DyQjpqF3M+mkR7dxgvXUv
6exeoiYySuEDOUwo4QaL4GpQPWBjyShgTQj98mdTbZIOZ1CMJBBbRYfIdFZx28A/pPv17fXi+2p6
t9zXrVGnDLm5TDbmgB9Ebyu4lQyMRk4xaYiRZHkZRS+jb9jaSbffoQ2lBOnryiB6p4tqk9HY1/Mc
4lB/hHrllEZRlQhFmIaA9WtgtwBrKARTpYqRuvC83L4I3cRdN4eDHQaPnXSpHx1SYzP9/q1V12pQ
C9RzBKO0CIOdEGSD1/nMgnliqTYlMIFxeOlvI/WtsN+h0FNWzAfVJMC8PQ5DiKnvCfQsjynwYKtm
0COgE8zg7JIOST0N9XsUhrD9xEmX3iGHUdkI2HlHWc85qlNUjFMMc/cWxLNOCP5K4L80gDEYVGL0
xZyjIx53NRVkhGTRbLK4nH5a3a83y/l5tV5DX+teuhLJGBtMcK+8KEAphGFI6QsbsB6QdGA5MM69
7YUbHG+3RyIbI1E1YO1n/RAtUKgNDVjhTiYEdQAubUEMFRgR5zVzTlH7QrPadN4heTZiwajZnA1q
8DxUm9vG42lyRjLqOsGS6ErQ1QQxDPgEBTWHGlkwp5zxSmvFzFNOz6bhDmUjuFxwcdZ87zfptzoj
tRdjlJLnHstzEyz4yaUmNRwXWALE8mS01i+EB96joEN9NR1qLqqa9c9Y3lYPs+rhfo2Se+esoF5o
ITxCrWOVLVOChuakKkrGImdgdLPyeBj7rtHxIezutsnVZDEkV1MtBuDlIDSAVWcHRS0urGanvBZk
guiAWWdMoFFLJRbJIYiDET2BncHEC6ZT7Cg5XFkH7550hyPHxtj3d/32IWypaI4ocHQlAxUyqiIl
DJeREnMLqCpsAh7OgaGQ5xW237c+Tvn+fpf2kcAmvHhEER5T/ks0RrDYWBnQCc8EA8UKdA8rge0J
5aX25m9+o/YTnSGwIVQgXBTNgdy39e2mVVm8jsnVLIB8cQIRYUFVV5phGVCwp4x1XguqjO1lEbab
6fY/kjkDE8P7eUPV7PFT7V5HzTSnhdKcE8rA1GYBmLO3AgxUo0E5KmFzimC0A3ZO5PMSvdo9HMqU
2T/RHcNIwjNcrIblHGp0qbqgg8pKdVSWeVqmAq0cIB9RI0qWCua908G4FPWzfDvbxg9Wdsi4Uifl
t62df36/WN7sDkwuH+/uoNXXMKgwvYUJvgMddDL7PrnffK4eJl8e7rEeAazdzfThU5UxUjefwULY
3nidJ2MzXf9+fXP/cP1luXg9qfHi6nKS13P4e1O9npD2xXW1uV5vmuvdjp9qnvy95uE/rVHBDOT+
EGB7uarG+mMWduX/r8+TX84nmN7Ynt+f4amL1e33CWYB4p37m0kju15Pru4309sfOTGn9nzyUK2X
C1BofiRvX5F//TBZ/4FxJ4vr+8fNNZD1uMpR1NDZYvsGqlL/+uHk14flZjq7raAB7LxpFtTuN5M/
4OamWu3aPNLH7lK7H2xi28skj/v4zy9nP199dO/gt5/LN2cX7ycn23+v/vtDefi1y7P/yXfDxcf3
V5NXq/tVMb+f3lbrebX4YXLy4/7nQAPN3d0vJ26+WX5FiISrh+kcl+/IDyPCvG3+MzkJbybrrEZM
lqjMrUe7okI07wh4JyM/1i9M8Hxn9B3W6SduKzECo0AX8mPekr3ewHYi5613frqc/HR2NflUR9UB
ifP7xUhf+374oXde1YfbOLOZtlPyZt/P7mf3zASW9HSxwGoLEyAaRXFrefxwAjrMqrqdOLwyuVjN
q/Hv0yHr3L17dxGOriMq6CnfDZ+a5p1Pj9OHxeQLzvXYD2dNP3py8qHe7hP4RF/W1eRsdXP/5BK4
vHLh7eTNR/dzPEicVK1PA7Rdbqbz35/YGKClqfY7v5xf5xG5qyPbYiJIQ5ucnPxazTAG6DxP/8GJ
29PGYA6ur6O7csdpY+TUbN9hlOA7Z+fuTXn8Jdld0tfX787evy0jLLeDU8DsqWy+KcV3rsrfro5P
m7anoqFN4Dsf35+Fi3iUOtAJ27TdZQ53cHPmHyWbfvL32fKBu+oOa/Qd+OH79Ybz9lfY1NXFVWaX
x2fhVL/ZzbrdvvMfkzvgHOvORq03aB6OJihQ9u+c/B9QSwMECgAAAAAABoEnSgAAAAAAAAAAAAAA
ABoAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL1VUCQAD64JxWE+DcVh1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAOIEnSpcJvJ6mOQAAuL0AAFkAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252ZXJzaW9uLWhhbmctY3Jhc2gt
bG9nLnR4dFVUCQADTINxWKuCcVh1eAsAAQT1AQAABBQAAADkW9ty27iyfT76Cj5NyUko40KAgCo7
VbxmfCZxPLaTyampKRVFgjZPJFJDUUm8v343SN14UWzPzNv2Q0wLYPfqRvdCN6BclUWs1uup0f7x
N8vVtcoTVd6WShm/W1Ri/MfoKqruu1Ph5/xTsdgs1fr804d3H98H5y/O2++PLhKVV1maqXJ6Wsvo
kyrXWZF3FaCRVyTKuH1YqfbQZ8FNbhnjy6jKvqozQFeCGuOqY9LVQ3Vf5I0N6I/RtVqvinydzRct
cScs/rhWpXHhdzExhEcjP6rU+W227MAiCNsmwiayDcyniE8xmjAbGyYSCI0+3BhDdr6PYgOGPhsw
GeMJN8aYvcUEkzMAvCrKqvcWxiMnL/KHZbFZGx8/HmF0fQd7LnIAAUWmRQFOKAJk+gF3Qg9ZzGHO
aDTSyA3nW/RFGTdZHivDLYpqajCKEDLWKi7yZD0a3TysK7U0LvJK3ZVZ9aDdW6m4qqGoPAI3JqOR
V0bre5UYt/elipI9EgR+zdarqIrvjT83agOeiovlJFqtFmqyjLLcrOoXRqPge6xWWmh7nYPP3sx1
/JnjecHNjTG+uXh7E7z9dHY0XwfHfrF/Ca4vZxeXn5x3F/CS71/rt6LKQN9R5+dIwiUY1NLofbi+
uglmlx9uL8L/G40+vTeu1R3MXBuXKioNNB2Z5htjpKfPZrfB59teRmyVYMRsew4P5tEHsf7A+N0w
KEG//GGU5vfz8tt34+b9v7wPvw0k02j0dlHMo4VxW0Z6lTZpCjE5LtVXiAhlxPdlkReL4i6LYc52
3c6mI2ZPiMCcYo3HCy9V9a0ov/SQ/k/jGjtNU4kthBlXhgdrUmX5nZGoNNosKli04kumjHVVlNGd
Mr5l1b2xatLsfL7Jk4Uysn2K/2XNiBuhVqc1Z7Cw4c+3t1derfpmq3kNYwtVFflOCUPPU0Ilaym5
vPmRklETzxDH2wCfTp8Y0BrWYeQ3NfeKUg0hq4PCjiM1J8LYzptOGya6qR6ApKbFSpURYPvXeGj8
p5/OjJcGAR68VqlXbCBRk8n9VIqzEX4WCMHwPI6tLohgoZawtNPpWlW1whMoXh1erD/xMx2nCohF
46NIaIB6/of5/wN/AESM7bMReZ6jIo5iOT+o8ot408ArFcR/3EG49aB3H+V3NQ7GmDHevTSJV6sp
FhidjehzYRCLkyEYsc4dddhJxlortnhHK4FwPxtZz9caDRqfZIkLmb9U3qbUm+Bu5CIPy2jZgGCy
azkXECTseRjmMUdpfMBQy6+DYyd7/NttqGMjvarK1z2sb5p4xTpgL/L1CkKhKOGhKuvhSDMyxAZh
sPPxZ7pHKpGIvnt+g30LKo/pHEg8P8TGx+t3IB00Q+jOi2Lxqv/mi9pvAqBuqmwBu9/U5uxsZD8T
lxDCtvrS3xVRonGBqGVWQTURjeN72F9qUC9eGRuoUu5y2FUXRX5XO03yDhLxbCRE4dNI0izPNM3p
v4EEx0mxgf295hdylDfN9G0MwTrJ56KIRZqcRrGMHuZK/xEsV9VDHbtSq29ZjtFzdc65PK1zXUVl
tTX7PfA4VInFpoy3mcPosPEMUUCCn5lAIgV57QTawQD/V7VKISFbj4Ya0hDacNJR90tWvVN3Ufww
pC6ybDyHXHv5O8xsuAAedDVX5tHizJg1fKVNrkd/g639CjbBaar/utS5XT99ytS36R+ayC1kjHey
JsvllFILQNHngVKRJLFhalBashZ4VWZfAYmGBPlQ5BfgiixaZP+uKUHjCveQ7spis6qfakiYdzMU
W8/Fk3J8Co9elL3+I8e0URAka8fo97VfsGVLAMKeByTlaTI/ADGephsLu6WbMQK7C+a9tma4OtoW
pmKOImw0AbEV5uTJhzRdw2cKliBPim91dBIMu3lbtFZrM1102M/UGkNbZiStN8ZZXr0yjsjwRVPj
EHtILaZ1Gopn6lVEoM4bOg2GdWMONfuQbotqm4EBF9k8eVgkE/gnm/+oDhV2LBmDqrLmHC17X2fi
aV04goB13XbNvkCaqkVb5rEoJhLOFIE2RFe/f9bzS1VtylzLRXUFeJC2aorTlrgWsBSl4BhjN3H2
7c/mod6wBa2LtWeJS6iFGztbsujeYvLDilr7dDtoLqMceKn8Cw6CJsb4At1SXs3+LNYtx+ykD6za
sRSBowR6DWO2mz9b3pXAC18LaJ51OvCda54uME7ipCNw7yBG9g6i/3UhYf3XWcz+isWwW4DFa7X8
FmXVTFeK0P4P2Bs/ForQFCcoNfIoL9YLpVZ1oSl3ZsYvX07wMKm1EUmKCAIzoUeezfB0Wt1n621E
Q3mlBc/SohwfJjQHF9C7bMp6i3+ty9y61n11JKYee42hOsf7s5vFG+PNtnTX3GyzTvv2v9HX6CYu
s1V1KMWOyZ+zhFjzuTFfRotFEU+nP6toBSDjCEjiTh1h3OQZkNIMJn15vZ99o7uU+P2mUt/f/HSM
9a9YpG2pNxjdmM5mSy11No/Waoql3e0Qn2IYSa2uYeCquOkLb3YmapVcdDVS3O0Hn6CRAjceNDrr
hzy+jdZH/tIgXhlfiywxxh1kL87GZ290rOgwud7k74pi1RT8sNPvRemzAsK6/eBToMkk+UegBXlV
PlwVUBqM/464poyRnQbyKYbEIqnlvjgKpNk2vWarsvj+8Poo9TYg9nUDA/T+PcSv/pYDX0B4j2vg
9apCH7VUy6J8mBLO7KZ/fR41S5kcqHleJA81leK6B32mJBwdJO1rMS7q1vKZBM+w0RV0oHc+Pa5p
Lm8+Xr/zijxvDtGb9u7Z/B+nqU2MZaQrh/XdrCqj1RD5P0UQndO9oLrZ7ZzJ6aAMi02e1JzWlzEn
EdbHObOZF25T+EaVX7MYyun4/qqo3UEw6ZD0E8QipuJjsfCr9izjHV58XJZMFRXGsaSblYqzNIvr
jOQd2hs6UO4cJVsRh238985yjpv1hK6x3J4g6A+0yrpRs8ANbRbrwu5qolwqxbV3L2+aeJo1MTab
Nb7ANZv8M0kk/rkkksY/m0QIGtPmjqm+ffgs+PayydDbsTLG3DLnWXU2HRlGGX2fGug7MAzIF1oJ
V/rOxSjn9UD3LggG4lMDSX+AIKSVJNnRCEbQt3Nu6VfW+wFtG4ssgWNLaO2r3sAc12/0ByKllRil
6CiRLCKaLErZGVBRAxij1oBu6iNZD2A9kGp3w8CcSduStZISkxOWYNofaJRYJ0zEbMiPWkm2asna
XXkYZbrovILBw5AkcUlOyBq92952eVcfm4s7IL6gLIuyvg3c3uXtX7VGt5oeLzfL+e4CGluj0cjN
8qh8MC6W0Feup6Pd1d33/a2dYRqtD+MIWNd42TllGKMz47XnoCBknJlIOMykDg1M6Qae6YQhZtj3
A+KTN49flB+rE2wAA3xYY4A02p4g3qp1dXOfLbe5VaNBNGShsD1TsEAAmtAy3RCemAycENC4hIVD
aE5JbePibABXIodwbVb67voYGiOe5bscm4w4xKShHZoOB3yE2LZ0SRB6ofsEaMeCW+ikjXroOOci
Tec/qLnGHFkv4SX4Bd0OfQlAXUpCEriuyTm2TWjhQlMizzNdn3LfIQQFNBgC2pY8qY/s9E5yvr3A
X587nTnH+HksSA8/mGRBmvVPEodwMxFIFzmuGYbCNSmINB0fyFEIwajNEXMdZwh3I3EYbzN2jBMW
S/ZwihjzNKVDx+EDQD3i2cQWxHQZwKMSS9MlEAmhpJgHPragNT0B9LRnt4PHUCMa0x7UiEWyD/Vw
ODuAV2CXWIDMJDYOIKkYNR3Hx2bgEhIIJIkbitOObeT+yL3NjBbyOUr7yOcY18EAke+9/ay/LjFx
dhkmOZrYgDWENHOlz0yXcg5YJTVdHHATbGCCcpu5WALW5ssd5++yeQlMeB7uwK3PtRPfAmveZ/F6
GPTuhmR93gcyasDqvYEnURodjNh9OKc4sqBw0UemxpgCbEK0j4Vlcxp6puehEIIX8s3xPMu0mSMQ
8wILYR9wb9al1nqu3z7SJbBtJV1d8CGjney5+ODEsVo01+rGmCA2wRjeah50bDLshjax9BdngEBd
GZoCwdI7CHlAfxCwFuv7b3tlcOTGlqJhP7amtI3h874xEdqv/lLFESjerT2XfMIAexByD7m+ZTJN
+dQKXVM4fmhyCSHrBZ60HXnkw66gYwgER6gHgWCVaq4/8mexUnm8AEdO7ImeXf/W+5AduiKkvPYb
uDH0TdejwpSBFXiWsCSygx+G4QcQ7L0bdlwz1oabDsFN9x7bVqNrqPzzbL8tEQ2VEhc7wuOm7wlg
o9AKTVd4sIs7jLiW7dGAu0deaySdn5DZAUX6oCwpOj7UGafvgI0xJno2t4B3AJhDAIIlsckxlya1
CSwnERCPVhAgL/Qt17MeTWUteNiLu9FRG53sQ+bzaAByXT0BZjyx6qUHvoGn2qW2TbDrMGY6GAFh
WoSZgkpiesy3IcFQ4Djuo8hr+aeh18OjNsx4CHtaFwCwNjf1Zda1qm9VtxFgEQCt+Qfz0LMlkLrF
bGrSQCJTWiw0PRd2fJ9hwUK/nTt9cW00cd+TlKSk40lntWq284mEubq7nFg1j0PdgUMgHt8Xugjx
kQkxKkyPQ60EbBVYNR+edmEjeMh/3nbsGC4Vdt95VEjZh7tQn66cvSKd+nhC6tSH33rxXcJd25em
E7jgSR9qYddyIP8t6QK3+1AtkKcw6E7VcAjsRltGSNFPOCrlvLMJeKFmED8r66+gwJZff/VSu19a
OhRwKBm3iclYgIAQpG9KbEPdGgiPcScIpCUe5a699GH4x7EePmF+Z1LbajWwdPBhx+pok2TFZANU
tZ44+vljrgMPTzDVpsMvTYa2cBmBVA0JhvKBQDXpciIg9ih1bOLbiJEfh91O8oll2w0fWwB7e3/z
tqDt6ljwqw8FwwTrYKNIhxoKA0axQCYREnovqByBcQL9pVfiBxgijQf4sSRZQD+pD2G2J1frR9fr
V394yq9+2ybbGrDJtuqEArJYRJt8f1s4tjmbMDQRuhKiVuBDtW4yDPZQ2A2g2rR8M/BCil2BsMfQ
4H50LLEDhQ1AScRuc3Q+hfW67MBg3mQydqTw3ZCasF1DQwFbuimJcEwHKkrKAx4w/xEO+nQ45HpC
LdnG0TLBJqpvgm2nO2/Gm9V6QvasTlltgMRMWI4F8YHBgZRCVeRwTE0vIARCBlHbE21SP5bTBhDj
PgCByA7A23cf9+4DJtSVpG87TOosCiiUQAH40SE2FOZEYIS5K6XnPkojb0+UQM30rPHbXncLcUoH
EKe8y+jXallU9bd8dhmgKV2/Byh1N0yEwJYlgQLCQOeYpnM3NDGDWhjBrs4ofQqd9/WciojuvLZV
vB8IjOg6f94tUPZ6vKicF3nTjWJMeb1dNQ9gIPFdJ/SkY3LPh8ViGLYqDN2osH2BHYdDC40eLVae
zB4HLCeIfj9+bDajjPfNprq4odt+sP5mVxppDNs4pNieSDDQsqkFnKIPXnQdCR08VOWWbfpQRSBi
OQGnj7Dkrk1Rj5r39QdVWytm+4Db9vL+nsZYGneDN/rmgSboYLZfRoc6CutCSlh6Jw8x1LPE9U1f
+tAQ8SCAhohhUwpZn+NgYfG+5cfred7VAKOAO6/W5++j+MPNYXzURtrf0GAFRbcQ0Qfbzf/yUOX2
ZOtQjdhYbweICTCBwaZGPOAw3aO4Ev5BFrZDDl0+9t2n5N+QrhMhODBz1DZEDlmXdK2rv813FeVq
sdZ1BplweEdyHZJOYAfMCaDE0jWiHTqmdP0AuJFiy3Z8hwSPnFLUafJ4th1BONVKHGZ0jBwgGo7Z
fscplqsMsmJ2OOXkmk4cTGGnhkQLmQxNKsBIAQ4zbdcG2xgKXc8f3L57Attw8AABcGgotgSgL50W
Xydyj0X3YQ5nyGWeMLFkUMlyB5oIDj0OconFdeXkhk57/2uLaSMYqCIYj+RAa/gpS1Shl1zURXXT
zgKXAtlgF1qqus/murSENYcqBzotaMQs6T3Ks7Xk001hPdxCbZO0j1pY8f5g4M9FVim6PxHA0A8C
WN+jPpNQSkrs6AC1QlMy2zM5l9Im0vMFcdueawkatbUNkIGI0D6Sjr5oo48A6upBhIAAU9h2EfTR
1JLClI7HTG5x23Pt0IJit1O6HMS01c+HPJAkO/VDF8ZjSiwx4fX/SNvWgp5HRQgVYODaUAtayDcd
jxITKhqBHMwcDzk/OiU5Fn8Mj8/tvndgX8OdM9q1ijf6f6Glh1tT4Hr9HmOYaE7xoUoOfeiT7VDH
F3Ic0w04rBt3XRkKG4fI/mF83WxVPFaz9ue1DIpR39887Z3j/3zxH+KuZTmOW8nu9RWz9AYMvB9L
PK8dI80ormxvJ6q7qyWOKFJBUg7rfv1korqrG1VoqmfM8GwsilUGMlFA5jn5gH59eLjbPPw5MWg0
+JaautaI+UWUCk8smBCZQYlIMylwYAXQmqy0eg3rOIvQf3N+fK6eoXuzUs8AmDpup/FPcI84xExt
0IuV5BRPXpOAuTERgwYnDKYfWRoDRhOVzO12XozTyMDkGh2YdWxlYrzPBx0rtZjXfEl7aXYqRDjk
GsRzmoOhjJHAzpZgzD0V1v2Y9r64mudvNMoIK9bKCCeOFmrz9OWGzucSjZPJ6EhkJN4GMOvKACTQ
ORCVVPEhgn3iul3MszHaud2apBpge8ePWQDsvB8en04BM2BUN3jauDbe+SwJbFWAVozBiiUjSEgl
RaeVBmPx6tTb//rhChq5FLrR2PK1HzVWDovT+Q4bBZ8fvm0/raASfARMDU1RCPwBVwMWnhuMdAMc
A3cBhtGHooDwOcYl9Ul7eQ1Ie2Hac3VXr7Uqyk1PxXGp4nD/8fHhD+REE92rXMgCpPQJ3EwEtxcC
7KyoNWGxJBodzYCrr9LjMPYF8Q9PW6kt60jt+PEYbL98naMluAGDBxbKowZzL4GXigAOMiVDNHPR
5WARhS0c5DxCM/GwW6cOzGa/WzigKQH9J+BzoSZ+DLBl+vo+hWwFuOkk4ZsLAZzf6ygJMEeWADLG
fEWgHse+DGzw6ZtWwDU8NVs5h5eGb8+neI7FBXPOZc1ogRNbIob2BPEpeqJypNIFrVJZQJrTGG/a
WVRnascWFPznX04BBcAQvLpqRKU6GB0kiyQW5cG9wUpZB4Q7l2SixwiDS69uOk7SXHJ2vXADqMV7
uqpjTuGs8eOUyyyMisABKyWw7UABYiBAQz04Ox1SDJSCP+lipdNorRCD6wgxLMnwp/HuKy61uEHP
JvGbC5W8TNIC4o8cPIVnaKUjkcDgVExFFi1fBUnA1BfWFZ60ymw7LmcntyvyCCT8+5fNw/FL19Av
7iFLAZqySih0AIaPJLLAMnP4yQIZBojBeXCRW+BeVzHj5VSXj2HzWqPWnnYgyf5EF7vlcD+B77wB
uo9OXSQAdgWcOiAiANjgPoiNYN6CCCzmDPBEuZcAdjNyK1rHyVvK2X7c99oFfsIETcX+6BAAI4jE
MRciMuK2CBuIR5JTzEHqLAGhviTVdi0PTM078phltN9nwI60BkJqINIn6biRnBSL+B4cFfFgiUjx
8KkZQPzi5evF6Xy+AONyq4uxPV2GuU7j93cf3t99+3h7v6iIOgaJFRWY5wVT4WF9nVDEZuBW2kVl
AETJoOnrBIkvSNJq49bY3jLrjpv4dvtw/8dZmL3G2Kjy1IMhBwvnAP9oS2zh8Fk48NTkuQ55UXTQ
jPKmnWrozO+WYTMsOvh4N63hBF3qD+haONDzoByglgT2zhsGgBTcccpGYZjXm8j/z8s5PWsFHlRH
4N0MWhZNYT8pym4knVBDBKDtrELEgoWDyQCjVtkTcMQxWmD/xfG+l2gGbeXZiZ48SysEH2B/+/HQ
q3KUDc5lla3yoQQ0HwQgGqwt4NkM6xjBl1EG39fyUmh5+divJ2jk5HSNufCXSxNwCjz/MW7fVicL
9hL+v8Nf8W8YLJGWcZUA0BRMmSmuCdAYRUqJKcCwMRn9ahHuOnP/telZoyngwrWm273YbxtN/zhU
U9i6n23dzFYVgEk8kxwE0DwpQD/jwL8JOKYFPoey9O+I2/+xKrWwO7ZGn3an6QKRvBufBzinStfI
L/6Be4sqhhEDcCQU1DJwWr1nGOiiSURrs3biRbXqqBeYBT5qJe2ZlN0KO334BIby/iPaNLAlosp7
/BFjSymBjwHIqjOAOawPBTMNh0K7UIDsmiC9vQZqHKa5EFeaHrbiD/uO+JslXQVE/GG439XIxlSN
w3W1NLwW3hqtOaNTkEAEYOk+AMaQPFPg8InnbK8syDhMcrEk4/C8VWHsfIGRzqnb97AeR6coa9ga
HAkzWPEiJRIEn2BzMMmAT1GenWfJiJfjX3XD/vKfV8QK5snPRXbjunARnCDVi03zYhWJAHhqfFJE
xQq9KXhIDfzUcga4O0TJnP6rVSQXa0Lc3qzZ9CCkq5ivRdn+t4hxb9g208aZfkLPbmkEMl0To3BQ
qeIEUDUnFJE1VybGaK/F1zDJZVQND8+FH6RYg6pBanbcMX9+3XbqJpRMTHCbCVUYEEjeA63MHC2M
4by4xGzfZ83DtULoNUodNOdH5hfe+g/zvmWa16MWZOTMgvtRtfYp6kQCIA8SvbRWZx60/1scUSNf
o5bebTpqjTPE2/yrYqmZ09pKArKSXFkSKZYA2CTBgBhNmAHy7mMMQi5yEc0ozfwjXyOUYRTjcf74
z/Lh2y2ofx7wBJQNK5ss0d5G2InakMCDJzRyT4MP1kfRCtAO00iwp2uQO+zZjNkA/rUY3dCkmJaA
fqSPmPqggHDBf3ldIlcA4fgPgsP/i0KOnrxM9OSdA+6fx+9fPs7xWT6VEBngjAoLgRPmjDMAYsCT
JDsbjWZBl9wvITofayGE7Agh5/KXp4NjmPNYYMmRQ9bwGDj6SGHT8JANEazWsQLuFYFaaYRJVi9K
KxejtZKYzgbe2zlc/q5C41kOjsWUwkcaSrDEZKyASCETz4wipggn4StKpRYbuBmlnd+6zvyOLTzy
f4zP5cMxRSUnPCe5V0JqwmtwtYApdTnCV1FWY6GsZ+VlclLH7G+j+qiV06menHY+aNg5+SEO20/j
yYy5WkfOhXVARzwJNhcigOgDQvOFlJBTpiymHP0rkdKlEOcqbDhdu2H45X4ZyB53twMazqcnIJd4
FdAxpG1cpdgZtjywAXC4sOkAQxCwxnCQWQZ/EYCDBf4DvLkc/xL4XL7XasNoRxu2BBVPX8cRth44
9YePeBHSeTgKoPQhVVj/xKBuVt5ZwBZFYpqYY+NHyGCkA4AlZiNs7fwaAb4PVap/9oRqIOzytcUK
rC3vRttdp4KgNGneWhoNpha9PEusCEzHl1yr6gCJC8sJB+efjCoWIOMPo0A/yvC277xpxR07Orgl
IF8txFR9BijhxtRaaV67dXTwVHNHSZJYZqCAYVgDtDtolotmwLPVVd0m3emu/ETLWrONHrYdFbdq
P54qXx5xk59iB9XrFCuKBHRLGAPIIySYeKAXnrCQgwKn6wVdJBhWI7VybHVPjtmC/XOA83a/HRfs
oWTglzRxFKPSHVjTAksci1A81DIG8UrsoZWgEd51iNtmUEvbtRm2n799PT/h7MbcyJqZNjUuXASV
GRsTnGNAhozLwCMwwlWsikIFaelVKDwsZjpXanrWyD90yjLgl+MiK/YVGOtZ2urmPf69UqGJhFbC
n60qmBwFnyJJrUQMwCBIZEVRUZyLyb+GjXrfynL+Vn200K/3feycP8N7EeYEmjWqWluB2F4WTxQA
QCKwqNByC56laA6kI0vw4l1cdTZaK4VVPSnmeN23+5npcFfjEIFlJw2Jxqgp6RmAGBEtMjAO7Wy5
IMA80GL6zgkbsVSl+ci1quqscqKGXI0AD6RuOK12LJrIwV6RGDQ2QcPqOA5gj2kffQI0msvLsfnz
Kfqf8PyNcyW2XK6h6Zar4biGb2/vx+HR330cz1rmZsZWwFzIDNi4UA1YJ4IrtVp6AsTGhIBNVjz9
TYytI2irqFsTAbTKWk2KPmz+e3tqCNUWjWFSKilL4UsAeMOkryKOUUWkTMaXrG3kprXJ56M002u9
Dilstd2clbENm9uZtx1qmRznuQShCc1guQSaZMsNJdkyH6WQhke6qmObx2kF6JjUrd7MxO3p6+09
3iY4f2Nn6qmlDg6LsYXQ4hk2+EkSsJsXmEdJPCoel10A7UitEBvRE0Ks0pfbh6FWI9fu0trhSo2x
xgeSuEAxFDBI5wL8R4Dn4iIqw36AXGDMS4AFHrVybnlHzj3vVDX43+PPCaHlFHyG7UKxka+W6foS
WMQMALXAuwGZ+Ii1utgHi9+Oynh1BAhneSEGhI8bDUwHLW6NoJ1k0FPtqK/xW3SbNQin3WSydQ5F
ewD+Ak61gD2BeBFIFzDhwA0mCMJrOB+kPB+OYlyO1s2vtKpq21FV21O/7/Nw91/Pt1/Gp+fhtMHB
eN/Ap5q+VcpAIBk3xHhEXwiMPRgv4jMg5xjgl+EqKPmP97/FQyXymRqXhGjUAIeyVsNu5mRoswC/
Pd/enRqOpo/lE00+AjRwVh46FZxzgPV9jhqUC8kvEOSFIVuxtrQj1tYueoPvp3t/VvWLwiqMpAuE
MlpTp1I0RCsBAlpYZKeAbkkEBKroRJuq3FVerD9HI61jayu32yAkWB3cY5s+7vq6F2p5/XQPgGYA
LTym7ISHoyuwf9SDtREJ7YwB0xfEX7wH4PyNcxV2vXqV3e4U8W8XY86NWoGh3NpzhLWimKdwPEUM
5RoSsEIoWOeSxhb8yK5Y5vXq7nabdfRoZBj+bNNxt/XrlGE7TsRN3EzVJ/VPbLVXknKbASdwvCOE
Gks8D4yAN8kSu82Uu6r25DjDBftyePqmlXboqbBb3XTw4Vttr6kFHcA3a7nr9FNNCmWk0hqzQBgS
S+CImI5EWs4VGA/Nf1CzNo9/6XKDw+NGdt7pYhjFKm+4BZ2/3dbC6ENjeS2JZ8JqASjNU7TnDI6h
dSCyKspIA749cH+tN/rtl8t7+rdfGpllp5xylHrZEn/iQLU1GQtsWO2Or2iZcXYjJkPtqDQgbYbd
LBSWfDBiaQmkJKD7PACB7pW/XeiPrtO80CFdn7fq6J46ZulWf43xvDC0gJUDJAwnUuF+d8A+nAFE
yXkMNjMWrL+qCxCG7UsLD1oxO10Lo93OFzq89e99/PcVnJecC5uBZupgPDI0CkQZrDSQaE8jt4Yz
8XfB+TMJ37Ra8J5qu7POoi8P9/Hx+9dTCSccG6OO5tFhgTHQLeDSod6fA5bReHBFYPCZB46agr/U
YrQYuRHM7Tqn043LTpHh6axNZLbZkhXcCIWwgNnCgm2UXnjM7StjcnLWv1i/No/aijSOHZH2ZhUy
RMX8t+dPc/67htxlsNqIDCulAfiJkrFKXVBAscZHlWSxoVxnMo7jv9RFhs8b6Qe7xnXwy83yVpJD
umOdOuFe2yBchO9r8TYfYG4Wv7TSQN2s1K4E++LdJOcjL0RbB/nGzQpdh7tv4/PDw7SuciqLwD/3
9ZNTwzNeeFY4ppl4BNYfmCNOgMjAGAxV7Ac+ZB7/kheZX2ik31jZkd65dVkEtmsOQKwfO4URBXtA
DeWERaxECQmOkJOCRJONiiJIya4tjJinuWiL5zcaRcZdxxbsp6vezhR5Pz7uHx6/YKzR3w93359u
n86tMzUpwr7GfYENQx7stBUJC+KjZCJ4YPlXbfPONBfiaesXz9XaU72OHu5r+2uLUbanCm6MWFR3
r+2hfT7nFLImRQkM42LpMsckoghYJJ6sk+6qi5i2P6oSP3+j1WKzZqB7turindqMKonFn3CjiUPa
T1QrlL0BUwNaUM0DtvAi87eRROu4lonS9IMLReaxX+DP+PhNK6jrSb9sA0m3T5/94+b2+fGQbjlm
KKbbxJSj3HuiRL0OBK/0MZQBVslJBaUE/UEn2mL0vvyLlxZa7Dta1EB66wDuHh4/fL/f4uq7w+q7
Ke1aojCZU+BsxmEJM5zyJLFEVDh4ZFOx5tXbDWZ5Ln2xw+NGV+7WyH4vGNuPmwMweBy3DSwQQp04
U6SqJEM8UBPMvnhwFVhEnsGKSYBnkZkLoKAdtRFJuE1HpO2yWv8f+E/0nTveIB0VAty/CFg37gCM
+QSgsXqt7Dzeo/viosOI/aWDB62E246pEbu5MuHTePtlN9yR4en+VJygRC11RUmdZSlLCvjb4xbX
BbhmdoATovWYyNIxLeqX1yM2AqlOfclemaVJ/3kapV02lYRWAuyDDQrDtcoRCwiGlCjBhgDNDOkq
WnkY/FJLRn3YCt25/mmvrJmrBT6B63oaf334PN7f/uusHRCjIsYFGzXibYqgNAIZdnhZgdSwFswB
VEmL8or+cI1EvUsG9lqOHar4dDyVWEE57srt3fj29ukZTJmsqTT4A8saWOKwB00gBoPBsLh4IUu9
N4h6wQE6cxZfr4GgleVyxefpnVZ9ue+pv79YIV1bWvF/OPsVm7a4soIZwzDjhoUnmivMnjvCYww6
8Gxy/msXgJyeNzrsOhmD/W5YRiq6OcTjbS31rhZpJnanfLbe60Bipg6tCnAMLCyixYEqhRVjXr9z
bBbnhdTiMkiz361z17CdMdDR7Wr/t5+m6xOVEcIcwX/mGbtuDOEWQ/Dc1WYgbKFmQUSPzbviqob2
l9vY3zQiroE1/nKOlX4dvpz6P+pdf7HExFxI6G0iVjVhAxaLREYusgUNClvcMXE2RjN358pJAB9y
2Rf0drj/+G34OL572I13h5j/EQgrG5n1Ekx4wlKzGLAlLFJiHMB8l5ihnl1jP5dzXChlWrzVaDOM
+7U2w37OVtXrKt7Fu1v8RxkXBVhK02QwJmQo3iFCgbE6HR3wLAmQJZjkdXq9AqxWikaJjeJrJTaD
XPOsu/H380sB1Q29EbXls/6AiABNkACvFpn20252DnSKyVPYJ2B/ryt1Ocz10q2AvtVh39lWm709
FvIeqPLu/ulpd7rJReEplDVtx6xzzoLI2GyPMVKAWgoQsVVGgnNmIr1Ewc/GXYjl1mJtGZ1zPvCN
nuZ8NUqSpYODRgVJeNyEL5j8F5oAx1PR2SwKXZy08zGaybeqsyZb4xaBidv7/Qw1pTEINWtJiveO
c41d4gnTqNoR2JCW6OixK9uUIl9cktOwrVBmWAu1W5X73d5/buplaC0P46xe3ViMjnjtrCiI9TXW
RwD6JxEwsS9CBiHsa2T7fjmXoeGS958bnUbeWehRq+O1PXhXAf4T00/Pj99PVyxMt9cB00pAVMCO
1f5WmTxxkYEVkAFtMs1Os//HKxZasVutte5pvSTO+E9X3z/N117NVtz9T29X9tzGzeTf9Vfw5aty
qna0uA9X5QHHwJ9iy/JGcpLdFxWPkc2KRHlFyrHz1283hhzORUqbqKJy2fIcQAMD9IXuX3uWZLK+
KGPGluCp8Bp2YGReKZAyUT3vKDO3/+SI21QccOa2nuiM88bS4ThR/HfHuVdtkN3+ukzL1sEAoTVm
rrVcWpYoyHiMLUouS9RYlM7wwBX1IaTnnm5gF4ddBXi3PQwKYmcwDEpFH6c4LnOhE+i2k9iPmw8Y
Q04bJPCbFAxRc9H7jg5Bijg8Eg+lS6qlfcEU3SE9h9wL/ee6oxcjo2cIPtpR1RbV+vfN/Zd1a+jA
erYYMtvhO2WJAn00EI/hEhE+pjS2IEKpUpYClu+zXFax7mpHLT5wYGTDB0+6ozBjQxscFWLAY5h+
2Tyizl17T2rfiQtlSMTrQkeL+bSMFT6BelUaWJ9JBMn1y/DTFgUHGGvric4Y+RBqz1JlxADzd1fX
55VG/3r+ctvfUMoHbwOYQkVEtYtTTHGhriyYk6kkzLionggT2bV/CL93e7tDuyZD9Qouit7GwwSl
prAS1sLEasRthhkxswxEMDBMzPDDiAQvoy1Kzh33iVDq5ROWQq/1QyZD77HeaOTYaBY9nIEvt9MN
Oo+bFC6x88cz6yyRZSqU1qi9c14YVLpU4M6ADeQdlUchEDot92irhrRZ2pzELOeP6EnYh89JSU/h
T87kA/3PUwFKhUHPWhSuAGJckUpuaZSRyaD7Ge6d1jqUzEdkI1zUO3X0obq7/1rdLG+buGaRLRvJ
ysRtWVARMYsBy8wQaQshlXSBJWPFeORnv70uMXY+Qsy0UULn7fQQjaaJlQJMcHQeOI+aCfoSylAW
jjkdBLr3xAE342iSB/ZGR0i4uRnDA9mx+YvLvQTSzNRQXvUvuIx0oMwDv9IGMdRMjIU3LBYxSK+0
AZqjejkptKflQNTX5ajUWQwz4OEipb2z1s3DdB/gzkgjakrLKRi2vEBMn4J7irnvHCvqCCtVSomp
o6etrXa7ZNERjrQwZAQGvq9ZguY4ecU1Hh5wK/LOsVrbEiGQiTYgEIMLWIwkFEkZHzxlDiTiP6fB
wo3uWM1sZKyV2n2Cq7OUerkFXINCbkERd8IBPwgBwS4UKRIiRFrLAifihXIL9r23iWZ0GMAEFxe6
t27qgoyNOauzuxvZCJispfEIokIxlzGowuDiATbCKKdMK330QLndbocuUekhXWrWD1v7r8fpw+bP
rXOvDo4VmDed+WwonVawWhRHJBFQlgqvnCmEVj6pyJM0x2XwvvEDCO3N/ZMulWqM9AZb+XH1x3K1
R3mSeQMmVXqYSlmISDG92yIsugTVzyJOui8tEfxAJP6+tR4Z8xEybqZ7hPEao6GbnOo9TRSr/Eiw
JEDlxqJPnurCRMNTQPCL9GLJqa3+O5SPROparO90MEIqWyHv3PsRM4h7jmCQvNApIKwbx/o7YEcI
zpITNMYQyyeZN7Z9xP6Bux36ZyOOB7jYD9OYYTHgBl1b5SMFJkTEaktJocEjPaJzEJh9ZSQNTHhY
Ice2U7vJLknWjJCEAQ7bWib5/VO/Xw1MoWzI0QCg4gsTYqEy6r1LJINIgValkmA6shB78JDd1rqE
TIeKE5vPyU6p+xovPzQ6k+K1+xL0WiUJKNMJw8ajNBhwn0BWJeKYgbv+nwrC2pPXGdVCjIxqIftZ
fNtczPX31eZz1QmGQA/nFgSy/gWPwWh0BC0/WWKBO6Z8gdD5hbRYdk9Slp44LP8r0q5O57scUjjM
+Wse6k6F5iNTMUhoDJ8fV78vV5+2ZOPJn85h9jrHbevEjAwFIXhsqWAbWOOAJ2G6FOWSc/88JLZu
Jwe2cPehzmBuxFCZhIvTHSvfxQffb5Y3LX8b2YnHKIyPJccTJY2FiwJwdZJSEaQ2oO1bo0M4Gnjc
arhLmB5ZcDeDWX5Trao6CGJ6e7m5f8iYQDXaJON1jLwJhlEhQCwyi4kZXBU2gM2EuNAge+Ar+Gc5
GUa6OnDgPnywO7TFcM5BDVIHnWBnF7niEQxrW4hBW/QsZ5enJDYjoVkELeTUY4hv0LiZnHYgzPQT
udq57UOxZN2aR0DkMKEKrkybHMA/9zACWBFlG2fBS+8FgwmHFQGEGV3YRIDPElMSEQXRLnS5658j
OALYz1BocsrFYjEsuPTTh/JN2973sDqjx5BtsGUQPj8feImiRIw8TkmsC7097ywFGz9ymoK3O4TT
YYkwvNgvsnRZzbEk668P8N/R6DuaDAY4UOCPmKHgQdJbAX9FFQ3TQsFafladqG5HB886W890hzOi
uHK2aKyAb3e3rHXkaesygdG7qBDeJSZE1mclAdOL0SJJqWICldBp2l0F7XZOun1NxwhotI/b6erT
ctES9GhYhSAS+hdBV6JbVTlgVlPJnaQpEsNYt/t2K73uh2on56TxR0wf5p+XX6v9FHCOW4HlrE+u
QaBj+mlCRUPhgZQHto9qGyg/WvcTvnuNnXT7NCOEVHTEEZCRFsYzUTUJsAkwPyAXQQV7Bmw1RhBt
vKREscD409VccvuHFch8u0O7nA8Pe7ni1WBP4AS8rctu1Rsi/5sxY3EboJWMQoerRAsXDGK/Uc9N
sM/K13m+1rAj5NB22d7uDFINE20tzwV2652SGUnXXjbMJY2oV8A1wV5GNAArQLIGLkARxGJwIb2Q
vbzvvUu0GuFWdtZ3gR/Em9BgXIFEIgUBQwtLOWF+cOIFFZiLIp0qnwBtOY41Ef5zFGcCSRwqDHw2
yDqZfm0XRNjVbRIwhFonFdTHSICrSom+sFzOFFGyNewFYaR35RM29dMlvNpPdIYwG3FVwMVFz6zq
RHA1qbu1iAChIF0KGcgRJj+ARu3B0paSG/iyCczbeByGst90m0BBhshKcJEtdtri7Z9301O5h8XF
aJdAwNanGC2ICEbBSdymtACRqwhHnKHQq2PQbqTb+4i9Dxf7AW67EKHPy93RjJSEYNgdLbUvJQNd
W5eIDEFBWS2BedCyZC4yAXL0RXAVdoFC/z47Hkj077PO+JgcClbBpv3UjR7IM80RewjynCMNQIIA
A5EIPWQxqaQsQMF1CPGcwLTmpQnP0xGehnc+BO0MNM/IyEBuZiOwNVkynF0gcPE2BFzb2u0WLcP6
aaXG9CkDv7myNAVxIlqtrNI2PU8qHeKFrQc6xPORIybB92hnl1+wUsIomJ1KsNLB/CkMwYweI2Jh
QLEvPGyBIMpIvf+noBH6VHaHyOTIEFnDZ+b3X763z1NoxgRzyMAxZC1xzA8T8Jf3oMGIoCQoUJSB
dnogXrrdXJeSITZZvthXYfK+Q8MzA71InaPUFVZ9ZKANC6w/yyyCvXIMX+G0ZIEaHv/yZq7vdUld
VCOk3oxpW60coL0JUkrQU6xjYIIEkOwkSLDZFGxPoTH9zCLmx5Mr+onsn84jbeqlGIYr54u7T44m
66fvncMT2hj5sOksDagiClSeU5SYZY6gLg7jqZga1HYaNNclZoi0BhenDSLdt+nD3pDcFi7loK0m
pQqGB4k8YvhkBDGiSRLBSEt46EVMtxrpdC6nQ+sBL45E6PVcS2CSYXkuYbIDJwKLAt2GomXLyyQL
n6IBgxIrXVFQFYx4GdfVyIO98czGxtPkIP7v4/RhutosV9UetzpXghVUgR1ekFzE2zEYAPoRSqE9
l0ZFS8bPNfrtdYmZDV0bWFGsN7kfz9rqY71HYCHVkAbOe8nACgFhrRHlGwgjsOxKpaSPzsRRZJyh
BGv3MT6z7Sc6o9BiZH3qmwZy8+v5cj3v+3B9UpQlHUHRwfSrhIojwjcaYPvBM1qGIP8pH+6evu64
boZGlzSD6JaaxNBGJM9nTzXIVj55MgjOSoDveoSv5y5nB4Fql4xNnoDaqcrjmQEjfRzSMgYPnnTJ
r0bGZOYjusZu++Q6mivMJMGabTkcC/9FAV5SShNxRdQYUqa5KRzGRYdkDfdRlMH4ZxfI6PV2pEZG
78nO+OyIhJQW2VUnGPduX8OU4GokpqQZzUSh55NH1J+kCaB7B825hIVZHsXdGAkJkbYaBg7BhheD
cHOsqnws3iAm65QNvCDKoR9QIfIKzLokoCOx4KgJ7uVM9y49hwLT2890Rr2QQyMeLs6PhVuky/Ir
ljzN3ieej5mygbz9Ha3kJDEDHdUVrH+VHGgv1psiSlCsaEmtti84BTt6Djy4vdsb9sjHvmF98M2B
u6FG/shKT+3RcMDYo0Tod4HuX+5oAVYbL2JQvNSGWGb+Bjb59maH9BtORkhH7WLWT4to5wbrrXtJ
Z/cSNZFRCh/IYUIJN1gEV4PqARtLRgFrQuiXP5tqk3Q4g2IkgdgqOkSms4rbBv4h3a9vrxffV9O7
5b5ujTplyM1lsjEH/CB6W8GtZGA0copJQ4wky8soehl9w9ZOuv0ObSglSF9XBtE7XVSbjMa+nucQ
h/oj1CunNIqqRCjCNASsXwO7BVhDIZgqVYzUhefl9kXoJu66ORzsMHjspEv96JAam+n3b626VoNa
oJ4jGKVFGOyEIBu8zmcWzBNLtSmBCYzDS38bqW+F/Q6FnrJiPqgmAebtcRhCTH1PoGd5TIEHWzWD
HgGdYAZnl3RI6mmo36MwhO0nTrr0DjmMykbAzjvKes5RnaJinGKYu7cgnnVC8FcC/6UBjMGgEqMv
5hwd8birqSAjJItmk8Xl9NPqfr1Zzs+r9Rr6WvfSlUjG2GCCe+VFAUohDENKX9iA9YCkA8uBce5t
L9zgeLs9EtkYiaoBaz/rh2iBQm1owAp3MiGoA3BpC2KowIg4r5lzitoXmtWm8w7JsxELRs3mbFCD
56Ha3DYeT5MzklHXCZZEV4KuJohhwCcoqDnUyII55YxXWitmnnJ6Ng13KBvB5YKLs+Z7v0m/1Rmp
vRijlDz3WJ6bYMFPLjWp4bjAEiCWJ6O1fiE88B4FHeqr6VBzUdWsf8bytnqYVQ/3a5TcO2cF9UIL
4RFqHatsmRI0NCdVUTIWOQOjm5XHw9h3jY4PYXe3Ta4miyG5mmoxAC8HoQGsOjsoanFhNTvltSAT
RAfMOmMCjVoqsUgOQRyM6AnsDCZeMJ1iR8nhyjp496Q7HDk2xr6/67cPYUtFc0SBoysZqJBRFSlh
uIyUmFtAVWET8HAODIU8r7D9vvVxyvf3u7SPBDbhxSOK8JjyX6IxgsXGyoBOeCYYKFage1gJbE8o
L7U3f/MbtZ/oDIENoQLhomgO5L6tbzetyuJ1TK5mAeSLE4gIC6q60gzLgII9ZazzWlBlbC+LsN1M
t/+RzBmYGN7PG6pmj59q9zpqpjktlOacUAamNgvAnL0VYKAaDcpRCZtTBKMdsHMin5fo1e7hUKbM
/onuGEYSnuFiNSznUKNL1QUdVFaqo7LM0zIVaOUA+YgaUbJUMO+dDsalqJ/l29k2frCyQ8aVOim/
be388/vF8mZ3YHL5eHcHrb6GQYXpLUzwHeigk9n3yf3mc/Uw+fJwj/UIYO1upg+fqoyRuvkMFsL2
xus8GZvp+vfrm/uH6y/LxetJjRdXl5O8nsPfm+r1hLQvrqvN9XrTXO92/FTz5O81D/9pjQpmIPeH
ANvLVTXWH7PM/j+HdPLL+QTTG9vz+zM8dbG6/T7BLEC8c38zaWTX68nV/WZ6+yMn5tSeTx6q9XIB
Cs2P5O0r8q8fJus/MO5kcX3/uLkGsh5XOYoaOlts30BV6l8/nPz6sNxMZ7cVNICdN82C2v1m8gfc
3FSrXZtH+thdaveDTWx7meRxH//55eznq4/uHfz2c/nm7OL95GT779V/fygPv3Z59j/5brj4+P5q
8mp1vyrm99Pbaj2vFj9MTn7c/xxooLm7++XEzTfLrwiRcPUwnePyHflhRJi3zX8mJ+HNZJ3ViMkS
lbn1aFdUiOYdAe9k5Mf6hQme74y+wzr9xG0lRmAU6EJ+zFuy1xvYTuS89c5Pl5Ofzq4mn+qoOiBx
fr8Y6WvfDz/0zqv6cBtnNtN2St7s+9n97J6ZwJKeLhZYbWECRKMobi2PH05Ah1lVtxOHVyYXq3k1
/n06ZJ27d+8uwtF1hICj/LyZ8eadT4/Th8XkC8712A9nTT96cvKh3u4T+ERf1tXkbHVz/+QSuLxy
4e3kzUf3czxInFStT2Pgnc10/vsTGwO0NNV+55fz6zwid3VkW0wEaWiTk5NfqxnGAJ3n6T/Uj9jT
xqCf6+vortxx2hg5Ndt3GCX4ztm5e1Mef0l2l/T19buz92/LCMvt4BQweyqbb0rxnavyt6vj06bt
qWhoE/jOx/dn4SIepQ50wjZtd5nDHdyc+UfJpp/8fbZ84K66wxp9B374fr3hvP0VNnV1cZXZ5fFZ
OFVvdrOutu/8x+QOOMe6s1HrDZqHwzUKlP07J/8HUEsDBBQAAgAIADiBJ0rusuFHqTkAAMq9AABB
ABwAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWNy
YXNoLWxvZy50eHRVVAkAA0yDcVjrgnFYdXgLAAEE9QEAAAQUAAAA5Ftbc9u4kn5e/Qo+TclJKONO
QJWTKl5zvJM4HtvJZGtqSkWRoM2NRCqUlMT767dB6kaKiu2ZeTt+iGkB7P660f2hG1CuqjLRy+XY
av8E6/niWheprm4rra0/GFVc/jm4ilf33anwc/6pnK3nenn+6cO7j+/D8xfn7fcHF6kuVnmW62p8
Wsvgk66WeVl0FaCBX6baun1Y6PbQZylswazhZbzKv+kzQFeBGuuqY9LVw+q+LGobMPpzcK2Xi7JY
5tNZS9wJiz8udWVdBF1MHOHBIIhX+vw2n3dgEYQdG2EbORYWY+SMkRwhyi0bSYQGH26sPjvfx4kF
Q58tjEYYj4Q1xPwtJpicAeBFWa2O3sJ44BZl8TAv10vr48cDjF7gYt9DLiCgyGYU4EQyRHYQCjfy
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
AAAEFAAAAFBLAwQKAAIAAAAFgSdKb8UlGS0AAAAtAAAAOQAcAGFuaW1hdGlvbnMvM2QvY2hhbmdl
LXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4dFVUCQAD6oJxWOqCcVh1eAsAAQT1
AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjQzOTE1LgpQSwME
CgACAAAABYEnSt25qB0tAAAALQAAADMAHABhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtbmFt
ZS1udWxsLWNyYXNoLWxvZy50eHRVVAkAA+qCcVjqgnFYdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2gg
bG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZTo0MzkxMy4KUEsDBAoAAAAAAAWBJ0oAAAAAAAAA
AAAAAAAHABwAY2FudmFzL1VUCQAD6oJxWE+DcVh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAABYEn
SgAAAAAAAAAAAAAAAA4AHABjYW52YXMvcGhpbGlwL1VUCQAD6oJxWE+DcVh1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAABYEnSgAAAAAAAAAAAAAAABQAHABjYW52YXMvcGhpbGlwL3Rlc3RzL1VUCQAD
6oJxWE+DcVh1eAsAAQT1AQAABBQAAABQSwMECgACAAAABYEnSgERoRotAAAALQAAADQAHABjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1jcmFzaC1sb2cudHh0VVQJAAPqgnFY
6oJxWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6
NDM5MTcuClBLAwQKAAAAAAAjgSdKAAAAAAAAAAAAAAAADAAcAGNvbXBvc2l0aW5nL1VUCQADIoNx
WE+DcVh1eAsAAQT1AQAABBQAAABQSwMECgACAAAABoEnSgs8PxAtAAAALQAAADsAHABjb21wb3Np
dGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4dFVUCQAD
64JxWOuCcVh1eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJU
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
jPS174cfuudFvbmNTzbTdkpe7fvZfXbXTGBITxcLrLYwAaJRFLeGxw8noMOsqpuJwyOTd6t5Nf5+
OmSduzdv3oWj44hivsqOfSqbez4+TO8Xky/4rMc+nDX96MnJ+3q6T+AVfVlXk7PV9d2jQ+Di0oXX
k1cf3M/xIHFStV6NgXs20/nnRyYG8KPa9/xyfpU5cpdHpsVEkPZQ+7WaYQzQeX78h/oRe9o4mZxc
XUV36Y7Txsip2d7DaL7n7Ny9Ko/fJLtD+urqzdnb12WE4XbwETB7Kpt3SvGey/K3y+OPTdtT0dAm
8J4Pb8/Cu3iUOtAJ27Td5hXu4OTMHyWbfvL72a4Dt9Ut1ug78OH78Yb8/Jll6vLdZV4ujz+FU7Wd
opLT7T3/NbmFlWPdmaj1BM3scIsCZX/Pyf8BUEsDBAoAAAAAACOBJ0oAAAAAAAAAAAAAAAAWABwA
Y29tcG9zaXRpbmcvYW5pbWF0aW9uL1VUCQADIoNxWE+DcVh1eAsAAQT1AQAABBQAAABQSwMECgAC
AAAABoEnSl3CmQwtAAAALQAAAEUAHABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29t
cG9zaXRlZC1pbnNpZGUtaGlkZGVuLWNyYXNoLWxvZy50eHRVVAkAA+uCcVjrgnFYdXgLAAEE9QEA
AAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZTo0MzkyMS4KUEsDBBQA
AgAIADiBJ0pG3FS7rjkAANS9AAA1ABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1i
YWNraW5nLWNyYXNoLWxvZy50eHRVVAkAA0yDcVgig3FYdXgLAAEE9QEAAAQUAAAA5Ftbc9u4kn5e
/go+TclJKONOQJWTKl5zvJM4HtvJZGtqSkWRkM2NRCqUlMT767dB6kaKiu2ZeTt+iGkB7P660f2h
G1CuqjLVy+XIbv+E6/niWheZrm4rre0/GFVC/WldJav77lT4Of9UztZzvTz/9OHdx/fR+Yvz9vvW
RaaLVT7NdTU6rcX6pKtlXhZdBcgKykzbtw8L3R76LIUjmD24TFb5N30G6CpQY191TLp6WN2XRW0D
QX9a13q5KItlPpm1xJ2w+ONSV/ZF2MXEEbasMFnp89t83oFFEHYdhB3k2liMkBxhPKTMtR0kEbI+
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
VAkAA+uCcVhPg3FYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAAaBJ0ozFh0PLQAAAC0AAABEABwA
Y29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNy
YXNoLWxvZy50eHRVVAkAA+uCcVjrgnFYdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5k
IGZvciBEdW1wUmVuZGVyVHJlZTo0MzkyMy4KUEsDBAoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAUABwA
Y29tcG9zaXRpbmcvYmFja2luZy9VVAkAA+uCcVhPg3FYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAA
AAaBJ0rlk4oCLQAAAC0AAAA6ABwAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmls
aXR5LWZsaXAtY3Jhc2gtbG9nLnR4dFVUCQAD64JxWOuCcVh1eAsAAQT1AQAABBQAAABObyBjcmFz
aCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjQzOTI5LgpQSwMECgAAAAAABoEnSgAAAAAA
AAAAAAAAABMAHABjb21wb3NpdGluZy9jYW52YXMvVVQJAAPrgnFYT4NxWHV4CwABBPUBAAAEFAAA
AFBLAwQKAAIAAAAGgSdKOKUltC0AAAAtAAAAPwAcAGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVy
YXRlZC1jYW52YXMtY29tcG9zaXRpbmctY3Jhc2gtbG9nLnR4dFVUCQAD64JxWOuCcVh1eAsAAQT1
AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjQzOTMxLgpQSwME
CgAAAAAABoEnSgAAAAAAAAAAAAAAABUAHABjb21wb3NpdGluZy9jbGlwcGluZy9VVAkAA+uCcVhP
g3FYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAAaBJ0pWcaG3LQAAAC0AAABRABwAY29tcG9zaXRp
bmcvY2xpcHBpbmcvYm9yZGVyLXJhZGl1cy1vdmVyZmxvdy1oaWRkZW4tc3RhY2tpbmctY29udGV4
dC1jcmFzaC1sb2cudHh0VVQJAAPrgnFY64JxWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBm
b3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6NDM5MzMuClBLAwQKAAAAAAAGgSdKAAAAAAAAAAAAAAAA
GwAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL1VUCQAD64JxWE+DcVh1eAsAAQT1AQAABBQA
AABQSwMECgACAAAABoEnSuQNLLMtAAAALQAAAD0AHABjb21wb3NpdGluZy9jb2xvci1tYXRjaGlu
Zy9pbWFnZS1jb2xvci1tYXRjaGluZy1jcmFzaC1sb2cudHh0VVQJAAPrgnFY64JxWHV4CwABBPUB
AAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6NDM5MzUuClBLAwQK
AAAAAAAGgSdKAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL2NvbHVtbnMvVVQJAAPsgnFYT4Nx
WHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAGgSdKitmosC0AAAAtAAAAPwAcAGNvbXBvc2l0aW5n
L2NvbHVtbnMvYW5jZXN0b3ItY2xpcHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9nLnR4dFVUCQAD
7IJxWOyCcVh1eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJU
cmVlOjQzOTM3LgpQSwMECgAAAAAABoEnSgAAAAAAAAAAAAAAABwAHABjb21wb3NpdGluZy9jb250
ZW50cy1vcGFxdWUvVVQJAAPsgnFYT4NxWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAGgSdKgPQ2
ui0AAAAtAAAAOQAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAt
Y3Jhc2gtbG9nLnR4dFVUCQAD7IJxWOyCcVh1eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91
bmQgZm9yIER1bXBSZW5kZXJUcmVlOjQzOTM5LgpQSwMECgAAAAAABoEnSgAAAAAAAAAAAAAAABsA
HABjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9VVAkAA+yCcVhPg3FYdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAgAAAAaBJ0qBnfIpLQAAAC0AAAAyABwAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUv
YW5pbWF0aW5nLWNyYXNoLWxvZy50eHRVVAkAA+yCcVjsgnFYdXgLAAEE9QEAAAQUAAAATm8gY3Jh
c2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZTo0Mzk0MS4KUEsDBAoAAAAAAAaBJ0oAAAAA
AAAAAAAAAAAUABwAY29tcG9zaXRpbmcvY3VsbGluZy9VVAkAA+yCcVhPg3FYdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAgAAAAaBJ0rvSXYqLQAAAC0AAAA0ABwAY29tcG9zaXRpbmcvY3VsbGluZy9jbGVh
ci1maXhlZC1pZnJhbWUtY3Jhc2gtbG9nLnR4dFVUCQAD7IJxWOyCcVh1eAsAAQT1AQAABBQAAABO
byBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjQzOTQzLgpQSwMECgAAAAAABoEn
SgAAAAAAAAAAAAAAABYAHABjb21wb3NpdGluZy9mcmFtZXNldHMvVVQJAAPsgnFYT4NxWHV4CwAB
BPUBAAAEFAAAAFBLAwQKAAIAAAAGgSdKM+F/LS0AAAAtAAAAPgAcAGNvbXBvc2l0aW5nL2ZyYW1l
c2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVudC1jcmFzaC1sb2cudHh0VVQJAAPsgnFY7IJx
WHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6NDM5
NDcuClBLAwQKAAAAAAAGgSdKAAAAAAAAAAAAAAAAFQAcAGNvbXBvc2l0aW5nL2dlb21ldHJ5L1VU
CQAD7IJxWE+DcVh1eAsAAQT1AQAABBQAAABQSwMECgACAAAABoEnSjnM4SctAAAALQAAAD4AHABj
b21wb3NpdGluZy9nZW9tZXRyeS9hYnMtcG9zaXRpb24taW5zaWRlLW9wYWNpdHktY3Jhc2gtbG9n
LnR4dFVUCQAD7IJxWOyCcVh1eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1
bXBSZW5kZXJUcmVlOjQzOTQ5LgpQSwMEFAACAAgAJIEnSsRxWQfBAgAAWggAAA0AHABlcnJvcl9s
b2cudHh0VVQJAAMjg3FYbYJxWHV4CwABBPUBAAAEFAAAAMVVXU/bMBR936+46gubtMZJm37ljbVs
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
HgMKAAIAAADFgCdKdEM0pAcAAAAHAAAAFQAYAAAAAAABAAAApIG6bgAAX3dwdF9jZXJ0cy9zZXJp
YWwub2xkVVQFAANxgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAw4AnSgAAAAAAAAAAAAAA
AA4AGAAAAAAAAAAAAKSBEG8AAGFjY2Vzc19sb2cudHh0VVQFAANtgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAI4EnSgAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BWG8AAGFjY2Vzc2liaWxp
dHkvVVQFAAMig3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOIEnSujcfvWjOQAAqb4AAEsA
GAAAAAAAAQAAAKSBoG8AAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1jcmFzaC13aXRoLWR5
bmFtaWMtaW5saW5lLWNvbnRlbnQtY3Jhc2gtbG9nLnR4dFVUBQADTINxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADiBJ0oKLTQnsDkAAMm9AABAABgAAAAAAAEAAACkgcipAABhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdlbWVudC1jcmFzaC1sb2cudHh0VVQF
AANMg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI4EnSm/Oj/6qOQAAyr0AADcAGAAAAAAA
AQAAAKSB8uMAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLXJlcGFyZW50LWNyYXNo
LWxvZy50eHRVVAUAAyKDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAGgSdKAAAAAAAAAAAA
AAAAEgAYAAAAAAAAABAA7UENHgEAYWNjZXNzaWJpbGl0eS9tYWMvVVQFAAPrgnFYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAOIEnSp/EUIOkOQAAwr0AADEAGAAAAAAAAQAAAKSBWR4BAGFjY2Vz
c2liaWxpdHkvbWFjL2FiYnItYWNyb255bS10YWdzLWNyYXNoLWxvZy50eHRVVAUAA0yDcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA4gSdKdcmO7aI5AADKvQAAKQAYAAAAAAABAAAApIFoWAEA
YWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNza2V5LWNyYXNoLWxvZy50eHRVVAUAA0yDcVh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAjgSdKAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UFtkgEAYWNj
ZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvVVQFAAMig3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAOIEnSp+B8aSpOQAAt70AADkAGAAAAAAAAQAAAKSBxZIBAGFjY2Vzc2liaWxpdHkvbWFj
L3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTEtY3Jhc2gtbG9nLnR4dFVUBQADTINxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADiBJ0qk8kfrqDkAAMq9AAA5ABgAAAAAAAEAAACkgeHMAQBhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxvZy50eHRVVAUA
A0yDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4gSdKazIJGqU5AADKvQAAOQAYAAAAAAAB
AAAApIH8BgIAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMy1jcmFz
aC1sb2cudHh0VVQFAANMg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAI4EnSgAAAAAAAAAA
AAAAAB8AGAAAAAAAAAAQAO1BFEECAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS9VVAUA
AyKDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4gSdKOq+75ak5AADOvQAAUwAYAAAAAAAB
AAAApIFtQQIAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2Vy
LWluZm8tY29udGVudGVkaXRhYmxlLWNyYXNoLWxvZy50eHRVVAUAA0yDcVh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAA4gSdKbVzcJq45AADKvQAATAAYAAAAAAABAAAApIGjewIAYWNjZXNzaWJp
bGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFyZWEtY3Jh
c2gtbG9nLnR4dFVUBQADTINxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADiBJ0rz4FTuqzkA
ANS9AABNABgAAAAAAAEAAACkgde1AgBhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFs
dWUtY2hhbmdlLXVzZXItaW5mby10ZXh0ZmllbGQtY3Jhc2gtbG9nLnR4dFVUBQADTINxWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQQnwAgBh
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL1VUBQAD64JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADiBJ0qXCbyepjkAALi9AABZABgAAAAAAAEAAACkgV3wAgBhY2Nlc3NpYmlsaXR5L3RleHQt
bWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252ZXJzaW9uLWhhbmct
Y3Jhc2gtbG9nLnR4dFVUBQADTINxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADiBJ0rusuFH
qTkAAMq9AABBABgAAAAAAAEAAACkgZYqAwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQt
bWFya2VyLXByZXZpb3VzLW5leHQtY3Jhc2gtbG9nLnR4dFVUBQADTINxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAAWBJ0oAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQbpkAwBhbmltYXRpb25z
L1VUBQAD6oJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAWBJ0oAAAAAAAAAAAAAAAAOABgA
AAAAAAAAEADtQf9kAwBhbmltYXRpb25zLzNkL1VUBQAD6oJxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAAAWBJ0pvxSUZLQAAAC0AAAA5ABgAAAAAAAEAAACkgUdlAwBhbmltYXRpb25zLzNkL2No
YW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNoLWxvZy50eHRVVAUAA+qCcVh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAAAFgSdK3bmoHS0AAAAtAAAAMwAYAAAAAAABAAAApIHnZQMAYW5p
bWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5hbWUtbnVsbC1jcmFzaC1sb2cudHh0VVQFAAPqgnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABYEnSgAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1B
gWYDAGNhbnZhcy9VVAUAA+qCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAFgSdKAAAAAAAA
AAAAAAAADgAYAAAAAAAAABAA7UHCZgMAY2FudmFzL3BoaWxpcC9VVAUAA+qCcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAAFgSdKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEKZwMAY2FudmFz
L3BoaWxpcC90ZXN0cy9VVAUAA+qCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAFgSdKARGh
Gi0AAAAtAAAANAAYAAAAAAABAAAApIFYZwMAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMu
cmVhZG9ubHktY3Jhc2gtbG9nLnR4dFVUBQAD6oJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ACOBJ0oAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQfNnAwBjb21wb3NpdGluZy9VVAUAAyKDcVh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAGgSdKCzw/EC0AAAAtAAAAOwAYAAAAAAABAAAApIE5
aAMAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxv
Zy50eHRVVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4gSdKJB1FGqw5AADKvQAA
RwAYAAAAAAABAAAApIHbaAMAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1p
bi1jb21wb3NpdGVkLWxheWVyLWNyYXNoLWxvZy50eHRVVAUAA0yDcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAjgSdKAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UEIowMAY29tcG9zaXRpbmcv
YW5pbWF0aW9uL1VUBQADIoNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAAaBJ0pdwpkMLQAA
AC0AAABFABgAAAAAAAEAAACkgVijAwBjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29t
cG9zaXRlZC1pbnNpZGUtaGlkZGVuLWNyYXNoLWxvZy50eHRVVAUAA+uCcVh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAA4gSdKRtxUu645AADUvQAANQAYAAAAAAABAAAApIEEpAMAY29tcG9zaXRp
bmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1iYWNraW5nLWNyYXNoLWxvZy50eHRVVAUAA0yDcVh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAAGgSdKAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UEh3gMA
Y29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9VVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAAAGgSdKMxYdDy0AAAAtAAAARAAYAAAAAAABAAAApIF73gMAY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxvZy50eHRV
VAUAA+uCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAGgSdKAAAAAAAAAAAAAAAAFAAYAAAA
AAAAABAA7UEm3wMAY29tcG9zaXRpbmcvYmFja2luZy9VVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAAAGgSdK5ZOKAi0AAAAtAAAAOgAYAAAAAAABAAAApIF03wMAY29tcG9zaXRpbmcv
YmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtY3Jhc2gtbG9nLnR4dFVUBQAD64JxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQRXg
AwBjb21wb3NpdGluZy9jYW52YXMvVVQFAAPrgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA
BoEnSjilJbQtAAAALQAAAD8AGAAAAAAAAQAAAKSBYuADAGNvbXBvc2l0aW5nL2NhbnZhcy9hY2Nl
bGVyYXRlZC1jYW52YXMtY29tcG9zaXRpbmctY3Jhc2gtbG9nLnR4dFVUBQAD64JxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQQjhAwBjb21w
b3NpdGluZy9jbGlwcGluZy9VVAUAA+uCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAGgSdK
VnGhty0AAAAtAAAAUQAYAAAAAAABAAAApIFX4QMAY29tcG9zaXRpbmcvY2xpcHBpbmcvYm9yZGVy
LXJhZGl1cy1vdmVyZmxvdy1oaWRkZW4tc3RhY2tpbmctY29udGV4dC1jcmFzaC1sb2cudHh0VVQF
AAPrgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABoEnSgAAAAAAAAAAAAAAABsAGAAAAAAA
AAAQAO1BD+IDAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL1VUBQAD64JxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAgAAAAaBJ0rkDSyzLQAAAC0AAAA9ABgAAAAAAAEAAACkgWTiAwBjb21wb3Np
dGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xvci1tYXRjaGluZy1jcmFzaC1sb2cudHh0VVQF
AAPrgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABoEnSgAAAAAAAAAAAAAAABQAGAAAAAAA
AAAQAO1BCOMDAGNvbXBvc2l0aW5nL2NvbHVtbnMvVVQFAAPsgnFYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAABoEnSorZqLAtAAAALQAAAD8AGAAAAAAAAQAAAKSBVuMDAGNvbXBvc2l0aW5nL2Nv
bHVtbnMvYW5jZXN0b3ItY2xpcHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9nLnR4dFVUBQAD7IJx
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAcABgAAAAAAAAAEADt
QfzjAwBjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQFAAPsgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgACAAAABoEnSoD0NrotAAAALQAAADkAGAAAAAAAAQAAAKSBUuQDAGNvbXBvc2l0aW5n
L2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtY3Jhc2gtbG9nLnR4dFVUBQAD7IJxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaBJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQfLk
AwBjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9VVAUAA+yCcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAAAGgSdKgZ3yKS0AAAAtAAAAMgAYAAAAAAABAAAApIFH5QMAY29tcG9zaXRpbmcvY29u
dGVudHMtc2NhbGUvYW5pbWF0aW5nLWNyYXNoLWxvZy50eHRVVAUAA+yCcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAGgSdKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHg5QMAY29tcG9zaXRp
bmcvY3VsbGluZy9VVAUAA+yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAGgSdK70l2Ki0A
AAAtAAAANAAYAAAAAAABAAAApIEu5gMAY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1p
ZnJhbWUtY3Jhc2gtbG9nLnR4dFVUBQAD7IJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAaB
J0oAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQcnmAwBjb21wb3NpdGluZy9mcmFtZXNldHMvVVQF
AAPsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAABoEnSjPhfy0tAAAALQAAAD4AGAAAAAAA
AQAAAKSBGecDAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVu
dC1jcmFzaC1sb2cudHh0VVQFAAPsgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABoEnSgAA
AAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BvucDAGNvbXBvc2l0aW5nL2dlb21ldHJ5L1VUBQAD7IJx
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAAaBJ0o5zOEnLQAAAC0AAAA+ABgAAAAAAAEAAACk
gQ3oAwBjb21wb3NpdGluZy9nZW9tZXRyeS9hYnMtcG9zaXRpb24taW5zaWRlLW9wYWNpdHktY3Jh
c2gtbG9nLnR4dFVUBQAD7IJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACSBJ0rEcVkHwQIA
AFoIAAANABgAAAAAAAEAAACkgbLoAwBlcnJvcl9sb2cudHh0VVQFAAMjg3FYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAOIEnSntl17FhAwAArw0AABEAGAAAAAAAAQAAAKSBuusDAGZ1bGxfcmVz
dWx0cy5qc29uVVQFAANMg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAw4AnSlsEWA6iBQAA
TRAAAAoAGAAAAAAAAQAAAKSBZu8DAGh0dHBkLmNvbmZVVAUAA22CcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADDgCdKAAAAAAAAAAAAAAAAGgAYAAAAAAAAAAAApIFM9QMAcHl3ZWJzb2NrZXQu
d3MubG9nLWVyci50eHRVVAUAA26CcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADDgCdKAAAA
AAAAAAAAAAAAGgAYAAAAAAAAAAAApIGg9QMAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUA
A26CcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADEgCdKAAAAAAAAAAAAAAAAGwAYAAAAAAAA
AAAApIH09QMAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQFAANvgnFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAxIAnSgAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBSfYDAHB5d2Vic29j
a2V0Lndzcy5sb2ctb3V0LnR4dFVUBQADb4JxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADmB
J0pFJh050ScAAMuqAAAMABgAAAAAAAEAAACkgZ72AwByZXN1bHRzLmh0bWxVVAUAA02DcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA4gSdKWL5YLskDAADXCgAACgAYAAAAAAABAAAApIG1HgQA
c3RhdHMuanNvblVUBQADTINxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMqAJ0rDhnNl9gQA
ALwaAAAZABgAAAAAAAEAAACkgcIiBAB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAN7gnFY
dXgLAAEE9QEAAAQUAAAAUEsFBgAAAABPAE8ACyEAAAsoBAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298293</attachid>
            <date>2017-01-07 16:45:55 -0800</date>
            <delta_ts>2017-01-08 01:49:39 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews105 for mac-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>262209</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
lF6q7jufr+/jLLjbI9tv0qEN5uAfzQO6Sq7jJzvUj7ik234YzPX9fe5u3Qna7CW/3v5k+M7VtXtf
HH9Jptvg/v7D1a+/FDks0cMfZ98PzAe+c1v88/Y4aXiMsqNN4zt3v16Fj/lR6qRM1sFT5KQHN3T8
U2pP2wTmbcNvntpld4i4dDz/CTu8/Xgb2fLxWbhUm20tce3Ed/5n8gTcZpVs7nZTx+GI/RqN71z8
P1BLAwQKAAAAAAAbgSdKAAAAAAAAAAAAAAAACwAcAGFuaW1hdGlvbnMvVVQJAAMWg3FYRINxWHV4
CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAbgSdKAAAAAAAAAAAAAAAADgAcAGFuaW1hdGlvbnMvM2Qv
VVQJAAMWg3FYRINxWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADsgCdKUSUFeUMAAABGAAAAOQAc
AGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4
dFVUCQADvIJxWLyCcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokF
BTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3MbXU4wIAUEsDBBQAAgAIABuBJ0pvXnDY
QwAAAEYAAAA7ABwAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9u
LWNyYXNoLWxvZy50eHRVVAkAAxaDcVgWg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jL
L81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNzWy0OMCAFBLAwQU
AAIACADsgCdKNdwfcEMAAABGAAAAMwAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1l
LW51bGwtY3Jhc2gtbG9nLnR4dFVUCQADvIJxWLyCcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDI
yU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3MTXV4wIA
UEsDBBQAAgAIABuBJ0qOsSXUQwAAAEYAAAA0ABwAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxl
LXBhcmFtZXRlcnMtY3Jhc2gtbG9nLnR4dFVUCQADFoNxWBaDcVh1eAsAAQT1AQAABBQAAADzy1dI
LkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3
NTLW4wIAUEsDBAoAAAAAAOyAJ0oAAAAAAAAAAAAAAAAHABwAY2FudmFzL1VUCQADvIJxWESDcVh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAA7IAnSgAAAAAAAAAAAAAAAA4AHABjYW52YXMvcGhpbGlw
L1VUCQADvIJxWESDcVh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAHIEnSgAAAAAAAAAAAAAAABQA
HABjYW52YXMvcGhpbGlwL3Rlc3RzL1VUCQADF4NxWESDcVh1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgA7IAnSuwZaGNDAAAARgAAADQAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFk
b25seS1jcmFzaC1sb2cudHh0VVQJAAO8gnFYvIJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJ
T1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjcxM9HjAgBQ
SwMEFAACAAgAHIEnSty8W21DAAAARgAAADUAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZh
cy5yZWZlcmVuY2UtY3Jhc2gtbG9nLnR4dFVUCQADF4NxWBeDcVh1eAsAAQT1AQAABBQAAADzy1dI
LkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3
NTbS4wIAUEsDBBQAAgAIADOBJ0rrU0HF/jcAAHm8AAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LkRldmVsb3BtZW50LTI3NTY4LWNyYXNoLWxvZy50eHRVVAkAA0KDcVhCg3FYdXgLAAEE
9QEAAAQUAAAA7Ftrb9vIkv28/BX8NJCTUO4Hu9kUcnPBZ653/IJlJ7MYDASKbMa8kUQNRSX2v99q
Ug+SopwokwUGuCsEkqxuVp2qrsfpJnNb5LFcrUZ6+xXn82G0XM7k8KOc/pqV6sPLF6VclENffpGz
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
HJBU+89JCTyzmc6+nViAlF6q7jOfr+/jW3C3R5bfpEObmlz8o35AV8l1/GSH+hGX9Ho3uScX9/e5
u3UnaLOX/Hp7yPCZq2v3vjj+kEyXwf39h6tffylymKKHP86+H3gf+Mxt8c/b46ThNsqONo3P3P16
FT7mR6mTMpkHT5GTHlzQzetVe9om8N5afvPUTLtDxKXj+U/Y4e3H28iWj7+FS90ua0lU+8z/TJ6A
26yTxd0s6rhiwJjcztH4zMX/A1BLAwQUAAIACAAzgSdK2HBtmxE4AABrvQAAOwAcAGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yNzU3Ni1jcmFzaC1sb2cudHh0VVQJAANC
g3FYQoNxWHV4CwABBPUBAAAEFAAAAOxbW2/byJJ+Xv4KPg3kJJT7wm42hZwMeM3xjm+w7MwsBgOB
IpsxTyRRQ1GJ/e+3mtSFpCgnymSBAWYFQ6LUzaqvquvWxfZtkcdytRrp7Vecz4fRcjmTw1/l9Jes
VB9evijlohz68rOc5cs5XOu/E4tZ/A/tNiofuzTgdf4hn63ncnX+4eby4So4f3W+IZcW0Vx+yYtP
5x9kscryxercOf/t1hvL4nMGgM5fAvC0jM8316vzqyi+GZ9/I17tIoH3LM1kMfoOcbUN2K6kHJmv
9QG8D/GQvj7TvDyR+v3zUrYn/ia4wU19cB2V2Wd5BkorlA5vO0vw888/67/jP7SHlSz0C7/LjCGs
aX5UyvP7bN7hQBC2DIQNZOmYj5AYITSkjOoGEghpN2O9TwDQoA5Dv+kYDTEecn2A2XtMMDnT7uQy
L8qDuzDWnEW+eJ7n65X+8NDAGAiEPZtgw3UINSzhUiOwbdcgFkYWBng+45qmKeS68yX6JPVxtoil
7uZ5OdIZRQjpKxnni2SlaePnVSnn+gWsw8ciK5+VpkoZlxUUuYimM5lomldEq0eZ6PePhYySHRKk
6362WkZl/Kj/uZZr0NR+ledRtjDK6gZNC55iuVRE20sW/OZNXMefOJ4XjMf6YHzxfhy8/3DWmK/W
ebduvwR315OL6w/O5QXc5Pt36q6o1NET6rwaFK5BoBZH7+budhxMrm/uL8L/0bQPV/qd/Kj8Q7+W
UaGjkWYY73RNTZ9M7oPf7g98bsMEI2rFBC6M5g+mUvDvapr45Q+9MJ7Oiy9P+vjqX97Nr39Dd9Xe
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
1sFT5KQHN3T8U2pPW2aziw2/eWqX3SHiOuNh/xk7vP14G9ny8a9wqTfbWuLaie/8T/YE3GaVbO52
U8fh2P0aje9c/D9QSwMECgAAAAAAHIEnSgAAAAAAAAAAAAAAAAwAHABjb21wb3NpdGluZy9VVAkA
AxeDcVhEg3FYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOyAJ0q1py5hQwAAAEYAAAA7ABwAY29t
cG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxvZy50eHRV
VAkAA7yCcVi8gnFYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5
qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNzEz1+MCAFBLAwQUAAIACAAcgSdKbsDWaUMA
AABGAAAARwAcAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9z
aXRlZC1sYXllci1jcmFzaC1sb2cudHh0VVQJAAMXg3FYF4NxWHV4CwABBPUBAAAEFAAAAPPLV0gu
SizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjc1
NtHjAgBQSwMECgAAAAAAHIEnSgAAAAAAAAAAAAAAABYAHABjb21wb3NpdGluZy9hbmltYXRpb24v
VVQJAAMXg3FYRINxWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADsgCdKYrwf3UMAAABGAAAARQAc
AGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4t
Y3Jhc2gtbG9nLnR4dFVUCQADvIJxWLyCcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsv
zUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3MTfU4wIAUEsDBBQA
AgAIAByBJ0oKOcxgQwAAAEYAAAA1ABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1i
YWNraW5nLWNyYXNoLWxvZy50eHRVVAkAAxeDcVgXg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5Q
yMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNzW20OMC
AFBLAwQKAAAAAAAcgSdKAAAAAAAAAAAAAAAAIAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvVVQJAAMXg3FYRINxWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADsgCdKvhQW2kMAAABG
AAAARAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0
eS0zZC1jcmFzaC1sb2cudHh0VVQJAAO8gnFYvIJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJ
T1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjcxN9XjAgBQ
SwMEFAACAAgAHIEnSgtQCPNDAAAARgAAAFgAHABjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmls
aXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaGllcmFyY2hpY2FsLXRyYW5zZm9ybS1jcmFzaC1sb2cu
dHh0VVQJAAMXg3FYF4NxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6
iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjc1MdDjAgBQSwMECgAAAAAAHIEnSgAA
AAAAAAAAAAAAAB0AHABjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL1VUCQADF4NxWESDcVh1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAHIEnStrtDNNDAAAARgAAAE4AHABjb21wb3NpdGluZy9i
YWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3ItYWxwaGEtd2l0aC1vcGFjaXR5LWNyYXNo
LWxvZy50eHRVVAkAAxeDcVgXg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJF
Csn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNzG31OMCAFBLAwQKAAAAAAAc
gSdKAAAAAAAAAAAAAAAAGAAcAGNvbXBvc2l0aW5nL2JhY2tncm91bmRzL1VUCQADF4NxWESDcVh1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAHIEnSlp4+IZDAAAARgAAAEQAHABjb21wb3NpdGluZy9i
YWNrZ3JvdW5kcy9maXhlZC1iYWNrZ3JvdW5kLW9uLWRlc2NlbmRhbnQtY3Jhc2gtbG9nLnR4dFVU
CQADF4NxWBeDcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3sTDW4wIAUEsDBAoAAAAAAByBJ0oAAAAAAAAA
AAAAAAAUABwAY29tcG9zaXRpbmcvYmFja2luZy9VVAkAAxeDcVhEg3FYdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAO2AJ0qG0PGBQwAAAEYAAAA6ABwAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFj
ZS12aXNpYmlsaXR5LWZsaXAtY3Jhc2gtbG9nLnR4dFVUCQADvYJxWL2CcVh1eAsAAQT1AQAABBQA
AADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78g
F8i2MjI3sTDX4wIAUEsDBBQAAgAIAByBJ0qEa9n8QwAAAEYAAABGABwAY29tcG9zaXRpbmcvYmFj
a2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWluLTNkdHJhbnNmb3JtZWQtY3Jhc2gtbG9nLnR4dFVU
CQADF4NxWBeDcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjI3NbHU4wIAUEsDBAoAAAAAAO2AJ0oAAAAAAAAA
AAAAAAATABwAY29tcG9zaXRpbmcvY2FudmFzL1VUCQADvYJxWESDcVh1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgA7YAnSlHLwD1DAAAARgAAAD8AHABjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0
ZWQtY2FudmFzLWNvbXBvc2l0aW5nLWNyYXNoLWxvZy50eHRVVAkAA72CcVi9gnFYdXgLAAEE9QEA
AAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUs
NSe/IBfItjIyN7E01OMCAFBLAwQKAAAAAADtgCdKAAAAAAAAAAAAAAAAFQAcAGNvbXBvc2l0aW5n
L2NsaXBwaW5nL1VUCQADvYJxWESDcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA7YAnSo1jyTpD
AAAARgAAAFEAHABjb21wb3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhp
ZGRlbi1zdGFja2luZy1jb250ZXh0LWNyYXNoLWxvZy50eHRVVAkAA72CcVi9gnFYdXgLAAEE9QEA
AAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUs
NSe/IBfItjIyN7E01eMCAFBLAwQKAAAAAAAcgSdKAAAAAAAAAAAAAAAAGwAcAGNvbXBvc2l0aW5n
L2NvbG9yLW1hdGNoaW5nL1VUCQADF4NxWESDcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA7YAn
SuO3TTlDAAAARgAAAD0AHABjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xvci1t
YXRjaGluZy1jcmFzaC1sb2cudHh0VVQJAAO9gnFYvYJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizO
UMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjexNNfj
AgBQSwMEFAACAAgAHIEnSush+05DAAAARgAAADgAHABjb21wb3NpdGluZy9jb2xvci1tYXRjaGlu
Zy9wZGYtaW1hZ2UtbWF0Y2gtY3Jhc2gtbG9nLnR4dFVUCQADF4NxWBeDcVh1eAsAAQT1AQAABBQA
AADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78g
F8i2MjI3NTXX4wIAUEsDBAoAAAAAAByBJ0oAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvY29s
dW1ucy9VVAkAAxiDcVhEg3FYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAO2AJ0rpmtMzQwAAAEYA
AAA/ABwAY29tcG9zaXRpbmcvY29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1j
cmFzaC1sb2cudHh0VVQJAAO9gnFYvYJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/N
SwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjextNTjAgBQSwMEFAAC
AAgAHIEnSuEMZURDAAAARgAAADYAHABjb21wb3NpdGluZy9jb2x1bW5zL2NsaXBwZWQtaW4tcGFn
aW5hdGVkLWNyYXNoLWxvZy50eHRVVAkAAxiDcVgYg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5Q
yMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNzW11OMC
AFBLAwQKAAAAAAAcgSdKAAAAAAAAAAAAAAAAHAAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1
ZS9VVAkAAxeDcVhEg3FYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAByBJ0oA4zBIQwAAAEYAAAA5
ABwAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cu
dHh0VVQJAAMXg3FYF4NxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6
iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjc1NdLjAgBQSwMEFAACAAgAHIEnSsCA
hcDEAgAAWggAAA0AHABlcnJvcl9sb2cudHh0VVQJAAMYg3FYXIJxWHV4CwABBPUBAAAEFAAAAMVV
XW/aMBR936+44qWbNOIkBBLy1kG3stGuKnR9QKgyyYW4je3Idkb77+eEQllb2qJOmngIsq/POT6+
H5MRNfCdCnBD8Dqx246DyAk6vu92wHe9cAoTrfN4SZWwfwuWgh8GbjSFw2PX67rdGDw/dFz78+Ig
aMUuaFS/UUGCyrA5S6hBSCVqOP05BiaSvEwRLN+gD8uMJRlwapLM7psM12cF5fhh8pyydhh0/e4L
yrorZVHYimEgmIlhhFozKaBHLQ0wDUIaSKSYs0WpMIVJxkQVNhreR9aB01387ZYfvM7/P5zptNre
Whkv+FWhcC7VTWzvyxJ8otH1Otajw6K6LfGdwPEi+Hgh2O0nODs+I22n7bQiGLKZQuuNjfCdcNu3
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
fZnhU7GdEetuwHQiKL/WmGDlr4V/lUWGiUkQ49B04ebYlYiz3SkZcaEmPCVsomAI0zVhK/qvlXOj
fDhgIRy7+rTbEsJlzkdwmg5+vx2448n1YHw+PP2GvoxHvf5gGzjSyp23yEb3Z48l45+pUBmOda+B
3n7oHh29yw3vbeHMhHu18ea4tcUHdW+sN6gHS0JsmRKPBtQzt2y5kIokKBVc5bdPB5Cr3qohpPD+
jxZqq73UDZvz9sF5cHT/5AdwCf4vFrZ6xX8BUEsDBAoAAAAAALmAJ0oAAAAAAAAAAAAAAAAaABwA
cHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAkAA12CcVhdgnFYdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAAAAALmAJ0oAAAAAAAAAAAAAAAAaABwAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAkA
A12CcVhdgnFYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALmAJ0oAAAAAAAAAAAAAAAAbABwAcHl3
ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQJAANegnFYXoJxWHV4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAAC5gCdKAAAAAAAAAAAAAAAAGwAcAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUCQAD
XoJxWF6CcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgANIEnSkUmHTnRJwAAy6oAAAwAHAByZXN1
bHRzLmh0bWxVVAkAA0ODcVhDg3FYdXgLAAEE9QEAAAQUAAAAzX35d9vIkfDv/ivachKQEQ/JM85O
RIl+jsaOtevrSfIm+TRaPZAERYxAgguAOjLR//5VVd8HQFJ23tvZrG0C3dXV1dV1daH68PnPn4/P
//HlLZtV82z47LCsHrJk+GyUTx7Yb88Y/DePi+t0ccD2BvRzmi+q7jSep9nDAXufZLdJlY7jDivj
RdktkyKdGu3K9J/JAdvfX1aDZ4/PONQh+6MFuZsl0+qA/bi8H5hPq3wpHkLH2b7oYkL9EaG6PfZ7
r5I59Vnao4zyqsrnMI3eD6JBVRws8qrVK5JylVVlt8jv2qyaiG53s7RKuuUyHsNYi/yuiJdNvQ6m
aVFW3XzarR6WSRhGMY8zDmNCMOw+bdGpSu6rblUAOafQ44Bl+V1SjOMyEV1Fs2U8maSLa5jx8l7R
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
vAAASwAYAAAAAAABAAAApIGYNQAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNyYXNoLXdp
dGgtZHluYW1pYy1pbmxpbmUtY29udGVudC1jcmFzaC1sb2cudHh0VVQFAANCg3FYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAM4EnSgi+dpIbOAAAnL0AAEAAGAAAAAAAAQAAAKSBMG4AAGFjY2Vz
c2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50LWNyYXNoLWxvZy50
eHRVVAUAA0KDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAAgSdKAAAAAAAAAAAAAAAAEgAY
AAAAAAAAABAA7UHFpgAAYWNjZXNzaWJpbGl0eS9tYWMvVVQFAAPfgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAM4EnSpGAGSIROAAAqrwAADEAGAAAAAAAAQAAAKSBEacAAGFjY2Vzc2liaWxp
dHkvbWFjL2FiYnItYWNyb255bS10YWdzLWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAzgSdK/TSTlRQ4AACqvAAAKQAYAAAAAAABAAAApIGN3wAAYWNjZXNz
aWJpbGl0eS9tYWMvYWNjZXNza2V5LWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAAgSdKAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UEEGAEAYWNjZXNzaWJp
bGl0eS9tYWMvc2VsZWN0LXRleHQvVVQFAAPfgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
M4EnSoIZlgMcOAAAtbwAADkAGAAAAAAAAQAAAKSBXBgBAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVj
dC10ZXh0L3NlbGVjdC10ZXh0LTEtY3Jhc2gtbG9nLnR4dFVUBQADQoNxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADOBJ0pUdmX3FTgAAJy9AAA5ABgAAAAAAAEAAACkgetQAQBhY2Nlc3NpYmls
aXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAAgSdKAAAAAAAAAAAAAAAAHwAYAAAAAAAAABAA7UFz
iQEAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL1VUBQAD34JxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADOBJ0qW5AwUIDgAAJy9AABMABgAAAAAAAEAAACkgcyJAQBhY2Nlc3NpYmls
aXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0YXJlYS1jcmFz
aC1sb2cudHh0VVQFAANCg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAM4EnSmEHuZMHOAAA
bL0AAE0AGAAAAAAAAQAAAKSBcsIBAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1
ZS1jaGFuZ2UtdXNlci1pbmZvLXRleHRmaWVsZC1jcmFzaC1sb2cudHh0VVQFAANCg3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAAIEnSgAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BAPsBAGFj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvVVQFAAPfgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAM4EnSikK+cEQOAAAqbwAAFkAGAAAAAAAAQAAAKSBVPsBAGFjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvY2hhcmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1j
cmFzaC1sb2cudHh0VVQFAANCg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAM4EnSk7IArwa
OAAAnL0AAEEAGAAAAAAAAQAAAKSB9zMCAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1t
YXJrZXItcHJldmlvdXMtbmV4dC1jcmFzaC1sb2cudHh0VVQFAANCg3FYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAG4EnSgAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BjGwCAGFuaW1hdGlvbnMv
VVQFAAMWg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAG4EnSgAAAAAAAAAAAAAAAA4AGAAA
AAAAAAAQAO1B0WwCAGFuaW1hdGlvbnMvM2QvVVQFAAMWg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA7IAnSlElBXlDAAAARgAAADkAGAAAAAAAAQAAAKSBGW0CAGFuaW1hdGlvbnMvM2QvY2hh
bmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4dFVUBQADvIJxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIABuBJ0pvXnDYQwAAAEYAAAA7ABgAAAAAAAEAAACkgc9tAgBhbmlt
YXRpb25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tY3Jhc2gtbG9nLnR4dFVU
BQADFoNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOyAJ0o13B9wQwAAAEYAAAAzABgAAAAA
AAEAAACkgYduAgBhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtbmFtZS1udWxsLWNyYXNoLWxv
Zy50eHRVVAUAA7yCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAbgSdKjrEl1EMAAABGAAAA
NAAYAAAAAAABAAAApIE3bwIAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLXBhcmFtZXRlcnMt
Y3Jhc2gtbG9nLnR4dFVUBQADFoNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOyAJ0oAAAAA
AAAAAAAAAAAHABgAAAAAAAAAEADtQehvAgBjYW52YXMvVVQFAAO8gnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAA7IAnSgAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BKXACAGNhbnZhcy9waGls
aXAvVVQFAAO8gnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAHIEnSgAAAAAAAAAAAAAAABQA
GAAAAAAAAAAQAO1BcXACAGNhbnZhcy9waGlsaXAvdGVzdHMvVVQFAAMXg3FYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA7IAnSuwZaGNDAAAARgAAADQAGAAAAAAAAQAAAKSBv3ACAGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5LWNyYXNoLWxvZy50eHRVVAUAA7yCcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAcgSdK3LxbbUMAAABGAAAANQAYAAAAAAABAAAApIFwcQIA
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVmZXJlbmNlLWNyYXNoLWxvZy50eHRVVAUA
AxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAzgSdK61NBxf43AAB5vAAAOwAYAAAAAAAB
AAAApIEicgIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTI3NTY4LWNy
YXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAzgSdK5MZzxxI4
AAB3vQAAOwAYAAAAAAABAAAApIGVqgIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVs
b3BtZW50LTI3NTcwLWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAzgSdKTJA4Pxo4AABRvwAAOwAYAAAAAAABAAAApIEc4wIAY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LkRldmVsb3BtZW50LTI3NTcyLWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAzgSdKQAX9MA44AABsvQAAOwAYAAAAAAABAAAApIGrGwMAY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTI3NTc0LWNyYXNoLWxvZy50eHRV
VAUAA0KDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAzgSdK2HBtmxE4AABrvQAAOwAYAAAA
AAABAAAApIEuVAMAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTI3NTc2
LWNyYXNoLWxvZy50eHRVVAUAA0KDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAcgSdKAAAA
AAAAAAAAAAAADAAYAAAAAAAAABAA7UG0jAMAY29tcG9zaXRpbmcvVVQFAAMXg3FYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA7IAnSrWnLmFDAAAARgAAADsAGAAAAAAAAQAAAKSB+owDAGNvbXBv
c2l0aW5nL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1jcmFzaC1sb2cudHh0VVQF
AAO8gnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHIEnSm7A1mlDAAAARgAAAEcAGAAAAAAA
AQAAAKSBso0DAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9z
aXRlZC1sYXllci1jcmFzaC1sb2cudHh0VVQFAAMXg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAHIEnSgAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1Bdo4DAGNvbXBvc2l0aW5nL2FuaW1hdGlv
bi9VVAUAAxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsgCdKYrwf3UMAAABGAAAARQAY
AAAAAAABAAAApIHGjgMAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQt
aW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0VVQFAAO8gnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAHIEnSgo5zGBDAAAARgAAADUAGAAAAAAAAQAAAKSBiI8DAGNvbXBvc2l0aW5nL2FuaW1h
dGlvbi9hbmltYXRpb24tYmFja2luZy1jcmFzaC1sb2cudHh0VVQFAAMXg3FYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAHIEnSgAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BOpADAGNvbXBvc2l0
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAAMXg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA7IAnSr4UFtpDAAAARgAAAEQAGAAAAAAAAQAAAKSBlJADAGNvbXBvc2l0aW5nL2JhY2tmYWNl
LXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQFAAO8gnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHIEnSgtQCPNDAAAARgAAAFgAGAAAAAAAAQAAAKSB
VZEDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1o
aWVyYXJjaGljYWwtdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAUAAxeDcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAcgSdKAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UEqkgMAY29tcG9zaXRp
bmcvYmFja2dyb3VuZC1jb2xvci9VVAUAAxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAc
gSdK2u0M00MAAABGAAAATgAYAAAAAAABAAAApIGBkgMAY29tcG9zaXRpbmcvYmFja2dyb3VuZC1j
b2xvci9iYWNrZ3JvdW5kLWNvbG9yLWFscGhhLXdpdGgtb3BhY2l0eS1jcmFzaC1sb2cudHh0VVQF
AAMXg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAHIEnSgAAAAAAAAAAAAAAABgAGAAAAAAA
AAAQAO1BTJMDAGNvbXBvc2l0aW5nL2JhY2tncm91bmRzL1VUBQADF4NxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAByBJ0paePiGQwAAAEYAAABEABgAAAAAAAEAAACkgZ6TAwBjb21wb3NpdGlu
Zy9iYWNrZ3JvdW5kcy9maXhlZC1iYWNrZ3JvdW5kLW9uLWRlc2NlbmRhbnQtY3Jhc2gtbG9nLnR4
dFVUBQADF4NxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAByBJ0oAAAAAAAAAAAAAAAAUABgA
AAAAAAAAEADtQV+UAwBjb21wb3NpdGluZy9iYWNraW5nL1VUBQADF4NxWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAO2AJ0qG0PGBQwAAAEYAAAA6ABgAAAAAAAEAAACkga2UAwBjb21wb3NpdGlu
Zy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHktZmxpcC1jcmFzaC1sb2cudHh0VVQFAAO9gnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHIEnSoRr2fxDAAAARgAAAEYAGAAAAAAAAQAAAKSB
ZJUDAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbi0zZHRyYW5zZm9y
bWVkLWNyYXNoLWxvZy50eHRVVAUAAxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADtgCdK
AAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UEnlgMAY29tcG9zaXRpbmcvY2FudmFzL1VUBQADvYJx
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO2AJ0pRy8A9QwAAAEYAAAA/ABgAAAAAAAEAAACk
gXSWAwBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLWNy
YXNoLWxvZy50eHRVVAUAA72CcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADtgCdKAAAAAAAA
AAAAAAAAFQAYAAAAAAAAABAA7UEwlwMAY29tcG9zaXRpbmcvY2xpcHBpbmcvVVQFAAO9gnFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7YAnSo1jyTpDAAAARgAAAFEAGAAAAAAAAQAAAKSBf5cD
AGNvbXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRpdXMtb3ZlcmZsb3ctaGlkZGVuLXN0YWNr
aW5nLWNvbnRleHQtY3Jhc2gtbG9nLnR4dFVUBQADvYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAByBJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQU2YAwBjb21wb3NpdGluZy9jb2xvci1t
YXRjaGluZy9VVAUAAxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADtgCdK47dNOUMAAABG
AAAAPQAYAAAAAAABAAAApIGimAMAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29s
b3ItbWF0Y2hpbmctY3Jhc2gtbG9nLnR4dFVUBQADvYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAByBJ0rrIftOQwAAAEYAAAA4ABgAAAAAAAEAAACkgVyZAwBjb21wb3NpdGluZy9jb2xvci1t
YXRjaGluZy9wZGYtaW1hZ2UtbWF0Y2gtY3Jhc2gtbG9nLnR4dFVUBQADF4NxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAByBJ0oAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQRGaAwBjb21wb3Np
dGluZy9jb2x1bW5zL1VUBQADGINxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO2AJ0rpmtMz
QwAAAEYAAAA/ABgAAAAAAAEAAACkgV+aAwBjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9yLWNs
aXBwZWQtaW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAUAA72CcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAcgSdK4QxlREMAAABGAAAANgAYAAAAAAABAAAApIEbmwMAY29tcG9zaXRpbmcv
Y29sdW1ucy9jbGlwcGVkLWluLXBhZ2luYXRlZC1jcmFzaC1sb2cudHh0VVQFAAMYg3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAHIEnSgAAAAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BzpsDAGNv
bXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9VVAUAAxeDcVh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAcgSdKAOMwSEMAAABGAAAAOQAYAAAAAAABAAAApIEknAMAY29tcG9zaXRpbmcvY29udGVu
dHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cudHh0VVQFAAMXg3FYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAHIEnSsCAhcDEAgAAWggAAA0AGAAAAAAAAQAAAKSB2pwDAGVycm9y
X2xvZy50eHRVVAUAAxiDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAzgSdKpQdnSaADAADh
DgAAEQAYAAAAAAABAAAApIHlnwMAZnVsbF9yZXN1bHRzLmpzb25VVAUAA0KDcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAC4gCdKWwRYDqIFAABNEAAACgAYAAAAAAABAAAApIHQowMAaHR0cGQu
Y29uZlVUBQADXIJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALmAJ0oAAAAAAAAAAAAAAAAa
ABgAAAAAAAAAAACkgbapAwBweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUBQADXYJxWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAALmAJ0oAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgQqqAwBw
eXdlYnNvY2tldC53cy5sb2ctb3V0LnR4dFVUBQADXYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAALmAJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgV6qAwBweXdlYnNvY2tldC53c3MubG9n
LWVyci50eHRVVAUAA16CcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC5gCdKAAAAAAAAAAAA
AAAAGwAYAAAAAAAAAAAApIGzqgMAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAANegnFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANIEnSkUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSB
CKsDAHJlc3VsdHMuaHRtbFVUBQADQ4NxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADOBJ0qF
U8LQ6AMAAEcMAAAKABgAAAAAAAEAAACkgR/TAwBzdGF0cy5qc29uVVQFAANCg3FYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAvYAnSmfP46btBAAARRsAABkAGAAAAAAAAQAAAKSBS9cDAHdwdHdr
X3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA2WCcVh1eAsAAQT1AQAABBQAAABQSwUGAAAAAFMAUwCg
IwAAi9wDAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298295</attachid>
            <date>2017-01-07 17:00:32 -0800</date>
            <delta_ts>2017-01-08 01:49:43 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews121 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>419719</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
AAAAAAAAAAAADgAcAGFjY2Vzc2liaWxpdHkvVVQJAAMkg3FYWIRxWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACADggCdKY87nrkMAAABGAAAAKAAcAGFjY2Vzc2liaWxpdHkvYXJpYS1jdXJyZW50LWNy
YXNoLWxvZy50eHRVVAkAA6SCcVikgnFYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81L
AZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MDS11OMCAFBLAwQUAAIA
CAACgSdKBcxwakMAAABGAAAAMQAcAGFjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVz
LWNyYXNoLWxvZy50eHRVVAkAA+SCcVjkgnFYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jL
L81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MDI00uMCAFBLAwQU
AAIACAAkgSdKNkzNqEMAAABGAAAALgAcAGFjY2Vzc2liaWxpdHkvYXR0YWNobWVudC1lbGVtZW50
LWNyYXNoLWxvZy50eHRVVAkAAySDcVgkg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jL
L81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MLI00+MCAFBLAwQK
AAAAAAAlgSdKAAAAAAAAAAAAAAAAHAAcAGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9VVAkA
AyWDcVhYhHFYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOCAJ0o1MEGyQwAAAEYAAAA2ABwAYWNj
ZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FiYnJldmlhdGlvbi1jcmFzaC1sb2cudHh0VVQJAAOk
gnFYpIJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ
3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDA0M9TjAgBQSwMEFAACAAgAA4EnStlkeW1DAAAARgAA
AEsAHABhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWNjZXNzaWJpbGl0eS1hcmlhLXRhYmxl
LWNoaWxkcmVuLWNyYXNoLWxvZy50eHRVVAkAA+WCcVjlgnFYdXgLAAEE9QEAAAQUAAAA88tXSC5K
LM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MDI0
0+MCAFBLAwQUAAIACAAlgSdKCwuRo0MAAABGAAAATAAcAGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVs
YXRvci9hY2Nlc3NpYmlsaXR5LWNyYXNoLWluLWF4Y29udGFpbmVyLWNyYXNoLWxvZy50eHRVVAkA
AyWDcVglg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrh
qUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MLK01OMCAFBLAwQKAAAAAAAlgSdKAAAAAAAAAAAA
AAAAGgAcAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvVVQJAAMlg3FYWIRxWHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACADggCdKW+TFsUMAAABGAAAAWQAcAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvY2hhcmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1jcmFz
aC1sb2cudHh0VVQJAAOkgnFYpIJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGS
RQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDA0M9bjAgBQSwMEFAACAAgA
A4EnSrew/W5DAAAARgAAAEEAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQtY3Jhc2gtbG9nLnR4dFVUCQAD5YJxWOWCcVh1eAsAAQT1AQAABBQAAADz
y1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2
sjQwMjTR4wIAUEsDBBQAAgAIACWBJ0rQgqzvQwAAAEYAAABKABwAYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1yYW5nZS1zdGFsZS1ub2RlLWNyYXNoLWNyYXNoLWxvZy50eHRV
VAkAAyWDcVglg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5
qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MDYw0uMCAFBLAwQKAAAAAAAlgSdKAAAAAAAA
AAAAAAAACwAcAGFuaW1hdGlvbnMvVVQJAAMlg3FYWIRxWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAA
AAAigSdKAAAAAAAAAAAAAAAADgAcAGFuaW1hdGlvbnMvM2QvVVQJAAMfg3FYWIRxWHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACADhgCdKZz0/C0MAAABGAAAAOQAcAGFuaW1hdGlvbnMvM2QvY2hhbmdl
LXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4dFVUCQADpYJxWKWCcVh1eAsAAQT1
AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8l
tSw1J78gF8i2sjQwNDfQ4wIAUEsDBBQAAgAIAAKBJ0pE38oLogAAACwBAAA7ABwAYW5pbWF0aW9u
cy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRVVAkAA+OC
cVjjgnFYdXgLAAEE9QEAAAQUAAAAxc6xDoIwEIDh3ae4zYnWYiCRVXCRaEJiHIwhpZzQBLjmWjS8
vfgUTv8/fkVVXasMTtoO2EIgYNQtbOXNI3vZzHZoGwqytA1rXmRJnZe51d1EPlhToSMOXhoahXZu
QHHH5mzDL0eaAk5B5PjGgdy4fh3vVBqpOFJJpA5Juk9q/HgVK2FY+36bwaNgngjiJ1wI/Gx6eK0w
IIbWMppAvGT/0m2+UEsDBBQAAgAIAMeBJ0ruKavOfCwAAKHFAAA1ABwAYW5pbWF0aW9ucy8zZC9y
ZXBsYWNlLWZpbGxpbmctdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAkAA1WEcVgfg3FYdXgLAAEE
9QEAAAQUAAAA5Fxbc9s4ln5e/Qo+dclJYONGAFRl0sVrj6cT22XZSW91dakoErQ5kUQ1JSXx/Po9
IHUhKTkddbJrV60fZIUED77v4FxBOFdlkejFYmC1f5JiehrP5xN9+kGPf82X5pdfzJZ6tjwN9Cc9
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
f0xdeHN/PSVnxbKw0mUCZ440z96TwYfd0wte120/DFRazX/gyXW6SlJk3P2HcXFZfyaD5rztH6TN
JG1C6Hn5klTpV4KZd+fF68ZcrvG4ckgnDYiPd+TjeEqe8sIEiMgIrk6dTob0ogYng0uTkIQofBfk
pkjzvoHJelQOGUzU1dVNeOQF2b47dCf1lxri6RWDFL6gEdL+47C6D48MNmc9AjR7KXMyLh6XXeJS
VzZpdTdV4SW5uFe3+sCwuGjQCvq4q5L0+1FOsynOlx3E58nMYKKmB/kMxtWk1froRCaG1fv7ELs+
HMBjNtNqqo6NioGAP9kS10aIq/H1ZaThvR94hDP0NxBMCISYRn9NjyHO6VBs+3ANxP31OLzRh/Em
vM3tCzPhySOI+Ifw4ENn0uDE0vg8k0W+WK5+HYJxLxsQvz9rpzdTs3Icw30oNvNDSE4Gg38BUEsD
BBQAAgAIAOGAJ0q6C5C9QwAAAEYAAAAzABwAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5h
bWUtbnVsbC1jcmFzaC1sb2cudHh0VVQJAAOlgnFYpYJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizO
UMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDA0s9Dj
AgBQSwMEFAACAAgAA4EnSoW3QXtDAAAARgAAADQAHABhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1
bGUtcGFyYW1ldGVycy1jcmFzaC1sb2cudHh0VVQJAAPlgnFY5YJxWHV4CwABBPUBAAAEFAAAAPPL
V0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLay
NDAyMtDjAgBQSwMEFAACAAgAJYEnSmL+IetDAAAARgAAAC4AHABhbmltYXRpb25zL2FkZGVkLXdo
aWxlLXN1c3BlbmRlZC1jcmFzaC1sb2cudHh0VVQJAAMlg3FYJYNxWHV4CwABBPUBAAAEFAAAAPPL
V0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLay
NDA2MNHjAgBQSwMECgAAAAAA4YAnSgAAAAAAAAAAAAAAAAcAHABjYW52YXMvVVQJAAOlgnFYWIRx
WHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADhgCdKAAAAAAAAAAAAAAAADgAcAGNhbnZhcy9waGls
aXAvVVQJAAOlgnFYWIRxWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAigSdKAAAAAAAAAAAAAAAA
FAAcAGNhbnZhcy9waGlsaXAvdGVzdHMvVVQJAAMfg3FYWIRxWHV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACADhgCdKjP/0DUMAAABGAAAANQAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJl
ZmVyZW5jZS1jcmFzaC1sb2cudHh0VVQJAAOlgnFYpYJxWHV4CwABBPUBAAAEFAAAAPPLV0guSizO
UMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDA0N9Xj
AgBQSwMEFAACAAgAx4EnSsRsmX5/LAAAoMUAAD4AHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNs
ZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtY3Jhc2gtbG9nLnR4dFVUCQADVYRxWB+DcVh1eAsAAQT1
AQAABBQAAADkXFlz28aWfh7+CjylKNst9YZeWL5OYc3VjS2pRMnOVCrFArFIuCYJBiRt6/76OQ1w
AUDKMWPPSFWjB4oGGqe/7/RZGy1flUWcLhYDq/0TF9PTaD6fpKcf0vGv+dL88orZMp0tT/30Uzop
5lP4bv2uMVXyj95VtLzvyoCfs/fFZDVNF2fvL9/evgvOXpytxWVlNE0/F+XHs9+uvGFafsoBxdnX
Zv0yj8++EVXvPIHPPMvTcvA3SPXep+UiL2ZdPgLzl1YfPk/JKXt50vOKJLVuHuZpe+BvSiDBrf5F
tMw/pSegmtJo6qqj6Em0msX3yWiRT63flSY2/qN3nS7mxWyRjyctmccuxu0iLa1zv4vfxqTX86Nl
enaTTzugKSYSYYKwtIgYYDXA8pRyaSGsMO5dDq1DOnkXxRbc+s0i+JSQU2H1if0LwZifAJN5US73
niKk58yK2cO0WC2s29sGxjAQfkiUQtRWPiJc+Mi1PY1Cn3qODpVwiNfr9Qxyy/kcfUytYT6LU8st
iuXAsjnG2FqkcTFLFr3e8GGxTKfWOajorsyXD0b5yzReVlCSfBGBgpNezyujxX2aWDf3ZRolWyjY
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
8rKV6IBVl8nmc1aivqX8siyqiksDQ5kU32aAq9nLcn5J6LZsmxYkhb/LrFNYZOUMWGNV3h74P+4e
/tOACjBgxsME2yDI9Y3HGffZ7405+Dgh99nnFn7xXfEuf/5FkI1gzXpBtvSyzIpLMl3DGfuO2e7Q
npBNViznQKjv6PUFffOWFD+AerP5bP1azmBar7lJWAeDzXctLuD0ffN28GmzLJMn2DMbM3jdrT1k
V+QHVAL1V32eGKMqao6DXexGIdW2Pvp9HN9PH9UN/HQfXY3vbslg9+/07w/RsUYP439MXXj3eDsl
F/k6t9J1AneONJu/JYN3+6+3eV1X/TBQabn8jjfX6SZJkXAPP8bFdf0zGTT3bf8kbSZps4VeFi9J
mX4hmHl3mb/uzOUanyuHdNJo8f6BvB9PyecsNwEi5gS5U2eQIb2qm5PBtUlIQhSuBbnL06xvYrKe
lUMGE3VzcxeeWCCbO0O3mpXt1y0+v2KQwhc0Qjr8HFaP4ZHB7q5HAGcvRUbG+WLdRS51ZRNXD1MV
XpOrR3Wvj0yLiwauYIyHMkm/naQ0m+J+2bf4OJkZSNT0KJ3BvJq42l6dyMSQev8YYj+GA3DMZlpN
1alZMRDwJxVybWxxM769jjSs+5FPOEN/14IJgS2m0V/TkytIh6IawzUtHm/H4Z0+DjfhbWpfmQ1P
FiDiH4ODD50au5wMCuPzTFbZar35dayNe92g3d/ftdO7qeEcp2Af8t3+EBIgH/wLUEsDBBQAAgAI
AMeBJ0rTTFoaeywAAKDFAAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50LTkwMjI3LWNyYXNoLWxvZy50eHRVVAkAA1WEcVhVhHFYdXgLAAEE9QEAAAQUAAAA5FxbU9vI
tn4+/hV6mjJJGvqmvriyM6XrbPYkQGFI5tTUlEuSJdCObXlkOwn715/Vki+SbDLxJOdA1eEBjNRa
/X2r17XVcFUWSbpYDKz2V1JMT6P5fJKefkjjX/Ol+eEVs2U6W5766ad0Usyn8Nn6XWNK5R+9q2h5
35UBX2fvi8lqmi7O3l++vX0XnL04W4vLymiafi7Kj2e/XXnDtPyUA4qzr836ZZ6cfSOq3vkYvudZ
npaDv0Gq9z4tF3kx6/IRmL+0+vD9lJyylyc9rxin1s3DPG0P/E0JJLjVv4iW+af0BFRTGk1ddRQ9
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
QwAAAEYAAAA7ABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVk
LWNyYXNoLWxvZy50eHRVVAkAA6WCcVilgnFYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jL
L81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MDQ31+MCAFBLAwQU
AAIACADHgSdK00xaGnssAACgxQAARwAcAGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNo
YW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1jcmFzaC1sb2cudHh0VVQJAANVhHFY44JxWHV4CwAB
BPUBAAAEFAAAAORcW1PbyLZ+Pv4VepoySRr6pr64sjOl62z2JEBhSObU1JRLkiXQjm15ZDsJ+9ef
1ZIvkmwy8STnQNXhAYzUWv19q9e11XBVFkm6WAys9ldSTE+j+XySnn5I41/zpfnhFbNlOlue+umn
dFLMp/DZ+l1jSuUfvatoed+VAV9n74vJapouzt5fvr19F5y9OFuLy8pomn4uyo9nv115w7T8lAOK
s6/N+mWenH0jqt75GL7nWZ6Wg79Bqvc+LRd5MevyEZi/tPrw/ZScspcnPa8Yp9bNwzxtD/xNCSS4
1b+Ilvmn9ARUUxpNXXUUPYlWs+R+PFrkU+t3pSkRf/Su08W8mC3yeNKSeexi3C7S0jr3u/htTHo9
P1qmZzf5tAOaYiIRJghLi4gBlgNsnwotLIQVxr3LoXVIJ++ixIJbv1kEnxJyKqw+sX8hGPMTYDIv
yuXeU4T0nFkxe5gWq4V1e9vAGAbCD4lSiNrKR4QLH7m2p1HoU8/RoRIO8Xq9nkFuOZ+jj6k1zGdJ
arlFsRxYNscYW4s0KWbjRa83fFgs06l1Diq6K/Plg1H+Mk2WFZRxvohAweNezyujxX06tm7uyzQa
b6Fgy/LzxTxaJvfWn6t0BararcA0ymdoWT3Q6wVfknRupLbNIPjNG7mOP3I8LxgOrf7w/Jdh8Mv7
k8Z4YztbW/g1uL4YnV+8d96ew0O+f22eipYW/oI7Xw0JF8CoNaN3eX01DEYXlzfn4X/3eu/fWdfp
HYxcWBdpVFp40EPojdUzw0ejm+C3mz1vXU9CcILHKXxAjQvmd2z9boapX/+wSvTlrPz8xRq++4d3
+eHJHL3nwKA8iSqNDOdpAk6fwLpnRTmtLg7AS8t0mE9Xk2hZlBbD7FRZyAIhAGRg5Vf3xSy17IVV
T2TdpGA6JRi+db2CGGL8JAcbBwvHYN7cYdw+2T5fr/pWBphnZRhgQWvTGgy+0ZRw180N7Nbi/NfW
GghhjIkxUdZ63GBwnc7GaTlcPkDgGBTztDRk/9E/dP+nn06slxaFAHWdZl4BJNPx6f1Aq5MeOQ5E
rGwJZDuTBJPULM1gsEiX1YSPoHi1e7C64udZlkKkTFKDj2FiAJrxl/G/wXUBIiHypEePw4gzJeN4
N5VfJKsaXpkm0STpIFxr0LuPZncVDtu2rf7modNkPh8QRfBJjx0LQ2eaHoKRwPIv05rpTZmmfTMr
hL/OrJTYMCs/ftbxQfLjfOxCsJym3qo02Wlz53wWGn+tQNi6y1woMBL7OAyUx5QkOwyV/Mo4NrL7
H25CYxvZ1bJ8vYf1TW2vxBjs+WwBLg6WDR+WZXW7cnKwDWrTk544DhphKpXJvno+QMqAymEQQ/ic
7Wzj9votSIeZwXTjopi82n/yhYEKBYLVXy3zCSSegbTZSU8eiQsUlo33pb8torHBBaKm+RISedRP
7iGyV6BevLJWUDnczSCfTYrZnUGiWQeIOhqIVORxIFk+y02UM7/ns7v+uFhBYq3CC224TT18bUKw
TPpYFEJm/HEU0+ghTs0vwXS+fKhMVxPRYU7wsXNG3H58zsUyKpdr2u8gjEPhVqzKZO04jB0mb2OD
hBznPzbVUdzxnw0M0P+yJgx1W79xq44Zyobp6H79aD02HU5kYlMSr5PhYAA/1w5bx6kP+fLe4DCc
60jRGHkV3aUvXnWgVi5BFGhkI6vWBSWAjR2HLeMiVlZnxu2Hfsv+q2+vuoM9wwIiBtTkgAS8fLF2
6SrnCFt1zYYfiZAphvcR1sr7boA2rZK2SYVCADj7KHCQCHUdVrYTrluSzeL+ID0qu6tFcRxQZWuW
WJ+KfGydX3mDAWTj8SR9B1Bh6tfrn4s2Ba9J4dUBlq9qgf1D/F+cfB/pN/0Kpw8pFZzvp0PTv/jf
nL8KuQry9T+bmgI74VA0EHmU9sHFGM9qxUPJPVu3TVAy1HXsWnh/sYTqdjQig8FqlkNtO5pD+m6q
4ZW1GzJOs2g1WY7G6QSAt4a9sd5UIYIA/Gk6LcqHAZUY0gTUt8fhjiL5FdyXs41e6hJL2o35qJkP
8tK/ok/RMCnz+XIvKncCMxWaZrBcdfGymr0tivlgAJW3aT0+QL9TzcJMKtjMYlOIxxQfOQujmH5l
FmNUVYxlpqKvR3hhFWOZhula2cZMF0LJP64bpj0ljkWkGCSo0cgLr28v3l5eXo3OhyPPefv2/OKX
0eXtzejmcuSMhpe3116AR1fBdXh5/W4U3l54N+eXF6NRpdkepcfNqsa2TupZawZ+Mazy6QJXNbjo
UXakxCRSoikRflSFgepRfqworrnVFLRtNF9anOIebcXhrrA9QyVSYoUt9PvFcC2yv/10YpWr2Ttw
Cyg+YYlTs1sz+MN4t+Q9Ko6cR2R2/JV5jFwJqoX4MMljaLtPxw/wYX8Xryk2TRWXibZGMH5UxP9O
RqaNNZrAoAl1pCgRZdoyktZCiNI9qr+649WliccZs7m1QQGFXn+302DqlNPpdAC9EPRsuEIHyMaP
wGuhi2MNhmlVpZ6Btu3uyVe7ejPD+iaaRjOIN2XV3cP1RbUtNfqYlrN00obQ1ktqQ7y0PqafgO/o
z2JhpsdVe96QfoBDG7/gCYut0Wb8aHpXjj5H+XIEljWqZBsD0FVLfYxcO40gxbfl5rNPxce02lhQ
VXN8nEClZEdgvS9ivJ9vFU8Hf0OTdkohDpgdqD+r8WW6XJWzlkbX0ub1nC1xLWkZEbZU1mbg6POf
W5SEKrZR5LeL44yT2sBastiWMft/x5j/HcYER8B4kU4r8zaFVDQ5xDf5K1NMoHyPhDWLZsVikqZz
I0RvPSR5+fKUHA4drZRhR9Cyxo3yZ3mfL9YWDb2jEWx8sFFCJfdlMSugWFmVVUh/3agCd6Oqe6/J
5BUw23xNoH5q1t648r5jKoxYKZLVxelfIf4WWAbQdzLrcBJQQ62hcE7qXbCjCEIiJFY8jSaTIhkM
jI3czqA/CaPJ4kAdC4M+vt6OHpotpuTdapl+efNTE/LfJVZvHtWbWtAA90ejqRE+iqNFOiBa1jts
x/GzOd7x+2caQY24SCKI8Hf/9/wMMQ59dFSW0cOAcFXvyx1HiI15lxDYQ1JvVg431CrjUF0VMlLv
uB3nA5o3TMRZPMySm2jR0JMBsWnhOsigezt5Y1zGmOim1Kp2ZSSoYVlM82SgFK233470TD7+IaiC
2bJ8uCry2bL/PeKqRoPqagfvOCJRNq7kvmjYzmgdYEbzsvjy8LoRfFZQSL2uYcC834f41Xcp8IWJ
ZtseS7Nmz7jeVjwunWo93qXTuBg/VOmPVNuCR0oi0U7StkoVqtryOzIp28TqCtqlZHvQrG8vhrfX
b3cNdr3feHTOHqeZpFC0m2pvcTdaltH8UML+FkEsZltBVbfYeUf0Le2njHmzWdx2D8n9VVGpgxLa
eefzLY1jwsh+D0oYtztvcn5AE9p+LeOFF+nSVICPFTpEpkJH1svfO8vZr9fzxBqV6y1tc6Hadvij
2iIlnbcsf92GKpFJo92LYW1Po9rG6r0CylkVrH+MEynrhzmRtn6sE2ErWZ82+Jwv780hkfWxA8tk
4NTqC47ifHky6FlWGX0ZbF/+K/NNmNfvcCNu3Nh9wY3ksRvj/RsUOnVzJ2/cISSLM4G5eWSxvSGz
LLNZTFKcKjP7vHtjnI2rJw7ciMwkVqnakzCZcrMFZpV6HzCUoVZJ8CNMCDE3QH4GKiFJrGLMkooJ
oY8wIWz/Ri2LP0KR2AdmV2aSfN6StXkFb5XZpPMIwWbLDtabHmICsnpvi7s8gRbFu7qtj3DgXlCW
RVkdC1kf6tg+yXs3JjperKbx5jwTgZ645+azqHywzqfVZnhvc4bjy/b4hoWs9kWju6/vrfSrM07I
2h5ysl5jx1PMxhppR4WIhUQgh2iM3FD7oVBKCdd581TnP1r8UnufNMROiaX10mz6VEet+kzgU0qB
WKBUQAPfRtJmGDHheshVtkI6wD4nDodfXCDWOGGyOPvNbFkbZGdrNIuzNZy0PLuaREuzL7s4q0+E
bE+dnM7XdxqDh/6v++MW449nq0V5BkHmbIO4xZHYYp8jZ0mWsUeCcl+cahgPSUcbzsLFocI+woGm
iOnARq7LXWRjWEbPdb1Qek/AuT6vdfY2j0sw6bNwYzOLsx2ThiXtLraUI1S2rxwdiyw79AbkgKl7
2tNSOy7ylaMR4z5HrvQdJAnYuiQBpyH9JlOvLzTBjXHM98CNuaJplFkvYb3NVuqps04wfYkF4BGS
CsfxJaKhweMEAXKc0EPKk9RzQkkDhZ/QQjuoW3RtO9qna8fYrMXLzlZKn2F5yoFv6IWewJ6LCPcZ
YtTxkaPDAAUQfohNvJAq8rR8G7BbdAXejz1wUZiAa+jWBr7hSyhTJrISxR1qB8gLbYKYCgVSghEk
FfGJJFjgQDwt3SbsDt9kn69WrJNgOnXtLhYZ+tolLmEeB+v2zGoDc/AyjDh1ONZBqLWQzyoWtdk0
3L19o6WoKNuPSeOYqoYfRHHedASTmiDLYtt1GZICS8SIBEdwtAvfMGQtN6RgME/uCFvcLcIxk/uE
E1t2LONdEeeTtDqbua4JIOhJ+5Secnh2/cmEQMohBGKCwFMgYRHqItfjGHmYaOn6DvEC+1kZyT6x
hqHs32zpbkz2y7bxmGuT3Y2xRGVyn39KQTVre+EEohExaoLuMAhCqGW4dhDzmEbKxgJ5Hrd9V/k2
9bynNZgO9jZv+0BuzCTb8M6TVQI626VHWxKGT3HlK0r5PuUyQCGGfMGEoMhl0EzpUBBMPEn8gD8t
9Q78JvUUs3iPekpotEkcX6YTultvZs7ZmzKOOVRJKZAdQtJgsMLIkdhDwucCElHAKA6flnMTd4sw
EeQAYUk3AfE/u7JASFOTcd/VdiCR8BRU6Zx6yGEulGie9CkQpWALT0v1P4cqAqCk9nnyjHYz5Haj
pq+wMiYNj6w/AXvpcu25PEQicAOoACEQauZwqNw1CWlAbCn855UjN3ya6XFzraUgGbN9BSliZ1nc
VFA9FTDJ8rv1mwgooE6JSRPmh4kAPLQDn3CkmALVMNuBOiogyMFeKJzA8XWgn5WSDnBqqOvA3Zbi
FD+kuEh3LGsr8PT8sup36Nq6zJlsMFnTYIQhlsxxHESo7yEG1oZc6AwRF+ByQSil/8zawYpKQ1fr
vy9anDn1rbai6r9Z6Sgqi42FmVDjXYfDVb5Mt9HVxBsC5QtRkESxSyC0UhIiRzGMSOAEXGPPx458
2njTht1irPH+9gBclJtsMolmd/l414YYG8BuoDF1FMKeA2U4ZE3TZAZI00CEjIUKh/7TEm6i7tBN
DtCldLPAdbn1S7pYRpPltmaSFKzfBuYchx5mIUU+oVA0UaWQS8APbJu4YSidwBdP3H8dINBWgKAH
FCC3CogXU3D6NXGqqlIRPN03RSEKlGdDRQ21g/axQoHnu5BZmUf0EyfUBuo2W3mgVorqJruZMdJk
Vf3RX7/6oy1k/fzzzyaVEt+lWnvId0ysYwQKCe0rBJcJ1IsSOqtnliXWPJqpYX2ppZZIZAfUYqrn
dYsZJffbGCfNLqDAUIUJaKUwcUEVArSgiQeGT6Xnhk7gCZs+oQnU71zO2tDblKU+QLnefqgoF9Np
MfPKh/my2FaTGGvj+aasChWzqQo5CqmnIe8FAfQM3EFwzVfCs0XwpD1DQwF7RNp60AeK6UjvdheK
6RwCSDkqt+FP0DoKSMKV5zMkbQV9tWdrk+YkkqEHzbfjsdBznosG2hTaCogOpHhzDnyrgPlDBo9v
U1618QZp0guhU0JBSMzOE7eRG4AaHFdKrZnvceI9E/JN+B3m+3sFKZTU2ZitmZdp0nIAzo35M+Bv
68CGxE4QtMaQApiWyLEd6JuF50BqCPDTbKoc4t8m0dJAzA+kg1gmm7XvHD/tS8yAv2kYfN/zoKlk
yCE+Nu0zQ64ES4CeTSrbF4p7z8P92xTa7GP7APtYb9nvTjn3Oa1cXisVCAnNUSgVJP5QIteGTlpR
N4C+OhQC+8+D9RZ6m3FyINjBxV1xa/6hwoaz3pZ55k+ypPQw8kzKY1pBbYuxQK4Hod7zPSqfJPHv
824S6DDXh5inG+bm9MvWzZXmVYSXCjtCQKnjh6EPOc6XCEJbgIiGEVRwRzjPY7kb6Nusx/wA67G9
KW7LdFp8SpvRndfLrZ0QIhgKwMsR4xicW0Bno0ho3pg50mXPg3cXf4f8oeBWbx+93J1LiRaTbffK
9XozmAQ0CHmIUUArDQSmwtcMcQ+7jut4PvXws9BAl0RbAwfenJiLmwC3fjg2x1kX2+rGpHfHdEUE
HF4KFiLmGgvwbRsJlyufaW1jP3hO/JsUWipI8AEPSFScpS0jSLbVDbHVusJ1lVD/Q921dLdxM9m9
f0WW3sAH78cSzxzP2IlnnOTMLoePpsMziuShZE/y/fqpapLNBhrKLNXyQhLRJoW6KhRuFaoK4B1a
AlYAjH3SBX4CV48VqYqVGc3emjDY9cTfdgz+biuvxwLXt1ZxtKsVtFckaE4GPH1F4IskAigfcR60
gSupYVfwWqp1IbEUp0Fl20Pl0FgG+JinzfF+OF1qkG46wi9mglOrGS2OUOWABabkiefMEOEVM9JF
Jl1aGTAdiWpsdp34125nFhpzGh6vp3PTURo6Bjpk5UuAZRLwRD474kpBQ1KU5DmEQlcGSStIA8e+
A8egFqpyGp7uHm9hweupYjQuSiUNydJ78BMEcEdpAA4J/pNmXhYj1gbHJEiNxKFnSg6mQWJ///g4
sWaj1cWEgDfMEiueKFAOcJYpmFWTOUkqA3P2FAgHXxMOMzEaFDr6sOe0QeF4f5jYJLasgB3VA2NE
2WFbBVNR4EvgsDgicCmqqQOKEdcEwE2CSv696IRL90I05uHx2CSev2XGjBHESCkHt5km58CBcuBI
MB+IgvWgTCxMu7ImFFo5Giw2HSzM0HCLKWdJjGYB99PErDWwi+ZowK+QEm2kBmZBPQvBULAZak0o
/NkT3pqO8BvZcMtzPcht58TjksQDrHrg1SkVToTmDD0LUILgvAUtwEDSqsSfyVBj0GNXe/Qpt3MM
7i/HuVdepTQYxXMQjSYlwAqWzDIRHIAIRQvCDabsGMGUWBWvqgSpkBhoJ5Q2MNNow/3D0/Hw96QN
Wo0HqOBFM5GJVhnIZWToajFwNgEcnjFtU69KG+Yy1Biwjrc1cNYxjdeJ1MYxJuWzpIlom4A6Ja7B
OIKtDKII6pSPptC1GcdakhoPbnp4tDoxfkpVG3KBIwElMIk6YqwDOIIzxGUXiCxZGLAauoiwOjjm
gjRo7HpotLbicXO/3z78NXEHdw04O62YAF8WVkiGLxycDquBP7DIDANn1Be5Ko+8EqRGQnQ8jEHp
hkI9nTa7KSylGPqi4+6RtaZaWU1iiRazCzgQqYiHkKAmhoLDkVe1SmZy1DDoDnsYzMQkv93/7/F+
nmjwTo3kIVOmqbeJJIkUyklPHCpCAgpdgrXa53U4WHMBaslNzzC4KRZ7630yD0Eb71IBpiRUROPo
BJaaSDCOKvpYKOzE62CO0+xrmbcdvwEGG6Wf2ZDf/3h4fKotIoOVE/HQDSg0bJWKJ2IFbBUx+gzE
KXh4tlKLOJOmxmXX8SdgsIfLZUodYLKW2gWsqMKsDBHEqByBcGGKidRYZdNad87nkbE9ZGwHmbOH
0sFFJi9TLpoACuB1a1gv3tBAIteyRBcZzWqd7tbzqPSI5jCeWD5X9PxWcGnf6UvirxeFapc90V4y
tCaehFRg/7AmU05dAEIOmDw7x2fdwQPtqPKBbtAdnNfBNtzPyHfynKnKnXdU5UK0MQYz0AUeLFKi
o/DWRhk8U/80s3/gYgfWSXg8sBa2locJ2HXpeN4rUmK5yAjbLIMV5kMhNkYN5jewmHN2Srl/nNuz
xOjAO/vgAdO3zXQK3w2tKV80l1SRgrmGgitFLNhBzN83JgEjEsm+cIXHs8G0g+j9PYS8ssHLO3/f
Hf4Y7uDXdcQHZS0yyQQ+AsckNMmJ4wFYYWQhaFU4cKZViN8K0QCx/OsfqL45Tf9zd3waxJSAp/h4
OiWitIITZSIHcx+AAkkNZFCJVPAEJ9AXLtWopv2mks3sOwIPU8rFs8ECMFrCggsA7pDHROPoSNBo
LGgxXCdLnXjhVMtnwwMHxpemEUzSlEZ8968/N0BvrzpOx/ot7VQsBbZ0A6QPU6qdw3M4KXSxUQcn
X1i955OupZWyI62a6jO2/0JSOyWVjvlUtoBPaxP8dSNsTULiamYeVrMLgYsIKm1euBylmnUtr7Id
ebVoKqr94+NwwpnfytXYmFyK1kzCbueBxxLYY4CpmCKJU2DXqIspyBipouHlU0s/nY7fN0/DLMN0
IdQs1XTxrEatU91yMJttp/7zx9Pm6x/H3eNYgICAUYNLJEnpgbpkoq3DehYNZjBLQSIsFGacyj6J
1VV/XmVpaj+vwxVE1nYgclo39S34/k+p/PBWjejAV4yXGBpj4JpopTOB7daCmww0z6ekhQKTGYtd
o0JdhGnggZEKGdfpTnHYCtVB5pfhrycwMuqsOkqO2YsMyC9leACB4ACzJEEaSSQrJXtgy6W41WkO
CtLAgkMVLttBd3A5bJpFddW2hSU6qw61voBrBKRCamBWLJFgRCaB88DAkfKKsjWqTivVDKz2UQXa
ji12Z0bZvm36MHZJef/z7VNBq96JM25Ku5GUJnDAk2GwYVsBzpVUQE8D+J+y2JKTwUwAtq5qqFao
68ibORh82RcF/tldg9Cv78cqsYsuwTtwY8/WusIU4dYJzCICPXIpkMSjKSJ7GVNZFSKjEDM8xtdz
NNhWddDYatrs9zCB+y934+Li7+S5bm78YUwHcDQbkzGYDwYIKA7x2LCCBiusTlwIzleFys8gzI8f
8ucZMNehGhu962BjJqbrd9iu/rgdW/tPXg2sn3OtqrKiUGdJCsgCFeewX4lIKEtOSGD4Jr4w6e3M
v5bfdXRjT023gcyH4ctm93evjYxyKlnNsWMSFu1qy0lAdpwkAxOsDeajPd9G5vy5i2Yy5+Fquge2
YBiMG3GuHW/aM77F5awzVn1kTrKxCWmFIx6byuRMtWRU+Oxcb2L1Z82mVj+YT45vl5s843vTVqn+
x7fN6elf5ymyd4zBG6R016BSSDbFkhxRsNSw6BmQhKmCJTIZW4fwGNe10m7izFC6DVYIDWLhTDPJ
tVhq2xmepaKhzxVtEOBoJfQ7wDx7QxVRGiwRgz8mbGbPKFozxcvIfH7K2QUdgcF9y/HD5nEID5vT
HkwBFhfBG/ilyKiA31OC1+AGY5QnOEVsYJww6VikwvKyhpK7JReZRJohNI1VGG2WEaBxsMEIDc8d
Xsp20/LZEDvHdmOMsN3aSFT0oOwWtxVRPHhEMRfuNLNuXZvtTYS53zgNNkAtzYGmtjWt30cC88Nb
O+rRuXDTSi91cYYYq0GLnLHEqkCJBSdA0pIFi2H9uMyen4WcPTsPvKmgGfYdvIb9s4r17vuw+zBG
ZM76dXkpLucGJWingNoWj1lL6HcDeaOwS4fMEvcqrMyQ/r8YjuLNMRwHagyXSZ9Mc8GvKW7f0+dP
s+rQcQk62FeMIcD9cZdR5lwsZYqE/bx4Hwx73TBVYr+pgTks0dJyew38ffCffPz3WzKcxYNtWJGS
ZezOkhkABp4X8SVxAgTIemY1WK786gGbS15BppcF6UxbOSlY+OA/N4BFrVXQwREuXQAjb0HDuPRE
OZYL0ynH8vo17CZ3BZdddiuAwcPuMJzdi+8fj4+7ekFqAfSPmgQWP1ug0rIQHzzHjoBeeClFsPL1
L8ib3BVenW4e2LB4dz1E/3C8HzYnf/dlgGk0euYj8GSpLOEFjJhQEYBjRhINzDkXx50L/PUvzCUA
NYBcdQAUU3n856+bE7C6ziqlmTk8zObaMgxOA+XA6ngelDagirxQ8+rRa6WvoZO0A52c8tzAp9nD
r/t2unXPwRwfVaK1jJIoI/prmmESAHiZypiiVNIx0VePWyt6g1tnS3B6KlIOP/10U7axeZUDjRSM
gY+EadQelM7nREkKSmLWLOwK5fVvCJPUNVja9sCyDcktIGTv2M2GbGRykhjnALoYNPFUCAI8F7CU
mVKV1uhezuWpuhrfhhuYOr7AxkzMDN/4CdfyrcjPiZFrBGAUEbiGwC6BClPMpKbY8aYIHnKEPfQV
4dORtIJp24mn6K3ljYv5cXja3GFuwjsrsNcefsdYBfM202JJNrqg6SoAlrSkmECNMy4Uti4mO8ox
7y2KrytAdrSzvHZ4t/TUJefrCQOit7JZcSkNzTZLzFIt1ILm6OiJZdYRmnkUNmcabXzp9Jxm7rXk
XHYk3xzcvlIFnP/wb5/yj3OrQmGxGK8VAXZJzyUd1mZBMuVWByqdjKs8e52EmQdjrmMVOnvW8Yv3
bKp+GtsZf47ztlFs7B7PYDvyVGqiIrgsggVKXA6KKClpZJ5HxeXaDz568jXouA46fCoS/LH81+c/
Nqdhlt1+ORcyyRmFlXHOmQgmpJTxwB5cPaEUAw7EEn8F8DQC1uAs8x1hUE9NGX78cI5ttdBQZbDA
PBBdggC3Fwi1D9j03DtQHhaLC/k1QDMXrwbGdGzt3kx9fONvHz9/uvv25Xj/+dvXrw+3flwTRFIz
7piA1cQ0LK5iJfEa3DbDTUnghlC+sjDnM4urL2gDVifUtLdTmT4u0N8+xrsjXvdRWaCiLE02cBIc
N9iy0eCBUCDFaq2KMVRz+kosUC1gjY9dBsvNRu0P/OL4f4A3X7sh3AIm2HB5bIEjmeEZtciWzFGV
CnFJecKUSzSoHJ16DYaoI+YcJrNfdr+Dwc2+k0f023E/POAub/F4SpyzrLR3WUSviDN0vNnGEB9x
7QEFCKU4YVZmlCZJmkyicayGZreMfJhB2EV+3t3D6fPf9zs8NsD/jkzYel6SFZnkKDGmayRxQIOI
885HESPuaetMPrsIU6FzGavQGfOsGnQsp+2p3ebb/vjw7unh4Q5rAT2++uX84qpJ5+Rmi+k0FniQ
ziJgti8nzmrstAWEKFEXolpZTHcmypwtzobneFlhloFbK3atZ1VOIMp4Rnrz1oW1Y/LM+B1zIzCj
SAEpMioDVooqrItlsPCiTtIoLyxdpU+6kK2KfrQPK/gkX253VmrawPf56+l4/6XBb57alznGHksg
Uins6OYccWi+0JfPxSrrXFwjdh3B5j1tl09r9NzSrbeKm+5iRWs4qvEPb+UlvW/8PpacRHDgJDix
heF1XzQTT6knEXP1BZAKY+PqrP0oS2Ptx7EKIiU7CqZUm1D7S4xzRxcbALKcI/Em4CUz2WMFoiKZ
cdj5SomUrlKdQIwZIvCqxkINHSz2+ya/D4H8OOyPmwkRh3k1WHfoOS80pwTLzKOJwsaoWJkJxBNo
ZpJMBrs6RRllaRRlHKvA0T1F0cY14ITN7r//wQ5Z7qTPrBCeKbbIdxZvXMmEyhStDFkwKdeZ1tOI
VaX3NM9q3DYdpdLbdoEdv+KsHqdZTfM7M/354uMmSQU0nRRNIxHRJeKZTQRzJdFXLmCPVmnLa5Hm
drx+UuO37eBn8MqKbZ2CPL8s7AyWtGP9GHVGe62Jpiqg3wdwYRuuYrD5lJfSGL9GuOYSVWnJ3evC
gEXypUsDg7KhCv7Ll9PwBX5VOo639uI9oDPlchE2tYRt7JgA/w9vEAwRQ1JaCY8RF2rWGcJcijWn
p8unDXbbDnaydQd/fRxOP2EbnKvoV+TO2WYupYAtIfEOFOzv5CKxTIBTmLlShnNtV+Y7L+SZ61n7
rAbMLKPk1kkx1nzXW+Wv76f1yNU5Cd4lTWHdEVUUUFAZA/GCYnW1isLLmLP2ay1R+vV9s1P++r4C
ZrPstwyD+9ZcnW/nwEK5p0mJhHCXnh+FAa0yIRPJ8BwhAb2yMUtiCjXGFldy5msEaCbV4ua6cbSG
auhAtRva4hIE+ZLaiZdynDXpfKagjWCYjm4o3u8FBII4vJNEZo13rxrvA1sd22oTOKexCptBdTyX
wcrGc7mZsznd4pNFUslKFrQjwXhGBE2cOAN+jNJZeSokzeukW0u5ZogtH9bQbTq2fDi0VV0g8yXK
PK6/Ua24G7uRJSAO1pI09ra1ThMrpSc0mpy0ksGXsNJDvGvYvDrFuwxWGHXaMMCgaaNYWGb4/v7r
t6eaxGNfV2PB+2Meg5/YhAoLJ0kB7ycFCaZLr7JOcBJn7gNex2p89sv0OUe3bQr1p9PDw+E/h81+
OGGJMt4rJwwa8KSNtEx54i3eTyt0Is4Dn7KMJWwEa21aJYuaCTTDaDb6pgLksDTgjqm2CuXTH38/
HneP8xJBXGbZegkWGlxlbH8oAJ1QCgdPMLAifQEdW2UGzk2aOULTYAXQWGTVAiSwxGPbLrNvsAv8
jPgIMa4zMWbhcF2ASgrCU1HYfzwQi1tdBDKgjfKSGbrWhTYK1Cy0caxCSKilsQYaaa95JpvbFXvs
HbYfR/7obBFKiERoCeijFLyDiuOtDVjo4oyPzr/wjbWdK/ZALrk8WXHW0saqfD+OqSllsxvO1Vt4
9wxefj1+R4/WZB6oxjK8sXOoFiSAphAFyFHJYhJ8lbv6VaJ5+PsyVOG0ccsDcbc7d4g4J6093v2+
//t+8+fx1mFXvxvvYDTSs6CSI6mIsVWcIDZRTooqIbtkslUvXEm6nH0l/G6/jLNtKDs0SjKe282O
lOo4JC0Wr61IpERsGigj1lbgUYnNPiTPDXPruvp6Ls78js7Z8JsKkOXlXWzDbHtF7k8fPl3Bcecr
DEOQOmH9BGeYniatIi6AAxpjkcxGClv1KtkdSDLDBV5VcLCO17lhtytf/nq8e7pdjszUePbowTko
UmQC7qbDu2/BjBrLCKc2YLIeUN38wjdBz6Zdy3voLBKOFwCby61Gp+PjVNcwpuXzKBneBZ18xgQr
i5eaMIYx1OyyiTz5F+4zNJ9zJSxfNpFiG8Fbi/Bhc//lG/iRH2HSd8f7L5NV4EglctBUZKGIjAI7
n/hMrGGR5EglOM4lZrPKoHEr1WwRtI/+r7rra04bB+LvfAq9dCZ9MMiyJcuZ6YMs2RmakHQS0t7d
C+Ng09IGk8Gkf7797QpssDHM9OGmnDOTgJWVtKuV9JO02m0Izes4rkjRT0wV5nHxUsf7EtZBPzU4
rzqgCwJDfHqOUuiSOgaMqkI/VPwPY4pdjZuMdhjCp17YXspl6Rrw+zqfQs7l1MKKYOMYx7NbKZHi
NIoTB+ZHg071uKMo444ASSQaXYwmZ3nd2gBbpmKrhS0O0ppye5p2yA1m38Pdp3ix/DqvNzE3HqgC
GmAQh8hDR3wxT5wQL12jNYcbG8NNHJ/rDqblprUBZd81xZMfAvPUz7JqhJ1Pl8X3PtvF+sBtS0MT
j3nUSTCiumfQ8CdWAMUCwwSMPwEP/nA46EatG/z6HZemU3/WDhBsz0UbvkBqfBFUIdQCKgSPqeMK
mGQ8wxjeBuAOzEAqEUKbIPTP7DZAm6fG1YB2YkNsQVcvgpctsX3Knz6slpjJzdJuLqQ/n16L7Dlv
bizBtBSEDAPuSa5gYUepI+NIOjr0aGKkDCQ7A3DWkEZk2SgHRzk8SGnKb5p2yC+roxE3onjHP4E/
G7P+MCC51ImU0hOOH3AMS8y0o7jvwgAeUZ8Zn3rsnAKSt1lpCiXrUqrcPbBALCCvYq2f07JsXu/i
0Nm4VAKd4xtEezCdqTB0YgU430ieuDI5z/G5wVJjlG6k7Mtr5tLDk9+Zy7p9D42hAe5fCzSLHRZf
YXLMs6jZFW1sEh4xjTokRQDy0wGgZS9wdJCYmCpBmYsHUHhGWA4eH+L7mqedFHBeqdnH97hTPwhC
RV2tcVWuYwCjGo34EjybUMrTsfA9IwcIVga1+W452FRwv7kG3KOwrA1ih2tPO76LcXg1zMVGai0D
FUE2waDNMWRgGxiNzIdFeZDeFEh/14FP/FezJYTX0RLyqcOCqDq7GIKurQq8VsYCgWcQAcLRKFQK
wITvuOiUx3pxBKnDzCqYiLl2BdfmXAFGm7MW1mgnNwRorWvbAhSyDg6xdTaEjdG6DGGtsl0ZozkH
LO5haeN5kQG1DXDbI4plAtmEdmPwwKnRiYwbtQvcww28WcDqG7pXD3jLsHH7SSK6FrDoYq4Rjgox
aDRFx4rKA7homBaAu41Mgv/XbcoDThtyCvnhinUWCr/DnGJkAzIuWiZObiJhhAmV43Pc4U2i0Ak9
6OyRirShInR1fJY7nE2OWtYUu4Q9YTHaofKMhp7bGr3v0x8aclul/Qo5wfoNyTZxa10RhwGnGGYQ
tz1N6ER4CRMQZwRpUmp5BhYD+91/0GZo96K3EQOa6QpvOtvTpeplxsLUB/FguG9y4QnaZ3gwYLSE
uSWEVTt3ET8C6pbQ6Z2QSfihnEXWMXAFSpC610MoYgfg0TKrrV3Iw+tiAVW+hLro9Pm5JAvAbuTp
F1muv+Qr8rJBdIA61unqc77G/Zb1l3lZJVxaHtZp+W0Cspq8zLNLQjfvNmFBpvB7nbdelvl6ArN8
9b5Z8H+cPXzZ4wokYMvDANswB3eVxxkP2e+V2fs4Ivf554Z88Vzxrnj+RXDMxZTljGz0ZZ6Xl2S8
BLj4jrl+3x2RVV7OM1DUd/T6gr55S8ofoL15Nlm+ridQrdfCBqyDwrItxQUAozdve59W83X6BH1m
ZQuvs3X77Ir8gETQ/irPE2VUr/bLwSy2pZCqWx99Pg7vx4/qBj7dx1fDu1vS2/4d//0hPkb0MPzH
pum7x9sxuSiWhTNdprDmmObZW9J7t3s6yeu06kNPTdfz77hyHa/SKSru4cO4uK4/k95+v+2upMsk
3acw8/IlXU+/EIy8Oy9et+Zye48v+3S0R/H+gbwfjsnnvLAOIjKCo1OrkD69qslJ79oGJCEK24Lc
FdO8q2KyrpVHeiN1c3OnTzQQoK2+P6q/1BSfX9FJ4QsaIR0+HqvLAIrtWo+AzF7KnAyL2bItXOrL
fVk9jJW+JleP6t4cqRYXe7KCMh7W6fTbSU1zKfaXHcXH0cRyosZH9QzqtS+rDeolI6vq3WWIXRke
8DGZGDVWp2rFYK26pXBDFyluhrfXsYF2P/IIrx9uKZgQSDGO/xqfYpzTvqjK8C3F4+1Q35njfBPe
1PaF7fBkBqvVY3zwvldLl5Neae88k0W+WK5+HaPxr/d09/d77fhubEeOU7z3xbZ/CAll9P4FUEsD
BBQAAgAIACSBJ0rq5MSvQwAAAEYAAABQABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24t
Y2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWNyYXNoLWxvZy50eHRVVAkAAyOD
cVgjg3FYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUne
mSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MLI00uMCAFBLAwQKAAAAAAAigSdKAAAAAAAAAAAAAAAA
FgAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9VVAkAAx+DcVhYhHFYdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAOGAJ0oxLVxTQwAAAEYAAABFABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVk
LWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0VVQJAAOlgnFYpYJxWHV4CwAB
BPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9E
zyW1LDUnvyAXyLayNDC0MNDjAgBQSwMEFAACAAgAx4EnSsuxXsN1LAAAocUAADUAHABjb21wb3Np
dGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gtbG9nLnR4dFVUCQADVYRxWOKC
cVh1eAsAAQT1AQAABBQAAADkXFtz20aWfl7+CjylKNst9Q19YXmcwjWjiS2pJNnOVirFAoGmhDFJ
MCBpW/Pr9zTACwDSjhl7V6paPVA00Dj9fafPtdHyVVmkZrEYOO2ftJieJvP5xJy+N6Nf86X9FRSz
pZktT0Pz0UyK+RS+O79rTBn9o3eVLO+7MuDn7F0xWU3N4uzd5eu3b6KzZ2drceMymZpPRfnh7Ler
4MaUH3NAcfa1WT/P07NvRNU7z+AzH+emHPwNUr13plzkxazLR2D+3OnD5yk5Zc9PekGRGef2YW7a
A39TAgnu9C+SZf7RnIBqSqupq46iJ8lqlt5nw0U+dX5XmirQ4rVZzIvZIh9NWjKPXYy3C1M652EX
v4tJrxcmS3N2m087oCkmEmGCsHSIGGA5wO6pwtpBWGHcu7xxDunkTZI6cOs3h+BTQk6F0yfuLwRj
fgJM5kW53HuKkJ43K2YP02K1cN6+bWCMIxHGRClEXRUiwkWIfDfQKA5p4OlYCY8EvV7PIne8T8kH
49zks9Q4flEsB47LMcbOwqTFLFv0ejcPi6WZOuegorsyXz5Y5S9NuqygZPkiAQVnvV5QJot7kzm3
96VJsi0U7Dhhvpgny/Te+XNlVqCq3QpMk3yGltUDvV70OTVzK7VtBtFvwdD3wqEXBNHNjdO/Of/l
Jvrl3UljvLWdrS38Gl1fDM8v3nmvz+GhMLy2TyVLB3/GnZ+GhAtg1JoxuLy+uomGF5e35/F/93rv
3jjX5g5GLpwLk5QOHvQQeuX07PDh8Db67XbPW9eTEOxqPIYvqHGBEKvh3+0w9esfTok+n5WfPjs3
b/4RXL5/NEfveTAoT5NKIzdzk4LTp7Du46KcVhcH4KWlucmnq0myLEqHYXaqHOSAEAAycPKr+2Jm
HHfh1BM5twZMp5Qw5HoFMcT6SQ42DhaOwby5x7h7sn2+XvWtDDDPyjDAgtamNRh8oynhrptb2K3F
+a+tNRCcjoTMiHLW4waDazPLTHmzfIDAMSjmprRk/9E/dP+nn06c5w6FAHVtxkEBJE12ej/Q6qRH
jgKRMUABZDuTRBNjl2YwWJhlNeEXULzYPVhdCfPx2ECkTI3FxzCxAO34y9G/wXUBIiHypEePU5Sm
Wo5Gu6nCIl3V8EqTJpO0g3CtweA+md1VOFzXdfqbh07T+XxAFMEnPXYsjGSs6SEYKSz/0tRMb0tj
+nZWCH+dWSlxYVZ+/KzZQfJZnvkQLKcmWJU2O23unM9i668VCFd3mQsFRuIehyGRKSXpDkMlvzKO
jez++9vY2sb4alm+3MP6qrZXYg32fLYAFwfLhi/LsrpdOTnYBnXpSU8cqR6hjUz31fMeUgZUDoMR
hM/ZzjbeXr8G6TAzmO6oKCYv9p98ZqFCgeD0V8t8AolnIF120pNH4nJpOs72pb8uksziAlHTfAmJ
POmn9xDZK1DPXjgrqBzuZpDPJsXsziLRrANEHQ1EKvJlION8ltsoZ/+dz+76WbGCxFqFF9pwm3r4
2oRgmfSxKKQc8y+jmCYPI2P/EU3ny4fKdDURHeYEHztnwt0vz7lYJuVyTfsNhHEo3IpVma4dh7HD
5F1skZDj/EcxnYw6/rOBAfpf1oShbus3btUxQ7kwHd2vH50vTueOx4KS0ToZDgbwe+2wdZx6ny/v
LQ7LuY4UjZFXyZ159qIDtXIJokAjG1m1LigBbOwYbAJTV4yU05lx+6Xfsv/q40V3cGBZQMSAmhyQ
gJcv1i5d5Rzhqq7Z8CMRcsXwPsJaed8N0KVV0rapUAgA5x4HLkl1HVa2E65bks3i/iA9KrerRXEc
0JHQLHU+FnnmnF8FgwFk42xi3gBUmPrl+veiTSFoUnhxgOWLWmD/EP9nJ99H+lW/whlCSgXn++nQ
9M/+N+evQq6CfP3PpqbATjgUDUQeFQGM0YyPa8VDyT1bt01QMtR17Fp4f7GE6nY4JIPBapZDbTuc
Q/puquGFsxuSmXGymiyHmZkA8NawV86rKkQQgD8106J8GFCJIU1AfXsc7lEiv4L7crbRS11iSbcx
H7XzQV76V/IxuUnLfL7ci8qd+UYmZWNYrrp4Wc1eF8V8MIDK27Ye76HfqWZhNhVsZnEpxGOKj5yF
U0y/Mos1qirGMlvR1yOCuIqxTMN0rWxjp4uh5M/qhmnf9UymGSSo4TCIr99evL68vBqe3wwD7/Xr
84tfhpdvb4e3l0NveHP59jqI8PAquo4vr98M47cXwe355cVwWGm2R+lxs46Mq9N61ppBWNxU+XSB
qxpc9Cg7UmKWKNGUCL+qwkD1KD9WFNfcaQraNprPHVidHm3F4a6wPUPVicIKO+j3i5u1yP7224lT
rmZvwC2g+IQlNna3ZvCH9W7Je1QcOY8cu6OvzGPlSlAtxIdJPoK2+zR7gC/7u3hNsUqMXJlqZwjj
h8Xo3+nQtrFWExg0oY4UJaEtcqyktRCidI/qr+547dEkmLnc2aCAQq+/22mwdcrpdDogzPZsuEIH
yLIvwGuhYyYRKnOqUs9C23b35KtdvZ1hfRNNkxnEm7Lq7uH6otqWGn4w5cxM2hBaM0siIF46H8xH
4Dv8s1jY6XHVnjekH+DQxq/dlI2c4Wb8cHpXDj8l+XIIljWsZFsD0FVLfYxcNU4gxbfl5rOPxQdT
bSyoqjk+TqBSsiOw3hex3s+3iqeDv6FJ11CIA3YH6s9qfGmWq3LW0uha2ryesyWuLY1LVypnM3D4
6c8tSkIV2yjy28W5jJPawFqy2JYx+3/HmP8dxgQnwHhhppV520IqmRzim/6VKfIRx4lwZsmsWEyM
mVsheush6fPnp+Rw6GiljCxjQo4a5c/yPl+sLRp6RyvY+mCjhErvy2JWQLGyKquQ/rJRBe5GVfde
kskLh2x3hCdQPzVrb1x53zEVhtGKjOvi9K8QfwssC+g7mXU4Caih1lA4J/Uu2FEElRgTZzRNJpMi
HQysjbydQX8SJ5PFgToWBn14uR19Y7eY0jerpfn86qcm5L9LrN48qje1oAHuD4dTK3w4ShZmQLSs
d9iO4+dyvOP3T5NAjbhIE4jwd//3/CwxDn10UpbJw4BwVe/LHUeIZbxLCOwhrTcrbzbUKuNQXRUy
Uu+4HecDmjdMxFs8zNLbZNHQkwWxaeE6yKB7O3llXcaa6KbUqnZlJKhhWUzzdKAUrbffjvRMnv0Q
VNFsWT5cFfls2f8ecVWjQXW1g3cckWScVXKfNWxnuA4ww3lZfH542Qg+KyikXtYwYN7vQ/ziuxT4
zEazbY+lWbNnXG8rHpdOtc526XRUZA9V+iPVtuCRkkiyk7StUoWqtvyOTMoucbqCdinZHTTr24ub
t9evdw12vd94dM7G47GkULTbam9xN1yWyfxQwv4WQWzEtoKqbrHzjuhb2k854s1mcds9pPdXRaUO
Smjnnc+3NI4pI/s9KGHc7bzJ+QFNaPu1TBBfmKWtAL/gkhIcUujEef57Zzn79XqeOMNyvaVtL1Tb
Dn9UW6Sk85blr9vQkRxLq92Lm9qehrWN1XsFlLMqWP8YJ1LOD3Mi7fxYJ8JOuj5t8Clf3ttDIutj
B47NwMbpC45G+fJk0HOcMvk82L78V/ZDGPv23SlHjRu7H7iRfulGtn+DQqdu7+SNO4RoNhaY20cW
2xtyPB67CTUZNsrOPu/eSMdZ9cSBG4mdxClVaxI1kobbLTCn1PuAoQx1SoK/wIQQewPkj0ElZGSU
ISytmBD6BSaE7d+oZfEvUCTugdmVnSSfN2VtX8E75XjSeYRgu2UH600PMQFZvdfFXZ5CixJcva2P
cFDai8qyKKtzIetTHdtHee/WhseL1XS0OdBEoCnu+fksKR+c82m1G97bHOL4vD2/4SCndZFA1B1/
fXOlXx1yQs72lJPzEnuBYi7WSHsqRiwmAnlEY+THOoyFUkr43qvHOgDS5icOkGZGYuk8t7s+1Vmr
PhP4lFIgFikV0Sh0kXQZRkz4AfKVq5COcMiJx+EfPhBrHDFZnP1m96wtsrM1msXZGo4pz64mydJu
zC7O6iMh22Mnp/P1ncbgm/DX/XGL7MPZalGeQZQ52yBuc4SMt8cxFdl4zL4QlfviVMN4yDrachY+
jhUOEY40RUxHLvJ97iMXwzIGvh/EMngEzvWBrbPX+agEkz6LNzazONsxaVjS7mJLOSbFe8oRxICL
H3oFcsDUAx1oqT0fhcrTiPGQI1+GHpIEbF2SiNOYfpOp1xea4IQy7j64dMRMMnaew3rbvdRTb51h
+hILwCMkFZ4XSkRji8eLIuR5cYBUIGngxZJGCj+ihXZQt+hmarRPNzPErsXzzl5Kn2F5yoFvHMSB
wIGPCA8ZYtQLkafjCEUQfohLgpgq8rh8G7BbdA3bjz1w0WaXim5t4Bu+hDJlIytR3KNuhILYJYip
WCAlGEFSkZBI+yY0Eo9Ltwm7wzfb4yvJiHcSTKew3cUiS1/7xCcs4GDdgV1tYA5ehhGnHsc6irUW
8knFojabhru3bzQVJRnbj0mSubrhB8kobzqCTU2QZbHr+wxJgSViRIIjeNqHDwxZy48pGMyjO8IW
d5uwUPuEuVIdy3hTjPKJqQ5nrmsCCHrSPaWnHJ5df7MhkHIIgZgg8BRIWIT6yA84RgEmWvqhR4LI
fVJGsk+sYSj7N1u6c/l+2SZdmdjsbo0lKdP7/KMB1azthROIRsSqCdrDKIqhluHaQyxgGikXCxQE
3A19Fbo0CB7XYDrY27zVfm6UMuEb3nm6SkFnu/ToSsLwKa58RakwpFxGKMaQL5gQFPkMuikdC4JJ
IEkY8cel3oHfoq5Euk9du6NN4vg8ndDdejN70N6WccyjSkqB3BiSBoMVRp7EARIhF6DKiFEcPy7n
Ju4WYa3pAcIJ2wTE/+zKAiFtTcZDX7uRRCJQUKVzGiCP+VCiBTKkQJSCLTwu1f8cqgiAkt7nmVHW
zZDbnZq+wsqaNDyy/gbspc914PMYiciPoAKEQKiZx6Fy1ySmEXGlCJ9WjtzwaabHzbWWgsaG7ylI
YS7G41FTQfVUwGSc361fRUABdUpsmrC/bATgsRuFhCPFFKiGuR7UURFBHg5i4UVeqCP9pJR0gFND
XQfu9lo6kocUlyUdy9oKPD2/rPodurYuwqjteGyDEceQsD3PQ4SGAWJgbciHzhBxAS4XxVKGT6wd
rKg0dLX+A6PFmVffaimK1H+00lYUoam1MBtqguv4ZpUvzTa62nhDoMEmCpIo9gmEVkpi5CmGEYm8
iGschNiTjxtv2rDbjJk8wJipTTaZJLO7PNu1IdYGsB9pTD2FcOBBGQ5Z0zaZEdI0EjFjscJx+LiE
m6g7dLMDdF22WeC63PrFLJbJZLmtmSQF63eBOcdxgFlMUUgoFE1UKeQT8APXJX4cSy8KxSP3XwcI
tBWg2QEFJFsFjBZTcPo1caqqUhE8PbRFIYpU4EJFDbWDDrFCURD6kFlZQPQjJ9QG6jbbZL9WUrRu
spsZw6Sr6q/++tVfbSHn559/tqmUhD7VOkChZ2MdI1BI6FAhuEygXpTQWT2xLLHm0UwN60sttdAE
H1CLrZ7XLWaS3m9jnLS7gAITQQS0Upj4oAoBWtAkAMOnMvBjLwqESx/RBOqXLmdt6B3KyQHK9fZD
RbmYTotZUD7Ml8W2msRYW8+3ZVWsmEtVzFFMAw15L4qgZ+AegmuhEoErokftGRoK2CPS1kNKD+gh
3e0uFNM5BJByWG7Dn6B1FJCEqyBkCJov6KsDV9s0J5GMA2i+vYDFgfdUNNCm0FZAdiDF00ztFDB/
GMPj25RXbbxpLIIYOiUUxcTuPHEX+RGowfMl9CcsDDgJngj5JvwO8/29AsUEGWdszbw0acsBOLfm
z4C/qyMXEjtB0BpDCmBaIs/1oG8WgQepIcKPs6lyiH+bREsDTB5IByzJNmvfOX/al5gBf9swhGEQ
QFPJkEdCbNtnhnwJlkCkksoNheLB03D/NoU2eyMOsDfJlv3umHOf08rltVKRkNAcxVJB4o8l8l3o
pBX1I+irYyFw+DRYb6G3GY8PBDu4uCtu7f+osOGst2Ueg/JdygCjwKY8phXUthgL5AcQ6oMwoPJR
Ev8+7yaBDvPkEPPxhrk9/rJ1c6V5FeGlwp4QUOqEcRxCjgslgtAWIaJhBBXcE97TWO4G+hZrjvd3
BeGi2BS3pZkWH00zuvN6ubUXQwRDEXg5YhyDcwvobBSJ7RszT/rsafDu4u+QPxDceL199Hx3MCVZ
TLbdK9frzWAS0SjmMUYRrTQQ2QpfM8QD7Hu+F4Q0wE9CA10SbQ0ceHNiL24C3PrhkT3PuthWNza9
ewICBQGHl4LFiPnWAkLXRcLnKmRauziMnhL/JoWOCg55wCgd/w9119Ldxs1k9/MrsvQGOng/lnj6
eMZOPOM4Z3Y5zYdsnlEkDyV7kvz6r6pJNhtoKLNUayOaaJNCXRUKtwpVhX2lBNuJ3TBlzww3WG2d
5paAFQBjn3SBf4Grx4pUxcqMZm9NGGx74u87Bl/u1eVY4PLRKo52sYL2ggTNyYCnrwj8kEQA5SPO
gzZwJTXsCl5LtS4kluI0qPQswy1tLAN8zdNwuN8fz0VIVx3hZzPBqdWMFkeocsACU/LEc2aI8IoZ
6SKTLq0MmI5ENTa3poeNXWjMcf94OZ2bjtLQMdAhK18CLJOAJ/LZEVcKGpKiJM8hFLoySFpBGjj2
SzgU0wtVOe6f7h6vYcHLqWI0LkolDcnSe/ATBHBHaQAOCf6TZl4WI9YGxyRIhYTiHVOiuG2Q2N0/
Pk6s2Wh1NiHgDbPEiicKlAOcZQpm1WROksrAnD0FwsHXhMNMjAaFnj4o1qBwuL+d2CT2rIAd1QNj
RNlhWwVTUeBH4LA4InApqqkDihHXBMBVglp+3QmXKi0b8/B4aDLP3zBjxghipJSD20yTc+BAOXAk
mA9EwXpQJhamXVkTCq0cDRabDhbgPtbcYspZEqNZwP00MWsN7KI5GvArpEQbqYFZUM9CMBRshloT
Cn/0hN/YjvA71XDLU0HIdefE45LEA6x64NUpFU6E5gw9C1CC4LwFLcBA0qrEn8lQY9BjV8CcL+7V
+fP35+PcC69SGoziKYhGkxJgBUtmmQgOQISiBeEGU3aMYEqsildVglRIaNEJpWlpG224f3g63P41
aYNW4wEqeNFMZKJVBnIZGbpaDJxNAIdnTNvUq9KGuQw1BqrjbWnFO6bxMpHaOMakfJY0EW0TUKfE
NRhHsJVBFEGd8tEUujbjWEvS4GF7eLQ6MX5LVRxyhiMBJTCJOmKsAziCM8RlF4gsWRiwGrqIsDo4
5oI0aHQOWrVubcXjcL/bPPw5cQd3CTg7rZiQlMIKyfCDg9NhNfAHFplh4Iz6IlflkVeC1Ejojoeh
rWko1NNx2E5hKcXQFx13jwyggRZpEku0mF3AgUhFPIQENTEUHI68qlUyk6OGwXXYgx4mJvn9/v8O
9/NEgxs1kodMmabeJpIkUignPXGoCAkodAnWap/X4WDNBaglH3qGYTvFYq/NT+YhaONdKsCUhIpo
HJ3AUhMJxlFFHwtllK6DOU6zr2Xed/wGGGyUfmZDfv/68PhUW0QmNI146AYUGrZKxROxAraKGH0G
4hQ8PFupRZxJU+Ny2/EnYLCHy3lKHWCyltoFrKjCrAwRxKgcgXBhionUWGXTWnfO55FxPWRcB5mT
h9LBRSYvUy6aAArgdWtYL97QQCLXskQXGc1qne7W86h0iKZh44nlc1XPbwSX9kafE3+9KFS77In2
kqE18SSkAvuHNZly6gIQcsDk2Tk+6w6eChXaqYkNuoPzQtiG+xl5I0+Zqtx5R1UuRBtjMANd4MEi
JToKb22UwTP1TzP7By5mZCfh0cgWtpaHCdh16XjeK1JiucgI2yyDFeZDITZGDeY3sJhzdkq5f5zb
s8TIqM4+aDB920yn8N3QmvJFc0kVKZhrKLhSxIIdxPx9YxIwIpHsC1d4PBtMM7r399DqwgbPn/x9
e/t1fwe/riM+KGuRSSbwETgmoUlOHA/ACiMLQavCgTOtQvxWiAaIzl/fuqvT9L93h6e9mBLwFB9P
p0SUVnCiTORg7gNQIKmBDCqRCp7gBPrCpRrVtCuB7dAhAo5NKRfPBgvAaAkLLgC4Qx4TjaMjQaOx
oMVwnSx14oVTLZ8PDzjVMY1OT2nEd3//MQC9veg4Heu3tFOxFNjSDZA+TKl2Ds/hpNDFRh2cfGH1
nk+6ltZ0zhydneozNn8jqZ2SSsd8KlvAp7UJ/roRtiYhcTUzD6vZhcBFBJU2L1yOUs26ltd2mIpz
sqmo9o+P+yPO/FquxsbkUrRmEnY7DzyWwB4DTMUUSZwCu0ZdTEHGSBUNL59a+vF4+DE87WcZpguh
Zqmmi2c1ap3qFnu723bqP98eh29fD9vHsQABAaMGl0iS0gN1yURbh/UsGsxgloJEWCjMOJV9Equr
/rzI0tR+XobnEDm6WULkmDNNfQt+/mMqP71RIzrwE+MlhsYYuCZa6UyAmllwk4Hm+ZS0UGAyY7Fr
VKizMA08MFIhwzvdKcD+6w4yv+7/fAIjo06qo+SYvciA/FKGBxAIDjBLEqSRRLJSsge2XIpbneag
IA0sOFThItkytuQk3zSL6qJtC0t0Uh1qfQHXCEiF1MCsWCLBiEwC54GBI+UVZWtUnVaqGVjtoxo0
udyd3UDbpg9jl5R3v1y/FbTqRpxwU9qNpDSBA54Mgw3bCnCupAJ6GsD/lMWWnAxmArB1VUO1Ql1G
KoQ2nb4og9vsGoQ+vxurxM66BJ/AjT0DnS1MEW6dwCwi0COXAkk8miKylzGVVSEyCjHDY3w/R2Mj
7BKNjXCs2e9hAvdf7sbFxW/kqW5u/MeYDuBoNiZjMB8MEFAc4rFhBQ0Wvj1xIThfFSq/gDBv3+dP
M2AuQzU2btfBZpiYrt9iv/rDZuztP3k1sH5OtarKikKdJSkgC1Scw34lIqEsOSHBwpv4wqS3M/9a
/m1HN5Sw3QYy7/dfhu1fvTYyyqlkNceOSVi0qy0nAdlxkgxMsDaYj/Z8G5nT9y6ayZyGq+kauWQY
m1t9qh1v+jO+weWsM1Z9ZE6ysQlphSMem8rkTLVkVPjsXG9i9XfNplY/mE9uKzub/FYNbZXqf34f
jk9/n6bIbhiDD0jpLkGlkGyKJTmiYKlh0TMgCVMFS2Qytg7hMa5rpV3FmaF0HawQ0nrpTO8GJ5fa
doJnqWjoc0UbBDhaCf0OMM/eUEWUBkvE4I8Jm9kzitZM8Twyn98t2yzpyC2nLccPw+M+PAzHHZgC
LC6CD/BzkVEBv6cEr8ENxihPcIrYwDhh0rFIheVlDSV3Sy4yiTRDaBqrMOKdCBAONhih4bnDW9mu
Wj4bYqfYbowRtlsbiYoelN3itiKKB48o5sKdZtata7O9ijD3G6fBBqilObi1m9a0/hgJzE9v7KhH
p8JNK73UxRlirAYtcsYSqwIlFpwASUsWLIb14zJ7fhJy9uw0UOHl2NI44OCzinXzY799P0ZkTvp1
fivO5wYlaKeA2haPWUvodwN5o7BLh8wS9yqszJD+vxiO4s0xHAdqDDtJn7eDFpcUtx/p08dZdei4
BB3sK8YQ4P64yyhzKpYyRcJ+XrwPhr1umCqxK7QGs8wAut2b7SXw995/9PE/rslwFg+2YUVKlrE7
S2YAGKOM+JI4AQJkPbMaLFd+9YDNJa8g2y8L0sFxMpOChff+UwNY1FoFHRzh0gUw8hY0jEtPlGO5
MJ1yLK9fw65y/1uFzLJbASgM393uT+7Fjw+Hx229ILUA+kdNAoufLVBpWYgPnmNHQC88+P7Byte/
IK9yV3h1unnAIJ57ntTr/eF+Pxz93Zc9TKPRMx+BJ0tlCS9gxISKABwzkmhgzrk47lzgr39hLgGo
AVS6A6CeyuM/fRuOwOo6q5Rm5vAwm2vLMDgNlAOr43lQ2oAq8kLNq0evlb6GzrAOdGbKcwOfZge/
7vvx2j0Hc3xUidYySqKM6K9phkkA4GUqY4pSScdEXz1uregNbp0tgbmpSDn8/PNV2cbmVU47IRgD
HwnTqD0onc+JkhSUxKxZ2BXK698QJqlrsJzrgeUakltAyN6xmw3ZyOQkMc4BdDFo4qkQBHguYCkz
pSqt0b2cy1N1Nb4ONzDtlzDxYWJm+MGPuJavRX5OjFwjAKOIwDUEdglUmGImNcWON0XwkCPsoa8I
n46kFUxCd2ASG9G4mB/2T8Md5ibcWIG99vAVYxXM20yLJdnogqarAFjSkmICNc64UNi6mOwox7y3
KL6vAJGis7wk8Ifd1CXn2xEDoteyWXEuDc02S8xSLdSC5ujoiWXWEZp5FDZnGm186fScZu615Ep1
JN9Tt6tUAee///eP+e3cqlBYLMZrRfBk6VTSYW0WJFNudaDSybjKs9dJmHkw5jJWoaMkX6IDu83F
noztjD/FedsoNnaPZ7AdeSo1URFcFsECJS4HRZSUNDLPo+Jy7QcfPfkadIYOOmoqEnxb/vvT1+G4
n2W3n8+FTHJGYWWccyaCCSllPLAHV08oxYADscRfATyNgDU4y3xHGBympgxv359iWy00VBksMA9E
lyDA7QVC7QM2PfcOlIfF4kJ+DdDMxauBGVwPmKmPb/ztw6ePd9+/HO4/ff/27eHaj2uCSGrGHROw
mpiGxVWsJF6D22a4KQncEMpXFuZ8ZnH1Ba3B2tAOWJupTB8X6G8f4t0Br/uoLFBRliYbOAmOG2zZ
aPBAKJBitVbFGKo5fSUWqBawwWcRLGeM2/0tPzv+7+HDl24I14AJNlweW+BIZnhGLbIlc1SlQlxS
njDlEg0qR6degyHqiDmHiall9zsY3O07eUS/HXb7B9zlLR5PiVOWlfYui+gVcYaON9sY4iOuPaAA
oRQnzMqM0iRJk0k0jtXQ3C4jH0xrt8jPu3s4fvrrfovHBvjfkQlbz0uyIpMcJcZ0jSQOaBBx3vko
YsQ9bZ3JZ2dhKnTOYxU62i2DG2wQ7and8H13eLh5eni4w1pAj+9+Pb25aNIpuRkbDVsLPEhnETDb
lxNnNXbaAkKUqAtRrSymOxNlzhZnwxVem2EZuGWb29azKkcQZTwjvXrrwtoxeWZ8xdwIzChSQIqM
yoCVogrrYhksvKiTNMoLS1fpky5kq6If7cMKvjGrpIVv61gD36dvx8P9lwa/eWpf5hh7LIGAe4Md
3ZwjDs0X+vK5WGWdi2vEriPYvKft8mmN3nbp1rOdst3FitZwVOOf3shzet/4OpacRHDgJDixheF1
XzQTT6knEXP1BZAKY+PqrP0oS2Ptx7EKop3tKNjOtgm1v8Y4d3SxASDLORJvAl4ykz1WICqSGYed
r5RI6SrVCcSYIQLvGiw63GlP901+HwL5Yb87DBMiDvNqsO7Qc15oTgmWmUcThY1RsTITiCfQzCSZ
DHZ1ijLK0ijKOFaBs+8pyn4YGnDCsP2ff7BDljvpMyuEZ4ot8p3FG1cyoTJFK0MWTMp1pvU0YlXp
Pc2zGrddT6n27QI7fMNZPU6zmuZ3YvrzxcdNkgpoOimaRiKiS8QzmwjmSqKvXMAerdKW1yLN7Xj9
pMZv38HvFq+s2NQpyPPLwk5gSTvWj1FntNeaaKoC+n0AF7bhKgabT3kpjfFrhGsuUZWW3L0ujHGq
li4NDKqGKvgvX477L/Cr0mG8thfvAZ0pl4uwqSVsY8cE+H94g2CIGJLSSniMuFCzzhDmUqw5PV0+
bbDbdrAzrTv4+XF//Bnb4FxEvyB3yjZzKQVsCYl3oGB/JxeJZQKcwsyVMpxruzLfeSHPXM/aZzVg
wzJKzsHdG2u+663y87tpPXJ1SoJ3SVNYd0QVBRRUxkC8oFhdraLwMuas/VpLlD6/a3bKz+8qYPiy
3zJwItqaq9PtHFgo9zQpkRDu3POjMKBVJmQiGZ4jJKBXNmZJTKHG2OJKznyNAM2kWtxcN45WUAnW
gUqxtrgEQT6nduKlHCdNOp0paCMYpqMbivd7AYEgDu8kkVnj3avG+8BWx7baBM5prMJG26XnwvVG
NZ7L1ZzN6RafLJJKVrKgHQnGMyJo4sQZ8GOUzspTIWleJ91ayjVDbPmwhm7XseWGt1VdIPM5yjyu
v1GtuBu7kSUgDtaSNPa2tU4TK6UnNJqctJLBl7DSQ7xL2Lw6xTsPVhh12jDA4NBGsbDM8N39t+9P
NYnHvq7GgvfHPAY/sQkVFk6SAt5PChJMl15lneAkztwHvIxV+Fi6TJ/jdt+mUH88Pjzc/td+2O2P
WKKM98oJgwY8aSMtU554i/fTCp2I88CnLGMJG8Fam1bJomYCzTCajVYoOd4x4M62VSgfv/71eNg+
zksEcZll6yVYaHCVsf2hAHRCKRw8wcCK9AV0bJUZOFdp5ghNgzVAm2WwmG+wxGPTLrPvsAv8gvgI
Ma4zMWbhcF2ASgrCU1HYfzwQi1tdBDKgjfJY9bvWhTYK1Cy0caxCaGM7xnqr3SXPZLhescdusP04
8kdni1BCJEJLQB+l4B1UHG9twEIXZ3x0/oVvrO1csQdymeXJiqAb1liVH4cxNaUM2/2pegvvnsHL
r8dX9GhN5oFqLMMbO4dqQQJoClFOCipZTIKvcle/SDQPf5+H5jgJvl0eiAt56hBxSlp7vPt999f9
8Mfh2mFX34x3MBrpWVDJkVTE2CpOEJsoJ0WVkF0y2aoXriRdzr4SXrFlnE1YRRslGc/tZkdKdRyS
FovXViRSIjYNlBFrK/CoxGYfkueGuXVdfT0XZ35H52y4QskuL+9iwm3aK3J/fv/xAo47XWEYgtQJ
6yc4w/Q0aRVxARzQGItkNlLYqlfJ7kCSGS7wroLDdbxOMVyvfPnz8e7pejkyU+PZowfnoEiRCbib
Du++BTNqLCOc2oDJekB18wvfBD2bdiXvIDqLZMALgM35VqPj4XGqaxjT8nmUDO+CTj5jgpXFS00Y
wxhqdtlEnvwL9xmaz7kWdtlEiomNbi3C++H+y3fwIz/ApO8O918mq8CRSuSgqchCERkFdj7xmVjD
IsmRSnCcS8xmlUHjf1V3Lb1t40D47l/BS4H0IJuiRIoK0AMlSoGbOCkSp93diyHbcuo2lgNLadp/
vzO0JethG+hhUa8CJA5pPmZEcj4OhzNtqmqToJ3VYNr0wHGFM/WrUCez1UsV70sYB/1Uo1y1YCwI
DPHpWEqhS+oIMKryXV/xP4wp9j1uEnrAEN6ZztpbuXlSAH4v0hnUnM8MrPC2jnEco0oJFKdBFFsg
HzU61eOWooxbAjgRh+hiND7L69YayNIlWS1s0clr8i2dH+DbIj2gfYpW62/LSom59UDlUQ+DOAQO
OuKLeGz5eOkarTnsSGuuo+hcNZiGmpYCyqQ12DOzu8DcmdO0XGGXs3X2o8/2sT5Qbalp7DCHWjFG
VHc0Gv5ECqCYp5mA9cfj3h8OB93odYPeeffSNCSydoBgcy7a8AVS4QuvDKHmUSF4RC1bgJBxNGN4
G4BbIIFULESoPd89s9sAbZoaVwPamQ22LQ7NIkhsse1LOv20WWMlN2ujXEh+Tl+z+XPaVCyBWPJ8
hgH3JFewsaPUklEgrdB3aKyl9CQ7A3DW4EZgyMgHRyns5NT5J33axbHS7ygrt35cxmle3L9maNE4
zL7BupbOgyYXTVgJHjAYa4D1hQdAJ/QA6DieFXqxjqgSlNl4doDHO/ng8SG6r+jacwKXhIoFmI5K
1oH0PB54AJhdDXLS5QyDgIKwjF3YjXLAkHZoD1DODCrLy3yw7WD9lQ1cGkWMRQFMEB/q0VBjoCJY
PF1GPQEgLVb+oE0xVGBeMtoHD7O8k99kSH/P+xPfar6JboAfSJTTA8Yfpdp5CONtk+GNIOYJVB97
iCQCXymQA65loz8V44APuA6LomAi4qEteKjPVTa0KWuJiXZ2k4FT9wADp9WV40ZA+ugnUJmbI8cy
iFrl8V6GsZTSEZbrcYywjWOZuzZgkYC6TLvUYX/Y4etJUppM6bqFwsRpx5g2g7qyInxO8rx5U5HD
XOZSCYzzoHHjAshM+b4VKdiywtyJbRmf53BqkNQYSY2cBr9QCHf4lcoKtu+cDeGMbl2GMFbZtozQ
nAM297C1cZxAw9rnodojiGQsJPWNYrDj1OhExY3eLezuqbdcsCp0xdUD3jJs3H6SiK4FbLqYrYWl
fAwaTdGxonJgxdMsFIC7tYy9/9dtyg6ldT75dtdjj40RfQ6YU4xMQMZVy8TJjiWIKV+BlEENbxz4
lu94ALdVEGoqQNJEZ6nhbFLUsqbYZzSYdWjIJ7bTNvG9T95CqG2T9EvkBPs3LLaNW2uLCN0vY5hB
VHtq3wrwEiYgzgDypAzlGVgM1GXIoE3QPqG3ZQNib+Et6vZfu0RJmUhcYA+G+yYXjqB9hgcDOpR2
iPZwgtuIHwF1S5j0ls8k/FDOAuMYuFzJsXSvh+u3keKj9byydiEPr6sVdPkS+hImz885WQF2I9Nf
ZF18TTfkZYvoYKkuks1TWqC+pfi6zMuMS0NDkeTfJ8CryctyfknoNm0bFmQGv4u0lZinxQSWxjK9
2fB/XD38U6MKOGDawwDbAOQOtccZ99nvtdn7PCL36VODv3iueJc9/yK45mLOekG242WZ5pdkvAYZ
+4HZbt8ekU2aL+cwUD/Q6wv67j3J32D0pvPJ+rWYQLdeMxOwDhqb70pcALp+9773ZbMskinMmY1p
vKrW7rMr8gaZMPrLOk+0USbV28Eqdq2QcloffT4P78eP6gY+3UdXw7tb0tv9Hf/9KTpW6GH4j8kL
7x5vx+QiW2fWbJ3AnmOWzt+T3of9c7B4lVd+6KlZsfyBO9fxJpnhwO0+jIvr6jPp1eft4U7ikXm9
hF7mL0kx+0ow8u4ye92Zy9UeV/bpqFbi4wP5OByTpzQzDiLmBFenViN9elUVJ71rE5CEKHwX5C6b
pYc6JqteOaQ3Ujc3d+GJFwTLbt8te2V7VYmnV3RS+IJGSN3HYVUbUGK31yPAs5c8JcNssW4zl7qy
zquHsQqvydWjutdHusVFjVfQxkORzL6fHGk2xfmyL/F5NDGUqPHRcQb9qvNqu3UiIzPUD7ch9m04
QMdkotVYneoVA4C/KwF4AEvcDG+vIw3v/cgjnL6/K8GEwBLj6K/xKcI57YuyDdeUeLwdhnf6ON2E
N0f7ykx4sgCIf4wO3ncq7kIbubnzTFbpar35dayMe10bu78/a8d3Y7NynKK9z3fzQ0hOer1/AVBL
AwQUAAIACADHgSdKSYUh/4AsAACgxQAAOQAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRp
b24tY29tcG9zaXRpbmctY3Jhc2gtbG9nLnR4dFVUCQADVYRxWB+DcVh1eAsAAQT1AQAABBQAAADk
XGlv28iW/Tz6FfzUkJOUXRtrEfLS4NrPrxPbsOykB42GQHGx+SKJakpK4vfr5xaphaTkdNTJjA2M
gdgyWbx1zq27Fsu5Kos4XSwGVvsrLqan0Xw+SU8/pONf86X54RWzZTpbnvrpp3RSzKfw2fpdYyrV
H72raHnflQFfZ++LyWqaLs7eX769fRecvThbi8vKaJp+LsqPZ79decO0/JQDirOvzfplHp99I6re
eQLf8yxPy8HfINV7n5aLvJh1+QjMX1p9+H5KTtnLk55XJKl18zBP2wN/UwIJbvUvomX+KT0B1ZRG
U1cdRU+i1Sy+T0aLfGr9rjRV9I/edbqYF7NFPp60ZB67GLeLtLTO/S5+G5Nez4+W6dlNPu2ApphI
hAnC0iJigNUAy1NsCwthhXHvcmgd0sm7KLbg1m8WwaeEnAqrT+xfCMb8BJjMi3K59xQhPWdWzB6m
xWph3d42MIaB8EOiFKK28hHhwkeu7WkU+tRzdKiEQ7xer2eQW87n6GNqDfNZnFpuUSwHls0xxtYi
jYtZsuj1hg+LZTq1zkFFd2W+fDDKX6bxsoKS5IsIFJz0el4ZLe7TxLq5L9Mo2ULBluXni3m0jO+t
P1fpClS1W4FplM/Qsnqg1wu+xOncSG2bQfCbN3Idf+R4XjAcWv3h+S/D4Jf3J43xxna2tvBrcH0x
Or9477w9h4d8/9o8FS0t/AV3vhoSLoBRa0bv8vpqGIwuLm/Ow//u9d6/s67TOxi5sC7SqLTwoIfQ
G6tnho9GN8FvN3veup6EYDXONHxAzQtjo+HfzTD16x9Wib6clZ+/WMN3//AuPzyZo/ccGJTHUaWR
4TyNweljWPesKKfVxQF4aZkO8+lqEi2L0mKYnSoLWSAEgAys/Oq+mKWWvbDqiaybFEynlDDkegUx
xPhJDjYOFo7BvLnDuH2yfb5e9a0MMM/KMMCC1qY1GHyjKeGumxvYrcX5r601EJylNkmIstbjBoPr
dJak5XD5AIFjUMzT0pD9R//Q/Z9+OrFeWhQC1HWaeQWQTJPT+4FWJz1yDAiCRYQlkO1MEkxSszSD
wSJdVhM+guLV7sHqip9nWQqRMk4NPoaJAWjGX47/Da4LEAmRJz16nKJiwuR4vJvKL+JVDa9M42gS
dxCuNejdR7O7Codt21Z/89BpPJ8PiCL4pMeOhcEzTQ/BiGH5l2nN9KZM076ZFcJfZ1ZKbJiVHz9r
cpB8kicuBMtp6q1Kk502d85nofHXCoStu8yFAiOxj8OQCEFJvMNQya+MYyO7/+EmNLaRXS3L13tY
39T2SozBns8W4OJg2fBhWVa3KycH26A2PemJI9Vjs1TG++r5ACkDKofBGMLnbGcbt9dvQTrMDKY7
LorJq/0nXxioUCBY/dUyn0DiGUibnfTkkbhYHGfJvvS3RZQYXCBqmi8hkUf9+B4iewXqxStrBZXD
3Qzy2aSY3RkkmnWAqKOBSEUeB5Lls9xEOfN7PrvrJ8UKEmsVXmjDberhaxOCZdJHouBEZvxxFNPo
YZyaX4LpfPlQma4mosOc4GPnjLj9+JyLZVQu17TfQRiHwq1YlfHacRg7TN7GBgk50n8SHY07/rOB
Afpf1oShbus3btUxQ9kwHd2vH61Hp9M0xZSM18lwMICfa4et49SHfHlvcBjOdaRojLyK7tIXrzpQ
K5cgCjSykVXrghLAxo7CxnAmxsrqzLj90G/Zf/XtVXewZ1hAxICaHJCAly/WLl3lHGGrrtnwIxGm
iuF9hLXyvhugTaukbVKhEADOPg6cFroOK9sJ1y3JZnF/kB6V3dWiOA5oBP9i61ORJ9b5lTcYQDZO
Juk7gApTv17/XLQpeE0Krw6wfFUL7B/i/+Lk+0i/6Vc4fUip4Hw/HZr+xf/m/FXIVZCv/9nUFNgJ
h6KByKO0TxLGeFYrHkru2bptgpKhrmPXwvuLJVS3oxEZDFazHGrb0RzSd1MNr6zdkCTNotVkOUrS
CQBvDXtjvalCBAH403RalA8DKjGkCahvj8NtR/IruC9nG73UJZa0G/NRMx/kpX9Fn6JhXObz5V5U
7gZmEiUZLFddvKxmb4tiPhhA5W1ajw/Q71SzMJMKNrPYFOIxxUfOklJMvzKLMaoqxjJT0dcjvLCK
sUzDdK1sY6YLoeRP6oZpb7qIxIxBghqNvPD69uLt5eXV6Hw48py3b88vfhld3t6Mbi5Hzmh4eXvt
BXh0FVyHl9fvRuHthXdzfnkxGlWa7VF63KyRsnVcz1oz8IthlU8XuKrBRY+yIyXKSImmRPhRFQaq
R/mxorjmVlPQttF8aXGKe7QVh7vCugJVrClW2EK/XwzXIvvbTydWuZq9A7eA4hOWODW7NYM/jHdL
3qPiyHlIZo+/Mo+RK0G1EB8m+Rja7tPkAT7s7+I1xY61zmSsrRGMHxXjf8cj08YaTWDQhDpOFCg3
05aRtBZClO5R/dUdry7NcRYxm1sbFFDo9Xc7DaZOOZ1OB4SZng1X6ABZ8gi8FjqRcKESqyr1DLRt
d0++2tWbGdY30TSaQbwpq+4eri+qbanRx7ScpZM2hNbMEcYQL62P6SfgO/qzWJjpcdWeN6Qf4NDG
L6GAH1ujzfjR9K4cfY7y5Qgsa1TJNgagq5b6KLka/LUjN599Kj6m1caCqprj4wQqJTsC630R4/18
q3g6+BuatFMKccDsQP1ZjS/T5aqctTS6ljav52yJa0tjxJbK2gwcff5zi5JQxTaK/GZxNGOc1AbW
ksW2jNn/O8b87zCGMA2MF+m0Mm9TSEWTQ3zjvzJFqVMcCWsWzYrFJE3nRojeekj88uUpORw6WikD
jxMhx43yZ3mfL9YWDb2jEWx8sFFCxfdlMSugWFmVVUh/3agCd6Oqe6/J5BUw23xNoH5q1t648r5j
KoyEKZLVxelfIf4WWAbQdzLrcBJQQ62hcE7qXbCjCFKREWs8jSaTIh4MjI3czqA/CaPJ4kAdC4M+
vt6OHpotpvjdapl+efNTE/LfJVZvHtWbWtAA90ejqRE+GkeLdEC0rHfYjuNnc7zj9880ghpxEUcQ
4e/+7/kZYhz66Kgso4cB4arelzuOEEt4lxDYQ1xvVg431CrjUF0VMlLvuB3nA5o3TMRZPMzim2jR
0JMBsWnhOsigezt5Y1zGmOim1Kp2ZSSoYVlM83igFK233470TJ78EFTBbFk+XBX5bNn/HnFVo0F1
tYN3HJEoSyq5Lxq2M1oHmNG8LL48vG4EnxUUUq9rGDDv9yF+9V0KfGGi2bbH0qzZM663FY9Lp1on
u3Q6LpKHKv2RalvwSEkk2knaVqlCVVt+RyZlm1hdQbuUbA+a9e3F8Pb67a7Brvcbj83ZOoMugkLR
bqq9xd1oWUbzQwn7WwSxMdsKqrrFzjuib2k/5Zg3m8Vt9xDfXxWVOiihnXc+39I4xozs96CEcbvz
JucHNKHt1zJeeJEuTQX4WIkSay10ZL38vbOc/Xo9T6xRud7SNheqbYc/qi1S0nnL8tdtaEQyabR7
MaztaVTbWL1XQDmrgvWPcSJl/TAn0taPdSJsxevTBp/z5b05JLI+dmCZDJxafcHROF+eDHqWVUZf
BtuX/8p8E6l5+26V48aN3RfciB+7kezfoNCpmzt54w4hscwE5uaRxfaGzLLMlhibfW0z+7x7g2ZJ
9cSBG5GZxCpVa5Jxpig3W2BWqfcBQxlqlQQ/woQQcwPkZ6ASEvMsjllcMSH0ESaE7d+oZfFHKBL7
wOzKTJLPm7K2r+CtMpt0HiHYbNnBetNDTEBW721xl8fQonhXt/URDt4LyrIoq2Mh60Md2yd578ZE
x4vVdLw5z0SgJ+65+SwqH6zzabUZ3tuc4fiyPb5hIat9MQKuX99b6VdnnJC1PeRkvcaOp5iNNdKO
ChELiUAO0Ri5ofZDoZQSrvPmqc5/NPnFtaG0ScdUSSytl2bTpzpq1WcCn1IKxAKlAhr4NpI2w4gJ
10OushXSAfY5cTj84gKxxgmTxdlvZsvaIDtbo1mcreGk5dnVJFqafdnFWX0iZHvq5HS+vtMYPPR/
3R+3SD6erRblGQSZsw3iNkdJ9jmC/WYZeyQo98WphvGQdLThLFwcKuwjHGiKmA5s5LrcRTaGZfRc
1wul9wSc6/NaZ2/zcQkmfRZubGZxtmPSsKTdxaZyIJRHe8rRPCFZdugNyAFT97SnpXZc5CtHI8Z9
jlzpO0gSsHVJAk5D+k2mXl9ogRvH2T64TCdplFkvYb3NVuqps04wfYkF4BGSCsfxJaKhweMEAXKc
0EPKk9RzQkkDhZ/QQjuom3QjLO09uhGOx2YtXna2UvoMy1MOfEMv9AT2XES4zxCjjo8cHQYogPBD
bOKFVJGn5duA3aJL6H7sgYvEBFxDtzbwDV9CmTKRlSjuUDtAXmgTxFQokBKMIKmIT8DRBQ7E09Jt
wu7wlft8uU47CaZT1+5ikaGvXeIS5nGwbs+sNjAHL8OIU4djHYRQocpnFYvabBru3r7RUpQg+zEp
Epw1/CAa501HMKkJsiy2XZchKbBEjEhwBEe78A1D1nJDCgbz5I6wxd0mbNN9wlLSjmW8K8b5JK3O
Zq5rAgh60j6lpxyeXX8yIZByCIGYIPAUSFiEusj1OEYeJlq6vkO8wH5WRrJPrGEo+zdbulNsv2yL
lOAmuxtjicr4Pv+UgmrW9sIJRCNi1ATdYRCEUMtw7SDmMY2UjQXyPG77rvJt6nlPazAd7G3eYj83
RpFKN7zzeBWDznbp0ZaE4VNc+YpSvk+5DFCIIV8wIShyGTRTOhQEE08SP+BPS70Dv0V9bIt96jG3
N4njy3RCd+vNzDl7U8YxB+paKZAdQtJgsMLIkdhDwucC8m7AKA6flnMTd4twLOMDhFWyCYj/2ZUF
QpqajPuutgOJhKegSufUQw5zoUTzpE+BKAVbeFqq/zlYEcSa7fEcY5x0M+R2o6avsDImDY+sPwF7
6XLtuTxEInADqAAhEGrmcKjcNQlpQGwp/OeVIzd8mulxc62poDGN030FMYazbNxUUD0VMMnyu/Wb
CCigTolJE+aHiQA8tAOfcKSYAtUw24E6KiDIwV4onMDxdaCflZIOcGqo68DdluKYfUhxMe9Y1lbg
6fll1e/QtXURRk3HYxqMMMSSOY6DCPU9xMDakAudIeICXC4IpfSfWTtYUWnoav33RYszp77VVlT9
NyttRXEijIWZUONdh8NVvky30dXEGwKFLVGQRLFLILRSEiJHMYxI4ARcY8/HjnzaeNOG3WLMKTnA
mNJNNplEs7s82bUhxgawG2hMHYWw50AZDlnTNJkB0jQQIWOhwqH/tISbqDt05QG6LNkscF1u/ZIu
ltFkua2ZJAXrt4E5x6GHWUiRTygUTVQp5BLwA9smbhhKJ/DFE/dfBwi0FSCTAwpQWwWMF1Nw+jVx
qqpSETzdN0UhCpRnQ0UNtYP2sUKB57uQWZlH9BMn1AbqNlu9XyuN7brJbmaMNF5Vf/TXr/5oC1k/
//yzSaXEd6nWHvIdE+sYgUJC+wrBZQL1ooTO6plliTWPZmpYX2qpxVbRAbWY6nndYkbx/TbGSbML
KDARREArhYkLqhCgBU08MHwqPTd0Ag+auCc0gfqdy1kbepuy5gco19sPFeViOi1mXvkwXxbbahJj
bTzflFWhYjZVIUch9TTkvSCAnoE7CK75Sni2CJ60Z2goYI9IWw9RfEAP493uQjGdQwApR+U2/Ala
RwFJuPJ8hqStoK/2bG3SnEQy9KD5djwWes5z0UCbQlsB4wMp3o7pTgHzhwwe36a8auNNY+GF0Cmh
ICRm54nbyA1ADY4rpdbM9zjxngn5Jvw283h/r2As+DhL2Jp5mcYtB+DcmD8D/rYObEjsBEFrDCmA
aYkc24G+WXgOpIYAP82myiH+bRItDQhxIB0ILTdr3zl+2peYAX/TMPi+50FTyZBDfGzaZ4ZcCZZA
pJLK9oXi3vNw/zaFNvsEH2Cf8C373SnnPpSFxuW1UoGQ0ByFUkHiDyVybeikFXUD6KtDUKf/PFhv
oXcYx4cYx7vi1vyHChvOelvmMSjfpfQw8kzKY1pBbYuxQK4Hod7zPSqfJPHv824SaDNPD6Q7keoN
c3P6ZevmSvMqwkuFHSGg1PHD0Icc50sEoS1ARMMIKrgjnOex3A30HdbZAdYZ3hS3ZTotPqXN6M7r
5dZOCBEMBeDliHEMzi2gs1EkNG/MHOmy58G7i79NPjsQ3GS9ffRydy4lWky23SvX681gEtAg5CFG
Aa00EJgKXzPEPew6ruP51MPPQgNdEi0NyANvTszFTYBbPzw2x1kX2+rGpHdHUOjhweGlYCFirrEA
37aRcLnymdY29oPnxL9JoaOCAx4g/4e6a+mO49bR+/yKLL2hDt+PJZ8+vmMnnlGcM7ucUnfL7nMV
ydOSPXF+/QDV3dVFFpVZqrSxInYkE59B4AMIgIO+3VVKsJnYDVP2xHCD1dZpbglYATD2SRf4Lwj1
WJGqWJnR7K0Jg01P/E3H4Bu096ISv8qjna2gPSNBczIQ6SsCf0gigPIR50EbuJIavILXUq0LiaU4
NSrbnmXYDo1lgF/zNOzvd4dTD9JFR/jJTHBqNaPFEaocsMCUPPGcGSK8Yka6yKRLKwOmI1GNza6T
/zI7vtCYw+7xfDs3XaVhYKBDVr4EOCYBb+SzI64UNCRFSZ5DKHRlkLSCNHDYJRywtFCVw+7p7vGS
FjzfKkbjolTSkCy9hzhBAHeUBuCQED9p5mUxYm1wTIL8VAvdMSWW8QaJ7f3j48SajVYnEwLRMEus
eKJAOSBYpmBWTeYkqQzM2VMgHHxNOMzEqFFgPX0QNw0K+/vbiU3iyArwqB4YI8oObhVMRYE/AofD
EYFLUU0dUIy4JgAuEtTyy0661MpdYx4e903h+RtmzJhBjJRyCJtpcg4CKAeBBPOBKDgPysTCtCtr
QqGVo8ZCqQ4WzjXcYqpZEqNZQH+amLUGvGiOBuIKKdFGamAW1LMQDAWbodaEwp894QfeER7PQcUt
j/0gF8+J1yWJBzj1wKtTKpwIzRlGFqAEwXkLWoCJpFWJP5OhxqDHrhwdzuHV6efvT9e5Z16lNBjF
YxKNJiXACpbMMhEcgAhFC8INluwYwZRYFa+qBKmQcLyTSnOCN9pw//C0v/0xaYNW4wUqRNFMZKJV
BnIZGYZaDIJNAIdnLNvUq9KGuQw1BmLoYbDpmMbzRmrjGJPyWdJEtE1AnRLXYBzBVgZRBHXKR1Po
2oxjLUmNh+xYCFhsdGL8LVVvyAmOBJTAJOqIsQ7gCM4Ql10gsmRhwGroIsLq4JgL0qBhemi0tuJx
uN/ePPw1cQd3Tjg7rZiQlMIJyfAHh6DDauAPLDLDIBj1Ra4qIq8EqZFQnQjDGdZQqKfDsJnSUoph
LDp6j6w11cpqEku0WF3AgUhFvIQENTEUAo68qlMyk6OGwXbYg7MTk/x2/7/7+3mhwZUayUOmTFNv
E0kSKZSTnjhUhAQUugRrtc/rCLDmAtSSu55huJlysZfZJ/MUtPEuFWBKQkU0jk5gq4kE46iij4WC
Tq2DOU67r2XeduIGWGyUfmZD/vjy8PhUW0QmNI146QYUGlyl4olYAa4iRp+BOAUPn63UIs6kaXDZ
9nDZ9nA5bakDTNZSu4AdVViVIYIYlSMQLkwxkRqrbFqr53wWmV2n+hEWO8gcI5QOLjJ5mXLRBFCA
qFvDefGGBhK5liW6yGhW6wy3nkelQzQHOt5YPtf0/EZwaa/0qfDXi0K1y55oLxlaE09CKuA/rMmU
UxeAkAMmz+7x2XBwYB1VHrjCcHDeB9twPyOv5LFSlTvvqMqFaGMMVqALvFikREfhrY0yeKb+aWf/
wMUG3il4HEQLW8vDBHhdOt73ipRYLjKCm2VwwnwoxMaowfwGFnPOTin3j3t7lhgNsuMHByzfNtMt
fDe1pnzRXFJFCtYaCq4UsWAHsX7fmASMSCT7wh0ezybTBtn798D605u50H9sbr/s7uCv64gPylpk
kgliBI5FaJITxwOwwshC0Kpw4EyrEL8Vogail0MZbyhOQdP/3O2fdmIqwFN8vJ0SUVrBiTKRg7kP
QIGkBjKoRCp4gxPoC7dqVNuuBAaKtxR4Q6eSi2eTBWC0hIUQAMIhj4XG0ZGg0VjQYrhOljrxwqWW
z6cHNqJjGjdqKiO++/vPAejtWcfp2L+lnYqlgEs3QPqwpNo5vIeTQhcbdXDyhdV7vulaWtW5c9zo
qT/j5m8ktVNR6VhPZQvEtDbBv24E1yQknmbm4TS7ELiIoNLmhdtRql3X8poOU9mYXdNR7R8fdwfc
+aVdjY3FpWjNJHg7DzyWgI8BpmKKJE6BXaMupiBjpIqGly8t/XjYfx+edrMK04VQs1LTxWc1ap3u
lg3f6E7/59vD8PXLfvM4NiAgYNTgEUlSeqAumWjrsJ9FgxnMUpAIB4UZp7JPYnXdn2dZmt7P8/Ic
oo0YOhBJy5r+Fvz5j6n8/EaN6MCfmC8xNMbANdFKZyIEtRAmA83zKWmhwGTGYteoUCdhGnhgpUJG
dqZTbLSiHWR+2/31BEZGHVVHybF6kQH5pQwvIBAcYJYkSCOJZKVkD2y5FLc6zUFBGlhwqcLF0GVu
aWOYag7VWdsWluioOtT6AqERkAqpgVmxRIIRmQTOA4NAyivK1qg6rVQzsNqPatD40jtvNrft0Idx
Ssq7Xy+/FbTqShxxU9qNpDRBAJ4MA4dtBQRXUgE9DRB/ymJLTgYrAdi6uqFaoc4rFUK7zlyU7WYw
DUKf3o1dYiddgp9Ax56tdYUpwq0TWEUEeuRSIIlHU0T2MqayKkRGIWZ4jN/P0dhps0QDFm8afw8b
uP98Nx4ufiWPfXPjf4zlAI5mYzIm88EAAcUhHgdW0GCF1YkLwfmqUPkVhHn7Pl/PgDkv1dhY08HG
TUzXb3Bc/f5mHO0/RTVwfo69qsqKQp0lKSALVJyDvxKRUJackMDwTXxh0tvZfy3/TUc3LOfdATLv
d5+HzY/eGBnlVLKa48QkbNrVlpOA7DhJBiZYG6xHe36MzPH3LobJHJer7Q5iyTBuuTr2jjfjGd/g
cdYZuz4yJ9nYhLTCEY9DZXKmWjIqfHaut7H6d822Vn8w39yt7jj5W6B6jTP7z2/D4env4xbZFWPw
A1K6c1IpJJtiSY4oOGrY9AxIwlbBEpmMo0N4jOs6aRdxZihdFiuEnFoE02CYzW6pbUd4loqGMVe0
QUCglTDuAPPsDVVEabBEDP4xwZk9o2jNFk8rs/0xLocFHYHF25bjh+FxFx6GwxZMATYXwQ/wU5NR
gbinBK8hDMYsT3CK2MA4YdKxSIXlZQ0td0suMok0Q2haqzBSywzQuNhghIbnDh9lu2j5bIkdc7sx
RnC3NhIVPSi7RbciioeIKObCnWbWrcvZXkSYx43TYgOUWwKFUxNrZf8+Epif39hRj46Nm1Z6qYsz
xFgNWuSMJVYFSiwEAZKWLFgM68dl9vlRyNlnx4UKrw1dGgdcfFaxrr7vNu/HjMxRv07fitO9QQna
KaC2xWPVEsbdQN4oeOmQWeJehZUZ0v8Xw1G8OYbjQoPhZonhVm7PJW7f0/XHWXfoeAQd+BVjCHB/
9DLKHJulTJHgz4v3wbDXDVMldoXWVi0qgJhgWp8Tf+/9Rx//41IMZ/FiG06kZBmns2QGgDHKiC+J
EyBA1jOrwXLlVw/YXPKfKnSWDelMCDUpWHjvrxvAotYq6OAIly6AkbegYVx6ohzLhemUY3n9GnaR
u4JLLKcVMIGP++2O4cX3D/vHTX0gtQD6R00Ci58tUGlZiA+e40RAL7yUIlj5+g/kRe4Kr840D1jE
e8+jer3f3++Gg7/7vINtNHrmI/BkqSzhBYyYUBGAY0YSDcw5F8edC/z1H8wlADWAknYAVFN7/PXX
4QCsrnNKaWYOL7O5tgyT00A5sDueB6UNqCIv1Lx69Frpa+jUTQc6PdW5QUyzhb/u2+EyPQdrfFSJ
1jJKoowYr2mGRQAQZSpjilJJx0RfPW6t6DVuuuMSpJmalMMvv1yUbRxe5bTDN9cgRsIyag9K53Oi
JAUlsWoWvEJ5/Q5hkroGy4oOWFY0JLeAkL1rNxuykclJYpwD6GLQxFMhCPBcwFJmSlVaY3g5l6ea
anxZbmBaxgJCuYmZ4Q9+xLN8afJzYuQaARhFBK4hcEqgwhIzqSlOvCmChxzBh74ifDqSVjDpTj5F
aLdtQswPu6fhDmsTrqzAWXv4FXMVzNtMiyXZ6IKmqwBY0pJiAjXOuFDYupjsKMd8tih+XwFieOd4
GeAP22lKztcDJkQvbbPi1BqabZZYpVqoBc3R0RPLrCM08yhszjTa+NLlOc3ea8nFbUfyzeC2lSrg
/nf/+pjfzq0KhcNivFYE2CU9tnRYmwXJlFsdqHQyrvLudRJmnow5r1XoWL6Mi2Fx6n4axxlfx/nY
KDZOj2fgjjyVmqgIIYtggRKXgyIKiFZknkfF5dovPnry1egI2UFHTE2Cb8t/X38ZDrtZdfvpXsgk
ZxR2xjlnIpiQUsYLewj1hFIMOBBL/BXA0whYg7Osd4RFOw1lePv+mNtqoaHKYIN5ILoEAWEvEGof
cOi5d6A8LBYX8muAZi5eDYzr2Frrpjm+8fcP1x/vvn3e319/+/r14TKPa4IIyDV34NcJ1jcQUawk
XkPYZrgpCcIQyleW5nzmcPUFbcDqpJrsMLXp4wH9/UO82+NzH5UFKuDjkw2cBMcNjmw0eCEUSLFa
q2IM1Zy+EgtUC1jjMyyT5VIZe8tPgf97+OHzNIRLwgQHLo8jcCQzPKMW2ZI5qlIhLilPmHKJBpWj
U6/BEHXEnMMk7XL6HSxubKeO6Pf9dveAXt7i9ZQ4Vllp77KIXhFn6PiyjSE+4tkDChBKccKszChN
kjSVRONaDc1umfmQTolFfd7dw+H6x/0Grw3wf0cmbD0vyYpMcpSY0zWSOKBBxHnno4gRfdo6i89O
wlTonNYqdJxZJjfklre3dsO37f7h6unh4Q57AT1+99vxm7MmHYubLWPMWuBBOouA1b6cOKtx0hYQ
okRdiGplOd2ZKHO2OFuu8NrZZeJW7rZtZFUOIMp4R3qJ1oEcjMUz41esjcCKIgWkyKgMWCmqsC+W
wcGLOkmjvLB0lTHpQrYq+9F+WMF3K5fuTt6amwa+66+H/f3nBr95aV/mmHssgUilcKKbc8Sh+cJY
PherrHNxjdh1BJvPtF1+WqN3swzrFZW8e1jRGo5q/PMbeSrvG7+OLScRAjgJQWxh+NwXzcRT6knE
Wn0BpMLYuDprP8rSWPtx7acKDT10IDJtQe1vMc4DXRwAyHKOxJuAj8xkjx2IimTGwfOVEildpTqB
GDNE4LsaC+M6WNzapr4Pgfyw2+6HCRGHdTXYd+g5LzSnBMfMo4nCwajYmQnEE2hmkkwGuzpFGWVp
FGVcq8BhPUVhTjbghGHz73+wQ5Y76TMrhGeKI/KdxRdXMqEyRStDFkzKdZb1NGJV5T3NZzVum45S
sW17wPZfcVeP066m/R2Z/vzwcZOkAppOiqaRiOgS8cwmgrWSGCsXsEertOW1SHM7Xn9S47ft4Mfx
yYqbugR5/ljYESxpx/4x6oz2WhNNVcC4D+DCMVzF4PApL6Uxfo1wzSWqypK7z4UxJcQypIHF24Yq
+M+fD7vP8Fel/fhqL74DOlMuF8GpJRxjxwTEf/iCYIiYktJKeMy4ULPOFOZSrDk9XX5aYyd1Bzvd
hoOfHneHX3AMzln0M3LHajOXUsCRkPgGCs53cpFYJiAozFwpw7m2K4udF/LM9az9rAbMLrPkSqrd
2PNdu8pP76bzyNWxCN4lTeHcEVUUUFAZA/GCYne1isLLmLP2a21R+vSu8ZSf3lXAqOW8ZVi8bc3V
8XUObJR7mpRICHea+VEY0CoTMpEM7xES0CsbsySmUGNscSVnvkaAZlItXq4bVyuo8KHlBVSWts0l
CPKptBMf5Thq0vFOQRvBsBzdUHzfCwgEcfgmicwa31413ge2OrbVFnBOaxU2znQiF4eTYqrzdTFn
c7rFJ4ukkpUsaEeC8YwImjhxBuIYpbPyVEia10m3lnLNEFt+WEO36djygbVdXSDzKcs8nr9Rrbgb
p5ElIA7WkjTOtrVOEyulJzSanLSSwZew0ku8c9q8usU7LVYYdcYwwKJrs1jYZvju/uu3p5rE41xX
YyH6Yx6TnziEChsnSYHoJwUJpkuvsk9wEmceA57Xanxul+Vz6mbbllB/PDw83P7XbtjuDtiijO/K
CYMGPGkjLVOeeIvv0wqdiPPApyxjCQfBWptWyaJmAs0wmq1WKG1Yx4BvdNuF8vHLj8f95nHeIojH
LFsvwUJDqIzjDwWgE0rhEAkGVqQvoGOrrMC5SDNHaFqsAXLLZLHaYYvHTXvMvoEX+BXxEWI8Z2Ks
wuG6AJUUhKeicP54IBZdXQQyoI3ykhm61oM2CtQctHGtQmhnOsb6VolznclweWKPXeH4ceSPzhYB
kU0itASMUQq+QcXx1QZsdHHGR+df+MXazhN7IJde3qxo4W4aq/J9P5amlGGzO3Zv4dsz+Pj1+BUj
WpN5oBrb8MbJoVqQAJpClJOCShaT4Kv06meJ5unv09IcJ61ulhfi2hwnRByL1h7v/tj+uB/+3F8m
7Oqr8Q1GIz0LKjmSihhHxQliE+WkqBKySyZb9cKdpMvdV8Kb22WeTd+IoVGS8d5udqVU5yFpsfhs
RSIl4tBAGbG3Aq9KbPYheW6YW9fT13Nx5m90zpYrlG6Wj3cxvXHtE7m/vP94BscdnzAMQeqE/ROc
YXmatIq4AAFojEUyGym46lWyO5Bkhgt8V8Gx6USdent58uWvx7uny+PITI13jx6CgyJFJhBuOnz7
FsyosYxwagMW6wHVzS/8EvRs25W8W9Y5JFt8ANicXjU67B+nvoaxLJ9HyfAt6OQzFlhZfNSEMcyh
ZpdN5Mm/8Jyh+Z5rYZdDpJjeydYivB/uP3+DOPIDbPpuf/95sgocqUQOmoosFJFR4OQTn4k1LP5f
dUfX2ygOfM+v8MtJ3QcSY/AHlfYBMFS5Nu2qTXfv7iWigXaz25AqkP349zfjBAKERNqH0+ao1KZ2
/DHDeL5sz1hRSF0wnOMwkmfpNO5C1VgE3aoW0rKe7QqRyTrVyXz5Vuf7EiZAP9UoVy2gBYEpPh3L
9zEkdQQ6qu+5ns9/s06xn3Eb0J6D8CJ76ppyaVKC/l5mc+i5mBu1Qm4D4zjGlRL4nAZRbIF81BhU
j1s+ZdwSgIk4xBCj8Vlet9YAlq7A6ugWB3VtvKWyB2+Z6vE+RcvVl0XtxNxGoJJUYhKHwMFAfBGP
LQ8vXeNpDjvSmusoOlcPpoGm44AyZS30PNNDxRwUMFVx2MV8lX8bsn2uD3Rbaho7zKFWjBnVHY0H
fyIfVDGpmQD+I7n8zemgW7Nuwgu0cOhwk9TuJgg2+6KtWCC1fiGrFGqSCsEjatkChIyjGcPbANwC
CeTHQoRaeu6Z3QbowtS6GtCtbKGN9awiLOyg7VP29GG9wk5uVsa5kPx42uTpa9Z2LIFYkh7DhHuK
+2DYUWqpKFBW6Dk01kpJxc5AOWthIzBgFKOjEB7UtPHXo7hJhya9YWOmWVHeb3I80TjOvwBfy9Kg
jUWTVoIHDGgNdH0hQdEJJSg6jrRCGeuI+oIyG/cOcHunGD0+RPc1XHtMIEuoUYDl6GQdKSl5IEFh
djXISZczTAIKwjJ2wRrloEPaoT1COTOqT14Wo+0Em69sFNl2zDCYv5Dwql0Rh1YAKjnm2GMu991Q
BNGoCzF0YF4yng8e58VBfRshwz3uT3yr9Sb6tgClI7Kewx+V23kM9LbO8UYQkwLdxxI1icDzfZAD
rmVjPBUTgA+wDkxRMBHxEMzbUJ+rbOhC1hET3eo2Ar0eDuok9bXPVkL66AdAWZgtxyqJWh3xXoWx
UsoRlis5ZthGWuauDbpIQF2mXeqw3xzw9SQobaQkSR9Sng8O0+bQV16Gr0lRtG8qcljLXPkC8zxo
NFxAM/M9z4p8MFm14rGt4vMkpxZILUpq1TTx9ZTSw0siT6ktezbiJyaV37JzOMaOFTA4zwf+hL7B
OPAsz5GgqPlBqKkAHhWdpW+sDVFnH35f0UTWnB1G54NCVefo20VmQvbXuTlijrDbKsKzLxazwQ50
nECDoJDoIwoiFQtFPeNFPYgAdaLj1uwc+/BVzh1W84OrB7yS2boqptAUEWChMlsLy/cwwzbFKJS+
A7q1ZqEAI0WrWP6/rp4eQNrEU9r3FlPudPcr75PvIfS5ToaV5gT2Gzbb5q21ReRJTjHNILo9tQcy
1QMbNhYB1CkVqjM4MdCUIaMuQPuCwRYNqESKhDcTZVSFwnYTF9CD6b7JhSPokOHGgA6VHeJ5OMFt
1B9B61ZAx5bHFPxQzgITGLji5Nh6MED+baT4ZJXWp13Iw2a5hClfwlzC5PW1IEvQ3cjTT7IqP2dr
8rbV6IBVl8n6JSvR31J+XhRVxaWBoUyKrzPA1extkV4Sui3bpgWZw+8y6xQWWTkD1liVtwf+j7uH
fxpQAQbMeJhgGxS5vvE4E1T82piDjxNyn7208Iv7inf560+CbARrVs9kSy+LrLgk0xXI2PfMdof2
hKyzYpECob6n1xf0j3ek+A7Um6Wz1aacwbQ2uUlYB4OluxYXNoXvDT6tF2XyBGtmbQavu7WHzhX5
DpVA/VWfJ8aoiprjYBe7UUi1rI8+H8f300f/Bj7dR1fju1sy2P2d/v0hOtboYfyPqQvvHm+n5CJf
5dZ8lYDNMc/Sd2Twfv/0Nq/rqg8Df14uvqHlOl0ncyTcw4dxcV1/JoPmuu2fpA1ip9lCL4q3pJx/
Jph5d5FvdsflGo+rhnTSaPHnA/lzPCUvWW4CRKQEuVNnkCG9qpuTwbVJSEJ8fBfkLp9nfRNT9awc
Mpj4Nzd34YkXZCsxdKtZ2V7d4mWDQQrf8BDS4eOwegxJBjtbjwDO3oqMjPPnVRe51FVNXD1M/fCa
XD369/rItLho4ArGeCiT+deTlGZTXC/7Fh8nMwOJPz1KZzCvJq62phOZGFLvH0Psx3AAjtlM+1P/
1KwYKPiTCrk2trgZ315HGt77kUc4Q2/XggmBLabRX9NTgHM6FNUYrmnxeDsO7/RxuAlvU/vSLHjy
DCr+MTj40Kmxy8mgMHeeyTJbrtY/j7Vxrxu0++urdno3NZzjFOxDsVsfQgHkg38BUEsDBAoAAAAA
ACKBJ0oAAAAAAAAAAAAAAAAgABwAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9VVAkA
Ax+DcVhYhHFYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOGAJ0qDUdFXQwAAAEYAAABEABwAY29t
cG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNo
LWxvZy50eHRVVAkAA6WCcVilgnFYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJF
Csn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0MLQw0+MCAFBLAwQUAAIACADH
gSdKXAArZn4sAACgxQAAWAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2Zh
Y2UtdmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAkAA1WE
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
Pcpn0K8mVtutE5mUrN7fhty3YQMds5nRU32qVxwE/EkFLsMSN+Pb69DAez/ySHvo7UpwKbHENPxr
eopwQYeyasMpSzzejoM7c5xuItrcvioHPFmAiH+MDjG0a3QFGeTlnWeySlfrza9jZZzrBu/+/qid
3k3LmeMU7UO5Gx9SAeWDfwFQSwMECgAAAAAAAoEnSgAAAAAAAAAAAAAAAB0AHABjb21wb3NpdGlu
Zy9iYWNrZ3JvdW5kLWNvbG9yL1VUCQAD44JxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
AoEnSmiTGlFDAAAARgAAAE4AHABjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91
bmQtY29sb3ItYWxwaGEtd2l0aC1vcGFjaXR5LWNyYXNoLWxvZy50eHRVVAkAA+OCcVjjgnFYdXgL
AAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1
r0TPJbUsNSe/IBfItrI0MLQw1uMCAFBLAwQKAAAAAAACgSdKAAAAAAAAAAAAAAAAGAAcAGNvbXBv
c2l0aW5nL2JhY2tncm91bmRzL1VUCQAD44JxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
AoEnSr4WjVxDAAAARgAAAEQAHABjb21wb3NpdGluZy9iYWNrZ3JvdW5kcy9maXhlZC1iYWNrZ3Jv
dW5kLW9uLWRlc2NlbmRhbnQtY3Jhc2gtbG9nLnR4dFVUCQAD44JxWOOCcVh1eAsAAQT1AQAABBQA
AADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78g
F8i2sjQwtLDU4wIAUEsDBAoAAAAAAAOBJ0oAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvYmFj
a2luZy9VVAkAA+aCcVhYhHFYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOGAJ0pjICLqQwAAAEYA
AAA6ABwAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtY3Jhc2gt
bG9nLnR4dFVUCQADpoJxWKaCcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUK
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
aWVzL1VUCQADQ4RxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAsoEnSgAAAAAAAAAAAAAA
AA0AHAByZXRyaWVzL2Zhc3QvVVQJAAMwhHFYWIRxWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACd
gSdKAAAAAAAAAAAAAAAAHQAcAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvVVQJAAMJhHFY
WIRxWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACdgSdKAAAAAAAAAAAAAAAAIQAcAHJldHJpZXMv
ZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL1VUCQADCYRxWFiEcVh1eAsAAQT1AQAABBQAAABQSwME
CgAAAAAAqYEnSgAAAAAAAAAAAAAAACYAHAByZXRyaWVzL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL2lv
cy9pcGFkL1VUCQADHYRxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqYEnSjTlhVNDAAAA
RgAAAFEAHAByZXRyaWVzL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL3Byb2dyYW1tYXRp
Yy10ZXh0LXNpemUtYWRqdXN0LWNyYXNoLWxvZy50eHRVVAkAAx2EcVgdhHFYdXgLAAEE9QEAAAQU
AAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/
IBfItrI0NDex0OMCAFBLAwQUAAIACACdgSdKh/DMxEMAAABGAAAAUQAcAHJldHJpZXMvZmFzdC90
ZXh0LWF1dG9zaXppbmcvaW9zL2lwYWQvdGV4dC1zaXplLWFkanVzdC1pbmxpbmUtc3R5bGUtY3Jh
c2gtbG9nLnR4dFVUCQADCYRxWAmEcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjQ0NzbT4wIAUEsDBAoAAAAA
ALKBJ0oAAAAAAAAAAAAAAAAWABwAcmV0cmllcy9mYXN0L3ZpZXdwb3J0L1VUCQADMIRxWFiEcVh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAAsoEnSgAAAAAAAAAAAAAAABoAHAByZXRyaWVzL2Zhc3Qv
dmlld3BvcnQvaW9zL1VUCQADMIRxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAsoEnSgAA
AAAAAAAAAAAAAB8AHAByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvaW9zL2lwYWQvVVQJAAMwhHFYWIRx
WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACygSdK29SW8EMAAABGAAAAQgAcAHJldHJpZXMvZmFz
dC92aWV3cG9ydC9pb3MvaXBhZC93aWR0aC1pcy1kZXZpY2Utd2lkdGgtY3Jhc2gtbG9nLnR4dFVU
CQADMIRxWDCEcVh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmp
euGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjQ0NzPR4wIAUEsDBAoAAAAAALyBJ0oAAAAAAAAA
AAAAAAAOABwAcmV0cmllcy9tZWRpYS9VVAkAA0OEcVhYhHFYdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AAAAALyBJ0oAAAAAAAAAAAAAAAAXABwAcmV0cmllcy9tZWRpYS9jb250cm9scy9VVAkAA0OEcVhY
hHFYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALyBJ0oAAAAAAAAAAAAAAAAcABwAcmV0cmllcy9t
ZWRpYS9jb250cm9scy9pcGFkL1VUCQADQ4RxWFiEcVh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
vIEnSohHTvhDAAAARgAAAGQAHAByZXRyaWVzL21lZGlhL2NvbnRyb2xzL2lwYWQvY2xvc2UtcGFn
ZS13aXRoLXBpY3R1cmUtaW4tcGljdHVyZS12aWRlby1hc3NlcnRpb24tZmFpbHVyZS1jcmFzaC1s
b2cudHh0VVQJAANDhHFYQ4RxWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ
+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDQ3s9TjAgBQSwMEFAACAAgAx4En
Srpxi3GfBAAAFA8AAAoAHABzdGF0cy5qc29uVVQJAANVhHFYVYRxWHV4CwABBPUBAAAEFAAAALVX
wXLbNhD9FY2vNTQACZJgr+ktt+TQQ8cHiIQsJBDJAUDZbib/3sUuJNuKqNgztQ8GyJEeFm9331v9
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
ALuAJ0qwyympFQkAADoRAAAVABgAAAAAAAEAAACkgecTAABfd3B0X2NlcnRzL2NhY2VydC5wZW1V
VAUAA2KCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC7gCdKZ45WR0cFAADXBgAAFAAYAAAA
AAABAAAApIFLHQAAX3dwdF9jZXJ0cy9jYWtleS5wZW1VVAUAA2KCcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAC7gCdKcOgzukkAAABlAAAAFAAYAAAAAAABAAAApIHgIgAAX3dwdF9jZXJ0cy9p
bmRleC50eHRVVAUAA2KCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAC7gCdKmFx5fxUAAAAV
AAAAGQAYAAAAAAABAAAApIF3IwAAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0clVUBQADYoJxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAALuAJ0qYXHl/FQAAABUAAAAdABgAAAAAAAEAAACkgd8j
AABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUBQADYoJxWHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAgAAALuAJ0ouFsq+NwAAADcAAAAYABgAAAAAAAEAAACkgUskAABfd3B0X2NlcnRzL2lu
ZGV4LnR4dC5vbGRVVAUAA2KCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC7gCdKgziAmAgF
AACLBgAAGAAYAAAAAAABAAAApIHUJAAAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAANignFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAu4AnSma49kXvCQAAOxIAABgAGAAAAAAAAQAAAKSB
LioAAF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADYoJxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAALuAJ0rQdKcMBwAAAAcAAAARABgAAAAAAAEAAACkgW80AABfd3B0X2NlcnRzL3Nlcmlh
bFVUBQADYoJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAALuAJ0oTJ4onBwAAAAcAAAAVABgA
AAAAAAEAAACkgcE0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA2KCcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAC5gCdKAAAAAAAAAAAAAAAADgAYAAAAAAAAAAAApIEXNQAAYWNjZXNzX2xv
Zy50eHRVVAUAA12CcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAkgSdKAAAAAAAAAAAAAAAA
DgAYAAAAAAAAABAA7UFfNQAAYWNjZXNzaWJpbGl0eS9VVAUAAySDcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADggCdKY87nrkMAAABGAAAAKAAYAAAAAAABAAAApIGnNQAAYWNjZXNzaWJpbGl0
eS9hcmlhLWN1cnJlbnQtY3Jhc2gtbG9nLnR4dFVUBQADpIJxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAAKBJ0oFzHBqQwAAAEYAAAAxABgAAAAAAAEAAACkgUw2AABhY2Nlc3NpYmlsaXR5L2Fy
aWEtdGFibGUtYXR0cmlidXRlcy1jcmFzaC1sb2cudHh0VVQFAAPkgnFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAJIEnSjZMzahDAAAARgAAAC4AGAAAAAAAAQAAAKSB+jYAAGFjY2Vzc2liaWxp
dHkvYXR0YWNobWVudC1lbGVtZW50LWNyYXNoLWxvZy50eHRVVAUAAySDcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAlgSdKAAAAAAAAAAAAAAAAHAAYAAAAAAAAABAA7UGlNwAAYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL1VUBQADJYNxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCA
J0o1MEGyQwAAAEYAAAA2ABgAAAAAAAEAAACkgfs3AABhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvYWJicmV2aWF0aW9uLWNyYXNoLWxvZy50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAADgSdK2WR5bUMAAABGAAAASwAYAAAAAAABAAAApIGuOAAAYWNjZXNzaWJpbGl0eS9p
b3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHktYXJpYS10YWJsZS1jaGlsZHJlbi1jcmFzaC1sb2cu
dHh0VVQFAAPlgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJYEnSgsLkaNDAAAARgAAAEwA
GAAAAAAAAQAAAKSBdjkAAGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5
LWNyYXNoLWluLWF4Y29udGFpbmVyLWNyYXNoLWxvZy50eHRVVAUAAyWDcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAlgSdKAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UE/OgAAYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci9VVAUAAyWDcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADggCdK
W+TFsUMAAABGAAAAWQAYAAAAAAABAAAApIGTOgAAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci9j
aGFyYWN0ZXItb2Zmc2V0LXZpc2libGUtcG9zaXRpb24tY29udmVyc2lvbi1oYW5nLWNyYXNoLWxv
Zy50eHRVVAUAA6SCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADgSdKt7D9bkMAAABGAAAA
QQAYAAAAAAABAAAApIFpOwAAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWNyYXNoLWxvZy50eHRVVAUAA+WCcVh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAlgSdK0IKs70MAAABGAAAASgAYAAAAAAABAAAApIEnPAAAYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1yYW5nZS1zdGFsZS1ub2RlLWNyYXNoLWNyYXNoLWxvZy50eHRV
VAUAAyWDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAlgSdKAAAAAAAAAAAAAAAACwAYAAAA
AAAAABAA7UHuPAAAYW5pbWF0aW9ucy9VVAUAAyWDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAigSdKAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UEzPQAAYW5pbWF0aW9ucy8zZC9VVAUAAx+D
cVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADhgCdKZz0/C0MAAABGAAAAOQAYAAAAAAABAAAA
pIF7PQAAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1s
b2cudHh0VVQFAAOlgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAoEnSkTfyguiAAAALAEA
ADsAGAAAAAAAAQAAAKSBMT4AAGFuaW1hdGlvbnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFu
aW1hdGlvbi1jcmFzaC1sb2cudHh0VVQFAAPjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
x4EnSu4pq858LAAAocUAADUAGAAAAAAAAQAAAKSBSD8AAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1m
aWxsaW5nLXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA4YAnSroLkL1DAAAARgAAADMAGAAAAAAAAQAAAKSBM2wAAGFuaW1hdGlvbnMvQ1NT
S2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwtY3Jhc2gtbG9nLnR4dFVUBQADpYJxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAAOBJ0qFt0F7QwAAAEYAAAA0ABgAAAAAAAEAAACkgeNsAABhbmltYXRp
b25zL0NTU0tleWZyYW1lc1J1bGUtcGFyYW1ldGVycy1jcmFzaC1sb2cudHh0VVQFAAPlgnFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJYEnSmL+IetDAAAARgAAAC4AGAAAAAAAAQAAAKSBlG0A
AGFuaW1hdGlvbnMvYWRkZWQtd2hpbGUtc3VzcGVuZGVkLWNyYXNoLWxvZy50eHRVVAUAAyWDcVh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADhgCdKAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UE/
bgAAY2FudmFzL1VUBQADpYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOGAJ0oAAAAAAAAA
AAAAAAAOABgAAAAAAAAAEADtQYBuAABjYW52YXMvcGhpbGlwL1VUBQADpYJxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAACKBJ0oAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQchuAABjYW52YXMv
cGhpbGlwL3Rlc3RzL1VUBQADH4NxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOGAJ0qM//QN
QwAAAEYAAAA1ABgAAAAAAAEAAACkgRZvAABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5y
ZWZlcmVuY2UtY3Jhc2gtbG9nLnR4dFVUBQADpYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AMeBJ0rEbJl+fywAAKDFAAA+ABgAAAAAAAEAAACkgchvAABjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtY3Jhc2gtbG9nLnR4dFVUBQADVYRxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAAKBJ0oiJaTceCwAAKHFAABAABgAAAAAAAEAAACkgb+cAABjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAuNS1jcmFzaC1sb2cu
dHh0VVQFAAPjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnStNMWhp7LAAAoMUAADsA
GAAAAAAAAQAAAKSBsckAAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05
MDIyNy1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4En
SsuxXsN1LAAAocUAADsAGAAAAAAAAQAAAKSBofYAAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5EZXZlbG9wbWVudC05MDIzMi1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAx4EnSlwAK2Z+LAAAoMUAADsAGAAAAAAAAQAAAKSBiyMBAGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDIzOC1jcmFzaC1sb2cudHh0VVQFAANVhHFY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSkmFIf+ALAAAoMUAADsAGAAAAAAAAQAAAKSB
flABAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDI3OC1jcmFzaC1s
b2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSkUcwLN/LAAAocUA
ADsAGAAAAAAAAQAAAKSBc30BAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVu
dC05MDI4MC1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
x4EnSuBaTTRyLAAAoMUAADsAGAAAAAAAAQAAAKSBZ6oBAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudC05MDI4My1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAx4EnSu4pq858LAAAocUAADsAGAAAAAAAAQAAAKSBTtcBAGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDI4NS1jcmFzaC1sb2cudHh0VVQFAANV
hHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSsRsmX5/LAAAoMUAADsAGAAAAAAAAQAA
AKSBPwQCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDI4Ny1jcmFz
aC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSlFGvll5LAAA
msUAADsAGAAAAAAAAQAAAKSBMzECAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9w
bWVudC05MDMyNC1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAx4EnSt5wTTlyLAAAq8UAADsAGAAAAAAAAQAAAKSBIV4CAGNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5EZXZlbG9wbWVudC05MDMyNi1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAx4EnSgOv6kB2LAAAq8UAADsAGAAAAAAAAQAAAKSBCIsCAGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDMyOC1jcmFzaC1sb2cudHh0VVQF
AANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSuLhkgeDLAAAocUAADsAGAAAAAAA
AQAAAKSB87cCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MDMzMC1j
cmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSl5ACNeJ
LAAAkMUAADsAGAAAAAAAAQAAAKSB6+QCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZl
bG9wbWVudC05MDMzMi1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAx4EnSnWsebiDLAAAnsUAADsAGAAAAAAAAQAAAKSB6REDAGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5EZXZlbG9wbWVudC05MTcwNC1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSs3HMa57LAAAjsUAADsAGAAAAAAAAQAAAKSB4T4DAGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MTcwNS1jcmFzaC1sb2cudHh0
VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSq4znhN/LAAAn8UAADsAGAAA
AAAAAQAAAKSB0WsDAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MTcw
Ny1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSmGp
ujFqLAAAjsUAADsAGAAAAAAAAQAAAKSBxZgDAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5E
ZXZlbG9wbWVudC05MTcxNC1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAx4EnSuLFSn98LAAAjcUAADsAGAAAAAAAAQAAAKSBpMUDAGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MTcxOS1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSooDOhB7LAAAjcUAADsAGAAAAAAAAQAAAKSBlfID
AGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05MTc0MS1jcmFzaC1sb2cu
dHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSoDjS0d+LAAAjsUAADsA
GAAAAAAAAQAAAKSBhR8EAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC05
MTc0OC1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAJIEn
SgAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BeEwEAGNvbXBvc2l0aW5nL1VUBQADI4NxWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOGAJ0riK3AOQwAAAEYAAAA7ABgAAAAAAAEAAACkgb5MBABj
b21wb3NpdGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4
dFVUBQADpYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMeBJ0rTTFoaeywAAKDFAABHABgA
AAAAAAEAAACkgXZNBABjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNv
bXBvc2l0ZWQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUBQADVYRxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACSBJ0rq5MSvQwAAAEYAAABQABgAAAAAAAEAAACkgXJ6BABjb21wb3NpdGluZy9hYnNv
bHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItY3Jhc2gt
bG9nLnR4dFVUBQADI4NxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACKBJ0oAAAAAAAAAAAAA
AAAWABgAAAAAAAAAEADtQT97BABjb21wb3NpdGluZy9hbmltYXRpb24vVVQFAAMfg3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA4YAnSjEtXFNDAAAARgAAAEUAGAAAAAAAAQAAAKSBj3sEAGNv
bXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4tY3Jh
c2gtbG9nLnR4dFVUBQADpYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMeBJ0rLsV7DdSwA
AKHFAAA1ABgAAAAAAAEAAACkgVF8BABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWJh
Y2tpbmctY3Jhc2gtbG9nLnR4dFVUBQADVYRxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMeB
J0pJhSH/gCwAAKDFAAA5ABgAAAAAAAEAAACkgTWpBABjb21wb3NpdGluZy9hbmltYXRpb24vYW5p
bWF0aW9uLWNvbXBvc2l0aW5nLWNyYXNoLWxvZy50eHRVVAUAA1WEcVh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAigSdKAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UEo1gQAY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS9VVAUAAx+DcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADh
gCdKg1HRV0MAAABGAAAARAAYAAAAAAABAAAApIGC1gQAY29tcG9zaXRpbmcvYmFja2ZhY2Utdmlz
aWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxvZy50eHRVVAUAA6WCcVh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADHgSdKXAArZn4sAACgxQAAWAAYAAAAAAABAAAApIFD1wQA
Y29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWhpZXJh
cmNoaWNhbC10cmFuc2Zvcm0tY3Jhc2gtbG9nLnR4dFVUBQADVYRxWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAMeBJ0pFHMCzfywAAKHFAABHABgAAAAAAAEAAACkgVMEBQBjb21wb3NpdGluZy9i
YWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtY3Jhc2gtbG9nLnR4
dFVUBQADVYRxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAKBJ0oAAAAAAAAAAAAAAAAdABgA
AAAAAAAAEADtQVMxBQBjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL1VUBQAD44JxWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAAKBJ0pokxpRQwAAAEYAAABOABgAAAAAAAEAAACkgaoxBQBj
b21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3ItYWxwaGEtd2l0aC1v
cGFjaXR5LWNyYXNoLWxvZy50eHRVVAUAA+OCcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAC
gSdKAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UF1MgUAY29tcG9zaXRpbmcvYmFja2dyb3VuZHMv
VVQFAAPjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAoEnSr4WjVxDAAAARgAAAEQAGAAA
AAAAAQAAAKSBxzIFAGNvbXBvc2l0aW5nL2JhY2tncm91bmRzL2ZpeGVkLWJhY2tncm91bmQtb24t
ZGVzY2VuZGFudC1jcmFzaC1sb2cudHh0VVQFAAPjgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAA4EnSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BiDMFAGNvbXBvc2l0aW5nL2JhY2tpbmcv
VVQFAAPmgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4YAnSmMgIupDAAAARgAAADoAGAAA
AAAAAQAAAKSB1jMFAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlw
LWNyYXNoLWxvZy50eHRVVAUAA6aCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADgSdKAFZs
XEMAAABGAAAARgAYAAAAAAABAAAApIGNNAUAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12
aXNpYmlsaXR5LWluLTNkdHJhbnNmb3JtZWQtY3Jhc2gtbG9nLnR4dFVUBQAD5oJxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACWBJ0o0G9GvzQIAAIoIAAANABgAAAAAAAEAAACkgVA1BQBlcnJv
cl9sb2cudHh0VVQFAAMlg3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAdIEnSgAAAAAAAAAA
AAAAAAUAGAAAAAAAAAAQAO1BZDgFAGZhc3QvVVQFAAO8g3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAdIEnSgAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BozgFAGZhc3QvdGV4dC1hdXRvc2l6
aW5nL1VUBQADvINxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHSBJ0oAAAAAAAAAAAAAAAAZ
ABgAAAAAAAAAEADtQfI4BQBmYXN0L3RleHQtYXV0b3NpemluZy9pb3MvVVQFAAO8g3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAioEnSgAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1BRTkFAGZh
c3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL1VUBQAD44NxWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAMeBJ0qA40tHfiwAAI7FAABJABgAAAAAAAEAAACkgZ05BQBmYXN0L3RleHQtYXV0b3Np
emluZy9pb3MvaXBhZC9wcm9ncmFtbWF0aWMtdGV4dC1zaXplLWFkanVzdC1jcmFzaC1sb2cudHh0
VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSmGpujFqLAAAjsUAAEkAGAAA
AAAAAQAAAKSBnmYFAGZhc3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL3RleHQtc2l6ZS1hZGp1
c3QtaW5saW5lLXN0eWxlLWNyYXNoLWxvZy50eHRVVAUAA1WEcVh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAB0gSdKAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UGLkwUAZmFzdC92aWV3cG9ydC9V
VAUAA7yDcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB0gSdKAAAAAAAAAAAAAAAAEgAYAAAA
AAAAABAA7UHTkwUAZmFzdC92aWV3cG9ydC9pb3MvVVQFAAO8g3FYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAdIEnSgAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1BH5QFAGZhc3Qvdmlld3BvcnQv
aW9zL2lwYWQvVVQFAAO8g3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSnWsebiDLAAA
nsUAADoAGAAAAAAAAQAAAKSBcJQFAGZhc3Qvdmlld3BvcnQvaW9zL2lwYWQvd2lkdGgtaXMtZGV2
aWNlLXdpZHRoLWNyYXNoLWxvZy50eHRVVAUAA1WEcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADHgSdKXk6XKgEEAAB7EQAAEQAYAAAAAAABAAAApIFnwQUAZnVsbF9yZXN1bHRzLmpzb25VVAUA
A1WEcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC5gCdKWwRYDqIFAABNEAAACgAYAAAAAAAB
AAAApIGzxQUAaHR0cGQuY29uZlVUBQADXYJxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHSB
J0oAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADtQZnLBQBtZWRpYS9VVAUAA7yDcVh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAB0gSdKAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UHZywUAbWVkaWEv
Y29udHJvbHMvVVQFAAO8g3FYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAdIEnSgAAAAAAAAAA
AAAAABQAGAAAAAAAAAAQAO1BIswFAG1lZGlhL2NvbnRyb2xzL2lwYWQvVVQFAAO8g3FYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAx4EnSq4znhN/LAAAn8UAAFwAGAAAAAAAAQAAAKSBcMwFAG1l
ZGlhL2NvbnRyb2xzL2lwYWQvY2xvc2UtcGFnZS13aXRoLXBpY3R1cmUtaW4tcGljdHVyZS12aWRl
by1hc3NlcnRpb24tZmFpbHVyZS1jcmFzaC1sb2cudHh0VVQFAANVhHFYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAuoAnSgAAAAAAAAAAAAAAABoAGAAAAAAAAAAAAKSBhfkFAHB5d2Vic29ja2V0
LndzLmxvZy1lcnIudHh0VVQFAANfgnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAuYAnSgAA
AAAAAAAAAAAAABoAGAAAAAAAAAAAAKSB2fkFAHB5d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQF
AANegnFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAuoAnSgAAAAAAAAAAAAAAABsAGAAAAAAA
AAAAAKSBLfoFAHB5d2Vic29ja2V0Lndzcy5sb2ctZXJyLnR4dFVUBQADYIJxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAALqAJ0oAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgYL6BQBweXdlYnNv
Y2tldC53c3MubG9nLW91dC50eHRVVAUAA2CCcVh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADH
gSdKRSYdOdEnAADLqgAADAAYAAAAAAABAAAApIHX+gUAcmVzdWx0cy5odG1sVVQFAANWhHFYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAvIEnSgAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1B7iIG
AHJldHJpZXMvVVQFAANDhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAsoEnSgAAAAAAAAAA
AAAAAA0AGAAAAAAAAAAQAO1BMCMGAHJldHJpZXMvZmFzdC9VVAUAAzCEcVh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAACdgSdKAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UF3IwYAcmV0cmllcy9m
YXN0L3RleHQtYXV0b3NpemluZy9VVAUAAwmEcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACd
gSdKAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UHOIwYAcmV0cmllcy9mYXN0L3RleHQtYXV0b3Np
emluZy9pb3MvVVQFAAMJhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAqYEnSgAAAAAAAAAA
AAAAACYAGAAAAAAAAAAQAO1BKSQGAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL2lw
YWQvVVQFAAMdhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqYEnSjTlhVNDAAAARgAAAFEA
GAAAAAAAAQAAAKSBiSQGAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL2lwYWQvcHJv
Z3JhbW1hdGljLXRleHQtc2l6ZS1hZGp1c3QtY3Jhc2gtbG9nLnR4dFVUBQADHYRxWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAJ2BJ0qH8MzEQwAAAEYAAABRABgAAAAAAAEAAACkgVclBgByZXRy
aWVzL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL3RleHQtc2l6ZS1hZGp1c3QtaW5saW5l
LXN0eWxlLWNyYXNoLWxvZy50eHRVVAUAAwmEcVh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACy
gSdKAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UElJgYAcmV0cmllcy9mYXN0L3ZpZXdwb3J0L1VU
BQADMIRxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALKBJ0oAAAAAAAAAAAAAAAAaABgAAAAA
AAAAEADtQXUmBgByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvaW9zL1VUBQADMIRxWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAALKBJ0oAAAAAAAAAAAAAAAAfABgAAAAAAAAAEADtQckmBgByZXRyaWVz
L2Zhc3Qvdmlld3BvcnQvaW9zL2lwYWQvVVQFAAMwhHFYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAsoEnStvUlvBDAAAARgAAAEIAGAAAAAAAAQAAAKSBIicGAHJldHJpZXMvZmFzdC92aWV3cG9y
dC9pb3MvaXBhZC93aWR0aC1pcy1kZXZpY2Utd2lkdGgtY3Jhc2gtbG9nLnR4dFVUBQADMIRxWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALyBJ0oAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQeEn
BgByZXRyaWVzL21lZGlhL1VUBQADQ4RxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALyBJ0oA
AAAAAAAAAAAAAAAXABgAAAAAAAAAEADtQSkoBgByZXRyaWVzL21lZGlhL2NvbnRyb2xzL1VUBQAD
Q4RxWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALyBJ0oAAAAAAAAAAAAAAAAcABgAAAAAAAAA
EADtQXooBgByZXRyaWVzL21lZGlhL2NvbnRyb2xzL2lwYWQvVVQFAANDhHFYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAvIEnSohHTvhDAAAARgAAAGQAGAAAAAAAAQAAAKSB0CgGAHJldHJpZXMv
bWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0dXJlLXZp
ZGVvLWFzc2VydGlvbi1mYWlsdXJlLWNyYXNoLWxvZy50eHRVVAUAA0OEcVh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADHgSdKunGLcZ8EAAAUDwAACgAYAAAAAAABAAAApIGxKQYAc3RhdHMuanNv
blVUBQADVYRxWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMCAJ0ofMc/b5wQAAL0bAAAZABgA
AAAAAAEAAACkgZQuBgB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAANognFYdXgLAAEE9QEA
AAQUAAAAUEsFBgAAAAB2AHYAozMAAM4zBgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298300</attachid>
            <date>2017-01-08 01:48:36 -0800</date>
            <delta_ts>2017-01-09 02:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170108014703.patch</filename>
            <type>text/plain</type>
            <size>210261</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2JkMTI1ODBlZWFkNjlkNzEyOTQ4ZmUyZmE5Yzc3NzdjNDFkN2E2Li4xOGMzZGVjZmFiMDJjMmFl
MWRjZjNkYzFkMWZiYmYxMjFiYTVkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
c2xpY2UgaW50cmluc2ljIHRvIHRoZSBERkcvRlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5ZTdhMzcyNDM0NDBlZTFjNTQy
ZDU0MTBhYmFkYmY2YjU0ZjE3OTEuLjVmODM5YmRkZjVmNmMxMzRkNjE4OWZlNDU5MWQxNGJmNWEx
NGZkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDEtMDcgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBvZiAi
cGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDogQ2hhbmdlZCB0aGUgdGVtcGxhdGUgc28gdGhhdCBhIGNvbnN0IFJlZjxU
PiBkb2VzIG5vdCBwcm9oaWJpdCBub24tY29uc3QKKyAgICAgICAgdXNlIG9mIFQuIFdlIGNhbiBz
dGlsbCB1c2UgY29uc3QgUmVmPGNvbnN0IFQ+IHRvIGV4cHJlc3MgdGhhdC4gVGhlIGVhcmxpZXIg
ZGVzaWduCisgICAgICAgIHdhcyBpbnRlbnRpb25hbCwgYnV0IHdhcyBub3QgY29uc2lzdGVudCB3
aXRoIGVpdGhlciBhY3R1YWwgcmVmZXJlbmNlcyBvciB3aXRoCisgICAgICAgIG90aGVyIHNtYXJ0
IHBvaW50ZXIgY2xhc3NlcyBsaWtlIFJlZlB0ci4gT25lIHdheSB0byBzZWUgaG93IG11Y2ggYmV0
dGVyIHRoaXMgaXMsCisgICAgICAgIGlzIHRvIHNlZSBhbGwgdGhlIG1hbnksIG1hbnkgY2FzZXMg
d2hlcmUgd2UgaGF2ZSBjb25zdF9jYXN0IGp1c3QgdG8gd29yayBhcm91bmQKKyAgICAgICAgdGhp
cy4gSSBzZWFyY2hlZCBmb3IgdGhvc2UgYW5kIGluY2x1ZGVkIGZpeGVzIGZvciBtYW55IGluIHRo
aXMgcGF0Y2guCisKIDIwMTctMDEtMDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYXJldHMgY2FuIHNwbGl0IHVwIG1hcnJpYWdlcyBhbmQgZmFt
aWxpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0Y2MwMjg3YmFkYTQ4ZGNjYjQxNzI3M2FiOWYyNWMxMDViOGEw
NWM3Li42YWIzNTRmYzY3MzMxYjNlOGZiNTgwMzk3MzQzODk4ZTZiMzJhNWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzE2IEBACisyMDE3LTAxLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1vcmUgb2YgInBsYXRmb3Jt
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcC4KKworICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgor
ICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg6IFR3ZWFrcywgbXNh
ZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQgZmluYWwuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFp
bDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6
On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6IFVwZGF0ZSB0byB1c2UgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVy
cy4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRpbWluZ0Z1bmN0aW9uVmFsdWUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0QW5pbWF0aW9uVHJpZ2dlclZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6aW1h
Z2UpOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlm
cmFtZXNSdWxlOjppdGVtKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBE
aXR0by4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OmZhbWlseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0eWxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6d2VpZ2h0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6dmFyaWFudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncyk6IERpdHRvLgorCisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6IFBhc3MgcmVmZXJlbmNlcyB3aGVuCisgICAgICAgIGNy
ZWF0aW5nIFNoYXBlVmFsdWUuCisKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KTogVXNl
IGF1dG8uCisKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMaXZlTm9kZUxpc3Q6Om93bmVyTm9kZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25z
dF9jYXN0LgorCisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlRXZlbnQ6OnNvdXJjZSk6IFJlbW92ZWQgdW5uZWVkZWQgc3RhdGljX2Nhc3Qu
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJl
VHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKTogVHdlYWtlZCBmb3JtYXR0aW5nLgor
CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6b3duZXJE
b2N1bWVudCk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAq
IGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6OmNhbGxiYWNrKTogRGl0dG8uCisgICAgICAgICogZG9tL1Njcmlw
dFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5u
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRl
bTo6bm9kZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQpOiBDdXQgZG93biBvbiB0aGUgbnVtYmVyCisgICAgICAgIG9mIGRpZmZl
cmVudCBmdW5jdGlvbnMgaGVyZS4gQWxzbyB1c2UgcmVmZXJlbmNlIHJhdGhlciB0aGFuIHBvaW50
ZXIuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oOiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFBy
b3Zpc2lvbmFsSXRlbSk6IFJlbW92ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9j
YXN0LgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9J
dGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpvd25lclJlbmRlcmVyKTogVXNlIGF1dG8uIExldCB0aGUgaXM8PiBmdW5jdGlv
biBkbyBudWxsCisgICAgICAgIGNoZWNraW5nIGZvciB1cy4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpmcmFtZUZvcldpZGdldCk6IFRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2lu
dGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjppbnZhbGlkYXRlUmVjdCk6IFVzZSBDaHJvbWUgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZwor
ICAgICAgICBIb3N0V2luZG93LiBIb3N0V2luZG93IGlzIGFuIGFic3RyYWN0aW9uIGZvciB0aGUg
cGxhdGZvcm0gbGF5ZXIsIGFuZCB0aGVyZQorICAgICAgICBpcyBubyBnb29kIHJlYXNvbiB0byB1
c2UgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1bGVBbmltYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Z3JhcGhpY3NMYXllckZv
clBsYXRmb3JtV2lkZ2V0KTogVXBkYXRlZCB0byB1c2UgcmVmZXJlbmNlCisgICAgICAgIHdoZW4g
Y2FsbGluZyBSZW5kZXJXaWRnZXQ6OmZpbmQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOiBVc2UgQ2hyb21lIGluc3RlYWQgb2YgSG9zdFdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6IFVzZSBlYXJseSBy
ZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6
IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0aHJvdWdoIHRvIGJhc2UKKyAgICAgICAgY2xhc3MgZnVu
Y3Rpb24sIHdoaWNoIHdhcyBlbXB0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aGFz
Q3VzdG9tU2Nyb2xsYmFycyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cKKyAg
ICAgICAgY29udGFpbnMgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KTogVXNlIGVhcmx5IHJldHVybi4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25zKTogVXNlIHJlZmVyZW5j
ZSBpbnN0ZWFkIG9mIHBvaW50ZXIuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDogVXNlIGZp
bmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIFJlbW92ZSBub3ctdW5uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVn
aW5WaWV3cyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMKKyAg
ICAgICAgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Zmly
ZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0bworICAgICAg
ICB0aGUgdHlwZXMgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uIG1lbWJlcnMuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZy
YW1lKTogVHdlYWtlZCB0bworICAgICAgICB1c2UgYXV0bywgcGFzcyByZWZlcmVuY2VzLgorCisg
ICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
cy5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQYXNz
UmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKTogVGFrZQorICAgICAgICBhIHJl
ZmVyZW5jZS4gSW5pdGlhbGl6ZSBkYXRhIG1lbWJlcnMgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSk6IFJldHVybiBSZWYgcmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRkQ2hpbGQpOiBUYWtlIGEgcmVmZXJlbmNlIHJh
dGhlciB0aGFuIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNl
dEhhc1Njcm9sbGJhckludGVybmFsKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGFkZENoaWxkCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogRGVs
ZXRlZC4gVGhpcyB3YXMgbmV2ZXIgY2FsbGVkLAorICAgICAgICBzbyBtYWRlIGl0IHB1cmUgdmly
dHVhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKTog
VXNlIGEgbW9kZXJuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2xp
cFJlY3RDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxDb3JuZXIpOiBEZWxldGVkLiBUaGlzIHdhcyBlbXB0eSBzbyBtYWRlIGl0IHB1cmUK
KyAgICAgICAgdmlydHVhbCBhbmQgY2hhbmdlZCBGcmFtZVZpZXcgdG8gbm90IGNhbGwgaXQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKTogVXNlIGEgbWRv
cmVuIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aGlkZSk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuaDogQ2hhbmdlZCB0aGUgY2hpbGRyZW4gc2V0IHRvIGNvbnRh
aW4gUmVmIGluc3RlYWQgb2YgUmVmUHRyLgorICAgICAgICBDaGFuZ2VkIGZ1bmN0aW9ucyB0aGF0
IHdlcmUgbmV2ZXIgb3ZlcnJpZGRlbiB0byBlaXRoZXIgYmUgZmluYWwgb3Igbm9uLXZpcnR1YWws
CisgICAgICAgIENoYW5nZWQgZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBjYWxsZWQgdG8gYmUg
cHVyZSB2aXJ0dWFsLgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5o
OiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgorICAgICAgICBy
YXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRpbWluZ0Z1bmN0
aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5kIFJlZiYmIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rpb24gYW5kCisg
ICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50IGNoZWNrIGlu
IEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25MaXN0OjpB
bmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJlZiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250YWluIFJlZiBp
bnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudAor
ICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y2xv
bmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRl
ZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisg
ICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4K
KworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBSZWZQdHIgaW5z
dGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
Lmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9yZQorICAgICAg
ICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGluZyB0byBSZWYg
aW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIFBhc3NSZWZQ
dHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6IFJldHVy
biBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZS4gTWFkZSBl
dmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2YgZmluaXNo
RW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOiBSZW1vdmVkIGluY2x1ZGVkIG9mIFBhc3NSZWZQdHIu
aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDogVHdl
YWtlZCBmb3JtYXR0aW5nLiBSZW1vdmVkIG5lc3RpbmcKKyAgICAgICAgZnJvbSAjaWYgc2luY2Ug
b3VyIGZvcm1hdHRpbmcgbWFrZXMgaXQgaGFyZCB0byBzZWUgbmVzdGluZy4gTGV0IHRoZSBjb21w
aWxlcgorICAgICAgICBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBtb3ZlIGFuZCBjb3B5IGNvbnN0cnVj
dG9ycyBhbmQgYXNzaWduZW1udCBvcGVyYXRvcnMgZXhjZXB0CisgICAgICAgIGluIHRoZSBVU0Uo
RlJFRVRZUEUpIGNhc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25WYWx1ZTo6QW5pbWF0aW9uVmFsdWUp
OiBVcGRhdGVkIHNpbmNlIGNsb25lIG5vdyByZXR1cm5zIGEgUmVmCisgICAgICAgIHJhdGhlciB0
aGFuIGEgUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRBbmltYXRpb25WYWx1ZTo6Rmxv
YXRBbmltYXRpb25WYWx1ZSk6IERlbGV0ZWQuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2Vu
ZXJhdGUgdGhlIGNvcHkgY29uc3RydWN0b3Igd2l0aG91dCBkZWZpbmluZyBpdCBleHBsaWNpdGx5
LgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKTogVXNlIGEgbW9kZXJuIGZvcgorICAgICAgICBsb29wLCByZXNlcnZlSW5p
dGlhbENhcGFjaXR5LCBhbmQgdW5jaGVja2VkIGFwcGVuZC4gQWxzbyB0ZWxsIHRoZSBjb21waWxl
ciB0bworICAgICAgICBnZW5lcmF0ZSB0aGUgbW92ZSBjb25zdHJ1Y3Rvciwgc2luY2UgdGhlIHNw
ZWNpYWwgd29yayBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlCisgICAgICAgIGNvcHkgY29uc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0
aW9uVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjpL
ZXlmcmFtZVZhbHVlTGlzdCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TGVnYWN5Q0RNU2Vzc2lvbi5oOiBSZW1vdmVkIGluY2x1ZGUgb2YgUGFzc1JlZlB0ci5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwg
bm93IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1
ZGUgZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgor
ICAgICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAg
ICAgICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Rmls
dGVyQW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAg
ICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2Vk
IGFyZ3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQ
dHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0OjpzZXRGb2N1cyk6IFVwZGF0ZWQgdG8gcGFzcyBhIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHA6IFJlbW92
ZWQuIFVudXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1v
Y2suaDogUmVtb3ZlZC4gVW51c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJzb3IpOiBSZXR1cm4gYSBS
ZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2hhcmVk
Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb2FkQ3Vyc29yQnlOYW1lKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCk6IFJlbW92ZWQgYSBu
by1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6b3V0cHV0UmVjdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3Jv
bGxiYXIpOiBQYXNzIHdpZGdldCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFs
c28gZGlkIGEgZmV3IG90aGVyIHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6IFVzZSBtb3ZlCisgICAgICAg
IGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9vcCBpbnN0ZWFkIG9mIGl0ZXJhdG9y
cy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOiBUYWtlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lk
Z2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBv
aW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBVcGRhdGVkIGZvciBh
Ym92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUpOiBVcGRh
dGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVtb3ZlZCBu
by1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0dXJuIGEg
cmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5jZSBtYXRo
TUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNob3VsZE1v
dmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQ
YXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRl
TWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9w
ZXJhdG9yPSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6
IFVwZGF0ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2lu
dGVyLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVt
b3ZlZCB1bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0
aGF0IGFyZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQor
ICAgICAgICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9w
ZXJhdG9yPT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6Y3Jl
YXRlKTogVGFrZSBhIFJlZiYmIGluc3RlYWQgb2YgYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZVZhbHVlOjpTaGFwZVZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hl
ZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKIDIw
MTctMDEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXZvaWQgdHJpZ2dlcmluZyByZWJ1aWxkcyBmb3IgbWlub3IgY2hhbmdlcyBvZiBDU1NQcm9w
ZXJ0aWVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4YTA2NWYxMzA0MThkYTI3MGI2ZmJhNjcy
ODk1MjllYmFlNGM2M2RhLi4zNWYzMDM4MmNmNmU1YTQ2NTRkNmViNmNjMzVjYjZkNTczN2E4ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDEtMDcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20g
bW9yZSBvZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoTmV0c2NhcGVQbHVnaW5XaWRnZXQ6OmhhbmRsZUV2ZW50KTogUGFzcyBhIHJlZmVyZW5j
ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Fk
ZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzpkYXNoYm9hcmRSZWdpb25zOl0p
OgorICAgICAgICBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5zIFJl
ZiBpbnN0ZWFkIG9mIFJlZlB0ci4KKwogMjAxNy0wMS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgdXNlIGZyb20gImluc3BlY3Rv
ciIsICJwbGF0Zm9ybS9zcWwiLCBhbmQgInBsYXRmb3JtL3RleHQiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzQw
NWI1ZWRiZjUxOTJlY2U1Nzg3NmViOTY4NWEzZTMzMTEyMmUwYi4uNjFiNDcyYWIxMmYwMDllZTdj
MzdlMTA0MDBkNWFiYzFlY2IxM2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3
LTAxLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UGFzc1JlZlB0ciBmcm9tIG1vcmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRlU2Ny
b2xsYmFyKTogVXBkYXRlZCBzaW5jZSBhZGRDaGlsZCBub3cgdGFrZXMgYSByZWZlcmVuY2UuCisK
IDIwMTctMDEtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBQYXNzUmVmUHRyIHVzZSBmcm9tICJpbnNwZWN0b3IiLCAicGxhdGZvcm0vc3FsIiwgYW5k
ICJwbGF0Zm9ybS90ZXh0IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDFiZDRkNzdkNmM1NTkxNzAxMzc4ZGI0
YmYwM2Y2ZGRlYTdlNjg5OTUuLmVkZTc1NDM3YTM0ZjNmNWRlOTJmMjUwZDVkMTBkMWZiOGEzZTJk
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBJbmpl
Y3RlZFNjcmlwdEhvc3QmIGltcGwoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEluamVjdGVk
U2NyaXB0SG9zdCY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbmplY3RlZFNjcmlwdEhvc3Qm
IGltcGwoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZWQ7IH0KIAogICAgIC8vIEF0dHJpYnV0ZXMu
CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCA0Yjg2ZGVjNzFh
NzIzNzRlNzExMjNlMjkyNDE2YzkyZjdlNmYzYjdhLi5lYTQzZmYxNWY3YjVmMDdmY2JmMmQ2YjFi
NTNmNjE3YzNkYmViMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZh
dGVOYW1lLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgUHJpdmF0ZU5hbWUoUHJp
dmF0ZU5hbWUmJikgPSBkZWZhdWx0OwogCi0gICAgU3ltYm9sSW1wbCYgdWlkKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxTeW1ib2xJbXBsJj4obV91aWQuZ2V0KCkpOyB9CisgICAgU3ltYm9s
SW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAmb3Ro
ZXIudWlkKCk7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDQ3ZTVmYTA5
NmU4MTYwM2MwOGU1NmJhZjFlOGFiZGRmMDkwMWFiMjUuLmU5NTUzNTJkZmY3YTU1Mjk5OTgwYTlj
OWM2N2UyZjNlNzVjNzE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC0xMzMsMTcgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChtX3B0cik7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNv
bnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigp
IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUKiBwdHIoKSBj
b25zdCB7IEFTU0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0cigpIHsgQVNT
RVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7
IEFTU0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KLSAgICBUJiBnZXQoKSB7IEFTU0VSVCht
X3B0cik7IHJldHVybiAqbV9wdHI7IH0KLQotICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gKm1fcHRyOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IEFT
U0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3Qg
eyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBwdHIoKSBjb25zdCB7IEFT
U0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQmIGdldCgpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIG9wZXJhdG9yIFQmKCkgY29uc3QgeyBBU1NF
UlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBS
ZWY8VD4gcmVwbGFjZShSZWY8VT4mJikgV0FSTl9VTlVTRURfUkVUVVJOOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDZlYjMxNDY5OWFiZDUxNDlhOWQ0YjVmZjllOTE2ODU4NjU0OTgxM2QuLjMw
ODgxZDNiZTI4MWQwMWM3MTMzYTdjNzZmZmViMGY3YmUxZWNlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0yMjc3LDcgKzIyNzcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAogICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1NEUFByb2Nlc3NvclNjcmlwdFJlc291cmNlLmNwcAogCi0gICAgcGxh
dGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2sv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDBi
YjQ2ZWJlNDkyZTkwMWU2ODU4NjgzN2UzNzhkY2FiNDA1NzNkZmMuLmUxZTczNWE0MGI1NTBmYTYx
YWY1MWE2YjBlODM3OGE0MDJhYzk5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJMZWdhY3lDRE1T
ZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcAppbmRleCBkOGJjN2E1NWMzMDk5OTE4MDUzYzcxM2MyYjZjOThhZTM1N2Rk
MWEzLi42NzQ2ZjRlZjRhZjNlYTY4MGNlNGYxMTgzMTcwYTM2NzBkODhmMWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ28KIAog
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCi0gICAgLCBtX3BsYXRmb3JtVXR0ZXJh
bmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCisgICAg
LCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpj
cmVhdGUoKnRoaXMpKQogewogICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDVmMTQxOTc1OTU3ZTRmZWQ5YzJkZGNmYzI2NjdiZTQy
M2FiNThjZjEuLmI1Y2I1MjAwMjM2MTBhYjEzOGQ0NmNlZmUwNDVhYjkxYmMxNGY1MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsCiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICB+U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKCk7CisgICAgdmlydHVhbCB+U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
VXR0ZXJhbmNlLT50ZXh0KCk7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KQEAgLTYyLDIxICs2Miwy
MSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnN0YXJ0VGltZSgpOyB9CiAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91
YmxlIHN0YXJ0VGltZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRTdGFydFRpbWUoc3RhcnRU
aW1lKTsgfQogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+Ojpk
ZXJlZjsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqIHBsYXRmb3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bVV0dGVyYW5jZS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKwogICAg
IFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVy
YW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0KLSAgICBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oCmluZGV4IGY5MGY5NmEwZWVhNzNiOWY5YTUxYmI0NTExNDBmMDZkMDNiOTAxNDcuLjdhNjFi
Y2FkYjBjM2JjOWIzMDAwZmVjMjE5YzUxNzlhMzU2ZmU3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC00NDksOCArNDQ5LDggQEAgbmFtZXNwYWNlIERl
dGFpbCB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29u
c3QgVCogcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUKj4ocCk7IH0KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgVCYgZ2V0UHRyT3JSZWYoY29uc3QgVCYgcCkgeyByZXR1cm4gY29uc3RfY2Fz
dDxUJj4ocCk7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYo
Y29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLmdldCgpKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8VD4m
IHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCY+KHAuZ2V0KCkpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIFQqIGdldFB0ck9yUmVmKGNvbnN0IFJlZlB0cjxUPiYgcCkgeyByZXR1cm4g
cC5nZXQoKTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihj
b25zdCBSZWY8VD4mIHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDM4NTI5YmI2MWZkNDUyNWJiOTc1NThi
YThkZjNjN2RkZTEzYjc1OGUuLjZmMzc0NjJhMjgxMjExN2IzYmZmZjIzNGEyMzBlYWY5OTc0NDgy
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uQ2xhc3MgRE9NV3Jh
cHBlZDsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNET01XcmFwcGVyID0gdHJ1ZTsKIAot
ICAgIEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CisgICAgSW1wbGVt
ZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZXcmFwcGVkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTRE9NV3JhcHBlcjxJbXBsZW1lbnRhdGlvbkNsYXNzPiwgbV93cmFwcGVkKTsgfQogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcAppbmRleCBlMTJhMjQwZDdlNjg3YjljYTY5NjQwZDgyZDZjNDM0ZmU3OGQ2YTQy
Li5hZWVjYzcyNTI0ZThkMGQ1ZGQyNGNhNDlmOWM1MmQyYTg4MTYwZDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTUzLDEw
ICs1Myw5IEBAIFNjcmlwdE1vZHVsZUxvYWRlcjo6U2NyaXB0TW9kdWxlTG9hZGVyKERvY3VtZW50
JiBkb2N1bWVudCkKIFNjcmlwdE1vZHVsZUxvYWRlcjo6flNjcmlwdE1vZHVsZUxvYWRlcigpCiB7
CiAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX2xvYWRlcnMpCi0gICAgICAgIGNvbnN0X2Nhc3Q8
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyJj4obG9hZGVyLmdldCgpKS5jbGVhckNsaWVudCgpOwor
ICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7CiB9CiAKLQogc3RhdGljIGJvb2wgaXNSb290
TW9kdWxlKEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICByZXR1cm4gaW1w
b3J0ZXJNb2R1bGVLZXkuaXNTeW1ib2woKSB8fCBpbXBvcnRlck1vZHVsZUtleS5pc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCAyZmJlOWMxNGQ0MmVjMWNkYzZmYTE4MjNiODVjYzNlNDcyMjM0Mjc4Li4x
NjkxZmYzMTlmYzg0Y2VhOWJiOTRhM2I1OWMxYzg5NTIzOGI2YzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTQ4NCwx
MSArMTQ4NCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0RHVyYXRpb25WYWx1ZShj
b25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1p
bmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbikKIHsK
LSAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVy
RnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3Qg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0
byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
Jj4odGltaW5nRnVuY3Rpb24pOwogICAgICAgICBpZiAoZnVuY3Rpb24udGltaW5nRnVuY3Rpb25Q
cmVzZXQoKSAhPSBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpDdXN0b20pIHsKICAgICAgICAg
ICAgIENTU1ZhbHVlSUQgdmFsdWVJZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHN3
aXRjaCAoZnVuY3Rpb24udGltaW5nRnVuY3Rpb25QcmVzZXQoKSkgewpAQCAtMTUxMSwxNSArMTUx
MSwxNSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdAogICAgICAgICByZXR1cm4gQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ueDEoKSwgZnVuY3Rpb24u
eTEoKSwgZnVuY3Rpb24ueDIoKSwgZnVuY3Rpb24ueTIoKSk7CiAgICAgfQogICAgIGNhc2UgVGlt
aW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1
bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdG
dW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubnVtYmVyT2ZTdGVwcygpLCBmdW5jdGlvbi5z
dGVwQXRTdGFydCgpKTsKICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3ByaW5nRnVu
Y3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU3By
aW5nVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIGF1dG8mIGZ1bmN0
aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5j
dGlvbik7CiAgICAgICAgIHJldHVybiBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVh
dGUoZnVuY3Rpb24ubWFzcygpLCBmdW5jdGlvbi5zdGlmZm5lc3MoKSwgZnVuY3Rpb24uZGFtcGlu
ZygpLCBmdW5jdGlvbi5pbml0aWFsVmVsb2NpdHkoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlvbi0+dHlwZSgpID09IFRpbWluZ0Z1bmN0aW9uOjpM
aW5lYXJGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlvbi50eXBlKCkgPT0g
VGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZWFyKTsK
ICAgICB9CiB9CkBAIC0xNTI5LDI2ICsxNTI5LDI3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0
PiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQog
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAg
ICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlz
dC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUaW1p
bmdGdW5jdGlvblZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkudGltaW5nRnVuY3Rpb24oKS5n
ZXQoKSkpOworICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rp
b25WYWx1ZSgqYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50aW1pbmdGdW5jdGlvbigpKSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0gICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjpp
bml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWluZ0Z1bmN0
aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9O
U19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZh
bHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVl
KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3aXRjaCAodHJpZ2dl
ci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlvblRyaWdnZXJU
eXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBhdXRvJiBzY3JvbGxB
bmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKnRyaWdn
ZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChzY3JvbGxBbmltYXRp
b25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICByZXR1cm4gQ1NTQW5p
bWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZv
ckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwgc3R5bGUpKTsKICAg
ICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3JlYXRlKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5zdGFydFZh
bHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlv
blRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAgICAgICBBU1NFUlQo
dHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9uVHJpZ2dlclR5cGU6
OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgIH0K
IH0KQEAgLTE1NTgsMTIgKzE1NTksMTIgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFu
aW1hdGlvblRyaWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkudHJpZ2dlcigpLmdldCgpLCBzdHls
ZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1
ZSgqYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCksIHN0eWxlKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShB
bmltYXRpb246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7Ci0KKyAgICAgICAgbGlz
dC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShBbmltYXRpb246OmluaXRpYWxU
cmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CisKICNlbmRpZgog
CiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVlKHVuc2lnbmVk
IGxpbmVCb3hDb250YWluKQpAQCAtMzYzNywyOCArMzYzOCwyNyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
OgogICAgICAgICAgICAgcmV0dXJuIGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5z
aXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjogewotICAgICAg
ICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMo
KTsKLSAgICAgICAgICAgIGlmIChhbmltTGlzdCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFT
ZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBhbmltTGlzdCA9IHN0eWxlLT50cmFu
c2l0aW9ucygpKSB7CisgICAgICAgICAgICAgICAgYXV0byB0cmFuc2l0aW9uc0xpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmlt
YXRpb24gPSBhbmltTGlzdC0+YW5pbWF0aW9uKGkpOworICAgICAgICAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8mIGFuaW1hdGlvbiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSk7CiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1
ZShhbmltYXRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShhbmltYXRpb24uZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdG
dW5jdGlvblZhbHVlKGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmlt
YXRpb24udGltaW5nRnVuY3Rpb24oKSkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGFuaW1hdGlvbi5kZWxheSgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5h
cHBlbmQobGlzdC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNp
dGlvbnNMaXN0LT5hcHBlbmQoV1RGTW92ZShsaXN0KSk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uc0xpc3Q7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUodHJhbnNpdGlvbnNMaXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VT
ZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24tcHJvcGVydHkgZGVm
YXVsdCB2YWx1ZS4KICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQWxsKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0
ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5n
ZXQoKSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFs
dWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKSkpOwogICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxh
eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0
OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5wb2ludGVyRXZlbnRzKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGM4YjYxNTUwYjZiYTdl
NjJjM2I3MzNkNDVhYTA4NTQxYTA4NTUwOGEuLjNjN2MyOTk1NjBhODFmMTdhZDY4N2E1YzNjOGIy
OTYzOTM0NzlmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
Q2FjaGVkR2VuZXJhdGVkSW1hZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENhY2hlZEdlbmVyYXRlZEltYWdlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmLCBG
bG9hdFNpemUsIEdlbmVyYXRlZEltYWdlJik7Ci0gICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmF0ZWRJbWFnZSY+KG1faW1hZ2UuZ2V0KCkp
OyB9CisgICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsg
fQogICAgIHZvaWQgcHVudEV2aWN0aW9uVGltZXIoKSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0
KCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApp
bmRleCAwNjQyYjg3OGNlOTM1MjNjZmUwYWNkOTYxZTkxNzU0YWViZTBlYTBhLi4wOWU3YWQzMTA2
NTFkMWEwODdmMmRiN2QzZjg0NGI3MzE4MzMyNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCkBAIC0yMTEsMTIgKzIxMSwxMCBAQCBDU1NLZXlmcmFtZVJ1bGUqIENT
U0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7IAogICAgIGlmIChp
bmRleCA+PSBsZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBBU1NFUlQo
bV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2tleWZyYW1lc1J1bGUtPmtleWZy
YW1lcygpLnNpemUoKSk7Ci0gICAgUmVmUHRyPENTU0tleWZyYW1lUnVsZT4mIHJ1bGUgPSBtX2No
aWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOworICAgIGF1dG8mIHJ1bGUgPSBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnNbaW5kZXhdOwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcnVsZSA9IGFk
b3B0UmVmKG5ldyBDU1NLZXlmcmFtZVJ1bGUoY29uc3RfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZSY+
KG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKClbaW5kZXhdLmdldCgpKSwgY29uc3RfY2FzdDxD
U1NLZXlmcmFtZXNSdWxlKj4odGhpcykpKTsKLQorICAgICAgICBydWxlID0gYWRvcHRSZWYoKm5l
dyBDU1NLZXlmcmFtZVJ1bGUobV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpbmRleF0sIGNv
bnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRoaXMpKSk7CiAgICAgcmV0dXJuIHJ1bGUuZ2V0
KCk7IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKaW5kZXggODEwYjlhNDU0ZDY1NzZl
OGFlNzhlNGY1ZWJjZmYwYjAxMmI3M2YyMC4uNzFmMzU1MDU1NmM2ODVmOGY1ZjA1MTVkYTAwMzJh
ODk5MTY3YTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaApAQCAtNDEsNyArNDEsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUo
KTsKIAogICAgIC8vIEZJWE1FOiBOb3QgQ1NTT00uIFJlbW92ZS4KLSAgICBTdHlsZVJ1bGUmIHN0
eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U3R5bGVSdWxlJj4obV9zdHlsZVJ1
bGUuZ2V0KCkpOyB9CisgICAgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlUnVsZS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIENTU1N0eWxlUnVsZShTdHlsZVJ1
bGUmLCBDU1NTdHlsZVNoZWV0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBjOWZiNzMz
NTk4NWI4YmM3YmU2ODY3YjhmNzFjZjIxMzE2MjU2YTNhLi5jMjg5Zjc4NDBhYTY4Yzk4MTdlYmY0
MWQ1NTI3NjZmYTIxNzYxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTI1OCwxMyAr
MjU4LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0dGluZ3Mo
Y29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpCiAKIFN0cmluZyBGb250RmFjZTo6ZmFtaWx5
KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgp
KS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+ZmFtaWxpZXMoKS0+Y3NzVGV4dCgpOwogfQog
CiBTdHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0Zv
bnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9i
YWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnRy
YWl0c01hc2soKSAmIEZvbnRTdHlsZU1hc2spIHsKICAgICBjYXNlIEZvbnRTdHlsZU5vcm1hbE1h
c2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBj
b25zdAogCiBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2Fz
dDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwor
ICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3aXRjaCAobV9iYWNr
aW5nLT50cmFpdHNNYXNrKCkgJiBGb250V2VpZ2h0TWFzaykgewogICAgIGNhc2UgRm9udFdlaWdo
dDEwME1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cmluZyBGb250RmFjZTo6c3RyZXRj
aCgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIHsKLSAg
ICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYg
KCFtX2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiVSswLTEwRkZGRiIpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTMyMCwxMyArMzIwLDEzIEBAIFN0
cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp2
YXJpYW50KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5n
LmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbXB1dGVGb250VmFyaWFudChtX2JhY2tpbmctPnZh
cmlhbnRTZXR0aW5ncygpKS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZhY2U6OmZlYXR1
cmVTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFj
a2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5z
aXplKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpOwogICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggZTRj
Nzk0M2Y4MDgyNTVlMjkxNmE2NzFlNGY1OTUzYzdkYWZkMjE3MS4uYmIyMGQ3ZTk0YjI3MmUwYWY5
YWZhOGE3NGNiOTI4ODRmMzg0ZTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaApAQCAtNzY2LDcgKzc2Niw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1
ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVy
CiAgICAgfQogCiAgICAgaWYgKGlzSW1hZ2VTaGFwZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBT
aGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKSk7CisgICAg
ICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZh
bHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsK
ICAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CkBAIC03ODYsNyArNzg2
LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIKICAgICB9CiAKICAgICBpZiAoc2hhcGUpCi0g
ICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShzaGFwZSksIHJlZmVyZW5j
ZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc2hhcGUucmVsZWFzZU5v
bk51bGwoKSwgcmVmZXJlbmNlQm94KTsKIAogICAgIGlmIChyZWZlcmVuY2VCb3ggIT0gQm94TWlz
c2luZykKICAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRQYXRoLmNwcAppbmRleCBjMmJkZDA1Njc3ODY3YTAyOWM1MWFmYTNlN2Nm
OTczN2VlNzk2ZWJlLi43NzcxMjgxYWI5NDdhMzE0ZjY0MGEwOWFiZDNlNDc4YjcyMjYyM2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMjU4LDIzICsyNTgsMjEgQEAgYm9vbCBFdmVu
dFBhdGg6Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBj
b25zdAogVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0aFVuY2xvc2Vk
VG9UYXJnZXQoY29uc3QgRXZlbnRUYXJnZXQmIHRhcmdldCkgY29uc3QKIHsKICAgICBWZWN0b3I8
RXZlbnRUYXJnZXQqPiBwYXRoOwotICAgIGNvbnN0IE5vZGUqIHRhcmdldE5vZGUgPSBjb25zdF9j
YXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKKyAgICBhdXRvKiB0YXJnZXROb2Rl
ID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CiAgICAgaWYgKCF0
YXJnZXROb2RlKSB7Ci0gICAgICAgIGNvbnN0IERPTVdpbmRvdyogZG9tV2luZG93ID0gY29uc3Rf
Y2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9ET01XaW5kb3coKTsKKyAgICAgICAgYXV0byog
ZG9tV2luZG93ID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9ET01XaW5kb3co
KTsKICAgICAgICAgaWYgKCFkb21XaW5kb3cpCiAgICAgICAgICAgICByZXR1cm4gcGF0aDsKICAg
ICAgICAgdGFyZ2V0Tm9kZSA9IGRvbVdpbmRvdy0+ZG9jdW1lbnQoKTsKICAgICAgICAgQVNTRVJU
KHRhcmdldE5vZGUpOwogICAgIH0KLQogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkg
ewotICAgICAgICBpZiAoTm9kZSogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQo
KS0+dG9Ob2RlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5vZGVJblBhdGggPSBjb250ZXh0LT5j
dXJyZW50VGFyZ2V0KCktPnRvTm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGUt
PmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpub2RlSW5QYXRoKSkKICAgICAgICAgICAgICAgICBwYXRo
LmFwcGVuZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHBhdGguYXBwZW5kKGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgfQotCiAg
ICAgcmV0dXJuIHBhdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZl
Tm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBhMmU5
NjExZDZjNTQ4ODg2MTQ2YmJhOTFhMTA1ZDgwOTFiOGNmYWFlLi5kZWU2NDZjMzdkMTVhZDQ0MzNj
MDMxYjVlM2E1YWM0MWU2MTQyOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2
ZU5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSb290ZWRBdERvY3VtZW50
KCkgY29uc3QgPSAwOwogCiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5
cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0
SW52YWxpZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQotICAgIENvbnRhaW5lck5v
ZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+
KG1fb3duZXJOb2RlLmdldCgpKTsgfQorICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFs
aWRhdGVDYWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghYXR0ck5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVP
bkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyTmFtZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IGNjMWE2YTRhMDY2NjhmNjA0YmNiZGQ0M2M0ZWI2
MmM3YTcyNjZlNjIuLjViYTM3Y2Y4MDZlYmRjZWZhMzJhMzY1ZGU5YzZkY2I2M2I0ZWEyMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC0xNTgsOCArMTU4LDggQEAgRXZlbnRU
YXJnZXQqIE1lc3NhZ2VFdmVudDo6c291cmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZS52YWx1ZSgpLAotICAgICAg
ICBbXShjb25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVudFRhcmdldCogeyBy
ZXR1cm4gY29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFy
Z2V0Kj4od2luZG93LmdldCgpKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxNZXNzYWdl
UG9ydD4mIG1lc3NhZ2VQb3J0KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxF
dmVudFRhcmdldCo+KHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFyZ2V0Kj4obWVzc2FnZVBvcnQu
Z2V0KCkpKTsgfQorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPERPTVdpbmRvdz4mIHdpbmRvdykg
LT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RE9NV2luZG93Kj4od2luZG93Lmdl
dCgpKTsgfSwKKyAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxNZXNzYWdlUG9ydD4mIG1lc3NhZ2VQ
b3J0KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxNZXNzYWdlUG9ydCo+KG1l
c3NhZ2VQb3J0LmdldCgpKTsgfQogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlMmZi
YmNmODFhMTNjZmQwNDA1ZTEyMDM5MWU1MmIzZGU1ZDNlMjg5Li4zYzcxMjBlYWE0ZjhhMzBiOWY0
NmI4YjVhYTk5NmQ3Zjg2MTdlOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MzAsMTEgKzQzMCwx
MCBAQCBzdGF0aWMgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZy
b21Ob2RlT3JTdHJpbmdWZWN0b3IoY29uc3QgVgogICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBu
b2RlU2V0OwogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFudCA6IHZlY3RvcikgewogICAgICAg
ICBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCi0gICAgICAgICAgICBbJl0oY29uc3QgUmVmUHRyPE5v
ZGU+JiBub2RlKSB7IG5vZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0KCkpKTsg
fSwKLSAgICAgICAgICAgIFtdKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICAgICAgWyZdIChj
b25zdCBSZWZQdHI8Tm9kZT4mIG5vZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4o
bm9kZS5nZXQoKSkpOyB9LAorICAgICAgICAgICAgW10gKGNvbnN0IFN0cmluZyYpIHsgfQogICAg
ICAgICApOwogICAgIH0KLQogICAgIHJldHVybiBub2RlU2V0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmlu
ZGV4IDgwM2Y4ZmUyM2Y3MzcwYmNjY2QyYTc1ZjcwMzkxNTczZmVhZDNhN2QuLmI5YTAyMmQ1MGQx
MzY4ZDkzNTNmMDJjYjUwMjMzZTc5MDFkZDI4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBjcmVh
dGUoRG9jdW1lbnQmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UmFuZ2UoKTsKIAotICAgIERvY3VtZW50JiBvd25l
ckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fb3duZXJE
b2N1bWVudC5nZXQoKSk7IH0KKyAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3duZXJEb2N1bWVudDsgfQogCiAgICAgTm9kZSYgc3RhcnRDb250YWluZXIoKSBj
b25zdCB7IEFTU0VSVChtX3N0YXJ0LmNvbnRhaW5lcigpKTsgcmV0dXJuICptX3N0YXJ0LmNvbnRh
aW5lcigpOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Lm9mZnNldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lci5oCmluZGV4IDEwYjJhZDk0M2NjM2I5MDMzMWRjN2FiNjhkNTVmY2Y5NDkyZmUwODIuLjJh
NThhM2ZhMGJjMWQ5ZTU0YjZhMWMzNDUxYTk3MjlhNjM3MmEzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIo
V1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICB9CiAKLSAgICBFdmVudExpc3RlbmVy
JiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRMaXN0ZW5lciY+KG1f
Y2FsbGJhY2suZ2V0KCkpOyB9CisgICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJhY2soKSBjb25zdCB7
IHJldHVybiBtX2NhbGxiYWNrOyB9CiAgICAgYm9vbCB1c2VDYXB0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV91c2VDYXB0dXJlOyB9CiAgICAgYm9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7IHJldHVybiBt
X2lzUGFzc2l2ZTsgfQogICAgIGJvb2wgaXNPbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc09uY2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKaW5kZXggMDQxZTZkMTMzMWY0NDIzYzE1
Yzk4NzY5ZjlhMjI3NGNlZDBhZDBmZi4uMWQ1MmU1ODg4ZTI3MWIwZTgxYjMwNWYxZWYwYzljMjhk
YzVmYzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgU2NyaXB0UnVubmVyOjp+U2NyaXB0UnVubmVyKCkKICAgICB9CiAgICAgZm9yIChhdXRvJiBw
ZW5kaW5nU2NyaXB0IDogbV9wZW5kaW5nQXN5bmNTY3JpcHRzKSB7CiAgICAgICAgIGlmIChwZW5k
aW5nU2NyaXB0LT53YXRjaGluZ0ZvckxvYWQoKSkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UGVu
ZGluZ1NjcmlwdCY+KHBlbmRpbmdTY3JpcHQuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAg
ICAgICBwZW5kaW5nU2NyaXB0LT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRl
Y3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKaW5kZXggNmZhYWQ0MDc1MDUwNDUwZGQzYjkwOWJlZGFjMDAzMDBjYzll
MmE4Ni4uNDgwMTI2YjY1MTZiN2U3OTUzOGI2MjlmYjg2YWVjMDJjOTE3MmYyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlubGluZSBDb2xs
ZWN0aW9uVHlwZSBIVE1MQ29sbGVjdGlvbjo6dHlwZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWlu
ZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9vd25lck5vZGUuZ2V0KCkpOworICAgIHJldHVy
biBtX293bmVyTm9kZTsKIH0KIAogaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlvbjo6ZG9j
dW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5o
CmluZGV4IGVmMjA2ZjZjMWUxYTU2MTQ3NTA5NmUyMmFiNzk3ZDMyMmM5YmUxMGYuLjk4NTMxOTgz
MWIxNTMyOWJiYTk0ZmNmYTkwNTQ0ZThjZjM3Y2ZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgUmVmPEhU
TUxTdGFja0l0ZW0+IEhUTUxTdGFja0l0ZW06OmNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFn
bWVudCkKIAogaW5saW5lIENvbnRhaW5lck5vZGUmIEhUTUxTdGFja0l0ZW06Om5vZGUoKSBjb25z
dAogewotICAgIHJldHVybiBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX25vZGUuZ2V0KCkp
OworICAgIHJldHVybiBtX25vZGUuZ2V0KCk7CiB9CiAKIGlubGluZSBFbGVtZW50JiBIVE1MU3Rh
Y2tJdGVtOjplbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggM2FjMjg3MDc3M2I4MzQwYWU1ZTNiNGI5
NjcyOTJhZGNkMmIwOTMxMS4uYzJlNTE0Y2I3YzcyMTFiYzM3YzI0MzI4YmQ0MDJmNDllNjg0NDhh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTEzMyw1OCArMTMzLDQ0IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0IFBhZ2VHcm91cCYgcGFnZUdyb3VwLCBib29sCiB7
CiAgICAgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChwYXVzZWQpOwogCi0gICAgZm9yIChh
dXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQocGFnZSwgcGF1c2VkKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoUGFnZSogcGFnZSwgYm9vbCBwYXVzZWQpCi17Ci0gICAgQVNTRVJUX0FS
RyhwYWdlLCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKLQot
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKGZyYW1lLCBwYXVzZWQpOwotCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBm
cm9udGVuZENsaWVudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9u
dGVuZENsaWVudCgpKSB7Ci0gICAgICAgIGlmIChwYXVzZWQpCi0gICAgICAgICAgICBmcm9udGVu
ZENsaWVudC0+cGFnZVBhdXNlZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcm9udGVu
ZENsaWVudC0+cGFnZVVucGF1c2VkKCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3Vw
LnBhZ2VzKCkpIHsKKyAgICAgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOworCisg
ICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgc2V0SmF2YVNj
cmlwdFBhdXNlZCgqZnJhbWUsIHBhdXNlZCk7CisKKyAgICAgICAgaWYgKGF1dG8qIGZyb250ZW5k
Q2xpZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChwYXVzZWQpCisgICAgICAgICAgICAgICAgZnJvbnRl
bmRDbGllbnQtPnBhZ2VQYXVzZWQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBmcm9udGVuZENsaWVudC0+cGFnZVVucGF1c2VkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
LXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBm
cmFtZSwgYm9vbCBwYXVzZWQpCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNj
cmlwdFBhdXNlZChGcmFtZSYgZnJhbWUsIGJvb2wgcGF1c2VkKQogewotICAgIEFTU0VSVF9BUkco
ZnJhbWUsIGZyYW1lKTsKLQotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICBpZiAoIWZyYW1lLnNjcmlwdCgpLmNh
bkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZnJhbWUtPnNjcmlwdCgpLnNldFBhdXNlZChwYXVzZWQpOworICAgIGZyYW1lLnNj
cmlwdCgpLnNldFBhdXNlZChwYXVzZWQpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOworICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKHBhdXNlZCkgewotICAgICAg
ICBkb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OwotICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2Jq
ZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50
LnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVn
Z2VyUGF1c2VkKTsKICAgICB9IGVsc2UgewotICAgICAgICBkb2N1bWVudC0+cmVzdW1lQWN0aXZl
RE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7Ci0g
ICAgICAgIGRvY3VtZW50LT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFj
a3MoKTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01P
YmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnJlc3Vt
ZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIAotICAgIHNl
dEphdmFTY3JpcHRQYXVzZWQoZnJhbWUtPnZpZXcoKSwgcGF1c2VkKTsKLX0KLQotdm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBi
b29sIHBhdXNlZCkKLXsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAoYXV0byYgY2hpbGQgOiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghaXM8UGx1
Z2luVmlld0Jhc2U+KCpjaGlsZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBk
b3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKmNoaWxkKS5zZXRKYXZhU2NyaXB0UGF1c2VkKHBhdXNl
ZCk7CisgICAgaWYgKGF1dG8qIHZpZXcgPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBjaGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UGx1
Z2luVmlld0Jhc2U+KGNoaWxkLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPihjaGlsZC5nZXQoKSkuc2V0SmF2YVNj
cmlwdFBhdXNlZChwYXVzZWQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggM2I0OTc5MWVl
MjllNWM1MGYwYTNjOGFjMWM0MTZkYTVhN2M3N2JkMS4uN2Y1OGM2YzhiMDQ4YmYzZGMyNzdhYjlk
ZjY1ZmVhMjQ2ODIyYjdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQ
YWdlR3JvdXA7CiAKQEAgLTU2LDkgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKTsKIAogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNl
ZChjb25zdCBQYWdlR3JvdXAmLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0
UGF1c2VkKFBhZ2UqLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2Vk
KEZyYW1lKiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFt
ZVZpZXcqLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1l
JiwgYm9vbCBwYXVzZWQpOwogCiAgICAgUGFnZSYgbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDRlODI3NTQ1ZTJjMDhlNGQzZWZh
MjI0YTYzZGZkNWViMzU3MGE5Y2IuLjI5NWI5NGExYTU1NWIyYTI4ZTc1MDM2YzZiMWQwMjU3MDcy
OTk3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApA
QCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFBy
b3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0CiAgICAgICAgIEZyYW1l
KiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpOwogICAg
ICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJ
dGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY2hpbGRJ
dGVtLCBmcm9tQ2hpbGRJdGVtKTsKICAgICB9CiB9CiAKQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
SGlzdG9yeUl0ZW0qIGZyb21JdAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9
IGZyb21JdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAg
QVNTRVJUKGZyb21DaGlsZEl0ZW0pOwogICAgICAgICBpZiAoRnJhbWUqIGNoaWxkRnJhbWUgPSBt
X2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSkpCi0gICAgICAgICAgICBjaGlsZEZy
YW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0
b3J5SXRlbSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAg
ICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNo
aWxkSXRlbSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IDBiYjI4OGVhZWZjZjgwODFiMWYwY2Y0MWRjNTZhOWExODc3Y2ZlN2UuLmQ1YTUx
MDYwMTc0YTg3MDZmODk5ZDUyODg0YWQ2YmI0Y2Y2NzAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC03MjMsMzEgKzcyMywyNyBAQCBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVy
KCkgY29uc3QKIAogUmVuZGVyV2lkZ2V0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CiB7
Ci0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVu
dDsKKyAgICBhdXRvKiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKICAgICBpZiAoIW93
bmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogb2JqZWN0ID0g
b3duZXJFbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAvLyBGSVhNRTogSWYgPG9iamVjdD4gaXMgZXZlciBmaXhlZCB0byBk
aXNhc3NvY2lhdGUgaXRzZWxmIGZyb20gZnJhbWVzCiAgICAgLy8gdGhhdCBpdCBoYXMgc3RhcnRl
ZCBidXQgY2FuY2VsZWQsIHRoZW4gdGhpcyBjYW4gdHVybiBpbnRvIGFuIEFTU0VSVAotICAgIC8v
IHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIDAgd2hlbiB0aGUgbG9hZCBpcyBjYW5jZWxl
ZC4KKyAgICAvLyBzaW5jZSBtX293bmVyRWxlbWVudCB3b3VsZCBiZSBudWxscHRyIHdoZW4gdGhl
IGxvYWQgaXMgY2FuY2VsZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NTg1Ci0gICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KCpvYmplY3QpKQorICAg
IGlmICghaXM8UmVuZGVyV2lkZ2V0PihvYmplY3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PihvYmplY3QpOwogfQogCi1GcmFtZSog
RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCogd2lkZ2V0KQorRnJhbWUqIEZyYW1l
OjpmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBBU1NFUlRfQVJH
KHdpZGdldCwgd2lkZ2V0KTsKLQotICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gUmVu
ZGVyV2lkZ2V0OjpmaW5kKHdpZGdldCkpCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVy
V2lkZ2V0OjpmaW5kKHdpZGdldCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+ZnJhbWVPd25l
ckVsZW1lbnQoKS5kb2N1bWVudCgpLmZyYW1lKCk7CiAKICAgICAvLyBBc3N1bWUgYWxsIHdpZGdl
dHMgYXJlIGVpdGhlciBhIEZyYW1lVmlldyBvciBvd25lZCBieSBhIFJlbmRlcldpZGdldC4KICAg
ICAvLyBGSVhNRTogVGhhdCBhc3N1bXB0aW9uIGlzIG5vdCByaWdodCBmb3Igc2Nyb2xsIGJhcnMh
Ci0gICAgcmV0dXJuICZkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmZyYW1lKCk7CisgICAg
cmV0dXJuICZkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKTsKIH0KIAogdm9pZCBG
cmFtZTo6Y2xlYXJUaW1lcnMoRnJhbWVWaWV3ICp2aWV3LCBEb2N1bWVudCAqZG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKaW5kZXggNjgzNDExMDdkOTgxYzRhMzJhYmViOWM1MTA5M2M4N2E4MWRmODY1
NS4uOWE4ZjczY2NiNThkNzdlZGQ0OTE5NmE1N2ZmZGJhZjEzOGExZWM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaApAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgbGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZsYWdzID0gMCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25z
dCBXaWRnZXQmKTsKIAogICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICpt
X3NldHRpbmdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NzA3NWZkNTc5
YmZjYjM5ZjY2ZjZkOTM2NjlkZWQ1MDc2YTAzNzQ1Li5iMjkxMjM2M2YyMWRkODBkNmJlMDEwZDA4
YWNhMjdhZTkyZjc1YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zLDcgKzMs
NyBAQAogICogICAgICAgICAgICAgICAgICAgICAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5v
cmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3Rv
QGtkZS5vcmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVs
bGVyQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxMy0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFo
YW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUwNiwxOCArNTA2LDE3IEBA
IGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgp
KSB7Ci0gICAgICAgIGlmIChIb3N0V2luZG93KiB3aW5kb3cgPSBob3N0V2luZG93KCkpCi0gICAg
ICAgICAgICB3aW5kb3ctPmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOworICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCkuaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25l
clJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IHJl
cGFpbnRSZWN0ID0gcmVjdDsKLSAgICByZXBhaW50UmVjdC5tb3ZlKHJlbmRlcmVyLT5ib3JkZXJM
ZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOworICAgIHJlcGFp
bnRSZWN0Lm1vdmUocmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVm
dCgpLCByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKICAg
ICByZW5kZXJlci0+cmVwYWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7CiB9CiAKQEAgLTU0NCwx
NCArNTQzLDE2IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYg
bmV3UmVjdCkKIH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKwogYm9v
bCBGcmFtZVZpZXc6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKLSAgICBpZiAoSG9zdFdpbmRvdyog
d2luZG93ID0gaG9zdFdpbmRvdygpKSB7Ci0gICAgICAgIHdpbmRvdy0+c2NoZWR1bGVBbmltYXRp
b24oKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcGFnZS0+Y2hyb21lKCkuc2NoZWR1bGVBbmltYXRpb24oKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRNYXJnaW5X
aWR0aChMYXlvdXRVbml0IHcpCkBAIC0xMDU2LDIyICsxMDU3LDIyIEBAIEdyYXBoaWNzTGF5ZXIq
IEZyYW1lVmlldzo6Z3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0
IHBsYXRmb3JtCiB7CiAgICAgLy8gVG8gZmluZCB0aGUgV2lkZ2V0IHRoYXQgY29ycmVzcG9uZHMg
d2l0aCBwbGF0Zm9ybVdpZGdldCB3ZSBoYXZlIHRvIGRvIGEgbGluZWFyCiAgICAgLy8gc2VhcmNo
IG9mIG91ciBjaGlsZCB3aWRnZXRzLgotICAgIFdpZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRy
OworICAgIGNvbnN0IFdpZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRyOwogICAgIGZvciAoYXV0
byYgd2lkZ2V0IDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAod2lkZ2V0LT5wbGF0Zm9ybVdp
ZGdldCgpICE9IHBsYXRmb3JtV2lkZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGZvdW5kV2lkZ2V0ID0gd2lkZ2V0LmdldCgpOworICAgICAgICBmb3VuZFdpZGdldCA9IHdpZGdl
dC5wdHIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZFdpZGdldCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5k
ZXJXaWRnZXQ6OmZpbmQoZm91bmRXaWRnZXQpOworICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJl
bmRlcldpZGdldDo6ZmluZCgqZm91bmRXaWRnZXQpOwogICAgIGlmICghcmVuZGVyV2lkZ2V0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlbmRlckxheWVyKiB3aWRnZXRMYXllciA9
IHJlbmRlcldpZGdldC0+bGF5ZXIoKTsKKyAgICBhdXRvKiB3aWRnZXRMYXllciA9IHJlbmRlcldp
ZGdldC0+bGF5ZXIoKTsKICAgICBpZiAoIXdpZGdldExheWVyIHx8ICF3aWRnZXRMYXllci0+aXND
b21wb3NpdGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMTgwLDExICsyMTgx
LDExIEBAIGJvb2wgRnJhbWVWaWV3OjpzaG91bGRTZXRDdXJzb3IoKSBjb25zdAogYm9vbCBGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7
CiAgICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzIHx8IG1fdmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMtPmlzRW1wdHkoKSkgewotICAgICAgICBob3N0V2luZG93KCktPnNjcm9s
bChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgICAgIGZyYW1lKCku
cGFnZSgpLT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJl
Y3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBib29sIGlzQ29t
cG9zaXRlZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgYm9v
bCBpc0NvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOwog
CiAgICAgLy8gR2V0IHRoZSByZWN0cyBvZiB0aGUgZml4ZWQgb2JqZWN0cyB2aXNpYmxlIGluIHRo
ZSByZWN0VG9TY3JvbGwKICAgICBSZWdpb24gcmVnaW9uVG9VcGRhdGU7CkBAIC0yMjIwLDcgKzIy
MjEsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgIH0KIAogICAgIC8vIDEpIHNjcm9s
bAotICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNs
aXBSZWN0KTsKKyAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuc2Nyb2xsKHNjcm9sbERlbHRh
LCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKIAogICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBv
ZiBmaXhlZCBvYmplY3RzIHRoYXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKICAgICBmb3IgKGF1dG8m
IHVwZGF0ZVJlY3QgOiByZWdpb25Ub1VwZGF0ZS5yZWN0cygpKSB7CkBAIC0yMjM1LDcgKzIyMzYs
NyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgICAgICB9CiAgICAgICAgIGlmIChjbGlw
c1JlcGFpbnRzKCkpCiAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3Jv
bGwpOwotICAgICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3
KHVwZGF0ZVJlY3QpOworICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuaW52YWxpZGF0
ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRlUmVjdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yNjQyLDkgKzI2NDMsMTAgQEAgYm9vbCBGcmFtZVZpZXc6OnJlcXVlc3RTY3JvbGxQ
b3NpdGlvblVwZGF0ZShjb25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRpb24pCiAKIEhvc3RXaW5k
b3cqIEZyYW1lVmlldzo6aG9zdFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZSgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnBhZ2UtPmNocm9t
ZSgpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcikKQEAgLTI3ODQsMTAgKzI3ODYsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVz
dFRpbGVkQmFja2luZ1Njcm9sbGFiaWxpdHkoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCiB2
b2lkIEZyYW1lVmlldzo6dW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpCiB7CiAgICAgYWRq
dXN0VGlsZWRCYWNraW5nU2Nyb2xsYWJpbGl0eSgpOwogfQorCiAjZW5kaWYKIAogc3RhdGljIExh
eWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncyBkZXRlcm1pbmVMYXllckZsdXNoVGhyb3R0bGVT
dGF0ZShQYWdlJiBwYWdlKQpAQCAtNDA4Miw4ICs0MDg2LDYgQEAgdm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUo
V1RGTW92ZSgqY29ybmVyU3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihj
b3JuZXJSZWN0KTsKICAgICB9Ci0KLSAgICBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIo
KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKQEAgLTQxNTcsMTUgKzQxNTks
MTQgQEAgQ29sb3IgRnJhbWVWaWV3Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBi
b29sIEZyYW1lVmlldzo6aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiB3aWRnZXQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3
aWRnZXQpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5o
YXNDdXN0b21TY3JvbGxiYXJzKCkpCisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KHdpZGdldC5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQo
KSkuaGFzQ3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzPFNjcm9sbGJhcj4oKndpZGdldCkpIHsKLSAgICAgICAgICAg
IGlmIChkb3duY2FzdDxTY3JvbGxiYXI+KCp3aWRnZXQpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCisg
ICAgICAgIH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpKSB7CisgICAgICAg
ICAgICBpZiAoZG93bmNhc3Q8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpLmlzQ3VzdG9tU2Nyb2xs
YmFyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxNzMsMTEgKzQxNzQsMTAgQEAgRnJhbWVWaWV3
KiBGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldygpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1l
ID0gZnJhbWUoKS50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnRGcmFtZS0+
dmlldygpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogcGFyZW50RnJhbWUgPSBm
cmFtZSgpLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXBhcmVudEZyYW1lKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKIH0KIAogYm9v
bCBGcmFtZVZpZXc6OmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpIGNvbnN0CkBA
IC01MTgzLDggKzUxODMsOCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25z
KCkKICAgICAvLyBzY3JpcHRzIGluIHJlc3BvbnNlIHRvIE5QUF9TZXRXaW5kb3csIGZvciBleGFt
cGxlKSwgc28gd2UgbmVlZCB0byBrZWVwIHRoZSBXaWRnZXRzCiAgICAgLy8gYWxpdmUgZHVyaW5n
IGVudW1lcmF0aW9uLgogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogY29sbGVjdEFuZFByb3RlY3RX
aWRnZXRzKG1fd2lkZ2V0c0luUmVuZGVyVHJlZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldC5nZXQoKSkpIHsKLSAg
ICAgICAgICAgIGF1dG8gaWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJXaWRnZXQtPnVwZGF0ZVdp
ZGdldFBvc2l0aW9uKCk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdl
dDo6ZmluZCgqd2lkZ2V0KSkgeworICAgICAgICAgICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9
IHJlbmRlcmVyLT51cGRhdGVXaWRnZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGlnbm9yZVdpZGdldFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCmluZGV4IDIzYTdmZDFiNDRmNmVlOTA0MjBiMjA1MDg5M2M3ODNhYWU4NTAzYjYuLjcx
MWI3NGI0NjdiMzc1ODg0YTM1NzhhNDAyYTRlNDRjNDYyMzM1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaApAQCAtNCw3ICs0LDcgQEAKICAgICAgICAgICAgICAoQykgMTk5OCwgMTk5OSBUb3Ji
ZW4gV2VpcyAod2Vpc0BrZGUub3JnKQogICAgICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCi0gICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOSwgMjAxNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgIENvcHlyaWdodCAoQykgMjAwNC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTc0
LDE2ICs3NCwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GcmFtZVZpZXcoKTsKIAotICAg
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICBIb3N0V2luZG93
KiBob3N0V2luZG93KCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRG
cmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSkKLSAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzY2hlZHVsZUFuaW1hdGlvbigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBGcmFtZSYgZnJh
bWUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZyYW1lJj4obV9mcmFtZS5nZXQoKSk7IH0K
KyAgICBGcmFtZSYgZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3Q7CiAKQEAgLTk1LDE1ICs5
NSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXJnaW5XaWR0aChMYXlvdXRVbml0KTsKICAg
ICB2b2lkIHNldE1hcmdpbkhlaWdodChMYXlvdXRVbml0KTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCk7CiAKLSAgICBSZWY8U2Nyb2xs
YmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAg
IFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgZmlu
YWw7CiAKLSAgICBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzU2l6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNv
bnN0IEludFNpemUmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2l6ZSgpIGZpbmFs
OwogCiAgICAgdm9pZCBsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUgPSB0cnVlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGRpZEZpcnN0TGF5b3V0KCkgY29uc3Q7CkBAIC0xNjIsNyArMTYyLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY2hlZHVsZUxheWVyRmx1c2hBbGxvd2luZ1Rocm90dGxpbmcoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiBhbnkgU2Nyb2xsYWJsZUFyZWEgY2FuIGhh
dmUgYSBub2RlIGluIHRoIFNjcm9sbGluZ1RyZWUsIHRoaXMgc2hvdWxkCiAgICAgLy8gYmVjb21l
IGEgdmlydHVhbCBmdW5jdGlvbiBvbiBTY3JvbGxhYmxlQXJlYS4KQEAgLTIyNSwyMSArMjI1LDIx
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSk7CiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKCkgY29uc3Q7CiAgICAgCi0gICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0Rm9yRnJhbWVPd25l
cihjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBib29sIGNsaXBUb0xheWVyQ29udGVudHMp
IGNvbnN0OwogCi0gICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBmaW5h
bDsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2b2lkIHNldEZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZp
eGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxp
bmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3Jv
bGxpbmcoKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShj
b25zdCBTY3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Q
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0
aW9uIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Ny
b2xsUG9zaXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJT
Y3JvbGxpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJT
Y3JvbGxpbmcoKSBmaW5hbDsKKyAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShj
b25zdCBTY3JvbGxQb3NpdGlvbiYpIGZpbmFsOworICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9n
cmVzcygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNj
cm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwogCiAgICAg
Ly8gVGhlIHNjcm9sbE9yaWdpbiwgc2Nyb2xsUG9zaXRpb24sIG1pbmltdW1TY3JvbGxQb3NpdGlv
biBhbmQgbWF4aW11bVNjcm9sbFBvc2l0aW9uIGFyZSBhbGwgYWZmZWN0ZWQgYnkgZnJhbWUgc2Nh
bGUsCiAgICAgLy8gYnV0IGxheW91dFZpZXdwb3J0IGNvbXB1dGF0aW9ucyByZXF1aXJlIHVuc2Nh
bGVkIHNjcm9sbCBwb3NpdGlvbnMuCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAg
IHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkgZmluYWw7CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAgICAgICAgIFBh
aW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKQEAgLTM3OSw5ICszNzksOSBAQCBwdWJsaWM6CiAg
ICAgZW51bSBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCB7IERvY3VtZW50Q29vcmRpbmF0ZXMs
IFZpZXdDb29yZGluYXRlcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50
c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwg
U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiwgQ29vcmRpbmF0ZVNwYWNl
Rm9yU25hcHNob3QpOwogCi0gICAgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50U2Nyb2xsYmFyKEdy
YXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHBhaW50U2Ny
b2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIGZp
bmFsOworICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIApAQCAtNDM2LDEwICs0MzYsMTAgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXdUb1JlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
OwogCiAgICAgLy8gT3ZlcnJpZGUgU2Nyb2xsVmlldyBtZXRob2RzIHRvIGRvIHBvaW50IGNvbnZl
cnNpb24gdmlhIHJlbmRlcmVycywgaW4gb3JkZXIgdG8gdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNj
b3VudC4KLSAgICBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXco
Y29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRUb0Nv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9p
bnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYp
IGNvbnN0IGZpbmFsOworICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25z
dCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKICAgICBi
b29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKGNvbnN0IFJlbmRlclNjcm9sbGJhclBhcnQmIHNj
cm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0gJnNjcm9sbENvcm5l
cjsgfQogCkBAIC00NTEsMjAgKzQ1MSwyMCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBTY3Jv
bGxhYmlsaXR5IHsgU2Nyb2xsYWJsZSwgU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU2Nyb2xsYWJsZShTY3JvbGxhYmlsaXR5IGRlZmluaXRp
b25PZlNjcm9sbGFibGUgPSBTY3JvbGxhYmlsaXR5OjpTY3JvbGxhYmxlKTsKIAotICAgIGJvb2wg
aXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIG92ZXJyaWRlOwotICAgIGJvb2wgaGFzU2Ny
b2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNT
Y3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIGZpbmFsOworICAgIGJvb2wgaGFzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpIGZpbmFsOwogCiAgICAgZW51bSBTY3JvbGxiYXJN
b2Rlc0NhbGN1bGF0aW9uU3RyYXRlZ3kgeyBSdWxlc0Zyb21XZWJDb250ZW50T25seSwgQW55UnVs
ZSB9OwogICAgIHZvaWQgY2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFy
TW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlLCBTY3JvbGxiYXJNb2Rlc0NhbGN1bGF0
aW9uU3RyYXRlZ3kgPSBBbnlSdWxlKTsKIAotICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9z
aXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHNob3VsZFNldEN1cnNvcigpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIG1ldGhvZCBvbmNlIHBsdWdpbiBsb2FkaW5nIGlzIGRlY291cGxlZCBmcm9tIGxheW91
dC4KICAgICB2b2lkIGZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpOwogCi0gICAgYm9v
bCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkg
b3ZlcnJpZGU7CiAKICAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OwpA
QCAtNDgzLDcgKzQ4Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEqKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYVNldCog
c2Nyb2xsYWJsZUFyZWFzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYXMuZ2V0KCk7
IH0KIAotICAgIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZW1vdmVDaGlsZChXaWRnZXQmKSBmaW5hbDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3Rz
IGZvciBwb3J0cyB0aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAg
ICAvLyBPbiBNYWMgV2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2Vz
IHRoZSBzY3JvbGxpbmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwpAQCAtNTAxLDcgKzUw
MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBQYWdpbmF0aW9uJiBwYWdpbmF0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKGNvbnN0IFBhZ2luYXRpb24mKTsKICAgICAKLSAgICBi
b29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pblBy
b2dyYW1tYXRpY1Njcm9sbDsgfQorICAgIGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAgICAgdm9pZCBzZXRJ
blByb2dyYW1tYXRpY1Njcm9sbChib29sIHByb2dyYW1tYXRpY1Njcm9sbCkgeyBtX2luUHJvZ3Jh
bW1hdGljU2Nyb2xsID0gcHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0RF
VklDRV9BREFQVEFUSU9OKQpAQCAtNTA5LDggKzUwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEluaXRpYWxWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2luaXRpYWxWaWV3
cG9ydFNpemUgPSBzaXplOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBl
cmZvcm1hbmNlVGVzdGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZv
clBlcmZvcm1hbmNlVGVzdGluZygpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9C
QU5ESU5HKQogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIHNldFdhbnRzTGF5ZXJG
b3JUb3BPdmVySGFuZ0FyZWEoYm9vbCkgY29uc3Q7CkBAIC01MjMsMjAgKzUyMywyMCBAQCBwdWJs
aWM6CiAKICAgICBMYXlvdXRQb2ludCBzY3JvbGxQb3NpdGlvblJlc3BlY3RpbmdDdXN0b21GaXhl
ZFBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KKyAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEhlYWRlckhlaWdodChpbnQpOwotICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQorICAgIGludCBmb290ZXJIZWlnaHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Rm9vdGVySGVpZ2h0KGludCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9h
dCB0b3BDb250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5
cGU6OldlYkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIGZsb2F0IHRvcENvbnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVu
dEluc2V0VHlwZTo6V2ViQ29yZUNvbnRlbnRJbnNldCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB0
b3BDb250ZW50SW5zZXREaWRDaGFuZ2UoZmxvYXQgbmV3VG9wQ29udGVudEluc2V0KTsKIAogICAg
IHZvaWQgdG9wQ29udGVudERpcmVjdGlvbkRpZENoYW5nZSgpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEVuZExpdmVSZXNpemUoKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXZhaWxhYmxlQ29udGVudFNpemVDaGFu
Z2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIGZpbmFsOwogCiAgICAgdm9pZCBhZGp1c3RU
aWxlZEJhY2tpbmdTY3JvbGxhYmlsaXR5KCk7CiAKQEAgLTU3NCwyOSArNTc0LDI5IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNT
Y3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU25h
cE9mZnNldHMoKSBmaW5hbDsKKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFBy
b3BlcnRpZXMoKSBjb25zdDsKICNlbmRpZgogCi0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZv
ckZpeGVkQ29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHkpIG92ZXJyaWRlOworICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENv
bnRlbnQoZmxvYXQgc3RlcCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5
KSBmaW5hbDsKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiAKLSAgICB2b2lk
IHNob3coKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3coKSBmaW5hbDsKIAogICAgIGJvb2wgc2hv
dWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9v
bCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25z
dCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRl
UmVjdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IElu
dFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgo
Y29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZXBhaW50
U2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKLSAgICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
aXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBGcmFtZVZpZXcoRnJhbWUmKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBpblByZUxheW91dFN0eWxlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFz
ZSA9PSBJblByZUxheW91dFN0eWxlVXBkYXRlOyB9CiAKLSAgICBib29sIGlzRnJhbWVWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyV2lk
Z2V0OwogICAgIGJvb2wgdXNlU2xvd1JlcGFpbnRzKGJvb2wgY29uc2lkZXJPdmVybGFwID0gdHJ1
ZSkgY29uc3Q7CkBAIC02MjgsOSArNjI4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBjb25zdDsKICAgICBib29sIGZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9y
Rmx1c2gpOwogCi0gICAgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNp
emVDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0
ZXJDb250ZW50U2l6ZUNoYW5nZSgpIGZpbmFsOwogCi0gICAgdm9pZCBzY3JvbGxPZmZzZXRDaGFu
Z2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBj
b25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxP
ZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xk
T2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCkgZmluYWw7CiAKICAgICB2b2lk
IGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBTY3JvbGxiYXJN
b2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOwogICAgIHZvaWQgYXBwbHlQYWdpbmF0
aW9uVG9WaWV3cG9ydCgpOwpAQCAtNjUxLDM5ICs2NTEsMzkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZUxheWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwogCi0gICAgdm9pZCByZXBhaW50Q29udGVudFJl
Y3RhbmdsZShjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRlZE9yUmVtb3Zl
ZFNjcm9sbGJhcigpIG92ZXJyaWRlOworICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUo
Y29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIo
KSBmaW5hbDsKIAotICAgIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAg
IC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZQotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJh
clJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Ny
b2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpc2li
bGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgU2Nyb2xs
YWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRl
OwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENvcm5l
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Ny
b2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsVG8oY29uc3Qg
U2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1i
UmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QgZmluYWw7CisgICAgSW50UmVjdCBzY3JvbGxhYmxlQXJl
YUJvdW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzY3Jv
bGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXll
ckZvclNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9y
SG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVy
KiBsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShSVUJCRVJf
QkFORElORykKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBj
b25zdCBmaW5hbDsKICNlbmRpZgotICAgIHZvaWQgY29udGVudHNSZXNpemVkKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPUykK
LSAgICB2b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBmaW5hbDsKICNlbmRpZgogCi0gICAg
Ym9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wg
dXNlc0FzeW5jU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzTW9ja1Nj
cm9sbEFuaW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5p
bWF0b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXNl
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHVzZXNBc3luY1Nj
cm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmltYXRvcigp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRlIHNjcm9sbGJhciBub3Rp
ZmljYXRpb25zIHRvIHVwZGF0ZSB0aGUgQVhPYmplY3QgY2FjaGUuCi0gICAgdm9pZCBkaWRBZGRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAg
IHZvaWQgd2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlv
bikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyT3JpZW50YXRpb24pIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGJhcihTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICBJbnRTaXplIHNpemVG
b3JSZXNpemVFdmVudCgpIGNvbnN0OwogICAgIHZvaWQgc2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQo
KTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJs
ZUFyZWFTZXQoKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dFZpZXdwb3J0KCk7CiAKLSAgICB2b2lk
IG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRlZCgpOwogICAgIHZvaWQg
c3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1lckZpcmVkKCk7CkBAIC03MDgsNyArNzA4LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCi0gICAg
dm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9s
bENvcm5lcigpIGZpbmFsOwogCiAgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTMzMWIzMDI5MDdlNzliN2MxMWI1ZWMwODQ2YmFm
ZDVjM2ZlYzQ5Ny4uNmM0NzY1ZjBjYmM0NTI0MjgyZTA3YzYxODY2NGU3NmEwMjUzMTFlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzMzLDE4ICsxMzMzLDE1IEBAIHZvaWQgUGFnZTo6ZG5zUHJl
ZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKQogVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IFBhZ2U6
OnBsdWdpblZpZXdzKCkKIHsKICAgICBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gdmlld3M7
Ci0KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBmcmFtZS0+dmlldygpOworICAgICAgICBhdXRvKiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAg
ICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgZm9yIChhdXRv
JiB3aWRnZXQgOiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8UGx1Z2lu
Vmlld0Jhc2U+KCp3aWRnZXQpKQotICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2Fz
dDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpOworICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZp
ZXdCYXNlPih3aWRnZXQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3du
Y2FzdDxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9Ci0K
ICAgICByZXR1cm4gdmlld3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMWM0N2UzZGZjNGRkZDFiZDQ1YzMyNTdmN2I0ZWQz
MGRlYjhmOWE2OC4uNzZlODBjMDc4ZjFjNjZiZGFkNmI4MDFmODkzN2RiZDAwMWJmY2M1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAg
LTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJ
Zk5lZWRlZCgpCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5pbWF0
aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7CiAgICAgICAgICAg
ICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2NvbXBv
c2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0aW9uKCk7Ci0g
ICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRv
d25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChvZmZzZXQgPiBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpKQog
ICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1
dDo6U3RhcnRUaW1lckZpcmVkLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTU3Nyw3ICs1NzcsNyBA
QCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAgICBpZiAo
bV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbiA9IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xsUG9zaXRp
b25Gb3JGaXhlZFBvc2l0aW9uKCkueSgpLnRvRmxvYXQoKTsKLSAgICAgICAgICAgICAgICBTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
PigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbiA+PSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpICYmICgh
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpIHx8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA8PSBz
Y3JvbGxUcmlnZ2VyLmVuZFZhbHVlKCkudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgfQpAQCAtNjUzLDcgKzY1Myw3IEBAIGRvdWJsZSBBbmltYXRp
b25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uCiAgICAgfQogCiAgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgdGlt
aW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAg
ICAgdGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKTsKIAogICAg
IHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rp
b246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBkb3VibGUgQW5p
bWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1NfQU5J
TUFUSU9OU19MRVZFTF8yKQogICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5p
bWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAgICAg
IFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxB
bmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgICAg
IGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigq
bV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2VyLmhhc0Vu
ZFZhbHVlKCkgJiYgbV9vYmplY3QpIHsKICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1fY29t
cG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRpb24oKTsK
ICAgICAgICAgICAgIGZsb2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUo
KS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkOTZhYjE1Mzg4MmI1OWRjOTljYmRmNWFjOTg2
NGRiMGYwMDVhMDQuLjIyYmRlNDY4YTA2YWI0NmMwYmEwZTg4OGI5YjczNWQxNDUxMmMwZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAKQEAgLTk5LDI4ICs5OSwyOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYQog
CiBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVu
dFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKLSAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAg
YXV0byogcmVuZGVyVmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyVmlldyB8fCByZW5kZXJWaWV3LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAg
IHJldHVybiBFdmVudFRyYWNraW5nUmVnaW9ucygpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9F
VkVOVFMpCiAgICAgLy8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8g
cmVwcmVzZW50IHRoZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50
IGhhbmRsZXJzLgogICAgIEFTU0VSVChmcmFtZS5pc01haW5GcmFtZSgpKTsKLQotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBm
cmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFdmVu
dFRyYWNraW5nUmVnaW9ucygpOwogICAgIHJldHVybiBkb2N1bWVudC0+ZXZlbnRUcmFja2luZ1Jl
Z2lvbnMoKTsKICNlbHNlCi0gICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIGZyYW1lVmll
dyA9IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEV2
ZW50VHJhY2tpbmdSZWdpb25zKCk7CiAKKyAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdp
b247CisKICAgICAvLyBGSVhNRTogc2hvdWxkIEFTU0VSVCghZnJhbWVWaWV3LT5uZWVkc0xheW91
dCgpKSBoZXJlLCBidXQgbmVlZCB0byBmaXggRGVidWdQYWdlT3ZlcmxheXMKICAgICAvLyB0byBu
b3QgYXNrIGZvciByZWdpb25zIGF0IGJhZCB0aW1lcy4KIAotICAgIGlmIChjb25zdCBGcmFtZVZp
ZXc6OlNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9s
bGFibGVBcmVhcygpKSB7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmll
dy0+c2Nyb2xsYWJsZUFyZWFzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJl
YSA6ICpzY3JvbGxhYmxlQXJlYXMpIHsKICAgICAgICAgICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xs
YWJsZSBhcmVhcyBjYW4gYmUgc2Nyb2xsZWQgb2ZmIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAg
ICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+dXNlc0FzeW5jU2Nyb2xsaW5nKCkpCkBAIC0xMzYsMTgg
KzEzNiwyMSBAQCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJz
b2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgIH0KIAogICAgIGZvciAoYXV0
byYgd2lkZ2V0IDogZnJhbWVWaWV3LT53aWRnZXRzSW5SZW5kZXJUcmVlKCkpIHsKLSAgICAgICAg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KTsK
LSAgICAgICAgaWYgKCFyZW5kZXJXaWRnZXQgfHwgIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0
KSkKKyAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAKLSAgICAgICAgaWYgKGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigq
d2lkZ2V0KS53YW50c1doZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbi51bml0ZShyZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwor
ICAgICAgICBpZiAoIWRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1doZWVs
RXZlbnRzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogcmVuZGVyV2lk
Z2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKCp3aWRnZXQpOworICAgICAgICBpZiAoIXJlbmRlcldp
ZGdldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbi51bml0ZShyZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwogICAg
IH0KICAgICAKLSAgICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRo
aXMgc3ViZnJhbWUgYXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcg
aW50byBpdCBoZXJlLgogICAgIEV2ZW50VHJhY2tpbmdSZWdpb25zIGV2ZW50VHJhY2tpbmdSZWdp
b25zOworCisgICAgLy8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlz
IHN1YmZyYW1lIGFzIGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGlu
dG8gaXQgaGVyZS4KICAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJz
dENoaWxkKCk7IHN1YmZyYW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxp
bmcoKSkgewotICAgICAgICBGcmFtZVZpZXcqIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3
KCk7CisgICAgICAgIGF1dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CiAgICAg
ICAgIGlmICghc3ViZnJhbWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2MCw3
ICsxNjMsNyBAQCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJz
b2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgICAgICBldmVudFRyYWNraW5n
UmVnaW9ucy51bml0ZShzdWJmcmFtZVJlZ2lvbik7CiAgICAgfQogCi0gICAgRG9jdW1lbnQ6OlJl
Z2lvbkZpeGVkUGFpciB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNv
bHV0ZVJlZ2lvbkZvckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFy
Z2V0cygpKTsKKyAgICBhdXRvIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCkt
PmFic29sdXRlUmVnaW9uRm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZl
bnRUYXJnZXRzKCkpOwogICAgIGJvb2wgd2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQgPSB3aGVl
bEhhbmRsZXJSZWdpb24uc2Vjb25kOwogICAgIGlmICh3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVu
dCkgewogICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBoYW5kbGUgcG9zaXRpb246c3RpY2t5IGhl
cmUgdG9vLgpAQCAtMTcyLDYgKzE3NSw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAKICAg
ICAvLyBGSVhNRTogSWYgdGhpcyBpcyBub3QgdGhlIG1haW4gZnJhbWUsIHdlIGNvdWxkIGNsaXAg
dGhlIHJlZ2lvbiB0byB0aGUgZnJhbWUncyBib3VuZHMuCiAgICAgZXZlbnRUcmFja2luZ1JlZ2lv
bnMudW5pdGVTeW5jaHJvbm91c1JlZ2lvbihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb24pOworCiAgICAgcmV0dXJuIGV2ZW50VHJhY2tpbmdSZWdpb25zOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA5ZTcwZTlk
MzZiOTk1ZWRjYmVhMjkyNTQzNjczNjZjNDkxOGEzYmMxLi5iMTExNjRmMDg1NWRiZGYyNWY2YjFj
Njg2ZjcxNmI0NjcyMzJjNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEtleWVkQ29kaW5nX2gKLSNkZWZpbmUgS2V5ZWRDb2RpbmdfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CkBAIC0xNTYsNyArMTU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3Vi
bGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcm
IGtleSwgVCB2YWx1ZSkKQEAgLTIxMSw1ICsyMTAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRDb2RpbmdfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE0MzQwMDE0YWQ1YTk5NTM1OWFmN2I2OTljNTI4ZGQzODAzMjA5
NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0jZGVmaW5lIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzX2gKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotY2xh
c3MgU3BlZWNoU3ludGhlc2lzOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOwotY2xh
c3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7Ci0gICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IGNyZWF0
ZShTcGVlY2hTeW50aGVzaXMqKTsKLSAgICAKLSAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVZv
aWNlTGlzdChWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7Ci0gICAgdm9p
ZCBwbGF0Zm9ybVNwZWFrKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwotICAgIAotcHJpdmF0
ZToKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hTeW50aGVzaXMqKTsKLQotICAg
IFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7Ci19OwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNl
bmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAK
aW5kZXggMWYyMDdmNDQzNjY5OWI0ZDFjODQ1ZDcwY2NjNzI5ZDM2ZTkwYmJhMi4uMTBhODMwZTM5
YzdiN2ZlZDg5MzhlYzBiNTQwMDBlZTg0N2NlMGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDE2ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVu
dCkKK1JlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZUNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CiB9CiAgICAgCi1QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkKLSAg
ICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdm9sdW1lKDEuMGYpCi0gICAgLCBtX3JhdGUo
MS4wZikKLSAgICAsIG1fcGl0Y2goMS4wZikKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGll
bnQpCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCBhODY5YmI4NzI4NGRjNTll
MDdlZTY0MjMzNmVhZDE4Y2E5YzVkODg0Li5lMDg3NzViMjVlZjQwMGU2NmJkYzJlOGRjNDVjODJi
NmYxMGM4Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMjEgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCi0j
ZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNwcmFnbWEgb25jZQog
CiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gSW1wbGVtZW50IG1ldGhvZHMgYXMgbmVl
ZGVkLgotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQqKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQm
KTsKKwogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQog
ICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgfQog
ICAgIApAQCAtNzQsMjAgKzY2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENsaWVudChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0g
Y2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7
CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmKTsKIAogICAgIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90ZXh0OwogICAg
IFN0cmluZyBtX2xhbmc7CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+
IG1fdm9pY2U7Ci0gICAgZmxvYXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9yYXRlOwotICAgIGZs
b2F0IG1fcGl0Y2g7Ci0gICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGZsb2F0IG1fdm9sdW1l
IHsgMSB9OworICAgIGZsb2F0IG1fcmF0ZSB7IDEgfTsKKyAgICBmbG9hdCBtX3BpdGNoIHsgMSB9
OworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlm
IC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKaW5k
ZXggNTgwZjE5ZDE2NzhkZTk1ZWZlNmM5NzIwMDU5ZDBlYjYyYjNkMDFiOC4uMjQzNzZjZGU5MjMw
OGY2NjAzMDdhM2NkMzVkNmRmYjcxZDU1MmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwxNyArMzAsMTcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQorUmVmPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywg
bG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZp
Y2UsIGlzRGVmYXVsdCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgpCitSZWY8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3Jl
YXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZSk7CiB9Ci0gICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0Rl
ZmF1bHQpCisKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1
bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAg
LCBtX2xhbmcobGFuZykKQEAgLTQ5LDEyICs0OSw2IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVS
CiB7CiB9CiAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UoKQotICAgIDogbV9sb2NhbFNlcnZpY2UoZmFsc2UpCi0gICAgLCBtX2RlZmF1
bHQoZmFsc2UpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDM0M2I5ZTdiYWNmMTVlNDk5
MzIwOGY1NTgxNGZjZTM3Zjc0NTFkOWQuLjAxNThiMzQ5ODRkZjU2MWVjYTdlYmZlNzQzMGZlODgz
ZjlhMTkwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTggQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKLSNkZWZpbmUgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1
bHQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0Rl
ZmF1bHQpOworICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3Jl
YXRlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92
b2ljZVVSSTsgfQogICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkg
eyBtX3ZvaWNlVVJJID0gdm9pY2VVUkk7IH0KQEAgLTU2LDE3ICs1MywxNSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcm
IHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBs
b2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCk7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpID0gZGVmYXVsdDsK
IAogICAgIFN0cmluZyBtX3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5n
IG1fbGFuZzsKLSAgICBib29sIG1fbG9jYWxTZXJ2aWNlOwotICAgIGJvb2wgbV9kZWZhdWx0Owor
ICAgIGJvb2wgbV9sb2NhbFNlcnZpY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kZWZhdWx0IHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGNiZmZlNmUx
YzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVmMWFkY2IuLmI4OWQ1NjYxMTNmNWNjN2ZkZTVlNGVl
NGI1OGE4YzI5YTliNjQ2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsMTQgKzYyLDE0IEBAIFNjcm9sbFZpZXc6On5TY3Jv
bGxWaWV3KCkKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChQYXNzUmVmUHRyPFdp
ZGdldD4gcHJwQ2hpbGQpIAordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRnZXQmIGNoaWxk
KQogewotICAgIFdpZGdldCogY2hpbGQgPSBwcnBDaGlsZC5nZXQoKTsKLSAgICBBU1NFUlQoY2hp
bGQgIT0gdGhpcyAmJiAhY2hpbGQtPnBhcmVudCgpKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KHRo
aXMpOwotICAgIG1fY2hpbGRyZW4uYWRkKHBycENoaWxkKTsKLSAgICBpZiAoY2hpbGQtPnBsYXRm
b3JtV2lkZ2V0KCkpCi0gICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoY2hpbGQpOworICAgIEFTU0VS
VCgmY2hpbGQgIT0gdGhpcyk7CisgICAgQVNTRVJUKCFjaGlsZC5wYXJlbnQoKSk7CisgICAgY2hp
bGQuc2V0UGFyZW50KHRoaXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsKKyAgICBpZiAo
Y2hpbGQucGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1BZGRDaGlsZCgmY2hpbGQp
OwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hpbGQpCkBAIC05
Nyw3ICs5Nyw3IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVm
UHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciwgU2Nyb2xsYmFyCiAKICAgICBpZiAoaGFzQmFyICYm
ICFzY3JvbGxiYXIpIHsKICAgICAgICAgc2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKG9yaWVu
dGF0aW9uKTsKLSAgICAgICAgYWRkQ2hpbGQoc2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAgYWRk
Q2hpbGQoKnNjcm9sbGJhcik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcihzY3JvbGxiYXIuZ2V0
KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAgc2Nyb2xsYmFyLT5zdHlsZUNoYW5nZWQoKTsKICAg
ICAgICAgaWYgKGNvbnRlbnRTaXplQWZmZWN0ZWQpCkBAIC04MjksMTIgKzgyOSw2IEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAg
ICAgd2luZG93LT5pbnZhbGlkYXRlUm9vdFZpZXcoSW50UmVjdCgpKTsKIH0KIAotYm9vbCBTY3Jv
bGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRh
LCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQot
ewotICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNs
aXBSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxD
b250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAgICAgaG9zdFdp
bmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJlY3QpOwpAQCAt
MTAzOCwxNyArMTAzMiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKCkK
IHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgSGFz
aFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgY3Vy
cmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAg
ICAgICAgKCpjdXJyZW50KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNo
aWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmZyYW1lUmVjdHNDaGFuZ2VkKCk7CiB9
CiAKIHZvaWQgU2Nyb2xsVmlldzo6Y2xpcFJlY3RDaGFuZ2VkKCkKIHsKLSAgICBIYXNoU2V0PFJl
ZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0g
bV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICAo
KmN1cnJlbnQpLT5jbGlwUmVjdENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9j
aGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmNsaXBSZWN0Q2hhbmdlZCgpOwogfQogCiBzdGF0aWMg
dm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIs
IFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMTE1MCwxMCArMTE0MSw2IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlIG5ld1N0eWxlLCBib29s
IGZvcmNlVXBkYXRlCiAgICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKIH0KIAotdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQotewotfQotCiB2b2lkIFNjcm9sbFZpZXc6
OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkKIHsKICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5wYWludFNjcm9s
bENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKQEAgLTEzOTIsOSArMTM3OSw4IEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgaWYg
KCFpc1NlbGZWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgSGFzaFNl
dDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUo
dmlzaWJsZSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNo
aWxkLT5zZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNo
b3coKQpAQCAtMTQwMiw5ICsxMzg4LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93KCkKICAgICBp
ZiAoIWlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0cnVlKTsKICAg
ICAgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0
cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICAgICAgICAg
IGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldFBhcmVu
dFZpc2libGUodHJ1ZSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJl
bikKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMTQxNSw5ICsxNDAwLDggQEAgdm9pZCBTY3JvbGxWaWV3OjpoaWRl
KCkKIHsKICAgICBpZiAoaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChpc1BhcmVudFZp
c2libGUoKSkgewotICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9y
IGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRy
PFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICAgICAgICAg
IGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBzZXRT
ZWxmVmlzaWJsZShmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CmluZGV4IGRiNTcwZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMuLjZiMzFmOTgy
ZjQyOGIwOGFhYjU1OTY1ODVmZGZjNzExYWY0ZTdmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAiU2Nyb2xsYWJs
ZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgot
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKKwogT0JKQ19D
TEFTUyBXQUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwogCkBAIC00Niw2ICs0Niw3
IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKICNpZm5kZWYgTlNWaWV3CiAjZGVmaW5lIE5TVmlldyBX
QUtWaWV3CiAjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBkZWZpbmVkIF9fT0JKQ19fCkBAIC02NCwxMCArNjUsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbFZpZXcoKTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0
aW9ucy4KLSAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3Qg
U2Nyb2xsT2Zmc2V0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3QgZmluYWw7CisgICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZzZXQo
Y29uc3QgU2Nyb2xsT2Zmc2V0JikgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbENvcm5lclZpc2li
bGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxi
YXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwpAQCAtODUsMTQgKzg2
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25z
dCA9IDA7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlvbiBhbmQgaW5z
cGVjdGlvbi4KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiYgY2hpbGRyZW4oKSBj
b25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7CisgICAgY29uc3QgSGFzaFNldDxSZWY8
V2lkZ2V0Pj4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoV2lkZ2V0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNoaWxkKFdpZGdldCYpOwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90
IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNj
cm9sbGJhcnMuIFRoZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0
aG9zZSBzY3JvbGxiYXJzLgotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQotICAg
IFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Ny
b2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgp
OyB9CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2Nyb2xsVmlld1Nj
cm9sbGJhcihjb25zdCBXaWRnZXQqIGNoaWxkKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsU2Ny
b2xsYmFyKCkgPT0gY2hpbGQgfHwgdmVydGljYWxTY3JvbGxiYXIoKSA9PSBjaGlsZDsgfQogCiAg
ICAgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwpAQCAtMTIxLDcgKzEyMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhck92ZXJsYXlTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBmaW5hbDsKIAogICAgIC8vIEJ5IGRlZmF1
bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRoYXQgaXMgdmlz
aWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tpbmcgc3RvcmUs
IHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWludHMgdGhlIGVu
dGlyZSBjb250ZW50cy4KQEAgLTE2Nyw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW4gdGhl
IHNpdHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsaW5nIChp
ZS4gd2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQogICAg
IC8vIHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0aGUgbWFpbmZy
YW1lLCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBqdXN0IGJlZm9y
ZSByZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBoYXBwZW4gd2hl
biBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBzY2FsZSBvciBw
b3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICBJbnRTaXplIHZpc2libGVTaXplKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3Vt
ZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQorICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNp
YmxlUmVjdCkuc2l6ZSgpOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
dmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZp
c2libGVDb250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNv
bnRlbnRSZWN0OyB9CkBAIC0yMTcsMTMgKzIxOCwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBGdW5j
dGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1lbnQgY29udGFp
bmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBpbmRpdmlkdWFs
IHdpZHRoIGFuZCBoZWlnaHQKICAgICAvLyB2YWx1ZXMpLgotICAgIFdFQkNPUkVfRVhQT1JUIElu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBhdCBsZWFzdCBh
cyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAgICBXRUJDT1JF
X0VYUE9SVCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOyAvLyBBbHdheXMgYXQg
bGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCiAgICAg
aW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgp
OyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXpl
KCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IElu
dFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Ny
b2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFs
IFggYW5kIFkgdmFsdWVzKS4KLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVu
dFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CisgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9T
RG9jdW1lbnRWaXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQogCiAgICAgU2Nyb2xsUG9zaXRpb24g
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIFRoZSBtYXhpbXVtIHBv
c2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KIApAQCAtMjU4LDcgKzI1OSw3IEBAIHB1Ymxp
YzoKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgdmVyeSB0b3Agb2YgdGhlIHZpZXcuCiAgICAgV0VC
Q09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gZG9jdW1lbnRTY3JvbGxQb3NpdGlvblJlbGF0aXZl
VG9WaWV3T3JpZ2luKCkgY29uc3Q7CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IGZpbmFsOwog
CiAgICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQ
b3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBTY3JvbGxQb3NpdGlvbiBjYWNoZWRT
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0K
QEAgLTMxMywxMyArMzE0LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Zmc2NyZWVuKCkgY29u
c3Q7CiAKICAgICAvLyBDYWxsZWQgd2hlbiBvdXIgZnJhbWUgcmVjdCBjaGFuZ2VzIChvciB0aGUg
cmVjdC9zY3JvbGwgcG9zaXRpb24gb2YgYW4gYW5jZXN0b3IgY2hhbmdlcykuCi0gICAgdm9pZCBm
cmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQo
KSBmaW5hbDsKICAgICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRlIG91ciBzY3Jv
bGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAgICAgdm9pZCBz
ZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2lkZ2V0IG92
ZXJyaWRlIHRvIG5vdGlmeSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBjaGFuZ2UuCi0gICAg
dm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBSZWN0Q2hhbmdl
ZCgpIGZpbmFsOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gaGl0IHRlc3Qg
c2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxlcnMgKGxpa2Ug
V2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpOwpAQCAtMzQzLDEzICszNDQsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAg
IC8vIFdpZGdldCBvdmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29udGVudHMgb2Yg
dGhlIHZpZXcgYXMgd2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0
IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVu
IHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgZmluYWw7CiAgICAgCiAgICAgLy8gUGFuIHNjcm9s
bGluZy4KICAgICBzdGF0aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVzID0gMTU7CkBAIC0z
NTcsMjEgKzM1OCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQYW5TY3JvbGxJY29uKCk7
CiAgICAgdm9pZCBwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBvaW50Jik7Ci0g
ICAgdmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsKLSAgICBJbnRS
ZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUG9pbnRJ
blNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOworICAgIGJvb2wgc2Nyb2xsYmFyQ29y
bmVyUHJlc2VudCgpIGNvbnN0OworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0
IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpOwog
Ci0gICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3Qg
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3Qg
Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVNj
cm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhj
b25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UmVj
dCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwg
Y29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tU2Ny
b2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Nj
cm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwog
CiAgICAgdm9pZCBjYWxjdWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAotICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoY29uc3QgU2Nyb2xsT2Zmc2V0
JiBvbGRPZmZzZXQsIGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KTsKIAogcHJvdGVjdGVk
OgpAQCAtMzg0LDI2ICszODMsMjYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBhdmFpbGFibGVD
b250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgPSAwOwogCiAgICAgLy8gVGhlc2UgZnVu
Y3Rpb25zIGFyZSB1c2VkIHRvIGNyZWF0ZS9kZXN0cm95IHNjcm9sbGJhcnMuCiAgICAgLy8gVGhl
eSByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Nyb2xsYmFyIHdhcyBhZGRlZCBvciByZW1vdmVkLgotICAg
IGJvb2wgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFm
ZmVjdGVkID0gMCk7Ci0gICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sLCBib29s
KiBjb250ZW50U2l6ZUFmZmVjdGVkID0gMCk7CisgICAgYm9vbCBzZXRIYXNIb3Jpem9udGFsU2Ny
b2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRyKTsKKyAgICBi
b29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0
ZWQgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsK
LSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCkgPSAwOworICAgIHZv
aWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAg
ICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMuCi0gICAgdmly
dHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KSA9IDA7CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGludmFsaWRhdGlu
ZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNv
bnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29u
c3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRp
b25TeW5jaHJvbm91c2x5KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJhbWVWaWV3IHRvIGNo
ZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHZpcnR1YWwgYm9vbCBp
c1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENhbGxlZCB0byB1cGRh
dGUgdGhlIHNjcm9sbGJhcnMgdG8gYWNjdXJhdGVseSByZWZsZWN0IHRoZSBzdGF0ZSBvZiB0aGUg
dmlldy4KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRl
c2lyZWRQb3NpdGlvbik7CkBAIC00MTEsMjcgKzQxMCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgZmxv
YXQgcGxhdGZvcm1Ub3BDb250ZW50SW5zZXQoKSBjb25zdDsKICAgICB2b2lkIHBsYXRmb3JtU2V0
VG9wQ29udGVudEluc2V0KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEZWZlcnJl
ZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKKyAgICB2b2lkIGhhbmRsZURl
ZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOwogCi0gICAgdmlydHVh
bCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRl
QWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxP
ZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNv
bnN0IFNjcm9sbE9mZnNldCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxPZmZzZXRDaGFu
Z2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNvbnN0IFNjcm9s
bE9mZnNldCYpID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgdW5v
YnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bm9ic2N1
cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
U2l6ZSBhdmFpbGFibGUgZm9yIHZpZXcgY29udGVudHMsIGV4Y2x1ZGluZyBjb250ZW50IGluc2V0
cy4gTm90IGFmZmVjdGVkIGJ5IHpvb21pbmcuCiAgICAgSW50U2l6ZSBzaXplRm9yVW5vYnNjdXJl
ZENvbnRlbnQoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNj
cm9sbGJhcnMpIGNvbnN0OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5h
bChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVj
dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVj
dEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNv
bnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAgdm9pZCBjb21w
bGV0ZVVwZGF0ZXNBZnRlclNjcm9sbFRvKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKTsKIAog
ICAgIGJvb2wgc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiwgYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQp
OwogCisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVm
UHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBTY3JvbGxiYXJNb2RlIG1f
aG9yaXpvbnRhbFNjcm9sbGJhck1vZGU7CkBAIC00NDIsNyArNDQzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9wcm9oaWJpdHNTY3JvbGxpbmc7CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRn
ZXQ+PiBtX2NoaWxkcmVuOworICAgIEhhc2hTZXQ8UmVmPFdpZGdldD4+IG1fY2hpbGRyZW47CiAK
ICAgICAvLyBUaGlzIGJvb2wgaXMgdW51c2VkIG9uIE1hYyBPUyBiZWNhdXNlIHdlIGRpcmVjdGx5
IGFzayB0aGUgcGxhdGZvcm0gd2lkZ2V0CiAgICAgLy8gd2hldGhlciBpdCBpcyBzYWZlIHRvIGJs
aXQgb24gc2Nyb2xsLgpAQCAtNDgzLDkgKzQ4NCw5IEBAIHByaXZhdGU6CiAKICAgICBJbnRSZWN0
IHJlY3RUb0NvcHlPblNjcm9sbCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNj
cm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMuICBGcmFtZVZpZXcgb3ZlcnJp
ZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZhbGlkYXRpb25zLgotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSB7IH0KKyAgICAv
LyBDYWxsZWQgd2hlbiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZpZXcgY2hhbmdl
cy4gRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQgaW52YWxpZGF0
aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGlu
ZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNj
cm9sbGluZygpID0gMDsKIAogICAgIHZvaWQgcGxhdGZvcm1BZGRDaGlsZChXaWRnZXQqKTsKICAg
ICB2b2lkIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKaW5kZXggOWEwZGYxNzAwOGYyMTc0YmQxN2Zi
MzYxNjgzNzQ5NWE0M2MxOGE3Yy4uMWYyNWRkYjI5MzcyNjE5YmQ4ZTQ2ZWEyN2FhYTZjNzRhNDI5
OGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24u
aApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBH
cmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0y
MiwyMSArMjIsMTYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25faAotI2RlZmluZSBB
bmltYXRpb25faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jv
cy5oIgotCi0jaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0jaW5jbHVkZSAiQW5p
bWF0aW9uVHJpZ2dlci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5o
IgogI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCisjaW5jbHVkZSAi
QW5pbWF0aW9uVHJpZ2dlci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjIsMjAgKzU3LDIwIEBAIHB1YmxpYzoKIAogICAgIC8vIEZsYWdzIHRoaXMgdG8gYmUgdGhlIHNw
ZWNpYWwgIm5vbmUiIGFuaW1hdGlvbiAoYW5pbWF0aW9uLW5hbWU6IG5vbmUpCiAgICAgYm9vbCBp
c05vbmVBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTm9uZTsgfQorCiAgICAgLy8gV2Ug
Y2FuIG1ha2UgcGxhY2Vob2xkZXIgQW5pbWF0aW9uIG9iamVjdHMgdG8ga2VlcCB0aGUgY29tbWEt
c2VwYXJhdGVkIGxpc3RzCiAgICAgLy8gb2YgcHJvcGVydGllcyBpbiBzeW5jLiBpc1ZhbGlkQW5p
bWF0aW9uIG1lYW5zIHRoaXMgaXMgbm90IGEgcGxhY2Vob2xkZXIuCiAgICAgYm9vbCBpc1ZhbGlk
QW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1faXNOb25lICYmICFtX25hbWUuaXNFbXB0eSgp
OyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICgh
bV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRpb25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKLSAgICAg
ICAgICAgICAgICAmJiAhbV9uYW1lU2V0ICYmICFtX3BsYXlTdGF0ZVNldCAmJiAhbV9pdGVyYXRp
b25Db3VudFNldAotICAgICAgICAgICAgICAgICYmICFtX2RlbGF5U2V0ICYmICFtX3RpbWluZ0Z1
bmN0aW9uU2V0ICYmICFtX3Byb3BlcnR5U2V0CisgICAgICAgIHJldHVybiAhbV9kaXJlY3Rpb25T
ZXQgJiYgIW1fZHVyYXRpb25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICYmICFt
X25hbWVTZXQgJiYgIW1fcGxheVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CisgICAg
ICAgICAgICAmJiAhbV9kZWxheVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9w
ZXJ0eVNldAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgICAgICAgICAg
ICAgICYmICFtX3RyaWdnZXJTZXQpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgJiYgIW1fdHJpZ2dlclNldAogI2VuZGlmCisgICAgICAgICAgICA7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0VtcHR5T3JaZXJvRHVyYXRpb24oKSBjb25zdApAQCAtMTE0LDExICsxMDksNyBA
QCBwdWJsaWM6CiAKICAgICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5OyB9
CiAKLSAgICBlbnVtIEFuaW1hdGlvbk1vZGUgewotICAgICAgICBBbmltYXRlQWxsLAotICAgICAg
ICBBbmltYXRlTm9uZSwKLSAgICAgICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5Ci0gICAgfTsKKyAg
ICBlbnVtIEFuaW1hdGlvbk1vZGUgeyBBbmltYXRlQWxsLCBBbmltYXRlTm9uZSwgQW5pbWF0ZVNp
bmdsZVByb3BlcnR5IH07CiAKICAgICBlbnVtIEFuaW1hdGlvbkRpcmVjdGlvbiB7CiAgICAgICAg
IEFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCwKQEAgLTEzOSwxMCArMTMwLDEwIEBAIHB1YmxpYzoK
ICAgICBTdHlsZTo6U2NvcGVPcmRpbmFsIG5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZVN0eWxlU2NvcGVPcmRpbmFsOyB9CiAgICAgRUFuaW1QbGF5U3RhdGUgcGxh
eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFuaW1QbGF5U3RhdGU+KG1fcGxh
eVN0YXRlKTsgfQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBt
X3Byb3BlcnR5OyB9Ci0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CisgICAgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQo
KTsgfQogICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIFBhc3NSZWZQ
dHI8QW5pbWF0aW9uVHJpZ2dlcj4gdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcjsg
fQorICAgIEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdn
ZXIuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXREZWxheShkb3VibGUgYykgeyBtX2Rl
bGF5ID0gYzsgbV9kZWxheVNldCA9IHRydWU7IH0KQEAgLTE1OCwxMCArMTQ5LDEwIEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdm9pZCBzZXRQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgZCkgeyBtX3Bs
YXlTdGF0ZSA9IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0gdHJ1
ZTsgfQotICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlv
bj4gZikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7
IH0KKyAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mJiBm
dW5jdGlvbikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IG1fdGltaW5n
RnVuY3Rpb25TZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlv
bk1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05T
X0xFVkVMXzIpCi0gICAgdm9pZCBzZXRUcmlnZ2VyKFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dl
cj4gdCkgeyBtX3RyaWdnZXIgPSB0OyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBz
ZXRUcmlnZ2VyKFJlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiYmIHRyaWdnZXIpIHsgbV90cmlnZ2Vy
ID0gV1RGTW92ZSh0cmlnZ2VyKTsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIHNldElzTm9uZUFuaW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CkBAIC0x
OTcsMjIgKzE4OCwyMiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlsbE1vZGUgOiAyOwog
CiAKLSAgICB1bnNpZ25lZCBtX3BsYXlTdGF0ZSAgICAgOiAyOworICAgIHVuc2lnbmVkIG1fcGxh
eVN0YXRlIDogMjsKIAotICAgIGJvb2wgbV9kZWxheVNldCAgICAgICAgICA6IDE7Ci0gICAgYm9v
bCBtX2RpcmVjdGlvblNldCAgICAgIDogMTsKLSAgICBib29sIG1fZHVyYXRpb25TZXQgICAgICAg
OiAxOwotICAgIGJvb2wgbV9maWxsTW9kZVNldCAgICAgICA6IDE7CisgICAgYm9vbCBtX2RlbGF5
U2V0IDogMTsKKyAgICBib29sIG1fZGlyZWN0aW9uU2V0IDogMTsKKyAgICBib29sIG1fZHVyYXRp
b25TZXQgOiAxOworICAgIGJvb2wgbV9maWxsTW9kZVNldCA6IDE7CiAgICAgYm9vbCBtX2l0ZXJh
dGlvbkNvdW50U2V0IDogMTsKLSAgICBib29sIG1fbmFtZVNldCAgICAgICAgICAgOiAxOwotICAg
IGJvb2wgbV9wbGF5U3RhdGVTZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX3Byb3BlcnR5U2V0ICAg
ICAgIDogMTsKKyAgICBib29sIG1fbmFtZVNldCA6IDE7CisgICAgYm9vbCBtX3BsYXlTdGF0ZVNl
dCA6IDE7CisgICAgYm9vbCBtX3Byb3BlcnR5U2V0IDogMTsKICAgICBib29sIG1fdGltaW5nRnVu
Y3Rpb25TZXQgOiAxOwogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIGJv
b2wgbV90cmlnZ2VyU2V0ICAgICAgICA6IDE7CisgICAgYm9vbCBtX3RyaWdnZXJTZXQgOiAxOwog
I2VuZGlmCiAKLSAgICBib29sIG1faXNOb25lICAgICAgICAgICAgOiAxOworICAgIGJvb2wgbV9p
c05vbmUgOiAxOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsRGVsYXkoKSB7
IHJldHVybiAwOyB9CkBAIC0yMjMsMTIgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgaW5pdGlhbE5hbWUoKTsKICAgICBzdGF0aWMgRUFuaW1QbGF5U3RhdGUgaW5p
dGlhbFBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9CiAgICAgc3Rh
dGljIENTU1Byb3BlcnR5SUQgaW5pdGlhbFByb3BlcnR5KCkgeyByZXR1cm4gQ1NTUHJvcGVydHlJ
bnZhbGlkOyB9Ci0gICAgc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGlu
aXRpYWxUaW1pbmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7
IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBzdGF0aWMgY29uc3Qg
UGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1
dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8QW5pbWF0aW9u
VHJpZ2dlcj4gaW5pdGlhbFRyaWdnZXIoKSB7IHJldHVybiBBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6
Y3JlYXRlKCk7IH0KICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gQW5pbWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25MaXN0LmNwcAppbmRleCA2MjVkNzkwMTVhMDc0MDZhMjk5ODgwMTNhNjUy
MDZiNTA4NDI3MWVhLi4wYTMyMDIyNTQ1OWIxZmQwNjYyNjVlZjJjZDdhNTlkZTcyMjU3MjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxp
c3QuY3BwCkBAIC0yNiwxNSArMjYsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5l
IEZJTExfVU5TRVRfUFJPUEVSVFkodGVzdCwgcHJvcEdldCwgcHJvcFNldCkgXAogZm9yIChpID0g
MDsgaSA8IHNpemUoKSAmJiBhbmltYXRpb24oaSkudGVzdCgpOyArK2kpIHsgfSBcCi1pZiAoaSA8
IHNpemUoKSAmJiBpICE9IDApIHsgXAoraWYgKGkpIHsgXAogICAgIGZvciAoc2l6ZV90IGogPSAw
OyBpIDwgc2l6ZSgpOyArK2ksICsraikgXAogICAgICAgICBhbmltYXRpb24oaSkucHJvcFNldChh
bmltYXRpb24oaikucHJvcEdldCgpKTsgXAogfQogCiBBbmltYXRpb25MaXN0OjpBbmltYXRpb25M
aXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoQW5p
bWF0aW9uOjpjcmVhdGUob3RoZXIuYW5pbWF0aW9uKGkpKSk7CisgICAgbV9hbmltYXRpb25zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGFuaW1h
dGlvbiA6IG90aGVyLm1fYW5pbWF0aW9ucykKKyAgICAgICAgbV9hbmltYXRpb25zLnVuY2hlY2tl
ZEFwcGVuZChBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAogdm9pZCBB
bmltYXRpb25MaXN0OjpmaWxsVW5zZXRQcm9wZXJ0aWVzKCkKQEAgLTU1LDkgKzU2LDEwIEBAIGJv
b2wgQW5pbWF0aW9uTGlzdDo6b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JiBvdGhlcikg
Y29uc3QKIHsKICAgICBpZiAoc2l6ZSgpICE9IG90aGVyLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9u
KGkpICE9IG90aGVyLmFuaW1hdGlvbihpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oCmluZGV4IGM4NGNiOWIxZDE1MTYzZDA3Njg5Mzc0
NjE3NDA2ZDg0OTQwZGFhZmUuLmVhN2M5Yjc4YTE5NTBmMTVlOTRmYWFiYWE5NTFiNDgxNTUyZjdj
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bkxpc3QuaApAQCAtMjIsOCArMjIsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbkxp
c3RfaAotI2RlZmluZSBBbmltYXRpb25MaXN0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzYsNiArMzUsNyBAQCBj
bGFzcyBBbmltYXRpb25MaXN0IHsKIHB1YmxpYzoKICAgICBBbmltYXRpb25MaXN0KCkgeyB9CiAg
ICAgQW5pbWF0aW9uTGlzdChjb25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0aW9uTGlz
dChBbmltYXRpb25MaXN0JiYpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZmlsbFVuc2V0UHJvcGVy
dGllcygpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JikgY29uc3Q7
CkBAIC00OSwyMiArNDksMTcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVf
dCBuKSB7IG1fYW5pbWF0aW9ucy5yZXNpemUobik7IH0KICAgICB2b2lkIHJlbW92ZShzaXplX3Qg
aSkgeyBtX2FuaW1hdGlvbnMucmVtb3ZlKGkpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0
cjxBbmltYXRpb24+IGFuaW1hdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRpb24p
OwotICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7Ci0gICAgfQotICAgIAot
ICAgIEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiAqbV9hbmltYXRpb25z
W2ldOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuICptX2FuaW1hdGlvbnNbaV07IH0KKyAgICB2b2lkIGFwcGVuZChSZWY8QW5pbWF0aW9u
PiYmIGFuaW1hdGlvbikgeyBtX2FuaW1hdGlvbnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0aW9uKSk7
IH0KKworICAgIEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiBtX2FuaW1h
dGlvbnNbaV0uZ2V0KCk7IH0KKyAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25zW2ldLmdldCgpOyB9CiAgICAgCiBwcml2YXRl
OgogICAgIEFuaW1hdGlvbkxpc3QmIG9wZXJhdG9yPShjb25zdCBBbmltYXRpb25MaXN0Jik7Cisg
ICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0Owog
Ci0gICAgVmVjdG9yPFJlZlB0cjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CisgICAgVmVjdG9y
PFJlZjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CiB9OyAgICAKIAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBbmltYXRpb25MaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCmluZGV4IGZjYTQ1
YzEwZDIxMDRmMDVlZGViYjc4ODAwMTRhMjYzYTY1YjFlMTEuLjVlYTAxYjIwYjI2MjdiOGQ5N2Jh
MzVmM2UyZDdjYmU0YTU1Mjk0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaApAQCAtMjMsMjkgKzIzLDI0IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uVHJpZ2dlcl9oCi0jZGVmaW5lIEFu
aW1hdGlvblRyaWdnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRyaWdnZXI+IHsK
IHB1YmxpYzoKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9u
ZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUgewot
ICAgICAgICBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFuaW1hdGlvblRyaWdnZXJU
eXBlCi0gICAgfTsKKyAgICB2aXJ0dWFsIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblRyaWdnZXIoKSB7IH0KIAorICAgIGVu
dW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUgeyBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUs
IFNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlIH07CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBpc0F1dG9BbmltYXRp
b25UcmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEFuaW1hdGlvblRyaWdnZXJUeXBl
OjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGU7IH0KQEAgLTYyLDE2ICs1NywxNCBAQCBwcm90ZWN0
ZWQ6CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgQXV0b0Fu
aW1hdGlvblRyaWdnZXIgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBBdXRvQW5p
bWF0aW9uVHJpZ2dlciBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkKKyAg
ICBzdGF0aWMgUmVmPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5BdXRvQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAgICAgICAg
IHJldHVybiBvdGhlci5pc0F1dG9BbmltYXRpb25UcmlnZ2VyKCk7CiAgICAgfQpAQCAtODIsMjIg
Kzc1LDIwIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5pbWF0
aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25Ucmln
Z2VyPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIH07CiAKLWNsYXNzIFNjcm9sbEFuaW1hdGlv
blRyaWdnZXIgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBTY3JvbGxBbmltYXRp
b25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZShMZW5ndGgg
c3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIo
c3RhcnRWYWx1ZSwgZW5kVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewogICAg
ICAgICBpZiAoIW90aGVyLmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTMzLDkgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X2VuZFZhbHVlID0gZW5kVmFsdWU7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmltYXRpb25U
cmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRyaWdnZXI+
IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5kVmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFs
dWUsIG1fZW5kVmFsdWUpKTsKICAgICB9CiAKICAgICBMZW5ndGggbV9zdGFydFZhbHVlOwpAQCAt
MTU0LDUgKzE0NSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIo
QXV0b0FuaW1hdGlvblRyaWdnZXIsIGlzQXV0b0FuaW1hdGlvblRyCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0FOSU1BVElPTl9UUklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlzU2Nyb2xs
QW5pbWF0aW9uVHJpZ2dlcik7CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQW5pbWF0aW9uVHJpZ2dl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5n
RnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5j
dGlvbi5oCmluZGV4IGY1ZTY2MTZhOTdjZDUzYzZiY2FlMTM1ZGQzNmNjNDdjMmZiN2M4Y2MuLmZj
YWEzYzNmZmRiNmRlYjJhYmVlYmM4ZDAyMGEwZDM5ZGEzMmY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMiw1NCAr
MjIsNTAgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBUaW1pbmdGdW5jdGlvbl9oCi0jZGVmaW5lIFRp
bWluZ0Z1bmN0aW9uX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4
dFN0cmVhbTsKKwogY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1p
bmdGdW5jdGlvbj4gewogcHVibGljOgorICAgIHZpcnR1YWwgUmVmPFRpbWluZ0Z1bmN0aW9uPiBj
bG9uZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlv
bj4gY2xvbmUoKSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7Ci0g
ICAgICAgIExpbmVhckZ1bmN0aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9u
LCBTcHJpbmdGdW5jdGlvbgotICAgIH07Ci0gICAgCiAgICAgdmlydHVhbCB+VGltaW5nRnVuY3Rp
b24oKSB7IH0KIAorICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsgTGluZWFyRnVuY3Rpb24s
IEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rpb24sIFNwcmluZ0Z1bmN0aW9uIH07CiAg
ICAgVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAg
ICAKKwogICAgIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBMaW5lYXJGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247IH0K
ICAgICBib29sIGlzU3RlcHNUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBTdGVwc0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFNwcmluZ0Z1bmN0aW9uOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYpIGNvbnN0ID0g
MDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGltaW5n
RnVuY3Rpb24oVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCisgICAgZXhwbGljaXQgVGltaW5nRnVu
Y3Rpb24oVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAg
ICAgewogICAgIH0KLSAgICAKKworcHJpdmF0ZToKICAgICBUaW1pbmdGdW5jdGlvblR5cGUgbV90
eXBlOwogfTsKIAogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGlt
aW5nRnVuY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExpbmVhclRpbWlu
Z0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8TGluZWFyVGltaW5nRnVuY3Rpb24+
IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWlu
Z0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5nRnVu
Y3Rpb24pOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5MaW5lYXJUaW1pbmdGdW5jdGlvbigp
IHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3Ro
ZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBvdGhlci5pc0xpbmVhclRp
bWluZ0Z1bmN0aW9uKCk7CiAgICAgfQpAQCAtODAsNjEgKzc2LDU0IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAgICAg
fQogfTsKIAogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBU
aW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgZW51bSBUaW1pbmdGdW5jdGlvblByZXNldCB7
Ci0gICAgICAgIEVhc2UsCi0gICAgICAgIEVhc2VJbiwKLSAgICAgICAgRWFzZU91dCwKLSAgICAg
ICAgRWFzZUluT3V0LAotICAgICAgICBDdXN0b20KLSAgICB9OworICAgIGVudW0gVGltaW5nRnVu
Y3Rpb25QcmVzZXQgeyBFYXNlLCBFYXNlSW4sIEVhc2VPdXQsIEVhc2VJbk91dCwgQ3VzdG9tIH07
CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4g
Y3JlYXRlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICBz
dGF0aWMgUmVmPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShkb3VibGUgeDEsIGRv
dWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5
MikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKEN1c3RvbSwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKICAgICB9CiAg
ICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3Jl
YXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkKKyAgICBzdGF0aWMgUmVmPEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHByZXNldCkgewogICAgICAgICBjYXNlIEVhc2U6Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKTsKICAgICAgICAgY2FzZSBFYXNlSW46Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4w
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKEVhc2VJbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkpOwogICAgICAgICBjYXNlIEVhc2VP
dXQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oRWFzZU91dCwgMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlT3V0LCAwLjAsIDAu
MCwgMC41OCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFzZUluT3V0OgotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwgMC40
MiwgMC4wLCAwLjU4LCAxLjApKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwgMC40
MiwgMC4wLCAwLjU4LCAxLjApKTsKKyAgICAgICAgY2FzZSBDdXN0b206CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIGlmIChvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24o
KSkgewotICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7Ci0g
ICAgICAgICAgICBpZiAobV90aW1pbmdGdW5jdGlvblByZXNldCAhPSBDdXN0b20pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgPT0gY3RmLT5tX3RpbWluZ0Z1
bmN0aW9uUHJlc2V0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gbV94MSA9PSBj
dGYtPm1feDEgJiYgbV95MSA9PSBjdGYtPm1feTEgJiYgbV94MiA9PSBjdGYtPm1feDIgJiYgbV95
MiA9PSBjdGYtPm1feTI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIW90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAgICAgaWYgKG1fdGlt
aW5nRnVuY3Rpb25QcmVzZXQgIT0gb3RoZXJDdWJpYy5tX3RpbWluZ0Z1bmN0aW9uUHJlc2V0KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV90aW1pbmdGdW5jdGlvblBy
ZXNldCAhPSBDdXN0b20pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IG1feDEgPT0gb3RoZXJDdWJpYy5tX3gxICYmIG1feTEgPT0gb3RoZXJDdWJpYy5tX3kxICYmIG1f
eDIgPT0gb3RoZXJDdWJpYy5tX3gyICYmIG1feTIgPT0gb3RoZXJDdWJpYy5tX3kyOwogICAgIH0K
IAogICAgIGRvdWJsZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KQEAgLTE0OSwyMSArMTM4
LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV94MiA9IHgyOwogICAgICAgICBtX3kyID0geTI7CiAg
ICAgfQotICAgIAorCiAgICAgVGltaW5nRnVuY3Rpb25QcmVzZXQgdGltaW5nRnVuY3Rpb25QcmVz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0OyB9CiAgICAgdm9pZCBz
ZXRUaW1pbmdGdW5jdGlvblByZXNldChUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpIHsgbV90
aW1pbmdGdW5jdGlvblByZXNldCA9IHByZXNldDsgfQotICAgIAotICAgIHN0YXRpYyBjb25zdCBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBkZWZhdWx0VGltaW5nRnVuY3Rpb24oKQorCisgICAg
c3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGRlZmF1bHRUaW1pbmdGdW5j
dGlvbigpCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbiogZHRmID0gY3JlYXRlKCkubGVha1JlZigpOwotICAgICAgICByZXR1cm4gZHRmOworICAg
ICAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZnVuY3Rpb24gPSBj
cmVhdGUoKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICB9CiAKLSAg
ICBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2VkKCkg
Y29uc3QKKyAgICBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZSgxLjAgLSBtX3gyLCAxLjAgLSBt
X3kyLCAxLjAgLSBtX3gxLCAxLjAgLSBtX3kxKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblByZXNl
dCBwcmVzZXQgPSBFYXNlLCBkb3VibGUgeDEgPSAwLjI1LCBkb3VibGUgeTEgPSAwLjEsIGRvdWJs
ZSB4MiA9IDAuMjUsIGRvdWJsZSB5MiA9IDEuMCkKICAgICAgICAgOiBUaW1pbmdGdW5jdGlvbihD
dWJpY0JlemllckZ1bmN0aW9uKQpAQCAtMTc1LDkgKzE2NCw5IEBAIHByaXZhdGU6CiAgICAgewog
ICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiht
X3RpbWluZ0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24obV90aW1pbmdG
dW5jdGlvblByZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOwogICAgIH0KIAogICAgIGRv
dWJsZSBtX3gxOwpAQCAtMTg5LDI1ICsxNzgsMjEgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3RlcHNU
aW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGlu
dCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0ZXBBdFN0
YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24o
c3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBz
VGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0
aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1Rp
bWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rl
cHNUaW1pbmdGdW5jdGlvbigxLCB0cnVlKSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgflN0
ZXBzVGltaW5nRnVuY3Rpb24oKSB7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBpZiAo
b3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0ZXBz
VGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rp
b24qPigmb3RoZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gc3RmLT5tX3N0ZXBz
ICYmIG1fc3RlcEF0U3RhcnQgPT0gc3RmLT5tX3N0ZXBBdFN0YXJ0OwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rp
b24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgb3RoZXJTdGVw
cyA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPihvdGhlcik7CisgICAg
ICAgIHJldHVybiBtX3N0ZXBzID09IG90aGVyU3RlcHMubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0
ID09IG90aGVyU3RlcHMubV9zdGVwQXRTdGFydDsKICAgICB9CiAgICAgCiAgICAgaW50IG51bWJl
ck9mU3RlcHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CkBAIC0yMTUsNyArMjAwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEF0
U3RhcnQ7IH0KICAgICB2b2lkIHNldFN0ZXBBdFN0YXJ0KGJvb2wgc3RlcEF0U3RhcnQpIHsgbV9z
dGVwQXRTdGFydCA9IHN0ZXBBdFN0YXJ0OyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgU3RlcHNU
aW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgICAgIDogVGlt
aW5nRnVuY3Rpb24oU3RlcHNGdW5jdGlvbikKQEAgLTIyNCw5ICsyMDksOSBAQCBwcml2YXRlOgog
ICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFs
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24o
bV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKICAgICB9CiAgICAg
CiAgICAgaW50IG1fc3RlcHM7CkBAIC0yNDcsMTMgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBjcmVhdGUoMCwgMCwgMCwgMCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0g
ICAgICAgIGlmIChvdGhlci5pc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAg
IGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uJiBvdGhlclN0cmluZyA9ICpzdGF0aWNfY2FzdDxj
b25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4g
bV9tYXNzID09IG90aGVyU3RyaW5nLm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBvdGhlclN0cmlu
Zy5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXJTdHJpbmcubV9kYW1waW5nICYmIG1f
aW5pdGlhbFZlbG9jaXR5ID09IG90aGVyU3RyaW5nLm1faW5pdGlhbFZlbG9jaXR5OwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1NwcmluZ1Rp
bWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8m
IG90aGVyU3ByaW5nID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPihv
dGhlcik7CisgICAgICAgIHJldHVybiBtX21hc3MgPT0gb3RoZXJTcHJpbmcubV9tYXNzICYmIG1f
c3RpZmZuZXNzID09IG90aGVyU3ByaW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhl
clNwcmluZy5tX2RhbXBpbmcgJiYgbV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTcHJpbmcubV9p
bml0aWFsVmVsb2NpdHk7CiAgICAgfQogCiAgICAgZG91YmxlIG1hc3MoKSBjb25zdCB7IHJldHVy
biBtX21hc3M7IH0KQEAgLTI3OSw5ICsyNjMsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKG1fbWFzcywgbV9zdGlm
Zm5lc3MsIG1fZGFtcGluZywgbV9pbml0aWFsVmVsb2NpdHkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0aWZmbmVzcywgbV9k
YW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBtX21hc3M7
CkBAIC0yOTAsOSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9pbml0aWFsVmVsb2Np
dHk7CiB9OwogCi1jbGFzcyBUZXh0U3RyZWFtOwogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVGltaW5nRnVuY3Rpb24mKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGltaW5nRnVuY3Rpb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggNGY5YjVmNTVjYzg0M2Y0YWI4N2Rl
MzU1NDM5Zjg2ZDk3ODZkMTZlYS4uZDE4ZGJkZDk0NDI0NjVkMzNlN2U5ZDBlN2RjZjg0ZTZlMDNj
MDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFubmVscy5zaXplKCk7IH0KIAogICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5l
bCh1bnNpZ25lZCBjaGFubmVsKSB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9
Ci0gICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+bV9jaGFubmVsc1tjaGFubmVs
XS5nZXQoKTsgfQorICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBjaGFu
bmVsKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CiAgICAgQXVk
aW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpOwogICAgIGNvbnN0IEF1ZGlv
Q2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFlYzUzZDhhMDEy
N2ZjMTliYTU4YmE2ZDRkZjJjOWQxOWE5NzU2YmYuLjYxOWEyYzA0MDJlMjE4NWU5MzJkZGExZGUx
MTgyYTRlMWU1MGUzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKQEAgLTE0MCwxMiArMTQwLDExIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVu
ZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRh
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CisgICAgYXV0byBkYXRhID0gYWRv
cHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290
RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51
bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhLmdldCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZmM1OGZiNjVkZmVl
ZGZjMjU1YjVlOWM3YTJlYzc4YWU2YWU5NTIwMy4uODJiNmI2MTU2ODc3ZTA0M2NjNjFkODM2YmFh
OTJhNGIyYzQ3MTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVuY29kZXJDRl9oCi0jZGVmaW5lIEtleWVkRW5jb2Rl
ckNGX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNywyNSArMzYsMjUgQEAgcHVibGljOgogICAgIEtleWVk
RW5jb2RlckNGKCk7CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKLSAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKLQogcHJpdmF0
ZToKLSAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBr
ZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYg
a2V5LCB1aW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJp
bmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBT
dHJpbmcmIGtleSwgaW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVGbG9hdChjb25z
dCBTdHJpbmcmIGtleSwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworCisgICAgdm9p
ZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JikgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBvdmVy
cmlkZTsKLSAgICB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5PYmpl
Y3QoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgZW5kT2JqZWN0KCkgZmluYWw7
CiAKLSAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAg
IHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5RWxl
bWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5BcnJh
eUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIGZpbmFsOworICAg
IHZvaWQgZW5kQXJyYXkoKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBtX3Jvb3REaWN0aW9uYXJ5OwogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVuY29kZXJDRl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNQcm92aWRlckVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaAppbmRleCBiMzhkMmNhZmU3YjY5MDNkZDQ0
ZmE2YzM2Y2UzNDAxZThlNzNiNTZiLi43NzgyMDE3NDEyN2FlNWRhMzVhNjFiYTRhODZhZDBmYmUz
NGYzM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKQEAgLTIzLDEzICsyMywx
MSBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3Zp
ZGVyRWZsX2gKLSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbF9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSA8
c3BlYWtfbGliLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDUgKzc0
LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQ
cm92aWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcAppbmRleCBkNDkyMTM2NDMwOTljMmJhNzQ1ZWJmZDY5N2ViMTUxYTNmZTUz
ZmYxLi44MWNiZWQ1M2QxMTVlNDRmMTM0YzEyMjZkNjM0NjJjNTk4ZTQ0OTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEy
Nyw3ICsxMjcsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2Fy
cmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFu
dEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aAppbmRleCAyZDdiMWMzNGY3MTliMjQ4Njc3MjYyMjVlMTNiOTc3NDJkMmNiM2JjLi5mOTFiNGRk
YjMzMTVmNjZlYzRlMGMxOWZkMjcwNjczYjZjNDc1ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgS2V5ZWRFbmNv
ZGVyR2xpYl9oCi0jZGVmaW5lIEtleWVkRW5jb2RlckdsaWJfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTM5LDI1ICszOCwy
NSBAQCBwdWJsaWM6CiAgICAgS2V5ZWRFbmNvZGVyR2xpYigpOwogICAgIH5LZXllZEVuY29kZXJH
bGliKCk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKLSAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2b2lk
IGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIG92ZXJyaWRl
OwotICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92ZXJy
aWRlOwotICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOworCisgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVVJbnQzMihjb25z
dCBTdHJpbmcmIGtleSwgdWludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50MzIoY29u
c3QgU3RyaW5nJiBrZXksIGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50NjQoY29u
c3QgU3RyaW5nJiBrZXksIGludDY0X3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRmxvYXQoY29u
c3QgU3RyaW5nJiBrZXksIGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZURvdWJsZShjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luT2Jq
ZWN0KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZE9iamVjdCgpIG92
ZXJyaWRlOworICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOwor
ICAgIHZvaWQgZW5kT2JqZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3Qg
U3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5k
QXJyYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkp
IGZpbmFsOworICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVu
ZEFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXkoKSBmaW5hbDsKIAogICAg
IEdWYXJpYW50QnVpbGRlciBtX3ZhcmlhbnRCdWlsZGVyOwogICAgIFZlY3RvcjxHVmFyaWFudEJ1
aWxkZXIqLCAxNj4gbV92YXJpYW50QnVpbGRlclN0YWNrOwpAQCAtNjYsNSArNjUsMyBAQCBwcml2
YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRFbmNv
ZGVyR2xpYl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
CmluZGV4IGQwNTZlYmZlMjJhYWU4MTU5NGU4OGJhNGIyZTc4MjE1MzlkYjc5N2EuLmFmNDhiMGI5
MjQyYzU5NzAwZWVlYjM2MmNhYjZlMDNlNWFmNmQyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yNywxNSArMjcsMTMgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBGb250Q2FjaGVfaAotI2RlZmluZSBGb250Q2FjaGVfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZ0hhc2guaD4KQEAgLTI5MCw1ICsyODgsMyBAQCBpbmxpbmUgdm9pZCBGb250Q2Fj
aGU6OnBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCkKICNlbmRpZgogCiB9Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oCmluZGV4IDkzMDNhOTA1YjA5NzEzYTJkNWNjYjIzOWIyZDk3NzVkZTgxMWFhNTYuLmFk
MzgyZjQxNWEzYjUxMGVmZTQxM2JlZjdhOWRhY2YxZGY5YzM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwLCAyMDEz
LTIwMTYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwg
bWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2ggQ2Vu
dGVyIFVTQSwgSW5jLgpAQCAtMjIsMTAgKzIyLDE1IEBACiAgKgogICovCiAKLSNpZm5kZWYgRm9u
dFBsYXRmb3JtRGF0YV9oCi0jZGVmaW5lIEZvbnRQbGF0Zm9ybURhdGFfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5o
PgorCiAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSAiQ09NUHRyLmgiCkBAIC00NCwyNSAr
NDksMTggQEAKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKICNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0ZvbnQ7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZv
bnQqIENURm9udFJlZjsKLQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgotCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0
Lmg+CiB0eXBlZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKQEAgLTcwLDcgKzY4LDYgQEAgaW50
ZXJmYWNlIElEV3JpdGVGb250OwogaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKICNlbmRpZgog
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtODIs
MTAgKzc5LDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CiAgICAgRm9udFBs
YXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAgIEZvbnRQbGF0
Zm9ybURhdGEoKTsKLSNpZiAhVVNFKEZSRUVUWVBFKQotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKLSNlbmRpZgotICAgIEZvbnRQbGF0Zm9y
bURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1bHQ7CisKICAgICBGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsK
ICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsLCBGb250V2lk
dGhWYXJpYW50ID0gUmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IEF1dG9UZXh0UmVu
ZGVyaW5nKTsKIApAQCAtMTAzLDI3ICs5NywzNiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShX
SU4pCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBmbG9hdCBzaXplLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9vbCB1c2VHREkpOwor
I2VuZGlmCiAKLSNpZiBVU0UoQ0cpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAgICAg
Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBDR0ZvbnRSZWYsIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7
Ci0jZWxpZiBVU0UoRElSRUNUMkQpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KERJUkVDVDJEKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgSURXcml0
ZUZvbnQqLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2Js
aXF1ZSwgYm9vbCB1c2VHREkpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIEZvbnRQbGF0Zm9ybURh
dGEoR0RJT2JqZWN0PEhGT05UPiwgY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXplLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0FJUk8pCisgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250
X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCiAK
ICNpZiBVU0UoRlJFRVRZUEUpCiAgICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBjb25z
dCBGb250RGVzY3JpcHRpb24mKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFj
ZV90KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY09ibGlxdWUpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1
bHQ7CisgICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmKTsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oRm9udFBsYXRmb3JtRGF0YSYm
KSA9IGRlZmF1bHQ7CiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIEhGT05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250ID8gbV9m
b250LT5nZXQoKSA6IDA7IH0KICAgICBib29sIHVzZUdESSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
R0RJOyB9Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgQ1RGb250UmVmIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCBDVEZvbnRSZWYgcmVnaXN0ZXJlZEZvbnQoKSBjb25zdDsgLy8g
UmV0dXJucyBudWxscHRyIGlmZiB0aGUgZm9udCBpcyBub3QgcmVnaXN0ZXJlZCwgc3VjaCBhcyB3
ZWIgZm9udHMgKG90aGVyd2lzZSByZXR1cm5zIGZvbnQoKSkuCiAKQEAgLTE4OSwxMiArMTkyLDYg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0jaWYgVVNFKEZSRUVUWVBFKQotICAgIEZvbnRQ
bGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7Ci0jZWxzZQot
ICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJikg
PSBkZWZhdWx0OwotI2VuZGlmCi0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gcGxhdGZvcm1Jc0Vx
dWFsKG90aGVyKQpAQCAtMjMyLDEyICsyMjksMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGJvb2wgcGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENHRmxvYXQgY3RGb250U2l6ZSgpIGNvbnN0OwogI2Vu
ZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBwbGF0Zm9ybURhdGFJbml0KEhGT05U
LCBmbG9hdCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7CiAjZW5kaWYKKwogI2lmIFVTRShG
UkVFVFlQRSkKICAgICB2b2lkIGJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2ZhY2VfdCopOwog
I2VuZGlmCkBAIC0yNTMsMTMgKzI1MywxNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgJiYgKFBM
QVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMDAwMDApKQogICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IG1fY2dG
b250OwogI2VuZGlmCisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEV3JpdGVGb250
PiBtX2R3Rm9udDsKICAgICBDT01QdHI8SURXcml0ZUZvbnRGYWNlPiBtX2R3Rm9udEZhY2U7CiAj
ZW5kaWYKKwogI2lmIFVTRShDQUlSTykKICAgICBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4g
bV9zY2FsZWRGb250OwogI2VuZGlmCisKICNpZiBVU0UoRlJFRVRZUEUpCiAgICAgUmVmUHRyPEZj
UGF0dGVybj4gbV9wYXR0ZXJuOwogICAgIG11dGFibGUgRmNVbmlxdWVQdHI8RmNGb250U2V0PiBt
X2ZhbGxiYWNrczsKQEAgLTI4NSwxNSArMjg4LDE4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIGJvb2wgbV9pc0Vtb2ppIHsgZmFsc2UgfTsKICNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIGJvb2wgbV91c2VHREkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBVU0Uo
RlJFRVRZUEUpCiAgICAgYm9vbCBtX2ZpeGVkV2lkdGggeyBmYWxzZSB9OwogI2VuZGlmCiB9Owog
CiAjaWYgVVNFKEFQUEtJVCkKKwogLy8gTlNGb250cyBhbmQgQ1RGb250UmVmcyBhcmUgdG9sbC1m
cmVlLWJyaWRnZWQuCiBpbmxpbmUgQ1RGb250UmVmIHRvQ1RGb250KE5TRm9udCAqZm9udCkKIHsK
QEAgLTMwNCw5ICszMTAsMTEgQEAgaW5saW5lIE5TRm9udCAqdG9OU0ZvbnQoQ1RGb250UmVmIGZv
bnQpCiB7CiAgICAgcmV0dXJuIChOU0ZvbnQgKilmb250OwogfQorCiAjZW5kaWYKIAogI2lmIFVT
RShDRykKKwogY2xhc3MgU2NvcGVkVGV4dE1hdHJpeCB7CiBwdWJsaWM6CiAgICAgU2NvcGVkVGV4
dE1hdHJpeChDR0FmZmluZVRyYW5zZm9ybSBuZXdNYXRyaXgsIENHQ29udGV4dFJlZiBjb250ZXh0
KQpAQCAtMzMwLDggKzMzOCw3IEBAIHByaXZhdGU6CiAgICAgQ0dDb250ZXh0UmVmIG1fY29udGV4
dDsKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3RleHRNYXRyaXg7CiB9OworCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5k
ZXggZDkxOWZmZGJlNTRmYzI1OWE2MWYxNTFhZGU3NzA1YjczZDgzNjAwYy4uZmUzN2QyNTM0YmZj
MTA3MTJiNjQwMTIxZTJmNWJkMjMyNGJhZWJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEdyYXBoaWNzTGF5ZXJfaAotI2RlZmluZSBHcmFw
aGljc0xheWVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKQEAgLTgwLDExICs3OSwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBbmlt
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogbV9rZXlU
aW1lKG90aGVyLm1fa2V5VGltZSkKLSAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVyLm1f
dGltaW5nRnVuY3Rpb24gPyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgpIDogbnVsbHB0
cikKKyAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVyLm1fdGltaW5nRnVuY3Rpb24gPyBS
ZWZQdHI8VGltaW5nRnVuY3Rpb24+IHsgb3RoZXIubV90aW1pbmdGdW5jdGlvbi0+Y2xvbmUoKSB9
IDogbnVsbHB0cikKICAgICB7CiAgICAgfQogCisgICAgQW5pbWF0aW9uVmFsdWUoQW5pbWF0aW9u
VmFsdWUmJikgPSBkZWZhdWx0OworCiBwcml2YXRlOgorICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IEFuaW1hdGlvblZhbHVlJikgPSBkZWxldGU7CisKICAgICBkb3VibGUgbV9rZXlUaW1lOwogICAg
IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKIH07CkBAIC0xMDQsMTIg
KzEwNyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAotICAgIEZsb2F0QW5pbWF0aW9uVmFsdWUo
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSYgb3RoZXIpCi0gICAgICAgIDogQW5pbWF0aW9uVmFs
dWUob3RoZXIpCi0gICAgICAgICwgbV92YWx1ZShvdGhlci5tX3ZhbHVlKQotICAgIHsKLSAgICB9
Ci0KICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0
ZToKQEAgLTEzNCwxMCArMTMxLDEzIEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5p
bWF0aW9uVmFsdWUob3RoZXIpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92
YWx1ZS5vcGVyYXRpb25zKCkuYXBwZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5j
bG9uZSgpKTsKKyAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1
dG8mIG9wZXJhdGlvbiA6IG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAg
bV92YWx1ZS5vcGVyYXRpb25zKCkudW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7
CiAgICAgfQogCisgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByaXZhdGU6CkBAIC0xNjIsMTAgKzE2
MiwxMyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyQW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IEFuaW1hdGlvblZhbHVlKG90aGVyKQogICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3ZhbHVlLm9wZXJhdGlv
bnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLmFwcGVu
ZChvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKVtpXS0+Y2xvbmUoKSk7CisgICAgICAgIG1fdmFs
dWUub3BlcmF0aW9ucygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1ZS5vcGVy
YXRpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvdGhlci5t
X3ZhbHVlLm9wZXJhdGlvbnMoKSkKKyAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLnVu
Y2hlY2tlZEFwcGVuZChvcGVyYXRpb24tPmNsb25lKCkpOwogICAgIH0KIAorICAgIEZpbHRlckFu
aW1hdGlvblZhbHVlKEZpbHRlckFuaW1hdGlvblZhbHVlJiYpID0gZGVmYXVsdDsKKwogICAgIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
CiBwcml2YXRlOgpAQCAtMTg1LDEzICsxODgsMTIgQEAgcHVibGljOgogICAgIEtleWZyYW1lVmFs
dWVMaXN0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICAgICAgOiBtX3Byb3Bl
cnR5KG90aGVyLnByb3BlcnR5KCkpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG90aGVyLm1fdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZXMuYXBw
ZW5kKG90aGVyLm1fdmFsdWVzW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92YWx1ZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKGF1
dG8mIHZhbHVlIDogb3RoZXIubV92YWx1ZXMpCisgICAgICAgICAgICBtX3ZhbHVlcy51bmNoZWNr
ZWRBcHBlbmQodmFsdWUtPmNsb25lKCkpOwogICAgIH0KIAotICAgIH5LZXlmcmFtZVZhbHVlTGlz
dCgpCi0gICAgewotICAgIH0KKyAgICBLZXlmcmFtZVZhbHVlTGlzdChLZXlmcmFtZVZhbHVlTGlz
dCYmKSA9IGRlZmF1bHQ7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCYgb3BlcmF0b3I9KGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICB7CkBAIC0yMDAsNiArMjAyLDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgS2V5ZnJhbWVWYWx1ZUxp
c3QmIG9wZXJhdG9yPShLZXlmcmFtZVZhbHVlTGlzdCYmKSA9IGRlZmF1bHQ7CisKICAgICB2b2lk
IHN3YXAoS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgc3RkOjpzd2Fw
KG1fcHJvcGVydHksIG90aGVyLm1fcHJvcGVydHkpOwpAQCAtMjEwLDEwICsyMTQsMTAgQEAgcHVi
bGljOgogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5zaXplKCk7
IH0KICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJu
ICptX3ZhbHVlcy5hdChpKTsgfQotICAgIAorCiAgICAgLy8gSW5zZXJ0LCBzb3J0ZWQgYnkga2V5
VGltZS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Y29u
c3QgQW5pbWF0aW9uVmFsdWU+KTsKLSAgICAKKwogcHJvdGVjdGVkOgogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgQW5pbWF0aW9uVmFsdWU+PiBtX3ZhbHVlczsKICAgICBBbmltYXRl
ZFByb3BlcnR5SUQgbV9wcm9wZXJ0eTsKQEAgLTIyNSw3ICsyMjksNiBAQCBwcm90ZWN0ZWQ6CiBj
bGFzcyBHcmFwaGljc0xheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0xh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0KICAgICBlbnVtIGNsYXNz
IFR5cGUgewogICAgICAgICBOb3JtYWwsCiAgICAgICAgIFBhZ2VUaWxlZEJhY2tpbmcsCkBAIC0y
NDEsNyArMjQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoVHlw
ZSkgeyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFBsYXRmb3JtTGF5ZXJJRDsKKyAgICB1c2lu
ZyBQbGF0Zm9ybUxheWVySUQgPSB1aW50NjRfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJ
RCBwcmltYXJ5TGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEdyYXBoaWNzTGF5
ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC02ODMsNSAr
Njg2LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogLy8gT3V0c2lkZSB0aGUgV2Vi
Q29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBmcm9tIHRoZSBkZWJ1Z2dlci4K
IHZvaWQgc2hvd0dyYXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
IGxheWVyKTsKICNlbmRpZgotCi0jZW5kaWYgLy8gR3JhcGhpY3NMYXllcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXgg
ODI0NWQ0ZTZkYTczNTM4ODJlYTljZTI3YTUzNzI1ZTFjZmU4MTZkZS4uODU0NmM3MTJmNjRhMTcw
NmQ2MjBiMzUyMzQ2NGJlZjU1YmQ4Y2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMjMsMjEgKzIzLDE4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1TZXNz
aW9uX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENETVNlc3Npb25DbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkNETVNlc3Np
b25DbGllbnQoKSB7IH07CisgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9u
VVJMKSA9IDA7CiAKICAgICBlbnVtIHsKQEAgLTY0LDcgKzYxLDYgQEAgZW51bSBDRE1TZXNzaW9u
VHlwZSB7CiAKIGNsYXNzIENETVNlc3Npb24gewogcHVibGljOgotICAgIENETVNlc3Npb24oKSB7
IH0KICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIENETVNlc3Np
b25UeXBlIHR5cGUoKSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZVVua25vd247IH0KQEAgLTc5LDUg
Kzc1LDMgQEAgcHVibGljOgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGRmMDNjY2I2MTI5MDE5
ZTBjODg0MjZkNzgwYWFlZGU1MjZlMjBiMjkuLmJiYzA1ZDUwN2Y0MjU2Njc5ZmI3ZDdiY2Y3MjBk
ODUyNmMxYWMzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMuaApAQCAtMjMsMTIgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQ19oCi0jZGVmaW5lIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKQEAgLTY2LDUg
KzY2LDMgQEAgcHJvdGVjdGVkOgogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGJhNDk2MzU5N2RhZGYwZTJmY2M1
MjhmYzgxY2MzMjE1ZThjZDJiZWUuLmZhNDQ0NGIxZWNmYWEyYzBlNjI5MDc4MDg1ZmZhNmZjMmIy
OTZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtOTI0LDggKzkyNCw4IEBAIGJvb2wgR3JhcGhpY3NM
YXllckNBOjphbmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpCiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICAvLyBJ
ZiB0aGVyZSBpcyBhIHRyaWdnZXIgdGhhdCBkZXBlbmRzIG9uIHRoZSBzY3JvbGwgcG9zaXRpb24s
IHdlIGNhbm5vdCBhY2NlbGVyYXRlIHRoZSBhbmltYXRpb24uCi0gICAgaWYgKGFuaW0tPnRyaWdn
ZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKLSAgICAgICAgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXI+KCphbmltLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgIGlmIChpczxTY3JvbGxBbmltYXRpb25U
cmlnZ2VyPihhbmltLT50cmlnZ2VyKCkpKSB7CisgICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIg
PSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqYW5pbS0+dHJpZ2dlcigpKTsKICAg
ICAgICAgaWYgKHNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC0yODA1LDcgKzI4MDUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdQogICAgIGludCBhbmltYXRpb25JbmRleCA9IDA7CiAgICAgCiAgICAgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOwotICAgIAorCiAgICAgaWYgKGlzS2V5ZnJhbWUp
IHsKICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRp
b24sIHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0aXZlKTsK
ICAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmlt
YXRpb24sIGNhQW5pbWF0aW9uLmdldCgpKTsKQEAgLTI4MTYsNyArMjgxNiw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1CiAgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5p
bWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgp
KSwgYWRkaXRpdmUpOwogICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBvaW50cyh2
YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOwogICAgIH0KLSAgICAKKwog
ICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAyNCwxMyAr
MzAyNCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1D
QUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbgogICAgIHByb3BlcnR5QW5pbS0+c2V0
RmlsbE1vZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NM
YXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0
aW9uJiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewog
ICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgICAgICByZXR1cm4gKmFuaW1WYWx1ZS50aW1pbmdG
dW5jdGlvbigpOwogICAgIGlmIChhbmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAg
cmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLSAgICAKKyAgICAgICAgcmV0dXJu
ICphbmltLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0zMDU0LDkgKzMwNTMsNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQg
Zm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRo
ZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJz
aW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWlu
ZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlv
bik7Ci0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQotICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWlu
Z0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0
VGltaW5nRnVuY3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0
LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMzA4NiwxMyArMzA4MywxMyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9u
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0
aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9y
d2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7
CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAx
KSwgKmFuaW1hdGlvbikpOwogICAgIH0KLSAgICAKKwogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5
VGltZXMoa2V5VGltZXMpOwogICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKHZhbHVlcyk7CiAg
ICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5nRnVuY3Rpb25zLCAhZm9y
d2FyZHMpOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMDUsOCArMzEwMiw4
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gIWZv
cndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsKICAgICAKLSAgICBjb25z
dCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgc3RhcnRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpOwotICAg
IGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAg
ICBhdXRvJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgYXV0byYgZW5kVmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0
b0luZGV4KSk7CiAKICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm07CkBAIC0zMTQ5LDEwICsz
MTQ2LDkgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBv
aW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKIAogICAgIC8vIFRoaXMgY29kZXBhdGgg
aXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxv
b2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRo
ZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0
aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKTsKLSAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0
aW9uLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24oJnRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwg
IWZvcndhcmRzKTsKIAotICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBl
IHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlv
bih0cmFuc2Zvcm1PcFR5cGUpOworICAgIGF1dG8gdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVu
Y3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CiAgICAgaWYg
KHZhbHVlRnVuY3Rpb24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQog
ICAgICAgICBiYXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CiAKQEAg
LTMyMDQsNyArMzIwMCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1Bbmlt
YXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1p
bmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7Cisg
ICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwg
KmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVz
KGtleVRpbWVzKTsKQEAgLTMyNjAsNyArMzI1Niw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpz
ZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9u
cywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRp
bWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUg
Zmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBiYXNpY0Fu
aW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFs
dWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNl
dFRpbWluZ0Z1bmN0aW9uKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlz
dC5hdCgwKSwgKmFuaW1hdGlvbiksICFmb3J3YXJkcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTMyODgsNyArMzI4NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmlt
YXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0
aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9y
d2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7
CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAx
KSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRp
bWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZDI0OTdjMzFkYWFiM2I0ZmFkOTU5NTRkNzUz
ZTA2YTMyYTVmNWQ2Ni4uMjIzYjE1ZmYwZmVjNjEzMDUyZjhmNDM0Mjk2ZTVkZGYwYjEwYzBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CiAg
ICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9u
VmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmltYXRpb24mKTsKKyAgICBjb25z
dCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBB
bmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAogICAgIGJvb2wgc2V0QW5p
bWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFu
aW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDBiZWRk
MGE1NzRjMjQ5OWU1ZTNhY2U5MjdiNTQxMWY5NDIwMWE4NTAuLjljYzFkZjZhZDNiZTU3MjlkM2Iy
YTgxNzkzZTVhNTcwNGFlMWVkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAKQEAgLTEyOCwxOSArMTI4LDE2IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNG
dW5jdGlvbihpbnQgbnVtU3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0CiAgICAgcmV0
dXJuIGZsb29yKG51bVN0ZXBzICogdCkgLyBudW1TdGVwczsKIH0KIAotc3RhdGljIGlubGluZSBm
bG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJhdGlvbikKK3N0YXRpYyBpbmxpbmUgZmxv
YXQgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rp
b24sIGZsb2F0IHByb2dyZXNzLCBkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgaWYgKCF0aW1pbmdG
dW5jdGlvbikKLSAgICAgICAgcmV0dXJuIHByb2dyZXNzOwotCi0gICAgaWYgKHRpbWluZ0Z1bmN0
aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gc29sdmVD
dWJpY0JlemllckZ1bmN0aW9uKGN0Zi0+eDEoKSwgY3RmLT55MSgpLCBjdGYtPngyKCksIGN0Zi0+
eTIoKSwgcHJvZ3Jlc3MsIGR1cmF0aW9uKTsKKyAgICBpZiAodGltaW5nRnVuY3Rpb24uaXNDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byYgY3RmID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbihjdGYueDEoKSwgY3RmLnkxKCks
IGN0Zi54MigpLCBjdGYueTIoKSwgcHJvZ3Jlc3MsIGR1cmF0aW9uKTsKICAgICB9CiAKLSAgICBp
ZiAodGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNv
bnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGlt
aW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybiBzb2x2ZVN0ZXBz
RnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3RlcEF0U3RhcnQoKSwgZG91Ymxl
KHByb2dyZXNzKSk7CisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLmlzU3RlcHNUaW1pbmdGdW5jdGlv
bigpKSB7CisgICAgICAgIGF1dG8mIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5n
RnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBzb2x2ZVN0ZXBzRnVu
Y3Rpb24oc3RmLm51bWJlck9mU3RlcHMoKSwgc3RmLnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9n
cmVzcykpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9ncmVzczsKQEAgLTE5NCwxMyArMTkxLDEy
IEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmCiAgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAotc3Rh
dGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkK
K3N0YXRpYyBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25W
YWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgYW5pbWF0aW9uVmFsdWUsIGNvbnN0IEFuaW1hdGlv
biYgYW5pbWF0aW9uKQogewotICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT50
aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5n
ZXQoKTsKLQorICAgIGlmIChhbmltYXRpb25WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm4gKmFuaW1hdGlvblZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW1h
dGlvbi50aW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gKmFuaW1hdGlvbi50aW1pbmdG
dW5jdGlvbigpOwogICAgIHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0
VGltaW5nRnVuY3Rpb24oKTsKIH0KIApAQCAtMjU3LDcgKzI1Myw3IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckFuaW1hdGlvbjo6YXBwbHkoQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKG1fa2V5ZnJhbWVzLnNpemUoKSA9PSAyKSB7Ci0gICAgICAgIGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9u
VmFsdWUobV9rZXlmcmFtZXMuYXQoMCksIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAgICAgYXV0
byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKG1fa2V5
ZnJhbWVzLmF0KDApLCAqbV9hbmltYXRpb24pOwogICAgICAgICBub3JtYWxpemVkVmFsdWUgPSBh
cHBseVRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCBub3JtYWxpemVkVmFsdWUsIG1fYW5p
bWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAgYXBwbHlJbnRlcm5hbChjbGllbnQsIG1fa2V5
ZnJhbWVzLmF0KDApLCBtX2tleWZyYW1lcy5hdCgxKSwgbm9ybWFsaXplZFZhbHVlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI2Niw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bjo6YXBwbHkoQ2xpZW50JiBjbGllbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBub3JtYWxpemVkVmFsdWUgPSAobm9ybWFsaXplZFZhbHVlIC0gZnJvbS5rZXlUaW1lKCkpIC8g
KHRvLmtleVRpbWUoKSAtIGZyb20ua2V5VGltZSgpKTsKLSAgICAgICAgY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShm
cm9tLCBtX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgICAgIGF1dG8mIHRpbWluZ0Z1bmN0aW9uID0g
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmcm9tLCAqbV9hbmltYXRpb24pOwogICAg
ICAgICBub3JtYWxpemVkVmFsdWUgPSBhcHBseVRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9u
LCBub3JtYWxpemVkVmFsdWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAgYXBw
bHlJbnRlcm5hbChjbGllbnQsIGZyb20sIHRvLCBub3JtYWxpemVkVmFsdWUpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KaW5kZXggNTg0ZmRhYmQ5MjQ3ZmE1OGQ5YjBmMGYw
NDY4ZDQyNjBhNjZkMjA1YS4uZWZiZTgwZmFlMDNjNGNhMjg4NGRjMmZiOTJhMTc3ZmZhYWMwMmNl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KQEAgLTYwLDcgKzYwLDcgQEAgQGludGVyZmFjZSBX
ZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIDogTlNPYmplY3Q8QVZTcGVlY2hTeW50aGVzaXplckRl
bGVnYXRlPgogfQogCiAtIChXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyICopaW5pdFdpdGhTcGVl
Y2hTeW50aGVzaXplcjooV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciopc3ludGhl
c2l6ZXI7Ci0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPil1dHRlcmFuY2U7CistICh2b2lkKXNwZWFrVXR0
ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
JiYpdXR0ZXJhbmNlOwogCiBAZW5kCiAKQEAgLTg3LDcgKzg3LDcgQEAgLSAoZmxvYXQpbWFwU3Bl
ZWNoUmF0ZVRvUGxhdGZvcm1SYXRlOihmbG9hdClyYXRlCiAgICAgcmV0dXJuIHJhdGU7CiB9CiAK
LS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0dGVyYW5jZQorLSAodm9pZClzcGVha1V0dGVyYW5jZToo
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKXV0dGVy
YW5jZQogewogICAgIC8vIFdoZW4gc3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBh
biBleGlzdGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91
dHRlcmFuY2UpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIC0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBh
c3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0CiAg
ICAgW2F2VXR0ZXJhbmNlIHNldFZvbHVtZTp1dHRlcmFuY2UtPnZvbHVtZSgpXTsKICAgICBbYXZV
dHRlcmFuY2Ugc2V0UGl0Y2hNdWx0aXBsaWVyOnV0dGVyYW5jZS0+cGl0Y2goKV07CiAgICAgW2F2
VXR0ZXJhbmNlIHNldFZvaWNlOmF2Vm9pY2VdOwotICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNl
OworICAgIG1fdXR0ZXJhbmNlID0gV1RGTW92ZSh1dHRlcmFuY2UpOwogCiAgICAgW21fc3ludGhl
c2l6ZXIgc3BlYWtVdHRlcmFuY2U6YXZVdHRlcmFuY2VdOwogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDQz
MTVjY2M1N2E1ZDE1ZmNkYjU2NTljNzFmMWJmZDlmZGUyODIxM2MuLmVkMzBhYjAzMjcwMWNkZTNk
MmE2ZGM2OTE3ODJmNzMyZTE1ZWJhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dp
ZGdldE1hYy5tbQpAQCAtODksNyArODksNyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBm
b2N1c2VkKQogICAgIGlmICghZm9jdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUq
IGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRoaXMpOworICAgIEZyYW1lKiBmcmFtZSA9
IEZyYW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rldmlj
ZU1vdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZp
Y2VNb3Rpb25DbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIy
YWQ0Mzk3YTA0YzA1NTYxYzdjMWQ2MDY3YWRlYzUxNTlmMjM1NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25D
bGllbnRNb2NrLmgiCi0KLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6RGV2aWNlTW90aW9u
Q2xpZW50TW9jaygpCi0gICAgOiBtX2NvbnRyb2xsZXIoMCkKLSAgICAsIG1fdGltZXIoKnRoaXMs
ICZEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQotICAgICwgbV9pc1VwZGF0aW5n
KGZhbHNlKQotewotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xs
ZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAgICBBU1NFUlQoIW1f
Y29udHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBBU1NFUlQo
bV9jb250cm9sbGVyKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzdGFydFVw
ZGF0aW5nKCkKLXsKLSAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOwotfQotCi12b2lkIERldmljZU1v
dGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gZmFs
c2U7Ci0gICAgbV90aW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9j
azo6c2V0TW90aW9uKFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gbW90aW9uKQotewotICAg
IG1fbW90aW9uID0gbW90aW9uOwotICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNB
Y3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgRGV2
aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7
Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZpY2VNb3Rpb24obV9tb3Rpb24uZ2V0KCkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3YzYyNjgyOGVhNGYzOTQxZGU1YmNlMDE1MzU4OGQxYjA0Y2FlOTk4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50TW9j
a19oCi0jZGVmaW5lIERldmljZU1vdGlvbkNsaWVudE1vY2tfaAotCi0jaW5jbHVkZSAiRGV2aWNl
TW90aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEZXZpY2VNb3Rpb25Db250
cm9sbGVyOwotCi0vLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlTW90aW9uQ2xpZW50
IHVzZWQgdG8gdGVzdCB0aGUgZmVhdHVyZSBpbgotLy8gRHVtcFJlbmRlclRyZWUuIEVtYmVkZGVy
cyBzaG91bGQgc2hvdWxkIGNvbmZpZ3VyZSB0aGUgUGFnZSBvYmplY3QgdG8gdXNlIHRoaXMKLS8v
IGNsaWVudCB3aGVuIHJ1bm5pbmcgRHVtcFJlbmRlclRyZWUuCi1jbGFzcyBEZXZpY2VNb3Rpb25D
bGllbnRNb2NrIDogcHVibGljIERldmljZU1vdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgRGV2
aWNlTW90aW9uQ2xpZW50TW9jaygpOwotCi0gICAgLy8gRGV2aWNlTW90aW9uQ2xpZW50Ci0gICAg
dm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygp
IG92ZXJyaWRlOwotICAgIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX21vdGlvbi5nZXQoKTsgfQotICAgIC8vIG1vY2sgaXMgb3duZWQgYnkg
dGhlIHRlc3RpbmcgZnJhbWV3b3JrLCB3aGljaCBzaG91bGQgaGFuZGxlIGRlbGV0aW9uCi0gICAg
dm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9Ci0KLSAg
ICB2b2lkIHNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+KTsKLQotcHJpdmF0
ZToKLSAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLQotICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRh
PiBtX21vdGlvbjsKLSAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0g
ICAgVGltZXIgbV90aW1lcjsKLSAgICBib29sIG1faXNVcGRhdGluZzsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERldmljZU1vdGlvbkNsaWVudE1vY2tfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAppbmRleCAzODgxMWZjMTA4MTg4
Y2ZlMjZlMTgwZjAwZjlmNTBmZDYxNWRiN2QzLi43YTk5MzEzNmJhMmMzYTA1ZDJkMzE5NmE1NTY3
NzE4YTAwZGFmODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vy
c29yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNw
cApAQCAtNDAsMTAgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFz
c1JlZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFy
ZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEN1cnNvcj4gaW1wbDsKLQogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3Qg
PSBkZXRlcm1pbmVIb3RTcG90KGltZywgaG90U3BvdCk7CiAgICAgc3RhdGljIGJvb2wgZG9BbHBo
YSA9IHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93c1hQOwogICAgIEJpdG1hcEluZm8gY3Vyc29y
SW1hZ2UgPSBCaXRtYXBJbmZvOjpjcmVhdGUoSW50U2l6ZShpbWctPndpZHRoKCksIGltZy0+aGVp
Z2h0KCkpKTsKQEAgLTUyLDggKzUwLDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29y
PiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGgKICAgICBh
dXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7
CiAgICAgaWYgKGRvQWxwaGEpIHsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmpl
Y3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBu
dWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAg
ICAgICAgIEhCSVRNQVAgaE9sZEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9iamVjdCh3b3JraW5n
REMuZ2V0KCksIGhDdXJzb3IuZ2V0KCkpOwpAQCAtNzEsMTUgKzY3LDEzIEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0
IEludFBvaW50JiBoCiAgICAgICAgIGlpLmhibU1hc2sgPSBoTWFzay5nZXQoKTsKICAgICAgICAg
aWkuaGJtQ29sb3IgPSBoQ3Vyc29yLmdldCgpOwogCi0gICAgICAgIGltcGwgPSBTaGFyZWRDdXJz
b3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKKyAgICAgICAgcmV0dXJuIFNo
YXJlZEN1cnNvcjo6Y3JlYXRlKDo6Q3JlYXRlSWNvbkluZGlyZWN0KCZpaSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYSBibGVuZGVkIGN1
cnNvcnMsIHNvIHdlIG5lZWQKICAgICAgICAgLy8gdG8gY3JlYXRlIHRoZSBtYXNrIG1hbnVhbGx5
CiAgICAgICAgIGF1dG8gYW5kTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRp
YmxlREMoZGMpKTsKICAgICAgICAgYXV0byB4b3JNYXNrREMgPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZUNvbXBhdGlibGVEQyhkYykpOwogICAgICAgICBhdXRvIGhDdXJzb3IgPSBhZG9wdEdESU9i
amVjdCg6OkNyZWF0ZURJQlNlY3Rpb24oZGMsICZjdXJzb3JJbWFnZSwgRElCX1JHQl9DT0xPUlMs
IG51bGxwdHIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFoQ3Vyc29yKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgaW1nLT5nZXRIQklUTUFQKGhDdXJzb3IuZ2V0KCkpOyAK
ICAgICAgICAgQklUTUFQIGN1cnNvcjsKQEAgLTEwOCwxOCArMTAyLDE2IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0
IEludFBvaW50JiBoCiAgICAgICAgIGljb24ueUhvdHNwb3QgPSBlZmZlY3RpdmVIb3RTcG90Lnko
KTsKICAgICAgICAgaWNvbi5oYm1NYXNrID0gYW5kTWFzay5nZXQoKTsKICAgICAgICAgaWNvbi5o
Ym1Db2xvciA9IHhvck1hc2suZ2V0KCk7Ci0gICAgICAgIGltcGwgPSBTaGFyZWRDdXJzb3I6OmNy
ZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEN1
cnNvcjo6Y3JlYXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOwogICAgIH0KLQotICAgIHJl
dHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29y
PiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBoSW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JO
YW1lKQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGxvYWRTaGFyZWRDdXJzb3IoSElOU1RBTkNF
IGhJbnN0YW5jZSwgTFBDV1NUUiBscEN1cnNvck5hbWUpCiB7CiAgICAgcmV0dXJuIFNoYXJlZEN1
cnNvcjo6Y3JlYXRlKDo6TG9hZEN1cnNvclcoaEluc3RhbmNlLCBscEN1cnNvck5hbWUpKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29yQnlOYW1lKGNoYXIq
IG5hbWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29y
QnlOYW1lKGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKIHsKICAgICBJbnRQb2ludCBob3RTcG90
KHgsIHkpOwogICAgIFJlZlB0cjxJbWFnZT4gY3Vyc29ySW1hZ2UoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDAwMDg3ZDIzZjYyNjg2NWY5NzZhNzYyODYxZjY3NDM5
YTBjY2JiZDMuLmY1OWYxNWY2YjRlMDcxZjAzOTk5NzAzMzNlMWRiZDkxZjhjMWM0MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApA
QCAtMzY0LDcgKzM2NCw3IEBAIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1
dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0CiAKIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29u
c3RfY2FzdDxGaWx0ZXJFZmZlY3QmPihtX2VmZmVjdHMubGFzdCgpLmdldCgpKS5hc0ltYWdlQnVm
ZmVyKCk7CisgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCktPmFzSW1hZ2VCdWZmZXIoKTsKIH0K
IAogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxv
YXRSZWN0JiBlZmZlY3RSZWN0KQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0
UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkK
IAogSW50UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiB7Ci0g
ICAgYXV0byYgbGFzdEVmZmVjdCA9IGNvbnN0X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3Rz
Lmxhc3QoKS5nZXQoKSk7CisgICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCku
Z2V0KCk7CiAgICAgaWYgKCFsYXN0RWZmZWN0Lmhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURh
dGEoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMDUxZDQ0YmY1NjY5NjdjYWFkYWY5NzQyMDI5ODJjYjkxOGJm
ZTg1MS4uYWNlZWQ3ZDU5MGRlMjVjYzQzOTk4Nzg0ODNiODk4NzdhZjI5NTY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTQzLDE3ICszMTQzLDE4IEBA
IHN0YXRpYyBpbmxpbmUgUmVuZGVyRWxlbWVudCogcmVuZGVyZXJGb3JTY3JvbGxiYXIoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyCiBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJl
ZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKLSAgICBSZW5kZXJFbGVtZW50KiBhY3R1YWxSZW5kZXJl
ciA9IHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwotICAgIGJvb2wgaGFzQ3VzdG9t
U2Nyb2xsYmFyU3R5bGUgPSBhY3R1YWxSZW5kZXJlci0+aXNCb3goKSAmJiBhY3R1YWxSZW5kZXJl
ci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIEFTU0VSVChyZW5kZXJl
ckZvclNjcm9sbGJhcihyZW5kZXJlcigpKSk7CisgICAgYXV0byYgYWN0dWFsUmVuZGVyZXIgPSAq
cmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7CisgICAgYm9vbCBoYXNDdXN0b21TY3Jv
bGxiYXJTdHlsZSA9IGlzPFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpICYmIGRvd25jYXN0PFJl
bmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFS
KTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCi0gICAgICAgIHdpZGdldCA9IFJl
bmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwg
YWN0dWFsUmVuZGVyZXItPmVsZW1lbnQoKSk7CisgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9s
bGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgZG93bmNhc3Q8
UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuZWxlbWVudCgpKTsKICAgICBlbHNlIHsKICAgICAg
ICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVu
dGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdl
dC5nZXQoKSwgb3JpZW50YXRpb24pOwogICAgICAgICBpZiAocGFnZSgpLmV4cGVjdHNXaGVlbEV2
ZW50VHJpZ2dlcnMoKSkKICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKHBhZ2UoKS50ZXN0VHJpZ2dlcigpKTsKICAgICB9Ci0gICAgcmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICByZW5kZXJl
cigpLnZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAgICByZXR1cm4gd2lk
Z2V0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAppbmRleCAyMmVlOTgxMTA3N2ZmZDgwOGJmYmExMzk0MDliNmM5NjBmNjM0
ZmFmLi5jZGY4MDYwYmNiNWVkOGE4ZjRmOTM3YTdlNDk3ZTE0NjdkNmViYjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MDIsNyArOTAyLDcgQEAg
UmVmPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKICAgICAgICAg
aWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIo
KSk7CiAgICAgfQotICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCh3aWRnZXQuZ2V0KCkp
OworICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAgICByZXR1cm4g
d2lkZ2V0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAKaW5kZXggMzczOTVlNDM2NjY3YTIxNWFhYjZlNzYzMDU4ZDQ3Y2I4MjZk
NzQwZC4uNjIzYTZjNzk0Yjk2MTBlMzJhOWIzNmNiNTY5ODdjMmYwNjVjNDI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTUyLDI5ICs1MiwyNyBAQCBX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlcwogCiB2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRzKCkKIHsKLSAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXA7
Ci0gICAgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc3dhcChtYXApOwotICAgIFdpZGdldFRvUGFyZW50
TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgZm9yIChXaWRnZXRUb1BhcmVudE1h
cDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFdpZGdldCogY2hpbGQgPSBpdC0+a2V5LmdldCgpOwotICAgICAgICBTY3JvbGxWaWV3KiBjdXJy
ZW50UGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOwotICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVu
dCA9IGl0LT52YWx1ZTsKKyAgICBhdXRvIG1hcCA9IFdURk1vdmUod2lkZ2V0TmV3UGFyZW50TWFw
KCkpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApIHsKKyAgICAgICAgYXV0byYgY2hpbGQg
PSAqZW50cnkua2V5OworICAgICAgICBhdXRvKiBjdXJyZW50UGFyZW50ID0gY2hpbGQucGFyZW50
KCk7CisgICAgICAgIGF1dG8qIG5ld1BhcmVudCA9IGVudHJ5LnZhbHVlOwogICAgICAgICBpZiAo
bmV3UGFyZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50UGFy
ZW50KQotICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKCpjaGlsZCk7
CisgICAgICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAg
ICAgICAgICAgaWYgKG5ld1BhcmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENo
aWxkKGNoaWxkKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbW92ZVdpZGdl
dFRvUGFyZW50U29vbihXaWRnZXQqIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKK3N0YXRpYyB2
b2lkIG1vdmVXaWRnZXRUb1BhcmVudFNvb24oV2lkZ2V0JiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJl
bnQpCiB7CiAgICAgaWYgKCFXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpp
c1N1c3BlbmRlZCgpKSB7CiAgICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQt
PmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGQtPnJlbW92
ZUZyb21QYXJlbnQoKTsKKyAgICAgICAgICAgIGNoaWxkLnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lv
blNjb3BlOjpzY2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKQEAgLTE2Nyw3ICsx
NjUsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lk
Z2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93aWRnZXQpIHsKLSAgICAgICAgbW92
ZVdpZGdldFRvUGFyZW50U29vbihtX3dpZGdldC5nZXQoKSwgMCk7CisgICAgICAgIG1vdmVXaWRn
ZXRUb1BhcmVudFNvb24oKm1fd2lkZ2V0LCBudWxscHRyKTsKICAgICAgICAgdmlldygpLmZyYW1l
VmlldygpLndpbGxSZW1vdmVXaWRnZXRGcm9tUmVuZGVyVHJlZSgqbV93aWRnZXQpOwogICAgICAg
ICB3aWRnZXRSZW5kZXJlck1hcCgpLnJlbW92ZShtX3dpZGdldC5nZXQoKSk7CiAgICAgICAgIG1f
d2lkZ2V0ID0gbnVsbHB0cjsKQEAgLTE5Myw3ICsxOTEsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6
c2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICAgICAgICAgIHJlcGFp
bnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJl
bnRTb29uKG1fd2lkZ2V0LmdldCgpLCAmdmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgbW92
ZVdpZGdldFRvUGFyZW50U29vbigqbV93aWRnZXQsICZ2aWV3KCkuZnJhbWVWaWV3KCkpOwogICAg
IH0KIH0KIApAQCAtMzM4LDkgKzMzNiw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRTZWxlY3Rp
b25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAgbV93aWRnZXQtPnNldElzU2Vs
ZWN0ZWQoaXNTZWxlY3RlZCgpKTsKIH0KIAotUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZp
bmQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCitSZW5kZXJXaWRnZXQqIFJlbmRlcldpZGdldDo6Zmlu
ZChjb25zdCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAo
KS5nZXQod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQoJndpZGdl
dCk7CiB9CiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmgKaW5kZXggNmUwMTFkNzM5ZTUzYzZkYTliMTFhN2RhODZkOGVkY2VjM2U0NDk3Yi4u
YzZhOWJjNWY5MzVjMzM5NDgwODcyYTExZjM2MDc5ODBlYjRiYTNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaApAQCAtNDQsMTQgKzQ0LDEzIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1c3BlbmRlZCgpIHsgcmV0dXJuIHNfd2lkZ2V0SGll
cmFyY2h5VXBkYXRlU3VzcGVuZENvdW50OyB9Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRn
ZXRUb01vdmUoV2lkZ2V0KiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFy
ZW50TWFwKCkuc2V0KHdpZGdldCwgZnJhbWUpOyB9CisgICAgc3RhdGljIHZvaWQgc2NoZWR1bGVX
aWRnZXRUb01vdmUoV2lkZ2V0JiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3
UGFyZW50TWFwKCkuc2V0KCZ3aWRnZXQsIGZyYW1lKTsgfQogCiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7
CisgICAgdXNpbmcgV2lkZ2V0VG9QYXJlbnRNYXAgPSBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBG
cmFtZVZpZXcqPjsKICAgICBzdGF0aWMgV2lkZ2V0VG9QYXJlbnRNYXAmIHdpZGdldE5ld1BhcmVu
dE1hcCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3Vz
cGVuZENvdW50OwogfTsKICAgICAKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFdpZGdl
dCogd2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV93aWRnZXQuZ2V0KCk7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmKTsKIAotICAgIHN0YXRpYyBS
ZW5kZXJXaWRnZXQqIGZpbmQoY29uc3QgV2lkZ2V0Kik7CisgICAgc3RhdGljIFJlbmRlcldpZGdl
dCogZmluZChjb25zdCBXaWRnZXQmKTsKIAogICAgIGVudW0gY2xhc3MgQ2hpbGRXaWRnZXRTdGF0
ZSB7IFZhbGlkLCBEZXN0cm95ZWQgfTsKICAgICBDaGlsZFdpZGdldFN0YXRlIHVwZGF0ZVdpZGdl
dFBvc2l0aW9uKCkgV0FSTl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAppbmRleCBjYTQ2YzJlYmNkMDJmZGUzNGU1ZTZj
MGJmMGJkOGI3MmEwNGEyZTA0Li42MTYyYWNiYjkzZjczZWI1Zjk5NTczYmQxNWRjMWM2MzNkMTEz
MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxl
LmNwcApAQCAtNDksMTQgKzQ5LDExIEBAIFJlZjxNYXRoTUxTdHlsZT4gTWF0aE1MU3R5bGU6OmNy
ZWF0ZSgpCiAKIGNvbnN0IE1hdGhNTFN0eWxlKiBNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJl
bmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/Ci0gICAgICAgIGlmIChp
czxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0gICAgICAg
IGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0g
ICAgfQotCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRl
cml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/Cisg
ICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiAm
ZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpyZW5kZXJlcikubWF0aE1MU3R5bGUoKTsKKyAg
ICBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuICZk
b3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oKnJlbmRlcmVyKS5tYXRoTUxTdHlsZSgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC02NSw5ICs2Miw5IEBAIHZvaWQgTWF0aE1MU3R5bGU6
OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gcmVuZGVyZXI7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5QcmVP
cmRlcihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRl
ck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNp
bXBsaWZ5IHRoaXM/CiAgICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4oY2hpbGQpKQot
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KGNoaWxkKS0+bWF0aE1MU3R5
bGUoKS0+cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJl
bmRlck1hdGhNTFRhYmxlPigqY2hpbGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2ZU1hdGhNTFN0eWxl
KGNoaWxkKTsKICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KGNoaWxkKSkK
LSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihjaGlsZCktPm1hdGhNTFN0
eWxlKCktPnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CisgICAgICAgICAgICBkb3duY2FzdDxS
ZW5kZXJNYXRoTUxCbG9jaz4oKmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29sdmVNYXRoTUxTdHls
ZShjaGlsZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYmIxNDJhMjU0MjBhM2E2YmNlMTRjMTU0
YmRlOTMyMzM2MzQzNGUxMi4uNjFhMTJjYTQ4N2YzYTViYmM1NTRkZWUwYzgzYWY2NDVhNjIxZGU2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MQmxv
Y2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNYXRoTUxC
bG9jaygpOwogCi0gICAgTWF0aE1MU3R5bGUqIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxNYXRoTUxTdHlsZSo+KCZtX21hdGhNTFN0eWxlLmdldCgpKTsgfQorICAgIE1h
dGhNTFN0eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE1MU3R5bGU7IH0K
IAogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIAotICAgIE1hdGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8TWF0aE1MU3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0KKyAgICBN
YXRoTUxTdHlsZSYgbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21hdGhNTFN0eWxlOyB9
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCAzNWU0NDE0NWY3Zjg2MmMwOGJk
MDRlMjE3ZWQ1ZmQwZGU2MzBjMTA4Li5hMjBiZDEyMmQ4OGNlMGYwOGQ3NDU3N2VlNzk4NWEwM2E1
OTg5MDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6RnJhY3Rpb25QYXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmcmFjdGlv
blBhcmFtZXRlcgogICAgIC8vIFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMgdG8gZHJhdyB0aGUg
ZnJhY3Rpb24gZnJvbSB0aGUgT3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxiYWNrIHZhbHVlcyBv
dGhlcndpc2UuCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNj
YWRlKCkucHJpbWFyeUZvbnQoKTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAgYm9vbCBkaXNwbGF5
ID0gbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBkaXNwbGF5ID0gbWF0
aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEpIHsKICAgICAgICAg
cGFyYW1ldGVycy5udW1lcmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHBy
aW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25OdW1EaXNwbGF5
U3R5bGVHYXBNaW4gOiBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51bWVyYXRvckdhcE1pbik7
CiAgICAgICAgIHBhcmFtZXRlcnMuZGVub21pbmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0
aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rp
b25EZW5vbURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uRGVu
b21pbmF0b3JHYXBNaW4pOwpAQCAtMTE2LDcgKzExNiw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9u
OjpTdGFja1BhcmFtZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycygp
CiAgICAgLy8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0YW50cyB0byBkcmF3IHRoZSBzdGFjayBmcm9t
IHRoZSBPcGVuVHlwZSBNQVRIIGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAg
ICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5
Rm9udCgpOwogICAgIGNvbnN0IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LnByaW1hcnlGb250KCkubWF0aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHls
ZSgpLT5kaXNwbGF5U3R5bGUoKTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRp
c3BsYXlTdHlsZSgpOwogICAgIGlmIChtYXRoRGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLmdh
cE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBP
cGVuVHlwZU1hdGhEYXRhOjpTdGFja0Rpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERh
dGE6OlN0YWNrR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy50b3BTaGlmdFVwID0gbWF0aERh
dGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERh
dGE6OlN0YWNrVG9wRGlzcGxheVN0eWxlU2hpZnRVcCA6IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNr
VG9wU2hpZnRVcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZTIxMmU5YmY3MzRhZDI1NWYwNmU2OTBlYzI1
ZTE3ODVhOTI5OWUwNS4uMDJmZDQ0ZTU1NDRlOWY3MjIxMjY3M2U5MTZkZDY1YjgxNDNiYTE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFN0
cmV0Y2hTaXplKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6RmxhZykgY29uc3Q7Ci0gICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJ
bkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6TGFyZ2VPcCkgJiYgbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7
IH0KLSAgICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVybiBoYXNPcGVyYXRv
ckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRzKSAmJiAhbWF0aE1M
U3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7IH0KKyAgICBib29sIGlzTGFyZ2VPcGVyYXRvckluRGlz
cGxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OlN0cmV0Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpMYXJnZU9wKSAmJiBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOyB9Cisg
ICAgYm9vbCBzaG91bGRNb3ZlTGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFzT3BlcmF0b3JGbGFn
KE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYgIW1hdGhNTFN0eWxl
KCkuZGlzcGxheVN0eWxlKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbCgpIGNvbnN0
OwogICAgIExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
aE9wZXJhdG9yLml0YWxpY0NvcnJlY3Rpb24oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCAxYTY2ZWM4N2U2
ZDkzNDNiZjVjYTU1OWI5NzgwYTkwMmY3ZjE0ZTIyLi4zZDc1N2E3YTg1NmFjYjYxZjBlNmY4MjNk
OTZhOTk4OTUyOTVhNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJNYXRo
TUxSb290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJh
bWV0ZXJzKCkKICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGlmIChhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9u
dENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCkpIHsKICAgICAgICAgcGFyYW1ldGVy
cy5ydWxlVGhpY2tuZXNzID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwg
T3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFJ1bGVUaGlja25lc3MpOwotICAgICAgICBwYXJhbWV0
ZXJzLnZlcnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwg
bWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCkgPyBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2Fs
RGlzcGxheVN0eWxlVmVydGljYWxHYXAgOiBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsVmVydGlj
YWxHYXApOworICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1h
dGhDb25zdGFudChwcmltYXJ5Rm9udCwgbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSA/IE9w
ZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5UeXBl
TWF0aERhdGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CiAgICAgICAgIHBhcmFtZXRlcnMuZXh0cmFB
c2NlbmRlciA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBl
TWF0aERhdGE6OlJhZGljYWxFeHRyYUFzY2VuZGVyKTsKICAgICAgICAgaWYgKG1fa2luZCA9PSBS
b290V2l0aEluZGV4KQogICAgICAgICAgICAgcGFyYW1ldGVycy5kZWdyZWVCb3R0b21SYWlzZVBl
cmNlbnQgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1h
dGhEYXRhOjpSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50KTsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBSZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9v
dDo6dmVydGljYWxQYXJhbWV0ZXJzKCkKICAgICAgICAgLy8gUmFkaWNhbEV4dHJhQXNjZW5kZXI6
IFN1Z2dlc3RlZCB2YWx1ZSBpcyBSYWRpY2FsUnVsZVRoaWNrbmVzcy4KICAgICAgICAgLy8gUmFk
aWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudDogU3VnZ2VzdGVkIHZhbHVlIGlzIDYwJS4KICAg
ICAgICAgcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzc0ZhbGxiYWNrKCk7
Ci0gICAgICAgIGlmIChtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSkKKyAgICAgICAgaWYg
KG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnZl
cnRpY2FsR2FwID0gcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzICsgc3R5bGUoKS5mb250TWV0cmlj
cygpLnhIZWlnaHQoKSAvIDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMu
dmVydGljYWxHYXAgPSA1ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAK
aW5kZXggNTU1YmQ2OGQ2NTFiNWY4YWYwNTFmMDE1ZDNlYWZjNzdlMDY4ZjM5MS4uYTVjNGMxYzBk
MGM1ZDlhZTYwZmUxMTIwODRmNjg0YTY3MTlhZjg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUyOCw3ICs1
MjgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkK
IAogICAgIGNvbnN0IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKICAgICBpZiAoYXV0
byBjb2RlUG9pbnQgPSBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2lu
dChlbGVtZW50KCkudGV4dENvbnRlbnQoKSkpIHsKLSAgICAgICAgTWF0aE1MRWxlbWVudDo6TWF0
aFZhcmlhbnQgbWF0aHZhcmlhbnQgPSBtYXRoTUxTdHlsZSgpLT5tYXRoVmFyaWFudCgpOworICAg
ICAgICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0eWxl
KCkubWF0aFZhcmlhbnQoKTsKICAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50OjpOb25lKQogICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVs
ZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0
aFZhcmlhbnQ6Okl0YWxpYyA6IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAg
ICAgICAgIFVDaGFyMzIgdHJhbnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9p
bnQudmFsdWUoKSwgbWF0aHZhcmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9E
YXRhUmVmLmgKaW5kZXggM2Y5M2E1N2VmNTgyNjFkZmFhMmNlZmRmNmRhOWIyYTliMzlmMjM5Yy4u
NzNiZmMyODZlNzE3OTUwMjM2ZWUyYWM1OTU0NWVhOWU4NjEzN2E3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0zMCw4ICszMCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRGF0YVJlZiB7CiBwdWJsaWM6
CiAgICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
LSAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShjb25zdF9jYXN0PFQm
PihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KLSAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3Qg
RGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdl
dCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikg
OiBtX2RhdGEob3RoZXIubV9kYXRhLmNvcHlSZWYoKSkgeyB9CisgICAgRGF0YVJlZihEYXRhUmVm
JiYpID0gZGVmYXVsdDsKKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3QgRGF0YVJlZiYgb3Ro
ZXIpIHsgbV9kYXRhID0gb3RoZXIubV9kYXRhLmNvcHlSZWYoKTsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgRGF0YVJlZiYgb3BlcmF0b3I9KERhdGFSZWYmJikgPSBkZWZhdWx0OwogCiAgICAgY29uc3Qg
VCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnB0cigpOyB9CiAKQEAgLTQ1LDE0ICs0Nywx
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZGF0YS5wdHIoKSA9PSBvLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gby5t
X2RhdGEuZ2V0KCk7CisgICAgICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgd2h5IHdlIHNob3VsZCBk
byB0aGUgcG9pbnRlciBjb21wYXJpc29uIGhlcmU7IG9wZXJhdG9yPT0gb2YgdGhlIHVuZGVybHlp
bmcgY2xhc3Mgc2hvdWxkIGRvIGl0LgorICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG90
aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOwog
ICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgbykgY29u
c3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpICE9IG8ubV9kYXRhLnB0cigpICYmIG1f
ZGF0YS5nZXQoKSAhPSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggNzY1MjM4MDVhMjVjOTQyNmFmZTAzYzMzOTFj
MGU3ODk5OGE1MWQyNi4uOTcyOThhYjQ0NzlhN2VhMjdkZTlmYmUzODJlMmI3NDcwYjZmNDAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAK
QEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRpbWluZ0Z1bmN0aW9u
KiBLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0CiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgp
OworICAgIGF1dG8qIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgpOwogICAgIGlmICgha2V5ZnJhbWVT
dHlsZSB8fCAha2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVTdHlsZS0+YW5pbWF0
aW9ucygpLT5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlv
biA9IGtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwogICAgICAgICBp
ZiAobmFtZSA9PSBhbmltYXRpb24ubmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlv
bi50aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi50
aW1pbmdGdW5jdGlvbigpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNDQsNyAr
NDQsNiBAQCBUaW1pbmdGdW5jdGlvbiogS2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogCiBLZXlmcmFtZUxpc3Q6On5LZXlmcmFtZUxp
c3QoKQogewotICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVMaXN0OjpjbGVhcigpCkBA
IC01OCwxNSArNTcsMTIgQEAgYm9vbCBLZXlmcmFtZUxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgS2V5
ZnJhbWVMaXN0JiBvKSBjb25zdAogICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgIT0gby5tX2tl
eWZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxLZXlm
cmFtZVZhbHVlPjo6Y29uc3RfaXRlcmF0b3IgaXQyID0gby5tX2tleWZyYW1lcy5iZWdpbigpOwot
ICAgIGZvciAoVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDEgPSBtX2tl
eWZyYW1lcy5iZWdpbigpOyBpdDEgIT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxKSB7CisgICAg
YXV0byBpdDIgPSBvLm1fa2V5ZnJhbWVzLmJlZ2luKCk7CisgICAgZm9yIChhdXRvIGl0MSA9IG1f
a2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5lbmQoKTsgKytpdDEsICsraXQy
KSB7CiAgICAgICAgIGlmIChpdDEtPmtleSgpICE9IGl0Mi0+a2V5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTEgPSAqaXQxLT5z
dHlsZSgpOwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUyID0gKml0Mi0+c3R5bGUo
KTsKLSAgICAgICAgaWYgKHN0eWxlMSAhPSBzdHlsZTIpCisgICAgICAgIGlmICgqaXQxLT5zdHls
ZSgpICE9ICppdDItPnN0eWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICsraXQyOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4M2YyMjQ5ZTQ5
MGVjOTA2YTMzYjhlOC4uYjc0OWEyNmMwY2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5NTc4ZjdjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1ZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNoYXBlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXBl
VmFsdWU+IGNyZWF0ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NC
b3gpCisgICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYg
c2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcGVWYWx1ZShXVEZNb3ZlKHNoYXBlKSwgY3NzQm94KSk7CiAgICAgfQpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFs
dWUoYm94U2hhcGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0
ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+
IGNyZWF0ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoV1RGTW92ZShpbWFnZSkpKTsKICAgICB9CkBAIC03Miwx
NCArNzIsMTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaGFwZVZhbHVlKFJl
ZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBTaGFwZVZh
bHVlKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICAgICAg
OiBtX3R5cGUoVHlwZTo6U2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEZNb3ZlKHNoYXBlKSkK
ICAgICAgICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0
IFNoYXBlVmFsdWUoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhwbGljaXQgU2hh
cGVWYWx1ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6
SW1hZ2UpCiAgICAgICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5k
ZXggZjcwNjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3MmEyMTEzZjczNWFkYy4uNjkyMzk1YjFlMzUw
ZjFjYTBkM2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBD
YWNoZWRJbWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6Y2FjaGVkSW1hZ2UoKSBjb25zdAogCiBSZWY8
Q1NTVmFsdWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29uc3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBt
X2Nzc1ZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5k
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAKaW5kZXggMmM4NGIyZjU2N2YwN2ExOTU4YzcwZTY2YjZmM2Y0ZmM3ZDY4ZmUy
Mi4uYjAwNjM3ODE0ZWEzYjRiNzE2MDE3OTAzZGZjZGRmZTI0YmEzMGJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtMzksNyArMzksNyBAQCBTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZElt
YWdlKFJlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogCiBSZWY8Q1NTVmFsdWU+
IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29u
c3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdl
dCgpKTsKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLmNvcHlSZWYoKTsKIH0KIAog
Ym9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtNTYsNyArNTYs
NyBAQCBGbG9hdFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAg
ICAgaWYgKG1fZml4ZWRTaXplKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBjb25z
dF9jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0
KCkpLmZpeGVkU2l6ZSgqcmVuZGVyZXIpOworICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0g
bV9pbWFnZUdlbmVyYXRvclZhbHVlLT5maXhlZFNpemUoKnJlbmRlcmVyKTsKICAgICAgICAgaWYg
KG11bHRpcGxpZXIgPT0gMS4wZikKICAgICAgICAgICAgIHJldHVybiBmaXhlZFNpemU7CiAKQEAg
LTEwMSw3ICsxMDEsNyBAQCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIFJlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFn
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkg
Y29uc3QKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgIHJldHVybiBjb25zdF9jYXN0PENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmltYWdl
KCpyZW5kZXJlciwgc2l6ZSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1h
Z2UoKnJlbmRlcmVyLCBzaXplKTsKIH0KIAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCmluZGV4IGZlMjhmZDRlYTVlNTA3ZWI4NmI4M2U3MWFkNjgwOWYzMDY2OTM4NzQuLjRl
OWIyZTI3MmQyZDM5ZGFhODBkYTBjY2E0M2RkMmZhMDk4OWMxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CkBAIC0xODQ5LDcgKzE4NDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6
OmZyYW1lRm9yV2lkZ2V0KHRoaXMpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBGcmFtZTo6ZnJh
bWVGb3JXaWRnZXQoKnRoaXMpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwYzVm
ZGEwMWYwOGE5MDVkMTZjOTNjNGI3MzgyYjY0MmQ4MmVmNWFhLi5jOTExNTUyMGYyYzg5NTIzOWU0
MTQyY2E4NjdhN2Y2ZDRmNjA2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0zNDcwLDggKzM0NzAsOCBAQCAtICh2b2lkKV9hZGRTY3JvbGxlckRhc2hib2FyZFJlZ2lv
bnNGb3JGcmFtZVZpZXc6KEZyYW1lVmlldyopZnJhbWVWaWV3IGRhc2hib2FyZAogICAgIE5TVmll
dyAqZG9jdW1lbnRWaWV3ID0gW1traXQoJmZyYW1lVmlldy0+ZnJhbWUoKSkgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiB3aWRnZXQ6IGZyYW1lVmlldy0+
Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgewotICAg
ICAgICAgICAgW3NlbGYgX2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzpk
b3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25z
XTsKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0KSkgeworICAgICAgICAgICAgW3Nl
bGYgX2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzomZG93bmNhc3Q8RnJh
bWVWaWV3Pih3aWRnZXQuZ2V0KCkpIGRhc2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXgg
YmFlOTZiNmEyY2RkZjliYjJjODA5MTFmNzZhNmY0NDhhY2RkZjI0Yi4uODUwOWFlNjUwMjRkNGVl
NTkyZWQxMjVhMTIxMjE0MGYwN2ZjZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAt
NjY2LDcgKzY2Niw3IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFy
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgICAgICAgICAgICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkp
OwogICAgICAgICB9CiAgICAgfQotICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5h
ZGRDaGlsZCh3aWRnZXQucHRyKCkpOworICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygp
LT5hZGRDaGlsZCh3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298301</attachid>
            <date>2017-01-08 02:55:58 -0800</date>
            <delta_ts>2017-01-09 02:39:23 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews100 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>312306</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
d3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUCQADhBFyWIQRclh1eAsAAQT1AQAABBQAAAB1
bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAAEhIoSvsZl4s3AAAANwAAABgAHABfd3B0X2Nl
cnRzL2luZGV4LnR4dC5vbGRVVAkAA4QRcliEEXJYdXgLAAEE9QEAAAQUAAAAVgkxNzAyMDcxMDE2
MzZaCQkwNUYxODQJdW5rbm93bgkvQ049d2ViLXBsYXRmb3JtLXRlc3RzClBLAwQUAAIACAASEihK
YOn/JwwFAACPBgAAGAAcAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUCQADhBFyWIURclh1eAsA
AQT1AQAABBQAAABtlTfPo2oUhHt+xfZoBTa52OIlYzImuiPnZDK/fr+79Z32SKNHo6OZ379/xAqS
Yvxy3uCX5Sg+cIVfqhD9d/gN6YoiTEBhAVA5YAtgkSykkrCHG58E7G5konELX31fCZsXmt547dM+
yw+OTzHvzJX8hiJlaD1Btj5riBhhY6zUyUbEMksGSEk0mYTrECm5i02FgYv4wiT/FJ74njcdGNrT
cSAruIqpISzilpedhkUad3wf7mW1Kzwr2M7m+8QSnRZbjqgFWOaaR2T0C7M3HSFIBFND5Tp102oW
oVDRvKjt8aAhjk/MDWILegT2sD65DSvKTyoomRK/HIEIEbO42Nxn7FluoLtuBROBk8PDivGpvsEe
+Cv6uSz5xqkX/ZL1ksKkfAieXr5HvD6Zm7/wOgcsqkGxAoaK2YE//It27a2Sm1ksiZ1/u++cyX36
lcyWNOnZcig8sAELxp+wecKtbteEY+ZMUWuGRngXsTAgPw9ziJwxhaUSaI3Cz/fnZlM1NHErEQOC
jEbTXJEcow1u8R+ztXEpHJS9B8W0G+biWUQ6yRQeDJ46BsyYXfHvneYkY32jVtuSfldNtfGlzjRi
qdCYi4jHCF4Vrfkx4CetLQZzXkCtPuQTvZRssjcpK7ZzfaMuqNaTSI0EkcC5qssCnzXb9cbsi+jg
9zMUZGWC21pcvk6FYXEtLHMN7r7fm+xd27cpiWhDTvry/VocT4m892gVnD30XE5IxV2RIfQReV3e
J8Kp8NTi3I6RWcdj5lRnt/Y58H+yvrutrwJ4UOt2cVvUphYizo7QMnXSvqDDHeHcabkyEgAGLGaK
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
7wd46t3dzbcZbtzjnfvrWW81v5pd3m/nNz9xYk7t29ljs1mvmrvtT+T1D+QfP842v6OXzurq/ml7
BVI93cVtCqhstXsD2YP/8ePJr4/r7Xxx00ABWHlfLD1lZ7Pf4ea2uevKPFJHd2lYDxaxq2UW2338
59P5h8uP7g389aE6O3/3y+xk9/vyf95Xh1+7OP/feNe/+/jL5eyHu/u7Ynk/v2k2y2b14+zkp/3P
gQL6u90fJ265XX/F+M5LsPFw9GZ+GBHmdf+f2Yk/m22iu9dsjTBjk60KFt3+HQXvRBba9oUZes5k
32FJPWG3QICmwbPppzgjR7UJc0reDt7558Xsn+eXs89tfBiIuLxfZera18MPvfND642HPRtlOyVn
+3q6n+6ZGQzp+WqF+ShnIDR6fQ2Gx48nr2M05Mzhldm7u2WT/z6JWG/dmzfv/PGBZO0pf9v3eP/O
56f542r2gH2d++Gsr0fPTt63s30Gn+hh08zO767vnx0CF5fOv56dfXQfwkHZpBp8GgPvbOfL356Z
GJScquE7n95exRa5yyPTYibIcKj92iww2OVt7P5D9Yi9bAzquboK7tIdl42RU7N7B4k44J3zt+6s
Ov6STIf01dWb819eVwGG28EuYPZU9t+U4DuX1b8uj3ebtqeil03gOx9/OffvwlHppGRD2W6jhjs4
OdvulX09cezs9MAtoN7Hb4de4vvxhv32Z9TU5bvLqC6P98KpOut63e7e+a/ZLWiOTTJR2wkam8Pi
grJ/5+Q/UEsDBBQAAgAIAHYSKEpNQPxdtjkAALW9AAA3ABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3Np
YmlsaXR5LW5vZGUtcmVwYXJlbnQtY3Jhc2gtbG9nLnR4dFVUCQADQBJyWEASclh1eAsAAQT1AQAA
BBQAAADkW1tz28aSfl7+CjylKNug5j4Dlo+rcE20sWWVKV+2UikWAA4krEmAAUnb2l+/PQBJASCk
SDl+O34IIcxM99c9fZ1Brqoy1ZvN1Or+C3ar9QddLHR1XWlt/UEE4fLP0VW8ve1PhX/nn8rlbqU3
55/ev/34Ljx/cd5dP7pY6GKbZ7mupg9zGX3S1SYviz4DNPLLhbau79a6O/RFCVswa3wZb/Nv+gzQ
VcDGuuqJdHW3vS0LIwNW6M/RB71Zl8UmT5Ydcg9I/HGjK+si6GPiCI9GQbzV59f5qgeLICxthG2k
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
AAAAAAAAAAAeABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvVVQJAANAEnJYbRJyWHV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACACNEihKTx/DZ705AADMvQAAOQAcAGFjY2Vzc2liaWxpdHkv
bWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTEtY3Jhc2gtbG9nLnR4dFVUCQADahJyWMIRclh1
eAsAAQT1AQAABBQAAADkW1tz28aSfl7+CjylKNug5j4Dlo+rcE20sWWVKV+2UikWAA4krEmAAUnb
2l+/PQBJASCkSDl+O34IIcxM99c9fZ1Brqoy1ZvN1Or+C3ar9QddLHR1XWlt/UEEVvzP0VW8ve1P
hX/nn8rlbqU355/ev/34Ljx/cd5dP7pY6GKbZ7mupg9zGX3S1SYviz4DNPLLhbau79a6O/RFCVsw
a3wZb/Nv+gzQVcDGuuqJdHW3vS2LRgb25+iD3qzLYpMnyw65ByT+uNGVdRH0MXGER6Mg3urz63zV
g0UQljbCNlIWIlMsplRNhEIWvEBo9H5mDcn5Lk4tGPpiYTTBeCKsMea/YoLJGQBel9X2ZBXGI7co
i7tVudtYHz+2MPLQV5IR3/YipGzJiWcrTpStRMQ4kgF1iTcajQxyy/0ef9XWLC9SbXlluZ1ajCFk
bXRaFovNaDS722z1yrootvqmyrd3RrtbnW5rJLqIQYuL0civ4s2tXljXt5WOF0cgCNSab9bxNr21
/trpHSgqLVeTeL1e6skqzgt7Wy8YjcIfqV4bot1tDr/4c88N5q7vh7OZNZ5d/DoLf/101ppvbOO4
17+HHy7nF5ef3LcXsCgIPphV8dZCP1DvX4vCJQjU4ei//3A1C+eX768vov8ZjT69sz7oG5i5sS51
XFloOrLtN9bITJ/Pr8Mv1ycOsWeC0UJIUCeyWy9S88L6w7IoQb//aVX2j/Pq+w9r9u5f/vvPA740
Gv26LJN4aV1XsdmkXZaBSY4r/Q0MQlvpbVUW5bK8yVOYs9+3s+mIOxMHK8SwweNHl3r7vay+niD9
r0Y1MssyR9EMcaEtH/Zkmxc31kJn8W65hU0rv+ba2mzLKr7R1vd8e2utGy87T3bFYqmt/Ojh/5gz
ElZk2BnOOWxs9Nv19ZVfs57tOW9gbKm3ZXFgIsjzmFCHd5hczh5jMmrsGex4b+DT6RMNGiy/NfJZ
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
Q307fm7YqhXlUzscLvYp1HdAe3W32az2sSISvbZiMmBCDSyQBsYuhqDigXEpvQSsZxDbK035URea
QbmJWDwTbb3iq36PYrXePMTkld2OLImn8jF0zmsBEkl09HbogaBD4WTlCiWD9zCzYGXKu0qlhaby
rBY5eRYH1VvL4wcvDC7RVreBbsYgOMwwihlWFLKd10h+7n2pSlbpqvpr2xf7+6M2TG21lZEss2l1
MDIWXQRqjrxmdeXbRISGG1awQDHqpTZCPr+qPxfjkj6TtAHmTqYNq+tjiQ/eXRzDKUx7gHWggrXB
8yATQhGNv+BlCdYnLD1BfT+cspflwMFEf//kpPpjR1P29n61vu4cHy6ebm9BglfQLR6s383sdr5q
Zotvs/vtl+Zx9vB4j7zm0Nbt/PFzg6B0tv2y3nQ3XsXu3M43v11d3z9ePaxXr2Zt8HTrsHi1hH+3
zasZGV7cNNurzba/nlb8XPHkrxUP/xm0Cnog1odkTuu7JlcfAwP1/1flyae3sw/N56R7P8BT7+5u
vs1w4x7v3F/Peqv51ezyfju/+YkTc2rfzh6bzXrV3G1/Iq9/IP/4cbb5Hb10Vlf3T9srkOrpLm5T
QGWr3RvIHvyPH09+fVxv54ubBgrAyvti6Sk7m/0ON7fNXVfmkTq6S8N6sIhdLbPY7uM/n84/XH50
b+CvD9XZ+btfZie735f/8746/NrF+f/Gu/7dx18uZz/c3d8Vy/v5TbNZNqsfZyc/7X8OFNDf7f44
ccvt+ivGd16CjYejN/PDiDCv+//MTvzZbBPdvWZrhBmbbFWw6PbvSHgnstC2L8zQcyb7DkvqCbsF
AjQNnk0/xRk5qk2YU/J28M4/L2b/PL+cfW7jw0DE5f0qU9e+Hn7onR9abzzs2SjbKTnb19P9dM/M
YEjPVyvMRzkDodHrazA8fjx5HaMhZw6vzN7dLZv890nEeuvevHnnj44jMJFPedd8qvp3Pj/NH1ez
B+zr3A9nfT16dvK+ne0z+EQPm2Z2fnd9/+wQuLh0/vXs7KP7EA4KJ9Xg01h4Zztf/vbMxMDw0+E7
n95exRa5yyPTYiZILxv0wa/NAoNd3sbuP1SP2MvGoA+uroK7dMdlY+TU7N5BIg545/ytO6uOvyTT
IX119eb8l9dVgOF2sAuYPZX9NyX4zmX1r8vj3abtqehlE/jOx1/O/btwVDop2VC226jhDk7Otntl
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
i0DNkdesrnybiNBwwwoWKEa91EbI51f152Jc0meSNsDcybRhdX0s8cG7i2M4hWkPsA5UsDZ4HmRC
KKLxF7wswfqEpSeo74dT9rIcOJjo75+cVH/saMre3q/W153jw8XT7S1I8Aq6xYP1u5ndzlfNbPFt
dr/90jzOHh7vkdcc2rqdP35uEJTOtl/Wm+7Gq9id2/nmt6vr+8erh/Xq1awNnm4dFq+W8O+2eTUj
w4ubZnu12fbX04qfK578teLhP4NWQQ/E+pDMaX3X5OrDJNj/vypPPr2dfWg+J937AZ56d3fzbYYb
93jn/nrWW82vZpf32/nNT5yYU/t29ths1qvmbvsTef0D+cePs83v6KWzurp/2l6BVE93cZsCKlvt
3kD24H/8ePLr43o7X9w0UABW3hdLT9nZ7He4uW3uujKP1NFdGtaDRexqmcV2H//5dP7h8qN7A399
qM7O3/0yO9n9vvyf99Xh1y7O/zfe9e8+/nI5++Hu/q5Y3s9vms2yWf04O/lp/3OggP5u98eJW27X
XzG+8xJsPBy9mR9GhHnd/2d24s9mm+juNVsjzNhkq4JFt39HwjuRhbZ9YYaeM9l3WFJP2C0QoGnw
bPopzshRbcKckreDd/55Mfvn+eXscxsfBiIu71eZuvb18EPv/NB642HPRtlOydm+nu6ne2YGQ3q+
WmE+yhkIjV5fg+Hx48nrGA05c3hl9u5u2eS/TyLWW/fmzTt/dBxRpJ/smk9V/87np/njavaAfZ37
4ayvR89O3rezfQaf6GHTzM7vru+fHQIXl86/np19dB/CQeGkGnwaA+9s58vfnpkY0B41fOfT26vY
Ind5ZFrMBBkOtV+bBQa7vI3df6gesZeN2dnJ1VVwl+64bIycmt07SMQB75y/dWfV8ZdkOqSvrt6c
//K6CjDcDnYBs6ey/6YE37ms/nV5vNu0PRW9bALf+fjLuX8XjkonJRvKdhs13MHJGX+U7OuJ32en
B24B9T5+O/QS3483bM+fUVOX7y6jujzeC6dqN0UlJ7t3/mt2C5pjk0zUdoLG5nCLC8r+nZP/AFBL
AwQUAAIACAB2EihKcS6WHb45AADAvQAATQAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5n
ZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLXRleHRmaWVsZC1jcmFzaC1sb2cudHh0VVQJAANAEnJY
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
AABUEihKTRSz2i0AAAAtAAAAMwAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51
bGwtY3Jhc2gtbG9nLnR4dFVUCQAD/xFyWP8Rclh1eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cg
Zm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjI2MTkyLgpQSwMECgAAAAAAVBIoSgAAAAAAAAAAAAAA
AAcAHABjYW52YXMvVVQJAAP/EXJYbRJyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABUEihKAAAA
AAAAAAAAAAAADgAcAGNhbnZhcy9waGlsaXAvVVQJAAP/EXJYbRJyWHV4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAABUEihKAAAAAAAAAAAAAAAAFAAcAGNhbnZhcy9waGlsaXAvdGVzdHMvVVQJAAP/EXJY
bRJyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAABUEihKkby63S0AAAAtAAAANAAcAGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5LWNyYXNoLWxvZy50eHRVVAkAA/8Rclj/EXJY
dXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZToyNjE5
Ni4KUEsDBAoAAAAAAFQSKEoAAAAAAAAAAAAAAAAMABwAY29tcG9zaXRpbmcvVVQJAAMAEnJYbRJy
WHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAABUEihKm5Ek1y0AAAAtAAAAOwAcAGNvbXBvc2l0aW5n
L2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1jcmFzaC1sb2cudHh0VVQJAAP/EXJY
/xFyWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6
MjYxOTguClBLAwQKAAAAAABUEihKAAAAAAAAAAAAAAAAFgAcAGNvbXBvc2l0aW5nL2FuaW1hdGlv
bi9VVAkAA/8RclhtEnJYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAFQSKEp59Z/jLQAAAC0AAABF
ABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRl
bi1jcmFzaC1sb2cudHh0VVQJAAP/EXJY/xFyWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBm
b3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYyMDAuClBLAwQKAAAAAABUEihKAAAAAAAAAAAAAAAA
IAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQJAAP/EXJYbRJyWHV4CwABBPUB
AAAEFAAAAFBLAwQKAAIAAABUEihKFyEb4C0AAAAtAAAARAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNl
LXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQJAAP/EXJY
/xFyWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6
MjYyMDIuClBLAwQKAAAAAAB2EihKAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL2JhY2tpbmcv
VVQJAANAEnJYbRJyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAABUEihKwaSM7S0AAAAtAAAAOgAc
AGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50
eHRVVAkAA/8Rclj/EXJYdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1w
UmVuZGVyVHJlZToyNjIwOC4KUEsDBBQAAgAIAHYSKEpdq+GPpAAAAO4CAABGABwAY29tcG9zaXRp
bmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWluLTNkdHJhbnNmb3JtZWQtY3Jhc2gtbG9n
LnR4dFVUCQADQBJyWEASclh1eAsAAQT1AQAABBQAAADNzzEPgjAQBeCdX3GbE7YQhcAsTkSTRidj
TGlPaIIcuZYY/73M7irLG97y3lcpdVQl7LXr0UIgYNQWVuLskb1oJtfbhoKoXcOaX6Km1oud0+1A
PjijcCQOczM9RoWDRT4x4i2VSR7LJJbZnNtim9/w6RMp14a171YlXCrmgSC9woHAT6aD+7wPxGAd
ownEr/LLJ6LqF/JsCfLsD/JNsQD554noDVBLAwQKAAAAAABUEihKAAAAAAAAAAAAAAAAEwAcAGNv
bXBvc2l0aW5nL2NhbnZhcy9VVAkAAwASclhtEnJYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAFQS
KEockiNbLQAAAC0AAAA/ABwAY29tcG9zaXRpbmcvY2FudmFzL2FjY2VsZXJhdGVkLWNhbnZhcy1j
b21wb3NpdGluZy1jcmFzaC1sb2cudHh0VVQJAAMAEnJYABJyWHV4CwABBPUBAAAEFAAAAE5vIGNy
YXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYyMTAuClBLAwQKAAAAAABUEihKAAAA
AAAAAAAAAAAAFQAcAGNvbXBvc2l0aW5nL2NsaXBwaW5nL1VUCQADABJyWG0Sclh1eAsAAQT1AQAA
BBQAAABQSwMECgACAAAAVBIoSnJGp1gtAAAALQAAAFEAHABjb21wb3NpdGluZy9jbGlwcGluZy9i
b3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1zdGFja2luZy1jb250ZXh0LWNyYXNoLWxvZy50
eHRVVAkAAwASclgAEnJYdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1w
UmVuZGVyVHJlZToyNjIxMi4KUEsDBAoAAAAAAHYSKEoAAAAAAAAAAAAAAAAbABwAY29tcG9zaXRp
bmcvY29sb3ItbWF0Y2hpbmcvVVQJAANAEnJYbRJyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAABU
EihKwDoqXC0AAAAtAAAAPQAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9y
LW1hdGNoaW5nLWNyYXNoLWxvZy50eHRVVAkAAwASclgAEnJYdXgLAAEE9QEAAAQUAAAATm8gY3Jh
c2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZToyNjIxNC4KUEsDBBQAAgAIAHYSKEq3TgSp
kAAAAPoAAAA4ABwAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvcGRmLWltYWdlLW1hdGNoLWNy
YXNoLWxvZy50eHRVVAkAA0ASclhAEnJYdXgLAAEE9QEAAAQUAAAAtY6xDoIwEEB3v+I2JmyLUSOz
OBFNGp2MIaU9oQly5K7E8PfyEy5veMt7lbU3W8LFxQEDJAJGFyBTD0EW1c5xCC0lVceWHS+qpk7U
ObpuJEnRW5yI02rmz2RxDMh3RmwKbY65Nrk+rNyfil2DXzFabz076bMSnhXzSFC84Eogs+/hvfaB
GEJk9Il4Kf88sfkBUEsDBAoAAAAAAFQSKEoAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvY29s
dW1ucy9VVAkAAwASclhtEnJYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAFQSKEqu7q5fLQAAAC0A
AAA/ABwAY29tcG9zaXRpbmcvY29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1j
cmFzaC1sb2cudHh0VVQJAAMAEnJYABJyWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3Vu
ZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYyMTYuClBLAwQKAAAAAABUEihKAAAAAAAAAAAAAAAAHAAc
AGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9VVAkAAwASclhtEnJYdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAgAAAFQSKEqkwzBVLQAAAC0AAAA5ABwAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVl
L2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cudHh0VVQJAAMAEnJYABJyWHV4CwABBPUBAAAEFAAA
AE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYyMTguClBLAwQKAAAAAABU
EihKAAAAAAAAAAAAAAAAGwAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL1VUCQADABJyWG0S
clh1eAsAAQT1AQAABBQAAABQSwMECgACAAAAVBIoSvI9lkktAAAALQAAADIAHABjb21wb3NpdGlu
Zy9jb250ZW50cy1zY2FsZS9hbmltYXRpbmctY3Jhc2gtbG9nLnR4dFVUCQADABJyWAASclh1eAsA
AQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBSZW5kZXJUcmVlOjI2MjIwLgpQ
SwMECgAAAAAAVBIoSgAAAAAAAAAAAAAAABQAHABjb21wb3NpdGluZy9jdWxsaW5nL1VUCQADABJy
WG0Sclh1eAsAAQT1AQAABBQAAABQSwMECgACAAAAVBIoSpzpEkotAAAALQAAADQAHABjb21wb3Np
dGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1jcmFzaC1sb2cudHh0VVQJAAMAEnJYABJy
WHV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYy
MjIuClBLAwQKAAAAAABUEihKAAAAAAAAAAAAAAAAFgAcAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9V
VAkAAwASclhtEnJYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAAFQSKEpAQRtNLQAAAC0AAAA+ABwA
Y29tcG9zaXRpbmcvZnJhbWVzZXRzL2NvbXBvc2l0ZWQtZnJhbWUtYWxpZ25tZW50LWNyYXNoLWxv
Zy50eHRVVAkAAwASclgAEnJYdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBE
dW1wUmVuZGVyVHJlZToyNjIyNi4KUEsDBAoAAAAAAFQSKEoAAAAAAAAAAAAAAAAVABwAY29tcG9z
aXRpbmcvZ2VvbWV0cnkvVVQJAAMAEnJYbRJyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAABUEihK
SmyFRy0AAAAtAAAAPgAcAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUt
b3BhY2l0eS1jcmFzaC1sb2cudHh0VVQJAAMAEnJYABJyWHV4CwABBPUBAAAEFAAAAE5vIGNyYXNo
IGxvZyBmb3VuZCBmb3IgRHVtcFJlbmRlclRyZWU6MjYyMjguClBLAwQUAAIACAB3EihKxdNXtMIC
AABaCAAADQAcAGVycm9yX2xvZy50eHRVVAkAA0EScliBEXJYdXgLAAEE9QEAAAQUAAAAxVVRb9ow
EH7frzjx0k1a4iQECHnroFvZaFcVuj4gVJnkIG5jO7Kd0f77OaFQ1pa2qJMmHojsu+/7/Nl3NxmV
Ar5TAV4EXhD77bjZdP2w7bWbEHh+ZwoTrfN4SZWwnwVLIWj77WAKh8ee3/W6MfhBx/Xsz4/DsBl7
oFH9RgUJKsPmLKEGIZWo4fTnGJhI8jJFsHyDPiwzlmTAqUkyu28yXOcKyvHD5DllFbnnv6CsuVIW
dZoxDAQzMYxQayYF9KilAaZBSAOJFHO2KBWmMMmYqMJGw/vIOnC6k7/bDV7n/x/OND0vXCvjBb8q
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
U1+TUinxP9cjVfPiyWQkvwwvKz5btiy+5KV6zKLyfauVJXPuzdx/9o4pxSxPSIckDrXODoq+An3f
cegt8a5SdxuNNaHuDdT/JnSi1BWyaGZuoPVHQOdIZ9Fp7VHxXoOb1eqC1+YMO06j82xKFlQajrgu
K82SiMVpwstE1l4xOWMstiU3NZ0thDRBU6wDoHh2dq5/97ZhtfJkoy2RRFuL8MbY0wPrjUQG/SkM
6IbLzZXEpUzlbtUnc0EU0f2qgMWUkmhqeljqf8nJgxf8MR0OapCZNgKB8MneLf+899PaQb0XivTr
wXyt5f6snE03COFx3FozEroyFcWybvrW9ZJMz8qTVI64PCt/VusbKBK2idOhHscbQGdZeZZz+syp
vs7yhht/4UIpkziD+gGqu1IwX6xKv/35i8p4+Ovfn+x/9vdsnaax2lDTfizRXkbO76biG/F2sVYv
wvazq/5zbZcrSPZSRN/M5wwl8yTh0s6Lf3bPzscsEQNav269Nirypjm/Ffn3KdhWk7eFENYFbyX1
29n3rR089H1eTzNZfCdmOhBQs56Xeut5n1i0Xk+Du0+Am2bI+hdQSwECHgMUAAIACACNEihKcS6W
Hb45AADAvQAAIgAYAAAAAAABAAAApIEAAAAARHVtcFJlbmRlclRyZWUtMjYyNTMtY3Jhc2gtbG9n
LnR4dFVUBQADahJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKEpuNu9ltzkAAKi+AAAi
ABgAAAAAAAEAAACkgRo6AABEdW1wUmVuZGVyVHJlZS0yNjI1NC1jcmFzaC1sb2cudHh0VVQFAANq
EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjRIoSk1A/F22OQAAtb0AACIAGAAAAAAAAQAA
AKSBLXQAAER1bXBSZW5kZXJUcmVlLTI2MjU3LWNyYXNoLWxvZy50eHRVVAUAA2oSclh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAASEihKAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UE/rgAAX3dw
dF9jZXJ0cy9VVAUAA4QRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASEihK0P6hSRMJAAA6
EQAAFQAYAAAAAAABAAAApIGErgAAX3dwdF9jZXJ0cy8wNUYxODQucGVtVVQFAAOEEXJYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAEhIoShUIjgPnCQAAOxIAABUAGAAAAAAAAQAAAKSB5rcAAF93
cHRfY2VydHMvMDVGMTg1LnBlbVVUBQADhBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABIS
KErQ/qFJEwkAADoRAAAVABgAAAAAAAEAAACkgRzCAABfd3B0X2NlcnRzL2NhY2VydC5wZW1VVAUA
A4QRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASEihKUkRu5EYFAADXBgAAFAAYAAAAAAAB
AAAApIF+ywAAX3dwdF9jZXJ0cy9jYWtleS5wZW1VVAUAA4QRclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAASEihKLRFOf0kAAABlAAAAFAAYAAAAAAABAAAApIES0QAAX3dwdF9jZXJ0cy9pbmRl
eC50eHRVVAUAA4QRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAASEihKmFx5fxUAAAAVAAAA
GQAYAAAAAAABAAAApIGp0QAAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0clVUBQADhBFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAgAAABISKEqYXHl/FQAAABUAAAAdABgAAAAAAAEAAACkgRHSAABf
d3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUBQADhBFyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAABISKEr7GZeLNwAAADcAAAAYABgAAAAAAAEAAACkgX3SAABfd3B0X2NlcnRzL2luZGV4
LnR4dC5vbGRVVAUAA4QRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASEihKYOn/JwwFAACP
BgAAGAAYAAAAAAABAAAApIEG0wAAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAAOEEXJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEhIoShUIjgPnCQAAOxIAABgAGAAAAAAAAQAAAKSBZNgA
AF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADhBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AgAAABISKEpcEi29BwAAAAcAAAARABgAAAAAAAEAAACkgZ3iAABfd3B0X2NlcnRzL3NlcmlhbFVU
BQADhBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAABISKEqfQQCWBwAAAAcAAAAVABgAAAAA
AAEAAACkge/iAABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA4QRclh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAREihKAAAAAAAAAAAAAAAADgAYAAAAAAAAAAAApIFF4wAAYWNjZXNzX2xvZy50
eHRVVAUAA4ERclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB2EihKAAAAAAAAAAAAAAAADgAY
AAAAAAAAABAA7UGN4wAAYWNjZXNzaWJpbGl0eS9VVAUAA0ASclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACNEihK+WCJMrk5AAC2vQAASwAYAAAAAAABAAAApIHV4wAAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LWNyYXNoLXdpdGgtZHluYW1pYy1pbmxpbmUtY29udGVudC1jcmFzaC1sb2cu
dHh0VVQFAANqEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjRIoSuDg9tizOQAAx70AAEAA
GAAAAAAAAQAAAKSBEx4BAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1t
YW5hZ2VtZW50LWNyYXNoLWxvZy50eHRVVAUAA2oSclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAB2EihKTUD8XbY5AAC1vQAANwAYAAAAAAABAAAApIFAWAEAYWNjZXNzaWJpbGl0eS9hY2Nlc3Np
YmlsaXR5LW5vZGUtcmVwYXJlbnQtY3Jhc2gtbG9nLnR4dFVUBQADQBJyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAHYSKEoAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQWeSAQBhY2Nlc3NpYmls
aXR5L21hYy9VVAUAA0ASclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACNEihKuxm8MLg5AADL
vQAAMQAYAAAAAAABAAAApIGzkgEAYWNjZXNzaWJpbGl0eS9tYWMvYWJici1hY3JvbnltLXRhZ3Mt
Y3Jhc2gtbG9nLnR4dFVUBQADahJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKEpxeRbJ
tDkAAMe9AAApABgAAAAAAAEAAACkgdbMAQBhY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NrZXktY3Jh
c2gtbG9nLnR4dFVUBQADahJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKEozfks/tDkA
ALW9AAAzABgAAAAAAAEAAACkge0GAgBhY2Nlc3NpYmlsaXR5L21hYy9hbHQtZm9yLWNzcy1jb250
ZW50LWNyYXNoLWxvZy50eHRVVAUAA2oSclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB2EihK
AAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UEOQQIAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRl
eHQvVVQFAANAEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjRIoSk8fw2e9OQAAzL0AADkA
GAAAAAAAAQAAAKSBZkECAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0
LTEtY3Jhc2gtbG9nLnR4dFVUBQADahJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKEpj
vyrqujkAANK9AAA5ABgAAAAAAAEAAACkgZZ7AgBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4
dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxvZy50eHRVVAUAA2oSclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAB2EihKbjbvZbc5AACovgAAOQAYAAAAAAABAAAApIHDtQIAYWNjZXNzaWJpbGl0eS9t
YWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMy1jcmFzaC1sb2cudHh0VVQFAANAEnJYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAdhIoSgAAAAAAAAAAAAAAAB8AGAAAAAAAAAAQAO1B7e8CAGFj
Y2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS9VVAUAA0ASclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACNEihKKeRKtL85AADMvQAAUwAYAAAAAAABAAAApIFG8AIAYWNjZXNzaWJpbGl0eS9t
YWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tY29udGVudGVkaXRhYmxlLWNy
YXNoLWxvZy50eHRVVAUAA2oSclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACNEihKl/tq17Q5
AADIvQAATAAYAAAAAAABAAAApIGSKgMAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3Zh
bHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFyZWEtY3Jhc2gtbG9nLnR4dFVUBQADahJyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAHYSKEpxLpYdvjkAAMC9AABNABgAAAAAAAEAAACkgcxkAwBh
Y2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0
ZmllbGQtY3Jhc2gtbG9nLnR4dFVUBQADQBJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHYS
KEoAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQRGfAwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L1VUBQADQBJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKErlGfmYvDkAAMC9AABZABgA
AAAAAAEAAACkgWWfAwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQt
dmlzaWJsZS1wb3NpdGlvbi1jb252ZXJzaW9uLWhhbmctY3Jhc2gtbG9nLnR4dFVUBQADahJyWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKEo6YTLyuzkAALm+AABBABgAAAAAAAEAAACkgbTZ
AwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtY3Jh
c2gtbG9nLnR4dFVUBQADahJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI0SKErA23b/uDkA
AMC9AABKABgAAAAAAAEAAACkgeoTBABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFy
a2VyLXJhbmdlLXN0YWxlLW5vZGUtY3Jhc2gtY3Jhc2gtbG9nLnR4dFVUBQADahJyWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAFQSKEoAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQSZOBABhbmlt
YXRpb25zL1VUBQAD/xFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFUSKEoAAAAAAAAAAAAA
AAAOABgAAAAAAAAAEADtQWtOBABhbmltYXRpb25zLzNkL1VUBQADARJyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAgAAAFQSKEr/aD7eLQAAAC0AAAA5ABgAAAAAAAEAAACkgbNOBABhbmltYXRpb25z
LzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNoLWxvZy50eHRVVAUAA/8Rclh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABVEihKtp+JJ5AAAAD6AAAAOwAYAAAAAAABAAAApIFT
TwQAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxv
Zy50eHRVVAUAAwESclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihKTRSz2i0AAAAtAAAA
MwAYAAAAAAABAAAApIFYUAQAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5hbWUtbnVsbC1j
cmFzaC1sb2cudHh0VVQFAAP/EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAAAAAA
AAAAAAAAAAcAGAAAAAAAAAAQAO1B8lAEAGNhbnZhcy9VVAUAA/8Rclh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABUEihKAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UEzUQQAY2FudmFzL3BoaWxp
cC9VVAUAA/8Rclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABUEihKAAAAAAAAAAAAAAAAFAAY
AAAAAAAAABAA7UF7UQQAY2FudmFzL3BoaWxpcC90ZXN0cy9VVAUAA/8Rclh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAIAAABUEihKkby63S0AAAAtAAAANAAYAAAAAAABAAAApIHJUQQAY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHktY3Jhc2gtbG9nLnR4dFVUBQAD/xFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAFQSKEoAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQWRSBABj
b21wb3NpdGluZy9VVAUAAwASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihKm5Ek1y0A
AAAtAAAAOwAYAAAAAAABAAAApIGqUgQAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1v
Zi12aWV3LWZpeGVkLWNyYXNoLWxvZy50eHRVVAUAA/8Rclh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAABUEihKAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UFMUwQAY29tcG9zaXRpbmcvYW5pbWF0
aW9uL1VUBQAD/xFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAFQSKEp59Z/jLQAAAC0AAABF
ABgAAAAAAAEAAACkgZxTBABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRl
ZC1pbnNpZGUtaGlkZGVuLWNyYXNoLWxvZy50eHRVVAUAA/8Rclh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABUEihKAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UFIVAQAY29tcG9zaXRpbmcvYmFj
a2ZhY2UtdmlzaWJpbGl0eS9VVAUAA/8Rclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihK
FyEb4C0AAAAtAAAARAAYAAAAAAABAAAApIGiVAQAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJp
bGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxvZy50eHRVVAUAA/8Rclh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAB2EihKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFNVQQAY29t
cG9zaXRpbmcvYmFja2luZy9VVAUAA0ASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihK
waSM7S0AAAAtAAAAOgAYAAAAAAABAAAApIGbVQQAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFj
ZS12aXNpYmlsaXR5LWZsaXAtY3Jhc2gtbG9nLnR4dFVUBQAD/xFyWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHYSKEpdq+GPpAAAAO4CAABGABgAAAAAAAEAAACkgTxWBABjb21wb3NpdGluZy9i
YWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFzaC1sb2cudHh0
VVQFAANAEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAAAAAAAAAAAAAAABMAGAAA
AAAAAAAQAO1BYFcEAGNvbXBvc2l0aW5nL2NhbnZhcy9VVAUAAwASclh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAABUEihKHJIjWy0AAAAtAAAAPwAYAAAAAAABAAAApIGtVwQAY29tcG9zaXRpbmcv
Y2FudmFzL2FjY2VsZXJhdGVkLWNhbnZhcy1jb21wb3NpdGluZy1jcmFzaC1sb2cudHh0VVQFAAMA
EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAAAAAAAAAAAAAAABUAGAAAAAAAAAAQ
AO1BU1gEAGNvbXBvc2l0aW5nL2NsaXBwaW5nL1VUBQADABJyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAAFQSKEpyRqdYLQAAAC0AAABRABgAAAAAAAEAAACkgaJYBABjb21wb3NpdGluZy9jbGlw
cGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1zdGFja2luZy1jb250ZXh0LWNyYXNo
LWxvZy50eHRVVAUAAwASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB2EihKAAAAAAAAAAAA
AAAAGwAYAAAAAAAAABAA7UFaWQQAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvVVQFAANAEnJY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAVBIoSsA6KlwtAAAALQAAAD0AGAAAAAAAAQAAAKSB
r1kEAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLWNyYXNo
LWxvZy50eHRVVAUAAwASclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB2EihKt04EqZAAAAD6
AAAAOAAYAAAAAAABAAAApIFTWgQAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvcGRmLWltYWdl
LW1hdGNoLWNyYXNoLWxvZy50eHRVVAUAA0ASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABU
EihKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFVWwQAY29tcG9zaXRpbmcvY29sdW1ucy9VVAUA
AwASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihKru6uXy0AAAAtAAAAPwAYAAAAAAAB
AAAApIGjWwQAY29tcG9zaXRpbmcvY29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRl
ZC1jcmFzaC1sb2cudHh0VVQFAAMAEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAA
AAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BSVwEAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9V
VAUAAwASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABUEihKpMMwVS0AAAAtAAAAOQAYAAAA
AAABAAAApIGfXAQAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1j
cmFzaC1sb2cudHh0VVQFAAMAEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAAAAAA
AAAAAAAAABsAGAAAAAAAAAAQAO1BP10EAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL1VUBQAD
ABJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAFQSKEryPZZJLQAAAC0AAAAyABgAAAAAAAEA
AACkgZRdBABjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9hbmltYXRpbmctY3Jhc2gtbG9nLnR4
dFVUBQADABJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFQSKEoAAAAAAAAAAAAAAAAUABgA
AAAAAAAAEADtQS1eBABjb21wb3NpdGluZy9jdWxsaW5nL1VUBQADABJyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAgAAAFQSKEqc6RJKLQAAAC0AAAA0ABgAAAAAAAEAAACkgXteBABjb21wb3NpdGlu
Zy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1jcmFzaC1sb2cudHh0VVQFAAMAEnJYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAVBIoSgAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BFl8EAGNv
bXBvc2l0aW5nL2ZyYW1lc2V0cy9VVAUAAwASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABU
EihKQEEbTS0AAAAtAAAAPgAYAAAAAAABAAAApIFmXwQAY29tcG9zaXRpbmcvZnJhbWVzZXRzL2Nv
bXBvc2l0ZWQtZnJhbWUtYWxpZ25tZW50LWNyYXNoLWxvZy50eHRVVAUAAwASclh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABUEihKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UELYAQAY29tcG9z
aXRpbmcvZ2VvbWV0cnkvVVQFAAMAEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAVBIoSkps
hUctAAAALQAAAD4AGAAAAAAAAQAAAKSBWmAEAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Ficy1wb3Np
dGlvbi1pbnNpZGUtb3BhY2l0eS1jcmFzaC1sb2cudHh0VVQFAAMAEnJYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAdxIoSsXTV7TCAgAAWggAAA0AGAAAAAAAAQAAAKSB/2AEAGVycm9yX2xvZy50
eHRVVAUAA0ESclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACOEihKZKy/K3kDAADbDQAAEQAY
AAAAAAABAAAApIEIZAQAZnVsbF9yZXN1bHRzLmpzb25VVAUAA2sSclh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAREihKWwRYDqIFAABNEAAACgAYAAAAAAABAAAApIHMZwQAaHR0cGQuY29uZlVU
BQADgRFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABESKEoAAAAAAAAAAAAAAAAaABgAAAAA
AAAAAACkgbJtBABweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUBQADghFyWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAABESKEoAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgQZuBABweXdlYnNv
Y2tldC53cy5sb2ctb3V0LnR4dFVUBQADghFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABIS
KEoAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgVpuBABweXdlYnNvY2tldC53c3MubG9nLWVyci50
eHRVVAUAA4MRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAASEihKAAAAAAAAAAAAAAAAGwAY
AAAAAAAAAAAApIGvbgQAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAODEXJYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAjhIoSkUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSBBG8EAHJl
c3VsdHMuaHRtbFVUBQADaxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI4SKErUVJKW3gMA
AEgLAAAKABgAAAAAAAEAAACkgRuXBABzdGF0cy5qc29uVVQFAANrEnJYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAFBIoSg38LtTlBAAAshoAABkAGAAAAAAAAQAAAKSBPZsEAHdwdHdrX3Byb2Nl
c3NfbG9nLm91dC50eHRVVAUAA4cRclh1eAsAAQT1AQAABBQAAABQSwUGAAAAAFQAVABnIwAAdaAE
AAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298302</attachid>
            <date>2017-01-08 02:56:43 -0800</date>
            <delta_ts>2017-01-09 02:39:27 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>262399</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAPoRKEoAAAAAAAAAAAAAAAALABwAX3dwdF9jZXJ0cy9VVAkAA1gRclg9EnJYdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAPoRKEqb0QorEAkAADoRAAAVABwAX3dwdF9jZXJ0cy8wQjJG
RTAucGVtVVQJAANYEXJYWBFyWHV4CwABBPUBAAAEFAAAAK1WXW/i2g5951fweI6qI3a+E0v3IQmB
QgmU78JbPnbSAIGWQIH++rvMzHQ6GjpHurpRR2IS29tettfavtwfiqxIooOkWh1PMzpE337xM5P7
qthtqa7V/xJn9e+PD2O5L6JNvX8sY7mnuqVpiqGyTaxmUnyyK/JtdDjuZd3d5Lt9cXguqV49R6ph
zvGf0dgNtsn+8nLAKR9Onao6clS//5+TjP952USHbLcv/znI6lD9zC3aFGlxuHy84Ke/O9Q9CWtJ
9W60rdftuiJIMQjZqUKx6u1w8puDmx3kvk71lozrdesPDuNjvJLJ4d8y+25WfzzGmyKpP8hLvbPN
dvTLwZ8+foJmX0U3AOEHUH3yofpfqtDtelwc/v7FjJ9wlx43x+qTCf1mw48QlKhkxqQrFGek2iRi
cmyyNNJs0lRKdZIJ6ZJkfDuCEZEwyZCkSrIScgwSEZkGpRGlknSdspSkSalBtno7AuInGZkKG0uN
REYyotjmmJlNika6QYpFmUbyiwh2RrpFChyRuU1JTJpOscUxVZUiFJWSGVGicZk3IygKp4dMsowM
nXSHFEkaAjrf/2yNMp0BSb7AITJJ0yhC7RbFkgQsIy5cNSkDMhbpMEDYmBTndgRVJ4EaM7YUOhdr
6VwCGoGsErgnZAqKE5LGlzigagslxJxtpFCakpqSAd+Ii0J8dAcpIdubEZxrL2KD7U1kgjGQ1yoS
iuFuc18cREsp/QJJCzUCRhwh+SC4KzolChlIQ5DpkKlydzAnX3VT6mSbPAnI3MRBGqUJWeI6mfCy
uKGYCjTIiW5HgFfikIqSbYbCQEWA0WIkkZJtXXttclbKFzkkBh8hMFSCbEGpSYrNMa2I22dqHAEQ
MVBfdNO2KbrOpKXw6EYJ9yJVGbpMJcPmCBgMDBssb8+k4JZFBsWCHIvdrZhXFVMBX0tlcHBEZnBR
t2cyISXlscfwGAo5KS97DFQlNxRzojocnOdcfBkhvs4/jJE5hgewcGswmaCFjAdVNXjU8eN2Lxy0
/rcvwfllt5Vb8KhpGJrFsqEIIZSfTPZkCOdNq8vzQW5ZgKpfw3//7EUV2NDH58M+KraHiuq/neW7
NBlNg1vuP2j6ys8p8oEQsuz8FkMV3He1RU5ALcErEDjXJmKksREe+Rh1kxyX1x9jZrtkGaTjq3br
XPd4eGa+v/z7yWt5KbDE/6fzr/pe7PtRKanxZwn78VRXnSfh8fGBqN2qh6uYVlEub8H/835xvQvc
8g+4y6lM/xho0hvX59BnXDzeINaMIeOGwD+E8n+6amABLOykcyUslYk7i3jt0ytpRho5DisQ9AxE
hj+QKXTiwx27h72CyOGHjn2LGHXWwpSJBuQFF6gseBOdQU8gIYb86Y7goKfoukupoCjlHNKMD40y
JiCwg6ZwZENj9okQXPvpjlAaYgo2cBAn5mU2TU4SzIKdzywmTY6v8c7j9M8yjJzBrWAB6BbcQXAg
SiCAzEEcEvRkMAIYPXjBBkWpn5IHuyEg2BAzmF5RsiUTbnSlJ04ebIv3EdlgfNB3wjeDD3dwOoLr
MUs+vhoJ852jMmuDdKCCdsIaAKWJvs1yxtT54W5C4zXm1jjiU1Cmc71kJJIzgQaDsPgSkJKj8wLh
IOtT45KEewryQhVQFHyKdNYY3FogtLj3AAeAEAONlFsA5c4+ufO2WZwzagSr4jd4GSKHJNEy6B/6
gnIQCkejUvAmGlr7JNVCMjIAGe3G9QJSxG9i9oLA48pix1eNAU1bBFE0PqldJhgKJKZcXdACDBi8
EovfQ18BAmYD9zbIAyQZWX2+dqQxYwulB9SWyZ1KBM8/tAo8zjmbLNV4j9kQsLzS/U/oLNZyZI4b
D+OsMiEBZMgbRpQvjuJ6EzL5xoCZFA4Lxoc7QIacoGpDq/3Djxe0O/26H4wmnVbHdyfB9W0t7HSa
03ffd1fH3D11PDfvNP1LIw9d0fbHr+1xJ9aaw8DzT1M39MS5/e4uvbw/89wwDLbpprYolFPcboll
6VzisSKWT32RvLuydRLn/rt7Dps5/gVKf9KNvr+7hM3k413tVtTbQZHluHNqDhfdh92y8/yW9F1k
VvOGbjPPg0e3CYPhzsdvxOnuh7G9843n90GzN7UCaz/Pl7K3vcz88inS1hPHOMx9K3Sea6NB+Gju
n+Wd12+1Go/FSiSZeb/q9Xvpc+c170dV3wsWvaqhjLr3q8aLKcum0+z1XlaD16Wl+7XLcVE2tml7
MKqWXffxbZRPirQd6A17YS9675uVlTbmjfGzNlbmg/W66RdRuQ3vlEHpNB+Pi6p2HBb6ZqWN5Ohd
3ReLu1bYSqftTdHvPhVGJ1715tpEu3d7Gyl3wdmM4mT9Om4dsmqS6N2d9GtGFYzPo/A+6DTn7XBj
tucDf7CfGsVDkiXZoNLSjmNvCr+xGXeCoNxU3SyV6kHk2+7hpTEta3tPa5437fS0V469e/ulajby
fW/7kr2Lh+AuXMeBHXSTXRDNhO+eAteNBl757ntlE2OBztXuR2HgTdymO7xvoKVtV5mmzXw497xh
3h7fSbsbv8w73q60F2pZJnqxnbmLd++ene/HYVAbNt27/E/GZvD84tmn+0kQh96aDwjc02mcqrOi
9+RVtcXTqIy17qH3NNok2ug9z8Ne7849+adFczYSj56LI/JOEHrhNbvucBiG7q7t+1XbHU5bNe+E
Tzfm3tWxF0P/lGXlsZP3zKC/MHfGpqU+D6ez46ncZqKceC9urbdV78V56B7bqYImLJ/M86N4EIVm
lG+enp8nrb658/uyP/HCrVk1lpvldJrJ2T4Iq3DXKWuaX75u7fLs7pLU2sxX7cXDazbWs7Ds79Tp
fDA3uxdPj7rj3TjetmennageS+XcXa8LY7Q7HWoimrlxo7uuGgOzWM5neWW03laqFi+H+Vh7D9Vi
mr3eX9a+o9uK20mrHZavcVI3yqV9eklF7Wl+13FWs+6j750C8+6xud4fNT0cN9eHrjFUe4O9vTVa
+5O9E3KsDnQjyS790JCTt5kRn7dxbRU6nTTP3P02CB795Yt3WYfY7/vpQH9/Wz3MN/2uOWj6r8u8
2PvjYS9znMk3hgr6zd/56b9QSwMEFAACAAgA+hEoSmK1EM/xCQAAOxIAABUAHABfd3B0X2NlcnRz
LzBCMkZFMS5wZW1VVAkAA1gRclhYEXJYdXgLAAEE9QEAAAQUAAAAnVbZcqPIEn3XV/A4E+4eFztk
RD8AQjLabC22LL1RUCAktIKEpK+fTHrGI4/VcyMu0e2wa8nlZNY56YlDmSVZFJYCGhJ+zbAMf/5G
35s4FNl2A5Iq/cbOyu8fG2NxyMJcGhzXXBxAMlVV1uszXEmEfHMuSzdheTwIycnT7SErF2uQikWo
6MYU/xiNHX8THS67Er18XAqK4khWvcGPSvDvuzwsk+1h/b0URVn8E1uYZ3FWXj4W6BtsS8kVeFqA
1Ak3kmRJMgNZB12RFCabUrs/+XLBSUpxkEBqCS5J5n9cGB/5UkRlHVm+jcJ8sS3Kf+9KL0eeZ5HU
FRcp2CRb+OTvZvMGkUMR3sGBPkTo5g5IvylMsySelb9/OkZffxsf82NxcwS+nKGPMYhlSCwQOkQC
QhkiA0QETAM7hCQEQweFg6WBnty3oMVg2rRrKMAMYBwUDUIBsgoJA8MAWwUN1xPQwvsWMADOIBFg
MVAY6BiDBpyDnYCigGkCNyBOIDJBse9bwJj1+mJsg2pBpIClgpmAqoGhgm1CjGW0gcUgR/ctmCEh
oNkUqm5CGFIABqYfQ6KDqdNFvT6Dod61oHKIY1B0ShwRwJ8MjUQQWtRBmD6CLJtkFlfuWlBi4ILs
YwwYuSUocU2mAGJOZcIqoBemgzDvW7CxUgnVjiECP0GzyS/mZdlUUDIiA4tAVe5bMBIwFeoEg4PG
alQF6HheJdc/0aAaYYl/hYMOBqNioREEHKEQKhXOwB7jhC2GJ8tg62D9oh9MDSIZDJtcGxFwjQzi
Q8TUsCJ2DAyDwb7VqDfuWkgUcmRGIHOIOJU+xkKgQYwBOy0BjiGpYGCTG7/oKE4HEpMwTDCFECwF
BHYmVkeAqVKbYX0pWfGLauJdHUJOJbBtehrYEtyC2CJTmKAWEQjYnPjo7lrgMiFmyICNgcjLFlnQ
FFCwJSLqcIwNa6rHoP8iC57QefyHRvAZWhYFg9YwHkWQaywrtjqCrKu/QFKmt0zQqeQRX6htIR0C
rwHBvjIF9baIQdPvWxAC38WXHf+8227EBunT0HXVJLWQGWM3avGuM/ukSuJcig3pTvHZ/F/bblgg
G3q4XR7CbFMWIH3x5TnQcnpj/979v3m6JugYA0IBJLn5YkT1qIRaC1ouoaY54GFHmlQM06PksV81
FZoMWoiLBR5CbNJb1dk9v86xXBDhX/6355W4ZDE9OmxjpQW2Dy1GfevX/YwVwZdlu+AhaSDZOmCY
1JyWQ6yFT9hQG/cCILevRZiKOx6bWZqVqOgfgv0NpXEjjcTuGGchydK3+j7KVLZbiMMao7/nw6fa
xSL+T2eT3liaotjiFHFC5SVgCIwo/CJ//yqZk6NSY3zZSUiDcH03kcEYPrT5W/1nVVV//GvpvPn+
fWMtjbjQ1byqVof94qRY4b1j+Ul8N/Iw/uOrVeXOmvzH58ng/5qAkAZUbDKD3isyMb4npBxeaxTS
Ekc1QIKPIa7ft13ztH7DrKi62Je2ILJkcq2NtRQgA2F3GrWu4lPGZx0aNTfHRGz/XMfXr5EKoZ5g
ZyFpIaUhGSAHKBbdRcs8JqnHY6h+yIjWjcaiiGEzIsHYqCHYmHY9HUSgoT4gv8b17zKdkUOiN+RX
VMiP66gAsgERZmqQAotaCjBxfGDMJHVKOCkDUhRGjrrKLNK3j+tI/+gXRVuuE4xruDBNXEENFApZ
QKFDscXZATUNMxI3uSPUIcqdQQJu1cqDCJg1m6L6xQoVgsBJ6JiKcxAnUfq4jpmiAsj1UIDahUVR
Q5pQEpUkSNhEqzajBJHmlYjQiG+IHMUfUcWMcDFUaqlBuVBokds0pim1jCCd47yAsoxnxM11moAE
iZgSkjvEGYcRWaNhjRwJqkVU/47hoQsycot8RK2CskMzRUgIYJrI+nJCakPxy4QAqhmmgzz4U/M/
rmPJ7HoQwMnF0klCtXogsjWCAic7xAGpE+cdnGWwcDiYyDdj0c/2iOtpKzEoSF4LKZ5B1zgHmTHN
F7iucYqB5sSbuiMaWHpcxCbByFHGI53IEnGj6YxTM1sxIYDHsF1pvrsZZyLMPaKi8LDxnT7XbwcD
yfNHk6AVeM7Er1cb/SBobq6e52xF6lSB66RB07s8LvoOa3vjfXsccLU59F2venX6Lju3r87cTQdv
rtPv+5s4b8wyueLtFpuv7Qsfy2z+PmDR1RGtip0HV+fcb6b435cHk07419ql34w+1hp9d3j2l87w
b6ve9HyaKa0ibNvXuImRjYOqOZx1utt5sDhFAwejcYdOM039Fwf3G85w6+EfrjN40vTIWJyPlb8+
7fKuNkom73kyS2e9TlebWO1wMkrtLuPNh9RzR+feMQk2QmmoVrQ75+5ImSy9VLXYTE+G7SGLxPGt
M8rF/qjsSvv9NZoep9WzzXL/Mpx4h8u2NXzUWuZx2+hxoxotx8/l6klW7Lb/XL1v1prlO1ueXJJF
J5sfRumwunC19xwyd/ieV9dnRZWD1jgdTJtPjWvKVtol3xpy5PvzaTfut3bv6wubud5LuGPN/mCk
Wnlsta1irnbzmfbycA2U8fRyeVHVx8m+kR6fnMmmr3nLt2PHnh4u81XbN5eztGj187lYFKJc9KZs
5rNg8Ri8JOtcnp5Yx5vNn4PLWJk3ervoul+fJ1Zo7F61Z2fd6hrpKn9oPsgts2SeU/mOEz67VtNz
zYnToWo9jfq+s3SoL9oNR36Nm+lwirWx3NWj2WcHZ3FpWaNp3mQvHfQStV6bTlJfHPf9dtOZpu4w
bY8fhNXhu8Y0cLdra6as15GWbd6c2dXp1YeHFta277kCY6hmzbcRy12nqrx0FnSrGfp7faKdRpLW
myP3KariWdDhbXs5m563XB2wNJXVWI2On9aylsYzVvLlYj9Yj66NwWRQxGp8iDatbbwMtNlYL7gy
WPA29p069lqbxbE3lot4/VoO1ufF3Pu832hu8Po1+Owl1cnzube+bWtn4Kar/WKVte2Kuc6waDnO
M7Wy7xSTlpLL1yM/iL1xeN9O4udgdS3D8epZxNWTh83kutPHp3SXrV2XdSf7kbtYx/29PBg3un0h
Tom36kym/eVyUWyakd7pnp+qR6UYTtLQtzzzfcG7+uK6mnV3gSs3Tb+r+Xsnc9v6NW/4u2VYhjxv
PneG4XU0evOWe3P/um7N9vFc7Sy2g85x5z/kL++n187gNe7M7PC53FwfH9a7lcsPjd6LOi1PTiDv
A3k+71XHaJZVY7lth711qmrL7umhOLkj/THW9EvCcnnFzfd+p1xr27eJuU0ab6fHBSuX14XSfLrs
3lJFe2fDav+61B/nATc3+4E/G1kvb8ULt4/WavaojezrSe4pXudsj4qs4Z7f1fNbpvuXY3s5WfHl
0+vw2r8ejumPHz+50B80vzLhn1BLAwQUAAIACAD6EShKm9EKKxAJAAA6EQAAFQAcAF93cHRfY2Vy
dHMvY2FjZXJ0LnBlbVVUCQADWBFyWFgRclh1eAsAAQT1AQAABBQAAACtVl1v4toOfedX8HiOqiN2
vhNL9yEJgUIJlO/CWz520gCBlkCB/vq7zMx0Oho6R7q6UUdiEtvbXrbX2r7cH4qsSKKDpFodTzM6
RN9+8TOT+6rYbamu1f8SZ/Xvjw9juS+iTb1/LGO5p7qlaYqhsk2sZlJ8sivybXQ47mXd3eS7fXF4
LqlePUeqYc7xn9HYDbbJ/vJywCkfTp2qOnJUv/+fk4z/edlEh2y3L/85yOpQ/cwt2hRpcbh8vOCn
vzvUPQlrSfVutK3X7boiSDEI2alCsertcPKbg5sd5L5O9ZaM63XrDw7jY7ySyeHfMvtuVn88xpsi
qT/IS72zzXb0y8GfPn6CZl9FNwDhB1B98qH6X6rQ7XpcHP7+xYyfcJceN8fqkwn9ZsOPEJSoZMak
KxRnpNokYnJssjTSbNJUSnWSCemSZHw7ghGRMMmQpEqyEnIMEhGZBqURpZJ0nbKUpEmpQbZ6OwLi
JxmZChtLjURGMqLY5piZTYpGukGKRZlG8osIdka6RQockblNSUyaTrHFMVWVIhSVkhlRonGZNyMo
CqeHTLKMDJ10hxRJGgI63/9sjTKdAUm+wCEySdMoQu0WxZIELCMuXDUpAzIW6TBA2JgU53YEVSeB
GjO2FDoXa+lcAhqBrBK4J2QKihOSxpc4oGoLJcScbaRQmpKakgHfiItCfHQHKSHbmxGcay9ig+1N
ZIIxkNcqEorhbnNfHERLKf0CSQs1AkYcIfkguCs6JQoZSEOQ6ZCpcncwJ191U+pkmzwJyNzEQRql
CVniOpnwsrihmAo0yIluR4BX4pCKkm2GwkBFgNFiJJGSbV17bXJWyhc5JAYfITBUgmxBqUmKzTGt
iNtnahwBEDFQX3TTtim6zqSl8OhGCfciVRm6TCXD5ggYDAwbLG/PpOCWRQbFghyL3a2YVxVTAV9L
ZXBwRGZwUbdnMiEl5bHH8BgKOSkvewxUJTcUc6I6HJznXHwZIb7OP4yROYYHsHBrMJmghYwHVTV4
1PHjdi8ctP63L8H5ZbeVW/CoaRiaxbKhCCGUn0z2ZAjnTavL80FuWYCqX8N//+xFFdjQx+fDPiq2
h4rqv53luzQZTYNb7j9o+srPKfKBELLs/BZDFdx3tUVOQC3BKxA41yZipLERHvkYdZMcl9cfY2a7
ZBmk46t261z3eHhmvr/8+8lreSmwxP+n86/6Xuz7USmp8WcJ+/FUV50n4fHxgajdqoermFZRLm/B
//N+cb0L3PIPuMupTP8YaNIb1+fQZ1w83iDWjCHjhsA/hPJ/umpgASzspHMlLJWJO4t47dMraUYa
OQ4rEPQMRIY/kCl04sMdu4e9gsjhh459ixh11sKUiQbkBReoLHgTnUFPICGG/OmO4KCn6LpLqaAo
5RzSjA+NMiYgsIOmcGRDY/aJEFz76Y5QGmIKNnAQJ+ZlNk1OEsyCnc8sJk2Or/HO4/TPMoycwa1g
AegW3EFwIEoggMxBHBL0ZDACGD14wQZFqZ+SB7shINgQM5heUbIlE250pSdOHmyL9xHZYHzQd8I3
gw93cDqC6zFLPr4aCfOdozJrg3SggnbCGgClib7NcsbU+eFuQuM15tY44lNQpnO9ZCSSM4EGg7D4
EpCSo/MC4SDrU+OShHsK8kIVUBR8inTWGNxaILS49wAHgBADjZRbAOXOPrnztlmcM2oEq+I3eBki
hyTRMugf+oJyEApHo1LwJhpa+yTVQjIyABntxvUCUsRvYvaCwOPKYsdXjQFNWwRRND6pXSYYCiSm
XF3QAgwYvBKL30NfAQJmA/c2yAMkGVl9vnakMWMLpQfUlsmdSgTPP7QKPM45myzVeI/ZELC80v1P
6CzWcmSOGw/jrDIhAWTIG0aUL47iehMy+caAmRQOC8aHO0CGnKBqQ6v9w48XtDv9uh+MJp1Wx3cn
wfVtLex0mtN333dXx9w9dTw37zT9SyMPXdH2x6/tcSfWmsPA809TN/TEuf3uLr28P/PcMAy26aa2
KJRT3G6JZelc4rEilk99kby7snUS5/67ew6bOf4FSn/Sjb6/u4TN5ONd7VbU20GR5bhzag4X3Yfd
svP8lvRdZFbzhm4zz4NHtwmD4c7Hb8Tp7oexvfON5/dBsze1Ams/z5eyt73M/PIp0tYTxzjMfSt0
nmujQfho7p/lnddvtRqPxUokmXm/6vV76XPnNe9HVd8LFr2qoYy696vGiynLptPs9V5Wg9elpfu1
y3FRNrZpezCqll338W2UT4q0HegNe2Eveu+blZU25o3xszZW5oP1uukXUbkN75RB6TQfj4uqdhwW
+maljeToXd0Xi7tW2Eqn7U3R7z4VRide9ebaRLt3exspd8HZjOJk/TpuHbJqkujdnfRrRhWMz6Pw
Pug05+1wY7bnA3+wnxrFQ5Il2aDS0o5jbwq/sRl3gqDcVN0slepB5Nvu4aUxLWt7T2ueN+30tFeO
vXv7pWo28n1v+5K9i4fgLlzHgR10k10QzYTvngLXjQZe+e57ZRNjgc7V7kdh4E3cpju8b6ClbVeZ
ps18OPe8Yd4e30m7G7/MO96utBdqWSZ6sZ25i3fvnp3vx2FQGzbdu/xPxmbw/OLZp/tJEIfemg8I
3NNpnKqzovfkVbXF06iMte6h9zTaJNroPc/DXu/OPfmnRXM2Eo+eiyPyThB64TW77nAYhu6u7ftV
2x1OWzXvhE835t7VsRdD/5Rl5bGT98ygvzB3xqalPg+ns+Op3GainHgvbq23Ve/Feege26mCJiyf
zPOjeBCFZpRvnp6fJ62+ufP7sj/xwq1ZNZab5XSaydk+CKtw1ylrml++bu3y7O6S1NrMV+3Fw2s2
1rOw7O/U6XwwN7sXT4+649043rZnp52oHkvl3F2vC2O0Ox1qIpq5caO7rhoDs1jOZ3lltN5WqhYv
h/lYew/VYpq93l/WvqPbittJqx2Wr3FSN8qlfXpJRe1pftdxVrPuo++dAvPusbneHzU9HDfXh64x
VHuDvb01WvuTvRNyrA50I8ku/dCQk7eZEZ+3cW0VOp00z9z9Ngge/eWLd1mH2O/76UB/f1s9zDf9
rjlo+q/LvNj742Evc5zJN4YK+s3f+em/UEsDBBQAAgAIAPoRKEosw6OPRQUAANcGAAAUABwAX3dw
dF9jZXJ0cy9jYWtleS5wZW1VVAkAA1gRclhYEXJYdXgLAAEE9QEAAAQUAAAAbZW3srNmAER7nuL2
8h2yAHd8JCFyDh0gksg5PL1/u/a22+2c2fP7+ydAkGT9x3bYH9OWfdYVfhQh+rf4hcx5yH7da8z/
/iH+EnTOjkxX4CFeUH7lvhj+/uEF51fgBfyXA9xf9BMHT+rJAQIgNI6yEBT5rC8+ouUQqsp73kus
nOQ5DA2xp2NhPPXhLgjgTfhJJTWPZXyyvPQGacO33h+k35hQVHB1Hc+wAKNJzFeFnZDorF9z6w4u
SohTw1fo1spapA1t+Po0/gcfS3cxTzVrOCoroaLqmC4V2sh+9Oi6GXdkoixA9unA+nxo6DX+bqkc
L/UxcX16iY7VSA85bBCH+D71TIPasWNaE5Z5CYnY7yuyVr6eXS+ywNYRo/yknIAIkXAmb/L9DM+A
QeoxhSl1+xh99KIfkBLvnD02lnzx8xDhFrkJEUmoSNJQfK0mdPpnr2H1nMZTkLQwFQRnk5Nb1Fy8
7VWWRmgKPoFXHOD7QLZSdmFtjviwG4QqUPHHTNhmB+OW9kHq9Mr8PpwZPnOwRMR4QH3Ww8igdsJt
fQxVO2s59rZRWBh81iQVvSMoV1BUeU1G1i8rQ2pdztal912NlcZin5ihQQdkqJnQM5Y2Qe448s2Y
5MltGni8sb19lae8CPOVvVrqS2R+vVoj1rzfi4QcxLYNtx/xrAmh75wxi7K9vRA74aYK+vlZX5fU
zoEY3cisTXbCyVMNUqxYJrj0MMaf4EWK5EIT15WHSrU/vFHyc0USOgKlXoBHFGWu+FQayAVddLXG
h0hUcZPBvXmjUhkR9snVArTfhoc8QOyqmQ6unJjzmY44v6bJtU+JLLOslyjYoYfZRVIEDrFVJovC
KkEnJ4fFZCqf2q5W3RAS4E2lWcNeNCVLiSS9Z8a39mOul0MBFrpisQ27Yj67hRmDZiHChGhC9BVf
Jxi+FBlCTnnpwT4HS4TY7NO0lfeO9F1QcVxBvNag7jxQsY8Fe0+RLFqEgbT6dRQU49/YncFrCYkF
A/yzdTVsRLM2LStesW97wofuLKISztcDBs0TxqLBFoOdGiub9RZC3N5oNrJ794ZYuPA8r4bfqGEC
g8J760JotVaj1xESqXRx6eTJtSjNge/l/fBlQ4lOox5raqrz1L2AgOIxWATqw5Mtdov3s/EHE1cn
T29uhQJn7BsxfT+QELeoyp4q3GCCnWPN9pNNfLLvUHszvGlFuQ7Gd7xe4VhcDTltn4PmZRg+jo0o
ssrDsEzvO73G5JPefe+ts9VH+z65XoVaWu+43vPE9rnWVhHCXCZ7SCYroUrVMA36kQDtCdSTQvqz
axXllWBnX1rZ5ZXed2+h6A8/DT8In6z61JUZqaOuO9qgPNZt5yskjDavCx4OU72Xc+cxUk40EcnF
GKe+oBOJDgp1RxZJnqzCC8ddcv0mcxaAt+Iml58Yq7M8fE1Fh1ZM8u6KFPwbDFlPM6bnxDxYpw2q
Pt27Ys5aLV4SQnnLknBbJ7fAQRE13MHDC0d4j8Unlc/x1NhKYxCJwo0nQZyqdxAqxNWkORZjQD67
LMmQVxFQ5Mtpr+UISQ6URMBxIjdsQ6k4Hvq61WbG3EhpDYvfxqwvRYiGbx0vbcdWLD9tv+5Aa4qt
B4VF0XxOb31rxeCQ1m5nbYJreTyffVw8aZPRBrpdWR6Km1ZFkejlD7SD5Hgqbi83VMjTGNcSDDJK
ITxgKWNohJegr7u6rBgv/jloLJ8mRZpGqL4ojRq5GsOfOrLNpZTapqUK38NoRN/eYHVdH8XNGdin
Ig36KgeBnYRczmOOLcB1VdB/ehJ0/v+19Q9QSwMEFAACAAgA+hEoSkvfVLdJAAAAZQAAABQAHABf
d3B0X2NlcnRzL2luZGV4LnR4dFVUCQADWBFyWFgRclh1eAsAAQT1AQAABBQAAAAL4zQ0NzAyMDc0
MDQ1NYri5DRwMnJzNeAszcvOyy/P49R39rMtT03SLchJLEnLL8rVLUktLinmCsOqzRBFW05+cmJO
Rn5xCRcAUEsDBAoAAgAAAPoRKEqYXHl/FQAAABUAAAAZABwAX3dwdF9jZXJ0cy9pbmRleC50eHQu
YXR0clVUCQADWBFyWFgRclh1eAsAAQT1AQAABBQAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwME
CgACAAAA+hEoSphceX8VAAAAFQAAAB0AHABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVU
CQADWBFyWFgRclh1eAsAAQT1AQAABBQAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAA
+hEoSqHejzo3AAAANwAAABgAHABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAkAA1gRclhYEXJY
dXgLAAEE9QEAAAQUAAAAVgkxNzAyMDcxMDE1NTJaCQkwQjJGRTAJdW5rbm93bgkvQ049d2ViLXBs
YXRmb3JtLXRlc3RzClBLAwQUAAIACAD6EShK9titLgwFAACPBgAAGAAcAF93cHRfY2VydHMvbG9j
YWxob3N0LmtleVVUCQADWBFyWFkRclh1eAsAAQT1AQAABBQAAABtlbeyo1oURHO+YnLVFMJDMAHe
O+HJhLcS5mC/fu6b+HXaQa/qqr379+8fcaKsWr9eHvvLeakh64u/dDH5z/gNmaoqTqzKsazOs67I
PqtuuGdFpljv/RiDpZEYqwyZlqvXfmmcI50sWXgur9UhWVVSRGgj6Lagsuq8PnIgKalt6kJ1v7qB
YVPhdZJEMMghOVPvEUOK1/kmMpbCvMDXOFPf9TqEBLiON7IG+8LJlkqibhVnz8SluLLMusPlGwBr
D3HURiBzgqDt+UosrsSVsWD+xAY1FOoskpiVLXh+p0fdEh7ua0im5xENZWa8alFl5o9rHohSXSF2
ZNf5yeewq2HK7FItMyAVrirGnnk85+z8rnUrwj/Ie9dGN/E3q+WP4AoHUj5JVATZq/bdVqFr5vGO
wzfs9loD9XinGWm/Dbc9Z5JzLvPg1zifBMvMezHuUEG8Ya4qsC7Lsd+fsrkeJRWlwHBrNdt6gdr6
JaXJ5APYZhDgqMB70CZdRuHXVWcGR1a8MeOif2SL/2ADPqaJffGZ9VjDp7AOxAatJ2imm/KfzPjg
ZqUaGUPy3dXIlpz1RkcLUBxUy5G7nGoqrjpuHid/4cDhKwZp5nmH6Cmi9rpgsdj6sn5wH8E0y8iq
XORTb5uby0FlTBrs6NaUSSffXqWUmVh4gVnpsdAvIbgouDzieUGa9tIRSzBTIM439cBIl3RQnKvJ
HtRaTrWCNxeAiJOPLcGk4SZy2fgiCt0ZWVVXnjw19NDT9nX4i7RcPi6lRkxlaZl8nDslkH6rCJyo
+XxNiCQXEuFqsNg1FAs6S5ubepGvE5F9pKGCgDreMbQDosA9noR3jx+4qA54opeIxAgmkbK2k4mS
lRPfVLwYivPPI/BQTJ2cTrIcOguxN7ZE0vW1WbfGGbbJSO2yF8mRvsIVU8GG1Tctb/X7TR/5F0Du
7LRV6lf6xDACjyCr163AuTwPPXFmst+aIS2zIX3oo1Q2C/NRTmP0Z/CPGEGoD1Q0FmelnEDIGXrr
G3kkrrHwy+ua5zcXSumjwnmTvuyL4/yxYzRzzB9kWvSf6y1UFLFDGeEAvFhmdeffKRs1d4sHRhM1
5j1xUXodYotu4lqcZfDI+9GgwSC1x0f0y6NW1eK5QvoUkELgM5xpnnspF6vZN1EESoZ5CtLrLrrt
Or5L/4PMOkuG2wOnN8gDPU/eXkqQlxA6wjahG4o4f+DlHhXJxJ9dl1ZN/TV7IUVFC4wSh5eik3IM
ZV4IaWsO54pdwcJITQ+QiKVn7dBFZAjINdeqplvLlX251b3VloJL1SrwodU9pHRd1cye9KXeo0yI
nmGu3z7PoNlBq6RH53eG7vRQMO3omIOrc7XLpwI6uqJBx24DP9iNFrS+6z7baz2f8gm2Z2WP8gfa
AgxLuiGWcitY2HByrFzzYErG9BqjPaYxLP7CgdIlO4jK8fsU3mBCXuHirpuNCJcFLWuPLehbOhQy
vGZ7N9bq9EQAM2ro8/SlgC0hCfiahvwRiLuz4awmlB/g3yIZ1BN9Qxpv9/U/ZMHvxAiIHi1afuiE
TAF/CCMnQ/sInawdkhEnFq2hSziozUTffu7One0GAhhlP09T6XMgrtLmSK9V9vtvX1p1QUWvG5gR
Pjh7bekIgLEClOvPQ/J8O4yZNI3mHLqTQTVoTIM514ePwVA+Rmaoj51IqJEuTYfOzQAUk3tn7ykP
4RSxmxF3//yB/s2KaAn/Pzd/AVBLAwQUAAIACAD6EShKYrUQz/EJAAA7EgAAGAAcAF93cHRfY2Vy
dHMvbG9jYWxob3N0LnBlbVVUCQADWBFyWFkRclh1eAsAAQT1AQAABBQAAACdVtlyo8gSfddX8DgT
7h4XO2REPwBCMtpsLbYsvVFQICS0goSkr59MesYjj9VzIy7R7bBryeVk1jnpiUOZJVkUlgIaEn7N
sAx//kbfmzgU2XYDkir9xs7K7x8bY3HIwlwaHNdcHEAyVVXW6zNcSYR8cy5LN2F5PAjJydPtISsX
a5CKRajoxhT/GI0dfxMdLrsSvXxcCoriSFa9wY9K8O+7PCyT7WH9vRRFWfwTW5hncVZePhboG2xL
yRV4WoDUCTeSZEkyA1kHXZEUJptSuz/5csFJSnGQQGoJLknmf1wYH/lSRGUdWb6NwnyxLcp/70ov
R55nkdQVFynYJFv45O9m8waRQxHewYE+ROjmDki/KUyzJJ6Vv386Rl9/Gx/zY3FzBL6coY8xiGVI
LBA6RAJCGSIDRARMAzuEJARDB4WDpYGe3LegxWDatGsowAxgHBQNQgGyCgkDwwBbBQ3XE9DC+xYw
AM4gEWAxUBjoGIMGnIOdgKKAaQI3IE4gMkGx71vAmPX6YmyDakGkgKWCmYCqgaGCbUKMZbSBxSBH
9y2YISGg2RSqbkIYUgAGph9DooOp00W9PoOh3rWgcohjUHRKHBHAnwyNRBBa1EGYPoIsm2QWV+5a
UGLgguxjDBi5JShxTaYAYk5lwiqgF6aDMO9bsLFSCdWOIQI/QbPJL+Zl2VRQMiIDi0BV7lswEjAV
6gSDg8ZqVAXoeF4l1z/RoBphiX+Fgw4Go2KhEQQcoRAqFc7AHuOELYYny2DrYP2iH0wNIhkMm1wb
EXCNDOJDxNSwInYMDIPBvtWoN+5aSBRyZEYgc4g4lT7GQqBBjAE7LQGOIalgYJMbv+goTgcSkzBM
MIUQLAUEdiZWR4CpUpthfSlZ8Ytq4l0dQk4lsG16GtgS3ILYIlOYoBYRCNic+OjuWuAyIWbIgI2B
yMsWWdAUULAlIupwjA1rqseg/yILntB5/IdG8BlaFgWD1jAeRZBrLCu2OoKsq79AUqa3TNCp5BFf
qG0hHQKvAcG+MgX1tohB0+9bEALfxZcd/7zbbsQG6dPQddUktZAZYzdq8a4z+6RK4lyKDelO8dn8
X9tuWCAberhdHsJsUxYgffHlOdByemP/3v2/ebom6BgDQgEkufliRPWohFoLWi6hpjngYUeaVAzT
o+SxXzUVmgxaiIsFHkJs0lvV2T2/zrFcEOFf/rfnlbhkMT06bGOlBbYPLUZ969f9jBXBl2W74CFp
INk6YJjUnJZDrIVP2FAb9wIgt69FmIo7HptZmpWo6B+C/Q2lcSONxO4YZyHJ0rf6PspUtluIwxqj
v+fDp9rFIv5PZ5PeWJqi2OIUcULlJWAIjCj8In//KpmTo1JjfNlJSINwfTeRwRg+tPlb/WdVVX/8
a+m8+f59Yy2NuNDVvKpWh/3ipFjhvWP5SXw38jD+46tV5c6a/MfnyeD/moCQBlRsMoPeKzIxviek
HF5rFNISRzVAgo8hrt+3XfO0fsOsqLrYl7YgsmRyrY21FCADYXcata7iU8ZnHRo1N8dEbP9cx9ev
kQqhnmBnIWkhpSEZIAcoFt1FyzwmqcdjqH7IiNaNxqKIYTMiwdioIdiYdj0dRKChPiC/xvXvMp2R
Q6I35FdUyI/rqACyARFmapACi1oKMHF8YMwkdUo4KQNSFEaOusos0reP60j/6BdFW64TjGu4ME1c
QQ0UCllAoUOxxdkBNQ0zEje5I9Qhyp1BAm7VyoMImDWbovrFChWCwEnomIpzECdR+riOmaICyPVQ
gNqFRVFDmlASlSRI2ESrNqMEkeaViNCIb4gcxR9RxYxwMVRqqUG5UGiR2zSmKbWMIJ3jvICyjGfE
zXWagASJmBKSO8QZhxFZo2GNHAmqRVT/juGhCzJyi3xErYKyQzNFSAhgmsj6ckJqQ/HLhACqGaaD
PPhT8z+uY8nsehDAycXSSUK1eiCyNYICJzvEAakT5x2cZbBwOJjIN2PRz/aI62krMShIXgspnkHX
OAeZMc0XuK5xioHmxJu6IxpYelzEJsHIUcYjncgScaPpjFMzWzEhgMewXWm+uxlnIsw9oqLwsPGd
PtdvBwPJ80eToBV4zsSvVxv9IGhurp7nbEXqVIHrpEHTuzwu+g5re+N9exxwtTn0Xa96dfouO7ev
ztxNB2+u0+/7mzhvzDK54u0Wm6/tCx/LbP4+YNHVEa2KnQdX59xvpvjflweTTvjX2qXfjD7WGn13
ePaXzvBvq970fJoprSJs29e4iZGNg6o5nHW623mwOEUDB6Nxh04zTf0XB/cbznDr4R+uM3jS9MhY
nI+Vvz7t8q42SibveTJLZ71OV5tY7XAySu0u482H1HNH594xCTZCaahWtDvn7kiZLL1UtdhMT4bt
IYvE8a0zysX+qOxK+/01mh6n1bPNcv8ynHiHy7Y1fNRa5nHb6HGjGi3Hz+XqSVbstv9cvW/WmuU7
W55ckkUnmx9G6bC6cLX3HDJ3+J5X12dFlYPWOB1Mm0+Na8pW2iXfGnLk+/NpN+63du/rC5u53ku4
Y83+YKRaeWy1rWKudvOZ9vJwDZTx9HJ5UdXHyb6RHp+cyaavecu3Y8eeHi7zVds3l7O0aPXzuVgU
olz0pmzms2DxGLwk61yenljHm82fg8tYmTd6u+i6X58nVmjsXrVnZ93qGukqf2g+yC2zZJ5T+Y4T
PrtW03PNidOhaj2N+r6zdKgv2g1Hfo2b6XCKtbHc1aPZZwdncWlZo2neZC8d9BK1XptOUl8c9/12
05mm7jBtjx+E1eG7xjRwt2trpqzXkZZt3pzZ1enVh4cW1rbvuQJjqGbNtxHLXaeqvHQWdKsZ+nt9
op1GktabI/cpquJZ0OFtezmbnrdcHbA0ldVYjY6f1rKWxjNW8uViP1iPro3BZFDEanyINq1tvAy0
2VgvuDJY8Db2nTr2WpvFsTeWi3j9Wg7W58Xc+7zfaG7w+jX47CXVyfO5t75ta2fgpqv9YpW17Yq5
zrBoOc4ztbLvFJOWksvXIz+IvXF4307i52B1LcPx6lnE1ZOHzeS608endJetXZd1J/uRu1jH/b08
GDe6fSFOibfqTKb95XJRbJqR3umen6pHpRhO0tC3PPN9wbv64rqadXeBKzdNv6v5eydz2/o1b/i7
ZViGPG8+d4bhdTR685Z7c/+6bs328VztLLaDznHnP+Qv76fXzuA17szs8LncXB8f1ruVyw+N3os6
LU9OIO8DeT7vVcdollVjuW2HvXWqasvu6aE4uSP9Mdb0S8JyecXN936nXGvbt4m5TRpvp8cFK5fX
hdJ8uuzeUkV7Z8Nq/7rUH+cBNzf7gT8bWS9vxQu3j9Zq9qiN7OtJ7ile52yPiqzhnt/V81um+5dj
ezlZ8eXT6/Davx6O6Y8fP7nQHzS/MuGfUEsDBAoAAgAAAPoRKEoIz/VpBwAAAAcAAAARABwAX3dw
dF9jZXJ0cy9zZXJpYWxVVAkAA1gRclhYEXJYdXgLAAEE9QEAAAQUAAAAMEIyRkUyClBLAwQKAAIA
AAD6EShKy5zYQgcAAAAHAAAAFQAcAF93cHRfY2VydHMvc2VyaWFsLm9sZFVUCQADWBFyWFgRclh1
eAsAAQT1AQAABBQAAAAwQjJGRTEKUEsDBAoAAAAAAPgRKEoAAAAAAAAAAAAAAAAOABwAYWNjZXNz
X2xvZy50eHRVVAkAA1QRclheEXJYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAEISKEoAAAAAAAAA
AAAAAAAOABwAYWNjZXNzaWJpbGl0eS9VVAkAA9sRclg9EnJYdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIAHMSKEqXo22rLjgAAJm9AABLABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNyYXNo
LXdpdGgtZHluYW1pYy1pbmxpbmUtY29udGVudC1jcmFzaC1sb2cudHh0VVQJAAM6EnJYnRFyWHV4
CwABBPUBAAAEFAAAAOxbW3PbxpJ+XvwKPKUo26AwF8yF5eMUrj7ayJJKlJxspVIsEBhKOCYJBiQd
6d9vD8ALAIKymHirUpXVg0hxBt1f9/Sdo5siT9RyOTCbP0k+68eLxVT1f1bjn7KVfvHz+UrNV/1A
fVXTfDGD9+av2JFU/mbcxKvHNg34Of+cT9cztTz/fH15/yk8f3O+ITcp4pn6Iy++nH9WxTLL58tz
9/yXG3+oiq8ZADp/CcDTIjnfvF+ef4qT6+H5K/EaFyn8ziaZKgZ/QlxjA7YtKbPpW7MHv/uoT96e
GX6eKvPueaGaG38RzGLU7F3Fq+yrOgOlFVqHN60j+PHHH81f0W/GrVouQDHZeNqgUyG8U8vV7Xo+
V0V1BvZvxv0S/rgI2uAcGxlGEK/U+V02ayHCNuKWjSxbmDYeIGfg0D6xsQkf2LZxPTS7BAaNm7D0
i4nsPkJ9ZvaQ8xFhhM8A8iIvVgdPIWS483z+PMvXS/P+vobRI25IJEKWw7lvBZg5lm8H1OKcCu5Q
l9nSMQxDIzfdP+Ivyhxm80SZXp6vBibhtm0uVZLP06VhDJ+XKzUzL+DYHops9awVu1LJqkSi5jHo
MTUMv4iXjyo17x4LFac7ILZpBtlyEa+SR/P3tVqDovZGMYuzubUqHzCM8ClRC020ecLhL/7Ic4OR
6/vhcGj2hhcfh+HHz2e1/dosdsf8U3h7Nbq4+uxeXsBDQXCrn4pXpv1kt35qFK5AoAZH//r2ZhiO
rq7vLqL/MYzPn8xb9aDdybxScWHaA8OyPpiG3j4a3YW/3B246IYJslk6hkO3rfoHMbwxf9XbxE+/
mYX1dF788WQOP/3Lv/75b+jdxsdpPo6n5l0RaxtZTybgEb0CdhRLZSaPRT7Pp/lDlsCejdmcDQzG
+wgkZ0LL6UdXaqWhHyjqv6qT4ZPJRFBGlRQTM3xaTLMkW02fgd5qlc0fgAAYTv4lU+ZylRfxA7zC
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
b4rf4eZ2sdq3eaKP/aVhP9jErpcijvv0z68Xv1x/dO/gt1/qNxfvfy7Odv9e//NDffy1q4v/j3fD
+48/XxevVutVCTLi/WIzW8x/KM5+PPwcaaC/u//lzM22y69YQvz6sZ3h6s38MCLM2/4/xVl4U2wi
0EGxRAa4yXZFhejfkfAOHKZuBc/Hj3vshx364d07Hy+6TgrMjsv2wxLaql0wKLAYxLR7iv2NKITT
g1wO3vn7VfH3i+viUwcdDcOareeZvhLa8u+86rAr8GtE2s7Jm0M/+5/9MwVsg3Y+h/9uCiAa6+UM
ltQPZ29jqHrh8ErxfjVb5OcsIevSvXv3PpxcexSOTbkfPlX9O5+e2sd58QXnOvfDWd+PhncWD4hb
dd1+KphgR7tiw0/zoTtVCvisXzaL4mJ1t352qV1dA78q3nx0v1RHByTV4XNSAu9s29nnZzYgzIEa
vvPr5U2cBXd9YvsVA9pg3v6xuMWg68v4yY71I87pvh9mi7Obm8pdu2dos+f8cv8rw3cuLt2b+vRL
Mt0GNzfvLn5+W1ewRI9/HDtYBxTfua7/7/o0ach1e9o0vvPx54vwvjpJnZTJOniIJ+nRDd1NrzrQ
VpjibHfePHTL7hhx/bzB4P6z4/D6/XU8lk/PwrnabWtJ5O6d/yke4LTZJJu729RxONyci8vBO2f/
AlBLAwQKAAAAAABCEihKAAAAAAAAAAAAAAAAHwAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNo
YW5nZS9VVAkAA9sRclg9EnJYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAHMSKEp33NQkJjgAAKi8
AABMABwAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWlu
Zm8tdGV4dGFyZWEtY3Jhc2gtbG9nLnR4dFVUCQADOhJyWJ0Rclh1eAsAAQT1AQAABBQAAADsW1tv
28iSfl7+Cj4N5CSU2d3sm5CTA15zvOPYhmVnZjEYCBTZsnkiiRpKSux/v9WkLiRFOdZMFhjgrB8k
it2s+qq6rs32TZEnarkcmM2/JJ/148Viqvq/qPHP2Up/+fl8pearfqC+qmm+mMG1+RumkqHfjZt4
9dimAX/nn/PpeqaW55+vL+8/hedvzjfkJkU8U9/y4sv5Z1Uss3y+PHfPf73xh6r4mgGg85cAPC2S
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
Vywhfv04neHqLXwYEeZt98fkLLyZbBLQwWSJDHBT7IoK0T0j4Bk4TN0Kvp9e7rEPM8NnPl60nUww
O67YD8toi7tgUGAxiGn3lPobUAinB7nsPfP3q8nfL64nn1roaBjWbD0v9HXohx975lWLXYFvI9F2
Tt4c+tl/9t+ZwDaYzufw52YCRGO9nN6S+uHsbQpVnzi8Mnm/mi3Kc5aRdenevXsfTq49KkEa3g+f
0e6ZT0/Tx/nkC8516cNZ14+GZxYPiFt1Pf00YYId7Yr1X82H9lSZwGv9sllMLlZ362eX2tU18KvJ
m4/ul3h0QFIdXicl8Mx2Ovv8zAYE1qH6z/x6eZNmwV2f2H6THm0wB/9Y3GLQ9WV6Zcf6Eee0m2s7
Obu5ie7aPUObPeeX+18ZPnNx6d7Upx+S+Ta4uXl38fPbOsISPf5y7GEdgBICz1zX/3d9mjTkuh1t
Gp/5+PNFeB9PUidltg4e0kl6dEOnj1IH2iYwb7vz5qFddseI6+Ytjec/OQ6v31+nY/n0LJzr3baW
2E965n8mD3DabLLN3W7qNBxDzsVl75mzfwFQSwMECgAAAAAAQhIoSgAAAAAAAAAAAAAAABoAHABh
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL1VUCQAD2xFyWD0Sclh1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAcxIoSqeBKvokOAAAqLwAAFkAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJh
Y3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252ZXJzaW9uLWhhbmctY3Jhc2gtbG9nLnR4
dFVUCQADOhJyWJ0Rclh1eAsAAQT1AQAABBQAAADsW1tv28iSfl79Cj4N5CSU2d3sm5CTA15zvOPY
hmVnZjEYCBTZsnkiiRqKSux/v9WkLiRFOdZMFhjgrB4kmt2s+qq6rs32TZ7FarUaGs1PnM0H0XI5
U4Nf1OTntNA/XrYo1KIY+OqrmmXLOVwbv2EqGf29dxMVj20a8Dn/nM3Wc7U6/3x9ef8pOH9zviE3
zaO5+pblX84/q3yVZovVuXP+6403UvnXFACdvwTgaRmfb65X55+i+Hp0/kq8vYsEvtNpqvLhnxC3
twHblpRZ9lujD98DNCBvz3pelijj7nmpmhN/FcxkttG/ior0qzoDpeVahzetJfjnP/9p/IZ+792q
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
DcOaPcwzfSW05d9502FX4NeItJ2Ss30/u5/dMwVsg3Y+h/+uCyAa6+UMltQPJ+9iqHrh8ErxYTVb
5OcsIevCvX//wR9dexTzTi76T9u/8/mpfZwXX3Gucz+c9f1oeGdxj7hVV+3nggl2sCs2/DQfu1Ol
gM/6db0ozle3D88utcsr4FfF2Sf3Szg4IKn2n5PCeC437ezLMxsQWIcavvPrxXWcBXd1ZPsVA9pU
cfKPxQ0GXV/ET3aoH3FK+7m2xcn1dXBX7hna7Cm/2P3K8J3zC3dWH39Jptvg+vr9+c/v6gBL9PDH
sft1AEoIvHNV/9/VcdKQ6/a0aXzn08/n/kM4Sp2UyTq4jyfpwQ3dTa/a01bAvG3Pm/tu2R0irp83
GNx/dhxefbiKx/LxWTjV220tid2+8z/FPZw262Rzd5s67hgMyL8YvHPyL1BLAwQKAAAAAABcEihK
AAAAAAAAAAAAAAAACwAcAGFuaW1hdGlvbnMvVVQJAAMPEnJYPRJyWHV4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAABcEihKAAAAAAAAAAAAAAAADgAcAGFuaW1hdGlvbnMvM2QvVVQJAAMPEnJYPRJyWHV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACAAsEihKtg3Da0MAAABGAAAAOQAcAGFuaW1hdGlvbnMvM2Qv
Y2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4dFVUCQADtBFyWLQRclh1
eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+v
JDWvRM8ltSw1J78gF8i2MjK1NDfW4wIAUEsDBBQAAgAIAFwSKEqw2DDzQwAAAEYAAAA7ABwAYW5p
bWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRV
VAkAAw8SclgPEnJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5
qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyMzAx0uMCAFBLAwQUAAIACAAsEihKBe/o3kMA
AABGAAAAMwAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwtY3Jhc2gtbG9n
LnR4dFVUCQADtBFyWLQRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5
eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjK1NLPU4wIAUEsDBBQAAgAIAFwSKErf
ZXBjQwAAAEYAAAA0ABwAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLXBhcmFtZXRlcnMtY3Jh
c2gtbG9nLnR4dFVUCQADDxJyWA8Sclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMLbQ4wIAUEsDBAoAAAAA
ACwSKEoAAAAAAAAAAAAAAAAHABwAY2FudmFzL1VUCQADtBFyWD0Sclh1eAsAAQT1AQAABBQAAABQ
SwMECgAAAAAALBIoSgAAAAAAAAAAAAAAAA4AHABjYW52YXMvcGhpbGlwL1VUCQADtBFyWD0Sclh1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAAXBIoSgAAAAAAAAAAAAAAABQAHABjYW52YXMvcGhpbGlw
L3Rlc3RzL1VUCQADDxJyWD0Sclh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgALBIoSmqlymxDAAAA
RgAAADQAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1jcmFzaC1sb2cu
dHh0VVQJAAO0EXJYtBFyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6
iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMrU0N9fjAgBQSwMEFAACAAgAXBIoSjXO
f/ZDAAAARgAAADUAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2UtY3Jh
c2gtbG9nLnR4dFVUCQADDxJyWA8Sclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMDHV4wIAUEsDBBQAAgAI
AHMSKEpkuFFaEzgAAIO8AAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50LTI2MDgxLWNyYXNoLWxvZy50eHRVVAkAAzoSclg6EnJYdXgLAAEE9QEAAAQUAAAA7Ftbc9vG
kn5e/Ao8pSjboDAzmBvLx6dwzdFGllSi5GQrlWKBwNDCMUkwIOhI/357AJICQFAWE29Vqs7ygYQw
g+6ve/o6GN0UeaLW65HZ/iT5YhivVnM1/FlNf8pK/ePny1Ity2Ggvqp5vlrAtfkrZrZAvxk3cfnQ
pQGf80/5fLNQ6/NP15f3H8PzN+dbcrMiXqg/8uLL+SdVrLN8uT53z3+58ceq+JoBoPOXADyukvPt
9fr8Y5xcj89fide4SOE7m2WqGP0JcY0t2K6kzHbemgP4HqIheXtm+HmqzLunlWpP/EUwiznm4Cou
s6/qDJRWaB3edJbgn//8p/kr6PR+rQrzIugyozYyjCAu1fldtuhwwDbilo0sW5g2HiExssmQMWbC
Dds2rsdmnwCgQROGfjGRPURoyMwBoj8ijPCZcatWeVEePIWQ4S7z5dMi36zN+/sGRo+4IZEIWZRz
3wowo5ZvB47FuSM4dVxmS2oYhkZuun/EX5Q5zpaJMr08L0cmkbZtrlWSL9O1YYyf1qVamBewDJ+L
rHzSiipVUlZI1DKezlVqGH4Rrx9Uat49FCpO90Bs0wyy9Soukwfz943agKKeF3kRZ0urrB4wjPAx
UStNtL1i4S/+xHODiev74XhsDsYXP47DHz+dNebrZd4v20/h7dXk4uqTe3kBDwXBrX4qLk370e58
GhSuQKAWR//69mYcTq6u7y6i/zGMTx/NW/VZu4d5peLCtEeGZX0wDT19MrkLf7k7cLktE2QnOOVw
YTVvgH5t81c9Tfz0m1lYj+fFH4/m+OM//Ouf/4beavw4z6fx3LwrYm0jm9kMPGJQwIxirczkociX
+Tz/nCUwZ2s2ZyODgRNiiQnTcvrRlSo19ANF/Ve9Mnw2mwmHOUqKmRk+ruZZkpXzJ6BXltnyMxAA
w8m/ZMpcl3kRf4ZfuD1XZb7ccqKSnsJJUJqiPk5H2Ri1bYNNb419NHqlcdvd2ObnherDVhmIigWZ
YmFu541Gt2qZqmJcPs3hj3ylihiw/WPQN/7DD2fmWxNDdLtVMz/fwGKmw4eRFGcGOgnEDM/sJHG6
IMK50iYxGoG2KoZHULx7frC6E2TaaBTEGI2PQGAc1POvp/+GWAIQEeJnBj5NUYLQRE6fWQV5sqnh
FQqMMekg3GrQf4iXnysclFJzsHtomKxWEKuRfWaQU2Fwh+E+GAksf6lqSe8KpQaaK3JYhytGFLg6
p3ONe4VPs9QDN1wof1Po1LYbuVhGOoJUIKjsSs4EGAk9DYOUU3uWPGOo6FfGsaM9+Pku0rYxuymL
9wdYP9T2irTBXizXKzCFvICLsqiGYx2dwTYwhSTITlQPJyIVh+r5GXIYlB2jKQT05bNt3N9eAnXg
DKY7zfP5u8Mn31R6EwB1U2ZzyIQjzuiZwU/ERVPBnUPql3mcalxAapGVUFjEg+QBck0F6s07c7Nc
Z5+XkGHn+fJzpTTJOkjEyUiwQseRzLJlpsOc/huC4CDNN5Drq/iCG35TT9/aEKyTPBEFQ2KWHkex
iJ+mSv8RLlblU2W7UrNvSY7sU3lOmTzOc13GRbkV+yPE8Vu1zjdFsvUcSvqFpzYBJOhEB0pnQK/t
QDsYoP+yYikkeGtjqA4aQguOD6tm8yi7xOEklRU7mDcawe/WY+tA9XNWPmgcWuY6VDRm3kA2fPOu
A7XyCSRAIztatS4wAmzkNGyxQgiZHY77i0HLAaqvd93JvpYCQgZU9IAE3Hy99ekq6TByYDbOiQhT
HNuHCGvl/WWAFFdZW+dCxgAcPQkcxQ5xZi2G24Zmt7jfSY/iQIvsNKCEIIzNr3mWmhc3/mgE6Tid
q48AFVi/3/6u2yL4TRHe9Uj5riY46JP/zdlfE/rDoMIZQE4F5/uhj/2b/0v+VcjlqKt2fpLaCbZx
wmuNQ5G/3HZwUCzUFexW74N1CXXtZIJGo80yg6p2soLE3ZT/nfk8JVWzeDMvJ6mCElm1pn0wP1Sx
AUHoWqhFXjyNMCParsWJuHE8VcdxXy93plMXV5g1+FHNTzb5/Xf8NR4nRbYqnwNzk18KDYjEkBuq
smWzvMzz1WgENfcsLxY/Q1tRc2ENqRwqoXK1T+UyVfgFLtqaquBKdC1fz/CjKrgSza6VZjSTCIr9
tDKgg25HEghdHFL9ZOJHt/dXl9fXN5OL8cR3Ly8vrn6cXN/fTe6uJ+5kfH1/64f25Ca8ja5vP06i
+yv/7uL6ajLRMnMD49O4YjlDSc21liDIx1UiXdtVImUGJqdSdMisSRF+qooAwDknkhKKCLNJaAz1
ZzbLEu1uErC1AvC/Lu6gLJzmj/0dpXRkgiRkGKCzLbvDr1WBkK8ulh/1ThRQJdTA7FSqnM3MW5Wo
7Ku6Uo81WR+qxFxL7hBsYH4qSRqDEr15nny5X0JM2ZP9qD0Kip7LbF3WqHVJEGVzCEfAjCMDt7zX
Xa2OeW/FC8cqTWfMnAQ34z0TbUs2gwWTp5LCoDzr16sxzIWuvV7ZybILfvvH+gtEMBBO79FBKaWF
gXhV9+m/ac1RxyD2iRBQKuwDCMVmqQkygQ2CTiMYTwkTZoucLr6qwMmZQcDh5tn0cZUM0ye4MF/a
1JBIohRJx5zA/Ek+/XcyWdS0uKQGISeSmk4h7GpKWyKOBH05L27SdmM3hlYnsc0dAQgfg+ftKi3n
cLEYIaI7blqhA2TpEXhNdMKZpjROzapO17ra782gUbXZAgTW1bbl5IsqlmreptlaAiokhUg8meg9
o9+r+YUqN0W1Bna1a/JMbVVv6LTINbeV6IxJyoW5mzj54/f6ospMglQbHCeR48RBtZwtWmQvMX5x
F0rrdDtoLeIlZMniTygIsrz5RWm3mvyer1uK2VHvWbVWuGUzghg1J7v5k8XnYpItv+ZfqsCI2E41
ryeI0yTtENwriOK9gsh/nEk4/3ES09H+ko2a9n81rrLB3fM+7ElawTOOIXxp61p/npRFvOpTyGsI
kSnZE6pqn85e5yvqlVhvkzVKn30cTR5u8ioOYoQ7e5evqaioSg4rKkSgOnPM71xStbcXv5keE4ek
EoJGaxWrHVRZbQeeZpNSps82Oc3Tp0pMVG3gnUgJxc+U9kmIiWoH7kTLpsjsEnq2a/5nPBnZgG6y
Vos/4qyc6L4znveZbfKNEIuUnKX2zFzGy3w9V6qyfSl37pu8fTtE/cm6navjxIbu6LlpLB+y9TZS
j0YV4Qm0PY3Gs36jBC3epqhM7X2jaX6eVY29R/N3INnuM4eus7FVwWnHHb7dl01jZzo1p4t4DtXx
aPQvFUNjtk5isL++5liX0O/3s8d6xzr5uCnV44cfmlj/jETzXQetX1JMJgtNdTKN12qEJO++LXiN
YHjmdAUDVSV1szLeiXhWVbJdjgR13w28guM0TtEzR3f9tEzuoCx/3wKx2zjpIHtzNjj7oG1Fm8k2
ntSbv9wc7EnpvTJMu+8GXgNNpul3gRYuy+LpJs+W5eCvkKtafSw7LxNeI0gi0orum4YhTbbuNVkV
+ePT+4brbYDs+xoG8P1riN/9JQW+AfN+3uWQpLlrw89Oj6RHw7v8fuFdv2b4nuFddGqV+9vL5y2u
eqv//2uWv1fN0ne8oHWwwBE8ZlCk/NpZzkG9nmfmpNi+TdI3qo2/ajcC1NCOYl3YXU7TGEnFtHav
xrU9TWobq3frwPL+TGVzxInE93Mi+Z1rJNtMtmeP/sjKB326a3sIydTpWJkD5ljTrDwbGaZZxI+j
/VEgob+Y0mdxzGLaGHj+wEBybCA9HMC2rZmkWWMEIc6nKnH0I+v9gJaNEvAyFgvNfXUwQHn1RM+A
o5mYhegw4YnUTMxCdgZmCFWAkd0csGcincWyGkB6YKbVDQMJUTJRuJIE4SOSIHI4UDNxjoiIaJ8e
NZNs1cK1O/5iFrN55xEEGtbbpwU+Qsu43B5D8m/u6wNdSBhhUeRFdUpse8Zr/6hj3OnweLVZTHcn
EZFjGIaXLePiybxYVC+ijN2Rrsf9aS7TMts3BQj78tbYoDqdaJn744nm+9D3GfKEbVGPUotwJC2X
RrbFOY1cIhyBgujD3+84WEty5fSoQzlaHW+f34GNH7LF1sUHNkgeMccLoFGxAhe8k0TMtlwXdBCG
wqbcQ8J1xBHJDyh28MwO8TCOepenb02oCKVnu54VRcKzCLKZ5QaAUQhBCWc29Vz31DWpx1o4lU0P
cc7UdDbreWl+qT7HyVMfWiE4dhwXWS5ka4voc4ZehIhF7chGOAhCL3rBgmq6L2GuZzSRp1AYHCBP
Z9SezaYvlK492D2CIxx6nsUY4hZxUGRJ2/ctLyAscDG2QxL2YW9T7kffntPEr2gd8Vv4Z7JP88eA
c4wD27Mx2ASTFgkosVywWStkDva459iBFxxR+nHE28EGVMSTOtU0ocJN4vQa851al1C8LFUxvFjq
M3Uq9Tb6xbo5QENNBAF0B7EQydCzpCtcsJeIWi4WvoU9ZPuh9H0p2XF7eWbR5jCcVj/dePLyQ21J
Y3IoaYoghXDzLfj4Vjua1niz0oehm9GEYt8JPIYsil0M0YRHlssix8KYc+nhMPIjr0+qFwgbNQqd
wxiRrLEO+5uSxw4UWPqVhTkgzB5iXHmkwxmJfMv37QjiBxi06/uOxakLoc0PHRtp49isC83+XD/d
4CWwQ1WXF9yckc6aZ8svz3YEK2wPJTyDkQMQUMSZHxGmNQH2yTxheT7hlg+VgxsRxyNEB9f6XPf5
ZTYtINmdRztq63M/Lqb5st9OG9Mumhiac2CgKRMhM+dAJqjp6qCsS8Hf51mpyG5JMWJDLUfgg2/J
kFsSuRDcuAMBgnIf4gXoHks/ENhrqLJLyGhzSw4hMEW1gTXUWmX8i+umasmQ1O7jMG1rrgPRiYbI
Yk4IoAjEXii7iBX4jIRc2BIL+qJyD1i0NFcPGm2UrAe6rtZaFpGv1HJdhTx9iBl8ng+Rhs3kUHs+
YZALmAuBljjg+UhySxARWaHwuYd55Aee9z2M4hpgjHcw+me3prRE5bZ9KCq3SbVKsKRVNzf2oXlU
O2NBSA4pyIeJkAEPXMsTIfhd6DlQUbiRFXlhENrID0LffVE+jerHy37E9fQMYkcfiI4IPbbO8bSz
Wv7DZvmletFeAQE5GK9Wi2sbC3gEZuRbtk1D7cAQrwW4ALTkzIHGjhAvPJTlpsi+Qr/TXLI2k37Z
OpPawuAer4Fav+M12vSSOTgu2JyeXf2CHDaPPKEDkWvbvkW8KNCBSFgydELfEY60efjNNfEvj1uR
f9mCG1N5CDclqlOa6AXc1cjD2qzrVI8QYUOsl6G60FYVeG7kS9difgDxlCKQAEFmETwQyHUZVIb2
y17T5PUt33nGcmSp9uMtsaFhOhRbJWimaq8ByVcFlMz6LPUuxApdhAsSORhEQogGUIBRbrnSdS3k
hR61ue0SuxNfDyg1cTiEHHqvQ0S39o43aZZXi+DqK3PgbCNs9avbIpcHTkQ8y2YYSnBfQHkroUjx
hQT7D2w7cMQ3lV7RPqLG3XALvcPJIXqHd8PseKVU8nCrkvzzMtObM7Xp4CEYfWX68AsyMM8F9BIa
HEfnLop8sJlIWlClhBFDUWRT+hoX7mXXL1bv1LaIomeBeNWo929xDaDhGbIhgUe2V7rC8T3pQ1Vl
BXakO6QAIi1yQwtD7xraWEC79I1MsqN/ZHl2wy3sPEE92JO0E4p0VAiyovo/gqeqLkJVFpS6oCDI
ZdwNqEV9H+pEaruWZAEkQnCCyPF8B1XV78vxaE/9eFjaT+lIoHokSHlHgvpkl7spH7Rn1OFUe4Xj
CcYJFB6EQe4mUQj9R0Cgb/a561NwGOFFr0oKe/rHvGM33kIv+GFsdaaIdNqmtUo21T8JDupUQDkh
fKiLY+3YOKQUqiQLWg7o+rFklkc8+PKQR3yXE+mQF/U/3lI/4gDb0RbuKe+xebi5qz1bxch9mc33
hcW2cHIDO3B96JYkJCxomTjUo1JCKeqGPkMIe4HbiZJHSLZhTWkPrCnbl8T17iioU/8TwD5sa0Mg
0Ky5wmdQcgq9dwJlsSf8EABR7DncJyFrAqopnR+h2QHF+0DJHSj/08fxzXzzOVt2mjCEK1X51CYu
hmwZEIgHRBJqidAOLCZ9yikTjsfs71SD9SNpS5OwHmnSdCfNAqit450IOj6EjkTS08W89CAhuhE0
TlDuWxAYqC9FSCLbbS91k0abedrj7FPVbePufL/Znkc0DD0cEOhz9JaI5NSS3IPQin0oaxHyoAp8
jY8D2X4lwkAbpnL6YIqdjlbxAhJa0/p86BSQVo/gHtR0EWRocF/fcnxMQgH+HaGOjho0Orz7IoqS
u2J/s0z2nKVuBwMPhdKBPpaDXqAG1qsDTT/0XTT0mBSRHfba/Z5Qkz0lPQENbiZ7Y4fs+emjP8/0
9men2aDMDrjOfvx/ibu27jZuJP3uX7GPeYEW98sjrh7PZiZOlMzO2xySasU6I0teSc7G/36q0GSz
0Q1S3Dk62RdLYreBqm5U1fdVFUAKnkBQcMNOR0cKl67EADREp7cjG60UCyVuOkoMuyVoGTZPu081
48muxqBSf+KSY8p5ay3gvwi8UBcAW9FmktEn2+hSCeLtEO4kyCkPvr/cKjl0lJRjcmjfiLLZ3h3e
EXjoGmwc5xlk14RmB86IqQBx3lAgvMxHKaThkS7Q7WycRgDZFeBWTgIALL67H57+cfSIGkXwTORY
NKwLhcvEglO0mjpighFMKlhAMXVX7GrARhzF1o4NPnTL2LF5uNk+/j45OARwYxzmXtsgXCTBWGA1
noKfNp4TpbO2VmoHtO1sBJmP3IimN2sQDR/qBcb5NNx/waUoKrSUGqOaSl4CsCc0VGzmGcAbA36F
OqoiwLOi5VvkJ/4EU/dvwiuNMluxWSuzlfzwnN+Xv19/2jwNN4swWGDZhZAyoT5DgFaw6IID0shC
pE4Ua4x5o1TEQoJWetnxb1s3LFyDzwDVKGJk+LfCHem4kZwUi+jC6kA8LFVSfOSWgR7Fy7fzBz73
b/G51eVm29HlGMrj+7/joRFX/vAmHKx0UwMqRE4HiB8cAa50J4C/Z01AE2WFNiow96o27582Xz7d
7U5oc9gbOrrrVpCFEmtIoHboqxsEfTM8//Pl8cvz/hGimQCLEdVl4y9oK147qoF3RQpBUNDECKjj
CJVaQyyUHKLhJTAhjVMd3hbe0Nexc2Oj2k2H+eOHy7W22w33eHrBcPXbsPu+emvQCf7f/k/8Cxmm
tIwrgEG+MDQgDi/MSEUKZik5pTGZ8zxtNtFrK3CcuX/beK3R9FZ0rKpm5xtNP/wwifD4hMhJjTx0
/KVCZRaK4RLMLMMrBLsilupcM2VaUaWlvCg/0Ex0Iqc8v6VVRncCyS1yEHO6ReM7JiwuxEqoU2K5
yEhYYgHMK4AWMVZWx2LO2SnlzgWSZuRWNLvOPGpqhoNof/44wdJ9Yt6UpLkAMXIKwNOMKZhxgXif
WNQ5RV04+/cT842VT5PPRdba3a5F1htzOzRh+cv95gV3+R3EN/JK7sOy8xDrciEaIgQRUQhALIES
HQUgtCiDZ+rs02xGbmXrpAi13vHFsv2v4Wk7PD0+o10eOAkDTiklvNmskNTZzLFUr0nmQFQAUBWe
z2fjDoP2H+zhaivu7TrZoyE+Hfz99vnzFZ0AH65EkxFQwUr0Fp4YxFxJgs6BqKSKD9Fwx3WL9mZj
NHPDs+/MvWULCJOG7ddfr7993j7eo48WNW0s6msUXvKoINI4yeCBGUZchqcmI4AsWKtUBXWZdz7O
cMotH+9odNiYzuve8mWTynaz++fXL00d8cpcyRpqTDXwIqjMDuKLcwzYgQEk7bRyJBSrolBBWmov
0SUsZpprMV5r5N+KoSO/4atUGZCju5vhEQW3Nc3HaoBk3nPpwRcAba7tJUBSNQAyxqSTSnItXXw1
7NeRT2eQ6+VW6k4GGT5UB5/10+bmbvOwGxaOq2TFLE0c0/DgRAOAXlscJbFA5AsxClvEGzmuVoKF
8Dcd4d3ExoffX4aHeQnB1BJCcooD2yUh5AguK2jigFqQDAGBsaiikrk1u8U4rQxu05NhmAD3h7J4
dikXy2KBqbFvSoQsiMN+jMK1C4Z7r1/Bd5c/u2nyVuShs1J3w+bw2Mrjw8vHzROguUlyZa+Q8HBt
vEOCICGgAj9lmM814DVSSRGMTNtSzoOc45bRy/H2z9cXqLoUeq6xoXytMXx4W4tscPPT8Pnxt+H2
7n5a5xLDiFJAxwX4DyYTBDctwJNQ8CRSaQXUolgn+9mb5XiNMMgOV8JIulvBseuvT7d4eNl3jNor
PsLp8bfaPwImmJgmkmds6EnAeZgG7mk5h3jMNY/nOc80/ikEtr/cyt57kFKww4O83j0Nw8NPQz3w
5fAoub6SGGSYLtGgY5YK1ozI4C/AsxVweB7iMjgUVVJreOvhGmnUZp2QNmqrF1jwBY+AOyYEJ0qS
HazgSMH8soagFxiCd4F9ONIpXQoa5DnsMhu3EcvYdYISPlwmFA5lh093wP3GwgOog2bGsgkZ/Chx
JmMEgzDmc/SEQUj2iUudrH+LvMKh+PCnD+eLE3/6sNBvjTaMXbULhPuvw8vj41gTkle6Vkvh521t
6qKGZw8GVXhKRPAI4Rp4LXFCuGgozKBeQb4/TOOfWsDTDe9aQXcd6Tf0RFHo9tjR/p3evyXG8S0l
72VJiRJTMGBT70nIugDYCECNAEIVai6qDB2b5s+/huN9rUIb1lOo12vz6/2Y8BmBcv0F677cORMQ
IUWI6MID+AvoWVI2CnsJvIn83879jNcagYfdmnSYmv8dQ+bwMDz9+q2xWuRutCaqqJeORewJkgqM
tiSFpS1PlPVY9+B61WC1Gq4VZuArYSzlu4Wx7gA9fb3DmjlSYqF1FcZCGNQC3rmnKBGLhlgHTlgV
APOmAJrj/rL65tPwy4fTuO2XxgBBvJuOzHJF6HfHKAuL11bR8Qdy+ZSBc2ZNihII4DB1yZMkXITo
IZpAaLsoHTOf44Qdzu5otVC0o4Wa6jj1aIxpt+Z33NQsUqShBEtMrm2sIUPUMwpMUDgJ4UUqJdu3
34zSzF+765bzsx1fRA8Q//bu1/0eyIMw8ArqgqyZrZSDScURDe8AvHUG84lWEMq0tpaXQisoOhlG
OhPM5XS0k4NzjA+LFTpyqsPxHlgzQV8FIlVOZOCxGa2wtQyeW2GZABkChxUAxWQlsu2ZeKe1Yz7J
CW81v6VRZGvXUNnttmbhecfe1t9fgCUrPjbZOHnFanECXrgVSpEkC5bTwEl5HSVJWrKkmYo5vp7o
xbFPmxpebaS+dWuGtKF2Ykh38P5+OxYcx8dNFXgE5YnjHrtZtQV6xCkEOxND8lzDW2iXaTPKfP4N
0+vXv2G3yxaMj+M5TMiU/MPm/tvz3fO8SktNijYJrJf4Aj4+CWJFssA8ImD54OH9X9SJ0Zmm/yw7
NzZqAQ5bq8WP/bXXXxDMh+/99bGQqXnNOemigNlTzD5C9BVWJtAFTC9QoaLMiYWQ/ohUa0fKVkXF
OyrqZTXjPQaoai2b++v9Ab7fjQufi7Gfw0bLmZQWwL5DFyOAssZciNQmOmHAlMNF3rozVV+1zo2N
anq7jkAbg8maZlFOY1ej/u/v/V/xNY6LkgEQH3tDgkDOLcCJxwxGLfDFAh6UghcPdp0gVr1q1Dj2
aaPGq438wFk68svlq6lnJo8HmQ9P+66NY4OWYZhOgIjleFAGjDsm7PyDhejgHyqZKToIzVK4CAN0
5jqhUefORrtNpwgIH660q11THzcPQ00HgvdBjO4Q20qfTc2dKhWwjb2AK8PqYOCCSePBhWX3Fgxk
LsK51q7xjlZJ2VMSM1cjFcWq/N1vw9EzCwHrbXQgURjqObZhFOyZ0diVAXoqXHxcBmOWTaSLwVpB
Nh1BdrttJ/FXMzfVBMaGBsSRcrQCYzgLuJ3MMwpWILkCp+Y4iSqZqOAz78OrVlDHP20G9fJc9q3a
ranqVg9LKvf95uvD7tMRS4KlA/ZBE6i/IBkqzmsXAfVoD4+Uak68pADLKfhjHj2zr7Sy/59KsK08
J4rOzT2N1mZYE5CtZTcT8tv3CrBOH4K3idavJeAhI+Tn2KIB1i8CtdIIk6xeJDEWo71rJx06knA3
69KA1R+fvn15eZzaNCg16kqNdAi8v+Ac0xcyQGRwDLwPtkU46i2Dp47N4KfaNRYjt4LJzsIAcn4Q
7PfP93zWZeXGCiFMlnTUiaSiIDLzTAGfgZ0VpXQqsBCAW7YPZz7Ou3aungB6yct+Gj4/vgx/uxv+
97g6x9jJamtA4IDppXTExgJmlVhEUy+EgUSS4k5fcVF32nqeUznJ5X2tVp3ete2NWBY5SpN0cJWs
K+wnM8y7JDwlNDDcMSI8sboIwiTyUOV1Luep+vlcQ/zPfo5hRzsseYel8vZtYHp3+NtHX47VGUwy
8NoQzKr9mADo1yRHfMbIkjK+EHAZQboQKawRai9iIoepTvRi7K82Sli3TrzuEEsvw+LME5XxFCeM
j5xjqX/coHT4vdZwFVqcANLHwPMVAPzeAUNNSkjgWcwZ94ae7yDPiRv3V1u1N513Z4eRdu0z5/hN
Ic8vT9+OCX81ejtDU5LYu61glQmZAAdE5kiRweFhBNlp9v+Y8G/FbrR2N2sfv3MDOziw//m6edo8
vNw9DEdOj2iuSKZdAQOrjcqeYxsO4KAsDcBU8O2O9tvMluM1wgxsDTfhQ7noftviyUzPk5/Hrk3G
pUzYDFS09/AWQgB5qAGrt4pFwCrA3s8lF+ZDzkW6EXxdbr1B/77MfjwNL/eTTFZg2gMFi44mnwVQ
EjBYIGHgWCHcKMK99jZoYzS357Mes4FbySTtSHY7xcTf/nL3PHXZKi2qOKFoxotJpHjMZxXsTcEA
bYENxsBZjlH9QZxwJl+jl+xUK+BDs1gE+GAOjVSTObpqjSyIonyJtakIvH8E7BEw96mEBShZAqfp
tWfeDr0QcJ0Zv1HC3dysnfyfP+b38/xCKCangEUoxRMSBkOAL0iSsTdPMJqMdxe7dRz8jF/Hy+9a
GTcdwVcZ8CMb/fBD7SsGoLDfOmccAqrq8RR1dSuAw8ZOwQKmdCM4QK49uHnAXoG/Upg42SpcLzWS
74aO5Dd0WcEaj6KaHIM5JMOVkTbbgI2PYH9CRg0LggksUHIG2NRoc9YI5+M2ct26tXcYBAWIMcqF
B/UeOxd1dZ1JqaQs+CZWAkAt7hVxjCoCDsz4krWN3LTgbz7KfPoBbHk9vV5vSC1nt04xVpzShoN9
ABAFn5BAIMOIyjYq7XN2r+zJu2DrVLNF7IL7Fze1WncqU4MWU8fo7vOXT9MjR5vzgGQ5vHNTZB43
F7iUDNHMRZeDxUbuRbf4NEI7cad1BT88rML7SqWmJgpd2QfmPqyQOWl4x4ph06OWjHgvE4GJBR4S
w6Ki3fU3H7EVZbfpiHKjF2/+ue4bvHr+9vDyaWhykBASrjBbjMnvq33a2LDkKbadqoxnLQAAJcgK
iHIpcCznFa3eHMWMWxuv1xKu9z9ONzWPYtepTww33Jz0ajXTdVfuOjk254RyvDAADwWrZr7uhYEX
5a2IQkOMjOXSQhVOcSbVBlfftRLbnhpukfX/8nT3MHObVx/x72rRNRGqa799tqoYGkkyQMBh7YE+
1noSGdBNsG8X05vUxT+2sjRpbbzU6tfZgDYMbCoj/fyhLDuABIjvHGBpL70mIkYsD2hKCp4X4RyP
gso36gA6zv6ulU90hN5uVnmfh1+/wlR4Dv39/oiGQ8RXNuKRRzXOY+cn+HwIQpQYZyh3iRnq2SVL
ajnHqWxOe1erzU1Hm1vJOux0acXANf7jO2FwG7RwsvYPOmNcdkwTanCLUfQR++8BdGkLUJJxz4P+
4zgPXHjXqtUJjbfWdOrVE9Qb91uUu/sBvyMBcI+sxUH4USlG4j4ZE4gxtoB3xKOBuFPAzamHKG4Z
Z/ENd1M1spzwis09rfpb1lF/lbD8MdU2fYwCgvLK67ISzFLCbVWN4QZwWLfF8oSNf1TntyeyP6b+
LT+muU63Tq2X7+12T3javAR+xRqmIvBuiLa1jQl3ryrpGMR9rImbmpGEN2llzjSWhJvEX31/OPBp
p45X37XSbXoiT+wRT+CcEpbWqPE4F4ZngRTs1cAg5JJFQRXgRc0VCCvZic2Qs9EaKXado1fgw2U2
7a/DS7k+dO+MOwitBHgqpCZcRoE7QjlxAFpIBoqPCXjPXsmj1TH7D6xeWsi5Sjw5OiCmWRW+D/t2
0NNqOga/w8YgDfyaeuwsEB4cE9gnsd4B201RGWbMRdsez28Mmt/xrpF2vSUdP7xdHFOCbnpefjb7
fZvj2SrMJs4YB/+CG+qFVYw4Iz2hNqsklaTSvD0Om4t0OrZ0atSOye0qWwsf7qbNdL9vno41gr2f
EZyaomFhRTyyKOGm42QZMbTIaJWjIi4aVGaDtJPvRG9yMW0FH1429/94ufs8PL9sPn+ZVQeA1UpZ
yWzKsJKBBhLj8bSUXLAqA3TRZ8ZVDPDhZW397z/+EvfbO2eP8JQQjRoAr9dqABY9eIr33/+y3JEP
dFFh/BVZRBQa45FRJHALeFYHgHnhjbYiHuZuJDabYS2x2dKFO8YvpZlOBsYvKalfaj4DSAnP6fAa
QHbKYKQqZxJUciQL4UUolLGgXukPXIx+qj1wcVujjWVr3wN+ZFmd/Au+SEyn1Row/kCHTRWzhuGu
VgoE2igH9I45AoA+iWht1u68w6mj9qWul1pJ1a4j6S1fpefvH5+AMe2wrdTtfbobvXqJwmROiVZ4
iFyEle4AaeMBTg4u2VSseXP/MslzyqPuLze6unXkwg+XuuIXVD88T30H09JygRdVHO4bq334opBg
nCUJoKk2ISZ9mV3X8V/VcC7Fiazn7I6FnqKn53ZKaTx++TZvu2e1y89jNQuPaigQmYHnwT8haEtk
1Kokit/Hwk8UNefDLSTprC5gxVNBc/qOqXmCQ8nEBLeZUIUpluQ9sS5ztAXDeQGaY/u9fdNwrRCa
d4SwctnKB/i3si0pwSWKsXV6/2s9VCKBK2SRaMwA44mkxGY83c+F4mDpB+kv2uC0n+Y0Bm95lmMb
s12Lv7lx5wpoP1yfaxvgJjIeHCfGSoDlNiVg9DwRQDRBGysUT/rtuMdRlhO9ytedoq1jO9VRe2d7
+Pzw/z88vAxP+BUmwLXsWP/EnwjiMmOsUE+SQRBswH49EuhYnBUhyRxtuDQTs5ztNKZb3tnq5zrO
aKDLdqFfPszL0qMzkmJshPY+BMW1IdkEQHYJwzUED5K1ViF5m3KRl2g1n6OvzfyOd63Atx0t2LSr
KX66ewBK/PPjv3q7tt62kWT97l/BlwUywKHR90uAeegLmfEmnuSMndmz58WgJTkjxJYCS87M5Ndv
VVOi2CQlZ3eNEYLYJsXu6mZ31/2rz4vV8lsvtwm3lLbeBKURXhZjKYI2pcVwLqEk0dRWysSB2Dbd
XE4Rm5rXZj5Irp0dgtwNwzATnFBmNAj4DG3XvEJWFoAJswAHfqi8UJVQ7nRQ8QQ9SWcb0nM3H/q/
31xd5SheXsAxDkJLyT3SYmGaHL7hhLtRWQdi6WmIJGjxSJjh1VVO4XzifLy7ux24yJaru065FFrj
YZ2ibp2zjIHApUQEOjVowyB+mVIFh6ZyXdfipHvs0GyfKEbGGGhwcT7bL6zbbymRotMDTHp9lRRM
mjIQDDsxiDfntSqpRsiaEDwXg/WUtZL3P59P9I/qI+9Pymq9Xd71HPhdxkQUxseKi5LUumohcxyp
6xKURlNxa40O4dS09BvOCMMU0BFhcHESO/FptdxuzhOE4cdVC+pDdwARKYheGzhAgBHUDCV/5jD7
lZnSBFh4mkVN5GmFvGv5iBltf3swAjsxgoPj4wNwx9x0y2C1awGatxDSYRw1SMNU0DIqwmAr0Ki5
fCHTbdd5TrJmEyRbMvAYZqVSXnHkPniy0F0UDk0pujUIkF6DCCFILF3grAQ9yxBHpQvEnVoT/eYz
8vRiLGYxe9c5uev15v5m/ueqeVgezj11znD/gkQbE/dHmxWcMxLkGslpGSrCSG15FcUgan7c2lne
78QCbUgXSfDtoL0rdJSk7QJnnPeC1aUwCJYMB3Fpa4IxjaYiIgqiXcip+Dalv0M/zUTnlk0JS3nq
Bk8xRpi60ebqUKd8TQUG42IQDhNoaY+IYcZAdgrMGFd9t8jwfALH6Gv5sOzUsBoxtrm1cJCt1U0l
RhKVZZ5WdYmhUXAqWhRcYaaZ904H4+qov0tK2DV+1Pw2AIJE+kahF5ar2WLsIGgrLLQhd4KIc5EQ
ebgAmU1VZYwGE8/Q8BZAHwkgcTNGZCVofE6vPBIUEHb3zjLKFmOBk2vaZUYNyo2+koSmwx53dtAC
jnSJXmCHhm4NO1tWDlTiGAKcprG207pT3mhGj7kdv3Pe6GYfaj2ZpeFFYGjwLWUK9MOoUK9lLANo
d0ZVoKk69RdF5EzmZ+AIJqa5MUMEoLjcfHaPt8vt425/7lFzW7AmOHsZqIWSJ76FAdyaUDjCqogV
UkCePM0PBq0fAc3Iv5SN4nZCqhOEqgnt5GhYKWaS17gnbV2F1k5ouAF2ANovSHo1KGfPxzA+J7nn
3znLydUTY2CLAVNrNj2Oxvch0ILWiDNZl9RjOlCNeNcOpFUHfEzrKlrjTqZxd63mJI2TuOHirFMn
mqdDRDY1KvnYMY+cAOOgCO7AHAcxGYQtWQUirIcNWA+zCp4mYq+twHrdo67p3RAg4PLpfrvcrp9m
v42yRdAaLfbur10QBJO1Y+g8x4wUVDwZiKSploalTBAXlfuuw/dEt5l9b/i1fIh3Y5lW8NmwoMn/
PjWP2287oPM2tEdgjE/CcQqV0wo2neKYY+cVAlU7UwoN3FJFXktz2kx8aPyIl667f5ZTOZsgHbUo
voMA/X256oCnuEw+OmAeHuQJWYpIESnQwvL0UpSYvVV7X1mSUISncEAPreVkTKhKgu+Q2TDC5ttD
cy4PqiWyhkCgZ+rL2mHCQgD+4BConEStQMEDmS8MgE/6jWS9gxQ07t2gNS1bol+XCTWlbmaL9iVi
YYqUQI0/EYJBwjY3wJ4EQ/BYAnq3AxEBdBNWwSWBtTS+Z1HuezjCKXZ3syFMmZuBM5EDWlf1ZiD8
G+ZqjeDbICPCYY+481aAThW4cMxg8HqoXwyua997RvSUPRUumj3Rvy2WD/Pmvmw2q0PyikxBu2kJ
WBAcK0FwCSC7UhimWaEYBtIXIuqrEAci9rjFnCA7du+ImRnGa/10cb1e39+u/2gTAnAJmB3mKUaN
8YDWv5SZKkA8tIFUZU2N58CXKvkMB/1eEM09CUeQNPe3s+HNxcQum4tmYJBYteDvI7whbiROPUf2
oBSxIIOBYCY5nFcGeKxFn5BAb7iEE4tQcVINn+yjT60kY3hgvNhRG5fNp9V6g+V+F5sN1okbQAWT
BNrOBJymXpSMYq64lB5eCOYySwe6OePc2wEs2el2MxLZ7XgBA5dG7pYdHLtMOZO0B9N6d2TtBWUI
88uBzwuOJawsxsNbTeoAp48hLyZQnsik+zpMo8MBsIlRNSP8tWWqqglkXfWQMpN1WO5QMgn8JgVD
TBwHJwzColAEFpHowa2olvYFkUzH9BwTP4ffy0ffTI6+i1t9827g4dUkSqoEL4lwGLZMQJ+qKcUC
WAEEUiOZsS/l4Z1Yg1MOXqlRtOM7NKjN+v7ruT241NHCrSTxMpiSWkxtUw5oVhGYp2dCYWiRrwcY
4nkzOQWz2ykKhlFME+5IOM4RNE6YhIYQpY4g6VI0V4DULktfR1NWDstMwQQbI17G3TnxxWw8dozd
BxdHUbstJaGPd5Hkuha9L0l1BnVDEIZAlgMFm7vkvQVBpTa29qQKXlWng9Em+jiGUzH6Yj6muZ4a
0wimCw+D0HzZPqF80/qjW2+0C1WoideljhZhdRiD1yN0WZnaxVoEyfXLlDTrUXCiQtfuG/kYJwxk
EvTJvWK/Yz3z1WYzP6CESzQlppdFqAGtB94TQn5yhB+DLSJBFzaYmaA0aI+nWFqv3YysWzoWKuSc
dph6y9kTxjceEhCkpOfwL6kFQJEHeQ1xIYCmKBwIN/BfXXFLo4xMBj2E3shayyhZ0LFyLReMTxjx
enBXB0c9yLfBWQeqlgxAEoHJsVFVpREaM3PRqvM8tsEzQFfZV/rUKzVGa0sXh9SndYY+g7QRpU6h
FAoj+1kJDAex2phFZotJjpzTigVqePyPF297LyeVywlSDR3El/10kXFO1oKmpdpFoPYJGspQo11e
BFEaxC+v6qgR0IgGG1889ONAzTGZcuq0hGGxibHaToh/t1wtmkd3/2kBVI7sanUNi6qKdVkTBad+
IJgCDAscFpr2Hk3n7K9CP5kgNB/oOOHWtgi+u5iLzf32YIKnbfi1ZgHelhOYRhSB0WqGZpSqdMY6
rwVVxg4Ybb+ZrH/Nxkc4Xtz3/3nx58Onx6y+mIEdGWCCS1kjLl0ACdhzmOzKmqAV9aqupjNa+m0N
iBifscrwZu8F/hqvPgyzGaUmDOSNqow1MVit1ZSeIrRcVRPQNOHuM5GeL5jN2JF3lg/gdmJUZpic
MpnVsS9clyRfOAjTspauMs4pj94ei07mWHqEWSC1DcHXtNb65TdwR86JZI+h4QBGOfVCTVfK4r5Z
fVr26iukwh4hiBox74E90p2xKmAly4o7SetIDGMD00uvlbx7qya6t7qD4EwzdO57BKh9rjqhTAoT
YqmoSMWCSII9L5VWtWA6wtYbqHZ5awNCJubBjrAMMNBv3oatk108sIV3zluPnyA6oOzABGZbU4mx
hQSh6KInoHsz8YLqzp6S4wGJ8zzOHYczcYJZ2VVRCb/UV0/L7SLD9SbaeBEw8MCZgBEluvTMu5IE
5oh33rjAB8EkWTM5BXKCMTZ3w/jN1sm+3Vk4kre7s7gMPe2kstIH0OdBXuNWMeAfIZTEURFq0Gv4
M8pXv/ETzvYJcwrQPba5IQT13eJ2Fw74uJhlYCecd1AnIFoSOJU1yFIo2aH/3WhE768ENcI4Hqg+
EhWYt3qW9y6mSBInYtqmAtkqYBIVwmdWASFbGajwsMojTLK3SijQ3735L1dy/xvZEGZ04kSYUXW0
kkVbnwMe6F2irYFQGk41As4GiokRIOyjT8iWDA5h5Vmlq+fyZJ7hPIf7+RjGmKAI9rIYaCJdBQJO
CTJKYiqaItoVoqPhO4DVYVL5ag1LxwO9J41q47oDVi8mHPd6oYfO4p9aw2geKiUjV6D90NJ4rILL
pMWC67qsQQUBVZ1oH7/Lnr1r/FjRn3QzI/puXEYWLx5yh/v1hzVOHZxiwHDx1ToM2ZP4piuUs5jT
QWBslziynSarCENv44rj6eJoJ83WDfof2+Iiqf44QUxh58vIOGanSiyeaj38x0GTYxzTW57ZPNDm
sV0Dt3I6x1g2eHGIXbdLMX481CbNk4xbK3b6ibNZSQf8EPRMISW8eCzf4ytYAh60KGqA/cvqRSCb
hwVTv7Ouan8GgMWOhTd4B3Tgbt1ZnDvh1PDDUcwirBpeWhYDhkXrtlqUB+U7KqwDE+h32LLHi8iQ
uzG7M5SKo8CCCRHCEAar6ZD2zCjIF21FNSK0rl0FpHGJ5R1ha2IRvDrWNUjRjMYpvfAILkXq5gQw
RbqfDYeOq9daI6g6JPHMmp6Sp6xK8n9Vq0B8RC0EK+0IINg40EKUdRJ0kmC1G7hpsoYyEsSEEmSE
kocEnNbWnZtovac1xdJTkhLM1SOqdJ4inorhdcCCRvWLmWh7/eeUj0v9wMVb26uh19Med+FbmAMS
KcckFdyIwprSuiCBQSiQNHUtIhWjEnpT2iP01Ex1P9+zJHji4OZFdLiknVPCPYP3FbkB/mmCL61l
rqyo8hEkXQLy1XT4TddaRgQoWmMi1CgpBgXX+WKbQCU2s6RftaJ267isjAL1EV6kJWhwNwpLigGb
FExVKkbqwvexJcwDjftujutNo69lQ5qA4bJmZrsg33fugwtvR3YPwRg3FewJ5TFO20bQXWpMDyHC
gWRtNKN/lU7cpzAb2mwiNsDMD8CCs6cvmx5UMG9BtiyVRjiQaVnSyjhseacoB02YMWYs4TqYwZLt
tZMRMGdsggDWiQGf/+it2VFQqOdYMseiM6bGGeZtDXPBPLFUmyrQaXPuodWzs+qPXebD5Xq+vNvH
NF49PTzA63gNxIbm/n5TPMByLW7/LNbb3xaPxZfHNQi1GxCtt83jpwXWIC62vy03+xuv0yC3zebz
zd368ebLcv66aA/athjXzQz+3y5eF6R/cbPY3my23fW84+eaJ/9d8/BHb1QwA6k/TGRerhZT/TFm
xb/X5dmvlwUCoPWnF0tlvF/d/1lgxA3eWd8V3Wn7urheb5v7H2FNnavL4nGxWc4Xq+2P5O0r8rcf
is3vcJYs5jfrp+0NUPW0SuBA0Nl89wT6h//2w9k/Hpfb5vZ+AQ1g512zwHPfFL/Dze1itW/zRB/7
S/1+sIldL0Ua9+nPrxe/XH907+C3X6o3F+9/Ls52P6//+aE6/tjVxf+nu+H9x5+vi1er9aoEGfF+
sZkt5j8UZz8ePkca6O7ufzlzs+3yK5YQv35sZrh6Jz6MCPO2+6M4C2+KTQI6KJbIADeTXVEhumcE
PAOHqVvB99PLPfZhh354+8zHi7aTArPjJvthGW1xFwwKLAYx7Z5SfwMK4fQgl71n/n5V/P3iuvjU
QkfDsGbr+URfGW3Tz7xqsSvwbSTazsmbQz/7z/47BWyDZj6HPzcFEI31cnpL6oeztylUvXB4pXi/
mi2m5ywj69K9e/c+nFx71MhzuR8+td0zn56ax3nxBed66sNZ14+GZxYPiFt13XwqmGBHu2L9V/Oh
PVUKeK1fNoviYnW3fnapXV0DvyrefHS/xKMDkqr3OmE8V9tm9vmZDYiso//Mr5c3aRbc9YntV/Ro
gzn4x+IWg64v0ys71o849MOgn5ub6K7dM7TZc365/5XhMxeX7k11+iGZb4Obm3cXP7+tIizR4y/H
9tYBxWeuq/+7Pk0act2ONo3PfPz5IryPJ6mTMlsHD+kkPbqh00epA22FKc52581Du+yOEdfNW0HJ
f3YcXr+/Tsfy6Vk417ttLYnYPfM/xQOcNptsc7ebOq0WWG/2svfM2b8AUEsDBBQAAgAIAHMSKErb
vw4CHDgAAGm9AAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTI2
MDgzLWNyYXNoLWxvZy50eHRVVAkAAzoSclg6EnJYdXgLAAEE9QEAAAQUAAAA7Ftbc9vGkn5e/Ao8
pSjboOYCzIXl4xSuPtrIkkqUnGylUiwQGEo4JgkGJB3p328PwAsAgrKYeKtSldWDSHEG3V/39J2j
myJP1HI5MJs/ST7rx4vFVPV/VuOfspV+8fP5Ss1X/UB9VdN8MYP35q+EIUF/M27i1WObBvycf86n
65lann++vrz/FJ6/Od+QmxTxTP2RF1/OP6timeXz5bl7/suNP1TF1wwAnb8E4GmRnG/eL88/xcn1
8PyVeI2LFH5nk0wVgz8hrrEB25aUIfut2YPffdynb88MP0+Vefe8UM2NvwhmMdvsXcWr7Ks6A6UV
Woc3rSP48ccfzV/xb8b9UhXmRdBm5iBsGEG8Uud32azFgSDMLYQtJExEBlgMEO0zTk34ACHjemh2
CQAaNGHpFxOjPsZ9Zvaw8xETTM6MW7XIi9XBUxgb7jyfP8/y9dK8v69h9KgbUomx5XDuWwFhjuWj
wLY4twV3bJch6RiGoZGb7h/xF2UOs3miTC/PVwOTSoTMpUryebo0jOHzcqVm5gUcw0ORrZ61olYq
WZVI1DweT1VqGH4RLx9Vat49FipOd0CQaQbZchGvkkfz97Vag6L2hzyLs7m1Kh8wjPApUQtNtHli
4S/+yHODkev74XBo9oYXH4fhx89ntf36mHfH9lN4ezW6uPrsXl7AQ0Fwq5+KVyZ6Qq2fGoUrEKjB
0b++vRmGo6vru4vofwzj8yfzVj1o9zCvVFyYaGBY1gfT0NtHo7vwl7sDl9swwUjYgsIbq/6BA2/M
X/U28dNvZmE9nRd/PJnDT//yr3/+G3qr8XGaj+OpeVfE2kbWkwl4RK+AHcVSmcljkc/zaf6QJbBn
YzZnA4OBExKKpNBy+tGVWmnoB4r6r+pk+GQyETazlRQTM3xaTLMkW02fgd5qlc0fgAAYTv4lU+Zy
lRfxA7zCx1O1yucbToKjUzgJx0lxF6ejbIzKtsGmN8Y+GLzSuFE7tvl5obqwlQYSJ4SMiTA3+waD
WzVPVTFcPU/hj3yhihiw/avXtf7DD2fmW5NAdLtVEz9fw2Gm/ceBFGcGPgnE2BaTJLHbIMKp0iYx
GIC2SoZHULzbP1h+EmTaaBTEGI2PQmDsVfuvx/+BWAIQMeZnBjlNUTK1EzneswryZF3BKxQYY9JC
uNGg/xjPH0ocjuOYve1D/WSxgFiN0ZlBT4XBbEa6YCRw/CtVSXpXKNXTXLHNWlwJdoCrfTrXuFP4
NEs9cMOZ8teFTm3blYt5pCNICcKRbcmZACNxTsMwpjGaJHsMJf3SOLa0ez/fRdo2Jjer4v0B1g+V
vWJtsBfz5QJMIS/gzaool2MdncE2iANJkJ0GLcZEpOJQPT9DDoOyYzCGgD7f28b97SVQB85guuM8
n747fPJNqTcBUNerbAqZcMCZc2bwE49tkghuH1K/zONU4wJSs2wFhUXcSx4h15Sg3rwz1/Nl9jCH
DDvN5w+l0iRrIREnIyEKH0cyyeaZDnP6bwiCvTRfQ64v4wup+U21fWNDcE7yxHNCSEzS4yhm8fNY
6T/C2WL1XNqu1OwbkmN0Ks8xk8d5LldxsdqI/Qni+K1a5usi2XiOQ7uFdxAFJPhEB0omQK/pQFsY
oP9VyVJI8NbaUhU0hBacHFbN5lF2guE4lSU72DcYwOvGY6tA9XO2etQ4tMxVqKjtvIFs+OZdC2rp
E1iARra0Kl0QDNjoadgcB2Nstjju3vQaDlD+etfe7GspIGRARQ9IwM2XG58ukw6jB2Zjn4jQJjE6
RFgp7y8DdEiZtXUuZAzAOaeBS8bUnjQYbhqa7eF+Jz2KAy2y04CmEJqJ+TXPUvPixh8MIB2nU/UJ
oALr95vXZVMEvy7Cuw4p31UEe13yvzn7a0J/6JU4A8ip4Hw/dLF/83/Jvwy5HLfVzk9Su51wkvBK
41DkzzcdHBQLVQW70XtvuYK6djTCg8F6nkFVO1pA4q7L/87cb0nVJF5PV6NUQYmsGts+mB/K2IAh
dM3ULC+eB4RRbdfiRNwyHqvjuK/nW9OpiivCavwczU/W+f13/DUeJkW2WO0DcyMiI5pIArmhLFvW
88s8XwwGUHNP8mL2M7QVFRdWk8p2JFSu6FQuY0Ve4KKtqQyuVNfy1Q4/KoMr1ewaaUYziaDYT0sD
Ouh2JE3smEOqH4386Pb+6vL6+mZ0MRz57uXlxdXH0fX93ejueuSOhtf3t36IRjfhbXR9+2kU3V/5
dxfXV6ORlpkbhJzGlcgJTiqulQRBPiwT6RKViZQZhJ5K0aaTOkV4KSsCAGefSEooKsw6oSHUn9kk
S7S7ScDWCMD/vriDsnCcP3V3lNKWCZaQYYDOpuwOv5YFQr64mH/SkyigSh2DsFOpcjYxb1Wisq/q
Sj1VZH2oEnMtuU2JQfipJJ0YlOhN8+TL/Rxiyo7sJ+1RUPRcZstVhVqXBFE2hXAEzDg2SMN73cXi
mPeWvEis0nTCzFFwM9wx0baEGByYPJUUAeVZv14NYS907dXJjuZt8Js/ll8ggoFwekYHpZQWBuJV
1af/pjXn2AZFJ0LAqUAHEIr1XBNkghgUn0YQCkAmzAY5XXyVgZMzg4LDTbPx0yLpp8/wxnxpqCGx
xCmWtjmC/aN8/J9kNKtocekYlJ5IajyGsKspbYjYEvRlvzikPYjdwuYJMrcEIHz09uMqLWd/Nhtg
qjtup0QHyNIj8OrohD1OnTg1yzpd62o3m8GDctgCBJbl2HL0RRVzNW3SbByBI6QDkXg00jOj38v9
hVqti/IMUDk12VNbVAOdBrn6WMmZMOlwYW43jv74vXpTZiZBywHHSeQ4tXElZ4MW3UlMXpxCaZ1u
Fq1ZPIcsWfwJBUGWN78o7Vaj3/NlQzFb6h2n1gi3bEIxc8zRdv9o9lCMsvnX/EsZGDHbqub1BEma
pC2COwU5ZKcg+o8zCfsfJ7Hzj5OYDepufjUsk97dftx8kirIhBOI0tqJlg+jVREvurTwGkJ0THeE
yhKvNdJ9RVkW62lgrcLbpYvk8SYvwz3BpDWifU3h6KjksHDEFIpQ2/zOlWNzivrNKiCxaSohNjZO
sRwUy3LqeZohSpnuDXGcp8+lmLicU55ICcd7Srtcy0Q5aDzRnB1stgntjZn/GfeFLgrOc6lmf8TZ
aqTb63jaZbbJNzIJVnKSook5j+f5cqpUaftSbn02efu2j7trkmZJEicImsB9b7x6zJabhDQYlIRH
0N3V+uvqizPoZNdFaWrva7OB/a5y7T2evgPJtj9TaK5rExnutNzh2+2no+zx2BzP4ik0AYPBv1UM
/ecyicH+umYAulN4v9s91IP55NN6pZ4+/FDH+mckmm4HBfq7mNFopqmOxvFSDbDk7S9FXiMYmdht
wUBVSdWTDbcinpUFe5sjxe2vQF7BcRKneM/RXT7PkzvoPt43QGznQy1kb856Zx+0rWgz2cSTasbN
zd6OlB4JEqf9FchroMk0/S7QwvmqeL7Js/mq91fIlRMNIlvfmbxGkESkJd03NUMabdxrtCjyp+f3
NddbA9n3FQzg+9cQv/tLCnwD5r0f5khaH07xs9Mj6dHwLr9feNffpnzP8C5atcr97eV+kld9o/H/
Ncvfq2bpukXRuD9hCx4zKFJ+bR1nrzrPM3NUbL400x+U881y6AJqaEaxNuw2p3GMpWJau1fDyp5G
lY1VQ0mwvD9T2RxxIvH9nEh+5xoJmcnmitUf2epRX2Lb3LUydTpWZo/Z1jhbnQ0M0yzip8HuxpPQ
v5jSV47MYlxb2P/AQnJsIT1cIAhpJmlWW8GYyrFMbP3IcregZXM455LFQnNfHCw4vHyiY8HWTMxC
tJjAkmZiFrK1MMG4BIxRfQGNY65iWS5gvTDR6oaFcUJspkgpCSZHJMH0cKFiYh8RETtdetRMskUD
1/aWj1lMpq1HMGhYT4kLcoSWcbm5beXf3Ff31pgRFkVelHfhNjfZdk/axp2Ojlfr2Xh73xLbhmF4
2Twuns2LWfl1m7G9uPa0u7NmWmbzQxtkfXkA2CvvYFrm7hKm+T70fYY9gSzHcxyLciwt14mQxbkT
uRSo4iD68Pe79NaUPO5SR6zV8Xb/Td/wMZttPLyHQPKI2V4AfYoVuOCcNGLIcl3QQRgK5HAPC9cW
RyQ/oNjEI9khHoFF5/F0nYkjQukh17OiSHgWxYhZbgAYhRAO5Qw5nuueeibVWgPnJD7Um8QSTSYd
VwMu1UOcPHehFYIT23ax5UKytsrblF6EqeWgCGESBKEXvWBBFd2XMFc76sglnSQHyGM0AQcYv1C5
dmD3KIlI6HkWY5hb1MaRJZHvW15AWeASgkIadmFvUu5G39xTxx9zlB7gH4+1xdKu+ykdwDkhAfIQ
AZtg0qKBQy0XbNYKmU087tko8IIjSj+OeLNYg4qpqjJNHSp8SLtjzZ1arqB2mauifzHXNwdV6q31
9QGzh/uaCAboNmYhlqFnSVe4YC+RY7lE+BbxMPJD6ftSsuP2smfR5NAfly/tePLyQ01JY3oo6QRD
BuHmW/DxjXY0reF6oa9816OJQ3w78Bi2HOISiCY8slwW2RYhkHw8EkZ+5HVJ9QJho0KhUxibxFzu
0e0+HKPYhvpKfzFj9ihDfUJKj7Q5o5Fv+T6KIH6AQbu+b1vccSG0+aGNsDaO9bLQ7M/10zVegtiO
avOCDye0debZ/MvejuCEUV/CMwTbAAFHnPkRZVoTYJ/ME5bnU275UDi4EbU9SnVwrW6vn19m4wKS
3Xm0pbY89+NinM+77bS27aKOob4HFuoyUTqxD2SCkg6XMulK8PdptlJ0e6QEs76WI/DBt2TILYld
CG7chgDhcB/ihZScSD8QxKupsk3IaHJLDiEw5WgDq6m1zPgX13XV0j6t3Mdm2tZcG6KTE2KL2SGA
ohB7oeqiVuAzGnKBJBHOi8o9YNHQXLVoNFGyDui6WGtYRL5Q82UZ8vRVbfB53scaNpN97fmUQS5g
LgRaaoPnY8ktQUVkhcLnHuGRH3je9zCKa4Ax3MLo3t3Y0hCV1wPe/kNanhIcadnMDX3oHdXWWDCW
fQfkI1TIgAeu5YkQ/C70bKgo3MiKvDAIEfaD0HdflE+j+njZjbjankHs6ALREqHD1jkZt07Lf1zP
v5TXCUogIAfj5WlxbWMBj8CMfAshJ9QODPFagAtAR85s6Oso9cJDWW6K7Cu0O/UjazLplq21qSkM
6fAazsctr9Gml0zBccHm9O7yFeRAPPKEDkQuQr5FvSjQgUhYMrRDH2pmiXj4zTPxL49bkX/ZgBs7
8hBuSlWrNNEHuK2R+5VZV6kecg7rE30M5RttVYHnRr50LeYHEE8dDBJgyCyCBwK7LoPKEL3sNXVe
3/KdPZYjR7Vbb4itYnEotkrwRFVeA5IvCiiZ9Y3xbYgVuggXNLIJiISxE0AB5nDLla5rYS/0HMSR
S1Ervh5QquOwKT30XpsK3DL9eJ1meXkIrn5n9uxNhC1fdVvk8sCOqGchRqAE9wWUtxKKFF9IsP8A
ocAW31R6SfuIGrfLDfQ2p4fobd4Os8OFUsnjrUryh3mmZzOV6ZA+GH1p+vAKMjDPBfQSGhxb5y4H
+2AzkbSgSgkjhqMIOc5rXLiTXbdYnVubIoqOA+Jln9494epBw9NnfQqPbN7pCsf3pA9VlRWgSHdI
AURa7IYWgd41RERAu/SNTLKlf+R4tssN7DzBHdiTtBWKdFQIsqL8b4nnsi7CZRaUuqCg2GXcDRzL
8X2oEx3kWpIFkAjBCSLb821cVr8vx6Md9eNhabelJYHqkCDlLQmq+2vuevWoPaMKp9orbE8wTqHw
oAxyN41C6D8CCn2zz13fAYcRXvSqpLCjf8w7tusN9OKwBhb2GIr0Ztu0VMm6/FfIXpUKHE4p7+vi
WDs2CR0HqiQLWg7o+olklkc9+OVhj/oup9KmL+p/uKF+xAE2qw3cY95h8/DhtvZsFCP3q2y6Kyw2
hZMboMD1oVuSkLCgZeJQj0oJpagb+gxj4gVuK0oeIdmENXY6YI3ZriSuhqOgTv2vDruwrQ2BQrPm
Cp9BySn07ATKYk/4IQByiGdzn4asDqiidH6EZgsU7wIlt6D8z5+GN9P1QzZvNWGYlKryHURdAtky
oBAPqKSOJUIUWEz6DneYsD2GvlMN1o2kKU3COqRJ0600M6C2jLci6PgQ2hJLTxfz0oOE6EbQOEG5
b0FgcHwpQhoht3nUdRpN5mmHs49Vu4278/16ex45YeiRgEKfo0cikjuW5B6EVuJDWYuxB1Xga3wc
yHYrERaaMJXdBVNsdbSIZ5DQ6tbnQ6eAtXoE96CmiyBDg/v6lu0TGgrw7wi3dFSj0eLdFVGU3Bb7
63my4yx1Oxh4OJQ29LEc9AI1sD4daPqh73JCj0kRobDT7neE6uwd2hHQ4MNkZ+yQPT9/8qeZHn+2
mg2HoYDr7McRRAKKIAz/L3HXsh3HjWT3+opZagMO3o8lnrJ63G3ZtHt616eqmLR4TJEckvJY8/UT
gazKSmSiyJo+PJ6NSFamgIhMRMS9EQGU09GRwqUrMQAN0entyEYrxUKJq44Sw24JWobN4+5zzXiy
izGo1J+45Jhy3loL+C8CL9QFwFa0mWT0yTa6VIJ4O4Q7CXLKg+8vt0oOHSXlmBza96FstjeHdwQe
ugYbx3kG2TWh2YEzYipAnDcUCC/zUQppeKQLdDsbpxFAdgXAlOcRYN/cDo//PHpEjSJ4JnIsGtaF
wmViwSlaTR0xwQgmFSygmLordjVgI45ia8cGH7pl7NjcXW3v/5gcHAK4MQ5zr20QLpJgLLAaT8FP
G8+J0llbK7UD2vZiBJmP3IimN2sQDR/qBcb5PNw+4FIUFVpKjVFNJS8B2BMaKjbzDOCNAb9CHVUR
4FnR8i3yE9/B1P2b8EqjDG7hXSmzlfzwnD+Uf1x+3jwOV4swWGDZhZAyoT5DgFaw6IID0shCpE4U
a4x5o1TEQoJWetnxb1s3LFyDzwDVKGJk+LfCHem4kZwUi+jC6kA8LFVSfOSWgR7Fy7fzBz73b/G5
1eVq29HlGMrjh3/g0RgX/vAmHKx0UwMqRE4HiB8cAa50J4C/Z01AE2WFNiow96o2Hx43D59vdie0
OeyAHd11K8hCiTUkUDv01Q2Cvhqefnu+f3jaP0I0E2Axorps/AVtxWtHNfCuSCEICpoYAXUcoVJr
iIWSQzQ8ByakcarD28Ib+jp2bmxUu+owf/xwudZ2u+EWz2gYLn4fdt9Xbw06wf/b/4l/IcOUlnEF
MMgXhgbE4YUZqUjBLCWnNCbzMk+bTfTaChxn7t82Xms0vRYdq6rZ+UbTjz9MItw/InJSIw8df6lQ
mYViuAQzy/AKwa6IpTrXTJlWVGkpz8oPNBOdyCnPb2mV0Z1Aco0cxJzu0HjPhMWFWAl1SiwXGQlL
LIB5BdAixsrqWMw5O6XcS4GkGbkVza4zj5qa4SDaXz5NsHSfmDclaS5AjJwC8DRjCmZcIN4nFnVO
URfO/vXEfGPl0+RzkbV212uR9cZcD01YfrjdPONexoP4Rl7IfVh2HmJdLkRDhCAiCgGIJVCiowCE
FmXwTL34NJuRW9k6KUKtd3yxbP9jeNwOj/dPaJcHTsKAU0oJbzYrJHU2cyzVa5I5EBUAVIXnl7Nx
h0H7D/ZwtRX3ep3s0RCfDv5++/Tlgk6AD1eiyQioYCV6C08MYq4kQedAVFLFh2i447pFe7Mxmrnh
2Xfm3rIFhEnD9uuvl9++bO9v0UeLmjYW9TUKL3lUEGmcZPDADCMuw1OTEUAWrFWqgjrPOx9nOOWW
j3c0OmxM53Vv+bILYrvZ/fb1oakjXpgLWUONqQZeBJXZQXxxjgE7MICknVaOhGJVFCpIS+05uoTF
THMtxmuN/FsxdOQ3fJUqA3J0czXco+C2pvlYDZDMey49+AKgzbW9BEiqBkDGmHRSSa6li6+G/Try
6QxyvdxK3ckgw4fq4LN+2lzdbO52w8JxlayYpYljGh6caADQa4ujJBaIfCFGYYt4I8fVSrAQ/qoj
vJvY+PDH83A3LyGYWkJITnFguySEHMFlBU0cUAuSISAwFlVUMrdmtxinlcFtejIME+D+WBbPLuVi
WSwwNfZNiZAFcdiPUbh2wXDv9Sv47vxnN03eijx0Vupu2BweW7m/e/60eQQ0N0mu7AUSHq6Nd0gQ
JARU4KcM87kGvEYqKYKRaVvKyyDnuDH2fLz98+UZqi6FnmtsKF9rDB9e1yIb3Pw4fLn/fbi+uZ3W
ucQwohTQcQH+g8kEwU0L8CQUPIlUWgG1KNbJfvZmOV4jDLLDlTCS7lZw7PLr4zUe0faeUXvBRzg9
/lb7R8AEE9NE8owNPQk4D9PAPS3nEI+55vFlzjONfwqB7S+3svcepBTs8CAvd4/DcPfTUI+1OTxK
ri8kBhmmSzTomKWCNSMy+AvwbAUcnoe4DA5FldQa3nq4Rhq1WSekjdrqBRZ8xoPujgnBiZJkBys4
UjC/rCHoBYbgXWAfjnRKl4IG+RJ2mY3biGXsOkEJHy4TCoeyw+cb4H5j4QHUQTNj2YQMfpQ4kzGC
QRjzOXrCICT7xKVO1r9FXuFQfPju48vFie8+LvRbow1jV+0C4fbr8Hx/P9aE5IWu1VL4eV2buqjh
2YNBFZ4SETxCuAZeS5wQLhoKM6hXkO8P0/inFvB0w7tW0F1H+g09URS6Pja0v9f7t8Q4vqXkvSwp
UWIKBmzqPQlZFwAbAagRQKhCzVmVoWPP/Muv4Xhfq9CG9RTq9dr8ejsmfEagXH/Bui93zgRESBEi
uvAA/gJ6lpSNwl4CbyL/l3M/47VG4GG3Jh2m5n/HkDncDY+/fmusFrkbrYkq6qVjEXuCpAKjLUlh
acsTZT3WPbheNVithmuFGfhKGEv5bmGsO0BPX2+wZo6UWGhdhbEQBrWAd+4pSsSiIdaBE1YFwLwp
gOa4P6+++Tj88vE0bvulMUAQ76ojs1wR+t0xysLitVV0/IFcPmXgnFmTogQCOExd8iQJFyF6iCYQ
2s5Kx8znOGGHsztaLRTtaKGmOk49AGTarPmem5pFijSUYInJtY01ZIh6RoEJCichvEilZPv2m1Ga
+Wt33XJ+tuOL6AHiX9/8ut8CeRAGXkFdkDWzlXIwqTii4R2At85gPtEKQpnW1vJSaAVFJ8NIZ4K5
nI52cnCO8WGxQkdOdTjEBGsm6KtApMqJDDw2oxW2lsFzKywTIEPgsAKgmKxEtj0T77R2zCc54a3m
tzSKbO0aKrvd1iw879jb+sczsGTFxyYbJy9YLU7AC7dCKZJkwXIaOCmvoyRJS5Y0UzHH1xO9OPZp
U8OrjdTXbs2QNtRODOkG3t/vx4Lj+LipAo+gPHHcYzertkCPOIVgZ2JInmt4C+0ybUaZz79hev36
N+x62YLxaTxtCpmSv9vcfnu6eZpXaalJ0SaB9RJfwMcnQaxIFphHBCwfPLz/szoxOtP0n2XnxkYt
wGFrtfixv/byAcF8+N5fHguZmtecky4KmD3F7CNEX2FlAl3A9AIVKsqcWAjpz0i1dqRsVVS8o6Je
VjM+YICq1rK5vdwfU/x+XPhcjP0cNlrOpLQA9h26GAGUNeZCpDbRCQOmHM7y1p2p+qp1bmxU09t1
BNoYTNY0i3Iauxr1f37v/4avcVyUDID42BsSBHJuAU48ZjBqgS8W8KAUvHiw6wSx6lWjxrFPGzVe
beQHztKRXy5fTT0ZejyufXjcd20cG7QMw3QCRCzHgzJg3DFh5x8sRAf/UMlM0UFolsJZGKAz1wmN
Onc22m06RUD4cKVd7Zr6tLkbajoQvA9idIfYVvpsau5UqYBt7AVcGVYHAxdMGg8uLLu3YCBzEV5q
7RrvaJWUPSUxczVSUazK3/w+HD2zELDeRgcShaGeYxtGwZ4ZjV0ZoKfCxcdlMGbZRLoYrBVk0xFk
t9t2En81c1NNYGxoQBwpRyswhrOA28k8o2AFkitwao6TqJKJCj7zPrxqBXX802ZQL89l36rdmqpu
9bCkct9vvt7tPh+xJFg6YB80gfoLkqHivHYRUI/28Eip5sRLCrCcgj/m0TP7Siv7/6kE28pzoujc
3NNobYY1AdladjUhv32vAOv0IXibaP3yBR4yQn6OLRpg/SJQK40wyepFEmMx2rt20qEjCXezLg1Y
/fHx28Pz/dSmQalRF2qkQ+D9BeeYvpABIoNj4H2wLcJRbxk8dWwGP9WusRi5FUx2FgaQ84Ngf3y5
5bMuKzdWCGGypKNOJBUFkZlnCvgM7KwopVOBhQDcsn0483HetXP1BNBLXvbT8OX+efj7zfDfx9U5
xk5WWwMCB0wvpSM2FjCrxCKaeiEMJJIUDAxs/hzvvJ7nVE5yeV+rVad3bXsllkWO0iQdXCXrCvvJ
DPMuCU8JDQx3jAhPrC6CMIk8VHmdy8tU/eVcQ/z3fo5hRzsseYel8vZtYHp3+PsnX47VGUwy8NoQ
zKr9mADo1yRHfMbIkjK+EHAZQboQKawRas9iIoepTvRi7K82Sli3TrzuEEsvw+LME5XxECeMj5xj
qX/coHT4vdZwFVqcANLHwPMVAPzeAUNNSkjgWcwZ94ae7yDPiRv3V1u1N513Z4eRdu0z5/h9KE/P
j9+OCX81ejtDU5LYu61glQmZAAdE5kiRweFZBNlp9v+Y8G/FbrR2V2sfv3MDOziw//q6edzcPd/c
DUdOj2iuSKZdAQOrjcqeYxsO4KAsDcBU8O2O9tvMluM1wgxsDTfhQ7noftviwUxPk5/Hrk3GpUzY
DFS09/AWQgB5qAGrt4pFwCrA3l9KLsyHnIt0Jfi63HqF/n2Z/Xgcnm8nmazAtAcKFh1NPgugJGCw
QMLAsUK4UYR77W3QxmhuX856zAZuJZO0I9n1FBN//+vN09Rlq7So4oSiGS8mkeIxn1WwNwUDtAU2
GANnOUb1J3HCmXyNXrJTrYAPzWIR4IM5NFJN5uiqNbIgivIl1qYi8P4RsEfA3KcSFqBkCZym1555
O/RCwHVm/EoJd3W1dvJ/+ZQ/zPMLoZicAhahFE9IGAwBviBJxt48wWgy3p3t1nHwF/w6Xn7Xyrjp
CL7KgB/Z6Mcfal8xAIX91jnjEFBVj6eoq1sBHDZ2ChYwpRvBAXLtwc0D9gr8lcLEyVbheqmRfDd0
JL+iywrWeBLV5BjMIRmujLTZBmx8BPsTMmpYEExggZIzwKZGmxeNcD5uI9e1W3uHQVCAGKNceBzx
sXNRV9eZlErKgm9iJQDU4l4Rx6gi4MCML1nbyE0L/uajzKcfwJbX0+v1htTy4tYpxopT2nCwDwCi
4BMSCGQYUdlGpX3O7pU9eWdsnWq2iJ1x/+KmVutOZWrQYuoY3X15+Dw9crQ5D0iWwzs3ReZxc4FL
yRDNXHQ5WGzkXnSLTyO0E3daV/DDwyq8rVRqaqLQlX1g7sMKmZOGd6wYNj1qyYj3MhGYWOAhMSwq
2l1/8xFbUXabjihXevHmn+q+wYunb3fPn4cmBwkh4QKzxZj8vtinjQ1LnmLbqcp41gIAUIKsgCiX
AsdyXtHqzVHMuLXxci3hev/jdFPzKHad+sRwxc1Jr1YzXTflppNjc04oxwsD8FCwaubrXhh4Ud6K
KDTEyFjOLVThFC+k2uDqu1Zi21PDLbL+D483dzO3efEJ/64WXROhuvbbZ6uKoZEkAwQc1h7oY60n
kQHdBPt2Mb1JXfxTK0uT1sZLrX6dDWjDwKYy0s8fy7IDSID4zgGW9tJrImLE8oCmpOB5Ec7xKKh8
ow6g4+zvWvlER+jtZpX3ufv1K0yFp+3f7o9oOER8ZSMeeVTjPHZ+gs+HIESJcYZyl5ihnp2zpJZz
nMrmtHe12lx1tLmWrMNOl1YMXOPf3guD26CFk7V/EM8ky45pQg1uMYo+Yv89gC5tAUoy7nnQfx7n
gQvvWrU6ofHamk69eoJ6436LcnM74DdBAO6RtTgIPyrFSNwnYwIxxhbwjng0EHcKuDn1EMUt4yy+
4W6qRpYTXrG5p1V/yzrqrxKWP6bapo9RQFBeeV1WgllKuK2qMdwADuu2WJ6w8Y/q/PZE9sfUv+XH
NNfp2qn18r3e7glPm5fAL5LDVATeDdG2tjHh7lUlHYO4jzVxUzOS8CatzJnGknCT+KvvDwc+7dTx
6rtWuk1P5Ik94gGcU8LSGjUe58LwLJCCvRoYhFyyKKgCvKi5AmElO7EZcjZaI8Wuc/QKfLjMpv1t
eC6Xh+6dcQehlQBPhdSEyyhwRygnDkALyUDxMQHv2St5tDpm/4HVSws5V4knRwfENKvC92HfDnpa
Tcfgd9gYpIFfU4+dBcKDYwL7JNY7YLspKsOMOWvb48sbg+Z3vGukXW9Jxw+vF8eUoJuel5/Nft/m
eLYKs4kzxsG/4IZ6YRUjzkhPqM0qSSWpNG+Pw+YinY4tnRq1Y3K7ytbCh7tpM90fm8djjWDvZwSn
pmhYWBGPLEq46ThZRgwtMlrlqIiLBpXZIO3kO9GbXExbwYfnze0/n2++DE/Pmy8Ps+oAsFopK5lN
GVYy0EBiPJ6WkgtWZYAu+sy4igE+PK+t/8OnX+J+e+fsEZ4SolED4PVaDcCiB0/x4ftfljvygS4q
jL8ii4hCYzwyigRuAc/qADAvvNFWxMPcjcRmM6wlNlu6cMf41TvTwcD4VSz1q9tnACnhOR1eA8hO
GYxU5UyCSo5kIbwIhTIW1Cv9gYvRT7UHLm5rtLFs7XvAjyyrk3/FF4nptFoDxh/osKli1jDc1UqB
QBvlgN4xRwDQJxGtzdq97HDqqH2p66VWUrXrSHrNV+n52/tHYEw7bCt1e5/uRq9eojCZU6IVHiIX
YaU7QNp4gJODSzYVa97cv0zynPKo+8uNrm4dufDDpa74Ndx3T1PfwbS0XOBFFYf7xmofvigkGGdJ
AmiqTYhJn2fXdfxXNZxLcSLrObtjoafo6bmdUhr3D9/mbfesdvl5rGbhUQ0FIjPwPPgnBG2JjFqV
RPE7WPiJouZ8uIUkndUFrHgqaE7fpDVPcCiZmOA2E6owxZK8J9ZljrZgOC9Ac2y/t28arhVC844Q
Vi5b+QD/VrYlJbhEMbZO73+th0okcIUsEo0ZYDyRlNiMp/u5UBws/SD9WRuc9tOcxuAtz3JsY7Zr
8TdX7qUC2g+XL7UNcBMZD44TYyXAcpsSMHqeCCCaoI0Viif9dtzjKMuJXuXLTtHWsZ3qqL2zPXx+
+P8f756HR/wGE+Badqx/4k8EcZkxVqgnySAINmC/Hgl0LM6KkGSONpybiVnOdhrTLe9s9XMdZzTQ
ZbvQLx/nZenRGUkxNkJ7H4Li2pBsAiC7hOEaggfJWquQvE25yHO0ms/R12Z+x7tW4OuOFmza1RQ/
39wBJf75/rfh7uZ/Znub0KSMCzb+b29X1ts2kq3f9Sv4MkAauDRqXwL0Qy1k2pO4k9t2eu7cF4OW
5LQQWw4sOd2dXz/nFCWKRVJyZsZoI0gcLlWnWMvZv6M0wstiLEXQprQYziWUJJraSpk4ENumm8sp
YlPftVkMkmvnhyB3wzDMBD8oMxoEfIa2a14hKwvAhFmAAz9UXqhKKHc6qHiCnqSzDem5XQz9328u
L3MULy/gGAehpeQeabHwmRzOcMLdqKwDsfQ0RBK0eCTM8PIyp3AxcT7e3t4MXGSr9W2nXAqt8bBO
UbfOWcZA4FIiAp0atGEQv0ypgkNTua5rcdI9dmi2TxQjYww0uLiY7xfWzbeUSNHpASZNXyUFk6YM
BMNODOLNea1KqhGyJgTPxWA9Za3k/S8WE/2j+sj7H2X9sF3d9hz4XcZEFMbHiouS1LpqIXMcqesS
lEZTcWuNDuHUZ+k3nBGGKaAjwuQIt7zFTnxar7abswRh+HHdgvrQHUBECqLXBg4QYAQ1Q8mfOcx+
ZaY0ARaeZlETeVoh71o+Ykbb3x6MwE6M4OD4+ADcMTfdMljtWoDmLYR0GEcN0jAVtIyKMNgKNGou
X8h023Wek6zZBMmWDDyGWaWUVxy5D54sdBeFQ1OKbg0CpNcgQggSSxc4K0HPMsRR6QJxp9ZEv/mM
PL0ci1nM3nZO7vphc3e9+HPd3K8O5546Y7h/QaKNifujzQrOGQlyjeS0DBVhpLa8imIQNT9ubZb3
O7FAG9JFEnw7aO8KHSVpu8AZ571gdSkMgiXDQVzammBMo6mIiIJoF3Iqvk3p79BPM9G5ZVPCUp66
wVOMEaZutLk61ClfU4HBuBiEwwRa2iNimDGQnQIzxlXfLTI8n8Axeiwflp0aViPGNrcWDrK1uqnE
SKKyzNOqLjE0Ck5Fi4IrfGnmvdPBuDrq75ISdo0fNb8NgCCRvlHoheVqvhw7CNoKC23InSDiTCRE
Hi5AZlNVGaPBxDM0vAXQRwJI3IwRWQkan9MrjwQFhN29WUbZcixwck27zKhBUdVXktB02OPODlrA
kS7RC+zQ0K1hZ8vKgUocQ4DTNNZ2WnfKG83oMTfjOeeNbvah1pNZGl4EhgbfUqZAP4wK9VrGMoB2
Z1QFmqpTf1FEzmR+Bo5g4jM3ZogAFFebz+7xZrV93O3PPWpuC9YEZy8DtVDyxLcwgFsTCkdYFbFC
CsiTp/nBoPUjoBn5Q9kobiakOkGomtBOjoaVYiZ5jXvS1lVo7YSGG2AHoP2CpFeDcvZ8DONzknv+
zCwnV0+MgS0HTK3Z9Dga34dAC1ojzmRdUo/pQDXiXTuQVh3wMa2raI07mcbdtZqTNE7ihovzTp1o
ng4R2dSo5GPHPHICjIMiuANzHMRkELZkFYiwHjZgPcwqeJqIvbYCq5KPuqa3Q4CAi6e77Wr78DT/
bZQtgtZosXd/7YIgmKwdQ+c5ZqSg4slAJE21NCxlgrio3Hcdvie6zex7w8fyId6OZVrBMWci84j8
71PzuP22AzpvQ3sExvgkHKdQOa1g0ymOOXZeIVC1M6XQwC1V5LU0p83Eh8aPeOm6+7OcyvkE6ahF
8R0E6O+rdQc8xWXy0QHz8CBPyFJEikiBFpanl6LE7K3a+8qShCI8hQN6aC0nY0JVEnyHzIYRNt/u
mzN5UC2RNQQCPVNf1g4TFgLwB4dA5SRqBQoeyHxhAHzSbyTrHaSgce8GrWnZEv26SqgpdTNftpOI
hSlSAjX+ixAMEra5AfYkGILHEtC7HYgIoJuwCi4JrKXxPYty38MRTrG7mw1hytwMnIkc0LqqNwPh
3zBXawTfBhkRDnvEnbcCdKrAhWMGg9dD/WJwXfveM6Kn7Klw0eyJ/m25ul80d2WzWR+SV2QK2k1L
wILgWAmCSwDZlcIwzQrFMJC+EFFfhTgQscct5gTZsXtHzM0wXuun86uHh7ubhz/ahABcAmaHeYpR
Yzyg9S9lpgoQD20gVVlT4znwpUo+w0G/F0RzT8IRJM397Wx4CzGxyxaiGRgk1i34+whviBuJn54j
e1CKWJDBQDCTHM4rAzzWok9IoDdcwolFqDiphk/20adWkjE8MF7sqI2r5tP6YYPVfpebDdaJG0AF
kwTazgScpl6UjGKuuJQeJgRzmaUD3Zxx7u0Alux0uxmJ7Ga8gIFLI3fLDo5dppxJ2oNpvTuy9oIy
hPnlwOcFxxJWFuPhrSZ1gNPHkBcTKE9k0n0dptHhANjEqJoR/toqFdUEsi57SJnJOix3KJkEfpOC
ISaOgxMGYVEoAotI9OBWVEv7gkimY3qOiZ/D5/LRN5Oj7+JW37wbeHg1iZIqwUsiHIYtE9Cnakqx
AFYAgdRIZuxLeXgn1uCUg1fqebNnnVjq9O7rmT241NHCrSTxMpiSWkxtUw5oVhGYp2dCYWiRrwcY
4nkzOQXzmykKhlFME+5IOM4RNE6YhIYQpY4g6VI0V4DULktfR1NWDstMwQc2RryMu3PiwWw8dozd
BxdHUbstJaGPd5Hkuha9L0l1BnVDEIZAlgMFm7vkvQVBpTa29qQKXlWng9Em+jiGUzF6MB/TQk+N
aQTThYdBaL5sn1C+af3RrTfahSrUxOtSR4uwOozB9AhdVqZ2sRZBcv0yJc16FJyo0LV7Ih/jhIFM
gj65V+x3rGex3mwWB5RwiabENFmEGtB6YJ4Q8pMj/BhsEQm6sMHMBKVBezzF0nrtZmTd0LFQIRe0
w9RbzZ8wvvGQgCAlPYM/SS0AijzIa4gLATRF4UC4gb/qilsaZWQy6CH0RtZaRsmSjpVruWR8wojX
g7s6OOpBvg3OOlC1ZACSCHwcG1VVGqExMxetOs9jGzwDdJU90qdeqTFaW7o4pD6tM/QZpI0odQql
UBjZz0pgOIjVxiwyW0xy5JxWLFDD43+8eNt7OalcTpBq6CC+7KfzjHOyFjQt1S4CtU/QUIYa7fIi
iNIgfnlVR42ARjTY+OKhHwdqjsmUU6clDItNjNV2Qvy71XrZPLq7T0ugcmRXq2tYVFWsy5ooOPUD
wRRgWOCw0LT3aDpnfxX6yQSh+UDHCbe2RfDdxVxs7rYHEzxtw681CzBbTmAaUQRGqxmaUarSGeu8
FlQZO2C0/Way/jUbH+F4cd//5+Wf958es/piBnZkgA9cyhpx6QJIwJ7Dx66sCVpRr+pqOqOl39aA
iPEZqwxv9l7gr/HywzCbUWrCQN6oylgTg9VaTekpQstVNQFNE+4+E+n5gtmMHXmzfAA3E6Myw+SU
yayOfeG6JPnCQZiWtXSVcU559PZYdDLH0iPMAqltCL6mtdYvv4E7ck4kewwNBzDKqQk1XSmLu2b9
adWrr5AKe4QgasS8B/ZId8aqgJUsK+4krSMxjA1ML71W8u6tmuje6g6CM32hM98jQO1z1QllUpgQ
S0VFKhZEEux5qbSqBdMRtt5AtctbGxAy8R3sCMsAA/0Wbdg62cUDW5hz3nr8BNEBZQcmMNuaSowt
JAhFFz0B3ZuJF1R39pQcD0hc5HHuOJyJE8zKropK+KW+fFptlxmuN9HGi4CBB84EjCjRpWfelSQw
R7zzxgU+CCbJmskpkBOMsbkdxm+2TvbtzsKRvN2dxWXoaSeVlT6APg/yGreKAf8IoSSOilCDXsOf
Ub76jZ9wtk+YU4Dusc0NIahvlze7cMDH5TwDO+G8gzoB0ZLAqaxBlkLJDv3vRiN6fyWoEcbxQPWR
qMC81Vneu5giSZyIaZsKZKuASVQIn1kFhGxloMLDKo/wkb1VQoH+7s1/uZL7T2RDmNOJE2FO1dFK
Fm19Dnihd4m2BkJpONUIOBsoJkaAsI8+IVsyOISVZ5WunsuTeYbzHO7nYxhjgiLYy3KgiXQVCDgl
yCiJqWiKaFeIjoZzAKvDpPLVGpaOB3pPGtXGdQesXk447vVSD53FP7WG0TxUSkauQPuhpfFYBZdJ
iwXXdVmDCgKqOtE+fpc9e9f4saI/6WZG9O24jCxePOQO9+sPa/x0cIoBw8WpdRiyJ3GmK5SzmNNB
YGyXOLKdJqsIQ2+KTJCgyGgnzR8a9D+2xUVS/XGCmMLOl5FxzE6VWDzVeviLgybHOKa3PLN5oM1j
uwZu5XSOsWzw4hC7bpdi/HioTZonGbdW7PQvfs1KOuCHoGcKKWHisXyPr2AJeNCiqAH2L6sXgWwe
Fkz9zrqq/S8ALHYsvMEc0IG7dWdx7oRTww9HMYuwanhpWQwYFq3balEelO+osA5MoN9hyx4vIkNu
x+zOUCqOAgsmRAhDGKymQ9ozoyBftBXViNC6dhWQxiWWd4StiUXw6ljXIEUzGqf0wiO4FKmbE8AU
6X42HDquXmuNoOqQxDNvekqesirJ/1WtAvERtRCstCOAYONAC1HWSdBJgtVu4KbJGspIEBNKkBFK
HhJwWlt3bqL1ntYUS09JSjBXj6jSeYp4KobXAQsa1S9mou31n1M+LvUDF29sr4ZeT3vchW9hDkik
HJNUcCMKa0rrggQGoUDS1LWIVIxK6E1pj9BTM9X9Ys+S4I2DmxfR4ZJ2Tgn3DOYrcgP80wRfWstc
WVHlI0i6BOSr6fCbrrWMCFC0xkSoUVIMCq6L5TaBSmzmSb9qRe3WcVkZBeojTKQlaHA3CkuKAZsU
TFUqRurC97ElzAON+26O602jx7IhTcBwWTO3XZDvO/fBhbcju4dgjJsK9oTyGKdtI+guNaaHEOFA
sjaa0b9KJ+5TmA1tPhEbYBYHYMH505dNDyqYtyBblkojHMi0LGllHLa8U5SDJswYM5ZwHcxgyfba
yQhYMDZBAOvEgM9/9NbsKCjUcyyZY9EZU+MX5m0Nc8E8sVSbKtBpc+6h1dms+mOX+XDxsFjd7mMa
L5/u72E6XgOxobm72xT3sFyLmz+Lh+1vy8fiy+MDCLUbEK23zeOnJdYgLra/rTb7G6/TILfN5vP1
7cPj9ZfV4nXRHrRtMa7rOfy9Xb4uSP/iZrm93my763nHzzVP/rvm4T+9UcEXSP1hIvNqvZzqjzEr
/r0uZ79eFAiA1v+8WCrj/fruzwIjbvDOw23Rnbavi6uHbXP3I6ypM3VRPC43q8Vyvf2RvH1F/vZD
sfkdzpLl4vrhaXsNVD2tEzgQdLbYvYH+4b/9MPvH42rb3NwtoQHsvGsWeO6b4ne4uV2u922e6GN/
qd8PNrHrpUjjPv3z6/kvVx/dO/jtl+rN+fufi9nu36t/fqiOv3Z5/v/pbnj/8eer4tX6YV2CjHi3
3MyXix+K2Y+HnyMNdHf3v8zcfLv6iiXErx6bOa7eiR9GhHnb/aeYhTfFJgEdFCtkgJvJrqgQ3TsC
3oHD1K3h+TS5x36YGb7z8bztpMDsuMl+WEZb3AWDAotBTLun1N+AQjg9yEXvnb9fFn8/vyo+tdDR
MKz5w2Kir0M//Ng7r1rsCpyNRNsZeXPoZ/+zf6aAbdAsFvDfTQFEY72c3pL6YfY2haoXDq8U79fz
5fQ3y8i6cO/evQ8n1x418kxedFPbvfPpqXlcFF/wW0/9cNb1o+Gd5T3iVl01nwom2NGuWH9qPrSn
SgHT+mWzLM7Xtw/PLrXLK+BXxZuP7pd4dEBSHaaTwngut8388zMbEFiH6r/z68V1+gru6sT2K3q0
qWL2j+UNBl1fpCk71o84o923tsXs+jq6K/cMbfaMX+x/ZfjO+YV7U51+Sebb4Pr63fnPb6sIS/T4
5NjDOgAlBN65qv7v6jRpyHU72jS+8/Hn8/A+nqROymwd3KeT9OiGbj+vOtBWmGK2O2/u22V3jLju
u6U5/U+Ow6v3V+lYPv0VzvRuW0uid+/8T3EPp80m29ztpk47BpQTcdF7Z/YvUEsDBBQAAgAIAHMS
KErp5XGqIjgAAHS9AAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50
LTI2MDg1LWNyYXNoLWxvZy50eHRVVAkAAzoSclg6EnJYdXgLAAEE9QEAAAQUAAAA7Ftbc9vGkn5e
/Ao8pSjboDAzwFxYPk7h6qONLKlEyclWKsXCZSjhmCQYEHSkf789AC8ACMpi4q1KVVYPIsUZdH/d
03eOboo8kavVSG//JPl8GC2XMzn8WcY/ZaV68fJFKRfl0Jdf5SxfzuG9/iumJrd/026i8rFLA37O
P+ez9Vyuzj9fX95/Cs7fnG/ITYtoLv/Iiy/nn2WxyvLF6tw5/+XGG8viawaAzl8C8LRMzjfvV+ef
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
6oezn1Oo+sThlcm71WxRfmcZWZfu7dt34eTaY8Sey8vuj+6Zj0/Tx/nkC77r0oezrh8NzyweELfq
evpxwgQ71hVl/al5354qE5jWL5vF5GJ1t352qV1dA7+avPngfo1HByRVbzotPLOdzj4/swGRdfSf
+e3yJr0Fd31i+016tME7+MfiFoOuL9OUHetHHPphZnJ2cxPdtXuGNnvOL/e/Mnzm4tK9qU8/JPNt
cHPz9uKXn+sIS/T45PTWASgh8Mx1/X/Xp0lDrtvRpvGZD79chHfxJHVSZuvgIZ2kRzd0+ih1oA3n
Z3fePLTL7hhx3XuDwf1nx+H1u+t0LJ9+C+d6t60lMbtn/mfyAKfNJtvc7aZOqwUEJnvZe+bsX1BL
AwQKAAAAAABcEihKAAAAAAAAAAAAAAAADAAcAGNvbXBvc2l0aW5nL1VUCQADEBJyWD0Sclh1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgALRIoSo7JJDBDAAAARgAAADsAHABjb21wb3NpdGluZy9hYnNv
bHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4dFVUCQADtRFyWLURclh1
eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+v
JDWvRM8ltSw1J78gF8i2MjK1tDDU4wIAUEsDBBQAAgAIAFwSKEpmXaf+QwAAAEYAAABHABwAY29t
cG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWNy
YXNoLWxvZy50eHRVVAkAAw8SclgPEnJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81L
AZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyMzCx0OMCAFBLAwQKAAAA
AABcEihKAAAAAAAAAAAAAAAAFgAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9VVAkAAw8Sclg9EnJY
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAC0SKEpSYS03QwAAAEYAAABFABwAY29tcG9zaXRpbmcv
YW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0
VVQJAAO1EXJYtRFyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUF
Oal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMrW0MNXjAgBQSwMEFAACAAgAXBIoSowByklD
AAAARgAAADUAHABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gt
bG9nLnR4dFVUCQADDxJyWA8Sclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUK
yfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMDXU4wIAUEsDBAoAAAAAAFwS
KEoAAAAAAAAAAAAAAAAgABwAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9VVAkAAw8S
clg9EnJYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAC0SKEo2mDc+QwAAAEYAAABEABwAY29tcG9z
aXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxv
Zy50eHRVVAkAA7URcli1EXJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5
uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIytbSw1OMCAFBLAwQUAAIACABcEihK
Z8MBT0MAAABGAAAAWAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2Ut
dmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAkAAw8SclgP
EnJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUg
yjk/ryQ1r0TPJbUsNSe/IBfItjIyMzA10eMCAFBLAwQKAAAAAABcEihKAAAAAAAAAAAAAAAAHQAc
AGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvVVQJAAMPEnJYPRJyWHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACABcEihKhXoci0MAAABGAAAATgAcAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29s
b3IvYmFja2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNpdHktY3Jhc2gtbG9nLnR4dFVUCQAD
DxJyWA8Sclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGp
Sd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjK1tDTW4wIAUEsDBAoAAAAAAFwSKEoAAAAAAAAAAAAA
AAAYABwAY29tcG9zaXRpbmcvYmFja2dyb3VuZHMvVVQJAAMPEnJYPRJyWHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACABcEihKWdIVjEMAAABGAAAARAAcAGNvbXBvc2l0aW5nL2JhY2tncm91bmRzL2Zp
eGVkLWJhY2tncm91bmQtb24tZGVzY2VuZGFudC1jcmFzaC1sb2cudHh0VVQJAAMPEnJYDxJyWHV4
CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68k
Na9EzyW1LDUnvyAXyLYyMrW0NNfjAgBQSwMECgAAAAAAXBIoSgAAAAAAAAAAAAAAABQAHABjb21w
b3NpdGluZy9iYWNraW5nL1VUCQADEBJyWD0Sclh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgALRIo
Sr7xFH5DAAAARgAAADoAHABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHkt
ZmxpcC1jcmFzaC1sb2cudHh0VVQJAAO1EXJYtRFyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJ
T1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjMwMNTjAgBQ
SwMEFAACAAgAXBIoSgx6+1hDAAAARgAAAEYAHABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNl
LXZpc2liaWxpdHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFzaC1sb2cudHh0VVQJAAMQEnJYEBJyWHV4
CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68k
Na9EzyW1LDUnvyAXyLYyMjMwM9bjAgBQSwMECgAAAAAALRIoSgAAAAAAAAAAAAAAABMAHABjb21w
b3NpdGluZy9jYW52YXMvVVQJAAO1EXJYPRJyWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAtEihK
YlkdeUMAAABGAAAAPwAcAGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29t
cG9zaXRpbmctY3Jhc2gtbG9nLnR4dFVUCQADtRFyWLURclh1eAsAAQT1AQAABBQAAADzy1dILkos
zlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMDDV
4wIAUEsDBAoAAAAAAC0SKEoAAAAAAAAAAAAAAAAVABwAY29tcG9zaXRpbmcvY2xpcHBpbmcvVVQJ
AAO1EXJYPRJyWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAtEihKBqAHcEMAAABGAAAAUQAcAGNv
bXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRpdXMtb3ZlcmZsb3ctaGlkZGVuLXN0YWNraW5n
LWNvbnRleHQtY3Jhc2gtbG9nLnR4dFVUCQADtRFyWLURclh1eAsAAQT1AQAABBQAAADzy1dILkos
zlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMLDU
4wIAUEsDBAoAAAAAAFwSKEoAAAAAAAAAAAAAAAAbABwAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hp
bmcvVVQJAAMQEnJYPRJyWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAtEihK25aoxkMAAABGAAAA
PQAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLWNyYXNo
LWxvZy50eHRVVAkAA7URcli1EXJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJF
Csn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyMzA01OMCAFBLAwQUAAIACABc
EihKB8nD40MAAABGAAAAOAAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL3BkZi1pbWFnZS1t
YXRjaC1jcmFzaC1sb2cudHh0VVQJAAMQEnJYEBJyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJ
T1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYyMjMwN9TjAgBQ
SwMECgAAAAAAXBIoSgAAAAAAAAAAAAAAABQAHABjb21wb3NpdGluZy9jb2x1bW5zL1VUCQADEBJy
WD0Sclh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgALRIoSrVCLMVDAAAARgAAAD8AHABjb21wb3Np
dGluZy9jb2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQtaW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRV
VAkAA7URcli1EXJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5
qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyMzA01uMCAFBLAwQUAAIACABcEihKaR1H4EMA
AABGAAAANgAcAGNvbXBvc2l0aW5nL2NvbHVtbnMvY2xpcHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gt
bG9nLnR4dFVUCQADEBJyWBASclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUK
yfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjIzMDfW4wIAUEsDBAoAAAAAAFwS
KEoAAAAAAAAAAAAAAAAcABwAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL1VUCQADEBJyWD0S
clh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAXBIoSue4MF5DAAAARgAAADkAHABjb21wb3NpdGlu
Zy9jb250ZW50cy1vcGFxdWUvYmFja2dyb3VuZC1jbGlwLWNyYXNoLWxvZy50eHRVVAkAAxASclgQ
EnJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUg
yjk/ryQ1r0TPJbUsNSe/IBfItjIyMzAz0+MCAFBLAwQUAAIACABdEihKFRSaLMQCAABaCAAADQAc
AGVycm9yX2xvZy50eHRVVAkAAxESclheEXJYdXgLAAEE9QEAAAQUAAAAxVVRb9owEH7frzjx0k0a
cRISCHnroFvZaFcVuj4gVJnkIG5jO7Kd0f77OaFQ1pa2qJMGDyD77vs+f/bdTUalgO9UgBuB68de
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
m9EKKxAJAAA6EQAAFQAYAAAAAAABAAAApIHkEwAAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQFAANY
EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+hEoSizDo49FBQAA1wYAABQAGAAAAAAAAQAA
AKSBQx0AAF93cHRfY2VydHMvY2FrZXkucGVtVVQFAANYEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA+hEoSkvfVLdJAAAAZQAAABQAGAAAAAAAAQAAAKSB1iIAAF93cHRfY2VydHMvaW5kZXgu
dHh0VVQFAANYEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA+hEoSphceX8VAAAAFQAAABkA
GAAAAAAAAQAAAKSBbSMAAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJVVAUAA1gRclh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAAD6EShKmFx5fxUAAAAVAAAAHQAYAAAAAAABAAAApIHVIwAAX3dw
dF9jZXJ0cy9pbmRleC50eHQuYXR0ci5vbGRVVAUAA1gRclh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAIAAAD6EShKod6POjcAAAA3AAAAGAAYAAAAAAABAAAApIFBJAAAX3dwdF9jZXJ0cy9pbmRleC50
eHQub2xkVVQFAANYEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+hEoSvbYrS4MBQAAjwYA
ABgAGAAAAAAAAQAAAKSByiQAAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUBQADWBFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPoRKEpitRDP8QkAADsSAAAYABgAAAAAAAEAAACkgSgqAABf
d3B0X2NlcnRzL2xvY2FsaG9zdC5wZW1VVAUAA1gRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIA
AAD6EShKCM/1aQcAAAAHAAAAEQAYAAAAAAABAAAApIFrNAAAX3dwdF9jZXJ0cy9zZXJpYWxVVAUA
A1gRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAD6EShKy5zYQgcAAAAHAAAAFQAYAAAAAAAB
AAAApIG9NAAAX3dwdF9jZXJ0cy9zZXJpYWwub2xkVVQFAANYEXJYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA+BEoSgAAAAAAAAAAAAAAAA4AGAAAAAAAAAAAAKSBEzUAAGFjY2Vzc19sb2cudHh0
VVQFAANUEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQhIoSgAAAAAAAAAAAAAAAA4AGAAA
AAAAAAAQAO1BWzUAAGFjY2Vzc2liaWxpdHkvVVQFAAPbEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAcxIoSpejbasuOAAAmb0AAEsAGAAAAAAAAQAAAKSBozUAAGFjY2Vzc2liaWxpdHkvYWNj
ZXNzaWJpbGl0eS1jcmFzaC13aXRoLWR5bmFtaWMtaW5saW5lLWNvbnRlbnQtY3Jhc2gtbG9nLnR4
dFVUBQADOhJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMSKEq+azL7ITgAAGm9AABAABgA
AAAAAAEAAACkgVZuAABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFu
YWdlbWVudC1jcmFzaC1sb2cudHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
QhIoSgAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1B8aYAAGFjY2Vzc2liaWxpdHkvbWFjL1VUBQAD
2xFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMSKEqlr2mGLzgAALK8AAAxABgAAAAAAAEA
AACkgT2nAABhY2Nlc3NpYmlsaXR5L21hYy9hYmJyLWFjcm9ueW0tdGFncy1jcmFzaC1sb2cudHh0
VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcxIoSpV2S1YZOAAAab0AACkAGAAA
AAAAAQAAAKSB198AAGFjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2tleS1jcmFzaC1sb2cudHh0VVQF
AAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQhIoSgAAAAAAAAAAAAAAAB4AGAAAAAAA
AAAQAO1BUxgBAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L1VUBQAD2xFyWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAHMSKErjWZq4JDgAAKi8AAA5ABgAAAAAAAEAAACkgasYAQBhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLWNyYXNoLWxvZy50eHRVVAUA
AzoSclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABzEihK6G2aUS04AACavQAAOQAYAAAAAAAB
AAAApIFCUQEAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMi1jcmFz
aC1sb2cudHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQhIoSgAAAAAAAAAA
AAAAAB8AGAAAAAAAAAAQAO1B4okBAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS9VVAUA
A9sRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABzEihKd9zUJCY4AACovAAATAAYAAAAAAAB
AAAApIE7igEAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2Vy
LWluZm8tdGV4dGFyZWEtY3Jhc2gtbG9nLnR4dFVUBQADOhJyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHMSKEpUCMKVGzgAAGq9AABNABgAAAAAAAEAAACkgefCAQBhY2Nlc3NpYmlsaXR5L21h
Yy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0ZmllbGQtY3Jhc2gtbG9n
LnR4dFVUBQADOhJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEISKEoAAAAAAAAAAAAAAAAa
ABgAAAAAAAAAEADtQYn7AQBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL1VUBQAD2xFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMSKEqngSr6JDgAAKi8AABZABgAAAAAAAEAAACkgd37AQBh
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlv
bi1jb252ZXJzaW9uLWhhbmctY3Jhc2gtbG9nLnR4dFVUBQADOhJyWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHMSKEodVb0OGTgAAGq9AABBABgAAAAAAAEAAACkgZQ0AgBhY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtY3Jhc2gtbG9nLnR4dFVUBQAD
OhJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwSKEoAAAAAAAAAAAAAAAALABgAAAAAAAAA
EADtQShtAgBhbmltYXRpb25zL1VUBQADDxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwS
KEoAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQW1tAgBhbmltYXRpb25zLzNkL1VUBQADDxJyWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACwSKEq2DcNrQwAAAEYAAAA5ABgAAAAAAAEAAACkgbVt
AgBhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNyYXNoLWxvZy50
eHRVVAUAA7QRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABcEihKsNgw80MAAABGAAAAOwAY
AAAAAAABAAAApIFrbgIAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNmb3JtLXR5cGUtYW5pbWF0
aW9uLWNyYXNoLWxvZy50eHRVVAUAAw8Sclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAsEihK
Be/o3kMAAABGAAAAMwAYAAAAAAABAAAApIEjbwIAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxl
LW5hbWUtbnVsbC1jcmFzaC1sb2cudHh0VVQFAAO0EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAXBIoSt9lcGNDAAAARgAAADQAGAAAAAAAAQAAAKSB028CAGFuaW1hdGlvbnMvQ1NTS2V5ZnJh
bWVzUnVsZS1wYXJhbWV0ZXJzLWNyYXNoLWxvZy50eHRVVAUAAw8Sclh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAsEihKAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGEcAIAY2FudmFzL1VUBQAD
tBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACwSKEoAAAAAAAAAAAAAAAAOABgAAAAAAAAA
EADtQcVwAgBjYW52YXMvcGhpbGlwL1VUBQADtBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AFwSKEoAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQQ1xAgBjYW52YXMvcGhpbGlwL3Rlc3RzL1VU
BQADDxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACwSKEpqpcpsQwAAAEYAAAA0ABgAAAAA
AAEAAACkgVtxAgBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1jcmFzaC1s
b2cudHh0VVQFAAO0EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXBIoSjXOf/ZDAAAARgAA
ADUAGAAAAAAAAQAAAKSBDHICAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlZmVyZW5j
ZS1jcmFzaC1sb2cudHh0VVQFAAMPEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcxIoSmS4
UVoTOAAAg7wAADsAGAAAAAAAAQAAAKSBvnICAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5E
ZXZlbG9wbWVudC0yNjA4MS1jcmFzaC1sb2cudHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAcxIoStu/DgIcOAAAab0AADsAGAAAAAAAAQAAAKSBRqsCAGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yNjA4My1jcmFzaC1sb2cudHh0VVQFAAM6EnJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcxIoSunlcaoiOAAAdL0AADsAGAAAAAAAAQAAAKSB1+MC
AGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yNjA4NS1jcmFzaC1sb2cu
dHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcxIoSv8ZhMkbOAAAar0AADsA
GAAAAAAAAQAAAKSBbhwDAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0y
NjA4Ny1jcmFzaC1sb2cudHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcxIo
SkUuBb0YOAAAg7wAADsAGAAAAAAAAQAAAKSB/lQDAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5EZXZlbG9wbWVudC0yNjA4OS1jcmFzaC1sb2cudHh0VVQFAAM6EnJYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAXBIoSgAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1Bi40DAGNvbXBvc2l0aW5n
L1VUBQADEBJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC0SKEqOySQwQwAAAEYAAAA7ABgA
AAAAAAEAAACkgdGNAwBjb21wb3NpdGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4
ZWQtY3Jhc2gtbG9nLnR4dFVUBQADtRFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFwSKEpm
Xaf+QwAAAEYAAABHABgAAAAAAAEAAACkgYmOAwBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlv
bi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUBQADDxJyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwSKEoAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQU2PAwBj
b21wb3NpdGluZy9hbmltYXRpb24vVVQFAAMPEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
LRIoSlJhLTdDAAAARgAAAEUAGAAAAAAAAQAAAKSBnY8DAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9h
bmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUBQADtRFyWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFwSKEqMAcpJQwAAAEYAAAA1ABgAAAAAAAEAAACkgV+Q
AwBjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gtbG9nLnR4dFVU
BQADDxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwSKEoAAAAAAAAAAAAAAAAgABgAAAAA
AAAAEADtQRGRAwBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L1VUBQADDxJyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAC0SKEo2mDc+QwAAAEYAAABEABgAAAAAAAEAAACkgWuRAwBj
b21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktM2QtY3Jh
c2gtbG9nLnR4dFVUBQADtRFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFwSKEpnwwFPQwAA
AEYAAABYABgAAAAAAAEAAACkgSySAwBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2Jh
Y2tmYWNlLXZpc2liaWxpdHktaGllcmFyY2hpY2FsLXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQF
AAMPEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAXBIoSgAAAAAAAAAAAAAAAB0AGAAAAAAA
AAAQAO1BAZMDAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvVVQFAAMPEnJYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAXBIoSoV6HItDAAAARgAAAE4AGAAAAAAAAQAAAKSBWJMDAGNvbXBv
c2l0aW5nL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNp
dHktY3Jhc2gtbG9nLnR4dFVUBQADDxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwSKEoA
AAAAAAAAAAAAAAAYABgAAAAAAAAAEADtQSOUAwBjb21wb3NpdGluZy9iYWNrZ3JvdW5kcy9VVAUA
Aw8Sclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABcEihKWdIVjEMAAABGAAAARAAYAAAAAAAB
AAAApIF1lAMAY29tcG9zaXRpbmcvYmFja2dyb3VuZHMvZml4ZWQtYmFja2dyb3VuZC1vbi1kZXNj
ZW5kYW50LWNyYXNoLWxvZy50eHRVVAUAAw8Sclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABc
EihKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UE2lQMAY29tcG9zaXRpbmcvYmFja2luZy9VVAUA
AxASclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAtEihKvvEUfkMAAABGAAAAOgAYAAAAAAAB
AAAApIGElQMAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtY3Jh
c2gtbG9nLnR4dFVUBQADtRFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFwSKEoMevtYQwAA
AEYAAABGABgAAAAAAAEAAACkgTuWAwBjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2li
aWxpdHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFzaC1sb2cudHh0VVQFAAMQEnJYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAALRIoSgAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1B/pYDAGNvbXBvc2l0
aW5nL2NhbnZhcy9VVAUAA7URclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAtEihKYlkdeUMA
AABGAAAAPwAYAAAAAAABAAAApIFLlwMAY29tcG9zaXRpbmcvY2FudmFzL2FjY2VsZXJhdGVkLWNh
bnZhcy1jb21wb3NpdGluZy1jcmFzaC1sb2cudHh0VVQFAAO1EXJYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAALRIoSgAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BB5gDAGNvbXBvc2l0aW5nL2Ns
aXBwaW5nL1VUBQADtRFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC0SKEoGoAdwQwAAAEYA
AABRABgAAAAAAAEAAACkgVaYAwBjb21wb3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92
ZXJmbG93LWhpZGRlbi1zdGFja2luZy1jb250ZXh0LWNyYXNoLWxvZy50eHRVVAUAA7URclh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABcEihKAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UEkmQMA
Y29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvVVQFAAMQEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgALRIoStuWqMZDAAAARgAAAD0AGAAAAAAAAQAAAKSBeZkDAGNvbXBvc2l0aW5nL2NvbG9y
LW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLWNyYXNoLWxvZy50eHRVVAUAA7URclh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABcEihKB8nD40MAAABGAAAAOAAYAAAAAAABAAAApIEzmgMA
Y29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvcGRmLWltYWdlLW1hdGNoLWNyYXNoLWxvZy50eHRV
VAUAAxASclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABcEihKAAAAAAAAAAAAAAAAFAAYAAAA
AAAAABAA7UHomgMAY29tcG9zaXRpbmcvY29sdW1ucy9VVAUAAxASclh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAtEihKtUIsxUMAAABGAAAAPwAYAAAAAAABAAAApIE2mwMAY29tcG9zaXRpbmcv
Y29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1jcmFzaC1sb2cudHh0VVQFAAO1
EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXBIoSmkdR+BDAAAARgAAADYAGAAAAAAAAQAA
AKSB8psDAGNvbXBvc2l0aW5nL2NvbHVtbnMvY2xpcHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9n
LnR4dFVUBQADEBJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwSKEoAAAAAAAAAAAAAAAAc
ABgAAAAAAAAAEADtQaWcAwBjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQFAAMQEnJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXBIoSue4MF5DAAAARgAAADkAGAAAAAAAAQAAAKSB+5wD
AGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtY3Jhc2gtbG9nLnR4
dFVUBQADEBJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF0SKEoVFJosxAIAAFoIAAANABgA
AAAAAAEAAACkgbGdAwBlcnJvcl9sb2cudHh0VVQFAAMREnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAdBIoSlCEZW+eAwAA4Q4AABEAGAAAAAAAAQAAAKSBvKADAGZ1bGxfcmVzdWx0cy5qc29u
VVQFAAM7EnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+BEoSlsEWA6iBQAATRAAAAoAGAAA
AAAAAQAAAKSBpaQDAGh0dHBkLmNvbmZVVAUAA1QRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAD5EShKAAAAAAAAAAAAAAAAGgAYAAAAAAAAAAAApIGLqgMAcHl3ZWJzb2NrZXQud3MubG9nLWVy
ci50eHRVVAUAA1URclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD5EShKAAAAAAAAAAAAAAAA
GgAYAAAAAAAAAAAApIHfqgMAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUAA1URclh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAD5EShKAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEzqwMA
cHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQFAANWEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA+REoSgAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBiKsDAHB5d2Vic29ja2V0Lndzcy5s
b2ctb3V0LnR4dFVUBQADVhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHQSKEpFJh050ScA
AMuqAAAMABgAAAAAAAEAAACkgd2rAwByZXN1bHRzLmh0bWxVVAUAAzsSclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAB0EihKvplUmeADAABHDAAACgAYAAAAAAABAAAApIH00wMAc3RhdHMuanNv
blVUBQADOxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAP0RKErmaM2y3gQAAFYbAAAZABgA
AAAAAAEAAACkgRjYAwB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAANeEXJYdXgLAAEE9QEA
AAQUAAAAUEsFBgAAAABTAFMAoCMAAEndAwAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298303</attachid>
            <date>2017-01-08 03:00:55 -0800</date>
            <delta_ts>2017-01-09 02:39:30 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews113 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>295176</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
AAAAAAAAAAAADgAcAGFjY2Vzc2liaWxpdHkvVVQJAAOEEXJYsRFyWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAApEihKvNLjb2U6AADSwgAASwAcAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1j
cmFzaC13aXRoLWR5bmFtaWMtaW5saW5lLWNvbnRlbnQtY3Jhc2gtbG9nLnR4dFVUCQADrhFyWAgR
clh1eAsAAQT1AQAABBQAAADkW1tz28aSfl7+CjylKNug5j4Dlo+rcHV0YssqS3aylUqxQGAooUwC
DAja1v767QFICgAhWUxSuw+HDyaFGXR/fe8ewFdlkejNZmp1P8F2tf6o81SXN6XW1u9EUOb8MbqK
q7v+Vvicfy6W25XenH/+8O7T+/D8xXn3/tFFqvMqW2S6nD7OZfRZl5usyPsM0MgvUm3d3K91d+k3
JWzBrPFlXGVf9RmgK4GNddUT6eq+uivyRgb1x+ij3qyLfJPNlx1yj0j8aaNL6yLoY+IIj0ZBXOnz
m2zVg0UQljbCNlIWIlNMp4RMpCQWXEBo9OHaGpLzfZxYsPSbhdEE44mwxpi/xQSTMwC8Lsrq6C6M
R25e5PerYruxPn1qYQwoFph7yJbcdWwcCN8WAju2L6Qno0C6Hg9Go5FBbrnf4i/aus7yRFteUVRT
iwJKa6OTIk83o9H1/abSK+sir/RtmVX3RruVTqoaic5j0GI6GvllvLnTqXVzV+o4PQBBgCXbrOMq
ubP+3OotKCopVpN4vV7qySrOcruqbxiNwu+JXhuiXTOHv/kzzw1mru+H19fW+Pri7XX49vNZa7/x
jYOtfwk/Xs4uLj+77y7gpiD4aO6KKwt9R7vPfB6nc60XLQqXIFCHo//h49V1OLv8cHMR/fdo9Pm9
9VHfws6NdanjEojtiUxHtv3GGpn7ZrOb8Lebo8jYccVIcQf0iuyHC4Kn8MP63bKkUr/8YZX29/Py
23fr+v2//A+/DgTVaPR2WczjpXVTxsZa28UCfHNc6q/gGdpK7soiL5bFbZbAnp0Bz6YjiSYIUwoO
CB8/utTVt6L8coT0vxodycVioVIF/iO05YNxqiy/tVK9iLfLCqxXfMm0tamKMr7V1resurPWTbid
z7d5utRWdgj1v8wZCSsy7AznDCwc/Xxzc+XXrK93nDewttRVke+YMCRPY0Id3mFyef0Uk1Hj2ODQ
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
+CgaJeQQbQmKg2n0Z9FH554zaTkhYThP45eceQElKJtlFdjGcwF09aIZMykEGFAMRoOkKztgPuXT
o8JoVu/pBtyssBcB2jvcbqnaOAzpMSEmZHIOwwxQC/vEVgZgOBpMj13srItLfgNMl3BbG5ey7U4W
6s7Q0kPSrthhnjAWHiCNoClOZ+on5cGa9yfBmtaFuEuJC5aK05TWRlowWZbDRqpDPf5e3iOmVWVd
tXOti6tT51tHDzt6Oh5zONXca8o93d24lNYP1JBtqdmj316hWlVyo4CjQquN40UHHibxZZ6QSlZb
4H4v1WbIdZ0Xrm9h3ANSxqLLgJI+5+A383Jnn13Zw/HBCWF42VlZamwb9y8q1RIqXRvmWxdO+tYJ
GkcvWtcBXOrWi5O9OM1JKjA76XMnI73MUQH98c0J97PiFgvlmqdoMULf9/PoM2pO19JuH+gGMuF3
nz2yWX2V8JS5d2vaYtmUMFf/Pz3Wn3nqg5E/HMtDXd+0WrhUJC3kL2qlVp5810M3Rte7ZuWgaQ+d
EgqXoP5mPeQov2NUhDtUSghPDyj0Knc7l9NJnsTuedzXpiVcK/5FiMp9A3cXxfWTK3MU9Q6CE4x4
Xe6O/ttS2St0NLlu9qO4d6TgHvjZfxy+D2dd7ZhNk4gkJEKl0w2iZm6IECIds3g8oRw1Uzb4F1BL
AwQUAAIACAApEihKyjvezms6AADvwgAAQAAcAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1u
b2RlLW1lbW9yeS1tYW5hZ2VtZW50LWNyYXNoLWxvZy50eHRVVAkAA64RclhHEXJYdXgLAAEE9QEA
AAQUAAAA5Ftbc9vGkn5e/go8pSjboOY+A5aPq3B1dGLLKkt2spVKsUBgKKFMAgwI2tb++u0BSAoA
IVlMUrsPRw8WxZnp/vrePYCvyiLRm83U6v4E29X6o85TXd6UWlu/E8EQ/2N0FVd3/a3wc/65WG5X
enP++cO7T+/D8xfn3fOji1TnVbbIdDl9nMvosy43WZH3GaCRX6Taurlf6+7Sb0rYglnjy7jKvuoz
QFcCG+uqJ9LVfXVX5EYGytQfo496sy7yTTZfdsg9IvGnjS6ti6CPiSM8GgVxpc9vslUPFkFY2gjb
SFmITDGbUjrBHFnwBUKjD9fWkJzv48SCpd8sjCYYT4Q1xvwtJpicAeB1UVZHpzAeuXmR36+K7cb6
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
R/rYXer2g01se5lkvo///Hb2/uKDew2/va9fnr39dXKy/f/in+/qw6+dn/1Pvhvefvj1YvLD6m5V
ze+mN8v1fLn4cXLy0/7nQAPt3d0vJ26+uf6Cpeou7qdznL0jP4wI86r9Y3ISXk7WGe1gco1KYj3a
FRWifUfAO7DWPpw1L0zQkh59hxX9xG0BOZAaK1hZD3lF9noT5pS86bzzy/nkl7OLyccmSRNInN8t
Rvra98MPvfNDk8CKI5tpOyUv9/3sfnbPTGBKTxcLBOOcANEYg9+ZHj+evMqoVxOHVyZvV/Pl+Pcp
yHrjXr9+G47OI0rFKd+xT1X7zseH6f1i8hnHeuyHs7YfPTl516z2CXyiz+vl5Gx1dffoFDi/cOHV
5OUH9z4eJA5Myf2nMfDOBpyPRxYGJaeq+85vby4zR+7iyLKYCNLSBmPw+3KGyvhNHv5D/XRo4zDW
l5fRXbjjtDHavsPA6oR3zt64l/Xxl2Q5pS8vX5/9+qqOMN0OdqPMfgyafi7qf1wcJ02oU93SJvCd
D7+ehbfxKHXgD3dpu80S7uDibIY3C+D999nKgVtwkO+/HXqJ7+cb8vPviKmLtxdZXB6fPKdmu0Ql
ftP8zn9ObkFyrIuF2izQzIFk7Vjnd07+D1BLAwQUAAIACADyEShKffwN5ewCAAAeBwAAJgAcAGFj
Y2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2tleS1zdGRlcnIudHh0VVQJAANHEXJYRxFyWHV4CwABBPUB
AAAEFAAAAJWUXW/aMBSG7/kVvppg6xbng4RE66S2UAmt6yrKxsU0VY59DJYSGznO2u7Xzw4JsAJa
d4Udv+9zjs85+OL+fjKbT7/eouuL6c1knKHyYW10z/uuirqEyhsTQ7zJ4t5bQP5ZmPbnshYF88aQ
10uvrrRXKEoKT0ha1Ay8R8O9GfAPq76P/QHKkN18nH9Cbxbz6yxzG0u5Uhqy7N48F3CpnlyYT1mm
1qCJUfq831neDNCPOTpHRx0/ez5CCD/5PmZ5wDFGNsKVJtWqF7QH8SjI/ZSh/wj9D6lNqRe29MQf
AcR8l51TvDLK6ywuWrQXjSTJLtoMJAPd6I+i984dZ9hyRsME52n4kjMpoARpsqwC03hOgM5eNGMs
OAcNksKgF3dlz3M2YqO9wihab+ga7KzQFwHaO1ytiFxaTLLFUJwkw2MYqoEY2CQ21wD9QW+076JH
XUywS6CqhKta25RNdzKV15qUDpJ2EB7HlPo7SCNoitOZtpNyZ/THg2BN63zc0uiI05QfprTQwoDO
shyWQu7q8W12g6iSlbHVzpUqzg6dby3d7+hRFDE41Nwowhzd3rgUxg1Un66I3qDfnqFaVmIpgaFC
yaXlBTseTsLTPC6kqFbA3F7IZZ+pOi9s3/xwC0gpDU4DSvKcg9tMyrV5tmX3o50TfP+0szJEmzbu
FyLkDCpVa+pa5w+3reMkDF60rgPY1I0Tx404wGkQc0wP+tzJkk7mQ84BvfthhZtZsYuptM2TpBig
h808uoya04UwqzuyhIy73a1DNqvvAh4z+26NWiwJI2rr/95h3Zmj3mnxy7Ic1PZNyalNRZBC/CZG
KOnI11voUqt63awsNN1ChwmBU1B3sy1kL799VIA7VBQlLN2h0Kvcm7nEPBzy0D6Pm9q0hAvJvnJe
2W9g7yKZerRlDoLOEWMcY8Tqcr333xbSnKG9ybWzH4RbRwD2gR//5XB9OOqKOhfDcRKg0up6QTM3
Cec8jWgYDQlDzZT1/gBQSwMECgAAAAAAEhIoSgAAAAAAAAAAAAAAAB4AHABhY2Nlc3NpYmlsaXR5
L21hYy9zZWxlY3QtdGV4dC9VVAkAA4QRclixEXJYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACkS
KEow3G09XjoAANLCAAA5ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRl
eHQtMS1jcmFzaC1sb2cudHh0VVQJAAOuEXJYCBFyWHV4CwABBPUBAAAEFAAAAORbW3PbxpJ+Xv4K
PKWo2KDmPgOWj6twTXRiyy5LdrKVSrFAYCChTAEMCNrW/vrtAUgKACFZTFK7D4cPJoUZdH997x7A
76sy0ZvN3Op/gu3d+oMuUl1dV1pbvxNBOf1j8j6ub4db4XP+qVxt7/Tm/NO7Nx/fhuc/nvfvn1yk
uqjzLNfV/HEuk0+62uRlMWSAJn6Zauv6fq37S78pYQtmTS/jOv+izwBdBWys9wOR3t/Xt2XRykD+
mHzQm3VZbPLlqkfuEYk/bnRlXQRDTBzhySSIa31+nd8NYBGEpY2wjZSFyBzTOSEzKR0LLiA0eXdl
jcn5Nk4sWPrNwmiG8UxYU8x/wgSTMwC8Lqv66C6MJ25RFvd35XZjffzYwRhQLDD3kC2569g4EL4t
BHZsX0hPRoF0PR5MJhOD3HK/xp+1dZUXiba8sqznFgWU1kYnZZFuJpOr+02t76yLotY3VV7fG+3W
OqkbJLqIQYvpZOJX8eZWp9b1baXj9AAEAZZ8s47r5Nb6c6u3oKikvJvF6/VKz+7ivLDr5obJJPyW
6LUh2jdz+Ju/8Nxg4fp+eHVlTa8ufroKf/p01tlvfONg61/CD5eLi8tP7psLuCkIPpi74tpC39Du
s1zG6VLrrEPhEgTqcfTffXh/FS4u311fRP89mXx6a33QN7BzY13quAJieyLziW2/tibmvsXiOvzt
+igydlwxSjON4Yd9uKBRLOCH9btlSaV++cOq7G/n1ddv1tXbf/nvfh0Jqsnkp1W5jFfWdRUba22z
DHxzWukv4BnaSm6rsihX5U2ewJ6dAc/mE+HMlCJEcIPHjy51/bWsPh8h/a9WRzLLMpUq8B+hLR+M
U+fFjZXqLN6uarBe+TnX1qYuq/hGW1/z+tZat+F2vtwW6Upb+SHU/zJnJKzIsDOcc7Bw9PP19Xu/
YX2147yBtZWuy+KvMqEO7zG5vHqKyaR1bHDonafP58/0bAiBzsq/4y/xVVLl69ovK91D1jhFFrMk
Q9L69TpqGFkvLOpYU3cDWcj46maWrNdzSujZBPcI/6qXDxStI8KYs4RiJzWE5/MPOnu1u2E+v6rv
V9orv0Eyi1/P5+VaVzHI/6/pd7b+8MMZoJPSmsKe2e0cI3w2IaeB0kRokVkHBobwM8E975YWJAOQ
u30AlIqzCT0ZZwySHni0daLhNAqqs75TEzZqOlwEFEzJswk7CYYkSC0dOoQRrvQdhNx8vtF1Q/0R
HC+tvo6C3OQPDYnfIORM7iHuCDauxjA7m/DTtKU4hxDrWLVMti3CSkNqSgYgd2r0b+PipoGiCNT0
/U0NCqwwOpuIU2EoKfkYjMSkNf1Q7KeNAhAecCWQic4m8nSuySjXNE89SMp32t9Wpk/Zr1wUURXf
tSCEc4RBQAegTsOwzHSS4AcMDf3GP/a0D8H9vq5eHWHdhQ0XoJHm3haKUmcT5zQkDpGJkx1r41do
JaAXnC+hrhYPrvDxwxugXmxqcNZlWa5eHt/5YxNOQj7oqaXV+okEb8XoNIOlCYPu8ojRmzJODUQg
dZfXJn1Mk1uo/g2+H19aW2ghbwroeVZlcWNAYUYeQLV3N6CUcgAUPhUUkvRxUFle5KYMmb+hSE3T
cguNmEFBqTOKgjGDgpyGQuMkIY+juIvvl9r8Ed6t6/vGgTGG4j3GHzMH6gOmpwLQGD8OYFPHVb3T
wVsoutDal9sqaWOJqHFNQFSb8slOQgLmiCkZhNQeBhijblk6aBcxHX5EGXZ8wO6XvH6jb+Lkfoxd
xhOaoeQogh8YqX1kQj2jkCGwOI3+cglJwnrxO+xssw/8MD1+VcSrM2vRZkij0mb1V+jz3kNHNM/M
X5cGS/PrU66/zv8weCQIvqc1u7sDUCYS5UmgRIoTiCfbgDKUDcH3Vf4FkBhIEIdlcQEayONV/j+x
aYcMrugA6aYqt+vml4EkOHIaTIaUgQQtn/FAdSImImP9GCZjjwOGjnL6SCgifSBMQibFzmlANJap
8wDEeiZviLgub84x5AGCjubd8XZ5N7pkGYU2rXWKHTG3SN9l2QauaTBDkZZfW8fkHIKuR9qwlRwk
JvgUrtp8CWSlvTumeVG/tDqJuKkHpOkYjrhiaiKdkBPZEg2Ncv8OEwnjrDEZFRgzaiSmp7GWSEhi
mfHBmO5IJoOiCS6ILZDYWuXL9H6VzuCffPnUxONA9884zC9NwjSoDxMNnjcjChDYNJP+4jPkAL3q
0+wOT1msOTTEMPCaOevPZn+l621lMGPUzCUP1NbtGNQj16Wm1TLlUln7jYuvf7Y/GtUq2kwUJ5Fb
UoZbOXu06EFi8uTsZnS6W7Tv4gKSXvUXFATjsvUZ5vKiXvxZbnqK2VMfsVqXiuNw6P24tdjvX9zd
VJBwvpSftfF4LPaqeT5BnCbpgOBBQZwcFET/41yC/cdJzP+KxBjFIPFG332N83ph2t94NSZv8rQr
OpIinKLMKuKi3Ky0XhsijrMXM3nxYobHk1oPEXESBJVsU6fz+WKB5/P6Nt/sPBp6Q0N4kZXV9GFD
e0QGo9i2avqHV6Z3bxr4lx0yzdorDNMH3p8aotVr6/VuNGkGED44Qvj+wQ7U70xYX8o8/S7i58Ay
gP6mZAOZsFTQp+zAMEqHxxPfFzHVHIaW5V28WpXJTp4Oxm2RQ7pdwNrnV4dNVzVgSt5ua/3t9Q9d
rH9VokYUB4pyhzJ0yUIMzzGeIw/m6YM8xus/FnW+iuLVRv+fC9aOxI2pzGDeF0/S4fnIc8RDifMg
3s86XoPRkhjK1o3+f7EbeM/UwGjnNHP0JE+VKU0SNZQJfDxpz1yu9tI1XoJYlx2Sw4OWZwS1edLy
wM7d3BfJdbzp6MnQf9mG/XQA68ez6dlrkwNMxH3YFm/Kct0CM6fZ0wMxc7hK5PDs5RngCErFPwIu
LOrq/n0JDfD075BrGmaqBqJhPDyzeYZoDCek4fRjx6kWu1S6WFflt/tXnTS7BbKvWmCA5O/J8PJv
qfRHk7cb4M3JNIyj08Ui2xbNE7V4tVjGGz1nmLdHRqf1EA7MLYceYlmm903Nx82xz4mUcPxA6TA0
CNUc4JzYiXBsDQk99CFi3m2+L68+fnjjl0XRPmBsD1FOblRSnTVTlGlxNzeLuorXY13KcwjRJT0Q
Mk0yHzzhMP4ZldsibVLdcadDOXRNMKotFn60i/ArXX3JE5jlktv3ZaMOgsmgm3gGWcZ10iULX41m
uRiU7WfQohqCskvpaq2TPMuT5khLDOrm2DO2wdM1FgvoN38fmHPa2vPMWlS7czpzwbBsjioYqKFf
woawj6ZalmItjHYvr1p/WrQ+tli0usBN/fhngkhZ/1gQOdY/G0TISnbP35sHsr8psXsQb5kqra2p
YPYyr8/mE8uq4m/zkcfhsLDsLew/sJA8dkd6WMDLXW6Gb8MkzR+htRkuYIKEMtzX+wUjNMcJXnLW
3DG6YJ65V+qYibnFqpzuLZKnYD9taGFkFrLBxyzgI1KECSMJJo9IguljC+yxBT62YJjk687Kw1Ng
q8pWQ3XBxGOOeisyZhOgNXmzewHAf/+xfakBi0lYVWXVvCmxe8/hcKuYXJv0eLm9W+7fzcFsMpl4
eRFX99bFXXyjN/PJ/m2Gb4cXGSzb6lzUKOagaevF4LRris6sVzyIhAiiyKYewjYNpW+7THl24DDi
IymV70evv/8OUZcdXi6PMcDFBgOE0e7g/Fpv6qvb/G4XWw0aRzAV+QIw4CCwqRP5tiNIZCs/hBbQ
FyJEaAzNY1T7uBJ+jAtysvGyIa7t2rzW04WmJA89ggIbo4DZ1OXcVsz8GaCQKeJBr4mfAa1LuIdO
0GPLZZlotPZ4+zUViL2Am+ALxnL6AoBijytl3nIiDVCOqe2qENkOpV6gHOlxLMaA9inPmkNrU0nO
d+82bc7dwZ4OfkwoRUP8mJIsaWJ4eJY+hhusi3kYKVtR6RkFI1t5PrdZ4AYBjYgTcjmGu6U4jrdd
6+IEdcgjnCpZqmOcjynYZVg4PsV2wELjCUTajku5TaPQ8x0FXhE5jwB9XLO7xS7UjIljqJmSelSl
u8cTI3gFlgHzGbN9TIVNg4DYThC5dkh4qAwP30WPK7al+5R62x2TFqFJ6oJlrIP8cFHqmIEzm2Nx
a0oFmhFiAksxKShEuu8jSEPYh+j3fWbej1OI+yFDOAB4201lYunc3N3hpYggyyEvuCjoIHA+6Luy
bh6K7Zq8jTUlM3OfeTnGeuURpTBjDuSaKAQtYd/2mBfZmHPBEHUIpxRgtK/cnb/JlxXk4PPd46Zo
r53N+TGfcd0d7+tLlckRqTLZSAV6WMUwluyPladS8BlHM2XUSVkYCMRtDjO6TQXDtuuywA79iGIP
EoPPUUedbZ9zPqA4gKLGoKQDN7z2fWuKW40CjoiHkC8DajscchF1JLch94Q2Ib6nQgxQ3GfpE8iO
KxAWejAlQccwJY0HMH/RFVTTEqxPD1ixxyQzxg65C7ZXIQGdcQERAgIQiSISqmOsHZB7ouNI96s9
uA5JjuDSpUOyjA4nhJ+gC7jNk41Rr0Coge1A+MgmuBVHrqI2oq6yKQ0ga7oO5M/A5xJLGUQefRJ6
l8E4/O6OSR8tHRNB7320fSrsV/frutx7KuCXja8avTtUUkIE9B3MA191wGE96UJ6AomwixUJPHfU
V48pD4Blx8ASdQD27W5FZmQPiTgzbNAAs0D4IrCDCGoPJVAzXUGwHUEGCKIAE1fiDpoBnR6AzDmO
XnNx4It+mZQx6AT4w942G5qeS7rQgBGoMDTiEL4O2NN1KGaCUGPV79gTaD5mSFga4FQjOE3IyO4U
FG/2o/iUErq3HsORCWRIkR54HY1wYHsudSF0MJcyDBxwxFHrDan2IS3RCKQlbVRnbl7nhXnsvAeE
HdmgQY6UXKrIRpFrFAf1DnoyiGYIgYD4nPi+6luvT6kPImMjIDI2sF+8TfNyti3yejNzze+Phelt
8AxTk1ngC4BRqTwO4W5HBEP5JWBbTxBoc3xKXUkCiTh50qIHyuNWPSx3JYB53TmSAC4u95b9cxtX
cVHnhd4rUpkuF0WmuYmQjXzV9Dbc9ijkxJBJj3IlAgepUZsO6fXBMDUChpOBOi917W5hRoaAMJvh
XxOVwoHmOoxsThm0BwoUCfk5sonnudJXbhRI9pw6siM+rsPdYg80lK1j0JzwAehyrYubFRidzHbF
r/lhUjNxTLft2J4PLRfYGtteAC4QhJJDrokA/tOGfwekf3ozjrhd6wEW6jhy4CLdm7w5bLry4+T2
YHOMnRkHqAT0GsjAtaE0g5JDyMau60Z25IVBCC1DEPruX4babs+htRwD0RchwcciKDQcghIgss1N
/2byJhWiyQAKUyWoiGwXudI0ktJWDsySPOKSScgKHnGf4ykG4seLx2vhx4seZoVHnFvhYXv0Vqd5
7Cbmbfx8ma/M/9bYdUvSMdMPDwW0IdzGjgDwAhEzh/sgRghjlOc4ynvaWY7pj0twvG8gjR6RhoA0
y640b+Lixi3i1f0mb9oS2bq++Tb9lAqIGQltl4YgjIIi5kjm2kiFPGCcISb50ykPmORJc7r4dBfd
uacL6RFH7OzoCR0zfix0LIbl+iJ5gANJSjXeZ76M/YIwDLxQQLdAofvyoAZB+8JsQj3fhZlLOcx5
jvN1eYxL0d3Rl2Is/mOF95UzyOObotyYJ4NgfHN25K9y8y7zPhkgYztGGPUEJACCQ8emnHu243MX
2njXvO9MqeeIfh19mm4P4jIdUXTChnU1jes41eZ/MpXVJmnG8NbBmDAQQyWwiBA2fSJECAQ9lHqI
FUZEKIIAu2CM5+javDcc7Nk8PpofbeuJlNIRradG67smeLvePPSajPKZafMczBVzGQItw2xGaaig
18TU9mHkIMpBVA67lS6dPgBFRgDEy0PD1HZbeZEdmnAmpWnimBnTXNeBFjywBQtMsyQcABIoW/iu
5zJPRhELnmriHsh2QXG9PDY0z5Q+aoAr3SSkw+QoKbRNoCNkhhtzNBEwk8wj5RlwEpIiQTYkwxAj
QXxC0XeHm4b+49m8We5hzxw0gj1BI5OZ+8n/ObCmfKYa9BwicMYaAzMonx72oYeSCOYyFIFe/QjC
CHHBKINhlfnPLUYNl8claJb7EmTHZVQgfegEckghXzpO2TgC4lA3TaATF+JeCOhQI9B1RKTvBS4R
Xuj0PbJHZdJnxcb4J3uXfNu8EocPA5ixNXV95EWesmUIPkghl9oultyWEXWYiHzGOevz71EZ8E9H
+GdkL795angIBgXzqMngFOZNwcBEXEUwQDgQBIooKMiRIJyFIcMoHI2EDrU+ioyOoUgaP3qIoKKs
8+z+kIRNXLbzVcCUF4SUwUQjITSZD6MV+l/erqw3jhxJv+tX7GMDA9bwPh55erzbXrtH3Z55G9SR
ZddalgxJ9nbPr9+IzDqSmaxSYSE0MLA1ymwyghmM+L6IIF0KAQposwBEYGK8tDXHA08EayyPWE4z
Zmhb6PsQ2/Z4XLIFEhrPnVfSMQJeGL6U4QEXqhALi0RjSTJE+eKuxIHPmzQ+vamla1iUQEJWiXz7
x9fVwwE5oE+Rw64cLNyAgRmtENU65KuZWAWLGgIHIqvAB7fw+HxLVpO0daheqRXZLueKAEqfKNIC
QP7XW+DfxiDkdbL33sB5XXbAKaix4GUihEPgSpEUbUMMjHse9KsDLZDjDBP99bbS1dE5B9VOHHOY
T8v7zerh95MjgPC+wLQwGplNNGIBgweEkKw3MmWwTGWlAVIPXHRC5+vRKkkgHs8l2dip+Xzu7r6h
1YiF6MEGegWVvISdSGiIQOIU4rpkAGuAbiqmIot+wdiXj6tzZjJ67W8wdfslfDJRRjWUWbnG9v24
23QPqJHF2OqG/cu85xLYEIkBOX7RmJCA4M+YdADOwQm6+OL+7Uc+v4H7x7XUq4bhbzrXE4uT0zqW
AwWjyEyBMjDAIRzwCXwEkQqEBWX7EoERQoFxZHnJCX5tWUPXEmVLJwv49K3rIMA8duuHT3iyZfwV
MeazHv/3f+NWzMo7Sz0pEKmI4EmBY8ngt0PSFNApBLD8GoZy20v195ZQlQeavlavQAsgdGpaBDuO
3BvTP3ZlhymDAagxygCloeJOKMchZAaBcbP4RKwJiWRvRRRAaocK8lVIB6c4b1T4tFJjK+Z5Xr1V
6uBgft7dd8tHf/epg0lPOQ/NexdTSoa4ngopVBdwnvDtwBV7AoHWhIBxjKfLzhNY9B2eL+5e/Go/
ujUM0H6tLWitqNItRfXkezW8OThV3PsSS0M+JWWS8IRJjlmeAiZaAOZkIEwWyJ20Vr5OtGi8ONbH
UD3Xx9DNZtut9pUD2HVV3QD2+iHvHFSkqiTgAgoIlJCAWcHgAH8ARLPSehGZOVM1qEetRdrMEx+G
8ZZX7SnD2/dASulQQ5LGoWCwuI5j9TAbLHlZ9FUZmB2FCOKAWWnjynV05e37FwjL2/c3tZzLhvBO
TYSf7Oef/X839rMIQkUlBSDvCO5LCFhZGhmRghcvWUpNdj3dyDD2hY0MT2v5XcMe2JoeSfRf/rJc
7Y62QM1AojnPJQhAP9mBpEwhRjCUZMt87ElWpBMSPRqnFqCReDR8tTkIUB7unz8sH5+6xxNQtwsE
CFwb73yWRDIBAYoxjgBBkJBKik4rbUv58yDY4ZBtn2udCn1TK9ew964zcyA69GssHFqJpAA8ka4V
IRkwo0xSsmDrEuuOEThj1C5wThXsxfSS2mfaNuL+2Vhc2zuMibh2Key2myUU/G8ROCWTi6FSuv8J
ZUY7doD4dcSCFVWcuMg5odxaD+AyDiWi6zj5b/ECI/+tKk2DnK4l/ObAh9+8LUezGlJcKRfLYomA
OAuIGrIgLikBbBzW13DvNXMXl7dvDjvnRiorOU4+Ftnx9XxHOt7xSWVwaKI+FnfNgbsqI222ANtQ
DeSumtjABJFKcwZo3mhjL8K20bi1XN2cVDshjqXdX9+W6VoCWZDOJWDP0muI8xEzG5qSIowsDjy2
oPKV1vI0+00t37YhtNSjQvm3HSCJf51aznRPgpjIsQDJLsph7csDY9XUEROMYFLREmI6Vx+vB6zF
UaYhjjpmDNfjEpFBFO4UxFUPrJn7ALtdcUVchujguTcR2KuV8kzIbRd6HODChghGNvKD4e579/zw
gHXBU3cJILcIbpcDBgDTEjSCQAm8EXBDbBqAodjLQeo48vmdfHyllr5rbA4p3WEB/cfSV2WPhqhZ
H7AYMIQUCmwDRzGfWQJx3IJhAmkXOuus0gtO8+Op7foKc6zluKmlXbZUmGaNn7o1nmU/Zur6/cQD
8+DsSeprxECBSbBgDM4rHqSJIutwaW9XY1ZC6WVjnzhc1yrzCgN8768721cFFDBBc0gcZJ6VwrIT
t5h95U4DMQnwR2BBALIXTl5uiLndj36GV+2f3tQiNhbTGXNYzMkp4J8UYC10lChvNOCcrDJEMw+8
MZkENp0hRqkEnioC43W8uZr1oLU8jbYO55anSvBn4BtP3a8PX7r73b9HmAYBjXHwNQHUwK7Czpxo
LBhpTERqRQGoZW3TJBHbHq6WqJG/g1+aA/u/7e8q+HvXX8xxyAZxvZD9ttElGpcAgsKXBt7iKHFS
FRKD58CzmQU2UEs0H66SZrmcYx+3UtPSPtYLv4Prf/ew6e7wKrKRA1I2MuulAZyH+akYwPewSIlx
hnKQ1VDPrsES0znOVy7Hb93Ugje80dZOfemPHY62KMt1N3S2ioUY6uf49+BTAQmB6UmO9IXCh/ew
1UlUPEusUyl3VVntMMMZFLt/elNLqxoquGPTz+/Lx1OWUFA0Cio4NUVrwiNwdpFCAtxtGTG0yGiV
oyJOzHQ0SD25m9vmkls3Wb+/vf314eFu9fB733fQr5zdExHssoTpYPtqD3Fa5gLAkmZSmA2CJZaV
Vq+SJDyIcCZTeHg8Vm8lunmohV8e1za++Sde67jwh/U9tBYWxWNwmMcSsMwCgiomlwHIYYe50EaF
FzDoy62FVbSaCDJRYv6NVnLGzpHhPx1I1O3n5WO3KYCDft49AYXhsi8HwF8IaVjiPhkTiMGmMcEB
XHvu0ANTL7i3jLOXs6BXE7ZaljOhpXqnUl+KOepd6fWsx3n5vxEGflwu9vc9Ymsh8jY7FEAYhBoO
GyVhcQsAB/gsj70ZFpAUp5lZ2agWjPX863QGeHr/3N0/P/313XL9/vb0vBLfqbm/XWF2ogYbKzzF
/HREwP1X4lImtMGiPexyFQJYIzUAg61ikctgs7qENcZD1iI1+CT8choC0u7pi39c7Z4f9yUlvsD6
C99vEHAzwMWIEn1nn1LEG8pISTmpACiEvrDtJ6OfaT+oX5pooRtaLOlEi18SenvG0dkPzrNkkNlS
AEm9yTNJPIM4VixPGRwW1Zm9etLilzM17F9SrdOy4a/czNZxt/QxWUpwx2KhMQ+3/xEJdErcMuCe
OkeA2rxg22BmBOhzgc9sgvRXcf39NOd37CQag6QNT+U2R+K8+nffH3gMZpiYhairJFeWRIpnDwBg
ASUwmjCDVd8Yg5CTWFaNUs+/abgK18kjufv67YhDcaGwy6NwQPOmSEz3BYB7KSEcddHlYJGBTpJo
xxGqiZdi3oeyWqpjx+nvT3fPpyDOhgKmAWTJopeEFfBLEFSA0SUkluCSgpFMw9+TKD4app5frRvz
22nvYNoNp7kf/zilyIGd4aZWtK+PwRZRFL4H4kvwOS6Ch2TwU1DGK9geRjn5epFhLs85NzB9r9be
trR3dEaosXH+w/K+uxv07veN033HSjb9+QelgkBy6okDcEsCF0wanzzP7jVAzFiEc8T79Eal5Hrb
MLGttQfb/tqtl6NKj3a6D/W56EgDbCpVMsQ9CbTb+lTAF3glYo7O+ElrSzVQJcJ2NU/lrel61ech
4eUf6fbDkeZp0c+vgBIAecokFewFSrDRA3Aa4nKhnlt4+sIZjdcrNJ3Eu6kU2KqGVtsjgY0f391+
uPv+aXc/ORmJzc599yoV2BZCEjaLCycUeFuaYIWjMkpbGTR9pf7htiSVNsw2vhHbTJvPfMYKDuJ4
058A80k6biTmLDGvYXUgXipKio8QSoIrxb/ivvf5TOks17pstg1dOjbRBW8Wv38aVmRMU13gRRUX
SE59dUIUEoyzJPGgtQkx6aCuCYP9+C/qNJbijAmO3qj17OZbe80lbSQEj0v8/vbkwg23w6mL4QcM
qiYyHhwnxiIzsymRAPCGpKiCNlYonvTrfc6TLGf69W9bbnstlnO3Db/cTDJe3wBmjFZ08QH/P3bs
DhUO3XeqZKuKoZEkg+d+JYCdYK0nkRXYncW5mPxr+O8PtSzjt/pHlX5KzzNRa2WO5BP2fO1JDE2K
aSkIldjbC1iK2MIY8bpErpxVgFhfx5Mcpq7l3czB51rT44GoNz/3xYCJ0CGwwpAfK4aH6B3VmNI1
mJAQJQaw7PJqQo/mryTvE+ozycU0C/QOb9V/fvi+/nw73aeYWZEHliCH7CRXxXM0KqEZ4DMjAJ+F
opAqAzWjPml/1embC9NWhxOmr41V3Oz/UYZKxQ1jU8522y0f15//aziJJfcHE+RQAWTKeYutcthN
KXQBw4o2k4zJYRvdVaclryf9B0HOpZL3jyslhZw7wo1QZt7qgdR7ubvHf2ZC7v1An1bue1uQzwOw
ICxSrB/imW8HuyqabFQUQUp2Ff0ZT3O21eP4RqWIVfMu082ym5V4jjfW/GSw/a9vvdv/hId6YnCw
gwA7UYBtgiE1YoAxuAcwRznguL7YcOGLHcY/gzUPj29qMbuW7Mcq45fuj6+fjolqPpy7NiwCjQOQ
iVdXxOxIEAAys7PRaBY0iNvMVIzHqoRYNQjVZqXFZAHf4L+9sjeA3siDdFQIAfYdBIIx44FTGUWw
TKez847Jy2AMRmwvFjyoJTSNZVrZqYS9y4rLb8/fMe3shvPLvage0HehwRDsnMHjhpyEIg3JtgBA
l1EJY18jZo0lOHOqZvRGraOdR7DNmqnNZtaw2/3nh/xmjL5CMTmFBDgSwAZSqr5cIElGqCkYTQPx
uGYXDoOf77bqH1eCrxt8eLNhx+a4H+92T+spVQlFM15MAtCLx5iKK8RiA65NLMA2ZDlG9WdRlZN8
Y7063kD3HV/ybXcqpj/i6Tawi/EGLRCLJYcoBhEjYduYId4BrWchB0UN9YKGSaJjOlIlh5Dzeyc6
0ezk7j5+8OUUZjF10yccFkNZ2ASuA+wA4jMy75Tx6gkPcFW6EGlJjFp+tZnAVBesBJ7WSujGYuqN
1GpYzIfV/6xPlQHdnxFOSgGFpQZzNhkPNCviGFVESrDnkrWN3NQLOR6lmt40cn3wy+Ws6Q4TAsPZ
4LGnk8FqIwDoghp4SChj75WgENONjyrJYsOVraeH8S8lJKYnhEHQhgXY1bRcvemevjw/fHsapZsA
uO9PiO9TTh6+g4bYFmnA00IJsLuyDkCw1lllCWztKkeRhqkOCAVfOJNNmr94U2uxbKi2FpP2n/p6
tJ+YsKgRJvZESiyDBycMPAd4duzPjLGvxUOYzNkpdfFygGrkSjS3njNi/OUUV/SRAfv0sOjDFCbs
bdF4NwonCrGQyBy2nMGyVhSCZR6ZFen/HW6GZ5Woa9cwkI2Yktrd/ZcxCocVdEPfGhZAitGx4L09
xeCxLDAPkNaQqAB9FyGDEK8TIe/PACR4MNZpy8U8rGz5rHYeC3KatHvsj03+0WvV33LBXK8WK05h
tlepjHdHuAQ+xDCiso1Ke7APaV9kTMfRX845liven7xUa92osW/50o0aVEe5bT40wdkSRWLCEUvx
SIB0ljjwS0RLbWIwRSYmZ/2prdw2zLRsTL+ZZoHi5+/3X3b3n/brhQ0dWK2CP/v0lincqkgoVRkt
KRBnPXBWPPbGhBIiXFXen0xyZi3rlyplACjPlRFb10r11Oe5hn4FPM81HLpmXofCJKasC+xnLrEJ
A+BWCJwDbcC2znxtQ+cVp7pmr1VqLddzMLxd4qFHc/Zm059AZoudS4ztsQCLUdgCVCcHvAUNb5jz
EVg3N6C2Z8pH6i/5zfHwtXiNM5HDtSrbOVwZoxW1gBjF+5Mu+AOCRGYMGEwmkWk/tFg5Fx2JydNs
M/dWqevxykW4UqGV7UrShg6SHbuI+hkX4bQRucaA1N8Pw7iSNiai+xPXvtA+FhFtNMBCk3hMk3Pt
9WiVIB2dO/YtgKmDIEjsdz+60xFbIRZ8YOYavDf1HCYWBeXQFu8Zg22InfZcBmOmMHQyWC2IaaxI
Z2YM7P3t90e0UPTDFkbq0cfwExYoeFYMryaRHE9GJmQsTEciLecqF675Cyc6j+OfiSGHxyPZHWV6
xm/hl/uT861DC71JWMohjpyOLXC2EMORa0elMcVnEizexgcECxwv7KSSSqEcyEty6Wqz7Ke5YJn9
81qdOS6BX26m94/1/3Tk8K/Gdo+3x4z9PjoahlSFAvbjAQhKwcY7gW2WwcEfVDJTdMBcXLjKrzXm
OuPaGm/W2m1b2m2PLRwYOoebIcHr//a8uzv1FLrFUF2hyUfrIehIh91lBpwG0Evnc9TwGUPyE7s/
M2QlFqd0LpZeddt13fvW0/v/+Gk4pm978mBVCZJxTP4JPEYkBIJB7C9xhpYINmTpq1HdIWvbfG14
VmllaGNnLO30BoL+kOWxKa11gYKOJnLNsFVSK3R6jDgOdB78dvQJm6TL5Y09nqIt/viNm1pe1lJi
ei/O7KDi0JyI96oNnTZDr40OnmruKEkSMItQLBJriiNBgw6gYaHXxZzmdFceoZy0LaI23VzFNZ3e
efrb29Fl2fvvJMVwaZH3ISiuDckGO+sxTxeoYiRrrWBL2NT8QnO9xnO01Rm/cVMLvGlosU+rY82h
/HNoTZtUPQCliIAdAhSPP+GhAvBSRRIWInWiWGPMK10aNZGglp61pDerqZn1UsSH++3u0/fH46dg
cqDhsr+I1OpMgRgGvPxCeIk3d3lFinUl0AxbKF/uCGzMce56gNmLtU624WzXbnpf2rvl/afHhx/d
OOXIk4UA4fE+lwj7JAQIHVFrwmJJNDrAZ/K6gs1+7DN1mv3TWup5j7ej3ep4/9Bu/R37M0/pJKXY
Av7Xpwusc4FJoLkWz3TCJicW+3pLFo4llbiKZnr7SDXaTT0pb0kyXb+TAx9yMvAfjH6Fv+kbvQXC
Xayj4oJqPPpS8CRMBIMI4EzzS61yL4SJ0/OxDow13CdjTh9uD4lv+n8SElHV0+nMvFngZWLSQDjD
AjB4ln2s9QCOSALmR7n0WQv2Z4S2unNjJnClr5jf+wi/XJsJfcJv/nx31NgKrHhh5hpsO/ksLJHU
cjAjhpeIW0W4194G/X/FXUlzHLeSvvev6MtE2BFTHOyLI3zAUpD5JFoakbLfzIXRG2WGyaaG3bQt
//rJRHVXF6qqm3xjhocHiawFSKCA3JD5pdaKncw4KxouKNPD4Fu4KESPsi0Wfj8kyrS+vRoUURoI
r2yN+RSYBecST5VTwkqVEqb0nSKs025B1kKMTNhCmF5Q7bo53lr9sV2tuz5xbiROHcfQAaWIlTHo
SkluMXGZVVbWdSUQCkcmFQk9CbIw3kePWjukNofk6CGi5nancOTkpY6CU8JqktpKH4BSsFS4Vawy
KgQQRlSEpBzhzwQKdBs/gaw5otrQ5RBAx2bAv3Lqi2j0Fq60MfM9T9KlUKWEGj7GqBpvXSUlN1yp
hEjzz63WsumCwNWIWkxXtK+YvFmtV434md1dbh8es47cgGIz3qjtJhhGEXpDMItgVhxs/VCnCl1Y
lmsjg3+RZ3qkqyNnjMMHy6EJMTK0Q/LiPTCcTRsCiLKlFpZaDxswWp8tf7S4YRxBUBmsqXkivRjT
bhtl58MztXxxzwqe1osDqnCOQva0tsB5gwbFLgfXeqHQ9q9l7ZU16QimVNtQr/uRdTfM9HmXkbxP
xUbFZB1i2FdEgarAQbOunCCw/EgdKQvAOJ/B+/yX4iBKeo5lOHWf6Y4aWOlQG2KE9TW8HVzL5ut6
+8uqwIBEH9YusKX5Bc/caHQED1tk7UBcMAUb0FBRSRs9A8WEJfX6EJWNRXE5pHBodrQPFVPBhqi+
+eJ+8ePe+fy1kES0xRMjoNHSgGh6QiJQS5RogSPemcP9wJRhPQt80FyPmNkYMe1m+Dhb3s7WHUqa
dOxUS2pIZHgOi0iZGiy5BIZdSFwyn92f/JXSsUsKesQPtxJTrGXh79wHF94OMGMEY9zUUVTKY4ak
jWDzgASHLSQcCcxoRv+uUN4uhcXQ9BC4GC7y9rt8WH/ufRLmUKGBsQgEUwHrwVawF2iFZ2W1dTRq
Ll/pk7SdlyQPAaLhorGHsLtP/YjjqJ1E5DNe84BYNpi+hcYzA72ZKm9t8K8VcvdpjGIzsvi1bbMd
/jwcB2Hy9w65htdgkDGQniB1gOkYDbYEQQZswPCMgmgXyh3458hxEPYzwhH1rI2q/DK778Db4xcO
oGZQFH9Gg8rEE8NDElCRRWC8NrWUifZkYKeNsu8RKw8uttiOi4cvX29u7zohkvnwSRjFsWvQfBmG
4DPoH6xsEZQEwxQL6bIjSAbd5gpKZkMnvAXuQ3pQxYWoak5DGxcTpVzlOIzml2w8e9DJbAYIUehk
ipWnScCkRUOdU1EJ8npi8UDLqQPlvtMJ+NbIsJeUDlz+Lat5eMRVIHdVBvIvOWaf+qSZqJLBrAiP
oT5E1WApEvgoCFMqXuRRKzo65v/vPFIOZgg3jRAfBxiC/7m73a54u5apyu6CGDhmI2tMzMFcFZHA
DABBopS1mlmEs+qJsqKhLgkgdIY6HZe87yz454ew+7Jt3Rj0DtSMMgaLJSVUI6TEADbgSjZFnrjy
grzMU39ofXwGD/dL2uVwLXC7pCOgVV0X5A7Mh0nUUfHkJyG2vk115qRgSHEwoVmk6I5MBmTCs4v+
Oedj+UwxhtnNyBjmRO2XwK9/3C2PH5d6bmENWAwSTyiPQQzYDAXtCcg0Uwc6bkcdWi2ImY8thjlv
0Zx/Wd3eL2d31WyzPqBWyuyEyN4ia2isBfFVciibFEb81ViyIBiHcWfAWHqpRsMWS4KGQaAWRHk/
q20ggJv0/rxMGxnvQMWLEjMgBcoe7mhlBRpFAYwRbYhl5i/I+N3NgvTlMOvX8hXpb6wOvosA7Tzn
ceL/N7nGCNGsdryuEsOoWoa5eJ5aLGZmgyZGE0mfOZl8BuWl88CkJJSPUa/6ACk71NEhgilzysDq
DJXXBtPniQQ5AkxCqjpH4trkTzqkipa7pAk2YgaKHIwyLwELigzHbP7IXJjCa+BMIP1DQnVPBJBw
6LivU9QIVk+Dja9u+xyoOQZeMGb8iZHIF7h4Mx+txJKxt/A3XEo7aD78H50ATkeRuAeLF3QfHgxt
GEUwoPaD6kviMwFHbdsnYL/wdkG9GAaA5YuHhMXt7O56e3u/2mxnh5o2ucjTmWiOtWNdA+tgusLs
04Y/Z0BUVwMDDx4uviyF682HT2EHC9UZwjEiesMYckWhb/pxbEdFjAYOHWEHVMQjl645Im2Cxk5R
K1TSKRjUyck/LV7Cf4yLFiCRjtHNBwkjCyy/+fMj/DmaTUETqKdgbVSYPYJh9SAsBfwTFSgaWoBm
+7IA3bKjowBDnWeK4Rg5VPuFla1w+scH1jPsdIqKcYrpfx6hunXCU1MCf9KgamD9idFXMuzazicl
dUPxJeasf5L9n0+zx+2fO7W80VMFhkTko6EAe1eBNFUcgem9wkNf+AwCmFhSoGZJc9rSOzR+BH+g
vV+QPjcjXHY+78x2/aY33Ya5pFUEmc9rYPkYXQ7rra4CF44ZjOQO6dWme997SfR8bL4XLeb83Z/3
szN58A2hHRAIh7WNKgvia+OJp0P2SKJWhCMsf6hLlaXbSNn7YmzKln2UlpORoZw6pV2UlQwZcJvA
HOKUGkZjQmh5atVfjQw9FudpxYKPcIwFZtE1gV1YfbJVRvcVLBMl3LPkq8gNqFYm+Mpa5qqaKh+D
J8QRPg7h9XVMCYX+5AgRs/40/tBojmVIvIzAUDl8PuMxyhO4VmWM0lUKAiQgJ9q/rDbKrvFjkOT5
Zkn0bOTbL+ZyWOMrXe4rfDVJeUYwJ7lQFctH1okxBBfEYoxGOUpA+j0jHXKbRwt7pcuSzuXI5IKq
2pvcD6vHm4fHe/Qedusc7e0+omMwkaM2h4hPDuwOwyNCZ8AC5d6ZwF6UeTDSzZHU2uGDk3IEI7Lh
Bp0CzcL179zlwJvpRWBY9aKSOfEEax96DUpGcAJjIRjwWfU3eTMP9BXDuhkW9cSL5lRaeLqsf0NI
ohz/yXP8Z1ZFdr9nsSixziQG/mNWawK54qw3VcQac7SmVttXPP7Y03Pkwd3d3rDt2LBne73xbrb+
fNuJx8nhjyGIhJkjMqB7P8vJYGAbgbolaYrEMNbj451Wut3LGRkq3XI2SLQFM+CyMVJGdCbJtFKM
EhDWdXbzc8yJ9hhiSpx1kdX1SzNQd50cjcbc3S+HQIeat5zj6figiM/V6o8tcHPZeHWE3Z0Quehr
w6WswG7AszvQQJwCUykqQaOiMtQvKHOCbR83GPBuQfWNGhqdMsNwNOL7EVSAu9/O7MFQQEKVJF4G
U1GLdUsV6NlGwTogngmFME8+9Xy7ZTMlBcPKl1YRO0gjB5th2dSGIbvib1azM44SXCaw2kHsYUA+
1pCkYPgSzOMHE94TwQgTr4ijsafkWLW75u6kGM58eECiQIb3xjgKurB3HWfHsdANH5WuNs4pX4Wa
WMy4BT6KtUtIgk3pE01av75B3ZJzAouhr9TCKEc+b05IutnhnG/urpdf17P728UhgveMNd/Vxoyg
gaURYJSSVQaWFw6awUh5HUXPtzVsrSCGDyEL8CLrieI/vizOdrNyMVuDgny/WhcgJxEVRAfCq47I
ajByxctoqxq0V+4TodTLZyBfe60fM816j/VGw0dGo/qjwXqhi7sMJLdT25qaiUQnbzDRC/3vwC9T
xEQv0ChqAYzGCEt0/azeG05UCw3vSnKHqZdW5ehcPShbeTrGGLWf5MHoQS2IwwLDCtSgdgpOckpD
SOr5ypUnA3G6TxSDyPG3g0Gs5J5fPq1/v10fFHaZA7ISCCRhalmJSNHCsAjALEWF8SzJ+9oSwY8E
ZRxaK8iwIwq7svJQb/rLYqRSu4T+OTN1RSQir0WwFo2tgSItNWOw2ahJo3S0zZVE6JG5AKY8CKDr
hqe2tX9ZdmHnwCrYRDomWylDMOIHcWQCFhinShnDUiIpnQ5NGnTQo/NmhE7TsqD55r4Dj5dB4moE
OxehcgalitSiUSpklMn5oJllvdSdThtl30NgZKtmbFiW8O7h8fLreoF6jd2ZKg1iAeb06ZqRSknM
xwwejJWYI4W5hVsmJqNfndW39BxTJXa3i7GO4PHhxX7Nqz2Y9i+3e2gGCYsZowJprX0tGRizunaw
ECjskzq4itY1A/1NqGheBVBoD6n9w/lpyO0fznvjG9l0MzVWxW4/0TkAdY0mM54j5RR8/B+ZWE0p
TcRVUWMRIw2M1yGwc0jWcB+BBRv/4kzCXm8nkgl7TxbjWw5xDvBie9Cey2xd9Eq47uo5S0Wixtwn
TbBwAOGksirYCrgxrFLY3k7F16vnXFJRDmJswy2XfaEYV/Onz01qJZptOd2Q5lxDxp1gQYKpZgV8
GKMpSERgkiIY7YQiRL7M+93t4VhK/OGJYgwrNqIurlRbG2b2dChTRI3KJbEw1pekSlAs4cEcR1RL
B2Z2IMJ6JWPq5/g9jRQlgl70sGtNWH+Nz3676bjed6fTRCjgWdmUEdTHSHiqpEQotHzUjxifmhIl
jPSgvvq/WHeg+8SkoFbLkSHo5R4wcZ/vfzfbooOjlZNib0gy6yyRdaqU1uif5BwsCZADKnBnTBAe
DIyTSAJFywVtiMo4oI0davcOgqZ1BhKJoPrCDsL6bgFFgMKCtLxC4FxKAxZP6jlMTwRGQ3dDNq1R
Iy/n56CNgx2fj8AzbqzmPDLMokekn+ADfFcWQA8OoOKoWih3WlSP0MPpyJxwPe+pEbuQ7zaVw/BD
eS6YHDT3LYsB1RrdpAV5Y21UGFUS6AuCycdI04sR0m7IkfIQN8VxVCPZKMvgwM6JBDui0gmRHgmC
u9YIyKk8kAo8JhH9ohoRz+2K4XPlgIbFQK0WeEJe1ERcrjeb5aEwjMTPnxOWCM21HoDDoF6EGbse
Vl8lucH6O0pTfjKIvNNuQdZiNtQk4WKbZv24un/4bdUN8hI5FkayOnFbV1RELGEPSxI2rsWaP9IF
lowV48HO/fZ6xIzsj6XsRxHMZ4tfn74UMBpgWIldUfqMfg6mSY1VJDBgBEQ8EGoVkOeTkYFLMAnI
ixxSvtdT93s39yYlqXyEfmv2JgoW6fq4+ny72T52igA3VcKdJhGUS6y4g/gGIrrKBgpiXHjQDQyp
waD/f6wtVpJdjtrakVHP2kDlyy9Yl2zUKa2ShA9EMBoNq3QZESsDn67yhMsg6ki9/7vKMvapLIc4
Epmglzu8h9JTdocAWzmyBf/LENOSApvBWrIIz6dhGTpHESiERB6MqcGkfMZm3h5TLPOtLqVY/nhA
KV48mg531sxLBtzA93Z/8ibGyQhDmcRIq0Qx75OpymjQKzCVBbEuQ9R/y6lBc68YqR2iYFszny1H
bIJdRjjdQ0RypbB0ez4114x6h2j+lGDhbSZhBVpWBRl1kHgi5fyzDswTaXHt7UlJ5mqE9kUf+BH9
R5t9VnzD5fLxxi7NnoNhnBQG+XMsi0KBeRiOpwAmaM80fiL/GkZbkZx/3OnUPlIOdTG0CsyCL4+W
nz1/n+E8QbPdBexqi+pG5pGS2Iw6bbFKM6ceBmyDxpQOpx0sRxj2MxFiRxE6861JSeTIR1rINlA9
fEyXT7fbVeG/INp4EaKplDMBs21AI2LeVSQwR7zzxgXeq6hUNFNSMJKChBdPnIiNZQDVWEo5RFbV
AY17JhiY+SxWVnqrhPJSe/MXnfTdJyaT+o+d7X3xsLy92UP6XD7d30PD38EQw+wOjL/72XI1nX+d
Pmx/WT1Ovzw+wMsbGMJ29vh5lZf89pfbzf7Gd3lqtrPNr9eg4l9/uV1+N21QORr4sOsF/LtdfTcl
3Yub1fZ6s22vlx0/1zz5a83DH51RwQzk/u5nC6yhNdYfY8z8a11OfrqYomjuTi+Wwnq/vvs6RWAP
vPNwM23t+O+mVw8gM76XVJ6Ji+njanO7BHP+e/L2G/Jv3043v2Mo0vL64Wl7DVQ9rXNtRuhsuXsD
bBJ4bvIzaLqz+d0KGsDO22bpGXsz/R1ughG0b/NEH/tL3X6wiV0v0zzu0z8/nX+8+uTewW8f6zfn
73+cTnb/X/3Xh/r4a5fn/53vhveffryafrN+WFeLh9ndarNYLb+dTr4//BxpoL27/2XiFtvb37BU
3dXjbIGrd+SHEWHetn9MJ+HNdJPRDqa3KCQ2o11RIdp3FLwDe+3TefPCFDXp0XdY0U/cFZADrrGG
nfWUd2SvN2HOyEXnnX9cTv9xfjX93CRpAomLh+VIX4d++LF3vmkSWHFmM21n5M2hn/3P/pkpLOnZ
colgnFMgGmPwO8vj28nbjHo1dXhl+n69WI1/n4KsC/fu3ftwch3BijvjF+2Mt+98fpo9LqdfcK7H
fjhr+9HTyYdmt0/hE33ZrKbn65uHZ5fA5ZULb6dvPrmP8ShxoEoePo2Bd7ZgfDyzMSg5U913frq4
ziNyVye2xVSQljY5nfy8mqMwvsjTf6yfDm2cTifX19FdudO0Mdq+w0DrhHfOL9yb+vRLslzS19fv
zn98W0dYbke7UeYwB00/V/U/r06TJtSZbmkT+M6nH8/D+3iSOrCHu7TdZw53dHM2Ozkz4MP32fGB
ezCQH78ee4kf1huO5//Cpq7eX2V2eXrxnJndFgWTdvfOv0/vgXNsio3abNA8An6Y6/zO5H8BUEsD
BBQAAgAIANARKErAEOCP7AIAAB4HAAA2ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQv
c2VsZWN0LXRleHQtMS1zdGRlcnIudHh0VVQJAAMIEXJYCBFyWHV4CwABBPUBAAAEFAAAAJWVUW/a
MBDH3/kUfppg65Y4AQLRNqktVELrtoqy8TBNk2OfwVJiI8dZ1336nRMCrIDW8UKM7/+7890/5vL+
fjpfzD5/IjeXs9vpJCXFj42zneCryasCymDCHAumy/tgCdkH5bZfV5XKRTCBrFoFVWmD3HCWB0rz
vBIQPDgZzEG+WXdpSHskJbh4u3hPXiwXN2nqF0i5NhbS9N495nBlfvk079PUbMAyZ+y7bit50SPf
FuQdOan43qGEkPAXDSXrcxmGBDNcW1auO1GzQQd9HtOxIP+R+h+hWFInbukQDWEo99X5iGdmeZ7E
Z+sfZGNJss82By3A1vEn0Qf7njPYcpIoHGXj+ClnmkMB2qVpCa7WnAFdPBnGREkJFjSHXmfYljoa
DEZidNAYw6uGbgG9wp8k2J7hes30CjHJHjNKksEpDLfAHDSFLSxAt9cZHar4SZVQ4gq4KeC6sliy
a3dm+saywkPGLSSTwDndQ+qAujmtaOeUO2ffHiWrR0fDLW0cJXwsj0taWuXApmkGK6X3/fgyvyXc
6NJhtzNj8otj5Uuk0/bAgvcFHMfcGiY8HU9cKOcN1eVrZhv0ywtS6VKtNAiSG71CXrTnhUl8nieV
VuUahF8rveoKU2U5zo3GLQAo59F5QMEeM/CLabFxj9h22t8rgdLzytIx67Z5PzKl51CaynI/OjrY
MrB4FkdPRtcCsHTng4dNsBzwWIb8aM5tWNKGZRk6grz6hoGNV/BhpnF4muU98qPxo6+o3l0qt75j
K0ilX33yyPrpq4KHFO+t0RY7FJRj/197rN/z1DurfiLLQ3FuRs+wFMVy9Zs5ZbQn3+ygK2uqTf2E
0PEOGiUMzkH9yXaQg/oOUVHYooAmYrxHkWepG1+GQkoZ4/XY9GZLuNTis5Ql/gZ4Fi3MA7Y5apwX
QoifYUhEVWwO3m2l3QU5cC56P4p3igjwgp/8pfBzOKnqt6okHCYRKTCuE9W+SbDYMf5b9AdMkNpl
nT9QSwMEFAACAAgAKRIoSgwR/nxiOgAA48IAADkAHABhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3Qt
dGV4dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxvZy50eHRVVAkAA64RclhHEXJYdXgLAAEE9QEAAAQU
AAAA5Ftbb9vGtn4++hV8KuQmlOc+QyE7AK+pdxMniJ20B0Uh8DKyicikSlFJfH79WUNKMknRrtUW
5zxsB4hkznCtb93XGtIfqjLVm83c6v8E27v1R11kurqutLZ+I4Ih9vvkQ1zfDrfCz/nncrW905vz
z+/ffnoXnv943r9/cpHpos6Xua7mj3OZfNbVJi+LIQM08ctMW9f3a91f+lUJWzBrehnX+Vd9Bugq
YGN9GIj04b6+LQsjA+Xk98lHvVmXxSZPVj1yj0j8aaMr6yIYYuIITyZBXOvz6/xuAIsgLG2EbaQs
ROaYzSmdYSYtuIDQ5P2VNSbnuzi1YOlXC6MZxjNhTTF/gwkmZwB4XVb10V0YT9yiLO7vyu3G+vSp
gzGgWGDuIVty17FxIHxbCOzYvpCejALpejyYTCYGueV+i79o6yovUm15ZVnPLeogZG10WhbZZjK5
ut/U+s66KGp9U+X1vdFurdO6QaKLGLSYTSZ+FW9udWZd31Y6zg5AEGDJN+u4Tm+tP7Z6C4pKy7tZ
vF6v9Owuzgu7bm6YTMLvqV4bon0zh7/6C88NFq7vh1dX1vTq4s1V+ObzWWe/8Y2DrX8OP14uLi4/
u28v4KYg+GjuimsLfUe7nySJs0TrZYfCJQjU4+i///jhKlxcvr++iP57Mvn8zvqob2DnxrrUcQXE
9kTmE9t+bU3MfYvFdfjr9VFk7LhixJCW8MV+uIDjFL5Yv1mWVOrn363K/n5efftuXb37l//+l5Gg
mkzerMokXlnXVWystV0uwTenlf4KnqGt9LYqi3JV3uQp7NkZ8Gw+wYoxIRlDEtyQAEtq+dGlrr+V
1ZcjvP/Vakoul0uVKfAioS0fTFTnxY2V6WW8XdVgw/JLrq1NXVbxjba+5fWttW6D7jzZFtlKW/kh
4P8mfySsyDA1/HOwdvTT9fUHvwFwteO/gbWVrsviiBURJ7CiDu+xurx6itWkdXVw8Z3vz+fP9HUI
is7Kv+Ov8VVa5evaLyvdQ9a4CU84XSJp/XIdNYysFxCg1tTdQF4y3ruZpev1nBJ6NsE9wr/o5IGi
dUw44anETmYIz+cf9fLV7ob5/Kq+X2mv/A7pLX49n5drXcUg/7+mf7L1hx/OAJ2U1hT2zG7nGOGz
CTkN1JLEWiytAwND+JngnndLCxKy8XS3D4BScTahJ+OMQdIDj7ZyNJxGQXXWd2rCRk2Hi4CCKXk2
YSfByChKE4cOYYQrfQfhN59vdN1QfwTHS6uvoyA3GUVDKTAIOZN7iDuCjasxzM4m/DRtOdyBEOtY
tUy3LcJKQ7JKByB3avRv4+KmgaIIVPn9TQ0KrDA6m4hTYaRS8jEYqUlx+qH8TxsFIDzgSiAfnU3k
6VzTUa5ZnnmQpu+0v61M57JfuSiiKr5rQQjnCIOAnkCdhiFDJE3xA4aGfuMfe9qH4P5QV6+OsO7C
hgvQSHNvC0Wps4lzGpKYJKmzPNbGL9BcQHc4T6DSFg+u8OnjW6BebGpw1qQsVy+P7/yxCSchH/TU
0mr9RIK3YnSawTRi0G8eMXpbxpmBCKTu8tqkj2l6C/1Ag+/Hl9YWmsqbArqgVVncGFCYkQdQ7d0N
KKUcAIVPBQVV7XFQy7zITRkyv0ORmmblFlozg4JSZxQFYwYFOREFT1PyOIq7+D7R5pfwbl3fNw6M
MZTwMf6YOVAfMD0VgMb4cQCbOq7qnQ7eQdGFZr/cVmkbS0SNawKi2pRPdmJIJTElg5DawwBj1C1L
B+0ipsOPKMOOD9j9nNdv9U2c3o+wgz4s5UuUHkXwAyO1j0yoZxQyBBan0U+yZKmtF7/Bzjb7wBfT
9VdFvDqzFm2GNCptVn+Bnu8DdETzpfnt0mBpvn3O9bf57waPBMH3tGZ3dwDKRKI8CZTMaArxZBtQ
hrIh+KHKvwISAwnisCwuQAN5vMr/JzbtkMEVHSDdVOV23XwzkARHToPJkDKQoOUzHqhOxMRkrB/D
ZOxxwNBRTh8JRaQPhEnIpNg5DYimMnMegFjP5A0R1+XNOYY8QNDRBDzeLu9mF8QptGmtU+yIuUX2
frncwDUNZiiy8lvrmJxD0PVIG7aSg8QEn8hVwD8r690xzYv6pdVJxE09IE3HcMQVUxPphJzIVmlo
lPt3mEgYZ43JqMCYUSMxPY21FEISy4wPxnRHMhkUTXBBbIHE1ipPsvtVNoP/8uSpicdhKWUc5pcm
YRrUh4kGz5sRBQhsmtl/8QVygF71aXaHp2WsOdcERmAzZ/3R7K90va0MZoyaueSB2rodg3rkutS0
SjIulbXfuPj2R/ulUa2izURxErmEMtzK2aNFDxKTJ2c3o9Pdon0XF5D0qr+gIBidrS8wqRf14o9y
01PMnvqI1bpUHIdD78etxX7/4u6mgoTztfyijcdjsVfN8wniLM0GBA8K4uSgIPof5xLsP05i/lck
xigGiTf67luc1wvT/sarMXnTp13RkRThDC2tIi7KzUrrtSHiOHsx0xcvZng8qfUQESdFUMk2dTaf
LxZ4Pq9v883Oo6E3NIQXy7KaPmxoD81gFNtWTf/wyvTuTQP/skOmWXuFYfrA+3NEtHptvd6NJs0A
wgdHCH9+sKOVXArra5lnf4r4ObAMoL8p2UAmLBX0KTswjNLh8cQzROQchpbkLl6tynQnTwfjtsgh
3S5g7curw6arGjCl77a1/v76hy7WvypRI4oDRblDGbpkIYbnGM+RB/PsQR7j9Z+KOl9F8Wqj/88F
a0fixlRmMO+LJ+nwfOQ54qHUeRDvJx2vwWhpDGXrRv+/2A28Z2pgtHOaOXqSp8rE0lQNZQIfT9sz
l6u9dI2XINZlh+TwoOUZ7GIMtjiwczf3RXodbzp6MvRftmE/HcD68Wx69trkABNxH7fF27Jct8AI
FP7pgZg5XCVyePbyDHAOysQ/Ai4s6ur+QwkN8PTvkGsaZqoGomE8PLN5hmgJTknD6ceOUy12qXSx
rsrv9686aXYLZF+1wADJ35Ph5d9S6Y8mbzfAm5NpGEeni8VyWzTP2OLVIok3es4wb4+MTushHJhb
Dj1EUmb3Tc3HzbHPiZRw/EDpMDQI1RzgnNiJcGwNCT30IWLebb4vrz59fOuXRdE+cmwPUU5uVDK9
bKYo0+JubhZ1Fa/HupTnEKIJPRAyTTIfPOEw/hmV2yJrUt1xp0M51BAY1RYLP9pF+JWuvuYpzHLp
7YeyUQfBZNBNPIMs4zrtkoWPRrNcDMr2M2hRDUHZpXS11mm+zNPmSEsM6ubYM7bB0zUWC+g3fxuY
c9ra88xaVLtzOnPBsGyOKhiooV/ChrCPplqWYS2Mdi+vWn9atD62WLS6wE39+GeCSFn/WBA51j8b
RMhKd0/km4ezvyqxezRvmSqtralgdpLXZ/OJZVXx9/nIA3JYSHoL+x9YSB+7Izss4GSXm+HTMMny
R2hthguYIKEM9/V+wQjNkwRzzpo7RhfMU/hKHTMxt1iV071F8gzspw0tjMzCcvBjFvARKcKEkQST
RyTB9LEF9tgCH1swTPJ1Z+XhKbBVLVdDdcHEY456KzJmE6A1ebt7JcD/8Kl9zUFNwqoqq+bVid2L
D4c7xeTaZMfL7V2yf1kHs8lk4uVFXN1bF3fxjd7MJ/vXG74f3mywbKt7EccJKNp6MTjsmqIz6xUP
IiGCKLKph7BNQ+nbLlOeHTiM+EhK5fvR6z9/qajLjqTiGANcbDBAFO3Oza/1pr66ze92odWgcQRT
kS8AAw4CmzqRbzuCRLbyQ+gAfSFChMbQPEZ1gCs+xsV4YpxsiGu7Nu/5dKEpyUOPoMDGKGA2dTm3
FTO/BihkinjQauJnQOsS7qGTVB2hE0gSo7XHu6+pQOwF3AQfMJXTFwAUe1wp89oTaYByTG1Xhch2
KPUC5UiPYzEGtE951pxZm0JyvnvZaXPuDvZ08StG2RF+By41ITw8Sh/DDdbFPIyUraj0jIKRrTyf
2yxwg4BGxAm5HMPdUhzH2651cSaEJkc4dZakxzgfU7DLsHB8iu2AhcYTiLQdl3KbRqHnOwq8InIe
Afq4ZneLHaiQSYUzhIq5o8ZVuns6MYJXYBkwnzHbx1TYNAiI7QSRa4eEh4oJiXwXPa7Ylu5T6m13
TFqEJqcLmuBOqB0uchwzcGZzKm5NqUAzQkxgKSYFhUj3fQRpCPsQ/b7PzAtzCnE/ZAgHAG+7qUws
nZu7O7wUESQZ8oKLgg4C56O+K+vmmdiux9tYUzIz95l3Y6xXHlEKM+ZArolC0BL2bY95kW3MwBB1
CKcUYLTv4J2/zZMKcvD57mlTtNfO5vyYz7jujvf1pVrKEamWspEK9LCKYSrZnypPpeAzjmbKqJOy
MBCI2xxGdJsKhm3XZYEd+hHFHiQGn6OOOts253xAcQBFjUHJBm547fvWFLcaBRwRDyFfBtR2OOQi
6khuQ+4JbUJ8T4UYoLjP0ieQHVcgLPRgSoKOYUoaD2D+rCuopiVYnx6wYo9JZowdchdsr0ICOuMC
IgQEIBJFJFTHWDsg90THke5Xe3Adkh7BpYkD+Z4OB4Q30AXc5unGqBdKawPbgfCRTXArjlxFbURd
ZVMaQNZ0Hcifgc8lljKIPPok9C6DcfjdHZM+Wjomgt77aPtQ2K/u13W591TALxtfNXp3qKSECOg7
mAe+6oDDetKF9AQSYRcrEnjuqK8eUx4AWx4DS9UB2Pe7FZmRPSTizLBBA8wC4YvADiKoPZRAzXQF
wXYEGSCIAkxciTtoBnR6AJbOcfSaiwNf9Mu0jEEnwB/2ttnQ9FzShQaMQIWhEYfwdcCerkMxE4Qa
q/6JPYHmY4aEpQFONYLThIzsDkHxZj+JTymhe+sxHJlAhhTpgdfRCAe251IXQgdzKcPAAUcctd6Q
ah9SgkYgJbRRnbl5nRfmqfMeEHZkgwY5UnKpIhtFrlEc1DvoySCaIQQC4nPi+6pvvT6lPoglGwGx
ZAP7xdssL2fbIq83M9d8/1SY3gbPMDWZBT4AGJXK4xDudkQwlF8CtvUEgTbHp9SVJJCIkycteqA8
btXDclcCGNedIwngYrK37B/buIqLOi/0XpHKdLkoMs1NhGzkq6a34bZHISeGTHqUKxE4SI3adEiv
D4apETCcDNR5qWt3CyMyBITZDP+bqBQONNdhZHPKoD1QoEjIz5FNPM+VvnKjQLLn1JEd8XEd7hZ7
oKFsHYPmhA9Al2td3KzA6GS2K37NF5OaiWO6bcf2fGi5wNbY9gJwgSCUHHJNBPCfNvx7IP3m7Tji
dq0HWKjjyIGLdG/y5qzpyo/T24PNMXZmHKAS0GsgA9eG0gxKDiEbu64b2ZEXBiG0DEHou38Zars9
h9ZyDERfhBQfi6BQMujlUiCyzU3/ZvImFaLJAApTJaiIbBe50jSS0lYOzJI84pJJyAoecZ/jKQbi
p4vHa+Gnix5mhUecW+Fhe/ROZ3nspubF/DzJV+bPN3bdknTM9MNDAW0It7EjALxAxMzhPogRYko8
x1He085yTH9cguN9A2n0iDQEpEm60ryNixu3iFf3m7xpS2Tr+ubT9FMqIBgTGDxpCMIoKGKOZK6N
VMgDxhlMu/zplAdM8rQ5XHy6i+7c04X0iCN2dvSEjhk/FjoWw3J9kT7AgSSlGu8zH8Z+QRgGXiig
W6DQfXlQg6B9YTahnu/CzKUc5jzH+bo8xqXo7uhLMRb/scL7yhnk8U1RbsyDQTC+OTvyV7l5lXmf
DJCxHSOMegISAMGhY1POPdvxuQttvGted6bUc0S/jj5NtwcxyUYUnbJhXc3iOs60+dOmstqkzRje
OhgTBmKoBBYRwqZPhAiBoIdSD7HCiAhFEGAXjPEcXZvXhoM9m8dH86NtPZEyOqL1zGh91wRv15uH
XpNRPjNtnoO5Yi5DoGWYzSgNFfSamNo+jBxEOYjKYbfSpdMHoMgIgDg5NExtt5UXy0MTzqQ0TRwz
Y5rrOtCCB7ZggWmWhANAAmUL3/Vc5skoYsFTTdwD2S4orpNjQ/Ol6cCXw+mmSUiHyVFSaJtAR8gM
N+ZoImAmmUfKM+AkJEWCbEiGIUaC+ISiPx1uGvqPZ/NmuYd96aAR7Ckamczcz/5PgTXlM9Wg5xCB
M9YYmEH59LAPPZREMJehCPTqRxBGiAtGGQyrzH9uMWq4PC5Bs9yXYHlcRgXSh04ghxTyteOUjSMg
DnXTBDpxIe6FgA41Al1HRPpe4BLhhU7fI3tUJn1WbIx/unfJd80bcfgwgBlbU9dHXuQpW4bggxRy
qe1iyW0ZUYeJyGecsz7/HpUB/2yE/5Ls5TcPDQ/BoGAeNRmcwrwpGJiIqwgGCAeCQBEFBTkShLMw
ZBiFo5HQodZHsaRjKNLGjx4iqCjrfHl/SMImLtv5KmDKC0LK/pe3a9ttI0my7/qKfWxgkJy8Xx7z
6vFue+0edffM24CXos21WjIk29s9X78RVWSxsiopEQuhgYHFYVVnRWRFRpwTEZkERmNgacoI1IqW
QoAC2iwAEZgYn1ua04FngjWmR6znGTO0LfR9iG17PC7ZCgmN584r6RgBLwxvyvCAE1WIhUmisSQZ
onxxVeLAl00ar97U0jUsSiAhq0S+/eO3zcMJOaBPkcOqHCzcgIEZrRDVOuSrmVgFkxoCByKrwAe3
8PhySVYPaetQ3VIrsl8vFQGUPlOkBYD8z7fAv41ByOtk772B87rsgFNQY8HLRAiHwJUiKdqGGBj3
POhXB1ogxwUm+vNtpaujSw6qnRhzmE/r+93m4fezI4DwvsK0MBqZTTRiAYMHhJCsNzJlsExlpQFS
D1x0Rufr0SpJIB4vJdnZufl86u6+oNWIlejBBnoFlbyElUhoiEDiFOK6ZABrgG4qpiKLfsHY14+b
S2Yyue1v8Oj2TXhlpoxqKLNxjeX762HXPaBGFmOrG9Yv855LYEMkBuT4RWNCAoI/Y9IBOAcn6OKL
67cf+fIC7i/XUm8ahr/rXE8szk5rLAcKRpGZAmVggEM44BN4CSIVCAvK9iUCI4QC48jyOSf4W8sa
upYoezqbwKcvXQcB5rHbPnzEjS3Tt4gxn/X4v/+LSzEr7yz1pECkIoInBY4lg98OSVNApxDA8msY
ym0v1d9bQlUeaH5bPQMtgNApO4Nn48i9Mf3jUA6YMhiAGqMMUBoq7oRyHEJmEBg3i0/EmpBI9lZE
AaR2qCBfhXTwEZeNCq9WauzFMs+r90qdHMyPh/tu/ejvPnbw0HPOQ/PexZSSIa6nQgrVBZwnvDtw
xZ5AoDUhYBzj6XnnCSz6DrcXdy++te/dFgZo39YWtFZU6Zaieva+Gt4cnCqufYmlIZ+SMkl4wiTH
LE8BEy0AczIQJgvkTlorXydaNG6c6mOoXupj6G637zbHygGsuqpuAGv9lHcOKlJVEnABBQRKSMCs
YHCAPwCiWWm9iMxcqBrUo9Yi7ZaJD8N4y6v2lOHteyCldKghSeNQMJhcx7F6mA2WvCz6qgzMjkIE
ccCstHHlOrry9v0LhOXt+5taznVDeKdmws/W84/+vxvrWQShopICkHcE9yUEzCyNjEjBi5cspSa7
ni9kGPuZhQxXa/ldwx7Ylo4k+i9/WW8Ooy1QM5BoznMJAtBPdiApU4gRDCXZMh97khXpjERPxqkF
aCQeDd/sTgKUh/uvH9aPT93jGajbFQIEro13PksimYAAxRhHgCBISCVFp5W2pfx5EOy0x7bPtc6F
vqmVa9h715klEB36NVYOrURSAJ5I14qQDJhRJilZsHWJdccInDFqFzinCtZiekntC20b8XhtKq7t
HcZMXLsWdt8tEgr+lwicksnVUCk9fkKZ0Y4dIH4dsWBFFScuck4ot9YDuIxDieg6Tv5LfIaR/1KV
pkFO1xJ+d+LDb96W0ayGFFfKxbJYIiDOAqKGLIhLSgAbh/k13HvN3LPT2zeHXXIjlZWMD5+K7Kom
rvHLjs8qg0MP9VjcNSfuqoy02QJsQzWQu2piAxNEKs0ZoHmjjX0Wtk3GreXqlqTaCTGWdn9+W+Zz
CWRBOpeAPUuvIc5HzGxoSoowsjjw2ILKV5rL89Nvavn2DaGlnhTKvxwASfzr3HKmexLERI4FSHZR
DmtfHhirpo6YYASTipYQ06X6eD1gLY4yDXHUmDHcTktEBlG4UxBXPbBm7gOsdsUVcRmig+feRGCv
VsoLIbdd6HGACxsiGNnID4a7b93XhwesC567SwC5RXC7HDAAmJagEQRK4I2AG2LTAAzFXg5S48iX
V/J4Sy1911gcUrrTBPpfS1+VHQ1Rsz5gMWAIKRRYBo5iPrME4rgFwwTSLnTWWaUXnOav567rK8yx
luOmlnbdUmGeNX7qtriVfczU9euJB+bB2ZPU14iBApNgwRicVzxIE0XW4bm1XY1ZCaXXjXXicF6r
zCsM8K0//+xYFVDABM0pcZB5VgrLTtxi9pU7DcQkwD+BBQHIXjj5fEPM7XH0C7zqePWmFrExmc6Y
02TONgH/oABroaNEeaMB52SVIZp54I3JJLDpDDFKJfBUERiv483ZrAet5Wm0dTi3PleCPwHfeOp+
fvjc3R/+PcE0CGiMg7cJoAZWFXbmRGPBSGMiUisKQC1rm2aJ2PZwtUSN/B18aU7s/7Y/quDvXX8u
xykbxPVK9stGl2hcAggKbxp4i6PESVVIDJ4Dz2YW2EAt0XK4Spr1eol93EbNS/tYL/wGrv/dw667
w5PIJg5I2cislwZwHuanYgDfwyIlxhnKQVZDPbsGS8yfcblyOb3rpha84Y32du5Lvx9wtFVZb7uh
s1WsxFA/x7+DTwUkBKYnOdIXCi/ew1InUfEssU6l3FVltdMTLqDY49WbWlrVUMGNTT+/rx/PWUJB
0Sio4NQUrQmPwNlFCglwt2XE0CKjVY6KODPTySD1w93SNtfcutn8/e3tzw8Pd5uH3/u+g37m7JGI
YJclPA6Wr/YQp2UuACxpJoXZIFhiWWn1KknCkwgXMoWny1P1NqJbhlr4cpzb+OafeM7jyp/m99Ra
WBSPwWEeS8A0CwiqmFwGIIcd5kIbFV7AoC+3FlbRaibITInlO9rIBTtHhv90IlG3n9aP3a4ADvrx
8AQUhsu+HAB/ENKwxH0yJhCDTWOCA7j23KEHpl5wbxlnL2dBryZstSwXQkt1T6W+FEvUu9HbRY/z
+n8jDPy4Xh2PfsTWQuRtdiiAMAg1HBZKwuIWAA7wWR57MywgKU4zs7JRLZjq+df5E+Dq/dfu/uvT
X9+tt+9vz9cr8Z1a+tsNZidqsLHBTcxPIwLu3xKXMqENFu1hlasQwBqpARhsFYtcBpvVc1hjOmQt
UoNPwpfzEJAOT5/94+bw9fFYUuIrrL/w4wIBNwNcjCjRd/YpRbyhjJSUkwqAQugLy342+oX2g/qm
mRa6ocV6vkPgp4TennF09oPzLBlkthRAUm/yTBLPII4Vy1MGh0V1Zq+etPjpQg37p1TrtG74K7ew
dVwtfUyWEtyxWGnMwx0/IoFOiVsG3FPnCFCbF2wbzIwAfS7wmk2Q/iquf3zM5RU7i8YgacNTud1I
nDf/7vsDx2CGiVmIukpyZUmkuPcAABZQAqMJM1j1jTEIOYtl1Sj183cNV+E6OZK7376MOBQnCrs8
Cgc0b4rEdF8AuJcSwlEXXQ4WGegsiTaOUD14LZZ9KJu1GjtOf3+6+3oO4mwoYBpAlix6SVgBvwRB
BRhdQmIJLikYyTT8nUXxyTD189W28Xw77x1Mh2Ez9+Mf5xQ5sDNc1Ir29TFYIorC+0B8CT7HRfCQ
DD4FZbyC5WGUk68XGZbyXHID8/tq7W1Le0cXhBob5z+s77u7Qe9+3Tjdd6xk0+9/UCoIJKeeOAC3
JHDBpPHJ8+xeA8RMRbhEvM93VEpu9w0T21t7su3fuu16UunRTvehPhcdaYBFpUqGuCeBdlufCvgC
r0TM0Rk/a22pBqpE2G+Wqbwt3W76PCTc/D3dfhhpnhb98xVQAiBPmaSCvUAJFnoATkNcLtRzC1df
2KPxeoWms3g3lQJ71dBqPxLY+Ou72w933z4e7mc7I7HZue9epQLbQkjCZnHhhAJvSxPMcFRGaSuD
pq/UP9yWpNKG2cY7Yrt585nPWMFBHG/6HWA+SceNxJwl5jWsDsRLRUnxEUJJcKX4V1z3Pl8oneVa
l92+oUvHZrrgUeP3T8OMTGmqC7yo4gLJqa9OiEKCcZYkHrQ2ISYd1DVhsB//RZ2mUlwwwckdtZ7d
cmlvuaSNhOA4xe9vzy7ccDvsuhg+YFA1kfHgODEWmZlNiQSANyRFFbSxQvGkX+91nmW50K9/23Lb
W7Feum34cjfLeH0BmDGZ0dUH/P/YsTtUOHTfqZKtKoZGkgzu+5UAdoK1nkRWYHUW52Lyr+G/P9Sy
TO/qL1X6Kb3MRG2VGcknrPnakxiaFNNSECqxtxewFLGFMeJ1iVw5qwCxvo4nOT26lne3BJ9bTccN
UW9+7IsBM6FDYIUhP1YMN9E7qjGlazAhIUoMYNnl1YSePL+SvE+oLyQX8yzQOzxU/+vDt+2n2/k6
xcyKPLEEOWQnuSqeo1EJzQCfGQH4LBSFVBmoGfVJ+6t23zzz2Gpzwvy2qYo7ul6ynR1jc852260f
t5/+a9iJJY8bE+RQAWTKeYutcthNKXQBw4o2k4zJYRvdVbslryf9J0EupZKPlyslhVw6wp1QZtnq
gdR7fbjH352QRz/Qp5X73hbk8wAsCIsU64e459vBqoomGxVFkJJdRX+mj7nY6jHeUSli1bLLdLfu
FiWe8cCaHwy2//Wtd8dPuKknBgcrCLATBdgmGFIjBhiDewBzlAOO64sNz7yx0/gXsObp8k0tZteS
fawyfu7++O3jmKjmw75rwyLQOACZeHRFzI4EASAzOxuNZkGDuM1MxXSsSohNg1DtNlrMJvAN/hjL
0QB6Iw/SUSEE2HcQCMaMB05lFMEync7OOyafB2MwYnuy4EItoWlM08bOJexdVlx/+foN085u2L/c
i+oBfRcaDMHOGdxuyEko0pBsCwB0GZUw9jVi1lSCC7tqJnfUOtplBNttmdrtFg273X9+yG+m6CsU
k1NIgCMBbCCl6ssFkmSEmoLRNBCPa1bhMPjlbqv+ciX4tsGHdzs2Nsd9f3d42s6pSiia8WISgF7c
xlRcIRYbcG1iAZYhyzGqP4uqnOWb6tXxBrrv+Jrvu3Mx/RF3t4FdTBdogVgsOUQxiBgJ28YM8Q5o
PQs5KGqoFzTMEh3zkSo5hFyeO9GJZid39+sHX85hFlM3fcJhNZSFTeA6wAogPiPzThmPnvAAV6UL
kZbEqOVXmwk86hkrgau1EroxmXontRom82HzP9tzZUD3e4STUkBhqcGcTcYNzYo4RhWREuy5ZG0j
N/VETkepHm8auT74cr1ousOEwLA3eOrpZLDaCAC6oAZuEsrYeyUoxHTjo0qy2HBl6+lp/OcSEvMd
wiBowwLsZl6u3nVPn78+fHmapJsAuB93iB9TTh7eg4bYFmnA3UIJsLuyDkCw1lllCWztKkeRhked
EArecCGbtLzxptZi3VBtK2btP/XpaD8wYVEjTOyJlFgGD04YeA7w7NifGWNfi4cwmbNT6tnDAaqR
K9HcdsmI8cs5rugjA/bpYdGHKUzY26LxbBROFGIhkTksOYNlrSgEyzwyK9L/O9wM1ypRt65hIDsx
J7WH+89TFA4z6Ia+NSyAFKNjwXN7isFtWWAeIK0hUQH6LkIGIV4nQt5fAEhwYarTnotlWNnzRe08
FuQ06fDYb5v8o9eqP+WCuV4tVpzCbK9SGc+OcAl8iGFEZRuV9mAf0r7ImMbRX845livun91Ua92o
se/52k0aVCe5bT40wdkSRWLCEUtxS4B0ljjwS0RLbWIwRSYmF/2prdw2/sJV4/G7eRYofvp2//lw
//E4X9jQgdUq+LdPb5nCrYqEUpXRkgJx1gNnxW1vTCghwlXl/dlDLsxlfVOlDADlpTJi71qpnno/
19CvgPu5hk3XzOtQmMSUdYH1zCU2YQDcCoFzoA3Y1pmvbei8YlfX4rZKrfV2CYb3a9z0aC4ebPoD
yGyxc4mxIxZgMQpbgOrkgKeg4QlzPgLr5gbU9kz5SP1zfnM6fC1eY0/kcKzKfglXpmhFrSBG8X6n
C35AkMiMAYPJJDLthxYr56IjMXmabebeKnU9XnkWrlRoZb+RtKGDZGMXUf/EVTgvRK4xIPXnwzCu
pI2J6H7HtS+0j0VEGw2w0CQe02xfez1aJUhHl459D2DqJAgS+8P37rzFVogVH5i5Bu9NPYcHi4Jy
aIvnjMEyxE57LoMxcxg6G6wWxDRmpDMLBvb+9tsjWij6YQsj9ehj+IQFCp4Vw6NJJMedkQkZC9OR
SMu5yoVr/sKOznH8CzHkdHkiu6NML/gtfHncOd/atNCbhKUc4sh52wJnKzFsuXZUGlN8JsHiaXxA
sMDxwkoqqRTKgbwkl642y/4xz1hmf71WZ4lL4Mvd/Pyx/pcjh5+R7R5vx4z9MToahlSFAvbjAQhK
wcY7gW2WwcE/+CM0RQfMxYWr/FrjWRdcW+POWrt9S7v92MKBoXM4GRK8/i9fD3fnnkK3GqorNPlo
PQQd6bC7zIDTAHrpfI4aXmNIfmb3F4asxOKULsXSm26/rXvfenr/Hz8M2/RtTx6sKkEyjsk/gduI
hEAwiP0lztASwYYsfTWqO2Rtm7cN1yqtDG2sjLWdn0DQb7Icm9JaByjoaCLXDFsltUKnx4jjQOfB
b0efsEm6PL+wp49oiz+946aWl7WUmJ+Ls9ioODQn4rlqQ6fN0Gujg6eaO0qSBMwiFIvEmuJI0KAD
aFjodTGn+bgrt1DO2hZRm26p4pbOzxL95e3krOzje5JiOLTI+xAU14Zkg531mKcLVDGStVawJGxq
vqGlXtNntNWZ3nFTC7xraHFMq2PNofxzaE2bVT0ApYiAHQIUtz/hpgLwUkUSFiJ1olhjzCsdGjWT
oJaetaQ3m7mZ9VLEh/v94eO3x/FVMDnQcNkfRGp1pkAMAx5+IbzEk7u8IsW6EmiGJZSf7whsPOPS
8QCLG2udbMPZbt38vLR36/uPjw/fu2nKkScLAcLjeS4R1kkIEDqi1oTFkmh0gM/kdQWb49gX6jTH
q7XUyx5vR7vNeP7QYfsN+zPP6SSl2Ar+16cLrHOBSaC5Fvd0wiInFvt6SxaOJZW4imZ++kg12k39
UN6SZD5/Zwc+5GTgP5h8hd/0jd4C4S7WUXFCNW59KbgTJoJBBHCm+aVWuRfCxPn6VAfGGu6TMadP
p4fEN/0vQiKqejrvmTcrPExMGghnWAAGz3KMtR7AEUnA/CiXPmvB/ozQVnduLASu9BXLcx/hy62Z
0Sd851/vRo2twIoXZq7BtpPPwhJJLQczYniIuFWEe+1t+L/irqQ5jltJ3/kr+jIRdsQUB/viCB+w
FGRaoqURKfu9uTB6o8Qw2dSwm7LlXz+ZqO7qQlV1k++J4eFBImsBEiggN2R+qbRW7GjGWdFwQZke
Bt/CRSF6lG2wEvw+Uab17dWgiNJAeGVrzKfALDiXeKqcElaqlDCl7xhhnXYLsuZiZMLmwvSCalfN
8dbyz81y1fWJcyNx6jiGDihFrIxBV0pyi4nLrLKyriuBUDgyqUjoUZCF8T561NohtTkkRw8RNTdb
hSMnL3UUnBJWk9RW+gCUgqXCrWKVUSGAMKIiJOUIfyJQoNv4EWTNEdWGLoYAOjYD/pVTX0Sjt3Cl
jZnveZIuhSol1PAxRtV46yopueFKJUSaf2q1lk0XBC5H1GK6pH3F5NVytWzEz/T2YnP/kHXkBhSb
8UZtN8EwitAbglkEs+Jg64c6VejCslwbGfyzPNMjXR04Yxw+WA5NiJGh7ZMX74DhrNsQQJQttbDU
etiA0fps+aPFDeMIgspgTc0T6cWYdtsoOx+eqeWLO1bwuJrvUYVzFLKntQXOGzQodjm41guFtn8t
a6+sSQcwpdqGet2PrLthps+bjOR9LDYqJusQw74iClQFDpp15QSB5UfqSFkAxvkE3ue/FAdR0nMo
w6n7THfUwEqH2hAjrK/hbeFa1l9Xm0/LAgMSfVjbwJbmFzxzo9ERPGyRtQNxwRRsQENFJW30DBQT
ltTLQ1Q2FsXFkMKh2dE+VEwFG6L65ou7xY975+PXQhLRFk+MgEZLA6LpCYlALVGiBY54Zw73A1OG
9SzwQXM9YqZjxLSb4f10cTNddShp0rFTLakhkeE5LCJlarDkEhh2IXHJfHZ/8hdKxy4p6BE/3EpM
sZaFv3HvXHg9wIwRjHFTR1EpjxmSNoLNAxIctpBwJDCjGf27Qnm7FBZD00PgYrjI2+/ybvWx90mY
Q4UGxiIQTAWsB1vBXqAVnpXV1tGouXyhT9J2XpI8BIiGi8buw+4+9COOo3YSkc94zQNi2WD6FhrP
DPRmqry1wb9UyN2HMYrNyOLXts12+Gt/HITJ31vkGl6DQcZAeoLUAaZjNNgSBBmwAcMzCqJdKHfg
XyPHQdjPCEfU0zaq8vP0rgNvj184gJpBUfwZDSoTTwwPSUBFFoHx2tRSJtqTgZ02yr5HrDy42GI7
zu8/f72+ue2ESObDJ2EUx65B82UYgs+gf7CyRVASDFOso8sOIBl0mysomQ6d8Ba4D+lBFReiqjkN
bVxMlHKV4zCaX7Lx7EEnsxkgRKGTKVaeJgGTFg11TkUlyMuJxT0txw6U+04n4Fsjw15QOnD5t6zm
/gFXgdxWGci/5Jh96pNmokoGsyI8hvoQVYOlSOCjIEypeJZHrejokP+/80g5mCHcNEJ87GEI/vf2
ZrPk7VqmKrsLYuCYjawxMQdzVUQCMwAEiVLWamYRzqonyoqGuiSA0BnqdFzyvrPgH+/C9su2dWPQ
O1AzyhgslpRQjZASA9iAK9kUeeLKC/I8T/2+9fEZ3N8vaZfDtcDtgo6AVnVdkFswHyZRR8WTn4TY
+jbVmZOCIcXBhGaRojsyGZAJTy76p5yP5TPFGKbXI2OYEbVbAr//ebs4fFzquYU1YDFIPKE8BjFg
MxS0JyDTTB3ouB21b7UgZja2GGa8RXP+tLy5W0xvq+l6tUetlNkJkb1F1tBYC+Kr5FA2KYz4q7Fk
QTAO486AsfRSjYYtlgQNg0AtiPJ+VttAADfp/XmZNjLegYoXJWZACpQ93NHKCjSKAhgj2hDLzDfI
+O3NgvTFMOvX8iXpb6wOvosA7TznceL/17nGCNGsdryuEsOoWoa5eJ5aLGZmgyZGE0mfOJl8AuWl
88BJSSgfo171AVK2qKNDBFPmlIHVGSqvDabPEwlyBJiEVHWOxLXJH3VIFS13SRNsxAwUORhlVgIW
FBmO2fyRuTCF18CZQPqHhOqeCCDh0HFfp6gRrJ4GG1/c9tlTcwi8YMz4EyORL3DxejZaiSVjb+Fv
uJS20Hz4PzoBnI4icQ8WL+g+PBjaMIpgQO0H1ZfEJwKO2raPwH7h7YJ6MQwAyxf3CYub6e3V5uZu
ud5M9zVtcpGnU9Eca8e6BtbBdIXZpw1/zoCorgYGHjxcfF4K16t3H8IWFqozhENE9IYx5IpCX/fj
2A6KGA0cOsIOqIhHLl1zRNoEjZ2iVqikUzCoo5N/XLyE/xoXLUAiHaObDxJG5lh+87cH+HM0m4Im
UE/B2qgwewTD6kFYCvgnKlA0tADN9nkBumVHBwGGOs8UwzFyqPYLK1vh9PM71jPsdIqKcYrpfx6h
unXCU1MCf9KgamD9idEXMuzazk9K6obiS8xY/yT7vx+nD5u/tmp5o6cKDInIR0MB9q4Caao4AtN7
hYe+8BkEMLGkQM2S5rilt2/8AP5Ae78gfWZGuOxs1pnt+lVvug1zSasIMp/XwPIxuhzWW10FLhwz
GMkd0otN9673kujZ2HzPW8z527/upqdy7xtCOyAQDmsbVRbE18YTT4fskUStCEdY/lCXKku3kbL3
+diULfooLUcjQzl1SrsoKxky4DaBOcQpNYzGhNDy1KpvjQw9FOdpxZyPcIw5ZtE1gV1YfbJVRncV
LBMl3LPkq8gNqFYm+Mpa5qqaKh+DJ8QRPg7h9XVMCYX+5AgR0/40/tRojmVIvIzAUDl8PuMxyhO4
VmWM0lUKAiQgJ9o/rzbKtvFDkOT5Zkn0dOTbz2dyWOMrXewqfDVJeUYwJ7lQFctH1okxBBfEYoxG
OUpA+j0hHXKbBwt7pYuSzsXI5IKq2pvcd8uH6/uHO/Qedusc7ew+omMwkaM2h4hPDuwOwyNCZ8AC
5d6ZwJ6VeTDSzYHU2uGDJ+UIRmTDNToFmoXr37iLgTfTi8Cw6kUlc+IJ1j70GpSM4ATGQjDgs+pv
8mbu6SuGdT0s6okXzbG08HRRf0FIohz/yXP8Z1ZFtr9nsSixziQG/mNWawK54qw3VcQac7SmVtsX
PP7Y0XPgwe3d3rDt2LCnO73xdrr6eNOJx8nhjyGIhJkjMqB7P8vJYGAbgbolaYrEMNbj451Wut3L
KRkq3XI6SLQFM+CiMVJGdCbJtFKMEhDWdXbzc8yJ9hhiSpx1kdX1czNQt50cjMbc3i+HQIeat5zh
6figiM/l8s8NcHPZeHWE3Z4Quehrw6WswG7AszvQQJwCUykqQaOiMtTPKHOCbR82GPBuQfW1Ghqd
MsNwNOL7AVSA2y+ndm8oIKFKEi+DqajFuqUK9GyjYB0Qz4RCmCefer7dspmSgmHlS6uIHaSRg82w
aGrDkG3xN6vZKUcJLhNY7SD2MCAfa0hSMHwJ5vGDCe+JYISJF8TR2FFyqNpdc/ekGM5seECiQIb3
xjgKurBzHWfHsdANH5WuNs4pX4WaWMy4BT6KtUtIgk3pE01av7xB3ZJzBIuhr9TCKEc+b05Iut7i
nK9vrxZfV9O7m/k+gveUNd/VxoyggaURYJSSVQaWFw6awUh5HUXPtzVsrSCGDyEL8GK/5P2fn+en
21k5n65AQb5brgqQk4gKogPhVUdkNRi54mW0VQ3aK/eJUOrlE5CvvdYPmWa9x3qj4SOjUf3RYL3Q
+W0GktuqbU3NRKKTN5johf534JcpYqIXaBS1AEZjhCW6flLvDUeqhYY3JbnD1EurcnSuHpStPB5j
jNpP8mD0oBbEYYFhBWpQOwUnOaUhJPV05cqjgTjdJ4pB5PjbwSCWcscvH1d/3Kz2CrvMAVkJBJIw
taxEpGhhWARglqLCeJbkfW2J4AeCMvatFWTYEYVdWbmvN/15PlKpXUL/nJm6IhKR1yJYi8bWQJGW
mjHYbNSkUTra5koi9MhcAFMeBNB1w1Pb2r8su7BzYBVsIh2TrZQhGPGDODIBC4xTpYxhKZGUjocm
DTro0Xk9QqdpWdBsfdeBx8sgcTWCnYtQOYNSRWrRKBUyyuR80MyyXupOp42y7yEwslVTNixLeHv/
cPF1NUe9xm5NlQaxAHP6dM1IpSTmYwYPxkrMkcLcwi0Tk9Evzupbeg6pEtvbxVhH8PjwYr/m1Q5M
+9PNDppBwmLGqEBaa19LBsasrh0sBAr7pA6uonXNQH8TKpoXARTaQWr/dHYccvuns974RjbdVI1V
sdtNdA5AXaHJjOdIOQUf/0cmVlNKE3FV1FjESAPjdQjsHJI13EdgwcY/O5Ow19uRZMLek8X4FkOc
A7zYHrTnMlvnvRKu23rOUpGoMfdJEywcQDiprAq2Am4MqxS2t1Px5eo5l1SUgxjbcItFXyjG5ezx
Y5NaiWZbTjekOdeQcSdYkGCqWQEfxmgKEhGYpAhGO6EIkc/zfnd7OJQSv3+iGMOSjaiLS9XWhpk+
7ssUUaNySSyM9SWpEhRLeDDHEdXSgZkdiLBeyZj6OX6PI0WJoBc97FoT1l/j0y/XHdf79nSaCAU8
K5sygvoYCU+VlAiFlo/6EeNTU6KEkR7UV/+NdQe6T5wU1Go5MgS92AEm7vL9b6cbdHC0clLsDElm
nSWyTpXSGv2TnIMlAXJABe6MCcKDgXEUSaBouaANURkHtLF97d5B0LTOQCIRVF/YQVjfLaAIUFiQ
llcInEtpwOJJPYfpkcBo6G7IpjVq5OX87LVxsOPzEXjGjdWcR4ZZ9Ij0E3yA78oC6MEBVBxVC+WO
i+oRejgdmROuZz01Yhvy3aZyGL4vzwWTg+a+ZTGgWqObtCBvrI0Ko0oCfUYw+Rhpej5C2jU5UB7i
ujiOaiQbZRkc2DmRYEdUOiHSI0Fw1xoBOZUHUoHHJKKfVSPiqV0xfK4c0LAYqNUCT8iLmoiL1Xq9
2BeGkfj5c8ISobnWA3AY1IswY9fD6qskN1h/R2nKjwaRd9otyJpPh5okXGzTrB+Wd/dflt0gL5Fj
YSSrE7d1RUXEEvawJGHjWqz5I11gyVgxHuzcb69HzMj+WMh+FMFsOv/98XMBowGGldgWpc/o52Ca
1FhFAgNGQMQDoVYBeT4ZGbgEk4A8yyHlez11v3dz76QklY/Qb83ORMEiXe+XH2/Wm4dOEeCmSrjT
JIJyiRV3EN9ARFfZQEGMCw+6gSE1GPT/j7XFSrLLUVs7MuppG6h88Rnrko06pVWS8IEIRqNhlS4j
YmXg01WecBlEHan3f1dZxj6V5RBHIhP0Yov3UHrKbhFgK0e24H8ZYlpSYDNYSxbh+TQsQ+coAoWQ
yIMxNZiUT9jMm0OKZb7VpRTLHw8oxYsH0+FOm3nJgBv43vZP3sQ4GWEokxhplSjmfTJVGQ16Baay
INZliPpvOTVo7hUjtUMUbGtm08WITbDNCKc7iEiuFJZuz6fmmlHvEM2fEiy8zSSsQMuqIKMOEk+k
nH/SgXkkLa69fVKSuRyhfd4HfkT/0XqXFd9wuXy8sU2z52AYJ4VB/hzLolBgHobjKYAJ2jONn8i/
hNFWJOcfdjq1j5RDnQ+tAjPni4PlZ8/eZjhP0Gy3AbvaorqReaQkNqNOW6zSzKmHAdugMaXDaQfL
EYb9RITYQYTOfOukJHLkI81lG6ge3qeLx5vNsvBfEG28CNFUypmA2TagETHvKhKYI9554wLvVVQq
mikpGElBwotHTsTGMoBqLKUcIqvqgMY9EwzMfBYrK71VQnmpvflGJ333iZOT+s+t7X1+v7i53kH6
XDze3UHDP8AQw/QWjL+76WI5mX2d3G8+LR8mnx/u4eU1DGEzffi4zEt+8+lmvbvxQ56azXT9+xWo
+FefbxY/TBpUjgY+7GoO/26WP0xI9+J6ublab9rrZcdPNU++rXn4ozMqmIHc3910jjW0xvpjTIp/
rcuTX88nKJq704ulsN6ubr9OENgD79xfT1o7/ofJ5T3IjB8llafifPKwXN8swJz/kbz+jvzH95P1
HxiKtLi6f9xcAVWPq1ybETpbbN8AmwSeO/kNNN3p7HYJDWDnbbP0lL2a/AE3wQjatXmkj92lbj/Y
xLaXSR738Z9fz95ffnBv4Lf39auzt79MTrb/X/7zXX34tYuz/8l3w9sPv1xOvlvdr6r5/fR2uZ4v
F99PTn7c/xxooL27++XEzTc3X7BU3eXDdI6rd+SHEWFet39MTsKryTqjHUxuUEisR7uiQrTvSHgH
9tqHs+aFCWrSo++wop+4LSAHXGMFO+sx78heb8KckvPOOz9fTH4+u5x8bJI0gcT5/WKkr30//NA7
3zUJrDizmbZT8mrfz+5n98wElvR0sUAwzgkQjTH4neXx/cnrjHo1cXhl8nY1X45/n4Ksc/fmzdtw
dB3Bijvl5+2Mt+98fJw+LCafca7Hfjhr+9GTk3fNbp/AJ/q8Xk7OVtf3Ty6Bi0sXXk9efXDv40Hi
QJXcfxoD72zA+HhiY1Byqrrv/Hp+lUfkLo9si4kg3aX223KGwvg8T/+hfjq0cTo5ubqK7tIdp43R
9h0GWie8c3buXtXHX5Llkr66enP2y+s6wnI72I0y+zlo+rms/3F5nDShTnVLm8B3PvxyFt7Go9SB
Pdyl7S5zuIObM/+ozID332fLB+7AQH74euglvl9vOJ5/h01dvr3M7PL44jk1r3azbrfv/OfkDjjH
utiozQbNI+D7uc7vnPwfUEsDBBQAAgAIAPIRKEph7BE16AIAAB4HAAA2ABwAYWNjZXNzaWJpbGl0
eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMi1zdGRlcnIudHh0VVQJAANHEXJYRxFyWHV4
CwABBPUBAAAEFAAAAJWUXW/aMBSG7/kVvpqgY8sXISRqK7V8SGhdW1FWLqqpcuxjsJTYyHHWdr9+
dkiAFdA6cYGN3/c5x+ccfPXwMJ7Np3e3aHI1vRmPEpQ/r7VqOY8yK3MonBHW2BkvHpwFpN+4rr+u
S55RZwRpuXTKQjmZJDhzuCBZScF50cyZAfu6anuu10EJMpvz+SX6tJhPksRuDGUoFSTJg37L4Fq+
2jCXSSLXoLCW6qLdWD510NMcXaCjjp8tDyHkvnpumIYBc11kIgwVLlYtvz5IQxJ5MUX/EfofUpNS
K2jozMfQZ7vsrOKDUT5msdF6e9FwFO2izUBQUJX+KHrv3HLCmkMDl6Rx8J4zziAHoZOkAF15ToC6
75ox4oyBAkGg0+o3qcZhPKCDvcJIUm7oCsyskHcB6jsMV1gsDSbaYUgUhccwRAHWsElsrgDandZg
30WOuiin10BkDsNSmZR1czIVE4VzC4kbCHV9QrwdpBJUxWlM20m51+r8IFjVOs+tadhPScwOU1oo
rkElSQpLLnb1+DG7QUSKQptqp1Jm3UPnmaF7zYXB7VE41NxITC3d3Djn2g5Um6yw2qDPuqgUBV8K
oCiTYml4/o7nRsFpHuOCFyugds/Fsk1lmWamb16wBYSE+KcBOX5LwW7G+Vq/mbJ7vZ0TPO+0s9BY
6Trud8zFDApZKmJb54Xb1qU48N+1rgGY1LUV9yuxF/ZJyFxy0OdGFjWylKYM0OcnI9zMillMhWme
wFkHPW/m0WZUnS64Xt3jJSTM7m4tslo9cnhJzLs1qLERDYip/xeLtWeWeq/4L8OyUNM3KaYmFY4z
/htrLoUlT7bQpZLluloZaLyF9iIMp6D2ZlvIXn77KN9tUBBENN6h0Ifc9Vz2zMMcmOdxU5uacCXo
HWOF+Q3MXQSVL6bMvr919M0H0TJf7/23udBdtDe5Zvb9YOsYgHngR385bB+OunqNK+r3Ix/lRtfy
q7mJGGNxjwS9EFNUTVnrD1BLAwQUAAIACAApEihKnpRZH2Y6AADuwgAAOQAcAGFjY2Vzc2liaWxp
dHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTMtY3Jhc2gtbG9nLnR4dFVUCQADrhFyWIQR
clh1eAsAAQT1AQAABBQAAADkW1tz28aSfl7+CjylqNig5j4Dlo+rcHV0YssqS3aylUqxQGAooUwC
DAja1v767QFICgAhWYxTuw9HDxbFAbq/vs7XA/iqLBK92Uyt7k+wXa0/6DzV5U2ptfUHEYzIP0dX
cXXXvxR+zj8Vy+1Kb84/vX/78V14/vN59/7RRarzKltkupw+rmX0SZebrMj7CtDIL1Jt3dyvdXfp
dyVswazxZVxlX/QZoCtBjXXVM+nqvrorcmMD5eTP0Qe9WRf5JpsvO+IesfjjRpfWRdDHxBEejYK4
0uc32aoHiyAsbYRtpCxEpphPKZ8IRSz4AqHR+2tryM53cWLB0u8WRhOMJ8IaY/4GE0zOAPC6KKuj
uzAeuXmR36+K7cb6+LGFMaBYYO4hW3LXsXEgfFsI7Ni+kJ6MAul6PBiNRga55X6NP2vrOssTbXlF
UU0thhCyNjop8nQzGl3fbyq9si7ySt+WWXVvvFvppKqR6DwGL6ajkV/GmzudWjd3pY7TAxAEWLLN
Oq6SO+uvrd6Co5JiNYnX66WerOIst6v6htEo/JbotRHaDXP4uz/z3GDm+n54fW2Nry/eXIdvPp21
rje5cYj1r+GHy9nF5Sf37QXcFAQfzF1xZaFvaPczn8fpXOtFS8IlGNTR6L//cHUdzi7f31xE/z0a
fXpnfdC3cOXGutRxCcL2QqYj235tjcx9s9lN+PvNUWXstGLEWWI+2A9fcMWNp/+wLKnUr39apf3t
vPz6zbp+9y///W8DRTUavVkW83hp3ZSxidZ2sYDcHJf6C2SGtpK7ssiLZXGbJXDNLoBn0xFWjAnJ
GOiccEkFwpYfXerqa1F+PsL7X42n5GKxUKmCLBLa8iFEVZbfWqlexNtlBTEsPmfa2lRFGd9q62tW
3VnrpujO59s8XWorOxT8D+pHwoqMUqM/g2hHv9zcXPk1gOud/g2sLXVV5D+mijq8o+ry+ilVoybV
IcV3uT+dPjPXoShaK/+Ov8TXSZmtK78odQdZnSZiQdIFktZvN1GtyHphUccauxvoSyZ7N5NkvZ5S
Qs9GuCP4Nz1/kGgdC06cGGEnNYKn0w968Wp3w3R6Xd0vtVd8g/YWv55Oi7UuY7D/X+PvXPrTT2eA
TkprDNdM7qYY4bMROQlUShHVYmEdFBjBzwT3vFsakAxA7q4DoFScjejJOGOw9KCj2TlqTYOgWus7
N2HjpsOXgIIpeTZiJ8HQQvO5Q/swwqVeQflNpxtd1dIfwfHS6vooyExH0bAVGIScyT3EncA61Rhm
ZyN+WqqllECJtaJaJNsGYamhWSU9kDs3+ndxfltDUQR2+f1NNQqsMDobiVNhcCn5EIzEtDj9sP2P
awdA++hqJdCPzkbydK3JoNY0Sz1o0yvtb0vDXPYrF3lUxqsGhHCOMAjgBOq0dEXpPEnwA4Zafp0f
e9mH4r6qyldHWHdlwwV4pL63gaLU2cg5zRsascRZHHvjNyAXwA6nc9hp84dU+PjhLUjPNxUk67wo
li+P7/y5LichH/zUyGryREK2YnRawOYOA755pOhtEacGIohaZZVpH+PkDvhAje/nl9YWSOVtDixo
WeS3BhRm5AFUc3cNSikHQOFTQSFJHwe1yPLMbEPmb9ikxmmxBWpmUFDqDKJgzKAgJ6LQSUIeR7GK
7+fa/BGu1tV9ncAY9rBB/Zg5sD9geioAjfHjADZVXFY7H7yDTRfIfrEtk6aWiBr2BFS12T7ZaSWl
WUxJr6T2MCAYVaPSQbuKaekjyqjjPXW/ZtVbfRsn9wPqsIidxQIlRxX8oEjtKxP2MwodAosT5cv5
Qlsv/oArm+4DHwzrL/N4eWbNmg5pXFqv/gac7woY0XRh/ro0WOpPnzL9dfqnwSPB8L2syWoFoEwl
ypNAAc1OoJ5sA8pINgKvyuwLIDGQoA6L/AI8kMXL7H9iQ4cMrugA6bYstuv6k4EkOHJqTEaUgQSU
z2SgOhGTlrF+DJOJxwFDyzldJBSRLhAmoZNi5zQg81SmzgMQ65m6oeLaujnH0AcIOpqAh+nybphJ
NQWa1iTFTpibp+8Xiw18pyEMeVp8bRKTcyi6jmijVnKwmOATtS6QQFbauWOc5dVLq9WI6/2A1Izh
SCumptIJOU2txhqIcvcOUwnDqjEZNBgzaiymJ6nmbCEkscz4YEJ3ZJNBURcX1BZYbC2zeXq/TCfw
TzZ/auJxWEIZh/mlbpgG9WGiwdN6RAEBm3r2n32GHqCXXZnt4WkRa841gRHYzFl/1deXutqWBjNG
9VzyIG3djEEdcW1pWs1TLpW1v3D29a/mQ+1aReuJ4iRxc8pwY2dHFj1YTJ6c3YxPd4v2Ks6h6ZV/
w0EwOlufYVLPq9lfxabjmL30gai1pTgOB+7Hrdn++tnqtoSG86X4rE3GY7F3zfMF4jRJewIPDuLk
4CD6H5cS7D/OYj49fBR/x3iMYjB+o1df46yaGSYcL4dMT57OSkdShFO0sPI4LzZLrddGiOPsLU5e
vJjg4f7WQUScBMGmtqnS6XQ2w9NpdZdtdskNNNEIni2KcvxwQXN+BlPZtqypxCtD42su/7Ilpl57
hWEQwfsjRbR8bb3eTSn1LMJ7pwnfP+NJiFwI60uRpd9F/BxYBtAPWtazCUsFlGUHhlHaP6n4vonz
BYf5Zb6Kl8si2dnTwrjNM+i8M1j7/Opw0XUFmJJ320p/e/1TG+vftag2xYH9uSUZCLMQ/SON59iD
efpgj8n6j3mVLaN4udH/54Y103EdKjOjd82TtH9U8hzzUOI8mPeLjtcQtCSGHexW/7/EDbJnbGA0
I5s5hZKn2gTDq+rbBDmeNMcv13vr6ixBrK0Oyf6ZyzOKmmGIxUGdu7nPk5t40/KTkf+yKftxD9bP
Z+Oz16YHmIr7sM3fFsW6AUaAA4wPwsw5K5H9Y5hngKMoFf8IuDCvyvurArjw+EfE1dyZqp5pGPeP
b55hGscJqTX93Eqq2a6VztZl8e3+VavNbkHsqwYYIPkxG17+kEt/Nn27Bl4fUsNkOp7NFtu8ftwW
L2fzeKOnDPPm9Og0OuHACHOgE/Miva+3f1yfAJ0oCccPkg7zg1D1Wc6JpIRjqy/ogZLIaZuHX15/
/PDWL/K8efrYnKecTFRSvagHKsN2N7ezqozXQyzlOYLonB4EGb7Mew87TH5GxTZP61Z3zHQoB9YE
U9ts5ke7Cr/W5ZcsgbEuubsqancQTHps4hliGddJWyz8qj3LRW/bfoYsqqEo25Ku1zrJFllSn26J
3r459Lit96CNxQKo5x+9cI6beJ5Zs3J3ZGe+MCrrUwsGbuhuYX3YRwMuS7EWxruX100+zZocm80a
X+B6//hnikhZ/1gROdY/W0TISnYP5+vntL8rsXtKb5ldWltjwex5Vp1NR5ZVxt+mA8/KYWHeWdj/
wELy2B3pYQHPd70ZfhslafaIrE1/ARMklNG+3i8Yo3ksacJZfcfggnkgX6pjJeYWq3Tat0ieQvy0
kYWRWVj0fswCPhJFmDCWYPKIJZg+tsAeW+BDC0ZJtm6tPDwQtsrFsu8umHjMqW9JhmICskZvd28H
+Fcfmzce1Cgsy6Ks36LYvQNxuFOMbkx3vNyu5vv3djAbjUZelsflvXWxim/1Zjrav+nw7fCSg2Vb
7S+5YuBo60Xv3GuMzqxXPIiECKLIph7CNg2lb7tMeXbgMOIjKZXvR6+//35RW52I8TEG+LLGAFW0
O0K/0Zvq+i5b7UqrRuMIpiJfAAYcBDZ1It92BIls5YfAAH0hQoSG0DwmtYeLHeNSlJsk6+Pars0r
P21oSvLQIyiwMQqYTV3ObcXMnwEKmSIeUE38DGhtwR10c6i1PjrJWGK89jj7GgvEXsBN8AumcvoC
gGKPK2XegCI1UI6p7aoQ2Q6lXqAc6XEshoB2JU/q42uzkZzv3nvanLu9a9r4HYWPox7LNK1LuH+q
PoQboot5GClbUekZByNbeT63WeAGAY2IE3I5hLuROIy3WWvjTAQ+ygKMYCQ9xvmYg10YKxyfYjtg
ockEIm3HpdymUej5joKsiJxHgD7u2d1iCyooYfQIqkh5POjS3YOKAbwCy4D5jNk+psKmQUBsJ4hc
OyQ8VExI5Lvoccc2cp9yb3PFqEFoerpAQs8fkO+/lITEDJLZHJBbYyrQhBBTWIpJQaHSfR9BG8I+
VL/vM/PunELcDxnCAcDbbkpTS+fm7pYuRQQ50gVfCtornA96VVT147Edx9tYYzIx95nXZKxXHlEK
M+ZAr4lC8BL2bY95kY05FwxRh3BKAUbzOt7522xeQg8+3z14ivbe2Zwf6xn23fF1XasWcsCqhayt
Aj8sY5hK9gfMYyn4hKOJMu6kLAwE4jaHEd2mgmHbdVlgh35EsQeNweeo5c6G5pz3JPagqCEo/cq+
8X1rjBuPAo6Ih9AvA2o7HHoRdSS3ofeENiG+p0IMUNxn+RPEDjsQFjowJUHHMCXtV8uvuoTdtIDo
0wNW7DFotRDskLsQexUS8BkXUCFgAJEoIqE6xtoCuRc6jHS/2oHrkOQILp07ZLGg/QHhDbCAuyzZ
GPcKhGrYDpSPrItbceQqaiPqKpvSALqm60D/DHwusZRB5NEnobcVDMNvXzHqoqVDJuh9jjbPh/3y
fl0V+0wF/LLOVeN3h0pKiADewTzIVQcS1pMutCewCLtYkcBzB3P1WHIP2OIYWKIOwL6tlmRC9pCI
M8EGDSgLhC8CO4hg76EE9kxXEGxH0AGCKMDElbiFpienA2DhHFev+bKXi36RFDH4BPTDtU03NJxL
ukDACOwwNOJQvg7E03UoZoJQE9XvxBNkPhZIWOrhVAM4TcnI9hAUb/aT+JgSuo8ew5EpZGiRHmQd
jXBgey51oXQwlzIMHEjEwej1pXYhzdEApDmtXWduXme5eQC9B4QdWaNBjpRcqshGkWscB/sdcDKo
ZiiBgPic+L7qRq8rqQtiwQZALFgvfvE2zYrJNs+qzcQ1nz/mhtvgCaams8AvAEal8jiUux0RDNsv
gdh6ggDN8Sl1JQkk4uTJiB4kD0f1sNy2AMZ158gC+HK+j+xf27iM8yrL9d6RyrBcFBlyEyEb+arm
Ntz2KPTEkEmPciUCB6nBmPbldcEwNQCGk547L3XlbmFEhoIwF8O/piqFA+Q6jGxOGdADBY6E/hzZ
xPNc6Ss3CiR7zj6yEz7sw91iBzRsW8egOekTxWKt89slBJ1Mdptf/cG0ZuIYtu3Yng+UC2KNbS+A
FAhCyaHXRAD/6cC/B9Fv3g4jbtY6gIU6rhz4ku5DXp81XftxcneIOcbOhANUAn4NZODasDWDk0Po
xq7rRnbkhUEIlCEIffdvQ20uz4BaDoHompDgYxMUmve4XAJCtpnhb6ZvUiHqDqAwVYKKyHaRKw2R
lLZyYJbkEZdMQlfwiPucTDEQP148vhd+vOhgVngguRXu06N3Os1iNzHv6GfzbGn+J8eOLUnHTD88
FEBDuI0dAeAFImYO98GMEFPiOY7ynk6WY/nDFhxf17NGD1hDwJp525q3cX7r5vHyfpPVtEQ2qW9+
Gz6lAoIxgcGThmCMgk3Mkcy1kQp5wDhDTPKnWx4oyZL6cPFpFt26pw3pkURsXdExOmb82OhY9Lfr
i+QBDjQpVWef+WXiF4Rh4IUC2AIF9uXBHgT0hdmEer4LM5dymPOc5GvrGLaifUXXiqH6jxXe75xB
Ft/mxcY8GITgm7Mjf5mZt5r3zQCZ2DHCqCegARAcOjbl3LMdn7tA413z5jOlniO6++jTcjsQ5+mA
oxPW31fTuIpTbf6XU1FuknoMbxKMCQMxVAKLCGHDE6FCoOhhq4daYUSEIgiwC8F4jq/NG8TBXs3j
o/nRZR2TUjrg9VThAwnerjcPXJNRPjE0z8FcMZch8DLMZpSGCrgmprYPIwdRDqKyz1bacroAFBkA
EM8PhKlhW1m+OJBwJqUhccyMaa7rAAUPbMECQ5aEA0ACZQvf9VzmyShiwVMk7kFsGxTX8+NA84Vh
4Iv+dFM3pMPkKCnQJvARMsONOZoImGnmkfIMOAlNkSAbmmGIkSA+oei7w00t//FuXi93sC8cNIA9
QQOTmfvJ/yWwxnyiavQcKnDC6gAz2D497AOHkgjmMhSBX/0IyghxwSiDYZX5z92Mai2PW1Avdy1Y
HG+jAukDE8ighXxpJWWdCIjDvmkKnbhQ90IAQ43A1xGRvhe4RHih083IjpRRVxUb0p/sU/Jd/XIc
PgxgJtbU9ZEXecqWIeQghV5qu1hyW0bUYSLyGeesq78jpac/HdC/IHv7zUPDQzEomEdNB6cwbwoG
IeIqggHCgSJQRMGGHAnCWRgyjMLBSmhJ66JY0CEUSZ1HDxWUF1W2uD80YVOX/8vbtfXWcSPpd/2K
fQwwoIb3yyOvHu/Ga2eUZOZtcC59bK0VyZBsbzK/fqvY59Ls5pEOFkKAga1Rd8gqdrHq+6qK9Miv
krQhZSGB0RjYmjICtaKlEKCANgtABCbG57bmdOCZYJ3lEat5xgxtC30fYtuKxyW7RkLjufNKOkbA
C8OXMjzgQhViYZFoLEmGKF/clTjweZPGp1etdB2LEjs5E/nmj9/WDwfkgD5FjrtytHADBma0QlTr
kK9mYhUsaggciKwCH9zD48st2UzS16F5pVVkt1oqAih9pkgPAPmfb4B/G4OQ18nqvYHzuuyAU1Bj
wctECIfAlSIp2oYYGPc86FcHWiDHGSb6802jq6NLDqqdOOYwn1b32/XD7ydHAOH9GtPCaGQ20YgF
DB4QQrJqZMpgmcpKA6QeuOiMzrejNZJAPF5KsrVz8/k03H1BqxHXooIN9AoqeQk7kdAQgcQpxHXJ
ANYA3VRMRRb9grGvHtfnzGTy2t9g6v5L+GSmjOoos3ad7fvr7XZ4QI0sxlY37l/mPZfAhkgMyPGL
xoQEBH/GpANwDk7QxRf3bx35/Aauj1up1x3D3w6uEouT0zqWAwWjyEyBMjDAIRzwCXwEkQqEBWVr
icAIocA4snzOCf7Ws4ahJ8qOzhbw6cswQIB5HDYPH/GMy/QrYsxnFf/Xv3ErZuWdpZ4UiFRE8KTA
sWTw2yFpCugUAlh+DUO5qVL9vSdU44Hmr7Ur0AMIg7IzeHYcuRrTP27LLaYMRqDGKAOUhoo7oRyH
kBkExs3iE7EmJJK9FVEAqR0ryBchHZzivFHh00aNnVjmefVOqYOD+fH2flg9+ruPA0x6ynloXl1M
KRnieiqkUF3AecK3A1fsCQRaEwLGMZ6ed57Aou/wpPHw4lf7PmxggP5rfUFbRZXuKapn36vjzcGp
4t6XWBryKSmThCdMcszyFDDRAjAnA2GyQO6ktfJ1okXnxak+huqlPoZut7thva8cwK5r6gaw1w95
56AiVSUBF1BAoIQEzAoGB/gDIJqV1ovIzJmqQTtqK9J2mfgwjPe8aqUMb98DKaVjDUkah4LB4jqO
1cNssORl0VdlYHYUIogDZqWNK5fRlbfvXyAsb99ftXKuOsI7NRN+tp9/9P/d2c8iCBWVFIC8I7gv
IWBlaWRECl68ZCl12fV8I8PYz2xkeNrK7zr2wDb0SKL/8pfV+vZoC9SMJJrzXIIA9JMdSMoUYgRD
SbbMx0qyIp2R6Mk4rQCdxKPh6+1BgPJw//XD6vFpeDwBdXuNAIFr453PkkgmIEAxxhEgCBJSSdFp
pW0pfx4EOxy3rbnWudBXrXIdex8GswSiY7/GtUMrkRSAJ9K1IiQDZpRJShZsXWLdMQJnjNoFzqmC
vZheUvtM20bcP5uKa6vDmIlrV8LuhkVCwf8SgVMyeT1WSvc/ocxoxw4Qv45YsKKKExc5J5Rb6wFc
xrFEdBkn/yU+w8h/aUrTIKfrCb898OE3b8vRrMYUV8rFslgiIM4CooYsiEtKABuH9TXce83cs8tb
m8POuZHGSo6TT0V2fLPckY4PfFYZHHuoj8Vdc+CuykibLcA2VAO5qyY2MEGk0pwBmjfa2Gdh22Tc
Vq5hSaqdEMfS7s9vy3wtgSxI5xKwZ+k1xPmImQ1NSRFGFgceW1D5Smt5mv2qlW/XEVrqSaH8yy0g
iX+dWs50JUFM5FiAZBflsPblgbFq6ogJRjCpaAkxnauPtwO24ijTEUcdM4abaYnIIAp3CuKqB9bM
fYDdrrgiLkN08NybCOzVSnkm5PYLPQ5wYUcEIzv5wXD3bfj68IB1wVN3CSC3CG6XAwYA0xI0gkAJ
vBFwQ2wagKHYy0HqOPL5nXx8pZV+6GwOKd1hAf2vpVZlj4aoWQ1YDBhCCgW2gaOYzyyBOG7BMIG0
C511VukFp/nrqev6AnNs5bhqpV31VJhnjZ+GDZ5qP2bq6n7igXlw9iTVGjFQYBIsGIPzigdposg6
PLe3mzEbofSqs08crmuTeYUBvtWr0PZVAQVM0BwSB5lnpbDsxC1mX7nTQEwC/BFYEIDshZPPN8Tc
7Ec/w6v2T69aETuL6Yw5LObsPPAPCrAWOkqUNxpwTlYZopkH3phMApvOEKNUAk8VgfE63l3NdtBW
nk5bh3OrUyX4E/CNp+Hnh8/D/e2/J5gGAY1x8DUB1MCuws6caCwYaUxEakUBqGVt0ywR2x+ulaiT
v4NfmgP7v6m3Fvx9qFd0HLJBXF/Lum10icYlgKDwpYG3OEqcVIXE4DnwbGaBDbQSLYdrpFmtltjH
rdW8tI/1wm/g+t89bIc7vJRs4oCUjcx6aQDnYX4qBvA9LFJinKEcZDXUs0uwxHyO85XL6VtXreAd
b7Szc1/6/RZHuy6rzTB2toprMdbP8e/RpwISAtOTHOkLhQ/vYauTqHiWWKdS7qKy2mGGMyh2//Sq
lVZ1VHDHpp/fV4+nLKGgaBRUcGqK1oRH4OwihQS42zJiaJHRKkdFnJnpZJB2cre0zRW3brZ+f3v7
88PD3frh99p3UFfO7okIdlnCdLB9tYc4LXMBYEkzKcwGwRLLSqtXSRIeRDiTKTw8nqq3FsMy1MIv
j2sb3/wTr3y89of1PbQWFsVjcJjHErDMAoIqJpcByGGHudBGhRcw6MuthU20mgkyU2L5jdZywc6R
4T8dSNTNp9XjsC2Ag368fQIKw2UtB8BfCGlY4j4ZE4jBpjHBAVx77tADUy+4t4yzl7OgFxO2VpYz
oaV5p1FfiiXqXevNosd59b8RBn5cXe9vgcTWQuRtdiyAMAg1HDZKwuIWAA7wWR57MywgKU4zs7JT
LZjq+df5DPD0/utw//Xpr+9Wm/c3p+eN+E4t/e26ttw3YGONh5ifjgi4fiUuZUIbLNrDLlchgDVS
AzDYKha5DDar57DGdMhWpA6fhF/OQ0C6ffrsH9e3Xx/3JSV+jfUXvt8g4GaAixElamefUsQbykhJ
OakAKIS+sO1no59pP2hfmmmhO1qs6EyLnxJ6e8bR2Y/Os2SQ2VIASdXkmSSeQRwrlqcMDovqzF49
afHTmRr2T6nVadXxV25h67hbakyWEtyxuNaYh9v/iAQ6JW4ZcE+dI0BtXrBtMDMC9LnAZzZB+ou4
/n6a8zt2Fo1B0o6nctsjcV7/u/YHHoMZJmYh6irJlSWR4tkDAFhACYwmzGDVN8Yg5CyWNaO08287
rsIN8kjufvtyxKG4UNjlUTigeVMkpvsCwL2UEI666HKwyEBnSbTjCM3EK7HsQ1mv1LHj9Penu6+n
IM7GAqYBZMmil4QV8EsQVIDRJSSW4JKCkUzD37MoPhmmnV9tOvPbee9guh0Pcz/+cUqRAzvDTa1o
rY/BFlEUvgfiS/A5LoKHZPBTUMYr2B5GOfl6kWEpzzk3MH+v1d72tHd0Qaixcf7D6n64G/Wu+8bp
2rGSTT3/oFQQSE49cQBuSeCCSeOT59m9BoiZinCOeJ/eaJTc7DomtrP2YNu/DZvVpNKjna6hPhcd
aYBNpUqGuCeBdlufCvgCr0TM0Rk/a21pBmpE2K2XqbwN3axrHhJe/p5uPhxpnhZ1fgWUAMhTJqlg
L1CCjR6A0xCXC/XcwtMXzmi8XqHpJN5Vo8BOdbTaHQls/PXdzYe7bx9v72cnI7HZuXavUoFtISRh
s7hwQoG3pQlWOCqjtJVB01fqH+5L0mjDbOcbse28+cxnrOAgjjf1BJhP0nEjMWeJeQ2rA/FSUVJ8
hFASXCn+Ffe9z2dKZ7nVZbvr6DKwmS546/j907giU5rqAi+quEByqtUJUUgwzpLEg9YmxKSDuiQM
1vFf1GkqxRkTnLzR6jkst/aGS9pJCB6X+P3NyYUbbsdTF+MPGFRNZDw4ToxFZmZTIgHgDUlRBW2s
UDzp1/ucJ1nO9Ovf9Nz2RqyWbht+uZ1lvL4AzJis6PUH/P/YsTtWOHTtVMlWFUMjSQbP/UoAO8Fa
TyIrsDuLczH51/DfH1pZpm/VR41+Si8zURtljuQT9nzrSQxNimkpCJXY2wtYitjCGPG6RK6cVYBY
X8eTHKZu5d0uwedG0+OBqDc/1mLATOgQWGHIjxXDQ/SOakzpGkxIiBIDWHZ5NaEn8zeS14T6QnIx
zwK9w/v1vz5823y6me9TzKzIA0uQY3aSq+I5GpXQDPCZEYDPQlFIlYGaUZ+0v+j0zTPTNocT5q9N
VdzS1ZLtbBmbc7abYfW4+fRf40ksuT+YIMcKIFPOW2yVw25KoQsYVrSZZEwO2+guOi15Oek/CHIu
lbx/3Cgp5NIR4g3my1YPpN6r23v8Jyjk3g/UtHLtbUE+D8CCsEixfohnvh3sqmiyUVEEKdlF9Gc6
zdlWj+MbjSJWLbtMt6thUeI5Xljzg8H2v9p6t/8JD/XE4GAHAXaiANsEQ2rEAGNwD2COcsBxtdjw
zBc7jH8Gax4eX7ViDj3Zj1XGz8Mfv308Jqr5eO7asAg0DkAmXl0RsyNBAMjMzkajWdAgbjdTMR2r
EWLdIVTbtRazBXyD/y7L3gCqkQfpqBAC7DsIBGPGA6cyimCZTmfnHZPPgzEYsb9Y8KCV0HSWaW3n
ElaXFVdfvn7DtLMbzy9XUT2g70KDIdg5g8cNOQlFGpJtAYAuoxLGvkbMmkpw5lTN5I1WR7uMYNsN
U9vtomF3+M8P+c0UfYVicgoJcCSADaRUtVwgSUaoKRhNI/G4ZBeOg5/vtqqPG8E3HT683bJjc9z3
d7dPmzlVCUUzXkwC0IvHmIorxGIDrk0swDZkOUb1Z1GVk3xTvQbeQfcDX/HdcCqmP+LpNrCL6QYt
EIslhygGESNh25gh3gGtZyEHRQ31goZZomM+UiOHkMt7JwbR7eQefv3gyynMYuqmJhyux7KwCVwH
2AHEZ2TeKePVEx7gqnQh0pIYtfxiM4GpnrESeNoqoTuLqbdSq3ExH9b/szlVBnQ9I5yUAgpLDeZs
Mh5oVsQxqoiUYM8laxu5aRdyOkozvenk+uCXq0XTHSYExrPBU08ng9VGANAFNfCQUMbeK0Ehphsf
VZLFhgtbTw/jP5eQmJ8QBkE7FmDX83L1dnj6/PXhy9Mk3QTAfX9CfJ9y8vAdNMS2SAOeFkqA3ZV1
AIK1zipLYGsXOYo0TnVAKPjCmWzS8sWrVotVR7WNmLX/tLej/cCERY0wsSdSYhk8OGHgOcCzY39m
jLUWD2EyZ6fUs5cDNCM3ornNkhHjL+e4okYG7NPDog9TmLC3RePdKJwoxEIic9hyBstaUQiWeWRW
pP93uBmfNaJuXMdAtmJOam/vP09ROKygG/vWsABSjI4F7+0pBo9lgXmAtIZEBei7CBmEeJ0IeX8G
IMGDqU47LpZhZccXtfNYkNOk28d6bPKPqlW95YK5qhYrTmG2V6mMd0e4BD7EMKKyjUp7sA9pX2RM
x9FfzjmWC96fvdRq3amx7/jKTRpUJ7ltPjbB2RJFYsIRS/FIgHSWOPBLREttYjBFJiYX/am93DbM
tOpMv51ngeKnb/efb+8/7tcLGzqwWgV/1vSWKdyqSChVGS0pEGc9cFY89saEEiJcVN6fTXJmLduX
GmUAKC+VETvXS/W057nGfgU8zzUeumZeh8IkpqwL7GcusQkD4FYInANtwLbOfGlD5wWnuhavNWqt
NkswvFsNm5nLbC42/QFktti5xNgeC7AYhS1AdXLAW9DwhjkfgXVzA2p7pnyk/jm/OR2+Fa9zJnK8
VmW3hCtTtKKuIUbxetIFf0CQyIwBg8kkMu3HFivnoiMxeZpt5t4qdTleeRauNGhlt5a0o4Nkxy6i
OuN1OG1ErjEg1fthGFfSxkR0PXHtC62xiGijARaaxGOanWtvR2sEGejSse/wX2TZC4LE/vb7cDpi
K8Q1H5m5Bu9NPYeJRUE5tMV7xmAbYqc9l8GYOQydDdYKYjorMpgFA3t/8+0RLRT9sIWRKvoYf8IC
Bc+K4dUkkuPJyISMhelIpOVc5cI1f+FE53H8MzHk8Hgiu6NML/gt/HJ/cr53aKGahKUc4sjp2AJn
12I8cu2oNKb4TILF2/iAYIHjhZ1UUimUA3lJLl1slnWaZyyzPm/VWeIS+OV2fv9Y/Uckx39Rdni8
OWbs99HRMKQqFLAfD0BQCjbeCWyzDA7+oJKZogPm4sJFfq0z1xnX1nmz1W7X0253bOHA0DneDAle
/5evt3ennkJ3PVZXaPLRegg60mF3mQGnAfTS+Rw1fMaQ/MzuzwzZiMUpXYql18Nu0/a+VXr/Hz+M
x/RtJQ9WlSAZx+SfwGNEQiAYxP4SZ2iJYEOWvhrVHbO23dfGZ41WhnZ2xsrObyCohyyPTWm9CxR0
NJFrhq2SWqHTY8RxoPPgt6NP2CRdnt/Y0yn64k/fuGrlZT0l5vfiLA4qjs2JeK/a2Gkz9tro4Knm
jpIkAbMIxSKxpjgSNOgAGhZ6WczpTnfhEcpZ2yJqMyxV3NDNTMVf3k7uyt5/JynGS4u8D0FxbUg2
2FmPebpAFSNZawVbwqbuF1rqNZ2jr870jatW4G1Hi31aHWsO5Z9ja9qs6gEoRQTsEKB4/AkPFYCX
KpKwEKkTxRpjXunSqJkErfSsJ71Zz82sShEf7ne3H789Hj8FkyMNl/UiUqszBWIY8PIL4SXe3OUV
KdaVQDNsofx8R2BnjnPXAyxebHWyHWe7cfP70t6t7j8+PnwfpilHniwECI/3uUTYJyFA6IhaExZL
otEBPpOXFWz2Y5+p0+yftlIve7wdHdbH+4duN9+wP/OUTlKKXcP/arrAOheYBJpr8UwnbHJisa+3
ZOFYUomraOa3jzSjXbWT8p4k8/U7OfAxJwP/weRX+Jva6C0Q7mIdFRdU49GXgidhIhhEAGeaX2qV
eyFMnJ5PdWCs4z4Zc/pwe0h8U/9xSERVT6cz8+YaLxOTBsIZFoDBs+xjrQdwRBIwP8qlz1qwPyO0
tZ0bC4EbfcXy3kf45cbM6BN+8693R42twIoXZq7BtpPPwv5fcVfSHMetpO/8FX2ZCDtiioN9UYQP
WAoyLcnSiJT93lwYvVFimGxq2E1Z8q+fTFR3daGqusn3xPDwIJG1AJkoIBcg88tKEMNgGlEEETey
Yk4545XWih3NOCsaLijTw+BbuChEj7INFoXfJ8q0e3s1GKI0EF7ZGvMpMAvOJZ4qp4SVKiVM6TtG
WKfdgqy5GBmwuTC9oNpVc7y1/LpZrrp74txIHDqOoQNKEStj0JWS3GLiMqusrOtKIBSOTCoSehRk
YbyPHrV2SG0OydFDRM3N1uDIyUsdA6eE1SS1lT4ApeCpcKtYZVQIoIyoCEk5wh8JFOg2fgRZc8S0
oYshgI7NgH/l0BfR6C1caePme56kS6FKCS18jFE13rpKSm64UgmR5h+brWXTBYHLEbOYLmnfMHm5
XC0b9TO9Od/c3WcbuQHFZrwx200wjCL0hmAWwaw4+PqhThVuYVmujQz+STvTI10dOGMcPliyJsQI
a/vkxVsQOOs2BBB1Sy0stR4WYLQ+e/7ocQMfQVAZrKl5Ir0Y024bZefDM7V8cScKHlbzPapwjkL2
tLYgeYMGwy4H13qh0PevZe2VNekAplTbUK/7kXk3zPR5nZG8j8VGxWQdYthXRIGpwMGyrpwgMP1I
HSkLIDgfwfv8l+IgSnoOZTh1n+lyDaJ0aA0xwvoW3hauZf1ttfm0LDAgcQ9rG9jS/IJnbjQ6goct
snagLpiCBWioqKSNnoFhwpJ6fojKxqM4H1I4dDvah4qhYENU33xxN/lx7Xz8Vmgi2uKJEbBoaUA0
PSERqCVK9MAR78zhemDKsJ4HPmiuR8x0jJh2MbyfLq6nqw4lTTp2qiU1JDI8h0WkTA2eXALHLiQu
mc/bn/yZ0rFLCnrED5cSU6wV4a/dOxdeDTBjBGPc1FFUymOGpI3g84AGhyUkHAnMaEb/rlDeLoUF
a3oIXAwXeftd3q0+9j4Jc2jQAC8CwVTAe7AVrAVa4VlZbR2Nmstn+iRt5yXJQ4BouGjsPuzuQz/i
OGonEfmM1zwglg2mb6HzzMBupspbG/xzhdx9GKPYjEx+bdtsh7/2x0GY/L1FruE1OGQMtCdoHRA6
RoMvQVAAG3A8oyDahXIF/jVyHIT9jEhEPW2jKj9Pbzvw9viFA5gZFNWf0WAy8cTwkARMZBEYr00t
ZaI9Hdhpo+x7xMuDiy224/zu87er65tOiGQ+fBJGcewaLF+GIfgM+gcvWwQlwTHFkrrsAJJBt7mC
kulwE96C9CE9qOJCVTWnoc0WE6Vc5TiM5pfsPHuwyWwGCFG4yRQrT5OAQYuGOqeiEuT51OKelmMH
yv1NJ5BbI2wvKB1s+bei5u4eZ4HcVhnIv+SYfeqTZqJKBrMiPIb6EFWDp0jgoyBMqXjSjlrR0aH9
/84jJTNDuGmE+NjDEPzvzfVmydu5TFXeLoiBYzayxsQczFURCdwAUCRKWauZRTirniorGuqSAEpn
aNNxyfubBf94F7Zftq0bg7sDNaOMwWRJCc0IKTGADaSSTZEnrrwgT9up37c+PoL7+yXtcjgXuF3Q
EdCq7hbkFsyHSbRR8eQnIba+TXWWpOBIcXChWaS4HZkM6IRHJ/1jm4/lMwUP06sRHmZE7abAH19v
FoePSz23MAcsBokn1MegBmyGgvYEdJqpAx33o/atFsTMxibDjLdozp+W17eL6U01Xa/2qJUyb0Lk
3SJraKwF8VVyqJsURvzVWLIgGIdxZyBYeqlGwxZLgoZBoBZUeT+rbaCAm/T+PE0bHe/AxIsSMyAF
6h7uaGUFOkUBnBFtiGXmO3T89mZB+mKY9Wv5kvQXVgffRYB1nvM48f+rXGOEaFY7XleJYVQtw1w8
Ty0WM7NBE6OJpI+cTD6C8tJ54KQklI9Rr/oAKVvU0SGCKXPKwOwMldcG0+eJBD0CQkKqOkfi2uSP
bkgVLXdJE2zEDRQ5GGVWAhYUGY7Z/ZG5MIXXIJlA+4eE5p4IoOFw475OUSNYPQ02Prvvs6fmEHjB
mPMnRiJf4OLVbLQSS8bewt9wKm2h+fB/3ARwOorEPXi8YPvwYGgjKIIBsx9MXxIfCThq2z4C+4W3
C+rFMAAsX9wnLG6mN5eb69vlejPd17TJRZ5ORXOsHesaRAfTFWafNvI5A6K6GgR48HDxaSlcL999
CFtYqA4Lh4josTGUikJf9ePYDqoYDRI6wgqoiEcpXXNE2gSLnaJVqKRTwNTRwT+uXsJ/jasWIJGO
0c0HCSNzLL/5+z38OZpNQROYp+BtVJg9gmH1oCwF/BMVGBpagGX7tADdsqODAEOdZwp2jBya/cLK
Vjn98o71HDudomKcYvqfR6hunfDUlMCfNKgaRH9i9Jkcu7bzk5K6ofoSM9Y/yf7vh+n95q+tWd7Y
qQJDIvLRUIC1q0CbKo7A9F7hoS98BgFCLCkws6Q57untGz+AP9DeL0ifmREpO5t1Rrt+2Rtuw1zS
KoLO5zWIfIwuh/lWV4ELxwxGcof0bMO9670kejY23vMWc/7mr9vpqdzvDaEfEAiHuY0mC+Jr44mn
Q/FIolaEIyx/qEuTpdtI2ft8bMgWfZSWo5GhnDqlXZSVDBlwm8AY4pAaRmNCaHlq1fdGhh6K87Ri
zkckxhyz6JrALqw+2RqjuwqWiRLuWfJV5AZMKxN8ZS1zVU2Vj8ET4ggfh/D6NmaEQn9yhIhpfxh/
bizHMiReRhCoHD6f8RjlCVKrMkbpKgUBGpAT7Z9WG2Xb+CFI8nyzJHo68u3nMzms8ZXOdxW+mqQ8
I5iTXKiK5SPrxBiCC2IxRqMcJaD9HtEOuc2Dhb3SeUnnYmRwwVTtDe675f3V3f0t7h526xzt/D6i
YzCRozWHiE8O/A7DI0JnwATl3pnAnpR5MNLNgdTa4YMnJQcjuuEKNwWaietfu/PBbqYXgWHVi0rm
xBOsfeg1GBnBCYyFYCBn1d+0m7mnr2DraljUEy+aY2nh6bz+gpBEOf6T5/jPbIpsf89qUWKdSQz8
x6zWBHrFWW+qiDXmaE2tts94/LGj58CD27s9tu0Y29Od3XgzXX287sTj5PDHEETCzBEZcHs/68lg
YBmBuSVpisQw1pPjnVa63cspGRrdcjpItAU34LxxUkZsJsm0UowSUNZ13ubnmBPtMcSUOOsiq+un
ZqBuOzkYjbm9X7JAh5a3nOHp+KCIz8Xy6wakuWx2dYTdnhC56GvDpazAb8CzO7BAnAJXKSpBo6Iy
1E8oc4JtH3YY8G5B9ZUaOp0yw3A06vseTICbL6d27yggoUoSL4OpqMW6pQrsbKNgHhDPhEKYJ596
e7tlMyUFw8qXVhE7SCMHn2HR1IYh2+JvVrNTjhpcJvDaQe1hQD7WkKTg+BLM4wcX3hPBCBPPiKOx
o+RQtbvm7knBzmx4QKJAh/d4HAVd2G0d541joRs5Kl1tnFO+CjWxmHELchRrl5AEi9InmrR+foe6
JecIFkPfqAUuRz5vTki62uKcr28uF99W09vr+T6C95Q139XGjKCBpRGAS8kqA9MLmWbAKa+j6O1t
DVsriOFDyAK8yHqq+Ovn+el2VN5MV2Ag3y5XBchJRAPRgfKqI4oajFzxMtqqBuuV+0Qo9fIRyNde
64dcs95jPW74CDeqzw3WC53fZCC5rdnW1EwkOnmDiV64/w7yMkVM9AKLohYgaIywRNeP2r3hSLXQ
8Lokd5h6aVWOztWDspXHY4zR+kkenB60gjhMMKxADWan4CSnNISkHq9ceTQQp/tEwUSOvx0wsZQ7
efmw+vN6tTfYZQ7ISqCQhKllJSJFD8MiALMUFcazJO9rSwQ/EJSxb60gw44Y7MrKfb3pz/ORSu0S
+ufM1BWRiLwWwVs0tgaKtNSMwWKjJo3S0TZXEqFHxgKE8iCArhue2tb+ZXkLOwdWwSLSMdlKGYIR
P4gjE7DAOFXKGJYSSel4aNKggx6dVyN0mlYEzda3HXi8DBJXI9i5CJUzqFWkFo1RIaNMzgfNLOul
7nTaKPseAiNbNWXDsoQ3d/fn31ZztGvs1lVpEAswp0/XjFRKYj5m8OCsxBwpzC3cMjEZ/eyivqXn
kCmxvV3wOoLHhxf7Na92YNqfrnfQDBImM0YF0lr7WjJwZnXtYCJQWCd1cBWtawb2m1DRPAug0A5S
++ez45DbP5/1+BtZdFM1VsVuN9A5AHWFLjOeI+UUfPwfhVhNKU3EVVFjESMNgtchsHNI1nAfQQQb
/+RMwl5vR5IJe08W/C2GOAd4sT1oz2W23vRKuG7rOUtFosbcJ02wcADhpLIq2AqkMcxSWN5Oxeer
51xSUTIxtuAWi75SjMvZw8cmtRLdtpxuSHOuIeNOsCDBVbMCPozRFDQiCEkRjHZCESKftvvd7eFQ
Svz+iYKHJRsxF5eqrQ0zfdiXKaJG5ZJYGOtLUiUolvBgjiOqpQM3OxBhvZIx9XP8HkaKEkEveti1
Jqw/x6dfrjpb79vTaSIUyKzsygjqYyQ8VVIiFFo+6keMT02JEkZ6MF/9d9Yd6D5xUlCr5QgLerED
TNzl+99MN7jB0epJsXMkmXWWyDpVSmvcn+QcPAnQAypwZ0wQHhyMo0gCRcsFbYjKOKCN7Wv3DoKm
dQYSiWD6wgrC+m4BVYDCgrS8QuBcSgMWT+ptmB4JjIbuhmJao0Vejs/eGgc/Ph+BZ9xYzXlkmEWP
SD/BB/iuLIAdHMDEUbVQ7riqHqGH05Ex4XrWMyO2Id9tKofh+/JcMDjo7lsWA5o1ukkL8sbaqDCq
JNAnBJOPkabnI6RdkQPlIa6K46hGs1GWwYGdEwlWRKUTIj0SBHetEZBTeSAVZEwi+kk1Ih5bFcPn
SoaGxUCtFnhCXtREXKzW68W+MIzEz58TlgjNtR5AwqBdhBm7HmZfJbnB+jtKU340iLzTbkHWfDq0
JOFim2Z9v7y9+7LsBnmJHAsjWZ24rSsqIpawhykJC9dizR/pAkvGivFg5357PWJG1sdC9qMIZtP5
Hw+fCxgNcKzEtih9Rj8H16TGKhIYMAIqHgi1CsjzycjAJbgE5EkbUr7XU/d7N/dOSlL5CP3W7FwU
LNL1fvnxer257xQBbqqEO00iGJdYcQfxDUR0lQ0U1LjwYBsYUoND//9YW6wku+Ta2hGup22g8vln
rEs2uimtkoQPRDAaDat0GRErA5+u8oTLIOpIvf+7yjL2qSxZHIlM0Ist3kO5U3aDAFs5sgX/yxDT
koKYwVqyCM+nYRo6RxEohEQejKnBpXzEZ94cMizzrS6lWP54QClePJgOd9qMSwbcwPe2f/ImxskI
Q5nESKtEMe+TqcposCswlQWxLkPUf8upQXOv4NQOUbCtmU0XIz7BNiOc7iAiuVJYuj2fmmtGvUM0
f0qw8DaTMAMtq4KMOkg8kXL+0Q3MI2lx7e2TkszlCO3zPvAj7h+td1nxjZTLxxvbNHsOjnFSGOTP
sSwKBeFhOJ4CmKA90/iJ/HM4bUVy/uFNp/aRktX50Cswc744WH727G2G8wTLdhuwqy2aG1lGSmIz
6rTFKs2cemDYBo0pHU47mI7A9iMRYgcROvOtk5LIkY80l22genifzh+uN8ti/4Jo40WIplLOBMy2
AYuIeVeRwBzxzhsXeK+iUtFMScFIChJePHIiNpYBVGMp5RBZVQd07plg4OazWFnprRLKS+3Nd27S
d584Oam/bn3vN3eL66sdpM/5w+0tNPwCWAzTG3D+bqeL5WT2bXK3+bS8n3y+v4OX18DCZnr/cZmn
/ObT9Xp340Uems10/cclmPiXn68XLyYNKkcDH3Y5h383yxcT0r24Xm4u15v2etnxY82T72se/uhw
BSOQ+7udzrGG1lh/jKl/kaOT395MUDV3hxdLYb1d3XybILAH3rm7mrR+/IvJxR3ojJ8klafizeR+
ub5egDv/E3n1A/mPHyfrPzEUaXF597C5BKoeVrk2I3S22L4BPgk8d/I7WLrT2c0SGsDO22bpKXs5
+RNughO0a/NIH7tL3X6wiW0vk8z38Z/fzt5ffHCv4bf39cuzt79OTrb/X/zzXX34tfOz/8l3w9sP
v15Mfljdrar53fRmuZ4vFz9OTn7a/xxooL27++XEzTfXX7BU3cX9dI6zd+SHEWFetX9MTsLLyTqj
HUyuUUmsR7uiQrTvCHgH1tqHs+aFCVrSo++wop+4LSAHUmMFK+shr8heb8Kckjedd345n/xydjH5
2CRpAonzu8VIX/t++KF3fmgSWHFkM22n5OW+n93P7pkJTOnpYoFgnBMgGmPwO9Pjx5NXGfVq4vDK
5O1qvhz/PgVZb9zr12/D0XmECEl8xz5V7TsfH6b3i8lnHOuxH87afvTk5F2z2ifwiT6vl5Oz1dXd
o1Pg/MKFV5OXH9z7eJA4MCX3n8bAOxtwPh5ZGJScqu47v725zBy5iyPLYiJIS5ucnPy+nKEyfpOH
/1A/Hdo4jPXlZXQX7jhtjLbvMLA64Z2zN+5lffwlWU7py8vXZ7++qiNMt4PdKLMfg6afi/ofF8dJ
E+pUt7QJfOfDr2fhbTxKHfjDXdpus4Q7uDjzj8oCeP99tnLgFhzk+2+HXuL7+Yb8/Dti6uLtRRaX
xyfPqdkuUcnZ9p3/nNyC5FgXC7VZoJkDGLfdWOd3Tv4PUEsDBBQAAgAIABISKEpMAD+F6gIAAB4H
AAA2ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMy1zdGRlcnIu
dHh0VVQJAAOEEXJYhBFyWHV4CwABBPUBAAAEFAAAAJWUXW/aMBSG7/kVvpqg65YvQpqordTyIaF1
bQWsXFRT5djHYCmxkeOs7X797JAA40PrrrDj8z7n+JwX30ynw8ls/HCPRjfju+EgQfnLSquW8ySz
MofCGWCNneF86swh/cZ1/XNb8ow6A0jLhVMWyskkwZnDBclKCs6rZs4E2Ndl23O9DkqQ2VzOrtGn
+WyUJHZjKH2pIEmm+j2DW/lm01wniVyBwlqqq3Yj+dRBzzN0hY4qfrY8hJD75rk95lPmushk6Ctc
LFt+fUBi7HoxRf+R+h+hpqRWUNNp4AbQY9vqbMQHs3xMYrN1d7LhKNpmm4CgoKr4o+idc8sJaw70
IEzjYJ8zzCAHoZOkAF1pToDO94Yx4IyBAkGg0+o1baeBf0EvdhojSbmmKzBeIXsJ6jv0l1gsDCba
YsIoCo9hiAKsYV3YTAG0O62LXRU5qqKc3gKROfRLZUrWzclYjBTOLSRumu3SlBBvC6kCquY0oo1T
HrW6PEhWjc5z65LA7ZKYHZY0V1yDSpIUFlxs+/FjcoeIFIU23U6lzM4PlWeG7jUXTuMuhcOYO4mp
pZsb51xbQ7XJEqs1+uwclaLgCwEUZVIsDM/f8twoOM1jXPBiCdTuuVi0qSzTzMzNCzYAIMQ/Dcjx
ewp2M8xX+t203etuleB5p5WFxkrXeb9jLiZQyFIROzovbEYHXRz4e6NrAKZ0bYN7VbDXwzFjLjmY
cxMWbcKilAH6/GwC114xi7EwwxM466CXtR9tRdXpnOvlI15Awuzu3iKr1ROH18S8Wxc1NsWUmP5/
sVh7ZqmPiv8yLAs1c5NibErhOOO/seZSWPJoA10oWa6qlYHGGyhEGE5B7c02kJ36dlG+26BSGtF4
i0IfUte+DI0pA/M8rntTE24EfWCsMN/A3EVQ+Wra7PsbBXN7LqJlvtr5b3Ohz9GOc433/aBRgAfm
gR/8pbBzOKqqbRaGXdaLfJSbuJZf+SZijMVdEnRDTFHlstYfUEsDBAoAAAAAABISKEoAAAAAAAAA
AAAAAAAfABwAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL1VUCQADhBFyWLERclh1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgAKRIoSq5cDD1eOgAA0cIAAFMAHABhY2Nlc3NpYmlsaXR5L21h
Yy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby1jb250ZW50ZWRpdGFibGUtY3Jh
c2gtbG9nLnR4dFVUCQADrhFyWAgRclh1eAsAAQT1AQAABBQAAADkW1tv28a2fj76FXwq5CaU5z5D
ITsAr6l3EyeInbQHRSHwMrKJyKRKUUl8fv1ZQ0oySdGu1RbnPGyjqGUNuda3rvOtIfOhKlO92cyt
/k+wvVt/1EWmq+tKa+s3Iijnv08+xPXt8FL4Of9crrZ3enP++f3bT+/C8x/P+/dPLjJd1Pky19X8
cS2Tz7ra5GUxVIAmfplp6/p+rftLvyphC2ZNL+M6/6rPAF0FaqwPA5M+3Ne3ZdHawH6ffNSbdVls
8mTVE/eIxZ82urIugiEmjvBkEsS1Pr/O7wawCMLSRthGykJkjumckJl0lAVfIDR5f2WN2fkuTi1Y
+tXCaIbxTFhTzN9ggskZAF6XVX10F8YTtyiL+7tyu7E+fepgDCgWmHvIltx1bBwI3xYCO7YvpCej
QLoeDyaTiUFuud/iL9q6yotUW15Z1nOLAkpro9OyyDaTydX9ptZ31kVR65sqr++Nd2ud1g0SXcTg
xWwy8at4c6sz6/q20nF2AIIAS75Zx3V6a/2x1VtwVFrezeL1eqVnd3Fe2HVzw2QSfk/12gjthzn8
1V94brBwfT+8urKmVxdvrsI3n88615vcOMT65/Dj5eLi8rP79gJuCoKP5q64ttB3tPtJkjhLtF52
JFyCQT2N/vuPH67CxeX764vovyeTz++sj/oGrtxYlzquQNheyHxi26+tiblvsbgOf70+qoydVowY
EuBXZD98gUkGH6zfLEsq9fPvVmV/P6++fbeu3v3Lf//LSFFNJm9WZRKvrOsqNtHaLpeQm9NKf4XM
0FZ6W5VFuSpv8hSu2QXwbD4RzkwqJKg0ePzoUtffyurLEdL/an0kl8ulyhTkj9CWD8Gp8+LGyvQy
3q5qiF75JdfWpi6r+EZb3/L61lq35XaebItspa38UOp/WTMSVmTUGc05RDj66fr6g9+ovtpp3sDa
Stdl8VeVUIf3lFxePaVk0iY2JPQu0+fzZ2Y2lEBn5d/x1/gqrfJ17ZeV7iFrkoLHGV0iaf1yHTWK
rBcWdaypu4EuZHJ1M0vX6zkl9GyCe4J/0cmDROtYcMIZdIDMCJ7PP+rlq90N8/lVfb/SXvkdmln8
ej4v17qKwf5/Tf/k0h9+OAN0UlpTuGZ2O8cIn03IaaB07GixtA4KjOBngnveLS1IBiB31wFQKs4m
9GScMVh60NHuE42mUVCd9Z2bsHHT4UtAwZQ8m7CTYGREJYlDhzDClb6DkpvPN7pupD+C46XV91GQ
m/6hofEbhJzJPcSdwCbVGGZnE36at6C+4L9OVMt02yKsNLSmdABy50b/Ni5uGiiKwJ6+v6lBgRVG
ZxNxKoxESj4GIzVtTT9s9tPGAQgPtBLoRGcTebrWdFRrlmceNOU77W8rw1P2KxdFVMV3LQjhHGEQ
wADUaRhShdMUP2Bo5Df5sZd9KO4PdfXqCOuubLgAjzT3tlCUOps4pyFx4jh1lsfe+AWoBHDBeQL7
avGQCp8+vgXpxaaGZE3KcvXy+M4fm3IS8sFPraw2TyRkK0anQeRLBuzySNHbMs4MRBB1l9emfUzT
W9j9G3w/vrS2QCFvCuA8q7K4MaAwIw+g2rsbUEo5AAqfCgpJ+jioZV7kZhsyf8MmNc3KLRAxg4JS
ZxQFYwYFOQ2FYGlKHkdxF98n2vwR3q3r+yaBMYbNe0w/Zg7sD5ieCkBj/DiATR1X9c4H72DTBWpf
bqu0rSWixj0BVW22T3ZiScUxJYOS2sOAYNStSgftKqajjyijjg/U/ZzXb/VNnN6PqAPuxcQSpUcV
/KBI7SsT9jMKHQKL0+RTnSy19eI3uLLtPvDBcPyqiFdn1qLtkMalzeovwPM+ACOaL81flwZL8+lz
rr/Nfzd4JBi+lzW7uwNQphLlSaAkZynUk21AGclG4Icq/wpIDCSow7K4AA/k8Sr/n9jQIYMrOkC6
qcrtuvlkIAmOnAaTEWUgAeUzGahOxMRlrB/DZOJxwNBxTh8JRaQPhEnopNg5DYhgMnMegFjP1A0V
19XNOYY+QNDRvDtOl3ejixIUaFqbFDthbpG9Xy438J2GMBRZ+a1NTM6h6HqijVrJwWKCT9QqkUBW
1rtjmhf1S6vTiJv9gDSM4UgrpqbSCTlRraOBKPfvMJUwrhqTUYMxo8ZieprqJWxsxDLjgwndkU0G
RVNcUFtgsbXKk+x+lc3gf3ny1MTjsJQymC2spmEa1IeJBs+bEQUEbJpJf/EFeoBe9WV2h6dlrDnX
BAZeM2f90Vxf6XpbGcwYNXPJg7R1Owb1xHWlaZVkXCprf+Hi2x/th8a1ijYTxUniEspwa2dPFj1Y
TJ6c3YxPd4v2XVxA06v+goNgXLa+wFxe1Is/yk3PMXvpI1HrSnEcDtyPW4v99Yu7mwoaztfyizYZ
j8XeNc8XiLM0Gwg8OIiTg4Pof1xKsP84i/lfsRijGCze6LtvcV4vDP2NV2P2pk+noiMpwhlaWkVc
lJuV1msjxHH2ZqYvXszweFPrISJOimAn29TZfL5Y4Pm8vs03u4wGbmgEL5ZlNX24oD0ig1FsWzX8
4ZXh7g2Bf9kR06y9wjB94P2pIVq9tl7vRpNmAOGDI4Q/PdhJhJJLYX0t8+xPET8HlgH0Ny0b2ISl
Ap6yA8MoHR5PPMNEIEvUSu7i1apMd/Z0MG6LHNrtAta+vDpcdFUDpvTdttbfX//QxfpXLWpMcWBT
7kgGlizE8BzjOfZgnj3YY7L+U1HnqyhebfT/uWHtSNyEygzmffMkHZ6PPMc8lDoP5v2k4zUELY1h
27rR/y9xg+yZGhjtnGaOnuSpNsHEqoY2QY6n7ZnL1d66JksQ66pDcnjQ8gx1MYZYHNS5m/sivY43
HT8Z+S/bsp8OYP14Nj17bXqAqbiP2+JtWa5bYAQ2/ulBmDlcJXJ49vIMcA7KxD8CLizq6v5DCQR4
+nfENYSZqoFpGA/PbJ5hWoJT0mj6sZNUi10rXayr8vv9q06b3YLYVy0wQPL3bHj5t1z6o+nbDfDm
ZBrG0elisdwWzRO1eLVI4o2eM8zbI6PTOIQDc8uBQyRldt/s+bg59jlREo4fJB2GBqGaA5wTmQjH
1lDQAw8R8y75vrz69PGtXxZF+4CxPUQ5mahketlMUYbibm4WdRWvx1jKcwTRhB4EGZLMB084TH5G
5bbImlZ3zHQoB9YEo9pi4Ue7Cr/S1dc8hVkuvf1QNu4gmAzYxDPEMq7Trlj41XiWi8G2/QxZVENR
diVdrXWaL/O0OdISg31z7Bnb4OkaiwXwzd8G4Zy28TyzFtXunM58YVQ2RxUM3NDfwoawj6ZalmEt
jHcvr9p8WrQ5tli0vsDN/vHPFJGy/rEicqx/toiQle6evzcPZH9VYvcg3jK7tLamgtlJXp/NJ5ZV
xd/nI4/DYSHpLex/YCF97I7ssICTXW+G30ZJlj8iazNcwAQJZbSv9wvGaJ4kDuOsuWN0wTxzr9Sx
EnOLVTndWyTPIH7ayMLILCwHP2YBH4kiTBhLMHnEEkwfW2CPLfCxBaMkX3dWHp4CW9VyNXQXTDzm
qLciYzEBWZO3uxcA/A+f2pcaxCSsqrJqXpTYveZwuFNMrk13vNzeJftXczCbTCZeXsTVvXVxF9/o
zXyyf5nh++E9Bsu2ul9ikoKjrReDw64pOrNe8SASIogim3oI2zSUvu0y5dmBw4iPpFS+H73+81eI
uuoIk8cY4MsGA1TR7tz8Wm/qq9v8bldaDRpHMBX5AjDgILCpE/m2I0hkKz8EBugLESI0huYxqQNc
8TEumiUmyYa4tmvzVk8XmpI89AgKbIwCZlOXc1sx82eAQqaIB1QTPwNaV3APnUiOI8eXS2K89jj7
mgrEXsBN8AumcvoCgGKPK2VeciINUI6p7aoQ2Q6lXqAc6XEsxoD2Jc+aM2uzkZzvXm3anLuDa7r4
FU3EEX6HKtKU8PAofQw3RBfzMFK2otIzDka28nxus8ANAhoRJ+RyDHcrcRxvu9bFmeDkOAt0RpNj
nI852GVYOD7FdsBCkwlE2o5LuU2j0PMdBVkROY8Afdyzu8UOVMyZPoKKuYPwqEt3TydG8AosA+Yz
ZvuYCpsGAbGdIHLtkPBQMSGR76LHHdvKfcq97RWTFqHp6WIZy+wB+eHLhMUMktmciltTKtCMEFNY
iklBodJ9H0Ebwj5Uv+8z83qcQtwPGcIBwNtuKlNL5+buji5FBEmGuuBLQQeF81HflXXzTGzH8TbW
lMzMfebdGOuVR5TCjDnQa6IQvIR922NeZGPOBUPUIZxSgNG+cXf+Nk8q6MHnu6dN0d47m/NjPeO+
O76ub9VSjli1bJqooSerGKaS/anyVAo+42imjDspCwOBuM1hRLepYNh2XRbYoR9R7EFj8DnquLOl
OecDiQMoagxKNkjDa9+3prj1KOCIeAj9MqC2w6EXUUdyG3pPaBPieyrEAMV9lj9B7LgDYaEHUxJ0
DFPSeADzZ13BblpC9OkBK/aYZCbYIXch9iok4DMuoELAACJRREJ1jLUDci90HOl+tQfXIekRXJo4
0C/pcEB4AyzgNk83xr3QZBvYDpSPbIpbceQqaiPqKpvSALqm60D/DHwusZRB5NEnoXcVjMPvXjHp
o6VjJuh9jrYPhf3qfl2X+0wF/LLJVeN3h0pKiADewTzIVQcS1pMutCewCLtYkcBzR3P1WPIA2PIY
WKoOwL7frciM7CERZ4YNGlAWCF8EdhDB3kMJ7JmuINiOoAMEUYCJK3EHzUBOD8DSOa5e8+UgF/0y
LWPwCeiHa9tuaDiXdIGAEdhhaMShfB2Ip+tQzAShJqp/Ek+Q+VggYWmAU43gNCUju0NQvNlP4lNK
6D56DEemkKFFepB1NMKB7bnUhdLBXMowcCARR6M3lNqHlKARSAltXGduXueFeeq8B4Qd2aBBjpRc
qshGkWscB/sdcDKoZiiBgPic+L7qR68vqQ9iyUZALNkgfvE2y8vZtsjrzcw1nz8VhtvgGaams8Av
AEal8jiUux0RDNsvgdh6ggDN8Sl1JQkk4uTJiB4kj0f1sNy1ADi/c2QBfJnsI/vHNq7ios4LvXek
MiwXRYbcRMhGvmq4Dbc9Cj0xZNKjXInAQWo0pkN5fTBMjYDhQ254qWt3CyMyFIS5GP5vqlI4QK7D
yOaUAT1Q4Ejoz5FNPM+VvnKjQLLn7CM74eM+3C32QMO2dQyaEz4AXa51cbOCoJPZbvNrPpjWTBzD
th3b84FyQayx7QWQAkEoOfSaCOA/Hfj3IPrN23HE7VoPcDP6DQELRfchb86arvw4vT3EHGNnxgEq
Ab8GMnBt2JrBySF0Y9d1IzvywiAEyhCEvvuXobaX50Atx0D0TUjxsQkKJQMul4KQbW74m+mbVIim
AyhMzaswke0iVxoiKW3lwCzJIy6ZhK7gEfc5mWIgfrp4fC/8dNHDrPBIcis8pEfvdJbHbmpexs+T
fGX+scaOLUnHTD88FEBDuI0dAeAFImYO98GMEFPiOY7ynk6WY/njFhxfN7BGj1hDwJqka83buLhx
i3h1v8kbWiLb1De/DZ9SAcGYwOBJQzBGwSbmSObaSIU8MAdETPKnWx4oydPmcPFpFt25pwvpkUTs
XNEzOmb82OhYDLfri/QBDjQp1WSf+WXiF4Rh4IUC2AIF9uXBHgT0hdmEer4LM5dymPOc5OvqGLei
e0XfirH6jxXe75xBHt8U5cY8GITgm7Mjf5WbV5n3zQCZ2DHCqCegARAcOjbl3LMdn7tA413zujOl
niP6++jTcnsQk2zE0Skb7qtZXMeZNv+Qqaw2aTOGtwnGhIEYKoFFhLDhiVAhUPSw1UOtMCJCEQTY
hWA8x9fmteFgr+bx0fzosp5JGR3xema8viPB2/XmgWsyymeG5jmYK+YyBF6G2YzSUAHXxNT2YeQg
ykFUDtlKV04fgCIjAOLkQJhatpUXywMJZ1IaEsfMmOa6DlDwwBYsMGRJOAAkULbwXc9lnowiFjxF
4h7EdkFxnRwHmi8NA18Op5umIR0mR0mBNoGPkBluzNFEwEwzj5RnwEloigTZ0AxDjATxCUV/Otw0
8h/v5s1yD/vSQSPYUzQymbmf/Z8Ca8pnqkHPoQJnrAkwg+3Twz5wKIlgLkMR+NWPoIwQF4wyGFaZ
/9zNqNHyuAXNct+C5fE2KpA+MIEcWsjXTlI2iYA47Jum0IkLdS8EMNQIfB0R6XuBS4QXOv2M7EmZ
9FWxMf3pPiXfNW/E4cMAZmJNXR95kadsGUIOUuiltoslt2VEHSYin3HO+vp7Ugb6sxH9u7NUuNg8
NDwUg4J51HRwCvOmYBAiriIYIBwoAkUUbMiRIJyFIcMoHK2EjrQ+iiUdQ5E2efRQQUVZ58v7QxM2
ddnOVwFTXhBSBhONhNJkPoxWKIpsGAFV+L+8XVlvHDmSftev2McGBqzhfTzy9Hi3vXaPuj3zNqgj
y661LBmS7O2eX78RmXUkM1mlwkJoYGBrlNlkBDMY8X0RQVoAIjAxXtqa44EngjWWRyynGTO0LfR9
iG17PC7ZAgmN584r6RgBLwxfyvCAC1WIhUWisSQZonxxV+LA500an97U0jUsSiAhq0S+/ePr6uGA
HNCnyGFXDhZuwMCMVohqHfLVTKyCRQ2BA5FV4INbeHy+JatJ2jpUr9SKbJdzRQClTxRpASD/6y3w
b2MQ8jrZe2/gvC474BTUWPAyEcIhcKVIirYhBsY9D/rVgRbIcYaJ/npb6eronINqJ445zKfl/Wb1
8PvJEUB4X2BaGI3MJhqxgMEDQkjWG5kyWKay0gCpBy46ofP1aJUkEI/nkmzs1Hw+d3ff0GrEQvRg
A72CSl7CTiQ0RCBxCnFdMoA1QDcVU5FFv2Dsy8fVOTMZvfY3mLr9Ej6ZKKMayqxcY/t+3G26B9TI
Ymx1w/5l3nMJbIjEgBy/aExIQPBnTGL1Fpygiy/u337k8xu4f1xLvWoY/qZzPbE4Oa1jOVAwiswU
KAMDHMIBn8BHEKlAWFC2LxEYIRQYR5aXnODXljV0LVG2dLKAT9+6DgLMY7d++IQHW8ZfEWM+6/F/
/zduxay8s9STApGKCJ4UOJYMfjskTQGdQgDLr2Eot71Uf28JVXmg6Wv1CrQAQqfsBJ4dR+6N6R+7
ssOUwQDUGGWA0lBxJ5TjEDKDwLhZfCLWhESytyIKILVDBfkqpINTnDcqfFqpsRXzPK/eKnVwMD/v
7rvlo7/71MGkp5yH5r2LKSVDXE+FFKoLOE/4duCKPYFAa0LAOMbTZecJLPoOjxd3L361H90aBmi/
1ha0VlTplqJ68r0a3hycKu59iaUhn5IySXjCJMcsTwETLQBzMhAmC+ROWitfJ1o0XhzrY6ie62Po
ZrPtVvvKAey6qm4Ae/2Qdw4qUlUScAEFBEpIwKxgcIA/AKJZab2IzJypGtSj1iJt5okPw3jLq/aU
4e17IKV0qCFJ41AwWFzHsXqYDZa8LPqqDMyOQgRxwKy0ceU6uvL2/QuE5e37m1rOZUN4pybCT/bz
z/6/G/tZBKGikgKQdwT3JQSsLI2MSMGLlyylJruebmQY+8JGhqe1/K5hD2xNjyT6L39ZrnZHW6Bm
INGc5xIEoJ/sQFKmECMYSrJlPvYkK9IJiR6NUwvQSDwavtocBCgP988flo9P3eMJqNsFAgSujXc+
SyKZgADFGEeAIEhIJUWnlbal/HkQ7HDGts+1ToW+qZVr2HvXmTkQHfo1Fg6tRFIAnkjXipAMmFEm
KVmwdYl1xwicMWoXOKcK9mJ6Se0zbRtx/2wsru0dxkRcuxR2280SCv63CJySycVQKd3/hDKjHTtA
/DpiwYoqTlzknFBurQdwGYcS0XWc/Ld4gZH/VpWmQU7XEn5z4MNv3pajWQ0prpSLZbFEQJwFRA1Z
EJeUADYO62u495q5i8vbN4edcyOVlRwnH4vs+Hq+Ix3v+KQyOPRQH4u75sBdlZE2W4BtqAZyV01s
YIJIpTkDNG+0sRdh22jcWq5uTqqdEMfS7q9vy3QtgSxI5xKwZ+k1xPmImQ1NSRFGFgceW1D5Smt5
mv2mlm/bEFrqUaH82w6QxL9OLWe6J0FM5FiAZBflsPblgbFq6ogJRjCpaAkxnauP1wPW4ijTEEcd
M4brcYnIIAp3CuKqB9bMfYDdrrgiLkN08NybCOzVSnkm5LYLPQ5wYUMEIxv5wXD3vXt+eMC64Km7
BJBbBLfLAQOAaQkaQaAE3gi4ITYNwFDs5SB1HPn8Tj6+UkvfNTaHlO6wgP5j6auyR0PUrA9YDBhC
CgW2gaOYzyyBOG7BMIG0C511VukFp/nx1HV9hTnWctzU0i5bKkyzxk/dGo+yHzN1/X7igXlw9iT1
NWKgwCRYMAbnFQ/SRJF1uLS3qzErofSysU8crmuVeYUBvve3ne2rAgqYoDkkDjLPSmHZiVvMvnKn
gZgE+COwIADZCycvN8Tc7kc/w6v2T29qERuL6Yw5LObkEPBPCrAWOkqUNxpwTlYZopkH3phMApvO
EKNUAk8VgfE63lzNetBankZbh3PLUyX4M/CNp+7Xhy/d/e7fI0yDgMY4+JoAamBXYWdONBaMNCYi
taIA1LK2aZKIbQ9XS9TI38EvzYH93/ZXFfy96+/lOGSDuF7IftvoEo1LAEHhSwNvcZQ4qQqJwXPg
2cwCG6glmg9XSbNczrGPW6lpaR/rhd/B9b972HR3eBPZyAEpG5n10gDOw/xUDOB7WKTEOEM5yGqo
Z9dgiekc5yuX47duasEb3mhrp770xw5HW5Tluhs6W8VCDPVz/HvwqYCEwPQkR/pC4cN72OokKp4l
1qmUu6qsdpjhDIrdP72ppVUNFdyx6ef35eMpSygoGgUVnJqiNeEROLtIIQHutowYWmS0ylERJ2Y6
GqSe3M1tc8mtm6zf397++vBwt3r4ve876FfO7okIdlnCdLB9tYc4LXMBYEkzKcwGwRLLSqtXSRIe
RDiTKTw8Hqu3Et081MIvj2sb3/wTb3Vc+MP6HloLi+IxOMxjCVhmAUEVk8sA5LDDXGijwgsY9OXW
wipaTQSZKDH/Ris5Y+fI8J8OJOr28/Kx2xTAQT/vnoDCcNmXA+AvhDQscZ+MCcRg05jgAK49d+iB
qRfcW8bZy1nQqwlbLcuZ0FK9U6kvxRz1rvR61uO8/N8IAz8uF/vrHrG1EHmbHQogDEINh42SsLgF
gAN8lsfeDAtIitPMrGxUC8Z6/nU6Azy9f+7un5/++m65fn97el6J79Tc3+ItWhOwscJDzE9HBNx/
JS5lQhss2sMuVyGANVIDMNgqFrkMNqtLWGM8ZC1Sg0/CL6chIO2evvjH1e75cV9S4gusv/D9BgE3
A1yMKNF39ilFvKGMlJSTCoBC6AvbfjL6mfaD+qWJFrqhxZJOtPglobdnHJ394DxLBpktBZDUmzyT
xDOIY8XylMFhUZ3ZqyctfjlTw/4l1TotG/7KzWwdd0sfk6UEdywWGvNw+x+RQKfELQPuqXMEqM0L
tg1mRoA+F/jMJkh/FdffT3N+x06iMUja8FRucyTOq3/3/YHHYIaJWYi6SnJlSaR49gAAFlACowkz
WPWNMQg5iWXVKPX8m4arcJ08kruv3444FBcKuzwKBzRvisR0XwC4lxLCURddDhYZ6CSJdhyhmngp
5n0oq6U6dpz+/nT3fAribChgGkCWLHpJWAG/BEEFGF1CYgkuKRjJNPw9ieKjYer51boxv532Dqbd
cJj78Y9TihzYGW5qRfv6GGwRReF7IL4En+MieEgGPwVlvILtYZSTrxcZ5vKccwPT92rtbUt7R2eE
GhvnPyzvu7tB737fON13rGTTn39QKggkp544ALckcMGk8cnz7F4DxIxFOEe8T29USq63DRPbWnuw
7a/dejmq9Gin+1Cfi440wKZSJUPck0C7rU8FfIFXIubojJ+0tlQDVSJsV/NU3pquV30eEl7+kW4/
HGmeFv38CigBkKdMUsFeoAQbPQCnIS4X6rmFpy+c0Xi9QtNJvJtKga1qaLU9Etj48d3th7vvn3b3
k5OR2Ozcd69SgW0hJGGzuHBCgbelCVY4KqO0lUHTV+ofbktSacNs4xuxzbT5zGes4CCON/0JMJ+k
40ZizhLzGlYH4qWipPgIoSS4Uvwr7nufz5TOcq3LZtvQpZueAcSLxe+fhhUZ01QXeFHFBZJTX50Q
hQTjLEk8aG1CTDqoa8JgP/6LOo2lOGOCozdqPbv51l5zSRsJweMSv789uXDD7XDqYvgBg6qJjAfH
ibHIzGxKJAC8ISmqoI0Viif9ep/zJMuZfv3blttei+XcbcMvN5OM1zeAGaMVXXzA/48du0OFQ/ed
KtmqYmgkyeC5XwlgJ1jrSWQFdmdxLib/Gv77Qy3L+K3+UaWf0vNM1FqZI/mEPV97EkOTYloKQiX2
9gKWIrYwRrwukStnFSDW1/Ekh6lreTdz8LnW9Hgg6s3PfTFgInQIrDDkx4rhIXpHNaZ0DSYkRIkB
LLu8mtCj+SvJ+4T6THIxzQK9w0v1nx++rz/fTvcpZlbkgSXIITvJVfEcjUpoBvjMCMBnoSikykDN
qE/aX3X65sK01eGE6WtjFTd0OWc7G8amnO22Wz6uP//XcBJL7g8myKECyJTzFlvlsJtS6AKGFW0m
GZPDNrqrTkteT/oPgpxLJe8fV0oKOXeEG6HMvNUDqfdyd4//yoTc+4E+rdz3tiCfB2BBWKRYP8Qz
3w52VTTZqCiClOwq+jOe5myrx/GNShGr5l2mm2U3K/EcL6z5yWD7X996t/8JD/XE4GAHAXaiANsE
Q2rEAGNwD2COcsBxfbHhwhc7jH8Gax4e39Ridi3Zj1XGL90fXz8dE9V8OHdtWAQaByATr66I2ZEg
AGRmZ6PRLGgQt5mpGI9VCbFqEKrNSovJAr7Bf3plbwC9kQfpqBAC7DsIBGPGA6cyimCZTmfnHZOX
wRiM2F4seFBLaBrLtLJTCXuXFZffnr9j2tkN55d7UT2g70KDIdg5g8cNOQlFGpJtAYAuoxLGvkbM
Gktw5lTN6I1aRzuPYJs1U5vNrGG3+88P+c0YfYVicgoJcCSADaRUfblAkoxQUzCaBuJxzS4cBj/f
bdU/rgRfN/jwZsOOzXE/3u2e1lOqEopmvJgEoBePMRVXiMUGXJtYgG3Icozqz6IqJ/nGenW8ge47
vuTb7lRMf8TTbWAX4w1aIBZLDlEMIkbCtjFDvANaz0IOihrqBQ2TRMd0pEoOIef3TnSi2cndffzg
yynMYuqmTzgshrKwCVwH2AHEZ2TeKePVEx7gqnQh0pIYtfxqM4GpLlgJPK2V0I3F1Bup1bCYD6v/
WZ8qA7o/I5yUAgpLDeZsMh5oVsQxqoiUYM8laxu5qRdyPEo1vWnk+uCXy1nTHSYEhrPBY08ng9VG
ANAFNfCQUMbeK0EhphsfVZLFhitbTw/jX0pITE8Ig6ANC7Crabl60z19eX749jRKNwFw358Q36ec
PHwHDbEt0oCnhRJgd2UdgGCts8oS2NpVjiINUx0QCr5wJps0f/Gm1mLZUG0tJu0/9e1oPzFhUSNM
7ImUWAYPThh4DvDs2J8ZY1+LhzCZs1Pq4uUA1ciVaG49Z8T4yymu6CMD9ulh0YcpTNjbovFuFE4U
YiGROWw5g2WtKATLPDIr0v873AzPKlHXrmEgGzEltbv7L2MUDivohr41LIAUo2PBe3uKwWNZYB4g
rSFRAfouQgYhXidC3p8BSPBgrNOWi3lY2fJZ7TwW5DRp99gfm/yj16q/5YK5Xi1WnMJsr1IZ745w
CXyIYURlG5X2YB/SvsiYjqO/nHMsV7w/eanWulFj3/KlGzWojnLbfGiCsyWKxIQjluKRAOksceCX
iJbaxGCKTEzO+lNbuW2YadmYfjPNAsXP3++/7O4/7dcLGzqwWgV/9uktU7hVkVCqMlpSIM564Kx4
7I0JJUS4qrw/meTMWtYvVcoAUJ4rI7auleqpz3MN/Qp4nms4dM28DoVJTFkX2M9cYhMGwK0QOAfa
gG2d+dqGzitOdc1eq9RarudgeLvs1hOXWV1s+hPIbLFzibE9FmAxCluA6uSAt6DhDXM+AuvmBtT2
TPlI/SW/OR6+Fq9xJnK4VmU7hytjtKIWEKN4f9IFf0CQyIwBg8kkMu2HFivnoiMxeZpt5t4qdT1e
uQhXKrSyXUna0EGyYxdRP+MinDYi1xiQ+vthGFfSxkR0f+LaF9rHIqKNBlhoEo9pcq69Hq0SpKNz
x74FMHUQBIn97kd3OmIrxIIPzFyD96aew8SioBza4j1jsA2x057LYMwUhk4GqwUxjRXpzIyBvb/9
/ogWin7Ywkg9+hh+wgIFz4rh1SSS48nIhIyF6Uik5VzlwjV/4UTncfwzMeTweCS7o0zP+C38cn9y
vnVooTcJSznEkdOxBc4WYjhy7ag0pvhMgsXb+IBggeOFnVRSKZQDeUkuXW2W/TQXLLN/XqszxyXw
y830/rH+X44c/tHY7vH2mLHfR0fDkKpQwH48AEEp2HgnsM0yOPiDSmaKDpiLC1f5tcZcZ1xb481a
u21Lu+2xhQND53AzJHj93553d6eeQrcYqis0+Wg9BB3psLvMgNMAeul8jho+Y0h+YvdnhqzE4pTO
xdKrbruue996ev8fPw3H9G1PHqwqQTKOyT+Bx4iEQDCI/SXO0BLBhix9Nao7ZG2brw3PKq0MbeyM
pZ3eQNAfsjw2pbUuUNDRRK4ZtkpqhU6PEceBzoPfjj5hk3S5vLHHU7TFH79xU8vLWkpM78WZHVQc
mhPxXrWh02botdHBU80dJUkCZhGKRWJNcSRo0AE0LPS6mNOc7sojlJO2RdSmm6u4puuJir+9Hd2V
vf9OUgyXFnkfguLakGywsx7zdIEqRrLWCraETc0vNNdrPEdbnfEbN7XAm4YW+7Q61hzKP4fWtEnV
A1CKCNghQPH4Ex4qAC9VJGEhUieKNca80qVREwlq6VlLejO9z3WQIj7cb3efvj8ePwWTAw2X/UWk
VmcKxDDg5RfCS7y5yytSrCuBZthC+XJHYGOOc9cDzF6sdbINZ7t20/vS3i3vPz0+/OjGKUeeLAQI
j/e5RNgnIUDoiFoTFkui0QE+k9cVbPZjn6nT7J/WUs97vB3tVsf7h3br79ifeUonKcUW8L8+XWCd
C0wCzbV4phM2ObHY11uycCypxFU009tHqtFu6kl5S5Lp+p0c+JCTgf9g9Cv8Td/oLRDuYh0VF1Tj
0ZeCJ2EiGEQAZ5pfapV7IUycno91YKzhPhlz+nB7SHzT/4uQiKqeTmfmzQIvE5MGwhkWgMGz7GOt
B3BEEjA/yqXPWrA/I7TVnRszgSt9xfzeR/jl2kzoE37z57ujxlZgxQsz12DbyWdhiaSWgxkxvETc
KsK99jZoYzS/eOKsGvj/iruS5jhuJX3nr+jLRNgRUxzsiyJ8wFKQaUmWRqTs9+bC6I0Sw2RTw27K
kn/9ZKK6qwtV1U2+J4aHB4msBchEAbkAmV8WlOlh8C1cFKJH2Qbrvu8TZdq9vRoMURoIr2yN+RSY
BecST5VTwkqVEqb0HSOs025B1lyMDNhcmF5Q7ao53lp+3SxX3T1xbiQOHcfQAaWIlTHoSkluMXGZ
VVbWdSUQCkcmFQk9CrIw3kePWjukNofk6CGi5mZrcOTkpY6BU8JqktpKH4BS8FS4VawyKgRQRlSE
pBzhjwQKdBs/gqw5YtrQxRBAx2bAv3Loi2j0Fq60cfM9T9KlUKWEFj7GqBpvXSUlN1yphEjzj83W
sumCwOWIWUyXtG+YvFyulo36md6cb+7us43cgGIz3pjtJhhGEXpDMItgVhx8/VCnCrewLNdGBv+k
nemRrg6cMQ4fLFkTYoS1ffLiLQicdRsCiLqlFpZaDwswWp89f/S4gY8gqAzW1DyRXoxpt42y8+GZ
Wr64EwUPq/keVThHIXtaW5C8QYNhl4NrvVDo+9ey9sqadABTqm2o1/3IvBtm+rzOSN7HYqNisg4x
7CuiwFTgYFlXThCYfqSOlAUQnI/gff5LcRAlPYcynLrPdLkGUTq0hhhhfQtvC9ey/rbafFoWGJC4
h7UNbGl+wTM3Gh3BwxZZO1AXTMECNFRU0kbPwDBhST0/RGXjUZwPKRy6He1DxVCwIapvvrib/Lh2
Pn4rNBFt8cQIWLQ0IJqekAjUEiV64Ih35nA9MGVYzwMfNNcjZjpGTLsY3k8X19NVh5ImHTvVkhoS
GZ7DIlKmBk8ugWMXEpfM5+1P/kzp2CUFPeKHS4kp1orw1+6dC68GmDGCMW7qKCrlMUPSRvB5QIPD
EhKOBGY0o39XKG+XwoI1PQQuhou8/S7vVh97n4Q5NGiAF4FgKuA92ArWAq3wrKy2jkbN5TN9krbz
kuQhQDRcNHYfdvehH3EctZOIfMZrHhDLBtO30HlmYDdT5a0N/rlC7j6MUWxGJr+2bbbDX/vjIEz+
3iLX8BocMgbaE7QOCB2jwZcgKIANOJ5REO1CuQL/GjkOwn5GJKKetlGVn6e3HXh7/MIBzAyK6s9o
MJl4YnhIAiayCIzXppYy0Z4O7LRR9j3i5cHFFttxfvf529X1TSdEMh8+CaM4dg2WL8MQfAb9g5ct
gpLgmGIdXXYAyaDbXEHJdLgJb0H6kB5UcaGqmtPQZouJUq5yHEbzS3aePdhkNgOEKNxkipWnScCg
RUOdU1EJ8nxqcU/LsQPl/qYTyK0RtheUDrb8W1Fzd4+zQG6rDORfcsw+9UkzUSWDWREeQ32IqsFT
JPBREKZUPGlHrejo0P5/55GSmSHcNEJ87GEI/vfmerPk7VymKm8XxMAxG1ljYg7mqogEbgAoEqWs
1cwinFVPlRUNdUkApTO06bjk/c2Cf7wL2y/b1o3B3YGaUcZgsqSEZoSUGMAGUsmmyBNXXpCn7dTv
Wx8fwf39knY5nAvcLugIaFV3C3IL5sMk2qh48pMQW9+mOktScKQ4uNAsUtyOTAZ0wqOT/rHNx/KZ
gofp1QgPM6J2U+CPrzeLw8elnluYAxaDxBPqY1ADNkNBewI6zdSBjvtR+1YLYmZjk2HGWzTnT8vr
28X0ppquV3vUSpk3IfJukTU01oL4KjnUTQoj/mosWRCMw7gzECy9VKNhiyVBwyBQC6q8n9U2UMBN
en+epo2Od2DiRYkZkAJ1D3e0sgKdogDOiDbEMvMdOn57syB9Mcz6tXxJ+gurg+8iwDrPeZz4/1Wu
MUI0qx2vq8QwqpZhLp6nFouZ2aCJ0UTSR04mH0F56TxwUhLKx6hXfYCULeroEMGUOWVgdobKa4Pp
80SCHgEhIVWdI3Ft8kc3pIqWu6QJNuIGihyMMisBC4oMx+z+yFyYwmuQTKD9Q0JzTwTQcLhxX6eo
EayeBhuf3ffZU3MIvGDM+RMjkS9w8Wo2WoklY2/hbziVttB8+D9uAjgdReIePF6wfXgwtBEUwYDZ
D6YviY8EHLVtH4H9wtsF9WIYAJYv7hMWN9Oby8317XK9me5r2uQiT6eiOdaOdQ2ig+kKs08b+ZwB
UV0NAjx4uPi0FK6X7z6ELSxUh4VDRPTYGEpFoa/6cWwHVYwGCR1hBVTEo5SuOSJtgsVO0SpU0ilg
6ujgH1cv4b/GVQuQSMfo5oOEkTmW3/z9Hv4czaagCcxT8DYqzB7BsHpQlgL+iQoMDS3Asn1agG7Z
0UGAoc4zBTtGDs1+YWWrnH55x3qOnU5RMU4x/c8jVLdOeGpK4E8aVA2iPzH6TI5d2/lJSd1QfYkZ
659k//fD9H7z19Ysb+xUgSER+WgowNpVoE0VR2B6r/DQFz6DACGWFJhZ0hz39PaNH8AfaO8XpM/M
iJSdzTqjXb/sDbdhLmkVQefzGkQ+RpfDfKurwIVjBiO5Q3q24d71XhI9GxvveYs5f/PX7fRU7veG
0A8IhMPcRpMF8bXxxNOheCRRK8IRlj/UpcnSbaTsfT42ZIs+SsvRyFBOndIuykqGDLhNYAxxSA2j
MSG0PLXqeyNDD8V5WjHnIxJjjll0TWAXVp9sjdFdBctECfcs+SpyA6aVCb6ylrmqpsrH4AlxhI9D
eH0bM0KhPzlCxLQ/jD83lmMZEi8jCFQOn894jPIEqVUZo3SVggANyIn2T6uNsm38ECR5vlkSPR35
9vOZHNb4Sue7Cl9NUp4RzEkuVMXykXViDMEFsRijUY4S0H6PaIfc5sHCXum8pHMxMrhgqvYG993y
/uru/hZ3D7t1jnZ+H9ExmMjRmkPEJwd+h+ERoTNggnLvTGBPyjwY6eZAau3wwZOSgxHdcIWbAs3E
9a/d+WA304vAsOpFJXPiCdY+9BqMjOAExkIwkLPqb9rN3NNXsHU1LOqJF82xtPB0Xn9BSKIc/8lz
/Gc2Rba/Z7Uosc4kBv5jVmsCveKsN1XEGnO0plbbZzz+2NFz4MHt3R7bdozt6c5uvJmuPl534nFy
+GMIImHmiAy4vZ/1ZDCwjMDckjRFYhjryfFOK93u5ZQMjW45HSTaghtw3jgpIzaTZFopRgko6zpv
83PMifYYYkqcdZHV9VMzULedHIzG3N4vWaBDy1vO8HR8UMTnYvl1A9JcNrs6wm5PiFz0teFSVuA3
4NkdWCBOgasUlaBRURnqJ5Q5wbYPOwx4t6D6Sg2dTplhOBr1fQ8mwM2XU7t3FJBQJYmXwVTUYt1S
BXa2UTAPiGdCIcyTT7293bKZkoJh5UuriB2kkYPPsGhqw5Bt8Ter2SlHDS4TeO2g9jAgH2tIUnB8
CebxgwvviWCEiWfE0dhRcqjaXXP3pGBnNjwgUaDDezyOgi7sto7zxrHQjRyVrjbOKV+FmljMuAU5
irVLSIJF6RNNWj+/Q92ScwSLoW/UApcjnzcnJF1tcc7XN5eLb6vp7fV8H8F7yprvamNG0MDSCMCl
ZJWB6YVMM+CU11H09raGrRXE8CFkAV7sl7z/+nl+uh2VN9MVGMi3y1UBchLRQHSgvOqIogYjV7yM
tqrBeuU+EUq9fATytdf6Ides91iPGz7Cjepzg/VC5zcZSG5rtjU1E4lO3mCiF+6/g7xMERO9wKKo
BQgaIyzR9aN2bzhSLTS8Lskdpl5alaNz9aBs5fEYY7R+kgenB60gDhMMK1CD2Sk4ySkNIanHK1ce
DcTpPlEwkeNvB0ws5U5ePqz+vF7tDXaZA7ISKCRhalmJSNHDsAjALEWF8SzJ+9oSwQ8EZexbK8iw
Iwa7snJfb/rzfKRSu4T+OTN1RSQir0XwFo2tgSItNWOw2KhJo3S0zZVE6JGxAKE8CKDrhqe2tX9Z
3sLOgVWwiHRMtlKGYMQP4sgELDBOlTKGpURSOh6aNOigR+fVCJ2mFUGz9W0HHi+DxNUIdi5C5Qxq
FalFY1TIKJPzQTPLeqk7nTbKvofAyFZN2bAs4c3d/fm31RztGrt1VRrEAszp0zUjlZKYjxk8OCsx
RwpzC7dMTEY/u6hv6TlkSmxvF7yO4PHhxX7Nqx2Y9qfrHTSDhMmMUYG01r6WDJxZXTuYCBTWSR1c
Reuagf0mVDTPAii0g9T++ew45PbPZz3+RhbdVI1VsdsNdA5AXaHLjOdIOQUf/0chVlNKE3FV1FjE
SIPgdQjsHJI13EcQwcY/OZOw19uRZMLekwV/iyHOAV5sD9pzma03vRKu23rOUpGoMfdJEywcQDip
rAq2AmkMsxSWt1Px+eo5l1SUTIwtuMWirxTjcvbwsUmtRLctpxvSnGvIuBMsSHDVrIAPYzQFjQhC
UgSjnVCEyKftfnd7OJQSv3+i4GHJRszFpWprw0wf9mWKqFG5JBbG+pJUCYolPJjjiGrpwM0ORFiv
ZEz9HL+HkaJE0Isedq0J68/x6Zerztb79nSaCAUyK7sygvoYCU+VlAiFlo/6EeNTU6KEkR7MV/+d
dQe6T5wU1Go5woJe7AATd/n+N9MNbnC0elLsHElmnSWyTpXSGvcnOQdPAvSACtwZE4QHB+MokkDR
ckEbojIOaGP72r2DoGmdgUQimL6wgrC+W0AVoLAgLa8QOJfSgMWTehumRwKjobuhmNZokZfjs7fG
wY/PR+AZN1ZzHhlm0SPST/ABvisLYAcHMHFULZQ7rqpH6OF0ZEy4nvXMiG3Id5vKYfi+PBcMDrr7
lsWAZo1u0oK8sTYqjCoJ9AnB5GOk6fkIaVfkQHmIq+I4qtFslGVwYOdEghVR6YRIjwTBXWsE5FQe
SAUZk4h+Uo2Ix1bF8LmSoWExUKsFnpAXNREXq/V6sS8MI/Hz54QlQnOtB5AwaBdhxq6H2VdJbrD+
jtKUHw0i77RbkDWfDi1JuNimWd8vb+++LLtBXiLHwkhWJ27rioqIJexhSsLCtVjzR7rAkrFiPNi5
316PmJH1sZD9KILZdP7Hw+cCRgMcK7EtSp/Rz8E1qbGKBAaMgIoHQq0C8nwyMnAJLgF50oaU7/XU
/d7NvZOSVD5CvzU7FwWLdL1ffrxeb+47RYCbKuFOkwjGJVbcQXwDEV1lAwU1LjzYBobU4ND/P9YW
K8kuubZ2hOtpG6h8/hnrko1uSqsk4QMRjEbDKl1GxMrAp6s84TKIOlLv/66yjH0qSxZHIhP0Yov3
UO6U3SDAVo5swf8yxLSkIGawlizC82mYhs5RBAohkQdjanApH/GZN4cMy3yrSymWPx5QihcPpsOd
NuOSATfwve2fvIlxMsJQJjHSKlHM+2SqMhrsCkxlQazLEPXfcmrQ3Cs4tUMUbGtm08WIT7DNCKc7
iEiuFJZuz6fmmlHvEM2fEiy8zSTMQMuqIKMOEk+knH90A/NIWlx7+6QkczlC+7wP/Ij7R+tdVnwj
5fLxxjbNnoNjnBQG+XMsi0JBeBiOpwAmaM80fiL/HE5bkZx/eNOpfaRkdT70CsycLw6Wnz17m+E8
wbLdBuxqi+ZGlpGS2Iw6bbFKM6ceGLZBY0qH0w6mI7D9SITYQYTOfOukJHLkI81lG6ge3qfzh+vN
sti/INp4EaKplDMBs23AImLeVSQwR7zzxgXeq6hUNFNSMJKChBePnIiNZQDVWEo5RFbVAZ17Jhi4
+SxWVnqrhPJSe/Odm/TdJ05O6q9b3/vN3eL6agfpc/5wewsNvwAWw/QGnL/b6WI5mX2b3G0+Le8n
n+/v4OU1sLCZ3n9c5im/+XS93t14kYdmM13/cQkm/uXn68WLSYPK0cCHXc7h383yxYR0L66Xm8v1
pr1edvxY8+T7moc/OlzBCOT+bqdzrKE11h9jTP9rXZ789maCqrk7vFgK6+3q5tsEgT3wzt3VpPXj
X0wu7kBn/CSpPBVvJvfL9fUC3PmfyKsfyH/8OFn/iaFIi8u7h80lUPWwyrUZobPF9g3wSeC5k9/B
0p3ObpbQAHbeNktP2cvJn3ATnKBdm0f62F3q9oNNbHuZZL6P//x29v7ig3sNv72vX569/XVysv3/
4p/v6sOvnZ/9T74b3n749WLyw+puVc3vpjfL9Xy5+HFy8tP+50AD7d3dLyduvrn+gqXqLu6nc5y9
Iz+MCPOq/WNyEl5O1hntYHKNSmI92hUVon1Hwjuw1j6cNS9M0JIefYcV/cRtATmQGitYWQ95RfZ6
E+aUvOm888v55Jezi8nHJkkTSJzfLUb62vfDD73zQ5PAiiObaTslL/f97H52z0xgSk8XCwTjnADR
GIPfmR4/nrzKqFcTh1cmb1fz5fj3Kch6416/fhuOziNK7CnfsU9l+87Hh+n9YvIZx3rsh7O2Hz05
edes9gl8os/r5eRsdXX36BQ4v3Dh1eTlB/c+HiQOTMn9pzHwzgacj0cWBiWnqvvOb28uM0fu4siy
mAjSnWq/L2eojN/k4T/UT4c2Ticnl5fRXbjjtDHavsPA6oR3zt64l/Xxl2Q5pS8vX5/9+qqOMN0O
dqPMfgyafi7qf1wcJ02oU93SJvCdD7+ehbfxKHXgD3dpu80S7uDizD8qC+D999nKgVtwkO+/HXqJ
7+cb8vPviKmLtxdZXB6fPKdmu0TBpd2+85+TW5Ac62KhNgs0cyB0O9b5nZP/A1BLAwQUAAIACADQ
EShKN+HupOkCAAAeBwAAUAAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1j
aGFuZ2UtdXNlci1pbmZvLWNvbnRlbnRlZGl0YWJsZS1zdGRlcnIudHh0VVQJAAMIEXJYCBFyWHV4
CwABBPUBAAAEFAAAAJWVb2/aMBDG3/Mp/GqCji3/ExKtldpCJbSuqygbL6apcuwzWEps5Dhru08/
OyTACmidhESMn+d357uLuXx4mMzm06936OZyejsZZ6h8XGvVc77Loi6hcsZYY2eyeHAWkH/muv26
qnlBnTHk9dKpK+UUkuDC4YIUNQXnSTNnBuzjqu+53gBlyCw+zS/Qu8X8JsvswlCupYIse9AvBVzJ
ZxvmIsvkGhTWUp33O8u7AfoxR+foqONnz0MIuc+eG2EaMNdFJsK1wtWq57cbeRTGXkrRf4T+h9Sk
1As6OuAUYrbLzireGOVtFhst3IuGk2QXbQaCgmr0R9F7+5YTtRzqj/I8DV5zJgWUIHSWVaAbzwnQ
8FUzxpwxUCAIDHpxl+qIjsxnrzCS1Bu6AjMr5FWA9gzXKyyWBpPsMHmSRMcwRAHWsElsrgD6g95o
30WOuiinV0BkCde1MinrbmcqbhQuLSTtIGTkEeLtII2gKU5n2k7KvVafDoI1rfPclpZiTFJ2mNJC
cQ0qy3JYcrGrx7fZLSJSVNpUO5eyGB46zwzd6+gRCykcam4lppZuTlxybQeqT1ZYbdBnQ1SLii8F
UFRIsTQ8f8dzk+A0j3HBqxVQu+Zi2aeyzgvTNy/oAHFIiH8aUOKXHOxiUq71iym7F+6c4HmnnZXG
Srdxv2AuZlDJWhHbOi/atg7jwH/Vug5gUtdWHDdiL4rDmLnkoM+dLOlkAeQM0PsfRriZFfMwFaZ5
AhcD9LiZR5tRs7vgenWPl5Axu7qzyObpO4enzNxboxabRCEx9f9gsXbPUu8V/2VYFmr6JsXUpMJx
wX9jzaWw5JstdKlkvW6eDDTdQqMEwymoPdkWspffPsp3O1QcJjTdodCb3O1chu4oDsz1uKlNS7gU
9CtjlfkNzFkElU+mzL6/dSRu7CJal+u9d5sLPUR7k2tm3w+2jhTMBT/+y2H7cNQVdi6WxImPSqPr
+c3cJIyxNCRBaP5LUDNlvT9QSwMEFAACAAgAKRIoSpBXPp1cOgAA48IAAEwAHABhY2Nlc3NpYmls
aXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0YXJlYS1jcmFz
aC1sb2cudHh0VVQJAAOuEXJYRxFyWHV4CwABBPUBAAAEFAAAAORbW3PbxpJ+Xv4KPKWo2KDmPgOW
j6twdXRiyy5LdrKVSrFAYCChTAEMCNrW/vrtAUgKACFFTFK7D4cPJoUZdH997x7AH6oy0ZvN3Op/
gu3d+qMuUl1dV1pbvxHBEP598iGub4db4XP+uVxt7/Tm/PP7t5/ehec/nvfvn1ykuqjzLNfV/HEu
k8+62uRlMWSAJn6Zauv6fq37S78qYQtmTS/jOv+qzwBdBWysDwORPtzXt2VhZKCc/T75qDfrstjk
y1WP3CMSf9royroIhpg4wpNJENf6/Dq/G8AiCEsbYRspC5E5ZnNKZkJgCy4gNHl/ZY3J+S5OLFj6
1cJohvFMWFPM32CCyRkAXpdVfXQXxhO3KIv7u3K7sT596mAMKBaYe8iW3HVsHAjfBv6O7QvpySiQ
rseDyWRikFvut/iLtq7yItGWV5b13KIOQtZGJ2WRbiaTq/tNre+si6LWN1Ve3xvt1jqpGyS6iEGL
6WTiV/HmVqfW9W2l4/QABAGWfLOO6+TW+mOrt6CopLybxev1Ss/u4ryw6+aGyST8nui1Ido3c/ir
v/DcYOH6fnh1ZU2vLt5chW8+n3X2G9842Prn8OPl4uLys/v2Am4Kgo/mrri20He0+yyXcbrUOutQ
uASBehz99x8/XIWLy/fXF9F/Tyaf31kf9Q3s3FiXOq6A2J7IfGLbr62JuW+xuA5/vT6KjB1XjFKi
U/hhP1ygSwI/rN8sSyr18+9WZX8/r759t67e/ct//8tIUE0mb1blMl5Z11VsrLXNMvDNaaW/gmdo
K7mtyqJclTd5Ant2BjybT7BiTEjGkKQzrqRQyvKjS11/K6svR3j/q9WUzLJMpQq8SGjLBxPVeXFj
pTqLt6sabFh+ybW1qcsqvtHWt7y+tdZt0J0vt0W60lZ+CPi/yR8JKzJMDf8crB39dH39wW8AXO34
b2Btpeuy+HusqMN7rC6vnmI1aV0dXHzn+/P5M30dgqKz8u/4a3yVVPm69stK95A1bqJTgTIkrV+u
o4aR9QIC1Jq6G8hLxns3s2S9hgxDzya4R/gXvXygaB0RxkymFDupITyff9TZq90N8/lVfb/SXvkd
0lv8ej4v17qKQf5/Tf9k6w8/nAE6Ka0p7JndzjHCZxNyEiiOqdAisw4MDOFngnveLS1IBiB3+wAo
FWcTejLOGCQ98GgrR8NpFFRnfacmbNR0uAgomJJnE3YSDMGxWjp0CCNc6TsIv/l8o+uG+iM4Xlp9
HQW5ySgaSoFByJncQ9wRbFyNYXY24ae52lJwCLGOVctk2yKsNCSrZAByp0b/Ni5uGiiKQJXf39Sg
wAqjs4k4FYaSko/BSEyK0w/lf9ooAOEBVwL56GwiT+eajHJN89SDNH2n/W1lOpf9ykURVfFdC0I4
RxgE9ATqNAwZ0kmCHzA09Bv/2NM+BPeHunp1hHUXNhy6mGlzbwtFqbOJcxqShMrEyY618Qs0F9Ad
zpdQaYsHV/j08S1QLzY1OOuyLFcvj+/8sQknIR/01NJq/USCt2J0msF0wqDfPGL0toxTAxFI3eW1
SR/T5Bb6gQbfjy+tLTSVNwV0QauyuDGgMCMPoNq7G1BKOQAKnwoKqtrjoLK8yE0ZMn9DkZqm5RZa
M4OCUmcUBWMGBTkNRYaThDyO4i6+X2rzR3i3ru8bB8YYSvgYf8wcqA+YngpAY/w4gE0dV/VOB++g
6EKzX26rpI0losY1AVFtyic7LaSwjCkZhNQeBhijblk6aBcxHX5EGXZ8wO7nvH6rb+LkfoydVinN
UHIUwQ+M1D4yoZ5RyBBYnEY/WS4zbb34DXa22Qd+mK6/KuLVmbVoM6RRabP6C/R8H6Ajmmfmr0uD
pfn1Odff5r8bPBIE39Oa3d0BKBOJ8iRQjsYJxJNtQBnKhuCHKv8KSAwkiMOyuAAN5PEq/5/YtEMG
V3SAdFOV23Xzy0ASHDkNJkPKQIKWz3igOhETkbF+DJOxxwFDRzl9JBSRPhAmIZNi5zQg4IGp8wDE
eiZviLgub84x5AGCjibg8XZ5N7ugJYU2rXWKHTG3SN9n2QauaTBDkZbfWsfkHIKuR9qwlRwkJvhE
rgkSyEp7d0zzon5pdRJxUw9I0zEcccXURDohJ7LVGhrl/h0mEsZZYzIqMGbUSExPYy0TIYllxgdj
uiOZDIomuCC2QGJrlS/T+1U6g3/y5VMTjwOFmHGYX5qEaVAfJho8b0YUILBpZv/FF8gBetWn2R2e
slhzrgmMwGbO+qPZX+l6WxnMGDVzyQO1dTsG9ch1qWm1TLlU1n7j4tsf7Y9GtYo2E8VJ5JaU4VbO
Hi16kJg8ObsZne4W7bu4gKRX/QUFwehsfYFJvagXf5SbnmL21Ees1qXiOBx6P24t9vsXdzcVJJyv
5RdtPB6LvWqeTxCnSTogeFAQJwcF0f84l2D/cRLzvyIxRjFIvNF33+K8Xpj2N16NyZs87YqOpAin
KLOKuCg3K63Xhojj7MVMXryY4fGk1kNEnARBJdvU6Xy+WOD5vL7NNzuPht7QEF5kZTV92NAemsEo
tq2a/uGV6d2bBv5lh0yz9grD9IH354ho9dp6vRtNmgGED44Q/vxgJ+MyE9bXMk//FPFzYBlAf1Oy
gUxYKuhTdmAYpcPjiWeISDgMLcu7eLUqk508HYzbIod0u4C1L68Om65qwJS829b6++sfulj/qkSN
KA4U5Q5l6JKFGJ5jPEcezNMHeYzXfyrqfBXFq43+PxesHYkbU5nBvC+epMPzkeeIhxLnQbyfdLwG
oyUxlK0b/f9iN/CeqYHRzmnm6EmeKhNMrGooE/h40p65XO2la7wEsS47JIcHLc9gJzHY4sDO3dwX
yXW86ejJ0H/Zhv10AOvHs+nZa5MDTMR93BZvy3LdAiNQ+KcHYuZwlcjh2cszwAmUin8EXFjU1f2H
Ehrg6d8h1zTMVA1Ew3h4ZvMM0RROSMPpx45TLXapdLGuyu/3rzppdgtkX7XAAMnfk+Hl31LpjyZv
N8Cbk2kYR6eLRbYtmmds8WqxjDd6zjBvj4xO6yEcmFsOPcSyTO+bmo+bY58TKeH4gdJhaBCqOcA5
sRPh2BoSeuhDxLzbfF9effr41i+Lon3k2B6inNyopDprpijT4m5uFnUVr8e6lOcQokt6IGSaZD54
wmH8Myq3RdqkuuNOh3LommBUWyz8aBfhV7r6micwyyW3H8pGHQSTQTfxDLKM66RLFr4azXIxKNvP
oEU1NY/OHihdrXWSZ3nSHGmJQd0ce8Y2eLrGYgH95m8Dc05be55Zi2p3TmcuGJbNUQUDNfRL2BD2
0VTLUqyF0e7lVetPi9bHFotWF7ipH/9MECnrHwsix/pngwhZye6JfPNw9lcldo/mLVOltTUVzF7m
9dl8YllV/H0+8oAcFpa9hf0HFpLH7kgPC3i5y83wbZik+SO0NsMFTJBQhvt6v2CE5sRBGWfNHaML
5il8pY6ZmFusyuneInkK9tOGFkZmIRt8zAI+IkWYMJJg8ogkmD62wB5b4GMLhkm+7qw8PAW2qmw1
VBdMPOaotyJjNgFak7e7VwL8D5/muxdqwqoqq+bVid2LD4c7xeTaZMfL7d1y/7IOZpPJxMuLuLq3
Lu7iG72ZT/avN3w/vNlg2Vb3Il1iULT1YnDYNUVn1iseREIEUWRTD2GbhtK3XaY8O3AY8ZGUyvej
13/+UlGXHUtGMMDFBgNE0e7c/Fpv6qvb/G4XWg0aRzAV+QIw4CCwqRP5tiNIZCs/hA7QFyJEaAzN
Y1T7uMBwR7iEMF54hGu7Nu/5dKEpyUOPoMDGKGA2dTm3FTN/BihkinjQauJnQOsS7qFzGD9Cl5Em
RJ7ovqYCsRdwE3zBVE5fAFDscaXMa0+kAcoxtV0VItuh1AuUIz2OxRjQPuVZc2ZtCsn57mWnzbk7
2NPBj7FgdIgfOmXUhvDwKH0MN1gX8zBStqLSMwpGtvJ8brPADQIaESfkcgx3S3Ecb7vWxckYk0c4
ZZaoY5yPKdhlWDg+xXbAQuMJRNqOS7lNo9DzHQVeETmPAH1cs7vFLlQt5TFUvVR6VKW7pxMjeAWW
AfMZs31MhU2DgNhOELl2SHiomJDId9Hjim3pPqXedsekRWgcViSp6CA/XHR0zMCZzam4NaUCzQgx
gaWYFBQi3fcRpCHsQ/T7PjMvzCnE/ZAhHAC87aYysXRu7u7wUkSQ5ZAXXBR0EDgf9V1ZN8/Edj3e
xpqSmbnPvBtjvfKIUuAdDuSaKAQtYd/2mBfZmHPBEHUIpxRgtO/gnb/NlxXk4PPd06Zor53N+TGf
cd0d7+tLlckRqTLZSAV6WMUwlexPladS8BlHM2XUSVkYCMRtDs5uU8Gw7bossEM/otiDxOBz1FFn
2+acDygOoKgxKOnADa9935riVqOAI+Ih5MuA2g6HXEQdyW3IPaFNiO+pEAMU91n6BLLjCoSFHkxJ
0DFMSeMBzJ91BdW0BOvTA1bsMcmMsUPugu1VSEBnXECEgABEooiE6hhrB+Se6DjS/WoPrkOSI7h0
6ZAso8MB4Q10Abd5sjHqhRLWwHYgfGQT3IojV1EbUVfZlAaQNV0H8mfgc4mlDCKPPgm9y2AcfnfH
pI+Wjomg9z7aPhT2q/t1Xe49FfDLxleN3h0qKSEC+g7mga864LCedCE9gUTYxYoEnjvqq8eUB8Cy
Y2CJOgD7frciM7KHRJwZNmiAWSB8EdhBBLWHEqiZriDYjiADBFGAiStxB82ATg9A5hxHr7k48EW/
TMoYdAL8YW+bDU3PJV1owAhUGBpxCF8H7Ok6FDNBqLHqn9gTaD5mSFga4FQjOONsr6jdEBRv9pP4
lBK6tx7DkQlkSJEeeB2NcGB7LnUhdDCXMgwccMRR6w2p9iEt0QikJW1UZ25e54V56rwHhB3ZoEGO
lFyqyEaRaxQH9Q56MohmCIGA+Jz4vupbr0+pDyJjIyAyNrBfvE3zcrYt8nozc83vT4XpbfAMU5NZ
4AuAUak8GIyIHREM5ZeAbT1BoM3xKXUlCSTi5EmLHiiPW/Ww3JUAxnXnSAK4uNxb9o9tXMVFnRd6
r0hlulwUmeYmQjbyVdPbcNujkBNDJj3KlQgcpEZtOqTXB8PUCBhOBuq81LW7hREZAsJshn9NVAoH
muswsjll0B4oUCTk58gmnudKX7lRINlz6siO+LgOd4s90FC2jkFzwgegy7UublZgdDLbFb/mh0nN
xDHdtmN7PrRcYGtsewG4QBBKDrkmAvhPG/49kH7zdhxxu9YDLNRx5MBFujd5c9Z05cfJ7cHmGDsz
DlAJ6DWQgWtDaQYlh5CNXdeN7MgLgxBahiD03b8Mtd2eQ2s5BqIvQoKPRVBoOejlEiCyzU3/ZvIm
FaLJAApTJaiIbBe50jSS0lYOzJI84pJJyAoecZ/jKQbip4vHa+Gnix5mhUecW+Fhe/ROp3nsJubF
/HyZr8x/39h1S9Ix0w8PBbQh3MaOAPACETOH+yBGiCnxHEd5TzvLMf1xCY73DaTRI9IQkGbZleZt
XNy4Rby63+RNWyJb1zffpp9SAYHpDwZPGoIwCoqYI5lrIxXygHGGmORPpzxgkifN4eLTXXTnni6k
Rxyxs6MndNydvQ8XxbBcXyQPcCBJqcb7zJexXxCGgRcK6BYodF8e1CBoX5hNqOe7MHMphznPcb4u
j3Epujv6UozFf6zwvnIGeXxTlBvzYBCMb86O/FVuXmXeJwNkbMcIo56ABEBw6NiUc892fO5CG++a
150p9RzRr6NP0+1BXKYjik7YsK6mcR2n2vzXprLaJM0Y3joYEwZiqAQWEcKmT4QIgaCHUg+xwogI
RRBgF4zxHF2b14aDPZvHR/OjbT2RUjqi9VThQxO8XW8eek1G+cy0eQ7mirkMgZZhNqM0VNBrYmr7
MHIQ5SAqh91Kl04fgCIjAOLloWFqu628yA5NOJPSNHHMjGmu60ALHtiCBaZZEg4ACZQtfNdzmSej
iAVPNXEPZLuguF4eG5pnR0cXRptNQjpMjpJC2wQ6Qma4MUcTATPJPFKeASchKRJkQzIMMRLEJxT9
6XDT0H88mzfLPeyZg0awJ2hkMnM/+z8F1pTPVIOeQwTOWGNgBuXTwz70UBLBXIYi0KsfQRghLhhl
MKwy/7nFqOHyuATNcl+C7LiMCqQPnUAOKeRrxykbR0Ac6qYJdOJC3AsBHWoEuo6I9L3AJcILnb5H
9qhM+qzYGP9k75Lvmjfi8GEAM7amro+8yFO2DMEHKeRS28WS2zKiDhORzzhnff49KgP+6Qj/jOzl
Nw8ND8GgYB41GZzCvCkYmIirCAYIB4JAEQUFORKEszBkGIWjkdCh1keR0TEUSeNHDxFUlHWe3R+S
sInLdr4KmPKCkDKYaCSE5v/ydm29ddxI+l2/Yh8DDKjh/fLIa8a747UzSrLztjiXPrbWimRIsjeZ
X79V7HNpdvNIBwshwMDWqDtkFbtY9X1VRVpGoFa0FAIU0GYBiMDE+NLWnA48E6yzPGI1z5ihbaHv
Q2xb8bhk10hoPHdeSccIeGH4UoYHXKhCLCwSjSXJEOWruxIHPm/S+PSqla5jUQIJWSPyzR+/rR8O
yAF9ihx35WjhBgzMaIWo1iFfzcQqWNQQOBBZBT64h8eXW7KZpK9D80qryG61VARQ+kyRHgDyP98A
/zYGIa+T1XsD53XZAaegxoKXiRAOgStFUrQNMTDuedBvDrRAjjNM9OebRldHlxxUO3HMYT6t7rfr
h99PjgDC+zWmhdHIbKIRCxg8IIRk1ciUwTKVlQZIPXDRGZ1vR2skgXi8lGRr5+bzebj7ilYjrkUF
G+gVVPISdiKhIQKJU4jrkgGsAbqpmIos+hVjXz2uz5nJ5LW/wdT9l/DJTBnVUWbtOtv319vt8IAa
WYytbty/zHsugQ2RGJDjF40JCQj+jEkH4BycoIuv7t868vkNXB+3Uq87hr8dXCUWJ6d1LAcKRpGZ
AmVggEM44BP4CCIVCAvK1hKBEUKBcWT5khP8rWcNQ0+UHZ0t4NPXYYAA8zhsHj7hwZbpV8SYzyr+
r3/jVszKO0s9KRCpiOBJgWPJ4LdD0hTQKQSw/BaGclOl+kdPqMYDzV9rV6AHEAY1L4IdR67G9F+3
5RZTBiNQY5QBSkPFnVCOQ8gMAuNm8YlYExLJ3ooogNSOFeSLkA5Ocd6o8Gmjxk4s87x6p9TBwfz9
9n5YPfq7TwNMesp5aF5dTCkZ4noqpFBdwHnCtwNX7AkEWhMCxjGeXnaewKLv8Hjx8OpX+z5sYID+
a31BW0WV7imqZ9+r483BqeLel1ga8ikpk4QnTHLM8hQw0QIwJwNhskDupLXybaJF58WpPobqpT6G
bre7Yb2vHMCua+oGsNcPeeegIlUlARdQQKCEBMwKBgf4AyCaldaLyMyZqkE7aivSdpn4MIz3vGql
DO8+ACmlYw1JGoeCweI6jtXDbLDkZdFXZWB2FCKIA2aljSuX0ZV3H14hLO8+XLVyrjrCOzUTfraf
/+7/s7OfRRAqKikAeUdwX0LAytLIiBS8eMlS6rLr+UaGsV/YyPC0ld917IFt6JFE/+Uvq/Xt0Rao
GUk057kEAegnO5CUKcQIhpJsmY+VZEU6I9GTcVoBOolHw9fbgwDl4f754+rxaXg8AXV7jQCBa+Od
z5JIJiBAMcYRIAgSUknRaaVtKX8eBDucsa251rnQV61yHXsfBrMEomO/xrVDK5EUgCfStSIkA2aU
SUoWbF1i3TECZ4zaBc6pgr2YXlP7TNtG3D+bimurw5iJa1fC7oZFQsH/EoFTMnk9Vkr3P6HMaMcO
EL+OWLCiihMXOSeUW+sBXMaxRHQZJ/8lvsDIf2lK0yCn6wm/PfDhH9+Vo1mNKa6Ui2WxRECcBUQN
WRCXlAA2DutruPeauReXtzaHnXMjjZUcJ5+K7PhmuSMdH/isMjj2UB+Lu+bAXZWRNluAbagGcldN
bGCCSKU5AzRvtLEvwrbJuK1cw5JUOyGOpd2f35X5WgJZkM4lYM/Sa4jzETMbmpIijCwOPLag8o3W
8jT7VSvfriO01JNC+ddbQBL/fWo505UEMZFjAZJdlMPalwfGqqkjJhjBpKIlxHSuPt4O2IqjTEcc
dcwYbqYlIoMo3CmIqx5YM/cBdrviirgM0cFzbyKwVyvlmZDbL/Q4wIUdEYzs5AfD3bfh+eEB64Kn
7hJAbhHcLgcMAKYlaASBEngj4IbYNABDsdeD1HHk8zv5+Eor/dDZHFK6wwL6X0utyh4NUbMasBgw
hBQKbANHMZ9ZAnHcgmECaRc666zSK07z11PX9QXm2Mpx1Uq76qkwzxo/DRs8yn7M1NX9xAPz4OxJ
qjVioMAkWDAG5xUP0kSRdXhpbzdjNkLpVWefOFzXJvMKA3yr95/tqwIKmKA5JA4yz0ph2YlbzL5y
p4GYBPgjsCAA2QsnX26IudmPfoZX7Z9etSJ2FtMZc1jM2SHgHxRgLXSUKG804JysMkQzD7wxmQQ2
nSFGqQSeKgLjdby7mu2grTydtg7nVqdK8GfgG0/Dzw9fhvvbf00wDQIa4+BrAqiBXYWdOdFYMNKY
iNSKAlDL2qZZIrY/XCtRJ38HvzQH9n9Tryr4x1Dv5Thkg7i+lnXb6BKNSwBB4UsDb3GUOKkKicFz
4NnMAhtoJVoO10izWi2xj1ureWkf64XfwPW/f9gOd3gT2cQBKRuZ9dIAzsP8VAzge1ikxDhDOchq
qGeXYIn5HOcrl9O3rlrBO95oZ+e+9PstjnZdVpth7GwV12Ksn+Pfo08FJASmJznSFwof3sNWJ1Hx
LLFOpdxFZbXDDGdQ7P7pVSut6qjgjk0/v68eT1lCQdEoqODUFK0Jj8DZRQoJcLdlxNAio1WOijgz
08kg7eRuaZsrbt1s/f727ueHh7v1w++176CunN0TEeyyhOlg+2oPcVrmAsCSZlKYDYIllpVWb5Ik
PIhwJlN4eDxVby2GZaiFXx7XNv74T7zn8dof1vfQWlgUj8FhHkvAMgsIqphcBiCHHeZCGxVewaCv
txY20WomyEyJ5TdaywU7R4b/dCBRN59Xj8O2AA76++0TUBguazkA/kJIwxL3yZhADDaNCQ7g2nOH
Hph6wb1lnL2eBb2YsLWynAktzTuN+lIsUe9abxY9zqv/jTDw4+p6f/UjthYib7NjAYRBqOGwURIW
twBwgM/y2JthAUlxmpmVnWrBVM+/zmeAp/fPw/3z01/frzYfbk7PG/GdWvrbNWYnWrCxxkPMT0cE
XL8SlzKhDRbtYZerEMAaqQEYbBWLXAab1UtYYzpkK1KHT8Iv5yEg3T598Y/r2+fHfUmJX2P9he83
CLgZ4GJEidrZpxTxhjJSUk4qAAqhr2z72ehn2g/al2Za6I4WKzrT4qeE3p5xdPaj8ywZZLYUQFI1
eSaJZxDHiuUpg8OiOrM3T1r8dKaG/VNqdVp1/JVb2DrulhqTpQR3LK415uH2PyKBTolbBtxT5whQ
mxdsG8yMAH0u8JlNkP4irr+f5vyOnUVjkLTjqdz2SJzX/6r9gcdgholZiLpKcmVJpHj2AAAWUAKj
CTNY9Y0xCDmLZc0o7fzbjqtwgzySu9++HnEoLhR2eRQOaN4Uiem+AHAvJYSjLrocLDLQWRLtOEIz
8Uos+1DWK3XsOP396e75FMTZWMA0gCxZ9JKwAn4JggowuoTEElxSMJJp+HsWxSfDtPOrTWd+O+8d
TLfjYe7HP04pcmBnuKkVrfUx2CKKwvdAfAk+x0XwkAx+Csp4BdvDKCffLjIs5TnnBubvtdrbnvaO
Lgg1Ns5/XN0Pd6Pedd84XTtWsqnnH5QKAsmpJw7ALQlcMGl88jy7twAxUxHOEe/TG42Sm13HxHbW
Hmz7t2GzmlR6tNM11OeiIw2wqVTJEPck0G7rUwFf4JWIOTrjZ60tzUCNCLv1MpW3oZt1zUPCy9/T
zccjzdOizq+AEgB5yiQV7AVKsNEDcBricqGeW3j6yhmNtys0ncS7ahTYqY5WuyOBjb++v/l49+3T
7f3sZCQ2O9fuVSqwLYQkbBYXTijwtjTBCkdllLYyaPpG/cN9SRptmO18I7adN5/5jBUcxPGmngDz
STpuJOYsMa9hdSBeKkqKjxBKgivFv+G+9/lM6Sy3umx3HV0GNtMFrxq/fxpXZEpTXeBFFRdITrU6
IQoJxlmSeNDahJh0UJeEwTr+qzpNpThjgpM3Wj2H5dbecEk7CcHjEn+4Oblww+146mL8AYOqiYwH
x4mxyMxsSiQAvCEpqqCNFYon/Xaf8yTLmX79m57b3ojV0m3DL7ezjNdXgBmTFb3+iP8fO3bHCoeu
nSrZqmJoJMnguV8JYCdY60lkBXZncS4m/xb++2Mry/St+qjRT+llJmqjzJF8wp5vPYmhSeFZYkIl
9vYCliK2MEa8LpErZxUg1rfxJIepW3m3S/C5qaeYzV7eWgyYCR0CKwz5sWJ4iN5RjSldgwkJUWIA
yy5vJvRk/kbymlBfSC7mWaD3eKn+88O3zeeb+T7FzIo8sAQ5Zie5Kp6jUQnNAJ8ZAfgsFIVUGagZ
9Un7i07fvDBtczhh/tpUxS1dLdnOlrE5Z7sZVo+bz/8xnsSS+4MJcqwAMuW8xVY57KYUuoBhRZtJ
xuSwje6i05KXk/6DIOdSyfvHjZJCLh3hViizbPVA6r26vcd/d0Lu/UBNK9feFuTzACwIixTrh3jm
28GuiiYbFUWQkl1Ef6bTnG31OL7RKGLVsst0uxoWJZ7jhTU/GGz/q613+5/wUE8MDnYQYCcKsE0w
pEYMMAb3AOYoBxxXiw0vfLHD+Gew5uHxVSvm0JP9WGX8Mvzx26djopqP564Ni0DjAGTi1RUxOxIE
gMzsbDSaBQ3idjMV07EaIdYdQrVdazFbwB/xH2PZG0A18iAdFUKAfQeBYMx44FRGESzT6ey8Y/Jl
MAYj9hcLHrQSms4yre1cwuqy4urr8zdMO7vx/HIV1QP6LjQYgp0zeNyQk1CkIdkWAOgyKmHsW8Ss
qQRnTtVM3mh1tMsItt0wtd0uGnaHf/+Yf5yir1BMTiEBjgSwgZSqlgskyQg1BaNpJB6X7MJx8PPd
VvVxI/imw4e3W3Zsjvv+/vZpM6cqoWjGi0kAevEYU3GFWGzAtYkF2IYsx6j+LKpykm+q18A76H7g
K74bTsX0RzzdBnYx3aAFYrHkEMUgYiRsGzPEO6D1LOSgqKFe0DBLdMxHauQQcnnvxCC6ndzDrx99
OYVZTN3UhMP1WBY2gesAO4D4jMw7Zbx6wgNclS5EWhKjll9sJjDVC1YCT1sldGcx9VZqNS7mw/p/
NqfKgK5nhJNSQGGpwZxNxgPNijhGFZES7LlkbSM37UJOR2mmN51cH/xytWi6w4TAeDZ46ulksNoI
ALqgBh4Syth7JSjEdOOjSrLYcGHr6WH8lxIS8xPCIGjHAux6Xq7eDk9fnh++Pk3STQDc9yfE9ykn
D99BQ2yLNOBpoQTYXVkHIFjrrLIEtnaRo0jjVAeEgi+cySYtX7xqtVh1VNuIWftPezvaD0xY1AgT
eyIllsGDEwaeAzw79mfGWGvxECZzdkq9eDlAM3IjmtssGTH+co4ramTAPj0s+jCFCXtbNN6NwolC
LCQyhy1nsKwVhWCZR2ZF+n+Hm/FZI+rGdQxkK+ak9vb+yxSFwwq6sW8NCyDF6Fjw3p5i8FgWmAdI
a0hUgL6LkEGIt4mQ92cAEjyY6rTjYhlWdnxRO48FOU26fazHJv+oWtVbLpirarHiFGZ7lcp4d4RL
4EMMIyrbqLQH+5D2VcZ0HP31nGO54P3ZS63WnRr7jq/cpEF1ktvmYxOcLVEkJhyxFI8ESGeJA79E
tNQmBlNkYnLRn9rLbcNMq87023kWKH7+dv/l9v7Tfr2woQOrVfBnTW+Zwq2KhFKV0ZICcdYDZ8Vj
b0woIcJF5f3ZJGfWsn2pUQaA8lIZsXO9VE97nmvsV8DzXOOha+Z1KExiyrrAfuYSmzAAboXAOdAG
bOvMlzZ0XnCqa/Fao9ZqswTDuxUeejRnLzb9AWS22LnE2B4LsBiFLUB1csBb0PCGOR+BdXMDanum
fKT+Jb85Hb4Vr3MmcrxWZbeEK1O0oq4hRvF60gV/QJDIjAGDySQy7ccWK+eiIzF5mm3m3ip1OV55
Ea40aGW3lrSjg2THLqI643U4bUSuMSDV+2EYV9LGRHQ9ce0LrbGIaKMBFprEY5qda29HawQZ6NKx
7wBMHQRBYn/7fTgdsRXimo/MXIP3pp7DxKKgHNriPWOwDbHTnstgzByGzgZrBTGdFRnMgoF9uPn2
iBaKftjCSBV9jD9hgYJnxfBqEsnxZGRCxsJ0JNJyrnLhmr9yovM4/pkYcng8kd1Rphf8Fn65Pznf
O7RQTcJSDnHkdGyBs2sxHrl2VBpTfCbB4m18QLDA8cJOKqkUyoG8JJcuNss6zQuWWZ+36ixxCfxy
O79/rP7LkeM/Izs83hwz9vvoaBhSFQrYjwcgKAUb7wS2WQYHf1DJTNEBc3HhIr/WmeuMa+u82Wq3
62m3O7ZwYOgcb4YEr//L8+3dqafQXY/VFZp8tB6CjnTYXWbAaQC9dD5HDZ8xJD+z+zNDNmJxSpdi
6fWw27S9b5Xe/9sP4zF9W8mDVSVIxjH5J/AYkRAIBrG/xBlaItiQpW9Gdcesbfe18VmjlaGdnbGy
8xsI6iHLY1Na7wIFHU3kmmGrpFbo9BhxHOg8+O3oEzZJl5c39nSKvvjTN65aeVlPifm9OIuDimNz
It6rNnbajL02OniquaMkScAsQrFIrCmOBA06gIaFXhZzutNdeIRy1raI2gxLFTd0M1Pxl3eTu7L3
30mK8dIi70NQXBuSDXbWY54uUMVI1lrBlrCp+4WWek3n6KszfeOqFXjb0WKfVseaQ/nn2Jo2q3oA
ShEBOwQoHn/CQwXgpYokLETqRLHGmDe6NGomQSs960lv1nMzq1LEh/vd7advj8dPweRIw2W9iNTq
TIEYBrz8QniJN3d5RYp1JdAMWyi/3BHYmePc9QCLF1udbMfZbtz8vrT3q/tPjw/fh2nKkScLAcLj
fS4R9kkIEDqi1oTFkmh0gM/kZQWb/dhn6jT7p63Uyx5vR4f18f6h28037M88pZOUYtfwv5ousM4F
JoHmWjzTCZucWOzrLVk4llTiKpr57SPNaFftpLwnyXz9Tg58zMnAfzD5Ff6mNnoLhLtYR8UF1Xj0
peBJmAgGEcCZ5tda5V4JE6fnUx0Y67hPxpw+3B4Sf6z/IiSiqqfTmXlzjZeJSQPhDAvA4Fn2sdYD
OCIJmB/l0mct2J8R2trOjYXAjb5iee8j/HJjZvQJv/nz3VFjK7DihZlrsO3ks7BEUsvBjBheIm4V
4V57G/6vuCtpjuNW0nf+ir5MhB0xxcG+OMIHLAWZlmhpRMp+by6M3igxTDY17KZs+ddPJqq7ulBV
3eR7Ynh4kMhagAQKyA2ZXyqtFTuacVY0XFCmh8G3cFGIHmUbrAS/T5RpfXs1KKI0EF7ZGvMpMAvO
JZ4qp4SVKiVM6TtGWKfdgqy5GJmwuTC9oNpVc7y1/HOzXHV94txInDqOoQNKEStj0JWS3GLiMqus
rOtKIBSOTCoSehRkYbyPHrV2SG0OydFDRM3NVuHIyUsdBaeE1SS1lT4ApWCpcKtYZVQIIIyoCEk5
wp8IFOg2fgRZc0S1oYshgI7NgH/l1BfR6C1caWPme56kS6FKCTV8jFE13rpKSm64UgmR5p9arWXT
BYHLEbWYLmlfMXm1XC0b8TO9vdjcP2QduQHFZrxR200wjCL0hmAWwaw42PqhThW6sCzXRgb/LM/0
SFcHzhiHD5ZDE2JkaPvkxTtgOOs2BBBlSy0stR42YLQ+W/5occM4gqAyWFPzRHoxpt02ys6HZ2r5
4o4VPK7me1ThHIXsaW2B8wYNil0OrvVCoe1fy9ora9IBTKm2oV73I+tumOnzJiN5H4uNisk6xLCv
iAJVgYNmXTlBYPmROlIWgHE+gff5L8VBlPQcynDqPtMdNbDSoTbECOtreFu4lvXX1ebTssCARB/W
NrCl+QXP3Gh0BA9bZO1AXDAFG9BQUUkbPQPFhCX18hCVjUVxMaRwaHa0DxVTwYaovvnibvHj3vn4
tZBEtMUTI6DR0oBoekIiUEuUaIEj3pnD/cCUYT0LfNBcj5jpGDHtZng/XdxMVx1KmnTsVEtqSGR4
DotImRosuQSGXUhcMp/dn/yF0rFLCnrED7cSU6xl4W/cOxdeDzBjBGPc1FFUymOGpI1g84AEhy0k
HAnMaEb/rlDeLoXF0PQQuBgu8va7vFt97H0S5lChgbEIBFMB68FWsBdohWdltXU0ai5f6JO0nZck
DwGi4aKx+7C7D/2I46idROQzXvOAWDaYvoXGMwO9mSpvbfAvFXL3YYxiM7L4tW2zHf7aHwdh8vcW
uYbXYJAxkJ4gdYDpGA22BEEGbMDwjIJoF8od+NfIcRD2M8IR9bSNqvw8vevA2+MXDqBmUBR/RoPK
xBPDQxJQkUVgvDa1lIn2ZGCnjbLvESsPLrbYjvP7z1+vb247IZL58EkYxbFr0HwZhuAz6B+sbBGU
BMMU6+iyA0gG3eYKSqZDJ7wF7kN6UMWFqGpOQxsXE6Vc5TiM5pdsPHvQyWwGCFHoZIqVp0nApEVD
nVNRCfJyYnFPy7ED5b7TCfjWyLAXlA5c/i2ruX/AVSC3VQbyLzlmn/qkmaiSwawIj6E+RNVgKRL4
KAhTKp7lUSs6OuT/7zxSDmYIN40QH3sYgv+9vdksebuWqcrughg4ZiNrTMzBXBWRwAwAQaKUtZpZ
hLPqibKioS4JIHSGOh2XvO8s+Me7sP2ybd0Y9A7UjDIGiyUlVCOkxAA24Eo2RZ648oI8z1O/b318
Bvf3S9rlcC1wu6AjoFVdF+QWzIdJ1FHx5Cchtr5NdeakYEhxMKFZpOiOTAZkwpOL/innY/lMMYbp
9cgYZkTtlsDvf94uDh+Xem5hDVgMEk8oj0EM2AwF7QnINFMHOm5H7VstiJmNLYYZb9GcPy1v7hbT
22q6Xu1RK2V2QmRvkTU01oL4KjmUTQoj/mosWRCMw7gzYCy9VKNhiyVBwyBQC6K8n9U2EMBNen9e
po2Md6DiRYkZkAJlD3e0sgKNogDGiDbEMvMNMn57syB9Mcz6tXxJ+hurg+8iQDvPeZz4/3WuMUI0
qx2vq8QwqpZhLp6nFouZ2aCJ0UTSJ04mn0B56TxwUhLKx6hXfYCULeroEMGUOWVgdYbKa4Pp80SC
HAEmIVWdI3Ft8kcdUkXLXdIEGzEDRQ5GmZWABUWGYzZ/ZC5M4TVwJpD+IaG6JwJIOHTc1ylqBKun
wcYXt3321BwCLxgz/sRI5AtcvJ6NVmLJ2Fv4Gy6lLTQf/o9OAKejSNyDxQu6Dw+GNowiGFD7QfUl
8YmAo7btI7BfeLugXgwDwPLFfcLiZnp7tbm5W643031Nm1zk6VQ0x9qxroF1MF1h9mnDnzMgqquB
gQcPF5+XwvXq3YewhYXqDOEQEb1hDLmi0Nf9OLaDIkYDh46wAyrikUvXHJE2QWOnqBUq6RQM6ujk
Hxcv4b/GRQuQSMfo5oOEkTmW3/ztAf4czaagCdRTsDYqzB7BsHoQlgL+iQoUDS1As31egG7Z0UGA
oc4zxXCMHKr9wspWOP38jvUMO52iYpxi+p9HqG6d8NSUwJ80qBpYf2L0hQy7tvOTkrqh+BIz1j/J
/u/H6cPmr61a3uipAkMi8tFQgL2rQJoqjsD0XuGhL3wGAUwsKVCzpDlu6e0bP4A/0N4vSJ+ZES47
m3Vmu37Vm27DXNIqgsznNbB8jC6H9VZXgQvHDEZyh/Ri073rvSR6Njbf8xZz/vavu+mp3PuG0A4I
hMPaRpUF8bXxxNMheyRRK8IRlj/UpcrSbaTsfT42ZYs+SsvRyFBOndIuykqGDLhNYA5xSg2jMSG0
PLXqWyNDD8V5WjHnIxxjjll0TWAXVp9sldFdBctECfcs+SpyA6qVCb6ylrmqpsrH4AlxhI9DeH0d
U0KhPzlCxLQ/jT81mmMZEi8jMFQOn894jPIErlUZo3SVggAJyIn2z6uNsm38ECR5vlkSPR359vOZ
HNb4She7Cl9NUp4RzEkuVMXykXViDMEFsRijUY4SkH5PSIfc5sHCXumipHMxMrmgqvYm993y4fr+
4Q69h906Rzu7j+gYTOSozSHikwO7w/CI0BmwQLl3JrBnZR6MdHMgtXb44Ek5ghHZcI1OgWbh+jfu
YuDN9CIwrHpRyZx4grUPvQYlIziBsRAM+Kz6m7yZe/qKYV0Pi3riRXMsLTxd1F8QkijHf/Ic/5lV
ke3vWSxKrDOJgf+Y1ZpArjjrTRWxxhytqdX2BY8/dvQceHB7tzdsOzbs6U5vvJ2uPt504nFy+GMI
ImHmiAzo3s9yMhjYRqBuSZoiMYz1+HinlW73ckqGSrecDhJtwQy4aIyUEZ1JMq0UowSEdZ3d/Bxz
oj2GmBJnXWR1/dwM1G0nB6Mxt/fLIdCh5i1neDo+KOJzufxzA9xcNl4dYbcnRC762nApK7Ab8OwO
NBCnwFSKStCoqAz1M8qcYNuHDQa8W1B9rYZGp8wwHI34fgAV4PbLqd0bCkioksTLYCpqsW6pAj3b
KFgHxDOhEObJp55vt2ympGBY+dIqYgdp5GAzLJraMGRb/M1qdspRgssEVjuIPQzIxxqSFAxfgnn8
YMJ7Ihhh4gVxNHaUHKp219w9KYYzGx6QKJDhvTGOgi7sXMfZcSx0w0elq41zylehJhYzboGPYu0S
kmBT+kST1i9vULfkHMFi6Cu1MMqRz8tJe+yV7te3V4uvq+ndzXwfwXvKmu9qY0bQwNIIMErJKgPL
CwfNYKS8jqLn2xq2VhDDh5AFeJH1RPGfn+en21k5n65AQb5brgqQk4gKogPhVUdkNRi54mW0VQ3a
K/eJUOrlE5CvvdYPmWa9x3qj4SOjUf3RYL3Q+W0GktuqbU3NRKKTN5johf534JcpYqIXaBS1AEZj
hCW6flLvDUeqhYY3JbnD1EurcnSuHpStPB5jjNpP8mD0oBbEYYFhBWpQOwUnOaUhJPV05cqjgTjd
J4pB5PjbwSCWcscvH1d/3Kz2CrvMAVkJBJIwtaxEpGhhWARglqLCeJbkfW2J4AeCMvatFWTYEYVd
WbmvN/15PlKpXUL/nJm6IhKR1yJYi8bWQJGWmjHYbNSkUTra5koi9MhcAFMeBNB1w1Pb2r8su7Bz
YBVsIh2TrZQhGPGDODIBC4xTpYxhKZGUjocmDTro0Xk9QqdpWdBsfdeBx8sgcTWCnYtQOYNSRWrR
KBUyyuR80MyyXupOp42y7yEwslVTNixLeHv/cPF1NUe9xm5NlQaxAHP6dM1IpSTmYwYPxkrMkcLc
wi0Tk9Evzupbeg6pEtvbxVhH8PjwYr/m1Q5M+9PNDppBwmLGqEBaa19LBsasrh0sBAr7pA6uonXN
QH8TKpoXARTaQWr/dHYccvuns974RjbdVI1VsdtNdA5AXaHJjOdIOQUf/0cmVlNKE3FV1FjESAPj
dQjsHJI13EdgwcY/O5Ow19uRZMLek8X4FkOcA7zYHrTnMlvnvRKu23rOUpGoMfdJEywcQDiprAq2
Am4MqxS2t1Px5eo5l1SUgxjbcItFXyjG5ezxY5NaiWZbTjekOdeQcSdYkGCqWQEfxmgKEhGYpAhG
O6EIkc/zfnd7OJQSv3+iGMOSjaiLS9XWhpk+7ssUUaNySSyM9SWpEhRLeDDHEdXSgZkdiLBeyZj6
OX6PI0WJoBc97FoT1l/j0y/XHdf79nSaCAU8K5sygvoYCU+VlAiFlo/6EeNTU6KEkR7UV/+NdQe6
T5wU1Go5MgS92AEm7vL9b6cbdHC0clLsDElmnSWyTpXSGv2TnIMlAXJABe6MCcKDgXEUSaBouaAN
URkHtLF97d5B0LTOQCIRVF/YQVjfLaAIUFiQllcInEtpwOJJPYfpkcBo6G7IpjVq5OX87LVxsOPz
EXjGjdWcR4ZZ9Ij0E3yA78oC6MEBVBxVC+WOi+oRejgdmROuZz01Yhvy3aZyGL4vzwWTg+a+ZTGg
WqObtCBvrI0Ko0oCfUYw+Rhpej5C2jU5UB7iujiOaiQbZRkc2DmRYEdUOiHSI0Fw1xoBOZUHUoHH
JKKfVSPiqV0xfK4c0LAYqNUCT8iLmoiL1Xq92BeGkfj5c8ISobnWA3AY1IswY9fD6qskN1h/R2nK
jwaRd9otyJpPh5okXGzTrB+Wd/dflt0gL5FjYSSrE7d1RUXEEvawJGHjWqz5I11gyVgxHuzcb69H
zMj+WMh+FMFsOv/98XMBowGGldgWpc/o52Ca1FhFAgNGQMQDoVYBeT4ZGbgEk4A8yyHlez11v3dz
76QklY/Qb83ORMEiXe+XH2/Wm4dOEeCmSrjTJIJyiRV3EN9ARFfZQEGMCw+6gSE1GPT/j7XFSrLL
UVs7MuppG6h88Rnrko06pVWS8IEIRqNhlS4jYmXg01WecBlEHan3f1dZxj6V5RBHIhP0Yov3UHrK
bhFgK0e24H8ZYlpSYDNYSxbh+TQsQ+coAoWQyIMxNZiUT9jMm0OKZb7VpRTLHw8oxYsH0+FOm3nJ
gBv43vZP3sQ4GWEokxhplSjmfTJVGQ16BaayINZliPpvOTVo7hUjtUMUbGtm08WITbDNCKc7iEiu
FJZuz6fmmlHvEM2fEiy8zSSsQMuqIKMOEk+knH/SgXkkLa69fVKSuRyhfd4HfkT/0XqXFd9wuXy8
sU2z52AYJ4VB/hzLolBgHobjKYAJ2jONn8i/hNFWJOcfdjq1j5RDnQ+tAjPni4PlZ8/eZjhP0Gy3
AbvaorqReaQkNqNOW6zSzKmHAdugMaXDaQfLEYb9RITYQYTOfOukJHLkI81lG6ge3qeLx5vNsvBf
EG28CNFUypmA2TagETHvKhKYI9554wLvVVQqmikpGElBwotHTsTGMoBqLKUcIqvqgMY9EwzMfBYr
K71VQnmpvflGJ333iZOT+s+t7X1+v7i53kH6XDze3UHDP8AQw/QWjL+76WI5mX2d3G8+LR8mnx/u
4eU1DGEzffi4zEt+8+lmvbvxQ56azXT9+xWo+FefbxY/TBpUjgY+7GoO/26WP0xI9+J6ublab9rr
ZcdPNU++rXn4ozMqmIHc3910jjW0xvpjTIp/rcuTX88nKJq704ulsN6ubr9OENgD79xfT1o7/ofJ
5T3IjB8llafifPKwXN8swJz/kbz+jvzH95P1HxiKtLi6f9xcAVWPq1ybETpbbN8AmwSeO/kNNN3p
7HYJDWDnbbP0lL2a/AE3wQjatXmkj92lbj/YxLaXSR738Z9fz95ffnBv4Lf39auzt79MTrb/X/7z
XX34tYuz/8l3w9sPv1xOvlvdr6r5/fR2uZ4vF99PTn7c/xxooL27++XEzTc3X7BU3eXDdI6rd+SH
EWFet39MTsKryTqjHUxuUEisR7uiQrTvCHgH9tqHs+aFCWrSo++wop+4LSAHXGMFO+sx78heb8Kc
kvPOOz9fTH4+u5x8bJI0gcT5/WKkr30//NA73zUJrDizmbZT8mrfz+5n98wElvR0sUAwzgkQjTH4
neXx/cnrjHo1cXhl8nY1X45/n4Ksc/fmzdtwfCFpecrP2xlv3/n4OH1YTD7jXI/9cNb2oycn75rd
PoFP9Hm9nJytru+fXAIXly68nrz64N7Hg7SBKrn/NAbe2YDx8cTGoORUdd/59fwqj8hdHtkWE0Fa
2tTk5LflDIXxeZ7+Q/10aOMw11dX0V2647Qx2r7DQOuEd87O3av6+EuyXNJXV2/OfnldR1huB7tR
Zj8HTT+X9T8uj5Mm1KluaRP4zodfzsLbeJQ6sIe7tN1lDndwczbTmxnw/vts+cAdGMgPXw+9xDvr
zf57bOry7WVml8cXz6nZblEwabfv/OfkDjjHutiozQbNI8BiTOedd07+D1BLAwQUAAIACADyEShK
D9QNVeoCAAAeBwAASQAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFu
Z2UtdXNlci1pbmZvLXRleHRhcmVhLXN0ZGVyci50eHRVVAkAA0cRclhHEXJYdXgLAAEE9QEAAAQU
AAAAlZRRb9owEMff+RR+mqBjS5xAAlFbqS1UQuvairLyUE2VY5/BUmIjx1nbffrZCQFWQOuesPH/
/7vz3cUXDw/j6Wxyd4uuLyY341GC8ueV0S3vUWVlDoU3IoZ44/mDN4f0mzDrn8tSZMwbQVouvLLQ
XqYoyTwhaVYy8F4M96bAvy7b2McdlCC7OZ2do0/z2XWSuI2lXCkNSfJg3jK4VK8uzHmSqBVoYpQ+
azeWTx30NENn6KDjZwsjhPxX7AOLfO77yEa40qRYtoL6APdiFuIhQ/8R+h9Sm1IrXNP7OIwg4tvs
nOKDUT5mcdF6O9FIHG+jTUEy0JX+IHrn3HH6a07Ux4N0GL7njDPIQZokKcBUniOg7rtmjATnoEFS
6LSipuxp1B+wwU5hFC1rugY7K/RdgPUdrpZELiwm3mIGcdw/hKEaiIE6sZkGaHdag10XPehigl0C
VTlcldqmbJqTibzWJHeQYQPhPlCKt5BKUBWnMW0m5d7o071gVeuwv6bRMKZDvp/SXAsDOklSWAi5
rceP6Q2iShbGVjtVKuvuO08sHTcXBtpjsK+5UYQ5ur1xLowbqDZdEl2jT7qolIVYSGAoU3JhecGW
58fhcR4XUhRLYG4v5KLNVJlmtm84bAAcUxocB+TkLQW3Gecr82bLjntbJ2B83FkYos067nci5BQK
VWrqWof7TetwTMLgXesagE3dOHFUi2HAQu7TvT43sriR0TTlgD4/WWE9K3YxkbZ5kmQd9FzPo8uo
Op0Ls7wnC0i42906ZLV6FPCS2HdrsMYOAVNb/y8O684c9V6LX5bloLZvSk5sKoJk4jcxQklHvt5A
F1qVq2plocMNNIgJHIO6m20gO/ntogK/QdlasuEWhT7krufSZ6GfhvZ5rGuzJlxIdsd5Yf8DexfJ
1IstcxBsHNSPfMTKfLXzbQtpumhncu3sB+HGAWAf+NFfDteHg65e44ppFAcot7pWUM1NzDkf2u+0
1ycMVVPW+gNQSwMEFAACAAgAKRIoSm1Y0ERmOgAA5MIAAE0AHABhY2Nlc3NpYmlsaXR5L21hYy92
YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0ZmllbGQtY3Jhc2gtbG9nLnR4
dFVUCQADrhFyWIQRclh1eAsAAQT1AQAABBQAAADkW1tz28aSfl7+CjylKNug5j4Dlo+rcHV0Yssq
S3aylUqxQGAooUwCDAja1v767QFICgAhWUxSuw9HDxbFmen++t49gK/KItGbzdTq/gTb1fqjzlNd
3pRaW78TwYj6Y3QVV3f9rfBz/rlYbld6c/75w7tP78PzF+fd86OLVOdVtsh0OX2cy+izLjdZkfcZ
oJFfpNq6uV/r7tJvStiCWePLuMq+6jNAVwIb66on0tV9dVfkRgbK2R+jj3qzLvJNNl92yD0i8aeN
Lq2LoI+JIzwaBXGlz2+yVQ8WQVjaCNtIWYhMMZ9SPhFSWfAFQqMP19aQnO/jxIKl3yyMJhhPhDXG
/C0mmJwB4HVRVkenMB65eZHfr4rtxvr0qYUxoFhg7iFbctexcSB8Wwjs2L6QnowC6Xo8GI1GBrnl
fou/aOs6yxNteUVRTS2GELI2OinydDMaXd9vKr2yLvJK35ZZdW+0W+mkqpHoPAYtpqORX8abO51a
N3eljtMDEARYss06rpI768+t3oKikmI1idfrpZ6s4iy3q/rAaBR+T/TaEO2aOfzNn3luMHN9P7y+
tsbXF2+vw7efz1r7jW8cbP1L+PFydnH52X13AYeC4KM5FVcW+o52P/N5nM61XrQoXIJAHY7+h49X
1+Hs8sPNRfTfo9Hn99ZHfQs7N9aljksgticyHdn2G2tkzs1mN+FvN0eRseOKUcyFUaz98IUgjtH0
75YllfrlD6u0v5+X375b1+//5X/4dSCoRqO3y2IeL62bMjbW2i4W4JvjUn8Fz9BWclcWebEsbrME
9uwMeDYdYcWYkIwBzwkXyuHY8qNLXX0ryi9HeP+r0ZRcLBYqVeBFQls+mKjK8lsr1Yt4u6zAhsWX
TFubqijjW219y6o7a90E3fl8m6dLbWWHgP+b/JGwIsPU8M/A2tHPNzdXfg3gesd/A2tLXRX5EStB
TmBFHd5hdXn9FKtR4+rg4jvfn06f6esQFK2Vf8df4+ukzNaVX5S6g6x2k/kixQskrV9vopqR9dKi
jjV2N5CXjPduJsl6PaWEno1wh/Cvev5A0ToijHHMJHZSQ3g6/agXr3cHptPr6n6pveI7pLf4zXRa
rHUZg/z/Gv9g608/nQE6Ka0x7JncTTHCZyNyEihC41iLhXVgYAg/E9zzjjQgGYDc7QOgVJyN6Mk4
Y5D0wKOpHDWnQVCt9Z2asFHT4UtAwZQ8G7GTYFCpkrlD+zDCpV5B+E2nG13V1B/B8crq6ijITEbR
UAoMQs7kHuKOYO1qDLOzET/N1dLUgRBrWbVItg3CUkOySnogd2r07+L8toaiCFT5/aEaBVYYnY3E
qTASKfkQjMSkOP1Q/se1AhDucSWQj85G8nSuySDXNEs9SNMr7W9L07nsVy7yqIxXDQjhHGEQ0BOo
09wVK5Ik+AFDTb/2jz3tQ3BfVeXrI6y7sOECNFKfbaAodTZyTtOGjueJszjWxq/QXEB3OJ1Dpc0f
XOHTx3dAPd9U4Kzzoli+Oj75og4nIR/01NBq/ESCt2J0GkSBGPSbR4zeFXFqIAKpVVaZ9DFO7qAf
qPG9eGVtoam8zaELWhb5rQGFGXkA1ZyuQSnlACh8Kigk6eOgFlmemTJk/oYiNU6LLbRmBgWlziAK
xgwKciIKniTkcRSr+H6uzR/hal3d1w6MMZTwIf6YOVAfMD0VgMb4cQCbKi6rnQ7eQ9GFZr/YlkkT
S0QNawKi2pRPdmJIzWNKeiG1hwHGqBqWDtpFTIsfUYYd77H7Jave6ds4uR9iN58zukDJUQQ/MFL7
yIR6RiFDYHEafTqfL7T18nfY2WQf+GC6/jKPl2fWrMmQRqX16q/Q811BRzRdmL8uDZb60+dMf5v+
YfBIEHxPa7JaASgTifIkUAnHCcSTbUAZyobgVZl9BSQGEsRhkV+ABrJ4mf1PbNohgys6QLoti+26
/mQgCY6cGpMhZSBBy2c8UJ2IichYP4bJ2OOAoaWcLhKKSBcIk5BJsXMaEIFl6jwAsZ7JGyKuzZtz
DHmAoKMJeLhd3g0zilBo0xqn2BFz8/TDYrGB7zSYIU+Lb41jcg5B1yFt2EoOEhN8IleKBLLSzolx
llevrFYirusBqTuGI66Ymkgn5ES2XEOj3D1hImGYNSaDAmNGjcT0NNYLKiSxzPhgTHckk0FRBxfE
FkhsLbN5er9MJ/BPNn9q4nFYQhmH+aVOmAb1YaLB03pEAQKbevaffYEcoJddmu3haRFrzjWBEdjM
WX/W+0tdbUuDGaN6Lnmgtm7GoA65NjWt5imXytpvnH37s/lQq1bReqI4idycMtzI2aFFDxKTJ2c3
o9Pdor2Kc0h65V9QEIzO1heY1PNq9mex6ShmT33Aam0qjsOh9+PWbL9/trotIeF8Lb5o4/FY7FXz
fII4TdIewYOCODkoiP7HuQT7j5OY/xWJIUWBxBu9+hZn1cy0v/FySN7kaVd0JEU4RQsrj/Nis9R6
bYg4zl7M5OXLCR5Oah1ExEkQVLJNlU6nsxmeTqu7bLPzaOgNDeHZoijHDxuaSzMYxbZl3T+8Nr17
3cC/apGp115jmD7w/h4RLd9Yb3ajST2A8N4Vwo8udhIkhFwI62uRpT9E/BxYBtDflKwnE5YK+pQd
GEZp/3riGSJSDkPLfBUvl0Wyk6eFcZtnkG5nsPbl9WHTdQWYkvfbSn9/81Mb61+VqBbFgaLcogxd
shD9e4znyIN5+iCP8fpPeZUto3i50f/ngjUjcW0qM5h3xZO0fz/yHPFQ4jyI97OO12C0JIaydav/
X+wG3jM2MJo5zVw9yVNlIkmi+jKBjyfNncv1XrraSxBrs0Oyf9HyDHYKgy0O7NzNfZ7cxJuWngz9
V03Yj3uwXpyNz96YHGAi7uM2f1cU6wYYgcI/PhAzl6tE9u9engFOolT8I+DCvCrvrwpogMd/h1zd
MFPVEw3j/p3NM0RzcEJqTi9aTjXbpdLZuiy+379updktkH3dAAMkf0+GV39LpS9M3q6B1zfTMI6O
Z7PFNq+fscXL2Tze6CnDvLkyOq2HcGBuOfQQ8yK9r2s+rq99TqSE4wdKh6FBqPoC58ROhGOrT+ih
DxHTdvN9ef3p4zu/yPPmkWNziXJyo5LqRT1FmRZ3czuryng91KU8hxCd0wMh0yTz3hMO459Rsc3T
OtUddzqUQ9cEo9ps5ke7CL/W5dcsgVkuubsqanUQTHrdxDPIMq6TNln4VWuWi17ZfgYtqiEo25Su
1zrJFllSX2mJXt0cesbWe7rGYgH95u89c44be55Zs3J3T2e+MCzrqwoGauiWsD7so6mWpVgLo93L
68afZo2PzWaNLnBdP/6ZIFLWPxZEjvXPBhGykt0T+frh7G9K7B7NW6ZKa2ssmD3PqrPpyLLK+Pt0
4AE5LMw7C/sfWEgeO5EeFvB8l5vht2GSZo/Q2vQXMIEiariv9wtGaM6FozirTwwumKfwpTpmYo5Y
pdM+InkK9tOGFkZmYdH7MQv4iBRhwkiCySOSYPrYAntsgQ8tGCbZurXy8BTYKhfLvrpg4jFXvSUZ
sgnQGr3bvRLgX32a7l5QGYVlWZT1uxO7Nx8OR8XoxqTHy+1qvn9bB7PRaORleVzeWxer+FZvpqP9
+w3fD682WLbV/lIQBZq2XvZuu8bozHrNg0iIIIps6iFs01D6tsuUZwcOIz6SUvl+9ObHbxW12UlG
jzHAlzUGCKPdxfmN3lTXd9lqF1s1GkcwFfkCMOAgsKkT+bYjSGQrP4QW0BciRGgIzWNUe7jmx7hU
mhgv6+Pars2LPm1oSvLQIyiwMQqYTV3ObcXMnwEKmSIe9Jr4GdDahDvo5nNxhC5hC2S09nj7NRaI
vYRD8AvGcvoSgGKPK2XeeyI1UI6p7aoQ2Q6lXqAc6XEshoB2KU/qS2tTSc53bzttzt3enjZ+SITO
Ef6FUryO4f5d+hBusC7mYaRsRaVnFIxs5fncZoEbBDQiTsjlEO6G4jDeZq2FE2MxP/ICzAlNjnE+
pmCXYeH4FNsBC40nEGk7LuU2jULPdxR4ReQ8AvRxze4W21DnjpZHUOfpQg+qdPd4YgCvwDJgPmO2
j6mwaRAQ2wki1w4JDxWDQcR30eOKbeg+pd5mx6hBaJK60BylD8gPXzIWM3Bmcy1ujalAE0JMYCkm
BYVI930EaQj7EP2+z8wbcwpxP2QIBwBvuylNLJ2b0y1eiggy7/OCLwXtBc5HvSqq+qHYrsnbWGMy
MefMyzHWa48ohRlzINdEIWgJ+7bHvMjG3ORU6hBOKcBoXsI7f5fNS8jB57vHTdFeO5vzYz7Dujve
15VqIQekWshaKtDDMoaxZH+tPJaCTziaKKNOysJAIG5zmNFtKhi2XZcFduhHFHuQGHyOWups+pzz
HsUeFDUEJe254Y3vW2PcaBRwRDyEfBlQ2+GQi6gjuQ25J7QJ8T0VYoDiPkufQHZYgbDQgSkJOoYp
adyD+YsuoZoWYH16wIo9JpkxdshdsL0KCeiMC4gQEIBIFJFQHWNtgdwTHUa6X+3AdUhyBJfOHbJY
0P6E8Ba6gLss2Rj1QpGoYTsQPrIObsWRq6iNqKtsSgPImq4D+TPwucRSBpFHn4TeZjAMv71j1EVL
h0TQex9tngr75f26Kvaeat6dqH3V6N2hkhIioO9gHviqAw7rSRfSE0iEXaxI4LmDvnpMuQdscQws
UQdg31dLMiF7SMSZYIMGmAXCF4EdRFB7KIGa6QqC7QgyQBAFmLgSt9D06HQALJzj6DVf9nzRL5Ii
Bp0Af9jbZEPTc0kXGjACFYZGHMLXAXu6DsVMEGqs+gN7As3HDAlLPZxqAKcJGdmeguLNfhQfU0L3
1mM4MoEMKdIDr6MRDmzPpS6EDuZShoEDjjhovT7VLqQ5GoA0p7XqzOF1lpvHzntA2JE1GuRIyaWK
bBS5RnFQ76Ang2iGEAiIz4nvq671upS6IBZsAMSC9ewXb9OsmGzzrNpMXPP5U256GzzB1GQW+AXA
qFQeh3C3I4Kh/BKwrQcdOdQZSl1JAok4edKiB8rDVj0styWAed05kgC+nO8t++c2LuO8ynK9V6Qy
XS6KTHMTIRv5qu5tuO1RyIkhkx7lSgQOUoM27dPrgmFqAAwnPXVe6srdwowMAWE2w78mKoUDzXUY
2ZwyaA8UKBLyc2QTz3Olr9wokOw5dWRHfFiHu8UOaChbx6A56Te0xVrnt0swOpnsil/9waRm4phu
27E9H1ousDW2vQBcIAglh1wTAfynDf8BSL99N4y4WesAFuo4cuBLujd5fdl07cfJ3cHmGDsTDlAJ
6DWQgWtDaQYlh5CNXdeN7MgLgxBahiD03b8MtdmeQWs5BKIrQoKPRVBo3uvlEiCyzUz/ZvImFaLO
AApTJaiIbBe50jSS0lYOzJI84pJJyAoecZ/jKQbip4vHa+Gniw5mhQecW+F+e/Rep1nsJubN/Gye
Lc3/39h1S9Ix0w8PBbQh3MaOAPACETOH+yBGiCnxHEd5TzvLMf1hCY739aTRA9IQkGbeluZdnN+6
eby832R1WyIb1ze/TT+lAmLezLZdGoIwCoqYI5lrIxXygHGGmORPpzxgkiX17eLTXXTrTBvSI47Y
2tEROmb8WOhY9Mv1RfIAB5KUqr3P/DL2C8Iw8EIB3QKF7suDGgTtC7MJ9XwXZi7lMOc5ztfmMSxF
e0dXiqH4jxXeV84gi2/zYmOeDILxzd2Rv8zMu8z7ZICM7Rhh1BOQAAgOHZty7tmOz11o413zvjOl
niO6dfRpuh2I83RA0Qnr19U0ruJUm//bVJSbpB7DGwdjwkAMlcAiQtj0iRAhEPRQ6iFWGBGhCALs
gjGeo2vz3nCwZ/P4aH60rSNSSge0nhqt75rg7Xrz0GsyyiemzXMwV8xlCLQMsxmloYJeE1Pbh5GD
KAdR2e9W2nS6ABQZABDPDw1T021l+eLQhDMpTRPHzJjmug604IEtWGCaJeEAkEDZwnc9l3kyiljw
VBP3QLYNiuv5saH5QumjBrjUdUI6TI6SQtsEOkJmuDFXEwEzyTxSngEnISkSZEMyDDESxCcU/XC4
qek/ns3r5Q72hYMGsCdoYDJzP/s/B9aYT1SNnkMETlhtYAbl08M+9FASwVyGItCrH0EYIS4YZTCs
Mv+5xajm8rgE9XJXgsVxGRVIHzqBDFLI15ZT1o6AONRNE+jEhbgXAjrUCHQdEel7gUuEFzpdj+xQ
GXVZsSH+yd4l39evxOHDAGZsTV0feZGnbBmCD1LIpbaLJbdlRB0mIp9xzrr8O1R6/NMB/guyl988
NTwEg4J51GRwCvOmYGAiriIYIBwIAkUUFORIEM7CkGEUDkZCi1oXxYIOoUhqP3qIoLyossX9IQmb
uPxf3q6sN44cSb/rV+xjAwPW8D4eeXq82167R92eeRvUkWXXWpYMSfZ2z6/fiMw6kpmsUmEhNDCw
NcpsMoIZjPi+iCA98KskbUhZSGA0BramjECtaCkEKKDNAhCBifHS1hwPPBGssTxiOc2YoW2h70Ns
2+NxyRZIaDx3XknHCHhh+FKGB1yoQiwsEo0lyRDli7sSBz5v0vj0ppauYVECCVkl8u0fX1cPB+SA
PkUOu3KwcAMGZrRCVOuQr2ZiFSxqCByIrAIf3MLj8y1ZTdLWoXqlVmS7nCsCKH2iSAsA+V9vgX8b
g5DXyd57A+d12QGnoMaCl4kQDoErRVK0DTEw7nnQrw60QI4zTPTX20pXR+ccVDtxzGE+Le83q4ff
T44AwvsC08JoZDbRiAUMHhBCst7IlMEylZUGSD1w0Qmdr0erJIF4PJdkY6fm87m7+4ZWIxaiBxvo
FVTyEnYioSECiVOI65IBrAG6qZiKLPoFY18+rs6Zyei1v8HU7ZfwyUQZ1VBm5Rrb9+Nu0z2gRhZj
qxv2L/OeS2BDJAbk+EVjQgKCP2PSATgHJ+jii/u3H/n8Bu4f11KvGoa/6VxPLE5O61gOFIwiMwXK
wACHcMAn8BFEKhAWlO1LBEYIBcaR5SUn+LVlDV1LlFmp7elb10GAeezWD5/wZMv4K2LMZz3+7//G
rZiVd5Z6UiBSEcGTAseSwW+HpCmgUwhg+TUM5baX6u8toSoPNH2tXoEWQOiUncCz48i9Mf1jV3aY
MhiAGqMMUBoq7oRyHEJmEBg3i0/EmpBI9lZEAaR2qCBfhXRwivNGhU8rNbZinufVW6UODubn3X23
fPR3nzqY9JTz0Lx3MaVkiOupkEJ1AecJ3w5csScQaE0IGMd4uuw8gUXf4fni7sWv9qNbwwDt19qC
1ooq3VJUT75Xw5uDU8W9L7E05FNSJglPmOSY5SlgogVgTgbCZIHcSWvl60SLxotjfQzVc30M3Wy2
3WpfOYBdV9UNYK8f8s5BRapKAi6ggEAJCZgVDA7wB0A0K60XkZkzVYN61FqkzTzxYRhvedWeMrx9
D6SUDjUkaRwKBovrOFYPs8GSl0VflYHZUYggDpiVNq5cR1fevn+BsLx9f1PLuWwI79RE+Ml+/tn/
d2M/iyBUVFIA8o7gvoSAlaWRESl48ZKl1GTX040MY1/YyPC0lt817IGt6ZFE/+Uvy9XuaAvUDCSa
81yCAPSTHUjKFGIEQ0m2zMeeZEU6IdGjcWoBGolHw1ebgwDl4f75w/LxqXs8AXW7QIDAtfHOZ0kk
ExCgGOMIEAQJqaTotNK2lD8Pgh0O2fa51qnQN7VyDXvvOjMHokO/xsKhlUgKwBPpWhGSATPKJCUL
ti6x7hiBM0btAudUwV5ML6l9pm0j7p+NxbW9w5iIa5fCbrtZQsH/FoFTMrkYKqX7n1BmtGMHiF9H
LFhRxYmLnBPKrfUALuNQIrqOk/8WLzDy36rSNMjpWsJvDnz4zdtyNKshxZVysSyWCIizgKghC+KS
EsDGYX0N914zd3F5++awc26kspLj5GORHV/Pd6TjHZ9UBocm6mNx1xy4qzLSZguwDdVA7qqJDUwQ
qTRngOaNNvYibBuNW8vVzUm1E+JY2v31bZmuJZAF6VwC9iy9hjgfMbOhKSnCyOLAYwsqX2ktT7Pf
1PJtG0JLPSqUf9sBkvjXqeVM9ySIiRwLkOyiHNa+PDBWTR0xwQgmFS0hpnP18XrAWhxlGuKoY8Zw
PS4RGUThTkFc9cCauQ+w2xVXxGWIDp57E4G9WinPhNx2occBLmyIYGQjPxjuvnfPDw9YFzx1lwBy
i+B2OWAAMC1BIwiUwBsBN8SmARiKvRykjiOf38nHV2rpu8bmkNIdFtB/LH1V9miImvUBiwFDSKHA
NnAU85klEMctGCaQdqGzziq94DQ/ntqurzDHWo6bWtplS4Vp1vipW+NZ9mOmrt9PPDAPzp6kvkYM
FJgEC8bgvOJBmiiyDpf2djVmJZReNvaJw3WtMq8wwPf+ArR9VUABEzSHxEHmWSksO3GL2VfuNBCT
AH8EFgQge+Hk5YaY2/3oZ3jV/ulNLWJjMZ0xh8WcnAL+SQHWQkeJ8kYDzskqQzTzwBuTSWDTGWKU
SuCpIjBex5urWQ9ay9No63BueaoEfwa+8dT9+vClu9/9e4RpENAYB18TQA3sKuzMicaCkcZEpFYU
gFrWNk0Sse3haoka+Tv4pTmw/9v+roK/d/3FHIdsENcL2W8bXaJxCSAofGngLY4SJ1UhMXgOPJtZ
YAO1RPPhKmmWyzn2cSs1Le1jvfA7uP53D5vuDq8iGzkgZSOzXhrAeZifigF8D4uUGGcoB1kN9ewa
LDGd43zlcvzWTS14wxtt7dSX/tjhaIuyXHdDZ6tYiKF+jn8PPhWQEJie5EhfKHx4D1udRMWzxDqV
cleV1Q4znEGx+6c3tbSqoYI7Nv38vnw8ZQkFRaOgglNTtCY8AmcXKSTA3ZYRQ4uMVjkq4sRMR4PU
k7u5bS65dZP1+9vbXx8e7lYPv/d9B/3K2T0RwS5LmA62r/YQp2UuACxpJoXZIFhiWWn1KknCgwhn
MoWHx2P1VqKbh1r45XFt45t/4kWPC39Y30NrYVE8Bod5LAHLLCCoYnIZgBx2mAttVHgBg77cWlhF
q4kgEyXm32glZ+wcGf7TgUTdfl4+dpsCOOjn3RNQGC77cgD8hZCGJe6TMYEYbBoTHMC15w49MPWC
e8s4ezkLejVhq2U5E1qqdyr1pZij3pVez3qcl/8bYeDH5WJ/9yO2FiJvs0MBhEGo4bBREha3AHCA
z/LYm2EBSXGamZWNasFYz79OZ4Cn98/d/fPTX98t1+9vT88r8Z2a+9sVZidqsLHCU8xPRwTcfyUu
ZUIbLNrDLlchgDVSAzDYKha5DDarS1hjPGQtUoNPwi+nISDtnr74x9Xu+XFfUuILrL/w/QYBNwNc
jCjRd/YpRbyhjJSUkwqAQugL234y+pn2g/qliRa6ocWSTrT4JaG3Zxyd/eA8SwaZLQWQ1Js8k8Qz
iGPF8pTBYVGd2asnLX45U8P+JdU6LRv+ys1sHXdLH5OlBHcsFhrzcPsfkUCnxC0D7qlzBKjNC7YN
ZkaAPhf4zCZIfxXX309zfsdOojFI2vBUbnMkzqt/9/2Bx2CGiVmIukpyZUmkePYAABZQAqMJM1j1
jTEIOYll1Sj1/JuGq3CdPJK7r9+OOBQXCrs8Cgc0b4rEdF8AuJcSwlEXXQ4WGegkiXYcoZp4KeZ9
KKulOnac/v5093wK4mwoYBpAlix6SVgBv4Q3LBGfkFiCSwpGMg1/T6L4aJh6frVuzG+nvYNpN5zm
fvzjlCIHdoabWtG+PgZbRFH4Hogvwee4CB6SwU9BGa9gexjl5OtFhrk859zA9L1ae9vS3tEZocbG
+Q/L++5u0LvfN073HSvZ9OcflAoCyaknDsAtCVwwaXzyPLvXADFjEc4R79MblZLrbcPEttYebPtr
t16OKj3a6T7U56IjDbCpVMkQ9yTQbutTAV/glYg5OuMnrS3VQJUI29U8lbem61Wfh4SXf6TbD0ea
p0U/vwJKAOQpk1SwFyjBRg/AaYjLhXpu4ekLZzRer9B0Eu+mUmCrGlptjwQ2fnx3++Hu+6fd/eRk
JDY7992rVGBbCEnYLC6cUOBtaYIVjsoobWXQ9JX6h9uSVNow2/hGbDNtPvMZKziI401/Aswn6biR
mLPEvIbVgXipKCk+QigJrhT/ivve5zOls1zrstk2dOnYRBe8a/z+aViRMU11gRdVXCA59dUJUUgw
zpLEg9YmxKSDuiYM9uO/qNNYijMmOHqj1rObb+01l7SREDwu8fvbkws33A6nLoYfMKiayHhwnBiL
zMymRALAG5KiCtpYoXjSr/c5T7Kc6de/bbnttVjO3Tb8cjPJeH0DmDFa0cUH/P/YsTtUOHTfqZKt
KoZGkgye+5UAdoK1nkRWYHcW52Lyr+G/P9SyjN/qH1X6KT3PRK2VOZJP2PO1JzE0KaalIFRiby9g
KWILY8TrErlyVgFifR1Pcpi6lnczB59rTY8Hot783BcDJkKHwApDfqwYHqJ3VGNK12BCQpQYwLLL
qwk9mr+SvE+ozyQX0yzQO7xV//nh+/rz7XSfYmZFHliCHLKTXBXP0aiEZoDPjAB8FopCqgzUjPqk
/VWnby5MWx1OmL42VnFDl3O2s2Fsytluu+Xj+vN/DSex5P5gghwqgEw5b7FVDrsphS5gWNFmkjE5
bKO76rTk9aT/IMi5VPL+caWkkHNHuBHKzFs9kHovd/f4D0/IvR/o08p9bwvyeQAWhEWK9UM88+1g
V0WTjYoiSMmuoj/jac62ehzfqBSxat5lull2sxLP8caanwy2//Wtd/uf8FBPDA52EGAnCrBNMKRG
DDAG9wDmKAcc1xcbLnyxw/hnsObh8U0tZteS/Vhl/NL98fXTMVHNh3PXhkWgcQAy8eqKmB0JAkBm
djYazYIGcZuZivFYlRCrBqHarLSYLOAb/NdY9gbQG3mQjgohwL6DQDBmPHAqowiW6XR23jF5GYzB
iO3Fgge1hKaxTCs7lbB3WXH57fk7pp3dcH65F9UD+i40GIKdM3jckJNQpCHZFgDoMiph7GvErLEE
Z07VjN6odbTzCLZZM7XZzBp2u//8kN+M0VcoJqeQAEcC2EBK1ZcLJMkINQWjaSAe1+zCYfDz3Vb9
40rwdYMPbzbs2Bz3493uaT2lKqFoxotJAHrxGFNxhVhswLWJBdiGLMeo/iyqcpJvrFfHG+i+40u+
7U7F9Ec83QZ2Md6gBWKx5BDFIGIkbBszxDug9SzkoKihXtAwSXRMR6rkEHJ+70Qnmp3c3ccPvpzC
LKZu+oTDYigLm8B1gB1AfEbmnTJePeEBrkoXIi2JUcuvNhOY6oKVwNNaCd1YTL2RWg2L+bD6n/Wp
MqD7M8JJKaCw1GDOJuOBZkUco4pICfZcsraRm3ohx6NU05tGrg9+uZw13WFCYDgbPPZ0MlhtBABd
UAMPCWXsvRIUYrrxUSVZbLiy9fQw/qWExPSEMAjasAC7mparN93Tl+eHb0+jdBMA9/0J8X3KycN3
0BDbIg14WigBdlfWAQjWOqssga1d5SjSMNUBoeALZ7JJ8xdvai2WDdXWYtL+U1+P9hMTFjXCxJ5I
iWXw4ISB5wDPjv2ZMfa1eAiTOTulLl4OUI1ciebWc0aMv5ziij4yYJ8eFn2YwoS9LRrvRuFEIRYS
mcOWM1jWikKwzCOzIv2/w83wrBJ17RoGshFTUru7/zJG4bCCbuhbwwJIMToWvLenGDyWBeYB0hoS
FaDvImQQ4nUi5P0ZgAQPxjptuZiHlS2f1c5jQU6Tdo/9sck/eq36Wy6Y69VixSnM9iqV8e4Il8CH
GEZUtlFpD/Yh7YuM6Tj6yznHcsX7k5dqrRs19i1fulGD6ii3zYcmOFuiSEw4YikeCZDOEgd+iWip
TQymyMTkrD+1lduGmZaN6TfTLFD8/P3+y+7+0369sKEDq1XwZ5/eMoVbFQmlKqMlBeKsB86Kx96Y
UEKEq8r7k0nOrGX9UqUMAOW5MmLrWqme+jzX0K+A57mGQ9fM61CYxJR1gf3MJTZhANwKgXOgDdjW
ma9t6LziVNfstUqt5XoOhrdLPPRozt5s+hPIbLFzibE9FmAxCluA6uSAt6DhDXM+AuvmBtT2TPlI
/SW/OR6+Fq9xJnK4VmU7hytjtKIWEKN4f9IFf0CQyIwBg8kkMu2HFivnoiMxeZpt5t4qdT1euQhX
KrSyXUna0EGyYxdRP+MinDYi1xiQ+vthGFfSxkR0f+LaF9rHIqKNBlhoEo9pcq69Hq0SpKNzx74F
MHUQBIn97kd3OmIrxIIPzFyD96aew8SioBza4j1jsA2x057LYMwUhk4GqwUxjRXpzIyBvb/9/ogW
in7Ywkg9+hh+wgIFz4rh1SSS48nIhIyF6Uik5VzlwjV/4UTncfwzMeTweCS7o0zP+C38cn9yvnVo
oTcJSznEkdOxBc4WYjhy7ag0pvhMgsXb+IBggeOFnVRSKZQDeUkuXW2W/TQXLLN/XqszxyXwy830
/rH+n44c/h3Z7vH2mLHfR0fDkKpQwH48AEEp2HgnsM0yOPiDSmaKDpiLC1f5tcZcZ1xb481au21L
u+2xhQND53AzJHj93553d6eeQrcYqis0+Wg9BB3psLvMgNMAeul8jho+Y0h+YvdnhqzE4pTOxdKr
bruue996ev8fPw3H9G1PHqwqQTKOyT+Bx4iEQDCI/SXO0BLBhix9Nao7ZG2brw3PKq0MbeyMpZ3e
QNAfsjw2pbUuUNDRRK4ZtkpqhU6PEceBzoPfjj5hk3S5vLHHU7TFH79xU8vLWkpM78WZHVQcmhPx
XrWh02botdHBU/xnekmSgFmEYpFYUxwJGnQADQu9LuY0p7vyCOWkbRG16eYqrun0LtHf3o4uy95/
JymGS4u8D0FxbUg22FmPebpAFSNZawVbwqbmF5rrNZ6jrc74jZta4E1Di31aHWsO5Z9Da9qk6gEo
RQTsEKB4/AkPFYCXKpKwEKkTxRpjXunSqIkEtfSsJb1ZTc2slyI+3G93n74/Hj8FkwMNl/1FpFZn
CsQw4OUXwku8ucsrUqwrgWbYQvlyR2BjjnPXA8xerHWyDWe7dtP70t4t7z89PvzoxilHniwECI/3
uUTYJyFA6IhaExZLotEBPpPXFWz2Y5+p0+yf1lLPe7wd7VbH+4d26+/Yn3lKJynFFvC/Pl1gnQtM
As21eKYTNjmx2NdbsnAsqcRVNNPbR6rRbupJeUuS6fqdHPiQk4H/YPQr/E3f6C0Q7mIdFRdU49GX
gidhIhhEAGeaX2qVeyFMnJ6PdWCs4T4Zc/pwe0h80/+TkIiqnk5n5s0CLxOTBsIZFoDBs+xjrQdw
RBIwP8qlz1qwPyO01Z0bM4ErfcX83kf45dpM6BN+8+e7o8ZWYMULM9dg28lnYYmk9v+Ku5LmOG4l
fe9f0ZeJsCOmONgXR/iApSDTkiyNSNnvzYXRG2WGyaaG3ZQt//rJRHVXF6qqm3zPDA8PElkLkIkC
cgEyv2QwjSiCiBtZMaec8UprxU5mnBUNF5TpYfAtXBSiR9kWS8EfEmXavb0aDFEaCK9sjfkUmAXn
Ek+VU8JKlRKm9J0irNNuQdZCjAzYQpheUO26Od5a/bFdrbt74txIHDqOoQNKEStj0JWS3GLiMqus
rOtKIBSOTCoSehJkYbyPHrV2SG0OydFDRM3tzuDIyUsdA6eE1SS1lT4ApeCpcKtYZVQIoIyoCEk5
wp8IFOg2fgJZc8S0ocshgI7NgH/l0BfR6C1caePme56kS6FKCS18jFE13rpKSm64UgmR5p+arWXT
BYGrEbOYrmjfMHm1Wq8a9TO7vdjeP2QbuQHFZrwx200wjCL0hmAWwaw4+PqhThVuYVmujQz+WTvT
I10dOWMcPliyJsQIa4fkxTsQOJs2BBB1Sy0stR4WYLQ+e/7ocQMfQVAZrKl5Ir0Y024bZefDM7V8
cS8KHteLA6pwjkL2tLYgeYMGwy4H13qh0PevZe2VNekIplTbUK/7kXk3zPR5k5G8T8VGxWQdYthX
RIGpwMGyrpwgMP1IHSkLIDifwPv8l+IgSnqOZTh1n+lyDaJ0aA0xwvoW3g6uZfN1vf11VWBA4h7W
LrCl+QXP3Gh0BA9bZO1AXTAFC9BQUUkbPQPDhCX18hCVjUdxMaRw6Ha0DxVDwYaovvnifvLj2vn0
tdBEtMUTI2DR0oBoekIiUEuU6IEj3pnD9cCUYT0PfNBcj5jZGDHtYvgwW97M1h1KmnTsVEtqSGR4
DotImRo8uQSOXUhcMp+3P/kLpWOXFPSIHy4lplgrwt+49y68HmDGCMa4qaOolMcMSRvB5wENDktI
OBKY0Yz+XaG8XQoL1vQQuBgu8va7vF9/6n0S5tCgAV4EgqmA92ArWAu0wrOy2joaNZcv9EnazkuS
hwDRcNHYQ9jdx37EcdROIvIZr3lALBtM30LnmYHdTJW3NviXCrn7OEaxGZn82rbZDn8ejoMw+XuH
XMNrcMgYaE/QOiB0jAZfgqAANuB4RkG0C+UK/HPkOAj7GZGIetZGVX6e3XXg7fELBzAzKKo/o8Fk
4onhIQmYyCIwXptaykR7OrDTRtn3iJcHF1tsx8X956/XN7edEMl8+CSM4tg1WL4MQ/AZ9A9etghK
gmOKhXTZESSDbnMFJbPhJrwF6UN6UMWFqmpOQ5stJkq5ynEYzS/ZefZgk9kMEKJwkylWniYBgxYN
dU5FJcjLqcUDLacOlPubTiC3RtheUjrY8m9Fzf0DzgK5qzKQf8kx+9QnzUSVDGZFeAz1IaoGT5HA
R0GYUvGsHbWio2P7/51HSmaGcNMI8XGAIfjf25vtirdzmaq8XRADx2xkjYk5mKsiErgBoEiUslYz
i3BWPVVWNNQlAZTO0Kbjkvc3C/7xPuy+bFs3BncHakYZg8mSEpoRUmIAG0glmyJPXHlBnrdTf2h9
fAQP90va5XAucLukI6BV3S3IHZgPk2ij4slPQmx9m+osScGR4uBCs0hxOzIZ0AlPTvqnNh/LZwoe
ZtcjPMyJ2k+B3/64XR4/LvXcwhywGCSeUB+DGrAZCtoT0GmmDnTcjzq0WhAzH5sMc96iOf+6urlb
zm6r2WZ9QK2UeRMi7xZZQ2MtiK+SQ92kMOKvxpIFwTiMOwPB0ks1GrZYEjQMArWgyvtZbQMF3KT3
52na6HgHJl6UmAEpUPdwRysr0CkK4IxoQywzf0HH724WpC+HWb+Wr0h/YXXwXQRY5zmPE/+/zjVG
iGa143WVGEbVMszF89RiMTMbNDGaSPrEyeQTKC+dByYloXyMetUHSNmhjg4RTJlTBmZnqLw2mD5P
JOgREBJS1TkS1yZ/ckOqaLlLmmAjbqDIwSjzErCgyHDM7o/MhSm8BskE2j8kNPdEAA2HG/d1ihrB
6mmw8cV9nwM1x8ALxpw/MRL5Ahev56OVWDL2Fv6GU2kHzYf/4yaA01Ek7sHjBduHB0MbQREMmP1g
+pL4RMBR2/YJ2C+8XVAvhgFg+eIhYXE7u73a3tytNtvZoaZNLvJ0Jppj7VjXIDqYrjD7tJHPGRDV
1SDAg4eLz0vhevX+Y9jBQnVYOEZEj42hVBT6uh/HdlTFaJDQEVZARTxK6Zoj0iZY7BStQiWdAqZO
Dv5p9RL+a1y1AIl0jG4+SBhZYPnNXx7gz9FsCprAPAVvo8LsEQyrB2Up4J+owNDQAizb5wXolh0d
BRjqPFOwY+TQ7BdWtsrpx/es59jpFBXjFNP/PEJ164SnpgT+pEHVIPoToy/k2LWdT0rqhupLzFn/
JPu/H2cP2z93ZnljpwoMichHQwHWrgJtqjgC03uFh77wGQQIsaTAzJLmtKd3aPwI/kB7vyB9bkak
7HzeGe36VW+4DXNJqwg6n9cg8jG6HOZbXQUuHDMYyR3Siw33vveS6PnYeC9azPnbP+9mZ/KwN4R+
QCAc5jaaLIivjSeeDsUjiVoRjrD8oS5Nlm4jZe+LsSFb9lFaTkaGcuqUdlFWMmTAbQJjiENqGI0J
oeWpVX81MvRYnKcVCz4iMRaYRdcEdmH1ydYY3VewTJRwz5KvIjdgWpngK2uZq2qqfAyeEEf4OITX
1zEjFPqTI0TM+sP4Q2M5liHxMoJA5fD5jMcoT5BalTFKVykI0ICcaP+82ii7xo9BkuebJdGzkW+/
mMthja90sa/w1STlGcGc5EJVLB9ZJ8YQXBCLMRrlKAHt94R2yG0eLeyVLko6lyODC6Zqb3Dfrx6u
7x/ucPewW+do7/cRHYOJHK05RHxy4HcYHhE6AyYo984E9qzMg5FujqTWDh+clByM6IZr3BRoJq5/
4y4Gu5leBIZVLyqZE0+w9qHXYGQEJzAWgoGcVX/TbuaBvoKt62FRT7xoTqWFp4v6C0IS5fhPnuM/
symy+z2rRYl1JjHwH7NaE+gVZ72pItaYozW12r7g8ceeniMP7u722LZjbM/2duPtbP3pphOPk8Mf
QxAJM0dkwO39rCeDgWUE5pakKRLDWE+Od1rpdi9nZGh0y9kg0RbcgIvGSRmxmSTTSjFKQFnXeZuf
Y060xxBT4qyLrK6fm4G66+RoNObufskCHVreco6n44MiPperP7YgzWWzqyPs7oTIRV8bLmUFfgOe
3YEF4hS4SlEJGhWVoX5GmRNs+7jDgHcLqq/V0OmUGYajUd8PYALcfjmzB0cBCVWSeBlMRS3WLVVg
ZxsF84B4JhTCPPnU29stmykpGFa+tIrYQRo5+AzLpjYM2RV/s5qdcdTgMoHXDmoPA/KxhiQFx5dg
Hj+48J4IRph4QRyNPSXHqt01dycFO/PhAYkCHd7jcRR0Yb91nDeOhW7kqHS1cU75KtTEYsYtyFGs
XUISLEqfaNL65R3qlpwTWAx9oxa4HPm8OSHpeodzvrm9Wn5dz+5uFocI3jPWfFcbM4IGlkYALiWr
DEwvZJoBp7yOore3NWytIIYPIQvwIuup4j8+L852o/J2tgYD+W61LkBOIhqIDpRXHVHUYOSKl9FW
NViv3CdCqZdPQL72Wj/mmvUe63HDR7hRfW6wXujiNgPJ7cy2pmYi0ckbTPTC/XeQlyliohdYFLUA
QWOEJbp+0u4NJ6qFhjclucPUS6tydK4elK08HWOM1k/y4PSgFcRhgmEFajA7BSc5pSEk9XTlypOB
ON0nCiZy/O2AiZXcy8vH9e8364PBLnNAVgKFJEwtKxEpehgWAZilqDCeJXlfWyL4kaCMQ2sFGXbE
YFdWHupNf16MVGqX0D9npq6IROS1CN6isTVQpKVmDBYbNWmUjra5kgg9MhYglAcBdN3w1Lb2L8tb
2DmwChaRjslWyhCM+EEcmYAFxqlSxrCUSEqnQ5MGHfTovB6h07QiaL6568DjZZC4GsHORaicQa0i
tWiMChllcj5oZlkvdafTRtn3EBjZqhkbliW8vX+4+LpeoF1jd65Kg1iAOX26ZqRSEvMxgwdnJeZI
YW7hlonJ6BcX9S09x0yJ3e2C1xE8PrzYr3m1B9P+9WYPzSBhMmNUIK21ryUDZ1bXDiYChXVSB1fR
umZgvwkVzYsACu0htX84Pw25/cN5j7+RRTdTY1Xs9gOdA1DX6DLjOVJOwcf/UYjVlNJEXBU1FjHS
IHgdAjuHZA33EUSw8c/OJOz1diKZsPdkwd9yiHOAF9uD9lxm622vhOuunrNUJGrMfdIECwcQTiqr
gq1AGsMsheXtVHy5es4lFSUTYwtuuewrxbiaP35qUivRbcvphjTnGjLuBAsSXDUr4MMYTUEjgpAU
wWgnFCHyebvf3R6OpcQfnih4WLERc3Gl2tows8dDmSJqVC6JhbG+JFWCYgkP5jiiWjpwswMR1isZ
Uz/H73GkKBH0oodda8L6c3z25bqz9b47nSZCgczKroygPkbCUyUlQqHlo37E+NSUKGGkB/PV/8W6
A90nJgW1Wo6woJd7wMR9vv/tbIsbHK2eFHtHkllniaxTpbTG/UnOwZMAPaACd8YE4cHBOIkkULRc
0IaojAPa2KF27yBoWmcgkQimL6wgrO8WUAUoLEjLKwTOpTRg8aTehumJwGjobiimNVrk5fgcrHHw
4/MReMaN1ZxHhln0iPQTfIDvygLYwQFMHFUL5U6r6hF6OB0ZE67nPTNiF/LdpnIYfijPBYOD7r5l
MaBZo5u0IG+sjQqjSgJ9RjD5GGl6MULaNTlSHuK6OI5qNBtlGRzYOZFgRVQ6IdIjQXDXGgE5lQdS
QcYkop9VI+KpVTF8rmRoWAzUaoEn5EVNxOV6s1keCsNI/Pw5YYnQXOsBJAzaRZix62H2VZIbrL+j
NOUng8g77RZkLWZDSxIutmnWD6u7+y+rbpCXyLEwktWJ27qiImIJe5iSsHAt1vyRLrBkrBgPdu63
1yNmZH0sZT+KYD5b/Pb4uYDRAMdK7IrSZ/RzcE1qrCKBASOg4oFQq4A8n4wMXIJLQJ61IeV7PXW/
d3NvUpLKR+i3Zu+iYJGuD6tPN5vtQ6cIcFMl3GkSwbjEijuIbyCiq2ygoMaFB9vAkBoc+v/H2mIl
2SXX1o5wPWsDlS8+Y12y0U1plSR8IILRaFily4hYGfh0lSdcBlFH6v3fVZaxT2XJ4khkgl7u8B7K
nbJbBNjKkS34X4aYlhTEDNaSRXg+DdPQOYpAISTyYEwNLuUTPvP2mGGZb3UpxfLHA0rx4tF0uLNm
XDLgBr63+5M3MU5GGMokRlolinmfTFVGg12BqSyIdRmi/ltODZp7Bad2iIJtzXy2HPEJdhnhdA8R
yZXC0u351Fwz6h2i+VOChbeZhBloWRVk1EHiiZTzT25gnkiLa29PSjJXI7Qv+sCPuH+02WfFN1Iu
H2/s0uw5OMZJYZA/x7IoFISH4XgKYIL2TOMn8i/htBXJ+cc3ndpHSlYXQ6/ALPjyaPnZ83cZzhMs
213ArrZobmQZKYnNqNMWqzRz6oFhGzSmdDjtYDoC209EiB1F6My3JiWRIx9pIdtA9fAhXTzebFfF
/gXRxosQTaWcCZhtAxYR864igTninTcu8F5FpaKZkoKRFCS8eOJEbCwDqMZSyiGyqg7o3DPBwM1n
sbLSWyWUl9qbv7hJ331iMqn/2Pneb++XN9d7SJ+Lx7s7aPg7YDHMbsH5u5stV9P51+n99tfVw/Tz
wz28vAEWtrOHT6s85be/3mz2N77LQ7OdbX67AhP/6vPN8rtpg8rRwIddLeDf7eq7Kele3Ky2V5tt
e73s+KnmyV9rHv7ocAUjkPu7my2whtZYf4ypf5Gjyc9vp6iau8OLpbDerW+/ThHYA+/cX09bP/67
6eU96IzvJZVn4u30YbW5WYI7/z15/Q35j2+nm98xFGl5df+4vQKqHte5NiN0tty9AT4JPDf5BSzd
2fx2BQ1g522z9Iy9mv4ON8EJ2rd5oo/9pW4/2MSul2nm+/TPz+cfLj+6N/Dbh/rV+bufppPd/5f/
fF8ff+3i/H/y3fDu40+X02/W9+tqcT+7XW0Wq+W308n3h58jDbR3979M3GJ78wVL1V0+zBY4e0d+
GBHmdfvHdBJeTTcZ7WB6g0piM9oVFaJ9R8A7sNY+njcvTNGSHn2HFf3EXQE5kBprWFmPeUX2ehPm
jLztvPPjxfTH88vppyZJE0hc3C9H+jr0w4+9802TwIojm2k7I68O/ex/9s9MYUrPlksE45wC0RiD
35ke305eZ9SrqcMr03frxWr8+xRkvXVv3rwLJ+cR5fyM79mnpn3n0+PsYTn9jGM99sNZ24+eTt43
q30Kn+jzZjU9X1/fPzkFLi5deD199dF9iEeJA1Py8GmAtostOB9PLAxKzlT3nZ/fXmWO3OWJZTEV
pKVNTie/rOaojN/m4T/WT4c2TqeTq6voLt1p2hht32FgdcI752/dq/r0S7Kc0ldXb85/el1HmG5H
u1HmMAZNP5f1Py5PkybUmW5pE/jOx5/Ow7t4kjrwh7u03WUJd3Rx5h+VBfDh++zkwB04yA9fj73E
D/MN+fl3xNTlu8ssLk9PnjO7W6KSs907/zm9A8mxKRZqs0AzB5q2Y53fmfwfUEsDBBQAAgAIABIS
KEpJkxc36wIAAB4HAABKABwAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNo
YW5nZS11c2VyLWluZm8tdGV4dGZpZWxkLXN0ZGVyci50eHRVVAkAA4QRcliEEXJYdXgLAAEE9QEA
AAQUAAAAlZRdb9owFIbv+RW+mqBjS5wAgait1PIhoXVtRVm5qKbKsY/BUmIjx1nb/frZCQFWQOuu
sOP3fc7xOQdfPTyMZ/Pp3S2aXE1vxqMYZc9roxveo0qLDHJvRAzxxosHbwHJN2E2P9eFSJk3gqRY
ekWuvVRRknpC0rRg4L0Y7s2Af101sY9bKEZ2cz6/RJ8W80kcu42lDJWGOH4wbylcq1cX5jKO1Ro0
MUpfNGvLpxZ6mqMLdNTxs4ERQv4r9hPOMPd9ZCMMNclXjaA6wJh0Ijxg6D9C/0NqU2qEG3oQEgI9
vsvOKT4Y5WMWF62zF41E0S7aDCQDXeqPovfOHae74YRRnyaD8D1nnEIG0sRxDqb0nAC13zVjJDgH
DZJCq9Gry87YoM/6e4VRtKjoGuys0HcBNncYrohcWky0w9Ao6h7DUA3EQJXYXAM0W43+vosedTHB
roGqDIaFtimb+mQqJ5pkDjKoi437AaV4BykFZXFq03ZS7o0+PwhWtg77m5SAJHTAD1NaaGFAx3EC
SyF39fgxu0FUydzYaidKpe1D55ml45re8zsMDjU3ijBHtzfOhHED1aQroiv0WRsVMhdLCQylSi4t
L9jx/Cg8zeNCinwFzO2FXDaZKpLU9g2HW0CX0uA0ICNvCbjNOFubN1t23Nk5AePTztwQbTZxvxMh
Z5CrQlPXOtzdti4hYfCudTXApm6cuFeJk6QTcp8e9LmWRbUsTBIO6POTFVazYhdTaZsnSdpCz9U8
uozK04Uwq3uyhJi73a1DlqtHAS+xfbf6GyztYmrr/8Vh3Zmj3mvxy7Ic1PZNyalNRZBU/CZGKOnI
ky10qVWxLlcWOthCg4jAKai72Rayl98+KvBrVA9HbLBDoQ+5q7n0SbcfhPZ5rGqzIVxJdsd5br+B
vYtk6sWWOQi2jtDv+YgV2Xrvvy2kaaO9ybWzH4RbRxfsAz/6y+H6cNTVqV087EUByqyuEZRzE3HO
Bx0adrqEoXLKGn8AUEsDBAoAAAAAABISKEoAAAAAAAAAAAAAAAAaABwAYWNjZXNzaWJpbGl0eS90
ZXh0LW1hcmtlci9VVAkAA4QRclixEXJYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACkSKEqhaq3+
WzoAANLCAABZABwAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci9jaGFyYWN0ZXItb2Zmc2V0LXZp
c2libGUtcG9zaXRpb24tY29udmVyc2lvbi1oYW5nLWNyYXNoLWxvZy50eHRVVAkAA64RclgIEXJY
dXgLAAEE9QEAAAQUAAAA5Ftbc9vGkn5e/go8pajYoOY+A5aPq3B1dGLLKkt2spVKsUBgKKFMAgwI
2tb++u0BSAoAIVl0UrsPRw8WxZnp/vrePYCvyiLRm83U6v4E29X6g85TXd6UWlt/EEG5/HN0FVd3
/a3wc/6pWG5XenP+6f3bj+/C85/Pu+dHF6nOq2yR6XL6OJfRJ11usiLvM0Ajv0i1dXO/1t2l35Ww
BbPGl3GVfdFngK4ENtZVT6Sr++quyBsZxJ+jD3qzLvJNNl92yD0i8ceNLq2LoI+JIzwaBXGlz2+y
VQ8WQVjaCNtIWYhMMZ0SMnEEteALhEbvr60hOd/FiQVLv1sYTTCeCGuM+RtMMDkDwOuirI5OYTxy
8yK/XxXbjfXxYwtjQLHA3EO25K5j40D4thDYsX0hPRkF0vV4MBqNDHLL/Rp/1tZ1lifa8oqimloU
UFobnRR5uhmNru83lV5ZF3mlb8usujfarXRS1Uh0HoMW09HIL+PNnU6tm7tSx+kBCAIs2WYdV8md
9ddWb0FRSbGaxOv1Uk9WcZbbVX1gNAq/JXptiHbNHP7uzzw3mLm+H15fW+PrizfX4ZtPZ639xjcO
tv41/HA5u7j85L69gENB8MGciisLfUO7n/k8TudaL1oULkGgDkf//Yer63B2+f7mIvrv0ejTO+uD
voWdG+tSxyUQ2xOZjmz7tTUy52azm/D3m6PI2HHFiDM9hw/2wxfc/I2sPyxLKvXrn1Zpfzsvv36z
rt/9y3//20BQjUZvlsU8Xlo3ZWystV0swDfHpf4CnqGt5K4s8mJZ3GYJ7NkZ8Gw6Es5ECEY4N3j8
6FJXX4vy8xHS/2p0JBeLhUoV+I/Qlg/GqbL81kr1It4uK7Be8TnT1qYqyvhWW1+z6s5aN+F2Pt/m
6VJb2SHUf5gzElZk2BnOGVg4+uXm5sqvWV/vOG9gbamrIv9RJtThHSaX108xGTWODQ698/Tp9Jme
DSHQWvl3/CW+TspsXflFqTvIaqcQC84WSFq/3UQ1I+uFRR1r7G4gCxlf3UyS9XpKCT0b4Q7h3/T8
gaJ1TDhxEoad1BCeTj/oxavdgen0urpfaq/4Bsksfj2dFmtdxiD/v8bf2frTT2eATkprDHsmd1OM
8NmInAQqpURqsbAODAzhZ4J73pEGJAOQu30AlIqzET0ZZwySHng0daLmNAiqtb5TEzZqOnwJKJiS
ZyN2EgwtkTN3aB9GuNQrCLnpdKOrmvojOF5aXR0FmckfGhK/QciZ3EPcEaxdjWF2NuKnuVrKBYRY
y6pFsm0QlhpSU9IDuVOjfxfntzUURaCm7w/VKLDC6GwkToXhSMmHYCQmremHYj+uFYBwjyuBTHQ2
kqdzTQa5plnqQVJeaX9bmj5lv3KRR2W8akAI5wiDgA5AneauaLFIEvyAoaZf+8ee9iG4r6ry1RHW
XdhwARqpzzZQlDobOadpQxOVOItjbfwGrQT0gtM51NX8wRU+fngL1PNNBc46L4rly+OTP9fhJOSD
nhpajZ9I8FaMTjNYmjLoLo8YvS3i1EAEUqusMuljnNxB9a/x/fzS2kILeZtDz7Ms8lsDCjPyAKo5
XYNSygFQ+FRQSNLHQS2yPDNlyPwNRWqcFltoxAwKSp1BFIwZFOQ0FJokCXkcxSq+n2vzR7haV/e1
A2OoYYP8MXOgPmB6KgCN8eMANlVcVjsdvIOiC619sS2TJpaIGtYERLUpn+ykkMJIxZT0QmoPA4xR
NSwdtIuYFj+iDDveY/drVr3Vt3FyP8AOizhBC5QcRfADI7WPTKhnFDIEFqfRn6v5Qlsv/oCdTfaB
D6bHL/N4eWbNmgxpVFqv/gZ93hV0RNOF+evSYKk/fcr01+mfBo8Ewfe0JqsVgDKRKE8CNU90AvFk
G1CGsiF4VWZfAImBBHFY5BeggSxeZv8Tm3bI4IoOkG7LYruuPxlIgiOnxmRIGUjQ8hkPVCdiWshY
P4bJ2OOAoaWcLhKKSBcIk5BJsXMakFTL1HkAYj2TN0RcmzfnGPIAQUfz7nC7vJtUkEOhTWucYkfM
zdP3i8UGvtNghjwtvjaOCX34uEvasJUcJCb4RK4xEshKOyfGWV69tFqJuK4HpO4YjrhiaiKdkBPZ
Jhoa5e4JEwnDrDEZFBgzaiSmp7GWsZDEMuODMd2RTAZFHVwQWyCxtczm6f0yncA/2fypicdhCWUc
5pc6YRrUh4kGT+sRBQhs6kl/9hlygF52abaHp0WsOdcEBl4zZ/1V7y91tS0NZozqueSB2roZgzrk
2tS0mqdcKmu/cfb1r+ZDrVpF64niJHJzynAjZ4cWPUhMnpzdjE53i/YqziHplT+gIBiXrc8wl+fV
7K9i01HMnvqA1dpUHIdD78et2X7/bHVbQsL5UnzWxuOx2Kvm+QRxmqQ9ggcFcXJQEP2Pcwn2Hycx
/xGJMYpB4o1efY2zamba33g5JG/ytCs6kiIMQ4qVx3mxWWq9NkQcZy9m8uLFBA8ntQ4i4iQIKtmm
SqfT2QxPp9Vdttl5NPSGhvBsUZTjhw3NFRmMYtuy7h9emd69buBftsjUa68wTB94f2uIlq+t17vR
pB5AeO8K4fsXO9qRC2F9KbL0u4ifA8sA+puS9WTCUkGfsgPDKO1fTzxDRMFhaJmv4uWySHbytDBu
8wzS7QzWPr86bLquAFPyblvpb69/amP9UYlqURwoyi3K0CUL0b/HeI48mKcP8hiv/5hX2TKKlxv9
fy5YMxLXpjKDeVc8Sfv3I88RDyXOg3i/6HgNRktiKFu3+v/FbuA9YwOjmdPM1ZM8VSaeJKovE/h4
0ty5XO+lq70EsTY7JPsXLc9gN8dgiwM7d3OfJzfxpqUnQ/9lE/bjHqyfz8Znr00OMBH3YZu/LYp1
A4xA4R8fiJnLVSL7dy/PABejVPwj4MK8Ku+vCmiAx3+HXN0wU9UTDeP+nc0zREtwQmpOP7ecarZL
pbN1WXy7f9VKs1sg+6oBBkj+ngwv/5ZKfzZ5uwZe30zDODqezRbbvH6iFi9n83ijpwzz5srotB7C
gbnl0EPMi/S+rvm4vvY5kRKOHygdhgah6gucEzsRjq0+oYc+REzbzffl9ccPb/0iz5sHjM0lysmN
SqoX9RRlWtzN7awq4/VQl/IcQnROD4RMk8x7TziMf0bFNk/rVHfc6VAOXROMarOZH+0i/FqXX7IE
Zrnk7qqo1UEw6XUTzyDLuE7aZOFXrVkuemX7GbSohqBsU7pe6yRbZEl9pSV6dXPoGVvv6RqLBfSb
f/TMOW7seWbNyt09nfnCsKyvKhiooVvC+rCPplqWYi2Mdi+vG3+aNT42mzW6wHX9+GeCSFn/WBA5
1j8bRMhKds/f6weyvyuxexBvmSqtrbFg9jyrzqYjyyrjb9OBx+GwMO8s7H9gIXnsRHpYwPNdbobf
hkmaPUJr01/ABAlluK/3C0ZoHkuMOatPDC6YZ+6lOmZijlil0z4ieQr204YWRmZh0fsxC/iIFGHC
SILJI5Jg+tgCe2yBDy0YJtm6tfLwFNgqF8u+umDiMVe9JRmyCdAavd29AOBffWxeasBsFJZlUdZv
SuzeczgcFaMbkx4vt6v5/t0c2D8aeVkel/fWxSq+1ZvpaP82w7fDiwyWbbW/5LHRtPWid9s1RmfW
Kx5EQgRRZFMPYZuG0rddpjw7cBjxkZTK96PX33+HqM1OJM4xBviyxgBhtLs4v9Gb6vouW+1iq0bj
CKYiXwAGHAQ2dSLfdgSJbOWH0AL6QoQIDaF5jGoPlz7GpXjtZX1c27V5racNTUkeegQFNkYBs6nL
ua2Y+TNAIVPEg14TPwNam3AH3Zwea00ySY3WHm+/xgKxF3AIfsFYTl8AUOxxpcxbTqQGyjG1XRUi
26HUC5QjPY7FENAu5Ul9aW0qyfnu3abNudvb08bvKCqO8McKkTqG+3fpQ7jBupiHkbIVlZ5RMLKV
53ObBW4Q0Ig4IZdDuBuKw3ibtTbORJhXqLo4MaRG5xjnYwp2GRaOT7EdsNB4ApG241Ju0yj0fEeB
V0TOI0Af1+xusQUVmAh2BFWkcj6o0t3jiQG8AsuA+YzZPqbCpkFAbCeIXDskPFRMSOS76HHFNnSf
Um+zY9QgNEldEN525sOXEsUMnNlci1tjcJcJISawFJOCQqT7PoI0hH2Ift9n5v04hbgfMoQDgLfd
lCaWzs3pFi9FBJn3ecGXoh84H/SqqOqHYrsmb2ONycScMy/HWK88ohRmzIFcE4WgJezbHvMiG3MO
ZqAOyEQBRvPK3fnbbF5CDj7fPW6K9trZnB/zGdbd8b6uVAs5INVC1lKBHpYxjCX7a+WxFHzC0UQZ
dVIWBgJxm8OMblPBsO26LLBDP6LYg8Tgc9RSZ9PnnPco9qCoIShpzw1vfN8a40ajgCPiIeTLgNoO
h1xEHcltyD2hTYjvqRADFPdZ+gSywwqEhQ5MSdAxTEnjHsxfdQnVtADr0wNW7DHJjLFD7oLtVUhA
Z1xAhIAARKKIhOoYawvknugw0v1qB65DkiO4dO5AvqT9CeENdAF3WbIx6oUkW8N2IHxkHdyKI1dR
G1FX2ZQGkDVdB/Jn4HOJpQwijz4Jvc1gGH57x6iLlg6JoPc+2jwV9sv7dVXsPRXwy9pXjd4dKikh
AvoO5oGvOuCwnnQhPYFE2MWKBJ476KvHlHvAFsfAEnUA9m21JBOyh0ScCTZogFkgfBHYQQS1hxKo
ma4g2I4gAwRRgIkrcQtNj04HwMI5jl7zZc8X/SIpYtAJ8Ie9TTY0PZd0oQEjUGFoxCF8HbCn61DM
BKHGqt+xJ9B8zJCw1MOpBnA27WJrCoo3+1F8TAndW4/hyAQypEgPvI5GOLA9l7oQOphLGQYOOOKg
9fpUu5DmaADSnNaqM4fXWW4eO+8BYUfWaJB5oUyqyEaRaxQH9Q56MohmCIGA+Jz4vupar0upC2LB
BkAsWM9+8TbNisk2z6rNxDWfP+amt8ETTE1mgV8AjErlcQh3OyIYyi8B23qCQJvjU+pKEkjEyZMW
PVAetuphuS0BzOtHFdh8Od9b9q9tXMZ5leV6r0hlulwUmeYmQjbyVd3bcNujkBNDJj3KlQgcpAZt
2qfXBcPUABje7w0vdeVuYUaGgDCb4V8TlcKB5jqMbE4ZtAcKFAn5ObKJ57nSV24USPacOrIjPqzD
3WIHNJStY9Cc8B7oYq3z2yUYnUx2xa/+YFIzcUy37dieDy0X2BrbXgAuEISSQ66JAP7Thn8PpN+8
HUbcrHUAC3UcOfAl3Zu8vmy69uPk7mBzjJ0JB6gE9BrIwLWhNIOSQ8jGrutGduSFQQgtQxD67g9D
bbZn0FoOgeiKkOBjERSa93q5BIhsM9O/mbxJhagzgMJUCSoi20WuNI2ktJUDsySPOAxSkBU84j7H
UwzEjxeP18KPFx3MCg84t8L99uidTrPYTczb+Nk8W5r/rbHrlqRjph8eCmhDuI0dAeAFImYO90GM
EFPiOY7ynnaWY/rDEhzv60mjB6QhIM28Lc3bOL9183h5v8nqtkQ2rm9+m35KBQRjAoMnDUEYBUXM
kcy1kQp5wDhDTPKnUx4wyZL6dvHpLrp1pg3pEUds7egIHTN+LHQs+uX6InmAA0lK1d5nfhn7BWEY
eKGAboFC9+VBDYL2hdmEer4LM5dymPMc52vzGJaivaMrxVD8xwrvK2eQxbd5sTFPBsH45u7IX2bm
XeZ9MkDGdoww6glIAASHjk0592zH5y608a5535lSzxHdOvo03Q7EeTqg6IT162oaV3Gqzf9kKspN
Uo/hjYMxYSCGSmARIWz6RIgQCHoo9RArjIhQBAF2wRjP0bV5bzjYs3l8ND/a1hEppQNaT43Wd03w
dr156DUZ5RPT5jmYK+YyBFqG2YzSUEGviantw8hBlIOo7HcrbTpdAIoMAIjnh4ap6bayfHFowpmU
poljZkxzXQda8MAWLDDNknAASKBs4bueyzwZRSx4qol7INsGxfX82NB8YTrwRX+6qRPSYXKUFNom
0BEyw425mgiYSeaR8gw4CUmRIBuSYYiRID6h6LvDTU3/8WxeL3ewLxw0gD1BA5OZ+8n/JbDGfKJq
9BwicMJqAzMonx72oYeSCOYyFIFe/QjCCHHBKINhlfnPLUY1l8clqJe7EiyOy6hA+tAJZJBCvrSc
snYExKFumkAnLsS9ENChRqDriEjfC1wivNDpemSHyqjLig3xT/Yu+a5+JQ4fBjBja+r6yIs8ZcsQ
fJBCLrVdLLktI+owEfmMc9bl36HS458O8F+QvfzmqeEhGBTMoyaDU5g3BQMTcRXBAOFAECiioCBH
gnAWhgyjcDASWtS6KBZ0CEVS+9FDBOVFlS3uD0nYxGUzXwVMeUFIGUw0EkKT+TBaoSiyYQRUIYWO
QPr+U6HZJvy/vF1Zbxw5kn7Xr9jHBgas4X088vR4t712j7o98zaoI8uutSwZkuztnl+/EZl1JDNZ
pcJCaGBga5TZZAQzGPF9EUF6IlhjecRymjFD20Lfh9i2x+OSLZDQeO68ko4R8MLwpQwPuFCFWFgk
GkuSIcoXdyUOfN6k8elNLV3DogQSskrk2z++rh4OyAF9ihx25WDhBgzMaIWo1iFfzcQqWNQQOBBZ
BT64hcfnW7KapK1D9UqtyHY5VwRQ+kSRFgDyv94C/zYGIa+TvfcGzuuyA05BjQUvEyEcAleKpGgb
YmDc86BfHWiBHGeY6K+3la6OzjmoduKYw3xa3m9WD7+fHAGE9wWmhdHIbKIRCxg8IIRkvZEpg2Uq
Kw2QeuCiEzpfj1ZJAvF4LsnGTs3nc3f3Da1GLEQPNtArqOQl7ERCQwQSpxDXJQNYA3RTMRVZ9AvG
vnxcnTOT0Wt/g6nbL+GTiTKqoczKNbbvx92me0CNLMZWN+xf5j2XwIZIDMjxi8aEBAR/xqQDcA5O
0MUX928/8vkN3D+upV41DH/TuZ5YnJzWsRwoGEVmCpSBAQ7hgE/gI4hUICwo25cIjBAKjCPLS07w
a8saupYoWzpZwKdvXQcB5rFbP3zCky3jr4gxn/X4v/8bt2JW3lnqSYFIRQRPChxLBr8dkqaATiGA
5dcwlNteqr+3hKo80PS1egVaAKFTdgLPjiP3xvSPXdlhymAAaowyQGmouBPKcQiZQWDcLD4Ra0Ii
2VsRBZDaoYJ8FdLBKc4bFT6t1NiKeZ5Xb5U6OJifd/fd8tHffepg0lPOQ/PexZSSIa6nQgrVBZwn
fDtwxZ5AoDUhYBzj6bLzBBZ9h+eLuxe/2o9uDQO0X2sLWiuqdEtRPfleDW8OThX3vsTSkE9JmSQ8
YZJjlqeAiRaAORkIkwVyJ62VrxMtGi+O9TFUz/UxdLPZdqt95QB2XVU3gL1+yDsHFakqCbiAAgIl
JGBWMDjAHwDRrLReRGbOVA3qUWuRNvPEh2G85VV7yvD2PZBSOtSQpHEoGCyu41g9zAZLXhZ9VQZm
RyGCOGBW2rhyHV15+/4FwvL2/U0t57IhvFMT4Sf7+Wf/3439LIJQUUkByDuC+xICVpZGRqTgxUuW
UpNdTzcyjH1hI8PTWn7XsAe2pkcS/Ze/LFe7oy1QM5BoznMJAtBPdiApU4gRDCXZMh97khXphESP
xqkFaCQeDV9tDgKUh/vnD8vHp+7xBNTtAgEC18Y7nyWRTECAYowjQBAkpJKi00rbUv48CHY4ZNvn
WqdC39TKNey968wciA79GguHViIpAE+ka0VIBswok5Qs2LrEumMEzhi1C5xTBXsxvaT2mbaNuH82
Ftf2DmMirl0Ku+1mCQX/WwROyeRiqJTuf0KZ0Y4dIH4dsWBFFScuck4ot9YDuIxDieg6Tv5bvMDI
f6tK0yCnawm/OfDhN2/L0ayGFFfKxbJYIiDOAqKGLIhLSgAbh/U13HvN3MXl7ZvDzrmRykqOk49F
dnw935GOd3xSGRyaqI/FXXPgrspImy3ANlQDuasmNjBBpNKcAZo32tiLsG00bi1XNyfVTohjaffX
t2W6lkAWpHMJ2LP0GuJ8xMyGpqQII4sDjy2ofKW1PM1+U8u3bQgt9ahQ/m0HSOJfp5Yz3ZMgJnIs
QLKLclj78sBYNXXEBCOYVLSEmM7Vx+sBa3GUaYijjhnD9bhEZBCFOwVx1QNr5j7AbldcEZchOnju
TQT2aqU8E3LbhR4HuLAhgpGN/GC4+949PzxgXfDUXQLILYLb5YABwLQEjSBQAm8E3BCbBmAo9nKQ
Oo58ficfX6ml7xqbQ0p3WED/sfRV2aMhatYHLAYMIYUC28BRzGeWQBy3YJhA2oXOOqv0gtP8eGq7
vsIcazluammXLRWmWeOnbo1n2Y+Zun4/8cA8OHuS+hoxUGASLBiD84oHaaLIOlza29WYlVB62dgn
Dte1yrzCAN/76872VQEFTNAcEgeZZ6Ww7MQtZl+500BMAvwRWBCA7IWTlxtibvejn+FV+6c3tYiN
xXTGHBZzcgr4JwVYCx0lyhsNOCerDNHMA29MJoFNZ4hRKoGnisB4HW+uZj1oLU+jrcO55akS/Bn4
xlP368OX7n737xGmQUBjHHxNADWwq7AzJxoLRhoTkVpRAGpZ2zRJxLaHqyVq5O/gl+bA/m/7uwr+
3vUXcxyyQVwvZL9tdInGJYCg8KWBtzhKnFSFxOA58GxmgQ3UEs2Hq6RZLufYx63UtLSP9cLv4Prf
PWy6O7yKbOSAlI3MemkA52F+KgbwPSxSYpyhHGQ11LNrsMR0jvOVy/FbN7XgDW+0tVNf+mOHoy3K
ct0Nna1iIYb6Of49+FRAQmB6kiN9ofDhPWx1EhXPEutUyl1VVjvMcAbF7p/e1NKqhgru2PTz+/Lx
lCUUFI2CCk5N0ZrwCJxdpJAAd1tGDC0yWuWoiBMzHQ1ST+7mtrnkdtoR/Le3vz483K0efu/7DvqV
s3sigl2WMB1sX+0hTstcAFjSTAqzQbDEstLqVZKEBxHOZAoPj8fqrUQ3D7Xwy+Paxjf/xGsdF/6w
vofWwqJ4DA7zWAKWWUBQxeQyADnsMBfaqPACBn25tbCKVhNBJkrMv9FKztg5MvynA4m6/bx87DYF
cNDPuyegMFz25QD4CyENS9wnYwIx2DQmOIBrzx16YOoF95Zx9nIW9GrCVstyJrRU71TqSzFHvSu9
nvU4L/83wsCPy8X+vkdsLUTeZocCCINQw2GjJCxuAeAAn+WxN8MCkuI0Mysb1YKxnn+dzgBP75+7
++env75brt/fnp5X4js197crN5y8GIGNFZ5ifjoi4P4rcSkT2mDRHna5CgGskRqAwVaxyGWwWV3C
GuMha5EafBJ+OQ0Baff0xT+uds+P+5ISX2D9he83CLgZ4GJEib6zTyniDWWkpJxUABRCX9j2k9HP
tB/UL0200A0tlnSixS8JvT3j6OwH51kyyGwpgKTe5JkknkEcK5anDA6L6sxePWnxy5ka9i+p1mnZ
8FduZuu4W/qYLCW4Y7HQmIfb/4gEOiVuGXBPnSNAbV6wbTAzAvS5wGc2QfqruP5+mvM7dhKNQdKG
p3KbI3Fe/bvvDzwGM0zMQtRVkitLIsWzBwCwgBIYTZjBqm+MQchJLKtGqeffNFyF6+SR3H39dsSh
uFDY5VE4oHlTJKb7AsC9lBCOuuhysMhAJ0m04wjVxEsx70NZLdWx4/T3p7vnUxBnQwHTALJk0UvC
CvglCCrA6BISS3BJwUim4e9JFB8NU8+v1o357bR3MO2G09yPf5xS5MDOcFMr2tfHYIsoCt8D8SX4
HBfBQzL4KSjjFWwPo5x8vcgwl+ecG5i+V2tvW9o7OiPU2Dj/YXnf3Q169/vG6b5jJZv+/INSQSA5
9cQBuCWBCyaNT55n9xogZizCOeJ9eqNScr1tmNjW2oNtf+3Wy1GlRzvdh/pcdKQBNpUqGeKeBNpt
fSrgC7wSMUdn/KS1pRqoEmG7mqfy1nS96vOQ8PKPdPvhSPO06OdXQAmAPGWSCvYCJdjoATgNcblQ
zy08feGMxusVmk7i3VQKbFVDq+2RwMaP724/3H3/tLufnIzEZue+e5UKbAshCZvFhRMKvC1NsMJR
GaWtDJq+Uv9wW5JKG2Yb34htps1nPmMFB3G86U+A+SQdNxJzlpjXsDoQLxUlxUcIJcGV4l9x3/t8
pnSWa10224YuHZvogjeL3z8NKzKmqS7woooLJKe+OiEKCcZZknjQ2oSYdFDXhMF+/Bd1GktxxgRH
b9R6dvOtveaSNhKCxyV+f3ty4Ybb4dTF8AMGVRMZD44TY5GZ2ZRIAHhDUlRBGysUT/r1PudJljP9
+rctt70Wy7nbhl9uJhmvbwAzRiu6+ID/Hzt2hwqH7jtVslXF0EiSwXO/EsBOsNaTyArszuJcTP41
/PeHWpbxW/2jSj+l55motTJH8gl7vvYkhibFtBSESuztBSxFbGGMeF0iV84qQKyv40kOU9fybubg
c63p8UDUm5/7YsBE6BBYYciPFcND9I5qTOkaTEiIEgNYdnk1oUfzV5L3CfWZ5GKaBXqHt+o/P3xf
f76d7lPMrMgDS5BDdpKr4jkaldAM8JkRgM9CUUiVgZpRn7S/6vTNhWmrwwnT18YqbuhyznY2jE05
2223fFx//q/hJJbcH0yQQwWQKecttsphN6XQBQwr2kwyJodtdFedlrye9B8EOZdK3j+ulBRy7gg3
Qpl5qwdS7+XuHv+ZCbn3A31aue9tQT4PwIKwSLF+iGe+HeyqaLJRUQQp2VX0ZzzN2VaP4xuVIlbN
u0w3y25W4jneWPOTwfa/vvVu/xMe6onBwQ4C7EQBtgmG1IgBxuAewBzlgOP6YsOFL3YY/wzWPDy+
qcXsWrIfq4xfuj++fjomqvlw7tqwCDQOQCZeXRGzI0EAyMzORqNZ0CBuM1MxHqsSYtUgVJuVFpMF
fIP/9sreAHojD9JRIQTYdxAIxowHTmUUwTKdzs47Ji+DMRixvVjwoJbQNJZpZacS9i4rLr89f8e0
sxvOL/eiekDfhQZDsHMGjxtyEoo0JNsCAF1GJYx9jZg1luDMqZrRG7WOdh7BNmumNptZw273nx/y
mzH6CsXkFBLgSAAbSKn6coEkGaGmYDQNxOOaXTgMfr7bqn9cCb5u8OHNhh2b43682z2tp1QlFM14
MQlALx5jKq4Qiw24NrEA25DlGNWfRVVO8o316ngD3Xd8ybfdqZj+iKfbwC7GG7RALJYcohhEjIRt
Y4Z4B7SehRwUNdQLGiaJjulIlRxCzu+d6ESzk7v7+MGXU5jF1E2fcFgMZWETuA6wA4jPyLxTxqsn
PMBV6UKkJTFq+dVmAlNdsBJ4WiuhG4upN1KrYTEfVv+zPlUGdH9GOCkFFJYazNlkPNCsiGNUESnB
nkvWNnJTL+R4lGp608j1wS+Xs6Y7TAgMZ4PHnk4Gq40AoAtq4CGhjL1XgkJMNz6qJIsNV7aeHsa/
lJCYnhAGQRsWYFfTcvWme/ry/PDtaZRuAuC+PyG+Tzl5+A4aYlukAU8LJcDuyjoAwVpnlSWwtasc
RRqmOiAUfOFMNmn+4k2txbKh2lpM2n/q69F+YsKiRpjYEymxDB6cMPAc4NmxPzPGvhYPYTJnp9TF
ywGqkSvR3HrOiPGXU1zRRwbs08OiD1OYsLdF490onCjEQiJz2HIGy1pRCJZ5ZFak/3e4GZ5Voq5d
w0A2Ykpqd/dfxigcVtANfWtYAClGx4L39hSDx7LAPEBaQ6IC9F2EDEK8ToS8PwOQ4MFYpy0X87Cy
5bPaeSzIadLusT82+UevVX/LBXO9Wqw4hdlepTLeHeES+BDDiMo2Ku3BPqR9kTEdR38551iueH/y
Uq11o8a+5Us3alAd5bb50ARnSxSJCUcsxSMB0lniwC8RLbWJwRSZmJz1p7Zy2zDTsjH9ZpoFip+/
33/Z3X/arxc2dGC1Cv7s01umcKsioVRltKRAnPXAWfHYGxNKiHBVeX8yyZm1rF+qlAGgPFdGbF0r
1VOf5xr6FfA813DomnkdCpOYsi6wn7nEJgyAWyFwDrQB2zrztQ2dV5zqmr1WqbVcz8HwdomHHs3Z
m01/Apktdi4xtscCLEZhC1CdHPAWNLxhzkdg3dyA2p4pH6m/5DfHw9fiNc5EDteqbOdwZYxW1AJi
FO9PuuAPCBKZMWAwmUSm/dBi5Vx0JCZPs83cW6WuxysX4UqFVrYrSRs6SHbsIupnXITTRuQaA1J/
PwzjStqYiO5PXPtC+1hEtNEAC03iMU3OtdejVYJ0dO7YtwCmDoIgsd/96E5HbIVY8IGZa/De1HOY
WBSUQ1u8Zwy2IXbacxmMmcLQyWC1IKaxIp2ZMbD3t98f0ULRD1sYqUcfw09YoOBZMbyaRHI8GZmQ
sTAdibScq1y45i+c6DyOfyaGHB6PZHeU6Rm/hV/uT863Di30JmEphzhyOrbA2UIMR64dlcYUn0mw
eBsfECxwvLCTSiqFciAvyaWrzbKf5oJl9s9rdea4BH65md4/1v/TkcO/Gts93h4z9vvoaBhSFQrY
jwcgKAUb7wS2WQYHf1DJTNEBc3HhKr/WmOuMa2u8WWu3bWm3PbZwYOgcboYEr//b8+7u1FPoFkN1
hSYfrYegIx12lxlwGkAvnc9Rw2cMyU/s/syQlVic0rlYetVt13XvW0/v/+On4Zi+7cmDVSVIxjH5
J/AYkRAIBrG/xBlaItiQpa9GdYesbfO14VmllaGNnbG00xsI+kOWx6a01gUKOprINcNWSa3Q6THi
ONB58NvRJ2ySLpc39niKtvjjN25qeVlLiem9OLODikNzIt6rNnTaDL02OniquaMkScAsQrFIrCmO
BA06gIaFXhdzmtNdeYRy0raI2nRzFdd0PVHxt7ejy7L330mK4dIi70NQXBuSDXbWY54uUMVI1lrB
lrCp+YXmeo3naKszfuOmFnjT0GKfVseaQ/nn0Jo2qXoAShEBOwQoHn/CQwXgpYokLETqRLHGmFe6
NGoiQS09a0k/uyR1kCI+3G93n74/Hj8FkwMNl/1FpFZnCsQw4OUXwku8ucsrUqwrgWbYQvlyR2Bj
jnPXA8xerHWyDWe7dtP70t4t7z89PvzoxilHniwECI/3uUTYJyFA6IhaExZLotEBPpPXFWz2Y5+p
0+yf1lLPe7wd7VbH+4d26+/Yn3lKJynFFvC/Pl1gnQtMAs21eKYTNjmx2NdbsnAsqcRVNNPbR6rR
bupJeUuS6fqdHPiQk4H/YPQr/E3f6C0Q7mIdFRdU49GXgidhIhhEAGeaX2qVeyFMnJ6PdWCs4T4Z
c/pwe0h80/+TkIiqnk5n5s0CLxOTBsIZFoDBs+xjrQdwRBIwP8qlz1qwPyO01Z0bM4ErfcX83kf4
5dpM6BN+8+e7o8ZWYMULM9dg28lnYYmkloMZMbxE3CrCvfY2aGM0v3jirBq4kszMm2/hl1L+X3FX
0hzHraTv/Sv6MhF2xBQH++IIH7AUZD6Jlkak7DdzYfRGmWGyqWE3bcu/fjJR3dWFquom35jh4UEi
awESKCA3ZH7Zo2yLhd8PiTKtb68GRZQGwitbYz4FZsG5xFPllLBSpYQpfacI67RbkLUQIxO2EKYX
VLtujrdWf2xX665PnBuJU8cxdEApYmUMulKSW0xcZpWVdV0JhMKRSUVCT4IsjPfRo9YOqc0hOXqI
qLndKRw5eamj4JSwmqS20gegFCwVbhWrjAoBhBEVISlH+DOBAt3GTyBrjqg2dDkE0LEZ8K+c+iIa
vYUrbcx8z5N0KVQpoYaPMarGW1dJyQ1XKiHS/HOrtWy6IHA1ohbTFe0rJm9W61UjfmZ3l9uHx6wj
N6DYjDdquwmGUYTeEMwimBUHWz/UqUIXluXayOBf5Jke6erIGePwwXJoQowM7ZC8eA8MZ9OGAKJs
qYWl1sMGjNZnyx8tbhhHEFQGa2qeSC/GtNtG2fnwTC1f3LOCp/XigCqco5A9rS1w3qBBscvBtV4o
tP1rWXtlTTqCKdU21Ot+ZN0NM33eZSTvU7FRMVmHGPYVUaAqcNCsKycILD9SR8oCMM5n8D7/pTiI
kp5jGU7dZ7qjBlY61IYYYX0NbwfXsvm63v6yKjAg0Ye1C2xpfsEzNxodwcMWWTsQF0zBBjRUVNJG
z0AxYUm9PkRlY1FcDikcmh3tQ8VUsCGqb764X/y4dz5/LSQRbfHECGi0NCCanpAI1BIlWuCId+Zw
PzBlWM8CHzTXI2Y2Rky7GT7OlrezdYeSJh071ZIaEhmewyJSpgZLLoFhFxKXzGf3J3+ldOySgh7x
w63EFGtZ+Dv3wYW3A8wYwRg3dRSV8pghaSPYPCDBYQsJRwIzmtG/K5S3S2ExND0ELoaLvP0uH9af
e5+EOVRoYCwCwVTAerAV7AVa4VlZbR2NmstX+iRt5yXJQ4BouGjsIezuUz/iOGonEfmM1zwglg2m
b6HxzEBvpspbG/xrhdx9GqPYjCx+bdtshz8Px0GY/L1DruE1GGQMpCdIHWA6RoMtQZABGzA8oyDa
hXIH/jlyHIT9jHBEPWujKr/M7jvw9viFA6gZFMWf0aAy8cTwkARUZBEYr00tZaI9Gdhpo+x7xMqD
iy224+Lhy9eb27tOiGQ+fBJGcewaNF+GIfgM+gcrWwQlwTDFQrrsCJJBt7mCktnQCW+B+5AeVHEh
qprT0MbFRClXOQ6j+SUbzx50MpsBQhQ6mWLlaRIwadFQ51RUgryeWDzQcupAue90Ar41MuwlpQOX
f8tqHh5xFchdlYH8S47Zpz5pJqpkMCvCY6gPUTVYigQ+CsKUihd51IqOjvn/O4+UgxnCTSPExwGG
4H/ubrcr3q5lqrK7IAaO2cgaE3MwV0UkMANAkChlrWYW4ax6oqxoqEsCCJ2hTscl7zsL/vkh7L5s
WzcGvQM1o4zBYkkJ1QgpMYANuJJNkSeuvCAv89QfWh+fwcP9knY5XAvcLukIaFXXBbkD82ESdVQ8
+UmIrW9TnTkpGFIcTGgWKbojkwGZ8Oyif875WD5TjGF2MzKGOVH7JfDrH3fL48elnltYAxaDxBPK
YxADNkNBewIyzdSBjttRh1YLYuZji2HOWzTnX1a398vZXTXbrA+olTI7IbK3yBoaa0F8lRzKJoUR
fzWWLAjGYdwZMJZeqtGwxZKgYRCoBVHez2obCOAmvT8v00bGO1DxosQMSIGyhztaWYFGUQBjRBti
mfkLMn53syB9Ocz6tXw1qAjWwXcRoJ3nPE78/ybXGCGa1Y7XVWIYVcswF89Ti8XMbNDEaCLpMyeT
z6C8dB6YlITyMepVHyBlhzo6RDBlThlYnaHy2mD6PJEgR4BJSFXnSFyb/EmHVNFylzTBRsxAkYNR
5iVgQZHhmM0fmQtTeA2cCaR/SKjuiQASDh33dYoaweppsPHVbZ8DNcfAC8aMPzES+QIXb+ajlVgy
9hb+hktpB82H/6MTwOkoEvdg8YLuw4OhDaMIBtR+UH1JfCbgqG37BOwX3i6oF8MAsHzxkLC4nd1d
b2/vV5vt7FDTJhd5OhPNsXasa2AdTFeYfdrw5wyI6mpg4MHDxZelcL358CnsYKE6QzhGRG8YQ64o
9E0/ju2oiNHAoSPsgIp45NI1R6RN0NgpaoVKOgWDOjn5p8VL+I9x0QIk0jG6+SBhZIHlN39+hD9H
syloAvUUrI0Ks0cwrB6EpYB/ogJFQwvQbF8WoFt2dBRgqPNMMRwjh2q/sLIVTv/4wHqGnU5RMU4x
/c8jVLdOeGpK4E8aVA2sPzH6SoZd2/mkpG4ovsSc9U+y//Np9rj9c6eWN3qqwJCIfDQUYO8qkKaK
IzC9V3joC59BABNLCtQsaU5beofGj+APtPcL0udmhMvO553Zrt/0ptswl7SKIPN5DSwfo8thvdVV
4MIxg5HcIb3adO97L4mej833osWcv/vzfnYmD74htAMC4bC2UWVBfG088XTIHknUinCE5Q91qbJ0
Gyl7X4xN2bKP0nIyMpRTp7SLspIhA24TmEOcUsNoTAgtT636q5Ghx+I8rVjwEY6xwCy6JrALq0+2
yui+gmWihHuWfBW5AdXKBF9Zy1xVU+Vj8IQ4wschvL6OKaHQnxwhYtafxh8azbEMiZcRGCqHz2c8
RnkC16qMUbpKQYAE5ET7l9VG2TV+DJI83yyJno18+8VcDmt8pct9ha8mKc8I5iQXqmL5yDoxhuCC
WIzRKEcJSL9npENu82hhr3RZ0rkcmVxQVXuT+2H1ePPweI/ew26do73dR3QMJnLU5hDxyYHdYXhE
6AxYoNw7E9iLMg9GujmSWjt8cFKOYEQ23KBToFm4/p27HHgzvQgMq15UMieeYO1Dr0HJCE5gLAQD
Pqv+Jm/mgb5iWDfDop540ZxKC0+X9W8ISZTjP3mO/8yqyO73LBYl1pnEwH/Mak0gV5z1popYY47W
1Gr7iscfe3qOPLi72xu2HRv2bK833s3Wn2878Tg5/DEEkTBzRAZ072c5GQxsI1C3JE2RGMZ6fLzT
Srd7OSNDpVvOBom2YAZcNkbKiM4kmVaKUQLCus5ufo450R5DTImzLrK6fmkG6q6To9GYu/vlEOhQ
85ZzPB0fFPG5Wv2xBW4uG6+OsLsTIhd9bbiUFdgNeHYHGohTYCpFJWhUVIb6BWVOsO3jBgPeLai+
UUOjU2YYjkZ8P4IKcPfbmT0YCkioksTLYCpqsW6pAj3bKFgHxDOhEObJp55vt2ympGBY+dIqYgdp
5GAzLJvaMGRX/M1qdsZRgssEVjuIPQzIxxqSFAxfgnn8YMJ7Ihhh4hVxNPaUHKt219ydFMOZDw9I
FMjw3hhHQRf2ruPsOBa64aPS1cY55atQE4sZt8BHsXYJSbApfaJJ69c3qFtyTmAx9JVaGOXI580J
STc7nPPN3fXy63p2f7s4RPCesea72pgRNLA0AoxSssrA8sJBMxgpr6Po+baGrRXE8CFkAV5kPVH8
x5fF2W5WLmZrUJDvV+sC5CSiguhAeNURWQ1GrngZbVWD9sp9IpR6+Qzka6/1Y6ZZ77HeaPjIaFR/
NFgvdHGXgeR2altTM5Ho5A0meqH/HfhlipjoBRpFLYDRGGGJrp/Ve8OJaqHhXUnuMPXSqhydqwdl
K0/HGKP2kzwYPagFcVhgWIEa1E7BSU5pCEk9X7nyZCBO94liEDn+djCIldzzy6f177frg8Iuc0BW
AoEkTC0rESlaGBYBmKWoMJ4leV9bIviRoIxDawUZdkRhV1Ye6k1/WYxUapfQP2emrohE5LUI1qKx
NVCkpWYMNhs1aZSOtrmSCD0yF8CUBwF03fDUtvYvyy7sHFgFm0jHZCtlCEb8II5MwALjVCljWEok
pdOhSYMOenTejNBpWhY039x34PEySFyNYOciVM6gVJFaNEqFjDI5HzSzrJe602mj7HsIjGzVjA3L
Et49PF5+XS9Qr7E7U6VBLMCcPl0zUimJ+ZjBg7ESc6Qwt3DLxGT0q7P6lp5jqsTudjHWETw+vNiv
ebUH0/7ldg/NIGExY1QgrbWvJQNjVtcOFgKFfVIHV9G6ZqC/CRXNqwAK7SG1fzg/Dbn9w3lvfCOb
bqbGqtjtJzoHoK7RZMZzpJyCj/8jE6sppYm4KmosYqSB8ToEdg7JGu4jsGDjX5xJ2OvtRDJh78li
fMshzgFebA/ac5mti14J1109Z6lI1Jj7pAkWDiCcVFYFWwE3hlUK29up+Hr1nEsqykGMbbjlsi8U
42r+9LlJrUSzLacb0pxryLgTLEgw1ayAD2M0BYkITFIEo51QhMiXeb+7PRxLiT88UYxhxUbUxZVq
a8PMng5liqhRuSQWxvqSVAmKJTyY44hq6cDMDkRYr2RM/Ry/p5GiRNCLHnatCeuv8dlvNx3X++50
mggFPCubMoL6GAlPlZQIhZaP+hHjU1OihJEe1Ff/F+sOdJ+YFNRqOTIEvdwDJu7z/e9mW3RwtHJS
7A1JZp0lsk6V0hr9k5yDJQFyQAXujAnCg4FxEkmgaLmgDVEZB7SxQ+3eQdC0zkAiEVRf2EFY3y2g
CFBYkJZXCJxLacDiST2H6YnAaOhuyKY1auTl/By0cbDj8xF4xo3VnEeGWfSI9BN8gO/KAujBAVQc
VQvlTovqEXo4HZkTruc9NWIX8t2mchh+KM8Fk4PmvmUxoFqjm7Qgb6yNCqNKAn1BMPkYaXoxQtoN
OVIe4qY4jmokG2UZHNg5kWBHVDoh0iNBcNcaATmVB1KBxySiX1Qj4rldMXyuHNCwGKjVAk/Ii5qI
y/VmszwUhpH4+XPCEqG51gNwGNSLMGPXw+qrJDdYf0dpyk8GkXfaLchazIaaJFxs06wfV/cPv626
QV4ix8JIVidu64qKiCXsYUnCxrVY80e6wJKxYjzYud9ej5iR/bGU/SiC+Wzx69OXAkYDDCuxK0qf
0c/BNKmxigQGjICIB0KtAvJ8MjJwCSYBeZFDyvd66n7v5t6kJJWP0G/N3kTBIl0fV59vN9vHThHg
pkq40ySCcokVdxDfQERX2UBBjAsPuoEhNRj0/4+1xUqyy1FbOzLqWRuofPkF65KNOqVVkvCBCEaj
YZUuI2Jl4NNVnnAZRB2p939XWcY+leUQRyIT9HKH91B6yu4QYCtHtuB/GWJaUmAzWEsW4fk0LEPn
KAKFkMiDMTWYlM/YzNtjimW+1aUUyx8PKMWLR9Phzpp5yYAb+N7uT97EOBlhKJMYaZUo5n0yVRkN
egWmsiDWZYj6bzk1aO4VI7VDFGxr5rPliE2wywine4hIrhSWbs+n5ppR7xDNnxIsvM0krEDLqiCj
DhJPpJx/1oF5Ii2uvT0pyVyN0L7oAz+i/2izz4pvuFw+3til2XMwjJPCIH+OZVEoMA/D8RTABO2Z
xk/kX8NoK5Lzjzud2kfKoS6GVoFZ8OXR8rPn7zOcJ2i2u4BdbVHdyDxSEptRpy1WaebUw4Bt0JjS
4bSD5QjDfiZC7ChCZ741KYkc+UgL2Qaqh4/p8ul2uyr8F0QbL0I0lXImYLYNaETMu4oE5oh33rjA
exWVimZKCkZSkPDiiROxsQygGksph8iqOqBxzwQDM5/FykpvlVBeam/+opO++8RkUv+xs70vHpa3
N3tIn8un+3to+DsYYpjdgfF3P1uupvOv04ftL6vH6ZfHB3h5A0PYzh4/r/KS3/5yu9nf+C5PzXa2
+fUaVPzrL7fL76YNKkcDH3a9gH+3q++mpHtxs9peb7bt9bLj55onf615+KMzKpiB3N/9bIE1tMb6
Y4yZf63LyU8XUxTN3enFUljv13dfpwjsgXcebqatHf/d9OoBZMb3ksozcTF9XG1ul2DOf0/efkP+
7dvp5ncMRVpePzxtr4Gqp3WuzQidLXdvgE0Cz01+Bk13Nr9bQQPYedssPWNvpr/DTTCC9m2e6GN/
qdsPNrHrZZrHffrnp/OPV5/cO/jtY/3m/P2P08nu/6v/+lAff+3y/L/z3fD+049X02/WD+tq8TC7
W20Wq+W308n3h58jDbR3979M3GJ7+xuWqrt6nC1w9Y78MCLM2/aP6SS8mW4y2sH0FoXEZrQrKkT7
joB3YK99Om9emKImPfoOK/qJuwJywDXWsLOe8o7s9SbMGbnovPOPy+k/zq+mn5skTSBx8bAc6evQ
Dz/2zjdNAivObKbtjLw59LP/2T8zhSU9Wy4RjHMKRGMMfmd5fDt5m1Gvpg6vTN+vF6vx71OQdeHe
vXsfTq4jREjiF+2Mt+98fpo9LqdfcK7Hfjhr+9HTyYdmt0/hE33ZrKbn65uHZ5fA5ZULb6dvPrmP
8ShxoEoePo2Bd7ZgfDyzMSg5U913frq4ziNyVye2xVSQljY5nfy8mqMwvsjTf6yfDm2cTifX19Fd
udO0Mdq+w0DrhHfOL9yb+vRLslzS19fvzn98W0dYbke7UeYwB00/V/U/r06TJtSZbmkT+M6nH8/D
+3iSOrCHu7TdZw53dHPmH5UZ8OH77PjAPRjIj1+PvcQ7683+39jU1furzC5PL54z82Y/63r3zr9P
74FzbIqN2mzQPAKYt/1c53cm/wtQSwMEFAACAAgA0BEoSuVIAePrAgAAHgcAAFYAHABhY2Nlc3Np
YmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252
ZXJzaW9uLWhhbmctc3RkZXJyLnR4dFVUCQADCBFyWAgRclh1eAsAAQT1AQAABBQAAACVlF1v2jAU
hu/5Fb6aoGPLFxAStZVaPiS0rq2AlYtqqhz7GCwlNnKctd2vnx0SYHxo3RV2/L7POT7n4JvZbDSd
Tx7u0fhmcjcaxih7WWvVcJ5kWmSQO0OssTNazJwFJN+4rn5uC55SZwhJsXSKXDmpJDh1uCBpQcF5
1cyZAvu6anqu10IxMpvL+TX6tJiP49huDGUgFcTxTL+ncCvfbJjrOJZrUFhLddWsLZ9a6HmOrtBJ
x8+GhxBy3zy3x7od5rrIRBgonK8afnVAItLxIor+I/Q/pCalRlDRaeCH0GO77Kzig1E+ZrHROnvR
cBjuok1BUFCl/iR679xyuhUHQjdKouCQM0ohA6HjOAddes6A2gfNGHLGQIEg0Gr06rLTbq9P+3uF
kaTY0BWYWSEHAao7DFZYLA0m3GGiMOyewhAFWMMmsbkCaLYa/X0XOeminN4CkRkMCmVS1vXJRIwV
ziwkqovtMkaIt4OUgrI4tWk7KY9aXR4FK1vnuVVK4PdJxI5TWiiuQcVxAksudvX4Mb1DRIpcm2on
UqbtY+eFoXv1hSntUDjW3ElMLd3cOOPaDlSTrLDaoC/aqBA5XwqgKJViaXj+jueGwXke44LnK6B2
z8WySWWRpKZvXlADwCfEPw/I8HsCdjPK1vrdlN3r7JzgeeeducZKV3G/Yy6mkMtCEds6r1u1znP7
OPAPWlcDTOrainul2Oth4jKXHPW5loW1LOknDNDnZyPczIpZTIRpnsBpC71s5tFmVJ4uuF494iXE
zO7uLbJcPXF4jc271a+wCQFi6v/FYu2ZpT4q/suwLNT0TYqJSYXjlP/GmkthyeMtdKlksS5XBhpt
oSzEcA5qb7aF7OW3j/LdGkUhpNEOhT7kruay23WjwDyPm9pUhBtBHxjLzTcwdxFUvpoy+/7Wgd2e
i2iRrff+21zoNtqbXDP7frB1EDAP/PAvh+3DSVendoW4F/ooM7qGX85NyBiLOiTodDFF5ZQ1/gBQ
SwMEFAACAAgAKRIoSuypvbtoOgAA48IAAEEAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQtY3Jhc2gtbG9nLnR4dFVUCQADrhFyWEcRclh1eAsAAQT1
AQAABBQAAADkW1tz28aSfl7+CjylqNig5j4Dlo+rcE10YssuS3aylUqxQGAgoUwBDAja1v767QFI
CgAhWUxSuw9HDxbFAbq/vs7XA/h9VSZ6s5lb/Z9ge7f+oItUV9eV1tbvRDBE/pi8j+vb4aXwc/6p
XG3v9Ob807s3H9+G5z+e9++fXKS6qPMs19X8cS2TT7ra5GUxVIAmfplq6/p+rftLvylhC2ZNL+M6
/6LPAF0Faqz3A5Pe39e3ZWFsoFz8MfmgN+uy2OTLVU/cIxZ/3OjKugiGmDjCk0kQ1/r8Or8bwCII
SxthGykLkTlmc0pniEsLvkBo8u7KGrPzbZxYsPSbhdEM45mwppj/hAkmZwB4XVb10V0YT9yiLO7v
yu3G+vixgzGgWGDuIVty17FxIHxbCOzYvpCejALpejyYTCYGueV+jT9r6yovEm15ZVnPLeogZG10
UhbpZjK5ut/U+s66KGp9U+X1vfFurZO6QaKLGLyYTiZ+FW9udWpd31Y6Tg9AEGDJN+u4Tm6tP7d6
C45KyrtZvF6v9Owuzgu7bm6YTMJviV4bof0wh7/5C88NFq7vh1dX1vTq4qer8KdPZ53rTW4cYv1L
+OFycXH5yX1zATcFwQdzV1xb6Bva/SyXcbrUOutIuASDehr9dx/eX4WLy3fXF9F/Tyaf3lof9A1c
ubEudVyBsL2Q+cS2X1sTc99icR3+dn1UGTutGLE4yeCD/fDF0mHwwfrdsqRSv/xhVfa38+rrN+vq
7b/8d7+OFNVk8tOqXMYr67qKTbS2WQa5Oa30F8gMbSW3VVmUq/ImT+CaXQDP5hOsGBOSMSTpDDtC
OMjyo0tdfy2rz0d4/6v1lMyyTKUKskhoy4cQ1XlxY6U6i7erGmJYfs61tanLKr7R1te8vrXWbdGd
L7dFutJWfij4v6kfCSsySo3+HKId/Xx9/d5vAFzt9G9gbaXrsvh7qqjDe6our55SNWlTHVJ8l/vz
+TNzHYqis/Lv+Et8lVT5uvbLSveQNWkiOE0zJK1fr6NGkfUCCtSauhvoSyZ7N7NkvZ5TQs8muCf4
V718kGgdC15mS4Kd1Aiezz/o7NXuhvn8qr5faa/8Bu0tfj2fl2tdxWD/v6bfufSHH84AnZTWFK6Z
3c4xwmcTchKoxMFci8w6KDCCnwnuebe0IBmA3F0HQKk4m9CTccZg6UFHu3M0mkZBddZ3bsLGTYcv
AQVT8mzCToKRJplcOnQII1zpOyi/+Xyj60b6IzheWn0fBbnpKBq2AoOQM7mHuBPYpBrD7GzCT/MW
ZQxKrBPVMtm2CCsNzSoZgNy50b+Ni5sGiiKwy+9valBghdHZRJwKQ0rJx2AkpsXph+1/2jgA4YFW
Av3obCJP15qMak3z1IM2faf9bWWYy37looiq+K4FIZwjDAI4gToNg9BpkuAHDI38Jj/2sg/F/b6u
Xh1h3ZUNF+CR5t4WilJnE+c0JAyLxMmOvfErkAtgh/Ml7LTFQyp8/PAGpBebGpJ1WZarl8d3/tiU
k5APfmpltXkiIVsxOi1gyZIB3zxS9KaMUwMRRN3ltWkf0+QW+ECD78eX1hZI5U0BLGhVFjcGFGbk
AVR7dwNKKQdA4VNBwa72OKgsL3KzDZm/YZOapuUWqJlBQakzioIxg4KchiJFSUIeR3EX3y+1+SO8
W9f3TQJj2MNG9WPmwP6A6akANMaPA9jUcVXvfPAWNl0g++W2StpaImrcE1DVZvtkp5VUJmJKBiW1
hwHBqFuVQEGmnaVd3Rh1fKDul7x+o2/i5H5EHRZoiTKUHFXwgyK1r0zYzyh0CCxOkx+rZaatF7/D
lW33gQ+G9VdFvDqzFm2HNC5tVn8FzvceGNE8M39dGizNp0+5/jr/w+CRYPhe1uzuDkCZSpQngcJL
nUA92QaUkWwEvq/yL4DEQII6LIsL8EAer/L/iQ0dMriiA6Sbqtyum08GkuDIaTAZUQYSUD6TgepE
TJmM9WOYTDwOGDrO6SOhiPSBMAmdFDunAUm0TJ0HINYzdUPFdXVzjqEPEHQ0AY/T5d0wo1MKNK1N
ip0wt0jfZdkGvtMQhiItv7aJyTkUXU+0USs5WEzwiVo1EshKe3dM86J+aXUacbMfkIYxHGnF1FQ6
IaepzZAGoty/w1TCuGpMRg3GjBqL6Umql8CGJbHM+GBCd2STQdEUF9QWWGyt8mV6v0pn8E++fGri
cRjwEg7zS9MwDerDRIPnzYgCAjbN7L/4DD1Ar/oyu8NTFmvONYER2MxZfzbXV7reVgYzRs1c8iBt
3Y5BPXFdaVotUy6Vtb9w8fXP9kPjWkWbieIkcUvKcGtnTxY9WEyenN2MT3eL9l1cQNOr/oKDYHS2
PsOkXtSLP8tNzzF76SNR60pxHA7cj1uL/fWLu5sKGs6X8rM2GY/F3jXPF4jTJB0IPDiIk4OD6H9c
SrD/OIv5X7EYoxgs3ui7r3FeLwz9jVdj9iZPp6IjKcIpyqwiLsrNSuu1EeI4ezOTFy9meLyp9RAR
J0Gwk23qdD5fLPB8Xt/mm11GAzc0ghdZWU0fLmgPzWAU21YNf3hluHtD4F92xDRrrzBMH3h/johW
r63Xu9GkGUD44Ajh+wc7KZGZsL6UefpdxM+BZQD9TcsGNmGpgKfswDBKh8cT3zcxyTgMLcu7eLUq
k509HYzbIod2u4C1z68OF13VgCl5u631t9c/dLH+VYsaUxzYlDuSgSULMTzHeI49mKcP9pis/1jU
+SqKVxv9f25YOxI3oTKDed88SYfnI88xDyXOg3k/63gNQUti2LZu9P9L3CB7pgZGO6eZoyd5qk06
SdTQJsjxpD1zudpb12QJYl11SA4PWp5R1AyY+YM6d3NfJNfxpuMnI/9lW/bTAawfz6Znr00PMBX3
YVu8Kct1C4zAxj89CDOHq0QOz16eAY6iVPwj4MKiru7fl0CAp39HXEOYqRqYhvHwzOYZpnGckEbT
j52kWuxa6WJdld/uX3Xa7BbEvmqBAZK/Z8PLv+XSH03fboA3J9Mwjk4Xi2xbNM/Y4tViGW/0nGHe
HhmdxiEcmFsOHGJZpvfNno+bY58TJeH4QdJhaBCqOcA5kYlwbA0FPfAQMe+S78urjx/e+GVRtI8c
20OUk4lKqrNmijIUd3OzqKt4PcZSniOILulBkCHJfPCEw+RnVG6LtGl1x0yHcmBNMKotFn60q/Ar
XX3JE5jlktv3ZeMOgsmATTxDLOM66YqFX41nuRhs28+QRTUUZVfS1VoneZYnzZGWGOybY8/YBk/X
WCyAb/4+COe0jeeZtah253TmC6OyOapg4Ib+FjaEfTTVshRrYbx7edXm06LNscWi9QVu9o9/poiU
9Y8VkWP9s0WErGT3RL55OPubErtH85bZpbU1Fcxe5vXZfGJZVfxtPvKAHBaWvYX9Dywkj92RHhbw
cteb4bdRkuaPyNoMFzBBQhnt6/2CMZovMUk5a+4YXTBP4St1rMTcYlVO9xbJU4ifNrIwMgvZ4Mcs
4CNRhAljCSaPWILpYwvssQU+tmCU5OvOysNTYKvKVkN3wcRjjnorMhYTkDV5s3slwH//sX3NgU3C
qiqr5tWJ3YsPhzvF5Np0x8vt3XL/sg5mk8nEy4u4urcu7uIbvZlP9q83fDu82WDZVvfLpUPB0daL
wWHXFJ1Zr3gQCRFEkU09hG0aSt92mfLswGHER1Iq349ef/+loq66JB7BAF82GKCKdufm13pTX93m
d7vSatA4gqnIF4ABB4FNnci3HUEiW/khMEBfiBChMTSPSe3jWrJjXNCqTZINcW3X5j2fLjQleegR
FNgYBcymLue2YubPAIVMEQ+oJn4GtK7gLjrYiMgROhHDGJDJJ9jXVCD2Am6CXzCV0xcAFHtcKfPa
E2mAckxtV4XIdij1AuVIj2MxBrQvedacWZuN5Hz3stPm3B1c08WvNDn2rgOF0pTw8Ch9DDdEF/Mw
Urai0jMORrbyfG6zwA0CGhEn5HIMdytxHG+71sW5TIg4wpnJWB7jfMzBLowVjk+xHbDQZAKRtuNS
btMo9HxHQVZEziNAH/fsbrEDFfOMH7kUCyqWoy7dPZ0YwSuwDJjPmO1jKmwaBMR2gsi1Q8JDxYRE
vosed2wr9yn3tldMWoTGj0I5ij4gP3y5jGMGyWxOxa0pFWhGiCksxaSgUOm+j6ANYR+q3/eZeWFO
Ie6HDOEA4G03lamlc3N3R5cigiyHuuBLQQeF80HflXXzTGzH8TbWlMzMfebdGOuVR5TCjDnQa6IQ
vIR922NeZGPOBUPUIZxSgNG+g3f+Jl9W0IPPd0+bor13NufHesZ9d3xd36pMjliVycYq8MMqhqlk
f6o8lYLPOJop407KwkAgbnMY0W0qGLZdlwV26EcUe9AYfI467mxpzvlA4gCKGoOSDtLw2vetKW49
CjgiHkK/DKjtcOhF1JHcht4T2oT4ngoxQHGf5U8QO+5AWOjBlAQdw5Q0HsD8RVewm5YQfXrAij0m
mQl2yF2IvQoJ+IwLqBAwgEgUkVAdY+2A3AsdR7pf7cF1SHIEly4dkmV0OCD8BCzgNk82xr3QvBrY
DpSPbIpbceQqaiPqKpvSALqm60D/DHwusZRB5NEnoXcVjMPvXjHpo6VjJuh9jrYPhf3qfl2X+0wF
/LLJVeN3h0pKiADewTzIVQcS1pMutCewCLtYkcBzR3P1WPIAWHYMLFEHYN/uVmRG9pCIM8MGDSgL
hC8CO4hg76EE9kxXEGxH0AGCKMDElbiDZiCnByBzjqvXfDnIRb9Myhh8Avrh2rYbGs4lXSBgBHYY
GnEoXwfi6ToUM0Goiep34gkyHwskLA1wqhGcLVXrDEHxZj+JTymh++gxHJlChhbpQdbRCAe251IX
SgdzKcPAgUQcjd5Qah/SEo1AWtLGdebmdV6Yp857QNiRDRrkSMmlimwUucZxsN8BJ4NqhhIIiM+J
76t+9PqS+iAyNgIiY4P4xds0L2fbIq83M9d8/lgYboNnmJrOAr8AGJXK41DudkQwbL8EYusJAjTH
p9SVJJCIkycjepA8HtXDctcCGNedIwvgy+U+sn9u4you6rzQe0cqw3JRZMhNhGzkq4bbcNuj0BND
Jj3KlQgcpEZjOpTXB8PUCBhOBu681LW7hREZCsJcDP+aqhQOkOswsjllQA8UOBL6c2QTz3Olr9wo
kOw5+8hO+LgPd4s90LBtHYPmhA9Al2td3Kwg6GS22/yaD6Y1E8ewbcf2fKBcEGtsewGkQBBKDr0m
AvhPB/4diP7pzTjidq0HWKjjyoEv6T7kzVnTlR8nt4eYY+zMOEAl4NdABq4NWzM4OYRu7LpuZEde
GIRAGYLQd/8y1PbyHKjlGIi+CQk+NkGh5YDLJSBkmxv+ZvomFaLpAApTBfQ4sl3kSkMkpa0cmCV5
xCWT0BU84j4nUwzEjxeP74UfL3qYFR5JboWH9OitTvPYTcyL+fkyX5n/vrFjS9Ix0w8PBdAQbmNH
AHiBiJnDfTAjxJR4jqO8p5PlWP64BcfXDazRI9YQsGbZteZNXNy4Rby63+QNLZFt6pvfhk+pgGBM
YPCkIRijYBNzJHNtpEIeMJhqmORPtzxQkifN4eLTLLpzTxfSI4nYuaJndMz4sdGxGG7XF8kDHGhS
qsk+88vELwjDwAsFsAUK7MuDPQjoC7MJ9XwXZi7lMOc5ydfVMW5F94q+FWP1Hyu83zmDPL4pyo15
MAjBN2dH/io3rzLvmwEysWOEUU9AAyA4dGzKuWc7PneBxrvmdWdKPUf099Gn5fYgLtMRRydsuK+m
cR2n2vzXprLaJM0Y3iYYEwZiqAQWEcKGJ0KFQNHDVg+1wogIRRBgF4LxHF+b14aDvZrHR/Ojy3om
pXTE66nx+o4Eb9ebB67JKJ8ZmudgrpjLEHgZZjNKQwVcE1Pbh5GDKAdROWQrXTl9AIqMAIiXB8LU
sq28yA4knElpSBwzY5rrOkDBA1uwwJAl4QCQQNnCdz2XeTKKWPAUiXsQ2wXF9fI40DwzDDwbTjdN
QzpMjpICbQIfITPcmKOJgJlmHinPgJPQFAmyoRmGGAniE4q+O9w08h/v5s1yD3vmoBHsCRqZzNxP
/s+BNeUz1aDnUIEz1gSYwfbpYR84lEQwl6EI/OpHUEaIC0YZDKvMf+5m1Gh53IJmuW9BdryNCqQP
TCCHFvKlk5RNIiAO+6YpdOJC3QsBDDUCX0dE+l7gEuGFTj8je1ImfVVsTH+yT8m3zRtx+DCAmVhT
10de5ClbhpCDFHqp7WLJbRlRh4nIZ5yzvv6elIH+dER/Rvb2m4eGh2JQMI+aDk5h3hQMQsRVBAOE
A0WgiIINORKEszBkGIWjldCR1keR0TEUSZNHDxVUlHWe3R+asKnLdr4KmPKC8H95u7LeOHIk/a5f
sY8NDFjD+3jk6fFue+0edXvmbVBHll1rWTIk2ds9v34jMutIZrJKhYXQwMDWKLPJCGYw4vsigrSQ
wGgMbE0ZgVrRUghQQJsFIAIT46WtOR54IlhjecRymjFD20Lfh9i2x+OSLZDQeO68ko4R8MLwpQwP
uFCFWFgkGkuSIcoXdyUOfN6k8elNLV3DogQSskrk2z++rh4OyAF9ihx25WDhBgzMaIWo1iFfzcQq
WNQQOBBZBT64hcfnW7KapK1D9UqtyHY5VwRQ+kSRFgDyv94C/zYGIa+TvfcGzuuyA05BjQUvEyEc
AleKpGgbYmDc86BfHWiBHGeY6K+3la6OzjmoduKYw3xa3m9WD7+fHAGE9wWmhdHIbKIRCxg8IIRk
vZEpg2UqKw2QeuCiEzpfj1ZJAvF4LsnGTs3nc3f3Da1GLEQPNtArqOQl7ERCQwQSpxDXJQNYA3RT
MRVZ9AvGvnxcnTOT0Wt/g6nbL+GTiTKqoczKNbbvx92me0CNLMZWN+xf5j2XwIZIDMjxi8aEBAR/
xqQDcA5O0MUX928/8vkN3D+upV41DH/TuZ5YnJzWsRwoGEVmCpSBAQ7hgE/gI4hUICwo25cIjBAK
jCPLS07wa8saupYoWKqqFvDpW9dBgHns1g+f8GDL+CtizGc9/u//xq2YlXeWelIgUhHBkwLHksFv
h6QpoFMIYPk1DOW2l+rvLaEqDzR9rV6BFkDolJ3As+PIvTH9Y1d2mDIYgBqjDFAaKu6EchxCZhAY
N4tPxJqQSPZWRAGkdqggX4V0cIrzRoVPKzW2Yp7n1VulDg7m5919t3z0d586mPSU89C8dzGlZIjr
qZBCdQHnCd8OXLEnEGhNCBjHeLrsPIFF3+Hx4u7Fr/ajW8MA7dfagtaKKt1SVE++V8Obg1PFvS+x
NORTUiYJT5jkmOUpYKIFYE4GwmSB3Elr5etEi8aLY30M1XN9DN1stt1qXzmAXVfVDWCvH/LOQUWq
SgIuoIBACQmYFQwO8AdANCutF5GZM1WDetRapM088WEYb3nVnjK8fQ+klA41JGkcCgaL6zhWD7PB
kpdFX5WB2VGIIA6YlTauXEdX3r5/gbC8fX9Ty7lsCO/URPjJfv7Z/3djP4sgVFRSAPKO4L6EgJWl
kREpePGSpdRk19ONDGNf2MjwtJbfNeyBremRRP/lL8vV7mgL1AwkmvNcggD0kx1IyhRiBENJtszH
nmRFOiHRo3FqARqJR8NXm4MA5eH++cPy8al7PAF1u0CAwLXxzmdJJBMQoBjjCBAECamk6LTStpQ/
D4Idztj2udap0De1cg177zozB6JDv8bCoZVICsAT6VoRkgEzyiQlC7Yuse4YgTNG7QLnVMFeTC+p
faZtI+6fjcW1vcOYiGuXwm67WULB/xaBUzK5GCql+59QZrRjB4hfRyxYUcWJi5wTyq31AC7jUCK6
jpP/Fi8w8t+q0jTI6VrCbw58+M3bcjSrIcWVcrEslgiIs4CoIQvikhLAxmF9DfdeM3dxefvmsHNu
pLKS4+RjkR1fz3ek4x2fVAaHHupjcdccuKsy0mYLsA3VQO6qiQ1MEKk0Z4DmjTb2ImwbjVvL1c1J
tRPiWNr99W2ZriWQBelcAvYsvYY4HzGzoSkpwsjiwGMLKl9pLU+z39TybRtCSz0qlH/bAZL416nl
TPckiIkcC5DsohzWvjwwVk0dMcEIJhUtIaZz9fF6wFocZRriqGPGcD0uERlE4U5BXPXAmrkPsNsV
V8RliA6eexOBvVopz4TcdqHHAS5siGBkIz8Y7r53zw8PWBc8dZcAcovgdjlgADAtQSMIlMAbATfE
pgEYir0cpI4jn9/Jx1dq6bvG5pDSHRbQfyx9VfZoiJr1AYsBQ0ihwDZwFPOZJRDHLRgmkHahs84q
veA0P566rq8wx1qOm1raZUuFadb4qVvjUfZjpq7fTzwwD86epL5GDBSYBAvG4LziQZoosg6X9nY1
ZiWUXjb2icN1rTKvMMD3/v6zfVVAARM0h8RB5lkpLDtxi9lX7jQQkwB/BBYEIHvh5OWGmNv96Gd4
1f7pTS1iYzGdMYfFnBwC/kkB1kJHifJGA87JKkM088Abk0lg0xlilErgqSIwXsebq1kPWsvTaOtw
bnmqBH8GvvHU/frwpbvf/XuEaRDQGAdfE0AN7CrszInGgpHGRKRWFIBa1jZNErHt4WqJGvk7+KU5
sP/b/qqCv3f9vRyHbBDXC9lvG12icQkgKHxp4C2OEidVITF4DjybWWADtUTz4Spplss59nErNS3t
Y73wO7j+dw+b7g5vIhs5IGUjs14awHmYn4oBfA+LlBhnKAdZDfXsGiwxneN85XL81k0teMMbbe3U
l/7Y4WiLslx3Q2erWIihfo5/Dz4VkBCYnuRIXyh8eA9bnUTFs8Q6lXJXldUOM5xBsfunN7W0qqGC
Ozb9/L58PGUJBUWjoIJTU7QmPAJnFykkwN2WEUOLjFY5KuLETEeD1JO7uW0uuXWT9fvb218fHu5W
D7/3fQf9ytk9EcEuS5gOtq/2EKdlLgAsaSaF2SBYYllp9SpJwoMIZzKFh8dj9Vaim4da+OVxbeOb
f+I9jwt/WN9Da2FRPAaHeSwByywgqGJyGYAcdpgLbVR4AYO+3FpYRauJIBMl5t9oJWfsHBn+04FE
3X5ePnabAjjo590TUBgu+3IA/IWQhiXukzGBGGwaExzAtecOPTD1gnvLOHs5C3o1YatlORNaqncq
9aWYo96VXs96nJf/G2Hgx+Vif/UjthYib7NDAYRBqOGwURIWtwBwgM/y2JthAUlxmpmVjWrBWM+/
TmeAp/fP3f3z01/fLdfvb0/PK/GdmvvbFWYnarCxwkPMT0cE3H8lLmVCGyzawy5XIYA1UgMw2CoW
uQw2q0tYYzxkLVKDT8IvpyEg7Z6++MfV7vlxX1LiC6y/8P0GATcDXIwo0Xf2KUW8oYyUlJMKgELo
C9t+MvqZ9oP6pYkWuqHFcnro4peE3p5xdPaD8ywZZLYUQFJv8kwSzyCOFctTBodFdWavnrT45UwN
+5dU67Rs+Cs3s3XcLX1MlhLcsVhozMPtf0QCnRK3DLinzhGgNi/YNpgZAfpc4DObIP1VXH8/zfkd
O4nGIGnDU7nNkTiv/t33Bx6DGSZmIeoqyZUlkeLZAwBYQAmMJsxg1TfGIOQkllWj1PNvGq7CdfJI
7r5+O+JQXCjs8igc0LwpEtN9AeBeSghHXXQ5WGSgkyTacYRq4qWY96GslurYcfr7093zKYizoYBp
AFmy6CVhBfwSBBVgdAmJJbikYCTT8Pckio+GqedX68b8dto7mHbDYe7HP04pcmBnuKkV7etjsEUU
he+B+BJ8jovgIRn8FJTxCraHUU6+XmSYy3PODUzfq7W3Le0dnRFqbJz/sLzv7ga9+33jdN+xkk1/
/kGpIJCceuIA3JLABZPGJ8+zew0QMxbhHPE+vVEpud42TGxr7cG2v3br5ajSo53uQ30uOtIAm0qV
DHFPAu22PhXwBV6JmKMzftLaUg1UibBdzVN5a7pe9XlIePlHuv1wpHla9PMroARAnjJJBXuBEmz0
AJyGuFyo5xaevnBG4/UKTSfxbioFtqqh1fZIYOPHd7cf7r5/2t1PTkZis3PfvUoFtoWQhM3iwgkF
3pYmWOGojNJWBk1fqX+4LUmlDbONb8Q20+Yzn7GCgzje9CfAfJKOG4k5S8xrWB2Il4qS4iOEkuBK
8a+4730+UzrLtS6bbUOXjk10wavG75+GFRnTVBd4UcUFklNfnRCFBOMsSTxobUJMOqhrwmA//os6
jaU4Y4KjN2o9u/nWXnNJGwnB4xK/vz25cMPtcOpi+AGDqomMB8eJscjMbEokALwhKaqgjRWKJ/16
n/Mky5l+/duW216L5dxtwy83k4zXN4AZoxVdfMD/jx27Q4VD950q2apiaCTJ4LlfCWAnWOtJZAV2
Z3EuJv8a/vtDLcv4rf5RpZ/S80zUWpkj+YQ9X3sSQ5NiWgpCJfb2ApYitjBGvC6RK2cVINbX8SSH
qWt5N3Pwudb0eCDqzc99MWAidAisMOTHiuEhekc1pnQNJiREiQEsu7ya0KP5K8n7hPpMcjHNAr3D
S/WfH76vP99O9ylmVuSBJcghO8lV8RyNSmgG+MwIwGehKKTKQM2oT9pfdfrmwrTV4YTpa2MVN3Q5
ZzsbPCddq3jbLR/Xn/9rOIkl9wcT5FABZMp5i61y2E0pdAHDijaTjMlhG91VpyWvJ/0HQc6lkveP
KyWFnDvCjVBm3uqB1Hu5u8d/d0Lu/UCfVu57W5DPA7AgLFKsH+KZbwe7KppsVBRBSnYV/RlPc7bV
4/hGpYhV8y7TzbKblXiOF9b8ZLD9r2+92/+Eh3picLCDADtRgG2CITVigDG4BzBHOeC4vthw4Ysd
xj+DNQ+Pb2oxu5bsxyrjl+6Pr5+OiWo+nLs2LAKNA5CJV1fE7EgQADKzs9FoFjSI28xUjMeqhFg1
CNVmpcVkAd/gP8ayN4DeyIN0VAgB9h0EgjHjgVMZRbBMp7PzjsnLYAxGbC8WPKglNI1lWtmphL3L
istvz98x7eyG88u9qB7Qd6HBEOycweOGnIQiDcm2AECXUQljXyNmjSU4c6pm9Eato51HsM2aqc1m
1rDb/eeH/GaMvkIxOYUEOBLABlKqvlwgSUaoKRhNA/G4ZhcOg5/vtuofV4KvG3x4s2HH5rgf73ZP
6ylVCUUzXkwC0IvHmIorxGIDrk0swDZkOUb1Z1GVk3xjvTreQPcdX/JtdyqmP+LpNrCL8QYtEIsl
hygGESNh25gh3gGtZyEHRQ31goZJomM6UiWHkPN7JzrR7OTuPn7w5RRmMXXTJxwWQ1nYBK4D7ADi
MzLvlPHqCQ9wVboQaUmMWn61mcBUF6wEntZK6MZi6o3UaljMh9X/rE+VAd2fEU5KAYWlBnM2GQ80
K+IYVURKsOeStY3c1As5HqWa3jRyffDL5azpDhMCw9ngsaeTwWojAOiCGnhIKGPvlaAQ042PKsli
w5Wtp4fxLyUkpieEQdCGBdjVtFy96Z6+PD98exqlmwC470+I71NOHr6DhtgWacDTQgmwu7IOQLDW
WWUJbO0qR5GGqQ4IBV84k02av3hTa7FsqLYWk/af+na0n5iwqBEm9kRKLIMHJww8B3h27M+Msa/F
Q5jM2Sl18XKAauRKNLeeM2L85RRX9JEB+/Sw6MMUJuxt0Xg3CicKsZDIHLacwbJWFIJlHpkV6f8d
boZnlahr1zCQjZiS2t39lzEKhxV0Q98aFkCK0bHgvT3F4LEsMA+Q1pCoAH0XIYMQrxMh788AJHgw
1mnLxTysbPmsdh4Lcpq0e+yPTf7Ra9XfcsFcrxYrTmG2V6mMd0e4BD7EMKKyjUp7sA9pX2RMx9Ff
zjmWK96fvFRr3aixb/nSjRpUR7ltPjTB2RJFYsIRS/FIgHSWOPBLREttYjBFJiZn/amt3DbMtGxM
v5lmgeLn7/dfdvef9uuFDR1YrYI/+/SWKdyqSChVGS0pEGc9cFY89saEEiJcVd6fTHJmLeuXKmUA
KM+VEVvXSvXU57mGfgU8zzUcumZeh8IkpqwL7GcusQkD4FYInANtwLbOfG1D5xWnumavVWot13Mw
vF1264nLrC42/Qlktti5xNgeC7AYhS1AdXLAW9DwhjkfgXVzA2p7pnyk/pLfHA9fi9c4Ezlcq7Kd
w5UxWlELiFG8P+mCPyBIZMaAwWQSmfZDi5Vz0ZGYPM02c2+Vuh6vXIQrFVrZ9hf4zXSQ7NhF1M+4
CKeNyDUGpP5+GMaVtDER3Z+49oX2sYhoowEWmsRjmpxrr0erBOno3LFvAUwdBEFiv/vRnY7YCrHg
AzPX4L2p5zCxKCiHtnjPGGxD7LTnMhgzhaGTwWpBTGNFOjNjYO9vvz+ihaIftjBSjz6Gn7BAwbNi
eDWJ5HgyMiFjYToSaTlXuXDNXzjReRz/TAw5PB7J7ijTM34Lv9yfnG8dWuhNwlIOceR0bIGzhRiO
XDsqjSk+k2DxNj4gWOB4YSeVVArlQF6SS1ebZT/NBcvsn9fqzHEJ/HIzvX+s/5cjh39Gtnu8PWbs
99HRMKQqFLAfD0BQCjbeCWyzDA7+oJKZogPm4sJVfq0x1xnX1niz1m7b0m57bOHA0DncDAle/7fn
3d2pp9AthuoKTT5aD0FHOuwuM+A0gF46n6OGzxiSn9j9mSErsTilc7H0qtuu6963nt7/x0/DMX3b
kwerSpCMY/JP4DEiIRAMYn+JM7REsCFLX43qDlnb5mvDs0orQxs7Y2mnNxD0hyyPTWmtCxR0NJFr
hq2SWqHTY8RxoPPgt6NP2CRdLm/s8RRt8cdv3NTyspYS03txZgcVh+ZEvFdt6LQZem108FRzR0mS
gFmEYpFYUxwJGnQADQu9LuY0p7vyCOWkbRG16eYqrul6ouJvb0d3Ze+/kxTDpUXeh6C4NiQb7KzH
PF2gipGstYItYVPzC831Gs/RVmf8xk0t8KahxT6tjjWH8s+hNW1S9QCUIgJ2CFA8/oSHCsBLFUlY
iNSJYo0xr3Rp1ESCWnrWkt5ML0kdpIgP99vdp++Px0/B5EDDZX8RqdWZAjEMePmF8BJv7vKKFOtK
oBm2UL7cEdiY49z1ALMXa51sw9mu3fS+tHfL+0+PDz+6ccqRJwsBwuN9LhH2SQgQOqLWhMWSaHSA
z+R1BZv92GfqNPuntdTzHm9Hu9Xx/qHd+jv2Z57SSUqxBfyvTxdY5wKTQHMtnumETU4s9vWWLBxL
KnEVzfT2kWq0m3pS3pJkun4nBz7kZOA/GP0Kf9M3eguEu1hHxQXVePSl4EmYCAYRwJnml1rlXggT
p+djHRhruE/GnD7cHhLf9P8iJKKqp9OZebPAy8SkgXCGBWDwLPtY6wEckQTMj3LpsxbszwhtdefG
TOBKXzG/9xF+uTYT+oTf/PnuqLEVWPHCzDXYdvJZWCKp5WBGDC8Rt4r8X3FX0hzHraTv/BV9mQg7
YoqDfVGED1gKMi3J0oiU/d5cGL1RYphsathNWfKvn0xUd3WhqrrJ98Tw8CCRtQAJFJAbMr9kTjnj
ldaKHc04KxouKNPD4Fu4KESPsg1Wgt8nyrS+vRoUURoIr2yN+RSYBecST5VTwkqVEqb0HSOs025B
1lyMTNhcmF5Q7ao53lp+3SxXXZ84NxKnjmPogFLEyhh0pSS3mLjMKivruhIIhSOTioQeBVkY76NH
rR1Sm0Ny9BBRc7NVOHLyUkfBKWE1SW2lD0ApWCrcKlYZFQIIIypCUo7wRwIFuo0fQdYcUW3oYgig
YzPgXzn1RTR6C1famPmeJ+lSqFJCDR9jVI23rpKSG65UQqT5x1Zr2XRB4HJELaZL2ldMXi5Xy0b8
TG/ON3f3WUduQLEZb9R2EwyjCL0hmEUwKw62fqhThS4sy7WRwT/JMz3S1YEzxuGD5dCEGBnaPnnx
FhjOug0BRNlSC0uthw0Yrc+WP1rcMI4gqAzW1DyRXoxpt42y8+GZWr64YwUPq/keVThHIXtaW+C8
QYNil4NrvVBo+9ey9sqadABTqm2o1/3Iuhtm+rzOSN7HYqNisg4x7CuiQFXgoFlXThBYfqSOlAVg
nI/gff5LcRAlPYcynLrPdEcNrHSoDTHC+hreFq5l/W21+bQsMCDRh7UNbGl+wTM3Gh3BwxZZOxAX
TMEGNFRU0kbPQDFhST0/RGVjUZwPKRyaHe1DxVSwIapvvrhb/Lh3Pn4rJBFt8cQIaLQ0IJqekAjU
EiVa4Ih35nA/MGVYzwIfNNcjZjpGTLsZ3k8X19NVh5ImHTvVkhoSGZ7DIlKmBksugWEXEpfMZ/cn
f6Z07JKCHvHDrcQUa1n4a/fOhVcDzBjBGDd1FJXymCFpI9g8IMFhCwlHAjOa0b8rlLdLYTE0PQQu
hou8/S7vVh97n4Q5VGhgLALBVMB6sBXsBVrhWVltHY2ay2f6JG3nJclDgGi4aOw+7O5DP+I4aicR
+YzXPCCWDaZvofHMQG+mylsb/HOF3H0Yo9iMLH5t22yHv/bHQZj8vUWu4TUYZAykJ0gdYDpGgy1B
kAEbMDyjINqFcgf+NXIchP2McEQ9baMqP09vO/D2+IUDqBkUxZ/RoDLxxPCQBFRkERivTS1loj0Z
2Gmj7HvEyoOLLbbj/O7zt6vrm06IZD58EkZx7Bo0X4Yh+Az6BytbBCXBMMU6uuwAkkG3uYKS6dAJ
b4H7kB5UcSGqmtPQxsVEKVc5DqP5JRvPHnQymwFCFDqZYuVpEjBp0VDnVFSCPJ9Y3NNy7EC573QC
vjUy7AWlA5d/y2ru7nEVyG2VgfxLjtmnPmkmqmQwK8JjqA9RNViKBD4KwpSKJ3nUio4O+f87j5SD
GcJNI8THHobgf2+uN0vermWqsrsgBo7ZyBoTczBXRSQwA0CQKGWtZhbhrHqirGioSwIInaFOxyXv
Owv+8S5sv2xbNwa9AzWjjMFiSQnVCCkxgA24kk2RJ668IE/z1O9bH5/B/f2SdjlcC9wu6AhoVdcF
uQXzYRJ1VDz5SYitb1OdOSkYUhxMaBYpuiOTAZnw6KJ/zPlYPlOMYXo1MoYZUbsl8MfXm8Xh41LP
LawBi0HiCeUxiAGboaA9AZlm6kDH7ah9qwUxs7HFMOMtmvOn5fXtYnpTTderPWqlzE6I7C2yhsZa
EF8lh7JJYcRfjSULgnEYdwaMpZdqNGyxJGgYBGpBlPez2gYCuEnvz8u0kfEOVLwoMQNSoOzhjlZW
oFEUwBjRhlhmvkPGb28WpC+GWb+WL0l/Y3XwXQRo5zmPE/+/yjVGiGa143WVGEbVMszF89RiMTMb
NDGaSPrIyeQjKC+dB05KQvkY9aoPkLJFHR0imDKnDKzOUHltMH2eSJAjwCSkqnMkrk3+qEOqaLlL
mmAjZqDIwSizErCgyHDM5o/MhSm8Bs4E0j8kVPdEAAmHjvs6RY1g9TTY+Oy2z56aQ+AFY8afGIl8
gYtXs9FKLBl7C3/DpbSF5sP/0QngdBSJe7B4QffhwdCGUQQDaj+oviQ+EnDUtn0E9gtvF9SLYQBY
vrhPWNxMby4317fL9Wa6r2mTizydiuZYO9Y1sA6mK8w+bfhzBkR1NTDw4OHi01K4Xr77ELawUJ0h
HCKiN4whVxR6UNvvoIjRwKEj7ICKeOTSNUekTdDYKWqFSjoFgzo6+cfFS/ivcdECJNIxuvkgYWSO
5Td/v4c/R7MpaAL1FKyNCrNHMKwehKWAf6ICRUML0GyfFqBbdnQQYKjzTDEcI4dqv7CyFU6/vGM9
w06nqBinmP7nEapbJzw1JfAnDaoG1p8YfSbDru38pKRuKL7EjPVPsv/7YXq/+Wurljd6qsCQiHw0
FGDvKpCmiiMwvVd46AufQQATSwrULGmOW3r7xg/gD7T3C9JnZoTLzmad2a5f9qbbMJe0iiDzeQ0s
H6PLYb3VVeDCMYOR3CE923Tvei+Jno3N97zFnL/563Z6Kve+IbQDAuGwtlFlQXxtPPF0yB5J1Ipw
hOUPdamydBspe5+PTdmij9JyNDKUU6e0i7KSIQNuE5hDnFLDaEwILU+t+t7I0ENxnlbM+QjHmGMW
XRPYhdUnW2V0V8EyUcI9S76K3IBqZYKvrGWuqqnyMXhCHOHjEF7fxpRQ6E+OEDHtT+PPjeZYhsTL
CAyVw+czHqM8gWtVxihdpSBAAnKi/dNqo2wbPwRJnm+WRE9Hvv18Joc1vtL5rsJXk5RnBHOSC1Wx
fGSdGENwQSzGaJSjBKTfI9Iht3mwsFc6L+lcjEwuqKq9yX23vL+6u79F72G3ztHO7iM6BhM5anOI
+OTA7jA8InQGLFDunQnsSZkHI90cSK0dPnhSjmBENlyhU6BZuP61Ox94M70IDKteVDInnmDtQ69B
yQhOYCwEAz6r/iZv5p6+YlhXw6KeeNEcSwtP5/UXhCTK8Z88x39mVWT7exaLEutMYuA/ZrUmkCvO
elNFrDFHa2q1fcbjjx09Bx7c3u0N244Ne7rTG2+mq4/XnXicHP4YgkiYOSIDuveznAwGthGoW5Km
SAxjPT7eaaXbvZySodItp4NEWzADzhsjZURnkkwrxSgBYV1nNz/HnGiPIabEWRdZXT81A3XbycFo
zO39cgh0qHnLGZ6OD4r4XCy/boCby8arI+z2hMhFXxsuZQV2A57dgQbiFJhKUQkaFZWhfkKZE2z7
sMGAdwuqr9TQ6JQZhqMR3/egAtx8ObV7QwEJVZJ4GUxFLdYtVaBnGwXrgHgmFMI8+dTz7ZbNlBQM
K19aRewgjRxshkVTG4Zsi79ZzU45SnCZwGoHsYcB+VhDkoLhSzCPH0x4TwQjTDwjjsaOkkPV7pq7
J8VwZsMDEgUyvDfGUdCFnes4O46FbviodLVxTvkq1MRixi3wUaxdQhJsSp9o0vr5DeqWnCNYDH2l
FkY58nlzQtLVFud8fXO5+Laa3l7P9xG8p6z5rjZmBA0sjQCjlKwysLxw0AxGyusoer6tYWsFMXwI
WYAXWU8Uf/08P93OypvpChTk2+WqADmJqCA6EF51RFaDkSteRlvVoL1ynwilXj4C+dpr/ZBp1nus
Nxo+MhrVHw3WC53fZCC5rdrW1EwkOnmDiV7ofwd+mSImeoFGUQtgNEZYoutH9d5wpFpoeF2SO0y9
tCpH5+pB2crjMcao/SQPRg9qQRwWGFagBrVTcJJTGkJSj1euPBqI032iGESOvx0MYil3/PJh9ef1
aq+wyxyQlUAgCVPLSkSKFoZFAGYpKoxnSd7Xlgh+IChj31pBhh1R2JWV+3rTn+cjldol9M+ZqSsi
EXktgrVobA0UaakZg81GTRqlo22uJEKPzAUw5UEAXTc8ta39y7ILOwdWwSbSMdlKGYIRP4gjE7DA
OFXKGJYSSel4aNKggx6dVyN0mpYFzda3HXi8DBJXI9i5CJUzKFWkFo1SIaNMzgfNLOul7nTaKPse
AiNbNWXDsoQ3d/fn31Zz1Gvs1lRpEAswp0/XjFRKYj5m8GCsxBwpzC3cMjEZ/eysvqXnkCqxvV2M
dQSPDy/2a17twLQ/Xe+gGSQsZowKpLX2tWRgzOrawUKgsE/q4Cpa1wz0N6GieRZAoR2k9s9nxyG3
fz7rjW9k003VWBW73UTnANQVmsx4jpRT8PF/ZGI1pTQRV0WNRYw0MF6HwM4hWcN9BBZs/JMzCXu9
HUkm7D1ZjG8xxDnAi+1Bey6z9aZXwnVbz1kqEjXmPmmChQMIJ5VVwVbAjWGVwvZ2Kj5fPeeSinIQ
YxtusegLxbicPXxsUivRbMvphjTnGjLuBAsSTDUr4MMYTUEiApMUwWgnFCHyad7vbg+HUuL3TxRj
WLIRdXGp2tow04d9mSJqVC6JhbG+JFWCYgkP5jiiWjowswMR1isZUz/H72GkKBH0oodda8L6a3z6
5arjet+eThOhgGdlU0ZQHyPhqZISodDyUT9ifGpKlDDSg/rqv7PuQPeJk4JaLUeGoBc7wMRdvv/N
dIMOjlZOip0hyayzRNapUlqjf5JzsCRADqjAnTFBeDAwjiIJFC0XtCEq44A2tq/dOwia1hlIJILq
CzsI67sFFAEKC9LyCoFzKQ1YPKnnMD0SGA3dDdm0Ro28nJ+9Ng52fD4Cz7ixmvPIMIsekX6CD/Bd
WQA9OICKo2qh3HFRPUIPpyNzwvWsp0ZsQ77bVA7D9+W5YHLQ3LcsBlRrdJMW5I21UWFUSaBPCCYf
I03PR0i7IgfKQ1wVx1GNZKMsgwM7JxLsiEonRHokCO5aIyCn8kAq8JhE9JNqRDy2K4bPlQMaFgO1
WuAJeVETcbFarxf7wjASP39OWCI013oADoN6EWbselh9leQG6+8oTfnRIPJOuwVZ8+lQk4SLbZr1
/fL27suyG+QlciyMZHXitq6oiFjCHpYkbFyLNX+kCywZK8aDnfvt9YgZ2R8L2Y8imE3nfzx8LmA0
wLAS26L0Gf0cTJMaq0hgwAiIeCDUKiDPJyMDl2ASkCc5pHyvp+73bu6dlKTyEfqt2ZkoWKTr/fLj
9Xpz3ykC3FQJd5pEUC6x4g7iG4joKhsoiHHhQTcwpAaD/v+xtlhJdjlqa0dGPW0Dlc8/Y12yUae0
ShI+EMFoNKzSZUSsDHy6yhMug6gj9f7vKsvYp7Ic4khkgl5s8R5KT9kNAmzlyBb8L0NMSwpsBmvJ
IjyfhmXoHEWgEBJ5MKYGk/IRm3lzSLHMt7qUYvnjAaV48WA63GkzLxlwA9/b/smbGCcjDGUSI60S
xbxPpiqjQa/AVBbEugxR/y2nBs29YqR2iIJtzWy6GLEJthnhdAcRyZXC0u351Fwz6h2i+VOChbeZ
hBVoWRVk1EHiiZTzjzowj6TFtbdPSjKXI7TP+8CP6D9a77LiGy6Xjze2afYcDOOkMMifY1kUCszD
cDwFMEF7pvET+ecw2ork/MNOp/aRcqjzoVVg5nxxsPzs2dsM5wma7TZgV1tUNzKPlMRm1GmLVZo5
9TBgGzSmdDjtYDnCsB+JEDuI0JlvnZREjnykuWwD1cP7dP5wvVkW/guijRchmko5EzDbBjQi5l1F
AnPEO29c4L2KSkUzJQUjKUh48ciJ2FgGUI2llENkVR3QuGeCgZnPYmWlt0ooL7U33+mk7z5xclJ/
3dreb+4W11c7SJ/zh9tbaPgFDDFMb8D4u50ulpPZt8nd5tPyfvL5/g5eXsMQNtP7j8u85Defrte7
Gy/y1Gym6z8uQcW//Hy9eDFpUDka+LDLOfy7Wb6YkO7F9XJzud6018uOH2uefF/z8EdnVDADub/b
6RxraI31x5gU/1qXJ7+9maBo7k4vlsJ6u7r5NkFgD7xzdzVp7fgXk4s7kBk/SSpPxZvJ/XJ9vQBz
/ify6gfyHz9O1n9iKNLi8u5hcwlUPaxybUbobLF9A2wSeO7kd9B0p7ObJTSAnbfN0lP2cvIn3AQj
aNfmkT52l7r9YBPbXiZ53Md/fjt7f/HBvYbf3tcvz97+OjnZ/n/xz3f14dfOz/4n3w1vP/x6Mflh
dbeq5nfTm+V6vlz8ODn5af9zoIH27u6XEzffXH/BUnUX99M5rt6RH0aEedX+MTkJLyfrjHYwuUYh
sR7tigrRviPgHdhrH86aFyaoSY++w4p+4raAHHCNFeysh7wje70Jc0redN755Xzyy9nF5GOTpAkk
zu8WI33t++GH3vmhSWDFmc20nZKX+352P7tnJrCkp4sFgnFOgGiMwe8sjx9PXmXUq4nDK5O3q/ly
/PsUZL1xr1+/DUfXEdZE5rvhU9W+8/Fher+YfMa5HvvhrO1HT07eNbt9Ap/o83o5OVtd3T26BM4v
XHg1efnBvY8HiQNVcv9pDLyzAePjkY1ByanqvvPbm8s8IndxZFtMBGlpgzn4fTlDYfwmT/+hfjq0
cZjry8voLtxx2hht32GgdcI7Z2/cy/r4S7Jc0peXr89+fVVHWG4Hu1FmPwdNPxf1Py6OkybUqW5p
E/jOh1/Pwtt4lDqwh7u03WYOd3BzNtObGfD++2z5wC0YyPffDr3EO+vN/nts6uLtRWaXxxfPqdlu
UcnZ9p3/nNwC51gXG7XZoHkE3LZznd85+T9QSwMEFAACAAgA8hEoSreutRPrAgAAHgcAAD4AHABh
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtc3RkZXJy
LnR4dFVUCQADRxFyWEcRclh1eAsAAQT1AQAABBQAAACVlFFv2jAQx9/5FH6aoGNLnIQEorVSW6iE
1nUVZeNhmirHPoOlxEaOs7b79LNDAqyA1j1hx///7853hy8fHiaz+fTrHbq5nN5OxikqHtdGd7zv
Kq8KKL0xMcSbLB68BWSfhWl+riqRM28MWbX0qlJ7uaIk94SkecXAezLcmwH/uOpiH/dQiuzm0/wC
vVvMb9LUbSzlWmlI0wfzksOVenZhLtJUrUETo/R5t7W866Efc3SOjjp+djBCyH/GfjwIGfd9ZCNc
a1KuOkFzkPEswCOG/iP0P6Q2pU7Y0OkIDyDmu+yc4o1R3mZx0aK9aCRJdtFmIBnoWn8UvXfuOIOG
wyhPslH4mjPJoQBp0rQEU3tOgPqvmjEWnIMGSaHXidtUwygasuFeYRStNnQNdlboqwDNHa5XRC4t
JtlhkiQZHMNQDcTAJrG5Buj2OsN9Fz3qYoJdAVUFXFfapmzak6m80aRwkFELiYFRineQWlAXpzVt
J+Xe6E8HwerWYb+hRTimI36Y0kILAzpNM1gKuavHt9ktokqWxlY7UyrvHzrPLB23F6ZZxOBQc6sI
c3R740IYN1BduiJ6gz7ro0qWYimBoVzJpeUFO56fhKd5XEhRroC5vZDLLlNVltu+4bAFMJ/S4DSg
IC8ZuM2kWJsXW3Yc7ZyA8WlnaYg2TdwvRMgZlKrS1LUOD9rW8ZiEwavWtQCbunHiuBbj2M987tOD
PreypJWRYcYBvf9hhZtZsYuptM2TJO+hx808uozq04Uwq3uyhJS73Z1D1qvvAp5S+24NGyzOgNr6
f3BYd+ao91r8siwHtX1TcmpTESQXv4kRSjryzRa61Kpa1ysLHW2hPCFwCuputoXs5bePCvwWRSFh
ox0KvcndzGVEgIX2edzUpiFcSvaV89J+A3sXydSTLXMQbB3gxz5iVbHe+28Lafpob3Lt7Adh6+A+
2Ad+/JfD9eGoqxmzKLPvdhKgwuo6QT03Ced8FNm3Y0AYqqes8wdQSwMEFAACAAgAKRIoSn/aNh1m
OgAA5MIAAEoAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXJhbmdlLXN0
YWxlLW5vZGUtY3Jhc2gtY3Jhc2gtbG9nLnR4dFVUCQADrhFyWIQRclh1eAsAAQT1AQAABBQAAADk
W1tz28aSfl7+CjylKNug5j4Dlo+rcHV0YssqS3aylUqxQGAooUwCDAja1v767QFICgAhWUxSuw9H
DxbFmen++t49gK/KItGbzdTq/gTb1fqjzlNd3pRaW78TwSj+Y3QVV3f9rfBz/rlYbld6c/75w7tP
78PzF+fd86OLVOdVtsh0OX2cy+izLjdZkfcZoJFfpNq6uV/r7tJvStiCWePLuMq+6jNAVwIb66on
0tV9dVfkRgbKxR+jj3qzLvJNNl92yD0i8aeNLq2LoI+JIzwaBXGlz2+yVQ8WQVjaCNtIWYhMMZ9S
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
BGmyrALTaI6ATl41YyQ4Bw2SwqA37KwOcZKwZKcwitZrugY7K/RVgvYOl0siFxYTbzF5HJ8ewlAN
xMDa2EwD9Ae9ZFdFD6qYYBdAVQmXtbaWTXcykVealA6SdpCUYkrxFtIENMXpRJtJuTP6bC9Z0zrs
d5aA0JTvW5prYUBnWQ4LIbf1+D69RlTJythq50oVJ/vK95aOO3rKIwb7MdeKMEe3Ny6FcQPVp0ui
1+j3J6iWlVhIYKhQcmF5wZbnx+FxHhdSVEtgbi/kos9UnRe2bzjsACSiNDgOKMlLDm4zLlfmxZYd
R1slYHxcWRmiTZv3GxFyCpWqNXWtw6eb1hESBq9a1wGsdeOCh00wjsIEc5/u9bkLi7uwOM05oA+P
NnA9K3YxkbZ5khQD9HM9j85RczoXZnlHFpBxt7txyGb1IOAps+9W0mKjhFNb/48O684c9U6LX5bl
oLZvSk6sFUEK8ZsYoaQjX22gC63qVbOy0LSDpn5M4BjU3WwD2fG3iwr8DYrHLN2i0JvU7VwGLE9C
+zyua9MSziW75byy38DeRTL1ZMscBBtF6g99xOpytfPfFtKcoJ3JtbMfhBuFfRYZGv2lcH04qGrH
LIAgHcYBKm1cL2jmJuacpxENo1PCUDNlvT9QSwMECgAAAAAA7BEoSgAAAAAAAAAAAAAAABwAHABj
b21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQJAAM8EXJYsRFyWHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACADsEShKlqZcdBEDAABeBwAAOQAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9i
YWNrZ3JvdW5kLWNsaXAtY3Jhc2gtbG9nLnR4dFVUCQADPBFyWDwRclh1eAsAAQT1AQAABBQAAACV
lVFv2zYQx9/1KfhU2F1WSZRsWUJbIIkdwFiWBo5XPxRDQZFHmYBEGhTVNPv0IyXLcmMby15s0rz/
7453f9APClFN6i0qVYG4aiSznxrNm2q3AslArzVAhqfRLPngebVhqjFZuwCtM+/66WmxWi+/PKC7
6+X9Yp6h6vvOaM//qsqmgtqfE0P8xebJ30D+hzD7r5tGlMyfQ94UflNrv1SUlL6QtGwY+M+G+yvg
H7ajMAjHKEN283H9Gb3brO+yzG0s5VZpyLIn81LCjfrp0nzOMrUDTYzSn0a95N0YfVujT+is4m8v
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
BQADwBByWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKoRKEqYXHl/FQAAABUAAAAdABgAAAAA
AAEAAACkgeAjAABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUBQADwBByWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAAKoRKEorIuuBNwAAADcAAAAYABgAAAAAAAEAAACkgUwkAABfd3B0
X2NlcnRzL2luZGV4LnR4dC5vbGRVVAUAA8AQclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACq
EShK5uSoCAUFAACLBgAAGAAYAAAAAAABAAAApIHVJAAAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5
VVQFAAPAEHJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqhEoShz5Vy7xCQAAOxIAABgAGAAA
AAAAAQAAAKSBLCoAAF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADwBByWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAgAAAKoRKEqcILsZBwAAAAcAAAARABgAAAAAAAEAAACkgW80AABfd3B0X2Nl
cnRzL3NlcmlhbFVUBQADwBByWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKoRKEpi013+BwAA
AAcAAAAVABgAAAAAAAEAAACkgcE0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA8AQclh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAACpEShKAAAAAAAAAAAAAAAADgAYAAAAAAAAAAAApIEXNQAA
YWNjZXNzX2xvZy50eHRVVAUAA70Qclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAASEihKAAAA
AAAAAAAAAAAADgAYAAAAAAAAABAA7UFfNQAAYWNjZXNzaWJpbGl0eS9VVAUAA4QRclh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAApEihKvNLjb2U6AADSwgAASwAYAAAAAAABAAAApIGnNQAAYWNj
ZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNyYXNoLXdpdGgtZHluYW1pYy1pbmxpbmUtY29udGVu
dC1jcmFzaC1sb2cudHh0VVQFAAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0BEoSqTN
xlzsAgAAHgcAAEgAGAAAAAAAAQAAAKSBkXAAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1j
cmFzaC13aXRoLWR5bmFtaWMtaW5saW5lLWNvbnRlbnQtc3RkZXJyLnR4dFVUBQADCBFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACkSKErKO97OazoAAO/CAABAABgAAAAAAAEAAACkgf9zAABh
Y2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdlbWVudC1jcmFzaC1s
b2cudHh0VVQFAAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8hEoShDk6B7oAgAAHgcA
AD0AGAAAAAAAAQAAAKSB5K4AAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9y
eS1tYW5hZ2VtZW50LXN0ZGVyci50eHRVVAUAA0cRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAApEihKysgVrmI6AADjwgAANwAYAAAAAAABAAAApIFDsgAAYWNjZXNzaWJpbGl0eS9hY2Nlc3Np
YmlsaXR5LW5vZGUtcmVwYXJlbnQtY3Jhc2gtbG9nLnR4dFVUBQADrhFyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABISKEpMd6N+6gIAAB4HAAA0ABgAAAAAAAEAAACkgRbtAABhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1zdGRlcnIudHh0VVQFAAOEEXJYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAA8hEoSgAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BbvAAAGFj
Y2Vzc2liaWxpdHkvbWFjL1VUBQADRxFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACkSKEon
szGgbToAAMPDAAAxABgAAAAAAAEAAACkgbrwAABhY2Nlc3NpYmlsaXR5L21hYy9hYmJyLWFjcm9u
eW0tdGFncy1jcmFzaC1sb2cudHh0VVQFAAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
0BEoSjAiv3/rAgAAHgcAAC4AGAAAAAAAAQAAAKSBkisBAGFjY2Vzc2liaWxpdHkvbWFjL2FiYnIt
YWNyb255bS10YWdzLXN0ZGVyci50eHRVVAUAAwgRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAApEihKQqVUbWk6AADvwgAAKQAYAAAAAAABAAAApIHlLgEAYWNjZXNzaWJpbGl0eS9tYWMvYWNj
ZXNza2V5LWNyYXNoLWxvZy50eHRVVAUAA64Rclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADy
EShKffwN5ewCAAAeBwAAJgAYAAAAAAABAAAApIGxaQEAYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNz
a2V5LXN0ZGVyci50eHRVVAUAA0cRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAASEihKAAAA
AAAAAAAAAAAAHgAYAAAAAAAAABAA7UH9bAEAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQv
VVQFAAOEEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKRIoSjDcbT1eOgAA0sIAADkAGAAA
AAAAAQAAAKSBVW0BAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTEt
Y3Jhc2gtbG9nLnR4dFVUBQADrhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANARKErAEOCP
7AIAAB4HAAA2ABgAAAAAAAEAAACkgSaoAQBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9z
ZWxlY3QtdGV4dC0xLXN0ZGVyci50eHRVVAUAAwgRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAApEihKDBH+fGI6AADjwgAAOQAYAAAAAAABAAAApIGCqwEAYWNjZXNzaWJpbGl0eS9tYWMvc2Vs
ZWN0LXRleHQvc2VsZWN0LXRleHQtMi1jcmFzaC1sb2cudHh0VVQFAAOuEXJYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA8hEoSmHsETXoAgAAHgcAADYAGAAAAAAAAQAAAKSBV+YBAGFjY2Vzc2li
aWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTItc3RkZXJyLnR4dFVUBQADRxFyWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACkSKEqelFkfZjoAAO7CAAA5ABgAAAAAAAEAAACkga/p
AQBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0zLWNyYXNoLWxvZy50
eHRVVAUAA64Rclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASEihKTAA/heoCAAAeBwAANgAY
AAAAAAABAAAApIGIJAIAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQt
My1zdGRlcnIudHh0VVQFAAOEEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAEhIoSgAAAAAA
AAAAAAAAAB8AGAAAAAAAAAAQAO1B4icCAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS9V
VAUAA4QRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApEihKrlwMPV46AADRwgAAUwAYAAAA
AAABAAAApIE7KAIAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11
c2VyLWluZm8tY29udGVudGVkaXRhYmxlLWNyYXNoLWxvZy50eHRVVAUAA64Rclh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADQEShKN+HupOkCAAAeBwAAUAAYAAAAAAABAAAApIEmYwIAYWNjZXNz
aWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tY29udGVudGVk
aXRhYmxlLXN0ZGVyci50eHRVVAUAAwgRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApEihK
kFc+nVw6AADjwgAATAAYAAAAAAABAAAApIGZZgIAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hh
bmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFyZWEtY3Jhc2gtbG9nLnR4dFVUBQADrhFy
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPIRKEoP1A1V6gIAAB4HAABJABgAAAAAAAEAAACk
gXuhAgBhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5m
by10ZXh0YXJlYS1zdGRlcnIudHh0VVQFAANHEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
KRIoSm1Y0ERmOgAA5MIAAE0AGAAAAAAAAQAAAKSB6KQCAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVl
LWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLXRleHRmaWVsZC1jcmFzaC1sb2cudHh0VVQF
AAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEhIoSkmTFzfrAgAAHgcAAEoAGAAAAAAA
AQAAAKSB1d8CAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNl
ci1pbmZvLXRleHRmaWVsZC1zdGRlcnIudHh0VVQFAAOEEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAEhIoSgAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BROMCAGFjY2Vzc2liaWxpdHkvdGV4
dC1tYXJrZXIvVVQFAAOEEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKRIoSqFqrf5bOgAA
0sIAAFkAGAAAAAAAAQAAAKSBmOMCAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvY2hhcmFjdGVy
LW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1jcmFzaC1sb2cudHh0VVQF
AAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0BEoSuVIAePrAgAAHgcAAFYAGAAAAAAA
AQAAAKSBhh4DAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvY2hhcmFjdGVyLW9mZnNldC12aXNp
YmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1zdGRlcnIudHh0VVQFAAMIEXJYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAKRIoSuypvbtoOgAA48IAAEEAGAAAAAAAAQAAAKSBASIDAGFjY2Vz
c2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1jcmFzaC1sb2cu
dHh0VVQFAAOuEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8hEoSreutRPrAgAAHgcAAD4A
GAAAAAAAAQAAAKSB5FwDAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1zdGRlcnIudHh0VVQFAANHEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
KRIoSn/aNh1mOgAA5MIAAEoAGAAAAAAAAQAAAKSBR2ADAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvdGV4dC1tYXJrZXItcmFuZ2Utc3RhbGUtbm9kZS1jcmFzaC1jcmFzaC1sb2cudHh0VVQFAAOu
EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEhIoSgDbAubqAgAAHgcAAEcAGAAAAAAAAQAA
AKSBMZsDAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcmFuZ2Utc3RhbGUt
bm9kZS1jcmFzaC1zdGRlcnIudHh0VVQFAAOEEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
7BEoSgAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BnJ4DAGFuaW1hdGlvbnMvVVQFAAM7EXJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1B4Z4D
AGFuaW1hdGlvbnMvM2QvVVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSq7a
wdATAwAAXgcAADkAGAAAAAAAAQAAAKSBKZ8DAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9y
bS1pbi1lbmQtZXZlbnQtY3Jhc2gtbG9nLnR4dFVUBQADOxFyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAOwRKEoYuHGc6gIAAB4HAAA2ABgAAAAAAAEAAACkga+iAwBhbmltYXRpb25zLzNkL2No
YW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LXN0ZGVyci50eHRVVAUAAzsRclh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADsEShKmpl64w8DAABeBwAAMwAYAAAAAAABAAAApIEJpgMAYW5pbWF0
aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5hbWUtbnVsbC1jcmFzaC1sb2cudHh0VVQFAAM7EXJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSvYLv+DpAgAAHgcAADAAGAAAAAAAAQAAAKSBhakD
AGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwtc3RkZXJyLnR4dFVUBQADOxFy
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOwRKEoAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADt
QdisAwBjYW52YXMvVVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAA
AAAAAAAAAA4AGAAAAAAAAAAQAO1BGa0DAGNhbnZhcy9waGlsaXAvVVQFAAM7EXJYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BYa0DAGNhbnZh
cy9waGlsaXAvdGVzdHMvVVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSpU+
XEkSAwAAXgcAADQAGAAAAAAAAQAAAKSBr60DAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFz
LnJlYWRvbmx5LWNyYXNoLWxvZy50eHRVVAUAAzsRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADsEShK35gFnuoCAAAeBwAAMQAYAAAAAAABAAAApIEvsQMAY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5jYW52YXMucmVhZG9ubHktc3RkZXJyLnR4dFVUBQADOxFyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAOwRKEoAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQYS0AwBjb21wb3NpdGluZy9VVAUA
AzwRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsEShKBh92sBIDAABeBwAAOwAYAAAAAAAB
AAAApIHKtAMAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNy
YXNoLWxvZy50eHRVVAUAAzsRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsEShKwAZryekC
AAAeBwAAOAAYAAAAAAABAAAApIFRuAMAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1v
Zi12aWV3LWZpeGVkLXN0ZGVyci50eHRVVAUAAzsRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AADsEShKAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UGsuwMAY29tcG9zaXRpbmcvYW5pbWF0aW9u
L1VUBQADOxFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOwRKEqY8Bq4EwMAAF4HAABFABgA
AAAAAAEAAACkgfy7AwBjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1p
bnNpZGUtaGlkZGVuLWNyYXNoLWxvZy50eHRVVAUAAzsRclh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADsEShKx5Lb+uoCAAAeBwAAQgAYAAAAAAABAAAApIGOvwMAY29tcG9zaXRpbmcvYW5pbWF0
aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQFAAM7EXJY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1B
9MIDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAAM7EXJYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA7BEoSkK41K0SAwAAXgcAAEQAGAAAAAAAAQAAAKSBTsMDAGNvbXBvc2l0
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cu
dHh0VVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSmgmJ3DpAgAAHgcAAEEA
GAAAAAAAAQAAAKSB3sYDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2Ut
dmlzaWJpbGl0eS0zZC1zdGRlcnIudHh0VVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAA7BEoSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BQsoDAGNvbXBvc2l0aW5nL2JhY2tpbmcv
VVQFAAM7EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSp0JtAAUAwAAXgcAADoAGAAA
AAAAAQAAAKSBkMoDAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlw
LWNyYXNoLWxvZy50eHRVVAUAAzsRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsEShKxh7f
4e4CAAAeBwAANwAYAAAAAAABAAAApIEYzgMAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12
aXNpYmlsaXR5LWZsaXAtc3RkZXJyLnR4dFVUBQADOxFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAOwRKEoAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQXfRAwBjb21wb3NpdGluZy9jYW52YXMv
VVQFAAM8EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSqHC5joTAwAAXgcAAD8AGAAA
AAAAAQAAAKSBxNEDAGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29tcG9z
aXRpbmctY3Jhc2gtbG9nLnR4dFVUBQADPBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOwR
KErtyyc06gIAAB4HAAA8ABgAAAAAAAEAAACkgVDVAwBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxl
cmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLXN0ZGVyci50eHRVVAUAAzwRclh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAADsEShKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UGw2AMAY29tcG9zaXRp
bmcvY2xpcHBpbmcvVVQFAAM8EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSugVmzAU
AwAAXgcAAFEAGAAAAAAAAQAAAKSB/9gDAGNvbXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRp
dXMtb3ZlcmZsb3ctaGlkZGVuLXN0YWNraW5nLWNvbnRleHQtY3Jhc2gtbG9nLnR4dFVUBQADPBFy
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOwRKEo4SPxB6wIAAB4HAABOABgAAAAAAAEAAACk
gZ7cAwBjb21wb3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1z
dGFja2luZy1jb250ZXh0LXN0ZGVyci50eHRVVAUAAzwRclh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAADsEShKAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UER4AMAY29tcG9zaXRpbmcvY29sb3It
bWF0Y2hpbmcvVVQFAAM8EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSoCqCAMSAwAA
XgcAAD0AGAAAAAAAAQAAAKSBZuADAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNv
bG9yLW1hdGNoaW5nLWNyYXNoLWxvZy50eHRVVAUAAzwRclh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADsEShK1qfOFekCAAAeBwAAOgAYAAAAAAABAAAApIHv4wMAY29tcG9zaXRpbmcvY29sb3It
bWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmctc3RkZXJyLnR4dFVUBQADPBFyWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAOwRKEoAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQUznAwBjb21w
b3NpdGluZy9jb2x1bW5zL1VUBQADPBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOwRKEpP
cdsyEAMAAF4HAAA/ABgAAAAAAAEAAACkgZrnAwBjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9y
LWNsaXBwZWQtaW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAUAAzwRclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADsEShK3ZSqsekCAAAeBwAAPAAYAAAAAAABAAAApIEj6wMAY29tcG9zaXRp
bmcvY29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1zdGRlcnIudHh0VVQFAAM8
EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAAAAAAAAAAABwAGAAAAAAAAAAQ
AO1Bgu4DAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9VVAUAAzwRclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADsEShKlqZcdBEDAABeBwAAOQAYAAAAAAABAAAApIHY7gMAY29tcG9zaXRp
bmcvY29udGVudHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cudHh0VVQFAAM8EXJY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSvFWU5vnAgAAHgcAADYAGAAAAAAAAQAAAKSB
XPIDAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtc3RkZXJyLnR4
dFVUBQADPBFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOwRKEoAAAAAAAAAAAAAAAAbABgA
AAAAAAAAEADtQbP1AwBjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9VVAUAAzwRclh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADsEShKU59AihMDAABeBwAAMgAYAAAAAAABAAAApIEI9gMAY29t
cG9zaXRpbmcvY29udGVudHMtc2NhbGUvYW5pbWF0aW5nLWNyYXNoLWxvZy50eHRVVAUAAzwRclh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsEShKI8ITYeoCAAAeBwAALwAYAAAAAAABAAAApIGH
+QMAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvYW5pbWF0aW5nLXN0ZGVyci50eHRVVAUAAzwR
clh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADsEShKAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA
7UHa/AMAY29tcG9zaXRpbmcvY3VsbGluZy9VVAUAAzwRclh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADsEShKJvQSoxMDAABeBwAANAAYAAAAAAABAAAApIEo/QMAY29tcG9zaXRpbmcvY3VsbGlu
Zy9jbGVhci1maXhlZC1pZnJhbWUtY3Jhc2gtbG9nLnR4dFVUBQADPBFyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAOwRKEqoCCh06gIAAB4HAAAxABgAAAAAAAEAAACkgakABABjb21wb3NpdGlu
Zy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1zdGRlcnIudHh0VVQFAAM8EXJYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA7BEoSgAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1B/gMEAGNvbXBv
c2l0aW5nL2ZyYW1lc2V0cy9VVAUAAzwRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsEShK
og5ZPA8DAABeBwAAPgAYAAAAAAABAAAApIFOBAQAY29tcG9zaXRpbmcvZnJhbWVzZXRzL2NvbXBv
c2l0ZWQtZnJhbWUtYWxpZ25tZW50LWNyYXNoLWxvZy50eHRVVAUAAzwRclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADsEShKqepn0ukCAAAeBwAAOwAYAAAAAAABAAAApIHVBwQAY29tcG9zaXRp
bmcvZnJhbWVzZXRzL2NvbXBvc2l0ZWQtZnJhbWUtYWxpZ25tZW50LXN0ZGVyci50eHRVVAUAAzwR
clh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADsEShKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA
7UEzCwQAY29tcG9zaXRpbmcvZ2VvbWV0cnkvVVQFAAM8EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA7BEoSl51ZkMRAwAAXgcAAD4AGAAAAAAAAQAAAKSBggsEAGNvbXBvc2l0aW5nL2dlb21l
dHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS1jcmFzaC1sb2cudHh0VVQFAAM8EXJYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7BEoSmbPgUPpAgAAHgcAADsAGAAAAAAAAQAAAKSBCw8E
AGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS1zdGRlcnIu
dHh0VVQFAAM8EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAExIoSqHfVbDAAgAAVAgAAA0A
GAAAAAAAAQAAAKSBaRIEAGVycm9yX2xvZy50eHRVVAUAA4URclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAqEihKiLQDwVsDAACxDwAAEQAYAAAAAAABAAAApIFwFQQAZnVsbF9yZXN1bHRzLmpz
b25VVAUAA68Rclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACoEShKWwRYDqIFAABNEAAACgAY
AAAAAAABAAAApIEWGQQAaHR0cGQuY29uZlVUBQADvBByWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAKkRKEoAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgfweBABweXdlYnNvY2tldC53cy5sb2ct
ZXJyLnR4dFVUBQADvhByWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKkRKEoAAAAAAAAAAAAA
AAAaABgAAAAAAAAAAACkgVAfBABweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4dFVUBQADvhByWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKoRKEoAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgaQf
BABweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAA78Qclh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAACqEShKAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIH5HwQAcHl3ZWJzb2NrZXQud3Nz
LmxvZy1vdXQudHh0VVQFAAO/EHJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKhIoSkUmHTnR
JwAAy6oAAAwAGAAAAAAAAQAAAKSBTiAEAHJlc3VsdHMuaHRtbFVUBQADsBFyWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIACoSKEo/bD8/tAMAAJkKAAAKABgAAAAAAAEAAACkgWVIBABzdGF0cy5q
c29uVVQFAAOvEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtxEoSghlVqrhBAAAERsAABkA
GAAAAAAAAQAAAKSBXUwEAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA9kQclh1eAsAAQT1
AQAABBQAAABQSwUGAAAAAGsAawBhLwAAkVEEAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298304</attachid>
            <date>2017-01-08 03:14:23 -0800</date>
            <delta_ts>2017-01-09 02:39:34 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews121 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>431101</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
AQAABBQAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAA+BEoSphceX8VAAAAFQAAAB0A
HABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUCQADUxFyWFMRclh1eAsAAQT1AQAABBQA
AAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAA+BEoSu2BiaE3AAAANwAAABgAHABfd3B0
X2NlcnRzL2luZGV4LnR4dC5vbGRVVAkAA1MRclhTEXJYdXgLAAEE9QEAAAQUAAAAVgkxNzAyMDcx
MDE1NDdaCQkwOUI2MEEJdW5rbm93bgkvQ049d2ViLXBsYXRmb3JtLXRlc3RzClBLAwQUAAIACAD4
EShKftMmawwFAACPBgAAGAAcAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUCQADUxFyWFQRclh1
eAsAAQT1AQAABBQAAABtlbeyo1oURHO+YnJqShjhggkO3ghvpEOGcMJ7EHz9uzPx22knq7u6dv/+
/XO8pGjWL88HvxxPi0Ag/TIk+Ff4jZiaJo2uxgNgCMCVwK6MMJ42vjswV9cVHN/4x60vpgg7qsn5
NkPiYepnIUBXDlofsUhRovFMZ1mtONQXU/KWI5UrN9x0ziZvye60ocrGXtExdY/imlw2mVSEu1gB
zKOITJ2Rk41H/hz9+n7HQcBMIl6C2azxnOTLFXuLcvpB1/kaP2y0MNjwSr34BVD+6WHc+mKfEDld
4Xm8GYfJxjvMdQs2WOJ8wnujsaF/l7umugkf1sNgDKwmw2ER8kJFsgWzZK+dqjkkG1BRYFImOQ30
wXT09ODHSwsYeU5T7zCZEPU4V9KWEH9ZG5szXE9TxkJCRncH0ksTxBdUyeLVvRDThQwDTir8x4d9
ml6cJF7C9MT3EzCHJgIX8GD4CdsVmG45XHymRQHfBaRIuSEHWcA3z+PSOSOMcblJJY3yJfTWBK62
tm3NhUDTaEKv+poBdvN9orG9d+rjVoiIAQKTiumLyVZc32yKdOqqHny7ez+++U3DVJoHIblPMZxw
iJ6yDt5p3JzrPrL967EABI5QFe90KLMgmHHlEec2mZF3hTzuY4Xl/S0abSNQXK9QoqYZ/LegQZks
LT54yeb76yCaRW4YiWlis6vdh2KrayjQuz+JodcfZ5aZ2fSSnqe/CV4l8V+aJL360Qw2z70UraAW
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
qlc26Y3Uw8PYv/CCTJv1nbJXpqxKvOzQJeEbmhydPrZVtSFI77CzI4DZW56SYbbctMGljqxj9TRV
/j25e1aT4Ey3GK9hBW08FXHy9eJIMynOl2OJj6OZpkRNz44z6Fcdq/3OiYz0UO9ugx/bsIGO2SxQ
U3WpVxZI0IcSpmtiiYfh430YwHs/83C77x5KWJxjiWn41/QS4Yz2edmGo0s8Pw79cXCebsKao32t
JzxZggx9jg7Wtyt0Genl+oYzWafrzfbnuTLOfW3s/vqsnY6nmnNcor3PDvODS+hV719QSwMEFAAC
AAgAPRIoSmfI6RlDAAAARgAAAEsAHABhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWNjZXNz
aWJpbGl0eS1hcmlhLXRhYmxlLWNoaWxkcmVuLWNyYXNoLWxvZy50eHRVVAkAA9YRcljWEXJYdXgL
AAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1
r0TPJbUsNSe/IBfItjKyNDQy0OMCAFBLAwQUAAIACAADEyhKsGNGfYYsAACpxQAATAAcAGFjY2Vz
c2liaWxpdHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LWNyYXNoLWluLWF4Y29udGFpbmVy
LWNyYXNoLWxvZy50eHRVVAkAA0YTclgUEnJYdXgLAAEE9QEAAAQUAAAA5Fxrb9u4tv18/Sv0aeC0
ZcKXRNLo6UDPOTnTJkGctHMxGBiyRCU6tS2PbLfN+fV3U/JDkp1OPe29CXADNHEkanOtzf2kmF6V
RaIXi4HV/kqK6Wk8n0/06Qc9/jVfmh9+MVvq2fI00J/0pJhP4bP1O1VEij96V/HyvisDvs7eF5PV
VC/O3l++vX0Xnr04W4vLyniqPxflx7PfrvyhLj/lgOLsa7N+mSdn34iqd57C9zzLdTn4G6R673W5
yItZl4+D+UurD99PySl7edLzi1RbNw9z3R74m3SQw63+RbzMP+kTUE1pNHXVUfQkXs2S+3S0yKeg
RSEU/6N3rRfzYrbIx5OWzGMX43ahS+s86OK3Men1gnipz27yaQc0xUQgTBCWFqYDIgeYnhImLLiA
ce9yaB3Sybs4seDWbxbBp4ScOlaf2L8QjPkJMJkX5XLvKUJ67qyYPUyL1cK6vW1gjEIniIiUiNoy
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
s5dleknoNmzrBWQOv8usE1hk5Qwm9Sq8XfB/nD18aUgFCJjy0J82zMF95THo0b9X5ODjhNxnn1vw
4lvEu/z5F8EhF2PWC7JVl2VWXJLpGsjhO2a7Q3tCNlmxTEFP39HrC/rmLSl+gPJm6Wz9Ws6gVq+5
cU8HhaW7FBdAg968HXzaLMvkCbrMxhReZ2sP2RX5AZGg/FWeJ8qogprlYBa7UkjVq48+H8f300d1
A5/uo6vx3S0Z7P5O//4QHUv0MP7HxIV3j7dTcpGvc2u+TmCFMc/St2Twbv/0Jq/jqg8DNS+X33Gd
Ot0kc9Tbw4dxcV1/JoNmt+2vJE7SzRR6Wbwk5fwLQT+7y/x1dziu8bhySCeNFO8fyPvxlHzOcmMO
IiU4OHUKGdKrOjkZXBv3I0RhW5C7fJ71VUzWtXLIYKJubu7CEw1kc2foVrWy/TrF51c0SfiCR44O
H4fVZXhksFvZEcDspcjIOF+su+BSVzaxepiq8JpcPap7faRaXDSwgjIeymT+7aSm2RT7yz7Fx8nM
SKKmR/UM6tXEakt6ycSoen8ZYl+GA3LMZlpN1alaMViZTipwbUxxM769jjS0+5FHOEN/l4IJgSmm
0V/Tky1Ih6IqwzUpHm/H4Z0+LjfhbW1fmQ5PFrA2PSYHHzqThiYW5oYzWWWr9ebXsTTudSPF7/fa
6d3UjBynZB/yXf8QkpPB4F9QSwMEFAACAAgAPRIoSgKvVaFDAAAARgAAADsAHABhbmltYXRpb25z
LzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tY3Jhc2gtbG9nLnR4dFVUCQAD1hFy
WNYRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6Z
JSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0NDbQ4wIAUEsDBBQAAgAIAAMTKEr3HtAUeywAAKrFAAA1
ABwAYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZpbGxpbmctdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRV
VAkAA0YTclgUEnJYdXgLAAEE9QEAAAQUAAAA5FxZc9vGln4e/go8pSjbLfWGXli+TmHN1Y0tqUTJ
zlQqxQKxSLgmCQYkbev++jkNcAFAyjFjz0hVoweKBhqnv+/0WRstX5VFnC4WA6v9ExfT02g+n6Sn
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
AAAEFAAAAFBLAwQUAAIACAAbEihK3dWwSEMAAABGAAAANQAcAGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuY2FudmFzLnJlZmVyZW5jZS1jcmFzaC1sb2cudHh0VVQJAAOWEXJYlhFyWHV4CwABBPUBAAAE
FAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUn
vyAXyLYysjSwMNLjAgBQSwMEFAACAAgAYRIoStQzZcpDAAAARgAAAD4AHABjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAtY3Jhc2gtbG9nLnR4dFVUCQADFhJy
WBYSclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6Z
JSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0tDTT4wIAUEsDBBQAAgAIAD0SKEpbEROjQwAAAEYAAABA
ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jbGVhclJlY3QrZmlsbFJlY3QuYWxwaGEwLjUtY3Jh
c2gtbG9nLnR4dFVUCQAD1hFyWNYRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0NDbW4wIAUEsDBBQAAgAI
AAMTKEpBPil6dywAAI3FAAA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50LTI5MDY1LWNyYXNoLWxvZy50eHRVVAkAA0YTclhGE3JYdXgLAAEE9QEAAAQUAAAA5Fxrc9u2
tv189Sv4qSMngY0XCUCTkw6fPT5NbI9lJ73T6Wj4AG2eSKJKSUl8fv3dIPUgJTmNmtxrz1zPVFZI
cGOtjf0E4V5VZarn84HV/UnLyWk8m4316Qed/FoszC+/nC70dHEa6E96XM4m8N36nSrs2H/0ruLF
/a4M+Dl7X46XEz0/e3/59vZdePbibCUur+KJ/lxWH89+u/KHuvpUAIqzr836ZZaefSOq3nkGn0Ve
6GrwN0j13utqXpTTXT4O5i+tPnyeklP28qTnl5m2bh5mujvwN+kgh1v9i3hRfNInoJrKaOpqR9Hj
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
Z4CaYyzHNdURhgAxno4cGVPf8RXiwHS38CZkqEIvoUaPUK2M6oOWxWhDWvMNjQLhMuMbcE9DMLZ9
jsk+tMFIHjE3nkkCHkWjLqvQgH2neBx4nBej46IY7kR95FttwT/2WMzysbaYW+nT45/QsQq7QbaX
CV5FiVLKEw7MIJgPGsXEfRc0Z0h9YJx67JQywXdZaQsl7Zn0Zar2jn7m0FZeRs+zomjfq+PQFbnS
ArMSGDSzwY7QQeDEGhwso3jiquQ0FWOLpZZ6bNU05MVcdz+XOBSyoOfAULVVMQYO1zneImNS4JaD
ROszDLQG28F3XIzBY4M2wtAFRSqYiHnkCh6ZU7Unupx1TItudVuA4qlHgMrt2Xef2Mx9y85ZGDdR
MMEFGuYVXApMwsAJPAl2mQ4jQ0XgRvFJLoW1Oepsu+8qWsIS+/dEoFDVgfG3gZhw+utcFLEn1l0V
41EXBwQMDrAXGlAUEpeEwlgl0ExgF033Aj4dabhFnXT5PnWSuRV1F3d4A7N1M0yh5yHAIWWuEY4O
MKE2xaCT2gNT2rBIgE9iVCL/XzdN9zhtyon1vUUWeG7H77id/YigzfVsWBlK4K4h2CZNrSviACxW
zCqIq5wmcEK8cwkGZgh1SkXqBA4INIf/qMvQrmCwEQO65vwpbcaQrgrn1Jv5IB7M7k3OPEGHDPcB
TKTcCI+/Ce6iuQjGiYJ+7ARMwQ/lLLRxgCtViNCDASpAOwFPVvP6cAu5e10ugeRzoCWaPT8XZAmm
Gnn8RVbll2xNXjYGHOi6crb+nJW4vFJ+WRRVxbnloZwV3x5AVg8vi/k5oZuyTRaQFH6XWaewyMoH
0C1VeRvxf9w8/NPgCiRg8WE+bTDk+vAxJfnvoRx8nJDb7HNLvLiLeJM//yI4i2DN6olsussiK87J
dAU2yjvm+kN3QtZZsZhDP31HL8/om7ek+AGdN5s/rF7LB6DqNbfp6QDZfAtxBtr4zdvBp/WinD3C
kFlb5HWz7pBdkB9QCZ2/avMIjqqoiQeb2GIh1ag++Hwc307v9RV8uo0vxjfXZLD9O/37Q3wI6G78
j62Lbu6vp+QsX+VOupqBh5Fm87dk8G739ILXddWHgU7LxXf0U6frWYr9dv9hXFzWn8mgOWz7iXSZ
ok0IsyheZmX6hWCe3UX+uj0c13h8NaSTBsT7O/J+PCWfs9yGg5gTnJw6SIb0ogYng0ubfoRofBfk
Jk+zPsJUTZVHBhN9dXUTHXlBLhVDv6LKlTXE51cMSfiCR472H4/VOABi69kRkNlLkZFx/rTqCpf6
qimru6mOLsnFvb41B8jioiErwHFXztJvR3uaS3G87CA+Th4sJ3p6sJ8BXU1ZbTwnMrFdvR9HgyoP
+Hh4MHqqj1HFwEHaQriBixBX4+vL2MB7P/AIbxhsIZgQCDGN/5oeY5zToahw+Bbi/noc3ZjDfBPe
7u1LO+DJE7hIh/jgQ6+WLieDwt5wJstsuVr/OgTjXzb67u+P2unN1M4cx3gf8u34EApwDP4FUEsD
BAoAAAAAAGISKEoAAAAAAAAAAAAAAAAMABwAY29tcG9zaXRpbmcvVVQJAAMXEnJYSRNyWHV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACAAbEihKb6k9TEMAAABGAAAAOwAcAGNvbXBvc2l0aW5nL2Fic29s
dXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1jcmFzaC1sb2cudHh0VVQJAAOWEXJYlhFyWHV4
CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68k
Na9EzyW1LDUnvyAXyLYysjSwMNHjAgBQSwMEFAACAAgAPRIoSrDT2KVDAAAARgAAAEcAHABjb21w
b3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItY3Jh
c2gtbG9nLnR4dFVUCQAD1hFyWNYRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0NDbT4wIAUEsDBBQAAgAI
AGISKEo8ekD0QwAAAEYAAABQABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdl
ZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWNyYXNoLWxvZy50eHRVVAkAAxcSclgXEnJY
dXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/
ryQ1r0TPJbUsNSe/IBfItjKyNDIw0OMCAFBLAwQKAAAAAABiEihKAAAAAAAAAAAAAAAAFgAcAGNv
bXBvc2l0aW5nL2FuaW1hdGlvbi9VVAkAAxcSclhJE3JYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
ABsSKEo2F3tOQwAAAEYAAABFABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBv
c2l0ZWQtaW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0VVQJAAOWEXJYlhFyWHV4CwABBPUBAAAE
FAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUn
vyAXyLYysjSwMNfjAgBQSwMEFAACAAgAPRIoSrr+Rq9DAAAARgAAADUAHABjb21wb3NpdGluZy9h
bmltYXRpb24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gtbG9nLnR4dFVUCQAD1hFyWNYRclh1eAsA
AQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWv
RM8ltSw1J78gF8i2MrI0NLbQ4wIAUEsDBBQAAgAIAGISKEpSrsT3QwAAAEYAAAA5ABwAY29tcG9z
aXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1jb21wb3NpdGluZy1jcmFzaC1sb2cudHh0VVQJAAMX
EnJYFxJyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ
3pklIMo5P68kNa9EzyW1LDUnvyAXyLYysjQyMNLjAgBQSwMECgAAAAAAYhIoSgAAAAAAAAAAAAAA
ACAAHABjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L1VUCQADFxJyWEkTclh1eAsAAQT1
AQAABBQAAABQSwMEFAACAAgAHBIoSuEMSvJDAAAARgAAAEQAHABjb21wb3NpdGluZy9iYWNrZmFj
ZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktM2QtY3Jhc2gtbG9nLnR4dFVUCQADlxFy
WJcRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6Z
JSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0sDTU4wIAUEsDBBQAAgAIAEASKEriKcQ+QwAAAEYAAABY
ABwAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWhp
ZXJhcmNoaWNhbC10cmFuc2Zvcm0tY3Jhc2gtbG9nLnR4dFVUCQAD1xFyWNcRclh1eAsAAQT1AQAA
BBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1
J78gF8i2MrI0NDHW4wIAUEsDBBQAAgAIAGISKEqEK1P6QwAAAEYAAABHABwAY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWNyYXNoLWxvZy50
eHRVVAkAAxcSclgXEnJYdXgLAAEE9QEAAAQUAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJ
BQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjKyNDKw0OMCAFBLAwQKAAAAAABAEihKAAAA
AAAAAAAAAAAAHQAcAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvVVQJAAPXEXJYSRNyWHV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACABAEihKCs6B9EMAAABGAAAATgAcAGNvbXBvc2l0aW5nL2Jh
Y2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNpdHktY3Jhc2gt
bG9nLnR4dFVUCQAD1xFyWNcRclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUK
yfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0sDTR4wIAUEsDBAoAAAAAAEAS
KEoAAAAAAAAAAAAAAAAYABwAY29tcG9zaXRpbmcvYmFja2dyb3VuZHMvVVQJAAPXEXJYSRNyWHV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACABAEihKZBoF90MAAABGAAAARAAcAGNvbXBvc2l0aW5nL2Jh
Y2tncm91bmRzL2ZpeGVkLWJhY2tncm91bmQtb24tZGVzY2VuZGFudC1jcmFzaC1sb2cudHh0VVQJ
AAPXEXJY1xFyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal6
4alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYysjSwNNPjAgBQSwMECgAAAAAAYhIoSgAAAAAAAAAA
AAAAABQAHABjb21wb3NpdGluZy9iYWNraW5nL1VUCQADFxJyWEkTclh1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAHBIoSm43m/1DAAAARgAAADoAHABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNl
LXZpc2liaWxpdHktZmxpcC1jcmFzaC1sb2cudHh0VVQJAAOXEXJYlxFyWHV4CwABBPUBAAAEFAAA
APPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAX
yLYysjSwtNDjAgBQSwMEFAACAAgAQBIoSt7wPoRDAAAARgAAAEYAHABjb21wb3NpdGluZy9iYWNr
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFzaC1sb2cudHh0VVQJ
AAPXEXJY1xFyWHV4CwABBPUBAAAEFAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ+bl6iQUFOal6
4alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLYysjQ0NdDjAgBQSwMEFAACAAgAYhIoSoW19UtDAAAA
RgAAAEQAHABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHktaW4tdHJhbnNm
b3JtZWQtY3Jhc2gtbG9nLnR4dFVUCQADFxJyWBcSclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDI
yU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MrI0MjTR4wIA
UEsDBBQAAgAIAGISKErRRLy4zwIAAIoIAAANABwAZXJyb3JfbG9nLnR4dFVUCQADFxJyWE8Rclh1
eAsAAQT1AQAABBQAAADFVVFP2zAQfudXnPrCJi1xkqZtmjfWstGtMETLeKgq5CbXxhDbke2s8O/n
pFA6oECHpqkPqezz933+7nw3GZUCvlEBXgReEPutOGy6zY4fRi0IPL8zhYnWebykSti/BUshiKIg
msLBked3vW4MftBxPfvz4zBsxh5oVL9QQYLKsDlLqEFIJWo4+TEGJpK8TBEs36APy4wlGXBqkszu
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
TxYP3cI1M7TDoU4Cg2VBWnuudf70qp6Wy7bViV1Hfr/v533I5I4GHJ17Lmyk6uPDvl3tnbpFawe2
ruxyIy+1Y4es88bBNyevE/begrKPfuTPPx4MnBjQSbu02PyjJx4rPOyX4yJdVsNnh/SFfb7I8hj8
FNsS3BlqIxa9OVkeVuxFHQsUDVU7cpTyPBvFhay9vGMnmbk9RKNFXiU7w69lQpI/7bBfO+yG5H6G
5dgxx0JmfIJLDv8b4xOe+UvNZD5uh35NSaxm8TWXD3pIKaV+jW9jTomD2zydwJR1bWgO9U2WWYm2
QBQ5HK8TvR1QiV8ArHy1FWCgtBlfca9Pt6JOO0PR1IYuF8yMu6hVMwIuxpJRP2Lk4SE/90MAvijZ
YVh1EmaNhz2j/B7AirM9eXQGIzQnAuwMqUaYhq39ZY7AGqSsDbg5PqHztJ2hOObiwBoQ4B7c0Q4y
sszoY+kClAWYU/mUUS1MYmaRmZfIhDpu/+xYZDXSAredgHXyyDeWgY8aFIXKYZ+GNBhD7xnxz2eK
V0yVvDNUr/tU1/TZ/wdQSwMECgAAAAAA+BIoSgAAAAAAAAAAAAAAAAgAHAByZXRyaWVzL1VUCQAD
NBNyWEkTclh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA7xIoSgAAAAAAAAAAAAAAAA0AHAByZXRy
aWVzL2Zhc3QvVVQJAAMhE3JYSRNyWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADZEihKAAAAAAAA
AAAAAAAAHQAcAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvVVQJAAP6EnJYSRNyWHV4CwAB
BPUBAAAEFAAAAFBLAwQKAAAAAADZEihKAAAAAAAAAAAAAAAAIQAcAHJldHJpZXMvZmFzdC90ZXh0
LWF1dG9zaXppbmcvaW9zL1VUCQAD+hJyWEkTclh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA5RIo
SgAAAAAAAAAAAAAAACYAHAByZXRyaWVzL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL1VU
CQADDhNyWEkTclh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA5RIoSm7eb7BDAAAARgAAAFEAHABy
ZXRyaWVzL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL2lvcy9pcGFkL3Byb2dyYW1tYXRpYy10ZXh0LXNp
emUtYWRqdXN0LWNyYXNoLWxvZy50eHRVVAkAAw4TclgOE3JYdXgLAAEE9QEAAAQUAAAA88tXSC5K
LM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjI2MDM1
0eMCAFBLAwQUAAIACADZEihKC7nTCEMAAABGAAAAUQAcAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9z
aXppbmcvaW9zL2lwYWQvdGV4dC1zaXplLWFkanVzdC1pbmxpbmUtc3R5bGUtY3Jhc2gtbG9nLnR4
dFVUCQAD+hJyWPoSclh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokF
BTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2MjYwMzHR4wIAUEsDBAoAAAAAAO8SKEoAAAAA
AAAAAAAAAAAWABwAcmV0cmllcy9mYXN0L3ZpZXdwb3J0L1VUCQADIRNyWEkTclh1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAA7xIoSgAAAAAAAAAAAAAAABoAHAByZXRyaWVzL2Zhc3Qvdmlld3BvcnQv
aW9zL1VUCQADIRNyWEkTclh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA7xIoSgAAAAAAAAAAAAAA
AB8AHAByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvaW9zL2lwYWQvVVQJAAMhE3JYSRNyWHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACADvEihKDtStHEMAAABGAAAAQgAcAHJldHJpZXMvZmFzdC92aWV3cG9y
dC9pb3MvaXBhZC93aWR0aC1pcy1kZXZpY2Utd2lkdGgtY3Jhc2gtbG9nLnR4dFVUCQADIRNyWCET
clh1eAsAAQT1AQAABBQAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDK
OT+vJDWvRM8ltSw1J78gF8i2MjYwMzfU4wIAUEsDBAoAAAAAAPgSKEoAAAAAAAAAAAAAAAAOABwA
cmV0cmllcy9tZWRpYS9VVAkAAzQTclhJE3JYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAPgSKEoA
AAAAAAAAAAAAAAAXABwAcmV0cmllcy9tZWRpYS9jb250cm9scy9VVAkAAzQTclhJE3JYdXgLAAEE
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
ABgAAAAAAAEAAACkgSkkAABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAUAA1MRclh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAD4EShKftMmawwFAACPBgAAGAAYAAAAAAABAAAApIGyJAAAX3dw
dF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAANTEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
+BEoShEnQXfpCQAAOxIAABgAGAAAAAAAAQAAAKSBECoAAF93cHRfY2VydHMvbG9jYWxob3N0LnBl
bVVUBQADUxFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAPgRKEpVkOP+BwAAAAcAAAARABgA
AAAAAAEAAACkgUs0AABfd3B0X2NlcnRzL3NlcmlhbFVUBQADUxFyWHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAgAAAPgRKEoUofjnBwAAAAcAAAAVABgAAAAAAAEAAACkgZ00AABfd3B0X2NlcnRzL3Nl
cmlhbC5vbGRVVAUAA1MRclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD2EShKAAAAAAAAAAAA
AAAADgAYAAAAAAAAAAAApIHzNAAAYWNjZXNzX2xvZy50eHRVVAUAA08Rclh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAABCEihKAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UE7NQAAYWNjZXNzaWJp
bGl0eS9VVAUAA9wRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADEyhKQT4pencsAACNxQAA
KAAYAAAAAAABAAAApIGDNQAAYWNjZXNzaWJpbGl0eS9hcmlhLWN1cnJlbnQtY3Jhc2gtbG9nLnR4
dFVUBQADRhNyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACUSKErNGCFsvgAAAMAEAAAxABgA
AAAAAAEAAACkgVxiAABhY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy1jcmFzaC1s
b2cudHh0VVQFAAOlEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSsdQJZh3LAAAn8UA
AC4AGAAAAAAAAQAAAKSBhWMAAGFjY2Vzc2liaWxpdHkvYXR0YWNobWVudC1lbGVtZW50LWNyYXNo
LWxvZy50eHRVVAUAA0YTclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgEihKAAAAAAAAAAAA
AAAAHAAYAAAAAAAAABAA7UFkkAAAYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL1VUBQADFBJy
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAMTKEp+I17RgywAAI7FAAA2ABgAAAAAAAEAAACk
gbqQAABhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvYWJicmV2aWF0aW9uLWNyYXNoLWxvZy50
eHRVVAUAA0YTclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA9EihKZ8jpGUMAAABGAAAASwAY
AAAAAAABAAAApIGtvQAAYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2FjY2Vzc2liaWxpdHkt
YXJpYS10YWJsZS1jaGlsZHJlbi1jcmFzaC1sb2cudHh0VVQFAAPWEXJYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAAxMoSrBjRn2GLAAAqcUAAEwAGAAAAAAAAQAAAKSBdb4AAGFjY2Vzc2liaWxp
dHkvaW9zLXNpbXVsYXRvci9hY2Nlc3NpYmlsaXR5LWNyYXNoLWluLWF4Y29udGFpbmVyLWNyYXNo
LWxvZy50eHRVVAUAA0YTclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABCEihKAAAAAAAAAAAA
AAAAGgAYAAAAAAAAABAA7UGB6wAAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci9VVAUAA9wRclh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADEyhKfCU/LIYsAACOxQAAWQAYAAAAAAABAAAApIHV
6wAAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci9jaGFyYWN0ZXItb2Zmc2V0LXZpc2libGUtcG9z
aXRpb24tY29udmVyc2lvbi1oYW5nLWNyYXNoLWxvZy50eHRVVAUAA0YTclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAlEihKzRghbL4AAADABAAAQQAYAAAAAAABAAAApIHuGAEAYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWNyYXNoLWxvZy50eHRV
VAUAA6URclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADEyhK17Js5nMsAACfxQAASgAYAAAA
AAABAAAApIEnGgEAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1yYW5nZS1z
dGFsZS1ub2RlLWNyYXNoLWNyYXNoLWxvZy50eHRVVAUAA0YTclh1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABgEihKAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UEeRwEAYW5pbWF0aW9ucy9VVAUA
AxQSclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgEihKAAAAAAAAAAAAAAAADgAYAAAAAAAA
ABAA7UFjRwEAYW5pbWF0aW9ucy8zZC9VVAUAAxQSclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAADEyhKz40pFnQsAACNxQAAOQAYAAAAAAABAAAApIGrRwEAYW5pbWF0aW9ucy8zZC9jaGFuZ2Ut
dHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAPRIoSgKvVaFDAAAARgAAADsAGAAAAAAAAQAAAKSBknQBAGFuaW1hdGlv
bnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1jcmFzaC1sb2cudHh0VVQFAAPW
EXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSvce0BR7LAAAqsUAADUAGAAAAAAAAQAA
AKSBSnUBAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1jcmFzaC1sb2cu
dHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSuU3/kB1LAAAjsUAADMA
GAAAAAAAAQAAAKSBNKIBAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwtY3Jh
c2gtbG9nLnR4dFVUBQADRhNyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD0SKErVtGQdQwAA
AEYAAAA0ABgAAAAAAAEAAACkgRbPAQBhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtcGFyYW1l
dGVycy1jcmFzaC1sb2cudHh0VVQFAAPWEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMo
StDXUf9xLAAAqcUAAC4AGAAAAAAAAQAAAKSBx88BAGFuaW1hdGlvbnMvYWRkZWQtd2hpbGUtc3Vz
cGVuZGVkLWNyYXNoLWxvZy50eHRVVAUAA0YTclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAb
EihKAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGg/AEAY2FudmFzL1VUBQADlhFyWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAABsSKEoAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQeH8AQBjYW52
YXMvcGhpbGlwL1VUBQADlhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGESKEoAAAAAAAAA
AAAAAAAUABgAAAAAAAAAEADtQSn9AQBjYW52YXMvcGhpbGlwL3Rlc3RzL1VUBQADFhJyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIABsSKErd1bBIQwAAAEYAAAA1ABgAAAAAAAEAAACkgXf9AQBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWZlcmVuY2UtY3Jhc2gtbG9nLnR4dFVUBQAD
lhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGESKErUM2XKQwAAAEYAAAA+ABgAAAAAAAEA
AACkgSn+AQBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVjdCtmaWxsUmVjdC5hbHBoYTAt
Y3Jhc2gtbG9nLnR4dFVUBQADFhJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD0SKEpbEROj
QwAAAEYAAABAABgAAAAAAAEAAACkgeT+AQBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNsZWFyUmVj
dCtmaWxsUmVjdC5hbHBoYTAuNS1jcmFzaC1sb2cudHh0VVQFAAPWEXJYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAAxMoSkE+KXp3LAAAjcUAADsAGAAAAAAAAQAAAKSBof8BAGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTA2NS1jcmFzaC1sb2cudHh0VVQFAANGE3JY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSn4jXtGDLAAAjsUAADsAGAAAAAAAAQAAAKSB
jSwCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTA2Ny1jcmFzaC1s
b2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSnwlPyyGLAAAjsUA
ADsAGAAAAAAAAQAAAKSBhVkCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVu
dC0yOTA3Mi1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
AxMoSuU3/kB1LAAAjsUAADsAGAAAAAAAAQAAAKSBgIYCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5EZXZlbG9wbWVudC0yOTA3NS1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAAxMoSs+NKRZ0LAAAjcUAADsAGAAAAAAAAQAAAKSBarMCAGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTA3OS1jcmFzaC1sb2cudHh0VVQFAANG
E3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSteybOZzLAAAn8UAADsAGAAAAAAAAQAA
AKSBU+ACAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTE1Ny1jcmFz
aC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSsdQJZh3LAAA
n8UAADsAGAAAAAAAAQAAAKSBOw0DAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9w
bWVudC0yOTE1OS1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAAxMoSrBjRn2GLAAAqcUAADsAGAAAAAAAAQAAAKSBJzoDAGNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5EZXZlbG9wbWVudC0yOTE4Ny1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAAxMoStDXUf9xLAAAqcUAADsAGAAAAAAAAQAAAKSBImcDAGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTE5MC1jcmFzaC1sb2cudHh0VVQF
AANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSvce0BR7LAAAqsUAADsAGAAAAAAA
AQAAAKSBCJQDAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTE5NC1j
cmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSju5wity
LAAAnsUAADsAGAAAAAAAAQAAAKSB+MADAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZl
bG9wbWVudC0yOTIyMC1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAAxMoSqXDwNxqLAAAn8UAADsAGAAAAAAAAQAAAKSB3+0DAGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5EZXZlbG9wbWVudC0yOTIyMi1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSpe5apmDLAAAncUAADsAGAAAAAAAAQAAAKSBvhoEAGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0zMDYxMi1jcmFzaC1sb2cudHh0
VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSvcUvguDLAAAncUAADsAGAAA
AAAAAQAAAKSBtkcEAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0zMDYx
NC1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSt2a
xjprLAAAjMUAADsAGAAAAAAAAQAAAKSBrnQEAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5E
ZXZlbG9wbWVudC0zMDYxNi1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAAxMoSh1kaGR0LAAAjMUAADsAGAAAAAAAAQAAAKSBjqEEAGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0zMDYyMi1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSkJkC3eMLAAAjMUAADsAGAAAAAAAAQAAAKSBd84E
AGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0zMDYyNy1jcmFzaC1sb2cu
dHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMoSiXB3kd6LAAAjMUAADsA
GAAAAAAAAQAAAKSBePsEAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0z
MDY0OS1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAxMo
SjbQNFV1LAAAjMUAADsAGAAAAAAAAQAAAKSBZygFAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5EZXZlbG9wbWVudC0zMDY1NC1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAYhIoSgAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BUVUFAGNvbXBvc2l0aW5n
L1VUBQADFxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABsSKEpvqT1MQwAAAEYAAAA7ABgA
AAAAAAEAAACkgZdVBQBjb21wb3NpdGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4
ZWQtY3Jhc2gtbG9nLnR4dFVUBQADlhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD0SKEqw
09ilQwAAAEYAAABHABgAAAAAAAEAAACkgU9WBQBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlv
bi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUBQAD1hFyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGISKEo8ekD0QwAAAEYAAABQABgAAAAAAAEAAACkgRNXBQBj
b21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJl
bnQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUBQADFxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AGISKEoAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQeBXBQBjb21wb3NpdGluZy9hbmltYXRpb24v
VVQFAAMXEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGxIoSjYXe05DAAAARgAAAEUAGAAA
AAAAAQAAAKSBMFgFAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWlu
c2lkZS1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUBQADlhFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAD0SKEq6/kavQwAAAEYAAAA1ABgAAAAAAAEAAACkgfJYBQBjb21wb3NpdGluZy9hbmltYXRp
b24vYW5pbWF0aW9uLWJhY2tpbmctY3Jhc2gtbG9nLnR4dFVUBQAD1hFyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGISKEpSrsT3QwAAAEYAAAA5ABgAAAAAAAEAAACkgaRZBQBjb21wb3NpdGlu
Zy9hbmltYXRpb24vYW5pbWF0aW9uLWNvbXBvc2l0aW5nLWNyYXNoLWxvZy50eHRVVAUAAxcSclh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABiEihKAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UFa
WgUAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9VVAUAAxcSclh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAcEihK4QxK8kMAAABGAAAARAAYAAAAAAABAAAApIG0WgUAY29tcG9zaXRp
bmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxvZy50
eHRVVAUAA5cRclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABAEihK4inEPkMAAABGAAAAWAAY
AAAAAAABAAAApIF1WwUAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12
aXNpYmlsaXR5LWhpZXJhcmNoaWNhbC10cmFuc2Zvcm0tY3Jhc2gtbG9nLnR4dFVUBQAD1xFyWHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGISKEqEK1P6QwAAAEYAAABHABgAAAAAAAEAAACkgUpc
BQBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1h
Z2UtY3Jhc2gtbG9nLnR4dFVUBQADFxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEASKEoA
AAAAAAAAAAAAAAAdABgAAAAAAAAAEADtQQ5dBQBjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9y
L1VUBQAD1xFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEASKEoKzoH0QwAAAEYAAABOABgA
AAAAAAEAAACkgWVdBQBjb21wb3NpdGluZy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29s
b3ItYWxwaGEtd2l0aC1vcGFjaXR5LWNyYXNoLWxvZy50eHRVVAUAA9cRclh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAABAEihKAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UEwXgUAY29tcG9zaXRp
bmcvYmFja2dyb3VuZHMvVVQFAAPXEXJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQBIoSmQa
BfdDAAAARgAAAEQAGAAAAAAAAQAAAKSBgl4FAGNvbXBvc2l0aW5nL2JhY2tncm91bmRzL2ZpeGVk
LWJhY2tncm91bmQtb24tZGVzY2VuZGFudC1jcmFzaC1sb2cudHh0VVQFAAPXEXJYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAYhIoSgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BQ18FAGNvbXBv
c2l0aW5nL2JhY2tpbmcvVVQFAAMXEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHBIoSm43
m/1DAAAARgAAADoAGAAAAAAAAQAAAKSBkV8FAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2Ut
dmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50eHRVVAUAA5cRclh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABAEihK3vA+hEMAAABGAAAARgAYAAAAAAABAAAApIFIYAUAY29tcG9zaXRpbmcvYmFj
a2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWluLTNkdHJhbnNmb3JtZWQtY3Jhc2gtbG9nLnR4dFVU
BQAD1xFyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGISKEqFtfVLQwAAAEYAAABEABgAAAAA
AAEAAACkgQthBQBjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHktaW4tdHJh
bnNmb3JtZWQtY3Jhc2gtbG9nLnR4dFVUBQADFxJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AGISKErRRLy4zwIAAIoIAAANABgAAAAAAAEAAACkgcxhBQBlcnJvcl9sb2cudHh0VVQFAAMXEnJY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAsRIoSgAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1B
4mQFAGZhc3QvVVQFAAOtEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAsRIoSgAAAAAAAAAA
AAAAABUAGAAAAAAAAAAQAO1BIWUFAGZhc3QvdGV4dC1hdXRvc2l6aW5nL1VUBQADrRJyWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAALESKEoAAAAAAAAAAAAAAAAZABgAAAAAAAAAEADtQXBlBQBm
YXN0L3RleHQtYXV0b3NpemluZy9pb3MvVVQFAAOtEnJYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAxhIoSgAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1Bw2UFAGZhc3QvdGV4dC1hdXRvc2l6aW5n
L2lvcy9pcGFkL1VUBQAD0xJyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAMTKEo20DRVdSwA
AIzFAABJABgAAAAAAAEAAACkgRtmBQBmYXN0L3RleHQtYXV0b3NpemluZy9pb3MvaXBhZC9wcm9n
cmFtbWF0aWMtdGV4dC1zaXplLWFkanVzdC1jcmFzaC1sb2cudHh0VVQFAANGE3JYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAAxMoSh1kaGR0LAAAjMUAAEkAGAAAAAAAAQAAAKSBE5MFAGZhc3Qv
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
AAAAAAAAABAA7UFNUAYAcmV0cmllcy9mYXN0L3RleHQtYXV0b3NpemluZy9pb3MvVVQFAAP6EnJY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5RIoSgAAAAAAAAAAAAAAACYAGAAAAAAAAAAQAO1B
qFAGAHJldHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL2lwYWQvVVQFAAMOE3JYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA5RIoSm7eb7BDAAAARgAAAFEAGAAAAAAAAQAAAKSBCFEGAHJl
dHJpZXMvZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL2lwYWQvcHJvZ3JhbW1hdGljLXRleHQtc2l6
ZS1hZGp1c3QtY3Jhc2gtbG9nLnR4dFVUBQADDhNyWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ANkSKEoLudMIQwAAAEYAAABRABgAAAAAAAEAAACkgdZRBgByZXRyaWVzL2Zhc3QvdGV4dC1hdXRv
c2l6aW5nL2lvcy9pcGFkL3RleHQtc2l6ZS1hZGp1c3QtaW5saW5lLXN0eWxlLWNyYXNoLWxvZy50
eHRVVAUAA/oSclh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADvEihKAAAAAAAAAAAAAAAAFgAY
AAAAAAAAABAA7UGkUgYAcmV0cmllcy9mYXN0L3ZpZXdwb3J0L1VUBQADIRNyWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAO8SKEoAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQfRSBgByZXRyaWVz
L2Zhc3Qvdmlld3BvcnQvaW9zL1VUBQADIRNyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAO8S
KEoAAAAAAAAAAAAAAAAfABgAAAAAAAAAEADtQUhTBgByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvaW9z
L2lwYWQvVVQFAAMhE3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7xIoSg7UrRxDAAAARgAA
AEIAGAAAAAAAAQAAAKSBoVMGAHJldHJpZXMvZmFzdC92aWV3cG9ydC9pb3MvaXBhZC93aWR0aC1p
cy1kZXZpY2Utd2lkdGgtY3Jhc2gtbG9nLnR4dFVUBQADIRNyWHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAPgSKEoAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQWBUBgByZXRyaWVzL21lZGlhL1VU
BQADNBNyWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPgSKEoAAAAAAAAAAAAAAAAXABgAAAAA
AAAAEADtQahUBgByZXRyaWVzL21lZGlhL2NvbnRyb2xzL1VUBQADNBNyWHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAPgSKEoAAAAAAAAAAAAAAAAcABgAAAAAAAAAEADtQflUBgByZXRyaWVzL21l
ZGlhL2NvbnRyb2xzL2lwYWQvVVQFAAM0E3JYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+BIo
SovC4hlDAAAARgAAAGQAGAAAAAAAAQAAAKSBT1UGAHJldHJpZXMvbWVkaWEvY29udHJvbHMvaXBh
ZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0dXJlLXZpZGVvLWFzc2VydGlvbi1mYWls
dXJlLWNyYXNoLWxvZy50eHRVVAUAAzQTclh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAEEyhK
BB8C/o8EAAC4DQAACgAYAAAAAAABAAAApIEwVgYAc3RhdHMuanNvblVUBQADRxNyWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAAESKEpJ0v925QQAABgbAAAZABgAAAAAAAEAAACkgQNbBgB3cHR3
a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAANiEXJYdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAB2AHYA
rDMAADtgBgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298337</attachid>
            <date>2017-01-09 02:39:06 -0800</date>
            <delta_ts>2017-01-09 23:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170109023730.patch</filename>
            <type>text/plain</type>
            <size>890387</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjExNDUxMzhkYTdlNWE0ZjE4ZjQxZDhmOWY3YmY1OWFjOWVhMzVjLi5lMTk3YTJhMDA1MTIxZjll
Y2U1Mjg4MTI0NDBhZTE1MGVmNzI4ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEluamVj
dCBNYXJrZWRTcGFjZSBzaXplIGNsYXNzZXMgZm9yIGEgZmV3IG1vcmUgaGlnaC12b2x1bWUgb2Jq
ZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggMmVhMGQ3ZjRhYjcyOGRlNTNiMGFhZDkwYjRlZTk3YzQ1MDYzMDJmZS4uODRh
YWIxNjQyY2EyMWJiNDJjMmY3MGIwZWZhNDk4NjE2OGQyZDc2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNy0wMS0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2VkIHRo
ZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5vbi1j
b25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29uc3Qg
VD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGludGVu
dGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZlcmVu
Y2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2UgUmVm
UHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAgaXMg
dG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nhc3Qg
anVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9zZSBh
bmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0wOCAg
S29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgSW50cm9k
dWNlIENQVShYODZfU1NFMikgaW5zdGVhZCBvZiB2YXJpb3VzIFNTRTIgY2hlY2tzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYTNmZjVlMWE5ZWU2YmFhMTJjNmFjYzJhMGQyNGY1Y2Y4ODg4ZDY4Mi4uMzJjYzc5Yzk0
MDkyNjdkNjdhN2ZjNTIzZjQwNjYxZjY4NTVmMjQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
MSBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJl
bW92ZWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAgICAgICAg
QWRkZWQgbm93LW5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgUGFzcyBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBUd2Vha3MsIG1zYWRlIGEgZmV3IHRoaW5n
cworICAgICAgICBtb3JlIHByaXZhdGUgYW5kIGZpbmFsLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OmdldFB0ck9yUmVm
KTogUmVtb3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6Ondy
YXBwZWQpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxl
TG9hZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DZW50ZXJDb29yZGlu
YXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKTogVGFr
ZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omdl
dEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpm
aWxsU2l6ZVRvQ1NTVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUpOiBVcGRhdGVkIG1hbnkgcHJvcGVydGllcworICAg
ICAgICBzaW5jZSB0aGUgbGF5ZXIgcHJvcGVydGllcyBub3cgcmV0dXJuIHJlZmVyZW5jZXMgcmF0
aGVyIHRoYW4gcG9pbnRlcnMuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRH
ZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxlOjppdGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmluaXQpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAq
IGNzcy9DU1NTdHlsZVJ1bGUuaDogUmVtb3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3Qu
CisKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0VG9MZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6ZSBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZh
bWlseSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2U6OnN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6d2VpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJh
bmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dmFyaWFudCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncyk6IERpdHRvLgor
CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aXplRm9yTGVuZ3RoU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRTaXplRm9y
TGVuZ3RoU2l6ZSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAgICAqIGNz
cy9MZW5ndGhGdW5jdGlvbnMuaDogQWRkZWQgc2l6ZUZvckxlbmd0aFNpemUuCisKKyAgICAgICAg
KiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhaW50T3JkZXIpOiBDdXQgZG93biBvbiBjcmVhdGlvbiBvZiB1bnVzZWQgb2JqZWN0cy4K
KyAgICAgICAgV2Ugbm93IGNyZWF0ZSBvbmx5IHdoYXQgd2UgYWN0dWFsbHkgdXNlLgorCisgICAg
ICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKTogVXBkYXRlZCBmb3IKKyAgICAgICAg
TGVuZ3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKTogUGFzcyByZWZlcmVuY2VzCisgICAgICAgIHdoZW4gY3Jl
YXRpbmcgU2hhcGVWYWx1ZS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoK
KyAgICAgICAgKFdlYkNvcmU6OmZvcndhcmRJbmhlcml0ZWRWYWx1ZSk6IEFkZGVkLiBUaGlzIHNl
dCBvZiBvdmVybG9hZGVkCisgICAgICAgIGZ1bmN0aW9ucyBhbGxvd3MgdXMgdG8gdXNlIG1vdmUg
c2VtYW50aWNzIGZvciBzb21lIHR5cGVzLCBidXQgY29weQorICAgICAgICB0aGVtIHdoZW4gaW5o
ZXJpdGluZy4gRG9pbmcgaXQgd2l0aCBzcGVjaWFsIGNhc2VzIGhlcmUgYWxsb3dzIHVzIHRvCisg
ICAgICAgIHJlc29sdmUgdGhpcyB3aXRob3V0IGFkZGluZyBvdmVybG9hZHMgc29tZW9uZSBtaWdo
dCBiZSB0ZW1wdGVkIHRvCisgICAgICAgIGNhbGwgb3V0c2lkZSB0aGUgc3R5bGUgYnVpbGRlciwg
YW5kIHdpdGhvdXQgYWRkaW5nIHNwZWNpYWwgY2FzZXMgdG8KKyAgICAgICAgdGhlIEpTT04gZmls
ZSBmb3IgZWFjaCBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbik6CisgICAgICAgIEFkZCBXVEZNb3Zl
IGFzIG5lZWRlZCB0byB3b3JrIHdpdGggcnZhbHVlIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRJbmRlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0TGluZUhlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDbGlwKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKTogVXNlCisgICAg
ICAgIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9tYWtlcHJvcC5wbDogVXNlIGF1dG8gcXVpdGUgYSBiaXQgbW9yZSBpbiB0aGUgZ2VuZXJh
dGVkIGNvZGUuCisgICAgICAgIFVwZGF0ZWQgc3BlY2lhbCBjYXNlcyBmb3IgbGF5ZXJzIHRvIGV4
cGVjdCByZWZlcmVuY2VzLiBBZGRlZCBhIFdURk1vdmUKKyAgICAgICAgc28gd2UgY2FuIGdldCBt
b3ZlIHNlbWFudGljcyBmb3IgY29udmVydGVkIHZhbHVlcyB0aGF0IGNvbWUgb3V0IGluCisgICAg
ICAgIGFuIG9wdGlvbmFsLiBBZGRlZCBjYWxsIHRvIGZvcndhcmRJbmhlcml0ZWRWYWx1ZSAoc2Vl
IGFib3ZlKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOiBVc2UgYXV0byBhbmQgdXBk
YXRlCisgICAgICAgIHNpbmNlIExlbmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisKKyAgICAgICAgKiBk
b20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6Y29tcHV0ZVBh
dGhVbmNsb3NlZFRvVGFyZ2V0KTogVXNlIGF1dG8uCisKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVM
aXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6Om93bmVyTm9kZSk6IFJlbW92
ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogZG9tL01lc3NhZ2VF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OnNvdXJjZSk6IFJlbW92
ZWQgdW5uZWVkZWQgc3RhdGljX2Nhc3QuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9y
KTogVHdlYWtlZCBmb3JtYXR0aW5nLgorCisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZTo6b3duZXJEb2N1bWVudCk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRl
ZCBjb25zdF9jYXN0LgorICAgICAgICAqIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNhbGxiYWNrKTogRGl0
dG8uCisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRSdW5uZXI6On5TY3JpcHRSdW5uZXIpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2Rl
KTogRGl0dG8uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRlbTo6bm9kZSk6IERpdHRvLgorCisgICAgICAgICogaW5z
cGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQpOiBDdXQgZG93biBvbiB0aGUg
bnVtYmVyCisgICAgICAgIG9mIGRpZmZlcmVudCBmdW5jdGlvbnMgaGVyZS4gQWxzbyB1c2UgcmVm
ZXJlbmNlIHJhdGhlciB0aGFuIHBvaW50ZXIuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBs
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbSk6IFJlbW92ZWQKKyAgICAgICAg
bm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpvd25lclJlbmRlcmVyKTogVXNlIGF1
dG8uIExldCB0aGUgaXM8PiBmdW5jdGlvbiBkbyBudWxsCisgICAgICAgIGNoZWNraW5nIGZvciB1
cy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpmcmFtZUZvcldpZGdldCk6IFRha2UgYSByZWZl
cmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogVXBk
YXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjppbnZhbGlkYXRlUmVjdCk6IFVzZSBDaHJvbWUgZGly
ZWN0bHkgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBIb3N0V2luZG93LiBIb3N0V2luZG93IGlz
IGFuIGFic3RyYWN0aW9uIGZvciB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFuZCB0aGVyZQorICAgICAg
ICBpcyBubyBnb29kIHJlYXNvbiB0byB1c2UgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2NoZWR1bGVBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6Z3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0KTogVXBkYXRlZCB0byB1c2Ug
cmVmZXJlbmNlCisgICAgICAgIHdoZW4gY2FsbGluZyBSZW5kZXJXaWRnZXQ6OmZpbmQuCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOiBVc2UgQ2hy
b21lIGluc3RlYWQgb2YgSG9zdFdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
aG9zdFdpbmRvdyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0aHJvdWdoIHRv
IGJhc2UKKyAgICAgICAgY2xhc3MgZnVuY3Rpb24sIHdoaWNoIHdhcyBlbXB0eS4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6aGFzQ3VzdG9tU2Nyb2xsYmFycyk6IFVwZGF0ZWQgc2luY2Ug
dGhlIGNoaWxkcmVuIHNldCBub3cKKyAgICAgICAgY29udGFpbnMgUmVmIHJhdGhlciB0aGFuIFJl
ZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KTogVXNl
IGVhcmx5IHJldHVybi4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0
UG9zaXRpb25zKTogVXNlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIuCisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuaDogVXNlIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIFJlbW92ZSBu
b3ctdW5uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnaW5WaWV3cyk6IFVwZGF0ZWQgc2luY2UgdGhlIGNoaWxk
cmVuIHNldCBub3cgY29udGFpbnMKKyAgICAgICAgUmVmIHJhdGhlciB0aGFuIFJlZlB0ci4KKwor
ICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50
Q29udGV4dDo6cGFnZVByb3BlcnR5KTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6ZSBzdHJ1Y3QuCisK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6IFVwZGF0
ZWQgZm9yIGNoYW5nZXMgdG8KKyAgICAgICAgdGhlIHR5cGVzIGluIGFuaW1hdGlvbiBmdW5jdGlv
biBtZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNl
cnZpY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnByb2dyZXNz
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGlt
ZSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKTogVXBkYXRlZCBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXI6Okxl
bmd0aFByb3BlcnR5V3JhcHBlcik6IFVwZGF0ZWQgc2luY2Ugd2Ugbm93CisgICAgICAgIHVzZSBy
dmFsdWUgcmVmZXJlbmNlcyBhbmQgbW92ZSBzZW1hbnRpY3Mgd2hlbiBzZXR0aW5nIGxlbmd0aCBw
cm9wZXJ0aWVzLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRl
RXZlbnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSk6IFR3ZWFrZWQgdG8KKyAgICAgICAgdXNlIGF1
dG8sIHBhc3MgcmVmZXJlbmNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6
IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoQm94Lmg6IEFkZGVkIGEgY29uc3RydWN0b3IgdGhhdCBtb3ZlcyB0aGUgbGVuZ3Ro
cyBpbiwgcmF0aGVyCisgICAgICAgIHRoYW4gYWx3YXlzIGNvcHlpbmcgdGhlbS4KKworICAgICAg
ICAqIHBsYXRmb3JtL0xlbmd0aFNpemUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6IFVwZGF0ZWQgc2luY2UgTGVuZ3RoU2l6ZSBpcyBhIHN0cnVjdC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9MZW5ndGhTaXplLmg6IFR1cm5lZCBMZW5ndGhTaXplIGludG8gYSBzdHJ1Y3QgYW5kIHJl
bW92ZWQgYWxsIHRoZQorICAgICAgICBnZXR0ZXIgYW5kIHNldHRlciBjb2RlLgorCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaDogUmVtb3ZlZC4gVW51c2VkLgor
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNy
ZWF0ZSk6IFJldHVybiBSZWYgcmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSk6IFRha2UKKyAgICAgICAgYSByZWZlcmVuY2UuIEluaXRpYWxpemUgZGF0
YSBtZW1iZXJzIGluIGNsYXNzIGRlZmluaXRpb24uCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUpOiBSZXR1
cm4gUmVmIHJhdGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OmFkZENoaWxkKTogVGFrZSBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIFBhc3NSZWZQdHIu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbCk6
IFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBhZGRDaGlsZAorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6IERlbGV0ZWQuIFRoaXMgd2FzIG5ldmVyIGNh
bGxlZCwKKyAgICAgICAgc28gbWFkZSBpdCBwdXJlIHZpcnR1YWwuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCk6IFVzZSBhIG1vZGVybiBmb3IgbG9vcC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNsaXBSZWN0Q2hhbmdlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKTogRGVsZXRl
ZC4gVGhpcyB3YXMgZW1wdHkgc28gbWFkZSBpdCBwdXJlCisgICAgICAgIHZpcnR1YWwgYW5kIGNo
YW5nZWQgRnJhbWVWaWV3IHRvIG5vdCBjYWxsIGl0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6c2V0UGFyZW50VmlzaWJsZSk6IFVzZSBhIG1vZGVybiBmb3IgbG9vcC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNob3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OmhpZGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6
IENoYW5nZWQgdGhlIGNoaWxkcmVuIHNldCB0byBjb250YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0
ci4KKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVyIG92ZXJyaWRkZW4g
dG8gZWl0aGVyIGJlIGZpbmFsIG9yIG5vbi12aXJ0dWFsLAorICAgICAgICBDaGFuZ2VkIGZ1bmN0
aW9ucyB0aGF0IHdlcmUgbmV2ZXIgY2FsbGVkIHRvIGJlIHB1cmUgdmlydHVhbC4KKworICAgICAg
ICAqIHBsYXRmb3JtL1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6bWluaW11bUNv
bnRyb2xTaXplKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmg6IENoYW5nZWQgdGltaW5nRnVuY3Rpb24gYW5k
IHRyaWdnZXIgdG8gcmV0dXJuCisgICAgICAgIHJhdyBwb2ludGVycyBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuIENoYW5nZWQgc2V0VGltaW5nRnVuY3Rpb24gYW5kIHNldFRyaWdnZXIgdG8KKyAgICAg
ICAgdGFrZSBSZWZQdHImJiBhbmQgUmVmJiYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDSGFuZ2Vk
IGluaXRpYWxUaW1pbmdmdW5jdGlvbiBhbmQKKyAgICAgICAgaW5pdGlhbFRyaWdnZXIgdG8gcmV0
dXJuIFJlZi4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmNw
cDogUmVtb3ZlZCByZWR1bmRhbnQgY2hlY2sgaW4gRklMTF9VTlNFVF9QUk9QRVJUWS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkxpc3Q6OkFuaW1hdGlvbkxpc3QpOiBVc2UgbW9kZXJuIGZv
ciBsb29wLCByZXNlcnZlSW5pdGlhbENhcGFjaXR5LAorICAgICAgICBhbmQgdW5jaGVja2VkQXBw
ZW5kLgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0Lmg6IENoYW5n
ZWQgYXBwZW5kIHRvIHRha2UgUmVmJiYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICBj
aGFuZ2VkIHZlY3RvIHRvIGNvbnRhaW4gUmVmIGluc3RlYWQgb2YgUmVmUHRyLiBBZGRlZCBtb3Zl
IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50CisgICAgICAgIG9wZXJhdG9yLgorCisgICAgICAg
ICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IFJldHVybiBSZWYgaW5zdGVhZCBvZiBQ
YXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNsb25l
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjcmVh
dGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXI6OmNs
b25lKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUpOiBS
ZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKTogUmV0dXJu
IGEgcmVmZXJlbmNlCisgICAgICAgIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlUmV2ZXJzZWQpOiBSZXR1cm4g
UmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb246OmNsb25lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGlt
aW5nRnVuY3Rpb246OmNsb25lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTcHJpbmdUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTcHJpbmdUaW1p
bmdGdW5jdGlvbjo6Y2xvbmUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y2hhbm5lbCk6IFJlbW92ZWQg
bm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlz
aEVuY29kaW5nKTogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisgICAgICAg
ICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDogVXNlIGZpbmFsIGluc3RlYWQgb2Ygb3Zl
cnJpZGUuIE1hZGUgZXZlbiBtb3JlCisgICAgICAgIHByaXZhdGUuIENoYW5nZWQgcmV0dXJuIHZh
bHVlIG9mIGZpbmlzaEVuY29kaW5nIHRvIFJlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5o
OiBSZW1vdmVkIGluY2x1ZGUgb2YgUGFzc1JlZlB0ci5oLgorCisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckdsaWI6OmZpbmlzaEVuY29kaW5nKTogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQ
dHIuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6IFVzZSBmaW5h
bCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9yZQorICAgICAgICBwcml2YXRlLiBD
aGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGluZyB0byBSZWYgaW5zdGVhZCBvZiBQ
YXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6IFJl
bW92ZWQgaW5jbHVkZWQgb2YgUGFzc1JlZlB0ci5oLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOiBUd2Vha2VkIGZvcm1hdHRpbmcuIFJlbW92ZWQgbmVz
dGluZworICAgICAgICBmcm9tICNpZiBzaW5jZSBvdXIgZm9ybWF0dGluZyBtYWtlcyBpdCBoYXJk
IHRvIHNlZSBuZXN0aW5nLiBMZXQgdGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBk
ZWZhdWx0IG1vdmUgYW5kIGNvcHkgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25lbW50IG9wZXJhdG9y
cyBleGNlcHQKKyAgICAgICAgaW4gdGhlIFVTRShGUkVFVFlQRSkgY2FzZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgc2luY2UgY2xvbmUgbm93IHJl
dHVybnMgYSBSZWYKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpGbG9hdEFuaW1hdGlvblZhbHVlKTogRGVsZXRlZC4g
TGV0IHRoZSBjb21waWxlcgorICAgICAgICBnZW5lcmF0ZSB0aGUgY29weSBjb25zdHJ1Y3RvciB3
aXRob3V0IGRlZmluaW5nIGl0IGV4cGxpY2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOiBVc2UgYSBtb2Rlcm4g
Zm9yCisgICAgICAgIGxvb3AsIHJlc2VydmVJbml0aWFsQ2FwYWNpdHksIGFuZCB1bmNoZWNrZWQg
YXBwZW5kLiBBbHNvIHRlbGwgdGhlIGNvbXBpbGVyIHRvCisgICAgICAgIGdlbmVyYXRlIHRoZSBt
b3ZlIGNvbnN0cnVjdG9yLCBzaW5jZSB0aGUgc3BlY2lhbCB3b3JrIGlzIG9ubHkgbmVlZGVkIGZv
ciB0aGUKKyAgICAgICAgY29weSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckFuaW1hdGlvblZhbHVlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Q6OktleWZyYW1lVmFsdWVMaXN0KTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmg6IFJlbW92ZWQg
aW5jbHVkZSBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGhVdGlsaXRpZXM6OnBhdGhX
aXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGluZSk6IFVwZGF0ZWQKKyAgICAgICAgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRik6IFRha2Ug
YSByZWZlcmVuY2UuCisgICAgICAgIERvbid0IGJvdGhlciBzZXR0aW5nIG1fY2xpZW50IHNpbmNl
IHdlIG5ldmVyIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KTogQ2xlYW4gdXAgY29kZSBhIGJpdAorICAgICAgICBi
eSB1c2luZyBhdXRvIGEgbG90IG1vcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oOiBBZGRlZCBpbmNsdWRlCisg
ICAgICAgIHRoYXQgaXMgbm93IG5lZWRlZCBzaW5jZSBpdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBi
YXNlIGNsYXNzLiBUaWRpZWQgdGhlIGNsYXNzCisgICAgICAgIHVwIGEgYml0LCBtYXJraW5nIGl0
IGZpbmFsLCBtYWtpbmcgZXZlcnl0aGluZyBwcml2YXRlLCB0YWtpbmcgYSByZWZlcmVuY2UsIGFu
ZAorICAgICAgICByZW1vdmluZyBhbiB1bnVzZWQgZGF0YSBtZW1iZXIsIG1fY2xpZW50LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKTogUGFzcyBhIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgIGFkZGVkIGluY2x1ZGUgb2YgV1RGU3RyaW5nLmgs
IG5vdyBuZWVkZWQgYmVjYXVzZSBvZiByZW1vdmluZyBhbiB1bm5lZWRlZAorICAgICAgICBpbmNs
dWRlIGZyb20gYW5vdGhlciBoZWFkZXIgZmlsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OmFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQpOiBVcGRhdGVkIHNpbmNlIHRyaWdnZXIK
KyAgICAgICAgaXMgYSByYXcgcG9pbnRlciBub3cuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOiBVcGRhdGVkIHRvCisg
ICAgICAgIHJldHVybiBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyk6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5
ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEZp
bHRlckFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25LZXlmcmFtZXMpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDogRGl0dG8uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVha1V0dGVyYW5jZTpdKTogQ0hhbmdl
ZCBhcmd1bWVudCB0byBiZSBhCisgICAgICAgIFJlZlB0ciYmIGluc3RlYWQgb2YgYSBQYXNzUmVm
UHRyLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2l6ZUZyb21OU0NvbnRyb2xTaXplKTogVXBkYXRlZCBmb3IgTGVuZ2h0U2l6ZSBzdHJ1
Y3QuCisgICAgICAgIChXZWJDb3JlOjpjaGVja2JveFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OnJhZGlvU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmNv
bnRyb2xTaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6bWluaW11bUNv
bnRyb2xTaXplKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpzZXRGb2N1cyk6IFVwZGF0ZWQgdG8gcGFzcyBh
IHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50
TW9jay5jcHA6IFJlbW92ZWQuIFVudXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0Rldmlj
ZU1vdGlvbkNsaWVudE1vY2suaDogUmVtb3ZlZC4gVW51c2VkLgorCisgICAgICAgICogcGxhdGZv
cm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJz
b3IpOiBSZXR1cm4gYSBSZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpsb2FkU2hhcmVkQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb2FkQ3Vy
c29yQnlOYW1lKTogRGl0dG8uCisKKworCisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpv
dXRwdXQpOiBSZW1vdmVkIGEgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dFJlY3QpOiBEaXR0by4KKworICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVycG9sYXRpb25RdWFsaXR5
KTogVHdlYWtlZCBmb3JtYXR0aW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJz
KTogVXBkYXRlZCB0byB0YWtlIGEgcmVmZXJlbmNlLiBBbHNvCisgICAgICAgIHVzZWQgYSB2ZWN0
b3IgdG8gaXRlcmF0ZSB0aGUgbGlua2VkIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciBpbnN0ZWFkIG9m
IHJlY3Vyc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExh
eWVyKTogVGFrZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMpOiBVc2Ug
YXV0byBhIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBh
aW50ZWRFeHRlbnQpOiBVc2UgcmVmZXJlbmNlIGZvciB0aGUgbGF5ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExh
eWVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdl
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXNrQ2xpcFJlY3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpsYXllcnNVc2VJbWFnZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKTogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOiBVc2Ug
cmVmZXJlbmNlIGZvcgorICAgICAgICB0aGUgbGF5ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1l
bnQpOiBVc2UgcmVmZXJlbmNlcyBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmFkanVzdFN0eWxlRGlmZmVyZW5jZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6dXBkYXRlRmlsbEltYWdlcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6Om11c3RSZXBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOiBEaXR0by4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcik6IFBhc3Mgd2lkZ2V0IGFzIHJlZmVyZW5j
ZSB0byBhZGRDaGlsZC4KKyAgICAgICAgQWxzbyBkaWQgYSBmZXcgb3RoZXIgdHdlYWtzIGFuZCB1
c2VkIG1vcmUgc3BlY2lmaWMgdHlwZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNyZWF0ZVRpbGVkSW1hZ2UpOiBV
cGRhdGVkIHNpbmNlIGxheWVycyBhcmUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlRGlyZWN0bHlDb21wb3NpdGVkQmFja2dyb3VuZEltYWdl
KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRC
YWNrZ3JvdW5kc0JlaGluZENlbGwpOiBVcGRhdGVkIHRvIHVzZQorICAgICAgICByZWZlcmVuY2Vz
IGZvciBsYXllcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKTogVXNlIFdURk1vdmUgdG8g
cGFzcyBhIExlbmd0aEJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjppc0NvbnRy
b2xTdHlsZWQpOiBVcGRhdGVkIHNpbmNlIExlbmd0aFNpemUgaXMgYSBzdHJ1Y3QsCisgICAgICAg
IG1vcmUgV1RGTW92ZSwgY2hhbmdlIHNpbmNlIGxheWVycyBhcmUgZmVyZW5jZXMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdl
dEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRzKTogVXNlIG1vdmUK
KyAgICAgICAgaW5zdGVlYWQgb2Ygc3dhcCBhbmQgbW9kZXJuIGZvciBsb29wIGluc3RlYWQgb2Yg
aXRlcmF0b3JzLgorICAgICAgICAoV2ViQ29yZTo6bW92ZVdpZGdldFRvUGFyZW50U29vbik6IFRh
a2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnNldFdpZGdldCk6IFVwZGF0ZSBmb3IgYWJvdmUgY2hhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpmaW5kKTogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFk
IG9mIGEgcG9pbnRlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6IFVwZGF0
ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9TaXpp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQpOiBV
cGRhdGVkIHNpbmNlIExlbmd0aCBpcyBwYXNzZWQgYXMKKyAgICAgICAgcnZhbHVlIHJlZmVyZW5j
ZSBub3cuCisKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTFN0eWxlOjpnZXRNYXRoTUxTdHlsZSk6IFVwZGF0ZWQgc2lu
Y2UgbWF0aE1MU3R5bGUgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKTogRGl0dG8uCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6bWF0aE1MU3R5bGUpOiBSZW1vdmVkIG5vLWxvbmdl
ciBuZWVkZWQgY29uc3RfY2FzdCwKKyAgICAgICAgY2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
VGFibGU6Om1hdGhNTFN0eWxlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZyYWN0aW9uOjpmcmFjdGlvblBhcmFtZXRlcnMpOiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxl
CisgICAgICAgIHJldHVybnMgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6c3RhY2tQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0eWxlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c2hvdWxkTW92ZUxpbWl0
cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRl
cnMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFy
aWFudEdseXBoKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSk6IFVwZGF0
ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpCb3JkZXJEYXRhKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpoYXNCb3JkZXJSYWRpdXMpOiBEaXR0
by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmg6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhUmVmOjpEYXRhUmVmKTogUmVtb3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nh
c3QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVmOjpyZXBsYWNlKTogQWRkZWQuIFRoaXMgZnVu
Y3Rpb24gaXMgbGlrZSBSZWY6OnJlcGxhY2UsIGFuZAorICAgICAgICBjYW4gYmUgdXNlZCB0byBw
dXQgYSBuZXcgdmFsdWUgaW4gYW5kIGdldCBhbiBvbGQgdmFsdWUgb3V0IHdpdGhvdXQgcnVubmlu
ZyBpbnRvCisgICAgICAgIHRoZSBydWxlIFJlZiBoYXMgYWJvdXQgbm90IGJlaW5nIHJldXNlZCBv
bmNlIGl0IGJlY29tZXMgbnVsbCBiZWNhdXNlIG9mIGJlaW5nCisgICAgICAgIG1vdmVkIG91dCBv
Zi4gVGhpcyBmdW5jdGlvbiBpcyBhIGxvdCBsaWtlIHN0ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChX
ZWJDb3JlOjpEYXRhUmVmOjpvcGVyYXRvciBjb25zdCBUJik6IEFkZGVkIG9wZXJhdG9yIHNvIHdl
IGNhbiB1c2UgdGhlc2UKKyAgICAgICAgYXMgcmVmZXJlbmNlcyB3aXRob3V0IGFueSBmdW5jdGlv
biBjYWxsIGluIHJlYWQtb25seSBjb250ZXh0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6
OmdldCk6IENoYW5nZWQgdG8gcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIHBvaW50ZXIu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVmOjphY2Nlc3MpOiBEaXR0by4KKworICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24pOiBVcGRhdGVkIHNpbmNlIHRpbWluZ0Z1bmN0aW9u
CisgICAgICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lTGlzdDo6fktleWZyYW1lTGlzdCk6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0byBjbGVhciwK
KyAgICAgICAgd2hpY2ggZG9lcyB0aGluZ3MgdGhhdCBhcmUgcmVkdW5kYW50IHNpbmNlIHdlIGFy
ZSBhYm91dCB0byBkZXN0cm95IGFsbCB0aGUKKyAgICAgICAgZGF0YSBtZW1iZXJzLgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0OjpvcGVyYXRvcj09KTogVHdlYWtlZCBjb2RpZ24gc3R5
bGUgYSBiaXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaDog
VXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzCisgICAgICAgIGZvciB0aGUgY2hh
bmdlcyB0byBEYXRhUmVmLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDogVXBkYXRlZCBuZWFybHkgZXZlcnkgZnVuY3Rpb24gaW4gdGhpcworICAgICAgICBjbGFz
cyBmb3IgdGhlIGNoYW5nZXMgdG8gRGF0YVJlZiwgdG8gZWxpbWluYXRlIHRoZSBwZWN1bGlhciBu
YW1pbmcgYW5kIHVzZQorICAgICAgICBvdXIgc3RhbmRhcmQgZGF0YSBtZW1iZXIgbmFtaW5nLCBt
X21lbWJlck5hbWUgaW4gYSBjbGFzcywgYW5kIG1lbWJlck5hbWUgaW4gYQorICAgICAgICBzdHJ1
Y3Qgb3Igc3RydWN0LWxpa2UgY2xhc3MgZm9yIHB1YmxpY2x5IGFjY2Vzc2libGUgbWVtYmVycywg
dG8gcGFzcywgdGFrZSwKKyAgICAgICAgYW5kIHJldHVybiBtb3JlIHJlZmVyZW5jZXMgYW5kIHJ2
YWx1ZSByZWZlcmVuY2VzLCBhbmQgdG8gdXNlIG1vZGVybiBmb3IgbG9vcHMuCisgICAgICAgIE90
aGVyIGNoYW5nZXMgbGlzdGVkIGJlbG93IGZ1bmN0aW9uIGJ5IGZ1bmN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRlZmF1bHRTdHlsZSk6IFVzZSBOZXZlckRlc3Ryb3llZCBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcKKyAgICAgICAgb24gdGhlIGhlYXAuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOiBBZGRlZCBhIG5ldyBjb25zdHJ1Y3RvciB0
aGF0IHBlcmZvcm1zCisgICAgICAgIHRoZSByZXBsYWNlIG9wZXJhdGlvbiwgdXNpbmcgYSBjb21i
aW5hdGlvbiBvZiBEYXRhUmVmOjpyZXBsYWNlIGFuZCBzdGQ6OmV4Y2hhbmdlLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlcGxhY2UpOiBBZGRlZC4gQ2FsbHMgdGhlIGFib3ZlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBU
eXBlKTogVXNlIFNFVF9ORVNURURfVkFSIHNvIHdlIGdldCBlcXVhbGl0eQorICAgICAgICBjaGVj
a3Mgb24gdGhpcyBwcm9wZXJ0eSwgZm9yIHRoZSBub3JtYWwgZWZmaWNpZW5jeSBiZW5lZml0Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldERhc2hib2FyZFJlZ2lvbik6IE1vdmVk
IHRoaXMgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFMc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcDog
U2ltaWxhciBjaGFuZ2VzIHRvIFJlbmRlclN0eWxlLmNwcCBhYm92ZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaDogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6Y3Jl
YXRlKTogVGFrZSBhIFJlZiYmIGluc3RlYWQgb2YgYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZVZhbHVlOjpTaGFwZVZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHA6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oOiBEaXR0bzsg
bWFrZSB0aGVtIHB1YmxpYyBhbmQgcmVtb3ZlIHRoZQorICAgICAgICBnZXR0ZXIgZnVuY3Rpb25z
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUpOiBSZW1vdmVkIG5vLWxv
bmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUZpbHRlckRhdGEuY3BwOiBVcGRhdGUgZGF0YSBtZW1iZXIgbmFtZXMuCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVtb3ZlZCBuby1sb25nZXItbmVlZGVkIGNv
bnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNp
emUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdl
KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRh
LmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcDogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcDogRGl0dG8uCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oOiBEaXR0by4KKworICAgICAgICAq
IHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUgc2luY2UgbGF5ZXJzIGFyZSByZWZlcmVu
Y2VzLgorCiAyMDE3LTAxLTA4ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBJbnRyb2R1Y2UgQ1BVKFg4Nl9TU0UyKSBpbnN0ZWFkIG9mIHZhcmlvdXMg
U1NFMiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4YTA2NWYxMzA0MThkYTI3MGI2ZmJhNjcy
ODk1MjllYmFlNGM2M2RhLi4zNWYzMDM4MmNmNmU1YTQ2NTRkNmViNmNjMzVjYjZkNTczN2E4ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDEtMDcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20g
bW9yZSBvZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoTmV0c2NhcGVQbHVnaW5XaWRnZXQ6OmhhbmRsZUV2ZW50KTogUGFzcyBhIHJlZmVyZW5j
ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Fk
ZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzpkYXNoYm9hcmRSZWdpb25zOl0p
OgorICAgICAgICBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5zIFJl
ZiBpbnN0ZWFkIG9mIFJlZlB0ci4KKwogMjAxNy0wMS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgdXNlIGZyb20gImluc3BlY3Rv
ciIsICJwbGF0Zm9ybS9zcWwiLCBhbmQgInBsYXRmb3JtL3RleHQiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzQw
NWI1ZWRiZjUxOTJlY2U1Nzg3NmViOTY4NWEzZTMzMTEyMmUwYi4uMTc3YmRhOGI3NWI2NjdjYjhm
MWQyOTdkZTU0NWY0MzBhOGFlN2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3
LTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UGFzc1JlZlB0ciBmcm9tIG1vcmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjplbmNvZGUpOiBVcGRhdGVkIHNpbmNl
IHRpbWluZyBmdW5jdGlvbgorICAgICAgICByZXR1cm5zIGEgcmF3IHBvaW50ZXIuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj46OmRlY29kZSk6IFVw
ZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAgICAgIHNldHRlcnMgbm93IHRha2VzIGFu
IHJ2YWx1ZSByZWZlcmVuY2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRl
U2Nyb2xsYmFyKTogVXBkYXRlZCBzaW5jZSBhZGRDaGlsZCBub3cgdGFrZXMgYSByZWZlcmVuY2Uu
CisKIDIwMTctMDEtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBQYXNzUmVmUHRyIHVzZSBmcm9tICJpbnNwZWN0b3IiLCAicGxhdGZvcm0vc3FsIiwg
YW5kICJwbGF0Zm9ybS90ZXh0IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDFiZDRkNzdkNmM1NTkxNzAxMzc4
ZGI0YmYwM2Y2ZGRlYTdlNjg5OTUuLmVkZTc1NDM3YTM0ZjNmNWRlOTJmMjUwZDVkMTBkMWZiOGEz
ZTJkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBJ
bmplY3RlZFNjcmlwdEhvc3QmIGltcGwoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEluamVj
dGVkU2NyaXB0SG9zdCY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbmplY3RlZFNjcmlwdEhv
c3QmIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZWQ7IH0KIAogICAgIC8vIEF0dHJpYnV0
ZXMuCiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCA0Yjg2ZGVj
NzFhNzIzNzRlNzExMjNlMjkyNDE2YzkyZjdlNmYzYjdhLi5lYTQzZmYxNWY3YjVmMDdmY2JmMmQ2
YjFiNTNmNjE3YzNkYmViMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVOYW1lLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgUHJpdmF0ZU5hbWUo
UHJpdmF0ZU5hbWUmJikgPSBkZWZhdWx0OwogCi0gICAgU3ltYm9sSW1wbCYgdWlkKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxTeW1ib2xJbXBsJj4obV91aWQuZ2V0KCkpOyB9CisgICAgU3lt
Ym9sSW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAm
b3RoZXIudWlkKCk7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90
aGVyKSBjb25zdCB7IHJldHVybiAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDQ3ZTVm
YTA5NmU4MTYwM2MwOGU1NmJhZjFlOGFiZGRmMDkwMWFiMjUuLmU5NTUzNTJkZmY3YTU1Mjk5OTgw
YTljOWM2N2UyZjNlNzVjNzE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC0xMzMsMTcgKzEzMywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVChtX3B0cik7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigp
IGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3It
PigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUKiBwdHIo
KSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0cigpIHsg
QVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25z
dCB7IEFTU0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KLSAgICBUJiBnZXQoKSB7IEFTU0VS
VChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KLQotICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7
IEFTU0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29u
c3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBwdHIoKSBjb25zdCB7
IEFTU0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQmIGdldCgpIGNvbnN0IHsgQVNT
RVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIG9wZXJhdG9yIFQmKCkgY29uc3QgeyBB
U1NFUlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBSZWY8VD4gcmVwbGFjZShSZWY8VT4mJikgV0FSTl9VTlVTRURfUkVUVVJOOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDZlYjMxNDY5OWFiZDUxNDlhOWQ0YjVmZjllOTE2ODU4NjU0OTgxM2Qu
LjMwODgxZDNiZTI4MWQwMWM3MTMzYTdjNzZmZmViMGY3YmUxZWNlZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yMjc3LDcgKzIyNzcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAogICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1NEUFByb2Nlc3NvclNjcmlwdFJlc291cmNlLmNwcAogCi0gICAg
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21v
Y2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4
IDBiYjQ2ZWJlNDkyZTkwMWU2ODU4NjgzN2UzNzhkY2FiNDA1NzNkZmMuLmUxZTczNWE0MGI1NTBm
YTYxYWY1MWE2YjBlODM3OGE0MDJhYzk5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJMZWdhY3lD
RE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcAppbmRleCBkOGJjN2E1NWMzMDk5OTE4MDUzYzcxM2MyYjZjOThhZTM1
N2RkMWEzLi42NzQ2ZjRlZjRhZjNlYTY4MGNlNGYxMTgzMTcwYTM2NzBkODhmMWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ28K
IAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDog
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCi0gICAgLCBtX3BsYXRmb3JtVXR0
ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCisg
ICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
OjpjcmVhdGUoKnRoaXMpKQogewogICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDVmMTQxOTc1OTU3ZTRmZWQ5YzJkZGNmYzI2Njdi
ZTQyM2FiNThjZjEuLmI1Y2I1MjAwMjM2MTBhYjEzOGQ0NmNlZmUwNDVhYjkxYmMxNGY1MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNs
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICB+U3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKCk7CisgICAgdmlydHVhbCB+U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KQEAgLTYyLDIxICs2
MiwyMSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1VdHRlcmFuY2UtPnN0YXJ0VGltZSgpOyB9CiAgICAgdm9pZCBzZXRTdGFydFRpbWUo
ZG91YmxlIHN0YXJ0VGltZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRTdGFydFRpbWUoc3Rh
cnRUaW1lKTsgfQogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
OjpkZXJlZjsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqIHBsYXRmb3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybVV0dGVyYW5jZS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKwog
ICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0
dGVyYW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0KLSAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0g
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydC5oCmluZGV4IGY5MGY5NmEwZWVhNzNiOWY5YTUxYmI0NTExNDBmMDZkMDNiOTAxNDcuLjdh
NjFiY2FkYjBjM2JjOWIzMDAwZmVjMjE5YzUxNzlhMzU2ZmU3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC00NDksOCArNDQ5LDggQEAgbmFtZXNwYWNl
IERldGFpbCB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYo
Y29uc3QgVCogcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUKj4ocCk7IH0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBpbmxpbmUgVCYgZ2V0UHRyT3JSZWYoY29uc3QgVCYgcCkgeyByZXR1cm4gY29uc3Rf
Y2FzdDxUJj4ocCk7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JS
ZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLmdldCgpKTsg
fQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCY+KHAuZ2V0KCkpOyB9Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0ck9yUmVmKGNvbnN0IFJlZlB0cjxUPiYgcCkgeyByZXR1
cm4gcC5nZXQoKTsgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJl
Zihjb25zdCBSZWY8VD4mIHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDM4NTI5YmI2MWZkNDUyNWJiOTc1
NThiYThkZjNjN2RkZTEzYjc1OGUuLjZmMzc0NjJhMjgxMjExN2IzYmZmZjIzNGEyMzBlYWY5OTc0
NDgyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uQ2xhc3MgRE9N
V3JhcHBlZDsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNET01XcmFwcGVyID0gdHJ1ZTsK
IAotICAgIEltcGxlbWVudGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PEltcGxlbWVudGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CisgICAgSW1w
bGVtZW50YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZXcmFwcGVkKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTRE9NV3JhcHBlcjxJbXBsZW1lbnRhdGlvbkNsYXNzPiwgbV93cmFwcGVkKTsgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcAppbmRleCBlMTJhMjQwZDdlNjg3YjljYTY5NjQwZDgyZDZjNDM0ZmU3OGQ2
YTQyLi5hZWVjYzcyNTI0ZThkMGQ1ZGQyNGNhNDlmOWM1MmQyYTg4MTYwZDYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTUz
LDEwICs1Myw5IEBAIFNjcmlwdE1vZHVsZUxvYWRlcjo6U2NyaXB0TW9kdWxlTG9hZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCkKIFNjcmlwdE1vZHVsZUxvYWRlcjo6flNjcmlwdE1vZHVsZUxvYWRlcigp
CiB7CiAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX2xvYWRlcnMpCi0gICAgICAgIGNvbnN0X2Nh
c3Q8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyJj4obG9hZGVyLmdldCgpKS5jbGVhckNsaWVudCgp
OworICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7CiB9CiAKLQogc3RhdGljIGJvb2wgaXNS
b290TW9kdWxlKEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICByZXR1cm4g
aW1wb3J0ZXJNb2R1bGVLZXkuaXNTeW1ib2woKSB8fCBpbXBvcnRlck1vZHVsZUtleS5pc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4
IDA4ODY0ZmExYTY4ZTQxYWM3ZWRjZGZkZTdkYjRhYWQwYjFmNDBlMTUuLjVmMjI1Zjc0YWJiNTUy
OTBhY2YxMTY5MmM2NmNmYjgzYjdiYjM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTE0NCwxOCArMTQ0LDE2IEBAIHN0YXRpYyBMZW5ndGggY29u
dmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25E
YXRhLCBjCiBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aFNp
emUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgICAgIHJldHVybiB7
IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07CiAKLSAgICBQYWlyKiBwYWlyID0gdmFsdWUt
PnBhaXJWYWx1ZSgpOwotICAgIHJldHVybiBMZW5ndGhTaXplKGNvbnZlcnRUb0xlbmd0aChjb252
ZXJzaW9uRGF0YSwgcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0
YSwgcGFpci0+c2Vjb25kKCkpKTsKKyAgICBhdXRvJiBwYWlyID0gKnZhbHVlLT5wYWlyVmFsdWUo
KTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuZmly
c3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5zZWNvbmQoKSkgfTsK
IH0KIAogc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNv
b3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsKLSAgICBCYXNpY1NoYXBlQ2VudGVyQ29vcmRp
bmF0ZTo6RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICBMZW5ndGggb2Zmc2V0ID0gTGVuZ3RoKDAs
IEZpeGVkKTsKLQogICAgIENTU1ZhbHVlSUQga2V5d29yZCA9IENTU1ZhbHVlVG9wOworICAgIExl
bmd0aCBvZmZzZXQgeyAwLCBGaXhlZCB9OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIGtleXdv
cmQgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUlEKCkpCkBA
IC0xNjYsNiArMTY0LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZl
cnRUb0NlbnRlckNvb3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICB9IGVsc2UKICAg
ICAgICAgb2Zmc2V0ID0gY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCB2YWx1ZSk7CiAK
KyAgICBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAg
ICBzd2l0Y2ggKGtleXdvcmQpIHsKICAgICBjYXNlIENTU1ZhbHVlVG9wOgogICAgIGNhc2UgQ1NT
VmFsdWVMZWZ0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAyZmJlOWMxNGQ0MmVjMWNkYzZmYTE4MjNiODVjYzNlNDcyMjM0
Mjc4Li5jZjAyMjQ3Zjk2YzViY2Y5YTMyMDdmMWRjNjEyOTA5YjU3YTczOTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgWmFjayBSdXNpbiA8emFja0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3Yg
PGFwQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3
ZWJraXRAbmlja3NoYW5rcy5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2VuY2hhLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02MDYsMTEgKzYwNiwxMCBAQCBzdGF0aWMgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5ndGhC
b3gmIGJveCkKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBl
YXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9v
bCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBob3Jpem9udGFsUmVwZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZSh2YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSkpOwotCisgICAgYXV0
byBob3Jpem9udGFsUmVwZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2
YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSkpOwogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxSZXBlYXQ7CiAgICAgaWYgKGltYWdlLmhvcml6b250
YWxSdWxlKCkgPT0gaW1hZ2UudmVydGljYWxSdWxlKCkpCi0gICAgICAgIHZlcnRpY2FsUmVwZWF0
ID0gaG9yaXpvbnRhbFJlcGVhdDsKKyAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFs
UmVwZWF0LmNvcHlSZWYoKTsKICAgICBlbHNlCiAgICAgICAgIHZlcnRpY2FsUmVwZWF0ID0gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2Uu
dmVydGljYWxSdWxlKCkpKTsKICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBh
aXI6OmNyZWF0ZShXVEZNb3ZlKGhvcml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZlcnRpY2FsUmVw
ZWF0KSkpOwpAQCAtNjg4LDIwICs2ODcsMjAgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVG
b3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QKICAg
ICByZXR1cm4gQ1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUoZGlyZWN0aW9uLnJlbGVhc2VOb25OdWxs
KCksIG9mZnNldC5yZWxlYXNlTm9uTnVsbCgpLCB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHJlZmxl
Y3Rpb24tPm1hc2soKSkpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9z
aXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5
ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVl
TGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBjb25zdCBGaWxsTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0g
ICAgYXV0byBwb3NpdGlvbkxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7Ci0gICAgaWYgKGxheWVyLT5pc0JhY2tncm91bmRYT3JpZ2luU2V0KCkpIHsKKyAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKGxh
eWVyLmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHBy
b3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwg
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBv
c2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVW
YWx1ZShsYXllci0+YmFja2dyb3VuZFhPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWE9y
aWdpbigpKSk7CiAgICAgfQotICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci0+eFBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAg
aWYgKGxheWVyLT5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKKyAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci54UG9zaXRpb24oKSwgc3R5bGUp
KTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5kWU9yaWdpblNldCgpKSB7CiAgICAgICAgIEFT
U0VSVChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIHx8IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pOwotICAgICAgICBwb3NpdGlv
bkxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUo
bGF5ZXItPmJhY2tncm91bmRZT3JpZ2luKCkpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUobGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4o
KSkpOwogICAgIH0KLSAgICBwb3NpdGlvbkxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgobGF5ZXItPnlQb3NpdGlvbigpLCBzdHlsZSkpOwotICAgIHJldHVy
biBwb3NpdGlvbkxpc3Q7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVG
b3JMZW5ndGgobGF5ZXIueVBvc2l0aW9uKCksIHN0eWxlKSk7CisgICAgcmV0dXJuIGxpc3Q7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC03NjUsMzkgKzc2
NCwzOCBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhdXRvT3Jab29tQWRqdXN0ZWRW
YWx1ZShMZW5ndGggbGVuZ3RoLCBjb25zdCBSZW5kZQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCksIHN0eWxlKTsKIH0KIAotc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5n
dGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFk
aXVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHBl
cmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSkpOwotICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy5o
ZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFkanVz
dGVkVmFsdWUocmFkaXVzLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50
YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMuaGVpZ2h0LCBzdHlsZSkpOwogICAgIHJldHVy
biBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
K3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChyYWRp
dXMud2lkdGgoKSA9PSByYWRpdXMuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBwZXJjZW50YWdl
T3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMud2lkdGgoKSwgc3R5bGUpOwotCi0gICAgcmV0dXJu
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhyYWRpdXMsIHN0eWxlKTsKKyAgICBpZiAocmFk
aXVzLndpZHRoID09IHJhZGl1cy5oZWlnaHQpCisgICAgICAgIHJldHVybiBwZXJjZW50YWdlT3Ja
b29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMud2lkdGgsIHN0eWxlKTsKKyAgICByZXR1cm4gYm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1Zh
bHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRlclJhZGl1c1Nob3J0aGFuZFZh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7Ci0gICAgYm9vbCBzaG93SG9yaXpvbnRhbEJv
dHRvbUxlZnQgPSBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCkgIT0gc3R5bGUu
Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLndpZHRoKCk7Ci0gICAgYm9vbCBzaG93SG9yaXpvbnRh
bEJvdHRvbVJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygp
LndpZHRoKCkpOwotICAgIGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9u
dGFsQm90dG9tUmlnaHQgfHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAh
PSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7CisgICAgYm9vbCBzaG93SG9y
aXpvbnRhbEJvdHRvbUxlZnQgPSBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoICE9
IHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aDsKKyAgICBib29sIHNob3dIb3Jp
em9udGFsQm90dG9tUmlnaHQgPSBzaG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1
cygpLndpZHRoKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsVG9wUmlnaHQgPSBzaG93SG9yaXpv
bnRhbEJvdHRvbVJpZ2h0IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoICE9
IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCk7CiAKLSAgICBib29sIHNob3dWZXJ0
aWNhbEJvdHRvbUxlZnQgPSBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9
IHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKTsKLSAgICBib29sIHNob3dW
ZXJ0aWNhbEJvdHRvbVJpZ2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFk
aXVzKCkuaGVpZ2h0KCkpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsVG9wUmlnaHQgPSBzaG93VmVy
dGljYWxCb3R0b21SaWdodCB8fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCkpOworICAgIGJvb2wgc2hv
d1ZlcnRpY2FsQm90dG9tTGVmdCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0
ICE9IHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQ7CisgICAgYm9vbCBzaG93
VmVydGljYWxCb3R0b21SaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0ICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRp
dXMoKS5oZWlnaHQpOworICAgIGJvb2wgc2hvd1ZlcnRpY2FsVG9wUmlnaHQgPSBzaG93VmVydGlj
YWxCb3R0b21SaWdodCB8fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0g
c3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiB0b3BMZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxl
LmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IHRvcFJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0
b21SaWdodFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90
dG9tTGVmdFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJC
b3R0b21MZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcExlZnRSYWRpdXMgPSBib3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZSk7
CisgICAgYXV0byB0b3BSaWdodFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHls
ZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCBzdHlsZSk7CisgICAgYXV0byBib3R0b21SaWdodFJh
ZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLCBzdHlsZSk7CisgICAgYXV0byBib3R0b21MZWZ0UmFkaXVzID0gYm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpOwogCi0g
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gaG9yaXpvbnRhbFJhZGlpID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gaG9yaXpvbnRhbFJhZGlpID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGhvcml6b250YWxSYWRpaS0+YXBw
ZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDApKTsKICAgICBpZiAoc2hvd0hvcml6b250YWxUb3BS
aWdodCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcFJpZ2h0UmFkaXVzLT5p
dGVtKDApKTsKQEAgLTgwNiw5ICs4MDQsOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0
Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IGlmIChzaG93SG9yaXpvbnRhbEJvdHRvbUxlZnQpCiAgICAgICAgIGhvcml6b250YWxSYWRpaS0+
YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDApKTsKIAotICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGhvcml6b250YWxSYWRpaS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBsaXN0LT5hcHBlbmQo
V1RGTW92ZShob3Jpem9udGFsUmFkaWkpKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZl
cnRpY2FsUmFkaWlMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGF1dG8gdmVydGljYWxSYWRpaUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAgICAgdmVydGljYWxSYWRpaUxpc3QtPmFwcGVuZCgqdG9wTGVmdFJhZGl1cy0+
aXRlbSgxKSk7CiAgICAgaWYgKHNob3dWZXJ0aWNhbFRvcFJpZ2h0KQogICAgICAgICB2ZXJ0aWNh
bFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BSaWdodFJhZGl1cy0+aXRlbSgxKSk7CkBAIC04MTcsOCAr
ODE1LDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFu
ZFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBpZiAoc2hvd1ZlcnRpY2FsQm90
dG9tTGVmdCkKICAgICAgICAgdmVydGljYWxSYWRpaUxpc3QtPmFwcGVuZCgqYm90dG9tTGVmdFJh
ZGl1cy0+aXRlbSgxKSk7CiAKLSAgICBpZiAoIXZlcnRpY2FsUmFkaWlMaXN0LT5lcXVhbHMoZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0PigqbGlzdC5nZXQoKS5pdGVtKDApKSkpCi0gICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKHZlcnRpY2FsUmFkaWlMaXN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGlm
ICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpsaXN0
LT5pdGVtKDApKSkpCisgICAgICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKHZlcnRpY2FsUmFkaWlM
aXN0KSk7CiAKICAgICByZXR1cm4gbGlzdDsKIH0KQEAgLTg4Nyw3ICs4ODUsNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZQogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gcHJpbnQgb3V0IGluZGl2
aWR1YWwgZnVuY3Rpb25zIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM5MjQpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKG1hdHJpeFRyYW5zZm9ybVZhbHVlKHRyYW5zZm9y
bSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNm
b3JtLCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCkBAIC05MzQsNyAr
OTMyLDcgQEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZp
bHRlcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGMKIAogICAgICAgICBpZiAoZmlsdGVyT3Bl
cmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAg
ICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2Fz
dDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocmVmZXJlbmNlT3Bl
cmF0aW9uLnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24u
dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4gZmlsdGVyVmFsdWU7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi50eXBlKCkpIHsKQEAgLTk5Niw3ICs5OTQsNyBA
QCBSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYwogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlID0g
Q1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChm
aWx0ZXJWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChm
aWx0ZXJWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKQEAgLTExNjYsNyArMTE2NCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBSCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRy
YWNrU2l6ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGFkZFZhbHVlc0Zvck5hbWVkR3Jp
ZExpbmVzQXRJbmRleChjb2xsZWN0b3IsIGksIGxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgbGlz
dC5nZXQoKS5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHRyYWNrU2l6ZXNb
aV0sIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JH
cmlkVHJhY2tTaXplKHRyYWNrU2l6ZXNbaV0sIHN0eWxlKSk7CiAgICAgICAgIH0KICAgICAgICAg
aW5zZXJ0aW9uSW5kZXggPSB0cmFja1NpemVzLnNpemUoKTsKICAgICB9CkBAIC0xMTg3LDEzICsx
MTg1LDEzIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzU3BhbigpKSB7Ci0g
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVTcGFuKSk7Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTcGFuKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24uc3BhblBvc2l0aW9uKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKIAogICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLmlzTnVsbCgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUocG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJ
TkcpKTsKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KICNlbmRpZgpAQCAtMTIwNywxNCAr
MTIwNSwxNCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlW
YWx1ZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikKICAgICByZXR1cm4gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoYW5pbWF0aW9u
LnByb3BlcnR5KCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAKLXN0YXRp
YyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmlt
YXRpb25MaXN0KiBhbmltTGlzdCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9u
UHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFu
aW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUo
KTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVHJhbnNpdGlvblBy
b3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOworICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24o
aSkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGwpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKQEAgLTEyNDIsNyAr
MTI0MCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvclNjcm9sbFNuYXBBbGln
bm1lbnQoY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhbGlnCiAKICNlbmRpZgogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxsQ2hhbmdlRGF0
YSogd2lsbENoYW5nZURhdGEpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB3aWxsQ2hhbmdlUHJvcGVy
dHlWYWx1ZShjb25zdCBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZURhdGEpCiB7CiAgICAgYXV0
byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBpZiAoIXdp
bGxDaGFuZ2VEYXRhIHx8ICF3aWxsQ2hhbmdlRGF0YS0+bnVtRmVhdHVyZXMoKSkKQEAgLTEyNTMs
MTMgKzEyNTEsMTMgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZ2V0V2lsbENoYW5nZVByb3BlcnR5
VmFsdWUoY29uc3QgV2lsbENoYW5nZURhdGEqIHdpbGxDaGFuZ2UKICAgICAgICAgV2lsbENoYW5n
ZURhdGE6OkZlYXR1cmVQcm9wZXJ0eVBhaXIgZmVhdHVyZSA9IHdpbGxDaGFuZ2VEYXRhLT5mZWF0
dXJlQXQoaSk7CiAgICAgICAgIHN3aXRjaCAoZmVhdHVyZS5maXJzdCkgewogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpTY3JvbGxQb3NpdGlvbjoKLSAgICAgICAgICAgIGxpc3QuZ2V0KCku
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTY3JvbGxQ
b3NpdGlvbikpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbikpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6OkNvbnRlbnRzOgotICAgICAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUNvbnRlbnRzKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRlbnRzKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXaWxsQ2hhbmdlRGF0YTo6UHJvcGVydHk6Ci0gICAgICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKGZlYXR1
cmUuc2Vjb25kKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShmZWF0dXJlLnNlY29uZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6OkludmFsaWQ6CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTE0NTYsMzkgKzE0NTQsMzkgQEAgc3RhdGljIFJlZjxDU1NWYWx1
ZT4gZm9udFZhcmlhbnRFYXN0QXNpYW5Qcm9wZXJ0eVZhbHVlKEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWEKICAgICByZXR1cm4gV1RGTW92ZSh2YWx1ZUxpc3QpOwogfQogCi1zdGF0aWMgUmVmPENT
U1ZhbHVlTGlzdD4gZ2V0RGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkK
K3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBkZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0KQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCk7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUg
dGhhdCBpbml0aWFsQW5pbWF0aW9uRGVsYXkoKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25z
IGFuZCBhbmltYXRpb25zCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1MpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
dXJhdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGR1cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3Qp
CiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsK
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAg
ICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxp
c3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0
IGluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMg
YW5kIGFuaW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUykpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykp
OwogICAgIH0KICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3Jl
YXRlVGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rp
b24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0
IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbikKIHsKLSAgICBzd2l0Y2ggKHRpbWluZ0Z1
bmN0aW9uLT50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkgewog
ICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKLSAgICAgICAg
YXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNf
Y2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOwog
ICAgICAgICBpZiAoZnVuY3Rpb24udGltaW5nRnVuY3Rpb25QcmVzZXQoKSAhPSBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOjpDdXN0b20pIHsKICAgICAgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJ
ZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rpb24udGltaW5n
RnVuY3Rpb25QcmVzZXQoKSkgewpAQCAtMTUxMSw1OSArMTUwOSw2MCBAQCBzdGF0aWMgUmVmPENT
U1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdAogICAgICAgICByZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlOjpjcmVhdGUoZnVuY3Rpb24ueDEoKSwgZnVuY3Rpb24ueTEoKSwgZnVuY3Rpb24ueDIoKSwg
ZnVuY3Rpb24ueTIoKSk7CiAgICAgfQogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlN0ZXBzRnVu
Y3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rp
b24gPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rp
b24pOwogICAgICAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUo
ZnVuY3Rpb24ubnVtYmVyT2ZTdGVwcygpLCBmdW5jdGlvbi5zdGVwQXRTdGFydCgpKTsKICAgICB9
CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3ByaW5nRnVuY3Rpb246IHsKLSAgICAgICAgYXV0
byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24qPih0
aW1pbmdGdW5jdGlvbik7CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJldHVy
biBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubWFzcygpLCBm
dW5jdGlvbi5zdGlmZm5lc3MoKSwgZnVuY3Rpb24uZGFtcGluZygpLCBmdW5jdGlvbi5pbml0aWFs
VmVsb2NpdHkoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh0aW1pbmdG
dW5jdGlvbi0+dHlwZSgpID09IFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbik7CisgICAg
ICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlvbi50eXBlKCkgPT0gVGltaW5nRnVuY3Rpb246OkxpbmVh
ckZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZWFyKTsKICAgICB9CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxp
c3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRpbWluZ0Z1bmN0aW9uVmFs
dWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYW5p
bUxpc3QtPmFuaW1hdGlvbihpKS50aW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbUxpc3QtPmFuaW1h
dGlvbihpKS50aW1pbmdGdW5jdGlvbigpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIC8vIE5vdGUg
dGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKSBpcyB1c2VkIGZvciBib3RoIHRy
YW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0
ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5n
ZXQoKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShB
bmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9
CiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLXN0YXRpYyBSZWY8Q1NTVmFs
dWU+IGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25UcmlnZ2VyKiB0
cmlnZ2VyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCisKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+
IGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiB0cmln
Z2VyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoICh0cmlnZ2VyLT50
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRyaWdnZXIudHlwZSgpKSB7CiAgICAgY2FzZSBBbmltYXRp
b25UcmlnZ2VyOjpBbmltYXRpb25UcmlnZ2VyVHlwZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5
cGU6IHsKLSAgICAgICAgYXV0byYgc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciA9IGRvd25jYXN0PFNj
cm9sbEFuaW1hdGlvblRyaWdnZXI+KCp0cmlnZ2VyKTsKKyAgICAgICAgYXV0byYgc2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KHRyaWdnZXIp
OwogICAgICAgICBpZiAoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLmlzQXV0bygp
KQogICAgICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3Jl
YXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
ci5zdGFydFZhbHVlKCksIHN0eWxlKSk7CiAgICAgICAgIHJldHVybiBDU1NBbmltYXRpb25Ucmln
Z2VyU2Nyb2xsVmFsdWU6OmNyZWF0ZSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHNj
cm9sbEFuaW1hdGlvblRyaWdnZXIuc3RhcnRWYWx1ZSgpLCBzdHlsZSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKHNjcm9sbEFuaW1hdGlvblRyaWdnZXIuZW5kVmFsdWUoKSwgc3R5bGUp
KTsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRyaWdnZXItPnR5cGUoKSA9
PSBBbmltYXRpb25UcmlnZ2VyOjpBbmltYXRpb25UcmlnZ2VyVHlwZTo6QXV0b0FuaW1hdGlvblRy
aWdnZXJUeXBlKTsKKyAgICAgICAgQVNTRVJUKHRyaWdnZXIudHlwZSgpID09IEFuaW1hdGlvblRy
aWdnZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOwog
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICB9CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0
PiBnZXRBbmltYXRpb25UcmlnZ2VyVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3Qs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBhbmlt
YXRpb25UcmlnZ2VyVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGFuaW1MaXN0LT5hbmltYXRp
b24oaSkudHJpZ2dlcigpLmdldCgpLCBzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZSgqYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmln
Z2VyKCksIHN0eWxlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNy
ZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShBbmltYXRpb246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0
KCksIHN0eWxlKSk7Ci0KKyAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdn
ZXJWYWx1ZShBbmltYXRpb246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CisKICNlbmRpZgogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVM
aW5lQm94Q29udGFpblZhbHVlKHVuc2lnbmVkIGxpbmVCb3hDb250YWluKQpAQCAtMTcwMCw3ICsx
Njk5LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1Rv
Q1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3Jl
ZC4KLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpKTsKICAgICBpZiAodGV4dERlY29yYXRpb24gJiBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQpAQCAtMTcxNCw3ICsxNzEzLDcgQEAgc3RhdGljIFJlZjxD
U1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNv
cmF0aW9uKQogCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICByZXR1cm4g
bGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBz
dGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1Zh
bHVlKFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSkKQEAgLTE3NTgsNyAr
MTc1Nyw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFn
c1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICBBU1NFUlQoISgodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpICYmICh0ZXh0RW1waGFzaXNQ
b3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIpKSk7CiAgICAgQVNTRVJUKCEoKHRl
eHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0KSAmJiAodGV4dEVt
cGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkpOwogICAgIGF1dG8m
IGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAg
ICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU92ZXIpKTsKICAgICBpZiAodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFz
aXNQb3NpdGlvblVuZGVyKQpAQCAtMTc2NywxNiArMTc2NiwxNSBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1ZhbHVlKFRleHRFbXBoYXNpc1Bv
c2l0aW9uCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTGVmdCkpOwogICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUmlnaHQpKTsKLQogICAgIGlmICghbGlz
dC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgcmV0dXJuIGxpc3QucmVsZWFzZU5vbk51bGwoKTsK
KyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gaGFu
Z2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZShIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1bmN0
dWF0aW9uKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGhhbmdpbmdQdW5jdHVhdGlvbiAmIEZpcnN0SGFu
Z2luZ1B1bmN0dWF0aW9uKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZpcnN0KSk7CiAgICAgaWYgKGhhbmdpbmdQdW5jdHVh
dGlvbiAmIEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9uKQpAQCAtMTc4Nyw3ICsxNzg1LDcgQEAg
c3RhdGljIFJlZjxDU1NWYWx1ZT4gaGFuZ2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZShIYW5naW5n
UHVuY3R1YXRpb24gaGFuZ2luZ1B1bmMKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMYXN0KSk7CiAgICAgaWYgKCFsaXN0LT5s
ZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogICAgIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmls
bFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGVh
dCkKQEAgLTE4MDMsOCArMTgwMSw4IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxSZXBlYXRU
b0NTU1ZhbHVlKEVGaWxsUmVwZWF0IHhSZXBlYXQsIEVGaWxsUmVwZWF0IHlSZXBlCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUmVwZWF0
WSk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHhSZXBl
YXQpKTsKLSAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeVJl
cGVhdCkpOworICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVh
dCkpOworICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeVJlcGVhdCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCkBAIC0xODI3LDQwICsxODI1LDQwIEBA
IHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYg
ZmlsbFNpemUsIGNvbnN0IFJlbmRlclN0CiAgICAgaWYgKGZpbGxTaXplLnR5cGUgPT0gQ292ZXIp
CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUNvdmVyKTsKIAotICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodCgp
LmlzQXV0bygpKQotICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChmaWxsU2l6ZS5zaXplLndpZHRoKCksIHN0eWxlKTsKKyAgICBpZiAoZmlsbFNpemUuc2l6ZS5o
ZWlnaHQuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGZpbGxTaXplLnNpemUud2lkdGgsIHN0eWxlKTsKIAogICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0LmdldCgpLmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUud2lkdGgoKSwg
c3R5bGUpKTsKLSAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGZpbGxTaXplLnNpemUuaGVpZ2h0KCksIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCwgc3R5
bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChm
aWxsU2l6ZS5zaXplLmhlaWdodCwgc3R5bGUpKTsKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKHN0eWxlLT5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORyk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlVmFsdWUoc3R5bGUuY29udGVudEFsdFRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpOwogfQogICAgIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0
PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0
byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgZm9yIChjb25z
dCBDb250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsgY29udGVu
dERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgeworICAgIGZvciAoYXV0
byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVu
dERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChpczxDb3VudGVyQ29u
dGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29u
dGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Q09VTlRFUl9OQU1FKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3Vu
dGVyKCkuaWRlbnRpZmllcigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NPVU5URVJfTkFNRSkp
OwogICAgICAgICBlbHNlIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQot
ICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4o
KmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOworICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2UoKS5jc3NW
YWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigqY29udGVudERh
dGEpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnRE
YXRhKS50ZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAg
IGlmIChzdHlsZS0+aGFzRmxvd0Zyb20oKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICBpZiAoc3R5bGUuaGFzRmxvd0Zyb20oKSkKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5yZWdpb25UaHJl
YWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICByZXR1cm4gbGlzdDsK
IH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0aWMgUmVmPENTU1Zh
bHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKIHsKLSAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBtYXAg
PSBzdHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKTsKKyAgICBhdXRvKiBtYXAgPSBzdHlsZS5jb3Vu
dGVyRGlyZWN0aXZlcygpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKIApA
QCAtMTg4MywxNCArMTg4MSwyMSBAQCBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVy
dHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9l
cyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3Bl
cnR5TmFtZShwcm9wZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBmb250
RmFtaWx5RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZS0+Zm9udENhc2NhZGUoKS5m
YW1pbHlDb3VudCgpOyArK2kpCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHZhbHVlRm9yRmFt
aWx5KHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHN0eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5Q291bnQoKTsgKytpKQorICAg
ICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUuZm9udENhc2NhZGUoKS5mYW1p
bHlBdChpKSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBm
b250RmFtaWx5RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBpZiAo
c3R5bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpID09IDEpCisgICAgICAgIHJldHVybiB2
YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KDApKTsKKyAgICByZXR1
cm4gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoc3R5bGUpOworfQorCiBzdGF0aWMgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoID0gc3R5bGUubGluZUhlaWdodCgpOwpAQCAtMTkxMSwy
MDMgKzE5MTYsMjAzIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTaXplRnJv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShzdHlsZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwgc3R5bGUp
OwogfQogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Zm9udFN0eWxlRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAo
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQorICAgIGlmIChzdHlsZS5mb250RGVz
Y3JpcHRpb24oKS5pdGFsaWMoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSXRhbGljKTsKICAgICByZXR1cm4g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFu
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQorICAgIGlm
IChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgp
KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudENvbW1vbkxpZ2F0dXJlcygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCkpIHsKICAgICBjYXNlIEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9u
dFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb21tb25M
aWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29tbW9uTGlnYXR1cmVzKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vQ29tbW9uTGlnYXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnREaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3Jt
YWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCku
YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBz
d2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJl
cygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50SGlzdG9y
aWNhbExpZ2F0dXJlcygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFs
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6Ci0g
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSGlzdG9yaWNhbExpZ2F0dXJlcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
SGlzdG9yaWNhbExpZ2F0dXJlcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0hpc3RvcmljYWxM
aWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRl
cygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6Ci0gICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGV4dHVhbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250ZXh0dWFs
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVhbCkpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb0NvbnRleHR1YWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNo
IChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRQb3NpdGlvbigpKSB7CiAgICAgY2Fz
ZSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRQb3NpdGlvbjo6U3Vic2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVN1YikpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdWIpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudFBvc2l0aW9uOjpTdXBlcnNjcmlwdDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVTdXBlcikpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdXBlcikpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJp
YW50Q2FwcygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q2FwcygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6OlNtYWxsOgotICAgICAgICBsaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNtYWxsQ2FwcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFsbENhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6OkFsbFNtYWxsOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGxTbWFsbENhcHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6
OlBldGl0ZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQZXRpdGVDYXBzKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250
VmFyaWFudENhcHM6OkFsbFBldGl0ZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGxQZXRp
dGVDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6OlVuaWNhc2U6Ci0gICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlVW5pY2FzZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmljYXNlKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpUaXRsaW5nOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVRpdGxpbmdDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRp
dGxpbmdDYXBzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRmlndXJlKCkpIHsKKyAgICBzd2l0Y2gg
KHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRmlndXJlKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVMaW5pbmdOdW1zKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmlu
Z051bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGaWd1
cmU6Ok9sZFN0eWxlTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPbGRzdHlsZU51
bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT2xkc3R5bGVOdW1zKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRO
dW1lcmljU3BhY2luZygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52
YXJpYW50TnVtZXJpY1NwYWNpbmcoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3Bh
Y2luZzo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJp
Y1NwYWNpbmc6OlByb3BvcnRpb25hbE51bWJlcnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
UHJvcG9ydGlvbmFsTnVtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6
VGFidWxhck51bWJlcnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGFidWxhck51bXMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlVGFidWxhck51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNG
cmFjdGlvbigpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
TnVtZXJpY0ZyYWN0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9u
OjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJh
Y3Rpb246OkRpYWdvbmFsRnJhY3Rpb25zOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpYWdv
bmFsRnJhY3Rpb25zKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OlN0
YWNrZWRGcmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3RhY2tlZEZyYWN0aW9u
cykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlh
bnROdW1lcmljT3JkaW5hbCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50TnVtZXJpY09yZGluYWwoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmlj
T3JkaW5hbDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVt
ZXJpY09yZGluYWw6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPcmRpbmFsKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTbGFzaGVk
WmVybygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVt
ZXJpY1NsYXNoZWRaZXJvKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRa
ZXJvOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmlj
U2xhc2hlZFplcm86OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbGFzaGVkWmVybykp
OworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbGFzaGVkWmVybykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50QWx0ZXJu
YXRlcygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50QWx0
ZXJuYXRlcygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEFsdGVybmF0ZXM6Okhpc3RvcmljYWxG
b3JtczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVIaXN0b3JpY2FsRm9ybXMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlSGlzdG9yaWNhbEZvcm1zKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5W
YXJpYW50KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50KCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFu
dDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWFudDo6SmlzNzg6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzNzgpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlSmlzNzgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFy
aWFudEVhc3RBc2lhblZhcmlhbnQ6OkppczgzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUpp
czgzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczgzKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM5MDoKLSAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVKaXM5MCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM5MCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzMDQ6Ci0g
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzMDQpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlz
MDQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlh
bnQ6OlNpbXBsaWZpZWQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU2ltcGxpZmllZCkpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpUcmFkaXRpb25hbDoKLSAgICAgICAgbGlz
dC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVUcmFkaXRpb25hbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUcmFkaXRp
b25hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgeworICAgIHN3aXRjaCAoc3R5
bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpGdWxsOgotICAgICAgICBsaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZUZ1bGxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGdWxsV2lkdGgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpQcm9wb3J0
aW9uYWw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUHJvcG9ydGlvbmFsV2lkdGgpKTsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUHJvcG9ydGlvbmFsV2lkdGgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RB
c2lhblJ1YnkoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFu
dEVhc3RBc2lhblJ1YnkoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpO
b3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5
OjpZZXM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVieSkpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVSdWJ5KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogfQogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CisgICAgc3dp
dGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewogICAgIGNhc2UgRm9udFdl
aWdodDEwMDoKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMTAwKTsKICAgICBjYXNlIEZvbnRXZWlnaHQyMDA6CkBA
IC0yMTM4LDE5ICsyMTQzLDE5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRTeW50aGVzaXNG
cm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChzdHlsZS5mb250RGVz
Y3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzU3R5bGUpCi0gICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlU3R5bGUpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3R5bGUpKTsK
ICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygpICYgRm9udFN5
bnRoZXNpc1dlaWdodCkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVXZWlnaHQpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlV2VpZ2h0KSk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LmZvbnRTeW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTbWFsbENhcHMpCi0gICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7Ci0gICAgcmV0dXJuIFJlZjxDU1NWYWx1ZT4obGlzdC5n
ZXQoKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiB0eXBlZGVmIGNvbnN0IExlbmd0aCYgKFJlbmRlclN0eWxlOjoqUmVu
ZGVyU3R5bGVMZW5ndGhHZXR0ZXIpKCkgY29uc3Q7CiB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRl
ckJveE1vZGVsT2JqZWN0OjoqUmVuZGVyQm94Q29tcHV0ZWRDU1NWYWx1ZUdldHRlcikoKSBjb25z
dDsKIAogdGVtcGxhdGU8UmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyLCBSZW5k
ZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyIGNvbXB1dGVkQ1NTVmFsdWVHZXR0ZXI+Ci1pbmxp
bmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAg
IExlbmd0aCB1bnpvb216ZWRMZW5ndGggPSAoc3R5bGUuKmxlbmd0aEdldHRlcikoKTsKICAgICBp
ZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIpIHx8IHVuem9vbXplZExlbmd0aC5pc0ZpeGVkKCkp
CkBAIC0yMTU5LDExICsyMTY0LDkgQEAgaW5saW5lIFJlZlB0cjxDU1NWYWx1ZT4gem9vbUFkanVz
dGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYKIH0KIAogdGVt
cGxhdGU8UmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyPgotaW5saW5lIGJvb2wg
cGFkZGluZ09yTWFyZ2luSXNSZW5kZXJlckRlcGVuZGVudChjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKIHsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhKHN0eWxlICYmIChzdHlsZS0+Kmxl
bmd0aEdldHRlcikoKS5pc0ZpeGVkKCkpOworICAgIHJldHVybiByZW5kZXJlciAmJiBzdHlsZSAm
JiByZW5kZXJlci0+aXNCb3goKSAmJiAhKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlzRml4ZWQo
KTsKIH0KIAogc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvUGFnZUJyZWFrKEJyZWFrQmV0d2Vl
biB2YWx1ZSkKQEAgLTI0NDUsMTEgKzI0NDgsMTEgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KGNvbnN0IFN0eWxlU2UK
ICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAg
IGF1dG8gcmVzdWx0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IGlmIChkYXRhLnBvc2l0aW9uVHlwZSgpID09IExlZ2FjeVBvc2l0aW9uKQotICAgICAgICByZXN1
bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVMZWdhY3kpKTsKLSAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOworICAgIHJlc3VsdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICBp
ZiAoZGF0YS5wb3NpdGlvbigpID49IEl0ZW1Qb3NpdGlvbkNlbnRlciAmJiBkYXRhLm92ZXJmbG93
KCkgIT0gT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0KQotICAgICAgICByZXN1bHQuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKLSAgICBBU1NF
UlQocmVzdWx0LmdldCgpLmxlbmd0aCgpIDw9IDIpOworICAgICAgICByZXN1bHQtPmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJl
c3VsdC0+bGVuZ3RoKCkgPD0gMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ1OCwy
MSArMjQ2MSwyMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JDb250ZW50UG9z
aXRpb25BbmREaXN0cmlidXRpb25XaXRoT3ZlcmZsb3dBbGlnbgogICAgIGF1dG8mIGNzc1ZhbHVl
UG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEuZGlzdHJpYnV0
aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEuZGlzdHJpYnV0aW9uKCkpKTsK
KyAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEuZGlz
dHJpYnV0aW9uKCkpKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSA9PSBDb250ZW50RGlz
dHJpYnV0aW9uRGVmYXVsdCB8fCBkYXRhLnBvc2l0aW9uKCkgIT0gQ29udGVudFBvc2l0aW9uTm9y
bWFsKSB7CiAgICAgICAgIGJvb2wgZ3JpZEVuYWJsZWQgPSBmYWxzZTsKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQogICAgICAgICBncmlkRW5hYmxlZCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpOwogI2VuZGlmCiAg
ICAgICAgIGlmIChkYXRhLnBvc2l0aW9uKCkgIT0gQ29udGVudFBvc2l0aW9uTm9ybWFsIHx8IGdy
aWRFbmFibGVkKQotICAgICAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoZGF0YS5wb3NpdGlvbigpKSk7CisgICAgICAgICAgICByZXN1bHQtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5wb3NpdGlvbigpKSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUobm9ybWFsQmVoYXZp
b3JWYWx1ZUlEKSk7CiAgICAgfQogICAgIGlmICgoZGF0YS5wb3NpdGlvbigpID49IENvbnRlbnRQ
b3NpdGlvbkNlbnRlciB8fCBkYXRhLmRpc3RyaWJ1dGlvbigpICE9IENvbnRlbnREaXN0cmlidXRp
b25EZWZhdWx0KSAmJiBkYXRhLm92ZXJmbG93KCkgIT0gT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0
KQotICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShk
YXRhLm92ZXJmbG93KCkpKTsKLSAgICBBU1NFUlQocmVzdWx0LmdldCgpLmxlbmd0aCgpID4gMCk7
Ci0gICAgQVNTRVJUKHJlc3VsdC5nZXQoKS5sZW5ndGgoKSA8PSAzKTsKKyAgICAgICAgcmVzdWx0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOworICAg
IEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID4gMCk7CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3Ro
KCkgPD0gMyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU2MCw4OCArMjU2Myw2OSBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVDb2xvclZhbHVlKG1fYWxsb3dWaXNpdGVkU3R5bGU/IHN0eWxlLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIDogc3R5bGUtPmJhY2tncm91
bmRDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZTogewotICAgICAgICAgICAgY29u
c3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a0ltYWdlID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7
Ci0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotCi0gICAgICAgICAg
ICBpZiAoIWxheWVycy0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxheWVycy0+aW1h
Z2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy0+aW1hZ2UoKS0+Y3NzVmFs
dWUoKTsKLQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tJbWFnZSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dy
b3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGxheWVycy5pbWFnZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bGF5ZXJzLmltYWdlKCktPmNzc1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExh
eWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxh
eWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChjdXJyTGF5ZXItPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjdXJyTGF5ZXItPmltYWdlKCktPmNzc1ZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1NpemU6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciog
bGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBp
ZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NT
VmFsdWUobGF5ZXJzLT5zaXplKCksICpzdHlsZSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0g
ICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYg
bGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBp
ZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTaXplVG9DU1NW
YWx1ZShsYXllcnMuc2l6ZSgpLCAqc3R5bGUpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRv
KiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+
bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChmaWxsU2l6ZVRvQ1NTVmFsdWUo
Y3VyckxheWVyLT5zaXplKCksICpzdHlsZSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsK
KyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVhdFRvQ1NTVmFs
dWUobGF5ZXJzLT5yZXBlYXRYKCksIGxheWVycy0+cmVwZWF0WSgpKTsKLQotICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBs
YXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAgICAg
ICAgICBhdXRvJiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdCA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwor
ICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
aWxsUmVwZWF0VG9DU1NWYWx1ZShsYXllcnMucmVwZWF0WCgpLCBsYXllcnMucmVwZWF0WSgpKTsK
KyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3Vyckxh
eWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoZmlsbFJlcGVhdFRvQ1NTVmFsdWUoY3VyckxheWVyLT5yZXBlYXRYKCksIGN1cnJM
YXllci0+cmVwZWF0WSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIq
IGxheWVycyA9IHN0eWxlLT5tYXNrTGF5ZXJzKCk7Ci0KLSAgICAgICAgICAgIGlmICghbGF5ZXJz
KQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlTm9uZSk7Ci0KLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShsYXllcnMtPm1h
c2tTb3VyY2VUeXBlKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgZm9y
IChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5
ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxl
LT5tYXNrTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShsYXllcnMubWFza1NvdXJj
ZVR5cGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXll
cnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShjdXJyTGF5ZXItPm1h
c2tTb3VyY2VUeXBlKCkpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDb21wb3NpdGU6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlm
ICghbGF5ZXJzLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShsYXllcnMtPmNvbXBvc2l0ZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRv
JiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAg
ICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLmNvbXBvc2l0ZSgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+Y29tcG9zaXRlKCkpKTsKLQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6IHsKLSAgICAg
ICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRMYXllcnMo
KTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMtPmF0dGFjaG1lbnQoKSk7Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsK
KyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy5hdHRhY2htZW50KCkpOworICAgICAgICAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
ICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJM
YXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT5hdHRhY2htZW50KCkpKTsKLQotICAg
ICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgpAQCAtMjY0OSw2NSArMjYzMyw1
OSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZE9yaWdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjogewotICAgICAg
ICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tDbGlwIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luKSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwor
ICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikg
PyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKICAgICAg
ICAgICAgIGJvb2wgaXNDbGlwID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA7Ci0gICAgICAgICAgICBpZiAo
IWxheWVycy0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlw
ID8gbGF5ZXJzLT5jbGlwKCkgOiBsYXllcnMtPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94KTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJy
TGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
IHsKLSAgICAgICAgICAgICAgICBFRmlsbEJveCBib3ggPSBpc0NsaXAgPyBjdXJyTGF5ZXItPmNs
aXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3gpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShpc0NsaXAgPyBsYXll
cnMuY2xpcCgpIDogbGF5ZXJzLm9yaWdpbigpKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXIt
Pm5leHQoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGlzQ2xpcCA/IGN1cnJMYXllci0+Y2xpcCgpIDogY3VyckxheWVyLT5vcmlnaW4oKSkp
OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBs
YXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uID8gc3R5
bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAg
ICBpZiAoIWxheWVycy0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNrTGF5ZXJz
KCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMu
bmV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihwcm9wZXJ0eUlELCBsYXllcnMsICpzdHlsZSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0g
ICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQotICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXllcihwcm9wZXJ0eUlELCBjdXJyTGF5
ZXIsICpzdHlsZSkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0g
Y3VyckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVBv
c2l0aW9uTGlzdEZvckxheWVyKHByb3BlcnR5SUQsICpjdXJyTGF5ZXIsICpzdHlsZSkpOworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25YOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVy
cyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBp
ZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUobGF5ZXJzLT54UG9zaXRpb24oKSk7CisgICAgICAgICAgICBhdXRvJiBsYXll
cnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxl
LT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAg
aWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUobGF5ZXJzLnhQb3NpdGlvbigpKTsKIAotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0g
Y3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPnhQb3NpdGlvbigpKSk7CiAKLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOiB7Ci0gICAgICAgICAgICBjb25z
dCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25ZID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJz
KCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT55UG9zaXRpb24oKSk7CisgICAg
ICAgICAgICBhdXRvJiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVy
cygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLnlQb3NpdGlvbigpKTsKIAotICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJy
TGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJM
YXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPnlQb3NpdGlvbigp
KSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5ib3JkZXJDb2xsYXBzZSgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q29sbGFwc2UpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVTZXBhcmF0ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTcGFjaW5nOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmhvcml6b250YWxCb3JkZXJT
cGFjaW5nKCksICpzdHlsZSkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUoc3R5bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpKTsKLSAg
ICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nOgogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5
bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCksICpzdHlsZSk7CkBAIC0yODIyLDcgKzI4MDAs
NyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlDdXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7Ci0g
ICAgICAgICAgICBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAg
ICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwogICAgICAgICAgICAgaWYg
KGN1cnNvcnMgJiYgY3Vyc29ycy0+c2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKQpAQCAtMjg4MSw1
OSArMjg1OSw1MyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnBy
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5mbG9hdGlu
ZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKLSAgICAgICAgICAgIFJlZlB0
cjxDU1NGb250VmFsdWU+IGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7Ci0g
ICAgICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKHN0eWxl
KTsKKyAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRGb250ID0gQ1NTRm9udFZhbHVlOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+c3R5bGUgPSBmb250U3R5bGVGcm9tU3R5bGUo
KnN0eWxlKTsKICAgICAgICAgICAgIGlmIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFu
dENhcHMoKSA9PSBGb250VmFyaWFudENhcHM6OlNtYWxsKQogICAgICAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+dmFyaWFudCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgICAgICAgICBjb21w
dXRlZEZvbnQtPndlaWdodCA9IGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKCpzdHlsZSk7CiAg
ICAgICAgICAgICBjb21wdXRlZEZvbnQtPnNpemUgPSBmb250U2l6ZUZyb21TdHlsZSgqc3R5bGUp
OwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5saW5lSGVpZ2h0ID0gbGluZUhlaWdodEZyb21T
dHlsZSgqc3R5bGUpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1pbHkgPSBmb250RmFt
aWx5RnJvbVN0eWxlKHN0eWxlKTsKLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlZEZvbnQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6IHsKLSAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlMaXN0ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgZmFt
aWx5LCByZXR1cm4gdGhhdCBhcyBhIENTU1ByaW1pdGl2ZVZhbHVlLgotICAgICAgICAgICAgLy8g
Tk9URTogR2Vja28gYWx3YXlzIHJldHVybnMgdGhpcyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBDU1NQ
cmltaXRpdmVWYWx1ZSBzdHJpbmcuCi0gICAgICAgICAgICBpZiAoZm9udEZhbWlseUxpc3QtPmxl
bmd0aCgpID09IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0LT5pdGVt
KDApOwotICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0OworICAgICAgICAgICAgY29t
cHV0ZWRGb250LT5mYW1pbHkgPSBmb250RmFtaWx5TGlzdEZyb21TdHlsZSgqc3R5bGUpOworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUoY29tcHV0ZWRGb250KTsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAgICAgICAgICAgIHJldHVybiBmb250RmFt
aWx5RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToK
ICAgICAgICAgICAgIHJldHVybiBmb250U2l6ZUZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOgotICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZy
b21TdHlsZShzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gZm9udFN0eWxlRnJvbVN0eWxlKCpz
dHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKLSAgICAgICAgICAg
IHJldHVybiBmb250VmFyaWFudEZyb21TdHlsZShzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRXZWlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFdlaWdodEZyb21TdHlsZShzdHlsZSk7
CisgICAgICAgICAgICByZXR1cm4gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFN5bnRoZXNpczoKICAgICAgICAgICAgIHJldHVybiBmb250
U3ludGhlc2lzRnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
RmVhdHVyZVNldHRpbmdzOiB7CiAgICAgICAgICAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdz
JiBmZWF0dXJlU2V0dGluZ3MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuZmVhdHVyZVNldHRp
bmdzKCk7CiAgICAgICAgICAgICBpZiAoIWZlYXR1cmVTZXR0aW5ncy5zaXplKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb3JtYWwpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGZvciAo
YXV0byYgZmVhdHVyZSA6IGZlYXR1cmVTZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRUYWcoZmVhdHVyZS50YWcoKSks
IGZlYXR1cmUudmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogI2lmIEVOQUJMRShWQVJJQVRJT05f
Rk9OVFMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWF0aW9uU2V0dGluZ3M6IHsK
ICAgICAgICAgICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0aW9uU2V0dGlu
Z3MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWF0aW9uU2V0dGluZ3MoKTsKICAgICAg
ICAgICAgIGlmICh2YXJpYXRpb25TZXR0aW5ncy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwp
OwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZmVh
dHVyZSA6IHZhcmlhdGlvblNldHRpbmdzKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NGb250VmFyaWF0aW9uVmFsdWU6OmNyZWF0ZShmZWF0dXJlLnRhZygpLCBmZWF0dXJlLnZhbHVl
KCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiAgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6IHsKLSAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBBU1NFUlQoc3R5bGUtPmlzR3JpZEF1dG9GbG93RGly
ZWN0aW9uUm93KCkgfHwgc3R5bGUtPmlzR3JpZEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uKCkpOwog
ICAgICAgICAgICAgaWYgKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJvdygpKQogICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlUm93KSk7CkBAIC0yOTQzLDcgKzI5MTUsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELAogICAgICAgICAgICAgaWYgKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0FsZ29yaXRobURl
bnNlKCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEZW5zZSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlz
dDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gU3BlY3MgbWVudGlvbiB0aGF0IGdldENvbXB1dGVkU3R5bGUoKSBzaG91bGQgcmV0dXJu
IHRoZSB1c2VkIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIHRoZSBjb21wdXRlZApA
QCAtMjk3OSwxMyArMjk1MSwxMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAg
ICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChncmlkQ29sdW1u
U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvdzoKICAgICAgICAg
ICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZFJvd1No
b3J0aGFuZCgpKTsKLQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXM6
CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVCghc3R5bGUtPm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAgICAgfQotCiAgICAgICAgICAgICByZXR1cm4gQ1NT
R3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5uYW1lZEdyaWRBcmVhKCksIHN0
eWxlLT5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSwgc3R5bGUtPm5hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6CiAgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+Z3JpZENv
bHVtbkdhcCgpLCAqc3R5bGUpOwpAQCAtMzEyMCwxMCArMzA5MCwxMCBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0Rml0OgogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+b2JqZWN0Rml0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0UG9zaXRpb246IHsKLSAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZUZvckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24oKS54KCksICpzdHlsZSkpOwogICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPm9iamVjdFBvc2l0aW9uKCkueSgpLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKQEAgLTMyMjQsMzEgKzMxOTQsMzAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNsZToKICAgICAgICAgICAgIGNh
c2UgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZToKICAgICAgICAgICAgIGNhc2UgVGV4dEVt
cGhhc2lzTWFya1RyaWFuZ2xlOgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrU2Vz
YW1lOiB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGNhc2UgVGV4dEVt
cGhhc2lzTWFya1Nlc2FtZToKKyAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+dGV4dEVtcGhhc2lzRmlsbCgpKSk7CiAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS0+dGV4dEVtcGhhc2lzTWFyaygpKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OiB7CiAgICAgICAg
ICAgICAvLyBJZiBDU1MzX1RFWFQgaXMgZGlzYWJsZWQgb3IgdGV4dC1pbmRlbnQgaGFzIG9ubHkg
b25lIHZhbHVlKDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+KSwKICAgICAgICAgICAgIC8vIGdldFBy
b3BlcnR5Q1NTVmFsdWUoKSByZXR1cm5zIENTU1ZhbHVlLgotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB0ZXh0SW5kZW50ID0gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHls
ZS0+dGV4dEluZGVudCgpLCAqc3R5bGUpOworICAgICAgICAgICAgYXV0byB0ZXh0SW5kZW50ID0g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCAqc3R5
bGUpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAvLyBJZiBDU1MzX1RFWFQg
aXMgZW5hYmxlZCBhbmQgdGV4dC1pbmRlbnQgaGFzIC13ZWJraXQtZWFjaC1saW5lIG9yIC13ZWJr
aXQtaGFuZ2luZywKICAgICAgICAgICAgIC8vIGdldFByb3BlcnR5Q1NTVmFsdWUoKSByZXR1cm5z
IENTU1ZhbHVlTGlzdC4KICAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dEluZGVudExpbmUoKSA9
PSBUZXh0SW5kZW50RWFjaExpbmUgfHwgc3R5bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dElu
ZGVudEhhbmdpbmcpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQodGV4dEluZGVudC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVudEVh
Y2hMaW5lKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlYmtpdEVhY2hMaW5lKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKQog
ICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVdlYmtpdEhhbmdpbmcpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbGlzdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
ICAgIH0KICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIHRleHRJbmRlbnQ7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZSh0ZXh0SW5kZW50KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhz
dHlsZS0+dGV4dFNoYWRvdygpLCBwcm9wZXJ0eUlELCAqc3R5bGUpOwpAQCAtMzMyMSw4ICszMjkw
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT53aWR0aCgpLCAq
c3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZToKLSAgICAgICAgICAg
IHJldHVybiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShzdHlsZS0+d2lsbENoYW5nZSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VQcm9wZXJ0
eVZhbHVlKHN0eWxlLT53aWxsQ2hhbmdlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29y
ZEJyZWFrOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS0+d29yZEJyZWFrKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CkBA
IC0zMzk0LDkgKzMzNjIsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgotICAgICAgICAg
ICAgcmV0dXJuIGdldERlbGF5VmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAgICAg
ICByZXR1cm4gZGVsYXlWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9u
cygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CkBAIC0zNDE3LDEyICszMzg1LDEyIEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldER1cmF0
aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZHVyYXRp
b25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbkZpbGxNb2RlOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAg
ICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+
c2l6ZSgpOyArK2kpIHsKQEAgLTM0NDMsMTAgKzM0MTEsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAg
ICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAg
ICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dC0+c2l6ZSgpOyArK2kpIHsKQEAgLTM0NTgsMjAgKzM0MjYsMjAgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6
aW5pdGlhbEl0ZXJhdGlvbkNvdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxp
c3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lOiB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9u
TGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAg
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodC0+
YW5pbWF0aW9uKGkpLm5hbWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwotICAgICAgICAgICAgcmV0
dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOiB7Ci0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0
eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKQEAgLTM0ODMsMTMgKzM0
NTEsMTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1bm5pbmcpKTsKLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAg
ICAgICAgcmV0dXJuIGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7
CisgICAgICAgICAgICByZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9u
cygpKTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRyaWdnZXI6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
QW5pbWF0aW9uVHJpZ2dlclZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCksICpzdHlsZSk7CisgICAg
ICAgICAgICByZXR1cm4gYW5pbWF0aW9uVHJpZ2dlclZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCks
ICpzdHlsZSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFu
Y2U6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5h
cHBlYXJhbmNlKCkpOwpAQCAtMzUzMSw4ICszNDk5LDggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgICAgIC8vIE5vdCBhIHJlYWwgc3R5bGUgcHJvcGVydHkgLS0gdXNlZCBieSB0
aGUgZWRpdGluZyBlbmdpbmUgLS0gc28gaGFzIG5vIGNvbXB1dGVkIHZhbHVlLgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOiB7
Ci0gICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGRyb3AgPSAhc3R5bGUtPmluaXRp
YWxMZXR0ZXJEcm9wKCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRl
ckRyb3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICAgICAgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiBzaXplID0gIXN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCkg
PyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5
bGUtPmluaXRpYWxMZXR0ZXJEcm9wKCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5p
dGlhbExldHRlckRyb3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAg
ICAgICAgYXV0byBzaXplID0gIXN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPyBjc3NWYWx1
ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKFBhaXI6OmNyZWF0ZShXVEZNb3ZlKGRyb3ApLCBXVEZNb3ZlKHNpemUpKSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNl
OgpAQCAtMzU1Miw3ICszNTIwLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUt
PnBlcnNwZWN0aXZlKCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVj
dGl2ZU9yaWdpbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcikgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYm94OwogICAgICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpCkBAIC0zNTY2LDcgKzM1MzQsNyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblko
KSwgKnN0eWxlKSk7CiAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0Owor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUtPnJ0bE9yZGVyaW5nKCkgPyBDU1NW
YWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CkBAIC0zNTg1LDEzICszNTUzLDEzIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
U2VsZWN0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS0+dXNlclNlbGVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxl
ZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUo
c3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1
cygpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5
bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1
cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVz
OgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5i
b3JkZXJUb3BMZWZ0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAg
ICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdo
dFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0Nvcm5l
clZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCAqc3R5bGUpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Q2xpcDogewogICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQXV0byk7CkBAIC0zNjA3LDcgKzM1NzUsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtOgogICAgICAgICAgICAg
cmV0dXJuIGNvbXB1dGVkVHJhbnNmb3JtKHJlbmRlcmVyLCAqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAg
ICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVj
dCBib3g7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkKQEAg
LTM2MjMsNDIgKzM1OTEsNDEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSAhPSAwKQogICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3Jt
T3JpZ2luWigpLCAqc3R5bGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSgoc3R5bGUtPnRyYW5zZm9ybVN0eWxlM0QoKSA9PSBUcmFu
c2Zvcm1TdHlsZTNEUHJlc2VydmUzRCkgPyBDU1NWYWx1ZVByZXNlcnZlM2QgOiBDU1NWYWx1ZUZs
YXQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgotICAgICAgICAg
ICAgcmV0dXJuIGdldERlbGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGRlbGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldER1
cmF0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGR1
cmF0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNpdGlvblByb3BlcnR5OgotICAgICAgICAgICAgcmV0dXJuIGdldFRyYW5zaXRpb25Q
cm9wZXJ0eVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB0
cmFuc2l0aW9uUHJvcGVydHlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpOwotICAgICAgICAg
ICAgaWYgKGFuaW1MaXN0KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
dHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgaWYgKGF1dG8qIGFuaW1MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCkpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwotICAgICAgICAgICAgICAgICAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiA9IGFuaW1M
aXN0LT5hbmltYXRpb24oaSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byYgYW5pbWF0aW9uID0gYW5pbUxpc3QtPmFuaW1hdGlvbihpKTsKICAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGFuaW1hdGlvbikp
OwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGFuaW1hdGlvbi5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUo
YW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoKmFuaW1hdGlvbi50aW1pbmdG
dW5jdGlvbigpKSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UykpOwotICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFwcGVuZChsaXN0LnJl
bGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFw
cGVuZChXVEZNb3ZlKGxpc3QpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRyYW5zaXRpb25zTGlzdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSh0
cmFuc2l0aW9uc0xpc3QpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgLy8gdHJhbnNpdGlvbi1wcm9wZXJ0eSBkZWZhdWx0IHZhbHVlLgog
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVBbGwpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rp
b25WYWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246
OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5UG9pbnRlckV2ZW50czoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7CkBAIC0zNjc5LDMzICszNjQ2LDI5IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
Qm94Q29udGFpbjoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVl
KHN0eWxlLT5saW5lQm94Q29udGFpbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsdDoK
LSAgICAgICAgICAgIHJldHVybiBhbHRUZXh0VG9DU1NWYWx1ZShzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gYWx0VGV4dFRvQ1NTVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbnRlbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoc3R5bGUp
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRUb0NTU1ZhbHVlKCpzdHlsZSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgotICAgICAgICAgICAgcmV0dXJuIGNv
dW50ZXJUb0NTU1ZhbHVlKHN0eWxlLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiBj
b3VudGVyVG9DU1NWYWx1ZSgqc3R5bGUsIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Q291bnRlclJlc2V0OgotICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVl
KHN0eWxlLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1
ZSgqc3R5bGUsIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xp
cFBhdGg6IHsKLSAgICAgICAgICAgIENsaXBQYXRoT3BlcmF0aW9uKiBvcGVyYXRpb24gPSBzdHls
ZS0+Y2xpcFBhdGgoKTsKKyAgICAgICAgICAgIGF1dG8qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlw
UGF0aCgpOwogICAgICAgICAgICAgaWYgKCFvcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAg
ICAgICAgICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3du
Y2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVmZXJlbmNlT3BlcmF0aW9u
LnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uPigqb3BlcmF0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJh
dGlvbikudXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICAgICAgICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAg
ICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8U2hhcGVDbGlw
UGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgYXV0byYgc2hhcGVP
cGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JCYXNpY1NoYXBlKCpzdHlsZSwg
c2hhcGVPcGVyYXRpb24uYmFzaWNTaGFwZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYXBl
T3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpICE9IEJveE1pc3NpbmcpCiAgICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGVPcGVyYXRpb24u
cmVmZXJlbmNlQm94KCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpczxCb3hD
bGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBh
dXRvJiBib3hPcGVyYXRpb24gPSBkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJh
dGlvbik7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShib3hPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9u
KS5yZWZlcmVuY2VCb3goKSkpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAg
ICAgICAgIH0KICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbG93SW50bzoKQEAgLTM3MzgsMjAgKzM3MDEsMTggQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUtPmlzb2xhdGlvbigpKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZEJsZW5kTW9kZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBz
dHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVy
cy0+YmxlbmRNb2RlKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgZm9y
IChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5
ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxl
LT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYmxl
bmRNb2RlKCkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5
ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT5i
bGVuZE1vZGUoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kOgogICAgICAgICAgICAgcmV0dXJuIGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1
ZSgpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclRvcCwg
RG9Ob3RVcGRhdGVMYXlvdXQpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIERvTm90VXBkYXRlTGF5b3V0KTsKICAgICAgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9Owog
ICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4odmFsdWUsIHByb3BlcnR5
VmFsdWUocHJvcGVydHksIERvTm90VXBkYXRlTGF5b3V0KSkpCkBAIC0zNzY4LDcgKzM3MjksNyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2U6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+
Ym9yZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoKnN0eWxlKTsK
KyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CiAgICAgICAgICAgICByZXR1cm4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hv
cnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CkBAIC0zOTk4
LDcgKzM5NTksNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnBy
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogCiBTdHJpbmcgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG51bGwgaW5zdGVhZCwgYXMgaXQgaXMgaW4g
U3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZhbHVlPwogICAgIHJldHVybiB2YWx1ZS0+Y3Nz
VGV4dCgpOwpAQCAtNDA2MywyMiArNDAyNCwyMSBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKQogCiBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhh
bmQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJv
cGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCk7
Ci0gICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGxpc3Q7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisK
ICAgICAvLyBBc3N1bWUgdGhlIHByb3BlcnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQuCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
OwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NW
YWx1ZT4gYm90dG9tVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
Ml0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9
IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVMYXlv
dXQpOworICAgIGF1dG8gdG9wVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIHJpZ2h0VmFsdWUgPSBwcm9w
ZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMV0sIERvTm90VXBkYXRlTGF5b3V0KTsK
KyAgICBhdXRvIGJvdHRvbVZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpWzJdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0byBsZWZ0VmFsdWUgPSBwcm9wZXJ0
eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAog
ICAgIC8vIEFsbCA0IHByb3BlcnRpZXMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BW
YWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTQw
OTYsMTcgKzQwNTYsMTUgQEAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGEKICAgICBpZiAoc2hvd0xl
ZnQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChsZWZ0VmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAK
LSAgICByZXR1cm4gbGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogUmVmUHRy
PENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1
ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFu
ZCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5k
Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3Bl
cnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwot
ICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotICAg
IHJldHVybiBsaXN0OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hT
ZXBhcmF0ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgo
KTsgKytpKQorICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJv
cGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
cmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3Bl
cnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNDExNCw4ICs0MDcyLDcgQEAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0
aWVzSW5TZXQoY29uc3QgQ1MKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAg
ICBsaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHByb3BlcnR5
VmFsdWUoc2V0W2ldKTsKLSAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICBpZiAoYXV0byB2YWx1
ZSA9IHByb3BlcnR5VmFsdWUoc2V0W2ldKSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1By
b3BlcnR5KHNldFtpXSwgV1RGTW92ZSh2YWx1ZSksIGZhbHNlKSk7CiAgICAgfQogICAgIHJldHVy
biBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUobGlzdC5kYXRhKCksIGxpc3Quc2l6ZSgp
KTsKQEAgLTQxMzgsNyArNDA5NSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvCiAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAg
IGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgYXV0
byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHZhbHVlLT5jcmVhdGVEZXBy
ZWNhdGVkQ1NTT01XcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5jcHAKaW5kZXggYzhiNjE1NTBiNmJhN2U2MmMzYjczM2Q0NWFhMDg1NDFhMDg1
NTA4YS4uM2M3YzI5OTU2MGE4MWYxN2FkNjg3YTVjM2M4YjI5NjM5MzQ3OWY2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FjaGVkR2VuZXJh
dGVkSW1hZ2UoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZsb2F0U2l6ZSwgR2VuZXJhdGVkSW1h
Z2UmKTsKLSAgICBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PEdlbmVyYXRlZEltYWdlJj4obV9pbWFnZS5nZXQoKSk7IH0KKyAgICBHZW5lcmF0ZWRJbWFn
ZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgdm9pZCBwdW50RXZpY3Rp
b25UaW1lcigpIHsgbV9ldmljdGlvblRpbWVyLnJlc3RhcnQoKTsgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDA2NDJiODc4Y2U5MzUyM2Nm
ZTBhY2Q5NjFlOTE3NTRhZWJlMGVhMGEuLjA5ZTdhZDMxMDY1MWQxYTA4N2YyZGI3ZDNmODQ0Yjcz
MTgzMzI1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTIx
MSwxMiArMjExLDEwIEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnMuc2l6ZSgpID09IG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCkuc2l6ZSgpKTsKLSAgICBS
ZWZQdHI8Q1NTS2V5ZnJhbWVSdWxlPiYgcnVsZSA9IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tp
bmRleF07CisgICAgYXV0byYgcnVsZSA9IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF07
CiAgICAgaWYgKCFydWxlKQotICAgICAgICBydWxlID0gYWRvcHRSZWYobmV3IENTU0tleWZyYW1l
UnVsZShjb25zdF9jYXN0PFN0eWxlUnVsZUtleWZyYW1lJj4obV9rZXlmcmFtZXNSdWxlLT5rZXlm
cmFtZXMoKVtpbmRleF0uZ2V0KCkpLCBjb25zdF9jYXN0PENTU0tleWZyYW1lc1J1bGUqPih0aGlz
KSkpOwotCisgICAgICAgIHJ1bGUgPSBhZG9wdFJlZigqbmV3IENTU0tleWZyYW1lUnVsZShtX2tl
eWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2luZGV4XSwgY29uc3RfY2FzdDxDU1NLZXlmcmFtZXNS
dWxlKj4odGhpcykpKTsKICAgICByZXR1cm4gcnVsZS5nZXQoKTsgCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDIwYzU2ZTY2YmU0ZjUzYjdhZTZkYTdl
MjM2NTk5NDg5ZmVlNmEyY2YuLjQ4MmZkM2RhODJjYTJjNjAzMzEyM2E2NjRlZDExYjQ5MjgzM2Qz
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtNDI3LDcg
KzQyNyw3IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3QgTGVuZ3RoU2l6ZSYg
bGVuZ3RoU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0CiB7CiAgICAgbV9wcmltaXRpdmVVbml0
VHlwZSA9IENTU19QQUlSOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwotICAgIG1f
dmFsdWUucGFpciA9ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgoKSwgc3R5
bGUpLCBjcmVhdGUobGVuZ3RoU2l6ZS5oZWlnaHQoKSwgc3R5bGUpKS5sZWFrUmVmKCk7CisgICAg
bV92YWx1ZS5wYWlyID0gJlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCwgc3R5
bGUpLCBjcmVhdGUobGVuZ3RoU2l6ZS5oZWlnaHQsIHN0eWxlKSkubGVha1JlZigpOwogfQogCiB2
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFJlZjxDb3VudGVyPiYmIGNvdW50ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVSdWxlLmgKaW5kZXggODEwYjlhNDU0ZDY1NzZlOGFlNzhlNGY1ZWJjZmYw
YjAxMmI3M2YyMC4uNzFmMzU1MDU1NmM2ODVmOGY1ZjA1MTVkYTAwMzJhODk5MTY3YTcxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIAogICAgIC8vIEZJ
WE1FOiBOb3QgQ1NTT00uIFJlbW92ZS4KLSAgICBTdHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U3R5bGVSdWxlJj4obV9zdHlsZVJ1bGUuZ2V0KCkpOyB9Cisg
ICAgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUnVsZS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIENTU1N0eWxlUnVsZShTdHlsZVJ1bGUmLCBDU1NTdHlsZVNo
ZWV0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggMmEyN2RkYjAwOTRl
NDg2ZDBlMDQ0NTZmYjUzNWVhZDJlNTY4MzhkNi4uODVjNDRhMmYzYTliNDlmZDExNmZhZWUxYzM5
NjJhN2FkM2ZkZTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtMTg4
LDEyICsxODgsMTEgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIGMKIHN0YXRpYyBpbmxpbmUgYm9v
bCBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVW
YWx1ZSwgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSwgTGVuZ3RoU2l6
ZSYgc2l6ZSkKIHsKICAgICBpZiAoYXV0byogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1
ZSgpKSB7Ci0gICAgICAgIHNpemUuc2V0V2lkdGgocGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVu
Z3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7Ci0gICAgICAgIHNpemUuc2V0SGVp
Z2h0KHBhaXItPnNlY29uZCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVy
c2lvbkRhdGEpKTsKKyAgICAgICAgc2l6ZS53aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbnZlcnRU
b0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIHNpemUuaGVp
Z2h0ID0gcGFpci0+c2Vjb25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNpemUuc2V0V2lkdGgocHJpbWl0aXZl
VmFsdWUuY29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7Ci0K
LSAgICByZXR1cm4gIXNpemUud2lkdGgoKS5pc1VuZGVmaW5lZCgpICYmICFzaXplLmhlaWdodCgp
LmlzVW5kZWZpbmVkKCk7CisgICAgICAgIHNpemUud2lkdGggPSBwcmltaXRpdmVWYWx1ZS5jb252
ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgIHJldHVybiAh
c2l6ZS53aWR0aC5pc1VuZGVmaW5lZCgpICYmICFzaXplLmhlaWdodC5pc1VuZGVmaW5lZCgpOwog
fQogCiB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgRmlsbExheWVyJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggYzlmYjczMzU5ODViOGJjN2JlNjg2N2I4ZjcxY2YyMTMxNjI1NmEz
YS4uYzI4OWY3ODQwYWE2OGM5ODE3ZWJmNDFkNTUyNzY2ZmEyMTc2MTlhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC0yNTgsMTMgKzI1OCwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGb250
RmFjZTo6c2V0RmVhdHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKQog
CiBTdHJpbmcgRm9udEZhY2U6OmZhbWlseSgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NG
b250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1f
YmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2JhY2tpbmctPmZh
bWlsaWVzKCktPmNzc1RleHQoKTsKIH0KIAogU3RyaW5nIEZvbnRGYWNlOjpzdHlsZSgpIGNvbnN0
CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRl
U3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIHN3aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250U3R5bGVNYXNrKSB7CiAg
ICAgY2FzZSBGb250U3R5bGVOb3JtYWxNYXNrOgogICAgICAgICByZXR1cm4gU3RyaW5nKCJub3Jt
YWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBT
dHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp3ZWlnaHQo
KSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkp
LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICBzd2l0Y2ggKG1fYmFja2luZy0+dHJhaXRzTWFzaygpICYgRm9udFdlaWdodE1h
c2spIHsKICAgICBjYXNlIEZvbnRXZWlnaHQxMDBNYXNrOgogICAgICAgICByZXR1cm4gU3RyaW5n
KCIxMDAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTMwOSw3ICszMDksNyBA
QCBTdHJpbmcgRm9udEZhY2U6OnN0cmV0Y2goKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6OnVu
aWNvZGVSYW5nZSgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFj
a2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlUrMC0xMEZGRkYiKTsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CkBAIC0zMjAsMTMgKzMyMCwxMyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNv
bnN0CiAKIFN0cmluZyBGb250RmFjZTo6dmFyaWFudCgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2Fz
dDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwor
ICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiBjb21wdXRl
Rm9udFZhcmlhbnQobV9iYWNraW5nLT52YXJpYW50U2V0dGluZ3MoKSktPmNzc1RleHQoKTsKIH0K
IAogU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MoKSBjb25zdAogewotICAgIGNvbnN0
X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFj
a2luZy0+ZmVhdHVyZVNldHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJub3JtYWwiKTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcAppbmRleCBiMjFkZDVkNTYzNzM5ZmZiZGQxZDg5ZDgxZTVlNDQzMGFhZTZlMTUzLi42
OGZmZmRlYjllNDJjNzE2MjNkODdhNTc1Y2EwZGM1YzcwYWFmNzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkxlbmd0
aEZ1bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiTGF5b3V0
U2l6ZS5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTgsNiArNTksMTEgQEAgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
IGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0xh
eW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoLCBjb25z
dCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpCit7CisgICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5n
dGgobGVuZ3RoLndpZHRoLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxl
bmd0aC5oZWlnaHQsIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKK30KKwogLy8gRklYTUU6IHdo
ZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCB0aGlzIGNvcHkgb2YgZmxvYXRWYWx1ZUZv
ckxlbmd0aCgpIGNhbiBiZSByZW1vdmVkLiBTZWUgYnVnIDcxMTQzLgogZmxvYXQgZmxvYXRWYWx1
ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUp
CiB7CkBAIC0xMTMsNyArMTE5LDcgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlKQogCiBGbG9hdFNpemUgZmxvYXRTaXpl
Rm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNp
emUmIGJveFNpemUpCiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aFNpemUud2lkdGgoKSwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0
aChsZW5ndGhTaXplLmhlaWdodCgpLCBib3hTaXplLmhlaWdodCgpKSk7CisgICAgcmV0dXJuIHsg
ZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLndpZHRoLCBib3hTaXplLndpZHRoKCkpLCBm
bG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUuaGVpZ2h0LCBib3hTaXplLmhlaWdodCgpKSB9
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rp
b25zLmgKaW5kZXggOWQyMjRkOTExMjdlNWY4M2FhYjEwNDg5MmRlNjgwNDY0MTE4ZGQ2YS4uMWM0
ZTA1MGRhNjA0YTQzYTU2ODNhYWZkMmVlZDQzNmE0NTMxMzVkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJpZ2h0IChD
KSAyMDExIFJpayBDYWJhbmllciAoY2FiYW5pZXJAYWRvYmUuY29tKQogICAgIENvcHlyaWdodCAo
QykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTI5LDggKzI5LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRTaXplOwotY2xhc3MgTGF5b3V0VW5pdDsKK2NsYXNzIExheW91dFNpemU7CiBjbGFz
cyBSZW5kZXJWaWV3OworCiBzdHJ1Y3QgTGVuZ3RoOwogc3RydWN0IExlbmd0aFNpemU7CiAKQEAg
LTM4LDYgKzM5LDcgQEAgaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
LCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogTGF5b3V0VW5pdCBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogV0VC
Q09SRV9FWFBPUlQgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSk7CitMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNvbnN0
IExlbmd0aFNpemUmLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpOwogZmxvYXQgZmxv
YXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7
CiBXRUJDT1JFX0VYUE9SVCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYs
IGZsb2F0IG1heGltdW1WYWx1ZSk7CiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShj
b25zdCBMZW5ndGhTaXplJiwgY29uc3QgRmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDUzODM0
MjdkOTJhYmZmMTk3ZTdmYWRkNjg3NDc3N2Q3YTg1NDlkNWMuLmQ3NjlhNWE1ODZjODExMjcxODdl
NzU0NDMyYzlmMmM1ZjhjNzcxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0z
MSwzNCArMzIsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVmPENTU1ZhbHVl
PiBwYWludE9yZGVyKFBhaW50T3JkZXIgcGFpbnRPcmRlcikKIHsKLSAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKLSAgICBSZWY8Q1NTVmFsdWU+IGZpbGwgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZUZpbGwpOwotICAgIFJlZjxDU1NWYWx1ZT4gc3Ryb2tlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpOwotICAgIFJlZjxD
U1NWYWx1ZT4gbWFya2VycyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTWFya2Vycyk7CisgICAgaWYgKHBhaW50T3JkZXIgPT0gUGFpbnRPcmRlck5vcm1hbCkK
KyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9ybWFsKTsKIAorICAgIGF1dG8gcGFpbnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgc3dpdGNoIChwYWludE9yZGVyKSB7CiAgICAgY2Fz
ZSBQYWludE9yZGVyTm9ybWFsOgotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9yZGVyRmlsbDoKLSAgICAgICAg
cGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKKyAgICAgICAgcGFpbnRPcmRl
ckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZUZpbGwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9yZGVyRmlsbE1hcmtlcnM6
Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShmaWxsKSk7Ci0gICAgICAg
IHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJzKSk7CisgICAgICAgIHBhaW50
T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVGaWxsKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUGFpbnRPcmRlclN0cm9rZToKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZChXVEZNb3ZlKHN0cm9rZSkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlclN0cm9rZU1hcmtlcnM6Ci0gICAgICAgIHBh
aW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShzdHJva2UpKTsKLSAgICAgICAgcGFpbnRPcmRl
ckxpc3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9r
ZSkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBhaW50T3JkZXJNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdU
Rk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJNYXJrZXJzU3Ryb2tlOgotICAgICAgICBwYWludE9y
ZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUobWFya2VycykpOwotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURk1vdmUoc3Ryb2tlKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBl
bmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7
CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IHJldHVybiBXVEZNb3ZlKHBhaW50T3JkZXJMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBlNGM3OTQzZjgwODI1NWUyOTE2YTY3MWU0ZjU5NTNj
N2RhZmQyMTcxLi5kNDk1MGEwNjljOWEzZmYzMGVhNjFmNWQxOGI0YTFmYzlhYzFiYzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yOTQsMjEgKzI5
NCwxOSBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFk
aXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbgogCiBpbmxpbmUgTGVuZ3RoU2l6ZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0g
cHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCk7CisgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFw
YWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aFNp
emUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgICAgIHJldHVybiB7
IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07CiAKICAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhIGNvbnZlcnNpb25EYXRhID0gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKTsKLSAgICBMZW5ndGggcmFkaXVzV2lkdGggPSBjb252ZXJ0VG9SYWRp
dXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5maXJzdCgpKTsKLSAgICBMZW5ndGggcmFk
aXVzSGVpZ2h0ID0gY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqcGFpci0+
c2Vjb25kKCkpOworICAgIExlbmd0aFNpemUgcmFkaXVzIHsgY29udmVydFRvUmFkaXVzTGVuZ3Ro
KGNvbnZlcnNpb25EYXRhLCAqcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChj
b252ZXJzaW9uRGF0YSwgKnBhaXItPnNlY29uZCgpKSB9OwogCi0gICAgQVNTRVJUKCFyYWRpdXNX
aWR0aC5pc05lZ2F0aXZlKCkpOwotICAgIEFTU0VSVCghcmFkaXVzSGVpZ2h0LmlzTmVnYXRpdmUo
KSk7Ci0gICAgaWYgKHJhZGl1c1dpZHRoLmlzWmVybygpIHx8IHJhZGl1c0hlaWdodC5pc1plcm8o
KSkKLSAgICAgICAgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSk7CisgICAgQVNTRVJUKCFyYWRpdXMud2lkdGguaXNOZWdhdGl2ZSgpKTsKKyAgICBB
U1NFUlQoIXJhZGl1cy5oZWlnaHQuaXNOZWdhdGl2ZSgpKTsKKyAgICBpZiAocmFkaXVzLndpZHRo
LmlzWmVybygpIHx8IHJhZGl1cy5oZWlnaHQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybiB7IHsg
MCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07CiAKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShyYWRp
dXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKKyAgICByZXR1cm4gcmFkaXVzOwogfQogCiBpbmxpbmUg
TGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVu
Z3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQpAQCAtNzY2LDcgKzc2NCw3IEBAIGlubGluZSBSZWZQ
dHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShT
dHlsZVJlc29sdmVyCiAgICAgfQogCiAgICAgaWYgKGlzSW1hZ2VTaGFwZSh2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZh
bHVlKSk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5z
dHlsZUltYWdlKHZhbHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIFJlZlB0cjxCYXNpY1No
YXBlPiBzaGFwZTsKICAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CkBA
IC03ODYsNyArNzg0LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIKICAgICB9CiAKICAgICBp
ZiAoc2hhcGUpCi0gICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShzaGFw
ZSksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc2hh
cGUucmVsZWFzZU5vbk51bGwoKSwgcmVmZXJlbmNlQm94KTsKIAogICAgIGlmIChyZWZlcmVuY2VC
b3ggIT0gQm94TWlzc2luZykKICAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShyZWZl
cmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDBm
ZmQ5ZDQ5YmFhNjkzNzM0YzYxZDVhNTk3ZmZhNDA1NzVmNzIyN2UuLmM0ZmJlZjlhZDE1NTI3NmUw
MTgxNWE2MDRmNjgyNjA1NmYyMjNkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKQEAgLTU4LDYgKzU4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWwjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImKTsgXAogICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShU
JiYgdmFsdWUpIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KK2lubGluZSBMZW5n
dGggZm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgcmV0dXJuIExl
bmd0aCB7IHZhbHVlIH07IH0KK2lubGluZSBMZW5ndGhTaXplIGZvcndhcmRJbmhlcml0ZWRWYWx1
ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSkgeyByZXR1cm4gTGVuZ3RoU2l6ZSB7IHZhbHVlIH07
IH0KK2lubGluZSBMZW5ndGhCb3ggZm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aEJv
eCYgdmFsdWUpIHsgcmV0dXJuIExlbmd0aEJveCB7IHZhbHVlIH07IH0KKwogLy8gTm90ZSB0aGF0
IHdlIGFzc3VtZSB0aGUgQ1NTIHBhcnNlciBvbmx5IGFsbG93cyB2YWxpZCBDU1NWYWx1ZSB0eXBl
cy4KIGNsYXNzIFN0eWxlQnVpbGRlckN1c3RvbSB7CiBwdWJsaWM6CkBAIC0zMDEsNiArMzA2LDcg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGln
bihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc28KIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKKwogc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiBjb252ZXJzaW9uRGF0YSkKIHsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUgPyBwcmltaXRp
dmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkgOiBMZW5n
dGgoVW5kZWZpbmVkKTsKQEAgLTMxOCw3ICszMjQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXREYXNoYm9hcmRSZWdpb24oU3R5bGVSZXNvbHZlciYg
cwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXNoYm9hcmRSZWdp
b24qIGZpcnN0ID0gcmVnaW9uOworICAgIGF1dG8qIGZpcnN0ID0gcmVnaW9uOwogICAgIHdoaWxl
IChyZWdpb24pIHsKICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdp
b24tPnRvcCgpLCBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGVSZXNvbHZlci5zdGF0ZSgp
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7
CkBAIC0zMzUsMTcgKzM0MSwyMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVXZWJraXREYXNoYm9hcmRSZWdpb24oU3R5bGVSZXNvbHZlciYgcwogICAgICAgICAg
ICAgbGVmdCA9IExlbmd0aCgpOwogCiAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0g
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHls
ZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJk
UmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJp
Z2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpLCByZWdpb24gIT0gZmlyc3QpOwog
ICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lv
bjo6UmVjdGFuZ2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwg
cmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0
YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RG
TW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpLCByZWdpb24gIT0gZmlyc3QpOworCiAgICAgICAg
IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpOwogICAgIH0KIAogICAgIHN0eWxlUmVzb2x2
ZXIuZG9jdW1lbnQoKS5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwogfQorCiAjZW5kaWYg
Ly8gRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNP
TFVUSU9OKQorCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdElt
YWdlUmVzb2x1dGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewogICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKHN0eWxlUmVzb2x2ZXIu
cGFyZW50U3R5bGUoKS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpOwpAQCAtMzc4LDE4ICszODcs
MjMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNv
bHV0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldEltYWdlUmVzb2x1dGlvblNuYXAoc25hcCk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRJbWFnZVJlc29sdXRpb24ocmVzb2x1dGlvbik7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUo
Q1NTX0lNQUdFX1JFU09MVVRJT04pCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0U2l6ZShTdHlsZVJlc29sdmVyJikgeyB9CisKIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsU2l6ZShTdHlsZVJlc29sdmVyJikgeyB9CisKIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKKworICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0
Pih2YWx1ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIExlbmd0aCB3aWR0aDsKICAgICBMZW5n
dGggaGVpZ2h0OwogICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVU
TzsKLSAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAg
ICBzd2l0Y2ggKHZhbHVlTGlzdC5sZW5ndGgoKSkgewpAQCAtNDUzLDEyICs0NjcsMTIgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOwotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7
CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRQYWdlU2l6ZSh7IFdURk1vdmUod2lkdGgp
LCBXVEZNb3ZlKGhlaWdodCkgfSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQog
ewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChzdHlsZVJlc29sdmVy
LnBhcmVudFN0eWxlKCktPnRleHRJbmRlbnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRUZXh0SW5kZW50KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4
dEluZGVudCgpIH0pOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0SW5kZW50TGluZShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRl
eHRJbmRlbnRMaW5lKCkpOwogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVu
dFR5cGUoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5kZW50VHlwZSgpKTsKQEAg
LTQ5Niw3ICs1MTAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVUZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgIGlmIChsZW5ndGhP
clBlcmNlbnRhZ2VWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQobGVuZ3RoT3JQZXJjZW50YWdlVmFs
dWUpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChXVEZNb3ZlKGxl
bmd0aE9yUGVyY2VudGFnZVZhbHVlKSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRMaW5lKHRleHRJbmRlbnRMaW5lVmFsdWUp
OwogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudFR5cGUodGV4dEluZGVu
dFR5cGVWYWx1ZSk7CkBAIC02MTEsOCArNjI1LDggQEAgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJ
RklFUl9IQU5ETEVSKFdlYmtpdE1hc2tCb3hJbWFnZSwgV2lkdGgpCiAKIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TGluZUhlaWdo
dChzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmxpbmVIZWlnaHQoKSk7Ci0gICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+c3BlY2lmaWVkTGluZUhlaWdodCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT5saW5lSGVpZ2h0KCkgfSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTcGVjaWZp
ZWRMaW5lSGVpZ2h0KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3BlY2lm
aWVkTGluZUhlaWdodCgpIH0pOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKQEAg
LTYyOCw4ICs2NDIsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgIGlmICghbGluZUhl
aWdodCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRM
aW5lSGVpZ2h0KGxpbmVIZWlnaHQudmFsdWUoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQudmFsdWUoKSk7CisgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IGxpbmVIZWlnaHQudmFsdWUo
KSB9KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExpbmVIZWlnaHQo
V1RGTW92ZShsaW5lSGVpZ2h0LnZhbHVlKCkpKTsKIH0KIAogI2VuZGlmCkBAIC02NjUsMjEgKzY3
OSwyMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENsaXAo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKICAgICBhdXRvKiBwYXJlbnRTdHlsZSA9IHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKTsKICAgICBpZiAoIXBhcmVudFN0eWxlLT5oYXNDbGlw
KCkpCiAgICAgICAgIHJldHVybiBhcHBseUluaXRpYWxDbGlwKHN0eWxlUmVzb2x2ZXIpOwotICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChwYXJlbnRTdHlsZS0+Y2xpcFRvcCgpLCBw
YXJlbnRTdHlsZS0+Y2xpcFJpZ2h0KCksIHBhcmVudFN0eWxlLT5jbGlwQm90dG9tKCksIHBhcmVu
dFN0eWxlLT5jbGlwTGVmdCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAo
TGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBUb3AoKSB9LCBMZW5ndGggeyBwYXJlbnRTdHlsZS0+
Y2xpcFJpZ2h0KCkgfSwKKyAgICAgICAgTGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBCb3R0b20o
KSB9LCBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xpcExlZnQoKSB9KTsKICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLQotICAgIGlmIChSZWN0KiByZWN0ID0gcHJpbWl0
aXZlVmFsdWUucmVjdFZhbHVlKCkpIHsKKyAgICBpZiAoYXV0byogcmVjdCA9IHByaW1pdGl2ZVZh
bHVlLnJlY3RWYWx1ZSgpKSB7CiAgICAgICAgIGF1dG8gY29udmVyc2lvbkRhdGEgPSBzdHlsZVJl
c29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwotICAgICAgICBMZW5n
dGggdG9wID0gcmVjdC0+dG9wKCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEp
OwotICAgICAgICBMZW5ndGggcmlnaHQgPSByZWN0LT5yaWdodCgpLT5jb252ZXJ0VG9MZW5ndGg8
Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNp
b24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IHJlY3QtPmJvdHRv
bSgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgTGVuZ3Ro
IGxlZnQgPSByZWN0LT5sZWZ0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEp
OwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAodG9wLCByaWdodCwgYm90
dG9tLCBsZWZ0KTsKKyAgICAgICAgYXV0byB0b3AgPSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVu
Z3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGF1dG8gcmlnaHQgPSByZWN0LT5yaWdo
dCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYXV0byBi
b3R0b20gPSByZWN0LT5ib3R0b20oKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZl
cnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0
YSk7CisgICAgICAgIGF1dG8gbGVmdCA9IHJlY3QtPmxlZnQoKS0+Y29udmVydFRvTGVuZ3RoPEZp
eGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9u
Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xp
cChXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUo
bGVmdCkpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUF1dG8pOwpAQCAtNzM1LDEyICs3NDksMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXMKICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9udERpcnR5KHRydWUpOwogfQog
Ci10ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KK3RlbXBsYXRlPENTU1Byb3BlcnR5SUQgcHJv
cGVydHk+CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hh
ZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VS
VChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQorICAgICAg
ICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KG51bGxwdHIpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhudWxscHRy
KTsKQEAgLTc2MSw4ICs3NzUsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAg
ICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dW
YWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBpZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgp
ID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJv
cGVydHlUZXh0U2hhZG93KQorICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxl
LCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgp
ID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBpZiAocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBh
ZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KFdURk1v
dmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhp
cyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CkBAIC0xMTU2LDIyICsxMTcwLDIyIEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsRmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIFNWR1JlbmRl
clN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUo
KTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZH
U3R5bGUoKTsKICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxGaWxsUGFpbnRUeXBlKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3Io
KSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRVcmkoKSwgc3R5bGVSZXNvbHZlci5h
cHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdEZpbGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAg
ICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vz
c1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1BhcmVudFN0eWxlID0g
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1N0
eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGF1dG8m
IHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgp
OwogICAgIHN2Z1N0eWxlLnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS5maWxsUGFpbnRUeXBl
KCksIHN2Z1BhcmVudFN0eWxlLmZpbGxQYWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLmZpbGxQ
YWludFVyaSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBz
dHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAKIH0KIAog
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRmlsbChTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwot
ICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRp
dmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRy
OworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdT
dHlsZSgpOworICAgIGNvbnN0IGF1dG8qIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZh
bHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CiAg
ICAgU3RyaW5nIHVybDsKICAgICBpZiAodmFsdWUuaXNWYWx1ZUxpc3QoKSkgewogICAgICAgICBj
b25zdCBDU1NWYWx1ZUxpc3QmIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsK
QEAgLTExODMsMTAgKzExOTcsMTAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIENvbG9yIGNvbG9yOwotICAgIFNWR1BhaW50VHlwZSBwYWludFR5
cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHX1BB
SU5UVFlQRV9SR0JDT0xPUjsKICAgICBpZiAobG9jYWxWYWx1ZS0+aXNVUkkoKSkgewogICAgICAg
ICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKLSAgICAgICAgdXJsID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KGxvY2FsVmFsdWUpLT5zdHJpbmdWYWx1ZSgpOworICAgICAgICB1
cmwgPSBsb2NhbFZhbHVlLT5zdHJpbmdWYWx1ZSgpOwogICAgIH0gZWxzZSBpZiAobG9jYWxWYWx1
ZS0+aXNWYWx1ZUlEKCkgJiYgbG9jYWxWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZUEVfTk9ORSA6
IFNWR19QQUlOVFRZUEVfVVJJX05PTkU7CiAgICAgZWxzZSBpZiAobG9jYWxWYWx1ZS0+aXNWYWx1
ZUlEKCkgJiYgbG9jYWxWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKSB7
CkBAIC0xMjA3LDE1ICsxMjIxLDE1IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsU3Ryb2tlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwotICAgIGNvbnN0IFNWR1JlbmRl
clN0eWxlJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3Zn
U3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNj
ZXNzU1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIu
cGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICBzdmdTdHlsZS5zZXRTdHJva2VQYWludChz
dmdQYXJlbnRTdHlsZS5zdHJva2VQYWludFR5cGUoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFp
bnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludFVyaSgpLCBzdHlsZVJlc29sdmVy
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVy
dHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwotICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpID8gJmRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOworICAgIGF1dG8mIHN2Z1N0eWxlID0g
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGNvbnN0IGF1dG8q
IGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CiAgICAgU3RyaW5nIHVybDsKICAgICBpZiAo
dmFsdWUuaXNWYWx1ZUxpc3QoKSkgewogICAgICAgICBjb25zdCBDU1NWYWx1ZUxpc3QmIGxpc3Qg
PSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAgLTEyMjcsNyArMTI0MSw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZShTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb2xvciBj
b2xvcjsKLSAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9SR0JDT0xP
UjsKKyAgICBhdXRvIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CiAgICAgaWYg
KGxvY2FsVmFsdWUtPmlzVVJJKCkpIHsKICAgICAgICAgcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQ
RV9VUkk7CiAgICAgICAgIHVybCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihsb2NhbFZh
bHVlKS0+c3RyaW5nVmFsdWUoKTsKQEAgLTEyNTgsNyArMTI3Miw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0U3ZnU2hhZG93KFN0eWxlUmVzb2x2
ZXImIHN0eWxlCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFN2Z1NoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICBzdmdTdHlsZS5zZXRT
aGFkb3cobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMDA0
NjllZTdmYTA5MTY2OGY2Mzg2NmFlY2I0NTRiMDMzNDEyODU3NS4uYWY0ZmJjZWZkMGEyNWNiOTA3
YjJjYjdkNjM3ZDJlYWM3OGJhNDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTY4LDcgKzE2OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpj
YWNoZUJvcmRlckFuZEJhY2tncm91bmQoKQogICAgIG1faGFzVUFBcHBlYXJhbmNlID0gbV9zdHls
ZS0+aGFzQXBwZWFyYW5jZSgpOwogICAgIGlmIChtX2hhc1VBQXBwZWFyYW5jZSkgewogICAgICAg
ICBtX2JvcmRlckRhdGEgPSBtX3N0eWxlLT5ib3JkZXIoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5k
RGF0YSA9ICptX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgIG1fYmFja2dyb3Vu
ZERhdGEgPSBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgIG1fYmFja2dyb3Vu
ZENvbG9yID0gbV9zdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogfQpAQCAtMTMyOCw3
ICsxMzI4LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNv
bnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICAgICAgLy8gV2UgY2FuIGJ1
aWxkIHVwIHRoZSBzdHlsZSBieSBjb3B5aW5nIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcyBmcm9t
IGFuIGVhcmxpZXIgc3R5bGUgb2JqZWN0IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGV4YWN0CiAgICAg
ICAgIC8vIHN0eWxlIGRlY2xhcmF0aW9ucy4gV2UgdGhlbiBvbmx5IG5lZWQgdG8gYXBwbHkgdGhl
IGluaGVyaXRlZCBwcm9wZXJ0aWVzLCBpZiBhbnksIGFzIHRoZWlyIHZhbHVlcyBjYW4gZGVwZW5k
IG9uIHRoZSAKICAgICAgICAgLy8gZWxlbWVudCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNh
dmVzIG1lbW9yeSBieSByZXVzaW5nIHRoZSBzdHlsZSBkYXRhIHN0cnVjdHVyZXMuCi0gICAgICAg
IHN0YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNhY2hlSXRlbS0+cmVuZGVyU3R5
bGUuZ2V0KCkpOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbSgq
Y2FjaGVJdGVtLT5yZW5kZXJTdHlsZSk7CiAgICAgICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgp
LT5pbmhlcml0ZWREYXRhU2hhcmVkKGNhY2hlSXRlbS0+cGFyZW50UmVuZGVyU3R5bGUuZ2V0KCkp
ICYmICFpc0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkpIHsKICAgICAgICAgICAgIEVJbnNpZGVM
aW5rIGxpbmtTdGF0dXMgPSBzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCk7CiAgICAgICAgICAg
ICAvLyBJZiB0aGUgY2FjaGUgaXRlbSBwYXJlbnQgc3R5bGUgaGFzIGlkZW50aWNhbCBpbmhlcml0
ZWQgcHJvcGVydGllcyB0byB0aGUgY3VycmVudCBwYXJlbnQgc3R5bGUgdGhlbiB0aGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tYWtlcHJvcC5wbAppbmRleCA4NWQ5Mzc3Nzc1OTM4ODFiMGFmZThmNWJiOWVmZDZjMDQ2YjYy
MDhmLi4zNWFiNGE3ODI2OTdiMjcwOWQ3MDEwZTNkNjQ0NTE1NGY3NjVhNWE2IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L21ha2Vwcm9wLnBsCkBAIC02MzQsOCArNjM0LDggQEAgc3ViIGdlbmVyYXRlQW5pbWF0aW9uUHJv
cGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICBteSAkaW5kZW50ID0gc2hpZnQ7CiAKICAgbXkg
JHNldHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJBbmlt
YXRpb25MaXN0JiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJlQW5p
bWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKLSAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNN
ZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJh
dXRvJiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJlQW5pbWF0aW9u
c09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJhdXRvKiBwYXJlbnRMaXN0ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHls
ZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xu
IjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzaXplX3QgaSA9IDAsIHBhcmVudFNp
emUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0
LT5hbmltYXRpb24oaSkuIiAuIGdldFRlc3RGdW5jdGlvbigkbmFtZSkgLiAiKCk7ICsraSkge1xu
IjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKGxpc3Quc2l6ZSgpIDw9
IGkpXG4iOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHN1YiBnZW5lcmF0ZUFuaW1hdGlvblByb3BlcnR5
SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
bGlzdC5hbmltYXRpb24oaSkuc2V0QW5pbWF0aW9uTW9kZShwYXJlbnRMaXN0LT5hbmltYXRpb24o
aSkuYW5pbWF0aW9uTW9kZSgpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
fVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhl
IHByb3BlcnR5IHNldC4gKi9cbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiLy8g
UmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBz
ZXQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8IGxpc3Qu
c2l6ZSgpOyArK2kpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBsaXN0
LmFuaW1hdGlvbihpKS4iIC4gZ2V0Q2xlYXJGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogCkBA
IC02OTQsMTEgKzY5NCwxMSBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaXRpYWxW
YWx1ZVNldHRlciB7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIvLyBDaGVjayBmb3IgKHNpbmdsZS1sYXllcikgbm8tb3AgYmVmb3Jl
IGNsZWFyaW5nIGFueXRoaW5nLlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJj
b25zdCBGaWxsTGF5ZXImIGxheWVycyA9ICpzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRM
YXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gImF1dG8mIGxheWVycyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVy
c0Z1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiaWYgKCFsYXllcnMubmV4dCgpICYmICghbGF5ZXJzLiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigp
IHx8IGxheWVycy4iIC4gJGdldHRlciAuICIoKSA9PSAkaW5pdGlhbCkpXG4iOwogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29udGVudCAu
PSAiXG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogY2hpbGQg
PSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlvbigk
bmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8qIGNo
aWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVuY3Rp
b24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJjaGls
ZC0+IiAuICRzZXR0ZXIgLiAiKCIgLiAkaW5pdGlhbCAuICIpO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICJmb3IgKGNoaWxkID0gY2hpbGQtPm5leHQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHQoKSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
IGNoaWxkLT4iIC4gJGNsZWFyRnVuY3Rpb24gLiAiKCk7XG4iOwpAQCAtNzE3LDEyICs3MTcsMTIg
QEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogCiAg
IG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
Ly8gQ2hlY2sgZm9yIG5vLW9wIGJlZm9yZSBjb3B5aW5nIGFueXRoaW5nLlxuIjsKLSAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+
IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuIigpID09ICpzdHlsZVJlc29sdmVyLnN0eWxl
KCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOworICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gImlmIChzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIg
LiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOwogICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAiXG4iOwog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8qIGNoaWxkID0gJnN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xu
IjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hp
bGQgPSBudWxscHRyO1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1
dG8qIHBhcmVudCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1
bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24g
LiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOworICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVu
dC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxkKSB7XG4iOwog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0
TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5h
bWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGNo
aWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKQEAgLTc0NCw3ICs3NDQsNyBAQCBzdWIg
Z2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgbXkgJENTU1Byb3BlcnR5
SWQgPSAiQ1NTUHJvcGVydHkiIC4gJG5hbWVUb0lkeyRuYW1lfTsKIAogICBteSAkc2V0dGVyQ29u
dGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogY2hp
bGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlv
bigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8q
IGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVu
Y3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJG
aWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkgJiYgIWlzPENTU0ltYWdl
U2V0VmFsdWU+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBu
ZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CkBAIC04NTAsNyArODUwLDcgQEAgc3ViIGdlbmVyYXRl
SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgfQogICBpZiAoISRkaWRDYWxsU2V0VmFsdWUpIHsKICAg
ICBteSAkaW5oZXJpdGVkVmFsdWUgPSAkcGFyZW50U3R5bGUgLiAiLT4iIC4gKCRpc1NWRyA/ICJz
dmdTdHlsZSgpLiIgOiAiIikgLiAgJGdldHRlciAuICIoKSI7Ci0gICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5hbWUsICRp
bmhlcml0ZWRWYWx1ZSkgLiAiO1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICAiIC4gZ2VuZXJhdGVTZXRWYWx1ZVN0YXRlbWVudCgkbmFtZSwgImZvcndhcmRJbmhlcml0
ZWRWYWx1ZSgiIC4gJGluaGVyaXRlZFZhbHVlIC4gIikiKSAuICI7XG4iOwogICB9CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAifVxuIjsKIApAQCAtODY5LDcgKzg2OSw3IEBAIHN1YiBn
ZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgICAkY29udmVydGVkVmFsdWUgPSAiU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7
JG5hbWV9eyJjb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpIjsKICAgfSBlbHNp
ZiAoZXhpc3RzKCRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25k
aXRpb25hbC1jb252ZXJ0ZXIifSkpIHsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25kaXRpb25h
bC1jb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpO1xuIjsKLSAgICAkY29udmVy
dGVkVmFsdWUgPSAiY29udmVydGVkVmFsdWUudmFsdWUoKSI7CisgICAgJGNvbnZlcnRlZFZhbHVl
ID0gIldURk1vdmUoY29udmVydGVkVmFsdWUudmFsdWUoKSkiOwogICB9IGVsc2UgewogICAgICRj
b252ZXJ0ZWRWYWx1ZSA9ICJkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIjsKICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTQxMmViNWFlNWEwYTc4ZGM4NTJjNDBmM2Fh
YzcwYjRhNmRhZjc3Mi4uY2Q3MTU0NDFlN2Q5Y2E1NmM0ZjcyZTMxZjhjZWE1N2ZmMDYzMzdlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBib29sIERvY3Vt
ZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpCiB2b2lkIERvY3VtZW50OjpwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwg
aW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQm
IG1hcmdpbkxlZnQpCiB7CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHls
ZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICBhdXRvIHN0eWxlID0gc3R5bGVTY29wZSgpLnJlc29s
dmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CiAKICAgICBpbnQgd2lkdGggPSBwYWdlU2l6
ZS53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQoKTsKQEAgLTIwODgs
MTEgKzIwODgsMTEgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMo
aW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICAgICAgICAgIHN0ZDo6
c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQQUdFX1NJWkVf
UkVTT0xWRUQ6IHsKLSAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7
Ci0gICAgICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKLSAgICAgICAgQVNTRVJU
KHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0
aChzaXplLndpZHRoKCksIDApOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzaXpl
LmhlaWdodCgpLCAwKTsKKyAgICAgICAgYXV0byYgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6ZSgpOwor
ICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aC5pc0ZpeGVkKCkpOworICAgICAgICBBU1NFUlQoc2l6
ZS5oZWlnaHQuaXNGaXhlZCgpKTsKKyAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChzaXpl
LndpZHRoLCAwKTsKKyAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS5oZWlnaHQs
IDApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aC5jcHAKaW5kZXggYzJiZGQwNTY3Nzg2N2EwMjljNTFhZmEzZTdjZjk3MzdlZTc5NmViZS4u
Nzc3MTI4MWFiOTQ3YTMxNGY2NDBhMDlhYmQzZTQ3OGI3MjI2MjNkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50UGF0aC5jcHAKQEAgLTI1OCwyMyArMjU4LDIxIEBAIGJvb2wgRXZlbnRQYXRoOjpoYXNFdmVu
dExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIFZlY3RvcjxF
dmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KGNvbnN0
IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4g
cGF0aDsKLSAgICBjb25zdCBOb2RlKiB0YXJnZXROb2RlID0gY29uc3RfY2FzdDxFdmVudFRhcmdl
dCY+KHRhcmdldCkudG9Ob2RlKCk7CisgICAgYXV0byogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nhc3Q8
RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOwogICAgIGlmICghdGFyZ2V0Tm9kZSkgewot
ICAgICAgICBjb25zdCBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGNvbnN0X2Nhc3Q8RXZlbnRUYXJn
ZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CisgICAgICAgIGF1dG8qIGRvbVdpbmRvdyA9IGNv
bnN0X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CiAgICAgICAgIGlm
ICghZG9tV2luZG93KQogICAgICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgICAgIHRhcmdldE5v
ZGUgPSBkb21XaW5kb3ctPmRvY3VtZW50KCk7CiAgICAgICAgIEFTU0VSVCh0YXJnZXROb2RlKTsK
ICAgICB9Ci0KICAgICBmb3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKLSAgICAgICAgaWYg
KE5vZGUqIG5vZGVJblBhdGggPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCktPnRvTm9kZSgpKSB7
CisgICAgICAgIGlmIChhdXRvKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgp
LT50b05vZGUoKSkgewogICAgICAgICAgICAgaWYgKCF0YXJnZXROb2RlLT5pc0Nsb3NlZFNoYWRv
d0hpZGRlbigqbm9kZUluUGF0aCkpCiAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQoY29udGV4
dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwYXRoLmFw
cGVuZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgIH0KLQogICAgIHJldHVybiBwYXRo
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggYTJlOTYxMWQ2YzU0ODg4NjE0
NmJiYTkxYTEwNWQ4MDkxYjhjZmFhZS4uZGVlNjQ2YzM3ZDE1YWQ0NDMzYzAzMWI1ZTNhNWFjNDFl
NjE0Mjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0ID0gMDsK
IAogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlv
blR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlvblR5
cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KLSAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUo
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9kZS5n
ZXQoKSk7IH0KKyAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdCB7IHJldHVybiBt
X293bmVyTm9kZTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIWF0dHJOYW1lIHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFu
Z2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0ck5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAppbmRleCBjYzFhNmE0YTA2NjY4ZjYwNGJjYmRkNDNjNGViNjJjN2E3MjY2ZTYyLi41
YmEzN2NmODA2ZWJkY2VmYTMyYTM2NWRlOWM2ZGNiNjNiNGVhMjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIEV2ZW50VGFyZ2V0KiBNZXNzYWdl
RXZlbnQ6OnNvdXJjZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9zb3VyY2UudmFsdWUoKSwKLSAgICAgICAgW10oY29uc3QgUmVm
UHRyPERPTVdpbmRvdz4mIHdpbmRvdykgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8RXZlbnRUYXJnZXQqPihzdGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KHdpbmRvdy5n
ZXQoKSkpOyB9LAotICAgICAgICBbXShjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNzYWdl
UG9ydCkgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRUYXJnZXQqPihz
dGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KG1lc3NhZ2VQb3J0LmdldCgpKSk7IH0KKyAg
ICAgICAgW10gKGNvbnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0
KiB7IHJldHVybiBjb25zdF9jYXN0PERPTVdpbmRvdyo+KHdpbmRvdy5nZXQoKSk7IH0sCisgICAg
ICAgIFtdIChjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNzYWdlUG9ydCkgLT4gRXZlbnRU
YXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPihtZXNzYWdlUG9ydC5nZXQo
KSk7IH0KICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTJmYmJjZjgxYTEzY2ZkMDQw
NWUxMjAzOTFlNTJiM2RlNWQzZTI4OS4uM2M3MTIwZWFhNGY4YTMwYjlmNDZiOGI1YWE5OTZkN2Y4
NjE3ZThjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDMwLDExICs0MzAsMTAgQEAgc3RhdGljIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5n
VmVjdG9yKGNvbnN0IFYKICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldDsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHZhcmlhbnQgOiB2ZWN0b3IpIHsKICAgICAgICAgV1RGOjpzd2l0Y2hP
bih2YXJpYW50LAotICAgICAgICAgICAgWyZdKGNvbnN0IFJlZlB0cjxOb2RlPiYgbm9kZSkgeyBu
b2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdldCgpKSk7IH0sCi0gICAgICAgICAg
ICBbXShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPE5v
ZGU+JiBub2RlKSB7IG5vZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0KCkpKTsg
fSwKKyAgICAgICAgICAgIFtdIChjb25zdCBTdHJpbmcmKSB7IH0KICAgICAgICAgKTsKICAgICB9
Ci0KICAgICByZXR1cm4gbm9kZVNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4MDNmOGZlMjNm
NzM3MGJjY2NkMmE3NWY3MDM5MTU3M2ZlYWQzYTdkLi5iOWEwMjJkNTBkMTM2OGQ5MzUzZjAyY2I1
MDIzM2U3OTAxZGQyOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gY3JlYXRlKERvY3VtZW50Jiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflJhbmdlKCk7CiAKLSAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX293bmVyRG9jdW1lbnQuZ2V0KCkp
OyB9CisgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX293bmVy
RG9jdW1lbnQ7IH0KIAogICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyBBU1NFUlQo
bV9zdGFydC5jb250YWluZXIoKSk7IHJldHVybiAqbV9zdGFydC5jb250YWluZXIoKTsgfQogICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5vZmZzZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAppbmRleCAx
MGIyYWQ5NDNjYzNiOTAzMzFkYzdhYjY4ZDU1ZmNmOTQ5MmZlMDgyLi4yYTU4YTNmYTBiYzFkOWU1
NGI2YTFjMzQ1MWE5NzI5YTYzNzJhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFdURk1vdmUobGlzdGVu
ZXIpLCBvcHRpb25zKSk7CiAgICAgfQogCi0gICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJhY2soKSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXImPihtX2NhbGxiYWNrLmdldCgp
KTsgfQorICAgIEV2ZW50TGlzdGVuZXImIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
YmFjazsgfQogICAgIGJvb2wgdXNlQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlQ2FwdHVy
ZTsgfQogICAgIGJvb2wgaXNQYXNzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Bhc3NpdmU7IH0K
ICAgICBib29sIGlzT25jZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbmNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MWU2ZDEzMzFmNDQyM2MxNWM5ODc2OWY5YTIyNzRj
ZWQwYWQwZmYuLjFkNTJlNTg4OGUyNzFiMGU4MWIzMDVmMWVmMGM5YzI4ZGM1ZmM0YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFNjcmlwdFJ1bm5l
cjo6flNjcmlwdFJ1bm5lcigpCiAgICAgfQogICAgIGZvciAoYXV0byYgcGVuZGluZ1NjcmlwdCA6
IG1fcGVuZGluZ0FzeW5jU2NyaXB0cykgewogICAgICAgICBpZiAocGVuZGluZ1NjcmlwdC0+d2F0
Y2hpbmdGb3JMb2FkKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFBlbmRpbmdTY3JpcHQmPihw
ZW5kaW5nU2NyaXB0LmdldCgpKS5jbGVhckNsaWVudCgpOworICAgICAgICAgICAgcGVuZGluZ1Nj
cmlwdC0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9kb2N1bWVudC5kZWNyZW1lbnRMb2FkRXZl
bnREZWxheUNvdW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CmluZGV4IDZmYWFkNDA3NTA1MDQ1MGRkM2I5MDliZWRhYzAwMzAwY2M5ZTJhODYuLjQ4MDEyNmI2
NTE2YjdlNzk1MzhiNjI5ZmI4NmFlYzAyYzkxNzJmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBpbmxpbmUgQ29sbGVjdGlvblR5cGUgSFRN
TENvbGxlY3Rpb246OnR5cGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTENv
bGxlY3Rpb246Om93bmVyTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KG1fb3duZXJOb2RlLmdldCgpKTsKKyAgICByZXR1cm4gbV9vd25lck5vZGU7
CiB9CiAKIGlubGluZSBEb2N1bWVudCYgSFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAppbmRleCBlZjIwNmY2
YzFlMWE1NjE0NzUwOTZlMjJhYjc5N2QzMjJjOWJlMTBmLi45ODUzMTk4MzFiMTUzMjliYmE5NGZj
ZmE5MDU0NGU4Y2YzN2NmYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU3RhY2tJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0
YWNrSXRlbS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIFJlZjxIVE1MU3RhY2tJdGVtPiBI
VE1MU3RhY2tJdGVtOjpjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiAKIGlubGlu
ZSBDb250YWluZXJOb2RlJiBIVE1MU3RhY2tJdGVtOjpub2RlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9ub2RlLmdldCgpKTsKKyAgICByZXR1cm4g
bV9ub2RlLmdldCgpOwogfQogCiBpbmxpbmUgRWxlbWVudCYgSFRNTFN0YWNrSXRlbTo6ZWxlbWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCmluZGV4IDNhYzI4NzA3NzNiODM0MGFlNWUzYjRiOTY3MjkyYWRjZDJiMDkz
MTEuLmMyZTUxNGNiN2M3MjExYmMzN2MyNDMyOGJkNDAyZjQ5ZTY4NDQ4YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0x
MzMsNTggKzEzMyw0NCBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlw
dFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbAogewogICAgIHNldE1haW5U
aHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKIAotICAgIGZvciAoYXV0byYgcGFnZSA6IHBh
Z2VHcm91cC5wYWdlcygpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKHBhZ2UsIHBhdXNl
ZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2Vk
KFBhZ2UqIHBhZ2UsIGJvb2wgcGF1c2VkKQotewotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7
Ci0KLSAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7Ci0KLSAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChmcmFtZSwgcGF1
c2VkKTsKLQotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkg
ewotICAgICAgICBpZiAocGF1c2VkKQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQtPnBhZ2VQ
YXVzZWQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQtPnBhZ2VV
bnBhdXNlZCgpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5wYWdlcygpKSB7Cisg
ICAgICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoKmZy
YW1lLCBwYXVzZWQpOworCisgICAgICAgIGlmIChhdXRvKiBmcm9udGVuZENsaWVudCA9IHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSB7CisgICAg
ICAgICAgICBpZiAocGF1c2VkKQorICAgICAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50LT5wYWdl
UGF1c2VkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJvbnRlbmRDbGll
bnQtPnBhZ2VVbnBhdXNlZCgpOworICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJvb2wgcGF1
c2VkKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJh
bWUmIGZyYW1lLCBib29sIHBhdXNlZCkKIHsKLSAgICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7
Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRv
RXhlY3V0ZVNjcmlwdCkpCisgICAgaWYgKCFmcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1l
LT5zY3JpcHQoKS5zZXRQYXVzZWQocGF1c2VkKTsKKyAgICBmcmFtZS5zY3JpcHQoKS5zZXRQYXVz
ZWQocGF1c2VkKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgp
OworICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpm
cmFtZS5kb2N1bWVudCgpOwogICAgIGlmIChwYXVzZWQpIHsKLSAgICAgICAgZG9jdW1lbnQtPnN1
c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICAgICAgZG9j
dW1lbnQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlw
dERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoQWN0
aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwotICAgICAgICBkb2N1bWVu
dC0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAg
IGRvY3VtZW50LnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5yZXN1bWVTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB9CiAKLSAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyogdmlldywgYm9vbCBwYXVzZWQpCi17
Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxk
IDogdmlldy0+Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPigq
Y2hpbGQpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZG93bmNhc3Q8UGx1Z2lu
Vmlld0Jhc2U+KCpjaGlsZCkuc2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAgIGlmIChh
dXRvKiB2aWV3ID0gZnJhbWUudmlldygpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiB2
aWV3LT5jaGlsZHJlbigpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPihj
aGlsZC5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBkb3du
Y2FzdDxQbHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1
c2VkKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDNiNDk3OTFlZTI5ZTVjNTBmMGEzYzhh
YzFjNDE2ZGE1YTdjNzdiZDEuLjdmNThjNmM4YjA0OGJmM2RjMjc3YWI5ZGY2NWZlYTI0NjgyMmI3
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJh
bWU7Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZUdyb3VwOwogCkBA
IC01Niw5ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNl
ZEludGVybmFsKCk7CiAKICAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdy
b3VwJiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChQYWdlKiwg
Ym9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSosIGJvb2wg
cGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiwgYm9vbCBw
YXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSYsIGJvb2wgcGF1c2Vk
KTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAppbmRleCA0ZTgyNzU0NWUyYzA4ZTRkM2VmYTIyNGE2M2RmZDVlYjM1
NzBhOWNiLi4yOTViOTRhMWE1NTViMmEyOGU3NTAzNmM2YjFkMDI1NzA3Mjk5N2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTc0MSw3ICs3NDEs
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0o
SGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9
IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNo
aWxkRnJhbWUpOwogCi0gICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1
cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxkSXRl
bS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNoaWxkSXRlbSwgZnJvbUNoaWxk
SXRlbSk7CiAgICAgfQogfQogCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBm
cm9tSXQKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hp
bGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9tQ2hp
bGRJdGVtKTsKICAgICAgICAgaWYgKEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCku
Y2hpbGQoY2hpbGRGcmFtZU5hbWUpKQotICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihjaGls
ZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKKyAgICAgICAgICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjaGlsZEl0ZW0sIGZyb21D
aGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwYmIy
ODhlYWVmY2Y4MDgxYjFmMGNmNDFkYzU2YTlhMTg3N2NmZTdlLi5kNWE1MTA2MDE3NGE4NzA2Zjg5
OWQ1Mjg4NGFkNmJiNGNmNjcwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzIzLDMxICs3
MjMsMjcgQEAgUmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CiAKIFJl
bmRlcldpZGdldCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBjb25zdAogewotICAgIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CisgICAgYXV0byog
b3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CiAgICAgaWYgKCFvd25lckVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8qIG9iamVjdCA9IG93bmVyRWxlbWVudC0+
cmVuZGVyZXIoKTsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgLy8gRklYTUU6IElmIDxvYmplY3Q+IGlzIGV2ZXIgZml4ZWQgdG8gZGlzYXNzb2NpYXRlIGl0
c2VsZiBmcm9tIGZyYW1lcwogICAgIC8vIHRoYXQgaXQgaGFzIHN0YXJ0ZWQgYnV0IGNhbmNlbGVk
LCB0aGVuIHRoaXMgY2FuIHR1cm4gaW50byBhbiBBU1NFUlQKLSAgICAvLyBzaW5jZSBtX293bmVy
RWxlbWVudCB3b3VsZCBiZSAwIHdoZW4gdGhlIGxvYWQgaXMgY2FuY2VsZWQuCisgICAgLy8gc2lu
Y2UgbV9vd25lckVsZW1lbnQgd291bGQgYmUgbnVsbHB0ciB3aGVuIHRoZSBsb2FkIGlzIGNhbmNl
bGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU4
NQotICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0Pigqb2JqZWN0KSkKKyAgICBpZiAoIWlzPFJlbmRl
cldpZGdldD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlcldpZGdldD4ob2JqZWN0KTsKIH0KIAotRnJhbWUqIEZyYW1lOjpmcmFtZUZv
cldpZGdldChjb25zdCBXaWRnZXQqIHdpZGdldCkKK0ZyYW1lKiBGcmFtZTo6ZnJhbWVGb3JXaWRn
ZXQoY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUX0FSRyh3aWRnZXQsIHdpZGdl
dCk7Ci0KLSAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6Zmlu
ZCh3aWRnZXQpKQorICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6ZmluZCh3
aWRnZXQpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPmZyYW1lT3duZXJFbGVtZW50KCkuZG9j
dW1lbnQoKS5mcmFtZSgpOwogCiAgICAgLy8gQXNzdW1lIGFsbCB3aWRnZXRzIGFyZSBlaXRoZXIg
YSBGcmFtZVZpZXcgb3Igb3duZWQgYnkgYSBSZW5kZXJXaWRnZXQuCiAgICAgLy8gRklYTUU6IFRo
YXQgYXNzdW1wdGlvbiBpcyBub3QgcmlnaHQgZm9yIHNjcm9sbCBiYXJzIQotICAgIHJldHVybiAm
ZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5mcmFtZSgpOworICAgIHJldHVybiAmZG93bmNh
c3Q8RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCk7CiB9CiAKIHZvaWQgRnJhbWU6OmNsZWFyVGlt
ZXJzKEZyYW1lVmlldyAqdmlldywgRG9jdW1lbnQgKmRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmlu
ZGV4IDY4MzQxMTA3ZDk4MWM0YTMyYWJlYjljNTEwOTNjODdhODFkZjg2NTUuLjlhOGY3M2NjYjU4
ZDc3ZWRkNDkxOTZhNTdmZmRiYWYxMzhhMWVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE2NCw3
ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFz
VGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Jik7CiAK
ICAgICBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiAqbV9zZXR0aW5nczsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNzcwNzVmZDU3OWJmY2IzOWY2NmY2ZDkz
NjY5ZGVkNTA3NmEwMzc0NS4uYjI5MTIzNjNmMjFkZDgwZDZiZTAxMGQwOGFjYTI3YWU5MmY3NWIx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMyw3ICszLDcgQEAKICAqICAgICAg
ICAgICAgICAgICAgICAgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgogICogICAgICAg
ICAgICAgICAgICAgICAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgogICog
ICAgICAgICAgICAgICAgICAgICAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3Jh
aGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MDYsMTggKzUwNiwxNyBAQCBib29sIEZyYW1lVmll
dzo6ZGlkRmlyc3RMYXlvdXQoKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRhdGVSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewotICAgICAgICBp
ZiAoSG9zdFdpbmRvdyogd2luZG93ID0gaG9zdFdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93
LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKKyAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmludmFs
aWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCByZXBhaW50UmVjdCA9IHJl
Y3Q7Ci0gICAgcmVwYWludFJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVy
ZXItPnBhZGRpbmdMZWZ0KCksCi0gICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+Ym9yZGVy
VG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKKyAgICByZXBhaW50UmVjdC5tb3ZlKHJl
bmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwgcmVuZGVyZXIt
PmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CiAgICAgcmVuZGVyZXItPnJl
cGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOwogfQogCkBAIC01NDQsMTQgKzU0MywxNiBAQCB2
b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpCiB9CiAK
ICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisKIGJvb2wgRnJhbWVWaWV3Ojpz
Y2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RX
aW5kb3coKSkgewotICAgICAgICB3aW5kb3ctPnNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogcGFnZSA9
IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHBhZ2UtPmNocm9tZSgpLnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIHRydWU7
CiB9CisKICNlbmRpZgogCiB2b2lkIEZyYW1lVmlldzo6c2V0TWFyZ2luV2lkdGgoTGF5b3V0VW5p
dCB3KQpAQCAtMTA1NiwyMiArMTA1NywyMiBAQCBHcmFwaGljc0xheWVyKiBGcmFtZVZpZXc6Omdy
YXBoaWNzTGF5ZXJGb3JQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybQogewog
ICAgIC8vIFRvIGZpbmQgdGhlIFdpZGdldCB0aGF0IGNvcnJlc3BvbmRzIHdpdGggcGxhdGZvcm1X
aWRnZXQgd2UgaGF2ZSB0byBkbyBhIGxpbmVhcgogICAgIC8vIHNlYXJjaCBvZiBvdXIgY2hpbGQg
d2lkZ2V0cy4KLSAgICBXaWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKKyAgICBjb25zdCBX
aWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IGNo
aWxkcmVuKCkpIHsKICAgICAgICAgaWYgKHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSAhPSBwbGF0
Zm9ybVdpZGdldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3VuZFdpZGdldCA9
IHdpZGdldC5nZXQoKTsKKyAgICAgICAgZm91bmRXaWRnZXQgPSB3aWRnZXQucHRyKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICghZm91bmRXaWRnZXQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5k
KGZvdW5kV2lkZ2V0KTsKKyAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZp
bmQoKmZvdW5kV2lkZ2V0KTsKICAgICBpZiAoIXJlbmRlcldpZGdldCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZW5kZXJMYXllciogd2lkZ2V0TGF5ZXIgPSByZW5kZXJXaWRnZXQt
PmxheWVyKCk7CisgICAgYXV0byogd2lkZ2V0TGF5ZXIgPSByZW5kZXJXaWRnZXQtPmxheWVyKCk7
CiAgICAgaWYgKCF3aWRnZXRMYXllciB8fCAhd2lkZ2V0TGF5ZXItPmlzQ29tcG9zaXRlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjE4MCwxMSArMjE4MSwxMSBAQCBib29sIEZy
YW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmICghbV92
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyB8fCBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEs
IHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21l
KCkuc2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgYm9vbCBpc0NvbXBvc2l0ZWRDb250ZW50
TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAgIGJvb2wgaXNDb21wb3NpdGVk
Q29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIAogICAgIC8vIEdldCB0
aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Nyb2xs
CiAgICAgUmVnaW9uIHJlZ2lvblRvVXBkYXRlOwpAQCAtMjIyMCw3ICsyMjIxLDcgQEAgYm9vbCBG
cmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QKICAgICB9CiAKICAgICAvLyAxKSBzY3JvbGwKLSAgICBob3N0V2lu
ZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAg
ZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xs
LCBjbGlwUmVjdCk7CiAKICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZWN0
cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCiAgICAgZm9yIChhdXRvJiB1cGRhdGVSZWN0IDog
cmVnaW9uVG9VcGRhdGUucmVjdHMoKSkgewpAQCAtMjIzNSw3ICsyMjM2LDcgQEAgYm9vbCBGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QKICAgICAgICAgfQogICAgICAgICBpZiAoY2xpcHNSZXBhaW50cygpKQog
ICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKLSAgICAgICAg
aG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0KTsK
KyAgICAgICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmludmFsaWRhdGVDb250ZW50c0FuZFJv
b3RWaWV3KHVwZGF0ZVJlY3QpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjY0Miw5
ICsyNjQzLDEwIEBAIGJvb2wgRnJhbWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUo
Y29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogCiBIb3N0V2luZG93KiBGcmFtZVZpZXc6
Omhvc3RXaW5kb3coKSBjb25zdAogewotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdl
KCkpCi0gICAgICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKIH0KIAogdm9p
ZCBGcmFtZVZpZXc6OmFkZFRyYWNrZWRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCkBA
IC0yNzg0LDEwICsyNzg2LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RUaWxlZEJhY2tpbmdT
Y3JvbGxhYmlsaXR5KCkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKKwogdm9pZCBGcmFtZVZpZXc6
OnVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKQogewogICAgIGFkanVzdFRpbGVkQmFja2lu
Z1Njcm9sbGFiaWxpdHkoKTsKIH0KKwogI2VuZGlmCiAKIHN0YXRpYyBMYXllckZsdXNoVGhyb3R0
bGVTdGF0ZTo6RmxhZ3MgZGV0ZXJtaW5lTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUoUGFnZSYgcGFn
ZSkKQEAgLTQwODIsOCArNDA4Niw2IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIoKQogICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUoKmNvcm5l
clN0eWxlKSk7CiAgICAgICAgIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoY29ybmVyUmVjdCk7CiAg
ICAgfQotCi0gICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiB9CiAKIHZvaWQg
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGNvcm5lclJlY3QpCkBAIC00MTU3LDE1ICs0MTU5LDE0IEBAIENvbG9yIEZy
YW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgd2lkZ2V0IDog
Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgewotICAg
ICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuaGFzQ3VzdG9tU2Nyb2xs
YmFycygpKQorICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpKSB7CisgICAg
ICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpLmhhc0N1c3RvbVNj
cm9sbGJhcnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNl
IGlmIChpczxTY3JvbGxiYXI+KCp3aWRnZXQpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8
U2Nyb2xsYmFyPigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQorICAgICAgICB9IGVsc2Ug
aWYgKGlzPFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKSkgeworICAgICAgICAgICAgaWYgKGRvd25j
YXN0PFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKS5pc0N1c3RvbVNjcm9sbGJhcigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC00MTczLDExICs0MTc0LDEwIEBAIEZyYW1lVmlldyogRnJhbWVWaWV3Ojpw
YXJlbnRGcmFtZVZpZXcoKSBjb25zdAogewogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCkudHJl
ZSgpLnBhcmVudCgpKQotICAgICAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKLQotICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhcmVudEZyYW1lID0gZnJhbWUoKS50cmVlKCku
cGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojpp
c0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKSBjb25zdApAQCAtNTE4Myw4ICs1MTgz
LDggQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpCiAgICAgLy8gc2Ny
aXB0cyBpbiByZXNwb25zZSB0byBOUFBfU2V0V2luZG93LCBmb3IgZXhhbXBsZSksIHNvIHdlIG5l
ZWQgdG8ga2VlcCB0aGUgV2lkZ2V0cwogICAgIC8vIGFsaXZlIGR1cmluZyBlbnVtZXJhdGlvbi4K
ICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IGNvbGxlY3RBbmRQcm90ZWN0V2lkZ2V0cyhtX3dpZGdl
dHNJblJlbmRlclRyZWUpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dCA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBhdXRv
IGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVyV2lkZ2V0LT51cGRhdGVXaWRnZXRQb3NpdGlvbigp
OworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoKndpZGdl
dCkpIHsKKyAgICAgICAgICAgIGF1dG8gaWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJlci0+dXBk
YXRlV2lkZ2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShpZ25vcmVXaWRn
ZXRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAy
M2E3ZmQxYjQ0ZjZlZTkwNDIwYjIwNTA4OTNjNzgzYWFlODUwM2I2Li43MTFiNzRiNDY3YjM3NTg4
NGEzNTc4YTQwMmE0ZTQ0YzQ2MjMzNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQs
NyArNCw3IEBACiAgICAgICAgICAgICAgKEMpIDE5OTgsIDE5OTkgVG9yYmVuIFdlaXMgKHdlaXNA
a2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICAgICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQotICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NCwxNiArNzQsMTYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+RnJhbWVWaWV3KCk7CiAKLSAgICBIb3N0V2luZG93KiBo
b3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygp
IGNvbnN0IGZpbmFsOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJl
Y3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0g
ICAgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgc2NoZWR1bGVB
bmltYXRpb24oKSBmaW5hbDsKICNlbmRpZgogCi0gICAgRnJhbWUmIGZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxGcmFtZSY+KG1fZnJhbWUuZ2V0KCkpOyB9CisgICAgRnJhbWUmIGZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVu
ZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCkBAIC05NSwxNSArOTUsMTUgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TWFyZ2luV2lkdGgoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRNYXJn
aW5IZWlnaHQoTGF5b3V0VW5pdCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhbkhh
dmVTY3JvbGxiYXJzKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVDYW5IYXZlU2Nyb2xsYmFycygpOwogCi0gICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Ny
b2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8U2Nyb2xsYmFy
PiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGZpbmFsOwogCi0gICAgYm9v
bCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhdm9p
ZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldENvbnRlbnRz
U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c1Np
emUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c1NpemUoKSBmaW5hbDsKIAogICAgIHZvaWQg
bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gdHJ1ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBkaWRGaXJzdExheW91dCgpIGNvbnN0OwpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1X
aWRnZXQoUGxhdGZvcm1XaWRnZXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVM
YXllckZsdXNoQWxsb3dpbmdUaHJvdHRsaW5nKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBUaWxl
ZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBJ
biB0aGUgZnV0dXJlIHdoZW4gYW55IFNjcm9sbGFibGVBcmVhIGNhbiBoYXZlIGEgbm9kZSBpbiB0
aCBTY3JvbGxpbmdUcmVlLCB0aGlzIHNob3VsZAogICAgIC8vIGJlY29tZSBhIHZpcnR1YWwgZnVu
Y3Rpb24gb24gU2Nyb2xsYWJsZUFyZWEuCkBAIC0yMjUsMjEgKzIyNSwyMSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KEludFNpemUpOwogICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygp
IGNvbnN0OwogICAgIAotICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckZyYW1lT3duZXIoY29uc3QgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgYm9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKIAotICAg
IGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBm
bG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVj
dChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXhlZFZpc2libGVDb250
ZW50UmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xsUG9z
aXRpb24mKSBvdmVycmlkZTsKLSAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQ
b3NpdGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgZmlu
YWw7CisgICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xsUG9z
aXRpb24mKSBmaW5hbDsKKyAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFRoZSBzY3JvbGxP
cmlnaW4sIHNjcm9sbFBvc2l0aW9uLCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24gYW5kIG1heGltdW1T
Y3JvbGxQb3NpdGlvbiBhcmUgYWxsIGFmZmVjdGVkIGJ5IGZyYW1lIHNjYWxlLAogICAgIC8vIGJ1
dCBsYXlvdXRWaWV3cG9ydCBjb21wdXRhdGlvbnMgcmVxdWlyZSB1bnNjYWxlZCBzY3JvbGwgcG9z
aXRpb25zLgpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVtYmVkZGVk
T2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92ZUVt
YmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFs
OwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBQYWludEJlaGF2aW9yIHBh
aW50QmVoYXZpb3I7CkBAIC0zNzksOSArMzc5LDkgQEAgcHVibGljOgogICAgIGVudW0gQ29vcmRp
bmF0ZVNwYWNlRm9yU25hcHNob3QgeyBEb2N1bWVudENvb3JkaW5hdGVzLCBWaWV3Q29vcmRpbmF0
ZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHNGb3JTbmFwc2hvdChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNlbGVjdGlvbkluU25h
cHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90KTsK
IAotICAgIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVy
UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQm
LCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludE92
ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisgICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBmaW5hbDsKKyAgICB2b2lk
IHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJl
Y3QmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGRvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Q7CiAKQEAgLTQzNiwxMCArNDM2LDEwIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihj
b25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIC8vIE92
ZXJyaWRlIFNjcm9sbFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9uIHZpYSByZW5k
ZXJlcnMsIGluIG9yZGVyIHRvIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0gICAgSW50
UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRGcm9t
Q29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRS
ZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsK
KyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNv
bnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBpc0ZyYW1lVmll
d1Njcm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0JiBzY3JvbGxDb3JuZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxDb3JuZXI7IH0KIApAQCAtNDUx
LDIwICs0NTEsMjAgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2Nyb2xsYWJpbGl0eSB7IFNj
cm9sbGFibGUsIFNjcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlIH07CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1Njcm9sbGFibGUoU2Nyb2xsYWJpbGl0eSBkZWZpbml0aW9uT2ZTY3JvbGxhYmxl
ID0gU2Nyb2xsYWJpbGl0eTo6U2Nyb2xsYWJsZSk7CiAKLSAgICBib29sIGlzU2Nyb2xsYWJsZU9y
UnViYmVyYmFuZGFibGUoKSBvdmVycmlkZTsKLSAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZU9yUnVi
YmVyYmFuZGFibGUoKSBmaW5hbDsKKyAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRh
YmxlQW5jZXN0b3IoKSBmaW5hbDsKIAogICAgIGVudW0gU2Nyb2xsYmFyTW9kZXNDYWxjdWxhdGlv
blN0cmF0ZWd5IHsgUnVsZXNGcm9tV2ViQ29udGVudE9ubHksIEFueVJ1bGUgfTsKICAgICB2b2lk
IGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBT
Y3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xsYmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5ID0g
QW55UnVsZSk7CiAKLSAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzaG91
bGRTZXRDdXJzb3IoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qg
b25jZSBwbHVnaW4gbG9hZGluZyBpcyBkZWNvdXBsZWQgZnJvbSBsYXlvdXQuCiAgICAgdm9pZCBm
bHVzaEFueVBlbmRpbmdQb3N0TGF5b3V0VGFza3MoKTsKIAotICAgIGJvb2wgc2hvdWxkU3VzcGVu
ZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN1c3Bl
bmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxiYXJTdHls
ZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRlOwogCiAg
ICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKQEAgLTQ4Myw3ICs0ODMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc1Njcm9sbGFibGVBcmVhKFNjcm9sbGFibGVB
cmVhKikgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVh
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFzLmdldCgpOyB9CiAKLSAgICB2b2lk
IHJlbW92ZUNoaWxkKFdpZGdldCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2hpbGQoV2lk
Z2V0JikgZmluYWw7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgcG9ydHMgdGhh
dCBuZWVkIHRvIGhhbmRsZSB3aGVlbCBldmVudHMgbWFudWFsbHkuCiAgICAgLy8gT24gTWFjIFdl
YktpdDEgdGhlIHVuZGVybHlpbmcgTlNTY3JvbGxWaWV3IGp1c3QgZG9lcyB0aGUgc2Nyb2xsaW5n
LCBidXQgb24gbW9zdCBvdGhlciBwbGF0Zm9ybXMKQEAgLTUwMSw3ICs1MDEsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0
UGFnaW5hdGlvbihjb25zdCBQYWdpbmF0aW9uJik7CiAgICAgCi0gICAgYm9vbCBpblByb2dyYW1t
YXRpY1Njcm9sbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNTY3Jv
bGw7IH0KKyAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pblByb2dyYW1tYXRpY1Njcm9sbDsgfQogICAgIHZvaWQgc2V0SW5Qcm9ncmFtbWF0aWNT
Y3JvbGwoYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpIHsgbV9pblByb2dyYW1tYXRpY1Njcm9sbCA9
IHByb2dyYW1tYXRpY1Njcm9sbDsgfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElP
TikKQEAgLTUwOSw4ICs1MDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWFsVmlld3Bv
cnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9pbml0aWFsVmlld3BvcnRTaXplID0gc2l6
ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRl
c3RpbmcoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBzZXRXYW50c0xheWVyRm9yVG9wT3ZlckhhbmdB
cmVhKGJvb2wpIGNvbnN0OwpAQCAtNTIzLDIwICs1MjMsMjAgQEAgcHVibGljOgogCiAgICAgTGF5
b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb25SZXNwZWN0aW5nQ3VzdG9tRml4ZWRQb3NpdGlvbigpIGNv
bnN0OwogCi0gICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aGVhZGVySGVpZ2h0OyB9CisgICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faGVhZGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIZWFkZXJI
ZWlnaHQoaW50KTsKLSAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mb290ZXJIZWlnaHQ7IH0KKyAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZv
b3RlckhlaWdodChpbnQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgdG9wQ29udGVudElu
c2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJDb3JlQ29u
dGVudEluc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB0b3BD
b250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5cGU6Oldl
YkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdG9wQ29udGVudEluc2V0
RGlkQ2hhbmdlKGZsb2F0IG5ld1RvcENvbnRlbnRJbnNldCk7CiAKICAgICB2b2lkIHRvcENvbnRl
bnREaXJlY3Rpb25EaWRDaGFuZ2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbFN0
YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEVu
ZExpdmVSZXNpemUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxTdGFy
dExpdmVSZXNpemUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxFbmRMaXZl
UmVzaXplKCkgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJsZUNvbnRl
bnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVT
aXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKIAogICAgIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5nU2Ny
b2xsYWJpbGl0eSgpOwogCkBAIC01NzQsMjkgKzU3NCwyOSBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d0V4cG9zZWRSZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQg
dXBkYXRlU25hcE9mZnNldHMoKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsU25hcEluUHJv
Z3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgZmlu
YWw7CisgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQo
ZmxvYXQgc3RlcCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBvdmVy
cmlkZTsKKyAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRDb250ZW50KGZsb2F0IHN0
ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7CiAKICAg
ICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpOwogCi0gICAgdm9pZCBzaG93KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzaG93KCkgZmluYWw7CiAKICAgICBib29sIHNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVz
dG9yZUZyb21QYWdlQ2FjaGUoKTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc2Nyb2xsQ29udGVu
dHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVj
dFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
Y3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIG92ZXJyaWRl
OworICAgIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkgZmluYWw7CisgICAgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3Qm
IHVwZGF0ZVJlY3QpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVwYWludFNsb3dSZXBhaW50T2Jq
ZWN0cygpOwogCi0gICAgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRmxpcHBlZERvY3Vt
ZW50KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVWaWV3KEZy
YW1lJik7CkBAIC02MTcsNyArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5QcmVMYXlv
dXRTdHlsZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UGhhc2UgPT0gSW5QcmVMYXlv
dXRTdHlsZVVwZGF0ZTsgfQogCi0gICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRnJhbWVWaWV3KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlcldpZGdldDsKICAgICBib29s
IHVzZVNsb3dSZXBhaW50cyhib29sIGNvbnNpZGVyT3ZlcmxhcCA9IHRydWUpIGNvbnN0OwpAQCAt
NjI4LDkgKzYyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVcGRhdGVDb21wb3NpdGlu
Z0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzRnJhbWUoY29uc3QgRnJhbWUmIHJvb3RGcmFtZUZvckZsdXNoKTsKIAotICAg
IGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVD
aGFuZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3Jt
V2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zm
c2V0JiBuZXdPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZp
YVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3Qg
U2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBseU92ZXJmbG93
VG9WaWV3cG9ydChjb25zdCBSZW5kZXJFbGVtZW50JiwgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNj
cm9sbGJhck1vZGUmIHZNb2RlKTsKICAgICB2b2lkIGFwcGx5UGFnaW5hdGlvblRvVmlld3BvcnQo
KTsKQEAgLTY1MSwzOSArNjUxLDM5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXllckZs
dXNoVGhyb3R0bGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIAotICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3Qm
KSBmaW5hbDsKKyAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgZmluYWw7CiAKLSAg
ICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBpbnRlcmZhY2UKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJh
ciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVt
YlJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIFNjcm9sbGFibGVBcmVhKiBlbmNs
b3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3Qgc2Nyb2xs
YWJsZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBHcmFwaGlj
c0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciYsIGNvbnN0
IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IFNjcm9sbFBvc2l0aW9u
JikgZmluYWw7CisgICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50
UmVjdCYpIGZpbmFsOworICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJl
YSgpIGNvbnN0IGZpbmFsOworICAgIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveChi
b29sKiA9IG51bGxwdHIpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmco
KSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3Jv
bGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3Jv
bGxDb3JuZXIoKSBjb25zdCBmaW5hbDsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3QgZmluYWw7CiAj
ZW5kaWYKLSAgICB2b2lkIGNvbnRlbnRzUmVzaXplZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29u
dGVudHNSZXNpemVkKCkgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCB1bm9i
c2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bm9ic2N1cmVk
Q29udGVudFNpemVDaGFuZ2VkKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIGJvb2wgdXNlc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNBc3luY1Njcm9s
bGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmltYXRvcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShj
b25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVzZXNDb21wb3NpdGVkU2Ny
b2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZSBzY3JvbGxiYXIgbm90aWZpY2F0aW9ucyB0byB1
cGRhdGUgdGhlIEFYT2JqZWN0IGNhY2hlLgotICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNjcm9s
bGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxSZW1v
dmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9u
KSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyT3JpZW50YXRpb24pIGZpbmFsOwogCiAgICAgSW50U2l6ZSBzaXplRm9yUmVzaXplRXZlbnQo
KSBjb25zdDsKICAgICB2b2lkIHNlbmRSZXNpemVFdmVudElmTmVlZGVkKCk7CkBAIC02OTMsNyAr
NjkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7CiAg
ICAgdm9pZCB1cGRhdGVMYXlvdXRWaWV3cG9ydCgpOwogCi0gICAgdm9pZCBub3RpZnlQYWdlVGhh
dENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlQ
YWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVu
YWJsZVNwZWN1bGF0aXZlVGlsaW5nSWZOZWVkZWQoKTsKICAgICB2b2lkIHNwZWN1bGF0aXZlVGls
aW5nRW5hYmxlVGltZXJGaXJlZCgpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlU2Ny
b2xsQ29ybmVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBmaW5h
bDsKIAogICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3KCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDkzMzFiMzAyOTA3ZTc5YjdjMTFiNWVjMDg0NmJhZmQ1YzNmZWM0OTcuLjZj
NDc2NWYwY2JjNDUyNDI4MmUwN2M2MTg2NjRlNzZhMDI1MzExZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMTMzMywxOCArMTMzMywxNSBAQCB2b2lkIFBhZ2U6OmRuc1ByZWZldGNoaW5nU3RhdGVD
aGFuZ2VkKCkKIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBQYWdlOjpwbHVnaW5WaWV3cygp
CiB7CiAgICAgVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IHZpZXdzOwotCiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXco
KTsKKyAgICAgICAgYXV0byogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghdmll
dykKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGZvciAoYXV0byYgd2lkZ2V0IDogdmll
dy0+Y2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPigqd2lk
Z2V0KSkKLSAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2luVmlld0Jh
c2U+KCp3aWRnZXQpKTsKKyAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0
LmdldCgpKSkKKyAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2luVmll
d0Jhc2U+KHdpZGdldC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIHZp
ZXdzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggNDQzMDU0Njc1
NTcxYmI5MGQ3NDAxZjJiYjExMjNhY2U5YWZjZTExMC4uNjdjZTMxNzA3Y2IyMTdiM2IwMTRmMTY5
YTkyNGY0YzhjNWZkOWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAt
Mjg2LDE2ICsyODYsMTkgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0
aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KIAogU3RyaW5nIFByaW50
Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBpbnQgcGFnZU51bWJlcikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1l
bnQoKSk7CisKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBQ
cmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKICAgICBwcmludENvbnRleHQuYmVnaW4o
ODAwKTsgLy8gQW55IHdpZHRoIGlzIE9LIGhlcmUuCi0gICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dCgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBkb2N1bWVudC0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOworICAgIGRv
Y3VtZW50LnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8gc3R5bGUgPSBkb2N1bWVudC5zdHlsZVNj
b3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZU51bWJlcik7CiAKICAgICAvLyBJbXBs
ZW1lbnQgZm9ybWF0dGVycyBmb3IgcHJvcGVydGllcyB3ZSBjYXJlIGFib3V0LgogICAgIGlmICgh
c3RyY21wKHByb3BlcnR5TmFtZSwgIm1hcmdpbi1sZWZ0IikpIHsKICAgICAgICAgaWYgKHN0eWxl
LT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJhdXRv
Iik7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgImF1dG8iIH07CiAgICAgICAg
IHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZhbHVlKCkpOwogICAg
IH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQpAQCAtMzA1
LDkgKzMwOCw5IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJh
bWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgaWYgKCFzdHJjbXAocHJv
cGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKICAgICAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS5maXJzdEZhbWlseSgpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwg
InNpemUiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5wYWdlU2l6ZSgp
LndpZHRoKCkudmFsdWUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFnZVNpemUo
KS5oZWlnaHQoKS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxl
LT5wYWdlU2l6ZSgpLndpZHRoLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5bGUt
PnBhZ2VTaXplKCkuaGVpZ2h0LnZhbHVlKCkpOwogCi0gICAgcmV0dXJuIFN0cmluZygicGFnZVBy
b3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIpICsgcHJvcGVydHlOYW1lOworICAgIHJldHVy
biBtYWtlU3RyaW5nKCJwYWdlUHJvcGVydHkoKSB1bmltcGxlbWVudGVkIGZvcjogIiwgcHJvcGVy
dHlOYW1lKTsKIH0KIAogYm9vbCBQcmludENvbnRleHQ6OmlzUGFnZUJveFZpc2libGUoRnJhbWUq
IGZyYW1lLCBpbnQgcGFnZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMWM0N2UzZGZjNGRkZDFiZDQ1YzMyNTdmN2I0ZWQz
MGRlYjhmOWE2OC4uNzZlODBjMDc4ZjFjNjZiZGFkNmI4MDFmODkzN2RiZDAwMWJmY2M1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAg
LTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJ
Zk5lZWRlZCgpCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5pbWF0
aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7CiAgICAgICAgICAg
ICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2NvbXBv
c2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0aW9uKCk7Ci0g
ICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRv
d25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChvZmZzZXQgPiBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpKQog
ICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1
dDo6U3RhcnRUaW1lckZpcmVkLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTU3Nyw3ICs1NzcsNyBA
QCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAgICBpZiAo
bV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbiA9IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xsUG9zaXRp
b25Gb3JGaXhlZFBvc2l0aW9uKCkueSgpLnRvRmxvYXQoKTsKLSAgICAgICAgICAgICAgICBTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
PigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbiA+PSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpICYmICgh
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpIHx8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA8PSBz
Y3JvbGxUcmlnZ2VyLmVuZFZhbHVlKCkudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgfQpAQCAtNjUzLDcgKzY1Myw3IEBAIGRvdWJsZSBBbmltYXRp
b25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uCiAgICAgfQogCiAgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgdGlt
aW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAg
ICAgdGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKTsKIAogICAg
IHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rp
b246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBkb3VibGUgQW5p
bWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1NfQU5J
TUFUSU9OU19MRVZFTF8yKQogICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5p
bWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAgICAg
IFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxB
bmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgICAg
IGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigq
bV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2VyLmhhc0Vu
ZFZhbHVlKCkgJiYgbV9vYmplY3QpIHsKICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1fY29t
cG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRpb24oKTsK
ICAgICAgICAgICAgIGZsb2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUo
KS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDJkODk0MDQ1MjA0OGEyOGY0MTEwYTU1MjAzNWZm
MWM3MWZkODhkNTUuLjlmNmI5MTdjNmVjMWM2ZmViYmE2OTQwYTE2NzA1YmRiZDVhYzc0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGggYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IEwKIAog
c3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91Ymxl
IHByb2dyZXNzKQogewotICAgIHJldHVybiBMZW5ndGhTaXplKGJsZW5kRnVuYyhhbmltLCBmcm9t
LndpZHRoKCksIHRvLndpZHRoKCksIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICBi
bGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQoKSwgdG8uaGVpZ2h0KCksIHByb2dyZXNzKSk7Cisg
ICAgcmV0dXJuIHsgYmxlbmRGdW5jKGFuaW0sIGZyb20ud2lkdGgsIHRvLndpZHRoLCBwcm9ncmVz
cyksIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCwgdG8uaGVpZ2h0LCBwcm9ncmVzcykgfTsK
IH0KIAogc3RhdGljIGlubGluZSBTaGFkb3dTdHlsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5bGUgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTQ5Miw3ICs0OTEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExl
bmd0aFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29uc3Qg
VCY+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBMZW5ndGhQ
cm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAoUmVuZGVyU3R5bGU6
OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShUKSkKKyAgICBM
ZW5ndGhQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAoUmVuZGVy
U3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShUJiYp
KQogICAgICAgICA6IFByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj4ocHJvcCwgZ2V0dGVy
KQogICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKICAgICB7CkBAIC01MDQsNyArNTAzLDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9z
ZXR0ZXIpKFQpOworICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFQmJik7CiB9Owog
CiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJDbGlwUGF0aCA6IHB1YmxpYyBSZWZDb3VudGVkUHJvcGVy
dHlXcmFwcGVyPENsaXBQYXRoT3BlcmF0aW9uPiB7CkBAIC0xMDQ5LDcgKzEwNDgsNyBAQCBwdWJs
aWM6CiBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblBy
b3BlcnR5V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6OipMYXllcnNHZXR0
ZXIpKCkgY29uc3Q7CisgICAgdHlwZWRlZiBjb25zdCBGaWxsTGF5ZXImIChSZW5kZXJTdHlsZTo6
KkxheWVyc0dldHRlcikoKSBjb25zdDsKICAgICB0eXBlZGVmIEZpbGxMYXllciYgKFJlbmRlclN0
eWxlOjoqTGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVy
KENTU1Byb3BlcnR5SUQgcHJvcCwgTGF5ZXJzR2V0dGVyIGdldHRlciwgTGF5ZXJzQWNjZXNzb3Ig
YWNjZXNzb3IpCkBAIC0xMDg2LDggKzEwODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYSB8
fCAhYikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjb25zdCBGaWxsTGF5
ZXIqIGZyb21MYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNvbnN0IEZp
bGxMYXllciogdG9MYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1dG8q
IGZyb21MYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRvKiB0b0xh
eWVyID0gJihiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CiAKICAgICAgICAgd2hpbGUgKGZyb21MYXll
ciAmJiB0b0xheWVyKSB7CiAgICAgICAgICAgICBpZiAoIW1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyLT5lcXVhbHMoZnJvbUxheWVyLCB0b0xheWVyKSkKQEAgLTExMDIsOSArMTEwMSw5IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVy
U3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBjb25zdCBGaWxs
TGF5ZXIqIGFMYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNvbnN0IEZp
bGxMYXllciogYkxheWVyID0gKGItPiptX2xheWVyc0dldHRlcikoKTsKLSAgICAgICAgRmlsbExh
eWVyKiBkc3RMYXllciA9ICYoZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKKyAgICAgICAgYXV0
byogYUxheWVyID0gJihhLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1dG8qIGJMYXll
ciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRvKiBkc3RMYXllciA9ICYo
ZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKIAogICAgICAgICB3aGlsZSAoYUxheWVyICYmIGJM
YXllciAmJiBkc3RMYXllcikgewogICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXItPmJsZW5kKGFuaW0sIGRzdExheWVyLCBhTGF5ZXIsIGJMYXllciwgcHJvZ3Jlc3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IGVkOTZhYjE1Mzg4MmI1OWRjOTljYmRmNWFjOTg2NGRiMGYwMDVhMDQuLjIy
YmRlNDY4YTA2YWI0NmMwYmEwZTg4OGI5YjczNWQxNDUxMmMwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTk5LDI4ICs5OSwyOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Nj
cm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYQogCiBFdmVudFRyYWNraW5n
UmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9u
c0ZvckZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKLSAgICBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyVmll
dyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyVmlldyB8fCByZW5k
ZXJWaWV3LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybiBFdmVudFRy
YWNraW5nUmVnaW9ucygpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgLy8g
T24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVzZW50IHRoZSBy
ZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRsZXJzLgogICAg
IEFTU0VSVChmcmFtZS5pc01haW5GcmFtZSgpKTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNraW5nUmVnaW9u
cygpOwogICAgIHJldHVybiBkb2N1bWVudC0+ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICNlbHNl
Ci0gICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lLnZpZXco
KTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEV2ZW50VHJhY2tpbmdSZWdp
b25zKCk7CiAKKyAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CisKICAgICAvLyBG
SVhNRTogc2hvdWxkIEFTU0VSVCghZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSBoZXJlLCBidXQg
bmVlZCB0byBmaXggRGVidWdQYWdlT3ZlcmxheXMKICAgICAvLyB0byBub3QgYXNrIGZvciByZWdp
b25zIGF0IGJhZCB0aW1lcy4KIAotICAgIGlmIChjb25zdCBGcmFtZVZpZXc6OlNjcm9sbGFibGVB
cmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpKSB7
CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFy
ZWFzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxl
QXJlYXMpIHsKICAgICAgICAgICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xsYWJsZSBhcmVhcyBjYW4g
YmUgc2Nyb2xsZWQgb2ZmIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAgIGlmIChzY3JvbGxh
YmxlQXJlYS0+dXNlc0FzeW5jU2Nyb2xsaW5nKCkpCkBAIC0xMzYsMTggKzEzNiwyMSBAQCBFdmVu
dFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNr
aW5nUmVnaW9uc0ZvckZyYW1lKAogICAgIH0KIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogZnJh
bWVWaWV3LT53aWRnZXRzSW5SZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiBy
ZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KTsKLSAgICAgICAgaWYgKCFy
ZW5kZXJXaWRnZXQgfHwgIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKKyAgICAgICAgaWYg
KCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAKLSAgICAgICAgaWYgKGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1do
ZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShy
ZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICBpZiAoIWRv
d25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1doZWVsRXZlbnRzKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCp3aWRnZXQpOworICAgICAgICBpZiAoIXJlbmRlcldpZGdldCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShyZW5k
ZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwogICAgIH0KICAgICAKLSAgICAv
LyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJhbWUgYXMg
YSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBoZXJlLgog
ICAgIEV2ZW50VHJhY2tpbmdSZWdpb25zIGV2ZW50VHJhY2tpbmdSZWdpb25zOworCisgICAgLy8g
RklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZyYW1lIGFzIGEg
c2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQgaGVyZS4KICAg
ICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZy
YW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewotICAgICAg
ICBGcmFtZVZpZXcqIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CisgICAgICAgIGF1
dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghc3ViZnJh
bWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2MCw3ICsxNjMsNyBAQCBFdmVu
dFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNr
aW5nUmVnaW9uc0ZvckZyYW1lKAogICAgICAgICBldmVudFRyYWNraW5nUmVnaW9ucy51bml0ZShz
dWJmcmFtZVJlZ2lvbik7CiAgICAgfQogCi0gICAgRG9jdW1lbnQ6OlJlZ2lvbkZpeGVkUGFpciB3
aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0ZVJlZ2lvbkZvckV2
ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0cygpKTsKKyAgICBh
dXRvIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFic29sdXRlUmVnaW9u
Rm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRUYXJnZXRzKCkpOwog
ICAgIGJvb2wgd2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQgPSB3aGVlbEhhbmRsZXJSZWdpb24u
c2Vjb25kOwogICAgIGlmICh3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCkgewogICAgICAgICAv
LyBGSVhNRTogbmVlZCB0byBoYW5kbGUgcG9zaXRpb246c3RpY2t5IGhlcmUgdG9vLgpAQCAtMTcy
LDYgKzE3NSw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjph
YnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAKICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBub3QgdGhlIG1haW4gZnJhbWUsIHdlIGNvdWxkIGNsaXAgdGhlIHJlZ2lvbiB0byB0
aGUgZnJhbWUncyBib3VuZHMuCiAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMudW5pdGVTeW5jaHJv
bm91c1JlZ2lvbihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbm9uRmFzdFNjcm9sbGFibGVSZWdp
b24pOworCiAgICAgcmV0dXJuIGV2ZW50VHJhY2tpbmdSZWdpb25zOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA5ZTcwZTlkMzZiOTk1ZWRjYmVhMjky
NTQzNjczNjZjNDkxOGEzYmMxLi5iMTExNjRmMDg1NWRiZGYyNWY2YjFjNjg2ZjcxNmI0NjcyMzJj
NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEtl
eWVkQ29kaW5nX2gKLSNkZWZpbmUgS2V5ZWRDb2RpbmdfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNTYsNyArMTU1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
QEAgLTIxMSw1ICsyMTAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gS2V5ZWRDb2RpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3gu
aAppbmRleCBlN2E5NzhhOWM4YzA1MjhkMjljYTBlMGQzN2NjOWY0YzdlZDc3MTA3Li4yNjA4YmQ3
YjUxYjg5MjM0MTk4YjliZjY5YjhlYzYyMGQ3NDlhZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guaApAQCAtMTksOCArMTksNyBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgogKi8KIAotI2lmbmRlZiBMZW5ndGhCb3hfaAotI2RlZmluZSBMZW5ndGhCb3hfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5o
IgpAQCAtMzEsMTIgKzMwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIEJveEV4dGVudCB7CiBwdWJsaWM6CiAgICAgQm94RXh0ZW50KCkKLSAgICAg
ICAgOiBtX3NpZGVzKHt7IFQoMCksIFQoMCksIFQoMCksIFQoMCkgfX0pCisgICAgICAgIDogbV9z
aWRlcyh7IHsgeyAwIH0sIHsgMCB9LCB7IDAgfSwgeyAwIH0gfSB9KQogICAgIHsKICAgICB9CiAK
LSAgICBCb3hFeHRlbnQoY29uc3QgVCYgdG9wLCBjb25zdCBUJiByaWdodCwgY29uc3QgVCYgYm90
dG9tLCBjb25zdCBUJiBsZWZ0KQotICAgICAgICA6IG1fc2lkZXMoe3sgdG9wLCByaWdodCwgYm90
dG9tLCBsZWZ0IH19KQorICAgIEJveEV4dGVudChUJiYgdG9wLCBUJiYgcmlnaHQsIFQmJiBib3R0
b20sIFQmJiBsZWZ0KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHN0ZDo6Zm9yd2FyZDxUPih0b3Ap
LCBzdGQ6OmZvcndhcmQ8VD4ocmlnaHQpLCBzdGQ6OmZvcndhcmQ8VD4oYm90dG9tKSwgc3RkOjpm
b3J3YXJkPFQ+KGxlZnQpIH0gfSkKICAgICB7CiAgICAgfQogCkBAIC0xMzksMTAgKzEzOCwxNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorI2lmIDAKICAgICBMZW5ndGhCb3goY29uc3QgTGVu
Z3RoJiB0b3AsIGNvbnN0IExlbmd0aCYgcmlnaHQsIGNvbnN0IExlbmd0aCYgYm90dG9tLCBjb25z
dCBMZW5ndGgmIGxlZnQpCiAgICAgICAgIDogQm94RXh0ZW50KHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCkKICAgICB7CiAgICAgfQorI2VuZGlmCisKKyAgICBMZW5ndGhCb3goTGVuZ3RoJiYgdG9w
LCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQorICAgICAg
ICA6IEJveEV4dGVudCB7IFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90
dG9tKSwgV1RGTW92ZShsZWZ0KSB9CisgICAgeworICAgIH0KIAogICAgIGJvb2wgaXNaZXJvKCkg
Y29uc3QKICAgICB7CkBAIC0xNTAsMTEgKzE1Niw5IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi10
eXBlZGVmIEJveEV4dGVudDxMYXlvdXRVbml0PiBMYXlvdXRCb3hFeHRlbnQ7Ci10eXBlZGVmIEJv
eEV4dGVudDxmbG9hdD4gRmxvYXRCb3hFeHRlbnQ7Cit1c2luZyBMYXlvdXRCb3hFeHRlbnQgPSBC
b3hFeHRlbnQ8TGF5b3V0VW5pdD47Cit1c2luZyBGbG9hdEJveEV4dGVudCA9IEJveEV4dGVudDxm
bG9hdD47CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0
aEJveCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBMZW5ndGhCb3hf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmNwcAppbmRleCAxNjgzOWNjYmE4ZjAx
MTk1ZjdlNDJlNmZjMWZmZWU3MjE1OWFmMWZiLi43ZjM1MGU3NzM4NjNkMTZjNTMwNzFhMmM0YWMw
ZmI2OTZjODFmZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBMZW5ndGhTaXplJiBzaXplKQogewotICAgIHJldHVybiB0cyA8PCBz
aXplLndpZHRoKCkgPDwgIiAiIDw8IHNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHRzIDw8IHNp
emUud2lkdGggPDwgIiAiIDw8IHNpemUuaGVpZ2h0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgKaW5kZXggZDcxM2UxODkyYzVhNWM0
YjNjYzA1ZjM4OTMyZjJiNjE1NjFiZjE3OC4uNjA1MjNlZWM2Y2IzMmQxMDFiZDFkMjQ0MTQwNDVj
YTY2MzQ0ZThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaApAQCAtMSw2ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4LDQ4ICsxNywyNyBAQAogICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBMZW5ndGhTaXplX2gK
LSNkZWZpbmUgTGVuZ3RoU2l6ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBMZW5ndGhTaXplIHsKLXB1YmxpYzoK
LSAgICBMZW5ndGhTaXplKCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIExlbmd0aFNpemUoTGVu
Z3RoIHdpZHRoLCBMZW5ndGggaGVpZ2h0KQotICAgICAgICA6IG1fd2lkdGgoV1RGTW92ZSh3aWR0
aCkpCi0gICAgICAgICwgbV9oZWlnaHQoV1RGTW92ZShoZWlnaHQpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoU2l6ZSYgbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX2hlaWdodCA9PSBvLm1faGVp
Z2h0OwotICAgIH0KLQotICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3RoIHdpZHRoKSB7IG1fd2lkdGgg
PSBXVEZNb3ZlKHdpZHRoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dpZHRoOyB9Ci0KLSAgICB2b2lkIHNldEhlaWdodChMZW5ndGggaGVpZ2h0KSB7IG1f
aGVpZ2h0ID0gV1RGTW92ZShoZWlnaHQpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotCi1wcml2YXRlOgotICAgIExlbmd0aCBtX3dpZHRo
OwotICAgIExlbmd0aCBtX2hlaWdodDsKKyAgICBMZW5ndGggd2lkdGg7CisgICAgTGVuZ3RoIGhl
aWdodDsKIH07CiAKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoU2l6ZSYgYSwg
Y29uc3QgTGVuZ3RoU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gYS53aWR0aCA9PSBiLndpZHRoICYm
IGEuaGVpZ2h0ID09IGIuaGVpZ2h0OworfQorCiBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZChjb25z
dCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91YmxlIHByb2dyZXNz
KQogewotICAgIHJldHVybiBMZW5ndGhTaXplKGJsZW5kKGZyb20ud2lkdGgoKSwgdG8ud2lkdGgo
KSwgcHJvZ3Jlc3MpLCBibGVuZChmcm9tLmhlaWdodCgpLCB0by5oZWlnaHQoKSwgcHJvZ3Jlc3Mp
KTsKKyAgICByZXR1cm4geyBibGVuZChmcm9tLndpZHRoLCB0by53aWR0aCwgcHJvZ3Jlc3MpLCBi
bGVuZChmcm9tLmhlaWdodCwgdG8uaGVpZ2h0LCBwcm9ncmVzcykgfTsKIH0KIAogVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGVuZ3RoU2l6ZSYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBMZW5ndGhTaXplX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxNDM0MDAxNGFkNWE5OTUzNTlhZjdiNjk5YzUyOGRkMzgwMzIwOTVj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaAotI2RlZmluZSBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc19oCi0KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNz
IFNwZWVjaFN5bnRoZXNpczsKLWNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsKLWNsYXNz
IFNwZWVjaFN5bnRoZXNpc1ZvaWNlOwotICAgIAotY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXMgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4gewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiBjcmVhdGUo
U3BlZWNoU3ludGhlc2lzKik7Ci0gICAgCi0gICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYpOwotICAgIHZvaWQg
cGxhdGZvcm1TcGVhayhTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKTsKLSAgICAKLXByaXZhdGU6
Ci0gICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKik7Ci0KLSAgICBT
cGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhlc2lzOwotfTsKLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5k
aWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmlu
ZGV4IDFmMjA3ZjQ0MzY2OTliNGQxYzg0NWQ3MGNjYzcyOWQzNmU5MGJiYTIuLjEwYTgzMGUzOWM3
YjdmZWQ4OTM4ZWMwYjU0MDAwZWU4NDdjZTBjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwx
NiArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQp
CitSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VD
bGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOwogfQogICAgIAotUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpCi0gICAg
OiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3ZvbHVtZSgxLjBmKQotICAgICwgbV9yYXRlKDEu
MGYpCi0gICAgLCBtX3BpdGNoKDEuMGYpCitpbmxpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudCgmY2xpZW50
KQogewogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggYTg2OWJiODcyODRkYzU5ZTA3
ZWU2NDIzMzZlYWQxOGNhOWM1ZDg4NC4uZTA4Nzc1YjI1ZWY0MDBlNjZiZGMyZThkYzQ1YzgyYjZm
MTBjODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDIxIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAotI2Rl
ZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2VDbGllbnQgewotcHVibGljOgotICAgIC8vIEltcGxlbWVudCBtZXRob2RzIGFzIG5lZWRl
ZC4KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZUNsaWVudCgpIHsgfQogfTsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Q2xpZW50Kik7Ci0gICAgCisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Jik7
CisKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAg
ICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRleHQ7IH0KICAg
ICAKQEAgLTc0LDIwICs2NiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDbGllbnQoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOwor
ICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Jik7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZUNsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKICAgICBT
dHJpbmcgbV9sYW5nOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBt
X3ZvaWNlOwotICAgIGZsb2F0IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fcmF0ZTsKLSAgICBmbG9h
dCBtX3BpdGNoOwotICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBmbG9hdCBtX3ZvbHVtZSB7
IDEgfTsKKyAgICBmbG9hdCBtX3JhdGUgeyAxIH07CisgICAgZmxvYXQgbV9waXRjaCB7IDEgfTsK
KyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyAwIH07CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAv
LyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4
IDU4MGYxOWQxNjc4ZGU5NWVmZTZjOTcyMDA1OWQwZWI2MmIzZDAxYjguLjI0Mzc2Y2RlOTIzMDhm
NjYwMzA3YTNjZDM1ZDZkZmI3MWQ1NTJmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTcgKzMwLDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJv
b2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKK1JlZjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJv
b2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxv
Y2FsU2VydmljZSwgaXNEZWZhdWx0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxTZXJ2aWNl
LCBpc0RlZmF1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQorUmVmPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UpOwogfQotICAgIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZh
dWx0KQorCitpbmxpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0
KQogICAgIDogbV92b2ljZVVSSSh2b2ljZVVSSSkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV9sYW5nKGxhbmcpCkBAIC00OSwxMiArNDksNiBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUgog
ewogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlKCkKLSAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQotICAgICwgbV9kZWZhdWx0
KGZhbHNlKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCAzNDNiOWU3YmFjZjE1ZTQ5OTMy
MDhmNTU4MTRmY2UzN2Y3NDUxZDlkLi4wMTU4YjM0OTg0ZGY1NjFlY2E3ZWJmZTc0MzBmZTg4M2Y5
YTE5MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDE4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCi0jZGVmaW5lIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2VfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBj
cmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZh
dWx0KTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0
ZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiB2b2ljZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9p
Y2VVUkk7IH0KICAgICB2b2lkIHNldFZvaWNlVVJJKGNvbnN0IFN0cmluZyYgdm9pY2VVUkkpIHsg
bV92b2ljZVVSSSA9IHZvaWNlVVJJOyB9CkBAIC01NiwxNyArNTMsMTUgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9j
YWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZSgpOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSA9IGRlZmF1bHQ7CiAK
ICAgICBTdHJpbmcgbV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBt
X2xhbmc7Ci0gICAgYm9vbCBtX2xvY2FsU2VydmljZTsKLSAgICBib29sIG1fZGVmYXVsdDsKKyAg
ICBib29sIG1fbG9jYWxTZXJ2aWNlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGVmYXVsdCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCBjYmZmZTZlMWM4
MTJiNGRkZDE0ZTQ3MDAzYTg3ODQ4YjRlZjFhZGNiLi5iODlkNTY2MTEzZjVjYzdmZGU1ZTRlZTRi
NThhOGMyOWE5YjY0Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDE0ICs2MiwxNCBAQCBTY3JvbGxWaWV3Ojp+U2Nyb2xs
VmlldygpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRn
ZXQ+IHBycENoaWxkKSAKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoV2lkZ2V0JiBjaGlsZCkK
IHsKLSAgICBXaWRnZXQqIGNoaWxkID0gcHJwQ2hpbGQuZ2V0KCk7Ci0gICAgQVNTRVJUKGNoaWxk
ICE9IHRoaXMgJiYgIWNoaWxkLT5wYXJlbnQoKSk7Ci0gICAgY2hpbGQtPnNldFBhcmVudCh0aGlz
KTsKLSAgICBtX2NoaWxkcmVuLmFkZChwcnBDaGlsZCk7Ci0gICAgaWYgKGNoaWxkLT5wbGF0Zm9y
bVdpZGdldCgpKQotICAgICAgICBwbGF0Zm9ybUFkZENoaWxkKGNoaWxkKTsKKyAgICBBU1NFUlQo
JmNoaWxkICE9IHRoaXMpOworICAgIEFTU0VSVCghY2hpbGQucGFyZW50KCkpOworICAgIGNoaWxk
LnNldFBhcmVudCh0aGlzKTsKKyAgICBtX2NoaWxkcmVuLmFkZChjaGlsZCk7CisgICAgaWYgKGNo
aWxkLnBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoJmNoaWxkKTsK
IH0KIAogdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIGNoaWxkKQpAQCAtOTcs
NyArOTcsNyBAQCBib29sIFNjcm9sbFZpZXc6OnNldEhhc1Njcm9sbGJhckludGVybmFsKFJlZlB0
cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIsIFNjcm9sbGJhcgogCiAgICAgaWYgKGhhc0JhciAmJiAh
c2Nyb2xsYmFyKSB7CiAgICAgICAgIHNjcm9sbGJhciA9IGNyZWF0ZVNjcm9sbGJhcihvcmllbnRh
dGlvbik7Ci0gICAgICAgIGFkZENoaWxkKHNjcm9sbGJhci5nZXQoKSk7CisgICAgICAgIGFkZENo
aWxkKCpzY3JvbGxiYXIpOwogICAgICAgICBkaWRBZGRTY3JvbGxiYXIoc2Nyb2xsYmFyLmdldCgp
LCBvcmllbnRhdGlvbik7CiAgICAgICAgIHNjcm9sbGJhci0+c3R5bGVDaGFuZ2VkKCk7CiAgICAg
ICAgIGlmIChjb250ZW50U2l6ZUFmZmVjdGVkKQpAQCAtODI5LDEyICs4MjksNiBAQCB2b2lkIFNj
cm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAg
IHdpbmRvdy0+aW52YWxpZGF0ZVJvb3RWaWV3KEludFJlY3QoKSk7CiB9CiAKLWJvb2wgU2Nyb2xs
Vmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwg
Y29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKLXsK
LSAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlw
UmVjdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29u
dGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogewogICAgIGhvc3RXaW5k
b3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCh1cGRhdGVSZWN0KTsKQEAgLTEw
MzgsMTcgKzEwMzIsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiB7
CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgp
OwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJl
bnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAg
ICAgICgqY3VycmVudCktPmZyYW1lUmVjdHNDaGFuZ2VkKCk7CisgICAgZm9yIChhdXRvJiBjaGls
ZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5mcmFtZVJlY3RzQ2hhbmdlZCgpOwogfQog
CiB2b2lkIFNjcm9sbFZpZXc6OmNsaXBSZWN0Q2hhbmdlZCgpCiB7Ci0gICAgSGFzaFNldDxSZWZQ
dHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IG1f
Y2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgKCpj
dXJyZW50KS0+Y2xpcFJlY3RDaGFuZ2VkKCk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hp
bGRyZW4pCisgICAgICAgIGNoaWxkLT5jbGlwUmVjdENoYW5nZWQoKTsKIH0KIAogc3RhdGljIHZv
aWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKQEAgLTExNTAsMTAgKzExNDEsNiBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSwgYm9vbCBm
b3JjZVVwZGF0ZQogICAgIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CiB9CiAKLXZvaWQgU2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKLXsKLX0KLQogdm9pZCBTY3JvbGxWaWV3Ojpw
YWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGNvcm5lclJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRTY3JvbGxD
b3JuZXIodGhpcywgY29udGV4dCwgY29ybmVyUmVjdCk7CkBAIC0xMzkyLDkgKzEzNzksOCBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIGlmICgh
aXNTZWxmVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIEhhc2hTZXQ8
UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgIGZv
ciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKHZp
c2libGUpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGls
ZC0+c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzaG93
KCkKQEAgLTE0MDIsOSArMTM4OCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2hvdygpCiAgICAgaWYg
KCFpc1NlbGZWaXNpYmxlKCkpIHsKICAgICAgICAgc2V0U2VsZlZpc2libGUodHJ1ZSk7CiAgICAg
ICAgIGlmIChpc1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8
V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBm
b3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRW
aXNpYmxlKHRydWUpOworICAgICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4p
CisgICAgICAgICAgICAgICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTE0MTUsOSArMTQwMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6aGlkZSgp
CiB7CiAgICAgaWYgKGlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBpZiAoaXNQYXJlbnRWaXNp
YmxlKCkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBl
bmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgICAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxX
aWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBj
aGlsZC0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAgICAgICAgIH0KICAgICAgICAgc2V0U2Vs
ZlZpc2libGUoZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCBkYjU3MGRkOTg1YjE3NzI0MDlhNTE1MGFmZDc2M2MzMGMyNDcxNDhjLi42YjMxZjk4MmY0
MjhiMDhhYWI1NTk2NTg1ZmRmYzcxMWFmNGU3ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NiwgMjAwNywgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1ZGUgIlNjcm9sbGFibGVB
cmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKLQog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBQTEFURk9STShJT1MpCisKIE9CSkNfQ0xB
U1MgV0FLU2Nyb2xsVmlldzsKIE9CSkNfQ0xBU1MgV0FLVmlldzsKIApAQCAtNDYsNiArNDYsNyBA
QCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAjaWZuZGVmIE5TVmlldwogI2RlZmluZSBOU1ZpZXcgV0FL
VmlldwogI2VuZGlmCisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgZGVmaW5lZCBfX09CSkNfXwpAQCAtNjQsMTAgKzY1LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TY3JvbGxWaWV3KCk7CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5jdGlv
bnMuCi0gICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92ZXJy
aWRlOwotICAgIGludCBzY3JvbGxPZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNj
cm9sbE9mZnNldCYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0IGZpbmFsOworICAgIGludCBzY3JvbGxPZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNv
bnN0IFNjcm9sbE9mZnNldCYpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxl
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFy
U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKQEAgLTg1LDE0ICs4Niwx
NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qg
PSAwOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBjaGlsZCBtYW5pcHVsYXRpb24gYW5kIGluc3Bl
Y3Rpb24uCi0gICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj4mIGNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChQYXNzUmVmUHRyPFdpZGdldD4pOworICAgIGNvbnN0IEhhc2hTZXQ8UmVmPFdp
ZGdldD4+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZENoaWxkKFdpZGdldCYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDaGlsZChXaWRnZXQmKTsKIAogICAgIC8vIElmIHRoZSBzY3JvbGwgdmlldyBkb2VzIG5vdCB1
c2UgYSBuYXRpdmUgd2lkZ2V0LCB0aGVuIGl0IHdpbGwgaGF2ZSBjcm9zcy1wbGF0Zm9ybSBTY3Jv
bGxiYXJzLiBUaGVzZSBmdW5jdGlvbnMKICAgICAvLyBjYW4gYmUgdXNlZCB0byBvYnRhaW4gdGhv
c2Ugc2Nyb2xsYmFycy4KLSAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICBT
Y3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92
ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsg
fQorICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc1Njcm9sbFZpZXdTY3Jv
bGxiYXIoY29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbFNjcm9s
bGJhcigpID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0gY2hpbGQ7IH0KIAogICAg
IHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEyMSw3ICsxMjIsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3Jv
bGxiYXJPdmVybGF5U3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSkgZmluYWw7CiAKICAgICAvLyBCeSBkZWZhdWx0
IHlvdSBvbmx5IHJlY2VpdmUgcGFpbnQgZXZlbnRzIGZvciB0aGUgYXJlYSB0aGF0IGlzIHZpc2li
bGUuIEluIHRoZSBjYXNlIG9mIHVzaW5nIGEKICAgICAvLyB0aWxlZCBiYWNraW5nIHN0b3JlLCB0
aGlzIGZ1bmN0aW9uIGNhbiBiZSBzZXQsIHNvIHRoYXQgdGhlIHZpZXcgcGFpbnRzIHRoZSBlbnRp
cmUgY29udGVudHMuCkBAIC0xNjcsNyArMTY4LDcgQEAgcHVibGljOgogICAgIC8vIEluIHRoZSBz
aXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHNjcm9sbGluZyAoaWUu
IHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlKSBpdCBpcyBwb3NzaWJsZSB0byB1c2UKICAgICAv
LyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QgaW5zdGVhZCBmb3IgdGhlIG1haW5mcmFt
ZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVkIG1hbnVhbGx5LCBlLmcganVzdCBiZWZvcmUg
cmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3aGljaCB1c3VhbGx5IHdpbGwgaGFwcGVuIHdoZW4g
cGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9yIHdoZW4gc2NhbGUgb3IgcG9z
aXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCi0gICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVu
dFZpc2libGVSZWN0KS5zaXplKCk7IH0KKyAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJs
ZVJlY3QpLnNpemUoKTsgfQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZp
cnR1YWwgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNp
YmxlQ29udGVudFJlY3QpIHsgbV9maXhlZFZpc2libGVDb250ZW50UmVjdCA9IHZpc2libGVDb250
ZW50UmVjdDsgfQpAQCAtMjE3LDEzICsyMTgsMTMgQEAgcHVibGljOgogCiAgICAgLy8gRnVuY3Rp
b25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5l
ZCBpbnNpZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZpZHVhbCB3
aWR0aCBhbmQgaGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbnRT
aXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOyAvLyBBbHdheXMgYXQgbGVhc3QgYXMg
YmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCisgICAgV0VCQ09SRV9F
WFBPUlQgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsgLy8gQWx3YXlzIGF0IGxl
YXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkvdmlzaWJsZUhlaWdodCgpLgogICAgIGlu
dCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsg
fQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgp
LmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRT
aXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9s
bGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQsIGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBY
IGFuZCBZIHZhbHVlcykuCi0gICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQorICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCk7IH0KIAogICAgIFNjcm9sbFBvc2l0aW9uIG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOyAvLyBUaGUgbWF4aW11bSBwb3Np
dGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAKQEAgLTI1OCw3ICsyNTksNyBAQCBwdWJsaWM6
CiAgICAgLy8gcmVsYXRpdmUgdG8gdGhlIHZlcnkgdG9wIG9mIHRoZSB2aWV3LgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIGRvY3VtZW50U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRv
Vmlld09yaWdpbigpIGNvbnN0OwogCi0gICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgY2FjaGVDdXJyZW50U2Nyb2xsUG9zaXRpb24oKSB7IG1fY2FjaGVkU2Nyb2xsUG9z
aXRpb24gPSBzY3JvbGxQb3NpdGlvbigpOyB9CiAgICAgU2Nyb2xsUG9zaXRpb24gY2FjaGVkU2Ny
b2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNjcm9sbFBvc2l0aW9uOyB9CkBA
IC0zMTMsMTMgKzMxNCwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09mZnNjcmVlbigpIGNvbnN0
OwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gb3VyIGZyYW1lIHJlY3QgY2hhbmdlcyAob3IgdGhlIHJl
Y3Qvc2Nyb2xsIHBvc2l0aW9uIG9mIGFuIGFuY2VzdG9yIGNoYW5nZXMpLgotICAgIHZvaWQgZnJh
bWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkg
ZmluYWw7CiAgICAgCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlIHRvIHVwZGF0ZSBvdXIgc2Nyb2xs
YmFycyBhbmQgbm90aWZ5IG91ciBjb250ZW50cyBvZiB0aGUgcmVzaXplLgogICAgIHZvaWQgc2V0
RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogICAgIC8vIFdpZGdldCBvdmVy
cmlkZSB0byBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIGEgY2xpcHJlY3QgY2hhbmdlLgotICAgIHZv
aWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwUmVjdENoYW5nZWQo
KSBmaW5hbDsKIAogICAgIC8vIEZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRvIGhpdCB0ZXN0IHNj
cm9sbGJhcnMgZnJvbSB3aXRoaW4gdGhlIGVuZ2luZSdzIGV2ZW50IGhhbmRsZXJzIChsaWtlIFdp
bjMyKS4KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhckF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KTsKQEAgLTM0MywxMyArMzQ0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRo
ZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JikgZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBv
dXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3
ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoaWRlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIGZpbmFsOwogICAgIAogICAgIC8vIFBhbiBzY3JvbGxp
bmcuCiAgICAgc3RhdGljIGNvbnN0IGludCBub1BhblNjcm9sbFJhZGl1cyA9IDE1OwpAQCAtMzU3
LDIxICszNTgsMTkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUGFuU2Nyb2xsSWNvbigpOwog
ICAgIHZvaWQgcGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgdmly
dHVhbCBib29sIGlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOwotICAg
IHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJDb3JuZXJQcmVzZW50KCkgY29uc3Q7Ci0gICAgSW50UmVj
dCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1BvaW50SW5T
Y3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmKTsKKyAgICBib29sIHNjcm9sbGJhckNvcm5l
clByZXNlbnQoKSBjb25zdDsKKyAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBm
aW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNj
cm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRSZWN0IGNv
bnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydEZyb21TY3Jv
bGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1Rv
U2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29u
c3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIEludFJlY3Qg
Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNv
bnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVNjcm9s
bGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBj
b25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3Jv
bGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgY2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KGNvbnN0IFNjcm9sbE9mZnNldCYg
b2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCk7CiAKIHByb3RlY3RlZDoK
QEAgLTM4NCwyNiArMzgzLDI2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYXZhaWxhYmxlQ29u
dGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpID0gMDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBhcmUgdXNlZCB0byBjcmVhdGUvZGVzdHJveSBzY3JvbGxiYXJzLgogICAgIC8vIFRoZXkg
cmV0dXJuIHRydWUgaWYgdGhlIHNjcm9sbGJhciB3YXMgYWRkZWQgb3IgcmVtb3ZlZC4KLSAgICBi
b29sIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVBZmZl
Y3RlZCA9IDApOwotICAgIGJvb2wgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCwgYm9vbCog
Y29udGVudFNpemVBZmZlY3RlZCA9IDApOworICAgIGJvb2wgc2V0SGFzSG9yaXpvbnRhbFNjcm9s
bGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gbnVsbHB0cik7CisgICAgYm9v
bCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVk
ID0gbnVsbHB0cik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpID0gMDsKKyAgICB2b2lk
IGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKIAogICAg
IC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzLgotICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRh
LCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkgPSAwOwogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBpbnZhbGlkYXRpbmcg
ZXZlcnl0aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25z
dCBJbnRSZWN0JiB1cGRhdGVSZWN0KTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0
IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QWxsLCBib29sIHVwZGF0ZVBvc2l0aW9u
U3luY2hyb25vdXNseSk7CiAKICAgICAvLyBTdWJjbGFzc2VkIGJ5IEZyYW1lVmlldyB0byBjaGVj
ayB0aGUgd3JpdGluZy1tb2RlIG9mIHRoZSBkb2N1bWVudC4KLSAgICB2aXJ0dWFsIGJvb2wgaXNW
ZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRl
IHRoZSBzY3JvbGxiYXJzIHRvIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgc3RhdGUgb2YgdGhlIHZp
ZXcuCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBkZXNp
cmVkUG9zaXRpb24pOwpAQCAtNDExLDI3ICs0MTAsMjkgQEAgcHJvdGVjdGVkOgogICAgIGZsb2F0
IHBsYXRmb3JtVG9wQ29udGVudEluc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybVNldFRv
cENvbnRlbnRJbnNldChmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRGVmZXJyZWRT
Y3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCk7CisgICAgdm9pZCBoYW5kbGVEZWZl
cnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFm
dGVyQ29udGVudFNpemVDaGFuZ2UoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsT2Zm
c2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmLCBjb25z
dCBTY3JvbGxPZmZzZXQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdl
ZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmLCBjb25zdCBTY3JvbGxP
ZmZzZXQmKSA9IDA7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIHVub2Jz
Y3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5vYnNjdXJl
ZENvbnRlbnRTaXplQ2hhbmdlZCgpID0gMDsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIC8vIFNp
emUgYXZhaWxhYmxlIGZvciB2aWV3IGNvbnRlbnRzLCBleGNsdWRpbmcgY29udGVudCBpbnNldHMu
IE5vdCBhZmZlY3RlZCBieSB6b29taW5nLgogICAgIEludFNpemUgc2l6ZUZvclVub2JzY3VyZWRD
b250ZW50KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3Jv
bGxiYXJzKSBjb25zdDsKIAotICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwo
VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RC
ZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJ
bnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250
ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0
IHVub2JzY3VyZWRDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVz
U2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKIAogICAgIHZvaWQgY29tcGxl
dGVVcGRhdGVzQWZ0ZXJTY3JvbGxUbyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSk7CiAKICAg
ICBib29sIHNldEhhc1Njcm9sbGJhckludGVybmFsKFJlZlB0cjxTY3JvbGxiYXI+JiwgU2Nyb2xs
YmFyT3JpZW50YXRpb24sIGJvb2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkKTsK
IAorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0
cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgU2Nyb2xsYmFyTW9kZSBtX2hv
cml6b250YWxTY3JvbGxiYXJNb2RlOwpAQCAtNDQyLDcgKzQ0Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fcHJvaGliaXRzU2Nyb2xsaW5nOwogCi0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0
Pj4gbV9jaGlsZHJlbjsKKyAgICBIYXNoU2V0PFJlZjxXaWRnZXQ+PiBtX2NoaWxkcmVuOwogCiAg
ICAgLy8gVGhpcyBib29sIGlzIHVudXNlZCBvbiBNYWMgT1MgYmVjYXVzZSB3ZSBkaXJlY3RseSBh
c2sgdGhlIHBsYXRmb3JtIHdpZGdldAogICAgIC8vIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBibGl0
IG9uIHNjcm9sbC4KQEAgLTQ4Myw5ICs0ODQsOSBAQCBwcml2YXRlOgogCiAgICAgSW50UmVjdCBy
ZWN0VG9Db3B5T25TY3JvbGwoKSBjb25zdDsKIAotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3Jv
bGwgcG9zaXRpb24gd2l0aGluIHRoaXMgdmlldyBjaGFuZ2VzLiAgRnJhbWVWaWV3IG92ZXJyaWRl
cyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQgaW52YWxpZGF0aW9ucy4KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgeyB9CisgICAgLy8g
Q2FsbGVkIHdoZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMu
IEZyYW1lVmlldyBvdmVycmlkZXMgdGhpcyB0byBnZW5lcmF0ZSByZXBhaW50IGludmFsaWRhdGlv
bnMuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmco
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3Jv
bGxpbmcoKSA9IDA7CiAKICAgICB2b2lkIHBsYXRmb3JtQWRkQ2hpbGQoV2lkZ2V0Kik7CiAgICAg
dm9pZCBwbGF0Zm9ybVJlbW92ZUNoaWxkKFdpZGdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
aW5kZXggNTkxMTk3OGFlZWMxOGYwODNmZGJmODVmMWFmM2VkMjQxNzkwMTE2NS4uMzE0YThkZjc1
OTA5OTE1MzkyNzVhYWQ0YTM5ZGQ5YjZjOGVhNmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5o
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExlbmd0aFNpemUgY29udHJv
bFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYg
em9vbWVkU2l6ZSwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHpvb21lZFNp
emU7IH0KICAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHNpemUgZm9yIGEgY29udHJv
bCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuICAKLSAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWluaW11
bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8qem9v
bUZhY3RvciovKSBjb25zdCB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExl
bmd0aCgwLCBGaXhlZCkpOyB9CisgICAgdmlydHVhbCBMZW5ndGhTaXplIG1pbmltdW1Db250cm9s
U2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAvKnpvb21GYWN0b3Iq
LykgY29uc3QgeyByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9CiAgICAg
CiAgICAgLy8gQWxsb3dzIHRoZSB0aGVtZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIHBhZGRpbmcv
Ym9yZGVyLgogICAgIHZpcnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9BbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uaAppbmRleCA5YTBkZjE3MDA4ZjIxNzRiZDE3ZmIzNjE2ODM3NDk1YTQzYzE4YTdj
Li44ZjVhZDkzNjI3MzExYmUyMzI2MWYxNDc4Y2M0NmViZWFkM2NlZjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhh
bS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIyLDIxICsyMiwxNiBAQAogICoK
ICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbl9oCi0jZGVmaW5lIEFuaW1hdGlvbl9oCisjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSNpbmNsdWRlICJBbmltYXRpb25UcmlnZ2VyLmgiCi0j
ZW5kaWYKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiVGltaW5n
RnVuY3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFC
TEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKKyNpbmNsdWRlICJBbmltYXRpb25UcmlnZ2VyLmgi
CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MiwyMCArNTcsMjAgQEAgcHVi
bGljOgogCiAgICAgLy8gRmxhZ3MgdGhpcyB0byBiZSB0aGUgc3BlY2lhbCAibm9uZSIgYW5pbWF0
aW9uIChhbmltYXRpb24tbmFtZTogbm9uZSkKICAgICBib29sIGlzTm9uZUFuaW1hdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNOb25lOyB9CisKICAgICAvLyBXZSBjYW4gbWFrZSBwbGFjZWhvbGRl
ciBBbmltYXRpb24gb2JqZWN0cyB0byBrZWVwIHRoZSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMKICAg
ICAvLyBvZiBwcm9wZXJ0aWVzIGluIHN5bmMuIGlzVmFsaWRBbmltYXRpb24gbWVhbnMgdGhpcyBp
cyBub3QgYSBwbGFjZWhvbGRlci4KICAgICBib29sIGlzVmFsaWRBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiAhbV9pc05vbmUgJiYgIW1fbmFtZS5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gKCFtX2RpcmVjdGlvblNldCAmJiAh
bV9kdXJhdGlvblNldCAmJiAhbV9maWxsTW9kZVNldAotICAgICAgICAgICAgICAgICYmICFtX25h
bWVTZXQgJiYgIW1fcGxheVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0Ci0gICAgICAg
ICAgICAgICAgJiYgIW1fZGVsYXlTZXQgJiYgIW1fdGltaW5nRnVuY3Rpb25TZXQgJiYgIW1fcHJv
cGVydHlTZXQKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICAgICAgICAg
ICAgICAmJiAhbV90cmlnZ2VyU2V0KTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgKTsKKyAgICAg
ICAgaWYgKG1fdHJpZ2dlclNldCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgor
ICAgICAgICByZXR1cm4gIW1fZGlyZWN0aW9uU2V0ICYmICFtX2R1cmF0aW9uU2V0ICYmICFtX2Zp
bGxNb2RlU2V0CisgICAgICAgICAgICAmJiAhbV9uYW1lU2V0ICYmICFtX3BsYXlTdGF0ZVNldCAm
JiAhbV9pdGVyYXRpb25Db3VudFNldAorICAgICAgICAgICAgJiYgIW1fZGVsYXlTZXQgJiYgIW1f
dGltaW5nRnVuY3Rpb25TZXQgJiYgIW1fcHJvcGVydHlTZXQ7CiAgICAgfQogCiAgICAgYm9vbCBp
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSBjb25zdApAQCAtMTE0LDExICsxMDksNyBAQCBwdWJsaWM6
CiAKICAgICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5OyB9CiAKLSAgICBl
bnVtIEFuaW1hdGlvbk1vZGUgewotICAgICAgICBBbmltYXRlQWxsLAotICAgICAgICBBbmltYXRl
Tm9uZSwKLSAgICAgICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5Ci0gICAgfTsKKyAgICBlbnVtIEFu
aW1hdGlvbk1vZGUgeyBBbmltYXRlQWxsLCBBbmltYXRlTm9uZSwgQW5pbWF0ZVNpbmdsZVByb3Bl
cnR5IH07CiAKICAgICBlbnVtIEFuaW1hdGlvbkRpcmVjdGlvbiB7CiAgICAgICAgIEFuaW1hdGlv
bkRpcmVjdGlvbk5vcm1hbCwKQEAgLTEzOSwxMCArMTMwLDEwIEBAIHB1YmxpYzoKICAgICBTdHls
ZTo6U2NvcGVPcmRpbmFsIG5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZVN0eWxlU2NvcGVPcmRpbmFsOyB9CiAgICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFuaW1QbGF5U3RhdGU+KG1fcGxheVN0YXRlKTsg
fQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5
OyB9Ci0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CisgICAgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAg
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQog
I2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIFBhc3NSZWZQdHI8QW5pbWF0
aW9uVHJpZ2dlcj4gdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcjsgfQorICAgIEFu
aW1hdGlvblRyaWdnZXIqIHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXIuZ2V0KCk7
IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXREZWxheShkb3VibGUgYykgeyBtX2RlbGF5ID0gYzsg
bV9kZWxheVNldCA9IHRydWU7IH0KQEAgLTE1OCwxMCArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICB9
CiAgICAgdm9pZCBzZXRQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgZCkgeyBtX3BsYXlTdGF0ZSA9
IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gZikgeyBt
X3RpbWluZ0Z1bmN0aW9uID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0KKyAgICB2
b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mJiBmdW5jdGlvbikg
eyBtX3RpbWluZ0Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IG1fdGltaW5nRnVuY3Rpb25T
ZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbk1vZGUgbW9k
ZSkgeyBtX21vZGUgPSBtb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIp
Ci0gICAgdm9pZCBzZXRUcmlnZ2VyKFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gdCkgeyBt
X3RyaWdnZXIgPSB0OyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRUcmlnZ2Vy
KFJlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiYmIHRyaWdnZXIpIHsgbV90cmlnZ2VyID0gV1RGTW92
ZSh0cmlnZ2VyKTsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNl
dElzTm9uZUFuaW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CkBAIC0xOTcsMjIgKzE4
OCwyMiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlsbE1vZGUgOiAyOwogCiAKLSAgICB1
bnNpZ25lZCBtX3BsYXlTdGF0ZSAgICAgOiAyOworICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlIDog
MjsKIAotICAgIGJvb2wgbV9kZWxheVNldCAgICAgICAgICA6IDE7Ci0gICAgYm9vbCBtX2RpcmVj
dGlvblNldCAgICAgIDogMTsKLSAgICBib29sIG1fZHVyYXRpb25TZXQgICAgICAgOiAxOwotICAg
IGJvb2wgbV9maWxsTW9kZVNldCAgICAgICA6IDE7CisgICAgYm9vbCBtX2RlbGF5U2V0IDogMTsK
KyAgICBib29sIG1fZGlyZWN0aW9uU2V0IDogMTsKKyAgICBib29sIG1fZHVyYXRpb25TZXQgOiAx
OworICAgIGJvb2wgbV9maWxsTW9kZVNldCA6IDE7CiAgICAgYm9vbCBtX2l0ZXJhdGlvbkNvdW50
U2V0IDogMTsKLSAgICBib29sIG1fbmFtZVNldCAgICAgICAgICAgOiAxOwotICAgIGJvb2wgbV9w
bGF5U3RhdGVTZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX3Byb3BlcnR5U2V0ICAgICAgIDogMTsK
KyAgICBib29sIG1fbmFtZVNldCA6IDE7CisgICAgYm9vbCBtX3BsYXlTdGF0ZVNldCA6IDE7Cisg
ICAgYm9vbCBtX3Byb3BlcnR5U2V0IDogMTsKICAgICBib29sIG1fdGltaW5nRnVuY3Rpb25TZXQg
OiAxOwogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIGJvb2wgbV90cmln
Z2VyU2V0ICAgICAgICA6IDE7CisgICAgYm9vbCBtX3RyaWdnZXJTZXQgOiAxOwogI2VuZGlmCiAK
LSAgICBib29sIG1faXNOb25lICAgICAgICAgICAgOiAxOworICAgIGJvb2wgbV9pc05vbmUgOiAx
OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsRGVsYXkoKSB7IHJldHVybiAw
OyB9CkBAIC0yMjMsMTIgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgaW5pdGlhbE5hbWUoKTsKICAgICBzdGF0aWMgRUFuaW1QbGF5U3RhdGUgaW5pdGlhbFBsYXlT
dGF0ZSgpIHsgcmV0dXJuIEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9CiAgICAgc3RhdGljIENTU1By
b3BlcnR5SUQgaW5pdGlhbFByb3BlcnR5KCkgeyByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOyB9
Ci0gICAgc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxUaW1p
bmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgp
OyB9CisgICAgc3RhdGljIFJlZjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbFRpbWluZ0Z1bmN0aW9u
KCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KICNpZiBF
TkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0
cjxBbmltYXRpb25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRp
b25UcmlnZ2VyOjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8QW5pbWF0aW9uVHJpZ2dlcj4g
aW5pdGlhbFRyaWdnZXIoKSB7IHJldHVybiBBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKCk7
IH0KICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQW5p
bWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb25MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9Bbmlt
YXRpb25MaXN0LmNwcAppbmRleCA2MjVkNzkwMTVhMDc0MDZhMjk5ODgwMTNhNjUyMDZiNTA4NDI3
MWVhLi4wYTMyMDIyNTQ1OWIxZmQwNjYyNjVlZjJjZDdhNTlkZTcyMjU3MjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCkBA
IC0yNiwxNSArMjYsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIEZJTExfVU5T
RVRfUFJPUEVSVFkodGVzdCwgcHJvcEdldCwgcHJvcFNldCkgXAogZm9yIChpID0gMDsgaSA8IHNp
emUoKSAmJiBhbmltYXRpb24oaSkudGVzdCgpOyArK2kpIHsgfSBcCi1pZiAoaSA8IHNpemUoKSAm
JiBpICE9IDApIHsgXAoraWYgKGkpIHsgXAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBpIDwgc2l6
ZSgpOyArK2ksICsraikgXAogICAgICAgICBhbmltYXRpb24oaSkucHJvcFNldChhbmltYXRpb24o
aikucHJvcEdldCgpKTsgXAogfQogCiBBbmltYXRpb25MaXN0OjpBbmltYXRpb25MaXN0KGNvbnN0
IEFuaW1hdGlvbkxpc3QmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3Ro
ZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoQW5pbWF0aW9uOjpj
cmVhdGUob3RoZXIuYW5pbWF0aW9uKGkpKSk7CisgICAgbV9hbmltYXRpb25zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG90
aGVyLm1fYW5pbWF0aW9ucykKKyAgICAgICAgbV9hbmltYXRpb25zLnVuY2hlY2tlZEFwcGVuZChB
bmltYXRpb246OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAogdm9pZCBBbmltYXRpb25M
aXN0OjpmaWxsVW5zZXRQcm9wZXJ0aWVzKCkKQEAgLTU1LDkgKzU2LDEwIEBAIGJvb2wgQW5pbWF0
aW9uTGlzdDo6b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAoc2l6ZSgpICE9IG90aGVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9uKGkpICE9IG90
aGVyLmFuaW1hdGlvbihpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9BbmltYXRpb25MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uTGlzdC5oCmluZGV4IGM4NGNiOWIxZDE1MTYzZDA3Njg5Mzc0NjE3NDA2ZDg0
OTQwZGFhZmUuLmVhN2M5Yjc4YTE5NTBmMTVlOTRmYWFiYWE5NTFiNDgxNTUyZjdjY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaApA
QCAtMjIsOCArMjIsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbkxpc3RfaAotI2Rl
ZmluZSBBbmltYXRpb25MaXN0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzYsNiArMzUsNyBAQCBjbGFzcyBBbmlt
YXRpb25MaXN0IHsKIHB1YmxpYzoKICAgICBBbmltYXRpb25MaXN0KCkgeyB9CiAgICAgQW5pbWF0
aW9uTGlzdChjb25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0aW9uTGlzdChBbmltYXRp
b25MaXN0JiYpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZmlsbFVuc2V0UHJvcGVydGllcygpOwog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JikgY29uc3Q7CkBAIC00OSwy
MiArNDksMTcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNpemVfdCBuKSB7IG1f
YW5pbWF0aW9ucy5yZXNpemUobik7IH0KICAgICB2b2lkIHJlbW92ZShzaXplX3QgaSkgeyBtX2Fu
aW1hdGlvbnMucmVtb3ZlKGkpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBbmltYXRp
b24+IGFuaW1hdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRpb24pOwotICAgICAg
ICBtX2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7Ci0gICAgfQotICAgIAotICAgIEFuaW1h
dGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiAqbV9hbmltYXRpb25zW2ldOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuICpt
X2FuaW1hdGlvbnNbaV07IH0KKyAgICB2b2lkIGFwcGVuZChSZWY8QW5pbWF0aW9uPiYmIGFuaW1h
dGlvbikgeyBtX2FuaW1hdGlvbnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0aW9uKSk7IH0KKworICAg
IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0u
Z2V0KCk7IH0KKyAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gbV9hbmltYXRpb25zW2ldLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIEFu
aW1hdGlvbkxpc3QmIG9wZXJhdG9yPShjb25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0
aW9uTGlzdCYgb3BlcmF0b3I9KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCi0gICAgVmVj
dG9yPFJlZlB0cjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CisgICAgVmVjdG9yPFJlZjxBbmlt
YXRpb24+PiBtX2FuaW1hdGlvbnM7CiB9OyAgICAKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBBbmltYXRpb25MaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCmluZGV4IGZjYTQ1YzEwZDIxMDRm
MDVlZGViYjc4ODAwMTRhMjYzYTY1YjFlMTEuLjVlYTAxYjIwYjI2MjdiOGQ5N2JhMzVmM2UyZDdj
YmU0YTU1Mjk0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvblRyaWdnZXIuaApAQCAtMjMsMjkgKzIzLDI0IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uVHJpZ2dlcl9oCi0jZGVmaW5lIEFuaW1hdGlvblRy
aWdnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxf
MikKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9u
VHJpZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRyaWdnZXI+IHsKIHB1YmxpYzoK
LQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0
ID0gMDsKLQotICAgIGVudW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUgewotICAgICAgICBB
dXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlCi0gICAg
fTsKKyAgICB2aXJ0dWFsIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblRyaWdnZXIoKSB7IH0KIAorICAgIGVudW0gY2xhc3Mg
QW5pbWF0aW9uVHJpZ2dlclR5cGUgeyBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFu
aW1hdGlvblRyaWdnZXJUeXBlIH07CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBpc0F1dG9BbmltYXRpb25UcmlnZ2Vy
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5p
bWF0aW9uVHJpZ2dlclR5cGU7IH0KQEAgLTYyLDE2ICs1NywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
QW5pbWF0aW9uVHJpZ2dlclR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgQXV0b0FuaW1hdGlvblRy
aWdnZXIgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBBdXRvQW5pbWF0aW9uVHJp
Z2dlciBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UmVmPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5B
dXRvQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFu
aW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBv
dGhlci5pc0F1dG9BbmltYXRpb25UcmlnZ2VyKCk7CiAgICAgfQpAQCAtODIsMjIgKzc1LDIwIEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9u
ZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9B
bmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1h
dGlvblRyaWdnZXIpOwogICAgIH0KIH07CiAKLWNsYXNzIFNjcm9sbEFuaW1hdGlvblRyaWdnZXIg
OiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
IGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZShMZW5ndGggc3RhcnRWYWx1
ZSwgTGVuZ3RoIGVuZFZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cj4gY3JlYXRlKExlbmd0aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIoc3RhcnRWYWx1
ZSwgZW5kVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
flNjcm9sbEFuaW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAo
IW90aGVyLmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTMzLDkgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2VuZFZhbHVl
ID0gZW5kVmFsdWU7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkg
Y29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5kVmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5k
VmFsdWUpKTsKICAgICB9CiAKICAgICBMZW5ndGggbV9zdGFydFZhbHVlOwpAQCAtMTU0LDUgKzE0
NSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoQXV0b0FuaW1h
dGlvblRyaWdnZXIsIGlzQXV0b0FuaW1hdGlvblRyCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FO
SU1BVElPTl9UUklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlzU2Nyb2xsQW5pbWF0aW9u
VHJpZ2dlcik7CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQW5pbWF0aW9uVHJpZ2dlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmlu
ZGV4IGY1ZTY2MTZhOTdjZDUzYzZiY2FlMTM1ZGQzNmNjNDdjMmZiN2M4Y2MuLmZjYWEzYzNmZmRi
NmRlYjJhYmVlYmM4ZDAyMGEwZDM5ZGEzMmY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMiw1NCArMjIsNTAgQEAK
ICAqCiAgKi8KIAotI2lmbmRlZiBUaW1pbmdGdW5jdGlvbl9oCi0jZGVmaW5lIFRpbWluZ0Z1bmN0
aW9uX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4dFN0cmVhbTsK
KwogY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1pbmdGdW5jdGlv
bj4gewogcHVibGljOgorICAgIHZpcnR1YWwgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUo
KSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7Ci0gICAgICAgIExp
bmVhckZ1bmN0aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9uLCBTcHJpbmdG
dW5jdGlvbgotICAgIH07Ci0gICAgCiAgICAgdmlydHVhbCB+VGltaW5nRnVuY3Rpb24oKSB7IH0K
IAorICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6
aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rpb24sIFNwcmluZ0Z1bmN0aW9uIH07CiAgICAgVGltaW5n
RnVuY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAKKwogICAg
IGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBM
aW5lYXJGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247IH0KICAgICBib29s
IGlzU3RlcHNUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTdGVwc0Z1
bmN0aW9uOyB9CiAgICAgYm9vbCBpc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFNwcmluZ0Z1bmN0aW9uOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYpIGNvbnN0ID0gMDsKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGltaW5nRnVuY3Rpb24o
VGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCisgICAgZXhwbGljaXQgVGltaW5nRnVuY3Rpb24oVGlt
aW5nRnVuY3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgewogICAg
IH0KLSAgICAKKworcHJpdmF0ZToKICAgICBUaW1pbmdGdW5jdGlvblR5cGUgbV90eXBlOwogfTsK
IAogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGltaW5nRnVuY3Rp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExpbmVhclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8TGluZWFyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1bmN0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwog
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5MaW5lYXJUaW1pbmdGdW5jdGlvbigpIHsgfQotICAg
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJy
aWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29u
c3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBvdGhlci5pc0xpbmVhclRpbWluZ0Z1bmN0
aW9uKCk7CiAgICAgfQpAQCAtODAsNjEgKzc2LDU0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAgICAgfQogfTsKIAog
Y2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUaW1pbmdGdW5j
dGlvbiB7CiBwdWJsaWM6Ci0gICAgZW51bSBUaW1pbmdGdW5jdGlvblByZXNldCB7Ci0gICAgICAg
IEVhc2UsCi0gICAgICAgIEVhc2VJbiwKLSAgICAgICAgRWFzZU91dCwKLSAgICAgICAgRWFzZUlu
T3V0LAotICAgICAgICBDdXN0b20KLSAgICB9OworICAgIGVudW0gVGltaW5nRnVuY3Rpb25QcmVz
ZXQgeyBFYXNlLCBFYXNlSW4sIEVhc2VPdXQsIEVhc2VJbk91dCwgQ3VzdG9tIH07CiAgICAgCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGRv
dWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICBzdGF0aWMgUmVm
PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwg
ZG91YmxlIHgyLCBkb3VibGUgeTIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5MikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEN1c3Rv
bSwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKICAgICB9CiAgICAgCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKFRpbWlu
Z0Z1bmN0aW9uUHJlc2V0IHByZXNldCkKKyAgICBzdGF0aWMgUmVmPEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24+IGNyZWF0ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKHByZXNldCkgewogICAgICAgICBjYXNlIEVhc2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKTsKICAg
ICAgICAgY2FzZSBFYXNlSW46Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVh
c2VJbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkpOwogICAgICAgICBjYXNlIEVhc2VPdXQ6Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFz
ZU91dCwgMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwg
MS4wKSk7CiAgICAgICAgIGNhc2UgRWFzZUluT3V0OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwgMC40MiwgMC4wLCAw
LjU4LCAxLjApKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwgMC40MiwgMC4wLCAw
LjU4LCAxLjApKTsKKyAgICAgICAgY2FzZSBDdXN0b206CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7
Ci0gICAgICAgIGlmIChvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewotICAg
ICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAg
ICBpZiAobV90aW1pbmdGdW5jdGlvblByZXNldCAhPSBDdXN0b20pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgPT0gY3RmLT5tX3RpbWluZ0Z1bmN0aW9uUHJl
c2V0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gbV94MSA9PSBjdGYtPm1feDEg
JiYgbV95MSA9PSBjdGYtPm1feTEgJiYgbV94MiA9PSBjdGYtPm1feDIgJiYgbV95MiA9PSBjdGYt
Pm1feTI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90
aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAgICAgaWYgKG1fdGltaW5nRnVuY3Rp
b25QcmVzZXQgIT0gb3RoZXJDdWJpYy5tX3RpbWluZ0Z1bmN0aW9uUHJlc2V0KQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV90aW1pbmdGdW5jdGlvblByZXNldCAhPSBD
dXN0b20pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1feDEgPT0g
b3RoZXJDdWJpYy5tX3gxICYmIG1feTEgPT0gb3RoZXJDdWJpYy5tX3kxICYmIG1feDIgPT0gb3Ro
ZXJDdWJpYy5tX3gyICYmIG1feTIgPT0gb3RoZXJDdWJpYy5tX3kyOwogICAgIH0KIAogICAgIGRv
dWJsZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KQEAgLTE0OSwyMSArMTM4LDIxIEBAIHB1
YmxpYzoKICAgICAgICAgbV94MiA9IHgyOwogICAgICAgICBtX3kyID0geTI7CiAgICAgfQotICAg
IAorCiAgICAgVGltaW5nRnVuY3Rpb25QcmVzZXQgdGltaW5nRnVuY3Rpb25QcmVzZXQoKSBjb25z
dCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0OyB9CiAgICAgdm9pZCBzZXRUaW1pbmdG
dW5jdGlvblByZXNldChUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpIHsgbV90aW1pbmdGdW5j
dGlvblByZXNldCA9IHByZXNldDsgfQotICAgIAotICAgIHN0YXRpYyBjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKiBkZWZhdWx0VGltaW5nRnVuY3Rpb24oKQorCisgICAgc3RhdGljIGNv
bnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGRlZmF1bHRUaW1pbmdGdW5jdGlvbigpCiAg
ICAgewotICAgICAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogZHRm
ID0gY3JlYXRlKCkubGVha1JlZigpOwotICAgICAgICByZXR1cm4gZHRmOworICAgICAgICBzdGF0
aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZnVuY3Rpb24gPSBjcmVhdGUoKS5s
ZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICB9CiAKLSAgICBQYXNzUmVm
UHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2VkKCkgY29uc3QKKyAg
ICBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZSgxLjAgLSBtX3gyLCAxLjAgLSBtX3kyLCAxLjAg
LSBtX3gxLCAxLjAgLSBtX3kxKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQg
PSBFYXNlLCBkb3VibGUgeDEgPSAwLjI1LCBkb3VibGUgeTEgPSAwLjEsIGRvdWJsZSB4MiA9IDAu
MjUsIGRvdWJsZSB5MiA9IDEuMCkKICAgICAgICAgOiBUaW1pbmdGdW5jdGlvbihDdWJpY0Jlemll
ckZ1bmN0aW9uKQpAQCAtMTc1LDkgKzE2NCw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihtX3RpbWluZ0Z1
bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24obV90aW1pbmdGdW5jdGlvblBy
ZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOwogICAgIH0KIAogICAgIGRvdWJsZSBtX3gx
OwpAQCAtMTg5LDI1ICsxNzgsMjEgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3RlcHNUaW1pbmdGdW5j
dGlvbiBmaW5hbCA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywg
Ym9vbCBzdGVwQXRTdGFydCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0
ZXBBdFN0YXJ0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVh
dGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1RpbWluZ0Z1bmN0
aW9uKDEsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdG
dW5jdGlvbigxLCB0cnVlKSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgflN0ZXBzVGltaW5n
RnVuY3Rpb24oKSB7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVu
Y3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdG
dW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBpZiAob3RoZXIuaXNT
dGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVu
Y3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPigmb3Ro
ZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gc3RmLT5tX3N0ZXBzICYmIG1fc3Rl
cEF0U3RhcnQgPT0gc3RmLT5tX3N0ZXBBdFN0YXJ0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgb3RoZXJTdGVwcyA9IHN0YXRp
Y19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPihvdGhlcik7CisgICAgICAgIHJldHVy
biBtX3N0ZXBzID09IG90aGVyU3RlcHMubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09IG90aGVy
U3RlcHMubV9zdGVwQXRTdGFydDsKICAgICB9CiAgICAgCiAgICAgaW50IG51bWJlck9mU3RlcHMo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CkBAIC0yMTUsNyArMjAwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEF0U3RhcnQ7IH0K
ICAgICB2b2lkIHNldFN0ZXBBdFN0YXJ0KGJvb2wgc3RlcEF0U3RhcnQpIHsgbV9zdGVwQXRTdGFy
dCA9IHN0ZXBBdFN0YXJ0OyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgU3RlcHNUaW1pbmdGdW5j
dGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgICAgIDogVGltaW5nRnVuY3Rp
b24oU3RlcHNGdW5jdGlvbikKQEAgLTIyNCw5ICsyMDksOSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24obV9zdGVwcywg
bV9zdGVwQXRTdGFydCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGVwc1RpbWlu
Z0Z1bmN0aW9uKG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKICAgICB9CiAgICAgCiAgICAgaW50
IG1fc3RlcHM7CkBAIC0yNDcsMTMgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBj
cmVhdGUoMCwgMCwgMCwgMCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlm
IChvdGhlci5pc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFNw
cmluZ1RpbWluZ0Z1bmN0aW9uJiBvdGhlclN0cmluZyA9ICpzdGF0aWNfY2FzdDxjb25zdCBTcHJp
bmdUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9tYXNzID09
IG90aGVyU3RyaW5nLm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBvdGhlclN0cmluZy5tX3N0aWZm
bmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXJTdHJpbmcubV9kYW1waW5nICYmIG1faW5pdGlhbFZl
bG9jaXR5ID09IG90aGVyU3RyaW5nLm1faW5pdGlhbFZlbG9jaXR5OwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1NwcmluZ1RpbWluZ0Z1bmN0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyU3By
aW5nID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPihvdGhlcik7Cisg
ICAgICAgIHJldHVybiBtX21hc3MgPT0gb3RoZXJTcHJpbmcubV9tYXNzICYmIG1fc3RpZmZuZXNz
ID09IG90aGVyU3ByaW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlclNwcmluZy5t
X2RhbXBpbmcgJiYgbV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTcHJpbmcubV9pbml0aWFsVmVs
b2NpdHk7CiAgICAgfQogCiAgICAgZG91YmxlIG1hc3MoKSBjb25zdCB7IHJldHVybiBtX21hc3M7
IH0KQEAgLTI3OSw5ICsyNjMsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNz
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRp
bWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKG1fbWFzcywgbV9zdGlmZm5lc3MsIG1f
ZGFtcGluZywgbV9pbml0aWFsVmVsb2NpdHkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0aWZmbmVzcywgbV9kYW1waW5nLCBt
X2luaXRpYWxWZWxvY2l0eSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBtX21hc3M7CkBAIC0yOTAs
OSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9pbml0aWFsVmVsb2NpdHk7CiB9Owog
Ci1jbGFzcyBUZXh0U3RyZWFtOwogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgVGltaW5nRnVuY3Rpb24mKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gVGltaW5nRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggNGY5YjVmNTVjYzg0M2Y0YWI4N2RlMzU1NDM5Zjg2
ZDk3ODZkMTZlYS4uZDE4ZGJkZDk0NDI0NjVkMzNlN2U5ZDBlN2RjZjg0ZTZlMDNjMDViNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGFubmVscy5zaXplKCk7IH0KIAogICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25l
ZCBjaGFubmVsKSB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9Ci0gICAgY29u
c3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+bV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsg
fQorICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBjaGFubmVsKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CiAgICAgQXVkaW9DaGFubmVs
KiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpOwogICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCog
Y2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFlYzUzZDhhMDEyN2ZjMTliYTU4
YmE2ZDRkZjJjOWQxOWE5NzU2YmYuLjYxOWEyYzA0MDJlMjE4NWU5MzJkZGExZGUxMTgyYTRlMWU1
MGUzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKQEAgLTE0MCwxMiArMTQwLDExIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkK
ICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFy
eUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlBy
b3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFy
eS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZmM1OGZiNjVkZmVlZGZjMjU1YjVl
OWM3YTJlYzc4YWU2YWU5NTIwMy4uODJiNmI2MTU2ODc3ZTA0M2NjNjFkODM2YmFhOTJhNGIyYzQ3
MTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBLZXllZEVuY29kZXJDRl9oCi0jZGVmaW5lIEtleWVkRW5jb2RlckNGX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC0zNywyNSArMzYsMjUgQEAgcHVibGljOgogICAgIEtleWVkRW5jb2RlckNG
KCk7CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKLSAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wp
IG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50
MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwg
aW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtl
eSwgaW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcm
IGtleSwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmlu
ZyYga2V5LCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworCisgICAgdm9pZCBlbmNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7Cisg
ICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKKyAgICB2
b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QpIGZpbmFsOworICAg
IHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIGZpbmFsOworICAg
IHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QpIGZpbmFsOworICAg
IHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBmaW5hbDsKKyAgICB2
b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBmaW5hbDsKKyAgICB2
b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKLSAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3Qg
U3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgZW5kT2JqZWN0KCkgZmluYWw7CiAKLSAgICB2
b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgYmVn
aW5BcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luQXJy
YXkoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQo
KSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5k
QXJyYXkoKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBt
X3Jvb3REaWN0aW9uYXJ5OwogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVuY29kZXJDRl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQ
cm92aWRlckVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmwuaAppbmRleCBiMzhkMmNhZmU3YjY5MDNkZDQ0ZmE2YzM2Y2Uz
NDAxZThlNzNiNTZiLi43NzgyMDE3NDEyN2FlNWRhMzVhNjFiYTRhODZhZDBmYmUzNGYzM2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNQcm92aWRlckVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKQEAgLTIzLDEzICsyMywxMSBAQAogICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gK
LSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbF9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSA8c3BlYWtfbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDUgKzc0LDMgQEAgcHJp
dmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVm
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAppbmRleCBkNDkyMTM2NDMwOTljMmJhNzQ1ZWJmZDY5N2ViMTUxYTNmZTUzZmYxLi44MWNi
ZWQ1M2QxMTVlNDRmMTM0YzEyMjZkNjM0NjJjNTk4ZTQ0OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2su
cmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJT
dGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCAy
ZDdiMWMzNGY3MTliMjQ4Njc3MjYyMjVlMTNiOTc3NDJkMmNiM2JjLi5mOTFiNGRkYjMzMTVmNjZl
YzRlMGMxOWZkMjcwNjczYjZjNDc1ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgS2V5ZWRFbmNvZGVyR2xpYl9o
Ci0jZGVmaW5lIEtleWVkRW5jb2RlckdsaWJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJL
ZXllZENvZGluZy5oIgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTM5LDI1ICszOCwyNSBAQCBwdWJs
aWM6CiAgICAgS2V5ZWRFbmNvZGVyR2xpYigpOwogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAK
LSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKLQogcHJpdmF0ZToKLSAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUJv
b2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlVUlu
dDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNv
ZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOworCisgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgdWludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5n
JiBrZXksIGludDY0X3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5n
JiBrZXksIGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0
IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQg
ZW5kT2JqZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBr
ZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXkoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOwor
ICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5RWxl
bWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXkoKSBmaW5hbDsKIAogICAgIEdWYXJpYW50
QnVpbGRlciBtX3ZhcmlhbnRCdWlsZGVyOwogICAgIFZlY3RvcjxHVmFyaWFudEJ1aWxkZXIqLCAx
Nj4gbV92YXJpYW50QnVpbGRlclN0YWNrOwpAQCAtNjYsNSArNjUsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRFbmNvZGVyR2xpYl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQw
NTZlYmZlMjJhYWU4MTU5NGU4OGJhNGIyZTc4MjE1MzlkYjc5N2EuLmFmNDhiMGI5MjQyYzU5NzAw
ZWVlYjM2MmNhYjZlMDNlNWFmNmQyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yNywxNSArMjcsMTMgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBGb250Q2FjaGVfaAotI2RlZmluZSBGb250Q2FjaGVfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Z0hhc2guaD4KQEAgLTI5MCw1ICsyODgsMyBAQCBpbmxpbmUgdm9pZCBGb250Q2FjaGU6OnBsYXRm
b3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCkKICNlbmRpZgogCiB9Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDkzMDNhOTA1YjA5NzEzYTJkNWNjYjIzOWIyZDk3NzVkZTgxMWFhNTYuLmFkMzgyZjQxNWEz
YjUxMGVmZTQxM2JlZjdhOWRhY2YxZGY5YzM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwLCAyMDEzLTIwMTYgQXBw
bGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1l
bEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwg
SW5jLgpAQCAtMjIsMTAgKzIyLDE1IEBACiAgKgogICovCiAKLSNpZm5kZWYgRm9udFBsYXRmb3Jt
RGF0YV9oCi0jZGVmaW5lIEZvbnRQbGF0Zm9ybURhdGFfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCiAKICNp
ZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSAiQ09NUHRyLmgiCkBAIC00NCwyNSArNDksMTggQEAK
ICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKICNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0ZvbnQ7CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZvbnQqIENURm9u
dFJlZjsKLQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgot
CiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiB0eXBl
ZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKQEAgLTcwLDcgKzY4LDYgQEAgaW50ZXJmYWNlIElE
V3JpdGVGb250OwogaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKICNlbmRpZgogCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtODIsMTAgKzc5LDcg
QEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0
YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEo
KTsKLSNpZiAhVVNFKEZSRUVUWVBFKQotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKLSNlbmRpZgotICAgIEZvbnRQbGF0Zm9ybURhdGEoRm9u
dFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1bHQ7CisKICAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKICAgICBGb250
UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50
ID0gUmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IEF1dG9UZXh0UmVuZGVyaW5nKTsK
IApAQCAtMTAzLDI3ICs5NywzNiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAg
Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBmbG9hdCBzaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9vbCB1c2VHREkpOworI2VuZGlmCiAK
LSNpZiBVU0UoQ0cpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAgICAgRm9udFBsYXRm
b3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBDR0ZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBV
U0UoRElSRUNUMkQpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKERJUkVDVDJE
KQogICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgSURXcml0ZUZvbnQqLCBm
bG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9v
bCB1c2VHREkpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2Jq
ZWN0PEhGT05UPiwgY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJv
b2wgaXRhbGljKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0FJUk8pCisg
ICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2ZhY2VfdCos
IGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCiAKICNpZiBVU0Uo
RlJFRVRZUEUpCiAgICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiwgY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09i
bGlxdWUpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwor
ICAgIEZvbnRQbGF0Zm9ybURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1bHQ7CisgICAg
Rm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKKyAg
ICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1
bHQ7CiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIEhGT05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250ID8gbV9mb250LT5nZXQo
KSA6IDA7IH0KICAgICBib29sIHVzZUdESSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlR0RJOyB9Ci0j
ZWxpZiBQTEFURk9STShDT0NPQSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Q1RGb250UmVmIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBDVEZvbnRSZWYgcmVnaXN0ZXJlZEZvbnQoKSBjb25zdDsgLy8gUmV0dXJucyBu
dWxscHRyIGlmZiB0aGUgZm9udCBpcyBub3QgcmVnaXN0ZXJlZCwgc3VjaCBhcyB3ZWIgZm9udHMg
KG90aGVyd2lzZSByZXR1cm5zIGZvbnQoKSkuCiAKQEAgLTE4OSwxMiArMTkyLDYgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogCi0jaWYgVVNFKEZSRUVUWVBFKQotICAgIEZvbnRQbGF0Zm9ybURh
dGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7Ci0jZWxzZQotICAgIEZvbnRQ
bGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0
OwotI2VuZGlmCi0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gcGxhdGZvcm1Jc0VxdWFsKG90aGVy
KQpAQCAtMjMyLDEyICsyMjksMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgcGxh
dGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIENHRmxvYXQgY3RGb250U2l6ZSgpIGNvbnN0OwogI2VuZGlmCisKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBwbGF0Zm9ybURhdGFJbml0KEhGT05ULCBmbG9hdCBz
aXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkK
ICAgICB2b2lkIGJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2ZhY2VfdCopOwogI2VuZGlmCkBA
IC0yNTMsMTMgKzI1MywxNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgJiYgKFBMQVRGT1JNKFdJ
TikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDAwMDApKQogICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IG1fY2dGb250OwogI2Vu
ZGlmCisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEV3JpdGVGb250PiBtX2R3Rm9u
dDsKICAgICBDT01QdHI8SURXcml0ZUZvbnRGYWNlPiBtX2R3Rm9udEZhY2U7CiAjZW5kaWYKKwog
I2lmIFVTRShDQUlSTykKICAgICBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4gbV9zY2FsZWRG
b250OwogI2VuZGlmCisKICNpZiBVU0UoRlJFRVRZUEUpCiAgICAgUmVmUHRyPEZjUGF0dGVybj4g
bV9wYXR0ZXJuOwogICAgIG11dGFibGUgRmNVbmlxdWVQdHI8RmNGb250U2V0PiBtX2ZhbGxiYWNr
czsKQEAgLTI4NSwxNSArMjg4LDE4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IGJvb2wgbV9pc0Vtb2ppIHsgZmFsc2UgfTsKICNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgbV91c2VHREkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBVU0UoRlJFRVRZUEUp
CiAgICAgYm9vbCBtX2ZpeGVkV2lkdGggeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCiAjaWYgVVNF
KEFQUEtJVCkKKwogLy8gTlNGb250cyBhbmQgQ1RGb250UmVmcyBhcmUgdG9sbC1mcmVlLWJyaWRn
ZWQuCiBpbmxpbmUgQ1RGb250UmVmIHRvQ1RGb250KE5TRm9udCAqZm9udCkKIHsKQEAgLTMwNCw5
ICszMTAsMTEgQEAgaW5saW5lIE5TRm9udCAqdG9OU0ZvbnQoQ1RGb250UmVmIGZvbnQpCiB7CiAg
ICAgcmV0dXJuIChOU0ZvbnQgKilmb250OwogfQorCiAjZW5kaWYKIAogI2lmIFVTRShDRykKKwog
Y2xhc3MgU2NvcGVkVGV4dE1hdHJpeCB7CiBwdWJsaWM6CiAgICAgU2NvcGVkVGV4dE1hdHJpeChD
R0FmZmluZVRyYW5zZm9ybSBuZXdNYXRyaXgsIENHQ29udGV4dFJlZiBjb250ZXh0KQpAQCAtMzMw
LDggKzMzOCw3IEBAIHByaXZhdGU6CiAgICAgQ0dDb250ZXh0UmVmIG1fY29udGV4dDsKICAgICBD
R0FmZmluZVRyYW5zZm9ybSBtX3RleHRNYXRyaXg7CiB9OworCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggZDkxOWZm
ZGJlNTRmYzI1OWE2MWYxNTFhZGU3NzA1YjczZDgzNjAwYy4uZmUzN2QyNTM0YmZjMTA3MTJiNjQw
MTIxZTJmNWJkMjMyNGJhZWJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaWZuZGVmIEdyYXBoaWNzTGF5ZXJfaAotI2RlZmluZSBHcmFwaGljc0xheWVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKQEAgLTgwLDExICs3OSwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBBbmltYXRpb25WYWx1
ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogbV9rZXlUaW1lKG90aGVy
Lm1fa2V5VGltZSkKLSAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVyLm1fdGltaW5nRnVu
Y3Rpb24gPyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgpIDogbnVsbHB0cikKKyAgICAg
ICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVyLm1fdGltaW5nRnVuY3Rpb24gPyBSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHsgb3RoZXIubV90aW1pbmdGdW5jdGlvbi0+Y2xvbmUoKSB9IDogbnVsbHB0
cikKICAgICB7CiAgICAgfQogCisgICAgQW5pbWF0aW9uVmFsdWUoQW5pbWF0aW9uVmFsdWUmJikg
PSBkZWZhdWx0OworCiBwcml2YXRlOgorICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEFuaW1hdGlv
blZhbHVlJikgPSBkZWxldGU7CisKICAgICBkb3VibGUgbV9rZXlUaW1lOwogICAgIFJlZlB0cjxU
aW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKIH07CkBAIC0xMDQsMTIgKzEwNyw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oKnRoaXMpOwogICAgIH0KIAotICAgIEZsb2F0QW5pbWF0aW9uVmFsdWUoY29uc3QgRmxv
YXRBbmltYXRpb25WYWx1ZSYgb3RoZXIpCi0gICAgICAgIDogQW5pbWF0aW9uVmFsdWUob3RoZXIp
Ci0gICAgICAgICwgbV92YWx1ZShvdGhlci5tX3ZhbHVlKQotICAgIHsKLSAgICB9Ci0KICAgICBm
bG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTEz
NCwxMCArMTMxLDEzIEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShjb25z
dCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUob3RoZXIpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1f
dmFsdWUub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZS5vcGVy
YXRpb25zKCkuYXBwZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5jbG9uZSgpKTsK
KyAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhl
ci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJh
dGlvbiA6IG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAgbV92YWx1ZS5v
cGVyYXRpb25zKCkudW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiAgICAgfQog
CisgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmJikg
PSBkZWZhdWx0OworCiAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByaXZhdGU6CkBAIC0xNjIsMTAgKzE2MiwxMyBAQCBw
dWJsaWM6CiAgICAgRmlsdGVyQW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUmIG90aGVyKQogICAgICAgICA6IEFuaW1hdGlvblZhbHVlKG90aGVyKQogICAgIHsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLmFwcGVuZChvdGhlci5t
X3ZhbHVlLm9wZXJhdGlvbnMoKVtpXS0+Y2xvbmUoKSk7CisgICAgICAgIG1fdmFsdWUub3BlcmF0
aW9ucygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCku
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvdGhlci5tX3ZhbHVlLm9w
ZXJhdGlvbnMoKSkKKyAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLnVuY2hlY2tlZEFw
cGVuZChvcGVyYXRpb24tPmNsb25lKCkpOwogICAgIH0KIAorICAgIEZpbHRlckFuaW1hdGlvblZh
bHVlKEZpbHRlckFuaW1hdGlvblZhbHVlJiYpID0gZGVmYXVsdDsKKwogICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRl
OgpAQCAtMTg1LDEzICsxODgsMTIgQEAgcHVibGljOgogICAgIEtleWZyYW1lVmFsdWVMaXN0KGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICAgICAgOiBtX3Byb3BlcnR5KG90aGVy
LnByb3BlcnR5KCkpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVy
Lm1fdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKG90aGVy
Lm1fdmFsdWVzW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92YWx1ZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvdGhlci5tX3ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogb3RoZXIubV92YWx1ZXMpCisgICAgICAgICAgICBtX3ZhbHVlcy51bmNoZWNrZWRBcHBlbmQo
dmFsdWUtPmNsb25lKCkpOwogICAgIH0KIAotICAgIH5LZXlmcmFtZVZhbHVlTGlzdCgpCi0gICAg
ewotICAgIH0KKyAgICBLZXlmcmFtZVZhbHVlTGlzdChLZXlmcmFtZVZhbHVlTGlzdCYmKSA9IGRl
ZmF1bHQ7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCYgb3BlcmF0b3I9KGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiBvdGhlcikKICAgICB7CkBAIC0yMDAsNiArMjAyLDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgS2V5ZnJhbWVWYWx1ZUxpc3QmIG9wZXJh
dG9yPShLZXlmcmFtZVZhbHVlTGlzdCYmKSA9IGRlZmF1bHQ7CisKICAgICB2b2lkIHN3YXAoS2V5
ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgc3RkOjpzd2FwKG1fcHJvcGVy
dHksIG90aGVyLm1fcHJvcGVydHkpOwpAQCAtMjEwLDEwICsyMTQsMTAgQEAgcHVibGljOgogCiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5zaXplKCk7IH0KICAgICBj
b25zdCBBbmltYXRpb25WYWx1ZSYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuICptX3ZhbHVl
cy5hdChpKTsgfQotICAgIAorCiAgICAgLy8gSW5zZXJ0LCBzb3J0ZWQgYnkga2V5VGltZS4KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgQW5pbWF0
aW9uVmFsdWU+KTsKLSAgICAKKwogcHJvdGVjdGVkOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Y29uc3QgQW5pbWF0aW9uVmFsdWU+PiBtX3ZhbHVlczsKICAgICBBbmltYXRlZFByb3BlcnR5
SUQgbV9wcm9wZXJ0eTsKQEAgLTIyNSw3ICsyMjksNiBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBHcmFw
aGljc0xheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0xheWVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0KICAgICBlbnVtIGNsYXNzIFR5cGUgewog
ICAgICAgICBOb3JtYWwsCiAgICAgICAgIFBhZ2VUaWxlZEJhY2tpbmcsCkBAIC0yNDEsNyArMjQ0
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoVHlwZSkgeyB9CiAK
LSAgICB0eXBlZGVmIHVpbnQ2NF90IFBsYXRmb3JtTGF5ZXJJRDsKKyAgICB1c2luZyBQbGF0Zm9y
bUxheWVySUQgPSB1aW50NjRfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBwcmltYXJ5
TGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXJDbGllbnQm
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC02ODMsNSArNjg2LDMgQEAg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogLy8gT3V0c2lkZSB0aGUgV2ViQ29yZSBuYW1l
c3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBmcm9tIHRoZSBkZWJ1Z2dlci4KIHZvaWQgc2hv
d0dyYXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKTsK
ICNlbmRpZgotCi0jZW5kaWYgLy8gR3JhcGhpY3NMYXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXggODI0NWQ0ZTZk
YTczNTM4ODJlYTljZTI3YTUzNzI1ZTFjZmU4MTZkZS4uODU0NmM3MTJmNjRhMTcwNmQ2MjBiMzUy
MzQ2NGJlZjU1YmQ4Y2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMjMsMjEgKzIzLDE4IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1TZXNzaW9uX2gKLSNk
ZWZpbmUgQ0RNU2Vzc2lvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENE
TVNlc3Npb25DbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGllbnQo
KSB7IH07CisgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSA9IDA7
CiAKICAgICBlbnVtIHsKQEAgLTY0LDcgKzYxLDYgQEAgZW51bSBDRE1TZXNzaW9uVHlwZSB7CiAK
IGNsYXNzIENETVNlc3Npb24gewogcHVibGljOgotICAgIENETVNlc3Npb24oKSB7IH0KICAgICB2
aXJ0dWFsIH5DRE1TZXNzaW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIENETVNlc3Npb25UeXBlIHR5
cGUoKSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZVVua25vd247IH0KQEAgLTc5LDUgKzc1LDMgQEAg
cHVibGljOgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0K
LSNlbmRpZiAvLyBDRE1TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggYjE3NjMyNDdjMTAyZjY5MGE4NDdhMjY4
Yjk5MDYyOTdlYmI3NGU0My4uOTE0YTBhMjc3ZjJhNDY3ODM2NWUzMjMyN2QwMjY5YTIwYmY4Y2Q1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxp
dGllcy5jcHAKQEAgLTQ4NiwxNCArNDg2LDE1IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYKICAg
ICByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9tUmlnaHQudmFsdWUoKSk7
CiB9CiAKLVBhdGggUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHNGb3JP
dXRsaW5lKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgY29uc3QgQm9yZGVyRGF0YSYg
Ym9yZGVyRGF0YSwgZmxvYXQgb3V0bGluZU9mZnNldCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
Ci0gICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQor
UGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0c0Zvck91dGxpbmUo
Y29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXJE
YXRhLAorICAgIGZsb2F0IG91dGxpbmVPZmZzZXQsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAg
QVNTRVJUKGJvcmRlckRhdGEuaGFzQm9yZGVyUmFkaXVzKCkpOwotICAgIEZsb2F0U2l6ZSB0b3BM
ZWZ0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRhdGEudG9wTGVmdCgpLndpZHRoKCkudmFsdWUo
KSwgYm9yZGVyRGF0YS50b3BMZWZ0KCkuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgRmxvYXRTaXpl
IHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRhdGEudG9wUmlnaHQoKS53aWR0aCgp
LnZhbHVlKCksIGJvcmRlckRhdGEudG9wUmlnaHQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKLSAgICBG
bG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS5ib3R0b21S
aWdodCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS5ib3R0b21SaWdodCgpLmhlaWdodCgp
LnZhbHVlKCkpOwotICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXplKGJv
cmRlckRhdGEuYm90dG9tTGVmdCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS5ib3R0b21M
ZWZ0KCkuaGVpZ2h0KCkudmFsdWUoKSk7CisKKyAgICBGbG9hdFNpemUgdG9wTGVmdFJhZGl1cyB7
IGJvcmRlckRhdGEudG9wTGVmdCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEudG9wTGVmdCgp
LmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIHRvcFJpZ2h0UmFkaXVzIHsgYm9yZGVy
RGF0YS50b3BSaWdodCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEudG9wUmlnaHQoKS5oZWln
aHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1cyB7IGJvcmRlckRh
dGEuYm90dG9tUmlnaHQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgYm90dG9tTGVmdFJhZGl1cyB7IGJvcmRl
ckRhdGEuYm90dG9tTGVmdCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEuYm90dG9tTGVmdCgp
LmhlaWdodC52YWx1ZSgpIH07CiAKICAgICBhdXRvIHJvdW5kZWRSZWN0ID0gW3RvcExlZnRSYWRp
dXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywg
b3V0bGluZU9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3JdIChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCBkNzU0NmUyNjg3MTNmOGQ0NWNkNWNmOGY5NDZhZWFkNWY0NDlkZTIwLi5l
N2IwYTJjMjg4ZmVhZmI0OWY0ZTQzOWI5YzdmMDQxN2MzYTNlYTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDQsMTYgKzQ0
LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YqIHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YmIHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopCiAgICAgOiBtX3BhcmVudChwYXJl
bnQpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpCiB7CiB9CiAKLVJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCitSZWZQdHI8VWludDhBcnJh
eT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewotICAgIFVOVVNF
RF9QQVJBTShtaW1lVHlwZSk7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFVOVVNFRF9QQVJBTShp
bml0RGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsKQEAgLTc2LDI5ICs3
NCwyNCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY2VydGlmaWNhdGVEYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRp
ZmljYXRlLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZXJ0aWZpY2F0ZS0+
Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVEYXRhLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGUtPmJhc2VBZGRy
ZXNzKCkpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAotICAgIENTdHJpbmcgYXNzZXRT
dHIgPSBrZXlJRC51dGY4KCk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGFzc2V0
SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXNz
ZXRTdHIubGVuZ3RoKCkpKTsKKyAgICBhdXRvIGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOworICAg
IGF1dG8gYXNzZXRJRCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBhc3NldFN0ci5sZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGFzc2V0
SUQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihhc3NldFN0ci5kYXRhKCkp
LCBhc3NldFN0ci5sZW5ndGgoKSk7CiAKICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBudWxscHRy
OwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGtleVJlcXVlc3QgPSBhZG9wdENGKEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RDcmVhdGVTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHAobV9yZXF1ZXN0LmdldCgpLCBjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIGFzc2V0SUQu
Z2V0KCksIG51bGxwdHIsICZjZkVycm9yKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0ID0gYWRvcHRD
RihBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29udGVudEtl
eVJlcXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRhLmdldCgp
LCBhc3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOwogCiAgICAgaWYgKCFrZXlSZXF1
ZXN0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvOwogICAg
ICAgICBpZiAoY2ZFcnJvcikgewotICAgICAgICAgICAgdXNlckluZm8gPSBhZG9wdENGKENGRXJy
b3JDb3B5VXNlckluZm8oY2ZFcnJvcikpOwotCi0gICAgICAgICAgICBpZiAodXNlckluZm8pIHsK
LSAgICAgICAgICAgICAgICBpZiAoQ0ZFcnJvclJlZiB1bmRlcmx5aW5nRXJyb3IgPSAoQ0ZFcnJv
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JVbmRlcmx5
aW5nRXJyb3JLZXkpKQorICAgICAgICAgICAgaWYgKGF1dG8gdXNlckluZm8gPSBhZG9wdENGKENG
RXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcikpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
dW5kZXJseWluZ0Vycm9yID0gKENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGtDRkVycm9yVW5kZXJseWluZ0Vycm9yS2V5KSkKICAgICAgICAgICAgICAgICAg
ICAgc3lzdGVtQ29kZSA9IENGRXJyb3JHZXRDb2RlKHVuZGVybHlpbmdFcnJvcik7CiAgICAgICAg
ICAgICB9Ci0KICAgICAgICAgICAgIENGUmVsZWFzZShjZkVycm9yKTsKICAgICAgICAgfQotCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTA2LDggKzk5LDggQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbWkKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBkZXN0aW5hdGlvblVS
TCA9IFN0cmluZygpOwogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBrZXlSZXF1ZXN0QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3QuZ2V0KCkp
LCBDRkRhdGFHZXRMZW5ndGgoa2V5UmVxdWVzdC5nZXQoKSkpOwotICAgIHJldHVybiBVaW50OEFy
cmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoa2V5UmVxdWVzdC5nZXQoKSksIENGRGF0YUdldExlbmd0aChrZXlS
ZXF1ZXN0LmdldCgpKSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGtl
eVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2Vu
ZGlmCiB9CiAKQEAgLTExNyw3ICsxMTAsNyBAQCB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6cmVsZWFzZUtleXMoKQogCiBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRl
KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWdu
ZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7Ci0gICAgUmV0YWlu
UHRyPENGTXV0YWJsZURhdGFSZWY+IGtleURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGtl
eURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a2V5LT5ieXRlTGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oa2V5LT5iYXNlQWRkcmVzcygpKSwga2V5
LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZp
bmlzaExvYWRpbmdXaXRoUmVzcG9uc2UobV9yZXF1ZXN0LmdldCgpLCBudWxscHRyLCBrZXlEYXRh
LmdldCgpLCBudWxscHRyKTsKQEAgLTEyNSw3ICsxMTgsNiBAQCBib29sIENETVNlc3Npb25BVkZv
dW5kYXRpb25DRjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBu
ZXh0TQogICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNv
ZGUgPSAwOwogICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKLQogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgK
aW5kZXggNjUyNGQxZGYwYjMxMGI2ZmZlOTQ2NWM1NDM4NmFkZGJmOGE0ZDlmZS4uMTJhNmE3OTMx
ZWVlYWY0MDE1ZmZiNTY2MGUzZjcwMTcwNTVjYWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0ZfaAotI2RlZmluZSBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0ZfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgSEFW
RShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKIApAQCAtMzcsMjYgKzM3LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiAKLWNsYXNzIENETVNlc3Npb25B
VkZvdW5kYXRpb25DRiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25BVkZv
dW5kYXRpb25DRiBmaW5hbCA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKIHB1YmxpYzoKLSAgICBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBh
cmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopOwotICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5k
YXRpb25DRigpIHsgfQotCi0gICAgdm9pZCBzZXRDbGllbnQoQ0RNU2Vzc2lvbkNsaWVudCogY2xp
ZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQotICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1cGRhdGUoVWludDhBcnJheSos
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgotICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBtX3BhcmVudDsKLSAgICBDRE1TZXNzaW9u
Q2xpZW50KiBtX2NsaWVudDsKLSAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CisgICAgQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQs
IENETVNlc3Npb25DbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNldENsaWVudChDRE1T
ZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgfQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBSZWZQdHI8VWlu
dDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4
QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9pZCByZWxlYXNl
S2V5cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhB
cnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkgZmluYWw7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiYgbV9wYXJlbnQ7CisgICAgY29uc3QgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIFJldGFpblB0
cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiBtX3JlcXVlc3Q7CiB9OwogCiB9
CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCmluZGV4IGQxYTA2M2UwZmI1ODdjZmMwZDVhMDFiNDE1NjdhMGI3YjZkYzAyZTUu
LjQ5ZDM1MDkyMjE1YzY4MTg2MmIzMTFiOTY4YTBmMGU5NTc4MjM2ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcApAQCAtMTEyMiw2ICsxMTIyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0CiB9CiAKICNpZiBI
QVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCiBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJl
Zj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnRha2VSZXF1ZXN0Rm9yS2V5VVJJ
KGNvbnN0IFN0cmluZyYga2V5VVJJKQogewogICAgIGlmICghbV9hdmZXcmFwcGVyKQpAQCAtMTEz
NSwxMyArMTEzNiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29ucwogICAgIGlmICgha2V5U3lz
dGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KHRoaXMs
IGNsaWVudCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KKwogI2VsaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCi1zdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sICwg
Q0RNU2Vzc2lvbkNsaWVudCopCisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgQ0RNU2Vzc2lvbkNsaWVudCopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CisK
ICNlbmRpZgogCiBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjphc3NldEVy
cm9yQ29kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMuaAppbmRleCBkZjAzY2NiNjEyOTAxOWUwYzg4NDI2ZDc4MGFhZWRl
NTI2ZTIwYjI5Li5iYmMwNWQ1MDdmNDI1NjY3OWZiN2Q3YmNmNzIwZDg1MjZjMWFjMzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmgKQEAgLTIzLDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAotI2RlZmluZSBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxl
Z2FjeUNETVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCkBAIC02Niw1ICs2NiwzIEBAIHByb3RlY3Rl
ZDoKIH0KIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAppbmRleCBiYTQ5NjM1OTdkYWRmMGUyZmNjNTI4ZmM4MWNjMzIxNWU4Y2Qy
YmVlLi5mYTQ0NDRiMWVjZmFhMmMwZTYyOTA3ODA4NWZmYTZmYzJiMjk2YWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKQEAgLTkyNCw4ICs5MjQsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9u
Q2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaQogCiAjaWYg
RU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSB0cmln
Z2VyIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2Nyb2xsIHBvc2l0aW9uLCB3ZSBjYW5ub3QgYWNjZWxl
cmF0ZSB0aGUgYW5pbWF0aW9uLgotICAgIGlmIChhbmltLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9s
bFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqYW5pbS0+dHJpZ2dl
cigpLmdldCgpKTsKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oYW5pbS0+dHJp
Z2dlcigpKSkgeworICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xs
QW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxU
cmlnZ2VyLmhhc0VuZFZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtMjgwNSw3ICsyODA1LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlv
bkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBpbnQgYW5p
bWF0aW9uSW5kZXggPSAwOwogICAgIAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBj
YUFuaW1hdGlvbjsKLSAgICAKKwogICAgIGlmIChpc0tleWZyYW1lKSB7CiAgICAgICAgIGNhQW5p
bWF0aW9uID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0eUlkVG9T
dHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7CiAgICAgICAgIHZhbHVlc09L
ID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlv
bi5nZXQoKSk7CkBAIC0yODE2LDcgKzI4MTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3Jl
YXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdQog
ICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24s
IHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0aXZlKTsKICAg
ICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRp
b24sIGNhQW5pbWF0aW9uLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIXZhbHVlc09L
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMjQsMTMgKzMwMjQsMTIgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3Bl
cnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2Rl
KTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgYW5pbVZhbHVlLCBj
b25zdCBBbmltYXRpb24mIGFuaW0pCitjb25zdCBUaW1pbmdGdW5jdGlvbiYgR3JhcGhpY3NMYXll
ckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVl
JiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKIHsKICAgICBpZiAoYW5pbVZhbHVl
LnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUudGltaW5nRnVuY3Rp
b24oKTsKKyAgICAgICAgcmV0dXJuICphbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKTsKICAgICBp
ZiAoYW5pbS5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLnRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCk7Ci0gICAgCisgICAgICAgIHJldHVybiAqYW5pbS50aW1pbmdGdW5j
dGlvbigpOwogICAgIHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGlt
aW5nRnVuY3Rpb24oKTsKIH0KIApAQCAtMzA1NCw5ICszMDUzLDcgQEAgYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWVMaXN0LAogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFu
aW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBm
b3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRpb24gY2Fz
ZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAg
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JB
bmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pOwotICAgIGlmICh0aW1p
bmdGdW5jdGlvbikKLSAgICAgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdG
dW5jdGlvbiwgIWZvcndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKCZ0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlv
biksICFmb3J3YXJkcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwODYsMTMgKzMwODMs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkg
PCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAgdGlt
aW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3
YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsK
ICAgICB9Ci0gICAgCisKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsK
ICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyh2YWx1ZXMpOwogICAgIGtleWZyYW1lQW5pbS0+
c2V0VGltaW5nRnVuY3Rpb25zKHRpbWluZ0Z1bmN0aW9ucywgIWZvcndhcmRzKTsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTA1LDggKzMxMDIsOCBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZyb21JbmRleCA9ICFmb3J3YXJkczsKICAgICB1bnNp
Z25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAgICAgCi0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUmIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSYgZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CisgICAgYXV0byYgc3RhcnRWYWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0
LmF0KGZyb21JbmRleCkpOworICAgIGF1dG8mIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwogCiAgICAg
aWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZy
b21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwpAQCAtMzE0OSwxMCArMzE0Niw5IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5
ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAog
ICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1h
dGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlv
bi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7Ci0gICAg
YmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsK
KyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbiksICFmb3J3YXJkcyk7CiAKLSAg
ICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0g
Z2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBl
KTsKKyAgICBhdXRvIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5z
Zm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwogICAgIGlmICh2YWx1ZUZ1bmN0aW9uICE9
IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbikKICAgICAgICAgYmFzaWNBbmlt
LT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24pOwogCkBAIC0zMjA0LDcgKzMyMDAsNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAo
dmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVu
ZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2
YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5n
RnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAg
ICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0z
MjYwLDcgKzMyNTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9u
RW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBj
b2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5l
ZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2
ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHBy
b3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFu
aW1hdGlvbiksICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigm
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRp
b24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjg4LDcgKzMyODQs
NyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkg
PCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAgdGlt
aW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3
YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsK
ICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oCmluZGV4IGQyNDk3YzMxZGFhYjNiNGZhZDk1OTU0ZDc1M2UwNmEzMmE1ZjVkNjYuLjIy
M2IxNWZmMGZlYzYxMzA1MmY4ZjQzNDI5NmU1ZGRmMGIxMGMwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0y
MzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
Y3JlYXRlU3ByaW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGJv
b2wgYWRkaXRpdmUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlv
biosIGNvbnN0IEFuaW1hdGlvbiosIGJvb2wgYWRkaXRpdmUpOwogICAgIAotICAgIGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1h
dGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CisgICAgY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBj
b25zdCBBbmltYXRpb24mKTsKICAgICAKICAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmlt
YXRpb24qKTsKICAgICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAppbmRleCAwYmVkZDBhNTc0YzI0OTllNWUzYWNl
OTI3YjU0MTFmOTQyMDFhODUwLi45Y2MxZGY2YWQzYmU1NzI5ZDNiMmE4MTc5M2U1YTU3MDRhZTFl
ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC0xMjgsMTkgKzEy
OCwxNiBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0
ZXBzLCBib29sIHN0ZXBBdFN0YXJ0LCBkb3VibGUgdAogICAgIHJldHVybiBmbG9vcihudW1TdGVw
cyAqIHQpIC8gbnVtU3RlcHM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdG
dW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24sIGZsb2F0IHByb2dy
ZXNzLCBkb3VibGUgZHVyYXRpb24pCitzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVu
Y3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVz
cywgZG91YmxlIGR1cmF0aW9uKQogewotICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiBwcm9ncmVzczsKLQotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+
KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlv
bihjdGYtPngxKCksIGN0Zi0+eTEoKSwgY3RmLT54MigpLCBjdGYtPnkyKCksIHByb2dyZXNzLCBk
dXJhdGlvbik7CisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbigpKSB7CisgICAgICAgIGF1dG8mIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBzb2x2
ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLngxKCksIGN0Zi55MSgpLCBjdGYueDIoKSwgY3RmLnky
KCksIHByb2dyZXNzLCBkdXJhdGlvbik7CiAgICAgfQogCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9u
LT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1
bmN0aW9uKiBzdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGlt
aW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi0+bnVt
YmVyT2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9ncmVzcykpOworICAg
IGlmICh0aW1pbmdGdW5jdGlvbi5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBh
dXRvJiBzdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5n
RnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi5udW1iZXJP
ZlN0ZXBzKCksIHN0Zi5zdGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gcHJvZ3Jlc3M7CkBAIC0xOTQsMTMgKzE5MSwxMiBAQCBzdGF0aWMgVHJhbnNm
b3JtYXRpb25NYXRyaXggYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgZgogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLXN0YXRpYyBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25W
YWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitzdGF0aWMgY29uc3QgVGlt
aW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0
aW9uVmFsdWUmIGFuaW1hdGlvblZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikKIHsK
LSAgICBpZiAoYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmlt
VmFsdWUudGltaW5nRnVuY3Rpb24oKTsKLSAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Ci0KKyAgICBpZiAo
YW5pbWF0aW9uVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuICphbmltYXRp
b25WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltYXRpb24udGltaW5nRnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuICphbmltYXRpb24udGltaW5nRnVuY3Rpb24oKTsKICAgICBy
ZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7
CiB9CiAKQEAgLTI1Nyw3ICsyNTMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFw
cGx5KENsaWVudCYgY2xpZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX2tl
eWZyYW1lcy5zaXplKCkgPT0gMikgewotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKG1fa2V5ZnJhbWVz
LmF0KDApLCBtX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgICAgIGF1dG8mIHRpbWluZ0Z1bmN0aW9u
ID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgKm1f
YW5pbWF0aW9uKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlv
bih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24o
KSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9r
ZXlmcmFtZXMuYXQoMSksIG5vcm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3
MCw3ICsyNjYsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFwcGx5KENsaWVudCYg
Y2xpZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgbm9ybWFsaXplZFZhbHVl
ID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZyb20ua2V5VGltZSgpKSAvICh0by5rZXlUaW1lKCkgLSBm
cm9tLmtleVRpbWUoKSk7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZnJvbSwgbV9hbmltYXRpb24u
Z2V0KCkpOworICAgICAgICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUoZnJvbSwgKm1fYW5pbWF0aW9uKTsKICAgICAgICAgbm9ybWFsaXplZFZh
bHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVl
LCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50
LCBmcm9tLCB0bywgbm9ybWFsaXplZFZhbHVlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVySU9TLm1tCmluZGV4IDU4NGZkYWJkOTI0N2ZhNThkOWIwZjBmMDQ2OGQ0MjYwYTY2ZDIwNWEu
LmVmYmU4MGZhZTAzYzRjYTI4ODRkYzJmYjkyYTE3N2ZmYWFjMDJjZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVySU9TLm1tCkBAIC02MCw3ICs2MCw3IEBAIEBpbnRlcmZhY2UgV2ViU3BlZWNoU3ludGhlc2lz
V3JhcHBlciA6IE5TT2JqZWN0PEFWU3BlZWNoU3ludGhlc2l6ZXJEZWxlZ2F0ZT4KIH0KIAogLSAo
V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciAqKWluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6KFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqKXN5bnRoZXNpemVyOwotLSAodm9pZClz
cGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4pdXR0ZXJhbmNlOworLSAodm9pZClzcGVha1V0dGVyYW5jZTooUmVmUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKXV0dGVyYW5jZTsKIAog
QGVuZAogCkBAIC04Nyw3ICs4Nyw3IEBAIC0gKGZsb2F0KW1hcFNwZWVjaFJhdGVUb1BsYXRmb3Jt
UmF0ZTooZmxvYXQpcmF0ZQogICAgIHJldHVybiByYXRlOwogfQogCi0tICh2b2lkKXNwZWFrVXR0
ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPil1dHRlcmFuY2UKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2UKIHsKICAgICAvLyBX
aGVuIHNwZWFrIGlzIGNhbGxlZCB3ZSBzaG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3BlZWNo
IHV0dGVyYW5jZSBvdXRzdGFuZGluZy4KICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKQEAgLTEy
NCw3ICsxMjQsNyBAQCAtICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPil1dAogICAgIFthdlV0dGVyYW5jZSBz
ZXRWb2x1bWU6dXR0ZXJhbmNlLT52b2x1bWUoKV07CiAgICAgW2F2VXR0ZXJhbmNlIHNldFBpdGNo
TXVsdGlwbGllcjp1dHRlcmFuY2UtPnBpdGNoKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRWb2lj
ZTphdlZvaWNlXTsKLSAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5j
ZSA9IFdURk1vdmUodXR0ZXJhbmNlKTsKIAogICAgIFttX3N5bnRoZXNpemVyIHNwZWFrVXR0ZXJh
bmNlOmF2VXR0ZXJhbmNlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggYTFkNzg1ZjQ1NGViZWZhYmI0MTFl
ZjhhYzg5ZDJhZWUwM2UyMjQ1Yy4uMmUxYjJjYjY3ZTBkYTYyMTE1YjBhZDgyNThkNzE1N2MxOWE0
NzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTU1LDEw
ICsxNTUsMTAgQEAgc3RhdGljIExlbmd0aFNpemUgc2l6ZUZyb21OU0NvbnRyb2xTaXplKE5TQ29u
dHJvbFNpemUgbnNDb250cm9sU2l6ZSwgY29uc3QgTGVuZ3QKICAgICBpZiAoem9vbUZhY3RvciAh
PSAxLjBmKQogICAgICAgICBjb250cm9sU2l6ZSA9IEludFNpemUoY29udHJvbFNpemUud2lkdGgo
KSAqIHpvb21GYWN0b3IsIGNvbnRyb2xTaXplLmhlaWdodCgpICogem9vbUZhY3Rvcik7CiAgICAg
TGVuZ3RoU2l6ZSByZXN1bHQgPSB6b29tZWRTaXplOwotICAgIGlmICh6b29tZWRTaXplLndpZHRo
KCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKLSAgICAg
ICAgcmVzdWx0LnNldFdpZHRoKExlbmd0aChjb250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCkpOwot
ICAgIGlmICh6b29tZWRTaXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgY29udHJv
bFNpemUuaGVpZ2h0KCkgPiAwKQotICAgICAgICByZXN1bHQuc2V0SGVpZ2h0KExlbmd0aChjb250
cm9sU2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICBpZiAoem9vbWVkU2l6ZS53aWR0aC5pc0lu
dHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLndpZHRoKCkgPiAwKQorICAgICAgICByZXN1
bHQud2lkdGggPSB7IGNvbnRyb2xTaXplLndpZHRoKCksIEZpeGVkIH07CisgICAgaWYgKHpvb21l
ZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkgJiYgY29udHJvbFNpemUuaGVpZ2h0KCkg
PiAwKQorICAgICAgICByZXN1bHQuaGVpZ2h0ID0geyBjb250cm9sU2l6ZS5oZWlnaHQoKSwgRml4
ZWQgfTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAgc3RhdGlj
IGNvbnN0IGludCogY2hlY2tib3hNYXJnaW5zKE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpCiBz
dGF0aWMgTGVuZ3RoU2l6ZSBjaGVja2JveFNpemUoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpCiB7CiAgICAgLy8g
SWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUg
bm90aGluZyB0byBkby4KLSAgICBpZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09y
QXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAg
aWYgKCF6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUu
aGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwog
CiAgICAgLy8gVXNlIHRoZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lk
dGggb2YgdGhlIGNvbnRyb2wuCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIGNvbnN0IGludCog
cmFkaW9NYXJnaW5zKE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpCiBzdGF0aWMgTGVuZ3RoU2l6
ZSByYWRpb1NpemUoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpCiB7CiAgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBo
ZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAg
ICBpZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRT
aXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgaWYgKCF6b29tZWRTaXplLndp
ZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2lj
T3JBdXRvKCkpCiAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogCiAgICAgLy8gVXNlIHRoZSBm
b250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGNvbnRyb2wu
CkBAIC03MTMsOSArNzEzLDkgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6Y29udHJvbFNpemUoQ29u
dHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnMKICAgICAgICAgICAg
IHJldHVybiByYWRpb1NpemUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CiAgICAgICAg
IGNhc2UgUHVzaEJ1dHRvblBhcnQ6CiAgICAgICAgICAgICAvLyBIZWlnaHQgaXMgcmVzZXQgdG8g
YXV0byBzbyB0aGF0IHNwZWNpZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgotICAgICAgICAg
ICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCBMZW5ndGhTaXplKHpvb21lZFNpemUud2lkdGgo
KSwgTGVuZ3RoKCkpLCB6b29tRmFjdG9yLCBidXR0b25TaXplcygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzaXplRnJvbUZvbnQoZm9udCwgeyB6b29tZWRTaXplLndpZHRoLCB7IH0gfSwgem9vbUZh
Y3RvciwgYnV0dG9uU2l6ZXMoKSk7CiAgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoK
LSAgICAgICAgICAgIGlmICghem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkg
JiYgIXpvb21lZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICAgICAgICAg
IGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXpl
LmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAgICAgICAgICAgICAgIHJldHVybiB6b29t
ZWRTaXplOwogICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6ZShzdGVwcGVy
Q29udHJvbFNpemVGb3JGb250KGZvbnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBzdGVwcGVy
U2l6ZXMoKSk7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MjYsMTcgKzcyNiwxNyBAQCBMZW5ndGhT
aXplIFRoZW1lTWFjOjpjb250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29ucwogTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6bWluaW11bUNvbnRyb2xTaXpl
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdAogewogICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBjYXNlIFNxdWFyZUJ1
dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2Ug
QnV0dG9uUGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhl
ZCksIExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KDE1ICogem9vbUZhY3RvciksIEZpeGVkKSk7Ci0g
ICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDp7Ci0gICAgICAgICAgICBJbnRTaXplIGJh
c2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07Ci0gICAgICAgICAgICByZXR1
cm4gTGVuZ3RoU2l6ZShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29t
RmFjdG9yKSwgRml4ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKHN0
YXRpY19jYXN0PGludD4oYmFzZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAg
ICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVGhlbWU6Om1pbmlt
dW1Db250cm9sU2l6ZShwYXJ0LCBmb250LCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFNxdWFyZUJ1
dHRvblBhcnQ6CisgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvblBh
cnQ6CisgICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyBzdGF0aWNfY2FzdDxpbnQ+KDE1
ICogem9vbUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6
IHsKKyAgICAgICAgYXV0byYgYmFzZSA9IHN0ZXBwZXJTaXplcygpW05TQ29udHJvbFNpemVNaW5p
XTsKKyAgICAgICAgcmV0dXJuIHsgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uud2lkdGgoKSAqIHpv
b21GYWN0b3IpLCBGaXhlZCB9LAorICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uu
aGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgRml4ZWQgfSB9OworICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gVGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBmb250LCB6b29t
RmFjdG9yKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tCmluZGV4IDQzMTVjY2M1N2E1ZDE1ZmNkYjU2NTljNzFmMWJmZDlmZGUyODIxM2MuLmVkMzBh
YjAzMjcwMWNkZTNkMmE2ZGM2OTE3ODJmNzMyZTE1ZWJhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtODksNyArODksNyBAQCB2b2lkIFdpZGdldDo6c2V0
Rm9jdXMoYm9vbCBmb2N1c2VkKQogICAgIGlmICghZm9jdXNlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRoaXMpOworICAgIEZy
YW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTIyYWQ0Mzk3YTA0YzA1NTYxYzdjMWQ2MDY3YWRlYzUxNTlmMjM1NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgiCi0KLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9s
bGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6
RGV2aWNlTW90aW9uQ2xpZW50TW9jaygpCi0gICAgOiBtX2NvbnRyb2xsZXIoMCkKLSAgICAsIG1f
dGltZXIoKnRoaXMsICZEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQotICAgICwg
bV9pc1VwZGF0aW5nKGZhbHNlKQotewotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6
OnNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAg
ICBBU1NFUlQoIW1fY29udHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsK
LSAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRN
b2NrOjpzdGFydFVwZGF0aW5nKCkKLXsKLSAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOwotfQotCi12
b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgbV9pc1Vw
ZGF0aW5nID0gZmFsc2U7Ci0gICAgbV90aW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgRGV2aWNlTW90
aW9uQ2xpZW50TW9jazo6c2V0TW90aW9uKFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gbW90
aW9uKQotewotICAgIG1fbW90aW9uID0gbW90aW9uOwotICAgIGlmIChtX2lzVXBkYXRpbmcgJiYg
IW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19
Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCgpCi17Ci0gICAgbV90
aW1lci5zdG9wKCk7Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZpY2VNb3Rpb24obV9t
b3Rpb24uZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzYyNjgyOGVhNGYzOTQxZGU1YmNlMDE1MzU4OGQx
YjA0Y2FlOTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGV2aWNlTW90
aW9uQ2xpZW50TW9ja19oCi0jZGVmaW5lIERldmljZU1vdGlvbkNsaWVudE1vY2tfaAotCi0jaW5j
bHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5o
IgotI2luY2x1ZGUgIlRpbWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEZXZp
Y2VNb3Rpb25Db250cm9sbGVyOwotCi0vLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNl
TW90aW9uQ2xpZW50IHVzZWQgdG8gdGVzdCB0aGUgZmVhdHVyZSBpbgotLy8gRHVtcFJlbmRlclRy
ZWUuIEVtYmVkZGVycyBzaG91bGQgc2hvdWxkIGNvbmZpZ3VyZSB0aGUgUGFnZSBvYmplY3QgdG8g
dXNlIHRoaXMKLS8vIGNsaWVudCB3aGVuIHJ1bm5pbmcgRHVtcFJlbmRlclRyZWUuCi1jbGFzcyBE
ZXZpY2VNb3Rpb25DbGllbnRNb2NrIDogcHVibGljIERldmljZU1vdGlvbkNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgRGV2aWNlTW90aW9uQ2xpZW50TW9jaygpOwotCi0gICAgLy8gRGV2aWNlTW90aW9u
Q2xpZW50Ci0gICAgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xsZXIqKSBv
dmVycmlkZTsKLSAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0
b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21vdGlvbi5nZXQoKTsgfQotICAgIC8vIG1vY2sg
aXMgb3duZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrLCB3aGljaCBzaG91bGQgaGFuZGxlIGRl
bGV0aW9uCi0gICAgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJp
ZGUgeyB9Ci0KLSAgICB2b2lkIHNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+
KTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLQotICAgIFJlZlB0cjxEZXZp
Y2VNb3Rpb25EYXRhPiBtX21vdGlvbjsKLSAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7Ci0gICAgVGltZXIgbV90aW1lcjsKLSAgICBib29sIG1faXNVcGRhdGluZzsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERldmljZU1vdGlvbkNsaWVu
dE1vY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAppbmRleCAz
ODgxMWZjMTA4MTg4Y2ZlMjZlMTgwZjAwZjlmNTBmZDYxNWRiN2QzLi43YTk5MzEzNmJhMmMzYTA1
ZDJkMzE5NmE1NTY3NzE4YTAwZGFmODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q3Vyc29yV2luLmNwcApAQCAtNDAsMTAgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFn
ZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29y
PiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGhvdFNwb3Qp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEN1cnNvcj4gaW1wbDsKLQogICAgIEludFBvaW50IGVmZmVj
dGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltZywgaG90U3BvdCk7CiAgICAgc3RhdGlj
IGJvb2wgZG9BbHBoYSA9IHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93c1hQOwogICAgIEJpdG1h
cEluZm8gY3Vyc29ySW1hZ2UgPSBCaXRtYXBJbmZvOjpjcmVhdGUoSW50U2l6ZShpbWctPndpZHRo
KCksIGltZy0+aGVpZ2h0KCkpKTsKQEAgLTUyLDggKzUwLDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9p
bnQmIGgKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0
aWJsZURDKGRjKSk7CiAgICAgaWYgKGRvQWxwaGEpIHsKICAgICAgICAgYXV0byBoQ3Vyc29yID0g
YWRvcHRHRElPYmplY3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9S
R0JfQ09MT1JTLCBudWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29y
LmdldCgpKTsgCiAgICAgICAgIEhCSVRNQVAgaE9sZEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9i
amVjdCh3b3JraW5nREMuZ2V0KCksIGhDdXJzb3IuZ2V0KCkpOwpAQCAtNzEsMTUgKzY3LDEzIEBA
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdl
KiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgICAgIGlpLmhibU1hc2sgPSBoTWFzay5nZXQo
KTsKICAgICAgICAgaWkuaGJtQ29sb3IgPSBoQ3Vyc29yLmdldCgpOwogCi0gICAgICAgIGltcGwg
PSBTaGFyZWRDdXJzb3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXJlZEN1cnNvcjo6Y3JlYXRlKDo6Q3JlYXRlSWNvbkluZGlyZWN0KCZpaSkp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBhbHBo
YSBibGVuZGVkIGN1cnNvcnMsIHNvIHdlIG5lZWQKICAgICAgICAgLy8gdG8gY3JlYXRlIHRoZSBt
YXNrIG1hbnVhbGx5CiAgICAgICAgIGF1dG8gYW5kTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpD
cmVhdGVDb21wYXRpYmxlREMoZGMpKTsKICAgICAgICAgYXV0byB4b3JNYXNrREMgPSBhZG9wdEdE
SU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwogICAgICAgICBhdXRvIGhDdXJzb3Ig
PSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZURJQlNlY3Rpb24oZGMsICZjdXJzb3JJbWFnZSwgRElC
X1JHQl9DT0xPUlMsIG51bGxwdHIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFoQ3Vyc29yKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaW1nLT5nZXRIQklUTUFQKGhDdXJz
b3IuZ2V0KCkpOyAKICAgICAgICAgQklUTUFQIGN1cnNvcjsKQEAgLTEwOCwxOCArMTAyLDE2IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdl
KiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgICAgIGljb24ueUhvdHNwb3QgPSBlZmZlY3Rp
dmVIb3RTcG90LnkoKTsKICAgICAgICAgaWNvbi5oYm1NYXNrID0gYW5kTWFzay5nZXQoKTsKICAg
ICAgICAgaWNvbi5oYm1Db2xvciA9IHhvck1hc2suZ2V0KCk7Ci0gICAgICAgIGltcGwgPSBTaGFy
ZWRDdXJzb3I6OmNyZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKKyAgICAgICAgcmV0
dXJuIFNoYXJlZEN1cnNvcjo6Y3JlYXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOwogICAg
IH0KLQotICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQ3Vyc29yPiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBoSW5zdGFuY2UsIExQQ1dT
VFIgbHBDdXJzb3JOYW1lKQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGxvYWRTaGFyZWRDdXJz
b3IoSElOU1RBTkNFIGhJbnN0YW5jZSwgTFBDV1NUUiBscEN1cnNvck5hbWUpCiB7CiAgICAgcmV0
dXJuIFNoYXJlZEN1cnNvcjo6Y3JlYXRlKDo6TG9hZEN1cnNvclcoaEluc3RhbmNlLCBscEN1cnNv
ck5hbWUpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29y
QnlOYW1lKGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29y
PiBsb2FkQ3Vyc29yQnlOYW1lKGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKIHsKICAgICBJbnRQ
b2ludCBob3RTcG90KHgsIHkpOwogICAgIFJlZlB0cjxJbWFnZT4gY3Vyc29ySW1hZ2UoSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDAwMDg3ZDIzZjYyNjg2NWY5NzZh
NzYyODYxZjY3NDM5YTBjY2JiZDMuLmY1OWYxNWY2YjRlMDcxZjAzOTk5NzAzMzNlMWRiZDkxZjhj
MWM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0CiAK
IEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29uc3RfY2FzdDxGaWx0ZXJFZmZlY3QmPihtX2VmZmVjdHMubGFzdCgpLmdldCgp
KS5hc0ltYWdlQnVmZmVyKCk7CisgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCktPmFzSW1hZ2VC
dWZmZXIoKTsKIH0KIAogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVj
dHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQg
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYg
ZWZmZWN0UmVjdCkKIAogSW50UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0UmVjdCgp
IGNvbnN0CiB7Ci0gICAgYXV0byYgbGFzdEVmZmVjdCA9IGNvbnN0X2Nhc3Q8RmlsdGVyRWZmZWN0
Jj4obV9lZmZlY3RzLmxhc3QoKS5nZXQoKSk7CisgICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgaWYgKCFsYXN0RWZmZWN0Lmhhc1Jlc3VsdCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9m
SW5wdXRJbWFnZURhdGEoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDYz
YjczYzVjNTMyNDIzMzljNmQzNjAxZDZhMmM2NWFlZDNhZjVhMDMuLmMyYjIyMTZhNmE5OGY3NTY0
YWU4OTk4ZTAyMjhkN2Y2MDNjNThiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6
Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpp
bnRlcnBvbGF0aW9uUXVhbGl0eQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLUludGVy
cG9sYXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVycG9sYXRp
b25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSkKK0ludGVycG9sYXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNo
b29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwg
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEg
Yml0bWFwIGltYWdlLCB0aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBw
YWludCBhdCBoaWdoIHF1YWxpdHkuCiAgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8
IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBiMWZi
MzBhMDljYzNhMmY1NGFkOGFiNDc1OGZiYjViMTA3OTJlNWRjLi41YTAwZjllY2UwYWE4OTUxYTJl
NmQ4MGVhZmY0MWU2YmJlYzQzZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCkBAIC0xMjMxLDEyICsxMjMxLDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBm
aWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQor
dm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZXIsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGlmICgh
ZmlsbExheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5m
bywgYywgZmlsbExheWVyLT5uZXh0KCksIHJlY3QsIG9wKTsKLSAgICBwYWludEZpbGxMYXllcihw
YWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgb3ApOworICAgIFZlY3Rvcjxjb25zdCBGaWxs
TGF5ZXIqLCA4PiBsYXllcnM7CisgICAgZm9yIChhdXRvKiBsYXllciA9ICZmaWxsTGF5ZXI7IGxh
eWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpCisgICAgICAgIGxheWVycy5hcHBlbmQobGF5ZXIp
OworICAgIGxheWVycy5yZXZlcnNlKCk7CisgICAgZm9yIChhdXRvKiBsYXllciA6IGxheWVycykK
KyAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjb2xvciwgKmxheWVyLCByZWN0LCBv
cCk7CiB9CiAKIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNr
Z3JvdW5kKGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tncm91bmRMYXllcikgY29uc3QKQEAgLTEy
NDgsMTcgKzEyNTAsMTcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpib3hTaGFkb3dDYW5CZUFwcGxp
ZWRUb0JhY2tncm91bmQoY29uc3QgRmlsbExheWVyJiBsYXN0QmFja2cKICAgICByZXR1cm4gKCFo
YXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgfHwg
KCFwcmV2TGluZUJveCgpICYmICFuZXh0TGluZUJveCgpKSB8fCAhcGFyZW50KCk7CiB9CiAKLXZv
aWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBTdHlsZUltYWdlKiBpbWcgPSBmaWxsTGF5
ZXItPmltYWdlKCk7Ci0gICAgYm9vbCBoYXNGaWxsSW1hZ2UgPSBpbWcgJiYgaW1nLT5jYW5SZW5k
ZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAg
IGF1dG8qIGltYWdlID0gZmlsbExheWVyLmltYWdlKCk7CisgICAgYm9vbCBoYXNGaWxsSW1hZ2Ug
PSBpbWFnZSAmJiBpbWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlcigpLCByZW5kZXJlcigpLnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICBpZiAoKCFoYXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVy
KCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgfHwgKCFwcmV2TGluZUJveCgpICYmICFuZXh0
TGluZUJveCgpKSB8fCAhcGFyZW50KCkpCi0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVk
Tm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZp
bGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgY29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dy
b3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JP
WF9ERUNPUkFUSU9OX0JSRUFLKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hE
ZWNvcmF0aW9uQnJlYWsoKSA9PSBEQ0xPTkUpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCks
IGhlaWdodCgpKSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChw
YWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywg
cmVjdC5zaXplKCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVu
ZGVkKHBhaW50SW5mbywgY29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9u
ZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIHsKQEAg
LTEyOTAsNyArMTI5Miw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVj
dC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgs
IHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0
aGlzLCByZWN0LnNpemUoKSwgb3ApOworICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVy
RXh0ZW5kZWQocGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwg
c3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRo
aXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAgICAgfQogfQogCkBAIC0xNDQ2LDcgKzE0NDgsNyBAQCB2
b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgaWYgKCFjb21wb3NpdGVkTWFz
ayB8fCBmbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpIHsKLSAgICAgICAgaWYgKChtYXNrQm94SW1h
Z2UgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS0+aGFzSW1hZ2UoKSkgfHwgcmVu
ZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS0+bmV4dCgpKQorICAgICAgICBpZiAoKG1hc2tC
b3hJbWFnZSAmJiByZW5kZXJlcigpLnN0eWxlKCkubWFza0xheWVycygpLmhhc0ltYWdlKCkpIHx8
IHJlbmRlcmVyKCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCkubmV4dCgpKQogICAgICAgICAgICAgcHVz
aFRyYW5zcGFyZW5jeUxheWVyID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9w
ID0gQ29tcG9zaXRlRGVzdGluYXRpb25JbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oCmluZGV4IDgzOTA1YmRjNGU3YTdlYjA3ZjkzN2U0MmEwMGNkNjI0NTljMDQ1Yjku
LjU3MmIwMjU2MWIxZDkxZjZhZWIwYzQ4ZDFiZWUyNjMyYjM1NmVlZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtMTE1LDggKzExNSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpOwogICAgIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0
UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgdm9p
ZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBG
aWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNo
YWRvdyhjb25zdCBQYWludEluZm8mLCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBj
b25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVy
cmlkZTsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGI0YTdiYTAyMzc5NzFmMTdhYTJjMDc5NWMz
MGVjMjI5NzcwOTlhM2MuLjhhOTZjODQ5N2ZiMzQ2ZDQ5MjNmZTAyZWQxZWI3MDQ4MzFiN2JkNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjcwLDEwICsxMjcw
LDkgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8pCiAgICAgaWYgKCFyb290QmFja2dyb3VuZFJlbmRlcmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIgPSByb290QmFja2dyb3Vu
ZFJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsKLSAgICBDb2xvciBiZ0NvbG9y
ID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50
SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91
bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIp
OworICAgIGF1dG8mIHN0eWxlID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5bGUoKTsKKyAg
ICBhdXRvIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjb2xvciwgc3R5
bGUuYmFja2dyb3VuZExheWVycygpLCB2aWV3KCkuYmFja2dyb3VuZFJlY3QoKSwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3Zlciwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7
CiB9CiAKIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWluZUJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0x
NDE0LDEyICsxNDEzLDEzIEBAIGJvb2wgUmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4
dGVudChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmICghc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmlt
YWdlKCkgfHwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkgeworICAgIGF1dG8m
IGxheWVycyA9IHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpOworICAgIGlmICghbGF5ZXJzLmlt
YWdlKCkgfHwgbGF5ZXJzLm5leHQoKSkgewogICAgICAgICBwYWludGVkRXh0ZW50ID0gIGJhY2tn
cm91bmRSZWN0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5
KG51bGxwdHIsICpzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRPZmZzZXQsIGJhY2tn
cm91bmRSZWN0KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdl
R2VvbWV0cnkobnVsbHB0ciwgbGF5ZXJzLCBwYWludE9mZnNldCwgYmFja2dyb3VuZFJlY3QpOwog
ICAgIHBhaW50ZWRFeHRlbnQgPSBnZW9tZXRyeS5kZXN0UmVjdCgpOwogICAgIHJldHVybiAhZ2Vv
bWV0cnkuaGFzTm9uTG9jYWxHZW9tZXRyeSgpOwogfQpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgYm9v
bCBSZW5kZXJCb3g6OmJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlv
dXRSZWN0JiBsb2NhbFJlY3QpIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8v
IEZJWE1FOiBUaGUgYmFja2dyb3VuZCBjb2xvciBjbGlwIGlzIGRlZmluZWQgYnkgdGhlIGxhc3Qg
bGF5ZXIuCi0gICAgaWYgKHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpCisgICAg
aWYgKHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLm5leHQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJlY3Q7CiAgICAgc3dpdGNoIChzdHlsZSgp
LmJhY2tncm91bmRDbGlwKCkpIHsKQEAgLTE1MzksMTkgKzE1MzksMTkgQEAgYm9vbCBSZW5kZXJC
b3g6OmNvbXB1dGVCYWNrZ3JvdW5kSXNLbm93blRvQmVPYnNjdXJlZChjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmYKIAogYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXll
cigpIGNvbnN0CiB7Ci0gICAgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKTsKLSAgICBpZiAoIWZpbGxMYXllciB8fCBmaWxsTGF5ZXItPmNsaXAo
KSAhPSBCb3JkZXJGaWxsQm94KQorICAgIGF1dG8mIGZpbGxMYXllciA9IHN0eWxlKCkuYmFja2dy
b3VuZExheWVycygpOworICAgIGlmIChmaWxsTGF5ZXIuY2xpcCgpICE9IEJvcmRlckZpbGxCb3gp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENsaXBwZWQgd2l0aCBsb2NhbCBzY3Jv
bGxpbmcKLSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgZmlsbExheWVyLT5hdHRhY2htZW50
KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlw
KCkgJiYgZmlsbExheWVyLmF0dGFjaG1lbnQoKSA9PSBMb2NhbEJhY2tncm91bmRBdHRhY2htZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmlsbExheWVyLT5oYXNPcGFxdWVJ
bWFnZSgqdGhpcykgJiYgZmlsbExheWVyLT5oYXNSZXBlYXRYWSgpICYmIGZpbGxMYXllci0+aW1h
Z2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkKKyAgICBpZiAo
ZmlsbExheWVyLmhhc09wYXF1ZUltYWdlKCp0aGlzKSAmJiBmaWxsTGF5ZXIuaGFzUmVwZWF0WFko
KSAmJiBmaWxsTGF5ZXIuaW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5
IG9uZSBsYXllciBhbmQgbm8gaW1hZ2UsIGNoZWNrIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgY29s
b3IgaXMgb3BhcXVlLgotICAgIGlmICghZmlsbExheWVyLT5uZXh0KCkgJiYgIWZpbGxMYXllci0+
aGFzSW1hZ2UoKSkgeworICAgIGlmICghZmlsbExheWVyLm5leHQoKSAmJiAhZmlsbExheWVyLmhh
c0ltYWdlKCkpIHsKICAgICAgICAgQ29sb3IgYmdDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgaWYgKGJnQ29s
b3IuaXNPcGFxdWUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTU5MCwxNSArMTU5
MCwxMiBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQogICAgIAogICAgIGlmICghY29tcG9zaXRl
ZE1hc2sgfHwgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSB7CiAgICAgICAgIHB1c2hUcmFuc3Bh
cmVuY3lMYXllciA9IHRydWU7Ci0gICAgICAgIFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IHN0
eWxlKCkubWFza0JveEltYWdlKCkuaW1hZ2UoKTsKLSAgICAgICAgY29uc3QgRmlsbExheWVyKiBt
YXNrTGF5ZXJzID0gc3R5bGUoKS5tYXNrTGF5ZXJzKCk7CiAKICAgICAgICAgLy8gRG9uJ3QgcmVu
ZGVyIGEgbWFza2VkIGVsZW1lbnQgdW50aWwgYWxsIHRoZSBtYXNrIGltYWdlcyBoYXZlIGxvYWRl
ZCwgdG8gcHJldmVudCBhIGZsYXNoIG9mIHVubWFza2VkIGNvbnRlbnQuCi0gICAgICAgIGlmICht
YXNrQm94SW1hZ2UpCisgICAgICAgIGlmIChhdXRvKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1h
c2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9
IG1hc2tCb3hJbWFnZS0+aXNMb2FkZWQoKTsKIAotICAgICAgICBpZiAobWFza0xheWVycykKLSAg
ICAgICAgICAgIGFsbE1hc2tJbWFnZXNMb2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9h
ZGVkKCk7CisgICAgICAgIGFsbE1hc2tJbWFnZXNMb2FkZWQgJj0gc3R5bGUoKS5tYXNrTGF5ZXJz
KCkuaW1hZ2VzQXJlTG9hZGVkKCk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKQEAgLTE2MjcsNzEgKzE2
MjQsNjkgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgCiAgICAgTGF5b3V0UmVjdCByZXN1bHQ7CiAgICAgTGF5
b3V0UmVjdCBib3JkZXJCb3ggPSBib3JkZXJCb3hSZWN0KCk7Ci0gICAgZm9yIChjb25zdCBGaWxs
TGF5ZXIqIG1hc2tMYXllciA9IHN0eWxlKCkubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tM
YXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAm
c3R5bGUoKS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKICAgICAgICAgaWYgKG1hc2tMYXllci0+aW1hZ2UoKSkgewogICAgICAgICAgICAg
Ly8gTWFza3Mgc2hvdWxkIG5ldmVyIGhhdmUgZml4ZWQgYXR0YWNobWVudCwgc28gaXQncyBPSyBm
b3IgcGFpbnRDb250YWluZXIgdG8gYmUgbnVsbC4KLSAgICAgICAgICAgIEJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVs
bHB0ciwgKm1hc2tMYXllciwgcGFpbnRPZmZzZXQsIGJvcmRlckJveCk7Ci0gICAgICAgICAgICBy
ZXN1bHQudW5pdGUoZ2VvbWV0cnkuZGVzdFJlY3QoKSk7CisgICAgICAgICAgICByZXN1bHQudW5p
dGUoY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKm1hc2tMYXllciwg
cGFpbnRPZmZzZXQsIGJvcmRlckJveCkuZGVzdFJlY3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXll
ciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBh
aW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNv
bG9yLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwK
ICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAgIFZlY3Rv
cjxjb25zdCBGaWxsTGF5ZXIqLCA4PiBsYXllcnM7Ci0gICAgY29uc3QgRmlsbExheWVyKiBjdXJM
YXllciA9IGZpbGxMYXllcjsKICAgICBib29sIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0
ZUJ1ZmZlciA9IGZhbHNlOwotICAgIHdoaWxlIChjdXJMYXllcikgewotICAgICAgICBsYXllcnMu
YXBwZW5kKGN1ckxheWVyKTsKKworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBs
YXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGxheWVycy5hcHBlbmQobGF5
ZXIpOworCisgICAgICAgIGlmIChsYXllci0+YmxlbmRNb2RlKCkgIT0gQmxlbmRNb2RlTm9ybWFs
KQorICAgICAgICAgICAgc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyID0gdHJ1
ZTsKKwogICAgICAgICAvLyBTdG9wIHRyYXZlcnNhbCB3aGVuIGFuIG9wYXF1ZSBsYXllciBpcyBl
bmNvdW50ZXJlZC4KLSAgICAgICAgLy8gRklYTUUgOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3Ig
dGhlIGZvbGxvd2luZyBvY2NsdXNpb24gY3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2
ZSAKKyAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9sbG93
aW5nIG9jY2x1c2lvbiBjdWxsaW5nIHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlCiAgICAgICAg
IC8vIG9uIGxheWVycyB3aXRoIG5vIHJlcGVhdCBieSB0ZXN0aW5nIHdoZXRoZXIgdGhlIGltYWdl
IGNvdmVycyB0aGUgbGF5b3V0IHJlY3QuCiAgICAgICAgIC8vIFRlc3RpbmcgdGhhdCBoZXJlIHdv
dWxkIGltcGx5IGR1cGxpY2F0aW5nIGEgbG90IG9mIGNhbGN1bGF0aW9ucyB0aGF0IGFyZSBjdXJy
ZW50bHkgZG9uZSBpbgogICAgICAgICAvLyBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZC4gQSBtb3JlIGVmZmljaWVudCBzb2x1dGlvbiBtaWdodCBiZSB0byBtb3Zl
CiAgICAgICAgIC8vIHRoZSBsYXllciByZWN1cnNpb24gaW50byBwYWludEZpbGxMYXllckV4dGVu
ZGVkLCBvciB0byBjb21wdXRlIHRoZSBsYXllciBnZW9tZXRyeSBoZXJlCiAgICAgICAgIC8vIGFu
ZCBwYXNzIGl0IGRvd24uCiAKLSAgICAgICAgaWYgKCFzaG91bGREcmF3QmFja2dyb3VuZEluU2Vw
YXJhdGVCdWZmZXIgJiYgY3VyTGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkK
LSAgICAgICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7
Ci0KICAgICAgICAgLy8gVGhlIGNsaXBPY2NsdWRlc05leHRMYXllcnMgY29uZGl0aW9uIG11c3Qg
YmUgZXZhbHVhdGVkIGZpcnN0IHRvIGF2b2lkIHNob3J0LWNpcmN1aXRpbmcuCi0gICAgICAgIGlm
IChjdXJMYXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhjdXJMYXllciA9PSBmaWxsTGF5ZXIp
ICYmIGN1ckxheWVyLT5oYXNPcGFxdWVJbWFnZSgqdGhpcykgJiYgY3VyTGF5ZXItPmltYWdlKCkt
PmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkgJiYgY3VyTGF5ZXItPmhh
c1JlcGVhdFhZKCkgJiYgY3VyTGF5ZXItPmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZU5vcm1hbCkK
KyAgICAgICAgaWYgKGxheWVyLT5jbGlwT2NjbHVkZXNOZXh0TGF5ZXJzKGxheWVyID09ICZmaWxs
TGF5ZXIpICYmIGxheWVyLT5oYXNPcGFxdWVJbWFnZSgqdGhpcykgJiYgbGF5ZXItPmltYWdlKCkt
PmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkgJiYgbGF5ZXItPmhhc1Jl
cGVhdFhZKCkgJiYgbGF5ZXItPmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZU5vcm1hbCkKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0KCk7CiAgICAg
fQogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsK
LSAgICBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNr
Z3JvdW5kQ29sb3JVc2U7CisgICAgYXV0byYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7
CisgICAgYXV0byBiYXNlQmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZTsKIAog
ICAgIGlmIChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpIHsKLSAgICAgICAg
cGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCAqbGF5ZXJzLnJiZWdpbigpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5
KTsKKyAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjb2xvciwgKmxheWVycy5sYXN0
KCksIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tn
cm91bmRDb2xvck9ubHkpOwogICAgICAgICBiYXNlQmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91
bmRDb2xvclNraXA7CiAgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsK
ICAgICB9CiAKLSAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKj46OmNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgdG9wTGF5ZXIgPSBsYXllcnMucmVuZCgpOwotICAgIGZvciAoVmVjdG9yPGNvbnN0IEZp
bGxMYXllcio+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbGF5ZXJzLnJiZWdpbigpOyBp
dCAhPSB0b3BMYXllcjsgKytpdCkKLSAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBj
LCAqaXQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCwgYmFzZUJn
Q29sb3JVc2FnZSk7CisgICAgYXV0byB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CisgICAgZm9y
IChhdXRvIGl0ID0gbGF5ZXJzLnJiZWdpbigpOyBpdCAhPSB0b3BMYXllcjsgKytpdCkKKyAgICAg
ICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjb2xvciwgKippdCwgcmVjdCwgYmxlZWRBdm9p
ZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlm
IChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpCiAgICAgICAgIGNvbnRleHQu
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmls
bExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJlbmRlckJv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwK
ICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3Vu
ZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKICAgICBwYWludEZpbGxMYXllckV4dGVu
ZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgbnVsbHB0
ciwgTGF5b3V0U2l6ZSgpLCBvcCwgYmFja2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7
CiB9CiAKLXN0YXRpYyBib29sIGxheWVyc1VzZUltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwg
Y29uc3QgRmlsbExheWVyKiBsYXllcnMpCitzdGF0aWMgYm9vbCBsYXllcnNVc2VJbWFnZShXcmFw
cGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzKQogewotICAgIGZvciAo
Y29uc3QgRmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0g
Y3VyTGF5ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1h
Z2UgPT0gY3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSkKKyAgICBmb3IgKGF1dG8qIGxheWVyID0g
JmxheWVyczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5
ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0gbGF5ZXItPmltYWdlKCktPmRhdGEoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTcy
NSwxMyArMTcyMCwxMyBAQCB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFn
ZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCopCiAgICAgICAgIGxheWVyKCktPmNvbnRlbnRDaGFu
Z2VkKEJhY2tncm91bmRJbWFnZUNoYW5nZWQpOwogfQogCi1ib29sIFJlbmRlckJveDo6cmVwYWlu
dExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
ciogbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKQorYm9vbCBSZW5kZXJCb3g6OnJlcGFp
bnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5
ZXImIGxheWVycywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCkKIHsKICAgICBMYXlvdXRSZWN0IHJl
bmRlcmVyUmVjdDsKICAgICBSZW5kZXJCb3gqIGxheWVyUmVuZGVyZXIgPSBudWxscHRyOwogCi0g
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1ckxheWVyID0gbGF5ZXJzOyBjdXJMYXllcjsgY3Vy
TGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJMYXllci0+aW1hZ2Uo
KSAmJiBpbWFnZSA9PSBjdXJMYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGN1ckxheWVyLT5pbWFn
ZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CisgICAgZm9y
IChhdXRvKiBsYXllciA9ICZsYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsK
KyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5k
YXRhKCkgJiYgbGF5ZXItPmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKSkpIHsKICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgdGhpcyBpbWFnZSBp
cyBiZWluZyB1c2VkLCBjb21wdXRlIHRoZSByZW5kZXJlciBhbmQgdGhlIHJlY3QgaWYgd2UgaGF2
ZW4ndCBhbHJlYWR5LgogICAgICAgICAgICAgYm9vbCBkcmF3aW5nUm9vdEJhY2tncm91bmQgPSBk
cmF3aW5nQmFja2dyb3VuZCAmJiAoaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IChpc0Jv
ZHkoKSAmJiAhZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+aGFzQmFj
a2dyb3VuZCgpKSk7CiAgICAgICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXIpIHsKQEAgLTE3NTEs
NyArMTc0Niw3IEBAIGJvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdy
YXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHBh
c3MgYWJzb2x1dGUgcG9zaXRpb24gdG8gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
KGZvciBwaXhlbCBzbmFwcGluZykKLSAgICAgICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5
IGdlb21ldHJ5ID0gbGF5ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0
cnkobnVsbHB0ciwgKmN1ckxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5kZXJlclJlY3QpOworICAg
ICAgICAgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBsYXllclJlbmRlcmVy
LT5jYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqbGF5ZXIsIExheW91
dFBvaW50KCksIHJlbmRlcmVyUmVjdCk7CiAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaGFzTm9u
TG9jYWxHZW9tZXRyeSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gUmF0aGVyIHRoYW4gaW5jdXIg
dGhlIGNvc3RzIG9mIGNvbXB1dGluZyB0aGUgcGFpbnRDb250YWluZXIgZm9yIHJlbmRlcmVycyB3
aXRoIGZpeGVkIGJhY2tncm91bmRzCiAgICAgICAgICAgICAgICAgLy8gaW4gb3JkZXIgdG8gZ2V0
IHRoZSByaWdodCBkZXN0UmVjdCwganVzdCByZXBhaW50IHRoZSBlbnRpcmUgcmVuZGVyZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZDBmYTdiMmE1NzYyNzlkYTAxNWY2
Mjg1N2E0YmI0YzM4N2I3ODEyZC4uMDEyNGFkYWJjMzhhNWY2NDgyYWM2OWViODE5OWExNzhmMzVh
NWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjI3LDggKzYyNyw4
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3Jv
dW5kQmxlZWROb25lKTsKICAgICAKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1l
bnQqIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNr
Z3JvdW5kQ29sb3JVc2UpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCA9IG51bGxwdHIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyRWxlbWVudCog
YmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91
bmRDb2xvclVzZSk7CisgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0
ID0gbnVsbHB0cik7CiAKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8m
LCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKQEAgLTY2Niw4ICs2NjYsOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgZGlkIGEgZnVsbCByZXBhaW50Ci0gICAgYm9v
bCByZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3Qg
RmlsbExheWVyKiBsYXllcnMsIGJvb2wgZHJhd2luZ0JhY2tncm91bmQpOworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB3ZSBkaWQgYSBmdWxsIHJlcGFpbnQuCisgICAgYm9vbCByZXBhaW50TGF5ZXJS
ZWN0c0ZvckltYWdlKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpOwogCiAgICAgYm9vbCBza2lwQ29udGFpbmluZ0Jsb2NrRm9y
UGVyY2VudEhlaWdodENhbGN1bGF0aW9uKGNvbnN0IFJlbmRlckJveCYgY29udGFpbmluZ0Jsb2Nr
LCBib29sIGlzUGVycGVuZGljdWxhcldyaXRpbmdNb2RlKSBjb25zdDsKICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWM2
NTliNzJjYTlkMDc3ZmI2NzJhNjcyMjVhM2M1MjNkZTFhMDE2OC4uMWY0ZDBjNWZjOWQ1YTVhYWVj
OTdkYWFmNzk2YTY1OTNhYWJiZGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1h
c2tJbWFnZSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxs
TGF5ZXImIGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExh
eW91dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBi
YWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2Fn
ZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
OwpAQCAtNjM1LDEyICs2MzUsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBib29s
IGluY2x1ZGVSaWdodEVkZ2UgPSBib3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkg
OiB0cnVlOwogCiAgICAgYm9vbCBoYXNSb3VuZGVkQm9yZGVyID0gc3R5bGUoKS5oYXNCb3JkZXJS
YWRpdXMoKSAmJiAoaW5jbHVkZUxlZnRFZGdlIHx8IGluY2x1ZGVSaWdodEVkZ2UpOwotICAgIGJv
b2wgY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5
ZXItPmF0dGFjaG1lbnQoKSA9PSBMb2NhbEJhY2tncm91bmRBdHRhY2htZW50OwotICAgIGJvb2wg
aXNCb3JkZXJGaWxsID0gYmdMYXllci0+Y2xpcCgpID09IEJvcmRlckZpbGxCb3g7CisgICAgYm9v
bCBjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nID0gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgYmdMYXll
ci5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKKyAgICBib29sIGlz
Qm9yZGVyRmlsbCA9IGJnTGF5ZXIuY2xpcCgpID09IEJvcmRlckZpbGxCb3g7CiAgICAgYm9vbCBp
c1Jvb3QgPSB0aGlzLT5pc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCk7CiAKICAgICBDb2xvciBi
Z0NvbG9yID0gY29sb3I7Ci0gICAgU3R5bGVJbWFnZSogYmdJbWFnZSA9IGJnTGF5ZXItPmltYWdl
KCk7CisgICAgU3R5bGVJbWFnZSogYmdJbWFnZSA9IGJnTGF5ZXIuaW1hZ2UoKTsKICAgICBib29s
IHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5k
ZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogICAgIAogICAgIGJvb2wgZm9yY2VC
YWNrZ3JvdW5kVG9XaGl0ZSA9IGZhbHNlOwpAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgLy8gd2hpbGUgcmVuZGVyaW5nLikKICAgICBpZiAoZm9yY2VCYWNr
Z3JvdW5kVG9XaGl0ZSkgewogICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgcmV1c2UgdGhp
cyB2YXJpYWJsZSBiZWxvdyBiZWNhdXNlIHRoZSBiZ0NvbG9yIG1pZ2h0IGJlIGNoYW5nZWQKLSAg
ICAgICAgYm9vbCBzaG91bGRQYWludEJhY2tncm91bmRDb2xvciA9ICFiZ0xheWVyLT5uZXh0KCkg
JiYgYmdDb2xvci5pc1Zpc2libGUoKTsKKyAgICAgICAgYm9vbCBzaG91bGRQYWludEJhY2tncm91
bmRDb2xvciA9ICFiZ0xheWVyLm5leHQoKSAmJiBiZ0NvbG9yLmlzVmlzaWJsZSgpOwogICAgICAg
ICBpZiAoc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgfHwgc2hvdWxkUGFpbnRCYWNrZ3JvdW5k
Q29sb3IpIHsKICAgICAgICAgICAgIGJnQ29sb3IgPSBDb2xvcjo6d2hpdGU7CiAgICAgICAgICAg
ICBzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSA9IGZhbHNlOwpAQCAtNjY4LDcgKzY2OCw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgfQogCiAgICAgYm9vbCBiYXNlQmdDb2xvck9u
bHkgPSAoYmFzZUJnQ29sb3JVc2FnZSA9PSBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7Ci0gICAg
aWYgKGJhc2VCZ0NvbG9yT25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLT5uZXh0KCkgfHwgYmdD
b2xvci5pc09wYXF1ZSgpKSkKKyAgICBpZiAoYmFzZUJnQ29sb3JPbmx5ICYmICghaXNSb290IHx8
IGJnTGF5ZXIubmV4dCgpIHx8IGJnQ29sb3IuaXNPcGFxdWUoKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGJvb2wgY29sb3JWaXNpYmxlID0gYmdDb2xvci5pc1Zpc2libGUoKTsKQEAgLTY3Niw3
ICs2NzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIEZsb2F0UmVjdCBwaXhlbFNu
YXBwZWRSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhyZWN0LCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAKICAgICAvLyBGYXN0IHBhdGggZm9yIGRyYXdpbmcgc2ltcGxlIGNvbG9yIGJhY2tncm91
bmRzLgotICAgIGlmICghaXNSb290ICYmICFjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nICYmICFz
aG91bGRQYWludEJhY2tncm91bmRJbWFnZSAmJiBpc0JvcmRlckZpbGwgJiYgIWJnTGF5ZXItPm5l
eHQoKSkgeworICAgIGlmICghaXNSb290ICYmICFjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nICYm
ICFzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSAmJiBpc0JvcmRlckZpbGwgJiYgIWJnTGF5ZXIu
bmV4dCgpKSB7CiAgICAgICAgIGlmICghY29sb3JWaXNpYmxlKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC03MDksMTAgKzcwOSwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJl
Y3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNl
LCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRC
YWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUu
aGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAg
Ly8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KLSAg
ICAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBDb250ZW50RmlsbEJveCkgeworICAgICAgICBp
ZiAoYmdMYXllci5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKICAgICAgICAgICAgIGJvcmRl
ciA9IHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksCiAgICAg
ICAgICAgICAgICAgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSAr
IGJvcmRlckJvdHRvbSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmln
aHQoKSArIGJvcmRlclJpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoYmdMYXllci0+Y2xpcCgpID09IFBhZGRpbmdGaWxsQm94KQor
ICAgICAgICB9IGVsc2UgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94KQogICAg
ICAgICAgICAgYm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVy
LnJlY3QoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKIAogICAgICAgICBj
bGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0LCBib3JkZXIucGl4
ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOwpAQCAt
NzQwLDEwICs3NDAsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCi0g
ICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCB8fCBiZ0xheWVyLT5jbGlw
KCkgPT0gQ29udGVudEZpbGxCb3gpIHsKKyAgICBpZiAoYmdMYXllci5jbGlwKCkgPT0gUGFkZGlu
Z0ZpbGxCb3ggfHwgYmdMYXllci5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKICAgICAgICAg
Ly8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAg
ICAgICAgaWYgKCFjbGlwVG9Cb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgICAgIGJvb2wgaW5jbHVk
ZVBhZGRpbmcgPSBiZ0xheWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3g7CisgICAgICAgICAg
ICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdMYXllci5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3g7
CiAgICAgICAgICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0ID0gTGF5b3V0UmVjdChzY3JvbGxlZFBh
aW50UmVjdC54KCkgKyBiTGVmdCArIChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0IDogTGF5b3V0VW5p
dCgpKSwKICAgICAgICAgICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC55KCkgKyBib3JkZXJUb3Ao
KSArIChpbmNsdWRlUGFkZGluZyA/IHBhZGRpbmdUb3AoKSA6IExheW91dFVuaXQoKSksCiAgICAg
ICAgICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Qud2lkdGgoKSAtIGJMZWZ0IC0gYlJpZ2h0IC0g
KGluY2x1ZGVQYWRkaW5nID8gcExlZnQgKyBwUmlnaHQgOiBMYXlvdXRVbml0KCkpLApAQCAtNzUx
LDcgKzc1MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBiYWNrZ3Jv
dW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwogICAgICAgICAgICAgY29udGV4dC5jbGlwKGNsaXBS
ZWN0KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYmdMYXllci0+Y2xpcCgpID09IFRleHRG
aWxsQm94KSB7CisgICAgfSBlbHNlIGlmIChiZ0xheWVyLmNsaXAoKSA9PSBUZXh0RmlsbEJveCkg
ewogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3VyIHRleHQgaW50byBhIG1hc2sgdGhhdCBj
YW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3VuZCBkcmF3aW5nLgogICAgICAgICAvLyBG
aXJzdCBmaWd1cmUgb3V0IGhvdyBiaWcgdGhlIG1hc2sgaGFzIHRvIGJlLiAgSXQgc2hvdWxkIGJl
IG5vIGJpZ2dlciB0aGFuIHdoYXQgd2UgbmVlZAogICAgICAgICAvLyB0byBhY3R1YWxseSByZW5k
ZXIsIHNvIHdlIHNob3VsZCBpbnRlcnNlY3QgdGhlIGRpcnR5IHJlY3Qgd2l0aCB0aGUgYm9yZGVy
IGJveCBvZiB0aGUgYmFja2dyb3VuZC4KQEAgLTc3NSw3ICs3NzUsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgIGJvb2wgaXNPcGFxdWVSb290ID0gZmFsc2U7CiAgICAgaWYgKGlzUm9v
dCkgewogICAgICAgICBpc09wYXF1ZVJvb3QgPSB0cnVlOwotICAgICAgICBpZiAoIWJnTGF5ZXIt
Pm5leHQoKSAmJiAhYmdDb2xvci5pc09wYXF1ZSgpKSB7CisgICAgICAgIGlmICghYmdMYXllci5u
ZXh0KCkgJiYgIWJnQ29sb3IuaXNPcGFxdWUoKSkgewogICAgICAgICAgICAgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBkb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogICAg
ICAgICAgICAgaWYgKG93bmVyRWxlbWVudCkgewogICAgICAgICAgICAgICAgIGlmICghb3duZXJF
bGVtZW50LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSkgewpAQCAtNzk4LDEyICs3OTgsMTIgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICB9CiAKICAgICAvLyBQYWludCB0aGUgY29sb3IgZmly
c3QgdW5kZXJuZWF0aCBhbGwgaW1hZ2VzLCBjdWxsZWQgaWYgYmFja2dyb3VuZCBpbWFnZSBvY2Ns
dWRlcyBpdC4KLSAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXItPmhhc0Zpbml0ZUJvdW5kcygp
IGNhc2UsIHdlIGNvdWxkIGltcHJvdmUgdGhlIGN1bGxpbmcgdGVzdAorICAgIC8vIEZJWE1FOiBJ
biB0aGUgYmdMYXllci5oYXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3VsZCBpbXByb3ZlIHRo
ZSBjdWxsaW5nIHRlc3QKICAgICAvLyBieSB2ZXJpZnlpbmcgd2hldGhlciB0aGUgYmFja2dyb3Vu
ZCBpbWFnZSBjb3ZlcnMgdGhlIGVudGlyZSBsYXlvdXQgcmVjdC4KLSAgICBpZiAoIWJnTGF5ZXIt
Pm5leHQoKSkgeworICAgIGlmICghYmdMYXllci5uZXh0KCkpIHsKICAgICAgICAgTGF5b3V0UmVj
dCBiYWNrZ3JvdW5kUmVjdChzY3JvbGxlZFBhaW50UmVjdCk7CiAgICAgICAgIGJvb2wgYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24oKSwgYmxlZWRBdm9pZGFuY2UsIGJveCk7
Ci0gICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgfHwgIXNo
b3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLT5oYXNPcGFxdWVJbWFnZSgqdGhp
cykgfHwgIWJnTGF5ZXItPmhhc1JlcGVhdFhZKCkpIHsKKyAgICAgICAgaWYgKGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCB8fCAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2Ug
fHwgIWJnTGF5ZXIuaGFzT3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVyLmhhc1JlcGVhdFhZ
KCkpIHsKICAgICAgICAgICAgIGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKQogICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZWN0LmludGVyc2VjdChwYWludEluZm8u
cmVjdCk7CiAKQEAgLTgyNCwxMCArODI0LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICAgICAgICAgIGlmIChiYXNlQ29sb3IuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmlzVmlzaWJsZSgpKQogICAgICAgICAgICAg
ICAgICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7Ci0KICAgICAgICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VD
b2xvciwgQ29tcG9zaXRlQ29weSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYXNlQmdDb2xv
ck9ubHkgJiYgYmdDb2xvci5pc1Zpc2libGUoKSkgewotICAgICAgICAgICAgICAgIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNv
cHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpOworICAgICAgICAgICAgICAgIGF1dG8g
b3BlcmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRl
eHQuY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVj
dChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0NvbG9yLCBvcGVyYXRpb24pOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChzaG91bGRDbGVhckJhY2tncm91bmQpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC5jbGVhclJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CkBAIC04MzYsMTkg
KzgzNSwxOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgLy8gbm8gcHJvZ3Jlc3Np
dmUgbG9hZGluZyBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZQogICAgIGlmICghYmFzZUJnQ29sb3JP
bmx5ICYmIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlKSB7Ci0gICAgICAgIEJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnko
cGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCAqYmdMYXllciwgcmVjdC5sb2NhdGlvbigpLCBzY3Jv
bGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVjdCk7CisgICAgICAgIGF1dG8gZ2VvbWV0cnkg
PSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludEluZm8ucGFpbnRDb250YWlu
ZXIsIGJnTGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3QsIGJhY2tncm91
bmRPYmplY3QpOwogICAgICAgICBnZW9tZXRyeS5jbGlwKExheW91dFJlY3QocGl4ZWxTbmFwcGVk
UmVjdCkpOwogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWdlb21l
dHJ5LmRlc3RSZWN0KCkuaXNFbXB0eSgpICYmIChpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGJhY2tn
cm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpcywgZ2VvbWV0cnkudGlsZVNpemUo
KSkpKSB7Ci0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09
IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwotICAgICAg
ICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlw
ZSgpID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgYXV0byBjb21wb3NpdGVPcCA9IG9w
ID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLmNvbXBvc2l0ZSgpIDogb3A7CisgICAg
ICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXIubWFza1NvdXJjZVR5
cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKIAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICpp
bWFnZSwgYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2lu
dChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRy
eS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIt
PmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlv
bikpOworICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlv
blF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRy
eS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMo
Y29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobWFz
a0ltYWdlICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAgIGlmIChtYXNr
SW1hZ2UgJiYgYmdMYXllci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgY29udGV4
dC5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShtYXNrSW1hZ2UpLCBtYXNrUmVjdCwg
Q29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKICAgICB9CkBAIC05NjEsOCArOTYwLDggQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciYgZmlsbExh
eWUKICAgICAgICAgY2FzZSBTaXplTGVuZ3RoOiB7CiAgICAgICAgICAgICBMYXlvdXRTaXplIHRp
bGVTaXplID0gcG9zaXRpb25pbmdBcmVhU2l6ZTsKIAotICAgICAgICAgICAgTGVuZ3RoIGxheWVy
V2lkdGggPSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUud2lkdGgoKTsKLSAgICAgICAgICAgIExlbmd0
aCBsYXllckhlaWdodCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExheWVyLnNpemUoKS5zaXplLndpZHRoOworICAg
ICAgICAgICAgTGVuZ3RoIGxheWVySGVpZ2h0ID0gZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdo
dDsKIAogICAgICAgICAgICAgaWYgKGxheWVyV2lkdGguaXNGaXhlZCgpKQogICAgICAgICAgICAg
ICAgIHRpbGVTaXplLnNldFdpZHRoKGxheWVyV2lkdGgudmFsdWUoKSk7CkBAIC05ODYsNyArOTg1
LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVT
aXplKGNvbnN0IEZpbGxMYXllciYgZmlsbExheWUKICAgICAgICAgICAgICAgICAvLyBJZiBib3Ro
IHdpZHRoIGFuZCBoZWlnaHQgYXJlIGF1dG8sIHVzZSB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgc2l6
ZS4KICAgICAgICAgICAgICAgICB0aWxlU2l6ZSA9IGltYWdlSW50cmluc2ljU2l6ZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB0aWxlU2l6ZS5jbGFtcE5lZ2F0
aXZlVG9aZXJvKCk7CiAgICAgICAgICAgICByZXR1cm4gdGlsZVNpemU7CiAgICAgICAgIH0KQEAg
LTExNzEsNyArMTE3MCw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJlbmRlckJveE1vZGVs
T2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAgICAgTGF5b3V0VW5p
dCBjb21wdXRlZFhQb3NpdGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5ndGgoZmlsbExheWVy
LnhQb3NpdGlvbigpLCBmaWxsTGF5ZXIuYmFja2dyb3VuZFhPcmlnaW4oKSwgYXZhaWxhYmxlV2lk
dGgsIHBvc2l0aW9uaW5nQXJlYVNpemUsIHRpbGVTaXplKTsKICAgICBpZiAoYmFja2dyb3VuZFJl
cGVhdFggPT0gUm91bmRGaWxsICYmIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSA+IDAgJiYg
dGlsZVNpemUud2lkdGgoKSA+IDApIHsKICAgICAgICAgaW50IG51bVRpbGVzID0gc3RkOjptYXgo
MSwgcm91bmRUb0ludChwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLyB0aWxlU2l6ZS53aWR0
aCgpKSk7Ci0gICAgICAgIGlmIChmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCkuaXNBdXRv
KCkgJiYgYmFja2dyb3VuZFJlcGVhdFkgIT0gUm91bmRGaWxsKQorICAgICAgICBpZiAoZmlsbExh
eWVyLnNpemUoKS5zaXplLmhlaWdodC5pc0F1dG8oKSAmJiBiYWNrZ3JvdW5kUmVwZWF0WSAhPSBS
b3VuZEZpbGwpCiAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRIZWlnaHQodGlsZVNpemUuaGVpZ2h0
KCkgKiBwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLyAobnVtVGlsZXMgKiB0aWxlU2l6ZS53
aWR0aCgpKSk7CiAKICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgocG9zaXRpb25pbmdBcmVhU2l6
ZS53aWR0aCgpIC8gbnVtVGlsZXMpOwpAQCAtMTE4MSw3ICsxMTgwLDcgQEAgQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5KGMKICAgICBMYXlvdXRVbml0IGNvbXB1dGVkWVBvc2l0aW9uID0gcmVzb2x2ZUVk
Z2VSZWxhdGl2ZUxlbmd0aChmaWxsTGF5ZXIueVBvc2l0aW9uKCksIGZpbGxMYXllci5iYWNrZ3Jv
dW5kWU9yaWdpbigpLCBhdmFpbGFibGVIZWlnaHQsIHBvc2l0aW9uaW5nQXJlYVNpemUsIHRpbGVT
aXplKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFkgPT0gUm91bmRGaWxsICYmIHBvc2l0aW9u
aW5nQXJlYVNpemUuaGVpZ2h0KCkgPiAwICYmIHRpbGVTaXplLmhlaWdodCgpID4gMCkgewogICAg
ICAgICBpbnQgbnVtVGlsZXMgPSBzdGQ6Om1heCgxLCByb3VuZFRvSW50KHBvc2l0aW9uaW5nQXJl
YVNpemUuaGVpZ2h0KCkgLyB0aWxlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBpZiAoZmlsbExh
eWVyLnNpemUoKS5zaXplLndpZHRoKCkuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFggIT0g
Um91bmRGaWxsKQorICAgICAgICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLndpZHRoLmlzQXV0
bygpICYmIGJhY2tncm91bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKICAgICAgICAgICAgIHRpbGVT
aXplLnNldFdpZHRoKHRpbGVTaXplLndpZHRoKCkgKiBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdo
dCgpIC8gKG51bVRpbGVzICogdGlsZVNpemUuaGVpZ2h0KCkpKTsKIAogICAgICAgICB0aWxlU2l6
ZS5zZXRIZWlnaHQocG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIG51bVRpbGVzKTsKQEAg
LTEyNTAsNyArMTI0OSw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJlbmRlckJveE1vZGVs
T2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpnZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZShjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBGbG9hdFNpemUmIHBoYXNlLCBGbG9hdFNpemUm
IHRpbGVTaXplKSBjb25zdAogewogICAgIExheW91dFJlY3QgcGFpbnRSZWN0KGRlc3RSZWN0KTsK
LSAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91
bmRJbWFnZUdlb21ldHJ5KHBhaW50Q29udGFpbmVyLCAqc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCksIHBhaW50T2Zmc2V0LCBwYWludFJlY3QpOworICAgIGF1dG8gZ2VvbWV0cnkgPSBjYWxjdWxh
dGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludENvbnRhaW5lciwgc3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0LCBwYWludFJlY3QpOwogICAgIHBoYXNlID0gZ2VvbWV0
cnkucGhhc2UoKTsKICAgICB0aWxlU2l6ZSA9IGdlb21ldHJ5LnRpbGVTaXplKCk7CiAgICAgZGVz
dFJlY3QgPSBnZW9tZXRyeS5kZXN0UmVjdCgpOwpAQCAtMjE3MCw4ICsyMTY5LDggQEAgYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IExheW91dFBvaW4KICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc09wYXF1ZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGxhc3RCYWNrZ3Jv
dW5kTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsKLSAgICBmb3IgKGNvbnN0IEZp
bGxMYXllciogbmV4dCA9IGxhc3RCYWNrZ3JvdW5kTGF5ZXItPm5leHQoKTsgbmV4dDsgbmV4dCA9
IGxhc3RCYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkKKyAgICBhdXRvKiBsYXN0QmFja2dyb3VuZExh
eWVyID0gJnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpOworICAgIHdoaWxlIChhdXRvKiBuZXh0
ID0gbGFzdEJhY2tncm91bmRMYXllci0+bmV4dCgpKQogICAgICAgICBsYXN0QmFja2dyb3VuZExh
eWVyID0gbmV4dDsKIAogICAgIGlmIChsYXN0QmFja2dyb3VuZExheWVyLT5jbGlwKCkgIT0gQm9y
ZGVyRmlsbEJveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKaW5kZXggNzhmNTJlYzYwZTg0ZTMyNzQxYzdjNDMwOGZhMmRjNjdiODcwZTUxMS4u
OTNlYzJjZThhODEwNDg1NzM0MDIwNDBmYTQyOTczNWJmMjk5YzkwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIwNiw3ICsyMDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0
cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgYm9vbCBwYWlu
dE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0
eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5
b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBudWxs
cHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0g
bnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVz
ZSk7CisgICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRT
aXplJiA9IExheW91dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tn
cm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBv
aW50JiBhYnNvbHV0ZVBhaW50UG9zdGlvbiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxp
bmVGbG93Qm94KiA9IG51bGxwdHIpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZTI3YjQxYWIxMGVhOGE1YmZlMmU2MzI3Mjg1YjVhOGYy
MWYxYmYyZC4uZDNkNjViNTAzNzMzZjU5ZGQ5OTRmNDIwOWJkNzU0OGI5M2EyMTVmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTM1LDIyICsxMzUs
MTggQEAgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwKIFJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVt
ZW50KCkKIHsKICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRTdHlsZSgpKSB7Ci0gICAgICAgIGZvciAo
Y29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJn
TGF5ZXI7IGJnTGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHls
ZUltYWdlKiBiYWNrZ3JvdW5kSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpKQorICAgICAgICBmb3Ig
KGF1dG8qIGJnTGF5ZXIgPSAmbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXI7IGJn
TGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZ3Jv
dW5kSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgIGJhY2tncm91bmRJ
bWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25z
dCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7
IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJ
bWFnZSogbWFza0ltYWdlID0gbWFza0xheWVyLT5pbWFnZSgpKQorICAgICAgICBmb3IgKGF1dG8q
IG1hc2tMYXllciA9ICZtX3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIg
PSBtYXNrTGF5ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG1hc2tJbWFnZSA9
IG1hc2tMYXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBtYXNrSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBib3JkZXJJ
bWFnZSA9IG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAoYXV0byog
Ym9yZGVySW1hZ2UgPSBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAg
IGJvcmRlckltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0KLSAgICAgICAgaWYgKFN0eWxlSW1h
Z2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2UoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2Uo
KSkKICAgICAgICAgICAgIG1hc2tCb3hJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotCiAgICAg
ICAgIGlmIChhdXRvIHNoYXBlVmFsdWUgPSBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKICAgICAg
ICAgICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CkBAIC0zMDMsOCArMjk5
LDggQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlckVsZW1lbnQ6OmFkanVzdFN0eWxlRGlmZmVyZW5j
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgdW5zaWcKICAgICB9CiAgICAgCiAgICAgaWYgKChjb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcikg
JiYgaGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxS
ZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKTsKLSAgICAgICAgaWYgKCFsYXll
ci0+aXNDb21wb3NpdGVkKCkgfHwgbGF5ZXItPnBhaW50c1dpdGhGaWx0ZXJzKCkpCisgICAgICAg
IGF1dG8mIGxheWVyID0gKmRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5s
YXllcigpOworICAgICAgICBpZiAoIWxheWVyLmlzQ29tcG9zaXRlZCgpIHx8IGxheWVyLnBhaW50
c1dpdGhGaWx0ZXJzKCkpCiAgICAgICAgICAgICBkaWZmID0gc3RkOjptYXgoZGlmZiwgU3R5bGVE
aWZmZXJlbmNlUmVwYWludExheWVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGlmZiA9
IHN0ZDo6bWF4KGRpZmYsIFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpOwpAQCAtMzQx
LDIxICszMzcsMjAgQEAgaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6c2hvdWxkUmVwYWludEZv
clN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZikKICAgICByZXR1cm4gZGlmZiA9
PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50IHx8IChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnRJZlRleHRPckJvcmRlck9yT3V0bGluZSAmJiBoYXNJbW1lZGlhdGVOb25XaGl0ZXNwYWNlVGV4
dENoaWxkT3JCb3JkZXJPck91dGxpbmUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6dXBk
YXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqIG9sZExheWVycywgY29uc3QgRmlsbExheWVy
KiBuZXdMYXllcnMpCit2b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMoY29uc3Qg
RmlsbExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciYgbmV3TGF5ZXJzKQogewotICAg
IC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZQotICAgIGlmIChGaWxsTGF5ZXI6OmltYWdlc0lk
ZW50aWNhbChvbGRMYXllcnMsIG5ld0xheWVycykpCisgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1v
biBjYXNlLgorICAgIGlmIChGaWxsTGF5ZXI6OmltYWdlc0lkZW50aWNhbChvbGRMYXllcnMsICZu
ZXdMYXllcnMpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gR28gdGhyb3VnaCB0aGUg
bmV3IGxheWVycyBhbmQgYWRkQ2xpZW50cyBmaXJzdCwgdG8gYXZvaWQgcmVtb3ZpbmcgYWxsIGNs
aWVudHMgb2YgYW4gaW1hZ2UuCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJOZXcgPSBu
ZXdMYXllcnM7IGN1cnJOZXc7IGN1cnJOZXcgPSBjdXJyTmV3LT5uZXh0KCkpIHsKLSAgICAgICAg
aWYgKGN1cnJOZXctPmltYWdlKCkpCi0gICAgICAgICAgICBjdXJyTmV3LT5pbWFnZSgpLT5hZGRD
bGllbnQodGhpcyk7CisgICAgLy8gQWRkIGJlZm9yZSByZW1vdmluZywgdG8gYXZvaWQgcmVtb3Zp
bmcgYWxsIGNsaWVudHMgb2YgYW4gaW1hZ2UgdGhhdCBpcyBpbiBib3RoIHNldHMuCisgICAgZm9y
IChhdXRvKiBsYXllciA9ICZuZXdMYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkp
IHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpKQorICAgICAgICAgICAgbGF5ZXItPmltYWdl
KCktPmFkZENsaWVudCh0aGlzKTsKICAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IEZpbGxMYXllciog
Y3Vyck9sZCA9IG9sZExheWVyczsgY3Vyck9sZDsgY3Vyck9sZCA9IGN1cnJPbGQtPm5leHQoKSkg
ewotICAgICAgICBpZiAoY3Vyck9sZC0+aW1hZ2UoKSkKLSAgICAgICAgICAgIGN1cnJPbGQtPmlt
YWdlKCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gb2xkTGF5
ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChsYXllci0+
aW1hZ2UoKSkKKyAgICAgICAgICAgIGxheWVyLT5pbWFnZSgpLT5yZW1vdmVDbGllbnQodGhpcyk7
CiAgICAgfQogfQogCkBAIC04MDcsNyArODAyLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpwcm9w
YWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oU3R5bGVQcm9wYWdhdGlvblR5cGUgcHJvcGEK
ICAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHN0eWxlKCksIGVsZW1lbnRDaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSk7CiAg
ICAgICAgIGlmIChzdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkgewogICAgICAgICAgICAgaWYg
KGVsZW1lbnRDaGlsZC5zdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkKLSAgICAgICAgICAgICAg
ICBuZXdTdHlsZS5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oJnN0eWxlKCkpOworICAgICAg
ICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbShzdHlsZSgpKTsK
ICAgICAgICAgICAgIGlmIChlbGVtZW50Q2hpbGQuc3R5bGUoKS5jb2x1bW5TcGFuKCkpCiAgICAg
ICAgICAgICAgICAgbmV3U3R5bGUuc2V0Q29sdW1uU3BhbihDb2x1bW5TcGFuQWxsKTsKICAgICAg
ICAgfQpAQCAtOTk5LDggKzk5NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVDdXJzb3JzRXF1
YWwoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKQogCiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZSA/
IG9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLmJhY2tncm91
bmRMYXllcnMoKSk7Ci0gICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZSA/IG9sZFN0eWxlLT5t
YXNrTGF5ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLm1hc2tMYXllcnMoKSk7CisgICAgdXBkYXRl
RmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+YmFja2dyb3VuZExheWVycygpIDogbnVs
bHB0ciwgbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkpOworICAgIHVwZGF0ZUZpbGxJbWFnZXMo
b2xkU3R5bGUgPyAmb2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFz
a0xheWVycygpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJ
bWFnZSgpLmltYWdlKCkgOiBudWxscHRyLCBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSk7
CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1h
Z2UoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2UoKSk7CiAgICAgdXBk
YXRlU2hhcGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSA6IG51bGxw
dHIsIG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpOwpAQCAtMTIzMSw0MSArMTIyNiwzOSBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OmxheW91dCgpCiB7CiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQ
b2ludCBsYXlvdXRDaGVja1BvaW50OwogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKLSAgICBS
ZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChjaGlsZCkgewor
ICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKICAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5b3V0KCk7CiAgICAg
ICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpOwogICAgIH0KICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLXN0
YXRpYyBib29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgRmlsbExheWVyKiBsYXllcikKK3N0YXRpYyBib29sIG11c3RSZXBhaW50Rmls
bExheWVycyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsbExheWVyJiBs
YXllcikKIHsKICAgICAvLyBOb2JvZHkgd2lsbCB1c2UgbXVsdGlwbGUgbGF5ZXJzIHdpdGhvdXQg
d2FudGluZyBmYW5jeSBwb3NpdGlvbmluZy4KLSAgICBpZiAobGF5ZXItPm5leHQoKSkKKyAgICBp
ZiAobGF5ZXIubmV4dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBoYXZlIGEgdmFsaWQgaW1hZ2UuCi0gICAgU3R5bGVJbWFnZSogaW1hZ2UgPSBsYXllci0+
aW1hZ2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IGxheWVyLmltYWdlKCk7CiAgICAgaWYgKCFpbWFn
ZSB8fCAhaW1hZ2UtPmNhblJlbmRlcigmcmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFsYXllci0+eFBv
c2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLT55UG9zaXRpb24oKS5pc1plcm8oKSkKKyAgICBp
ZiAoIWxheWVyLnhQb3NpdGlvbigpLmlzWmVybygpIHx8ICFsYXllci55UG9zaXRpb24oKS5pc1pl
cm8oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBFRmlsbFNpemVUeXBlIHNpemVUeXBl
ID0gbGF5ZXItPnNpemVUeXBlKCk7CisgICAgYXV0byBzaXplVHlwZSA9IGxheWVyLnNpemVUeXBl
KCk7CiAKICAgICBpZiAoc2l6ZVR5cGUgPT0gQ29udGFpbiB8fCBzaXplVHlwZSA9PSBDb3ZlcikK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoc2l6ZVR5cGUgPT0gU2l6ZUxlbmd0aCkg
ewotICAgICAgICBMZW5ndGhTaXplIHNpemUgPSBsYXllci0+c2l6ZUxlbmd0aCgpOwotICAgICAg
ICBpZiAoc2l6ZS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IHNpemUuaGVpZ2h0
KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCisgICAgICAgIGF1dG8gc2l6ZSA9IGxheWVyLnNp
emVMZW5ndGgoKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGguaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkgfHwgc2l6ZS5oZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBuZWl0aGVyIGFuIGludHJp
bnNpYyB3aWR0aCBub3IgYW4gaW50cmluc2ljIGhlaWdodCwgaXRzIHNpemUgaXMgZGV0ZXJtaW5l
ZCBhcyBmb3IgJ2NvbnRhaW4nLgotICAgICAgICBpZiAoKHNpemUud2lkdGgoKS5pc0F1dG8oKSB8
fCBzaXplLmhlaWdodCgpLmlzQXV0bygpKSAmJiBpbWFnZS0+aXNHZW5lcmF0ZWRJbWFnZSgpKQor
ICAgICAgICBpZiAoKHNpemUud2lkdGguaXNBdXRvKCkgfHwgc2l6ZS5oZWlnaHQuaXNBdXRvKCkp
ICYmIGltYWdlLT5pc0dlbmVyYXRlZEltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9IGVsc2UgaWYgKGltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTM2NSwxNCArMTM1OCwxNCBAQCBib29sIFJlbmRlckVsZW1lbnQ6
OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcAogICAgICAgICBzdHlsZSgpLmdldEJveFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93
TGVmdCwgc2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0ID0gaXM8
UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS5ib3JkZXJSaWdo
dCgpIDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApOwogICAgICAgICBMYXlvdXRVbml0IGJveFdp
ZHRoID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS53
aWR0aCgpIDogTGF5b3V0VW5pdCgpOwotICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0UmlnaHRT
aGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQucmln
aHQoKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLndpZHRoKCksIG9sZEJvdW5kcy53
aWR0aCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBzdGQ6Om1heDxMYXlv
dXRVbml0Pihib3JkZXJSaWdodCwgc3RkOjptYXg8TGF5b3V0VW5pdD4odmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdpZHRoKSwgdmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdp
ZHRoKSkpOwotICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRpb25zV2lkdGggPSBzdGQ6Om1heDxM
YXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9yZGVyV2lkdGggKyBt
aW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50KSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KG91dGxpbmVX
aWR0aCwgc2hhZG93UmlnaHQpOworICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0UmlnaHRTaGFk
b3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQucmlnaHQo
KSwgc3RkOjptaW4obmV3Qm91bmRzLndpZHRoKCksIG9sZEJvdW5kcy53aWR0aCgpKSk7CisgICAg
ICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBzdGQ6Om1heChib3JkZXJSaWdodCwgc3RkOjpt
YXgodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoLCBi
b3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KS53aWR0aCwgYm94V2lkdGgpKSk7CisgICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0
aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBi
b3JkZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXgob3V0bGlu
ZVdpZHRoLCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0KG5ld091
dGxpbmVCb3gueCgpICsgc3RkOjptaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5l
Qm94LndpZHRoKCkpIC0gZGVjb3JhdGlvbnNXaWR0aCwKICAgICAgICAgICAgIG5ld091dGxpbmVC
b3gueSgpLAogICAgICAgICAgICAgd2lkdGggKyBkZWNvcmF0aW9uc1dpZHRoLAogICAgICAgICAg
ICAgc3RkOjptYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xkT3V0bGluZUJveC5oZWlnaHQo
KSkpOwotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gc3RkOjptaW48TGF5b3V0VW5pdD4obmV3
Qm91bmRzLm1heFgoKSwgb2xkQm91bmRzLm1heFgoKSk7CisgICAgICAgIExheW91dFVuaXQgcmln
aHQgPSBzdGQ6Om1pbihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKICAgICAg
ICAgaWYgKHJpZ2h0UmVjdC54KCkgPCByaWdodCkgewogICAgICAgICAgICAgcmlnaHRSZWN0LnNl
dFdpZHRoKHN0ZDo6bWluKHJpZ2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJpZ2h0UmVjdC54KCkp
KTsKICAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBy
aWdodFJlY3QpOwpAQCAtMTM4NSwxMCArMTM3OCwxMCBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJl
cGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cAogICAgICAgICBzdHlsZSgpLmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwg
c2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20gPSBpczxSZW5k
ZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLmJvcmRlckJvdHRvbSgp
IDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApOwogICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdo
dCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuaGVp
Z2h0KCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWluSW5zZXRCb3R0b21T
aGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQuYm90
dG9tKCksIHN0ZDo6bWluPExheW91dFVuaXQ+KG5ld0JvdW5kcy5oZWlnaHQoKSwgb2xkQm91bmRz
LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gc3RkOjptYXg8
TGF5b3V0VW5pdD4oYm9yZGVyQm90dG9tLCBzdGQ6Om1heDxMYXlvdXRVbml0Pih2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0
KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0KSkpOwotICAgICAgICBMYXlvdXRVbml0IGRlY29y
YXRpb25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIHN0
ZDo6bWF4PExheW91dFVuaXQ+KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9tKTsKKyAgICAgICAg
TGF5b3V0VW5pdCBtaW5JbnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVu
aXQ+KC1pbnNldFNoYWRvd0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW4obmV3Qm91bmRzLmhlaWdo
dCgpLCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWln
aHQgPSBzdGQ6Om1heChib3JkZXJCb3R0b20sIHN0ZDo6bWF4KHZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSwKKyAgICAgICAg
ICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWln
aHQsIGJveEhlaWdodCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBib3Jk
ZXJIZWlnaHQgKyBtaW5JbnNldEJvdHRvbVNoYWRvd0V4dGVudCkgKyBzdGQ6Om1heChvdXRsaW5l
V2lkdGgsIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdP
dXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIHN0ZDo6bWluKG5ld091dGxpbmVCb3gubWF4WSgp
LCBvbGRPdXRsaW5lQm94Lm1heFkoKSkgLSBkZWNvcmF0aW9uc0hlaWdodCwKICAgICAgICAgICAg
IHN0ZDo6bWF4KG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDI4MDM3NDQxNWRj
NjEyN2QzNThlNmZlNDQzMmRmN2M4YmJmYmViOTcuLmM2Zjk3MDE4ZGRiNjkyNjE3ZTNlZmQ1ZjRl
ZTE5YmU0ZTJlMDY1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aApAQCAtMjk0LDcgKzI5NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50Rm9y
U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNJbW1l
ZGlhdGVOb25XaGl0ZXNwYWNlVGV4dENoaWxkT3JCb3JkZXJPck91dGxpbmUoKSBjb25zdDsKIAot
ICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5
ZXIqKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVyKiwgY29uc3Qg
RmlsbExheWVyJik7CiAgICAgdm9pZCB1cGRhdGVJbWFnZShTdHlsZUltYWdlKiwgU3R5bGVJbWFn
ZSopOwogICAgIHZvaWQgdXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3Qg
U2hhcGVWYWx1ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAwNTFkNDRiZjU2Njk2N2NhYWRhZjk3NDIwMjk4MmNiOTE4YmZlODUxLi5hY2VlZDdkNTkw
ZGUyNWNjNDM5OTg3ODQ4M2I4OTg3N2FmMjk1NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTMxNDMsMTcgKzMxNDMsMTggQEAgc3RhdGljIGlubGluZSBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlckZvclNjcm9sbGJhcihSZW5kZXJMYXllck1vZGVsT2JqZWN0
JiByZW5kZXIKIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIoU2Ny
b2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4g
d2lkZ2V0OwotICAgIFJlbmRlckVsZW1lbnQqIGFjdHVhbFJlbmRlcmVyID0gcmVuZGVyZXJGb3JT
Y3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9
IGFjdHVhbFJlbmRlcmVyLT5pc0JveCgpICYmIGFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpLmhhc1Bz
ZXVkb1N0eWxlKFNDUk9MTEJBUik7CisgICAgQVNTRVJUKHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJl
bmRlcmVyKCkpKTsKKyAgICBhdXRvJiBhY3R1YWxSZW5kZXJlciA9ICpyZW5kZXJlckZvclNjcm9s
bGJhcihyZW5kZXJlcigpKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gaXM8
UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxS
ZW5kZXJlcikuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOwogICAgIGlmIChoYXND
dXN0b21TY3JvbGxiYXJTdHlsZSkKLSAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpj
cmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBhY3R1YWxSZW5kZXJlci0+
ZWxlbWVudCgpKTsKKyAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0
b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVh
bFJlbmRlcmVyKS5lbGVtZW50KCkpOwogICAgIGVsc2UgewogICAgICAgICB3aWRnZXQgPSBTY3Jv
bGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJT
Y3JvbGxiYXIpOwogICAgICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LmdldCgpLCBvcmllbnRh
dGlvbik7CiAgICAgICAgIGlmIChwYWdlKCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQog
ICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFn
ZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAgIH0KLSAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZp
ZXcoKS5hZGRDaGlsZCh3aWRnZXQuZ2V0KCkpOworICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1l
VmlldygpLmFkZENoaWxkKCp3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQucmVsZWFzZU5vbk51
bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBjOGM0MGM1Y2YwMzA0M2I5MDVlZDlhNGMxZmZmOTlkZTkzMTUwM2Y0Li4z
ZWM3ZmRkODA1N2M5MDc0YTAyMzRjNzcwYWY0Nzk0YTdkOTNkMDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTcyNiwzMCArMTcy
NiwyNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzVmlzaWJsZUJveERlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogc3RhdGljIGJvb2wgY2FuQ3JlYXRlVGlsZWRJbWFnZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5
ZXIgPSBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgaWYgKGZpbGxMYXllci0+bmV4dCgp
KQorICAgIGF1dG8mIGZpbGxMYXllciA9IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBp
ZiAoZmlsbExheWVyLm5leHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFm
aWxsTGF5ZXItPmltYWdlc0FyZUxvYWRlZCgpKQorICAgIGlmICghZmlsbExheWVyLmltYWdlc0Fy
ZUxvYWRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmlsbExheWVyLT5h
dHRhY2htZW50KCkgIT0gU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGZpbGxM
YXllci5hdHRhY2htZW50KCkgIT0gU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLQogICAgIC8vIEZJWE1FOiBBbGxv
dyBjb2xvcitpbWFnZSBjb21wb3NpdGluZyB3aGVuIGl0IG1ha2VzIHNlbnNlLgogICAgIC8vIEZv
ciBub3cgYmFpbGluZyBvdXQuCi0gICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKQorICAgIGlmIChz
dHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlz
VmlzaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHlsZUltYWdlKiBzdHls
ZUltYWdlID0gZmlsbExheWVyLT5pbWFnZSgpOwotCiAgICAgLy8gRklYTUU6IHN1cHBvcnQgZ3Jh
ZGllbnRzIHdpdGggaXNHZW5lcmF0ZWRJbWFnZS4KKyAgICBhdXRvKiBzdHlsZUltYWdlID0gZmls
bExheWVyLmltYWdlKCk7CiAgICAgaWYgKCFzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEltYWdlKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmltYWdlKCk7CisgICAgYXV0byogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODA5LDI1ICsxODA2LDI0IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UoYm9v
bCBpc1NpbXBsZUNvCiAgICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIoKS5z
dHlsZSgpOwotCisgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CiAgICAgaWYg
KCFpc1NpbXBsZUNvbnRhaW5lciB8fCAhc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9y
U2ltcGxlQ29udGFpbmVyUGFpbnRpbmcoKTsKKyAgICBhdXRvIGRlc3RSZWN0ID0gYmFja2dyb3Vu
ZEJveEZvclNpbXBsZUNvbnRhaW5lclBhaW50aW5nKCk7CiAgICAgRmxvYXRTaXplIHBoYXNlOwog
ICAgIEZsb2F0U2l6ZSB0aWxlU2l6ZTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBzdHls
ZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmltYWdlKCktPmNhY2hlZEltYWdlKCktPmltYWdlKCk7Ci0g
ICAgLy8gRklYTUU6IGFic29sdXRlIHBhaW50IGxvY2F0aW9uIGlzIHJlcXVpcmVkIGhlcmUuCisg
ICAgLy8gRklYTUU6IEFic29sdXRlIHBhaW50IGxvY2F0aW9uIGlzIHJlcXVpcmVkIGhlcmUuCiAg
ICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5nZXRHZW9tZXRyeUZvckJhY2tncm91
bmRJbWFnZSgmcmVuZGVyZXIoKSwgTGF5b3V0UG9pbnQoKSwgZGVzdFJlY3QsIHBoYXNlLCB0aWxl
U2l6ZSk7CisKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVNpemUodGlsZVNp
emUpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlUGhhc2UocGhhc2UpOwog
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KGRlc3RSZWN0KTsKICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KEZsb2F0Um91bmRlZFJlY3QoZGVz
dFJlY3QpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5n
ZXQoKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2Uoc3R5bGUuYmFj
a2dyb3VuZExheWVycygpLmltYWdlKCktPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworCiAgICAg
ZGlkVXBkYXRlQ29udGVudHNSZWN0ID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDIyZWU5ODExMDc3ZmZkODA4YmZiYTEzOTQwOWI2
Yzk2MGY2MzRmYWYuLmNkZjgwNjBiY2I1ZWQ4YThmNGY5MzdhN2U0OTdlMTQ2N2Q2ZWJiNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTkwMiw3ICs5
MDIsNyBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQog
ICAgICAgICBpZiAocGFnZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKICAgICAgICAg
ICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UoKS50ZXN0
VHJpZ2dlcigpKTsKICAgICB9Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdl
dC5nZXQoKSk7CisgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKCp3aWRnZXQpOwogICAg
IHJldHVybiB3aWRnZXQucmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBlMWE3ZWFhNzU5YWQzMzE2OWJhMTEx
YTM1ZjkxNWE0YzFlOGM3NTIxLi4zZTcwMzIwZDY5NTIyOGMyZGE2ZDc2YTBkMWViZjIxNDZhMDkz
Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApA
QCAtMTI3Niw5ICsxMjc2LDkgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3Vu
ZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXkKICAgICAgICAgYWRq
dXN0ZWRQYWludE9mZnNldC5tb3ZlQnkobG9jYXRpb24oKSk7CiAKICAgICBDb2xvciBjID0gYmFj
a2dyb3VuZE9iamVjdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOwotICAgIGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IGJhY2tncm91
bmRPYmplY3QtPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpOworICAgIGF1dG8mIGJnTGF5ZXIg
PSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsKIAotICAgIGlm
IChiZ0xheWVyLT5oYXNJbWFnZSgpIHx8IGMuaXNWYWxpZCgpKSB7CisgICAgaWYgKGJnTGF5ZXIu
aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBXZSBoYXZlIHRvIGNsaXAg
aGVyZSBiZWNhdXNlIHRoZSBiYWNrZ3JvdW5kIHdvdWxkIHBhaW50CiAgICAgICAgIC8vIG9uIHRv
cCBvZiB0aGUgYm9yZGVycyBvdGhlcndpc2UuICBUaGlzIG9ubHkgbWF0dGVycyBmb3IgY2VsbHMg
YW5kIHJvd3MuCiAgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGJhY2tncm91bmRPYmplY3QtPmhh
c0xheWVyKCkgJiYgKGJhY2tncm91bmRPYmplY3QgPT0gdGhpcyB8fCBiYWNrZ3JvdW5kT2JqZWN0
ID09IHBhcmVudCgpKSAmJiB0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBmYTU5OWE3MTg3MmI0OThhNTQ2MzJl
ZDNkZWNmZTY2ZTZmMzExYzFlLi5jMzFhOWFhNmNmMmIwNjk4MjJiNmZmNTA2N2JmZmFjNTM3ZmYy
YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUsCiAgICAgICAgIC8vIFBhZGRpbmcKICAg
ICAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3ggPSBtX3RoZW1lLT5jb250cm9sUGFkZGluZyhwYXJ0
LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5wYWRkaW5nQm94KCksIHN0eWxlLmVmZmVjdGl2
ZVpvb20oKSk7CiAgICAgICAgIGlmIChwYWRkaW5nQm94ICE9IHN0eWxlLnBhZGRpbmdCb3goKSkK
LSAgICAgICAgICAgIHN0eWxlLnNldFBhZGRpbmdCb3gocGFkZGluZ0JveCk7CisgICAgICAgICAg
ICBzdHlsZS5zZXRQYWRkaW5nQm94KFdURk1vdmUocGFkZGluZ0JveCkpOwogCiAgICAgICAgIC8v
IFdoaXRlc3BhY2UKICAgICAgICAgaWYgKG1fdGhlbWUtPmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRl
U3BhY2UocGFydCkpCkBAIC0xNTUsMTkgKzE1NSwxOSBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1
c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUs
CiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAgICAgICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVp
Z2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6b29tLgogICAgICAgICAvLyBGSVhNRTogQ2hl
Y2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdpZHRoL21heC13aWR0aCBp
bnRvIGFjY291bnQuCi0gICAgICAgIExlbmd0aFNpemUgY29udHJvbFNpemUgPSBtX3RoZW1lLT5j
b250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBMZW5ndGhTaXplKHN0eWxlLndp
ZHRoKCksIHN0eWxlLmhlaWdodCgpKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAgICAg
aWYgKGNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUud2lkdGgoKSkKLSAgICAgICAgICAgIHN0
eWxlLnNldFdpZHRoKGNvbnRyb2xTaXplLndpZHRoKCkpOwotICAgICAgICBpZiAoY29udHJvbFNp
emUuaGVpZ2h0KCkgIT0gc3R5bGUuaGVpZ2h0KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRIZWln
aHQoY29udHJvbFNpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICBMZW5n
dGhTaXplIGNvbnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9u
dENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSB9LCBzdHlsZS5lZmZl
Y3RpdmVab29tKCkpOworICAgICAgICBpZiAoY29udHJvbFNpemUud2lkdGggIT0gc3R5bGUud2lk
dGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldFdpZHRoKFdURk1vdmUoY29udHJvbFNpemUud2lk
dGgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCAhPSBzdHlsZS5oZWlnaHQoKSkK
KyAgICAgICAgICAgIHN0eWxlLnNldEhlaWdodChXVEZNb3ZlKGNvbnRyb2xTaXplLmhlaWdodCkp
OworCiAgICAgICAgIC8vIE1pbi1XaWR0aCAvIE1pbi1IZWlnaHQKICAgICAgICAgTGVuZ3RoU2l6
ZSBtaW5Db250cm9sU2l6ZSA9IG1fdGhlbWUtPm1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBzdHls
ZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwotICAgICAgICBpZiAobWlu
Q29udHJvbFNpemUud2lkdGgoKSAhPSBzdHlsZS5taW5XaWR0aCgpKQotICAgICAgICAgICAgc3R5
bGUuc2V0TWluV2lkdGgobWluQ29udHJvbFNpemUud2lkdGgoKSk7Ci0gICAgICAgIGlmIChtaW5D
b250cm9sU2l6ZS5oZWlnaHQoKSAhPSBzdHlsZS5taW5IZWlnaHQoKSkKLSAgICAgICAgICAgIHN0
eWxlLnNldE1pbkhlaWdodChtaW5Db250cm9sU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAg
ICAgCisgICAgICAgIGlmIChtaW5Db250cm9sU2l6ZS53aWR0aCAhPSBzdHlsZS5taW5XaWR0aCgp
KQorICAgICAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoV1RGTW92ZShtaW5Db250cm9sU2l6ZS53
aWR0aCkpOworICAgICAgICBpZiAobWluQ29udHJvbFNpemUuaGVpZ2h0ICE9IHN0eWxlLm1pbkhl
aWdodCgpKQorICAgICAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KFdURk1vdmUobWluQ29udHJv
bFNpemUuaGVpZ2h0KSk7CisKICAgICAgICAgLy8gRm9udAogICAgICAgICBpZiAoYXV0byB0aGVt
ZUZvbnQgPSBtX3RoZW1lLT5jb250cm9sRm9udChwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBz
dHlsZS5lZmZlY3RpdmVab29tKCkpKSB7CiAgICAgICAgICAgICAvLyBJZiBvdmVycmlkaW5nIHRo
ZSBzcGVjaWZpZWQgZm9udCB3aXRoIHRoZSB0aGVtZSBmb250LCBhbHNvIG92ZXJyaWRlIHRoZSBs
aW5lIGhlaWdodCB3aXRoIHRoZSBzdGFuZGFyZCBsaW5lIGhlaWdodC4KQEAgLTcwOSw5ICs3MDks
OSBAQCBib29sIFJlbmRlclRoZW1lOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBibwogICAgIGNhc2UgVGV4dEZpZWxkUGFydDoKICAg
ICBjYXNlIFRleHRBcmVhUGFydDoKICAgICAgICAgLy8gVGVzdCB0aGUgc3R5bGUgdG8gc2VlIGlm
IHRoZSBVQSBib3JkZXIgYW5kIGJhY2tncm91bmQgbWF0Y2guCi0gICAgICAgIHJldHVybiAoc3R5
bGUuYm9yZGVyKCkgIT0gYm9yZGVyCi0gICAgICAgICAgICB8fCAqc3R5bGUuYmFja2dyb3VuZExh
eWVycygpICE9IGJhY2tncm91bmQKLSAgICAgICAgICAgIHx8ICFzdHlsZS5iYWNrZ3JvdW5kQ29s
b3JFcXVhbHNUb0NvbG9ySWdub3JpbmdWaXNpdGVkKGJhY2tncm91bmRDb2xvcikpOworICAgICAg
ICByZXR1cm4gc3R5bGUuYm9yZGVyKCkgIT0gYm9yZGVyCisgICAgICAgICAgICB8fCBzdHlsZS5i
YWNrZ3JvdW5kTGF5ZXJzKCkgIT0gYmFja2dyb3VuZAorICAgICAgICAgICAgfHwgIXN0eWxlLmJh
Y2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zpc2l0ZWQoYmFja2dyb3VuZENvbG9y
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzNzM5NWU0MzY2NjdhMjE1YWFi
NmU3NjMwNThkNDdjYjgyNmQ3NDBkLi42MjNhNmM3OTRiOTYxMGUzMmE5YjM2Y2I1Njk4N2MyZjA2
NWM0MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAt
NTIsMjkgKzUyLDI3IEBAIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Oldp
ZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzCiAKIHZvaWQgV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMoKQogewotICAgIFdpZGdl
dFRvUGFyZW50TWFwIG1hcDsKLSAgICB3aWRnZXROZXdQYXJlbnRNYXAoKS5zd2FwKG1hcCk7Ci0g
ICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICBmb3Ig
KFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgV2lkZ2V0KiBjaGlsZCA9IGl0LT5rZXkuZ2V0KCk7Ci0gICAgICAg
IFNjcm9sbFZpZXcqIGN1cnJlbnRQYXJlbnQgPSBjaGlsZC0+cGFyZW50KCk7Ci0gICAgICAgIEZy
YW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOworICAgIGF1dG8gbWFwID0gV1RGTW92ZSh3
aWRnZXROZXdQYXJlbnRNYXAoKSk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgeworICAg
ICAgICBhdXRvJiBjaGlsZCA9ICplbnRyeS5rZXk7CisgICAgICAgIGF1dG8qIGN1cnJlbnRQYXJl
bnQgPSBjaGlsZC5wYXJlbnQoKTsKKyAgICAgICAgYXV0byogbmV3UGFyZW50ID0gZW50cnkudmFs
dWU7CiAgICAgICAgIGlmIChuZXdQYXJlbnQgIT0gY3VycmVudFBhcmVudCkgewogICAgICAgICAg
ICAgaWYgKGN1cnJlbnRQYXJlbnQpCi0gICAgICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVt
b3ZlQ2hpbGQoKmNoaWxkKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVD
aGlsZChjaGlsZCk7CiAgICAgICAgICAgICBpZiAobmV3UGFyZW50KQogICAgICAgICAgICAgICAg
IG5ld1BhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCogY2hpbGQsIEZyYW1lVmlldyog
cGFyZW50KQorc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZXQmIGNoaWxk
LCBGcmFtZVZpZXcqIHBhcmVudCkKIHsKICAgICBpZiAoIVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6OmlzU3VzcGVuZGVkKCkpIHsKICAgICAgICAgaWYgKHBhcmVudCkKICAg
ICAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjaGlsZC0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICAgICAgY2hpbGQucmVtb3Zl
RnJvbVBhcmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKGNoaWxkLCBwYXJl
bnQpOwpAQCAtMTY3LDcgKzE2NSw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVm
UHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dpZGdl
dCkgewotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKG1fd2lkZ2V0LmdldCgpLCAwKTsK
KyAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50U29vbigqbV93aWRnZXQsIG51bGxwdHIpOwogICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkud2lsbFJlbW92ZVdpZGdldEZyb21SZW5kZXJUcmVlKCpt
X3dpZGdldCk7CiAgICAgICAgIHdpZGdldFJlbmRlcmVyTWFwKCkucmVtb3ZlKG1fd2lkZ2V0Lmdl
dCgpKTsKICAgICAgICAgbV93aWRnZXQgPSBudWxscHRyOwpAQCAtMTkzLDcgKzE5MSw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAg
ICAgICAgICAgICAgcmVwYWludCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IG1vdmVXaWRnZXRUb1BhcmVudFNvb24obV93aWRnZXQuZ2V0KCksICZ2aWV3KCkuZnJhbWVWaWV3
KCkpOworICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKCptX3dpZGdldCwgJnZpZXcoKS5m
cmFtZVZpZXcoKSk7CiAgICAgfQogfQogCkBAIC0zMzgsOSArMzM2LDkgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICBt
X3dpZGdldC0+c2V0SXNTZWxlY3RlZChpc1NlbGVjdGVkKCkpOwogfQogCi1SZW5kZXJXaWRnZXQq
IFJlbmRlcldpZGdldDo6ZmluZChjb25zdCBXaWRnZXQqIHdpZGdldCkKK1JlbmRlcldpZGdldCog
UmVuZGVyV2lkZ2V0OjpmaW5kKGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIHJldHVybiB3
aWRnZXRSZW5kZXJlck1hcCgpLmdldCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXRSZW5kZXJl
ck1hcCgpLmdldCgmd2lkZ2V0KTsKIH0KIAogYm9vbCBSZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCA2ZTAxMWQ3MzllNTNjNmRhOWIxMWE3ZGE4
NmQ4ZWRjZWMzZTQ0OTdiLi5jNmE5YmM1ZjkzNWMzMzk0ODA4NzJhMTFmMzYwNzk4MGViNGJhM2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC00NCwxNCArNDQs
MTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzU3VzcGVuZGVkKCkgeyBy
ZXR1cm4gc193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzY2hlZHVsZVdpZGdldFRvTW92ZShXaWRnZXQqIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFt
ZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAoKS5zZXQod2lkZ2V0LCBmcmFtZSk7IH0KKyAgICBzdGF0
aWMgdm9pZCBzY2hlZHVsZVdpZGdldFRvTW92ZShXaWRnZXQmIHdpZGdldCwgRnJhbWVWaWV3KiBm
cmFtZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAoKS5zZXQoJndpZGdldCwgZnJhbWUpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZpZXcqPiBX
aWRnZXRUb1BhcmVudE1hcDsKKyAgICB1c2luZyBXaWRnZXRUb1BhcmVudE1hcCA9IEhhc2hNYXA8
UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+OwogICAgIHN0YXRpYyBXaWRnZXRUb1BhcmVudE1h
cCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVX
aWRnZXRzKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgc193aWRnZXRI
aWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7CiB9OwogICAgIApAQCAtNjQsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBtX3dpZGdldC5nZXQo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYp
OwogCi0gICAgc3RhdGljIFJlbmRlcldpZGdldCogZmluZChjb25zdCBXaWRnZXQqKTsKKyAgICBz
dGF0aWMgUmVuZGVyV2lkZ2V0KiBmaW5kKGNvbnN0IFdpZGdldCYpOwogCiAgICAgZW51bSBjbGFz
cyBDaGlsZFdpZGdldFN0YXRlIHsgVmFsaWQsIERlc3Ryb3llZCB9OwogICAgIENoaWxkV2lkZ2V0
U3RhdGUgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCAxYTU5ZjY1NTc0ODlk
MDc3ZjRiYmRiZjI4YThkZmI4YjQ2ZTdhMjRjLi5hYWY3MWNiNzlmYzE2MDhmZGIwZjRhNzgzYjk2
YzhhMTFkNGJiMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Npemlu
Zy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVz
dFRleHROb2RlU2l6ZXMoKSAtPiBTdGlsbEhhc05vZGVzCiAKICAgICAgICAgLy8gUmVzaXplIHRo
ZSBsaW5lIGhlaWdodCBvZiB0aGUgcGFyZW50LgogICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZSA9
IHBhcmVudFJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBMZW5ndGggbGluZUhlaWdodExlbmd0
aCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKKyAgICAgICAgYXV0byYgbGlu
ZUhlaWdodExlbmd0aCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKIAogICAg
ICAgICBpbnQgc3BlY2lmaWVkTGluZUhlaWdodDsKICAgICAgICAgaWYgKGxpbmVIZWlnaHRMZW5n
dGguaXNQZXJjZW50KCkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgYXV0byBUZXh0QXV0b1NpemluZ1Zh
bHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKCkgLT4gU3RpbGxIYXNOb2RlcwogCiAgICAgICAgIGF1
dG8gbmV3UGFyZW50U3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHBhcmVudFN0eWxl
KTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChMZW5ndGgobGluZUhlaWdo
dCwgRml4ZWQpKTsKLSAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0U3BlY2lmaWVkTGluZUhlaWdo
dChsaW5lSGVpZ2h0TGVuZ3RoKTsKKyAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0U3BlY2lmaWVk
TGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVpZ2h0TGVuZ3RoIH0pOwogICAgICAgICBuZXdQYXJl
bnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgbmV3
UGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJm5vZGUtPmRvY3VtZW50KCkuZm9udFNl
bGVjdG9yKCkpOwogICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQ
YXJlbnRTdHlsZSkpOwpAQCAtMTg4LDEyICsxODgsMTIgQEAgdm9pZCBUZXh0QXV0b1NpemluZ1Zh
bHVlOjpyZXNldCgpCiAgICAgICAgICAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVudFJlbmRlcmVy
LT5wYXJlbnQoKTsKIAogICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZSA9IHBhcmVudFJlbmRlcmVy
LT5zdHlsZSgpOwotICAgICAgICBMZW5ndGggb3JpZ2luYWxMaW5lSGVpZ2h0ID0gcGFyZW50U3R5
bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOworICAgICAgICBhdXRvJiBvcmlnaW5hbExpbmVIZWln
aHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmln
aW5hbExpbmVIZWlnaHQgPT0gcGFyZW50U3R5bGUubGluZUhlaWdodCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5
bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwotICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5l
SGVpZ2h0KG9yaWdpbmFsTGluZUhlaWdodCk7CisgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExp
bmVIZWlnaHQoTGVuZ3RoIHsgb3JpZ2luYWxMaW5lSGVpZ2h0IH0pOwogICAgICAgICBuZXdQYXJl
bnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgbmV3
UGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJm5vZGUtPmRvY3VtZW50KCkuZm9udFNl
bGVjdG9yKCkpOwogICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQ
YXJlbnRTdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9NYXRoTUxTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhN
TFN0eWxlLmNwcAppbmRleCBjYTQ2YzJlYmNkMDJmZGUzNGU1ZTZjMGJmMGJkOGI3MmEwNGEyZTA0
Li42MTYyYWNiYjkzZjczZWI1Zjk5NTczYmQxNWRjMWM2MzNkMTEzMTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcApAQCAtNDksMTQgKzQ5
LDExIEBAIFJlZjxNYXRoTUxTdHlsZT4gTWF0aE1MU3R5bGU6OmNyZWF0ZSgpCiAKIGNvbnN0IE1h
dGhNTFN0eWxlKiBNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKIHsKLSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGlu
IG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/Ci0gICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJs
ZT4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1hdGhNTFRh
YmxlPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0gICAgICAgIGlmIChpczxSZW5kZXJNYXRo
TUxCbG9jaz4ocmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1h
dGhNTEJsb2NrPihyZW5kZXJlciktPm1hdGhNTFN0eWxlKCk7Ci0gICAgfQotCisgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1h
dGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/CisgICAgaWYgKGlzPFJlbmRlck1h
dGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8UmVuZGVyTWF0
aE1MVGFibGU+KCpyZW5kZXJlcikubWF0aE1MU3R5bGUoKTsKKyAgICBpZiAoaXM8UmVuZGVyTWF0
aE1MQmxvY2s+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRo
TUxCbG9jaz4oKnJlbmRlcmVyKS5tYXRoTUxTdHlsZSgpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCkBAIC02NSw5ICs2Miw5IEBAIHZvaWQgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHls
ZVRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gcmVu
ZGVyZXI7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5QcmVPcmRlcihyZW5kZXJlcikpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2
ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/CiAgICAg
ICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4oY2hpbGQpKQotICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyTWF0aE1MVGFibGU+KGNoaWxkKS0+bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhN
TFN0eWxlKGNoaWxkKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPigq
Y2hpbGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKICAgICAgICAg
ZWxzZSBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KGNoaWxkKSkKLSAgICAgICAgICAgIGRvd25j
YXN0PFJlbmRlck1hdGhNTEJsb2NrPihjaGlsZCktPm1hdGhNTFN0eWxlKCktPnJlc29sdmVNYXRo
TUxTdHlsZShjaGlsZCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4o
KmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKaW5kZXggYmIxNDJhMjU0MjBhM2E2YmNlMTRjMTU0YmRlOTMyMzM2MzQzNGUxMi4u
NjFhMTJjYTQ4N2YzYTViYmM1NTRkZWUwYzgzYWY2NDVhNjIxZGU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNYXRoTUxCbG9jaygpOwogCi0gICAgTWF0
aE1MU3R5bGUqIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxT
dHlsZSo+KCZtX21hdGhNTFN0eWxlLmdldCgpKTsgfQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE1MU3R5bGU7IH0KIAogICAgIGJvb2wgaXNDaGls
ZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIAotICAgIE1h
dGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWF0aE1M
U3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0KKyAgICBNYXRoTUxTdHlsZSYgbWF0aE1M
U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21hdGhNTFN0eWxlOyB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAppbmRleCAzNWU0NDE0NWY3Zjg2MmMwOGJkMDRlMjE3ZWQ1ZmQwZGU2MzBj
MTA4Li5hMjBiZDEyMmQ4OGNlMGYwOGQ3NDU3N2VlNzk4NWEwM2E1OTg5MDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcApAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6RnJhY3Rpb25Q
YXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmcmFjdGlvblBhcmFtZXRlcgogICAgIC8v
IFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMgdG8gZHJhdyB0aGUgZnJhY3Rpb24gZnJvbSB0aGUg
T3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxiYWNrIHZhbHVlcyBvdGhlcndpc2UuCiAgICAgY29u
c3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQo
KTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmlt
YXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5bGUoKS0+
ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5bGUoKS5kaXNwbGF5
U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEpIHsKICAgICAgICAgcGFyYW1ldGVycy5udW1lcmF0
b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5
ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25OdW1EaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVu
VHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51bWVyYXRvckdhcE1pbik7CiAgICAgICAgIHBhcmFtZXRl
cnMuZGVub21pbmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlG
b250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25EZW5vbURpc3BsYXlTdHls
ZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uRGVub21pbmF0b3JHYXBNaW4pOwpA
QCAtMTE2LDcgKzExNiw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpTdGFja1BhcmFtZXRlcnMg
UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycygpCiAgICAgLy8gV2UgdHJ5IGFu
ZCByZWFkIGNvbnN0YW50cyB0byBkcmF3IHRoZSBzdGFjayBmcm9tIHRoZSBPcGVuVHlwZSBNQVRI
IGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25zdCBhdXRvJiBwcmlt
YXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGNvbnN0
IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0
aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUo
KTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOwogICAg
IGlmIChtYXRoRGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLmdhcE1pbiA9IG1hdGhEYXRhLT5n
ZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRhOjpT
dGFja0Rpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrR2FwTWluKTsK
ICAgICAgICAgcGFyYW1ldGVycy50b3BTaGlmdFVwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFu
dChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrVG9wRGlzcGxh
eVN0eWxlU2hpZnRVcCA6IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrVG9wU2hpZnRVcCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmgKaW5kZXggZTIxMmU5YmY3MzRhZDI1NWYwNmU2OTBlYzI1ZTE3ODVhOTI5OWUwNS4uMDJm
ZDQ0ZTU1NDRlOWY3MjIxMjY3M2U5MTZkZDY1YjgxNDNiYTE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAt
NDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFN0cmV0Y2hTaXplKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6
RmxhZykgY29uc3Q7Ci0gICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpT
dHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TGFy
Z2VPcCkgJiYgbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7IH0KLSAgICBib29sIHNob3Vs
ZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVybiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRzKSAmJiAhbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0
eWxlKCk7IH0KKyAgICBib29sIGlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0
Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9w
KSAmJiBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOyB9CisgICAgYm9vbCBzaG91bGRNb3Zl
TGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYgIW1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbCgpIGNvbnN0OwogICAgIExheW91dFVuaXQg
aXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE9wZXJhdG9yLml0YWxpY0Nv
cnJlY3Rpb24oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCAxYTY2ZWM4N2U2ZDkzNDNiZjVjYTU1OWI5Nzgw
YTkwMmY3ZjE0ZTIyLi4zZDc1N2E3YTg1NmFjYjYxZjBlNmY4MjNkOTZhOTk4OTUyOTVhNDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um9vdC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBh
cmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0ZXJzKCkKICAgICBjb25z
dCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgp
OwogICAgIGlmIChhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5
Rm9udCgpLm1hdGhEYXRhKCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0g
bWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3BlblR5cGVNYXRoRGF0YTo6
UmFkaWNhbFJ1bGVUaGlja25lc3MpOwotICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0g
bWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgbWF0aE1MU3R5bGUoKS0+ZGlz
cGxheVN0eWxlKCkgPyBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGlzcGxheVN0eWxlVmVydGlj
YWxHYXAgOiBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsVmVydGljYWxHYXApOworICAgICAgICBw
YXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5
Rm9udCwgbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSA/IE9wZW5UeXBlTWF0aERhdGE6OlJh
ZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxW
ZXJ0aWNhbEdhcCk7CiAgICAgICAgIHBhcmFtZXRlcnMuZXh0cmFBc2NlbmRlciA9IG1hdGhEYXRh
LT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxF
eHRyYUFzY2VuZGVyKTsKICAgICAgICAgaWYgKG1fa2luZCA9PSBSb290V2l0aEluZGV4KQogICAg
ICAgICAgICAgcGFyYW1ldGVycy5kZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQgPSBtYXRoRGF0YS0+
Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGVn
cmVlQm90dG9tUmFpc2VQZXJjZW50KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBSZW5kZXJNYXRoTUxS
b290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0
ZXJzKCkKICAgICAgICAgLy8gUmFkaWNhbEV4dHJhQXNjZW5kZXI6IFN1Z2dlc3RlZCB2YWx1ZSBp
cyBSYWRpY2FsUnVsZVRoaWNrbmVzcy4KICAgICAgICAgLy8gUmFkaWNhbERlZ3JlZUJvdHRvbVJh
aXNlUGVyY2VudDogU3VnZ2VzdGVkIHZhbHVlIGlzIDYwJS4KICAgICAgICAgcGFyYW1ldGVycy5y
dWxlVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzc0ZhbGxiYWNrKCk7Ci0gICAgICAgIGlmIChtYXRo
TUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSkKKyAgICAgICAgaWYgKG1hdGhNTFN0eWxlKCkuZGlz
cGxheVN0eWxlKCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gcGFyYW1l
dGVycy5ydWxlVGhpY2tuZXNzICsgc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDQ7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSA1ICog
cGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggNTU1YmQ2OGQ2NTFi
NWY4YWYwNTFmMDE1ZDNlYWZjNzdlMDY4ZjM5MS4uYTVjNGMxYzBkMGM1ZDlhZTYwZmUxMTIwODRm
Njg0YTY3MTlhZjg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkKIAogICAgIGNvbnN0IGF1dG8m
IHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKICAgICBpZiAoYXV0byBjb2RlUG9pbnQgPSBNYXRo
TUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChlbGVtZW50KCkudGV4dENv
bnRlbnQoKSkpIHsKLSAgICAgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aHZhcmlh
bnQgPSBtYXRoTUxTdHlsZSgpLT5tYXRoVmFyaWFudCgpOworICAgICAgICBNYXRoTUxFbGVtZW50
OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0eWxlKCkubWF0aFZhcmlhbnQoKTsK
ICAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpO
b25lKQogICAgICAgICAgICAgbWF0aHZhcmlhbnQgPSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYyA6
IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb3JtYWw7CiAgICAgICAgIFVDaGFyMzIgdHJh
bnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFyaWFudChjb2RlUG9pbnQudmFsdWUoKSwgbWF0aHZh
cmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAKaW5kZXggMjkwYzZkODVkMGVlMzJkNTA2MzczNTI2YjkwNmI0ODZmZDgzMzU5MC4uMDZiM2Uw
OTBlYTk3YmFlZDE1MDExNzQ5MTE3NzIyYmUxZjcyOWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zODcsOCArMzg3LDggQEAgYm9v
bCBCYXNpY1NoYXBlSW5zZXQ6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNv
bnN0CiAKIHN0YXRpYyBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5n
dGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogewotICAg
IHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLndpZHRoKCks
IGJvdW5kaW5nQm94LndpZHRoKCkpLAotICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFNpemUuaGVpZ2h0KCksIGJvdW5kaW5nQm94LmhlaWdodCgpKSk7CisgICAgcmV0dXJuIHsgZmxv
YXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLndpZHRoLCBib3VuZGluZ0JveC53aWR0aCgpKSwK
KyAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLmhlaWdodCwgYm91bmRpbmdC
b3guaGVpZ2h0KCkpIH07CiB9CiAKIGNvbnN0IFBhdGgmIEJhc2ljU2hhcGVJbnNldDo6cGF0aChj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggMjk0ZmI4MmEwNGVkZjRjYTI5MWI4MmM4M2QxOWVkMGMw
NmYyMGExZC4uMDZiY2M5OWY4YjBmMTlkY2E0YmQyNzI2NTFkYWMzMmJiN2RkNTVmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCkBAIC0zNCwxMCArMzQs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQm9yZGVyRGF0YSB7CiBmcmllbmQgY2xh
c3MgUmVuZGVyU3R5bGU7CiBwdWJsaWM6Ci0gICAgQm9yZGVyRGF0YSgpIDogbV90b3BMZWZ0KExl
bmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAgICAgICwgbV90
b3BSaWdodChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQotICAgICAgICAgICAg
ICAgICAsIG1fYm90dG9tTGVmdChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQot
ICAgICAgICAgICAgICAgICAsIG1fYm90dG9tUmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3Ro
KDAsIEZpeGVkKSkKKyAgICBCb3JkZXJEYXRhKCkKKyAgICAgICAgOiBtX3RvcExlZnQgeyB7IDAs
IEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CisgICAgICAgICwgbV90b3BSaWdodCB7IHsgMCwgRml4
ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAgICAgLCBtX2JvdHRvbUxlZnQgeyB7IDAsIEZpeGVk
IH0sIHsgMCwgRml4ZWQgfSB9CisgICAgICAgICwgbV9ib3R0b21SaWdodCB7IHsgMCwgRml4ZWQg
fSwgeyAwLCBGaXhlZCB9IH0KICAgICB7CiAgICAgfQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29u
c3QKQEAgLTU5LDE1ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBoYXNCb3JkZXJS
YWRpdXMoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKS5pc1pl
cm8oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW1fdG9wUmlnaHQu
d2lkdGgoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAo
IW1fYm90dG9tTGVmdC53aWR0aCgpLmlzWmVybygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGlmICghbV9ib3R0b21SaWdodC53aWR0aCgpLmlzWmVybygpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFt
X3RvcExlZnQud2lkdGguaXNaZXJvKCkKKyAgICAgICAgICAgIHx8ICFtX3RvcFJpZ2h0LndpZHRo
LmlzWmVybygpCisgICAgICAgICAgICB8fCAhbV9ib3R0b21MZWZ0LndpZHRoLmlzWmVybygpCisg
ICAgICAgICAgICB8fCAhbV9ib3R0b21SaWdodC53aWR0aC5pc1plcm8oKTsKICAgICB9CiAgICAg
CiAgICAgZmxvYXQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvRGF0YVJlZi5oCmluZGV4IDNmOTNhNTdlZjU4MjYxZGZhYTJjZWZkZjZkYTliMmE5
YjM5ZjIzOWMuLmY1NDJkNmMyYTE2ZmNmNzhiMTY2ZWEyOWVlZDBmZDhiNGNmMGYyNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaApAQCAtMSw4ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAg
ICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqICAg
ICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNSwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDMwICsyNiw2NSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEYXRhUmVmIHsKIHB1YmxpYzoK
LSAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQot
ICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3RoZXIpIDogbV9kYXRhKGNvbnN0X2Nhc3Q8VCY+
KG90aGVyLm1fZGF0YS5nZXQoKSkpIHsgfQotICAgIERhdGFSZWYmIG9wZXJhdG9yPShjb25zdCBE
YXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBjb25zdF9jYXN0PFQmPihvdGhlci5tX2RhdGEuZ2V0
KCkpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpCisgICAgICAg
IDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgeworICAgIH0KIAotICAgIGNvbnN0IFQqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wdHIoKTsgfQorICAgIERhdGFSZWYoY29uc3QgRGF0
YVJlZiYgb3RoZXIpCisgICAgICAgIDogbV9kYXRhKG90aGVyLm1fZGF0YS5jb3B5UmVmKCkpCisg
ICAgeworICAgIH0KKworICAgIERhdGFSZWYmIG9wZXJhdG9yPShjb25zdCBEYXRhUmVmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IG90aGVyLm1fZGF0YS5jb3B5UmVmKCk7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqZ2V0KCk7IH0KLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCk7IH0KKyAgICBEYXRhUmVmKERhdGFSZWYmJikgPSBkZWZhdWx0OworICAgIERh
dGFSZWYmIG9wZXJhdG9yPShEYXRhUmVmJiYpID0gZGVmYXVsdDsKKworICAgIERhdGFSZWYgcmVw
bGFjZShEYXRhUmVmJiYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhLnJlcGxh
Y2UoV1RGTW92ZShvdGhlci5tX2RhdGEpKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBjb25zdCBU
JigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KIAotICAgIFQq
IGFjY2VzcygpCisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2RhdGE7CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgY29uc3QgVCogb3BlcmF0b3It
PigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpOworICAgIH0KKwor
ICAgIFQmIGFjY2VzcygpCiAgICAgewogICAgICAgICBpZiAoIW1fZGF0YS0+aGFzT25lUmVmKCkp
CiAgICAgICAgICAgICBtX2RhdGEgPSBtX2RhdGEtPmNvcHkoKTsKLSAgICAgICAgcmV0dXJuIG1f
ZGF0YS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRGF0YVJlZjxUPiYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRGF0YVJlZiYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9kYXRh
LnB0cigpID09IG8ubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9PSBvLm1fZGF0YS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKSA9PSBvdGhlci5tX2RhdGEucHRyKCkgfHwg
bV9kYXRhLmdldCgpID09IG90aGVyLm1fZGF0YS5nZXQoKTsKICAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0CisKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9kYXRhLnB0cigpICE9IG8ubV9kYXRhLnB0cigpICYmIG1fZGF0YS5nZXQoKSAhPSBvLm1fZGF0
YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFt
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5j
cHAKaW5kZXggNzY1MjM4MDVhMjVjOTQyNmFmZTAzYzMzOTFjMGU3ODk5OGE1MWQyNi4uOTcyOThh
YjQ0NzlhN2VhMjdkZTlmYmUzODJlMmI3NDcwYjZmNDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRpbWluZ0Z1bmN0aW9uKiBLZXlmcmFtZVZhbHVlOjp0aW1p
bmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVuZGVyU3R5bGUqIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgpOworICAgIGF1dG8qIGtleWZyYW1l
U3R5bGUgPSBzdHlsZSgpOwogICAgIGlmICgha2V5ZnJhbWVTdHlsZSB8fCAha2V5ZnJhbWVTdHls
ZS0+YW5pbWF0aW9ucygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpLT5zaXplKCk7ICsraSkg
ewogICAgICAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiA9IGtleWZyYW1lU3R5bGUtPmFu
aW1hdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwogICAgICAgICBpZiAobmFtZSA9PSBhbmltYXRpb24u
bmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpLmdl
dCgpOworICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNDQsNyArNDQsNiBAQCBUaW1pbmdGdW5jdGlv
biogS2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAogCiBLZXlmcmFtZUxpc3Q6On5LZXlmcmFtZUxpc3QoKQogewotICAgIGNsZWFyKCk7
CiB9CiAKIHZvaWQgS2V5ZnJhbWVMaXN0OjpjbGVhcigpCkBAIC01OCwxNSArNTcsMTIgQEAgYm9v
bCBLZXlmcmFtZUxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgS2V5ZnJhbWVMaXN0JiBvKSBjb25zdAog
ICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgIT0gby5tX2tleWZyYW1lcy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxLZXlmcmFtZVZhbHVlPjo6Y29uc3RfaXRl
cmF0b3IgaXQyID0gby5tX2tleWZyYW1lcy5iZWdpbigpOwotICAgIGZvciAoVmVjdG9yPEtleWZy
YW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDEgPSBtX2tleWZyYW1lcy5iZWdpbigpOyBpdDEg
IT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxKSB7CisgICAgYXV0byBpdDIgPSBvLm1fa2V5ZnJh
bWVzLmJlZ2luKCk7CisgICAgZm9yIChhdXRvIGl0MSA9IG1fa2V5ZnJhbWVzLmJlZ2luKCk7IGl0
MSAhPSBtX2tleWZyYW1lcy5lbmQoKTsgKytpdDEsICsraXQyKSB7CiAgICAgICAgIGlmIChpdDEt
PmtleSgpICE9IGl0Mi0+a2V5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTEgPSAqaXQxLT5zdHlsZSgpOwotICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUyID0gKml0Mi0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxl
MSAhPSBzdHlsZTIpCisgICAgICAgIGlmICgqaXQxLT5zdHlsZSgpICE9ICppdDItPnN0eWxlKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICsraXQyOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaAppbmRleCBmYWFiYmZkNWE4NmU4MTAwZmQ4OTFiMGEwMDc1NjM0MzVmZjQxYTRj
Li4yYjVmZTY1NTRlNzYzMWUxMmY0MzhmMWY4ZWUzMGZkNzE4OTg4ZDI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMTA4LDUzICsx
MDgsNTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS0+aW1hZ2U7IH0KICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS0+aW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEltYWdlKFJlZlB0cjxTdHlsZUltYWdl
PiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsgfQor
ICAgIHZvaWQgc2V0SW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpIHsgbV9kYXRhLmFj
Y2VzcygpLmltYWdlID0gV1RGTW92ZShpbWFnZSk7IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYg
aW1hZ2VTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmltYWdlU2xpY2VzOyB9Ci0gICAg
dm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS0+
aW1hZ2VTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KKyAgICB2b2lkIHNldEltYWdlU2xpY2Vz
KExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLmltYWdlU2xpY2VzID0gV1RGTW92
ZShzbGljZXMpOyB9CiAKICAgICBib29sIGZpbGwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmZp
bGw7IH0KLSAgICB2b2lkIHNldEZpbGwoYm9vbCBmaWxsKSB7IG1fZGF0YS5hY2Nlc3MoKS0+Zmls
bCA9IGZpbGw7IH0KKyAgICB2b2lkIHNldEZpbGwoYm9vbCBmaWxsKSB7IG1fZGF0YS5hY2Nlc3Mo
KS5maWxsID0gZmlsbDsgfQogCiAgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJTbGljZXMoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEtPmJvcmRlclNsaWNlczsgfQotICAgIHZvaWQgc2V0Qm9yZGVy
U2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMg
PSBXVEZNb3ZlKHNsaWNlcyk7IH0KKyAgICB2b2lkIHNldEJvcmRlclNsaWNlcyhMZW5ndGhCb3gg
c2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7
IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYgb3V0c2V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5vdXRzZXQ7IH0KLSAgICB2b2lkIHNldE91dHNldChMZW5ndGhCb3ggb3V0c2V0KSB7IG1fZGF0
YS5hY2Nlc3MoKS0+b3V0c2V0ID0gV1RGTW92ZShvdXRzZXQpOyB9CisgICAgdm9pZCBzZXRPdXRz
ZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNjZXNzKCkub3V0c2V0ID0gV1RGTW92ZShv
dXRzZXQpOyB9CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhvcml6b250YWxSdWxlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5pbmVQaWVjZUltYWdlUnVsZT4obV9kYXRhLT5ob3Jp
em9udGFsUnVsZSk7IH0KLSAgICB2b2lkIHNldEhvcml6b250YWxSdWxlKEVOaW5lUGllY2VJbWFn
ZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCktPmhvcml6b250YWxSdWxlID0gcnVsZTsgfQor
ICAgIHZvaWQgc2V0SG9yaXpvbnRhbFJ1bGUoRU5pbmVQaWVjZUltYWdlUnVsZSBydWxlKSB7IG1f
ZGF0YS5hY2Nlc3MoKS5ob3Jpem9udGFsUnVsZSA9IHJ1bGU7IH0KICAgICAKICAgICBFTmluZVBp
ZWNlSW1hZ2VSdWxlIHZlcnRpY2FsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVO
aW5lUGllY2VJbWFnZVJ1bGU+KG1fZGF0YS0+dmVydGljYWxSdWxlKTsgfQotICAgIHZvaWQgc2V0
VmVydGljYWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCkt
PnZlcnRpY2FsUnVsZSA9IHJ1bGU7IH0KKyAgICB2b2lkIHNldFZlcnRpY2FsUnVsZShFTmluZVBp
ZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLnZlcnRpY2FsUnVsZSA9IHJ1bGU7
IH0KIAogICAgIHZvaWQgY29weUltYWdlU2xpY2VzRnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYg
b3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0gb3Ro
ZXIubV9kYXRhLT5pbWFnZVNsaWNlczsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5maWxsID0g
b3RoZXIubV9kYXRhLT5maWxsOworICAgICAgICBtX2RhdGEuYWNjZXNzKCkuaW1hZ2VTbGljZXMg
PSBvdGhlci5tX2RhdGEtPmltYWdlU2xpY2VzOworICAgICAgICBtX2RhdGEuYWNjZXNzKCkuZmls
bCA9IG90aGVyLm1fZGF0YS0+ZmlsbDsKICAgICB9CiAKICAgICB2b2lkIGNvcHlCb3JkZXJTbGlj
ZXNGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fZGF0
YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gb3RoZXIubV9kYXRhLT5ib3JkZXJTbGljZXM7Cisg
ICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGljZXMgPSBvdGhlci5tX2RhdGEtPmJvcmRl
clNsaWNlczsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb3B5T3V0c2V0RnJvbShjb25zdCBOaW5l
UGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPm91dHNl
dCA9IG90aGVyLm1fZGF0YS0+b3V0c2V0OworICAgICAgICBtX2RhdGEuYWNjZXNzKCkub3V0c2V0
ID0gb3RoZXIubV9kYXRhLT5vdXRzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBjb3B5UmVwZWF0RnJv
bShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNj
ZXNzKCktPmhvcml6b250YWxSdWxlID0gb3RoZXIubV9kYXRhLT5ob3Jpem9udGFsUnVsZTsKLSAg
ICAgICAgbV9kYXRhLmFjY2VzcygpLT52ZXJ0aWNhbFJ1bGUgPSBvdGhlci5tX2RhdGEtPnZlcnRp
Y2FsUnVsZTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmhvcml6b250YWxSdWxlID0gb3RoZXIu
bV9kYXRhLT5ob3Jpem9udGFsUnVsZTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLnZlcnRpY2Fs
UnVsZSA9IG90aGVyLm1fZGF0YS0+dmVydGljYWxSdWxlOwogICAgIH0KIAogICAgIHZvaWQgc2V0
TWFza0RlZmF1bHRzKCkKICAgICB7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGlj
ZXMgPSBMZW5ndGhCb3goMCk7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IHRydWU7
Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gTGVuZ3RoQm94KCk7Cisg
ICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNlcyA9IExlbmd0aEJveCgwKTsKKyAgICAg
ICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSB0cnVlOworICAgICAgICBtX2RhdGEuYWNjZXNzKCku
Ym9yZGVyU2xpY2VzID0gTGVuZ3RoQm94KCk7CiAgICAgfQogCiAgICAgc3RhdGljIExheW91dFVu
aXQgY29tcHV0ZU91dHNldChjb25zdCBMZW5ndGgmIG91dHNldFNpZGUsIExheW91dFVuaXQgYm9y
ZGVyU2lkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCmluZGV4IDljNDcxMjVlYTc0MGY5NjcwNjA2ZmVmYWJiOTVmZjhlNzZjYmQyMWMuLmYwYjZl
ZjAyNWE5OGFlZTBiYTQ5ZDU3MmZjNjY2Y2E3NzIzMzQwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNzEsMTEgKzcxLDExIEBAIHN0cnVj
dCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAgIHZvaWQqIGRhdGFSZWZTdmdTdHlsZTsKICAg
ICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkc1sy
XTsKLSAgICB9IGluaGVyaXRlZF9mbGFnczsKKyAgICB9IG1faW5oZXJpdGVkRmxhZ3M7CiAKICAg
ICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICB1aW50NjRfdCBtX2ZsYWdzOwot
ICAgIH0gbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH0gbV9ub25Jbmhlcml0ZWRGbGFnczsKICNp
ZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJv
b2wgZGVsZXRpb25DaGVjazsKICNlbmRpZgpAQCAtODUsNyArODUsNyBAQCBDT01QSUxFX0FTU0VS
VChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5bGUpLCBS
ZW5kZXJTdHlsZQogCiBSZW5kZXJTdHlsZSYgUmVuZGVyU3R5bGU6OmRlZmF1bHRTdHlsZSgpCiB7
Ci0gICAgc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZSA9ICpuZXcgUmVuZGVyU3R5bGUoQ3JlYXRl
RGVmYXVsdFN0eWxlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVyU3R5bGU+IHN0
eWxlIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CiAgICAgcmV0dXJuIHN0eWxlOwogfQogCkBAIC0x
MjgsNTMgKzEyOCw2NyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhl
cml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiBSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFnKQotICAgIDogbV9ib3goU3R5bGVC
b3hEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHZpc3VhbChTdHlsZVZpc3VhbERhdGE6OmNyZWF0ZSgp
KQotICAgICwgbV9iYWNrZ3JvdW5kKFN0eWxlQmFja2dyb3VuZERhdGE6OmNyZWF0ZSgpKQotICAg
ICwgc3Vycm91bmQoU3R5bGVTdXJyb3VuZERhdGE6OmNyZWF0ZSgpKQotICAgICwgcmFyZU5vbklu
aGVyaXRlZERhdGEoU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBy
YXJlSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKLSAgICAs
IGluaGVyaXRlZChTdHlsZUluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQorICAgIDogbV9ib3hEYXRh
KFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3Zpc3VhbERhdGEoU3R5bGVWaXN1YWxE
YXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2dyb3VuZERhdGEoU3R5bGVCYWNrZ3JvdW5kRGF0
YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N1cnJvdW5kRGF0YShTdHlsZVN1cnJvdW5kRGF0YTo6Y3Jl
YXRlKCkpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhKFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1faW5oZXJpdGVkRGF0YShTdHlsZUluaGVyaXRl
ZERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9zdmdTdHlsZShTVkdSZW5kZXJTdHlsZTo6Y3JlYXRl
KCkpCiB7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IGluaXRpYWxFbXB0eUNl
bGxzKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgPSBpbml0aWFsQ2FwdGlv
blNpZGUoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSA9IGluaXRpYWxM
aXN0U3R5bGVUeXBlKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9u
ID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl92aXNp
YmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRf
YWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3Ry
YW5zZm9ybSA9IGluaXRpYWxUZXh0VHJhbnNmb3JtKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0X2RlY29yYXRpb25zID0gaW5pdGlhbFRleHREZWNvcmF0aW9uKCk7Ci0gICAgaW5oZXJpdGVk
X2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBpbml0aWFsQ3Vyc29yKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5lbXB0eUNlbGxzID0gaW5pdGlhbEVtcHR5Q2VsbHMoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmNhcHRpb25TaWRlID0gaW5pdGlhbENhcHRpb25TaWRlKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5saXN0U3R5bGVUeXBlID0gaW5pdGlhbExpc3RTdHlsZVR5cGUoKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7
CisgICAgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsK
KyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IGluaXRpYWxUZXh0QWxpZ24oKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0gPSBpbml0aWFsVGV4dFRyYW5zZm9ybSgp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gaW5pdGlhbFRleHREZWNv
cmF0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBpbml0aWFsQ3Vyc29yKCk7
CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIGluaGVyaXRlZF9mbGFncy5tX2N1
cnNvclZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCk7CiAj
ZW5kaWYKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbiA9IGluaXRpYWxEaXJlY3Rpb24o
KTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2Uo
KTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZSA9IGluaXRpYWxCb3JkZXJD
b2xsYXBzZSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nID0gaW5pdGlhbFJU
TE9yZGVyaW5nKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlh
bEJveERpcmVjdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3Qg
PSBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpOwotICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRl
ckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9p
bnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURl
ZmF1bHRCdXR0b24gPSBmYWxzZTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSA9
IGluaXRpYWxXcml0aW5nTW9kZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0g
aW5pdGlhbERpcmVjdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSA9IGlu
aXRpYWxXaGl0ZVNwYWNlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSA9
IGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJp
bmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVj
dGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnByaW50
Q29sb3JBZGp1c3QgPSBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpOworICAgIG1faW5oZXJpdGVk
RmxhZ3MucG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7CisgICAgbV9pbmhl
cml0ZWRGbGFncy5pbnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLndy
aXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KChz
aXplb2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3Jv
dyIpOwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25Jbmhlcml0ZWRGbGFncykgPD0gOCks
ICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CiB9CiAKLVJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQotICAgIDogbV9i
b3gob3RoZXIubV9ib3gpCi0gICAgLCB2aXN1YWwob3RoZXIudmlzdWFsKQotICAgICwgbV9iYWNr
Z3JvdW5kKG90aGVyLm1fYmFja2dyb3VuZCkKLSAgICAsIHN1cnJvdW5kKG90aGVyLnN1cnJvdW5k
KQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEob3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEp
Ci0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShvdGhlci5yYXJlSW5oZXJpdGVkRGF0YSkKLSAgICAs
IGluaGVyaXRlZChvdGhlci5pbmhlcml0ZWQpCitpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCisgICAgOiBtX2JveERhdGEo
b3RoZXIubV9ib3hEYXRhKQorICAgICwgbV92aXN1YWxEYXRhKG90aGVyLm1fdmlzdWFsRGF0YSkK
KyAgICAsIG1fYmFja2dyb3VuZERhdGEob3RoZXIubV9iYWNrZ3JvdW5kRGF0YSkKKyAgICAsIG1f
c3Vycm91bmREYXRhKG90aGVyLm1fc3Vycm91bmREYXRhKQorICAgICwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YShvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKQorICAgICwgbV9ub25Jbmhlcml0
ZWRGbGFncyhvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKQorICAgICwgbV9yYXJlSW5oZXJpdGVk
RGF0YShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKQorICAgICwgbV9pbmhlcml0ZWREYXRhKG90
aGVyLm1faW5oZXJpdGVkRGF0YSkKKyAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhl
cml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKLSAgICAsIGlu
aGVyaXRlZF9mbGFncyhvdGhlci5pbmhlcml0ZWRfZmxhZ3MpCi0gICAgLCBub25pbmhlcml0ZWRf
ZmxhZ3Mob3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzKQoreworfQorCitpbmxpbmUgUmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCisgICAgOiBt
X2JveERhdGEoYS5tX2JveERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9ib3hEYXRhKSkpCisgICAg
LCBtX3Zpc3VhbERhdGEoYS5tX3Zpc3VhbERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV92aXN1YWxE
YXRhKSkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKGEubV9iYWNrZ3JvdW5kRGF0YS5yZXBsYWNl
KFdURk1vdmUoYi5tX2JhY2tncm91bmREYXRhKSkpCisgICAgLCBtX3N1cnJvdW5kRGF0YShhLm1f
c3Vycm91bmREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fc3Vycm91bmREYXRhKSkpCisgICAgLCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhKGEubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5yZXBsYWNlKFdU
Rk1vdmUoYi5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKSkpCisgICAgLCBtX25vbkluaGVyaXRlZEZs
YWdzKHN0ZDo6ZXhjaGFuZ2UoYS5tX25vbkluaGVyaXRlZEZsYWdzLCBiLm1fbm9uSW5oZXJpdGVk
RmxhZ3MpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0YShhLm1fcmFyZUluaGVyaXRlZERhdGEu
cmVwbGFjZShXVEZNb3ZlKGIubV9yYXJlSW5oZXJpdGVkRGF0YSkpKQorICAgICwgbV9pbmhlcml0
ZWREYXRhKGEubV9pbmhlcml0ZWREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1faW5oZXJpdGVkRGF0
YSkpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhzdGQ6OmV4Y2hhbmdlKGEubV9pbmhlcml0ZWRG
bGFncywgYi5tX2luaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fc3ZnU3R5bGUoYS5tX3N2Z1N0eWxl
LnJlcGxhY2UoV1RGTW92ZShiLm1fc3ZnU3R5bGUpKSkKIHsKIH0KIApAQCAtMTg2LDYgKzIwMCwx
MSBAQCBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKICNlbmRpZgogfQogCitSZW5kZXJTdHls
ZSBSZW5kZXJTdHlsZTo6cmVwbGFjZShSZW5kZXJTdHlsZSYmIG5ld1N0eWxlKQoreworICAgIHJl
dHVybiBSZW5kZXJTdHlsZSB7ICp0aGlzLCBXVEZNb3ZlKG5ld1N0eWxlKSB9OworfQorCiBib29s
IFJlbmRlclN0eWxlOjppc0NTU0dyaWRMYXlvdXRFbmFibGVkKCkKIHsKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQpAQCAtMjY5LDQzICsyODgsNDIgQEAgQ29udGVudERpc3RyaWJ1dGlvblR5
cGUgUmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKGNvbnN0IFN0
eWwKIAogdm9pZCBSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIGlu
aGVyaXRQYXJlbnQpCiB7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEgPSBpbmhlcml0UGFyZW50LnJh
cmVJbmhlcml0ZWREYXRhOwotICAgIGluaGVyaXRlZCA9IGluaGVyaXRQYXJlbnQuaW5oZXJpdGVk
OwotICAgIGluaGVyaXRlZF9mbGFncyA9IGluaGVyaXRQYXJlbnQuaW5oZXJpdGVkX2ZsYWdzOwor
ICAgIG1fcmFyZUluaGVyaXRlZERhdGEgPSBpbmhlcml0UGFyZW50Lm1fcmFyZUluaGVyaXRlZERh
dGE7CisgICAgbV9pbmhlcml0ZWREYXRhID0gaW5oZXJpdFBhcmVudC5tX2luaGVyaXRlZERhdGE7
CisgICAgbV9pbmhlcml0ZWRGbGFncyA9IGluaGVyaXRQYXJlbnQubV9pbmhlcml0ZWRGbGFnczsK
IAogICAgIGlmIChtX3N2Z1N0eWxlICE9IGluaGVyaXRQYXJlbnQubV9zdmdTdHlsZSkKLSAgICAg
ICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS0+aW5oZXJpdEZyb20oaW5oZXJpdFBhcmVudC5tX3N2Z1N0
eWxlLmdldCgpKTsKKyAgICAgICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS5pbmhlcml0RnJvbShpbmhl
cml0UGFyZW50Lm1fc3ZnU3R5bGUuZ2V0KCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpjb3B5
Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCit2b2lkIFJlbmRlclN0
eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpCiB7Ci0g
ICAgbV9ib3ggPSBvdGhlci0+bV9ib3g7Ci0gICAgdmlzdWFsID0gb3RoZXItPnZpc3VhbDsKLSAg
ICBtX2JhY2tncm91bmQgPSBvdGhlci0+bV9iYWNrZ3JvdW5kOwotICAgIHN1cnJvdW5kID0gb3Ro
ZXItPnN1cnJvdW5kOwotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhID0gb3RoZXItPnJhcmVOb25J
bmhlcml0ZWREYXRhOwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5jb3B5Tm9uSW5oZXJpdGVkRnJv
bShvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzKTsKKyAgICBtX2JveERhdGEgPSBvdGhlci5tX2Jv
eERhdGE7CisgICAgbV92aXN1YWxEYXRhID0gb3RoZXIubV92aXN1YWxEYXRhOworICAgIG1fYmFj
a2dyb3VuZERhdGEgPSBvdGhlci5tX2JhY2tncm91bmREYXRhOworICAgIG1fc3Vycm91bmREYXRh
ID0gb3RoZXIubV9zdXJyb3VuZERhdGE7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGE7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5jb3B5
Tm9uSW5oZXJpdGVkRnJvbShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKTsKIAotICAgIGlmICht
X3N2Z1N0eWxlICE9IG90aGVyLT5tX3N2Z1N0eWxlKQotICAgICAgICBtX3N2Z1N0eWxlLmFjY2Vz
cygpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci0+bV9zdmdTdHlsZS5nZXQoKSk7CisgICAg
aWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXIubV9zdmdTdHlsZSkKKyAgICAgICAgbV9zdmdTdHlsZS5h
Y2Nlc3MoKS5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci5tX3N2Z1N0eWxlLmdldCgpKTsKIAog
ICAgIEFTU0VSVCh6b29tKCkgPT0gaW5pdGlhbFpvb20oKSk7CiB9CiAKLWJvb2wgUmVuZGVyU3R5
bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG8pIGNvbnN0Citib29sIFJlbmRlclN0
eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKICAgICAv
LyBjb21wYXJlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBwc2V1ZG9TdHlsZSBwb2ludGVyCi0gICAg
cmV0dXJuIGluaGVyaXRlZF9mbGFncyA9PSBvLmluaGVyaXRlZF9mbGFncwotICAgICAgICAmJiBu
b25pbmhlcml0ZWRfZmxhZ3MgPT0gby5ub25pbmhlcml0ZWRfZmxhZ3MKLSAgICAgICAgJiYgbV9i
b3ggPT0gby5tX2JveAotICAgICAgICAmJiB2aXN1YWwgPT0gby52aXN1YWwKLSAgICAgICAgJiYg
bV9iYWNrZ3JvdW5kID09IG8ubV9iYWNrZ3JvdW5kCi0gICAgICAgICYmIHN1cnJvdW5kID09IG8u
c3Vycm91bmQKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEgPT0gby5yYXJlTm9uSW5o
ZXJpdGVkRGF0YQotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YSA9PSBvLnJhcmVJbmhlcml0
ZWREYXRhCi0gICAgICAgICYmIGluaGVyaXRlZCA9PSBvLmluaGVyaXRlZAotICAgICAgICAmJiBt
X3N2Z1N0eWxlID09IG8ubV9zdmdTdHlsZQotICAgICAgICAgICAgOworICAgIHJldHVybiBtX2lu
aGVyaXRlZEZsYWdzID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ub25J
bmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzCisgICAgICAgICYmIG1f
Ym94RGF0YSA9PSBvdGhlci5tX2JveERhdGEKKyAgICAgICAgJiYgbV92aXN1YWxEYXRhID09IG90
aGVyLm1fdmlzdWFsRGF0YQorICAgICAgICAmJiBtX2JhY2tncm91bmREYXRhID09IG90aGVyLm1f
YmFja2dyb3VuZERhdGEKKyAgICAgICAgJiYgbV9zdXJyb3VuZERhdGEgPT0gb3RoZXIubV9zdXJy
b3VuZERhdGEKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEgPT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEgPT0gb3Ro
ZXIubV9pbmhlcml0ZWREYXRhCisgICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gb3RoZXIubV9zdmdT
dHlsZTsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25z
dApAQCAtMzEzLDggKzMzMSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0
eWxlKCkgY29uc3QKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8IHN0eWxlVHlwZSgp
ICE9IE5PUFNFVURPKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCk7ICsraSkgewotICAgICAgICBS
ZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXQoaSkuZ2V0
KCk7CisgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2NhY2hlZFBzZXVkb1N0eWxlcykg
ewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnVuaXF1ZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzMwLDEwICszNDcsOSBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5
bGU6OmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBpZCkgY29uc3QKICAgICBpZiAoc3R5
bGVUeXBlKCkgIT0gTk9QU0VVRE8pIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IG1fY2FjaGVkUHNldWRvU3R5bGVz
LT5hdChpKS5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNl
dWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gcGlk
KQotICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0eWxlOworICAgICAgICAgICAgcmV0dXJuIHBz
ZXVkb1N0eWxlLmdldCgpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzcxLDEw
ICszODcsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoUHNl
dWRvSWQgcGlkKQogCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVhbChjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaGVyaXRlZF9mbGFncyAh
PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICAgIHx8IGluaGVyaXRlZCAhPSBvdGhl
ci0+aW5oZXJpdGVkCi0gICAgICAgICAgIHx8IG1fc3ZnU3R5bGUtPmluaGVyaXRlZE5vdEVxdWFs
KG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpKQotICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0
YSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGE7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRmxh
Z3MgIT0gb3RoZXItPm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRh
ICE9IG90aGVyLT5tX2luaGVyaXRlZERhdGEKKyAgICAgICAgfHwgbV9zdmdTdHlsZS0+aW5oZXJp
dGVkTm90RXF1YWwob3RoZXItPm1fc3ZnU3R5bGUpCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEgIT0gb3RoZXItPm1fcmFyZUluaGVyaXRlZERhdGE7CiB9CiAKICNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQpAQCAtMzkwLDQ2ICs0MDYsNDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjb21wdXRlRm9udEhhc2goY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB1bnNpZ25lZCBSZW5k
ZXJTdHlsZTo6aGFzaEZvclRleHRBdXRvc2l6aW5nKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
Tm90IGEgdmVyeSBzbWFydCBoYXNoLiBDb3VsZCBiZSBpbXByb3ZlZCB1cG9uLiBTZWUgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjExMzE+LgotICAgIHVuc2lnbmVk
IGhhc2ggPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlOwotICAgIGhhc2ggXj0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlOwotICAgIGhhc2ggXj0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7Ci0gICAgaGFzaCBePSBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wLnZhbHVlKCk7Ci0gICAgaGFzaCBePSByYXJl
SW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwOwotICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERh
dGEtPm5ic3BNb2RlOwotICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhazsK
LSAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPnNwZWNp
ZmllZExpbmVIZWlnaHQudmFsdWUoKSk7Ci0gICAgaGFzaCBePSBjb21wdXRlRm9udEhhc2goaW5o
ZXJpdGVkLT5mb250Q2FzY2FkZSk7Ci0gICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46
Omhhc2goaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKTsKLSAgICBoYXNoIF49
IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9z
cGFjaW5nKTsKLSAgICBoYXNoIF49IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbjsKLSAg
ICBoYXNoIF49IGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nOwotICAgIGhhc2ggXj0gbm9u
aW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCk7Ci0gICAgaGFzaCBePSBub25pbmhlcml0ZWRfZmxh
Z3MuZmxvYXRpbmcoKTsKLSAgICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3Zl
cmZsb3c7Ci0gICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5OworICAg
IHVuc2lnbmVkIGhhc2ggPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlOworICAg
IGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2U7Cisg
ICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlOwor
ICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wLnZhbHVlKCk7Cisg
ICAgaGFzaCBePSBtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXA7CisgICAgaGFzaCBe
PSBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZTsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVy
aXRlZERhdGEtPmxpbmVCcmVhazsKKyAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6
aGFzaChtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQudmFsdWUoKSk7CisgICAg
aGFzaCBePSBjb21wdXRlRm9udEhhc2gobV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZSk7Cisg
ICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2gobV9pbmhlcml0ZWREYXRhLT5o
b3Jpem9udGFsQm9yZGVyU3BhY2luZyk7CisgICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9h
dD46Omhhc2gobV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcpOworICAgIGhh
c2ggXj0gbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb247CisgICAgaGFzaCBePSBtX2luaGVy
aXRlZEZsYWdzLnJ0bE9yZGVyaW5nOworICAgIGhhc2ggXj0gbV9ub25Jbmhlcml0ZWRGbGFncy5w
b3NpdGlvbigpOworICAgIGhhc2ggXj0gbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpOwor
ICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OworICAgIGhh
c2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5OwogICAgIHJldHVybiBoYXNo
OwogfQogCiBib29sIFJlbmRlclN0eWxlOjplcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYXBwZWFyYW5jZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJh
bmNlCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBz
ZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UKLSAg
ICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgPT0gb3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKLSAgICAgICAgJiYg
cmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcCA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bGluZUNsYW1wCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFk
anVzdCA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKLSAgICAgICAg
JiYgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCA9PSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+b3ZlcmZsb3dXcmFwCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9k
ZSA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKLSAgICAgICAgJiYgcmFyZUlu
aGVyaXRlZERhdGEtPmxpbmVCcmVhayA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJy
ZWFrCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkgPT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQotICAgICAgICAmJiBpbmhlcml0ZWQtPnNw
ZWNpZmllZExpbmVIZWlnaHQgPT0gb3RoZXIuaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0
Ci0gICAgICAgICYmIGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZXF1YWxGb3JUZXh0QXV0b1Npemlu
ZyhvdGhlci5pbmhlcml0ZWQtPmZvbnRDYXNjYWRlKQotICAgICAgICAmJiBpbmhlcml0ZWQtPmhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXIuaW5oZXJpdGVkLT5ob3Jpem9udGFsX2Jv
cmRlcl9zcGFjaW5nCi0gICAgICAgICYmIGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNp
bmcgPT0gb3RoZXIuaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICAm
JiBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdz
Ll9ib3hfZGlyZWN0aW9uCi0gICAgICAgICYmIGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5n
ID09IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nCi0gICAgICAgICYmIG5vbmlu
aGVyaXRlZF9mbGFncy5wb3NpdGlvbigpID09IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5wb3Np
dGlvbigpCi0gICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpID09IG90aGVy
Lm5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRP
dmVyZmxvdzsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSA9
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlCisgICAgICAgICYmIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlID09IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCisgICAgICAgICYmIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgPT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQorICAgICAgICAmJiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bGluZUNsYW1wCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0
ID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0CisgICAgICAgICYm
IG1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCA9PSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT5vdmVyZmxvd1dyYXAKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJz
cE1vZGUgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKKyAgICAgICAgJiYg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERh
dGEtPmxpbmVCcmVhaworICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJp
dHkgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5CisgICAgICAgICYm
IG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodCA9PSBvdGhlci5tX2luaGVyaXRl
ZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT5m
b250Q2FzY2FkZS5lcXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLm1faW5oZXJpdGVkRGF0YS0+
Zm9udENhc2NhZGUpCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJvcmRl
clNwYWNpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2lu
ZworICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2luZyA9PSBv
dGhlci5tX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2luZworICAgICAgICAmJiBt
X2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmJv
eERpcmVjdGlvbgorICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID09IG90
aGVyLm1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0
ZWRGbGFncy5wb3NpdGlvbigpID09IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRpb24o
KQorICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCkgPT0gb3RoZXIubV9u
b25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpCisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRleHRPdmVyZmxvdyA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0
T3ZlcmZsb3c7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNDM3
LDEwICs0NTMsMTAgQEAgYm9vbCBSZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3NpemluZyhj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0
ZWREYXRhU2hhcmVkKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBU
aGlzIGlzIGEgZmFzdCBjaGVjayB0aGF0IG9ubHkgbG9va3MgaWYgdGhlIGRhdGEgc3RydWN0dXJl
cyBhcmUgc2hhcmVkLgotICAgIHJldHVybiBpbmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXItPmluaGVy
aXRlZF9mbGFncwotICAgICAgICAmJiBpbmhlcml0ZWQuZ2V0KCkgPT0gb3RoZXItPmluaGVyaXRl
ZC5nZXQoKQorICAgIHJldHVybiBtX2luaGVyaXRlZEZsYWdzID09IG90aGVyLT5tX2luaGVyaXRl
ZEZsYWdzCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS5nZXQoKSA9PSBvdGhlci0+bV9pbmhl
cml0ZWREYXRhLmdldCgpCiAgICAgICAgICYmIG1fc3ZnU3R5bGUuZ2V0KCkgPT0gb3RoZXItPm1f
c3ZnU3R5bGUuZ2V0KCkKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3Ro
ZXItPnJhcmVJbmhlcml0ZWREYXRhLmdldCgpOworICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWRE
YXRhLmdldCgpID09IG90aGVyLT5tX3JhcmVJbmhlcml0ZWREYXRhLmdldCgpOwogfQogCiBzdGF0
aWMgYm9vbCBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KGNvbnN0IExlbmd0aEJveCYgYSwg
Y29uc3QgTGVuZ3RoQm94JiBiLCBjb25zdCBMZW5ndGgmIHdpZHRoKQpAQCAtNDcyLDE3ICs0ODgs
MTcgQEAgc3RhdGljIGJvb2wgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShjb25zdCBMZW5n
dGhCb3gmIGEsIGNvbnN0IExlbmd0aEJveCYgYiwKIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6
OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNv
bnN0CiB7Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLmdldCgpCi0gICAgICAgICYmICFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdywgb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYm94U2hhZG93KSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQo
KSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpCisgICAgICAgICYmICFhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFNoYWRvdywgb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94U2hhZG93KSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEuZ2V0KCkKLSAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTaGFkb3csIG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hh
ZG93KSkKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLmdldCgpCisgICAgICAgICYmICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3csIG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaGFkb3cpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpbmhlcml0ZWRf
ZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2Rl
Y29yYXRpb25zCi0gICAgICAgIHx8IHZpc3VhbC0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIudmlz
dWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRE
ZWNvcmF0aW9uU3R5bGUpIHsKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlv
bnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMKKyAgICAgICAgfHwg
bV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPnRleHRE
ZWNvcmF0aW9uCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0
aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25T
dHlsZSkgewogICAgICAgICAvLyBVbmRlcmxpbmVzIGFyZSBhbHdheXMgZHJhd24gb3V0c2lkZSBv
ZiB0aGVpciB0ZXh0Ym94IGJvdW5kcyB3aGVuIHRleHQtdW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRl
cjsKICAgICAgICAgLy8gaXMgc3BlY2lmaWVkLiBXZSBjYW4gdGFrZSBhbiBlYXJseSBvdXQgaGVy
ZS4KICAgICAgICAgaWYgKHRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQ
b3NpdGlvblVuZGVyCkBAIC00OTgsMTY4ICs1MTQsMTY4IEBAIGlubGluZSBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
KSBjCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cykgY29uc3QKIHsKLSAgICBpZiAobV9ib3gtPndpZHRoKCkgIT0gb3RoZXIubV9ib3gtPndpZHRo
KCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbldpZHRoKCkgIT0gb3RoZXIubV9ib3gtPm1pbldpZHRo
KCkKLSAgICAgICAgfHwgbV9ib3gtPm1heFdpZHRoKCkgIT0gb3RoZXIubV9ib3gtPm1heFdpZHRo
KCkKLSAgICAgICAgfHwgbV9ib3gtPmhlaWdodCgpICE9IG90aGVyLm1fYm94LT5oZWlnaHQoKQot
ICAgICAgICB8fCBtX2JveC0+bWluSGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gtPm1pbkhlaWdodCgp
Ci0gICAgICAgIHx8IG1fYm94LT5tYXhIZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+bWF4SGVpZ2h0
KCkpCisgICAgaWYgKG1fYm94RGF0YS0+d2lkdGgoKSAhPSBvdGhlci5tX2JveERhdGEtPndpZHRo
KCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5taW5XaWR0aCgpICE9IG90aGVyLm1fYm94RGF0YS0+
bWluV2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1heFdpZHRoKCkgIT0gb3RoZXIubV9i
b3hEYXRhLT5tYXhXaWR0aCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+aGVpZ2h0KCkgIT0gb3Ro
ZXIubV9ib3hEYXRhLT5oZWlnaHQoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1pbkhlaWdodCgp
ICE9IG90aGVyLm1fYm94RGF0YS0+bWluSGVpZ2h0KCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5t
YXhIZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPm1heEhlaWdodCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmIChtX2JveC0+dmVydGljYWxBbGlnbigpICE9IG90aGVyLm1fYm94
LT52ZXJ0aWNhbEFsaWduKCkgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2FsQWxpZ24oKSAh
PSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigpKQorICAgIGlmIChtX2Jv
eERhdGEtPnZlcnRpY2FsQWxpZ24oKSAhPSBvdGhlci5tX2JveERhdGEtPnZlcnRpY2FsQWxpZ24o
KSB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24oKSAhPSBvdGhlci5tX25vbklu
aGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAobV9ib3gtPmJveFNpemluZygpICE9IG90aGVyLm1fYm94LT5ib3hTaXppbmcoKSkKKyAg
ICBpZiAobV9ib3hEYXRhLT5ib3hTaXppbmcoKSAhPSBvdGhlci5tX2JveERhdGEtPmJveFNpemlu
ZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJyb3VuZC0+bWFyZ2luICE9
IG90aGVyLnN1cnJvdW5kLT5tYXJnaW4pCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5tYXJnaW4g
IT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPm1hcmdpbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAoc3Vycm91bmQtPnBhZGRpbmcgIT0gb3RoZXIuc3Vycm91bmQtPnBhZGRpbmcpCisg
ICAgaWYgKG1fc3Vycm91bmREYXRhLT5wYWRkaW5nICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5w
YWRkaW5nKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YWRkIGFuIG9wdGltaXplZCBmb3JtIG9mIGxheW91dCB0aGF0IGp1c3QgcmVjb21wdXRlcyB2aXN1
YWwgb3ZlcmZsb3cuCiAgICAgaWYgKGNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhvdGhlcikp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdl
dCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7Ci0gICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FwcGVhcmFuY2UKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFy
Z2luQmVmb3JlQ29sbGFwc2UKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXJnaW5BZnRlckNvbGxhcHNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5B
ZnRlckNvbGxhcHNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNs
YW1wICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAgICAgICAgICAg
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1faW5pdGlhbExldHRlcgotICAgICAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dE92ZXJmbG93KQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmFwcGVhcmFuY2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YXBwZWFyYW5jZQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFy
Z2luQmVmb3JlQ29sbGFwc2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QmVmb3JlQ29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1h
cmdpbkFmdGVyQ29sbGFwc2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QWZ0ZXJDb2xsYXBzZQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGlu
ZUNsYW1wICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcAorICAgICAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aW5pdGlhbExldHRlciAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pbml0aWFsTGV0dGVyCisgICAgICAgICAgICB8fCBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dGV4dE92ZXJmbG93KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50KQorICAgICAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uRnJhZ21lbnQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cmVnaW9uRnJhZ21lbnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
ICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW4gIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW4pCisgICAgICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5zaGFwZU1hcmdpbiAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5zaGFwZU1hcmdpbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3ggIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94KQorICAgICAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94ICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4
aWJsZUJveCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveCkKKyAg
ICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94ICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29yZGVyICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29yZGVyCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYWxpZ25Db250ZW50Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
bGlnbkl0ZW1zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZiAhPSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYKLSAgICAgICAgICAgIHx8IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlDb250ZW50Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9qdXN0aWZ5SXRlbXMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eUl0ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5U2Vs
ZiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5U2VsZikKKyAgICAgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9yZGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm9yZGVyCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
bGlnbkNvbnRlbnQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25Db250ZW50
CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0ZW1zICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXMKKyAgICAgICAgICAgIHx8IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZiAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5hbGlnblNlbGYKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pmp1c3RpZnlDb250ZW50ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlD
b250ZW50CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5SXRl
bXMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUl0ZW1zCisgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2VsZiAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2VsZikKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ib3hSZWZsZWN0LCBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZs
ZWN0KSkKKyAgICAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJveFJlZmxlY3QsIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFJl
ZmxlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X211bHRpQ29sKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNm
b3JtICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybSkgewotICAgICAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+aGFzVHJhbnNmb3Jt
KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5oYXNUcmFuc2Zv
cm0oKSkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBpZiAoKnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zZm9ybSAhPSAqb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtKSB7CisgICAgICAgICAgICBpZiAoKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybSAhPSAqb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtKSB7CiAg
ICAgICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eVRyYW5zZm9ybTsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBy
ZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2dyaWQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0gIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0pCisgICAgICAgIGlmIChtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmdyaWQKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAg
ICAgLy8gSWYgcmVnaW9ucyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxheW91dCB0byByZS1jYWxjIHJl
Z2lvbnMuCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdp
b25zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rhc2hib2FyZFJlZ2lvbnMpCisg
ICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9hcmRSZWdpb25zICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRhc2hib2FyZFJlZ2lvbnMpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLCBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlKSkgeworICAgICAgICBpZiAoIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSwgb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSkpIHsKICAgICAgICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlXaWxsQ2hh
bmdlOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3Ro
ZXIgY2hhbmdlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEu
Z2V0KCkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJh
cmVJbmhlcml0ZWREYXRhLT5pbmRlbnQgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmluZGVu
dAorICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVu
dCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQKICNpZiBFTkFCTEUoQ1NTM19U
RVhUKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdCAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0QWxpZ25MYXN0Ci0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SnVzdGlmeSAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0SnVzdGlmeQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEluZGVudExpbmUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudExp
bmUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRBbGlnbkxhc3QgIT0g
b3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdAorICAgICAgICAgICAgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEp1c3RpZnkgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEp1c3RpZnkKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRJbmRlbnRMaW5lICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRJbmRlbnRMaW5l
CiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpv
b20gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbQotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFpvb20gIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPm1fdGV4dFpvb20KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmVm
ZmVjdGl2ZVpvb20gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlWm9vbQor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpvb20gIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpvb20KICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQot
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNpemVBZGp1c3QKICNlbmRpZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERh
dGEtPndvcmRCcmVhayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrCi0gICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5uYnNwTW9kZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKLSAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEtPmxpbmVCcmVhawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTZWN1cml0eSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5Ci0gICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyAhPSBvdGhlci5yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVucwotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uTGltaXRCZWZvcmUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9u
TGltaXRCZWZvcmUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRB
ZnRlcgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5n
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZwotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc01hcmsgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc01hcmsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQ
b3NpdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24K
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJr
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrCi0gICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24gIT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+bV90YWJTaXplICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3Rh
YlNpemUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWlu
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lR3JpZCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV9saW5lR3JpZAorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+d29y
ZEJyZWFrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhaworICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+bmJzcE1vZGUgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKKyAg
ICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRTZWN1cml0eSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2Vj
dXJpdHkKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucworICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhl
cml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5o
eXBoZW5hdGlvblN0cmluZworICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVi
eVBvc2l0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnJ1YnlQb3NpdGlvbgorICAg
ICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrCisgICAgICAgICAgICB8fCBt
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbiAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyayAhPSBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrCisgICAgICAgICAgICB8fCBtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dE9yaWVudGF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50
YWJTaXplICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemUKKyAgICAgICAgICAg
IHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5saW5lR3JpZCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lR3JpZAog
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5tX2ltYWdlT3JpZW50YXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEt
PmltYWdlT3JpZW50YXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmll
bnRhdGlvbgogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU291cmNlICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcCAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25TbmFwCi0gICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
aW1hZ2VSZXNvbHV0aW9uU291cmNlCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZVJlc29sdXRpb25TbmFwICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdl
UmVzb2x1dGlvblNuYXAKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdl
UmVzb2x1dGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb24K
ICNlbmRpZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXAgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXAKLSAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lQWxpZ24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5j
dHVhdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9oYW5naW5nUHVuY3R1YXRpb24K
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwICE9IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5saW5lQWxpZ24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUFsaWdu
CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRpb24g
IT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFuZ2luZ1B1bmN0dWF0aW9uCiAjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCisgICAgICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9IG90aGVyLm1fcmFy
ZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKICNlbmRpZgotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSkgLy8gRklYTUU6IG5lZWRzIGFyZVBvaW50aW5n
VG9FcXVhbERhdGEoKT8KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpc3RT
dHlsZUltYWdlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlKSAv
LyBGSVhNRTogbmVlZHMgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSgpPwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgpICE9IG90aGVyLnRleHRT
dHJva2VXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYg
KGluaGVyaXRlZC0+bGluZV9oZWlnaHQgIT0gb3RoZXIuaW5oZXJpdGVkLT5saW5lX2hlaWdodAor
ICAgIGlmIChtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQgIT0gb3RoZXIubV9pbmhlcml0ZWRE
YXRhLT5saW5lSGVpZ2h0CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgfHwg
aW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0ICE9IG90aGVyLmluaGVyaXRlZC0+c3BlY2lm
aWVkTGluZUhlaWdodAorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVI
ZWlnaHQgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CiAjZW5k
aWYKLSAgICAgICAgfHwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZSAhPSBvdGhlci5pbmhlcml0ZWQt
PmZvbnRDYXNjYWRlCi0gICAgICAgIHx8IGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyAhPSBvdGhlci5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcKLSAgICAg
ICAgfHwgaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci5pbmhlcml0
ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5f
Ym94X2RpcmVjdGlvbiAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KLSAg
ICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLm1fcnRsT3JkZXJpbmcKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0
aW9uKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgfHwg
bm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdz
LmZsb2F0aW5nKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxh
eSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5hbERpc3BsYXkoKSkKKyAgICAg
ICAgfHwgbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZSAhPSBvdGhlci5tX2luaGVyaXRlZERh
dGEtPmZvbnRDYXNjYWRlCisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3Bh
Y2luZworICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2luZyAh
PSBvdGhlci5tX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2luZworICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdz
LmJveERpcmVjdGlvbgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nICE9
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcKKyAgICAgICAgfHwgbV9ub25Jbmhl
cml0ZWRGbGFncy5wb3NpdGlvbigpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRp
b24oKQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCkgIT0gb3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVk
RmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5vcmln
aW5hbERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKIAotICAgIGlmICgobm9uaW5o
ZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0gVEFCTEUpIHsKLSAgICAgICAgaWYg
KGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlICE9IG90aGVyLmluaGVyaXRlZF9mbGFn
cy5fYm9yZGVyX2NvbGxhcHNlCi0gICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2VtcHR5
X2NlbGxzICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMKLSAgICAgICAgICAg
IHx8IGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlICE9IG90aGVyLmluaGVyaXRlZF9mbGFn
cy5fY2FwdGlvbl9zaWRlCi0gICAgICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MudGFibGVM
YXlvdXQoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKSkKKyAgICBp
ZiAoKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpKSA+PSBUQUJMRSkgewor
ICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlCisgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzLmVtcHR5Q2VsbHMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzCisgICAg
ICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuY2FwdGlvblNpZGUKKyAgICAgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
dGFibGVMYXlvdXQoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLnRhYmxlTGF5b3V0KCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBJbiB0aGUgY29sbGFwc2lu
ZyBib3JkZXIgbW9kZWwsICdoaWRkZW4nIHN1cHByZXNzZXMgb3RoZXIgYm9yZGVycywgd2hpbGUg
J25vbmUnCiAgICAgICAgIC8vIGRvZXMgbm90LCBzbyB0aGVzZSBzdHlsZSBkaWZmZXJlbmNlcyBj
YW4gYmUgd2lkdGggZGlmZmVyZW5jZXMuCi0gICAgICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2Jv
cmRlcl9jb2xsYXBzZQorICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBz
ZQogICAgICAgICAgICAgJiYgKChib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXIu
Ym9yZGVyVG9wU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgICAgICAgICB8fCAoYm9yZGVyVG9w
U3R5bGUoKSA9PSBCTk9ORSAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4pCiAg
ICAgICAgICAgICAgICAgfHwgKGJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhl
ci5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05FKQpAQCAtNjcxLDM3ICs2ODcsMzcgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90
aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIGlmIChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpID09IExJU1RfSVRF
TSkgewotICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgIT0gb3Ro
ZXIuaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUKLSAgICAgICAgICAgIHx8IGluaGVy
aXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfcG9zaXRpb24pCisgICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0
aXZlRGlzcGxheSgpID09IExJU1RfSVRFTSkgeworICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFn
cy5saXN0U3R5bGVUeXBlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZQor
ICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiAhPSBvdGhl
ci5tX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiAhPSBv
dGhlci5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24KLSAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl90ZXh0X3RyYW5zZm9ybSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNm
b3JtCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fZGlyZWN0aW9uCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fd2hpdGVf
c3BhY2UgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZQotICAgICAgICB8fCBu
b25pbmhlcml0ZWRfZmxhZ3MuY2xlYXIoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MuY2xl
YXIoKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSAhPSBvdGhl
ci5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSkKKyAgICBpZiAobV9pbmhlcml0ZWRG
bGFncy50ZXh0QWxpZ24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24KKyAgICAg
ICAgfHwgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtICE9IG90aGVyLm1faW5oZXJpdGVk
RmxhZ3MudGV4dFRyYW5zZm9ybQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlv
biAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbgorICAgICAgICB8fCBtX2luaGVy
aXRlZEZsYWdzLndoaXRlU3BhY2UgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNl
CisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKSAhPSBvdGhlci5tX25vbklu
aGVyaXRlZEZsYWdzLmNsZWFyKCkKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy51bmlj
b2RlQmlkaSgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudW5pY29kZUJpZGkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayBibG9jayBmbG93IGRpcmVjdGlvbi4K
LSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLm1fd3JpdGluZ01vZGUpCisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01v
ZGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBDaGVjayB0ZXh0IGNvbWJpbmUgbW9kZS4KLSAgICBpZiAocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dENvbWJpbmUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRD
b21iaW5lICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRDb21iaW5lKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGJyZWFrcy4KLSAgICBpZiAocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYnJlYWtCZWZvcmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYnJlYWtCZWZvcmUKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJl
YWtBZnRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyCi0gICAg
ICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrSW5zaWRlICE9IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrSW5zaWRlKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5icmVha0JlZm9yZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVh
a0JlZm9yZQorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0FmdGVyICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQWZ0ZXIKKyAgICAgICAgfHwgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YnJlYWtJbnNpZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gT3Zl
cmZsb3cgcmV0dXJucyBhIGxheW91dCBoaW50LgotICAgIGlmIChub25pbmhlcml0ZWRfZmxhZ3Mu
b3ZlcmZsb3dYKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WCgpCi0gICAg
ICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKSAhPSBvdGhlci5ub25pbmhlcml0
ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkpCisgICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZs
b3dYKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1goKQorICAgICAgICB8
fCBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVk
RmxhZ3Mub3ZlcmZsb3dZKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgb3Vy
IGJvcmRlciB3aWR0aHMgY2hhbmdlLCB0aGVuIHdlIG5lZWQgdG8gbGF5b3V0LiAgT3RoZXIgY2hh
bmdlcyB0byBib3JkZXJzCkBAIC03MTMsMTMgKzcyOSwxMyBAQCBib29sIFJlbmRlclN0eWxlOjpj
aGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBj
aGFuZwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBjb3VudGVyIGRpcmVj
dGl2ZXMgY2hhbmdlLCB0cmlnZ2VyIGEgcmVsYXlvdXQgdG8gcmUtY2FsY3VsYXRlIGNvdW50ZXIg
dmFsdWVzIGFuZCByZWJ1aWxkIHRoZSBjb3VudGVyIG5vZGUgdHJlZS4KLSAgICBpZiAoIWFyZVBv
aW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2
ZXMsIG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJEaXJlY3RpdmVzKSkKKyAg
ICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y291
bnRlckRpcmVjdGl2ZXMsIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvdW50ZXJEaXJl
Y3RpdmVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoKHZpc2liaWxpdHkoKSA9
PSBDT0xMQVBTRSkgIT0gKG90aGVyLnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5
KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSkgeworICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3Vs
ZCBsaWtlIHRvIHVzZSBTaW1wbGlmaWVkTGF5b3V0IGhlcmUsIGJ1dCB3ZSBjYW4ndCBxdWl0ZSBk
byB0aGF0IHlldC4KICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgU2ltcGxpZmllZExh
eW91dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkgb24gUmVuZGVySW5saW5lcyAod2Ugd2lsbCBuZWVk
CiAgICAgICAgIC8vIHRvIGFkZCBhIHNlbGZOZWVkc1NpbXBsaWZpZWRMYXlvdXQgYml0IGluIG9y
ZGVyIHRvIG5vdCBnZXQgY29uZnVzZWQgYW5kIHRhaW50IGV2ZXJ5IGxpbmUpLgpAQCAtNzI4LDE5
ICs3NDQsMTkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSkKKyAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmhhc0ZpbHRlcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUo
RklMVEVSU19MRVZFTF8yKQotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ry
b3BGaWx0ZXJzKCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0JhY2tkcm9wRmls
dGVycygpKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNCYWNrZHJvcEZpbHRl
cnMoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNCYWNrZHJvcEZpbHRlcnMo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIGlmICghYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLCBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+cXVvdGVzKSkKKyAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlSW5o
ZXJpdGVkRGF0YS0+cXVvdGVzLCBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlvbigpICE9IFN0YXRpY1Bvc2l0
aW9uKSB7Ci0gICAgICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLnN1cnJvdW5kLT5v
ZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fc3Vycm91bmREYXRhLT5vZmZzZXQgIT0gb3RoZXIubV9z
dXJyb3VuZERhdGEtPm9mZnNldCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxp
a2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlvdXQgZm9yIHJlbGF0aXZlIHBvc2l0aW9uaW5nLCBidXQg
d2UgY2FuJ3QgcXVpdGUgZG8gdGhhdCB5ZXQuCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1h
a2Ugc3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJlY3RseSBvbiBSZW5kZXJJ
bmxpbmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgICAgIC8vIHRvIGFkZCBhIHNlbGZOZWVkc1Np
bXBsaWZpZWRMYXlvdXQgYml0IGluIG9yZGVyIHRvIG5vdCBnZXQgY29uZnVzZWQgYW5kIHRhaW50
IGV2ZXJ5IGxpbmUpLgpAQCAtNzQ4LDcgKzc2NCw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5n
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIC8vIE9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5nIGJ1dCBub3Qg
Y2hhbmdpbmcgc2l6ZS4KLSAgICAgICAgICAgIGlmICghcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50
T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lk
dGgoKSkpCisgICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkobV9z
dXJyb3VuZERhdGEtPm9mZnNldCwgb3RoZXIubV9zdXJyb3VuZERhdGEtPm9mZnNldCwgbV9ib3hE
YXRhLT53aWR0aCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTc3Niw5ICs3OTIsOSBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdQogICAgIGlm
IChwb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBvdGhlci5zdXJyb3VuZC0+b2Zmc2V0KSB7Cisg
ICAgaWYgKG1fc3Vycm91bmREYXRhLT5vZmZzZXQgIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPm9m
ZnNldCkgewogICAgICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBwb3NpdGlv
bmVkIGxheWVyIGlzIG1vdmluZyBidXQgbm90IGNoYW5naW5nIHNpemUuCi0gICAgICAgIGlmIChw
b3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50
T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lk
dGgoKSkpCisgICAgICAgIGlmIChwb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgcG9z
aXRpb25DaGFuZ2VJc01vdmVtZW50T25seShtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBvdGhlci5t
X3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBtX2JveERhdGEtPndpZHRoKCkpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtNzg4LDQwICs4MDQsNDAgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIsIHUKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBh
aW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKICAgICAvLyBTdHlsZVJlc29sdmVyIGhhcyBlbnN1
cmVkIHRoYXQgekluZGV4IGlzIG5vbi1hdXRvIG9ubHkgaWYgaXQncyBhcHBsaWNhYmxlLgotICAg
IGlmIChtX2JveC0+ekluZGV4KCkgIT0gb3RoZXIubV9ib3gtPnpJbmRleCgpIHx8IG1fYm94LT5o
YXNBdXRvWkluZGV4KCkgIT0gb3RoZXIubV9ib3gtPmhhc0F1dG9aSW5kZXgoKSkKKyAgICBpZiAo
bV9ib3hEYXRhLT56SW5kZXgoKSAhPSBvdGhlci5tX2JveERhdGEtPnpJbmRleCgpIHx8IG1fYm94
RGF0YS0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1fYm94RGF0YS0+aGFzQXV0b1pJbmRleCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlvbigpICE9IFN0YXRpY1Bv
c2l0aW9uKSB7Ci0gICAgICAgIGlmICh2aXN1YWwtPmNsaXAgIT0gb3RoZXIudmlzdWFsLT5jbGlw
IHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBvdGhlci52aXN1YWwtPmhhc0NsaXApIHsKKyAgICAgICAg
aWYgKG1fdmlzdWFsRGF0YS0+Y2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmNsaXAgfHwgbV92
aXN1YWxEYXRhLT5oYXNDbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+aGFzQ2xpcCkgewogICAg
ICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0eUNsaXBSZWN0OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIGlmIChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUgIT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0g
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHkgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fb3BhY2l0eSkgeworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5vcGFjaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkpIHsKICAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0eU9wYWNpdHk7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5n
IGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZmlsdGVyICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlcikgewor
ICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+ZmlsdGVyKSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZl
UHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXI7CiAgICAgICAgIC8v
IERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAK
ICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9iYWNrZHJvcEZpbHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNr
ZHJvcEZpbHRlcikgeworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZp
bHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlcikgewog
ICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnR5RmlsdGVyOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2lu
ZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fbWFzayAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNr
Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UpCisgICAgaWYgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hc2sgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFz
aworICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTgyOSwyNiArODQ1LDI2IEBAIGJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlciwgdW5zaWduZWQmCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWlu
dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdmlzaWJp
bGl0eSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkKLSAgICAgICAgfHwgaW5o
ZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3Mu
bV9wcmludENvbG9yQWRqdXN0Ci0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGlu
ayAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsKLSAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5f
aW5zaWRlRGVmYXVsdEJ1dHRvbgotICAgICAgICB8fCBzdXJyb3VuZC0+Ym9yZGVyICE9IG90aGVy
LnN1cnJvdW5kLT5ib3JkZXIKLSAgICAgICAgfHwgIW1fYmFja2dyb3VuZC0+aXNFcXVpdmFsZW50
Rm9yUGFpbnRpbmcoKm90aGVyLm1fYmFja2dyb3VuZCkKLSAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPnVzZXJNb2RpZnkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkK
LSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QgIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPnVzZXJTZWxlY3QKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
PnVzZXJEcmFnICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZwotICAgICAg
ICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYm9yZGVyRml0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX29iamVjdEZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RGaXQK
LSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb24gIT0gb3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb24KLSAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPm1faW1hZ2VSZW5kZXJpbmcpCisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0
eSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkKKyAgICAgICAgfHwgbV9pbmhl
cml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MucHJp
bnRDb2xvckFkanVzdAorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rCisgICAgICAgIHx8IG1faW5oZXJpdGVk
RmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmluc2lk
ZURlZmF1bHRCdXR0b24KKyAgICAgICAgfHwgbV9zdXJyb3VuZERhdGEtPmJvcmRlciAhPSBvdGhl
ci5tX3N1cnJvdW5kRGF0YS0+Ym9yZGVyCisgICAgICAgIHx8ICFtX2JhY2tncm91bmREYXRhLT5p
c0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIubV9iYWNrZ3JvdW5kRGF0YSkKKyAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT51c2VyTW9kaWZ5CisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJT
ZWxlY3QgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdAorICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT51c2VyRHJhZworICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5i
b3JkZXJGaXQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym9yZGVyRml0CisgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+b2JqZWN0UG9zaXRpb24gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Jq
ZWN0UG9zaXRpb24KKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZW5kZXJp
bmcgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZW5kZXJpbmcpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0
c2lkZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUpCisgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZSAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIHRvIGNoYW5nZVJlcXVp
cmVzTGF5ZXJSZXBhaW50KCkuCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQ
YXRoICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoKSB7CisgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmNsaXBQYXRoKSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlDbGlwUGF0aDsKICAgICAgICAgLy8g
RG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KQEAg
LTg1OCwxNiArODc0LDE2IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWlu
dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuCiAKIGJvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0
IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAogewotICAgIGlmIChpbmhlcml0
ZWQtPmNvbG9yICE9IG90aGVyLmluaGVyaXRlZC0+Y29sb3IKLSAgICAgICAgfHwgaW5oZXJpdGVk
X2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9k
ZWNvcmF0aW9ucwotICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLnZp
c3VhbC0+dGV4dERlY29yYXRpb24KLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0
RGVjb3JhdGlvblN0eWxlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRE
ZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29y
YXRpb25Db2xvcgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlv
blNraXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Ta2lwCi0g
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCi0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VD
b2xvcgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCi0gICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNGaWxsKQorICAgIGlmIChtX2luaGVyaXRlZERhdGEtPmNvbG9yICE9
IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+Y29sb3IKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFn
cy50ZXh0RGVjb3JhdGlvbnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlv
bnMKKyAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci5tX3Zp
c3VhbERhdGEtPnRleHREZWNvcmF0aW9uCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dERlY29yYXRpb25TdHlsZQorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
ZXh0RGVjb3JhdGlvbkNvbG9yICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRE
ZWNvcmF0aW9uQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29y
YXRpb25Ta2lwICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU2tp
cAorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yICE9IG90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTdHJva2VDb2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1w
aGFzaXNDb2xvciAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xv
cgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90
aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODc1LDEyICs4OTEsMTIgQEAgYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUo
Y29uc3QgUmVuZGVyU3R5bGUKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNv
bXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAog
ewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtU3R5bGUzRCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zv
cm1TdHlsZTNECi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZmFj
ZVZpc2liaWxpdHkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2ZhY2VWaXNp
YmlsaXR5Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2
ZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZQotICAgICAgICAg
ICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWAotICAgICAgICAgICAg
fHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWSkKKyAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdl
dCgpKSB7CisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHls
ZTNEICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybVN0eWxlM0QKKyAg
ICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKKyAgICAg
ICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCisgICAgICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC05NDQsNTggKzk2MCw1OSBAQCBib29sIFJlbmRlclN0eWxlOjpkaWZmUmVxdWly
ZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIGlzQ29tcAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGggdG9w
LCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQordm9pZCBSZW5kZXJT
dHlsZTo6c2V0Q2xpcChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0
b20sIExlbmd0aCYmIGxlZnQpCiB7Ci0gICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRhID0gdmlzdWFs
LmFjY2VzcygpOwotICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0b3A7Ci0gICAgZGF0YS0+Y2xpcC5y
aWdodCgpID0gcmlnaHQ7Ci0gICAgZGF0YS0+Y2xpcC5ib3R0b20oKSA9IGJvdHRvbTsKLSAgICBk
YXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CisgICAgYXV0byYgZGF0YSA9IG1fdmlzdWFsRGF0YS5h
Y2Nlc3MoKTsKKyAgICBkYXRhLmNsaXAudG9wKCkgPSBXVEZNb3ZlKHRvcCk7CisgICAgZGF0YS5j
bGlwLnJpZ2h0KCkgPSBXVEZNb3ZlKHJpZ2h0KTsKKyAgICBkYXRhLmNsaXAuYm90dG9tKCkgPSBX
VEZNb3ZlKGJvdHRvbSk7CisgICAgZGF0YS5jbGlwLmxlZnQoKSA9IFdURk1vdmUobGVmdCk7CiB9
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgaWYgKCFyYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKLSAgICAgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNz
KCktPmN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVhdGUoKTsKLSAgICByYXJlSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEoV1RGTW92ZShpbWFn
ZSksIGhvdFNwb3QpKTsKKyAgICBhdXRvJiBjdXJzb3JEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS5jdXJzb3JEYXRhOworICAgIGlmICghY3Vyc29yRGF0YSkKKyAgICAgICAgY3Vy
c29yRGF0YSA9IEN1cnNvckxpc3Q6OmNyZWF0ZSgpOworICAgIGN1cnNvckRhdGEtPmFwcGVuZChD
dXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYgbGlzdCkKIHsKLSAgICByYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IFdURk1vdmUobGlzdCk7CisgICAg
bV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhID0gV1RGTW92ZShsaXN0KTsK
IH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0UXVvdGVzKFJlZlB0cjxRdW90ZXNEYXRhPiYmIHEp
CiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgPT0gcSB8fCAocmFyZUluaGVy
aXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICpyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09ICpx
KSkKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09IHEgfHwgKG1fcmFyZUlu
aGVyaXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICptX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMg
PT0gKnEpKQogICAgICAgICByZXR1cm47CiAKLSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+cXVvdGVzID0gV1RGTW92ZShxKTsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
LnF1b3RlcyA9IFdURk1vdmUocSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFdpbGxDaGFu
Z2UoUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiYmIHdpbGxDaGFuZ2VEYXRhKQogewotICAgIGlmIChh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2Uu
Z2V0KCksIHdpbGxDaGFuZ2VEYXRhLmdldCgpKSkKKyAgICBpZiAoYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLmdldCgpLCB3aWxsQ2hhbmdl
RGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3dpbGxDaGFuZ2UgPSBXVEZNb3ZlKHdpbGxDaGFuZ2VEYXRhKTsKKyAgICBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLndpbGxDaGFuZ2UgPSBXVEZNb3ZlKHdpbGxD
aGFuZ2VEYXRhKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JMaXN0KCkKIHsK
LSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEpCi0gICAgICAgIHJhcmVJbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAobV9yYXJl
SW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5jdXJzb3JEYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xl
YXJDb250ZW50KCkKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVudCkK
LSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IG51bGxw
dHI7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvbnRlbnQpCisgICAgICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY29udGVudCA9IG51bGxwdHI7CiB9CiAKIHZv
aWQgUmVuZGVyU3R5bGU6OmFwcGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRh
PiBjb250ZW50RGF0YSkKIHsKLSAgICBhdXRvJiBjb250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fY29udGVudDsKKyAgICBhdXRvJiBjb250ZW50ID0gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50OwogICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVu
dCA9IGNvbnRlbnQuZ2V0KCk7CiAgICAgd2hpbGUgKGxhc3RDb250ZW50ICYmIGxhc3RDb250ZW50
LT5uZXh0KCkpCiAgICAgICAgIGxhc3RDb250ZW50ID0gbGFzdENvbnRlbnQtPm5leHQoKTsKQEAg
LTEwMTYsMTQgKzEwMzMsMTQgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8
U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBp
ZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkpCi0g
ICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRl
eHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dCk7CisgICAgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFn
ZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBpZiAoIW1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYWx0VGV4dC5pc051bGwoKSkKKyAgICAgICAgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50LT5zZXRBbHRUZXh0KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCkuYWx0VGV4dCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogewotICAgIGF1dG8mIGNv
bnRlbnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50OworICAgIGF1
dG8mIGNvbnRlbnQgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvbnRlbnQ7CiAg
ICAgaWYgKGFkZCkgewogICAgICAgICBDb250ZW50RGF0YSogbGFzdENvbnRlbnQgPSBjb250ZW50
LmdldCgpOwogICAgICAgICB3aGlsZSAobGFzdENvbnRlbnQgJiYgbGFzdENvbnRlbnQtPm5leHQo
KSkKQEAgLTEwMzcsMTUgKzEwNTQsMTUgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChj
b25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBsYXN0Q29udGVudC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250
ZW50RGF0YT4oc3RyaW5nKSk7CiAKLSAgICAgICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fYWx0VGV4dC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBsYXN0Q29u
dGVudC0+c2V0QWx0VGV4dChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0
KTsKKyAgICAgICAgICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbHRU
ZXh0LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGxhc3RDb250ZW50LT5zZXRBbHRUZXh0KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYWx0VGV4dCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBjb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29udGVudERhdGE+KHN0cmluZyk7Ci0gICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9hbHRUZXh0LmlzTnVsbCgpKQotICAgICAgICBjb250ZW50LT5zZXRBbHRUZXh0
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQpOworICAgIGlmICghbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbHRUZXh0LmlzTnVsbCgpKQorICAgICAgICBj
b250ZW50LT5zZXRBbHRUZXh0KG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYWx0VGV4
dCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENv
dW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKQEAgLTEwNTgsNyArMTA3NSw3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50
PiBjb3VudGVyLCBib29sIGFkZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
dW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSk7CisgICAgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVu
dERhdGE+KFdURk1vdmUoY291bnRlcikpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250
ZW50KFF1b3RlVHlwZSBxdW90ZSwgYm9vbCBhZGQpCkBAIC0xMDY4LDI2ICsxMDg1LDI2IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKTsK
KyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvbnRlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dCA9IHN0cmluZzsKKyAgICBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLmFsdFRleHQgPSBzdHJpbmc7CiAgICAgCi0gICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRleHQoc3RyaW5nKTsKKyAg
ICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50KQorICAgICAgICBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvbnRlbnQtPnNldEFsdFRleHQoc3RyaW5n
KTsKIH0KIAogY29uc3QgU3RyaW5nJiBSZW5kZXJTdHlsZTo6Y29udGVudEFsdFRleHQoKSBjb25z
dAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbHRUZXh0OworICAgIHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbHRUZXh0OwogfQogCiB2b2lkIFJlbmRlclN0
eWxlOjpzZXRIYXNBdHRyQ29udGVudCgpCiB7CiAgICAgc2V0VW5pcXVlKCk7Ci0gICAgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9oYXNBdHRyQ29udGVudCwgdHJ1ZSk7CisgICAgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBoYXNBdHRyQ29udGVudCwgdHJ1ZSk7CiB9CiAK
IC8vIEZJWE1FOiB1c2UgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpLgpAQCAtMTExNCw3ICsx
MTMxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29uc3Qg
VmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24KIAogdm9pZCBSZW5kZXJTdHlsZTo6YXBw
bHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCwgQXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pIGNvbnN0
CiB7Ci0gICAgYXV0byYgb3BlcmF0aW9ucyA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5z
Zm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKKyAgICBhdXRvJiBvcGVyYXRpb25zID0g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMo
KTsKICAgICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdp
bihvcGVyYXRpb25zLCBhcHBseU9yaWdpbik7CiAKICAgICBmbG9hdCBvZmZzZXRYID0gdHJhbnNm
b3JtT3JpZ2luWCgpLmlzUGVyY2VudCgpID8gYm91bmRpbmdCb3gueCgpIDogMDsKQEAgLTExNTEs
NzggKzExNjgsOTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQKIHsKICAgICBBU1NFUlQoIXNo
YWRvd0RhdGEgfHwgKCFzaGFkb3dEYXRhLT5zcHJlYWQoKSAmJiBzaGFkb3dEYXRhLT5zdHlsZSgp
ID09IE5vcm1hbCkpOwogCi0gICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSogcmFyZURhdGEgPSBy
YXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFyZUlu
aGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURhdGEt
PnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgICAgICByYXJlRGF0YS50ZXh0
U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShyYXJlRGF0YS0+dGV4dFNoYWRvdykpOwot
ICAgIHJhcmVEYXRhLT50ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBzaGFk
b3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEudGV4dFNoYWRvdykpOworICAgIHJhcmVE
YXRhLnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOwogfQogCiB2b2lkIFJlbmRlclN0
eWxlOjpzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEs
IGJvb2wgYWRkKQogewotICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEqIHJhcmVEYXRhID0g
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgYXV0byYgcmFyZURhdGEgPSBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOwogICAgIGlmICghYWRkKSB7Ci0gICAgICAgIHJh
cmVEYXRhLT5tX2JveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CisgICAgICAgIHJhcmVE
YXRhLmJveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEtPm1fYm94U2hh
ZG93KSk7Ci0gICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsK
KyAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEuYm94U2hhZG93KSk7Cisg
ICAgcmFyZURhdGEuYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKIH0KIAogc3RhdGlj
IFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVy
LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQogewotICAgIHJldHVybiBSb3VuZGVkUmVjdDo6UmFk
aWkoCi0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQoKS53
aWR0aCgpLCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVy
LnRvcExlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSks
Ci0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSwg
c2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRl
ci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZhbHVl
Rm9yTGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwK
LSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS53
aWR0aCgpLCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVy
LmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSk7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLnRvcExlZnQoKSwgc2l6ZSksCisgICAg
ICAgIHNpemVGb3JMZW5ndGhTaXplKGJvcmRlci50b3BSaWdodCgpLCBzaXplKSwKKyAgICAgICAg
c2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKSwgc2l6ZSksCisgICAgICAgIHNp
emVGb3JMZW5ndGhTaXplKGJvcmRlci5ib3R0b21SaWdodCgpLCBzaXplKQorICAgIH07CiB9CiAK
LVN0eWxlSW1hZ2UqIFJlbmRlclN0eWxlOjpsaXN0U3R5bGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5nZXQoKTsgfQorU3R5bGVJbWFnZSog
UmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UuZ2V0KCk7IH0KKwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0
TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikKIHsKLSAgICBpZiAocmFyZUlu
aGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCi0gICAgICAgIHJhcmVJbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5saXN0U3R5bGVJbWFnZSA9IFdURk1vdmUodik7CisgICAgaWYgKG1fcmFy
ZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCisgICAgICAgIG1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkubGlzdFN0eWxlSW1hZ2UgPSBXVEZNb3ZlKHYpOwogfQogCiBjb25z
dCBDb2xvciYgUmVuZGVyU3R5bGU6OmNvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJp
dGVkLT5jb2xvcjsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5jb2xvcjsKIH0KIAogY29u
c3QgQ29sb3ImIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOworICAgIHJldHVybiBtX2luaGVyaXRl
ZERhdGEtPnZpc2l0ZWRMaW5rQ29sb3I7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbG9y
KGNvbnN0IENvbG9yJiB2KQogewotICAgIFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdik7Cisg
ICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIGNvbG9yLCB2KTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYgdikKIHsKLSAgICBTRVRfVkFS
KGluaGVyaXRlZCwgdmlzaXRlZExpbmtDb2xvciwgdik7CisgICAgU0VUX1ZBUihtX2luaGVyaXRl
ZERhdGEsIHZpc2l0ZWRMaW5rQ29sb3IsIHYpOworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6aG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERh
dGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nOworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6dmVy
dGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRh
LT52ZXJ0aWNhbEJvcmRlclNwYWNpbmc7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6
b250YWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERh
dGEsIGhvcml6b250YWxCb3JkZXJTcGFjaW5nLCB2KTsKIH0KIAotZmxvYXQgUmVuZGVyU3R5bGU6
Omhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nOyB9Ci1mbG9hdCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3Jk
ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZzsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoZmxv
YXQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZywgdik7
IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCB2KSB7
IFNFVF9WQVIoaW5oZXJpdGVkLCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZywgdik7IH0KK3ZvaWQg
UmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAgIFNF
VF9WQVIobV9pbmhlcml0ZWREYXRhLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHYpOworfQogCiBS
b3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRS
ZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CiB7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3Qo
Ym9yZGVyUmVjdCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5k
ZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBib3Jk
ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNS
YWRpaUZvcihtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLCBib3JkZXJSZWN0LnNpemUoKSk7CiAgICAg
ICAgIHJhZGlpLnNjYWxlKGNhbGNCb3JkZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihib3JkZXJS
ZWN0LCByYWRpaSkpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJh
ZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpAQCAtMTIzMiw0MSArMTI2MiwzMyBAQCBS
b3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRS
ZWN0JiBib3JkZXJSZWN0LCBib29sCiBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRl
ZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsK
ICAgICBib29sIGhvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0gICAg
TGF5b3V0VW5pdCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCByaWdodFdpZHRo
ID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0
V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9IChob3Jpem9udGFsIHx8IGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0
VW5pdCBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwotCisgICAgYXV0byBsZWZ0V2lkdGggPSAoIWhv
cml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgoKSA6
IDA7CisgICAgYXV0byByaWdodFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0V2lkdGgoKSA6IDA7CisgICAgYXV0byB0b3BXaWR0aCA9
IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgo
KSA6IDA7CisgICAgYXV0byBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwogICAgIHJldHVybiBnZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBs
ZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKIH0KIAogUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBMYXlvdXRVbml0IHRv
cFdpZHRoLCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLAogICAgIExheW91dFVuaXQgbGVmdFdpZHRo
LCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IGlubmVy
UmVjdChib3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwgCi0gICAgICAgICAgICAgICBib3JkZXJS
ZWN0LnkoKSArIHRvcFdpZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgoKSAt
IGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAotICAgICAgICAgICAgICAgYm9yZGVyUmVjdC5oZWln
aHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwotCi0gICAgUm91bmRlZFJlY3Qgcm91bmRl
ZFJlY3QoaW5uZXJSZWN0KTsKLQorICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0IHsgeyBib3Jk
ZXJSZWN0LngoKSArIGxlZnRXaWR0aCwgYm9yZGVyUmVjdC55KCkgKyB0b3BXaWR0aCwKKyAgICAg
ICAgYm9yZGVyUmVjdC53aWR0aCgpIC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgYm9yZGVyUmVj
dC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGggfSB9OwogICAgIGlmIChoYXNCb3Jk
ZXJSYWRpdXMoKSkgewotICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBnZXRSb3Vu
ZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CisgICAgICAgIGF1dG8gcmFkaWkgPSBn
ZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CiAgICAgICAgIHJhZGlpLnNo
cmluayh0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7CiAgICAg
ICAgIHJvdW5kZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKICAgICB9CiAgICAgcmV0dXJuIHJvdW5kZWRSZWN0OwogfQogCi1zdGF0aWMgYm9vbCBh
bGxMYXllcnNBcmVGaXhlZChjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgYWxs
TGF5ZXJzQXJlRml4ZWQoY29uc3QgRmlsbExheWVyJiBsYXllcnMpCiB7Ci0gICAgYm9vbCBhbGxG
aXhlZCA9IHRydWU7Ci0gICAgCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQotICAgICAg
ICBhbGxGaXhlZCAmPSAoY3VyckxheWVyLT5pbWFnZSgpICYmIGN1cnJMYXllci0+YXR0YWNobWVu
dCgpID09IEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotCi0gICAgcmV0dXJuIGxheWVyICYm
IGFsbEZpeGVkOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIg
PSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmICghKGxheWVyLT5pbWFnZSgpICYmIGxheWVy
LT5hdHRhY2htZW50KCkgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRl
clN0eWxlOjpoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpIGNvbnN0CkBAIC0xMjc2LDEyICsx
Mjk4LDEyIEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkg
Y29uc3QKIAogY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogUmVuZGVyU3R5bGU6OmNvdW50ZXJE
aXJlY3RpdmVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvdW50ZXJEaXJlY3RpdmVzLmdldCgpOwogfQogCiBDb3VudGVyRGlyZWN0aXZlTWFwJiBS
ZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewotICAgIGF1dG8mIG1hcCA9
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvdW50ZXJEaXJlY3RpdmVzOworICAg
IGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVj
dGl2ZXM7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291
bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKQEAgLTEyOTgsNyArMTMyMCw3
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSk7CiAKLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nID0gcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkt
Pmh5cGhlbmF0aW9uU3RyaW5nOworICAgIGF1dG8mIGh5cGhlbmF0aW9uU3RyaW5nID0gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7CiAgICAgaWYgKCFoeXBoZW5hdGlvblN0
cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGh5cGhlbmF0aW9uU3RyaW5nOwogCkBAIC0x
MzUwLDYgKzEzNzIsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1w
aGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKKwogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Omlu
aXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gZW1wdHlMaXN0OwpAQCAtMTM2MCwzMCArMTM4Mywy
MyBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9u
ZURhc2hib2FyZFJlZ2lvbnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+PiBub25lTGlzdDsKICAgICBzdGF0aWMgYm9vbCBub25lTGlz
dEluaXRpYWxpemVkID0gZmFsc2U7Ci0KICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQpIHsK
LSAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24ubGFi
ZWwgPSBlbXB0eVN0cmluZygpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0
aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKLSAgICAgICAg
cmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0
LmxlZnQoKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJk
UmVnaW9uOjpOb25lOwotICAgICAgICBub25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKKyAg
ICAgICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKFN0eWxlRGFzaGJvYXJkUmVnaW9uIHsgZW1wdHlT
dHJpbmcoKSwgeyB9LCBTdHlsZURhc2hib2FyZFJlZ2lvbjo6Tm9uZSB9KTsKICAgICAgICAgbm9u
ZUxpc3RJbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKIH0K
KwogI2VuZGlmCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogewotICAg
IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
bmltYXRpb25zLmdldCgpOworICAgIGF1dG8qIGFuaW1hdGlvbkxpc3QgPSBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOwogICAgIGlmICghYW5pbWF0aW9uTGlzdCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHJpZCBvZiBlbXB0eSBhbmltYXRpb25zIGFuZCBh
bnl0aGluZyBiZXlvbmQgdGhlbQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9u
TGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGFuaW1h
dGlvbkxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9u
TGlzdC0+YW5pbWF0aW9uKGkpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYW5pbWF0aW9uTGlz
dC0+cmVzaXplKGkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDAxLDEyICsxNDE3LDEyIEBA
IHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogCiB2b2lkIFJlbmRlclN0eWxl
OjphZGp1c3RUcmFuc2l0aW9ucygpCiB7Ci0gICAgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbkxp
c3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsKKyAgICBhdXRv
KiB0cmFuc2l0aW9uTGlzdCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdl
dCgpOwogICAgIGlmICghdHJhbnNpdGlvbkxpc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IEdldCByaWQgb2YgZW1wdHkgdHJhbnNpdGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVtCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsK
KyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKHRyYW5zaXRpb25MaXN0LT5hbmltYXRpb24oaSku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0cmFuc2l0aW9uTGlzdC0+cmVzaXplKGkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDIxLDEwICsxNDM3LDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFkanVzdFRyYW5zaXRpb25zKCkKICAgICAvLyBSZXBlYXQgcGF0dGVybnMgaW50byBsYXllcnMg
dGhhdCBkb24ndCBoYXZlIHNvbWUgcHJvcGVydGllcyBzZXQuCiAgICAgdHJhbnNpdGlvbkxpc3Qt
PmZpbGxVbnNldFByb3BlcnRpZXMoKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8g
ZHVwbGljYXRlIHByb3BlcnRpZXMuIFRoaXMgaXMgYW4gTyhuXjIpIGFsZ29yaXRobQotICAgIC8v
IGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBiZSB2ZXJ5IHNob3J0LCBzbyBpdCBpcyBwcm9iYWJseSBv
aworICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIHByb3BlcnRpZXMuCisg
ICAgLy8gVGhpcyBpcyBhbiBPKG5eMikgYWxnb3JpdGhtIGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBi
ZSBzaG9ydCwgc28gaXQgaXMgcHJvYmFibHkgT0suCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9
IGkrMTsgaiA8IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7ICsraikgeworICAgICAgICBmb3IgKHNp
emVfdCBqID0gaSArIDE7IGogPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2opIHsKICAgICAg
ICAgICAgIGlmICh0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLnByb3BlcnR5KCkgPT0gdHJh
bnNpdGlvbkxpc3QtPmFuaW1hdGlvbihqKS5wcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gdG9zcyBpCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkxpc3QtPnJlbW92ZShpKTsKQEAg
LTE0MzYsNjIgKzE0NTIsMTA3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25z
KCkKIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMoKQogewot
ICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucykKLSAg
ICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FuaW1hdGlvbnM7CisgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmFuaW1hdGlvbnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICBy
ZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnM7CiB9CiAKIEFuaW1hdGlv
bkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucygpCiB7Ci0gICAgaWYgKCFyYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucykKLSAgICAgICAgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFuaW1hdGlvbkxpc3Q+KCk7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2l0aW9uczsKKyAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJh
bnNpdGlvbnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNp
dGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgcmV0dXJuICpt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIAogY29uc3QgQW5pbWF0aW9u
KiBSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHkpIGNvbnN0CiB7Ci0gICAgaWYgKHRyYW5zaXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9ucygpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uJiBwID0gdHJhbnNpdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwotICAgICAg
ICAgICAgaWYgKHAuYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBw
LnByb3BlcnR5KCkgPT0gcHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnA7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBhdXRvKiB0cmFuc2l0aW9ucyA9IHRoaXMtPnRy
YW5zaXRpb25zKCk7CisgICAgaWYgKCF0cmFuc2l0aW9ucykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0cmFuc2l0aW9ucy0+c2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8mIGFuaW1hdGlvbiA9IHRyYW5zaXRpb25zLT5h
bmltYXRpb24oaSk7CisgICAgICAgIGlmIChhbmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09IEFu
aW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBhbmltYXRpb24ucHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkK
KyAgICAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworY29uc3QgRm9udENhc2NhZGUmIFJlbmRlclN0eWxlOjpm
b250Q2FzY2FkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENh
c2NhZGU7CiB9CiAKLWNvbnN0IEZvbnRDYXNjYWRlJiBSZW5kZXJTdHlsZTo6Zm9udENhc2NhZGUo
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlOyB9Ci1jb25zdCBGb250TWV0
cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5mb250Q2FzY2FkZS5mb250TWV0cmljcygpOyB9Ci1jb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBSZW5kZXJTdHlsZTo6Zm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKTsgfQotZmxvYXQgUmVuZGVyU3R5bGU6
OnNwZWNpZmllZEZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuc3Bl
Y2lmaWVkU2l6ZSgpOyB9Ci1mbG9hdCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOyB9Ci1pbnQgUmVu
ZGVyU3R5bGU6OmZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250Q2FzY2Fk
ZS5waXhlbFNpemUoKTsgfQorY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250TWV0
cmljcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUu
Zm9udE1ldHJpY3MoKTsKK30KIAotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNp
bmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7IH0KLWZs
b2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCk7IH0KK2NvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIFJlbmRlclN0eWxlOjpmb250RGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpOworfQogCi1i
b29sIFJlbmRlclN0eWxlOjpzZXRGb250RGVzY3JpcHRpb24oY29uc3QgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYgdikKK2Zsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZpZWRGb250U2l6ZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkgIT0g
dikgewotICAgICAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRDYXNjYWRlID0gRm9udENhc2Nh
ZGUodiwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCksIGluaGVyaXRlZC0+
Zm9udENhc2NhZGUud29yZFNwYWNpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmll
ZFNpemUoKTsKIH0KIAorZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKK30KKwor
aW50IFJlbmRlclN0eWxlOjpmb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJp
dGVkRGF0YS0+Zm9udENhc2NhZGUucGl4ZWxTaXplKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVu
ZGVyU3R5bGU6OndvcmRTcGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+d29yZFNwYWNpbmc7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFj
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5s
ZXR0ZXJTcGFjaW5nKCk7Cit9CisKK2Jvb2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNjcmlwdGlv
bihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAo
bV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSA9PSBkZXNjcmlw
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGNhc2NhZGUgPSBtX2luaGVy
aXRlZERhdGEuYWNjZXNzKCkuZm9udENhc2NhZGU7CisgICAgY2FzY2FkZSA9IHsgZGVzY3JpcHRp
b24sIGNhc2NhZGUubGV0dGVyU3BhY2luZygpLCBjYXNjYWRlLndvcmRTcGFjaW5nKCkgfTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lmaWVk
TGluZUhlaWdodCgpIGNvbnN0Cit7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLWNvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQ7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHNwZWNp
ZmllZExpbmVIZWlnaHQsIHYpOyB9CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+c3BlY2lm
aWVkTGluZUhlaWdodDsKICNlbHNlCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZp
ZWRMaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsgfQor
ICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7CisjZW5kaWYKK30KKworI2lm
IEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNwZWNpZmll
ZExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQoreworICAgIFNFVF9WQVIobV9pbmhlcml0ZWRE
YXRhLCBzcGVjaWZpZWRMaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkpOworfQorCiAjZW5kaWYK
IAotTGVuZ3RoIFJlbmRlclN0eWxlOjpsaW5lSGVpZ2h0KCkgY29uc3QKK2NvbnN0IExlbmd0aCYg
UmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRl
ZERhdGEtPmxpbmVIZWlnaHQ7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQo
TGVuZ3RoJiYgaGVpZ2h0KQogewotICAgIHJldHVybiBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0Owor
ICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCBsaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkp
OwogfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVkTGlu
ZUhlaWdodCkgeyBTRVRfVkFSKGluaGVyaXRlZCwgbGluZV9oZWlnaHQsIHNwZWNpZmllZExpbmVI
ZWlnaHQpOyB9CiAKIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29uc3QK
IHsKQEAgLTE1MDcsNyArMTU2OCw3IEBAIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVp
Z2h0KCkgY29uc3QKICAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KGxoLnZhbHVlKCkpOwogfQogCi12
b2lkIFJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGggdmFsdWUpCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGgmJiB2YWx1ZSkKIHsKICAgICBmbG9hdCBmb250
V29yZFNwYWNpbmc7CiAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKQEAgLTE1MjgsMTEgKzE1
ODksMTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcoTGVuZ3RoIHZhbHVlKQog
ICAgICAgICBmb250V29yZFNwYWNpbmcgPSAwOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
aW5oZXJpdGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZS5zZXRXb3JkU3BhY2luZyhmb250V29yZFNw
YWNpbmcpOwotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT53b3JkU3BhY2luZyA9IFdU
Rk1vdmUodmFsdWUpOworICAgIG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2FkZS5z
ZXRXb3JkU3BhY2luZyhmb250V29yZFNwYWNpbmcpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEu
YWNjZXNzKCkud29yZFNwYWNpbmcgPSBXVEZNb3ZlKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5kZXJT
dHlsZTo6c2V0TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IGluaGVyaXRlZC5hY2Nlc3MoKS0+Zm9u
dENhc2NhZGUuc2V0TGV0dGVyU3BhY2luZyh2KTsgfQordm9pZCBSZW5kZXJTdHlsZTo6c2V0TGV0
dGVyU3BhY2luZyhmbG9hdCB2KSB7IG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2Fk
ZS5zZXRMZXR0ZXJTcGFjaW5nKHYpOyB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRTaXpl
KGZsb2F0IHNpemUpCiB7CkBAIC0xNTY2LDcgKzE2MjcsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZhcmlhdGlvblNldHRpbmdzIHNldHRpbmdzKQog
fQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQgJnRvcCwgTGF5b3V0VW5pdCAmcmlnaHQsIExheW91
dFVuaXQgJmJvdHRvbSwgTGF5b3V0VW5pdCAmbGVmdCkgY29uc3QKK3ZvaWQgUmVuZGVyU3R5bGU6
OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIHRv
cCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVm
dCkgY29uc3QKIHsKICAgICB0b3AgPSAwOwogICAgIHJpZ2h0ID0gMDsKQEAgLTE4MTAsNTMgKzE4
NzEsNTMgQEAgZmxvYXQgUmVuZGVyU3R5bGU6OmJvcmRlckVuZFdpZHRoKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6IGJv
cmRlclRvcFdpZHRoKCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpblN0YXJ0KExl
bmd0aCBtYXJnaW4pCit2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5TdGFydChMZW5ndGgmJiBt
YXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAg
aWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpbkxlZnQo
bWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKKyAgICAgICAg
ICAgIHNldE1hcmdpblJpZ2h0KFdURk1vdmUobWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblRv
cChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2luKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAg
ICAgICAgc2V0TWFyZ2luQm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgfQogfQogCi12b2lk
IFJlbmRlclN0eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldE1hcmdpbkVuZChMZW5ndGgmJiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
LSAgICAgICAgICAgIHNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJn
aW5SaWdodChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRN
YXJnaW5MZWZ0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5MZWZ0KFdURk1vdmUobWFy
Z2luKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkKLSAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAgc2V0
TWFyZ2luQm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNldE1hcmdpblRvcChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUo
bWFyZ2luKSk7CiAgICAgfQogfQogCiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0
RW1waGFzaXNNYXJrKCkgY29uc3QKIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrIG1hcmsgPSBzdGF0
aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJrPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lz
TWFyayk7CisgICAgYXV0byBtYXJrID0gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzTWFyaz4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayk7CiAgICAgaWYgKG1hcmsgIT0gVGV4
dEVtcGhhc2lzTWFya0F1dG8pCiAgICAgICAgIHJldHVybiBtYXJrOwotCiAgICAgaWYgKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrRG90
OwotCiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorCiBDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENv
bG9yKCkKIHsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7CiB9
CisKICNlbmRpZgogCiBMYXlvdXRCb3hFeHRlbnQgUmVuZGVyU3R5bGU6OmltYWdlT3V0c2V0cyhj
b25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpIGNvbnN0CkBAIC0xODg5LDMwICsxOTUwLDMwIEBA
IHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IFJlbmRl
clN0eWxlOjpmb250QW5kR2x5cGhPcmllCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlcklt
YWdlU291cmNlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKQogewotICAgIGlmIChzdXJyb3Vu
ZC0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2UoKSA9PSBpbWFnZS5nZXQoKSkKKyAgICBpZiAobV9zdXJy
b3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLmltYWdlKCkgPT0gaW1hZ2UuZ2V0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2Uo
V1RGTW92ZShpbWFnZSkpOworICAgIG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2lt
YWdlLnNldEltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vycm91
bmQtPmJvcmRlci5tX2ltYWdlLmltYWdlU2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmIChtX3N1
cnJvdW5kRGF0YS0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2VTbGljZXMoKSA9PSBzbGljZXMpCiAgICAg
ICAgIHJldHVybjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1h
Z2VTbGljZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9p
bWFnZS5zZXRJbWFnZVNsaWNlcyhXVEZNb3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRlclN0
eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCBzbGljZXMpCit2b2lkIFJlbmRlclN0
eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAo
c3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKKyAgICBp
ZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNl
cykKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFn
ZS5zZXRCb3JkZXJTbGljZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5i
b3JkZXIubV9pbWFnZS5zZXRCb3JkZXJTbGljZXMoV1RGTW92ZShzbGljZXMpKTsKIH0KIAotdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlT3V0c2V0KExlbmd0aEJveCYmIG91dHNldCkK
IHsKLSAgICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNldCkK
KyAgICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNl
dCkKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFn
ZS5zZXRPdXRzZXQob3V0c2V0KTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIu
bV9pbWFnZS5zZXRPdXRzZXQoV1RGTW92ZShvdXRzZXQpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1v
ZGUmIHBhZ2luYXRpb25Nb2RlKQpAQCAtMTk1OCw2ICsyMDE5LDcgQEAgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1v
ZGUmIHBhZ2kKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisKIFNjcm9sbFNuYXBU
eXBlIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQogewogICAgIHJldHVybiB7
IH07CkBAIC0xOTcwLDIyICsyMDMyLDIyIEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6
aW5pdGlhbFNjcm9sbFNuYXBBbGlnbigpCiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIFJl
bmRlclN0eWxlOjpzY3JvbGxTbmFwQXJlYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJlYTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhOwogfQogCiBjb25zdCBTdHlsZVNjcm9sbFNuYXBQ
b3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25zdAogewotICAgIHJldHVybiAq
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcFBvcnQ7CisgICAgcmV0dXJuICptX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydDsKIH0KIAogY29uc3QgU2Nyb2xsU25h
cFR5cGUmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT50eXBlOworICAgIHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+dHlwZTsKIH0KIAogY29u
c3QgTGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT5zY3JvbGxQYWRk
aW5nOworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+
c2Nyb2xsUGFkZGluZzsKIH0KIAogY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFk
ZGluZ1RvcCgpIGNvbnN0CkBAIC0yMDEwLDEyICsyMDcyLDEyIEBAIGNvbnN0IExlbmd0aCYgUmVu
ZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdSaWdodCgpIGNvbnN0CiAKIGNvbnN0IFNjcm9sbFNuYXBB
bGlnbiYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBbGlnbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7CisgICAg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7
CiB9CiAKIGNvbnN0IExlbmd0aEJveCYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW4oKSBj
b25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJl
YS0+c2Nyb2xsU25hcE1hcmdpbjsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
c2Nyb2xsU25hcEFyZWEtPnNjcm9sbFNuYXBNYXJnaW47CiB9CiAKIGNvbnN0IExlbmd0aCYgUmVu
ZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW5Ub3AoKSBjb25zdApAQCAtMjA0MCw3OSArMjEwMiw3
MiBAQCBjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwTWFyZ2luUmlnaHQoKSBj
b25zdAogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxT
bmFwVHlwZSYgdHlwZSkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9z
Y3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+dHlwZSA9IHR5cGU7CisgICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHR5cGUsIHR5cGUpOwogfQog
Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJiBsZW5n
dGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBv
cnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0VG9wKGxlbmd0aCk7CisgICAgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRp
bmcudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbFBhZGRpbmdCb3R0b20oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xs
UGFkZGluZy5zZXRCb3R0b20obGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy5ib3R0b20oKSwgV1RG
TW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0xl
ZnQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRk
aW5nTGVmdChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0TGVmdChs
ZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9s
bFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAot
dm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxl
bmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFw
UG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRSaWdodChsZW5ndGgpOworICAgIFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3JvbGxQ
YWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OnNldFNjcm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsK
LSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nl
c3MoKS0+YWxpZ25tZW50ID0gYWxpZ25tZW50OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBhbGlnbm1lbnQsIGFsaWdubWVudCk7CiB9
CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVuZ3Ro
JiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKExlbmd0
aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3Jv
bGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRUb3AobGVuZ3RoKTsKKyAg
ICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwg
c2Nyb2xsU25hcE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShjb25zdCBMZW5ndGgmIGxlbmd0aCkK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVu
Z3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBB
cmVhLmFjY2VzcygpLT5zY3JvbGxTbmFwTWFyZ2luLnNldEJvdHRvbShsZW5ndGgpOworICAgIFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3Jv
bGxTbmFwTWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRl
clN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5MZWZ0KExlbmd0aCYmIGxlbmd0aCkK
IHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5h
Y2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBN
YXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2Vzcygp
LT5zY3JvbGxTbmFwTWFyZ2luLnNldFJpZ2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4u
cmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgUmVuZGVyU3R5
bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdAogewogICAgIGlmICghaGFzRmlsdGVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlck9wZXJhdGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1fb3Bl
cmF0aW9uczsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkgIT0gMSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRp
b24gPSAqZmlsdGVyT3BlcmF0aW9ucy5hdCgwKTsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5
cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgZmlsdGVyT3BlcmF0aW9ucyA9IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlci0+b3BlcmF0aW9uczsKKyAgICByZXR1cm4gZmlsdGVy
T3BlcmF0aW9ucy5zaXplKCkgPT0gMSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkg
PT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNo
ZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKIHsKLSAgICBpZiAoIXJhcmVJbmhlcml0
ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzKCkpCisgICAgaWYg
KCFtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxl
cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gT3VyIGZpcnN0IHBhc3MgY2hlY2tz
IHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlcyBhbnkgcHJvcGVydGllcyB0
aGF0IGJlY2FtZQogICAgIC8vIGludmFsaWQgd2l0aCBlbXB0eSB2YWx1ZXMuCi0gICAgYXV0byYg
Y3VzdG9tUHJvcGVydGllcyA9IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2N1c3RvbVBy
b3BlcnRpZXMuYWNjZXNzKCktPnZhbHVlcygpOworICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMg
PSBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCku
dmFsdWVzKCk7CiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGludmFsaWRQcm9wZXJ0aWVzOwog
ICAgIGZvciAoYXV0byBlbnRyeSA6IGN1c3RvbVByb3BlcnRpZXMpIHsKICAgICAgICAgaWYgKCFl
bnRyeS52YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKQEAgLTIxNDIsMjUgKzIxOTcsMjUgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoKQogICAg
IGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6IHJlc29sdmVkVmFsdWVzKQogICAgICAgICBjdXN0
b21Qcm9wZXJ0aWVzLnNldChyZXNvbHZlZFZhbHVlLT5uYW1lKCksIHJlc29sdmVkVmFsdWUuY29w
eVJlZigpKTsKIAotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2N1c3RvbVByb3Bl
cnRpZXMuYWNjZXNzKCktPnNldENvbnRhaW5zVmFyaWFibGVzKGZhbHNlKTsKKyAgICBtX3JhcmVJ
bmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q29udGFp
bnNWYXJpYWJsZXMoZmFsc2UpOwogfQogCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRo
KCkgY29uc3QKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuc3R5bGUoKSA9PSBC
Tk9ORSkKKyAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5zdHlsZSgpID09IEJOT05F
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAob3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1heChtX2JhY2tncm91bmQtPm91dGxpbmUoKS53aWR0aCgpLCBSZW5k
ZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpKTsKLSAgICByZXR1cm4gbV9iYWNrZ3Jv
dW5kLT5vdXRsaW5lKCkud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1fYmFja2dy
b3VuZERhdGEtPm91dGxpbmUud2lkdGgoKSwgUmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5n
V2lkdGgoKSk7CisgICAgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUud2lkdGgoKTsK
IH0KIAogZmxvYXQgUmVuZGVyU3R5bGU6Om91dGxpbmVPZmZzZXQoKSBjb25zdAogewotICAgIGlm
IChtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgpID09IEJOT05FKQorICAgIGlmIChtX2Jh
Y2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmIChvdXRsaW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIChtX2JhY2tn
cm91bmQtPm91dGxpbmUoKS5vZmZzZXQoKSArIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmlu
Z09mZnNldChvdXRsaW5lV2lkdGgoKSkpOwotICAgIHJldHVybiBtX2JhY2tncm91bmQtPm91dGxp
bmUoKS5vZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5l
Lm9mZnNldCgpICsgUmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nT2Zmc2V0KG91dGxpbmVX
aWR0aCgpKSk7CisgICAgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUub2Zmc2V0KCk7
CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6OnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxi
YXJPbkxlZnQoKSBjb25zdApAQCAtMjE2OCw0ICsyMjIzLDE1IEBAIGJvb2wgUmVuZGVyU3R5bGU6
OnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdAogICAgIHJl
dHVybiAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCk7CiB9CiAKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldERhc2hib2FyZFJlZ2lvbihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVu
Z3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0
LCBib29sIGFwcGVuZCkKK3sKKyAgICBpZiAoIWFwcGVuZCkKKyAgICAgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5kYXNoYm9hcmRSZWdpb25zLmNsZWFyKCk7CisgICAgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5kYXNoYm9hcmRSZWdpb25zLmFwcGVuZCh7IGxhYmVs
LCB7IFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92
ZShsZWZ0KSB9LCB0eXBlIH0pOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBj
MjhhZjFhZTA0NjBmMmYzYzcyOGE4NjBlOWY5MDI5ZjY0YWMwMDZkLi5kNGU0NGQxNmIyZTJiY2Iw
MGJjYTcyZjQ2ZWM2OWM2ZWYwOTliNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
MCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdy
YWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTgy
LDE5ICs4MiwyMCBAQAogI2luY2x1ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVh
bChjb25zdCBUJiB0LCBjb25zdCBVJiB1KSB7IHJldHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0
IFQmPih1KTsgfQotCi0jZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgXAot
ICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZSwgdmFsdWUpKSBcCi0gICAgICAg
IGdyb3VwLmFjY2VzcygpLT52YXJpYWJsZSA9IHZhbHVlCisjZGVmaW5lIFNFVF9WQVIoZ3JvdXAs
IHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCisgICAgICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3Vw
LT52YXJpYWJsZSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52YXJpYWJs
ZSA9IHZhbHVlOyBcCisgICAgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBTRVRfTkVTVEVEX1ZBUihn
cm91cCwgcGFyZW50VmFyaWFibGUsIHZhcmlhYmxlLCB2YWx1ZSkgXAotICAgIGlmICghY29tcGFy
ZUVxdWFsKGdyb3VwLT5wYXJlbnRWYXJpYWJsZS0+dmFyaWFibGUsIHZhbHVlKSkgXAotICAgICAg
ICBncm91cC5hY2Nlc3MoKS0+cGFyZW50VmFyaWFibGUuYWNjZXNzKCktPnZhcmlhYmxlID0gdmFs
dWUKKyNkZWZpbmUgU0VUX05FU1RFRF9WQVIoZ3JvdXAsIHBhcmVudFZhcmlhYmxlLCB2YXJpYWJs
ZSwgdmFsdWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+cGFyZW50
VmFyaWFibGUtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKKyAgICAgICAgICAgIGdyb3VwLmFjY2Vzcygp
LnBhcmVudFZhcmlhYmxlLmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKKyAgICB9IHdoaWxl
ICgwKQogCi0jZGVmaW5lIFNFVF9CT1JERVJWQUxVRV9DT0xPUihncm91cCwgdmFyaWFibGUsIHZh
bHVlKSBcCi0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLmNvbG9yKCksIHZh
bHVlKSkgXAotICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFyaWFibGUuc2V0Q29sb3IodmFsdWUp
CisjZGVmaW5lIFNFVF9CT1JERVJWQUxVRV9DT0xPUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBk
byB7IFwKKyAgICAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLmNvbG9yKCks
IHZhbHVlKSkgXAorICAgICAgICAgICAgZ3JvdXAuYWNjZXNzKCkudmFyaWFibGUuc2V0Q29sb3Io
dmFsdWUpOyBcCisgICAgfSB3aGlsZSAoMCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MTEsMzg2ICsxMTIsMzUgQEAgY2xhc3MgU2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBj
bGFzcyBTdHlsZUluaGVyaXRlZERhdGE7CiBjbGFzcyBTdHlsZVJlc29sdmVyOworY2xhc3MgU3R5
bGVTY3JvbGxTbmFwQXJlYTsKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7CiBjbGFzcyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1jbGFzcyBT
dHlsZVNjcm9sbFNuYXBQb3J0OwotY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKLXN0cnVjdCBT
Y3JvbGxTbmFwVHlwZTsKIHN0cnVjdCBTY3JvbGxTbmFwQWxpZ247Ci0jZW5kaWYKK3N0cnVjdCBT
Y3JvbGxTbmFwVHlwZTsKIAotdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgND4gUHNldWRvU3R5bGVDYWNoZTsKK3VzaW5nIFBzZXVkb1N0eWxlQ2FjaGUgPSBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgND47CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25zdCBUJiB0LCBjb25z
dCBVJiB1KSB7IHJldHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0IFQmPih1KTsgfQogCiBjbGFz
cyBSZW5kZXJTdHlsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgCi0gICAg
ZnJpZW5kIGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDsgLy8gVXNlZCBieSBD
U1MgYW5pbWF0aW9ucy4gV2UgY2FuJ3QgYWxsb3cgdGhlbSB0byBhbmltYXRlIGJhc2VkIG9mZiB2
aXNpdGVkIGNvbG9ycy4KLSAgICBmcmllbmQgY2xhc3MgQXBwbHlTdHlsZUNvbW1hbmQ7IC8vIEVk
aXRpbmcgaGFzIHRvIG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBpbmZvLgotICAgIGZyaWVuZCBjbGFz
cyBFZGl0aW5nU3R5bGU7IC8vIEVkaXRpbmcgaGFzIHRvIG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBp
bmZvLgotICAgIGZyaWVuZCBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOyAvLyBJZ25vcmVz
IHZpc2l0ZWQgc3R5bGVzLCBzbyBuZWVkcyB0byBiZSBhYmxlIHRvIHNlZSB1bnZpc2l0ZWQgaW5m
by4KLSAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I7IC8v
IFVzZWQgYnkgQ1NTIGFuaW1hdGlvbnMuIFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBi
YXNlZCBvZmYgdmlzaXRlZCBjb2xvcnMuCi0gICAgZnJpZW5kIGNsYXNzIFJlbmRlclNWR1Jlc291
cmNlOyAvLyBGSVhNRTogTmVlZHMgdG8gYWx0ZXIgdGhlIHZpc2l0ZWQgc3RhdGUgYnkgaGFuZC4g
U2hvdWxkIGNsZWFuIHRoZSBTVkcgY29kZSB1cCBhbmQgbW92ZSBpdCBpbnRvIFJlbmRlclN0eWxl
IHBlcmhhcHMuCi0gICAgZnJpZW5kIGNsYXNzIFJlbmRlclRyZWVBc1RleHQ7IC8vIEZJWE1FOiBP
bmx5IG5lZWRlZCBzbyB0aGUgcmVuZGVyIHRyZWUgY2FuIGtlZXAgbHlpbmcgYW5kIGR1bXAgdGhl
IHdyb25nIGNvbG9ycy4gIFJlYmFzZWxpbmluZyB3b3VsZCBhbGxvdyB0aGlzIHRvIGJlIHlhbmtl
ZC4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOyAvLyBTZXRzIG1lbWJl
cnMgZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlckN1c3RvbTsgLy8gU2V0
cyBtZW1iZXJzIGRpcmVjdGx5LgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJGdW5jdGlv
bnM7IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVSZXNv
bHZlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgotCi1wdWJsaWM6Ci0gICAgc3RydWN0IE5v
bkluaGVyaXRlZEZsYWdzIHsKLSAgICAgICAgTm9uSW5oZXJpdGVkRmxhZ3MoKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgc2hvdWxkIGFsbCBiZSB6ZXJvLgot
ICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsT3ZlcmZsb3dYKCkpOwotICAgICAgICAgICAgQVNT
RVJUKCFpbml0aWFsT3ZlcmZsb3dZKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsQ2xl
YXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxEaXNwbGF5KCkpOwotICAgICAgICAg
ICAgQVNTRVJUKCFpbml0aWFsVW5pY29kZUJpZGkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWlu
aXRpYWxQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbFZlcnRpY2FsQWxp
Z24oKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxGbG9hdGluZygpKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghaW5pdGlhbFRhYmxlTGF5b3V0KCkpOwotCi0gICAgICAgICAgICBtX2ZsYWdz
ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhl
cml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X2ZsYWdzID09IG90aGVyLm1fZmxhZ3M7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQotCi0gICAgICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29u
c3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBP
bmx5IGEgc3Vic2V0IGlzIGNvcGllZCBiZWNhdXNlIE5vbkluaGVyaXRlZEZsYWdzIGNvbnRhaW5z
IGEgYnVuY2ggb2Ygc3R1ZmYgb3RoZXIgdGhhbiByZWFsIHN0eWxlIGRhdGEuCi0gICAgICAgICAg
ICB1aW50NjRfdCBub25Jbmhlcml0ZWRNYXNrID0gb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WE9m
ZnNldAotICAgICAgICAgICAgICAgIHwgb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WU9mZnNldAot
ICAgICAgICAgICAgICAgIHwgY2xlYXJNYXNrIDw8IGNsZWFyT2Zmc2V0Ci0gICAgICAgICAgICAg
ICAgfCBkaXNwbGF5TWFzayA8PCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0Ci0gICAgICAgICAgICAg
ICAgfCBwb3NpdGlvbk1hc2sgPDwgcG9zaXRpb25PZmZzZXQKLSAgICAgICAgICAgICAgICB8IGRp
c3BsYXlNYXNrIDw8IG9yaWdpbmFsRGlzcGxheU9mZnNldAotICAgICAgICAgICAgICAgIHwgdW5p
Y29kZUJpZGlNYXNrIDw8IHVuaWNvZGVCaWRpT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCB2ZXJ0
aWNhbEFsaWduTWFzayA8PCB2ZXJ0aWNhbEFsaWduT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBm
bG9hdGluZ01hc2sgPDwgZmxvYXRpbmdPZmZzZXQKLSAgICAgICAgICAgICAgICB8IG9uZUJpdE1h
c2sgPDwgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldAotICAgICAgICAgICAgICAgIHwgdGFibGVM
YXlvdXRCaXRNYXNrIDw8IHRhYmxlTGF5b3V0T2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBoYXNW
aWV3cG9ydFVuaXRzQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0OwotCi0gICAgICAg
ICAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9uSW5oZXJpdGVkTWFzaykgfCAob3RoZXIubV9m
bGFncyAmIG5vbkluaGVyaXRlZE1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgRU92ZXJmbG93
IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFs
dWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE92
ZXJmbG93WChFT3ZlcmZsb3cgb3ZlcmZsb3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WCwgb3Zl
cmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpOyB9Ci0KLSAgICAgICAgRU92ZXJmbG93IG92ZXJm
bG93WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3Zl
cmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE92ZXJmbG93
WShFT3ZlcmZsb3cgb3ZlcmZsb3dZKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3ZlcmZsb3dN
YXNrLCBvdmVyZmxvd1lPZmZzZXQpOyB9Ci0KLSAgICAgICAgRUNsZWFyIGNsZWFyKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNsZWFyT2Zm
c2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBkYXRlVmFs
dWUoY2xlYXIsIGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpOyB9Ci0KLSAgICAgICAgRURpc3BsYXkg
ZWZmZWN0aXZlRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5Pihn
ZXRWYWx1ZShkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9Ci0gICAgICAg
IHZvaWQgc2V0RWZmZWN0aXZlRGlzcGxheShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KSB7IHVw
ZGF0ZVZhbHVlKGVmZmVjdGl2ZURpc3BsYXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5
T2Zmc2V0KTsgfQotCi0gICAgICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVQb3NpdGlvbj4oZ2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3NpdGlvbk9m
ZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0aW9uKSB7
IHVwZGF0ZVZhbHVlKHBvc2l0aW9uLCBwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KTsgfQot
Ci0gICAgICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zm
c2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgb3JpZ2lu
YWxEaXNwbGF5KSB7IHVwZGF0ZVZhbHVlKG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1hc2ssIG9y
aWdpbmFsRGlzcGxheU9mZnNldCk7IH0KLQotICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJp
ZGkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZhbHVlKHVu
aWNvZGVCaWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFVu
aWNvZGVCaWRpKEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1bmljb2Rl
QmlkaSwgdW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCk7IH0KLQotICAgICAgICBi
b29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc1ZpZXdw
b3J0VW5pdHNPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29s
IHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQpOyB9
Ci0KLSAgICAgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVWZXJ0aWNhbEFsaWduPihnZXRWYWx1ZSh2ZXJ0aWNhbEFsaWduTWFzaywg
dmVydGljYWxBbGlnbk9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihF
VmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKSB7IHVwZGF0ZVZhbHVlKHZlcnRpY2FsQWxpZ24s
IHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KTsgfQotCi0gICAgICAgIGJv
b2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBnZXRC
b29sZWFuKGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFu
KHZhbHVlLCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNG
bG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZsb2F0aW5nKCkgIT0gTm9GbG9hdDsgfQotICAgICAg
ICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxvYXQ+KGdl
dFZhbHVlKGZsb2F0aW5nTWFzaywgZmxvYXRpbmdPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNl
dEZsb2F0aW5nKEVGbG9hdCBmbG9hdGluZykgeyB1cGRhdGVWYWx1ZShmbG9hdGluZywgZmxvYXRp
bmdNYXNrLCBmbG9hdGluZ09mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0FueVB1YmxpY1Bz
ZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgZ2V0VmFs
dWUocHNldWRvQml0c01hc2ssIHBzZXVkb0JpdHNPZmZzZXQpOyB9Ci0gICAgICAgIGJvb2wgaGFz
UHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA8
IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICAgICAgICAgIHJldHVybiAob25lQml0TWFz
ayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pKSAmIG1fZmxhZ3M7Ci0gICAgICAg
IH0KLSAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgICAgICAg
ICBBU1NFUlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOwotICAgICAgICAgICAg
bV9mbGFncyB8PSBvbmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7
Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQg
cHNldWRvSWRTZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7
Ci0gICAgICAgICAgICB1aW50NjRfdCByYXdQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0LmRhdGEo
KTsKLSAgICAgICAgICAgIEFTU0VSVCgocmF3UHNldWRvSWRTZXQgJiBQVUJMSUNfUFNFVURPSURf
TUFTSykgPT0gcmF3UHNldWRvSWRTZXQpOwotICAgICAgICAgICAgc3RhdGljX2Fzc2VydChwc2V1
ZG9CaXRzT2Zmc2V0ID49IDEsICIocHNldWRvQml0c09mZnNldCAtIDEpIHNob3VsZCBiZSB2YWxp
ZC4iKTsKLSAgICAgICAgICAgIG1fZmxhZ3MgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdQ
c2V1ZG9JZFNldCkgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFVGFibGVMYXlvdXQ+KGdldFZhbHVlKHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRP
ZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFRhYmxlTGF5b3V0KEVUYWJsZUxheW91dCB0YWJs
ZUxheW91dCkgeyB1cGRhdGVWYWx1ZSh0YWJsZUxheW91dCwgdGFibGVMYXlvdXRCaXRNYXNrLCB0
YWJsZUxheW91dE9mZnNldCk7IH0KLQotICAgICAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4oZ2V0VmFsdWUoc3R5bGVUeXBlTWFzaywg
c3R5bGVUeXBlT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQg
c3R5bGVUeXBlKSB7IHVwZGF0ZVZhbHVlKHN0eWxlVHlwZSwgc3R5bGVUeXBlTWFzaywgc3R5bGVU
eXBlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBn
ZXRCb29sZWFuKGlzVW5pcXVlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldElzVW5pcXVlKCkg
eyB1cGRhdGVCb29sZWFuKHRydWUsIGlzVW5pcXVlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wg
ZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZW1wdHlTdGF0ZU9mZnNldCk7
ICB9Ci0gICAgICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xl
YW4odmFsdWUsIGVtcHR5U3RhdGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBmaXJzdENoaWxk
U3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7
ICB9Ci0gICAgICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRl
Qm9vbGVhbih2YWx1ZSwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wg
bGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGxhc3RDaGlsZFN0YXRl
T2Zmc2V0KTsgIH0KLSAgICAgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7
IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGxhc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAg
IGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3Rl
ZEJ5SG92ZXJPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyKGJvb2wg
dmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0KTsgfQot
Ci0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xl
YW4oYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5
QWN0aXZlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUFjdGl2
ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1
cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5RHJhZ09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRB
ZmZlY3RlZEJ5RHJhZyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVk
QnlEcmFnT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4g
Z2V0Qm9vbGVhbihpc0xpbmtPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wg
dmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaXNMaW5rT2Zmc2V0KTsgfQotCi0gICAgICAg
IGJvb2wgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xl
YW4oaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRI
YXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1
ZSwgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KLQotICAgICAgICBib29sIGhh
c0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFz
RXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUs
IGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCk7IH0KLQotICAgICAgICBzdGF0aWMg
cHRyZGlmZl90IGZsYWdzTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5v
bkluaGVyaXRlZEZsYWdzLCBtX2ZsYWdzKTsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxh
Z0lzYWZmZWN0ZWRCeUFjdGl2ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUFj
dGl2ZU9mZnNldDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzYWZmZWN0ZWRCeUhv
dmVyKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0KLSAg
ICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIHsg
cmV0dXJuIG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsgfQot
ICAgICAgICBzdGF0aWMgdWludDY0X3Qgc2V0Rmlyc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVy
biBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQotICAgICAgICBzdGF0
aWMgdWludDY0X3Qgc2V0TGFzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdMYXN0Q2hp
bGRTdGF0ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IHVwZGF0ZUJvb2xlYW4oYm9vbCBpc1NldCwgdWludDY0X3Qgb2Zmc2V0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoaXNTZXQpCi0gICAgICAgICAgICAgICAgbV9mbGFncyB8PSAob25lQml0
TWFzayA8PCBvZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZmxh
Z3MgJj0gfihvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IGdldEJvb2xlYW4odWludDY0X3Qgb2Zmc2V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9mbGFncyAmIChvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIHVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0
aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVCghKG5ld1ZhbHVlICYgfnBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKSk7Ci0gICAg
ICAgICAgICB1aW50NjRfdCBwb3NpdGlvbkRlcGVuZGVudE1hc2sgPSBwb3NpdGlvbkluZGVwZW5k
ZW50TWFzayA8PCBvZmZzZXQ7Ci0gICAgICAgICAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+cG9z
aXRpb25EZXBlbmRlbnRNYXNrKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4obmV3VmFsdWUpIDw8
IG9mZnNldCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBnZXRWYWx1ZSh1aW50NjRf
dCBwb3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChtX2ZsYWdzID4+
IG9mZnNldCkgJiBwb3NpdGlvbkluZGVwZW5kZW50TWFzayk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBp
c1VuaXF1ZU9mZnNldDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0ZpcnN0Q2hpbGRT
dGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Ci0g
ICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJldHVybiBvbmVC
aXRNYXNrIDw8IGxhc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Ci0KLSAgICAgICAgLy8gVG8gdHlwZSB0
aGUgYml0IG1hc2sgcHJvcGVybHkgb24gNjRiaXRzLgotICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3Qgb25lQml0TWFzayA9IDB4MTsKLQotICAgICAgICAvLyBCeXRlIDEuCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd0JpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IG92ZXJmbG93TWFzayA9IChvbmVCaXRNYXNrIDw8IG92ZXJmbG93Qml0
Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WE9mZnNl
dCA9IDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1lPZmZzZXQgPSBv
dmVyZmxvd1hPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2xlYXJCaXRDb3VudCA9IDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRf
dCBjbGVhck1hc2sgPSAob25lQml0TWFzayA8PCBjbGVhckJpdENvdW50KSAtIDE7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhck9mZnNldCA9IG92ZXJmbG93WU9mZnNldCArIG92
ZXJmbG93Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSAyLgotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgZGlzcGxheUJpdENvdW50ID0gNTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IGRpc3BsYXlNYXNrID0gKG9uZUJpdE1hc2sgPDwgZGlzcGxheUJpdENvdW50KSAtIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ID0g
Y2xlYXJPZmZzZXQgKyBjbGVhckJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgcG9zaXRpb25CaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBw
b3NpdGlvbk1hc2sgPSAob25lQml0TWFzayA8PCBwb3NpdGlvbkJpdENvdW50KSAtIDE7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IGVmZmVjdGl2ZURpc3Bs
YXlPZmZzZXQgKyBkaXNwbGF5Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSAzLgotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ID0gcG9zaXRpb25P
ZmZzZXQgKyBwb3NpdGlvbkJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dW5pY29kZUJpZGlCaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB1
bmljb2RlQmlkaU1hc2sgPSAob25lQml0TWFzayA8PCB1bmljb2RlQmlkaUJpdENvdW50KSAtIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaU9mZnNldCA9IG9yaWdp
bmFsRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDQu
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ0JpdENvdW50ID0gMjsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsb2F0aW5nTWFzayA9IChvbmVCaXRNYXNrIDw8
IGZsb2F0aW5nQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZs
b2F0aW5nT2Zmc2V0ID0gdW5pY29kZUJpZGlPZmZzZXQgKyB1bmljb2RlQmlkaUJpdENvdW50Owot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJp
dGNvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25PZmZzZXQgPSBmbG9hdGluZ09mZnNldCArIGZsb2F0aW5nQml0Q291bnQ7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVC
aXRjb3VudCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0ICsg
aGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNS4K
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3Vu
dCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNl
T2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0ICsgaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlQml0Y291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0
YWJsZUxheW91dEJpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRh
YmxlTGF5b3V0Qml0TWFzayA9IG9uZUJpdE1hc2s7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB0YWJsZUxheW91dE9mZnNldCA9IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgKyBleHBs
aWNpdEluaGVyaXRhbmNlQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2
ZXJ0aWNhbEFsaWduQml0Q291bnQgPSA0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmVydGljYWxBbGlnblBhZGRpbmcgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmVydGljYWxBbGlnbkFuZFBhZGRpbmdCaXRDb3VudCA9IHZlcnRpY2FsQWxpZ25CaXRDb3VudCAr
IHZlcnRpY2FsQWxpZ25QYWRkaW5nOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmVy
dGljYWxBbGlnbk1hc2sgPSAob25lQml0TWFzayA8PCB2ZXJ0aWNhbEFsaWduQml0Q291bnQpIC0g
MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSB0
YWJsZUxheW91dE9mZnNldCArIHRhYmxlTGF5b3V0Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0
ZSA2LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0JpdENvdW50ID0g
NzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBzZXVkb0JpdHNNYXNrID0gKG9uZUJp
dE1hc2sgPDwgcHNldWRvQml0c0JpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBwc2V1ZG9CaXRzT2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCArIHZlcnRpY2Fs
QWxpZ25CaXRDb3VudDsKLQotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3Bv
cnRVbml0c0JpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGhhc1Zp
ZXdwb3J0VW5pdHNCaXRNYXNrID0gKG9uZUJpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c0JpdENv
dW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRz
T2Zmc2V0ID0gcHNldWRvQml0c09mZnNldCArIHBzZXVkb0JpdHNCaXRDb3VudDsKLQotICAgICAg
ICAvLyBCeXRlIDcuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVCaXRD
b3VudCA9IDY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVQYWRkaW5n
ID0gMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUFuZFBhZGRpbmdC
aXRDb3VudCA9IHN0eWxlVHlwZUJpdENvdW50ICsgc3R5bGVUeXBlUGFkZGluZzsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQ2NF90IHN0eWxlVHlwZU1hc2sgPSAob25lQml0TWFzayA8PCBzdHls
ZVR5cGVBbmRQYWRkaW5nQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHN0eWxlVHlwZU9mZnNldCA9IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCArIGhhc1ZpZXdw
b3J0VW5pdHNPZmZzZXQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA4LgotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaXNVbmlxdWVPZmZzZXQgPSBzdHlsZVR5cGVPZmZzZXQgKyBzdHlsZVR5cGVB
bmRQYWRkaW5nQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlbXB0eVN0
YXRlT2Zmc2V0ID0gaXNVbmlxdWVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZW1wdHlTdGF0ZU9mZnNldCArIDE7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCA9IGZpcnN0Q2hp
bGRTdGF0ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3Rl
ZEJ5SG92ZXJPZmZzZXQgPSBsYXN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ID0gYWZmZWN0ZWRCeUhvdmVy
T2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlEcmFn
T2Zmc2V0ID0gYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpc0xpbmtPZmZzZXQgPSBhZmZlY3RlZEJ5RHJhZ09mZnNldCArIDE7Ci0KLSAg
ICAgICAgLy8gNjAgYml0cyBhcmUgYXNzaWduZWQuIFRoZXJlIGFyZSA0IGJpdHMgYXZhaWxhYmxl
IGN1cnJlbnRseSB1c2VkIGFzIHBhZGRpbmcgdG8gaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24uCi0g
ICAgICAgIC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28g
bmVlZCB0byB1cGRhdGUgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkuCi0gICAg
ICAgIHVpbnQ2NF90IG1fZmxhZ3M7Ci0gICAgfTsKLQotcHJvdGVjdGVkOgotCi0gICAgLy8gbm9u
LWluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZUJveERhdGE+IG1fYm94Owot
ICAgIERhdGFSZWY8U3R5bGVWaXN1YWxEYXRhPiB2aXN1YWw7Ci0gICAgRGF0YVJlZjxTdHlsZUJh
Y2tncm91bmREYXRhPiBtX2JhY2tncm91bmQ7Ci0gICAgRGF0YVJlZjxTdHlsZVN1cnJvdW5kRGF0
YT4gc3Vycm91bmQ7Ci0gICAgRGF0YVJlZjxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPiByYXJl
Tm9uSW5oZXJpdGVkRGF0YTsKLQotICAgIC8vIGluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0
YVJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiByYXJlSW5oZXJpdGVkRGF0YTsKLSAgICBEYXRh
UmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gaW5oZXJpdGVkOwotCi0gICAgLy8gbGlzdCBvZiBhc3Nv
Y2lhdGVkIHBzZXVkbyBzdHlsZXMKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHNldWRvU3R5bGVDYWNo
ZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7Ci0KLSAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBt
X3N2Z1N0eWxlOwotCi0vLyAhU1RBUlQgU1lOQyE6IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhl
IGNvcHkgY29uc3RydWN0b3IgaW4gUmVuZGVyU3R5bGUuY3BwIGFuZCBpbXBsaWNpdGx5SW5oZXJp
dGVkKCkgaW4gU3R5bGVSZXNvbHZlci5jcHAKLQotICAgIC8vIGluaGVyaXQKLSAgICBzdHJ1Y3Qg
SW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVk
RmxhZ3MmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKF9lbXB0
eV9jZWxscyA9PSBvdGhlci5fZW1wdHlfY2VsbHMpCi0gICAgICAgICAgICAgICAgJiYgKF9jYXB0
aW9uX3NpZGUgPT0gb3RoZXIuX2NhcHRpb25fc2lkZSkKLSAgICAgICAgICAgICAgICAmJiAoX2xp
c3Rfc3R5bGVfdHlwZSA9PSBvdGhlci5fbGlzdF9zdHlsZV90eXBlKQotICAgICAgICAgICAgICAg
ICYmIChfbGlzdF9zdHlsZV9wb3NpdGlvbiA9PSBvdGhlci5fbGlzdF9zdHlsZV9wb3NpdGlvbikK
LSAgICAgICAgICAgICAgICAmJiAoX3Zpc2liaWxpdHkgPT0gb3RoZXIuX3Zpc2liaWxpdHkpCi0g
ICAgICAgICAgICAgICAgJiYgKF90ZXh0X2FsaWduID09IG90aGVyLl90ZXh0X2FsaWduKQotICAg
ICAgICAgICAgICAgICYmIChfdGV4dF90cmFuc2Zvcm0gPT0gb3RoZXIuX3RleHRfdHJhbnNmb3Jt
KQotICAgICAgICAgICAgICAgICYmIChfdGV4dF9kZWNvcmF0aW9ucyA9PSBvdGhlci5fdGV4dF9k
ZWNvcmF0aW9ucykKLSAgICAgICAgICAgICAgICAmJiAoX2N1cnNvcl9zdHlsZSA9PSBvdGhlci5f
Y3Vyc29yX3N0eWxlKQotI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICAgICAgICAg
ICAgICAmJiAobV9jdXJzb3JWaXNpYmlsaXR5ID09IG90aGVyLm1fY3Vyc29yVmlzaWJpbGl0eSkK
LSNlbmRpZgotICAgICAgICAgICAgICAgICYmIChfZGlyZWN0aW9uID09IG90aGVyLl9kaXJlY3Rp
b24pCi0gICAgICAgICAgICAgICAgJiYgKF93aGl0ZV9zcGFjZSA9PSBvdGhlci5fd2hpdGVfc3Bh
Y2UpCi0gICAgICAgICAgICAgICAgJiYgKF9ib3JkZXJfY29sbGFwc2UgPT0gb3RoZXIuX2JvcmRl
cl9jb2xsYXBzZSkKLSAgICAgICAgICAgICAgICAmJiAoX2JveF9kaXJlY3Rpb24gPT0gb3RoZXIu
X2JveF9kaXJlY3Rpb24pCi0gICAgICAgICAgICAgICAgJiYgKG1fcnRsT3JkZXJpbmcgPT0gb3Ro
ZXIubV9ydGxPcmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAobV9wcmludENvbG9yQWRqdXN0
ID09IG90aGVyLm1fcHJpbnRDb2xvckFkanVzdCkKLSAgICAgICAgICAgICAgICAmJiAoX3BvaW50
ZXJFdmVudHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVudHMpCi0gICAgICAgICAgICAgICAgJiYgKF9p
bnNpZGVMaW5rID09IG90aGVyLl9pbnNpZGVMaW5rKQotICAgICAgICAgICAgICAgICYmIChfaW5z
aWRlRGVmYXVsdEJ1dHRvbiA9PSBvdGhlci5faW5zaWRlRGVmYXVsdEJ1dHRvbikKLSAgICAgICAg
ICAgICAgICAmJiAobV93cml0aW5nTW9kZSA9PSBvdGhlci5tX3dyaXRpbmdNb2RlKTsKLSAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICAgICAgdW5zaWdu
ZWQgX2VtcHR5X2NlbGxzIDogMTsgLy8gRUVtcHR5Q2VsbAotICAgICAgICB1bnNpZ25lZCBfY2Fw
dGlvbl9zaWRlIDogMjsgLy8gRUNhcHRpb25TaWRlCi0gICAgICAgIHVuc2lnbmVkIF9saXN0X3N0
eWxlX3R5cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlwZQotICAgICAgICB1bnNpZ25lZCBfbGlzdF9z
dHlsZV9wb3NpdGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQb3NpdGlvbgotICAgICAgICB1bnNpZ25l
ZCBfdmlzaWJpbGl0eSA6IDI7IC8vIEVWaXNpYmlsaXR5Ci0gICAgICAgIHVuc2lnbmVkIF90ZXh0
X2FsaWduIDogNDsgLy8gRVRleHRBbGlnbgotICAgICAgICB1bnNpZ25lZCBfdGV4dF90cmFuc2Zv
cm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9kZWNvcmF0
aW9ucyA6IFRleHREZWNvcmF0aW9uQml0czsKLSAgICAgICAgdW5zaWduZWQgX2N1cnNvcl9zdHls
ZSA6IDY7IC8vIEVDdXJzb3IKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgICAg
IHVuc2lnbmVkIG1fY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1cnNvclZpc2liaWxpdHkKLSNl
bmRpZgotICAgICAgICB1bnNpZ25lZCBfZGlyZWN0aW9uIDogMTsgLy8gVGV4dERpcmVjdGlvbgot
ICAgICAgICB1bnNpZ25lZCBfd2hpdGVfc3BhY2UgOiAzOyAvLyBFV2hpdGVTcGFjZQotICAgICAg
ICAvLyAzMiBiaXRzCi0gICAgICAgIHVuc2lnbmVkIF9ib3JkZXJfY29sbGFwc2UgOiAxOyAvLyBF
Qm9yZGVyQ29sbGFwc2UKLSAgICAgICAgdW5zaWduZWQgX2JveF9kaXJlY3Rpb24gOiAxOyAvLyBF
Qm94RGlyZWN0aW9uIChDU1MzIGJveF9kaXJlY3Rpb24gcHJvcGVydHksIGZsZXhpYmxlIGJveCBs
YXlvdXQgbW9kdWxlKQotCi0gICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAotICAgICAgICB1
bnNpZ25lZCBtX3J0bE9yZGVyaW5nIDogMTsgLy8gT3JkZXIKLSAgICAgICAgdW5zaWduZWQgbV9w
cmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVzdEJpdHM7Ci0gICAgICAgIHVuc2lnbmVk
IF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKLSAgICAgICAgdW5zaWduZWQg
X2luc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawotICAgICAgICB1bnNpZ25lZCBfaW5zaWRl
RGVmYXVsdEJ1dHRvbiA6IDE7Ci0gICAgICAgIC8vIDQ0IGJpdHMKLQotICAgICAgICAvLyBDU1Mg
VGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAg
ICAgICB1bnNpZ25lZCBtX3dyaXRpbmdNb2RlIDogMjsgLy8gV3JpdGluZ01vZGUKLSAgICAgICAg
Ly8gNDYgYml0cwotICAgIH0gaW5oZXJpdGVkX2ZsYWdzOwotCi0vLyBkb24ndCBpbmhlcml0Ci0g
ICAgTm9uSW5oZXJpdGVkRmxhZ3Mgbm9uaW5oZXJpdGVkX2ZsYWdzOwotCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKLSAgICBib29sIG1fZGVsZXRp
b25IYXNCZWd1biB7IGZhbHNlIH07Ci0jZW5kaWYKLQotLy8gIUVORCBTWU5DIQogcHJpdmF0ZToK
KyAgICBlbnVtIENsb25lVGFnIHsgQ2xvbmUgfTsKICAgICBlbnVtIENyZWF0ZURlZmF1bHRTdHls
ZVRhZyB7IENyZWF0ZURlZmF1bHRTdHlsZSB9OwotICAgIFJlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRTdHlsZVRhZyk7Ci0KLSAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIGRlZmF1bHRTdHlsZSgpOwog
CiBwdWJsaWM6CiAgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OwogICAg
IFJlbmRlclN0eWxlJiBvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OworICAgIH5S
ZW5kZXJTdHlsZSgpOwogCi0gICAgLy8gVGhpcyBpcyBub3QgYSB0cnVlIGNvcHkgY29uc3RydWN0
b3IuIEl0IGRvZXNuJ3QgY29weSBwc2V1ZG8gc3R5bGUgY2FjaGVzIGZvciBleGFtcGxlLgotICAg
IGVudW0gQ2xvbmVUYWcgeyBDbG9uZSB9OworICAgIFJlbmRlclN0eWxlIHJlcGxhY2UoUmVuZGVy
U3R5bGUmJikgV0FSTl9VTlVTRURfUkVUVVJOOworCisgICAgZXhwbGljaXQgUmVuZGVyU3R5bGUo
Q3JlYXRlRGVmYXVsdFN0eWxlVGFnKTsKICAgICBSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYsIENsb25lVGFnKTsKIAotICAgIH5SZW5kZXJTdHlsZSgpOworICAgIHN0YXRpYyBSZW5kZXJT
dHlsZSYgZGVmYXVsdFN0eWxlKCk7CiAKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlKCk7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlUHRyKCk7CkBA
IC01MDUsNiArMTU1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGRlbGV0aW9uSGFzQmVndW4oKSBj
b25zdCB7IHJldHVybiBtX2RlbGV0aW9uSGFzQmVndW47IH0KICNlbmRpZgogCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KKworICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIGluaGVyaXRQ
YXJlbnQpOworICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUm
KTsKKwogICAgIENvbnRlbnRQb3NpdGlvbiByZXNvbHZlZEp1c3RpZnlDb250ZW50UG9zaXRpb24o
Y29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29u
c3Q7CiAgICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgcmVzb2x2ZWRKdXN0aWZ5Q29udGVudERp
c3RyaWJ1dGlvbihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJl
aGF2aW9yKSBjb25zdDsKICAgICBDb250ZW50UG9zaXRpb24gcmVzb2x2ZWRBbGlnbkNvbnRlbnRQ
b3NpdGlvbihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2
aW9yKSBjb25zdDsKQEAgLTUxNCwxMSArMTcwLDggQEAgcHVibGljOgogICAgIFN0eWxlU2VsZkFs
aWdubWVudERhdGEgcmVzb2x2ZWRKdXN0aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHVl
QmVoYXZpb3VyKSBjb25zdDsKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIHJlc29sdmVkSnVz
dGlmeVNlbGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBJdGVtUG9zaXRpb24gbm9y
bWFsVmFsdWVCZWhhdmlvdXIpIGNvbnN0OwogCi0gICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBS
ZW5kZXJTdHlsZSYgaW5oZXJpdFBhcmVudCk7Ci0gICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJv
bShjb25zdCBSZW5kZXJTdHlsZSopOwotCi0gICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnN0eWxlVHlwZSgpOyB9Ci0gICAgdm9pZCBzZXRT
dHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRTdHls
ZVR5cGUoc3R5bGVUeXBlKTsgfQorICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlKCk7IH0KKyAgICB2b2lkIHNldFN0eWxl
VHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRTdHlsZVR5
cGUoc3R5bGVUeXBlKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGdldENhY2hlZFBzZXVkb1N0eWxl
KFBzZXVkb0lkKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNldWRvU3R5bGUo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CkBAIC01MjYsOTYgKzE3OSw3OSBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCi0gICAgdm9pZCBz
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVm
UHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiB2YWx1ZSkgeyByYXJlSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT5zZXRDdXN0b21Qcm9wZXJ0eVZh
bHVlKG5hbWUsIHZhbHVlKTsgfQotICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBn
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+Z2V0Q3VzdG9tUHJv
cGVydHlWYWx1ZShuYW1lKTsgfQotICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0
b21Qcm9wZXJ0aWVzLT5oYXNDdXN0b21Qcm9wZXJ0eShuYW1lKTsgfQotICAgIGNvbnN0IEN1c3Rv
bVByb3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiByYXJl
SW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5tX3ZhbHVlczsgfQorICAgIHZvaWQg
c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJl
ZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYgdmFsdWUpIHsgbV9yYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFs
dWUobmFtZSwgdmFsdWUpOyB9CisgICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGdl
dEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5nZXRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUpOyB9CisgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3Rv
bVByb3BlcnRpZXMtPmhhc0N1c3RvbVByb3BlcnR5KG5hbWUpOyB9CisgICAgY29uc3QgQ3VzdG9t
UHJvcGVydHlWYWx1ZU1hcCYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPm1fdmFsdWVzOyB9CiAKLSAgICB2b2lk
IHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQot
ICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5oYXNWaWV3cG9ydFVuaXRzKCk7IH0KKyAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMo
Ym9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhh
c1ZpZXdwb3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KKyAgICBib29sIGhhc1ZpZXdwb3J0
VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5p
dHMoKTsgfQogCi0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBub25p
bmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KLSAgICBib29sIGFmZmVjdGVkQnlB
Y3RpdmUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2
ZSgpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVy
aXRlZF9mbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlIb3ZlcigpOyB9
CisgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0
ZWRGbGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkg
Y29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CiAK
LSAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFm
ZmVjdGVkQnlIb3Zlcih0cnVlKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgpIHsg
bm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KLSAgICB2b2lk
IHNldEFmZmVjdGVkQnlEcmFnKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURy
YWcodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVk
QnlBY3RpdmUoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZmZWN0ZWRCeUFjdGl2ZSh0cnVl
KTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0QWZmZWN0ZWRCeURyYWcodHJ1ZSk7IH0KIAogICAgIHZvaWQgc2V0Q29sdW1uU3R5bGVzRnJv
bVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmKTsKICAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0
IHsgcmV0dXJuICFzdXJyb3VuZC0+bWFyZ2luLmlzWmVybygpOyB9Ci0gICAgYm9vbCBoYXNCb3Jk
ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9Ci0gICAg
Ym9vbCBoYXNCb3JkZXJGaWxsKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNG
aWxsKCk7IH0KKyAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmlzRmxvYXRpbmcoKTsgfQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyBy
ZXR1cm4gIW1fc3Vycm91bmREYXRhLT5tYXJnaW4uaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc0Jv
cmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzQm9yZGVyKCk7
IH0KKyAgICBib29sIGhhc0JvcmRlckZpbGwoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQogICAgIGJvb2wgaGFzVmlzaWJsZUJvcmRlckRlY29yYXRp
b24oKSBjb25zdCB7IHJldHVybiBoYXNWaXNpYmxlQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmlsbCgp
OyB9Ci0gICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5oYXNWaXNpYmxlQm9yZGVyKCk7IH0KLSAgICBib29sIGhhc1BhZGRpbmcoKSBjb25z
dCB7IHJldHVybiAhc3Vycm91bmQtPnBhZGRpbmcuaXNaZXJvKCk7IH0KLSAgICBib29sIGhhc09m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+b2Zmc2V0LmlzWmVybygpOyB9CisgICAg
Ym9vbCBoYXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5oYXNWaXNpYmxlQm9yZGVyKCk7IH0KKyAgICBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7
IHJldHVybiAhbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuaXNaZXJvKCk7IH0KKyAgICBib29sIGhh
c09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmlzWmVybygp
OyB9CiAgICAgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdp
bkJlZm9yZSgpLmhhc1F1aXJrKCk7IH0KICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVpcmsoKSBj
b25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpLmhhc1F1aXJrKCk7IH0KIAotICAgIGJvb2wgaGFz
QmFja2dyb3VuZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5k
KCkuaGFzSW1hZ2UoKTsgfQotICAgIGJvb2wgaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5oYXNGaXhlZEltYWdlKCk7IH0K
LSAgICAKKyAgICBib29sIGhhc0JhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZERhdGEtPmJhY2tncm91bmQuaGFzSW1hZ2UoKTsgfQorICAgIGJvb2wgaGFzRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3Jv
dW5kLmhhc0ZpeGVkSW1hZ2UoKTsgfQorCiAgICAgYm9vbCBoYXNFbnRpcmVseUZpeGVkQmFja2dy
b3VuZCgpIGNvbnN0OwotICAgIAorCiAgICAgYm9vbCBoYXNBcHBlYXJhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gYXBwZWFyYW5jZSgpICE9IE5vQ29udHJvbFBhcnQ7IH0KIAotICAgIGJvb2wgaGFzQmFj
a2dyb3VuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBDb2xvciBjb2xvciA9IHZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGlmIChjb2xv
ci5pc1Zpc2libGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
aGFzQmFja2dyb3VuZEltYWdlKCk7Ci0gICAgfQorICAgIGJvb2wgaGFzQmFja2dyb3VuZCgpIGNv
bnN0OwogICAgIAogICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmluZVBp
ZWNlSW1hZ2UmKSBjb25zdDsKLSAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3Jk
ZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOwotICAgIH0KLSAgICBMYXlvdXRCb3hFeHRlbnQg
Ym9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbWFnZU91
dHNldHMoYm9yZGVySW1hZ2UoKSk7Ci0gICAgfQorICAgIGJvb2wgaGFzQm9yZGVySW1hZ2VPdXRz
ZXRzKCkgY29uc3QgeyByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJ
bWFnZSgpLm91dHNldCgpLmlzWmVybygpOyB9CisgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlcklt
YWdlT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgpKTsg
fQogCi0gICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGltYWdlT3V0c2V0cyhtYXNrQm94SW1hZ2UoKSk7Ci0gICAgfQor
ICAgIExheW91dEJveEV4dGVudCBtYXNrQm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4g
aW1hZ2VPdXRzZXRzKG1hc2tCb3hJbWFnZSgpKTsgfQogCiAgICAgYm9vbCBoYXNGaWx0ZXJPdXRz
ZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0cygp
OyB9CiAgICAgRmlsdGVyT3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFz
RmlsdGVyKCkgPyBmaWx0ZXIoKS5vdXRzZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KIAotICAg
IE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KGlu
aGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nKTsgfQotICAgIHZvaWQgc2V0UlRMT3JkZXJpbmco
T3JkZXIgbykgeyBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IG87IH0KKyAgICBPcmRl
ciBydGxPcmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2luaGVy
aXRlZEZsYWdzLnJ0bE9yZGVyaW5nKTsgfQorICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIg
b3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IG9yZGVyaW5nOyB9CiAK
ICAgICBib29sIGlzU3R5bGVBdmFpbGFibGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55UHVi
bGljUHNldWRvU3R5bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9J
ZCBwc2V1ZG8pIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNl
dWRvKTsKKyAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKKyAgICB2b2lk
IHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxl
cyhQc2V1ZG9JZFNldCk7CiAgICAgYm9vbCBoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0Owog
CiAgICAgLy8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNwbGF5
KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsg
fQotICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVy
aXRlZF9mbGFncy5vcmlnaW5hbERpc3BsYXkoKTsgfQorICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBj
b25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsgfQor
ICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCk7IH0KIAotICAgIGNvbnN0IExlbmd0aCYgbGVmdCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQucmlnaHQoKTsgfQot
ICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC50
b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPm9mZnNldC5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQubGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQucmlnaHQoKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
Pm9mZnNldC50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5ib3R0b20oKTsgfQogCiAgICAgLy8gQWNjZXNzb3Jz
IGZvciBwb3NpdGlvbmVkIG9iamVjdCBlZGdlcyB0aGF0IHRha2UgaW50byBhY2NvdW50IHdyaXRp
bmcgbW9kZS4KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm9mZnNldC5zdGFydCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5lbmQod3Jp
dGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQu
YWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5zdGFydCh3cml0aW5nTW9kZSgp
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm9mZnNldC5lbmQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5n
dGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmJl
Zm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUo
KSk7IH0KIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgcG9zaXRpb25lZCBlbGVtZW50IHJlcXVp
cmVzIG5vcm1hbCBmbG93IHgveSB0byBiZSBjb21wdXRlZAogICAgIC8vIHRvIGRldGVybWluZSBp
dHMgcG9zaXRpb24uCkBAIC02MjQsMTggKzI2MCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNT
dGF0aWNJbmxpbmVQb3NpdGlvbihib29sIGhvcml6b250YWwpIGNvbnN0IHsgcmV0dXJuIGhvcml6
b250YWwgPyBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgOiBoYXNBdXRvVG9wQW5kQm90dG9tKCk7IH0K
ICAgICBib29sIGhhc1N0YXRpY0Jsb2NrUG9zaXRpb24oYm9vbCBob3Jpem9udGFsKSBjb25zdCB7
IHJldHVybiBob3Jpem9udGFsID8gaGFzQXV0b1RvcEFuZEJvdHRvbSgpIDogaGFzQXV0b0xlZnRB
bmRSaWdodCgpOyB9CiAKLSAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKTsgfQorICAgIEVQb3NpdGlvbiBwb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRpb24oKTsgfQogICAgIGJv
b2wgaGFzT3V0T2ZGbG93UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBwb3NpdGlvbigpID09IEFi
c29sdXRlUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uOyB9CiAgICAgYm9v
bCBoYXNJbkZsb3dQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aW9uKCkgPT0gUmVsYXRp
dmVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IFN0aWNreVBvc2l0aW9uOyB9CiAgICAgYm9vbCBo
YXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBwb3NpdGlvbigp
ID09IEZpeGVkUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBTdGlja3lQb3NpdGlvbjsgfQotICAg
IEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5mbG9h
dGluZygpOyB9Ci0KLSAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9i
b3gtPndpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fYm94LT5oZWlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWluV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX2JveC0+bWluV2lkdGgoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWF4V2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX2JveC0+bWF4V2lkdGgoKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1pbkhlaWdodCgpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoJiBtYXhIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveC0+bWF4SGVpZ2h0KCk7
IH0KKyAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZs
YWdzLmZsb2F0aW5nKCk7IH0KKworICAgIGNvbnN0IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JveERhdGEtPndpZHRoKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+aGVpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1p
bldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5taW5XaWR0aCgpOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWF4V2lkdGgo
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hE
YXRhLT5taW5IZWlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWF4SGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3hEYXRhLT5tYXhIZWlnaHQoKTsgfQogICAgIAogICAgIGNvbnN0IExlbmd0
aCYgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6
IHdpZHRoKCk7IH0KQEAgLTY0NCw0MiArMjgwLDQyIEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5n
dGgmIGxvZ2ljYWxNaW5IZWlnaHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gbWluSGVpZ2h0KCkgOiBtaW5XaWR0aCgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBs
b2dpY2FsTWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IG1heEhlaWdodCgpIDogbWF4V2lkdGgoKTsgfQogCi0gICAgY29uc3QgQm9yZGVyRGF0YSYg
Ym9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlcjsgfQotICAgIGNvbnN0IEJv
cmRlclZhbHVlJiBib3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5s
ZWZ0KCk7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCk7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYg
Ym9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKTsgfQotICAg
IGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJCb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbSgpOyB9CisgICAgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlcjsgfQorICAgIGNvbnN0IEJvcmRlclZh
bHVlJiBib3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5s
ZWZ0KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCk7IH0KKyAgICBjb25zdCBCb3JkZXJW
YWx1ZSYgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50
b3AoKTsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJCb3R0b20oKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbSgpOyB9CiAKICAgICBjb25zdCBCb3Jk
ZXJWYWx1ZSYgYm9yZGVyQmVmb3JlKCkgY29uc3Q7CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJv
cmRlckFmdGVyKCkgY29uc3Q7CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclN0YXJ0KCkg
Y29uc3Q7CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckVuZCgpIGNvbnN0OwogCi0gICAg
Y29uc3QgTmluZVBpZWNlSW1hZ2UmIGJvcmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5pbWFnZSgpOyB9Ci0gICAgU3R5bGVJbWFnZSogYm9yZGVySW1hZ2VTb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuaW1hZ2UoKTsgfQotICAg
IGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VTbGljZXMoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmltYWdlKCkuaW1hZ2VTbGljZXMoKTsgfQotICAgIGNvbnN0IExlbmd0aEJv
eCYgYm9yZGVySW1hZ2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1h
Z2UoKS5ib3JkZXJTbGljZXMoKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VP
dXRzZXQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkub3V0c2V0KCk7
IH0KLQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRvcExlZnRSYWRpdXMoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aFNp
emUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci50b3BSaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJh
ZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KLSAgICBib29sIGhhc0JvcmRl
clJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVz
KCk7IH0KLQotICAgIGZsb2F0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9yZGVy
TGVmdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuc3R5bGUo
KTsgfQotICAgIGJvb2wgYm9yZGVyTGVmdElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBmbG9hdCBib3Jk
ZXJSaWdodFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJSaWdo
dFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyUmlnaHRTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3Jk
ZXJSaWdodElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJp
Z2h0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgZmxvYXQgYm9yZGVyVG9wV2lkdGgoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclRvcFdpZHRoKCk7IH0KLSAgICBFQm9y
ZGVyU3R5bGUgYm9yZGVyVG9wU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVy
LnRvcCgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJvcmRlclRvcElzVHJhbnNwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAg
IGZsb2F0IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5ib3JkZXJCb3R0b21XaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0
eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5zdHlsZSgpOyB9
Ci0gICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5ib3R0b20oKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBGbG9hdEJveEV4
dGVudCBib3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVy
V2lkdGgoKTsgfQorICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKTsgfQorICAgIFN0eWxlSW1h
Z2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5pbWFnZSgpLmltYWdlKCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdl
U2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmlt
YWdlU2xpY2VzKCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmltYWdlKCkuYm9yZGVyU2xpY2Vz
KCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlT3V0c2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLm91dHNldCgpOyB9CisKKyAgICBj
b25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPmJvcmRlci50b3BMZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBi
b3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIudG9wUmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRS
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbUxlZnQo
KTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9CisgICAg
Ym9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CisKKyAgICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9
CisgICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7IH0KKyAgICBib29sIGJvcmRlckxlZnRJ
c1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0
KCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgZmxvYXQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9Cisg
ICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUoKTsgfQorICAgIGJvb2wgYm9yZGVyUmlnaHRJ
c1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5yaWdo
dCgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9CisgICAg
RUJvcmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPmJvcmRlci50b3AoKS5zdHlsZSgpOyB9CisgICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3AoKS5pc1RyYW5z
cGFyZW50KCk7IH0KKyAgICBmbG9hdCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVyQm90dG9tV2lkdGgoKTsgfQorICAgIEVCb3Jk
ZXJTdHlsZSBib3JkZXJCb3R0b21TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQorICAgIGJvb2wgYm9yZGVyQm90dG9tSXNUcmFu
c3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tKCku
aXNUcmFuc3BhcmVudCgpOyB9CisgICAgRmxvYXRCb3hFeHRlbnQgYm9yZGVyV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRlcldpZHRoKCk7IH0KIAogICAg
IGZsb2F0IGJvcmRlckJlZm9yZVdpZHRoKCkgY29uc3Q7CiAgICAgZmxvYXQgYm9yZGVyQWZ0ZXJX
aWR0aCgpIGNvbnN0OwpAQCAtNjg5LDI4ICszMjUsMjggQEAgcHVibGljOgogICAgIGZsb2F0IG91
dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KDAsIG91dGxpbmVXaWR0
aCgpICsgb3V0bGluZU9mZnNldCgpKTsgfQogICAgIGZsb2F0IG91dGxpbmVXaWR0aCgpIGNvbnN0
OwogICAgIGJvb2wgaGFzT3V0bGluZSgpIGNvbnN0IHsgcmV0dXJuIG91dGxpbmVTdHlsZSgpID4g
QkhJRERFTiAmJiBvdXRsaW5lV2lkdGgoKSA+IDA7IH0KLSAgICBFQm9yZGVyU3R5bGUgb3V0bGlu
ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuc3R5bGUoKTsg
fQotICAgIE91dGxpbmVJc0F1dG8gb3V0bGluZVN0eWxlSXNBdXRvKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuaXNBdXRv
KCkpOyB9CisgICAgRUJvcmRlclN0eWxlIG91dGxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKTsgfQorICAgIE91dGxpbmVJc0F1dG8gb3V0
bGluZVN0eWxlSXNBdXRvKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0
bz4obV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5pc0F1dG8oKSk7IH0KICAgICBib29sIGhhc091
dGxpbmVJblZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzT3V0bGluZSgpICYmIG91
dGxpbmVTaXplKCkgPiAwOyB9CiAgICAgCi0gICAgRU92ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0
IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1goKTsgfQotICAgIEVPdmVyZmxv
dyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZ
KCk7IH0KKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5vdmVyZmxvd1goKTsgfQorICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25z
dCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSgpOyB9CiAKLSAgICBFVmlz
aWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxp
dHk+KGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSk7IH0KLSAgICBFVmVydGljYWxBbGlnbiB2
ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2Fs
QWxpZ24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYgdmVydGljYWxBbGlnbkxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm94LT52ZXJ0aWNhbEFsaWduKCk7IH0KKyAgICBFVmlzaWJpbGl0eSB2aXNp
YmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+KG1faW5oZXJp
dGVkRmxhZ3MudmlzaWJpbGl0eSk7IH0KKyAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWdu
KCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKTsgfQogCi0gICAgY29uc3QgTGVuZ3RoJiBjbGlwTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5sZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5yaWdodCgpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwLnRv
cCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwQm90dG9tKCkgY29uc3QgeyByZXR1cm4gdmlz
dWFsLT5jbGlwLmJvdHRvbSgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoQm94JiBjbGlwKCkgY29uc3Qg
eyByZXR1cm4gdmlzdWFsLT5jbGlwOyB9Ci0gICAgYm9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1
cm4gdmlzdWFsLT5oYXNDbGlwOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgm
IGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5yaWdodCgpOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRh
LT5jbGlwLnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwLmJvdHRvbSgpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94
JiBjbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwOyB9CisgICAgYm9vbCBo
YXNDbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5oYXNDbGlwOyB9CiAKLSAgICBF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxh
Z3MudW5pY29kZUJpZGkoKTsgfQorICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MudW5pY29kZUJpZGkoKTsgfQogCi0gICAgRUNs
ZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCk7IH0K
LSAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MudGFibGVMYXlvdXQoKTsgfQorICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0
dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKTsgfQorICAgIEVUYWJsZUxheW91dCB0YWJs
ZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQo
KTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRl
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRy
aWNzKCkgY29uc3Q7CkBAIC03MTgsMjc3ICszNTQsMjMyIEBAIHB1YmxpYzoKICAgICBmbG9hdCBz
cGVjaWZpZWRGb250U2l6ZSgpIGNvbnN0OwogICAgIGZsb2F0IGNvbXB1dGVkRm9udFNpemUoKSBj
b25zdDsKICAgICBpbnQgZm9udFNpemUoKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8Rm9udE9yaWVu
dGF0aW9uLCBOb25DSktHbHlwaE9yaWVudGF0aW9uPiBmb250QW5kR2x5cGhPcmllbnRhdGlvbigp
OworCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICBGb250VmFyaWF0aW9uU2V0dGlu
Z3MgZm9udFZhcmlhdGlvblNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9u
KCkudmFyaWF0aW9uU2V0dGluZ3MoKTsgfQogI2VuZGlmCi0gICAgc3RkOjpwYWlyPEZvbnRPcmll
bnRhdGlvbiwgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4gZm9udEFuZEdseXBoT3JpZW50YXRpb24o
KTsKIAotICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJ
bmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KKyAgICBjb25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KKyAgICBFVGV4dEFs
aWduIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KG1f
aW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQorICAgIEVUZXh0VHJhbnNmb3JtIHRleHRUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFRyYW5zZm9ybT4obV9pbmhl
cml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQorICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRp
b24+KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zKTsgfQorICAgIFRleHREZWNvcmF0
aW9uIHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29y
YXRpb24+KG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24pOyB9CisgICAgVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dERlY29yYXRpb25TdHlsZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRp
b25TdHlsZSk7IH0KKyAgICBUZXh0RGVjb3JhdGlvblNraXAgdGV4dERlY29yYXRpb25Ta2lwKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25Ta2lwPihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXApOyB9CisgICAgVGV4dFVuZGVybGluZVBvc2l0
aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRVbmRlcmxpbmVQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZVBv
c2l0aW9uKTsgfQorCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICBUZXh0SW5kZW50TGluZSB0
ZXh0SW5kZW50TGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRMaW5l
PihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSk7IH0KLSAgICBUZXh0SW5kZW50
VHlwZSB0ZXh0SW5kZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRl
bnRUeXBlPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50VHlwZSk7IH0KKyAgICBUZXh0
SW5kZW50TGluZSB0ZXh0SW5kZW50TGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRJbmRlbnRMaW5lPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SW5kZW50TGluZSk7IH0KKyAg
ICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRJbmRlbnRUeXBlPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SW5kZW50VHlwZSk7
IH0KKyAgICBUZXh0QWxpZ25MYXN0IHRleHRBbGlnbkxhc3QoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0QWxpZ25MYXN0PihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0QWxpZ25MYXN0
KTsgfQorICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dEp1c3RpZnk+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRKdXN0aWZ5KTsgfQog
I2VuZGlmCi0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFVGV4dEFsaWduPihpbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24pOyB9Ci0gICAgRVRl
eHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVU
ZXh0VHJhbnNmb3JtPihpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtKTsgfQotICAgIFRl
eHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9u
cyk7IH0KLSAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPih2aXN1YWwtPnRleHREZWNvcmF0aW9uKTsgfQot
I2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgVGV4dEFsaWduTGFzdCB0ZXh0QWxpZ25MYXN0KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFsaWduTGFzdD4ocmFyZUluaGVyaXRlZERh
dGEtPm1fdGV4dEFsaWduTGFzdCk7IH0KLSAgICBUZXh0SnVzdGlmeSB0ZXh0SnVzdGlmeSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRKdXN0aWZ5PihyYXJlSW5oZXJpdGVkRGF0YS0+
bV90ZXh0SnVzdGlmeSk7IH0KLSNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICBUZXh0RGVjb3JhdGlv
blN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RGVjb3JhdGlvblN0eWxlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlv
blN0eWxlKTsgfQotICAgIFRleHREZWNvcmF0aW9uU2tpcCB0ZXh0RGVjb3JhdGlvblNraXAoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblNraXA+KHJhcmVJbmhlcml0
ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU2tpcCk7IH0KLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRp
b24gdGV4dFVuZGVybGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dFVuZGVybGluZVBvc2l0aW9uPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0VW5kZXJsaW5lUG9z
aXRpb24pOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHdvcmRTcGFjaW5nKCkgY29uc3Q7CiAgICAg
ZmxvYXQgbGV0dGVyU3BhY2luZygpIGNvbnN0OwogCi0gICAgZmxvYXQgem9vbSgpIGNvbnN0IHsg
cmV0dXJuIHZpc3VhbC0+bV96b29tOyB9Ci0gICAgZmxvYXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpvb207IH0KKyAgICBmbG9h
dCB6b29tKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT56b29tOyB9CisgICAgZmxvYXQg
ZWZmZWN0aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVj
dGl2ZVpvb207IH0KICAgICAKLSAgICBUZXh0Wm9vbSB0ZXh0Wm9vbSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRab29tPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbSk7IH0K
KyAgICBUZXh0Wm9vbSB0ZXh0Wm9vbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRa
b29tPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9vbSk7IH0KIAotICAgIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4o
aW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24pOyB9CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRl
ZEZsYWdzLmRpcmVjdGlvbik7IH0KICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KLSAgICBib29sIGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbigpOyB9CisgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNFeHBsaWNpdGx5U2V0
RGlyZWN0aW9uKCk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIExlbmd0aCBsaW5lSGVpZ2h0KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGVuZ3RoJiBsaW5lSGVpZ2h0KCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGNvbXB1dGVkTGluZUhlaWdodCgpIGNvbnN0OwogCi0gICAgRVdo
aXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNw
YWNlPihpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlKTsgfQotICAgIHN0YXRpYyBib29sIGF1
dG9XcmFwKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsKLSAgICAgICAgLy8gTm93cmFwIGFuZCBwcmUg
ZG9uJ3QgYXV0b21hdGljYWxseSB3cmFwLgotICAgICAgICByZXR1cm4gd3MgIT0gTk9XUkFQICYm
IHdzICE9IFBSRTsKLSAgICB9Ci0KLSAgICBib29sIGF1dG9XcmFwKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhdXRvV3JhcCh3aGl0ZVNwYWNlKCkpOwotICAgIH0KKyAgICBFV2hpdGVT
cGFjZSB3aGl0ZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdoaXRlU3BhY2U+
KG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBhdXRvV3Jh
cChFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBhdXRvV3JhcCgpIGNvbnN0IHsgcmV0dXJuIGF1dG9X
cmFwKHdoaXRlU3BhY2UoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoRVdo
aXRlU3BhY2UpOworICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gcHJl
c2VydmVOZXdsaW5lKHdoaXRlU3BhY2UoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBjb2xsYXBzZVdo
aXRlU3BhY2UoRVdoaXRlU3BhY2UpOworICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNlKHdoaXRlU3BhY2UoKSk7IH0KKyAgICBib29s
IGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVDaGFyKSBjb25zdDsKKyAgICBib29sIGJyZWFrT25s
eUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIGJvb2wgYnJlYWtXb3JkcygpIGNvbnN0Owor
CisgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5yZXBlYXRY
KCkpOyB9CisgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5y
ZXBlYXRZKCkpOyB9CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgYmFja2dyb3VuZENvbXBvc2l0ZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihtX2JhY2tncm91
bmREYXRhLT5iYWNrZ3JvdW5kLmNvbXBvc2l0ZSgpKTsgfQorICAgIEVGaWxsQXR0YWNobWVudCBi
YWNrZ3JvdW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQXR0
YWNobWVudD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5hdHRhY2htZW50KCkpOyB9Cisg
ICAgRUZpbGxCb3ggYmFja2dyb3VuZENsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RmlsbEJveD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5jbGlwKCkpOyB9CisgICAgRUZp
bGxCb3ggYmFja2dyb3VuZE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxs
Qm94PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLm9yaWdpbigpKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgYmFja2dyb3VuZFhQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZERhdGEtPmJhY2tncm91bmQueFBvc2l0aW9uKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGJhY2tn
cm91bmRZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3Jv
dW5kLnlQb3NpdGlvbigpOyB9CisgICAgRUZpbGxTaXplVHlwZSBiYWNrZ3JvdW5kU2l6ZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnNpemVUeXBlKCk7
IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNrZ3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuc2l6ZUxlbmd0aCgpOyB9CisgICAg
RmlsbExheWVyJiBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
RGF0YS5hY2Nlc3MoKS5iYWNrZ3JvdW5kOyB9CisgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3Jv
dW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZDsg
fQorCisgICAgU3R5bGVJbWFnZSogbWFza0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFzay5pbWFnZSgpOyB9CisgICAgRUZpbGxSZXBlYXQgbWFza1JlcGVh
dFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFzay5yZXBlYXRYKCkpOyB9CisgICAgRUZpbGxSZXBlYXQgbWFza1JlcGVh
dFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFzay5yZXBlYXRZKCkpOyB9CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgbWFz
a0NvbXBvc2l0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9y
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLmNvbXBvc2l0ZSgpKTsgfQorICAgIEVGaWxs
Qm94IG1hc2tDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hc2suY2xpcCgpKTsgfQorICAgIEVGaWxsQm94IG1hc2tPcmln
aW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFzay5vcmlnaW4oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hc2tYUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnhQb3NpdGlv
bigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXNrWVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay55UG9zaXRpb24oKTsgfQorICAgIEVGaWxsU2l6
ZVR5cGUgbWFza1NpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFzay5zaXplVHlwZSgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgbWFza1NpemVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnNpemVMZW5n
dGgoKTsgfQorICAgIEZpbGxMYXllciYgZW5zdXJlTWFza0xheWVycygpIHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFzazsgfQorICAgIGNvbnN0IEZpbGxMYXllciYg
bWFza0xheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2s7
IH0KKyAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0JveEltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlOyB9CisgICAgU3R5bGVJbWFn
ZSogbWFza0JveEltYWdlU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bWFza0JveEltYWdlLmltYWdlKCk7IH0KKworICAgIEVCb3JkZXJDb2xsYXBzZSBib3Jk
ZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJDb2xsYXBzZT4o
bV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSk7IH0KKyAgICBmbG9hdCBob3Jpem9udGFs
Qm9yZGVyU3BhY2luZygpIGNvbnN0OworICAgIGZsb2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZygp
IGNvbnN0OworICAgIEVFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyk7IH0KKyAgICBF
Q2FwdGlvblNpZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2Fw
dGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUpOyB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd3MpCi0gICAgewotICAgICAgICAvLyBO
b3JtYWwgYW5kIG5vd3JhcCBkbyBub3QgcHJlc2VydmUgbmV3bGluZXMuCi0gICAgICAgIHJldHVy
biB3cyAhPSBOT1JNQUwgJiYgd3MgIT0gTk9XUkFQOwotICAgIH0KKyAgICBFTGlzdFN0eWxlVHlw
ZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5
cGU+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSk7IH0KKyAgICBTdHlsZUltYWdlKiBs
aXN0U3R5bGVJbWFnZSgpIGNvbnN0OworICAgIEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVQb3NpdGlvbj4o
bV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbik7IH0KKworICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi50b3Ao
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm1hcmdpbi5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2lu
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4ubGVmdCgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5tYXJnaW4ucmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5iZWZvcmUod3JpdGluZ01vZGUo
KSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm1hcmdpbi5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgbWFyZ2luU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2lu
LnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luRW5kKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5lbmQod3Jp
dGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFy
dFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+bWFyZ2luLnN0YXJ0KG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVy
U3R5bGUtPmRpcmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luRW5kVXNpbmco
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5tYXJnaW4uZW5kKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRp
cmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlVXNpbmcoY29uc3Qg
UmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5t
YXJnaW4uYmVmb3JlKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBtYXJnaW5BZnRlclVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmFmdGVyKG90aGVyU3R5bGUtPndyaXRp
bmdNb2RlKCkpOyB9CisKKyAgICBjb25zdCBMZW5ndGhCb3gmIHBhZGRpbmdCb3goKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZzsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFk
ZGluZ1RvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnRvcCgpOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPnBhZGRpbmcuYm90dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdM
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcubGVmdCgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+cGFkZGluZy5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQmVmb3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuYmVmb3JlKHdyaXRpbmdN
b2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVy
biBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNv
bnN0IExlbmd0aCYgcGFkZGluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PnBhZGRpbmcuc3RhcnQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBwYWRkaW5nRW5kKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRp
bmcuZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQorCisgICAgRUN1cnNvciBjdXJz
b3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ3Vyc29yPihtX2luaGVyaXRlZEZsYWdz
LmN1cnNvcik7IH0KIAotICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBwcmVzZXJ2ZU5ld2xpbmUod2hpdGVTcGFjZSgpKTsKLSAgICB9CisjaWYg
RU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgIEN1cnNvclZpc2liaWxpdHkgY3Vyc29yVmlz
aWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclZpc2liaWxpdHk+KG1f
aW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSk7IH0KKyNlbmRpZgogCi0gICAgc3RhdGlj
IGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsKLSAgICAgICAg
Ly8gUHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgotICAgICAgICBy
ZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOwotICAgIH0KKyAgICBDdXJzb3JMaXN0
KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0
YS5nZXQoKTsgfQogCi0gICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh3aGl0ZVNwYWNlKCkpOwotICAgIH0K
KyAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUluc2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAgICBib29sIGlz
TGluaygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rKCk7IH0KIAot
ICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgYykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICAgICAgY2FzZSAnICc6Ci0gICAgICAgICAgICBj
YXNlICdcdCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSgpOwot
ICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIHJldHVybiAhcHJlc2VydmVO
ZXdsaW5lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBi
b29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZURlZmF1bHRCdXR0b247IH0KIAotICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNw
YWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aGl0ZVNwYWNlKCkgPT0gUFJFX1dS
QVAgfHwgbGluZUJyZWFrKCkgPT0gTGluZUJyZWFrQWZ0ZXJXaGl0ZVNwYWNlOwotICAgIH0KKyAg
ICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT53aWRv
d3M7IH0KKyAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+b3JwaGFuczsgfQorICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPmhhc0F1dG9XaWRvd3M7IH0KKyAgICBib29sIGhhc0F1dG9P
cnBoYW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFzQXV0b09ycGhh
bnM7IH0KIAotICAgIGJvb2wgYnJlYWtXb3JkcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gd29yZEJyZWFrKCkgPT0gQnJlYWtXb3JkQnJlYWsgfHwgb3ZlcmZsb3dXcmFwKCkgPT0gQnJl
YWtPdmVyZmxvd1dyYXA7Ci0gICAgfQorICAgIC8vIENTUzMgR2V0dGVyIE1ldGhvZHMKKyAgICBC
cmVha0luc2lkZSBicmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFr
SW5zaWRlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0luc2lkZSk7IH0KKyAgICBCcmVh
a0JldHdlZW4gYnJlYWtCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0Jl
dHdlZW4+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlKTsgfQorICAgIEJyZWFr
QmV0d2VlbiBicmVha0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3
ZWVuPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0FmdGVyKTsgfQogCi0gICAgRUZpbGxS
ZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkucmVwZWF0WCgpKTsgfQotICAgIEVG
aWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnJlcGVhdFkoKSk7IH0KLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBiYWNrZ3JvdW5kQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgp
LmNvbXBvc2l0ZSgpKTsgfQotICAgIEVGaWxsQXR0YWNobWVudCBiYWNrZ3JvdW5kQXR0YWNobWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQXR0YWNobWVudD4obV9iYWNrZ3Jv
dW5kLT5iYWNrZ3JvdW5kKCkuYXR0YWNobWVudCgpKTsgfQotICAgIEVGaWxsQm94IGJhY2tncm91
bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3Vu
ZC0+YmFja2dyb3VuZCgpLmNsaXAoKSk7IH0KLSAgICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFj
a2dyb3VuZCgpLm9yaWdpbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFhQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnhQb3NpdGlv
bigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueVBvc2l0aW9uKCk7IH0KLSAgICBFRmls
bFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZC0+YmFja2dyb3VuZCgpLnNpemVUeXBlKCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNr
Z3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3Vu
ZCgpLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxMYXllciYgZW5zdXJlQmFja2dyb3VuZExheWVy
cygpIHsgcmV0dXJuIG1fYmFja2dyb3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kOyB9Ci0gICAg
Y29uc3QgRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihtX2Jh
Y2tncm91bmQtPmJhY2tncm91bmQoKSk7IH0KLQotICAgIFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaW1hZ2UoKTsgfQot
ICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sucmVwZWF0WCgpKTsgfQot
ICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sucmVwZWF0WSgpKTsgfQot
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1hc2tDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5j
b21wb3NpdGUoKSk7IH0KLSAgICBFRmlsbEJveCBtYXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVGaWxsQm94PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmNsaXAoKSk7
IH0KLSAgICBFRmlsbEJveCBtYXNrT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sub3JpZ2luKCkpOyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay54UG9zaXRpb24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFza1lQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sueVBv
c2l0aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBlIG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suc2l6ZVR5cGUoKTsgfQotICAgIGNvbnN0
IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay5zaXplTGVuZ3RoKCk7IH0KLSAgICBGaWxsTGF5ZXImIGVuc3VyZU1h
c2tMYXllcnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNr
OyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrKTsgfQotICAgIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9t
YXNrQm94SW1hZ2U7IH0KLSAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaW1hZ2UoKTsg
fQotIAotICAgIEVCb3JkZXJDb2xsYXBzZSBib3JkZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3JkZXJDb2xsYXBzZT4oaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29s
bGFwc2UpOyB9Ci0gICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25zdDsKLSAg
ICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdDsKLSAgICBFRW1wdHlDZWxsIGVt
cHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRW1wdHlDZWxsPihpbmhlcml0
ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzKTsgfQotICAgIEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lkZT4oaW5oZXJpdGVkX2ZsYWdz
Ll9jYXB0aW9uX3NpZGUpOyB9Ci0KLSAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KGluaGVyaXRlZF9mbGFn
cy5fbGlzdF9zdHlsZV90eXBlKTsgfQotICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHlsZUltYWdlKCkg
Y29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihpbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfcG9zaXRpb24pOyB9Ci0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4udG9wKCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYm90dG9t
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+bWFyZ2luLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luUmlnaHQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnJpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYmVmb3Jl
KHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5BZnRlcigpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAgICBj
b25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdp
bi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uZW5kKHdyaXRpbmdN
b2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luU3RhcnRVc2lu
Zyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
Pm1hcmdpbi5zdGFydChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJl
Y3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRl
clN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZChv
dGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhl
clN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJlZm9yZShvdGhlclN0eWxl
LT53cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXJVc2luZyhj
b25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQotCi0gICAgY29uc3QgTGVu
Z3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmc7IH0K
LSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
cGFkZGluZy50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0JvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJvdHRvbSgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmxlZnQoKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1JpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0JlZm9yZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBh
ZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLnN0YXJ0KHdyaXRp
bmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJl
Y3Rpb24oKSk7IH0KLQotICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9Ci0jaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIEN1cnNvclZpc2liaWxpdHkgY3Vyc29yVmlzaWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclZpc2liaWxpdHk+KGluaGVy
aXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkpOyB9Ci0jZW5kaWYKLQotICAgIEN1cnNvckxp
c3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0
YS5nZXQoKTsgfQotCi0gICAgRUluc2lkZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPihpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmspOyB9
Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNM
aW5rKCk7IH0KLQotICAgIGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbjsgfQotCi0gICAgc2hvcnQgd2lk
b3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPndpZG93czsgfQotICAgIHNo
b3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+b3JwaGFuczsg
fQotICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2hhc0F1dG9XaWRvd3M7IH0KLSAgICBib29sIGhhc0F1dG9PcnBoYW5zKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1faGFzQXV0b09ycGhhbnM7IH0KLQotICAgIC8v
IENTUzMgR2V0dGVyIE1ldGhvZHMKLSAgICBCcmVha0luc2lkZSBicmVha0luc2lkZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9icmVha0luc2lkZSk7IH0KLSAgICBCcmVha0JldHdlZW4gYnJlYWtCZWZvcmUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2JyZWFrQmVmb3JlKTsgfQotICAgIEJyZWFrQmV0d2VlbiBicmVha0FmdGVyKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9i
cmVha0FmdGVyKTsgfQotICAgIAotICAgIEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1
YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5naW5nUHVuY3R1YXRpb24+KHJh
cmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbik7IH0KKyAgICBIYW5naW5nUHVu
Y3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
SGFuZ2luZ1B1bmN0dWF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRp
b24pOyB9CiAKICAgICBmbG9hdCBvdXRsaW5lT2Zmc2V0KCkgY29uc3Q7Ci0gICAgY29uc3QgU2hh
ZG93RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cuZ2V0KCk7IH0KICAg
ICB2b2lkIGdldFRleHRTaGFkb3dFeHRlbnQoTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBy
aWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdCB7IGdldFNo
YWRvd0V4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7IH0KICAg
ICB2b2lkIGdldFRleHRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KExheW91dFVuaXQmIGxlZnQsIExh
eW91dFVuaXQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQodGV4dFNo
YWRvdygpLCBsZWZ0LCByaWdodCk7IH0KICAgICB2b2lkIGdldFRleHRTaGFkb3dWZXJ0aWNhbEV4
dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIGJvdHRvbSkgY29uc3QgeyBnZXRTaGFk
b3dWZXJ0aWNhbEV4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwgYm90dG9tKTsgfQogICAgIHZvaWQg
Z2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsTGVm
dCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0lubGluZURpcmVj
dGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpOyB9CiAg
ICAgdm9pZCBnZXRUZXh0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9j
a0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
OyB9CiAKLSAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZVdpZHRoOyB9Ci0gICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHk7IH0KLSAgICBDb250cm9s
UGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udHJvbFBhcnQ+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9Ci0gICAgQXNwZWN0UmF0aW9U
eXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFzcGVjdFJh
dGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9UeXBlKTsgfQorICAg
IGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VXaWR0aDsgfQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CisgICAgQ29udHJvbFBhcnQgYXBw
ZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlKTsgfQorICAgIEFzcGVjdFJhdGlvVHlwZSBhc3Bl
Y3RSYXRpb1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvVHlwZSk7IH0KICAgICBmbG9hdCBh
c3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIGFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgLyBhc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKCk7IH0KLSAgICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9EZW5v
bWluYXRvcjsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0b3I7IH0KLSAgICBF
Qm94QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveEFs
aWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5h
bGlnbik7IH0KLSAgICBFQm94RGlyZWN0aW9uIGJveERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3hEaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlv
bik7IH0KLSAgICBmbG9hdCBib3hGbGV4KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9Ci0gICAgdW5zaWduZWQgaW50
IGJveEZsZXhHcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rl
cHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleF9ncm91cDsgfQotICAgIEVCb3hMaW5lcyBib3hMaW5l
cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hMaW5lcz4ocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5saW5lcyk7IH0KLSAgICB1bnNpZ25lZCBp
bnQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmRpbmFsX2dyb3VwOyB9Ci0gICAgRUJveE9yaWVu
dCBib3hPcmllbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94T3JpZW50PihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPm9yaWVudCk7IH0KLSAg
ICBFQm94UGFjayBib3hQYWNrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveFBhY2s+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+cGFjayk7IH0K
LQotICAgIGludCBvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X29yZGVyOyB9Ci0gICAgZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4R3JvdzsgfQotICAgIGZsb2F0IGZsZXhT
aHJpbmsoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJv
eC0+bV9mbGV4U2hyaW5rOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBmbGV4QmFzaXMoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4QmFzaXM7
IH0KLSAgICBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBhbGlnbkNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQ7IH0KLSAg
ICBDb250ZW50UG9zaXRpb24gYWxpZ25Db250ZW50UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQucG9zaXRpb24oKTsgfQotICAgIENv
bnRlbnREaXN0cmlidXRpb25UeXBlIGFsaWduQ29udGVudERpc3RyaWJ1dGlvbigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudC5kaXN0cmlidXRpb24o
KTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduQ29udGVudE92ZXJmbG93QWxpZ25tZW50
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50Lm92
ZXJmbG93KCk7IH0KLSAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnbkl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtczsgfQot
ICAgIEl0ZW1Qb3NpdGlvbiBhbGlnbkl0ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxv
d0FsaWdubWVudCBhbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLm92ZXJmbG93KCk7IH0KLSAgICBjb25z
dCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnblNlbGYoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGY7IH0KLSAgICBJdGVtUG9zaXRpb24gYWxpZ25T
ZWxmUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGln
blNlbGYucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduU2VsZk92ZXJm
bG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxp
Z25TZWxmLm92ZXJmbG93KCk7IH0KLSAgICBFRmxleERpcmVjdGlvbiBmbGV4RGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhEaXJlY3Rpb24+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhEaXJlY3Rpb24pOyB9CisgICAgZmxvYXQgYXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmFzcGVjdFJhdGlvRGVub21pbmF0b3I7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlv
TnVtZXJhdG9yOyB9CisgICAgRUJveEFsaWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3hBbGlnbm1lbnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24pOyB9CisgICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94RGlyZWN0aW9uPihtX2luaGVyaXRl
ZEZsYWdzLmJveERpcmVjdGlvbik7IH0KKyAgICBmbG9hdCBib3hGbGV4KCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9
CisgICAgdW5zaWduZWQgYm94RmxleEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4R3JvdXA7IH0KKyAgICBFQm94
TGluZXMgYm94TGluZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94TGluZXM+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+bGluZXMpOyB9Cisg
ICAgdW5zaWduZWQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmRpbmFsR3JvdXA7IH0KKyAgICBF
Qm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmll
bnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JpZW50
KTsgfQorICAgIEVCb3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
Qm94UGFjaz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5w
YWNrKTsgfQorCisgICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3JkZXI7IH0KKyAgICBmbG9hdCBmbGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5tX2ZsZXhHcm93OyB9CisgICAgZmxv
YXQgZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZs
ZXhpYmxlQm94LT5tX2ZsZXhTaHJpbms7IH0KKyAgICBjb25zdCBMZW5ndGgmIGZsZXhCYXNpcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5tX2Zs
ZXhCYXNpczsgfQorICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGFsaWduQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduQ29udGVu
dDsgfQorICAgIENvbnRlbnRQb3NpdGlvbiBhbGlnbkNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduQ29udGVudC5wb3NpdGlvbigpOyB9
CisgICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgYWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25Db250ZW50LmRpc3Ry
aWJ1dGlvbigpOyB9CisgICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25Db250ZW50T3ZlcmZsb3dB
bGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkNv
bnRlbnQub3ZlcmZsb3coKTsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFs
aWduSXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0
ZW1zOyB9CisgICAgSXRlbVBvc2l0aW9uIGFsaWduSXRlbXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXMucG9zaXRpb24oKTsgfQorICAg
IE92ZXJmbG93QWxpZ25tZW50IGFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXMub3ZlcmZsb3coKTsgfQor
ICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWduU2VsZigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZjsgfQorICAgIEl0ZW1Qb3NpdGlv
biBhbGlnblNlbGZQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmFsaWduU2VsZi5wb3NpdGlvbigpOyB9CisgICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25T
ZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5hbGlnblNlbGYub3ZlcmZsb3coKTsgfQorICAgIEVGbGV4RGlyZWN0aW9uIGZsZXhEaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleERpcmVjdGlvbj4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPm1fZmxleERpcmVjdGlvbik7IH0KICAgICBi
b29sIGlzQ29sdW1uRmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZsZXhEaXJlY3Rpb24o
KSA9PSBGbG93Q29sdW1uIHx8IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1uUmV2ZXJzZTsg
fQogICAgIGJvb2wgaXNSZXZlcnNlRmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZsZXhE
aXJlY3Rpb24oKSA9PSBGbG93Um93UmV2ZXJzZSB8fCBmbGV4RGlyZWN0aW9uKCkgPT0gRmxvd0Nv
bHVtblJldmVyc2U7IH0KLSAgICBFRmxleFdyYXAgZmxleFdyYXAoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFRmxleFdyYXA+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94
LT5tX2ZsZXhXcmFwKTsgfQotICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGp1
c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeUNvbnRlbnQ7IH0KLSAgICBDb250ZW50UG9zaXRpb24ganVzdGlmeUNvbnRlbnRQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50
LnBvc2l0aW9uKCk7IH0KLSAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBqdXN0aWZ5Q29udGVu
dERpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1
c3RpZnlDb250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQganVz
dGlmeUNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50Lm92ZXJmbG93KCk7IH0KLSAgICBjb25zdCBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXM7IH0KLSAgICBJdGVtUG9zaXRpb24ganVzdGlm
eUl0ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9q
dXN0aWZ5SXRlbXMucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlJ
dGVtc092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fanVzdGlmeUl0ZW1zLm92ZXJmbG93KCk7IH0KLSAgICBJdGVtUG9zaXRpb25UeXBlIGp1
c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlJdGVtcy5wb3NpdGlvblR5cGUoKTsgfQotICAgIGNvbnN0IFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fanVzdGlmeVNlbGY7IH0KLSAgICBJdGVtUG9zaXRpb24ganVzdGlmeVNlbGZQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlT
ZWxmLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5U2VsZk92ZXJm
bG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeVNlbGYub3ZlcmZsb3coKTsgfQorICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmxl
eGlibGVCb3gtPm1fZmxleFdyYXApOyB9CisgICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50
RGF0YSYganVzdGlmeUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5qdXN0aWZ5Q29udGVudDsgfQorICAgIENvbnRlbnRQb3NpdGlvbiBqdXN0aWZ5Q29udGVu
dFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlm
eUNvbnRlbnQucG9zaXRpb24oKTsgfQorICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIGp1c3Rp
ZnlDb250ZW50RGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+anVzdGlmeUNvbnRlbnQuZGlzdHJpYnV0aW9uKCk7IH0KKyAgICBPdmVyZmxvd0FsaWdu
bWVudCBqdXN0aWZ5Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQub3ZlcmZsb3coKTsgfQorICAgIGNv
bnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlJdGVtcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVtczsgfQorICAgIEl0ZW1Qb3NpdGlv
biBqdXN0aWZ5SXRlbXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmp1c3RpZnlJdGVtcy5wb3NpdGlvbigpOyB9CisgICAgT3ZlcmZsb3dBbGlnbm1lbnQg
anVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5qdXN0aWZ5SXRlbXMub3ZlcmZsb3coKTsgfQorICAgIEl0ZW1Qb3NpdGlv
blR5cGUganVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+anVzdGlmeUl0ZW1zLnBvc2l0aW9uVHlwZSgpOyB9CisgICAgY29uc3Qg
U3R5bGVTZWxmQWxpZ25tZW50RGF0YSYganVzdGlmeVNlbGYoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2VsZjsgfQorICAgIEl0ZW1Qb3NpdGlvbiBqdXN0
aWZ5U2VsZlBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
anVzdGlmeVNlbGYucG9zaXRpb24oKTsgfQorICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlT
ZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5qdXN0aWZ5U2VsZi5vdmVyZmxvdygpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZENvbHVtbnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9
Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KLSAgICBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRDb2x1
bW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdFJv
d3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRB
dXRvUmVwZWF0Um93czsgfQotICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2Vy
dGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OyB9Ci0gICAgdW5zaWduZWQgZ3JpZEF1
dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBB
dXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKCkgY29uc3QgIHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9
Ci0gICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzVHlwZTsg
fQotICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29s
dW1uTGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGlu
ZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVk
R3JpZFJvd0xpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBO
YW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlk
Um93TGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBj
b25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhOyB9Ci0gICAgc2l6ZV90
IG5hbWVkR3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50OyB9Ci0gICAgc2l6ZV90IG5hbWVk
R3JpZEFyZWFDb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9Ci0gICAgR3JpZEF1dG9GbG93
IGdyaWRBdXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0Zsb3cpOyB9Ci0gICAgYm9v
bCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJl
Y3Rpb25Sb3cpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpIGNv
bnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxv
dyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9Ci0gICAgYm9vbCBpc0dyaWRB
dXRvRmxvd0FsZ29yaXRobVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1T
cGFyc2UpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkgY29uc3Qg
eyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYg
SW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlKTsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlk
VHJhY2tTaXplPiYgZ3JpZEF1dG9Db2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0NvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9Sb3dzOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBn
cmlkQ29sdW1uR2FwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9ncmlkQ29sdW1uR2FwOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkUm93R2FwKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93R2FwOyB9
Ci0KLQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW5T
dGFydDsgfQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5FbmQoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1u
RW5kOyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZFJvd1N0YXJ0
OyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3dFbmQ7IH0KLSNl
bmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwotCi0gICAgY29uc3QgU2hhZG93RGF0
YSogYm94U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94
U2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29s
dW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fZ3Jp
ZENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRSb3dzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9ncmlkUm93czsg
fQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9SZXBlYXRDb2x1bW5z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9ncmlkQXV0
b1JlcGVhdENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRB
dXRvUmVwZWF0Um93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPm1fZ3JpZEF1dG9SZXBlYXRSb3dzOyB9CisgICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBlYXRD
b2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5ncmlkLT5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICB1bnNp
Z25lZCBncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2lu
dDsgfQorICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSBjb25z
dCAgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9hdXRvUmVwZWF0Q29s
dW1uc1R5cGU7IH0KKyAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdFJvd3NUeXBlKCkg
Y29uc3QgIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fYXV0b1JlcGVh
dFJvd3NUeXBlOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVt
bkxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9u
YW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1l
ZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPm1fbmFtZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzOyB9
CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93
TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX29y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBh
dXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ncmlkLT5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQor
ICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX2F1dG9SZXBl
YXROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01h
cCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmdyaWQtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
czsgfQorICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX25hbWVkR3JpZEFyZWE7IH0K
KyAgICBzaXplX3QgbmFtZWRHcmlkQXJlYVJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7IH0KKyAgICBz
aXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7IH0KKyAgICBH
cmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R3Jp
ZEF1dG9GbG93PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX2dyaWRBdXRvRmxvdyk7
IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkgY29uc3QgeyByZXR1cm4g
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvblJvdyk7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9u
Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1f
Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbik7IH0KKyAgICBi
b29sIGlzR3JpZEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlKCkgY29uc3QgeyByZXR1cm4gKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxv
d0FsZ29yaXRobVNwYXJzZSk7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93QWxnb3JpdGhtRGVu
c2UoKSBjb25zdCB7IHJldHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9ncmlk
QXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UpOyB9CisgICAgY29uc3Qg
VmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b0NvbHVtbnMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX2dyaWRBdXRvQ29sdW1uczsgfQorICAgIGNv
bnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9Sb3dzKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bV9ncmlkQXV0b1Jvd3M7IH0KKyAgICBjb25z
dCBMZW5ndGgmIGdyaWRDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5tX2dyaWRDb2x1bW5HYXA7IH0KKyAgICBjb25zdCBMZW5ndGgmIGdyaWRS
b3dHYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5tX2dy
aWRSb3dHYXA7IH0KKworICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5TdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtLT5tX2dy
aWRDb2x1bW5TdGFydDsgfQorICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5F
bmQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+bV9n
cmlkQ29sdW1uRW5kOyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0tPm1fZ3Jp
ZFJvd1N0YXJ0OyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd0VuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtLT5tX2dyaWRSb3dF
bmQ7IH0KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorCisgICAgY29uc3QgU2hh
ZG93RGF0YSogYm94U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Ym94U2hhZG93LmdldCgpOyB9CiAgICAgdm9pZCBnZXRCb3hTaGFkb3dFeHRlbnQoTGF5b3V0
VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRV
bml0JiBsZWZ0KSBjb25zdCB7IGdldFNoYWRvd0V4dGVudChib3hTaGFkb3coKSwgdG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0KTsgfQogICAgIExheW91dEJveEV4dGVudCBnZXRCb3hTaGFkb3dJbnNl
dEV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGdldFNoYWRvd0luc2V0RXh0ZW50KGJveFNoYWRvdygp
KTsgfQogICAgIHZvaWQgZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChMYXlvdXRVbml0JiBs
ZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3QgeyBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50
KGJveFNoYWRvdygpLCBsZWZ0LCByaWdodCk7IH0KQEAgLTk5NywxMzYgKzU4OCwxMzMgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0Qm94U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5p
dCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QgeyBnZXRTaGFk
b3dCbG9ja0RpcmVjdGlvbkV4dGVudChib3hTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJv
dHRvbSk7IH0KIAogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCi0gICAgRUJv
eERlY29yYXRpb25CcmVhayBib3hEZWNvcmF0aW9uQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2Jv
eC0+Ym94RGVjb3JhdGlvbkJyZWFrKCk7IH0KKyAgICBFQm94RGVjb3JhdGlvbkJyZWFrIGJveERl
Y29yYXRpb25CcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+Ym94RGVjb3JhdGlvbkJy
ZWFrKCk7IH0KICNlbmRpZgotICAgIFN0eWxlUmVmbGVjdGlvbiogYm94UmVmbGVjdCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QuZ2V0KCk7IH0KLSAg
ICBFQm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5ib3hTaXppbmco
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFycXVlZUluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmluY3JlbWVudDsgfQotICAgIGludCBt
YXJxdWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJx
dWVlLT5zcGVlZDsgfQotICAgIGludCBtYXJxdWVlTG9vcENvdW50KCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+bG9vcHM7IH0KLSAgICBFTWFycXVlZUJl
aGF2aW9yIG1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJx
dWVlQmVoYXZpb3I+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmJlaGF2aW9yKTsg
fQotICAgIEVNYXJxdWVlRGlyZWN0aW9uIG1hcnF1ZWVEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTWFycXVlZURpcmVjdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
bWFycXVlZS0+ZGlyZWN0aW9uKTsgfQotICAgIEVVc2VyTW9kaWZ5IHVzZXJNb2RpZnkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlck1vZGlmeT4ocmFyZUluaGVyaXRlZERhdGEtPnVz
ZXJNb2RpZnkpOyB9Ci0gICAgRVVzZXJEcmFnIHVzZXJEcmFnKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RVVzZXJEcmFnPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcpOyB9Ci0g
ICAgRVVzZXJTZWxlY3QgdXNlclNlbGVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVV
c2VyU2VsZWN0PihyYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCk7IH0KLSAgICBUZXh0T3Zl
cmZsb3cgdGV4dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE92ZXJm
bG93PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KTsgfQotICAgIEVNYXJnaW5D
b2xsYXBzZSBtYXJnaW5CZWZvcmVDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVNYXJnaW5Db2xsYXBzZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxh
cHNlKTsgfQotICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5BZnRlckNvbGxhcHNlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSk7IH0KLSAgICBFV29yZEJyZWFrIHdvcmRCcmVhaygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXb3JkQnJlYWs+KHJhcmVJbmhlcml0ZWREYXRhLT53
b3JkQnJlYWspOyB9Ci0gICAgRU92ZXJmbG93V3JhcCBvdmVyZmxvd1dyYXAoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3dXcmFwPihyYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZs
b3dXcmFwKTsgfQotICAgIEVOQlNQTW9kZSBuYnNwTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVOQlNQTW9kZT4ocmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlKTsgfQotICAgIExp
bmVCcmVhayBsaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQnJlYWs+
KHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWspOyB9Ci0gICAgSHlwaGVucyBoeXBoZW5zKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SHlwaGVucz4ocmFyZUluaGVyaXRlZERhdGEtPmh5
cGhlbnMpOyB9Ci0gICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlOyB9Ci0gICAgc2hv
cnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcjsgfQotICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRM
aW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0
TGluZXM7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9CisKKyAg
ICBTdHlsZVJlZmxlY3Rpb24qIGJveFJlZmxlY3QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ib3hSZWZsZWN0LmdldCgpOyB9CisgICAgRUJveFNpemluZyBib3hTaXpp
bmcoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmJveFNpemluZygpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBtYXJxdWVlSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFycXVlZS0+aW5jcmVtZW50OyB9CisgICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPnNwZWVkOyB9Cisg
ICAgaW50IG1hcnF1ZWVMb29wQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJxdWVlLT5sb29wczsgfQorICAgIEVNYXJxdWVlQmVoYXZpb3IgbWFycXVlZUJl
aGF2aW9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVCZWhhdmlvcj4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+YmVoYXZpb3IpOyB9CisgICAgRU1hcnF1ZWVE
aXJlY3Rpb24gbWFycXVlZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVN
YXJxdWVlRGlyZWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5kaXJlY3Rp
b24pOyB9CisgICAgRVVzZXJNb2RpZnkgdXNlck1vZGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVVc2VyTW9kaWZ5PihtX3JhcmVJbmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5KTsgfQor
ICAgIEVVc2VyRHJhZyB1c2VyRHJhZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2Vy
RHJhZz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcpOyB9CisgICAgRVVzZXJTZWxl
Y3QgdXNlclNlbGVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyU2VsZWN0Piht
X3JhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0KTsgfQorICAgIFRleHRPdmVyZmxvdyB0ZXh0
T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3ZlcmZsb3c+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyk7IH0KKyAgICBFTWFyZ2luQ29sbGFwc2Ug
bWFyZ2luQmVmb3JlQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFyZ2lu
Q29sbGFwc2U+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlKTsg
fQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5BZnRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXJnaW5BZnRlckNvbGxhcHNlKTsgfQorICAgIEVXb3JkQnJlYWsgd29yZEJyZWFrKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdvcmRCcmVhaz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+d29y
ZEJyZWFrKTsgfQorICAgIEVPdmVyZmxvd1dyYXAgb3ZlcmZsb3dXcmFwKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93V3JhcD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZs
b3dXcmFwKTsgfQorICAgIEVOQlNQTW9kZSBuYnNwTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVOQlNQTW9kZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUpOyB9CisgICAg
TGluZUJyZWFrIGxpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVCcmVh
az4obV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrKTsgfQorICAgIEh5cGhlbnMgaHlwaGVu
cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEh5cGhlbnM+KG1fcmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbnMpOyB9CisgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmU7IH0K
KyAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7IH0KKyAgICBzaG9ydCBoeXBoZW5h
dGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBo
ZW5hdGlvbkxpbWl0TGluZXM7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlbmF0aW9u
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25T
dHJpbmc7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IGZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpOyB9Ci0gICAgRUJvcmRlckZpdCBib3JkZXJGaXQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyRml0PihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ib3JkZXJGaXQpOyB9Ci0gICAgRVJlc2l6ZSByZXNpemUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFUmVzaXplPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZXNpemUpOyB9
Ci0gICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29sdW1uQXhpcz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fYXhpcyk7IH0K
LSAgICBib29sIGhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdCB7Ci0gICAgICAgIENvbHVtbkF4
aXMgYXhpcyA9IGNvbHVtbkF4aXMoKTsKLSAgICAgICAgcmV0dXJuIGF4aXMgPT0gQXV0b0NvbHVt
bkF4aXMgfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhpcyA9PSBIb3Jpem9udGFs
Q29sdW1uQXhpcyk7Ci0gICAgfQotICAgIENvbHVtblByb2dyZXNzaW9uIGNvbHVtblByb2dyZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uUHJvZ3Jlc3Npb24+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3Byb2dyZXNzaW9uKTsgfQotICAgIGZsb2F0
IGNvbHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVs
dGlDb2wtPm1fd2lkdGg7IH0KLSAgICBib29sIGhhc0F1dG9Db2x1bW5XaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2F1dG9XaWR0aDsgfQot
ICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fY291bnQ7IH0KLSAgICBib29sIGhhc0F1dG9Db2x1
bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29s
LT5tX2F1dG9Db3VudDsgfQorICAgIEVCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym9yZGVy
Rml0KTsgfQorICAgIEVSZXNpemUgcmVzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQorICAgIENvbHVtbkF4
aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQorICAgIGJvb2wgaGFzSW5s
aW5lQ29sdW1uQXhpcygpIGNvbnN0OworICAgIENvbHVtblByb2dyZXNzaW9uIGNvbHVtblByb2dy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uUHJvZ3Jlc3Npb24+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5wcm9ncmVzc2lvbik7IH0KKyAgICBmbG9h
dCBjb2x1bW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11
bHRpQ29sLT53aWR0aDsgfQorICAgIGJvb2wgaGFzQXV0b0NvbHVtbldpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF1dG9XaWR0aDsgfQorICAg
IHVuc2lnbmVkIHNob3J0IGNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvdW50OyB9CisgICAgYm9vbCBoYXNBdXRvQ29sdW1uQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+YXV0
b0NvdW50OyB9CiAgICAgYm9vbCBzcGVjaWZpZXNDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gIWhh
c0F1dG9Db2x1bW5Db3VudCgpIHx8ICFoYXNBdXRvQ29sdW1uV2lkdGgoKSB8fCAhaGFzSW5saW5l
Q29sdW1uQXhpcygpOyB9Ci0gICAgQ29sdW1uRmlsbCBjb2x1bW5GaWxsKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29sdW1uRmlsbD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlD
b2wtPm1fZmlsbCk7IH0KLSAgICBmbG9hdCBjb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9nYXA7IH0KLSAgICBib29sIGhhc05vcm1h
bENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRp
Q29sLT5tX25vcm1hbEdhcDsgfQotICAgIEVCb3JkZXJTdHlsZSBjb2x1bW5SdWxlU3R5bGUoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9ydWxlLnN0
eWxlKCk7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5SdWxlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+cnVsZVdpZHRoKCk7IH0KLSAg
ICBib29sIGNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fcnVsZS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBD
b2x1bW5TcGFuIGNvbHVtblNwYW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5T
cGFuPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9jb2x1bW5TcGFuKTsgfQot
Ci0gICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnM7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feDsgfQotICAgIGNvbnN0IExlbmd0aCYgdHJh
bnNmb3JtT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Ry
YW5zZm9ybS0+bV95OyB9Ci0gICAgZmxvYXQgdHJhbnNmb3JtT3JpZ2luWigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV96OyB9Ci0gICAgYm9vbCBo
YXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJh
bnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQotCi0gICAgVGV4
dEVtcGhhc2lzRmlsbCB0ZXh0RW1waGFzaXNGaWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VGV4dEVtcGhhc2lzRmlsbD4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwp
OyB9CisgICAgQ29sdW1uRmlsbCBjb2x1bW5GaWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29sdW1uRmlsbD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmZpbGwpOyB9
CisgICAgZmxvYXQgY29sdW1uR2FwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bXVsdGlDb2wtPmdhcDsgfQorICAgIGJvb2wgaGFzTm9ybWFsQ29sdW1uR2FwKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPm5vcm1hbEdhcDsg
fQorICAgIEVCb3JkZXJTdHlsZSBjb2x1bW5SdWxlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cnVsZS5zdHlsZSgpOyB9CisgICAgdW5zaWdu
ZWQgc2hvcnQgY29sdW1uUnVsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGVXaWR0aCgpOyB9CisgICAgYm9vbCBjb2x1bW5SdWxlSXNU
cmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRp
Q29sLT5ydWxlLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIENvbHVtblNwYW4gY29sdW1uU3Bhbigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblNwYW4+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm11bHRpQ29sLT5jb2x1bW5TcGFuKTsgfQorCisgICAgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1P
cmlnaW5YKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3Jt
LT54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5ZKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT55OyB9CisgICAgZmxvYXQgdHJh
bnNmb3JtT3JpZ2luWigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybS0+ejsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCku
aXNFbXB0eSgpOyB9CisKKyAgICBUZXh0RW1waGFzaXNGaWxsIHRleHRFbXBoYXNpc0ZpbGwoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNGaWxsPihtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKTsgfQogICAgIFRleHRFbXBoYXNpc01hcmsgdGV4dEVt
cGhhc2lzTWFyaygpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dEVtcGhhc2lz
Q3VzdG9tTWFyaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNDdXN0b21NYXJrOyB9Ci0gICAgVGV4dEVtcGhhc2lzUG9zaXRpb24gdGV4dEVtcGhhc2lzUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNQb3NpdGlvbj4o
cmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uKTsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcms7IH0KKyAgICBUZXh0RW1waGFz
aXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNQb3NpdGlvbik7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRFbXBoYXNpc01hcmtT
dHJpbmcoKSBjb25zdDsKIAotICAgIFJ1YnlQb3NpdGlvbiBydWJ5UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxSdWJ5UG9zaXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1
YnlQb3NpdGlvbik7IH0KKyAgICBSdWJ5UG9zaXRpb24gcnVieVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UnVieVBvc2l0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5
UG9zaXRpb24pOyB9CiAKLSAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPihyYXJlSW5oZXJpdGVkRGF0
YS0+bV90ZXh0T3JpZW50YXRpb24pOyB9CisgICAgVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPcmllbnRhdGlvbj4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uKTsgfQogCi0gICAgT2JqZWN0Rml0IG9iamVj
dEZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9iamVjdEZpdD4ocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fb2JqZWN0Rml0KTsgfQotICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb247
IH0KKyAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
T2JqZWN0Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQpOyB9CisgICAgTGVu
Z3RoUG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5vYmplY3RQb3NpdGlvbjsgfQogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgYW55IHRy
YW5zZm9ybSByZWxhdGVkIHByb3BlcnR5IChjdXJyZW50bHkgdHJhbnNmb3JtLCB0cmFuc2Zvcm1T
dHlsZTNEIG9yIHBlcnNwZWN0aXZlKQotICAgIC8vIGluZGljYXRlcyB0aGF0IHdlIGFyZSB0cmFu
c2Zvcm1pbmcKKyAgICAvLyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgdHJhbnNmb3JtaW5nLgogICAg
IGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gaGFzVHJh
bnNmb3JtKCkgfHwgcHJlc2VydmVzM0QoKSB8fCBoYXNQZXJzcGVjdGl2ZSgpOyB9CiAKICAgICBl
bnVtIEFwcGx5VHJhbnNmb3JtT3JpZ2luIHsgSW5jbHVkZVRyYW5zZm9ybU9yaWdpbiwgRXhjbHVk
ZVRyYW5zZm9ybU9yaWdpbiB9OwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBBcHBseVRyYW5zZm9ybU9y
aWdpbiA9IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0OwogICAgIHZvaWQgc2V0UGFnZVNj
YWxlVHJhbnNmb3JtKGZsb2F0KTsKIAotICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaGFzSW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQorICAgIGJvb2wgaGFzTWFzaygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2suaGFzSW1hZ2UoKSB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQogCi0g
ICAgVGV4dENvbWJpbmUgdGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0Q29tYmluZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUpOyB9CisgICAg
VGV4dENvbWJpbmUgdGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
Q29tYmluZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dENvbWJpbmUpOyB9CiAgICAgYm9v
bCBoYXNUZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHRleHRDb21iaW5lKCkgIT0gVGV4dENv
bWJpbmVOb25lOyB9CiAKLSAgICB1bnNpZ25lZCB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZTsgfQorICAgIHVuc2lnbmVkIHRhYlNpemUoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50YWJTaXplOyB9CiAKICAgICAvLyBFbmQg
Q1NTMyBHZXR0ZXJzCiAKLSAgICBib29sIGhhc0Zsb3dJbnRvKCkgY29uc3QgeyByZXR1cm4gIXJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQuaXNOdWxsKCk7IH0KLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9mbG93VGhyZWFkOyB9Ci0gICAgYm9vbCBoYXNGbG93RnJvbSgpIGNvbnN0IHsgcmV0
dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQuaXNOdWxsKCk7IH0KLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZDsgfQotICAgIFJlZ2lvbkZyYWdtZW50IHJl
Z2lvbkZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaW9uRnJhZ21lbnQ+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50KTsgfQorICAgIGJvb2wgaGFz
Rmxvd0ludG8oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmxvd1Ro
cmVhZC5pc051bGwoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsb3dUaHJlYWQ7IH0KKyAgICBi
b29sIGhhc0Zsb3dGcm9tKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnJlZ2lvblRocmVhZC5pc051bGwoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9u
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uVGhy
ZWFkOyB9CisgICAgUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxSZWdpb25GcmFnbWVudD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVn
aW9uRnJhZ21lbnQpOyB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQ7IH0KLSAgICBMaW5lU25h
cCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVTbmFwPihyYXJlSW5o
ZXJpdGVkRGF0YS0+bV9saW5lU25hcCk7IH0KLSAgICBMaW5lQWxpZ24gbGluZUFsaWduKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUFsaWduPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lQWxpZ24pOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkOyB9CisgICAgTGluZVNuYXAgbGlu
ZVNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lU25hcD4obV9yYXJlSW5oZXJp
dGVkRGF0YS0+bGluZVNuYXApOyB9CisgICAgTGluZUFsaWduIGxpbmVBbGlnbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PExpbmVBbGlnbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUFs
aWduKTsgfQogCi0gICAgLy8gQXBwbGUtc3BlY2lmaWMgcHJvcGVydHkgZ2V0dGVyIG1ldGhvZHMK
LSAgICBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RVBvaW50ZXJFdmVudHM+KGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyk7IH0K
LSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsgfQotICAgIGNvbnN0IEFuaW1h
dGlvbkxpc3QqIHRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdHJhbnNpdGlvbnMuZ2V0KCk7IH0KKyAgICBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZl
bnRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvaW50ZXJFdmVudHM+KG1faW5oZXJp
dGVkRmxhZ3MucG9pbnRlckV2ZW50cyk7IH0KKyAgICBjb25zdCBBbmltYXRpb25MaXN0KiBhbmlt
YXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9u
cy5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHRyYW5zaXRpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMuZ2V0KCk7IH0KIAot
ICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9hbmltYXRpb25zLmdldCgpOyB9Ci0gICAgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlv
bnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsg
fQorICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOyB9CisgICAgQW5pbWF0aW9uTGlzdCogdHJhbnNp
dGlvbnMoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9ucy5nZXQo
KTsgfQogICAgIAotICAgIGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMo
KTsgfQorICAgIGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpOyB9
CiAKICAgICBBbmltYXRpb25MaXN0JiBlbnN1cmVBbmltYXRpb25zKCk7CiAgICAgQW5pbWF0aW9u
TGlzdCYgZW5zdXJlVHJhbnNpdGlvbnMoKTsKIAotICAgIGJvb2wgaGFzQW5pbWF0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMgJiYgcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy0+c2l6ZSgpID4gMDsgfQotICAgIGJvb2wgaGFz
VHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFu
c2l0aW9ucyAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy0+c2l6ZSgpID4g
MDsgfQorICAgIGJvb2wgaGFzQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFuaW1hdGlvbnMgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0
aW9ucy0+c2l6ZSgpID4gMDsgfQorICAgIGJvb2wgaGFzVHJhbnNpdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9ucyAmJiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50cmFuc2l0aW9ucy0+c2l6ZSgpID4gMDsgfQogCi0gICAgLy8gcmV0dXJuIHRo
ZSBmaXJzdCBmb3VuZCBBbmltYXRpb24gKGluY2x1ZGluZyAnYWxsJyB0cmFuc2l0aW9ucykKKyAg
ICAvLyBSZXR1cm4gdGhlIGZpcnN0IGZvdW5kIEFuaW1hdGlvbiAoaW5jbHVkaW5nICdhbGwnIHRy
YW5zaXRpb25zKS4KICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zaXRpb25Gb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIEVUcmFuc2Zvcm1TdHlsZTNEIHRyYW5zZm9ybVN0
eWxlM0QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVHJhbnNmb3JtU3R5bGUzRD4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtU3R5bGUzRCk7IH0KLSAgICBib29sIHByZXNl
cnZlczNEKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3Jt
U3R5bGUzRCA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRDsgfQorICAgIEVUcmFuc2Zvcm1T
dHlsZTNEIHRyYW5zZm9ybVN0eWxlM0QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVHJh
bnNmb3JtU3R5bGUzRD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtU3R5bGUzRCk7
IH0KKyAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dHJhbnNmb3JtU3R5bGUzRCA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRDsg
fQogCi0gICAgRUJhY2tmYWNlVmlzaWJpbGl0eSBiYWNrZmFjZVZpc2liaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2ZhY2VWaXNpYmlsaXR5PihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9iYWNrZmFjZVZpc2liaWxpdHkpOyB9Ci0gICAgZmxvYXQgcGVyc3BlY3RpdmUoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZTsgfQotICAg
IGJvb2wgaGFzUGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9wZXJzcGVjdGl2ZSA+IDA7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3Jp
Z2luWCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZl
T3JpZ2luWDsgfQotICAgIGNvbnN0IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5ZKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5ZOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoU2l6ZSYgcGFnZVNpemUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9wYWdlU2l6ZTsgfQotICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQYWdlU2l6ZVR5cGU+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3BhZ2VTaXplVHlwZSk7IH0KKyAgICBFQmFja2ZhY2VWaXNpYmlsaXR5IGJhY2tm
YWNlVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCYWNrZmFjZVZpc2li
aWxpdHk+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSk7IH0KKyAg
ICBmbG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnBlcnNwZWN0aXZlOyB9CisgICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlID4gMDsgfQorICAgIGNvbnN0
IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwZXJz
cGVjdGl2ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5w
ZXJzcGVjdGl2ZU9yaWdpblk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBwYWdlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBhZ2VTaXplOyB9CisgICAgUGFn
ZVNpemVUeXBlIHBhZ2VTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBhZ2VT
aXplVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGFnZVNpemVUeXBlKTsgfQogICAgIAot
ICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkgY29uc3QgeyByZXR1cm4gcmFyZUlu
aGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW47IH0KLSAgICBjb25zdCBMaW5lQ2xhbXBWYWx1
ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVD
bGFtcDsgfQotICAgIGNvbnN0IEludFNpemUmIGluaXRpYWxMZXR0ZXIoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0dGVyOyB9CisgICAgTGluZUJveENv
bnRhaW4gbGluZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT5saW5lQm94Q29udGFpbjsgfQorICAgIGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KKyAg
ICBjb25zdCBJbnRTaXplJiBpbml0aWFsTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+aW5pdGlhbExldHRlcjsgfQogICAgIGludCBpbml0aWFsTGV0dGVyRHJv
cCgpIGNvbnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS53aWR0aCgpOyB9CiAgICAgaW50IGlu
aXRpYWxMZXR0ZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpbml0aWFsTGV0dGVyKCkuaGVpZ2h0
KCk7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgVG91Y2hBY3Rpb24gdG91Y2hB
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaEFjdGlvbj4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdG91Y2hBY3Rpb24pOyB9CisgICAgVG91Y2hBY3Rpb24gdG91Y2hBY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaEFjdGlvbj4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dG91Y2hBY3Rpb24pOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCkBAIC0xMTUwLDY5ICs3MzgsNjIgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9CisgICAgQ29s
b3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50YXBIaWdobGlnaHRDb2xvcjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0gICAg
Ym9vbCB0b3VjaENhbGxvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnRvdWNoQ2FsbG91dEVuYWJsZWQ7IH0KKyAgICBib29sIHRvdWNoQ2FsbG91dEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50b3VjaENhbGxvdXRFbmFibGVk
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
Ci0gICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmc7IH0KKyAgICBib29sIHVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCi0gICAgVGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0KCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CisgICAg
VGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KICNlbmRpZgogCi0gICAgRVRleHRTZWN1
cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3Vy
aXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQorICAgIEVUZXh0U2VjdXJp
dHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRTZWN1cml0
eT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCi0gICAgV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXcml0aW5nTW9kZT4o
aW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUpOyB9CisgICAgV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXcml0aW5nTW9kZT4obV9pbmhlcml0
ZWRGbGFncy53cml0aW5nTW9kZSk7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGlu
Z01vZGUoKSk7IH0KICAgICBib29sIGlzVmVydGljYWxXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIFdlYkNvcmU6OmlzVmVydGljYWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAg
IGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6
OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29sIGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlw
cGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KIAotICAgIEltYWdlT3JpZW50YXRpb25F
bnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdAotICAgIHsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VPcmllbnRhdGlv
bkVudW0+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRpb24pOwotI2Vsc2UKLSAg
ICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwotI2VuZGlmCi0gICAgfQorICAg
IEltYWdlT3JpZW50YXRpb25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKIAotICAgIEVJ
bWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVJbWFnZVJlbmRlcmluZz4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcpOyB9
CisgICAgRUltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUltYWdlUmVuZGVyaW5nPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRl
cmluZyk7IH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICBJbWFnZVJl
c29sdXRpb25Tb3VyY2UgaW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU291cmNlPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFn
ZVJlc29sdXRpb25Tb3VyY2UpOyB9Ci0gICAgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbWFnZVJlc29s
dXRpb25TbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU25h
cD4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcCk7IH0KLSAgICBmbG9h
dCBpbWFnZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9p
bWFnZVJlc29sdXRpb247IH0KKyAgICBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW1hZ2VSZXNvbHV0
aW9uU291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU291
cmNlPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UpOyB9CisgICAg
SW1hZ2VSZXNvbHV0aW9uU25hcCBpbWFnZVJlc29sdXRpb25TbmFwKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU25hcD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1h
Z2VSZXNvbHV0aW9uU25hcCk7IH0KKyAgICBmbG9hdCBpbWFnZVJlc29sdXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb247IH0KICNlbmRpZgog
ICAgIAotICAgIEVTcGVhayBzcGVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVTcGVh
az4ocmFyZUluaGVyaXRlZERhdGEtPnNwZWFrKTsgfQorICAgIEVTcGVhayBzcGVhaygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVTcGVhaz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+c3BlYWsp
OyB9CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxlRmlsdGVyKCkgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmlsdGVyLmFjY2VzcygpLT5tX29wZXJhdGlv
bnM7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXIoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1fb3BlcmF0aW9uczsgfQotICAgIGJv
b2wgaGFzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zp
bHRlci0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KKyAgICBGaWx0ZXJP
cGVyYXRpb25zJiBtdXRhYmxlRmlsdGVyKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS5maWx0ZXIuYWNjZXNzKCkub3BlcmF0aW9uczsgfQorICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmZpbHRlci0+b3BlcmF0aW9uczsgfQorICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlci0+b3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNSZWZlcmVuY2VGaWx0ZXJPbmx5KCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIEZpbHRlck9wZXJhdGlvbnMm
IG11dGFibGVCYWNrZHJvcEZpbHRlcigpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2JhY2tkcm9wRmlsdGVyLmFjY2VzcygpLT5tX29wZXJhdGlvbnM7IH0KLSAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyLT5tX29wZXJhdGlvbnM7IH0KLSAg
ICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1w
dHkoKTsgfQorICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFibGVCYWNrZHJvcEZpbHRlcigpIHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYmFja2Ryb3BGaWx0ZXIuYWNj
ZXNzKCkub3BlcmF0aW9uczsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tkcm9w
RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BG
aWx0ZXItPm9wZXJhdGlvbnM7IH0KKyAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyLT5vcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KICNlbHNlCiAgICAgYm9vbCBoYXNCYWNrZHJv
cEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
U1NfQ09NUE9TSVRJTkcpCi0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZl
QmxlbmRNb2RlKTsgfQotICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBibGVuZE1vZGUp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9lZmZlY3RpdmVCbGVuZE1vZGUsIGJs
ZW5kTW9kZSk7IH0KLSAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEJsZW5kTW9kZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRN
b2RlKSAhPSBCbGVuZE1vZGVOb3JtYWw7IH0KKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5lZmZlY3RpdmVCbGVuZE1vZGUpOyB9CisgICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2Rl
IG1vZGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBlZmZlY3RpdmVCbGVuZE1v
ZGUsIG1vZGUpOyB9CisgICAgYm9vbCBoYXNCbGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxCbGVuZE1vZGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5k
TW9kZSkgIT0gQmxlbmRNb2RlTm9ybWFsOyB9CiAKLSAgICBJc29sYXRpb24gaXNvbGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9pc29sYXRpb24pOyB9Ci0gICAgdm9pZCBzZXRJc29sYXRpb24oSXNvbGF0aW9uIGlzb2xh
dGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2lzb2xhdGlvbiwgaXNvbGF0
aW9uKTsgfQotICAgIGJvb2wgaGFzSXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1faXNvbGF0aW9uICE9IElzb2xhdGlvbkF1dG87IH0KKyAgICBJc29sYXRp
b24gaXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0aW9uPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5pc29sYXRpb24pOyB9CisgICAgdm9pZCBzZXRJc29sYXRpb24o
SXNvbGF0aW9uIGlzb2xhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGlz
b2xhdGlvbiwgaXNvbGF0aW9uKTsgfQorICAgIGJvb2wgaGFzSXNvbGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aXNvbGF0aW9uICE9IElzb2xhdGlvbkF1dG87
IH0KICNlbHNlCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIEJsZW5k
TW9kZU5vcm1hbDsgfQogICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTEyMjQsNTczICs4MDUsNTE4IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFBs
YWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShD
U1NfVFJBSUxJTkdfV09SRCkKLSAgICBUcmFpbGluZ1dvcmQgdHJhaWxpbmdXb3JkKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhaWxpbmdXb3JkPihyYXJlSW5oZXJpdGVkRGF0YS0+dHJh
aWxpbmdXb3JkKTsgfQorICAgIFRyYWlsaW5nV29yZCB0cmFpbGluZ1dvcmQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUcmFpbGluZ1dvcmQ+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRyYWls
aW5nV29yZCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBBcHBsZVBh
eUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxBcHBsZVBheUJ1dHRvblN0eWxlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBsZVBh
eUJ1dHRvblN0eWxlKTsgfQotICAgIEFwcGxlUGF5QnV0dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBsZVBheUJ1dHRvblR5cGU+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2FwcGxlUGF5QnV0dG9uVHlwZSk7IH0KKyAgICBBcHBsZVBheUJ1
dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxBcHBsZVBheUJ1dHRvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBsZVBheUJ1
dHRvblN0eWxlKTsgfQorICAgIEFwcGxlUGF5QnV0dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBsZVBheUJ1dHRvblR5cGU+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9uVHlwZSk7IH0KICNlbmRpZgogCiAgICAgdm9p
ZCBjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVydGllcygpOwogCiAvLyBhdHRyaWJ1dGUgc2V0
dGVyIG1ldGhvZHMKIAotICAgIHZvaWQgc2V0RGlzcGxheShFRGlzcGxheSB2KSB7IG5vbmluaGVy
aXRlZF9mbGFncy5zZXRFZmZlY3RpdmVEaXNwbGF5KHYpOyB9Ci0gICAgdm9pZCBzZXRPcmlnaW5h
bERpc3BsYXkoRURpc3BsYXkgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0T3JpZ2luYWxEaXNw
bGF5KHYpOyB9Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gdikgeyBub25pbmhlcml0
ZWRfZmxhZ3Muc2V0UG9zaXRpb24odik7IH0KLSAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGbG9hdGluZyh2KTsgfQotCi0gICAgdm9pZCBzZXRM
ZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5sZWZ0KCksIFdURk1vdmUo
dikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBv
ZmZzZXQucmlnaHQoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFRvcChMZW5ndGggdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQudG9wKCksIFdURk1vdmUodikpOyB9Ci0gICAgdm9p
ZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmJvdHRvbSgp
LCBXVEZNb3ZlKHYpKTsgfQotCi0gICAgdm9pZCBzZXRXaWR0aChMZW5ndGggdikgeyBTRVRfVkFS
KG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0
aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZNb3ZlKHYpKTsgfQotCi0gICAgdm9p
ZCBzZXRMb2dpY2FsV2lkdGgoTGVuZ3RoIHYpCi0gICAgewotICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwg
V1RGTW92ZSh2KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94
LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBzZXRE
aXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRFZmZlY3RpdmVEaXNw
bGF5KHYpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLnNldE9yaWdpbmFsRGlzcGxheSh2KTsgfQorICAgIHZvaWQgc2V0UG9z
aXRpb24oRVBvc2l0aW9uIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRQb3NpdGlvbih2KTsg
fQorICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5z
ZXRGbG9hdGluZyh2KTsgfQogCi0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCB2KQot
ICAgIHsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAg
ICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZNb3ZlKHYpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURk1vdmUodikpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIHZvaWQgc2V0TGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0UmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IG9mZnNldC5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRUb3AoTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG9mZnNldC50b3AoKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBvZmZzZXQuYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KIAotICAgIHZvaWQgc2V0TWluV2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9t
aW5XaWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1heFdpZHRoKExlbmd0aCB2KSB7
IFNFVF9WQVIobV9ib3gsIG1fbWF4V2lkdGgsIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRN
aW5IZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9taW5IZWlnaHQsIFdURk1vdmUo
dikpOyB9Ci0gICAgdm9pZCBzZXRNYXhIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwg
bV9tYXhIZWlnaHQsIFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRXaWR0aChMZW5ndGgmJiBs
ZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fd2lkdGgsIFdURk1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldEhlaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEs
IG1faGVpZ2h0LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisKKyAgICB2b2lkIHNldExvZ2ljYWxXaWR0
aChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCYmKTsKKworICAg
IHZvaWQgc2V0TWluV2lkdGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBt
X21pbldpZHRoLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXhXaWR0aChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWF4V2lkdGgsIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX2JveERhdGEsIG1fbWluSGVpZ2h0LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBz
ZXRNYXhIZWlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX21heEhl
aWdodCwgV1RGTW92ZShsZW5ndGgpKTsgfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQotICAgIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZGFzaGJvYXJkUmVnaW9ucygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rhc2hib2FyZFJlZ2lvbnM7IH0K
LSAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiByZWdpb25zKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGFzaGJvYXJkUmVn
aW9ucywgcmVnaW9ucyk7IH0KLQotICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9uKGludCB0eXBl
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBMZW5ndGggdCwgTGVuZ3RoIHIsIExlbmd0aCBiLCBMZW5n
dGggbCwgYm9vbCBhcHBlbmQpCi0gICAgewotICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiBy
ZWdpb247Ci0gICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVsOwotICAgICAgICByZWdpb24ub2Zm
c2V0LnRvcCgpID0gV1RGTW92ZSh0KTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5yaWdodCgpID0g
V1RGTW92ZShyKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IFdURk1vdmUoYik7
Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RGTW92ZShsKTsKLSAgICAgICAgcmVn
aW9uLnR5cGUgPSB0eXBlOwotICAgICAgICBpZiAoIWFwcGVuZCkKLSAgICAgICAgICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKLSAg
ICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZGFzaGJvYXJkUmVnaW9ucy5h
cHBlbmQocmVnaW9uKTsKLSAgICB9CisgICAgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVn
aW9uPiYgZGFzaGJvYXJkUmVnaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmRhc2hib2FyZFJlZ2lvbnM7IH0KKyAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbnMo
Y29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgcmVnaW9ucykgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGRhc2hib2FyZFJlZ2lvbnMsIHJlZ2lvbnMpOyB9CisgICAg
dm9pZCBzZXREYXNoYm9hcmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgbGFiZWwsIExl
bmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVm
dCwgYm9vbCBhcHBlbmQpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlc2V0Qm9yZGVyKCkgeyByZXNl
dEJvcmRlckltYWdlKCk7IHJlc2V0Qm9yZGVyVG9wKCk7IHJlc2V0Qm9yZGVyUmlnaHQoKTsgcmVz
ZXRCb3JkZXJCb3R0b20oKTsgcmVzZXRCb3JkZXJMZWZ0KCk7IHJlc2V0Qm9yZGVyUmFkaXVzKCk7
IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV90b3AsIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlclJpZ2h0KCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodCwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2
b2lkIHJlc2V0Qm9yZGVyQm90dG9tKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0
b20sIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckxlZnQoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQsIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCBy
ZXNldEJvcmRlckltYWdlKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9pbWFnZSwgTmlu
ZVBpZWNlSW1hZ2UoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wKCkgeyBTRVRfVkFSKG1f
c3Vycm91bmREYXRhLCBib3JkZXIubV90b3AsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCBy
ZXNldEJvcmRlclJpZ2h0KCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9yaWdo
dCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tKCkgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20sIEJvcmRlclZhbHVlKCkpOyB9Cisg
ICAgdm9pZCByZXNldEJvcmRlckxlZnQoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRl
ci5tX2xlZnQsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckltYWdlKCkg
eyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9pbWFnZSwgTmluZVBpZWNlSW1hZ2Uo
KSk7IH0KICAgICB2b2lkIHJlc2V0Qm9yZGVyUmFkaXVzKCkgeyByZXNldEJvcmRlclRvcExlZnRS
YWRpdXMoKTsgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygpOyByZXNldEJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMoKTsgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cygpOyB9Ci0gICAgdm9pZCBy
ZXNldEJvcmRlclRvcExlZnRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3Rv
cExlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9w
UmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBpbml0
aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIGluaXRpYWxCb3Jk
ZXJSYWRpdXMoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBpbml0aWFsQm9yZGVyUmFk
aXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcExlZnRSYWRpdXMoKSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcExlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7
IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIGJvcmRlci5tX3RvcFJpZ2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Cisg
ICAgdm9pZCByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2JvdHRvbUxlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAg
ICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9CiAK
LSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1f
YmFja2dyb3VuZCwgbV9jb2xvciwgdik7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGNvbG9yLCB2KTsgfQog
Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV95UG9zaXRpb24sIFdURk1vdmUobGVu
Z3RoKSk7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplKEVGaWxsU2l6ZVR5cGUgYikgeyBT
RVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZVR5cGUsIGIpOyB9Ci0gICAg
dm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZUxlbmd0aChMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUiht
X2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9
CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
VkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQubV94UG9zaXRpb24sIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRpb24oTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dyb3VuZC5tX3lQb3NpdGlvbiwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemUoRUZpbGxTaXplVHlw
ZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dyb3VuZC5tX3NpemVUeXBlLCBi
KTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemVMZW5ndGgoTGVuZ3RoU2l6ZSYmIHNpemUp
IHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgV1RG
TW92ZShzaXplKSk7IH0KICAgICAKLSAgICB2b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBiKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2ltYWdlLCBiKTsgfQor
ICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1faW1hZ2UsIGIpOyB9CiAgICAgdm9pZCBzZXRCb3Jk
ZXJJbWFnZVNvdXJjZShSZWZQdHI8U3R5bGVJbWFnZT4mJik7Ci0gICAgdm9pZCBzZXRCb3JkZXJJ
bWFnZVNsaWNlcyhMZW5ndGhCb3gpOwotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5n
dGhCb3gpOwotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94KTsKLQotICAg
IHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgV1RGTW92ZShzaXplKSk7IH0KLSAgICB2b2lkIHNl
dEJvcmRlclRvcFJpZ2h0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV90b3BSaWdodCwgV1RGTW92ZShzaXplKSk7IH0KLSAgICB2b2lkIHNldEJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2JvdHRvbUxlZnQsIFdURk1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJC
b3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9y
ZGVyLm1fYm90dG9tUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9Ci0KLSAgICB2b2lkIHNldEJvcmRl
clJhZGl1cyhMZW5ndGhTaXplIHMpCi0gICAgewotICAgICAgICBzZXRCb3JkZXJUb3BMZWZ0UmFk
aXVzKHMpOwotICAgICAgICBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzKTsKLSAgICAgICAgc2V0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhzKTsKLSAgICAgICAgc2V0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMocyk7Ci0gICAgfQotICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKGNvbnN0IEludFNpemUm
IHMpCi0gICAgewotICAgICAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShMZW5ndGgocy53
aWR0aCgpLCBGaXhlZCksIExlbmd0aChzLmhlaWdodCgpLCBGaXhlZCkpKTsKLSAgICB9Ci0gICAg
CisgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5ndGhCb3gmJik7CisgICAgdm9pZCBz
ZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCYmKTsKKyAgICB2b2lkIHNldEJvcmRlckltYWdl
T3V0c2V0KExlbmd0aEJveCYmKTsKKworICAgIHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhM
ZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BM
ZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
TGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9w
UmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5t
X2JvdHRvbUxlZnQsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21S
aWdodFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBi
b3JkZXIubV9ib3R0b21SaWdodCwgV1RGTW92ZShzaXplKSk7IH0KKworICAgIHZvaWQgc2V0Qm9y
ZGVyUmFkaXVzKExlbmd0aFNpemUmJik7CisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoY29uc3Qg
SW50U2l6ZSYpOworCiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVl
LCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAgICAgUm91bmRl
ZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJl
Y3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKIAogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBMYXlvdXRVbml0IHRv
cFdpZHRoLCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLAogICAgICAgICBMYXlvdXRVbml0IGxlZnRX
aWR0aCwgTGF5b3V0VW5pdCByaWdodFdpZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Ug
PSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKLSAg
ICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2xlZnQubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShF
Qm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fc3R5bGUs
IHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0LCB2KTsgfQotICAgIHZv
aWQgc2V0Qm9yZGVyUmlnaHRXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci5tX3JpZ2h0Lm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVC
b3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUs
IHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQsIHYpOyB9Ci0gICAg
dm9pZCBzZXRCb3JkZXJUb3BXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci5tX3RvcC5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wU3R5bGUoRUJvcmRl
clN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fc3R5bGUsIHYpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVS
VkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX3RvcCwgdik7IH0KLSAgICB2b2lkIHNldEJv
cmRlckJvdHRvbVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90
dG9tLm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShFQm9yZGVy
U3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV9zdHlsZSwgdik7
IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9C
T1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLCB2KTsgfQotCi0gICAg
dm9pZCBzZXRPdXRsaW5lV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9v
dXRsaW5lLm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lU3R5bGVJc0F1dG8oT3V0
bGluZUlzQXV0byBpc0F1dG8pIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX2lz
QXV0bywgaXNBdXRvKTsgfQotICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlKEVCb3JkZXJTdHlsZSB2
KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV9zdHlsZSwgdik7IH0KLSAgICB2
b2lkIHNldE91dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09M
T1IobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUsIHYpOyB9Ci0KLSAgICB2b2lkIHNldE92ZXJmbG93
WChFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0T3ZlcmZsb3dYKHYpOyB9Ci0g
ICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNl
dE92ZXJmbG93WSh2KTsgfQotICAgIHZvaWQgc2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IHY7IH0KLSAgICB2b2lkIHNldFZlcnRpY2Fs
QWxpZ24oRVZlcnRpY2FsQWxpZ24gdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VmVydGljYWxB
bGlnbih2KTsgfQotICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGggbGVuZ3Ro
KSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0aWNhbEFs
aWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0KLSAgICB2b2lkIHNldEhhc0NsaXAoYm9vbCBiID0g
dHJ1ZSkgeyBTRVRfVkFSKHZpc3VhbCwgaGFzQ2xpcCwgYik7IH0KLSAgICB2b2lkIHNldENsaXBM
ZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubGVmdCgpLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHZpc3VhbCwgY2xpcC5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBz
ZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAudG9wKCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBCb3R0b20oTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExl
bmd0aCBsZWZ0KTsKLSAgICB2b2lkIHNldENsaXAoTGVuZ3RoQm94IGJveCkgeyBTRVRfVkFSKHZp
c3VhbCwgY2xpcCwgV1RGTW92ZShib3gpKTsgfQotCi0gICAgdm9pZCBzZXRVbmljb2RlQmlkaShF
VW5pY29kZUJpZGkgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VW5pY29kZUJpZGkoYik7IH0K
LQotICAgIHZvaWQgc2V0Q2xlYXIoRUNsZWFyIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldENs
ZWFyKHYpOyB9Ci0gICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdikgeyBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0VGFibGVMYXlvdXQodik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxl
ZnRXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xlZnQu
bV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUg
dikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9sZWZ0Lm1fc3R5bGUsIHYpOyB9
CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRF
UlZBTFVFX0NPTE9SKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9sZWZ0LCB2KTsgfQorICAgIHZv
aWQgc2V0Qm9yZGVyUmlnaHRXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0
eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3Jp
Z2h0Lm1fc3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodENvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1f
cmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BXaWR0aChmbG9hdCB2KSB7IFNFVF9W
QVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcC5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyVG9wU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgYm9yZGVyLm1fdG9wLm1fc3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3VuZERhdGEs
IGJvcmRlci5tX3RvcCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVdpZHRoKGZsb2F0
IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLm1fd2lkdGgsIHYp
OyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20ubV9zdHlsZSwgdik7IH0KKyAgICB2
b2lkIHNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxV
RV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLCB2KTsgfQorCisgICAgdm9p
ZCBzZXRPdXRsaW5lV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIG91
dGxpbmUubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldE91dGxpbmVTdHlsZUlzQXV0byhPdXRs
aW5lSXNBdXRvIGlzQXV0bykgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUubV9p
c0F1dG8sIGlzQXV0byk7IH0KKyAgICB2b2lkIHNldE91dGxpbmVTdHlsZShFQm9yZGVyU3R5bGUg
dikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUubV9zdHlsZSwgdik7IH0KKyAg
ICB2b2lkIHNldE91dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVf
Q09MT1IobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZSwgdik7IH0KKworICAgIHZvaWQgc2V0T3Zl
cmZsb3dYKEVPdmVyZmxvdyB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0T3ZlcmZsb3dYKHYp
OyB9CisgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IHYpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRPdmVyZmxvd1kodik7IH0KKyAgICB2b2lkIHNldFZpc2liaWxpdHkoRVZpc2liaWxp
dHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkgPSB2OyB9CisgICAgdm9pZCBzZXRW
ZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRW
ZXJ0aWNhbEFsaWduKHYpOyB9CisgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0
aCYmIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7IFNFVF9WQVIobV9ib3hEYXRh
LCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKworICAgIHZvaWQgc2V0SGFz
Q2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBoYXNDbGlwLCBiKTsg
fQorICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV92aXN1
YWxEYXRhLCBjbGlwLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xp
cFJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC5yaWdo
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCYmIGxl
bmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC50b3AoKSwgV1RGTW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X3Zpc3VhbERhdGEsIGNsaXAuYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lk
IHNldENsaXAoTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBM
ZW5ndGgmJiBsZWZ0KTsKKyAgICB2b2lkIHNldENsaXAoTGVuZ3RoQm94JiYgYm94KSB7IFNFVF9W
QVIobV92aXN1YWxEYXRhLCBjbGlwLCBXVEZNb3ZlKGJveCkpOyB9CisKKyAgICB2b2lkIHNldFVu
aWNvZGVCaWRpKEVVbmljb2RlQmlkaSBiKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0VW5pY29k
ZUJpZGkoYik7IH0KKworICAgIHZvaWQgc2V0Q2xlYXIoRUNsZWFyIHYpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5zZXRDbGVhcih2KTsgfQorICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5
b3V0IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRUYWJsZUxheW91dCh2KTsgfQogCiAgICAg
Ym9vbCBzZXRGb250RGVzY3JpcHRpb24oY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpOwor
CiAgICAgLy8gT25seSB1c2VkIGZvciBibGVuZGluZyBmb250IHNpemVzIHdoZW4gYW5pbWF0aW5n
LCBmb3IgTWF0aE1MIGFub255bW91cyBibG9ja3MsIGFuZCBmb3IgdGV4dCBhdXRvc2l6aW5nLgog
ICAgIHZvaWQgc2V0Rm9udFNpemUoZmxvYXQpOworCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05U
UykKICAgICB2b2lkIHNldEZvbnRWYXJpYXRpb25TZXR0aW5ncyhGb250VmFyaWF0aW9uU2V0dGlu
Z3MpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdm9p
ZCBzZXRUZXh0SW5kZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgaW5kZW50LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAg
ICB2b2lkIHNldFRleHRJbmRlbnRMaW5lKFRleHRJbmRlbnRMaW5lIHYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV90ZXh0SW5kZW50TGluZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHRJ
bmRlbnRUeXBlKFRleHRJbmRlbnRUeXBlIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bV90ZXh0SW5kZW50VHlwZSwgdik7IH0KLSNlbmRpZgotICAgIHZvaWQgc2V0VGV4dEFsaWduKEVU
ZXh0QWxpZ24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24gPSB2OyB9Ci0gICAgdm9p
ZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0X3RyYW5zZm9ybSA9IHY7IH0KLSAgICB2b2lkIGFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoVGV4dERlY29yYXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMg
fD0gdjsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRp
b24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgPSB2OyB9Ci0gICAgdm9p
ZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2KSB7IFNFVF9WQVIodmlzdWFsLCB0
ZXh0RGVjb3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRleHRJbmRlbnQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50LCBXVEZNb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7IG1faW5oZXJpdGVk
RmxhZ3MudGV4dEFsaWduID0gdjsgfQorICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShFVGV4dFRy
YW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSA9IHY7IH0KKyAgICB2
b2lkIGFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBtX2lu
aGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyB8PSB2OyB9CisgICAgdm9pZCBzZXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4
dERlY29yYXRpb25zID0gdjsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oVGV4dERlY29y
YXRpb24gdikgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgdGV4dERlY29yYXRpb24sIHYpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgdikgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU3R5bGUsIHYpOyB9
CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAoVGV4dERlY29yYXRpb25Ta2lwIHNraXAp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblNraXAsIHNraXAp
OyB9CisgICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0
aW9uIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRp
b24sIHYpOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IG1faW5o
ZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gdjsgfQorICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNl
dERpcmVjdGlvbihib29sIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5
U2V0RGlyZWN0aW9uKHYpOyB9CisgICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKKyAg
ICBib29sIHNldFpvb20oZmxvYXQpOworICAgIHZvaWQgc2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1
ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KKyAgICBib29sIHNldEVmZmVjdGl2ZVpvb20oZmxv
YXQpOworICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRab29tLCB2KTsgfQorCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAg
ICB2b2lkIHNldFRleHRBbGlnbkxhc3QoVGV4dEFsaWduTGFzdCB2KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIG1fdGV4dEFsaWduTGFzdCwgdik7IH0KLSAgICB2b2lkIHNldFRleHRKdXN0
aWZ5KFRleHRKdXN0aWZ5IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0SnVz
dGlmeSwgdik7IH0KKyAgICB2b2lkIHNldFRleHRJbmRlbnRMaW5lKFRleHRJbmRlbnRMaW5lIHYp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0SW5kZW50TGluZSwgdik7IH0KKyAg
ICB2b2lkIHNldFRleHRJbmRlbnRUeXBlKFRleHRJbmRlbnRUeXBlIHYpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0ZXh0SW5kZW50VHlwZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHRB
bGlnbkxhc3QoVGV4dEFsaWduTGFzdCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dEFsaWduTGFzdCwgdik7IH0KKyAgICB2b2lkIHNldFRleHRKdXN0aWZ5KFRleHRKdXN0aWZ5
IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0SnVzdGlmeSwgdik7IH0KICNl
bmRpZgotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxl
IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0RGVjb3JhdGlvblN0eWxl
LCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKFRleHREZWNvcmF0aW9uU2tp
cCBza2lwKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dERlY29yYXRpb25Ta2lw
LCBza2lwKTsgfQotICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRVbmRlcmxp
bmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dFVuZGVybGlu
ZVBvc2l0aW9uLCB2KTsgfQotICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gdikg
eyBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbiA9IHY7IH0KLSAgICB2b2lkIHNldEhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uKHYpOyB9CisKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQot
ICAgIHZvaWQgc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGggdik7CisgICAgdm9pZCBzZXRT
cGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKICNlbmRpZgotICAgIHZvaWQgc2V0TGluZUhl
aWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCk7Ci0gICAgYm9vbCBzZXRab29tKGZsb2F0
KTsKLSAgICB2b2lkIHNldFpvb21XaXRob3V0UmV0dXJuVmFsdWUoZmxvYXQgZikgeyBzZXRab29t
KGYpOyB9Ci0gICAgYm9vbCBzZXRFZmZlY3RpdmVab29tKGZsb2F0KTsKLSAgICB2b2lkIHNldFRl
eHRab29tKFRleHRab29tIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0Wm9v
bSwgdik7IH0KLSAgICAKKwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAg
dm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+
KHYpKTsgfQorICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51
bSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3Rh
dGljX2Nhc3Q8aW50Pih2KSk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRJbWFnZVJlbmRlcmlu
ZyhFSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdl
UmVuZGVyaW5nLCB2KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VSZW5kZXJpbmcoRUltYWdlUmVuZGVy
aW5nIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlbmRlcmluZywgdik7
IH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICB2b2lkIHNldEltYWdl
UmVzb2x1dGlvblNvdXJjZShJbWFnZVJlc29sdXRpb25Tb3VyY2UgdikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZSwgdik7IH0KLSAgICB2b2lkIHNl
dEltYWdlUmVzb2x1dGlvblNuYXAoSW1hZ2VSZXNvbHV0aW9uU25hcCB2KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZXNvbHV0aW9uU25hcCwgdik7IH0KLSAgICB2b2lkIHNl
dEltYWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1f
aW1hZ2VSZXNvbHV0aW9uLCBmKTsgfQorICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNl
KEltYWdlUmVzb2x1dGlvblNvdXJjZSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aW1hZ2VSZXNvbHV0aW9uU291cmNlLCB2KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9u
U25hcChJbWFnZVJlc29sdXRpb25TbmFwIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBpbWFnZVJlc29sdXRpb25TbmFwLCB2KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9u
KGZsb2F0IGYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRpb24s
IGYpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0V2hpdGVTcGFjZShFV2hpdGVTcGFjZSB2KSB7
IGluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UgPSB2OyB9CisgICAgdm9pZCBzZXRXaGl0ZVNw
YWNlKEVXaGl0ZVNwYWNlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlID0gdjsgfQog
Ci0gICAgdm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgpOworICAgIHZvaWQgc2V0V29yZFNwYWNp
bmcoTGVuZ3RoJiYpOwogICAgIHZvaWQgc2V0TGV0dGVyU3BhY2luZyhmbG9hdCk7CiAKLSAgICB2
b2lkIGNsZWFyQmFja2dyb3VuZExheWVycygpIHsgbV9iYWNrZ3JvdW5kLmFjY2VzcygpLT5tX2Jh
Y2tncm91bmQgPSBGaWxsTGF5ZXIoQmFja2dyb3VuZEZpbGxMYXllcik7IH0KLSAgICB2b2lkIGlu
aGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IG1fYmFja2dy
b3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kID0gcGFyZW50OyB9CisgICAgdm9pZCBjbGVhckJh
Y2tncm91bmRMYXllcnMoKSB7IG1fYmFja2dyb3VuZERhdGEuYWNjZXNzKCkuYmFja2dyb3VuZCA9
IEZpbGxMYXllcihCYWNrZ3JvdW5kRmlsbExheWVyKTsgfQorICAgIHZvaWQgaW5oZXJpdEJhY2tn
cm91bmRMYXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgbV9iYWNrZ3JvdW5kRGF0YS5h
Y2Nlc3MoKS5iYWNrZ3JvdW5kID0gcGFyZW50OyB9CiAKLSAgICB2b2lkIGFkanVzdEJhY2tncm91
bmRMYXllcnMoKQotICAgIHsKLSAgICAgICAgaWYgKGJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgp
KSB7Ci0gICAgICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJz
KCk7Ci0gICAgICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkuZmlsbFVuc2V0UHJvcGVy
dGllcygpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgYWRqdXN0QmFja2dyb3VuZExheWVy
cygpOwogCi0gICAgdm9pZCBjbGVhck1hc2tMYXllcnMoKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX21hc2sgPSBGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcik7IH0KLSAgICB2b2lk
IGluaGVyaXRNYXNrTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2sgPSBwYXJlbnQ7IH0KKyAgICB2b2lkIGNsZWFyTWFz
a0xheWVycygpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNrID0gRmlsbExh
eWVyKE1hc2tGaWxsTGF5ZXIpOyB9CisgICAgdm9pZCBpbmhlcml0TWFza0xheWVycyhjb25zdCBG
aWxsTGF5ZXImIHBhcmVudCkgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2sg
PSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgYWRqdXN0TWFza0xheWVycygpCi0gICAgewotICAgICAg
ICBpZiAobWFza0xheWVycygpLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGVuc3VyZU1hc2tMYXll
cnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5m
aWxsVW5zZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBhZGp1c3RN
YXNrTGF5ZXJzKCk7CiAKLSAgICB2b2lkIHNldE1hc2tJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4m
JiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2suc2V0SW1hZ2UoV1RG
TW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1hc2tJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJiB2
KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFzay5zZXRJbWFnZShXVEZNb3Zl
KHYpKTsgfQogCi0gICAgdm9pZCBzZXRNYXNrQm94SW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2Um
IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrQm94SW1hZ2UsIGIpOyB9
Ci0gICAgdm9pZCBzZXRNYXNrQm94SW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikg
eyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrQm94SW1hZ2Uuc2V0SW1hZ2Uo
V1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1hc2tYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV94UG9zaXRpb24sIFdURk1v
dmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hc2tZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV95UG9zaXRpb24sIFdURk1v
dmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hc2tTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV9zaXplTGVuZ3RoLCBXVEZNb3Zl
KHNpemUpKTsgfQorICAgIHZvaWQgc2V0TWFza0JveEltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFza0JveEltYWdlLCBiKTsg
fQorICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFJlZlB0cjxTdHlsZUltYWdlPiYmIHYp
IHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNrQm94SW1hZ2Uuc2V0SW1hZ2Uo
V1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1hc2tYUG9zaXRpb24oTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFzay5tX3hQb3NpdGlvbiwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFza1lQb3NpdGlvbihMZW5ndGgmJiBsZW5n
dGgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXNrLm1feVBvc2l0aW9uLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXNrU2l6ZShMZW5ndGhTaXplIHNpemUp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXNrLm1fc2l6ZUxlbmd0aCwgV1RG
TW92ZShzaXplKSk7IH0KIAotICAgIHZvaWQgc2V0Qm9yZGVyQ29sbGFwc2UoRUJvcmRlckNvbGxh
cHNlIGNvbGxhcHNlKSB7IGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlID0gY29sbGFw
c2U7IH0KKyAgICB2b2lkIHNldEJvcmRlckNvbGxhcHNlKEVCb3JkZXJDb2xsYXBzZSBjb2xsYXBz
ZSkgeyBtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlID0gY29sbGFwc2U7IH0KICAgICB2
b2lkIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKGZsb2F0KTsKICAgICB2b2lkIHNldFZlcnRp
Y2FsQm9yZGVyU3BhY2luZyhmbG9hdCk7Ci0gICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVFbXB0eUNl
bGwgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzID0gdjsgfQotICAgIHZvaWQgc2V0
Q2FwdGlvblNpZGUoRUNhcHRpb25TaWRlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3Np
ZGUgPSB2OyB9CisgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVFbXB0eUNlbGwgdikgeyBtX2luaGVy
aXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSB2OyB9CisgICAgdm9pZCBzZXRDYXB0aW9uU2lkZShFQ2Fw
dGlvblNpZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gdjsgfQogCi0gICAg
dm9pZCBzZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVjdFJhdGlvVHlwZSwgYXNwZWN0
UmF0aW9UeXBlKTsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihmbG9hdCB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRv
ciwgdik7IH0KLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGZsb2F0IHYpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb051bWVyYXRvciwgdik7IH0K
KyAgICB2b2lkIHNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9U
eXBlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9UeXBlLCBh
c3BlY3RSYXRpb1R5cGUpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKGZs
b2F0IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yLCB2KTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoZmxvYXQgdikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlvTnVtZXJhdG9yLCB2
KTsgfQogCi0gICAgdm9pZCBzZXRMaXN0U3R5bGVUeXBlKEVMaXN0U3R5bGVUeXBlIHYpIHsgaW5o
ZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0U3R5
bGVUeXBlKEVMaXN0U3R5bGVUeXBlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBl
ID0gdjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYp
OwotICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYpIHsg
aW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uID0gdjsgfQotCi0gICAgdm9pZCBy
ZXNldE1hcmdpbigpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQp
KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJn
aW5Cb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4uYm90dG9t
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG1hcmdpbi5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRN
YXJnaW5TdGFydChMZW5ndGgpOwotICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCk7Ci0KLSAg
ICB2b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgTGVuZ3Ro
Qm94KEF1dG8pKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0JveChMZW5ndGhCb3ggYm94KSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIFdURk1vdmUoYm94KSk7IH0KLSAgICB2b2lkIHNldFBh
ZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnRvcCgp
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5ib3R0b20oKSwgV1RGTW92ZShsZW5n
dGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQg
c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
Zy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0KLSAgICB2b2lkIHNldEN1cnNvcihFQ3Vy
c29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9CisgICAgdm9pZCBz
ZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBtX2luaGVyaXRlZEZs
YWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gdjsgfQorCisgICAgdm9pZCByZXNldE1hcmdpbigpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQpKTsgfQorICAg
IHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBtYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdp
bkJvdHRvbShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2lu
LmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4ubGVmdCgpLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGgmJiBsZW5n
dGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnJpZ2h0KCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCYmKTsKKyAgICB2b2lkIHNl
dE1hcmdpbkVuZChMZW5ndGgmJik7CisKKyAgICB2b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZywgTGVuZ3RoQm94KEF1dG8pKTsgfQorICAgIHZvaWQg
c2V0UGFkZGluZ0JveChMZW5ndGhCb3gmJiBib3gpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
cGFkZGluZywgV1RGTW92ZShib3gpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1RvcChMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy50b3AoKSwgV1RGTW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0JvdHRvbShMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy5ib3R0b20oKSwgV1RGTW92ZShsZW5n
dGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Cisg
ICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorCisgICAgdm9p
ZCBzZXRDdXJzb3IoRUN1cnNvciBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gYzsgfQog
ICAgIHZvaWQgYWRkQ3Vyc29yKFJlZlB0cjxTdHlsZUltYWdlPiYmLCBjb25zdCBJbnRQb2ludCYg
aG90U3BvdCA9IEludFBvaW50KCkpOwogICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChSZWZQdHI8Q3Vy
c29yTGlzdD4mJik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAogI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKLSAgICB2b2lkIHNldEN1cnNvclZpc2liaWxpdHkoQ3Vyc29yVmlz
aWJpbGl0eSBjKSB7IGluaGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkgPSBjOyB9Cisg
ICAgdm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBtX2luaGVy
aXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBjOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0
SW5zaWRlTGluayhFSW5zaWRlTGluayBpbnNpZGVMaW5rKSB7IGluaGVyaXRlZF9mbGFncy5faW5z
aWRlTGluayA9IGluc2lkZUxpbms7IH0KLSAgICB2b2lkIHNldElzTGluayhib29sIGIpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldElzTGluayhiKTsgfQorICAgIHZvaWQgc2V0SW5zaWRlTGluayhF
SW5zaWRlTGluayBpbnNpZGVMaW5rKSB7IG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayA9IGlu
c2lkZUxpbms7IH0KKyAgICB2b2lkIHNldElzTGluayhib29sIGIpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRJc0xpbmsoYik7IH0KIAotICAgIHZvaWQgc2V0SW5zaWRlRGVmYXVsdEJ1dHRvbihi
b29sIGluc2lkZURlZmF1bHRCdXR0b24pIHsgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0
QnV0dG9uID0gaW5zaWRlRGVmYXVsdEJ1dHRvbjsgfQorICAgIHZvaWQgc2V0SW5zaWRlRGVmYXVs
dEJ1dHRvbihib29sIGluc2lkZURlZmF1bHRCdXR0b24pIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNp
ZGVEZWZhdWx0QnV0dG9uID0gaW5zaWRlRGVmYXVsdEJ1dHRvbjsgfQogCi0gICAgUHJpbnRDb2xv
ckFkanVzdCBwcmludENvbG9yQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
bnRDb2xvckFkanVzdD4oaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCk7IH0KLSAg
ICB2b2lkIHNldFByaW50Q29sb3JBZGp1c3QoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkgeyBpbmhl
cml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gdmFsdWU7IH0KKyAgICBQcmludENvbG9y
QWRqdXN0IHByaW50Q29sb3JBZGp1c3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmlu
dENvbG9yQWRqdXN0PihtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QpOyB9CisgICAg
dm9pZCBzZXRQcmludENvbG9yQWRqdXN0KFByaW50Q29sb3JBZGp1c3QgdmFsdWUpIHsgbV9pbmhl
cml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0gdmFsdWU7IH0KIAotICAgIGJvb2wgaGFzQXV0
b1pJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oYXNBdXRvWkluZGV4KCk7IH0KLSAgICB2
b2lkIHNldEhhc0F1dG9aSW5kZXgoKSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwg
dHJ1ZSk7IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCAwKTsgfQotICAgIGludCB6SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2JveC0+ekluZGV4KCk7IH0KLSAgICB2b2lkIHNldFpJbmRleChpbnQg
dikgeyBTRVRfVkFSKG1fYm94LCBtX2hhc0F1dG9aSW5kZXgsIGZhbHNlKTsgU0VUX1ZBUihtX2Jv
eCwgbV96SW5kZXgsIHYpOyB9CisgICAgYm9vbCBoYXNBdXRvWkluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9aSW5k
ZXgoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2hhc0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFS
KG1fYm94RGF0YSwgbV96SW5kZXgsIDApOyB9CisgICAgaW50IHpJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm94RGF0YS0+ekluZGV4KCk7IH0KKyAgICB2b2lkIHNldFpJbmRleChpbnQgdikgeyBT
RVRfVkFSKG1fYm94RGF0YSwgbV9oYXNBdXRvWkluZGV4LCBmYWxzZSk7IFNFVF9WQVIobV9ib3hE
YXRhLCBtX3pJbmRleCwgdik7IH0KIAotICAgIHZvaWQgc2V0SGFzQXV0b1dpZG93cygpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvV2lkb3dzLCB0cnVlKTsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dzLCBpbml0aWFsV2lkb3dzKCkpOyB9Ci0gICAgdm9pZCBz
ZXRXaWRvd3Moc2hvcnQgdykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9X
aWRvd3MsIGZhbHNlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dzLCB3KTsgfQor
ICAgIHZvaWQgc2V0SGFzQXV0b1dpZG93cygpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBoYXNBdXRvV2lkb3dzLCB0cnVlKTsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB3aWRv
d3MsIGluaXRpYWxXaWRvd3MoKSk7IH0KKyAgICB2b2lkIHNldFdpZG93cyhzaG9ydCB3KSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFzQXV0b1dpZG93cywgZmFsc2UpOyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgdyk7IH0KIAotICAgIHZvaWQgc2V0SGFzQXV0
b09ycGhhbnMoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b09ycGhhbnMs
IHRydWUpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBpbml0aWFsT3JwaGFu
cygpKTsgfQotICAgIHZvaWQgc2V0T3JwaGFucyhzaG9ydCBvKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIG1faGFzQXV0b09ycGhhbnMsIGZhbHNlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgb3JwaGFucywgbyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9PcnBoYW5zKCkgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9PcnBoYW5zLCB0cnVlKTsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBpbml0aWFsT3JwaGFucygpKTsgfQorICAgIHZv
aWQgc2V0T3JwaGFucyhzaG9ydCBvKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFz
QXV0b09ycGhhbnMsIGZhbHNlKTsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5z
LCBvKTsgfQogCiAgICAgLy8gQ1NTMyBTZXR0ZXJzCi0gICAgdm9pZCBzZXRPdXRsaW5lT2Zmc2V0
KGZsb2F0IHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX29mZnNldCwgdik7
IH0KKyAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoZmxvYXQgdikgeyBTRVRfVkFSKG1fYmFja2dy
b3VuZERhdGEsIG91dGxpbmUubV9vZmZzZXQsIHYpOyB9CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93
KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiwgYm9vbCBhZGQgPSBmYWxzZSk7Ci0gICAgdm9p
ZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0VGV4dFN0cm9rZVdp
ZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZVdpZHRo
LCB3KTsgfQotICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0
T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAwLCAxKTsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcGFjaXR5LCB2KTsgfQotICAgIHZvaWQgc2V0
QXBwZWFyYW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fYXBwZWFyYW5jZSwgYSk7IH0KKyAgICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihjb25zdCBD
b2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwg
Yyk7IH0KKyAgICB2b2lkIHNldFRleHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZVdpZHRoLCB3KTsgfQorICAgIHZvaWQgc2V0VGV4
dEZpbGxDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRGaWxsQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxv
YXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG9wYWNpdHksIHYpOyB9CisgICAgdm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQYXJ0
IGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBlYXJhbmNlLCBhKTsgfQog
ICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgYm94LWFsaWduIHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDA5L1dELWNzczMtZmxleGJveC0yMDA5MDcyMy8jYWxpZ25tZW50Ci0gICAgdm9pZCBz
ZXRCb3hBbGlnbihFQm94QWxpZ25tZW50IGEpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBhbGlnbiwgYSk7IH0KKyAgICB2b2lk
IHNldEJveEFsaWduKEVCb3hBbGlnbm1lbnQgYSkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGFsaWduLCBhKTsgfQorICAgIHZv
aWQgc2V0Qm94RGlyZWN0aW9uKEVCb3hEaXJlY3Rpb24gZCkgeyBtX2luaGVyaXRlZEZsYWdzLmJv
eERpcmVjdGlvbiA9IGQ7IH0KKyAgICB2b2lkIHNldEJveEZsZXgoZmxvYXQgZikgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGZs
ZXgsIGYpOyB9CisgICAgdm9pZCBzZXRCb3hGbGV4R3JvdXAodW5zaWduZWQgZ3JvdXApIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94
LCBmbGV4R3JvdXAsIGdyb3VwKTsgfQorICAgIHZvaWQgc2V0Qm94TGluZXMoRUJveExpbmVzIGxp
bmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRG
bGV4aWJsZUJveCwgbGluZXMsIGxpbmVzKTsgfQorICAgIHZvaWQgc2V0Qm94T3JkaW5hbEdyb3Vw
KHVuc2lnbmVkIGdyb3VwKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JkaW5hbEdyb3VwLCBncm91cCk7IH0KKyAgICB2b2lk
IHNldEJveE9yaWVudChFQm94T3JpZW50IG8pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmllbnQsIG8pOyB9CisgICAgdm9p
ZCBzZXRCb3hQYWNrKEVCb3hQYWNrIHApIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBwYWNrLCBwKTsgfQorICAgIHZvaWQgc2V0
Qm94U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiwgYm9vbCBhZGQgPSBmYWxzZSk7
CisgICAgdm9pZCBzZXRCb3hSZWZsZWN0KFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+JiYpOworICAg
IHZvaWQgc2V0Qm94U2l6aW5nKEVCb3hTaXppbmcgcykgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9i
b3hTaXppbmcsIHMpOyB9CisgICAgdm9pZCBzZXRGbGV4R3JvdyhmbG9hdCBmKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBtX2ZsZXhHcm93LCBm
KTsgfQorICAgIHZvaWQgc2V0RmxleFNocmluayhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9Cisg
ICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgV1RGTW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0T3JkZXIoaW50IG8pIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBvcmRlciwgbyk7IH0KKyAgICB2b2lkIHNldEFsaWduQ29udGVudChjb25z
dCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYWxpZ25Db250ZW50LCBkYXRhKTsgfQorICAgIHZvaWQgc2V0QWxpZ25Db250
ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuYWxpZ25Db250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQorICAg
IHZvaWQgc2V0QWxpZ25Db250ZW50T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cp
IHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbGlnbkNvbnRlbnQuc2V0T3ZlcmZs
b3cob3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRBbGlnbkNvbnRlbnREaXN0cmlidXRpb24oQ29u
dGVudERpc3RyaWJ1dGlvblR5cGUgZGlzdHJpYnV0aW9uKSB7IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkuYWxpZ25Db250ZW50LnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOyB9
CisgICAgdm9pZCBzZXRBbGlnbkl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRh
dGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkl0ZW1zLCBkYXRhKTsg
fQorICAgIHZvaWQgc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikg
eyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduSXRlbXMuc2V0UG9zaXRpb24o
cG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRBbGlnbkl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dBbGln
bm1lbnQgb3ZlcmZsb3cpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbGlnbkl0
ZW1zLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0QWxpZ25TZWxmKGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBhbGlnblNlbGYsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRBbGlnblNlbGZQb3NpdGlv
bihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS5hbGlnblNlbGYuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRBbGlnblNl
bGZPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmFsaWduU2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KKyAgICB2
b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBtX2ZsZXhEaXJlY3Rp
b24sIGRpcmVjdGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3JhcCB3KSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBtX2ZsZXhX
cmFwLCB3KTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoY29uc3QgU3R5bGVDb250ZW50
QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGp1
c3RpZnlDb250ZW50LCBkYXRhKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnRQb3NpdGlv
bihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5qdXN0aWZ5Q29udGVudC5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNl
dEp1c3RpZnlDb250ZW50T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5qdXN0aWZ5Q29udGVudC5zZXRPdmVyZmxvdyhv
dmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9uKENvbnRl
bnREaXN0cmlidXRpb25UeXBlIGRpc3RyaWJ1dGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmp1c3RpZnlDb250ZW50LnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOyB9
CisgICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYg
ZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGp1c3RpZnlJdGVtcywgZGF0
YSk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3Np
dGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmp1c3RpZnlJdGVtcy5zZXRQ
b3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlJdGVtc092ZXJmbG93KE92
ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuanVzdGlmeUl0ZW1zLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlvblR5cGUgcG9zaXRpb25UeXBlKSB7IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuanVzdGlmeUl0ZW1zLnNldFBvc2l0aW9uVHlw
ZShwb3NpdGlvblR5cGUpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25zdCBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
anVzdGlmeVNlbGYsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKEl0
ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmp1
c3RpZnlTZWxmLnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeVNl
bGZPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmp1c3RpZnlTZWxmLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorCiAj
aWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKLSAgICB2b2lkIHNldEJveERlY29y
YXRpb25CcmVhayhFQm94RGVjb3JhdGlvbkJyZWFrIGIpIHsgU0VUX1ZBUihtX2JveCwgbV9ib3hE
ZWNvcmF0aW9uQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRCb3hEZWNvcmF0aW9uQnJlYWsoRUJv
eERlY29yYXRpb25CcmVhayBiKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2JveERlY29yYXRpb25C
cmVhaywgYik7IH0KICNlbmRpZgotICAgIHZvaWQgc2V0Qm94RGlyZWN0aW9uKEVCb3hEaXJlY3Rp
b24gZCkgeyBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBkOyB9Ci0gICAgdm9pZCBz
ZXRCb3hGbGV4KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBmbGV4LCBmKTsgfQotICAgIHZvaWQgc2V0Qm94Rmxl
eEdyb3VwKHVuc2lnbmVkIGludCBmZykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXhfZ3JvdXAsIGZnKTsgfQotICAgIHZv
aWQgc2V0Qm94TGluZXMoRUJveExpbmVzIGwpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBsaW5lcywgbCk7IH0KLSAgICB2b2lk
IHNldEJveE9yZGluYWxHcm91cCh1bnNpZ25lZCBpbnQgb2cpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmRpbmFsX2dyb3Vw
LCBvZyk7IH0KLSAgICB2b2lkIHNldEJveE9yaWVudChFQm94T3JpZW50IG8pIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmll
bnQsIG8pOyB9Ci0gICAgdm9pZCBzZXRCb3hQYWNrKEVCb3hQYWNrIHApIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBwYWNrLCBw
KTsgfQotICAgIHZvaWQgc2V0Qm94U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiwg
Ym9vbCBhZGQgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRCb3hSZWZsZWN0KFJlZlB0cjxTdHlsZVJl
ZmxlY3Rpb24+JiYgcmVmbGVjdCkgeyBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94UmVm
bGVjdCAhPSByZWZsZWN0KSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ib3hSZWZs
ZWN0ID0gV1RGTW92ZShyZWZsZWN0KTsgfQotICAgIHZvaWQgc2V0Qm94U2l6aW5nKEVCb3hTaXpp
bmcgcykgeyBTRVRfVkFSKG1fYm94LCBtX2JveFNpemluZywgcyk7IH0KLSAgICB2b2lkIHNldEZs
ZXhHcm93KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
ZmxleGlibGVCb3gsIG1fZmxleEdyb3csIGYpOyB9Ci0gICAgdm9pZCBzZXRGbGV4U2hyaW5rKGZs
b2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmxleGlibGVC
b3gsIG1fZmxleFNocmluaywgZik7IH0KLSAgICB2b2lkIHNldEZsZXhCYXNpcyhMZW5ndGggbGVu
Z3RoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94
LCBtX2ZsZXhCYXNpcywgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0T3JkZXIoaW50
IG8pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7IH0KLSAgICB2
b2lkIHNldEFsaWduQ29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRh
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25Db250ZW50LCBkYXRhKTsg
fQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0
aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduQ29udGVudC5zZXRQ
b3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWduQ29udGVudE92ZXJmbG93KE92
ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2FsaWduQ29udGVudC5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEFs
aWduQ29udGVudERpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBkaXN0cmlidXRp
b24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNldERp
c3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkl0ZW1zKGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9hbGlnbkl0ZW1zLCBkYXRhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25JdGVtc1Bvc2l0
aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9hbGlnbkl0ZW1zLnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxp
Z25JdGVtc092ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9
Ci0gICAgdm9pZCBzZXRBbGlnblNlbGYoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0
YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduU2VsZiwgZGF0YSk7IH0K
LSAgICB2b2lkIHNldEFsaWduU2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnblNlbGYuc2V0UG9zaXRpb24ocG9z
aXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGZPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVu
dCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnblNlbGYu
c2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9pZCBzZXRGbGV4RGlyZWN0aW9uKEVGbGV4
RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9Ci0gICAgdm9p
ZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4V3JhcCwgdyk7IH0KLSAgICB2b2lkIHNldEp1
c3RpZnlDb250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5Q29udGVudCwgZGF0YSk7IH0KLSAg
ICB2b2lkIHNldEp1c3RpZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0aW9u
KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50LnNldFBv
c2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyhP
dmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9qdXN0aWZ5Q29udGVudC5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNl
dEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmlidXRpb25UeXBlIGRpc3Ry
aWJ1dGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5Q29udGVu
dC5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUl0
ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5SXRlbXMsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRKdXN0
aWZ5SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQot
ICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZs
b3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldE92
ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zUG9zaXRpb25UeXBl
KEl0ZW1Qb3NpdGlvblR5cGUgcG9zaXRpb25UeXBlKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRQb3NpdGlvblR5cGUocG9zaXRpb25UeXBlKTsgfQot
ICAgIHZvaWQgc2V0SnVzdGlmeVNlbGYoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0
YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlTZWxmLCBkYXRhKTsg
fQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24p
IHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeVNlbGYuc2V0UG9zaXRp
b24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KE92ZXJmbG93
QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1
c3RpZnlTZWxmLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorCiAjaWYgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkKLSAgICB2b2lkIHNldEdyaWRBdXRvQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b0NvbHVtbnMsIHRyYWNrU2l6ZUxpc3QpOyB9Ci0gICAg
dm9pZCBzZXRHcmlkQXV0b1Jvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1Np
emVMaXN0KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1f
Z3JpZEF1dG9Sb3dzLCB0cmFja1NpemVMaXN0KTsgfQotICAgIHZvaWQgc2V0R3JpZENvbHVtbnMo
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0aHMpOyB9Ci0g
ICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMp
IHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkUm93
cywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1ucyhjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMsIGxlbmd0aHMpOyB9
Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1Np
emU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzLCBsZW5ndGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoY29uc3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9p
bnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRv
UmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2ludCk7IH0KLSAgICB2b2lk
IHNldEdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGluc2Vy
dGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9uUG9pbnQpOyB9Ci0gICAg
dm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGNvbnN0IEF1dG9SZXBlYXRUeXBlIGF1
dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlLCBhdXRvUmVwZWF0VHlwZSk7IH0KLSAgICB2b2lk
IHNldEdyaWRBdXRvUmVwZWF0Um93c1R5cGUoY29uc3QgQXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVh
dFR5cGUpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9h
dXRvUmVwZWF0Um93c1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQotICAgIHZvaWQgc2V0TmFtZWRH
cmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxp
bmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFt
ZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0
TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZFJvd0xp
bmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFt
ZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0T3JkZXJl
ZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2dyaWQsIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9vcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2
b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5l
c01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVk
R3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xp
bmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXROYW1lZEdy
aWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01h
cCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0b1Jl
cGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMs
IG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWEo
Y29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSkgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVkR3JpZEFyZWEsIG5hbWVkR3JpZEFy
ZWEpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93Q291bnQoc2l6ZV90IHJvd0NvdW50
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRH
cmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KLSAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFD
b2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQsIGNvbHVtbkNv
dW50KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93KEdyaWRBdXRvRmxvdyBmbG93KSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9GbG93
LCBmbG93KTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5TdGFydChjb25zdCBHcmlkUG9z
aXRpb24mIGNvbHVtblN0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtblN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0
aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9u
JiBjb2x1bW5FbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9ncmlkSXRlbSwgbV9ncmlkQ29sdW1uRW5kLCBjb2x1bW5FbmRQb3NpdGlvbik7IH0KLSAg
ICB2b2lkIHNldEdyaWRJdGVtUm93U3RhcnQoY29uc3QgR3JpZFBvc2l0aW9uJiByb3dTdGFydFBv
c2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVt
LCBtX2dyaWRSb3dTdGFydCwgcm93U3RhcnRQb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEdyaWRJ
dGVtUm93RW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93RW5kUG9zaXRpb24pIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZFJvd0VuZCwgcm93
RW5kUG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1uR2FwKGNvbnN0IExlbmd0aCYg
dikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRD
b2x1bW5HYXAsIHYpOyB9Ci0gICAgdm9pZCBzZXRHcmlkUm93R2FwKGNvbnN0IExlbmd0aCYgdikg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRSb3dH
YXAsIHYpOyB9Ci0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KLSAgICB2b2lk
IHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBpbmNyZW1lbnQsIFdURk1vdmUobGVuZ3RoKSk7
IH0KLSAgICB2b2lkIHNldE1hcnF1ZWVTcGVlZChpbnQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBzcGVlZCwgZik7IH0KLSAgICB2b2lkIHNldE1h
cnF1ZWVEaXJlY3Rpb24oRU1hcnF1ZWVEaXJlY3Rpb24gZCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBkaXJlY3Rpb24sIGQpOyB9Ci0gICAgdm9pZCBz
ZXRNYXJxdWVlQmVoYXZpb3IoRU1hcnF1ZWVCZWhhdmlvciBiKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGJlaGF2aW9yLCBiKTsgfQotICAgIHZvaWQg
c2V0TWFycXVlZUxvb3BDb3VudChpbnQgaSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9tYXJxdWVlLCBsb29wcywgaSk7IH0KLSAgICB2b2lkIHNldFVzZXJNb2RpZnko
RVVzZXJNb2RpZnkgdSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1c2VyTW9kaWZ5LCB1
KTsgfQotICAgIHZvaWQgc2V0VXNlckRyYWcoRVVzZXJEcmFnIGQpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgdXNlckRyYWcsIGQpOyB9Ci0gICAgdm9pZCBzZXRVc2VyU2VsZWN0KEVV
c2VyU2VsZWN0IHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNlclNlbGVjdCwgcyk7
IH0KLSAgICB2b2lkIHNldFRleHRPdmVyZmxvdyhUZXh0T3ZlcmZsb3cgb3ZlcmZsb3cpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dE92ZXJmbG93LCBvdmVyZmxvdyk7IH0KLSAg
ICB2b2lkIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBjKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkJlZm9yZUNvbGxhcHNlLCBjKTsgfQotICAg
IHZvaWQgc2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5BZnRlckNvbGxhcHNlLCBjKTsgfQotICAgIHZv
aWQgc2V0V29yZEJyZWFrKEVXb3JkQnJlYWsgYikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB3b3JkQnJlYWssIGIpOyB9Ci0gICAgdm9pZCBzZXRPdmVyZmxvd1dyYXAoRU92ZXJmbG93V3Jh
cCBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3JhcCwgYik7IH0KLSAg
ICB2b2lkIHNldE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIG5ic3BNb2RlLCBiKTsgfQotICAgIHZvaWQgc2V0TGluZUJyZWFrKExpbmVCcmVhayBiKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGxpbmVCcmVhaywgYik7IH0KLSAgICB2b2lkIHNl
dEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbnMs
IGgpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKHNob3J0IGxpbWl0KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0
KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRBZnRlciwgbGltaXQpOyB9
Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMoc2hvcnQgbGltaXQpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdExpbmVzLCBsaW1pdCk7IH0KLSAg
ICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaCkgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KLSAgICB2b2lk
IHNldEJvcmRlckZpdChFQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9ib3JkZXJGaXQsIGIpOyB9Ci0gICAgdm9pZCBzZXRSZXNpemUoRVJlc2l6ZSByKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVzaXplLCByKTsgfQotICAgIHZvaWQgc2V0
Q29sdW1uQXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXhpcywgYXhpcyk7IH0KLSAgICB2b2lkIHNldENvbHVt
blByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3Byb2dyZXNzaW9uLCBwcm9n
cmVzc2lvbik7IH0KLSAgICB2b2lkIHNldENvbHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXV0b1dpZHRoLCBmYWxz
ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3dp
ZHRoLCBmKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbldpZHRoKCkgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIHRydWUp
OyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV93aWR0
aCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtbkNvdW50KHVuc2lnbmVkIHNob3J0IGMpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXV0b0NvdW50
LCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29s
LCBtX2NvdW50LCBjKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbkNvdW50KCkgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRvQ291bnQs
IHRydWUpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwg
bV9jb3VudCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtbkZpbGwoQ29sdW1uRmlsbCBjb2x1bW5G
aWxsKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBt
X2ZpbGwsIGNvbHVtbkZpbGwpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5HYXAoZmxvYXQgZikgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ub3JtYWxH
YXAsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlD
b2wsIG1fZ2FwLCBmKTsgfQotICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29sdW1uR2FwKCkgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ub3JtYWxHYXAs
IHRydWUpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwg
bV9nYXAsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIGMp
IHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X211bHRpQ29sLCBtX3J1bGUsIGMpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5SdWxlU3R5bGUoRUJv
cmRlclN0eWxlIGIpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVs
dGlDb2wsIG1fcnVsZS5tX3N0eWxlLCBiKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUnVsZVdpZHRo
KHVuc2lnbmVkIHNob3J0IHcpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbXVsdGlDb2wsIG1fcnVsZS5tX3dpZHRoLCB3KTsgfQotICAgIHZvaWQgcmVzZXRDb2x1bW5S
dWxlKCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwg
bV9ydWxlLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uU3BhbihDb2x1bW5T
cGFuIGNvbHVtblNwYW4pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fY29sdW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KLSAgICB2b2lkIGluaGVyaXRD
b2x1bW5Qcm9wZXJ0aWVzRnJvbShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50KSB7IHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sID0gcGFyZW50LT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tdWx0aUNvbDsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV90cmFuc2Zvcm0sIG1fb3BlcmF0aW9ucywgb3BzKTsgfQotICAgIHZvaWQgc2V0VHJhbnNm
b3JtT3JpZ2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV94LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBz
ZXRUcmFuc2Zvcm1PcmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3ksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAg
ICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblooZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1feiwgZik7IH0KLSAgICB2b2lkIHNldFNw
ZWFrKEVTcGVhayBzKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHNwZWFrLCBzKTsgfQot
ICAgIHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3RleHRDb21iaW5lLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29y
YXRpb25Db2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3RleHREZWNvcmF0aW9uQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXND
b2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1w
aGFzaXNDb2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhh
c2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0Zp
bGwsIGZpbGwpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01h
cmsgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJrLCBt
YXJrKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25zdCBBdG9taWNT
dHJpbmcmIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyaywgbWFyayk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRF
bXBoYXNpc1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRl
eHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvQ29s
dW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbV9ncmlkQXV0b0NvbHVtbnMs
IHRyYWNrU2l6ZUxpc3QpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1Jvd3MoY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGdyaWQsIG1fZ3JpZEF1dG9Sb3dzLCB0cmFja1NpemVMaXN0KTsgfQor
ICAgIHZvaWQgc2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5n
dGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fZ3Jp
ZENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZ3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRB
dXRvUmVwZWF0Q29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbV9ncmlkQXV0b1Jl
cGVhdENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3Mo
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzLCBsZW5ndGhz
KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoY29u
c3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZCwgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50LCBpbnNl
cnRpb25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBv
aW50KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwg
aW5zZXJ0aW9uUG9pbnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBl
KGNvbnN0IEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlLCBhdXRv
UmVwZWF0VHlwZSk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c1R5cGUoY29uc3Qg
QXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgbV9hdXRvUmVwZWF0Um93c1R5cGUsIGF1dG9SZXBlYXRUeXBl
KTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGlu
ZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGdyaWQsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVt
bkxpbmVzKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlk
TGluZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGdyaWQsIG1fbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVz
KTsgfQorICAgIHZvaWQgc2V0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVy
ZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fb3JkZXJlZE5hbWVkR3Jp
ZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9pZCBz
ZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFw
JiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZCwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5M
aW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbV9hdXRvUmVwZWF0TmFt
ZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0
QXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1l
ZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBn
cmlkLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9
CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fYXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KTsgfQorICAgIHZvaWQgc2V0QXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25z
dCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBtX2F1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAg
ICB2b2lkIHNldE5hbWVkR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlk
QXJlYSkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBtX25h
bWVkR3JpZEFyZWEsIG5hbWVkR3JpZEFyZWEpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVh
Um93Q291bnQoc2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGdyaWQsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KKyAg
ICB2b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbV9uYW1lZEdyaWRB
cmVhQ29sdW1uQ291bnQsIGNvbHVtbkNvdW50KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93
KEdyaWRBdXRvRmxvdyBmbG93KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIGdyaWQsIG1fZ3JpZEF1dG9GbG93LCBmbG93KTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1D
b2x1bW5TdGFydChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtblN0YXJ0UG9zaXRpb24pIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIG1fZ3JpZENvbHVt
blN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1
bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwgbV9ncmlkQ29sdW1uRW5kLCBj
b2x1bW5FbmRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtUm93U3RhcnQoY29uc3Qg
R3JpZFBvc2l0aW9uJiByb3dTdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGdyaWRJdGVtLCBtX2dyaWRSb3dTdGFydCwgcm93U3RhcnRQb3NpdGlv
bik7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtUm93RW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93
RW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZEl0ZW0sIG1fZ3JpZFJvd0VuZCwgcm93RW5kUG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlk
Q29sdW1uR2FwKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBncmlkLCBtX2dyaWRDb2x1bW5HYXAsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldEdyaWRSb3dHYXAoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG1fZ3JpZFJvd0dhcCwgV1RGTW92ZShsZW5ndGgp
KTsgfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisKKyAgICB2b2lkIHNldE1h
cnF1ZWVJbmNyZW1lbnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGluY3JlbWVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQor
ICAgIHZvaWQgc2V0TWFycXVlZVNwZWVkKGludCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIHNwZWVkLCBmKTsgfQorICAgIHZvaWQgc2V0TWFycXVl
ZURpcmVjdGlvbihFTWFycXVlZURpcmVjdGlvbiBkKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGRpcmVjdGlvbiwgZCk7IH0KKyAgICB2b2lkIHNldE1h
cnF1ZWVCZWhhdmlvcihFTWFycXVlZUJlaGF2aW9yIGIpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9CisgICAgdm9pZCBzZXRN
YXJxdWVlTG9vcENvdW50KGludCBpKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1hcnF1ZWUsIGxvb3BzLCBpKTsgfQorICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNl
ck1vZGlmeSB1KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdXNlck1vZGlmeSwgdSk7
IH0KKyAgICB2b2lkIHNldFVzZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgdXNlckRyYWcsIGQpOyB9CisgICAgdm9pZCBzZXRVc2VyU2VsZWN0KEVV
c2VyU2VsZWN0IHMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBz
KTsgfQorICAgIHZvaWQgc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRPdmVyZmxvdywgb3ZlcmZsb3cpOyB9
CisgICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkJlZm9yZUNvbGxhcHNlLCBjKTsg
fQorICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMpOyB9
CisgICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdvcmRCcmVhayBiKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgd29yZEJyZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVP
dmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3Jh
cCwgYik7IH0KKyAgICB2b2lkIHNldE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9CisgICAgdm9pZCBzZXRMaW5lQnJlYWso
TGluZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIGIp
OyB9CisgICAgdm9pZCBzZXRIeXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIGh5cGhlbnMsIGgpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVm
b3JlKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRp
b25MaW1pdEJlZm9yZSwgbGltaXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QWZ0
ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIsIGxpbWl0KTsgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVz
KHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25M
aW1pdExpbmVzLCBsaW1pdCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0
IEF0b21pY1N0cmluZyYgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0
aW9uU3RyaW5nLCBoKTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwgYik7IH0KKyAgICB2b2lk
IHNldFJlc2l6ZShFUmVzaXplIHIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBy
ZXNpemUsIHIpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgYXhp
cyk7IH0KKyAgICB2b2lkIHNldENvbHVtblByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHBy
b2dyZXNzaW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBwcm9ncmVzc2lvbiwgcHJvZ3Jlc3Npb24pOyB9CisgICAgdm9pZCBzZXRDb2x1bW5XaWR0
aChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBhdXRvV2lkdGgsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIHdpZHRoLCBmKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbldp
ZHRoKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
YXV0b1dpZHRoLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bXVsdGlDb2wsIHdpZHRoLCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQ291bnQodW5zaWduZWQg
c2hvcnQgYykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNv
bCwgYXV0b0NvdW50LCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBjb3VudCwgYyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5Db3Vu
dCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1
dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCBjb3VudCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVtbkZpbGwoQ29sdW1uRmlsbCBj
b2x1bW5GaWxsKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBmaWxsLCBjb2x1bW5GaWxsKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZsb2F0IGYp
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIG5vcm1h
bEdhcCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0
aUNvbCwgZ2FwLCBmKTsgfQorICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29sdW1uR2FwKCkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgbm9ybWFsR2FwLCB0
cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGdh
cCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBT
RVRfQk9SREVSVkFMVUVfQ09MT1IobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tdWx0
aUNvbCwgcnVsZSwgYyk7IH0KKyAgICB2b2lkIHNldENvbHVtblJ1bGVTdHlsZShFQm9yZGVyU3R5
bGUgYikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
cnVsZS5tX3N0eWxlLCBiKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVdpZHRoKHVuc2lnbmVk
IHNob3J0IHcpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlD
b2wsIHJ1bGUubV93aWR0aCwgdyk7IH0KKyAgICB2b2lkIHJlc2V0Q29sdW1uUnVsZSgpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHJ1bGUsIEJvcmRl
clZhbHVlKCkpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5TcGFuKENvbHVtblNwYW4gY29sdW1uU3Bh
bikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY29s
dW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KKyAgICB2b2lkIGluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVz
RnJvbShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkubXVsdGlDb2wgPSBwYXJlbnQubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlD
b2w7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBv
cHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdHJhbnNmb3JtLCBv
cGVyYXRpb25zLCBvcHMpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCYm
IGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zv
cm0sIHgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblko
TGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHRyYW5zZm9ybSwgeSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3Jt
T3JpZ2luWihmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHRyYW5zZm9ybSwgeiwgZik7IH0KKyAgICB2b2lkIHNldFNwZWFrKEVTcGVhayBzKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9CisgICAgdm9pZCBzZXRUZXh0Q29t
YmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4
dENvbWJpbmUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25D
b2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBj
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9
CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9CisgICAg
dm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1h
cmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3Np
dGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNp
c1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KICAgICBib29sIHNldFRleHRPcmllbnRhdGlvbihUZXh0
T3JpZW50YXRpb24pOwogCi0gICAgdm9pZCBzZXRPYmplY3RGaXQoT2JqZWN0Rml0IGZpdCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29iamVjdEZpdCwgZml0KTsgfQotICAgIHZv
aWQgc2V0T2JqZWN0UG9zaXRpb24oY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb2JqZWN0UG9zaXRpb24sIHBvc2l0aW9uKTsgfQor
ICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBvYmplY3RGaXQsIGZpdCk7IH0KKyAgICB2b2lkIHNldE9iamVjdFBvc2l0
aW9uKGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG9iamVjdFBvc2l0aW9uLCBwb3NpdGlvbik7IH0KKworICAgIHZvaWQgc2V0UnVi
eVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHJ1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKLSAgICB2b2lkIHNldFJ1YnlQb3Np
dGlvbihSdWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bV9ydWJ5UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KIAotICAgIHZvaWQgc2V0RmlsdGVyKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9maWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQogI2lmIEVOQUJMRShGSUxU
RVJTX0xFVkVMXzIpCi0gICAgdm9pZCBzZXRCYWNrZHJvcEZpbHRlcihjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYmFj
a2Ryb3BGaWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQorICAgIHZvaWQgc2V0QmFja2Ryb3BG
aWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXplKSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIG1fdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldFRhYlNpemUo
dW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNp
emUpOyB9CiAKLSAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2
aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtCZWZvcmUsIGJyZWFr
QmVoYXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0d2VlbiBicmVha0Jl
aGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtBZnRlciwgYnJl
YWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFr
QmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9icmVha0luc2lkZSwg
YnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBi
cmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZv
cmUsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0d2Vl
biBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtB
ZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFrSW5z
aWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVh
a0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KICAgICAKLSAgICB2b2lkIHNldEhhbmdpbmdQdW5j
dHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgbV9oYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQorICAgIHZv
aWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVhdGlvbikg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVhdGlvbiwgcHVuY3R1
YXRpb24pOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBTZXR0ZXJzCiAKLSAgICB2b2lkIHNldExpbmVH
cmlkKGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdyaWQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9saW5lR3JpZCwgbGluZUdyaWQpOyB9Ci0gICAgdm9pZCBzZXRMaW5lU25hcChMaW5l
U25hcCBsaW5lU25hcCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVTbmFwLCBs
aW5lU25hcCk7IH0KLSAgICB2b2lkIHNldExpbmVBbGlnbihMaW5lQWxpZ24gbGluZUFsaWduKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUFsaWduLCBsaW5lQWxpZ24pOyB9Ci0K
LSAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmxvd1RocmVhZCwgZmxvd1RocmVhZCk7
IH0KLSAgICB2b2lkIHNldFJlZ2lvblRocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRo
cmVhZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvblRocmVhZCwgcmVn
aW9uVGhyZWFkKTsgfQotICAgIHZvaWQgc2V0UmVnaW9uRnJhZ21lbnQoUmVnaW9uRnJhZ21lbnQg
cmVnaW9uRnJhZ21lbnQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZWdpb25G
cmFnbWVudCwgcmVnaW9uRnJhZ21lbnQpOyB9CisgICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBB
dG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGlu
ZUdyaWQsIGxpbmVHcmlkKTsgfQorICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNu
YXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lU25hcCwgbGluZVNuYXApOyB9
CisgICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGxpbmVBbGlnbiwgbGluZUFsaWduKTsgfQogCi0gICAgLy8gQXBw
bGUtc3BlY2lmaWMgcHJvcGVydHkgc2V0dGVycwotICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhF
UG9pbnRlckV2ZW50cyBwKSB7IGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IHA7IH0K
KyAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxvd1RocmVhZCwgZmxvd1RocmVhZCk7
IH0KKyAgICB2b2lkIHNldFJlZ2lvblRocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRo
cmVhZCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHJlZ2lvblRocmVhZCwgcmVn
aW9uVGhyZWFkKTsgfQorICAgIHZvaWQgc2V0UmVnaW9uRnJhZ21lbnQoUmVnaW9uRnJhZ21lbnQg
cmVnaW9uRnJhZ21lbnQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZWdpb25G
cmFnbWVudCwgcmVnaW9uRnJhZ21lbnQpOyB9CiAKLSAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygp
Ci0gICAgewotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRp
b25zID0gbnVsbHB0cjsKLSAgICB9CisgICAgdm9pZCBzZXRQb2ludGVyRXZlbnRzKEVQb2ludGVy
RXZlbnRzIHApIHsgbV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzID0gcDsgfQogCi0gICAg
dm9pZCBjbGVhclRyYW5zaXRpb25zKCkKLSAgICB7Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gbnVsbHB0cjsKLSAgICB9CisgICAgdm9pZCBj
bGVhckFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhbnNpdGlvbnMoKTsKIAotICAgIHZv
aWQgaW5oZXJpdEFuaW1hdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50KSB7IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBwYXJlbnQgPyBzdGQ6Om1h
a2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0cjsgfQotICAgIHZvaWQg
aW5oZXJpdFRyYW5zaXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudCkgeyByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IHBhcmVudCA/IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBh
ZGp1c3RBbmltYXRpb25zKCk7CiAgICAgdm9pZCBhZGp1c3RUcmFuc2l0aW9ucygpOwogCi0gICAg
dm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFuc2Zvcm1TdHlsZTNEIGIpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm1TdHlsZTNELCBiKTsgfQotICAgIHZvaWQg
c2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZpc2liaWxpdHkgYikgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tmYWNlVmlzaWJpbGl0eSwgYik7IH0KLSAgICB2b2lk
IHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9wZXJzcGVjdGl2ZSwgcCk7IH0KLSAgICB2b2lkIHNldFBlcnNwZWN0aXZlT3JpZ2luWChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmVP
cmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdp
blkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNw
ZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFnZVNpemUo
TGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNp
emUsIFdURk1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRQYWdlU2l6ZVR5cGUoUGFnZVNpemVU
eXBlIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIHQp
OyB9Ci0gICAgdm9pZCByZXNldFBhZ2VTaXplVHlwZSgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBBR0VfU0laRV9BVVRPKTsgfQotCi0gICAgdm9pZCBz
ZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9Ci0gICAgdm9pZCBzZXRMaW5lQ2xhbXAoTGlu
ZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAs
IGMpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFuc2Zvcm1TdHlsZTNEIGIp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm1TdHlsZTNELCBiKTsg
fQorICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZpc2liaWxpdHkgYikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tmYWNlVmlzaWJpbGl0eSwgYik7
IH0KKyAgICB2b2lkIHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZSwgcCk7IH0KKyAgICB2b2lkIHNldFBlcnNwZWN0aXZl
T3JpZ2luWChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBwZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBl
cnNwZWN0aXZlT3JpZ2luWShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBwZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHBhZ2VTaXplLCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0UGFnZVNp
emVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
cGFnZVNpemVUeXBlLCB0KTsgfQorICAgIHZvaWQgcmVzZXRQYWdlU2l6ZVR5cGUoKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGFnZVNpemVUeXBlLCBQQUdFX1NJWkVfQVVUTyk7
IH0KKworICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRhaW4gYykgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVCb3hDb250YWluLCBjKTsgfQorICAgIHZvaWQg
c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBsaW5lQ2xhbXAsIGMpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRJbml0aWFsTGV0dGVy
KGNvbnN0IEludFNpemUmIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9p
bml0aWFsTGV0dGVyLCBzaXplKTsgfQorICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJ
bnRTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaW5pdGlhbExl
dHRlciwgc2l6ZSk7IH0KICAgICAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQg
c2V0VG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV90b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvdWNo
QWN0aW9uKSk7IH0KKyAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNoQWN0aW9uIHRvdWNoQWN0
aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdG91Y2hBY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgLy8gU2Nyb2xsIHNuYXAgcG9ydCBzdHlsZS4KICAgICB2b2lk
IHNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJik7Ci0gICAgdm9pZCBzZXRT
Y3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGlu
Z0JvdHRvbShjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdMZWZ0KGNv
bnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KGNvbnN0IExlbmd0
aCYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJik7CisgICAgdm9pZCBz
ZXRTY3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRp
bmdMZWZ0KExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5ndGgm
Jik7CiAKLSAgICAvLyBTY3JvbGwgc25hcCBhcmVhIHN0eWxlLgogICAgIHZvaWQgc2V0U2Nyb2xs
U25hcEFsaWduKGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYpOwotICAgIHZvaWQgc2V0U2Nyb2xsU25h
cE1hcmdpblRvcChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5C
b3R0b20oY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChj
b25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5SaWdodChjb25zdCBM
ZW5ndGgmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoTGVuZ3RoJiYpOworICAg
IHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShMZW5ndGgmJik7CisgICAgdm9pZCBzZXRT
Y3JvbGxTbmFwTWFyZ2luTGVmdChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFy
Z2luUmlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRU
YXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgdm9pZCBzZXRUb3VjaENhbGxvdXRFbmFibGVkKGJvb2wgdikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsgfQorICAgIHZvaWQgc2V0
VG91Y2hDYWxsb3V0RW5hYmxlZChib29sIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxF
UkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgIHZvaWQgc2V0VXNlVG91Y2hPdmVyZmxvd1Nj
cm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZywgdik7IH0KKyAgICB2b2lkIHNldFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxp
bmcoYm9vbCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdXNlVG91Y2hPdmVyZmxv
d1Njcm9sbGluZywgdik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
LSAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudCBhbkFkanVzdG1l
bnQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNpemVBZGp1c3QsIGFuQWRqdXN0
bWVudCk7IH0KKyAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudCBh
bkFkanVzdG1lbnQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2l6ZUFkanVz
dCwgYW5BZGp1c3RtZW50KTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRleHRTZWN1cml0eShF
VGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5KTsgfQorICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5
KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRleHRTZWN1cml0eSwgYVRleHRTZWN1cml0eSk7IH0KIAogI2lmIEVOQUJMRShDU1NfVFJB
SUxJTkdfV09SRCkKLSAgICB2b2lkIHNldFRyYWlsaW5nV29yZChUcmFpbGluZ1dvcmQgdikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0cmFpbGluZ1dvcmQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2KSk7IH0KKyAgICB2b2lkIHNldFRyYWlsaW5nV29yZChUcmFpbGluZ1dvcmQgdikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRyYWlsaW5nV29yZCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHYpKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIHZvaWQg
c2V0QXBwbGVQYXlCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxlIHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBsZVBheUJ1dHRvblN0eWxlLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odikpOyB9Ci0gICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQYXlC
dXR0b25UeXBlIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBsZVBheUJ1
dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lkIHNldEFwcGxl
UGF5QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHYpKTsgfQorICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlw
ZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25UeXBl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFNWR1Jl
bmRlclN0eWxlJiBzdmdTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N2Z1N0eWxlOyB9Ci0gICAg
U1ZHUmVuZGVyU3R5bGUmIGFjY2Vzc1NWR1N0eWxlKCkgeyByZXR1cm4gKm1fc3ZnU3R5bGUuYWNj
ZXNzKCk7IH0KKyAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3N2Z1N0eWxlOyB9CisgICAgU1ZHUmVuZGVyU3R5bGUmIGFjY2Vzc1NWR1N0eWxlKCkg
eyByZXR1cm4gbV9zdmdTdHlsZS5hY2Nlc3MoKTsgfQogCiAgICAgY29uc3QgU1ZHUGFpbnRUeXBl
JiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRUeXBl
KCk7IH0KICAgICBDb2xvciBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCkuZmlsbFBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHX1BBSU5UVFlQRV9S
R0JDT0xPUiwgYywgIiIpOyB9CisgICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHX1BBSU5UVFlQRV9S
R0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxvYXQgZmlsbE9wYWNpdHko
KSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNl
dEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsT3BhY2l0eShm
KTsgfQogCiAgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9CiAgICAgQ29sb3Igc3Ryb2tl
UGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlUGFpbnRDb2xvcigp
OyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vz
c1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBh
Y2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGNv
bG9yLCBlbXB0eVN0cmluZygpKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZU9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tl
T3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlT3BhY2l0eShmKTsg
fQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLnN0cm9rZVdpZHRoKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVdpZHRoKExlbmd0aCB3KSB7
IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAgICB2b2lkIHNldFN0cm9r
ZVdpZHRoKExlbmd0aCYmIHcpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VXaWR0aChXVEZN
b3ZlKHcpKTsgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VEYXNoQXJyYXkoKTsgfQogICAgIHZvaWQg
c2V0U3Ryb2tlRGFzaEFycmF5KFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gYXJyYXkpIHsgYWNjZXNz
U1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoQXJyYXkoYXJyYXkpOyB9CiAgICAgY29uc3QgTGVuZ3Ro
JiBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VEYXNo
T2Zmc2V0KCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoTGVuZ3RoIGQpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9CisgICAgdm9pZCBzZXRTdHJv
a2VEYXNoT2Zmc2V0KExlbmd0aCYmIGQpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNo
T2Zmc2V0KFdURk1vdmUoZCkpOyB9CiAgICAgZmxvYXQgc3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0
IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlTWl0ZXJMaW1pdCgpOyB9CiAgICAgdm9pZCBzZXRT
dHJva2VNaXRlckxpbWl0KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VNaXRl
ckxpbWl0KGYpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3QgeyByZXR1cm4gc3Zn
U3R5bGUoKS5jeCgpOyB9Ci0gICAgdm9pZCBzZXRDeChMZW5ndGggY3gpIHsgYWNjZXNzU1ZHU3R5
bGUoKS5zZXRDeChjeCk7IH0KKyAgICB2b2lkIHNldEN4KExlbmd0aCYmIGN4KSB7IGFjY2Vzc1NW
R1N0eWxlKCkuc2V0Q3goV1RGTW92ZShjeCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBjeSgpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3koKTsgfQotICAgIHZvaWQgc2V0Q3koTGVuZ3RoIGN5
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3koY3kpOyB9CisgICAgdm9pZCBzZXRDeShMZW5ndGgm
JiBjeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN5KFdURk1vdmUoY3kpKTsgfQogICAgIGNvbnN0
IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkucigpOyB9Ci0gICAgdm9pZCBz
ZXRSKExlbmd0aCByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihyKTsgfQorICAgIHZvaWQgc2V0
UihMZW5ndGgmJiByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihXVEZNb3ZlKHIpKTsgfQogICAg
IGNvbnN0IExlbmd0aCYgcngoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnJ4KCk7IH0KLSAg
ICB2b2lkIHNldFJ4KExlbmd0aCByeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFJ4KHJ4KTsgfQor
ICAgIHZvaWQgc2V0UngoTGVuZ3RoJiYgcngpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRSeChXVEZN
b3ZlKHJ4KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5yeSgpOyB9Ci0gICAgdm9pZCBzZXRSeShMZW5ndGggcnkpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRSeShyeSk7IH0KKyAgICB2b2lkIHNldFJ5KExlbmd0aCYmIHJ5KSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0UnkoV1RGTW92ZShyeSkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3Qg
eyByZXR1cm4gc3ZnU3R5bGUoKS54KCk7IH0KLSAgICB2b2lkIHNldFgoTGVuZ3RoIHgpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRYKHgpOyB9CisgICAgdm9pZCBzZXRYKExlbmd0aCYmIHgpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRYKFdURk1vdmUoeCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiB5KCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS55KCk7IH0KLSAgICB2b2lkIHNldFkoTGVuZ3RoIHkp
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKHkpOyB9CisgICAgdm9pZCBzZXRZKExlbmd0aCYmIHkp
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKFdURk1vdmUoeSkpOyB9CiAKICAgICBmbG9hdCBmbG9v
ZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29kT3BhY2l0eSgpOyB9CiAg
ICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZs
b29kT3BhY2l0eShmKTsgfQpAQCAtMTgwNyw0MCArMTMzMywyNSBAQCBwdWJsaWM6CiAgICAgU1ZH
TGVuZ3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkua2VybmluZygp
OyB9CiAgICAgdm9pZCBzZXRLZXJuaW5nKFNWR0xlbmd0aFZhbHVlIGspIHsgYWNjZXNzU1ZHU3R5
bGUoKS5zZXRLZXJuaW5nKGspOyB9CiAKLSAgICB2b2lkIHNldFNoYXBlT3V0c2lkZShSZWZQdHI8
U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9zaGFwZU91dHNpZGUgPT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3NoYXBlT3V0c2lkZSA9IFdURk1v
dmUodmFsdWUpOwotICAgIH0KLSAgICBTaGFwZVZhbHVlKiBzaGFwZU91dHNpZGUoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUuZ2V0KCk7IH0KLQot
ICAgIHN0YXRpYyBTaGFwZVZhbHVlKiBpbml0aWFsU2hhcGVPdXRzaWRlKCkgeyByZXR1cm4gMDsg
fQorICAgIHZvaWQgc2V0U2hhcGVPdXRzaWRlKFJlZlB0cjxTaGFwZVZhbHVlPiYmKTsKKyAgICBT
aGFwZVZhbHVlKiBzaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5zaGFwZU91dHNpZGUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgU2hhcGVWYWx1ZSogaW5p
dGlhbFNoYXBlT3V0c2lkZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIGNvbnN0IExlbmd0
aCYgc2hhcGVNYXJnaW4oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9z
aGFwZU1hcmdpbjsgfQotICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3RoIHNoYXBlTWFyZ2lu
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVNYXJnaW4sIFdURk1vdmUo
c2hhcGVNYXJnaW4pKTsgfQorICAgIGNvbnN0IExlbmd0aCYgc2hhcGVNYXJnaW4oKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU1hcmdpbjsgfQorICAgIHZvaWQg
c2V0U2hhcGVNYXJnaW4oTGVuZ3RoJiYgc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzaGFwZU1hcmdpbiwgV1RGTW92ZShzaGFwZU1hcmdpbikpOyB9CiAgICAg
c3RhdGljIExlbmd0aCBpbml0aWFsU2hhcGVNYXJnaW4oKSB7IHJldHVybiBMZW5ndGgoMCwgRml4
ZWQpOyB9CiAKLSAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVJbWFnZVRocmVzaG9sZDsgfQotICAgIHZvaWQg
c2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKSAKLSAgICB7
IAotICAgICAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9IGNsYW1wVG88Zmxv
YXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAsIDEpOwotICAgICAgICBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdlVGhy
ZXNob2xkKTsgCi0gICAgfQorICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZUltYWdlVGhyZXNob2xkOyB9Cisg
ICAgdm9pZCBzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQg
aW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSB7IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIHNl
dENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCi0gICAgewot
ICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGggIT0gb3BlcmF0aW9u
KQotICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY2xpcFBhdGgg
PSBXVEZNb3ZlKG9wZXJhdGlvbik7Ci0gICAgfQotICAgIENsaXBQYXRoT3BlcmF0aW9uKiBjbGlw
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoLmdl
dCgpOyB9Ci0KKyAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4m
Jik7CisgICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGguZ2V0KCk7IH0KICAgICBzdGF0aWMgQ2xpcFBh
dGhPcGVyYXRpb24qIGluaXRpYWxDbGlwUGF0aCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAg
IGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnREYXRhKCk7IH0KLSAgICBj
b25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9jb250ZW50LmdldCgpOyB9Ci0gICAgYm9vbCBjb250ZW50RGF0YUVxdWl2
YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8UmVuZGVyU3R5bGUqPih0aGlzKS0+cmFyZU5vbkluaGVyaXRlZERhdGEtPmNvbnRlbnRE
YXRhRXF1aXZhbGVudCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90aGVyU3R5bGUpLT5yYXJl
Tm9uSW5oZXJpdGVkRGF0YSk7IH0KKyAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50LmdldCgpOyB9
CisgICAgYm9vbCBjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVy
U3R5bGUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPih0aGlzKS0+bV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Y29udGVudERhdGFFcXVpdmFsZW50KCpjb25zdF9jYXN0PFJl
bmRlclN0eWxlKj4ob3RoZXJTdHlsZSktPm1fcmFyZU5vbkluaGVyaXRlZERhdGEpOyB9CiAgICAg
dm9pZCBjbGVhckNvbnRlbnQoKTsKICAgICB2b2lkIHNldENvbnRlbnQoY29uc3QgU3RyaW5nJiwg
Ym9vbCBhZGQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdl
PiYmLCBib29sIGFkZCA9IGZhbHNlKTsKQEAgLTE4NDgsMjYgKzEzNTksMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q29udGVudChRdW90ZVR5cGUsIGJvb2wgYWRkID0gZmFsc2UpOwogICAgIHZv
aWQgc2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBj
b250ZW50QWx0VGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQXR0ckNvbnRlbnQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBdHRyQ29udGVudDsgfQorICAgIGJv
b2wgaGFzQXR0ckNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5oYXNBdHRyQ29udGVudDsgfQogICAgIHZvaWQgc2V0SGFzQXR0ckNvbnRlbnQoKTsKIAogICAg
IGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIGNvdW50ZXJEaXJlY3RpdmVzKCkgY29uc3Q7CiAg
ICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgYWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKICAgICBj
b25zdCBDb3VudGVyRGlyZWN0aXZlcyBnZXRDb3VudGVyRGlyZWN0aXZlcyhjb25zdCBBdG9taWNT
dHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgUXVvdGVzRGF0YSogcXVvdGVzKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcy5nZXQoKTsgfQorICAgIFF1b3Rl
c0RhdGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3Rl
cy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UXVvdGVzKFJlZlB0cjxRdW90ZXNEYXRhPiYmKTsKIAot
ICAgIFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZS5nZXQoKTsgfQorICAgIFdpbGxDaGFuZ2VEYXRhKiB3
aWxsQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENo
YW5nZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0V2lsbENoYW5nZShSZWZQdHI8V2lsbENoYW5nZURh
dGE+JiYpOwogCi0gICAgYm9vbCB3aWxsQ2hhbmdlQ3JlYXRlc1N0YWNraW5nQ29udGV4dCgpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxDaGFuZ2UoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aWxsQ2hhbmdlKCktPmNhbkNyZWF0
ZVN0YWNraW5nQ29udGV4dCgpOwotICAgIH0KKyAgICBib29sIHdpbGxDaGFuZ2VDcmVhdGVzU3Rh
Y2tpbmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlblN0
cmluZygpIGNvbnN0OwogCkBAIC0xODg3LDQxICsxMzkyLDI5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUlu
bGluZVR5cGUob3JpZ2luYWxEaXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJs
ZU9yR3JpZEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KGRp
c3BsYXkoKSk7IH0KICAgICBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KCkgY29uc3QgeyByZXR1
cm4gaXNEaXNwbGF5RmxleGlibGVCb3goZGlzcGxheSgpKTsgfQotICAgIGJvb2wgaXNEaXNwbGF5
UmVnaW9uVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZGlzcGxheSgpID09IEJM
T0NLIHx8IGRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sKLSAgICAgICAgICAgIHx8IGRpc3BsYXko
KSA9PSBUQUJMRV9DRUxMIHx8IGRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OCi0gICAgICAgICAg
ICB8fCBkaXNwbGF5KCkgPT0gTElTVF9JVEVNOwotICAgIH0KKyAgICBib29sIGlzRGlzcGxheVJl
Z2lvblR5cGUoKSBjb25zdDsKIAotICAgIGJvb2wgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUg
dikKLSAgICB7Ci0gICAgICAgIGlmICh2ID09IHdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYm9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSk7CiAKLSAg
ICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSB2OwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01v
ZGUoKTsgfQotICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdikg
eyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9
CisgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpOyB9CisgICAg
dm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoYm9vbCB2KSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3Muc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9CiAKICAgICAvLyBB
IHVuaXF1ZSBzdHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhpbmcgdGhhdCBtYWtl
cyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1
cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmlzVW5pcXVlKCk7IH0KLSAgICB2b2lkIHNldFVuaXF1ZSgp
IHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldElzVW5pcXVlKCk7IH0KKyAgICBib29sIHVuaXF1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNVbmlxdWUoKTsgfQorICAgIHZv
aWQgc2V0VW5pcXVlKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldElzVW5pcXVlKCk7IH0KIAot
ICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5l
bXB0eVN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1
ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RW1wdHlTdGF0ZShiKTsgfQotICAgIGJvb2wgZmly
c3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmZpcnN0Q2hp
bGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgp
OyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0Rmlyc3RDaGlsZFN0YXRlKHRydWUpOyB9Ci0gICAgYm9v
bCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5sYXN0
Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVl
KCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJv
b2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZW1wdHlT
dGF0ZSgpOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsg
bV9ub25Jbmhlcml0ZWRGbGFncy5zZXRFbXB0eVN0YXRlKGIpOyB9CisgICAgYm9vbCBmaXJzdENo
aWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmZpcnN0Q2hpbGRT
dGF0ZSgpOyB9CisgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBt
X25vbkluaGVyaXRlZEZsYWdzLnNldEZpcnN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJvb2wg
bGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmxhc3RD
aGlsZFN0YXRlKCk7IH0KKyAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUo
KTsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3Bl
cnR5KSBjb25zdDsKICAgICBib29sIGJhY2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmlu
Z1Zpc2l0ZWQoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdCB7IHJldHVybiBjb2xvciA9PSBiYWNr
Z3JvdW5kQ29sb3IoKTsgfQogCi0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQ
cm9wZXJ0aWVzKHRydWUpOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5SW5o
ZXJpdGVkUHJvcGVydGllcygpOyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVk
UHJvcGVydGllcygpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5SW5oZXJp
dGVkUHJvcGVydGllcyh0cnVlKTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7IH0KICAgICAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBm
b3IgYWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEVPdmVyZmxvdyBpbml0aWFsT3ZlcmZs
b3dYKCkgeyByZXR1cm4gT1ZJU0lCTEU7IH0KQEAgLTE5NDAsMTUgKzE0MzMsMTQgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBFQm9yZGVyU3R5bGUgaW5pdGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4g
Qk5PTkU7IH0KICAgICBzdGF0aWMgT3V0bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNB
dXRvKCkgeyByZXR1cm4gQVVUT19PRkY7IH0KICAgICBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgaW5p
dGlhbE5pbmVQaWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBpZWNlSW1hZ2UoKTsgfQotICAgIHN0
YXRpYyBMZW5ndGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJldHVybiBMZW5ndGhTaXpl
KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOyB9CisgICAgc3RhdGljIExlbmd0
aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAs
IEZpeGVkIH0gfTsgfQogICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRpb25TaWRl
KCkgeyByZXR1cm4gQ0FQVE9QOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVt
bkF4aXMoKSB7IHJldHVybiBBdXRvQ29sdW1uQXhpczsgfQogICAgIHN0YXRpYyBDb2x1bW5Qcm9n
cmVzc2lvbiBpbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBOb3JtYWxDb2x1bW5Q
cm9ncmVzc2lvbjsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24o
KSB7IHJldHVybiBMVFI7IH0KICAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdyaXRpbmdN
b2RlKCkgeyByZXR1cm4gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRpYyBUZXh0
Q29tYmluZSBpbml0aWFsVGV4dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZU5vbmU7IH0K
LSAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJl
dHVybiBUZXh0T3JpZW50YXRpb246OgotICAgIE1peGVkOyB9CisgICAgc3RhdGljIFRleHRPcmll
bnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9u
OjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0
dXJuIE9iamVjdEZpdEZpbGw7IH0KICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVj
dFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSwg
TGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0KICAgICBzdGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFs
RW1wdHlDZWxscygpIHsgcmV0dXJuIFNIT1c7IH0KQEAgLTE5NjAsOSArMTQ1Miw2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgeyBy
ZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5n
KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJl
dHVybiBDdXJzb3JBdXRvOyB9Ci0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIHN0
YXRpYyBDdXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4g
Q3Vyc29yVmlzaWJpbGl0eUF1dG87IH0KLSNlbmRpZgogICAgIHN0YXRpYyBDb2xvciBpbml0aWFs
Q29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSog
aW5pdGlhbExpc3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsQm9yZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CkBAIC0xOTc5LDIyICsxNDY4LDExIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUZXh0SW5kZW50KCkgeyByZXR1cm4g
TGVuZ3RoKEZpeGVkKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFplcm9MZW5ndGgoKSB7
IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsT25lTGVu
Z3RoKCkgeyByZXR1cm4gTGVuZ3RoKDEsIEZpeGVkKTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQp
Ci0gICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0
dXJuIFRleHRJbmRlbnRGaXJzdExpbmU7IH0KLSAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5p
dGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudE5vcm1hbDsgfQotI2VuZGlm
CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxXaWRvd3MoKSB7IHJldHVybiAyOyB9CiAgICAgc3Rh
dGljIHNob3J0IGluaXRpYWxPcnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7
IH0KLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bFNwZWNpZmllZExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7
IH0KLSNlbmRpZgogICAgIHN0YXRpYyBFVGV4dEFsaWduIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJl
dHVybiBUQVNUQVJUOyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVj
b3JhdGlvbigpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsgfQotI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCi0gICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7
IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQotICAgIHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0
aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KLSNlbmRpZiAvLyBD
U1MzX1RFWFQKICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29y
YXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQogICAgIHN0
YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0
dXJuIFRleHREZWNvcmF0aW9uU2tpcEF1dG87IH0KICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBv
c2l0aW9uIGluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJs
aW5lUG9zaXRpb25BdXRvOyB9CkBAIC0yMDA5LDggKzE0ODcsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEVCb3hPcmllbnQgaW5pdGlhbEJveE9yaWVudCgpIHsgcmV0dXJuIEhPUklaT05UQUw7IH0K
ICAgICBzdGF0aWMgRUJveFBhY2sgaW5pdGlhbEJveFBhY2soKSB7IHJldHVybiBTdGFydDsgfQog
ICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm94RmxleCgpIHsgcmV0dXJuIDAuMGY7IH0KLSAgICBz
dGF0aWMgdW5zaWduZWQgaW50IGluaXRpYWxCb3hGbGV4R3JvdXAoKSB7IHJldHVybiAxOyB9Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGludCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4g
MTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94RmxleEdyb3VwKCkgeyByZXR1cm4g
MTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1
cm4gMTsgfQogICAgIHN0YXRpYyBFQm94U2l6aW5nIGluaXRpYWxCb3hTaXppbmcoKSB7IHJldHVy
biBDT05URU5UX0JPWDsgfQogICAgIHN0YXRpYyBTdHlsZVJlZmxlY3Rpb24qIGluaXRpYWxCb3hS
ZWZsZWN0KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxleEdyb3co
KSB7IHJldHVybiAwOyB9CkBAIC0yMDgzLDYgKzE1NjEsMjIgQEAgcHVibGljOgogICAgIHN0YXRp
YyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJu
IGVtcHR5QXRvbTsgfQogCisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBzdGF0aWMgVGV4dElu
ZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudEZpcnN0
TGluZTsgfQorICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUo
KSB7IHJldHVybiBUZXh0SW5kZW50Tm9ybWFsOyB9CisgICAgc3RhdGljIFRleHRBbGlnbkxhc3Qg
aW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQorICAg
IHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVz
dGlmeUF1dG87IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAg
IHN0YXRpYyBDdXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1
cm4gQ3Vyc29yVmlzaWJpbGl0eUF1dG87IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkg
eyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIFRleHRTaXpl
QWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVz
dG1lbnQoKTsgfQorI2VuZGlmCisKICAgICBzdGF0aWMgYm9vbCBpc0NTU0dyaWRMYXlvdXRFbmFi
bGVkKCk7CiAKICAgICBzdGF0aWMgV2lsbENoYW5nZURhdGEqIGluaXRpYWxXaWxsQ2hhbmdlKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMjEzOCw3ICsxNjMyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29sdW1uRW5kKCkgeyByZXR1cm4gR3Jp
ZFBvc2l0aW9uKCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRlbVJv
d1N0YXJ0KCkgeyByZXR1cm4gR3JpZFBvc2l0aW9uKCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0
aW9uIGluaXRpYWxHcmlkSXRlbVJvd0VuZCgpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9Ci0j
ZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KKyNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyBy
ZXR1cm4gODsgfQogCkBAIC0yMTUwLDQxICsxNjQ0LDQzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVnaW9uVGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0
b207IH0KICAgICBzdGF0aWMgUmVnaW9uRnJhZ21lbnQgaW5pdGlhbFJlZ2lvbkZyYWdtZW50KCkg
eyByZXR1cm4gQXV0b1JlZ2lvbkZyYWdtZW50OyB9CiAKLSAgICAvLyBLZWVwIHRoZXNlIGF0IHRo
ZSBlbmQuCiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbEluaXRpYWxMZXR0ZXIoKSB7IHJldHVy
biBJbnRTaXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVDbGFt
cCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgRVRleHRTZWN1cml0
eSBpbml0aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNOT05FOyB9Ci0jaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKLSAgICBzdGF0aWMgVGV4dFNpemVBZGp1c3RtZW50IGluaXRpYWxUZXh0
U2l6ZUFkanVzdCgpIHsgcmV0dXJuIFRleHRTaXplQWRqdXN0bWVudCgpOyB9Ci0jZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVG91Y2hDYWxsb3V0RW5h
YmxlZCgpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCk7CiAjZW5kaWYK
KwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgc3RhdGljIGNv
bnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25z
KCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVE
YXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKKwogICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBpbml0aWFsRmlsdGVyKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmlsdGVyT3Bl
cmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CisKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8y
KQogICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BGaWx0
ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVy
biBvcHM7IH0KICNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0
aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7
IH0KICAgICBzdGF0aWMgSXNvbGF0aW9uIGluaXRpYWxJc29sYXRpb24oKSB7IHJldHVybiBJc29s
YXRpb25BdXRvOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNQbGFjZWhvbGRlclN0eWxlKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faXNQbGFjZWhvbGRlclN0eWxlOyB9
Ci0gICAgdm9pZCBzZXRJc1BsYWNlaG9sZGVyU3R5bGUoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1faXNQbGFjZWhvbGRlclN0eWxlLCB0cnVlKTsgfQorICAgIGJvb2wgaXNQbGFj
ZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aXNQ
bGFjZWhvbGRlclN0eWxlOyB9CisgICAgdm9pZCBzZXRJc1BsYWNlaG9sZGVyU3R5bGUoKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaXNQbGFjZWhvbGRlclN0eWxlLCB0cnVlKTsg
fQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZW5kZXJTdHlsZSwgbm9uaW5oZXJpdGVkX2ZsYWdz
KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgbm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVuZGVyU3R5bGUsIG1fbm9uSW5oZXJpdGVkRmxh
Z3MpOyB9CiAKLXByaXZhdGU6CiAgICAgYm9vbCBjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3co
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzTGF5b3V0
KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcykgY29uc3Q7CiAgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRP
bmx5KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZl
UHJvcGVydGllcykgY29uc3Q7CkBAIC0yMTk0LDkyICsxNjkwLDU4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5bGUmLCB1
bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKIAogICAg
IHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZvaWQgc2V0Vmlz
aXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7IH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYp
OyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlclJp
Z2h0Q29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRl
ZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9y
ZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV92aXNpdGVkTGlua091dGxpbmVDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRl
ZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0Vmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQotCi0gICAgdm9p
ZCBpbmhlcml0VW5pY29kZUJpZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldFVuaWNvZGVCaWRpKHBhcmVudC0+bm9uaW5oZXJpdGVkX2ZsYWdz
LnVuaWNvZGVCaWRpKCkpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rQmFja2dyb3VuZENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3Jk
ZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdik7IH0KKyAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xv
ciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVy
VG9wQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yLCB2KTsgfQorICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVt
cGhhc2lzQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlu
a1RleHRGaWxsQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VD
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQorCisgICAgdm9pZCBpbmhlcml0VW5pY29kZUJp
ZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5z
ZXRVbmljb2RlQmlkaShwYXJlbnQtPm1fbm9uSW5oZXJpdGVkRmxhZ3MudW5pY29kZUJpZGkoKSk7
IH0KICAgICB2b2lkIGdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5p
dCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0
JiBsZWZ0KSBjb25zdDsKICAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQo
Y29uc3QgU2hhZG93RGF0YSopIGNvbnN0OwogICAgIHZvaWQgZ2V0U2hhZG93SG9yaXpvbnRhbEV4
dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmln
aHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoY29uc3QgU2hhZG93
RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBjb25zdDsKLSAgICB2
b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3csIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdl
dFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0
KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxS
aWdodCk7Ci0gICAgfQotICAgIHZvaWQgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoY29u
c3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlvdXRVbml0
JiBsb2dpY2FsQm90dG9tKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxU
b3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxv
Z2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOwotICAgIH0KLQotICAgIGJvb2wgaXNEaXNwbGF5UmVw
bGFjZWRUeXBlKEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfQk9YIHx8IGRpc3Bs
YXkgPT0gSU5MSU5FX0ZMRVgKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICAg
ICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRAotI2VuZGlmCi0gICAgICAgICAgICB8fCBkaXNw
bGF5ID09IElOTElORV9UQUJMRTsKLSAgICB9Ci0KLSAgICBib29sIGlzRGlzcGxheUlubGluZVR5
cGUoRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaXNwbGF5
ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9G
TEVYOwotICAgIH0KLQotICAgIGJvb2wgaXNEaXNwbGF5R3JpZEJveChFRGlzcGxheSBkaXNwbGF5
KSBjb25zdAotICAgIHsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICByZXR1
cm4gZGlzcGxheSA9PSBHUklEIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQ7Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0oZGlzcGxheSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotICAgIH0KKyAgICB2b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBT
aGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxS
aWdodCkgY29uc3Q7CisgICAgdm9pZCBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25z
dCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNh
bEJvdHRvbSkgY29uc3Q7CiAKLSAgICBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVE
aXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNEaXNwbGF5Rmxl
eGlibGVCb3goZGlzcGxheSkgfHwgaXNEaXNwbGF5R3JpZEJveChkaXNwbGF5KTsKLSAgICB9Cisg
ICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0
aWMgYm9vbCBpc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBp
c0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5
R3JpZEJveChFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdy
aWRCb3goRURpc3BsYXkpOwogCiAgICAgLy8gQ29sb3IgYWNjZXNzb3JzIGFyZSBhbGwgcHJpdmF0
ZSB0byBtYWtlIHN1cmUgY2FsbGVycyB1c2UgdmlzaXRlZERlcGVuZGVudENvbG9yIGluc3RlYWQg
dG8gYWNjZXNzIHRoZW0uCiAgICAgc3RhdGljIENvbG9yIGludmFsaWRDb2xvcigpIHsgcmV0dXJu
IENvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuY29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9y
JiBib3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdo
dCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xv
ciYgYm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJv
dHRvbSgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJv
cmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVm
dCgpLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9CisgICAg
Y29uc3QgQ29sb3ImIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPmJvcmRlci50b3AoKS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJvcmRlckJvdHRv
bUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20oKS5j
b2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZERhdGEtPmNvbG9yOyB9CiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkg
Y29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuY29sb3IoKTsgfQotICAg
IGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQt
Pm91dGxpbmUoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIHRleHRFbXBoYXNpc0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yOyB9
Ci0gICAgY29uc3QgQ29sb3ImIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB0ZXh0U3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9y
OyB9CisgICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlLmNvbG9yKCk7IH0KKyAgICBjb25z
dCBDb2xvciYgb3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+
b3V0bGluZS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRFbXBoYXNpc0NvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3I7IH0K
KyAgICBjb25zdCBDb2xvciYgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dFN0cm9r
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNv
bG9yOyB9CiAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdDsKLSAgICBj
b25zdCBDb2xvciYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsgfQotICAg
IGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOyB9Ci0g
ICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsg
fQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21D
b2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJUb3BD
b2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua091dGxpbmVDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9y
OyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fdmlzaXRlZExpbmtD
b2x1bW5SdWxlQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dERlY29yYXRpb25Db2xvcigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uQ29s
b3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtUZXh0RGVj
b3JhdGlvbkNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lz
Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0
RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRGaWxsQ29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0Rmls
bENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21D
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5r
Qm9yZGVyQm90dG9tQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJU
b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRM
aW5rQm9yZGVyVG9wQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtPdXRsaW5l
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlu
a091dGxpbmVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbHVtblJ1bGVD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT52
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB0ZXh0RGVjb3Jh
dGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERl
Y29yYXRpb25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHREZWNvcmF0
aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVk
TGlua1RleHREZWNvcmF0aW9uQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnZp
c2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExp
bmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRl
ZExpbmtUZXh0U3Ryb2tlQ29sb3I7IH0KIAogICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJh
Y2soaW50IGNvbG9yUHJvcGVydHksIGJvb2wgdmlzaXRlZExpbmspIGNvbnN0OwogCkBAIC0yMjg4
LDggKzE3NTAsMzYyIEBAIHByaXZhdGU6CiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3Io
KSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsgfQogCiAgICAgdm9p
ZCBhcHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4pOworCitwcml2YXRl
OgorICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7CisgICAgICAgIE5vbkluaGVyaXRlZEZs
YWdzKCk7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdz
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzOyB9CisgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgIT0gb3RoZXIubV9mbGFnczsgfQorCisgICAgICAgIHZvaWQgY29w
eU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmKTsKKworICAgICAgICBF
T3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93
PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCkpOyB9CisgICAgICAgIHZv
aWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyBvdmVyZmxvd1gpIHsgdXBkYXRlVmFsdWUob3ZlcmZs
b3dYLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCk7IH0KKworICAgICAgICBFT3ZlcmZs
b3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRW
YWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0
T3ZlcmZsb3dZKEVPdmVyZmxvdyBvdmVyZmxvd1kpIHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dZLCBv
dmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCk7IH0KKworICAgICAgICBFQ2xlYXIgY2xlYXIo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2xlYXI+KGdldFZhbHVlKGNsZWFyTWFzaywg
Y2xlYXJPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldENsZWFyKEVDbGVhciBjbGVhcikgeyB1
cGRhdGVWYWx1ZShjbGVhciwgY2xlYXJNYXNrLCBjbGVhck9mZnNldCk7IH0KKworICAgICAgICBF
RGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURp
c3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0KSk7IH0K
KyAgICAgICAgdm9pZCBzZXRFZmZlY3RpdmVEaXNwbGF5KEVEaXNwbGF5IGVmZmVjdGl2ZURpc3Bs
YXkpIHsgdXBkYXRlVmFsdWUoZWZmZWN0aXZlRGlzcGxheSwgZGlzcGxheU1hc2ssIGVmZmVjdGl2
ZURpc3BsYXlPZmZzZXQpOyB9CisKKyAgICAgICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihnZXRWYWx1ZShwb3NpdGlvbk1hc2ssIHBv
c2l0aW9uT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gcG9z
aXRpb24pIHsgdXBkYXRlVmFsdWUocG9zaXRpb24sIHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZz
ZXQpOyB9CisKKyAgICAgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBvcmlnaW5hbERp
c3BsYXlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxh
eSBvcmlnaW5hbERpc3BsYXkpIHsgdXBkYXRlVmFsdWUob3JpZ2luYWxEaXNwbGF5LCBkaXNwbGF5
TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KTsgfQorCisgICAgICAgIEVVbmljb2RlQmlkaSB1
bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVbmljb2RlQmlkaT4oZ2V0
VmFsdWUodW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCkpOyB9CisgICAgICAgIHZv
aWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKSB7IHVwZGF0ZVZhbHVl
KHVuaWNvZGVCaWRpLCB1bmljb2RlQmlkaU1hc2ssIHVuaWNvZGVCaWRpT2Zmc2V0KTsgfQorCisg
ICAgICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
aGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVu
aXRzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzVmlld3BvcnRVbml0c09m
ZnNldCk7IH0KKworICAgICAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxpZ24+KGdldFZhbHVlKHZlcnRpY2FsQWxp
Z25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRWZXJ0aWNh
bEFsaWduKEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24pIHsgdXBkYXRlVmFsdWUodmVydGlj
YWxBbGlnbiwgdmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQpOyB9CisKKyAg
ICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIGdldEJvb2xlYW4oZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyhib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9CisKKyAgICAgICAg
Ym9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gZmxvYXRpbmcoKSAhPSBOb0Zsb2F0OyB9
CisgICAgICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVG
bG9hdD4oZ2V0VmFsdWUoZmxvYXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCkpOyB9CisgICAgICAg
IHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IGZsb2F0aW5nKSB7IHVwZGF0ZVZhbHVlKGZsb2F0aW5n
LCBmbG9hdGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFzQW55
UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gUFVCTElDX1BTRVVET0lEX01BU0sg
JiBnZXRWYWx1ZShwc2V1ZG9CaXRzTWFzaywgcHNldWRvQml0c09mZnNldCk7IH0KKyAgICAgICAg
Ym9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0SGFz
UHNldWRvU3R5bGUoUHNldWRvSWQpOworICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQ
c2V1ZG9JZFNldCk7CisKKyAgICAgICAgRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRhYmxlTGF5b3V0PihnZXRWYWx1ZSh0YWJsZUxheW91dEJp
dE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRUYWJsZUxheW91
dChFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQpIHsgdXBkYXRlVmFsdWUodGFibGVMYXlvdXQsIHRh
YmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZzZXQpOyB9CisKKyAgICAgICAgUHNldWRv
SWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KGdldFZh
bHVlKHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0
U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyB1cGRhdGVWYWx1ZShzdHlsZVR5cGUsIHN0
eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGlzVW5pcXVl
KCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihpc1VuaXF1ZU9mZnNldCk7IH0KKyAgICAgICAg
dm9pZCBzZXRJc1VuaXF1ZSgpIHsgdXBkYXRlQm9vbGVhbih0cnVlLCBpc1VuaXF1ZU9mZnNldCk7
IH0KKworICAgICAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGVtcHR5U3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2
YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBlbXB0eVN0YXRlT2Zmc2V0KTsgfQorCisgICAg
ICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihmaXJz
dENoaWxkU3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShi
b29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7
IH0KKworICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9v
bGVhbihsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9CisgICAgICAgIHZvaWQgc2V0TGFzdENoaWxk
U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBsYXN0Q2hpbGRTdGF0ZU9m
ZnNldCk7IH0KKworICAgICAgICBib29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJu
IGdldEJvb2xlYW4oYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEFm
ZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVk
QnlIb3Zlck9mZnNldCk7IH0KKworICAgICAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9CisgICAgICAg
IHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFs
dWUsIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5
RHJhZygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9
CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29s
ZWFuKHZhbHVlLCBhZmZlY3RlZEJ5RHJhZ09mZnNldCk7IH0KKworICAgICAgICBib29sIGlzTGlu
aygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNMaW5rT2Zmc2V0KTsgfQorICAgICAgICB2
b2lkIHNldElzTGluayhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGlzTGlua09m
ZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9
CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbihib29sIHZhbHVlKSB7
IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9
CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCk7IH0KKyAg
ICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9
CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRGbGFncywgbV9mbGFncyk7IH0KKyAgICAgICAg
c3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlBY3RpdmUoKSB7IHJldHVybiBvbmVCaXRN
YXNrIDw8IGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90
IGZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRC
eUhvdmVyT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnUHNldWRvU3R5bGUo
UHNldWRvSWQgcHNldWRvKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0
IC0gMSArIHBzZXVkbyk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNldEZpcnN0Q2hpbGRT
dGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0ZpcnN0Q2hpbGRTdGF0ZSgpIHwgZmxhZ0lzVW5pcXVl
KCk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNldExhc3RDaGlsZFN0YXRlRmxhZ3MoKSB7
IHJldHVybiBmbGFnTGFzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIHVwZGF0ZUJvb2xlYW4oYm9vbCwgdWludDY0X3Qgb2Zmc2V0
KTsKKyAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVpbnQ2NF90IG9mZnNldCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdWYWx1ZSwgdWludDY0X3QgcG9zaXRpb25J
bmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIGdldFZh
bHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpIGNv
bnN0OworCisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNVbmlxdWUoKSB7IHJldHVybiBv
bmVCaXRNYXNrIDw8IGlzVW5pcXVlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBm
bGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBmaXJzdENoaWxkU3Rh
dGVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgp
IHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgbGFzdENoaWxkU3RhdGVPZmZzZXQ7IH0KKworICAgICAg
ICAvLyBUbyB0eXBlIHRoZSBiaXQgbWFzayBwcm9wZXJseSBvbiA2NGJpdHMuCisgICAgICAgIHN0
YXRpYyBjb25zdCB1aW50NjRfdCBvbmVCaXRNYXNrID0gMHgxOworCisgICAgICAgIC8vIEJ5dGUg
MS4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93Qml0Q291bnQgPSAzOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb3ZlcmZsb3dNYXNrID0gKG9uZUJpdE1hc2sg
PDwgb3ZlcmZsb3dCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
b3ZlcmZsb3dYT2Zmc2V0ID0gMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJm
bG93WU9mZnNldCA9IG92ZXJmbG93WE9mZnNldCArIG92ZXJmbG93Qml0Q291bnQ7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhckJpdENvdW50ID0gMjsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IGNsZWFyTWFzayA9IChvbmVCaXRNYXNrIDw8IGNsZWFyQml0Q291bnQp
IC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsZWFyT2Zmc2V0ID0gb3ZlcmZs
b3dZT2Zmc2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDIuCisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaXNwbGF5Qml0Q291bnQgPSA1OworICAgICAgICBz
dGF0aWMgY29uc3QgdWludDY0X3QgZGlzcGxheU1hc2sgPSAob25lQml0TWFzayA8PCBkaXNwbGF5
Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2ZURp
c3BsYXlPZmZzZXQgPSBjbGVhck9mZnNldCArIGNsZWFyQml0Q291bnQ7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbkJpdENvdW50ID0gMzsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVpbnQ2NF90IHBvc2l0aW9uTWFzayA9IChvbmVCaXRNYXNrIDw8IHBvc2l0aW9uQml0Q291
bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uT2Zmc2V0ID0g
ZWZmZWN0aXZlRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKKworICAgICAgICAvLyBC
eXRlIDMuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXlPZmZz
ZXQgPSBwb3NpdGlvbk9mZnNldCArIHBvc2l0aW9uQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaUJpdENvdW50ID0gMzsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVpbnQ2NF90IHVuaWNvZGVCaWRpTWFzayA9IChvbmVCaXRNYXNrIDw8IHVuaWNvZGVCaWRp
Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRp
T2Zmc2V0ID0gb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ICsgZGlzcGxheUJpdENvdW50OworCisgICAg
ICAgIC8vIEJ5dGUgNC4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5nQml0
Q291bnQgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxvYXRpbmdNYXNrID0g
KG9uZUJpdE1hc2sgPDwgZmxvYXRpbmdCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgZmxvYXRpbmdPZmZzZXQgPSB1bmljb2RlQmlkaU9mZnNldCArIHVuaWNvZGVC
aWRpQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5
U2V0RGlyZWN0aW9uQml0Y291bnQgPSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCA9IGZsb2F0aW5nT2Zmc2V0ICsgZmxvYXRp
bmdCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlT
ZXRXcml0aW5nTW9kZUJpdGNvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCA9IGhhc0V4cGxpY2l0bHlTZXREaXJl
Y3Rpb25PZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQ7CisKKyAgICAg
ICAgLy8gQnl0ZSA1LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhl
cml0YW5jZUJpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxp
Y2l0SW5oZXJpdGFuY2VPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQg
KyBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3VudDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQgPSAxOworICAgICAgICBzdGF0aWMgY29u
c3QgdWludDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0gb25lQml0TWFzazsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zmc2V0ID0gZXhwbGljaXRJbmhlcml0YW5j
ZU9mZnNldCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3VudCA9IDQ7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGluZyA9IDI7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFkZGluZ0JpdENvdW50ID0gdmVydGljYWxB
bGlnbkJpdENvdW50ICsgdmVydGljYWxBbGlnblBhZGRpbmc7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChvbmVCaXRNYXNrIDw8IHZlcnRpY2FsQWxp
Z25CaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxB
bGlnbk9mZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsgdGFibGVMYXlvdXRCaXRDb3VudDsKKwor
ICAgICAgICAvLyBCeXRlIDYuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9C
aXRzQml0Q291bnQgPSA3OworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcHNldWRvQml0
c01hc2sgPSAob25lQml0TWFzayA8PCBwc2V1ZG9CaXRzQml0Q291bnQpIC0gMTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNPZmZzZXQgPSB2ZXJ0aWNhbEFsaWduT2Zm
c2V0ICsgdmVydGljYWxBbGlnbkJpdENvdW50OworCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgPSAxOworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3QgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPSAob25lQml0TWFzayA8PCBoYXNWaWV3
cG9ydFVuaXRzQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhh
c1ZpZXdwb3J0VW5pdHNPZmZzZXQgPSBwc2V1ZG9CaXRzT2Zmc2V0ICsgcHNldWRvQml0c0JpdENv
dW50OworCisgICAgICAgIC8vIEJ5dGUgNy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN0eWxlVHlwZUJpdENvdW50ID0gNjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0
eWxlVHlwZVBhZGRpbmcgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVU
eXBlQW5kUGFkZGluZ0JpdENvdW50ID0gc3R5bGVUeXBlQml0Q291bnQgKyBzdHlsZVR5cGVQYWRk
aW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc3R5bGVUeXBlTWFzayA9IChvbmVC
aXRNYXNrIDw8IHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlT2Zmc2V0ID0gaGFzVmlld3BvcnRVbml0c0JpdENv
dW50ICsgaGFzVmlld3BvcnRVbml0c09mZnNldDsKKworICAgICAgICAvLyBCeXRlIDguCisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1ZU9mZnNldCA9IHN0eWxlVHlwZU9mZnNl
dCArIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1ZU9mZnNldCArIDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3RhdGVPZmZzZXQgPSBlbXB0eVN0YXRlT2Zm
c2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxhc3RDaGlsZFN0YXRlT2Zm
c2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxhc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQgPSBh
ZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
YWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ICsgMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09mZnNldCA9IGFmZmVjdGVkQnlEcmFnT2Zm
c2V0ICsgMTsKKworICAgICAgICAvLyA2MCBiaXRzIGFyZSBhc3NpZ25lZC4gVGhlcmUgYXJlIDQg
Yml0cyBhdmFpbGFibGUgY3VycmVudGx5IHVzZWQgYXMgcGFkZGluZyB0byBpbXByb3ZlIGNvZGUg
Z2VuZXJhdGlvbi4KKyAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwg
eW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRl
ZEZyb20oKS4KKyAgICAgICAgdWludDY0X3QgbV9mbGFncyB7IDAgfTsKKyAgICB9OworCisgICAg
c3RydWN0IEluaGVyaXRlZEZsYWdzIHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElu
aGVyaXRlZEZsYWdzJikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhl
cml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisK
KyAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7IC8vIEVFbXB0eUNlbGwKKyAgICAgICAg
dW5zaWduZWQgY2FwdGlvblNpZGUgOiAyOyAvLyBFQ2FwdGlvblNpZGUKKyAgICAgICAgdW5zaWdu
ZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIEVMaXN0U3R5bGVUeXBlCisgICAgICAgIHVuc2lnbmVk
IGxpc3RTdHlsZVBvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCisgICAgICAgIHVu
c2lnbmVkIHZpc2liaWxpdHkgOiAyOyAvLyBFVmlzaWJpbGl0eQorICAgICAgICB1bnNpZ25lZCB0
ZXh0QWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCisgICAgICAgIHVuc2lnbmVkIHRleHRUcmFuc2Zv
cm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQorICAgICAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlv
bnMgOiBUZXh0RGVjb3JhdGlvbkJpdHM7CisgICAgICAgIHVuc2lnbmVkIGN1cnNvciA6IDY7IC8v
IEVDdXJzb3IKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCisgICAgICAgIHVuc2lnbmVk
IGN1cnNvclZpc2liaWxpdHkgOiAxOyAvLyBDdXJzb3JWaXNpYmlsaXR5CisjZW5kaWYKKyAgICAg
ICAgdW5zaWduZWQgZGlyZWN0aW9uIDogMTsgLy8gVGV4dERpcmVjdGlvbgorICAgICAgICB1bnNp
Z25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gRVdoaXRlU3BhY2UKKyAgICAgICAgLy8gMzIgYml0cwor
ICAgICAgICB1bnNpZ25lZCBib3JkZXJDb2xsYXBzZSA6IDE7IC8vIEVCb3JkZXJDb2xsYXBzZQor
ICAgICAgICB1bnNpZ25lZCBib3hEaXJlY3Rpb24gOiAxOyAvLyBFQm94RGlyZWN0aW9uIChDU1Mz
IGJveF9kaXJlY3Rpb24gcHJvcGVydHksIGZsZXhpYmxlIGJveCBsYXlvdXQgbW9kdWxlKQorCisg
ICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAorICAgICAgICB1bnNpZ25lZCBydGxPcmRlcmlu
ZyA6IDE7IC8vIE9yZGVyCisgICAgICAgIHVuc2lnbmVkIHByaW50Q29sb3JBZGp1c3QgOiBQcmlu
dENvbG9yQWRqdXN0Qml0czsKKyAgICAgICAgdW5zaWduZWQgcG9pbnRlckV2ZW50cyA6IDQ7IC8v
IEVQb2ludGVyRXZlbnRzCisgICAgICAgIHVuc2lnbmVkIGluc2lkZUxpbmsgOiAyOyAvLyBFSW5z
aWRlTGluaworICAgICAgICB1bnNpZ25lZCBpbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKKyAgICAg
ICAgLy8gNDQgYml0cworCisgICAgICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwg
MzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0CisgICAgICAgIHVuc2lnbmVkIHdyaXRpbmdNb2Rl
IDogMjsgLy8gV3JpdGluZ01vZGUKKyAgICAgICAgLy8gNDYgYml0cworICAgIH07CisKKyAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSByZXBsYWNlIG9wZXJh
dGlvbi4KKyAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYsIFJlbmRlclN0eWxlJiYpOworCisg
ICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCisgICAgRGF0YVJlZjxTdHlsZUJveERhdGE+
IG1fYm94RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlVmlzdWFsRGF0YT4gbV92aXN1YWxEYXRhOwor
ICAgIERhdGFSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gbV9iYWNrZ3JvdW5kRGF0YTsKKyAgICBE
YXRhUmVmPFN0eWxlU3Vycm91bmREYXRhPiBtX3N1cnJvdW5kRGF0YTsKKyAgICBEYXRhUmVmPFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE+IG1fcmFyZU5vbkluaGVyaXRlZERhdGE7CisgICAgTm9u
SW5oZXJpdGVkRmxhZ3MgbV9ub25Jbmhlcml0ZWRGbGFnczsKKworICAgIC8vIGluaGVyaXRlZCBh
dHRyaWJ1dGVzCisgICAgRGF0YVJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBtX3JhcmVJbmhl
cml0ZWREYXRhOworICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERh
dGE7CisgICAgSW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKKworICAgIC8vIGxpc3Qg
b2YgYXNzb2NpYXRlZCBwc2V1ZG8gc3R5bGVzCisgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0
eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRvU3R5bGVzOworCisgICAgRGF0YVJlZjxTVkdSZW5kZXJT
dHlsZT4gbV9zdmdTdHlsZTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VS
SVRZX0FTU0VSVElPTlMpCisgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9Owor
I2VuZGlmCiB9OwogCitpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKK2Zsb2F0IGFkanVzdEZsb2F0Rm9yQWJzb2x1dGVab29tKGZsb2F0LCBjb25zdCBS
ZW5kZXJTdHlsZSYpOworTGF5b3V0VW5pdCBhZGp1c3RMYXlvdXRVbml0Rm9yQWJzb2x1dGVab29t
KExheW91dFVuaXQsIGNvbnN0IFJlbmRlclN0eWxlJik7CisKK0VCb3JkZXJTdHlsZSBjb2xsYXBz
ZWRCb3JkZXJTdHlsZShFQm9yZGVyU3R5bGUpOworCitib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKik7CisKK2lubGluZSBSZW5kZXJTdHlsZTo6Tm9u
SW5oZXJpdGVkRmxhZ3M6Ok5vbkluaGVyaXRlZEZsYWdzKCkKK3sKKyAgICAvLyBBbGwgdGhlc2Ug
aW5pdGlhbCB2YWx1ZXMgbmVlZCB0byBiZSB6ZXJvIHNvIHRoYXQgemVyby1pbml0aWFsaXppbmcg
bV9mbGFncyBpcyBjb3JyZWN0LgorICAgIEFTU0VSVCghaW5pdGlhbE92ZXJmbG93WCgpKTsKKyAg
ICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7CisgICAgQVNTRVJUKCFpbml0aWFsQ2xlYXIo
KSk7CisgICAgQVNTRVJUKCFpbml0aWFsRGlzcGxheSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxV
bmljb2RlQmlkaSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxQb3NpdGlvbigpKTsKKyAgICBBU1NF
UlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkpOworICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0aW5n
KCkpOworICAgIEFTU0VSVCghaW5pdGlhbFRhYmxlTGF5b3V0KCkpOworfQorCitpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNv
bnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikKK3sKKyAgICAvLyBPbmx5IGEgc3Vic2V0IGlz
IGNvcGllZCBiZWNhdXNlIE5vbkluaGVyaXRlZEZsYWdzIGNvbnRhaW5zIGEgYnVuY2ggb2Ygc3R1
ZmYgb3RoZXIgdGhhbiByZWFsIHN0eWxlIGRhdGEuCisgICAgdWludDY0X3Qgbm9uSW5oZXJpdGVk
TWFzayA9IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1hPZmZzZXQKKyAgICAgICAgfCBvdmVyZmxv
d01hc2sgPDwgb3ZlcmZsb3dZT2Zmc2V0CisgICAgICAgIHwgY2xlYXJNYXNrIDw8IGNsZWFyT2Zm
c2V0CisgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgZWZmZWN0aXZlRGlzcGxheU9mZnNldAorICAg
ICAgICB8IHBvc2l0aW9uTWFzayA8PCBwb3NpdGlvbk9mZnNldAorICAgICAgICB8IGRpc3BsYXlN
YXNrIDw8IG9yaWdpbmFsRGlzcGxheU9mZnNldAorICAgICAgICB8IHVuaWNvZGVCaWRpTWFzayA8
PCB1bmljb2RlQmlkaU9mZnNldAorICAgICAgICB8IHZlcnRpY2FsQWxpZ25NYXNrIDw8IHZlcnRp
Y2FsQWxpZ25PZmZzZXQKKyAgICAgICAgfCBmbG9hdGluZ01hc2sgPDwgZmxvYXRpbmdPZmZzZXQK
KyAgICAgICAgfCBvbmVCaXRNYXNrIDw8IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQKKyAgICAg
ICAgfCB0YWJsZUxheW91dEJpdE1hc2sgPDwgdGFibGVMYXlvdXRPZmZzZXQKKyAgICAgICAgfCBo
YXNWaWV3cG9ydFVuaXRzQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0OworCisgICAg
bV9mbGFncyA9IChtX2ZsYWdzICYgfm5vbkluaGVyaXRlZE1hc2spIHwgKG90aGVyLm1fZmxhZ3Mg
JiBub25Jbmhlcml0ZWRNYXNrKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Ok5vbklu
aGVyaXRlZEZsYWdzOjpoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKKyAgICBBU1NFUlQocHNldWRvIDwgRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQpOworICAgIHJldHVybiAob25lQml0TWFzayA8PCAocHNldWRvQml0
c09mZnNldCAtIDEgKyBwc2V1ZG8pKSAmIG1fZmxhZ3M7Cit9CisKK2lubGluZSB2b2lkIFJlbmRl
clN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNl
dWRvKQoreworICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7CisgICAgQVNTRVJUKHBzZXVk
byA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKKyAgICBtX2ZsYWdzIHw9IG9uZUJpdE1hc2sg
PDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsKK30KKworaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRT
ZXQgcHNldWRvSWRTZXQpCit7CisgICAgQVNTRVJUKHBzZXVkb0lkU2V0KTsKKyAgICB1aW50NjRf
dCByYXdQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0LmRhdGEoKTsKKyAgICBBU1NFUlQoKHJhd1Bz
ZXVkb0lkU2V0ICYgUFVCTElDX1BTRVVET0lEX01BU0spID09IHJhd1BzZXVkb0lkU2V0KTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHBzZXVkb0JpdHNPZmZzZXQgPj0gMSwgIihwc2V1ZG9CaXRzT2Zmc2V0
IC0gMSkgc2hvdWxkIGJlIHZhbGlkLiIpOworICAgIG1fZmxhZ3MgfD0gKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihyYXdQc2V1ZG9JZFNldCkgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSk7Cit9CisK
K2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6dXBkYXRlQm9vbGVh
bihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZzZXQpCit7CisgICAgaWYgKGlzU2V0KQorICAgICAg
ICBtX2ZsYWdzIHw9IChvbmVCaXRNYXNrIDw8IG9mZnNldCk7CisgICAgZWxzZQorICAgICAgICBt
X2ZsYWdzICY9IH4ob25lQml0TWFzayA8PCBvZmZzZXQpOworfQorCitpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmdldEJvb2xlYW4odWludDY0X3Qgb2Zmc2V0KSBj
b25zdAoreworICAgIHJldHVybiBtX2ZsYWdzICYgKG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKK30K
KworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjp1cGRhdGVWYWx1
ZSh1aW50OF90IG5ld1ZhbHVlLCB1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWlu
dDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCghKG5ld1ZhbHVlICYgfnBvc2l0aW9uSW5kZXBl
bmRlbnRNYXNrKSk7CisgICAgdWludDY0X3QgcG9zaXRpb25EZXBlbmRlbnRNYXNrID0gcG9zaXRp
b25JbmRlcGVuZGVudE1hc2sgPDwgb2Zmc2V0OworICAgIG1fZmxhZ3MgPSAobV9mbGFncyAmIH5w
b3NpdGlvbkRlcGVuZGVudE1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihuZXdWYWx1ZSkg
PDwgb2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OkluaGVyaXRlZEZsYWdz
OjpvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZW1wdHlDZWxscyA9PSBvdGhlci5lbXB0eUNlbGxzCisgICAgICAgICYmIGNhcHRpb25T
aWRlID09IG90aGVyLmNhcHRpb25TaWRlCisgICAgICAgICYmIGxpc3RTdHlsZVR5cGUgPT0gb3Ro
ZXIubGlzdFN0eWxlVHlwZQorICAgICAgICAmJiBsaXN0U3R5bGVQb3NpdGlvbiA9PSBvdGhlci5s
aXN0U3R5bGVQb3NpdGlvbgorICAgICAgICAmJiB2aXNpYmlsaXR5ID09IG90aGVyLnZpc2liaWxp
dHkKKyAgICAgICAgJiYgdGV4dEFsaWduID09IG90aGVyLnRleHRBbGlnbgorICAgICAgICAmJiB0
ZXh0VHJhbnNmb3JtID09IG90aGVyLnRleHRUcmFuc2Zvcm0KKyAgICAgICAgJiYgdGV4dERlY29y
YXRpb25zID09IG90aGVyLnRleHREZWNvcmF0aW9ucworICAgICAgICAmJiBjdXJzb3IgPT0gb3Ro
ZXIuY3Vyc29yCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgICAgICAmJiBjdXJz
b3JWaXNpYmlsaXR5ID09IG90aGVyLmN1cnNvclZpc2liaWxpdHkKKyNlbmRpZgorICAgICAgICAm
JiBkaXJlY3Rpb24gPT0gb3RoZXIuZGlyZWN0aW9uCisgICAgICAgICYmIHdoaXRlU3BhY2UgPT0g
b3RoZXIud2hpdGVTcGFjZQorICAgICAgICAmJiBib3JkZXJDb2xsYXBzZSA9PSBvdGhlci5ib3Jk
ZXJDb2xsYXBzZQorICAgICAgICAmJiBib3hEaXJlY3Rpb24gPT0gb3RoZXIuYm94RGlyZWN0aW9u
CisgICAgICAgICYmIHJ0bE9yZGVyaW5nID09IG90aGVyLnJ0bE9yZGVyaW5nCisgICAgICAgICYm
IHByaW50Q29sb3JBZGp1c3QgPT0gb3RoZXIucHJpbnRDb2xvckFkanVzdAorICAgICAgICAmJiBw
b2ludGVyRXZlbnRzID09IG90aGVyLnBvaW50ZXJFdmVudHMKKyAgICAgICAgJiYgaW5zaWRlTGlu
ayA9PSBvdGhlci5pbnNpZGVMaW5rCisgICAgICAgICYmIGluc2lkZURlZmF1bHRCdXR0b24gPT0g
b3RoZXIuaW5zaWRlRGVmYXVsdEJ1dHRvbgorICAgICAgICAmJiB3cml0aW5nTW9kZSA9PSBvdGhl
ci53cml0aW5nTW9kZTsKK30KKworaW5saW5lIHVuc2lnbmVkIFJlbmRlclN0eWxlOjpOb25Jbmhl
cml0ZWRGbGFnczo6Z2V0VmFsdWUodWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVp
bnQ2NF90IG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KChtX2ZsYWdzID4+IG9mZnNldCkgJiBwb3NpdGlvbkluZGVwZW5kZW50TWFzayk7Cit9CisKIGlu
bGluZSBpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewogICAgIGRvdWJsZSB6b29tRmFjdG9yID0gc3R5bGUuZWZmZWN0aXZlWm9v
bSgpOwpAQCAtMjMyNSw1MCArMjE0MSwyNTMgQEAgaW5saW5lIEVCb3JkZXJTdHlsZSBjb2xsYXBz
ZWRCb3JkZXJTdHlsZShFQm9yZGVyU3R5bGUgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlOwogfQog
Ci1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0Wm9vbShmbG9hdCBmKQoraW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6Omhhc0JhY2tncm91bmQoKSBjb25zdAogewotICAgIHNldEVmZmVjdGl2ZVpv
b20oZWZmZWN0aXZlWm9vbSgpICogZik7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbCh2aXN1YWwtPm1f
em9vbSwgZikpCisgICAgcmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJbWFnZSgpOworfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3BhY2Ugd2hpdGVTcGFj
ZSkKK3sKKyAgICAvLyBOb3dyYXAgYW5kIHByZSBkb24ndCBhdXRvbWF0aWNhbGx5IHdyYXAuCisg
ICAgcmV0dXJuIHdoaXRlU3BhY2UgIT0gTk9XUkFQICYmIHdoaXRlU3BhY2UgIT0gUFJFOworfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6cHJlc2VydmVOZXdsaW5lKEVXaGl0ZVNwYWNlIHdo
aXRlU3BhY2UpCit7CisgICAgLy8gTm9ybWFsIGFuZCBub3dyYXAgZG8gbm90IHByZXNlcnZlIG5l
d2xpbmVzLgorICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PUk1BTCAmJiB3aGl0ZVNwYWNlICE9
IE5PV1JBUDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNvbGxhcHNlV2hpdGVTcGFj
ZShFV2hpdGVTcGFjZSB3cykKK3sKKyAgICAvLyBQcmUgYW5kIHByZXdyYXAgZG8gbm90IGNvbGxh
cHNlIHdoaXRlc3BhY2UuCisgICAgcmV0dXJuIHdzICE9IFBSRSAmJiB3cyAhPSBQUkVfV1JBUDsK
K30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVD
aGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNh
c2UgJyAnOgorICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFj
ZSgpOworICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgcmV0dXJuICFwcmVzZXJ2ZU5ld2xpbmUoKTsK
KyAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdmlzdWFsLmFjY2Vzcygp
LT5tX3pvb20gPSBmOworICAgIH0KK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFr
T25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdoaXRlU3BhY2UoKSA9
PSBQUkVfV1JBUCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5lQnJlYWtBZnRlcldoaXRlU3BhY2U7Cit9
CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gd29yZEJyZWFrKCkgPT0gQnJlYWtXb3JkQnJlYWsgfHwgb3ZlcmZsb3dXcmFwKCkgPT0g
QnJlYWtPdmVyZmxvd1dyYXA7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNJbmxp
bmVDb2x1bW5BeGlzKCkgY29uc3QKK3sKKyAgICBhdXRvIGF4aXMgPSBjb2x1bW5BeGlzKCk7Cisg
ICAgcmV0dXJuIGF4aXMgPT0gQXV0b0NvbHVtbkF4aXMgfHwgaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA9PSAoYXhpcyA9PSBIb3Jpem9udGFsQ29sdW1uQXhpcyk7Cit9CisKK2lubGluZSBJbWFn
ZU9yaWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlT3JpZW50
YXRpb24pOworI2Vsc2UKKyAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldExvZ2ljYWxXaWR0aChMZW5ndGgm
JiBsb2dpY2FsV2lkdGgpCit7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisg
ICAgICAgIHNldFdpZHRoKFdURk1vdmUobG9naWNhbFdpZHRoKSk7CisgICAgZWxzZQorICAgICAg
ICBzZXRIZWlnaHQoV1RGTW92ZShsb2dpY2FsV2lkdGgpKTsKK30KKworaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoJiYgbG9naWNhbEhlaWdodCkKK3sKKyAg
ICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgc2V0SGVpZ2h0KFdURk1v
dmUobG9naWNhbEhlaWdodCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0V2lkdGgoV1RGTW92ZShs
b2dpY2FsSGVpZ2h0KSk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJS
YWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpCit7CisgICAgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhM
ZW5ndGhTaXplIHsgc2l6ZSB9KTsKKyAgICBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhT
aXplIHsgc2l6ZSB9KTsKKyAgICBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUg
eyBzaXplIH0pOworICAgIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKFdURk1vdmUoc2l6ZSkp
OworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmFkaXVzKGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUgeyB7IHNpemUu
d2lkdGgoKSwgRml4ZWQgfSwgeyBzaXplLmhlaWdodCgpLCBGaXhlZCB9IH0pOworfQorCitpbmxp
bmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0Wm9vbShmbG9hdCB6b29tTGV2ZWwpCit7CisgICAgc2V0
RWZmZWN0aXZlWm9vbShlZmZlY3RpdmVab29tKCkgKiB6b29tTGV2ZWwpOworICAgIGlmIChjb21w
YXJlRXF1YWwobV92aXN1YWxEYXRhLT56b29tLCB6b29tTGV2ZWwpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbV92aXN1YWxEYXRhLmFjY2VzcygpLnpvb20gPSB6b29tTGV2ZWw7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRFZmZlY3RpdmVa
b29tKGZsb2F0IGYpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0RWZmZWN0aXZlWm9vbShm
bG9hdCB6b29tTGV2ZWwpCiB7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbChyYXJlSW5oZXJpdGVkRGF0
YS0+bV9lZmZlY3RpdmVab29tLCBmKSkKKyAgICBpZiAoY29tcGFyZUVxdWFsKG1fcmFyZUluaGVy
aXRlZERhdGEtPmVmZmVjdGl2ZVpvb20sIHpvb21MZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9lZmZlY3RpdmVab29tID0gZjsK
KyAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmVmZmVjdGl2ZVpvb20gPSB6b29tTGV2
ZWw7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRU
ZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbikKIHsKLSAgICBp
ZiAoY29tcGFyZUVxdWFsKHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRleHRPcmllbnRhdGlvbikpKQorICAgIGlmIChjb21wYXJlRXF1
YWwobV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odGV4dE9yaWVudGF0aW9uKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Jh
cmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLnRleHRPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih0ZXh0T3JpZW50YXRpb24pOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUg
dm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0QmFja2dyb3VuZExheWVycygpCit7CisgICAgaWYgKGJh
Y2tncm91bmRMYXllcnMoKS5uZXh0KCkpIHsKKyAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVy
cygpLmN1bGxFbXB0eUxheWVycygpOworICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCku
ZmlsbFVuc2V0UHJvcGVydGllcygpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5
bGU6OmFkanVzdE1hc2tMYXllcnMoKQoreworICAgIGlmIChtYXNrTGF5ZXJzKCkubmV4dCgpKSB7
CisgICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAg
ZW5zdXJlTWFza0xheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsKKyAgICB9Cit9CisKK2lu
bGluZSB2b2lkIFJlbmRlclN0eWxlOjpjbGVhckFuaW1hdGlvbnMoKQoreworICAgIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IG51bGxwdHI7Cit9CiAKLSAgICBy
YXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90ZXh0T3JpZW50YXRpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odGV4dE9yaWVudGF0aW9uKTsKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpj
bGVhclRyYW5zaXRpb25zKCkKK3sKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LnRyYW5zaXRpb25zID0gbnVsbHB0cjsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNoYXBlT3V0c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBpZiAobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlID09IHZhbHVlKQorICAgICAgICByZXR1
cm47CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5zaGFwZU91dHNpZGUgPSBX
VEZNb3ZlKHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNoYXBlSW1h
Z2VUaHJlc2hvbGQoZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCkKK3sKKyAgICBmbG9hdCBjbGFt
cGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hv
bGQsIDAsIDEpOworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVJbWFn
ZVRocmVzaG9sZCwgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQpOworfQorCitpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcFBhdGgoUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiYmIG9w
ZXJhdGlvbikKK3sKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGggIT0g
b3BlcmF0aW9uKQorICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNsaXBQ
YXRoID0gV1RGTW92ZShvcGVyYXRpb24pOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
d2lsbENoYW5nZUNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiB3
aWxsQ2hhbmdlKCkgJiYgd2lsbENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKTsK
K30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25z
dAoreworICAgIHJldHVybiBkaXNwbGF5KCkgPT0gQkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElO
RV9CTE9DSworICAgICAgICB8fCBkaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5KCkg
PT0gVEFCTEVfQ0FQVElPTgorICAgICAgICB8fCBkaXNwbGF5KCkgPT0gTElTVF9JVEVNOworfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgdikK
K3sKKyAgICBpZiAodiA9PSB3cml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSA9IHY7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRl
bnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsTGVmdCwgTGF5
b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdAoreworICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxM
ZWZ0LCBsb2dpY2FsUmlnaHQpIDogZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBsb2dp
Y2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Omdl
dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5
b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2Fs
RXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jp
em9udGFsRXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7Cit9CisKK2lu
bGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlz
cGxheSkKK3sKKyAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9
PSBJTkxJTkVfQk9YIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgKKyNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQorICAgICAgICB8fCBkaXNwbGF5ID09IElOTElORV9HUklECisjZW5kaWYKKyAg
ICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEU7Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjppc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5IGRpc3BsYXkpCit7CisgICAgcmV0
dXJuIGRpc3BsYXkgPT0gSU5MSU5FIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsK
K30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNw
bGF5IGRpc3BsYXkpCit7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09
IElOTElORV9GTEVYOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5R3Jp
ZEJveChFRGlzcGxheSBkaXNwbGF5KQoreworI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisg
ICAgcmV0dXJuIGRpc3BsYXkgPT0gR1JJRCB8fCBkaXNwbGF5ID09IElOTElORV9HUklEOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZGlzcGxheSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJv
eChFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChk
aXNwbGF5KSB8fCBpc0Rpc3BsYXlHcmlkQm94KGRpc3BsYXkpOworfQorCiBpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpOworICAgIHJl
dHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpOwogfQog
CiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRv
KSBjb25zdAogewotICAgIHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzUHNldWRvU3R5bGUo
cHNldWRvKTsKKyAgICByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNQc2V1ZG9TdHlsZShw
c2V1ZG8pOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0SGFzUHNldWRvU3R5bGUo
UHNldWRvSWQgcHNldWRvKQogewotICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNQc2V1ZG9T
dHlsZShwc2V1ZG8pOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzUHNldWRvU3R5bGUo
cHNldWRvKTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0eWxl
cyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNldCkKIHsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0
SGFzUHNldWRvU3R5bGVzKHBzZXVkb0lkU2V0KTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnNl
dEhhc1BzZXVkb1N0eWxlcyhwc2V1ZG9JZFNldCk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0
eWxlOjpzZXRCb3hSZWZsZWN0KFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+JiYgcmVmbGVjdCkKK3sK
KyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJveFJlZmxlY3QsIFdURk1vdmUo
cmVmbGVjdCkpOwogfQogCiBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAppbmRleCA2YzAyZTUwOGFmMWFhMzhiMjJjMmYy
Mzk5ZmRkNTI0N2FlMzQxYzlmLi5lNDY4Zjg5ZDgxMTNjODhkNjBlNTQxMmEwYWJmMGMyZmJiOWUw
MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJT
dHlsZS5jcHAKQEAgLTQ5LDQ2ICs0OSw0NiBAQCBSZWY8U1ZHUmVuZGVyU3R5bGU+IFNWR1JlbmRl
clN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQogfQogCiBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVu
ZGVyU3R5bGUoKQotICAgIDogZmlsbChkZWZhdWx0U1ZHU3R5bGUoKS5maWxsKQotICAgICwgc3Ry
b2tlKGRlZmF1bHRTVkdTdHlsZSgpLnN0cm9rZSkKLSAgICAsIHRleHQoZGVmYXVsdFNWR1N0eWxl
KCkudGV4dCkKLSAgICAsIGluaGVyaXRlZFJlc291cmNlcyhkZWZhdWx0U1ZHU3R5bGUoKS5pbmhl
cml0ZWRSZXNvdXJjZXMpCi0gICAgLCBzdG9wcyhkZWZhdWx0U1ZHU3R5bGUoKS5zdG9wcykKLSAg
ICAsIG1pc2MoZGVmYXVsdFNWR1N0eWxlKCkubWlzYykKLSAgICAsIHNoYWRvd1NWRyhkZWZhdWx0
U1ZHU3R5bGUoKS5zaGFkb3dTVkcpCi0gICAgLCBsYXlvdXQoZGVmYXVsdFNWR1N0eWxlKCkubGF5
b3V0KQotICAgICwgcmVzb3VyY2VzKGRlZmF1bHRTVkdTdHlsZSgpLnJlc291cmNlcykKKyAgICA6
IG1fZmlsbERhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9maWxsRGF0YSkKKyAgICAsIG1fc3Ryb2tl
RGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX3N0cm9rZURhdGEpCisgICAgLCBtX3RleHREYXRhKGRl
ZmF1bHRTVkdTdHlsZSgpLm1fdGV4dERhdGEpCisgICAgLCBtX2luaGVyaXRlZFJlc291cmNlRGF0
YShkZWZhdWx0U1ZHU3R5bGUoKS5tX2luaGVyaXRlZFJlc291cmNlRGF0YSkKKyAgICAsIG1fc3Rv
cERhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9zdG9wRGF0YSkKKyAgICAsIG1fbWlzY0RhdGEoZGVm
YXVsdFNWR1N0eWxlKCkubV9taXNjRGF0YSkKKyAgICAsIG1fc2hhZG93RGF0YShkZWZhdWx0U1ZH
U3R5bGUoKS5tX3NoYWRvd0RhdGEpCisgICAgLCBtX2xheW91dERhdGEoZGVmYXVsdFNWR1N0eWxl
KCkubV9sYXlvdXREYXRhKQorICAgICwgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEoZGVmYXVs
dFNWR1N0eWxlKCkubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEpCiB7CiAgICAgc2V0Qml0RGVm
YXVsdHMoKTsKIH0KIAogU1ZHUmVuZGVyU3R5bGU6OlNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRUeXBlKQotICAgIDogZmlsbChTdHlsZUZpbGxEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHN0cm9r
ZShTdHlsZVN0cm9rZURhdGE6OmNyZWF0ZSgpKQotICAgICwgdGV4dChTdHlsZVRleHREYXRhOjpj
cmVhdGUoKSkKLSAgICAsIGluaGVyaXRlZFJlc291cmNlcyhTdHlsZUluaGVyaXRlZFJlc291cmNl
RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBzdG9wcyhTdHlsZVN0b3BEYXRhOjpjcmVhdGUoKSkKLSAg
ICAsIG1pc2MoU3R5bGVNaXNjRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBzaGFkb3dTVkcoU3R5bGVT
aGFkb3dTVkdEYXRhOjpjcmVhdGUoKSkKLSAgICAsIGxheW91dChTdHlsZUxheW91dERhdGE6OmNy
ZWF0ZSgpKQotICAgICwgcmVzb3VyY2VzKFN0eWxlUmVzb3VyY2VEYXRhOjpjcmVhdGUoKSkKKyAg
ICA6IG1fZmlsbERhdGEoU3R5bGVGaWxsRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N0cm9rZURh
dGEoU3R5bGVTdHJva2VEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fdGV4dERhdGEoU3R5bGVUZXh0
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX2luaGVyaXRlZFJlc291cmNlRGF0YShTdHlsZUluaGVy
aXRlZFJlc291cmNlRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N0b3BEYXRhKFN0eWxlU3RvcERh
dGE6OmNyZWF0ZSgpKQorICAgICwgbV9taXNjRGF0YShTdHlsZU1pc2NEYXRhOjpjcmVhdGUoKSkK
KyAgICAsIG1fc2hhZG93RGF0YShTdHlsZVNoYWRvd1NWR0RhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9sYXlvdXREYXRhKFN0eWxlTGF5b3V0RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX25vbkluaGVy
aXRlZFJlc291cmNlRGF0YShTdHlsZVJlc291cmNlRGF0YTo6Y3JlYXRlKCkpCiB7CiAgICAgc2V0
Qml0RGVmYXVsdHMoKTsKIH0KIAogaW5saW5lIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHls
ZShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFNWR1JlbmRl
clN0eWxlPigpCi0gICAgLCBzdmdfaW5oZXJpdGVkX2ZsYWdzKG90aGVyLnN2Z19pbmhlcml0ZWRf
ZmxhZ3MpCi0gICAgLCBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzKG90aGVyLnN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MpCi0gICAgLCBmaWxsKG90aGVyLmZpbGwpCi0gICAgLCBzdHJva2Uob3RoZXIuc3Ry
b2tlKQotICAgICwgdGV4dChvdGhlci50ZXh0KQotICAgICwgaW5oZXJpdGVkUmVzb3VyY2VzKG90
aGVyLmluaGVyaXRlZFJlc291cmNlcykKLSAgICAsIHN0b3BzKG90aGVyLnN0b3BzKQotICAgICwg
bWlzYyhvdGhlci5taXNjKQotICAgICwgc2hhZG93U1ZHKG90aGVyLnNoYWRvd1NWRykKLSAgICAs
IGxheW91dChvdGhlci5sYXlvdXQpCi0gICAgLCByZXNvdXJjZXMob3RoZXIucmVzb3VyY2VzKQor
ICAgICwgbV9pbmhlcml0ZWRGbGFncyhvdGhlci5tX2luaGVyaXRlZEZsYWdzKQorICAgICwgbV9u
b25Jbmhlcml0ZWRGbGFncyhvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKQorICAgICwgbV9maWxs
RGF0YShvdGhlci5tX2ZpbGxEYXRhKQorICAgICwgbV9zdHJva2VEYXRhKG90aGVyLm1fc3Ryb2tl
RGF0YSkKKyAgICAsIG1fdGV4dERhdGEob3RoZXIubV90ZXh0RGF0YSkKKyAgICAsIG1faW5oZXJp
dGVkUmVzb3VyY2VEYXRhKG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKQorICAgICwgbV9z
dG9wRGF0YShvdGhlci5tX3N0b3BEYXRhKQorICAgICwgbV9taXNjRGF0YShvdGhlci5tX21pc2NE
YXRhKQorICAgICwgbV9zaGFkb3dEYXRhKG90aGVyLm1fc2hhZG93RGF0YSkKKyAgICAsIG1fbGF5
b3V0RGF0YShvdGhlci5tX2xheW91dERhdGEpCisgICAgLCBtX25vbkluaGVyaXRlZFJlc291cmNl
RGF0YShvdGhlci5tX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSkKIHsKIH0KIApAQCAtMTAzLDQ5
ICsxMDMsNDYgQEAgU1ZHUmVuZGVyU3R5bGU6On5TVkdSZW5kZXJTdHlsZSgpCiAKIGJvb2wgU1ZH
UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25z
dAogewotICAgIHJldHVybiBmaWxsID09IG90aGVyLmZpbGwKLSAgICAgICAgJiYgc3Ryb2tlID09
IG90aGVyLnN0cm9rZQotICAgICAgICAmJiB0ZXh0ID09IG90aGVyLnRleHQKLSAgICAgICAgJiYg
c3RvcHMgPT0gb3RoZXIuc3RvcHMKLSAgICAgICAgJiYgbWlzYyA9PSBvdGhlci5taXNjCi0gICAg
ICAgICYmIHNoYWRvd1NWRyA9PSBvdGhlci5zaGFkb3dTVkcKLSAgICAgICAgJiYgbGF5b3V0ID09
IG90aGVyLmxheW91dAotICAgICAgICAmJiBpbmhlcml0ZWRSZXNvdXJjZXMgPT0gb3RoZXIuaW5o
ZXJpdGVkUmVzb3VyY2VzCi0gICAgICAgICYmIHJlc291cmNlcyA9PSBvdGhlci5yZXNvdXJjZXMK
LSAgICAgICAgJiYgc3ZnX2luaGVyaXRlZF9mbGFncyA9PSBvdGhlci5zdmdfaW5oZXJpdGVkX2Zs
YWdzCi0gICAgICAgICYmIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX25vbmlu
aGVyaXRlZF9mbGFnczsKKyAgICByZXR1cm4gbV9maWxsRGF0YSA9PSBvdGhlci5tX2ZpbGxEYXRh
CisgICAgICAgICYmIG1fc3Ryb2tlRGF0YSA9PSBvdGhlci5tX3N0cm9rZURhdGEKKyAgICAgICAg
JiYgbV90ZXh0RGF0YSA9PSBvdGhlci5tX3RleHREYXRhCisgICAgICAgICYmIG1fc3RvcERhdGEg
PT0gb3RoZXIubV9zdG9wRGF0YQorICAgICAgICAmJiBtX21pc2NEYXRhID09IG90aGVyLm1fbWlz
Y0RhdGEKKyAgICAgICAgJiYgbV9zaGFkb3dEYXRhID09IG90aGVyLm1fc2hhZG93RGF0YQorICAg
ICAgICAmJiBtX2xheW91dERhdGEgPT0gb3RoZXIubV9sYXlvdXREYXRhCisgICAgICAgICYmIG1f
aW5oZXJpdGVkUmVzb3VyY2VEYXRhID09IG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhCisg
ICAgICAgICYmIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhID09IG90aGVyLm1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhCisgICAgICAgICYmIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9p
bmhlcml0ZWRGbGFncworICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzID09IG90aGVyLm1f
bm9uSW5oZXJpdGVkRmxhZ3M7CiB9CiAKLWJvb2wgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRlZE5v
dEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKK2Jvb2wgU1ZHUmVuZGVy
U3R5bGU6OmluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29u
c3QKIHsKLSAgICByZXR1cm4gZmlsbCAhPSBvdGhlci0+ZmlsbAotICAgICAgICB8fCBzdHJva2Ug
IT0gb3RoZXItPnN0cm9rZQotICAgICAgICB8fCB0ZXh0ICE9IG90aGVyLT50ZXh0Ci0gICAgICAg
IHx8IGluaGVyaXRlZFJlc291cmNlcyAhPSBvdGhlci0+aW5oZXJpdGVkUmVzb3VyY2VzCi0gICAg
ICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3M7
CisgICAgcmV0dXJuIG1fZmlsbERhdGEgIT0gb3RoZXIubV9maWxsRGF0YQorICAgICAgICB8fCBt
X3N0cm9rZURhdGEgIT0gb3RoZXIubV9zdHJva2VEYXRhCisgICAgICAgIHx8IG1fdGV4dERhdGEg
IT0gb3RoZXIubV90ZXh0RGF0YQorICAgICAgICB8fCBtX2luaGVyaXRlZFJlc291cmNlRGF0YSAh
PSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YQorICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3M7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3R5bGU6
OmluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdJbmhlcml0UGFyZW50KQordm9p
ZCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVy
KQogewotICAgIGlmICghc3ZnSW5oZXJpdFBhcmVudCkKLSAgICAgICAgcmV0dXJuOworICAgIG1f
ZmlsbERhdGEgPSBvdGhlci5tX2ZpbGxEYXRhOworICAgIG1fc3Ryb2tlRGF0YSA9IG90aGVyLm1f
c3Ryb2tlRGF0YTsKKyAgICBtX3RleHREYXRhID0gb3RoZXIubV90ZXh0RGF0YTsKKyAgICBtX2lu
aGVyaXRlZFJlc291cmNlRGF0YSA9IG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogCi0g
ICAgZmlsbCA9IHN2Z0luaGVyaXRQYXJlbnQtPmZpbGw7Ci0gICAgc3Ryb2tlID0gc3ZnSW5oZXJp
dFBhcmVudC0+c3Ryb2tlOwotICAgIHRleHQgPSBzdmdJbmhlcml0UGFyZW50LT50ZXh0OwotICAg
IGluaGVyaXRlZFJlc291cmNlcyA9IHN2Z0luaGVyaXRQYXJlbnQtPmluaGVyaXRlZFJlc291cmNl
czsKLQotICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPSBzdmdJbmhlcml0UGFyZW50LT5zdmdfaW5o
ZXJpdGVkX2ZsYWdzOworICAgIG1faW5oZXJpdGVkRmxhZ3MgPSBvdGhlci5tX2luaGVyaXRlZEZs
YWdzOwogfQogCi12b2lkIFNWR1JlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25z
dCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpCit2b2lkIFNWR1JlbmRlclN0eWxlOjpjb3B5Tm9uSW5o
ZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpCiB7Ci0gICAgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncyA9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzOwotICAgIHN0b3Bz
ID0gb3RoZXItPnN0b3BzOwotICAgIG1pc2MgPSBvdGhlci0+bWlzYzsKLSAgICBzaGFkb3dTVkcg
PSBvdGhlci0+c2hhZG93U1ZHOwotICAgIGxheW91dCA9IG90aGVyLT5sYXlvdXQ7Ci0gICAgcmVz
b3VyY2VzID0gb3RoZXItPnJlc291cmNlczsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzID0gb3Ro
ZXIubV9ub25Jbmhlcml0ZWRGbGFnczsKKyAgICBtX3N0b3BEYXRhID0gb3RoZXIubV9zdG9wRGF0
YTsKKyAgICBtX21pc2NEYXRhID0gb3RoZXIubV9taXNjRGF0YTsKKyAgICBtX3NoYWRvd0RhdGEg
PSBvdGhlci5tX3NoYWRvd0RhdGE7CisgICAgbV9sYXlvdXREYXRhID0gb3RoZXIubV9sYXlvdXRE
YXRhOworICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhID0gb3RoZXIubV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGE7CiB9CiAKIFZlY3RvcjxQYWludFR5cGUsIDM+IFNWR1JlbmRlclN0eWxl
OjpwYWludFR5cGVzRm9yUGFpbnRPcmRlcigpIGNvbnN0CkBAIC0xODgsMTA0ICsxODUsMTA0IEBA
IFZlY3RvcjxQYWludFR5cGUsIDM+IFNWR1JlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRP
cmRlcigpIGNvbnN0CiAgICAgcmV0dXJuIHBhaW50T3JkZXI7CiB9CiAKLVN0eWxlRGlmZmVyZW5j
ZSBTVkdSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0
CitTdHlsZURpZmZlcmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIG90aGVyKSBjb25zdAogewogICAgIC8vIE5PVEU6IEFsbCBjb21wYXJpc2lvbnMgdGhhdCBt
YXkgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dCBoYXZlIHRvIGdvIGJlZm9yZSB0aG9zZSB3
aG8gcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQKIAogICAgIC8vIElmIGtlcm5pbmcgY2hh
bmdlcywgd2UgbmVlZCBhIHJlbGF5b3V0LCB0byBmb3JjZSBTVkdDaGFyYWN0ZXJEYXRhIHRvIGJl
IHJlY2FsY3VsYXRlZCBpbiB0aGUgU1ZHUm9vdElubGluZUJveC4KLSAgICBpZiAodGV4dCAhPSBv
dGhlci0+dGV4dCkKKyAgICBpZiAobV90ZXh0RGF0YSAhPSBvdGhlci5tX3RleHREYXRhKQogICAg
ICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gSWYgcmVzb3VyY2Vz
IGNoYW5nZSwgd2UgbmVlZCBhIHJlbGF5b3V0LCBhcyB0aGUgcHJlc2VuY2Ugb2YgcmVzb3VyY2Vz
IGluZmx1ZW5jZXMgdGhlIHJlcGFpbnQgcmVjdC4KLSAgICBpZiAocmVzb3VyY2VzICE9IG90aGVy
LT5yZXNvdXJjZXMpCisgICAgaWYgKG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVy
Lm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJl
bmNlTGF5b3V0OwogCiAgICAgLy8gSWYgbWFya2VycyBjaGFuZ2UsIHdlIG5lZWQgYSByZWxheW91
dCwgYXMgbWFya2VyIGJvdW5kYXJpZXMgYXJlIGNhY2hlZCBpbiBSZW5kZXJTVkdQYXRoLgotICAg
IGlmIChpbmhlcml0ZWRSZXNvdXJjZXMgIT0gb3RoZXItPmluaGVyaXRlZFJlc291cmNlcykKKyAg
ICBpZiAobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgIT0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJj
ZURhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBB
bGwgdGV4dCByZWxhdGVkIHByb3BlcnRpZXMgaW5mbHVlbmNlIGxheW91dC4KLSAgICBpZiAoc3Zn
X2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvciAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFn
cy5fdGV4dEFuY2hvcgotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9y
aWVudGF0aW9uVmVydGljYWwKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9h
bGlnbm1lbnRCYXNlbGluZSAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGln
bm1lbnRCYXNlbGluZQotICAgICAgICB8fCBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWlu
YW50QmFzZWxpbmUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRC
YXNlbGluZQotICAgICAgICB8fCBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hp
ZnQgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCkKKyAg
ICBpZiAobV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yICE9IG90aGVyLm1faW5oZXJpdGVkRmxh
Z3MudGV4dEFuY2hvcgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhv
cml6b250YWwKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwK
KyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGlu
ZSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5l
CisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGlu
ZSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmUK
KyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ICE9
IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCkKICAgICAg
ICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFRleHQgcmVsYXRlZCBw
cm9wZXJ0aWVzIGluZmx1ZW5jZSBsYXlvdXQuCi0gICAgYm9vbCBtaXNjTm90RXF1YWwgPSBtaXNj
ICE9IG90aGVyLT5taXNjOwotICAgIGlmIChtaXNjTm90RXF1YWwgJiYgbWlzYy0+YmFzZWxpbmVT
aGlmdFZhbHVlICE9IG90aGVyLT5taXNjLT5iYXNlbGluZVNoaWZ0VmFsdWUpCisgICAgYm9vbCBt
aXNjTm90RXF1YWwgPSBtX21pc2NEYXRhICE9IG90aGVyLm1fbWlzY0RhdGE7CisgICAgaWYgKG1p
c2NOb3RFcXVhbCAmJiBtX21pc2NEYXRhLT5iYXNlbGluZVNoaWZ0VmFsdWUgIT0gb3RoZXIubV9t
aXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJl
bmNlTGF5b3V0OwogCiAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhZmZlY3QgdGhlIGNhY2hlZCBz
dHJva2UgYm91bmRpbmcgYm94IHJlY3RzLgotICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl9j
YXBTdHlsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGUKLSAgICAgICAg
fHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVk
X2ZsYWdzLl9qb2luU3R5bGUpCisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZQorICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzLmpvaW5TdHlsZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSkKICAgICAg
ICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFNoYWRvdyBjaGFuZ2Vz
IHJlcXVpcmUgcmVsYXlvdXRzLCBhcyB0aGV5IGFmZmVjdCB0aGUgcmVwYWludCByZWN0cy4KLSAg
ICBpZiAoc2hhZG93U1ZHICE9IG90aGVyLT5zaGFkb3dTVkcpCisgICAgaWYgKG1fc2hhZG93RGF0
YSAhPSBvdGhlci5tX3NoYWRvd0RhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VM
YXlvdXQ7CiAKICAgICAvLyBUaGUgeCBvciB5IHByb3BlcnRpZXMgcmVxdWlyZSByZWxheW91dC4K
LSAgICBpZiAobGF5b3V0ICE9IG90aGVyLT5sYXlvdXQpCisgICAgaWYgKG1fbGF5b3V0RGF0YSAh
PSBvdGhlci5tX2xheW91dERhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlv
dXQ7IAogCiAgICAgLy8gU29tZSBzdHJva2UgcHJvcGVydGllcywgcmVxdWlyZXMgcmVsYXlvdXRz
LCBhcyB0aGUgY2FjaGVkIHN0cm9rZSBib3VuZGFyaWVzIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVk
LgotICAgIGlmIChzdHJva2UgIT0gb3RoZXItPnN0cm9rZSkgewotICAgICAgICBpZiAoc3Ryb2tl
LT53aWR0aCAhPSBvdGhlci0+c3Ryb2tlLT53aWR0aAotICAgICAgICAgICAgfHwgc3Ryb2tlLT5w
YWludFR5cGUgIT0gb3RoZXItPnN0cm9rZS0+cGFpbnRUeXBlCi0gICAgICAgICAgICB8fCBzdHJv
a2UtPnBhaW50Q29sb3IgIT0gb3RoZXItPnN0cm9rZS0+cGFpbnRDb2xvcgotICAgICAgICAgICAg
fHwgc3Ryb2tlLT5wYWludFVyaSAhPSBvdGhlci0+c3Ryb2tlLT5wYWludFVyaQotICAgICAgICAg
ICAgfHwgc3Ryb2tlLT5taXRlckxpbWl0ICE9IG90aGVyLT5zdHJva2UtPm1pdGVyTGltaXQKLSAg
ICAgICAgICAgIHx8IHN0cm9rZS0+ZGFzaEFycmF5ICE9IG90aGVyLT5zdHJva2UtPmRhc2hBcnJh
eQotICAgICAgICAgICAgfHwgc3Ryb2tlLT5kYXNoT2Zmc2V0ICE9IG90aGVyLT5zdHJva2UtPmRh
c2hPZmZzZXQKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludENvbG9yICE9
IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcgotICAgICAgICAgICAgfHwgc3Ry
b2tlLT52aXNpdGVkTGlua1BhaW50VXJpICE9IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5rUGFp
bnRVcmkKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGUgIT0gb3Ro
ZXItPnN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGUpCisgICAgaWYgKG1fc3Ryb2tlRGF0YSAh
PSBvdGhlci5tX3N0cm9rZURhdGEpIHsKKyAgICAgICAgaWYgKG1fc3Ryb2tlRGF0YS0+d2lkdGgg
IT0gb3RoZXIubV9zdHJva2VEYXRhLT53aWR0aAorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRh
LT5wYWludFR5cGUgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5wYWludFR5cGUKKyAgICAgICAgICAg
IHx8IG1fc3Ryb2tlRGF0YS0+cGFpbnRDb2xvciAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnBhaW50
Q29sb3IKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+cGFpbnRVcmkgIT0gb3RoZXIubV9z
dHJva2VEYXRhLT5wYWludFVyaQorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT5taXRlckxp
bWl0ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdAorICAgICAgICAgICAgfHwgbV9z
dHJva2VEYXRhLT5kYXNoQXJyYXkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5kYXNoQXJyYXkKKyAg
ICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+ZGFzaE9mZnNldCAhPSBvdGhlci5tX3N0cm9rZURh
dGEtPmRhc2hPZmZzZXQKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQ
YWludENvbG9yICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yCisg
ICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgIT0gb3RoZXIu
bV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpCisgICAgICAgICAgICB8fCBtX3N0cm9r
ZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRl
ZExpbmtQYWludFR5cGUpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0
OwogCiAgICAgICAgIC8vIE9ubHkgdGhlIHN0cm9rZS1vcGFjaXR5IGNhc2UgcmVtYWlucywgd2hl
cmUgd2Ugb25seSBuZWVkIGEgcmVwYWludC4KLSAgICAgICAgQVNTRVJUKHN0cm9rZS0+b3BhY2l0
eSAhPSBvdGhlci0+c3Ryb2tlLT5vcGFjaXR5KTsKKyAgICAgICAgQVNTRVJUKG1fc3Ryb2tlRGF0
YS0+b3BhY2l0eSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPm9wYWNpdHkpOwogICAgICAgICByZXR1
cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKICAgICB9CiAKICAgICAvLyB2ZWN0b3ItZWZmZWN0
IGNoYW5nZXMgcmVxdWlyZSBhIHJlLWxheW91dC4KLSAgICBpZiAoc3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLl92ZWN0b3JFZmZlY3QgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5f
dmVjdG9yRWZmZWN0KQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3Rv
ckVmZmVjdCAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVj
dCkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIE5PVEU6
IEFsbCBjb21wYXJpc2lvbnMgYmVsb3cgbWF5IG9ubHkgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJl
cGFpbnQKIAogICAgIC8vIFBhaW50aW5nIHJlbGF0ZWQgcHJvcGVydGllcyBvbmx5IG5lZWQgcmVw
YWludHMuIAogICAgIGlmIChtaXNjTm90RXF1YWwpIHsKLSAgICAgICAgaWYgKG1pc2MtPmZsb29k
Q29sb3IgIT0gb3RoZXItPm1pc2MtPmZsb29kQ29sb3IKLSAgICAgICAgICAgIHx8IG1pc2MtPmZs
b29kT3BhY2l0eSAhPSBvdGhlci0+bWlzYy0+Zmxvb2RPcGFjaXR5Ci0gICAgICAgICAgICB8fCBt
aXNjLT5saWdodGluZ0NvbG9yICE9IG90aGVyLT5taXNjLT5saWdodGluZ0NvbG9yKQorICAgICAg
ICBpZiAobV9taXNjRGF0YS0+Zmxvb2RDb2xvciAhPSBvdGhlci5tX21pc2NEYXRhLT5mbG9vZENv
bG9yCisgICAgICAgICAgICB8fCBtX21pc2NEYXRhLT5mbG9vZE9wYWNpdHkgIT0gb3RoZXIubV9t
aXNjRGF0YS0+Zmxvb2RPcGFjaXR5CisgICAgICAgICAgICB8fCBtX21pc2NEYXRhLT5saWdodGlu
Z0NvbG9yICE9IG90aGVyLm1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3IpCiAgICAgICAgICAgICBy
ZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKICAgICB9CiAKLSAgICAvLyBJZiBmaWxsIGNo
YW5nZXMsIHdlIGp1c3QgbmVlZCB0byByZXBhaW50LiBGaWxsIGJvdW5kYXJpZXMgYXJlIG5vdCBp
bmZsdWVuY2VkIGJ5IHRoaXMsIG9ubHkgYnkgdGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZHUGF0aCBj
b250YWlucy4KLSAgICBpZiAoZmlsbC0+cGFpbnRUeXBlICE9IG90aGVyLT5maWxsLT5wYWludFR5
cGUgfHwgZmlsbC0+cGFpbnRDb2xvciAhPSBvdGhlci0+ZmlsbC0+cGFpbnRDb2xvcgotICAgICAg
ICB8fCBmaWxsLT5wYWludFVyaSAhPSBvdGhlci0+ZmlsbC0+cGFpbnRVcmkgfHwgZmlsbC0+b3Bh
Y2l0eSAhPSBvdGhlci0+ZmlsbC0+b3BhY2l0eSkKKyAgICAvLyBJZiBmaWxsIGRhdGEgY2hhbmdl
cywgd2UganVzdCBuZWVkIHRvIHJlcGFpbnQuIEZpbGwgYm91bmRhcmllcyBhcmUgbm90IGluZmx1
ZW5jZWQgYnkgdGhpcywgb25seSBieSB0aGUgUGF0aCwgdGhhdCBSZW5kZXJTVkdQYXRoIGNvbnRh
aW5zLgorICAgIGlmIChtX2ZpbGxEYXRhLT5wYWludFR5cGUgIT0gb3RoZXIubV9maWxsRGF0YS0+
cGFpbnRUeXBlIHx8IG1fZmlsbERhdGEtPnBhaW50Q29sb3IgIT0gb3RoZXIubV9maWxsRGF0YS0+
cGFpbnRDb2xvcgorICAgICAgICB8fCBtX2ZpbGxEYXRhLT5wYWludFVyaSAhPSBvdGhlci5tX2Zp
bGxEYXRhLT5wYWludFVyaSB8fCBtX2ZpbGxEYXRhLT5vcGFjaXR5ICE9IG90aGVyLm1fZmlsbERh
dGEtPm9wYWNpdHkpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCiAg
ICAgLy8gSWYgZ3JhZGllbnQgc3RvcHMgY2hhbmdlLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYWludC4g
U3R5bGUgdXBkYXRlcyBhcmUgYWxyZWFkeSBoYW5kbGVkIHRocm91Z2ggUmVuZGVyU1ZHR3JhZGll
bnRTVG9wLgotICAgIGlmIChzdG9wcyAhPSBvdGhlci0+c3RvcHMpCisgICAgaWYgKG1fc3RvcERh
dGEgIT0gb3RoZXIubV9zdG9wRGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJl
cGFpbnQ7CiAKICAgICAvLyBDaGFuZ2VzIG9mIHRoZXNlIGZsYWdzIG9ubHkgY2F1c2UgcmVwYWlu
dHMuCi0gICAgaWYgKHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nICE9IG90aGVy
LT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZwotICAgICAgICB8fCBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFn
cy5fc2hhcGVSZW5kZXJpbmcKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1
bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlCi0gICAgICAgIHx8IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdz
Ll9maWxsUnVsZQotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9s
YXRpb24gIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbgot
ICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
ICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
KQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nICE9IG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5z
aGFwZVJlbmRlcmluZyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nCisg
ICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRG
bGFncy5jbGlwUnVsZQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlICE9IG90
aGVyLm1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvckludGVycG9sYXRpb24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVy
cG9sYXRpb24KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25G
aWx0ZXJzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cykKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKLSAgICBpZiAoc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLT5zdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcpCisgICAgaWYgKG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcgIT0gb3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnQ7CiAKLSAgICBpZiAoc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1h
c2tUeXBlICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUpCisgICAg
aWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUgIT0gb3RoZXIubV9ub25J
bmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlm
ZmVyZW5jZVJlcGFpbnQ7CiAKICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlRXF1YWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IDM5
MTk3NWE1OGI5NTBlN2Q2NzRiNjhhN2JmYTY1M2E3Zjc4NzQxNmYuLjY2OWEyYzA5ODNlMmEyYjI0
ZGNhZmU4NTczMTdiOTI0YjE0NDgxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIApAQCAtMjMsNyArMjMsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtMzIsMjUgKzMx
LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3Mg
SW50UmVjdDsKLWNsYXNzIFJlbmRlck9iamVjdDsKLQotY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxTVkdSZW5kZXJTdHlsZT4geyAgICAKK2NsYXNzIFNWR1JlbmRlclN0
eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsKICAgICBzdGF0
aWMgUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R1JlbmRlclN0eWxlKTsgfQogICAgIFJlZjxTVkdSZW5kZXJTdHlsZT4gY29weSgpIGNvbnN0Owog
ICAgIH5TVkdSZW5kZXJTdHlsZSgpOwogCi0gICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChjb25z
dCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgU1ZH
UmVuZGVyU3R5bGUqKTsKLSAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1Jl
bmRlclN0eWxlKik7CisgICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJT
dHlsZSYpIGNvbnN0OworICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUm
KTsKKyAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7
CiAKLSAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0
OworICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG8pIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgLy8g
SW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwogICAgIHN0YXRpYyBFQWxpZ25t
ZW50QmFzZWxpbmUgaW5pdGlhbEFsaWdubWVudEJhc2VsaW5lKCkgeyByZXR1cm4gQUJfQVVUTzsg
fQpAQCAtODQsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxGbG9v
ZE9wYWNpdHkoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENv
bG9yKCkgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlh
bExpZ2h0aW5nQ29sb3IoKSB7IHJldHVybiBDb2xvcigyNTUsIDI1NSwgMjU1KTsgfQotICAgIHN0
YXRpYyBTaGFkb3dEYXRhKiBpbml0aWFsU2hhZG93KCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRp
YyBTaGFkb3dEYXRhKiBpbml0aWFsU2hhZG93KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0
YXRpYyBTdHJpbmcgaW5pdGlhbENsaXBwZXJSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9
CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFza2VyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlclN0YXJ0UmVzb3VyY2UoKSB7
IHJldHVybiBTdHJpbmcoKTsgfQpAQCAtOTIsMjg3ICs4NywxMjIgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlckVuZFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICBzdGF0aWMgRU1hc2tUeXBlIGluaXRpYWxNYXNrVHlwZSgpIHsgcmV0dXJuIE1UX0xV
TUlOQU5DRTsgfQogICAgIHN0YXRpYyBQYWludE9yZGVyIGluaXRpYWxQYWludE9yZGVyKCkgeyBy
ZXR1cm4gUGFpbnRPcmRlck5vcm1hbDsgfQotCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGlu
aXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUg
bGVuZ3RoOwotICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBl
TnVtYmVyLCAwKTsKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
U1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEtlcm5pbmcoKQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3Ro
VmFsdWUgbGVuZ3RoOwotICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCAwKTsKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9CisgICAgc3Rh
dGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKTsKKyAgICBzdGF0
aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEtlcm5pbmcoKTsKIAogICAgIC8vIFNWRyBDU1MgUHJv
cGVydHkgc2V0dGVycwotICAgIHZvaWQgc2V0QWxpZ25tZW50QmFzZWxpbmUoRUFsaWdubWVudEJh
c2VsaW5lIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5l
ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5lKEVEb21pbmFudEJhc2VsaW5l
IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSB2YWw7
IH0KLSAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnQoRUJhc2VsaW5lU2hpZnQgdmFsKSB7IHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCA9IHZhbDsgfQotICAgIHZvaWQgc2V0
VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3QgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5fdmVjdG9yRWZmZWN0ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhF
QnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJl
ZFJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q2FwU3R5bGUoTGluZUNhcCB2YWwpIHsg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldENsaXBS
dWxlKFdpbmRSdWxlIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZSA9IHZhbDsg
fQotICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBvbGF0aW9uKEVDb2xvckludGVycG9sYXRpb24gdmFs
KSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQotICAg
IHZvaWQgc2V0Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyhFQ29sb3JJbnRlcnBvbGF0aW9uIHZh
bCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID0gdmFs
OyB9Ci0gICAgdm9pZCBzZXRDb2xvclJlbmRlcmluZyhFQ29sb3JSZW5kZXJpbmcgdmFsKSB7IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRG
aWxsUnVsZShXaW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fZmlsbFJ1bGUgPSB2
YWw7IH0KLSAgICB2b2lkIHNldEpvaW5TdHlsZShMaW5lSm9pbiB2YWwpIHsgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fam9pblN0eWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRTaGFwZVJlbmRlcmluZyhF
U2hhcGVSZW5kZXJpbmcgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5n
ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRUZXh0QW5jaG9yKEVUZXh0QW5jaG9yIHZhbCkgeyBzdmdf
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0QW5jaG9yID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSB2YWw7IH0KLSAgICB2b2lkIHNl
dEdseXBoT3JpZW50YXRpb25WZXJ0aWNhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gdmFsOyB9Ci0gICAgdm9p
ZCBzZXRNYXNrVHlwZShFTWFza1R5cGUgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5t
YXNrVHlwZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIHZhbCkg
eyBzdmdfaW5oZXJpdGVkX2ZsYWdzLnBhaW50T3JkZXIgPSB2YWw7IH0KLSAgICB2b2lkIHNldEN4
KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT5jeCA9PSBv
YmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5jeCA9IG9iajsKLSAgICB9Ci0gICAg
dm9pZCBzZXRDeShjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91
dC0+Y3kgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+Y3kgPSBvYmo7Ci0g
ICAgfQotICAgIHZvaWQgc2V0Uihjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlm
ICghKGxheW91dC0+ciA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5yID0g
b2JqOwotICAgIH0KLSAgICB2b2lkIHNldFJ4KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAg
ICAgICAgaWYgKCEobGF5b3V0LT5yeCA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2Vz
cygpLT5yeCA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRSeShjb25zdCBMZW5ndGgmIG9iaikK
LSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+cnkgPT0gb2JqKSkKLSAgICAgICAgICAgIGxh
eW91dC5hY2Nlc3MoKS0+cnkgPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0WChjb25zdCBMZW5n
dGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+eCA9PSBvYmopKQotICAgICAg
ICAgICAgbGF5b3V0LmFjY2VzcygpLT54ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFkoY29u
c3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnkgPT0gb2JqKSkK
LSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldEZpbGxPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGZpbGwtPm9w
YWNpdHkgPT0gb2JqKSkKLSAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7
Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGaWxsUGFpbnQoU1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0
IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHls
ZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShmaWxs
LT5wYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+cGFp
bnRUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIGlmICghKGZpbGwtPnBhaW50Q29sb3IgPT0gY29s
b3IpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50Q29sb3IgPSBjb2xvcjsK
LSAgICAgICAgICAgIGlmICghKGZpbGwtPnBhaW50VXJpID09IHVyaSkpCi0gICAgICAgICAgICAg
ICAgZmlsbC5hY2Nlc3MoKS0+cGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT52aXNp
dGVkTGlua1BhaW50VHlwZSA9PSB0eXBlKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2Vzcygp
LT52aXNpdGVkTGlua1BhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT52
aXNpdGVkTGlua1BhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNj
ZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEo
ZmlsbC0+dmlzaXRlZExpbmtQYWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIGZpbGwu
YWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYg
KCEoc3Ryb2tlLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCkt
Pm9wYWNpdHkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VQYWludChTVkdQYWlu
dFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBh
cHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSA9
IGZhbHNlKQotICAgIHsKLSAgICAgICAgaWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKLSAgICAg
ICAgICAgIGlmICghKHN0cm9rZS0+cGFpbnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAg
IHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRUeXBlID0gdHlwZTsKLSAgICAgICAgICAgIGlmICghKHN0
cm9rZS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCi0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2Vz
cygpLT5wYWludENvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50
VXJpID09IHVyaSkpCi0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5wYWludFVyaSA9
IHVyaTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpIHsK
LSAgICAgICAgICAgIGlmICghKHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkp
Ci0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VHlwZSA9
IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9
PSBjb2xvcikpCi0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT52aXNpdGVkTGlua1Bh
aW50Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIGlmICghKHN0cm9rZS0+dmlzaXRlZExpbmtQ
YWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRl
ZExpbmtQYWludFVyaSA9IHVyaTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ry
b2tlRGFzaEFycmF5KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIG9iaikKLSAgICB7Ci0g
ICAgICAgIGlmICghKHN0cm9rZS0+ZGFzaEFycmF5ID09IG9iaikpCi0gICAgICAgICAgICBzdHJv
a2UuYWNjZXNzKCktPmRhc2hBcnJheSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9r
ZU1pdGVyTGltaXQoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3Ryb2tlLT5taXRl
ckxpbWl0ID09IG9iaikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPm1pdGVyTGltaXQg
PSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VXaWR0aChjb25zdCBMZW5ndGgmIG9i
aikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+d2lkdGggPT0gb2JqKSkKLSAgICAgICAg
ICAgIHN0cm9rZS5hY2Nlc3MoKS0+d2lkdGggPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRT
dHJva2VEYXNoT2Zmc2V0KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEo
c3Ryb2tlLT5kYXNoT2Zmc2V0ID09IG9iaikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCkt
PmRhc2hPZmZzZXQgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRLZXJuaW5nKGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiBvYmopCi0gICAgewotICAgICAgICBpZiAoISh0ZXh0LT5rZXJuaW5nID09
IG9iaikpCi0gICAgICAgICAgICB0ZXh0LmFjY2VzcygpLT5rZXJuaW5nID0gb2JqOwotICAgIH0K
LQotICAgIHZvaWQgc2V0U3RvcE9wYWNpdHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYg
KCEoc3RvcHMtPm9wYWNpdHkgPT0gb2JqKSkKLSAgICAgICAgICAgIHN0b3BzLmFjY2VzcygpLT5v
cGFjaXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3RvcENvbG9yKGNvbnN0IENvbG9y
JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdG9wcy0+Y29sb3IgPT0gb2JqKSkKLSAgICAg
ICAgICAgIHN0b3BzLmFjY2VzcygpLT5jb2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dEZsb29kT3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5mbG9v
ZE9wYWNpdHkgPT0gb2JqKSkKLSAgICAgICAgICAgIG1pc2MuYWNjZXNzKCktPmZsb29kT3BhY2l0
eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIG9i
aikKLSAgICB7Ci0gICAgICAgIGlmICghKG1pc2MtPmZsb29kQ29sb3IgPT0gb2JqKSkKLSAgICAg
ICAgICAgIG1pc2MuYWNjZXNzKCktPmZsb29kQ29sb3IgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBvYmopCi0gICAgewotICAgICAgICBpZiAo
IShtaXNjLT5saWdodGluZ0NvbG9yID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2Vzcygp
LT5saWdodGluZ0NvbG9yID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlm
dFZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBvYmopCi0gICAgewotICAgICAgICBpZiAoISht
aXNjLT5iYXNlbGluZVNoaWZ0VmFsdWUgPT0gb2JqKSkKLSAgICAgICAgICAgIG1pc2MuYWNjZXNz
KCktPmJhc2VsaW5lU2hpZnRWYWx1ZSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNoYWRv
dyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gb2JqKSB7IHNoYWRvd1NWRy5hY2Nlc3MoKS0+
c2hhZG93ID0gV1RGTW92ZShvYmopOyB9CisgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShF
QWxpZ25tZW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxp
Z25tZW50QmFzZWxpbmUgPSB2YWw7IH0KKyAgICB2b2lkIHNldERvbWluYW50QmFzZWxpbmUoRURv
bWluYW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5h
bnRCYXNlbGluZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdChFQmFzZWxpbmVT
aGlmdCB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ID0g
dmFsOyB9CisgICAgdm9pZCBzZXRWZWN0b3JFZmZlY3QoRVZlY3RvckVmZmVjdCB2YWwpIHsgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QgPSB2YWw7IH0KKyAgICB2b2lk
IHNldEJ1ZmZlcmVkUmVuZGVyaW5nKEVCdWZmZXJlZFJlbmRlcmluZyB2YWwpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZyA9IHZhbDsgfQorICAgIHZvaWQg
c2V0Q2FwU3R5bGUoTGluZUNhcCB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZSA9IHZh
bDsgfQorICAgIHZvaWQgc2V0Q2xpcFJ1bGUoV2luZFJ1bGUgdmFsKSB7IG1faW5oZXJpdGVkRmxh
Z3MuY2xpcFJ1bGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29s
b3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlv
biA9IHZhbDsgfQorICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyhFQ29sb3JJ
bnRlcnBvbGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMgPSB2YWw7IH0KKyAgICB2b2lkIHNldENvbG9yUmVuZGVyaW5nKEVDb2xvclJlbmRlcmlu
ZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZyA9IHZhbDsgfQorICAgIHZv
aWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUg
PSB2YWw7IH0KKyAgICB2b2lkIHNldEpvaW5TdHlsZShMaW5lSm9pbiB2YWwpIHsgbV9pbmhlcml0
ZWRGbGFncy5qb2luU3R5bGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldFNoYXBlUmVuZGVyaW5nKEVT
aGFwZVJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyA9IHZh
bDsgfQorICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwpIHsgbV9pbmhlcml0
ZWRGbGFncy50ZXh0QW5jaG9yID0gdmFsOyB9CisgICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5nbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9IHZhbDsgfQorICAgIHZvaWQgc2V0R2x5cGhPcmllbnRh
dGlvblZlcnRpY2FsKEVHbHlwaE9yaWVudGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQorICAgIHZvaWQgc2V0TWFza1R5cGUoRU1h
c2tUeXBlIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gdmFs
OyB9CisgICAgdm9pZCBzZXRQYWludE9yZGVyKFBhaW50T3JkZXIgdmFsKSB7IG1faW5oZXJpdGVk
RmxhZ3MucGFpbnRPcmRlciA9IHZhbDsgfQorICAgIHZvaWQgc2V0Q3goY29uc3QgTGVuZ3RoJik7
CisgICAgdm9pZCBzZXRDeShjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFIoY29uc3QgTGVu
Z3RoJik7CisgICAgdm9pZCBzZXRSeChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFJ5KGNv
bnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0WChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNl
dFkoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCk7CisgICAg
dm9pZCBzZXRGaWxsUGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNp
dGVkTGlua1N0eWxlID0gZmFsc2UpOworICAgIHZvaWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCk7
CisgICAgdm9pZCBzZXRTdHJva2VQYWludChTVkdQYWludFR5cGUsIGNvbnN0IENvbG9yJiwgY29u
c3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBw
bHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSk7CisKKyAgICB2b2lkIHNldFN0cm9rZURhc2hB
cnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+Jik7CisgICAgdm9pZCBzZXRTdHJva2VN
aXRlckxpbWl0KGZsb2F0KTsKKyAgICB2b2lkIHNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0aCYp
OworICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lk
IHNldEtlcm5pbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKKyAgICB2b2lkIHNldFN0b3BPcGFj
aXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZv
aWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldEZsb29kQ29sb3IoY29uc3Qg
Q29sb3ImKTsKKyAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2
b2lkIHNldEJhc2VsaW5lU2hpZnRWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYpOworCisgICAg
dm9pZCBzZXRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+JiYgZGF0YSkgeyBtX3No
YWRvd0RhdGEuYWNjZXNzKCkuc2hhZG93ID0gV1RGTW92ZShkYXRhKTsgfQogCiAgICAgLy8gU2V0
dGVycyBmb3Igbm9uLWluaGVyaXRlZCByZXNvdXJjZXMKLSAgICB2b2lkIHNldENsaXBwZXJSZXNv
dXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHJlc291cmNlcy0+
Y2xpcHBlciA9PSBvYmopKQotICAgICAgICAgICAgcmVzb3VyY2VzLmFjY2VzcygpLT5jbGlwcGVy
ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0TWFza2VyUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShyZXNvdXJjZXMtPm1hc2tlciA9PSBvYmopKQot
ICAgICAgICAgICAgcmVzb3VyY2VzLmFjY2VzcygpLT5tYXNrZXIgPSBvYmo7Ci0gICAgfQorICAg
IHZvaWQgc2V0Q2xpcHBlclJlc291cmNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0TWFz
a2VyUmVzb3VyY2UoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBTZXR0ZXJzIGZvciBpbmhlcml0
ZWQgcmVzb3VyY2VzCi0gICAgdm9pZCBzZXRNYXJrZXJTdGFydFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJT
dGFydCA9PSBvYmopKQotICAgICAgICAgICAgaW5oZXJpdGVkUmVzb3VyY2VzLmFjY2VzcygpLT5t
YXJrZXJTdGFydCA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hcmtlck1pZFJlc291cmNl
KGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoaW5oZXJpdGVkUmVzb3Vy
Y2VzLT5tYXJrZXJNaWQgPT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5h
Y2Nlc3MoKS0+bWFya2VyTWlkID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0TWFya2VyRW5k
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShpbmhlcml0
ZWRSZXNvdXJjZXMtPm1hcmtlckVuZCA9PSBvYmopKQotICAgICAgICAgICAgaW5oZXJpdGVkUmVz
b3VyY2VzLmFjY2VzcygpLT5tYXJrZXJFbmQgPSBvYmo7Ci0gICAgfQorICAgIHZvaWQgc2V0TWFy
a2VyU3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hcmtlck1pZFJl
c291cmNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0TWFya2VyRW5kUmVzb3VyY2UoY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBSZWFkIGFjY2Vzc29ycyBmb3IgYWxsIHRoZSBwcm9wZXJ0
aWVzCi0gICAgRUFsaWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gKEVBbGlnbm1lbnRCYXNlbGluZSkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGln
bm1lbnRCYXNlbGluZTsgfQotICAgIEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUo
KSBjb25zdCB7IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5fZG9taW5hbnRCYXNlbGluZTsgfQotICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hp
ZnQoKSBjb25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5fYmFzZWxpbmVTaGlmdDsgfQotICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkg
Y29uc3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5f
dmVjdG9yRWZmZWN0OyB9Ci0gICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5n
KCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgc3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nOyB9Ci0gICAgTGluZUNhcCBjYXBTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIChMaW5lQ2FwKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZTsgfQotICAg
IFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBzdmdfaW5oZXJp
dGVkX2ZsYWdzLl9jbGlwUnVsZTsgfQotICAgIEVDb2xvckludGVycG9sYXRpb24gY29sb3JJbnRl
cnBvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvckludGVycG9sYXRpb24pIHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbjsgfQotICAgIEVDb2xvckludGVycG9sYXRp
b24gY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRl
cnBvbGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
OyB9Ci0gICAgRUNvbG9yUmVuZGVyaW5nIGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4g
KEVDb2xvclJlbmRlcmluZykgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmc7IH0K
LSAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fZmlsbFJ1bGU7IH0KLSAgICBMaW5lSm9pbiBqb2luU3R5bGUoKSBjb25z
dCB7IHJldHVybiAoTGluZUpvaW4pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZTsgfQot
ICAgIEVTaGFwZVJlbmRlcmluZyBzaGFwZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFU2hh
cGVSZW5kZXJpbmcpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nOyB9Ci0gICAg
RVRleHRBbmNob3IgdGV4dEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIChFVGV4dEFuY2hvcikgc3Zn
X2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvcjsgfQotICAgIEVHbHlwaE9yaWVudGF0aW9uIGds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0
aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDsgfQot
ICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIGNvbnN0IHsg
cmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsOyB9Ci0gICAgZmxvYXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBmaWxsLT5vcGFjaXR5OyB9Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gZmlsbC0+cGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZp
bGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+cGFpbnRDb2xvcjsgfQotICAgIGNv
bnN0IFN0cmluZyYgZmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+cGFpbnRVcmk7
IH0gICAgCi0gICAgZmxvYXQgc3Ryb2tlT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+
b3BhY2l0eTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgc3Ryb2tlUGFpbnRUeXBlKCkgY29u
c3QgeyByZXR1cm4gc3Ryb2tlLT5wYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tl
UGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRDb2xvcjsgfQotICAgIGNv
bnN0IFN0cmluZyYgc3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50
VXJpOyB9Ci0gICAgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBzdHJva2VEYXNoQXJyYXkoKSBjb25z
dCB7IHJldHVybiBzdHJva2UtPmRhc2hBcnJheTsgfQotICAgIGZsb2F0IHN0cm9rZU1pdGVyTGlt
aXQoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPm1pdGVyTGltaXQ7IH0KLSAgICBjb25zdCBMZW5n
dGgmIHN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT53aWR0aDsgfQotICAgIGNv
bnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+ZGFz
aE9mZnNldDsgfQotICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmcoKSBjb25zdCB7IHJldHVybiB0
ZXh0LT5rZXJuaW5nOyB9Ci0gICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBz
dG9wcy0+b3BhY2l0eTsgfQotICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdG9wcy0+Y29sb3I7IH0KLSAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1pc2MtPmZsb29kQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmxpZ2h0aW5nQ29sb3I7IH0KLSAgICBT
VkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtaXNjLT5i
YXNlbGluZVNoaWZ0VmFsdWU7IH0KLSAgICBTaGFkb3dEYXRhKiBzaGFkb3coKSBjb25zdCB7IHJl
dHVybiBzaGFkb3dTVkctPnNoYWRvdy5nZXQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgY3goKSBj
b25zdCB7IHJldHVybiBsYXlvdXQtPmN4OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjeSgpIGNvbnN0
IHsgcmV0dXJuIGxheW91dC0+Y3k7IH0KLSAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJl
dHVybiBsYXlvdXQtPnI7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0LT5yeDsgfQotICAgIGNvbnN0IExlbmd0aCYgcnkoKSBjb25zdCB7IHJldHVybiBsYXlv
dXQtPnJ5OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT54
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT55OyB9Ci0g
ICAgU3RyaW5nIGNsaXBwZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xp
cHBlcjsgfQotICAgIFN0cmluZyBtYXNrZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291
cmNlcy0+bWFza2VyOyB9Ci0gICAgU3RyaW5nIG1hcmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlclN0YXJ0OyB9Ci0gICAgU3RyaW5nIG1h
cmtlck1pZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJr
ZXJNaWQ7IH0KLSAgICBTdHJpbmcgbWFya2VyRW5kUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBp
bmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlckVuZDsgfQotICAgIEVNYXNrVHlwZSBtYXNrVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIChFTWFza1R5cGUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNr
VHlwZTsgfQotICAgIFBhaW50T3JkZXIgcGFpbnRPcmRlcigpIGNvbnN0IHsgcmV0dXJuIChQYWlu
dE9yZGVyKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLnBhaW50T3JkZXI7IH0KKyAgICBFQWxpZ25tZW50
QmFzZWxpbmUgYWxpZ25tZW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRUFsaWdubWVudEJh
c2VsaW5lKSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lOyB9
CisgICAgRURvbWluYW50QmFzZWxpbmUgZG9taW5hbnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IChFRG9taW5hbnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFu
dEJhc2VsaW5lOyB9CisgICAgRUJhc2VsaW5lU2hpZnQgYmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsg
cmV0dXJuIChFQmFzZWxpbmVTaGlmdCkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNl
bGluZVNoaWZ0OyB9CisgICAgRVZlY3RvckVmZmVjdCB2ZWN0b3JFZmZlY3QoKSBjb25zdCB7IHJl
dHVybiAoRVZlY3RvckVmZmVjdCkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JF
ZmZlY3Q7IH0KKyAgICBFQnVmZmVyZWRSZW5kZXJpbmcgYnVmZmVyZWRSZW5kZXJpbmcoKSBjb25z
dCB7IHJldHVybiAoRUJ1ZmZlcmVkUmVuZGVyaW5nKSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLmJ1ZmZlcmVkUmVuZGVyaW5nOyB9CisgICAgTGluZUNhcCBjYXBTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIChMaW5lQ2FwKSBtX2luaGVyaXRlZEZsYWdzLmNhcFN0eWxlOyB9CisgICAgV2luZFJ1
bGUgY2xpcFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIG1faW5oZXJpdGVkRmxhZ3Mu
Y2xpcFJ1bGU7IH0KKyAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmNv
bG9ySW50ZXJwb2xhdGlvbjsgfQorICAgIEVDb2xvckludGVycG9sYXRpb24gY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBtX2lu
aGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM7IH0KKyAgICBFQ29sb3JSZW5k
ZXJpbmcgY29sb3JSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRUNvbG9yUmVuZGVyaW5nKSBt
X2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUo
KSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGU7IH0K
KyAgICBMaW5lSm9pbiBqb2luU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUpvaW4pIG1faW5o
ZXJpdGVkRmxhZ3Muam9pblN0eWxlOyB9CisgICAgRVNoYXBlUmVuZGVyaW5nIHNoYXBlUmVuZGVy
aW5nKCkgY29uc3QgeyByZXR1cm4gKEVTaGFwZVJlbmRlcmluZykgbV9pbmhlcml0ZWRGbGFncy5z
aGFwZVJlbmRlcmluZzsgfQorICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJl
dHVybiAoRVRleHRBbmNob3IpIG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvcjsgfQorICAgIEVH
bHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCkgY29uc3QgeyByZXR1
cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25I
b3Jpem9udGFsOyB9CisgICAgRUdseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBtX2luaGVyaXRlZEZsYWdz
LmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQorICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9maWxsRGF0YS0+b3BhY2l0eTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlw
ZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50VHlwZTsg
fQorICAgIGNvbnN0IENvbG9yJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmls
bERhdGEtPnBhaW50Q29sb3I7IH0KKyAgICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50VXJpOyB9ICAgIAorICAgIGZsb2F0IHN0cm9r
ZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPm9wYWNpdHk7IH0KKyAgICBj
b25zdCBTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
b2tlRGF0YS0+cGFpbnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnBhaW50Q29sb3I7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWlu
dFVyaTsgfQorICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29u
c3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5kYXNoQXJyYXk7IH0KKyAgICBmbG9hdCBzdHJva2VN
aXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5taXRlckxpbWl0OyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBzdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0
YS0+d2lkdGg7IH0KKyAgICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQ7IH0KKyAgICBTVkdMZW5ndGhWYWx1ZSBr
ZXJuaW5nKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RGF0YS0+a2VybmluZzsgfQorICAgIGZsb2F0
IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9wRGF0YS0+b3BhY2l0eTsgfQorICAg
IGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0b3BEYXRhLT5jb2xv
cjsgfQorICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEt
PmZsb29kT3BhY2l0eTsgfQorICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9taXNjRGF0YS0+Zmxvb2RDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9taXNjRGF0YS0+bGlnaHRpbmdDb2xvcjsgfQorICAg
IFNWR0xlbmd0aFZhbHVlIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlz
Y0RhdGEtPmJhc2VsaW5lU2hpZnRWYWx1ZTsgfQorICAgIFNoYWRvd0RhdGEqIHNoYWRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhZG93RGF0YS0+c2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBjeCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+Y3g7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIGN5KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT5jeTsgfQorICAgIGNvbnN0
IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+cjsgfQorICAgIGNvbnN0
IExlbmd0aCYgcngoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnJ4OyB9CisgICAgY29u
c3QgTGVuZ3RoJiByeSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+cnk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPng7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGNsaXBwZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhLT5jbGlwcGVyOyB9CisgICAgY29uc3QgU3RyaW5nJiBtYXNrZXJSZXNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXNrZXI7
IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyU3RhcnQ7IH0KKyAgICBjb25zdCBTdHJp
bmcmIG1hcmtlck1pZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJj
ZURhdGEtPm1hcmtlck1pZDsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFya2VyRW5kUmVzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyRW5kOyB9Cisg
ICAgRU1hc2tUeXBlIG1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gKEVNYXNrVHlwZSkgbV9ub25J
bmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZTsgfQorICAgIFBhaW50T3JkZXIgcGFpbnRP
cmRlcigpIGNvbnN0IHsgcmV0dXJuIChQYWludE9yZGVyKSBtX2luaGVyaXRlZEZsYWdzLnBhaW50
T3JkZXI7IH0KICAgICBWZWN0b3I8UGFpbnRUeXBlLCAzPiBwYWludFR5cGVzRm9yUGFpbnRPcmRl
cigpIGNvbnN0OwogCi0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua0ZpbGxQYWlu
dFR5cGUoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAg
IGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0ZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4g
ZmlsbC0+dmlzaXRlZExpbmtQYWludENvbG9yOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB2aXNpdGVk
TGlua0ZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRV
cmk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAgIGNv
bnN0IENvbG9yJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBz
dHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgdmlzaXRl
ZExpbmtTdHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQ
YWludFVyaTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0K
KyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgdmlzaXRlZExpbmtGaWxsUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT52
aXNpdGVkTGlua1BhaW50VXJpOyB9CisgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlu
a1N0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExp
bmtQYWludFR5cGU7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtTdHJva2VQYWludENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7
IH0KKyAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7
IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7IH0KIAogICAgIC8vIGNv
bnZlbmllbmNlCiAgICAgYm9vbCBoYXNDbGlwcGVyKCkgY29uc3QgeyByZXR1cm4gIWNsaXBwZXJS
ZXNvdXJjZSgpLmlzRW1wdHkoKTsgfQpAQCAtMzgzLDEwNyArMjEzLDMxMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNGaWxsKCkgY29uc3QgeyByZXR1cm4gZmlsbFBhaW50VHlwZSgpICE9IFNWR19Q
QUlOVFRZUEVfTk9ORTsgfQogICAgIGJvb2wgaXNvbGF0ZXNCbGVuZGluZygpIGNvbnN0IHsgcmV0
dXJuIGhhc01hc2tlcigpIHx8IHNoYWRvdygpOyB9CiAKLXByb3RlY3RlZDoKLSAgICAvLyBpbmhl
cml0Citwcml2YXRlOgorICAgIFNWR1JlbmRlclN0eWxlKCk7CisgICAgU1ZHUmVuZGVyU3R5bGUo
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmKTsKKworICAgIGVudW0gQ3JlYXRlRGVmYXVsdFR5cGUgeyBD
cmVhdGVEZWZhdWx0IH07CisgICAgU1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5cGUpOyAv
LyBVc2VkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KKworICAgIHZvaWQgc2V0Qml0RGVm
YXVsdHMoKTsKKwogICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAoX2NvbG9yUmVuZGVyaW5nID09IG90aGVyLl9jb2xvclJlbmRlcmlu
ZykKLSAgICAgICAgICAgICAgICAmJiAoX3NoYXBlUmVuZGVyaW5nID09IG90aGVyLl9zaGFwZVJl
bmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAoX2NsaXBSdWxlID09IG90aGVyLl9jbGlwUnVs
ZSkKLSAgICAgICAgICAgICAgICAmJiAoX2ZpbGxSdWxlID09IG90aGVyLl9maWxsUnVsZSkKLSAg
ICAgICAgICAgICAgICAmJiAoX2NhcFN0eWxlID09IG90aGVyLl9jYXBTdHlsZSkKLSAgICAgICAg
ICAgICAgICAmJiAoX2pvaW5TdHlsZSA9PSBvdGhlci5fam9pblN0eWxlKQotICAgICAgICAgICAg
ICAgICYmIChfdGV4dEFuY2hvciA9PSBvdGhlci5fdGV4dEFuY2hvcikKLSAgICAgICAgICAgICAg
ICAmJiAoX2NvbG9ySW50ZXJwb2xhdGlvbiA9PSBvdGhlci5fY29sb3JJbnRlcnBvbGF0aW9uKQot
ICAgICAgICAgICAgICAgICYmIChfY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9PSBvdGhlci5f
Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycykKLSAgICAgICAgICAgICAgICAmJiAoX2dseXBoT3Jp
ZW50YXRpb25Ib3Jpem9udGFsID09IG90aGVyLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCkK
LSAgICAgICAgICAgICAgICAmJiAoX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9PSBvdGhlci5f
Z2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKQotICAgICAgICAgICAgICAgICYmIChwYWludE9yZGVy
ID09IG90aGVyLnBhaW50T3JkZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5z
aWduZWQgX2NvbG9yUmVuZGVyaW5nIDogMjsgLy8gRUNvbG9yUmVuZGVyaW5nCi0gICAgICAgIHVu
c2lnbmVkIF9zaGFwZVJlbmRlcmluZyA6IDI7IC8vIEVTaGFwZVJlbmRlcmluZyAKLSAgICAgICAg
dW5zaWduZWQgX2NsaXBSdWxlIDogMTsgLy8gV2luZFJ1bGUKLSAgICAgICAgdW5zaWduZWQgX2Zp
bGxSdWxlIDogMTsgLy8gV2luZFJ1bGUKLSAgICAgICAgdW5zaWduZWQgX2NhcFN0eWxlIDogMjsg
Ly8gTGluZUNhcAotICAgICAgICB1bnNpZ25lZCBfam9pblN0eWxlIDogMjsgLy8gTGluZUpvaW4K
LSAgICAgICAgdW5zaWduZWQgX3RleHRBbmNob3IgOiAyOyAvLyBFVGV4dEFuY2hvcgotICAgICAg
ICB1bnNpZ25lZCBfY29sb3JJbnRlcnBvbGF0aW9uIDogMjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlv
bgotICAgICAgICB1bnNpZ25lZCBfY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA6IDI7IC8vIEVD
b2xvckludGVycG9sYXRpb24KLSAgICAgICAgdW5zaWduZWQgX2dseXBoT3JpZW50YXRpb25Ib3Jp
em9udGFsIDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KLSAgICAgICAgdW5zaWduZWQgX2dseXBo
T3JpZW50YXRpb25WZXJ0aWNhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0OworICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIHVuc2lnbmVkIGNvbG9yUmVuZGVyaW5nIDog
MjsgLy8gRUNvbG9yUmVuZGVyaW5nCisgICAgICAgIHVuc2lnbmVkIHNoYXBlUmVuZGVyaW5nIDog
MjsgLy8gRVNoYXBlUmVuZGVyaW5nCisgICAgICAgIHVuc2lnbmVkIGNsaXBSdWxlIDogMTsgLy8g
V2luZFJ1bGUKKyAgICAgICAgdW5zaWduZWQgZmlsbFJ1bGUgOiAxOyAvLyBXaW5kUnVsZQorICAg
ICAgICB1bnNpZ25lZCBjYXBTdHlsZSA6IDI7IC8vIExpbmVDYXAKKyAgICAgICAgdW5zaWduZWQg
am9pblN0eWxlIDogMjsgLy8gTGluZUpvaW4KKyAgICAgICAgdW5zaWduZWQgdGV4dEFuY2hvciA6
IDI7IC8vIEVUZXh0QW5jaG9yCisgICAgICAgIHVuc2lnbmVkIGNvbG9ySW50ZXJwb2xhdGlvbiA6
IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KKyAgICAgICAgdW5zaWduZWQgY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycyA6IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KKyAgICAgICAgdW5zaWdu
ZWQgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgor
ICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgOiAzOyAvLyBFR2x5cGhP
cmllbnRhdGlvbgogICAgICAgICB1bnNpZ25lZCBwYWludE9yZGVyIDogMzsgLy8gUGFpbnRPcmRl
cgotICAgIH0gc3ZnX2luaGVyaXRlZF9mbGFnczsKKyAgICB9OwogCi0gICAgLy8gZG9uJ3QgaW5o
ZXJpdAogICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7CiAgICAgICAgIC8vIDMyIGJpdCBu
b24taW5oZXJpdGVkLCBkb24ndCBhZGQgdG8gdGhlIHN0cnVjdCwgb3IgdGhlIG9wZXJhdG9yIHdp
bGwgYnJlYWsuCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFn
cyAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIF9uaWZsYWdzID09IG90aGVyLl9uaWZsYWdzOyB9Ci0g
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIF9uaWZsYWdzICE9IG90aGVyLl9uaWZsYWdzOyB9CisgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IGZsYWdzID09IG90aGVyLmZsYWdzOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBO
b25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGZsYWdzICE9IG90aGVyLmZs
YWdzOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBfYWxpZ25tZW50QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFz
ZWxpbmUgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgX2RvbWluYW50QmFzZWxpbmUgOiA0OyAv
LyBFRG9taW5hbnRCYXNlbGluZQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9iYXNlbGluZVNo
aWZ0IDogMjsgLy8gRUJhc2VsaW5lU2hpZnQKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBfdmVj
dG9yRWZmZWN0OiAxOyAvLyBFVmVjdG9yRWZmZWN0CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
YWxpZ25tZW50QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFzZWxpbmUKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBiYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2VsaW5l
U2hpZnQKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0
b3JFZmZlY3QKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsg
Ly8gRUJ1ZmZlcmVkUmVuZGVyaW5nCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWFza1R5cGU6
IDE7IC8vIEVNYXNrVHlwZQogICAgICAgICAgICAgICAgIC8vIDE4IGJpdHMgdW51c2VkCi0gICAg
ICAgICAgICB9IGY7Ci0gICAgICAgICAgICB1aW50MzJfdCBfbmlmbGFnczsKKyAgICAgICAgICAg
IH0gZmxhZ0JpdHM7CisgICAgICAgICAgICB1aW50MzJfdCBmbGFnczsKICAgICAgICAgfTsKLSAg
ICB9IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3M7CisgICAgfTsKKworICAgIEluaGVyaXRlZEZsYWdz
IG1faW5oZXJpdGVkRmxhZ3M7CisgICAgTm9uSW5oZXJpdGVkRmxhZ3MgbV9ub25Jbmhlcml0ZWRG
bGFnczsKIAogICAgIC8vIGluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZUZp
bGxEYXRhPiBmaWxsOwotICAgIERhdGFSZWY8U3R5bGVTdHJva2VEYXRhPiBzdHJva2U7Ci0gICAg
RGF0YVJlZjxTdHlsZVRleHREYXRhPiB0ZXh0OwotICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWRS
ZXNvdXJjZURhdGE+IGluaGVyaXRlZFJlc291cmNlczsKKyAgICBEYXRhUmVmPFN0eWxlRmlsbERh
dGE+IG1fZmlsbERhdGE7CisgICAgRGF0YVJlZjxTdHlsZVN0cm9rZURhdGE+IG1fc3Ryb2tlRGF0
YTsKKyAgICBEYXRhUmVmPFN0eWxlVGV4dERhdGE+IG1fdGV4dERhdGE7CisgICAgRGF0YVJlZjxT
dHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGE7CiAKICAg
ICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlU3RvcERhdGE+
IHN0b3BzOwotICAgIERhdGFSZWY8U3R5bGVNaXNjRGF0YT4gbWlzYzsKLSAgICBEYXRhUmVmPFN0
eWxlU2hhZG93U1ZHRGF0YT4gc2hhZG93U1ZHOwotICAgIERhdGFSZWY8U3R5bGVMYXlvdXREYXRh
PiBsYXlvdXQ7Ci0gICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0YT4gcmVzb3VyY2VzOwotCi1w
cml2YXRlOgotICAgIGVudW0gQ3JlYXRlRGVmYXVsdFR5cGUgeyBDcmVhdGVEZWZhdWx0IH07Ci0g
ICAgICAgIAotICAgIFNWR1JlbmRlclN0eWxlKCk7Ci0gICAgU1ZHUmVuZGVyU3R5bGUoY29uc3Qg
U1ZHUmVuZGVyU3R5bGUmKTsKLSAgICBTVkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0VHlwZSk7
IC8vIFVzZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHN0eWxlLgorICAgIERhdGFSZWY8U3R5bGVT
dG9wRGF0YT4gbV9zdG9wRGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlTWlzY0RhdGE+IG1fbWlzY0Rh
dGE7CisgICAgRGF0YVJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IG1fc2hhZG93RGF0YTsKKyAgICBE
YXRhUmVmPFN0eWxlTGF5b3V0RGF0YT4gbV9sYXlvdXREYXRhOworICAgIERhdGFSZWY8U3R5bGVS
ZXNvdXJjZURhdGE+IG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhOworfTsKIAotICAgIHZvaWQg
c2V0Qml0RGVmYXVsdHMoKQotICAgIHsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xp
cFJ1bGUgPSBpbml0aWFsQ2xpcFJ1bGUoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5f
Y29sb3JSZW5kZXJpbmcgPSBpbml0aWFsQ29sb3JSZW5kZXJpbmcoKTsKLSAgICAgICAgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fZmlsbFJ1bGUgPSBpbml0aWFsRmlsbFJ1bGUoKTsKLSAgICAgICAgc3Zn
X2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgPSBpbml0aWFsU2hhcGVSZW5kZXJpbmco
KTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvciA9IGluaXRpYWxUZXh0
QW5jaG9yKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gaW5pdGlh
bENhcFN0eWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSA9IGlu
aXRpYWxKb2luU3R5bGUoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRl
cnBvbGF0aW9uID0gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpOwotICAgICAgICBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID0gaW5pdGlhbENvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhP
cmllbnRhdGlvbkhvcml6b250YWwgPSBpbml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwo
KTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2Fs
ID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpOwotICAgICAgICBzdmdfaW5oZXJp
dGVkX2ZsYWdzLnBhaW50T3JkZXIgPSBpbml0aWFsUGFpbnRPcmRlcigpOwotCi0gICAgICAgIHN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuX25pZmxhZ3MgPSAwOwotICAgICAgICBzdmdfbm9uaW5oZXJp
dGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5lID0gaW5pdGlhbEFsaWdubWVudEJhc2VsaW5l
KCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZSA9
IGluaXRpYWxEb21pbmFudEJhc2VsaW5lKCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5fYmFzZWxpbmVTaGlmdCA9IGluaXRpYWxCYXNlbGluZVNoaWZ0KCk7Ci0gICAgICAgIHN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ID0gaW5pdGlhbFZlY3RvckVmZmVj
dCgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcg
PSBpbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLm1hc2tUeXBlID0gaW5pdGlhbE1hc2tUeXBlKCk7CitpbmxpbmUgU1ZHTGVuZ3RoVmFs
dWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQoreworICAgIFNW
R0xlbmd0aFZhbHVlIGxlbmd0aDsKKyAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhM
ZW5ndGhUeXBlTnVtYmVyLCAwKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitpbmxpbmUgU1ZH
TGVuZ3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKCkKK3sKKyAgICBTVkdM
ZW5ndGhWYWx1ZSBsZW5ndGg7CisgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVu
Z3RoVHlwZU51bWJlciwgMCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldEN4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICgh
KG1fbGF5b3V0RGF0YS0+Y3ggPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2Vz
cygpLmN4ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Q3ko
Y29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT5jeSA9PSBs
ZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkuY3kgPSBsZW5ndGg7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRSKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
eworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+ciA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91
dERhdGEuYWNjZXNzKCkuciA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5
bGU6OnNldFJ4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0
YS0+cnggPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnJ4ID0gbGVu
Z3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0UnkoY29uc3QgTGVuZ3Ro
JiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT5yeSA9PSBsZW5ndGgpKQorICAg
ICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkucnkgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lk
IFNWR1JlbmRlclN0eWxlOjpzZXRYKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICgh
KG1fbGF5b3V0RGF0YS0+eCA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNz
KCkueCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFkoY29u
c3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT55ID09IGxlbmd0
aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS55ID0gbGVuZ3RoOworfQorCitpbmxp
bmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0RmlsbE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sK
KyAgICBpZiAoIShtX2ZpbGxEYXRhLT5vcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX2Zp
bGxEYXRhLmFjY2VzcygpLm9wYWNpdHkgPSBvcGFjaXR5OworfQorCitpbmxpbmUgdm9pZCBTVkdS
ZW5kZXJTdHlsZTo6c2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUsIGJvb2wg
YXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpCit7CisgICAgaWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUp
IHsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+cGFpbnRUeXBlID09IHR5cGUpKQorICAgICAg
ICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5wYWludFR5cGUgPSB0eXBlOworICAgICAgICBpZiAo
IShtX2ZpbGxEYXRhLT5wYWludENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgICAgIG1fZmlsbERh
dGEuYWNjZXNzKCkucGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX2ZpbGxEYXRh
LT5wYWludFVyaSA9PSB1cmkpKQorICAgICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5wYWlu
dFVyaSA9IHVyaTsKICAgICB9Ci19OworICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkg
eworICAgICAgICBpZiAoIShtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSA9PSB0eXBl
KSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFR5cGUg
PSB0eXBlOworICAgICAgICBpZiAoIShtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3Ig
PT0gY29sb3IpKQorICAgICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1Bh
aW50Q29sb3IgPSBjb2xvcjsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQ
YWludFVyaSA9PSB1cmkpKQorICAgICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS52aXNpdGVk
TGlua1BhaW50VXJpID0gdXJpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5
bGU6OnNldFN0cm9rZU9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIShtX3N0cm9r
ZURhdGEtPm9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3Mo
KS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNl
dFN0cm9rZVBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0
IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUsIGJvb2wgYXBwbHlUb1Zpc2l0
ZWRMaW5rU3R5bGUpCit7CisgICAgaWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKKyAgICAgICAg
aWYgKCEobV9zdHJva2VEYXRhLT5wYWludFR5cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX3N0
cm9rZURhdGEuYWNjZXNzKCkucGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9zdHJv
a2VEYXRhLT5wYWludENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5h
Y2Nlc3MoKS5wYWludENvbG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+
cGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5wYWlu
dFVyaSA9IHVyaTsKKyAgICB9CisgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7Cisg
ICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkp
CisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFR5cGUg
PSB0eXBlOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xv
ciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkudmlzaXRlZExp
bmtQYWludENvbG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+dmlzaXRl
ZExpbmtQYWludFVyaSA9PSB1cmkpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2Vzcygp
LnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTVkdS
ZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFzaEFycmF5KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1
ZT4mIGFycmF5KQoreworICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5ID09IGFycmF5
KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLmRhc2hBcnJheSA9IGFycmF5OworfQor
CitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBs
aW1pdCkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPm1pdGVyTGltaXQgPT0gbGltaXQpKQor
ICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkubWl0ZXJMaW1pdCA9IGxpbWl0OworfQorCitp
bmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3RoJiB3
aWR0aCkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPndpZHRoID09IHdpZHRoKSkKKyAgICAg
ICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLndpZHRoID0gd2lkdGg7Cit9CisKK2lubGluZSB2b2lk
IFNWR1JlbmRlclN0eWxlOjpzZXRTdHJva2VEYXNoT2Zmc2V0KGNvbnN0IExlbmd0aCYgb2Zmc2V0
KQoreworICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+ZGFzaE9mZnNldCA9PSBvZmZzZXQpKQorICAg
ICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkuZGFzaE9mZnNldCA9IG9mZnNldDsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEtlcm5pbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGtlcm5pbmcpCit7CisgICAgaWYgKCEobV90ZXh0RGF0YS0+a2VybmluZyA9PSBrZXJuaW5nKSkK
KyAgICAgICAgbV90ZXh0RGF0YS5hY2Nlc3MoKS5rZXJuaW5nID0ga2VybmluZzsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0b3BPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7
CisgICAgaWYgKCEobV9zdG9wRGF0YS0+b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAgICAgICAgbV9z
dG9wRGF0YS5hY2Nlc3MoKS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZH
UmVuZGVyU3R5bGU6OnNldFN0b3BDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYg
KCEobV9zdG9wRGF0YS0+Y29sb3IgPT0gY29sb3IpKQorICAgICAgICBtX3N0b3BEYXRhLmFjY2Vz
cygpLmNvbG9yID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRG
bG9vZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5mbG9v
ZE9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAgIG1fbWlzY0RhdGEuYWNjZXNzKCkuZmxvb2RP
cGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZs
b29kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmZs
b29kQ29sb3IgPT0gY29sb3IpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmZsb29kQ29s
b3IgPSBjb2xvcjsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldExpZ2h0aW5n
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmxpZ2h0
aW5nQ29sb3IgPT0gY29sb3IpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmxpZ2h0aW5n
Q29sb3IgPSBjb2xvcjsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEJhc2Vs
aW5lU2hpZnRWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgc2hpZnRWYWx1ZSkKK3sKKyAgICBp
ZiAoIShtX21pc2NEYXRhLT5iYXNlbGluZVNoaWZ0VmFsdWUgPT0gc2hpZnRWYWx1ZSkpCisgICAg
ICAgIG1fbWlzY0RhdGEuYWNjZXNzKCkuYmFzZWxpbmVTaGlmdFZhbHVlID0gc2hpZnRWYWx1ZTsK
K30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldENsaXBwZXJSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VE
YXRhLT5jbGlwcGVyID09IHJlc291cmNlKSkKKyAgICAgICAgbV9ub25Jbmhlcml0ZWRSZXNvdXJj
ZURhdGEuYWNjZXNzKCkuY2xpcHBlciA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdS
ZW5kZXJTdHlsZTo6c2V0TWFza2VyUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sK
KyAgICBpZiAoIShtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+bWFza2VyID09IHJlc291cmNl
KSkKKyAgICAgICAgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkubWFza2VyID0g
cmVzb3VyY2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJTdGFy
dFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAgaWYgKCEobV9pbmhlcml0
ZWRSZXNvdXJjZURhdGEtPm1hcmtlclN0YXJ0ID09IHJlc291cmNlKSkKKyAgICAgICAgbV9pbmhl
cml0ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkubWFya2VyU3RhcnQgPSByZXNvdXJjZTsKK30KKwor
aW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hcmtlck1pZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2UpCit7CisgICAgaWYgKCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1h
cmtlck1pZCA9PSByZXNvdXJjZSkpCisgICAgICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFj
Y2VzcygpLm1hcmtlck1pZCA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0TWFya2VyRW5kUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sKKyAg
ICBpZiAoIShtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyRW5kID09IHJlc291cmNlKSkK
KyAgICAgICAgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkubWFya2VyRW5kID0gcmVz
b3VyY2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cygp
Cit7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZSA9IGluaXRpYWxDbGlwUnVsZSgpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcgPSBpbml0aWFsQ29sb3JSZW5kZXJp
bmcoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlID0gaW5pdGlhbEZpbGxSdWxlKCk7
CisgICAgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyA9IGluaXRpYWxTaGFwZVJlbmRl
cmluZygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IGluaXRpYWxUZXh0QW5j
aG9yKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZSA9IGluaXRpYWxDYXBTdHlsZSgp
OworICAgIG1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlID0gaW5pdGlhbEpvaW5TdHlsZSgpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uID0gaW5pdGlhbENvbG9ySW50
ZXJwb2xhdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycyA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCk7CisgICAgbV9pbmhlcml0
ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZl
cnRpY2FsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MucGFpbnRPcmRlciA9IGluaXRpYWxQYWludE9yZGVyKCk7CisKKyAgICBtX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdzID0gMDsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRz
LmFsaWdubWVudEJhc2VsaW5lID0gaW5pdGlhbEFsaWdubWVudEJhc2VsaW5lKCk7CisgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERvbWlu
YW50QmFzZWxpbmUoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5l
U2hpZnQgPSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZmxhZ0JpdHMudmVjdG9yRWZmZWN0ID0gaW5pdGlhbFZlY3RvckVmZmVjdCgpOworICAgIG1fbm9u
SW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcgPSBpbml0aWFsQnVmZmVy
ZWRSZW5kZXJpbmcoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBl
ID0gaW5pdGlhbE1hc2tUeXBlKCk7Cit9CisKK2lubGluZSBib29sIFNWR1JlbmRlclN0eWxlOjpJ
bmhlcml0ZWRGbGFnczo6b3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNvbG9yUmVuZGVyaW5nID09IG90aGVyLmNvbG9yUmVuZGVyaW5n
CisgICAgICAgICYmIHNoYXBlUmVuZGVyaW5nID09IG90aGVyLnNoYXBlUmVuZGVyaW5nCisgICAg
ICAgICYmIGNsaXBSdWxlID09IG90aGVyLmNsaXBSdWxlCisgICAgICAgICYmIGZpbGxSdWxlID09
IG90aGVyLmZpbGxSdWxlCisgICAgICAgICYmIGNhcFN0eWxlID09IG90aGVyLmNhcFN0eWxlCisg
ICAgICAgICYmIGpvaW5TdHlsZSA9PSBvdGhlci5qb2luU3R5bGUKKyAgICAgICAgJiYgdGV4dEFu
Y2hvciA9PSBvdGhlci50ZXh0QW5jaG9yCisgICAgICAgICYmIGNvbG9ySW50ZXJwb2xhdGlvbiA9
PSBvdGhlci5jb2xvckludGVycG9sYXRpb24KKyAgICAgICAgJiYgY29sb3JJbnRlcnBvbGF0aW9u
RmlsdGVycyA9PSBvdGhlci5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzCisgICAgICAgICYmIGds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID09IG90aGVyLmdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsCisgICAgICAgICYmIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9PSBvdGhlci5nbHlwaE9y
aWVudGF0aW9uVmVydGljYWwKKyAgICAgICAgJiYgcGFpbnRPcmRlciA9PSBvdGhlci5wYWludE9y
ZGVyOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2ZDc2N2FlMjM3MzdkYjZmNzgzZjIyNDllNDkw
ZWM5MDZhMzNiOGU4Li5iNzQ5YTI2YzBjYTVhY2ZjNjJlZjJmM2VjYmJlZDNlNDk1NzhmN2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFwZVZhbHVlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2hhcGVWYWx1ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcGVW
YWx1ZT4gY3JlYXRlKFJlZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0Jv
eCkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWY8QmFzaWNTaGFwZT4mJiBz
aGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFwZVZhbHVlKFdURk1vdmUoc2hhcGUpLCBjc3NCb3gpKTsKICAgICB9CkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1
ZShib3hTaGFwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRl
KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKQorICAgIHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4g
Y3JlYXRlKFJlZjxTdHlsZUltYWdlPiYmIGltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShXVEZNb3ZlKGltYWdlKSkpOwogICAgIH0KQEAgLTcyLDE0
ICs3MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNoYXBlVmFsdWUoUmVm
UHRyPEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQorICAgIFNoYXBlVmFs
dWUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgICAgICA6
IG1fdHlwZShUeXBlOjpTaGFwZSkKICAgICAgICAgLCBtX3NoYXBlKFdURk1vdmUoc2hhcGUpKQog
ICAgICAgICAsIG1fY3NzQm94KGNzc0JveCkKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQg
U2hhcGVWYWx1ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBleHBsaWNpdCBTaGFw
ZVZhbHVlKFJlZjxTdHlsZUltYWdlPiYmIGltYWdlKQogICAgICAgICA6IG1fdHlwZShUeXBlOjpJ
bWFnZSkKICAgICAgICAgLCBtX2ltYWdlKFdURk1vdmUoaW1hZ2UpKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cAppbmRleCAxYmEzNmM0YThkMGQzYmVjMzFmNDMyYTA2ZmZmM2M4M2YyYWRlNGJhLi5hZTM4MzVj
NzliYmE4ZDA5NmIxM2I3MGRkNTZlOTVmNDgxZjE3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI4LDE2ICsyOCwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUJhY2tncm91
bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKCkKLSAgICA6IG1fYmFja2dyb3VuZChCYWNrZ3Jv
dW5kRmlsbExheWVyKQotICAgICwgbV9jb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tncm91
bmRDb2xvcigpKQorICAgIDogYmFja2dyb3VuZChCYWNrZ3JvdW5kRmlsbExheWVyKQorICAgICwg
Y29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKIHsKIH0KIAotaW5s
aW5lIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVC
YWNrZ3JvdW5kRGF0YSYgbykKK2lubGluZSBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tn
cm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKQogICAgIDogUmVmQ291
bnRlZDxTdHlsZUJhY2tncm91bmREYXRhPigpCi0gICAgLCBtX2JhY2tncm91bmQoby5tX2JhY2tn
cm91bmQpCi0gICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKLSAgICAsIG1fb3V0bGluZShvLm1fb3V0
bGluZSkKKyAgICAsIGJhY2tncm91bmQob3RoZXIuYmFja2dyb3VuZCkKKyAgICAsIGNvbG9yKG90
aGVyLmNvbG9yKQorICAgICwgb3V0bGluZShvdGhlci5vdXRsaW5lKQogewogfQogCkBAIC00Niwx
OCArNDYsMTggQEAgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IFN0eWxlQmFja2dyb3VuZERhdGE6
OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQmFja2dyb3VuZERh
dGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZUJhY2tncm91bmREYXRhOjpvcGVyYXRvcj09KGNv
bnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlQmFja2dyb3VuZERh
dGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fYmFja2dyb3VuZCA9PSBvLm1fYmFja2dyb3VuZCAmJiBtX2NvbG9yID09
IG8ubV9jb2xvciAmJiBtX291dGxpbmUgPT0gby5tX291dGxpbmU7CisgICAgcmV0dXJuIGJhY2tn
cm91bmQgPT0gb3RoZXIuYmFja2dyb3VuZCAmJiBjb2xvciA9PSBvdGhlci5jb2xvciAmJiBvdXRs
aW5lID09IG90aGVyLm91dGxpbmU7CiB9CiAKIGJvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6aXNF
cXVpdmFsZW50Rm9yUGFpbnRpbmcoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fYmFja2dyb3VuZCAhPSBvdGhlci5tX2JhY2tncm91bmQgfHwgbV9j
b2xvciAhPSBvdGhlci5tX2NvbG9yKQorICAgIGlmIChiYWNrZ3JvdW5kICE9IG90aGVyLmJhY2tn
cm91bmQgfHwgY29sb3IgIT0gb3RoZXIuY29sb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIW1fb3V0bGluZS5pc1Zpc2libGUoKSAmJiAhb3RoZXIubV9vdXRsaW5lLmlzVmlzaWJs
ZSgpKQorICAgIGlmICghb3V0bGluZS5pc1Zpc2libGUoKSAmJiAhb3RoZXIub3V0bGluZS5pc1Zp
c2libGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fb3V0bGluZSA9PSBv
dGhlci5tX291dGxpbmU7CisgICAgcmV0dXJuIG91dGxpbmUgPT0gb3RoZXIub3V0bGluZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKaW5kZXggMTQ0Nzc3YWEwZWI5NWMyNWE0
YWZkMTIzZDQ4ZGJjNTdiMzZkYmQ3My4uOWI5NWVlMGNhYjk5MWQ2ZmRmYjBiNTZkZWRhMWM4MGFl
ZTg5NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
QmFja2dyb3VuZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTM2LDI5ICszNiwxOSBAQCBjbGFzcyBTdHlsZUJhY2tncm91bmREYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKTsgfQogICAgIFJlZjxTdHlsZUJhY2tncm91bmRE
YXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgflN0eWxlQmFja2dyb3VuZERhdGEoKSB7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgaXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoY29u
c3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYpIGNvbnN0OwogCi0gICAgY29uc3QgRmlsbExheWVyJiBi
YWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kOyB9Ci0gICAgY29uc3QgQ29s
b3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQotICAgIGNvbnN0IE91dGxpbmVW
YWx1ZSYgb3V0bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0bGluZTsgfQorICAgIEZpbGxMYXll
ciBiYWNrZ3JvdW5kOworICAgIENvbG9yIGNvbG9yOworICAgIE91dGxpbmVWYWx1ZSBvdXRsaW5l
OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKLQogICAgIFN0eWxl
QmFja2dyb3VuZERhdGEoKTsKLSAgICBTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFj
a2dyb3VuZERhdGEmKTsgCi0KLSAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kOwotICAgIENvbG9y
IG1fY29sb3I7Ci0gICAgT3V0bGluZVZhbHVlIG1fb3V0bGluZTsKKyAgICBTdHlsZUJhY2tncm91
bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmNwcAppbmRleCBmNzA2OTFiYzZhMTUzMzU3NGFlMWZiMTVkMjcyYTIxMTNmNzM1
YWRjLi42OTIzOTViMWUzNTBmMWNhMGQzZmQ5M2IxZDVlNTRkMTZiZmI1ZTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIENhY2hlZEltYWdlKiBTdHlsZUNhY2hlZEltYWdlOjpjYWNoZWRJbWFn
ZSgpIGNvbnN0CiAKIFJlZjxDU1NWYWx1ZT4gU3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUoKSBj
b25zdAogewotICAgIHJldHVybiBjb25zdF9jYXN0PENTU1ZhbHVlJj4obV9jc3NWYWx1ZS5nZXQo
KSk7CisgICAgcmV0dXJuIG1fY3NzVmFsdWUuY29weVJlZigpOwogfQogCiBib29sIFN0eWxlQ2Fj
aGVkSW1hZ2U6OmNhblJlbmRlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAKaW5kZXgg
MzJmNzgwNWViY2Y2NTYwYWFkNDY5ZWZhZmM1YWVkMzJjYzk2YTVmZi4uMWZhZmEyZDg4OTZkNzEz
MjM4MjkyNjE1ZjVjZDQwZGVjZGU1Njk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0
YS5jcHAKQEAgLTI4LDggKzI4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSgpCiAg
ICAgOiBmbGV4KFJlbmRlclN0eWxlOjppbml0aWFsQm94RmxleCgpKQotICAgICwgZmxleF9ncm91
cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEZsZXhHcm91cCgpKQotICAgICwgb3JkaW5hbF9ncm91
cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yZGluYWxHcm91cCgpKQorICAgICwgZmxleEdyb3Vw
KFJlbmRlclN0eWxlOjppbml0aWFsQm94RmxleEdyb3VwKCkpCisgICAgLCBvcmRpbmFsR3JvdXAo
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRpbmFsR3JvdXAoKSkKICAgICAsIGFsaWduKFJlbmRl
clN0eWxlOjppbml0aWFsQm94QWxpZ24oKSkKICAgICAsIHBhY2soUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3hQYWNrKCkpCiAgICAgLCBvcmllbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmllbnQo
KSkKQEAgLTM3LDE1ICszNywxNSBAQCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSgpCiB7CiB9CiAKLWlubGluZSBTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YShjb25z
dCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pCitpbmxpbmUgU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoY29uc3Qg
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPigpCi0gICAgLCBmbGV4KG8uZmxleCkKLSAg
ICAsIGZsZXhfZ3JvdXAoby5mbGV4X2dyb3VwKQotICAgICwgb3JkaW5hbF9ncm91cChvLm9yZGlu
YWxfZ3JvdXApCi0gICAgLCBhbGlnbihvLmFsaWduKQotICAgICwgcGFjayhvLnBhY2spCi0gICAg
LCBvcmllbnQoby5vcmllbnQpCi0gICAgLCBsaW5lcyhvLmxpbmVzKQorICAgICwgZmxleChvdGhl
ci5mbGV4KQorICAgICwgZmxleEdyb3VwKG90aGVyLmZsZXhHcm91cCkKKyAgICAsIG9yZGluYWxH
cm91cChvdGhlci5vcmRpbmFsR3JvdXApCisgICAgLCBhbGlnbihvdGhlci5hbGlnbikKKyAgICAs
IHBhY2sob3RoZXIucGFjaykKKyAgICAsIG9yaWVudChvdGhlci5vcmllbnQpCisgICAgLCBsaW5l
cyhvdGhlci5saW5lcykKIHsKIH0KIApAQCAtNTQsMTEgKzU0LDExIEBAIFJlZjxTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGE+IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6Y29w
eSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgbykg
Y29uc3QKK2Jvb2wgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNv
bnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGZsZXggPT0gby5mbGV4ICYmIGZsZXhfZ3JvdXAgPT0gby5mbGV4X2dyb3VwICYmCi0g
ICAgICAgICAgIG9yZGluYWxfZ3JvdXAgPT0gby5vcmRpbmFsX2dyb3VwICYmIGFsaWduID09IG8u
YWxpZ24gJiYKLSAgICAgICAgICAgcGFjayA9PSBvLnBhY2sgJiYgb3JpZW50ID09IG8ub3JpZW50
ICYmIGxpbmVzID09IG8ubGluZXM7CisgICAgcmV0dXJuIGZsZXggPT0gb3RoZXIuZmxleCAmJiBm
bGV4R3JvdXAgPT0gb3RoZXIuZmxleEdyb3VwCisgICAgICAgICYmIG9yZGluYWxHcm91cCA9PSBv
dGhlci5vcmRpbmFsR3JvdXAgJiYgYWxpZ24gPT0gb3RoZXIuYWxpZ24KKyAgICAgICAgJiYgcGFj
ayA9PSBvdGhlci5wYWNrICYmIG9yaWVudCA9PSBvdGhlci5vcmllbnQgJiYgbGluZXMgPT0gb3Ro
ZXIubGluZXM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEuaAppbmRleCA3ZjAwMGJiZWJmN2NmZGFlNGQ2ZGE5OTc3YjI0MGM4NWZjMjRjZjMw
Li4zMzBjZjY0NzM0ZGNhNzVkYjVmODllZTc2NmNiNGRjOTE3MWFlYzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YS5oCkBAIC0zNSwxNCArMzUsMTQgQEAgcHVibGljOgogICAgIFJlZjxT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRh
JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAKICAgICBm
bG9hdCBmbGV4OwotICAgIHVuc2lnbmVkIGludCBmbGV4X2dyb3VwOwotICAgIHVuc2lnbmVkIGlu
dCBvcmRpbmFsX2dyb3VwOworICAgIHVuc2lnbmVkIGZsZXhHcm91cDsKKyAgICB1bnNpZ25lZCBv
cmRpbmFsR3JvdXA7CiAKICAgICB1bnNpZ25lZCBhbGlnbiA6IDM7IC8vIEVCb3hBbGlnbm1lbnQK
ICAgICB1bnNpZ25lZCBwYWNrOiAyOyAvLyBFQm94UGFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcAppbmRleCBiMGQzYmUxMTAxNWU0
NzlmZmFjMGFhMTUwMTUwZmY3ZDE4NWMyMGMyLi4yMGRiYzA4ZTY2MjczODZkYWUzMzQ1YTNmNTJl
ZmZhMjViMmIzOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVGaWx0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVGaWx0ZXJEYXRhLmNwcApAQCAtMjYsMTkgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3R5bGVGaWx0ZXJEYXRhLmgiCiAKLSNpbmNsdWRlICJGRUdhdXNzaWFu
Qmx1ci5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoKQotICAgIDogbV9vcGVyYXRpb25z
KCkKIHsKIH0KIAotaW5saW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0
IFN0eWxlRmlsdGVyRGF0YSYgbykKK2lubGluZSBTdHlsZUZpbHRlckRhdGE6OlN0eWxlRmlsdGVy
RGF0YShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHls
ZUZpbHRlckRhdGE+KCkKLSAgICAsIG1fb3BlcmF0aW9ucyhvLm1fb3BlcmF0aW9ucykKKyAgICAs
IG9wZXJhdGlvbnMob3RoZXIub3BlcmF0aW9ucykKIHsKIH0KIApAQCAtNDcsOSArNDMsOSBAQCBS
ZWY8U3R5bGVGaWx0ZXJEYXRhPiBTdHlsZUZpbHRlckRhdGE6OmNvcHkoKSBjb25zdAogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsdGVyRGF0YSgqdGhpcykpOwogfQogCi1ib29sIFN0
eWxlRmlsdGVyRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG8pIGNvbnN0
Citib29sIFN0eWxlRmlsdGVyRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbHRlckRhdGEm
IG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX29wZXJhdGlvbnMgPT0gby5tX29wZXJhdGlv
bnM7CisgICAgcmV0dXJuIG9wZXJhdGlvbnMgPT0gb3RoZXIub3BlcmF0aW9uczsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlRmlsdGVyRGF0YS5oCmluZGV4IGM5NmUzMWVlMDNjZWVkNDhiNTFkNDJhMzE1N2FhYThm
ZTkyMWM1M2QuLmE4YmE4MzFlMmMyNTVkN2U4MmJlODNmYTU1OTMyOGMxMmY0YWZjZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAg
ICB9CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zIG1fb3BlcmF0aW9uczsKKyAgICBGaWx0ZXJPcGVy
YXRpb25zIG9wZXJhdGlvbnM7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVGaWx0ZXJEYXRhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggMmM4NGIyZjU2N2YwN2ExOTU4YzcwZTY2YjZmM2Y0ZmM3ZDY4ZmUyMi4u
YjAwNjM3ODE0ZWEzYjRiNzE2MDE3OTAzZGZjZGRmZTI0YmEzMGJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApA
QCAtMzksNyArMzksNyBAQCBTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdl
KFJlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogCiBSZWY8Q1NTVmFsdWU+IFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgp
KTsKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9v
bCBTdHlsZUdlbmVyYXRlZEltYWdlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtNTYsNyArNTYsNyBA
QCBGbG9hdFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAg
aWYgKG1fZml4ZWRTaXplKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBjb25zdF9j
YXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkp
LmZpeGVkU2l6ZSgqcmVuZGVyZXIpOworICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gbV9p
bWFnZUdlbmVyYXRvclZhbHVlLT5maXhlZFNpemUoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKG11
bHRpcGxpZXIgPT0gMS4wZikKICAgICAgICAgICAgIHJldHVybiBmaXhlZFNpemU7CiAKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5k
ZXJFbGVtZW50KiByZW5kZXJlcikKIFJlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29u
c3QKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgIHJldHVybiBjb25zdF9jYXN0PENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmltYWdlKCpy
ZW5kZXJlciwgc2l6ZSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1hZ2Uo
KnJlbmRlcmVyLCBzaXplKTsKIH0KIAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCmlu
ZGV4IDYzMzlmNmRkZWIxN2M5NzVhMTc4OGFiMWM4ZGE0MzI2ZWYxZTg1OTEuLmE1ZTM1N2VlOTMx
MjNmMTJkNzQyNmYwNzMwMDY3NWExMjFmYWI1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCkBAIC0yNyw5ICsyNyw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhl
cml0ZWREYXRhKCkKLSAgICA6IGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6
OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKQotICAgICwgdmVydGljYWxfYm9yZGVy
X3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSkKLSAg
ICAsIGxpbmVfaGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKQorICAgIDog
aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9y
ZGVyU3BhY2luZygpKQorICAgICwgdmVydGljYWxCb3JkZXJTcGFjaW5nKFJlbmRlclN0eWxlOjpp
bml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCisgICAgLCBsaW5lSGVpZ2h0KFJlbmRlclN0
eWxlOjppbml0aWFsTGluZUhlaWdodCgpKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgLCBzcGVjaWZpZWRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgp
KQogI2VuZGlmCkBAIC0zOCwxNSArMzgsMTEgQEAgU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUlu
aGVyaXRlZERhdGEoKQogewogfQogCi1TdHlsZUluaGVyaXRlZERhdGE6On5TdHlsZUluaGVyaXRl
ZERhdGEoKQotewotfQotCiBpbmxpbmUgU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKQogICAgIDogUmVmQ291bnRlZDxTdHls
ZUluaGVyaXRlZERhdGE+KCkKLSAgICAsIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoby5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nKQotICAgICwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcoby52
ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykKLSAgICAsIGxpbmVfaGVpZ2h0KG8ubGluZV9oZWlnaHQp
CisgICAgLCBob3Jpem9udGFsQm9yZGVyU3BhY2luZyhvLmhvcml6b250YWxCb3JkZXJTcGFjaW5n
KQorICAgICwgdmVydGljYWxCb3JkZXJTcGFjaW5nKG8udmVydGljYWxCb3JkZXJTcGFjaW5nKQor
ICAgICwgbGluZUhlaWdodChvLmxpbmVIZWlnaHQpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKICAgICAsIHNwZWNpZmllZExpbmVIZWlnaHQoby5zcGVjaWZpZWRMaW5lSGVpZ2h0KQogI2Vu
ZGlmCkBAIC02MywxNSArNTksMTUgQEAgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gU3R5bGVJbmhl
cml0ZWREYXRhOjpjb3B5KCkgY29uc3QKIAogYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJh
dG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogewotICAgIHJldHVybiBs
aW5lX2hlaWdodCA9PSBvLmxpbmVfaGVpZ2h0CisgICAgcmV0dXJuIGxpbmVIZWlnaHQgPT0gby5s
aW5lSGVpZ2h0CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAgICAgJiYgc3BlY2lm
aWVkTGluZUhlaWdodCA9PSBvLnNwZWNpZmllZExpbmVIZWlnaHQKICNlbmRpZgogICAgICAgICAm
JiBmb250Q2FzY2FkZSA9PSBvLmZvbnRDYXNjYWRlCiAgICAgICAgICYmIGNvbG9yID09IG8uY29s
b3IKICAgICAgICAgJiYgdmlzaXRlZExpbmtDb2xvciA9PSBvLnZpc2l0ZWRMaW5rQ29sb3IKLSAg
ICAgICAgJiYgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcKLSAgICAgICAgJiYgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gby52ZXJ0aWNh
bF9ib3JkZXJfc3BhY2luZzsKKyAgICAgICAgJiYgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcgPT0g
by5ob3Jpem9udGFsQm9yZGVyU3BhY2luZworICAgICAgICAmJiB2ZXJ0aWNhbEJvcmRlclNwYWNp
bmcgPT0gby52ZXJ0aWNhbEJvcmRlclNwYWNpbmc7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRl
ZERhdGEuaAppbmRleCAyOWJmY2I0NDNhMGRlMDgwOWY0NGVjYTRkZjEzZGMyMjZmNzJhODI4Li5k
NjU1NTgzNWFjOGUwOTMwNTA2MDU1ZGZjOGIxOWEyODg5MjgwMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDkgKzI3LDYg
QEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTM3LDIwICszNCwxNCBAQCBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHlsZUluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0
eWxlSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUlu
aGVyaXRlZERhdGEpOyB9CiAgICAgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0
OwotICAgIH5TdHlsZUluaGVyaXRlZERhdGEoKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJp
dGVkRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUluaGVyaXRl
ZERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCi0gICAg
ZmxvYXQgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsKLSAgICBmbG9hdCB2ZXJ0aWNhbF9ib3Jk
ZXJfc3BhY2luZzsKKyAgICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3BhY2luZzsKKyAgICBmbG9h
dCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmc7CiAKLSAgICAvLyBjb3VsZCBiZSBwYWNrZWQgaW4gYSBz
aG9ydCBidXQgZG9lc24ndAotICAgIC8vIG1ha2UgYSBkaWZmZXJlbmNlIGN1cnJlbnRseSBiZWNh
dXNlIG9mIHBhZGRpbmcKLSAgICBMZW5ndGggbGluZV9oZWlnaHQ7CisgICAgTGVuZ3RoIGxpbmVI
ZWlnaHQ7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBMZW5ndGggc3BlY2lmaWVk
TGluZUhlaWdodDsKICNlbmRpZgpAQCAtNjIsNiArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFN0eWxlSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZUluaGVyaXRlZERhdGEmKTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBTdHlsZUluaGVy
aXRlZERhdGEmKSA9IGRlbGV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3Bw
CmluZGV4IDVjOTBlMjBhMTgwZDJhYWQ2YTRmOTc5MGQwZDRhYmU3NTRmNzY0NzQuLmI3ZTc5NGY4
NGIzOTdjZmQ4YjZhNDlhYWZlMWY3ZmI5OGI3NzkyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
NywzMyArMjcsMzEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVNdWx0aUNvbERhdGE6
OlN0eWxlTXVsdGlDb2xEYXRhKCkKLSAgICA6IG1fd2lkdGgoMCkKLSAgICAsIG1fY291bnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Db3VudCgpKQotICAgICwgbV9nYXAoMCkKLSAgICAsIG1f
YXV0b1dpZHRoKHRydWUpCi0gICAgLCBtX2F1dG9Db3VudCh0cnVlKQotICAgICwgbV9ub3JtYWxH
YXAodHJ1ZSkKLSAgICAsIG1fZmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkZpbGwoKSkK
LSAgICAsIG1fY29sdW1uU3BhbihmYWxzZSkKLSAgICAsIG1fYXhpcyhSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbHVtbkF4aXMoKSkKLSAgICAsIG1fcHJvZ3Jlc3Npb24oUmVuZGVyU3R5bGU6OmluaXRp
YWxDb2x1bW5Qcm9ncmVzc2lvbigpKQorICAgIDogY291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2x1bW5Db3VudCgpKQorICAgICwgYXV0b1dpZHRoKHRydWUpCisgICAgLCBhdXRvQ291bnQodHJ1
ZSkKKyAgICAsIG5vcm1hbEdhcCh0cnVlKQorICAgICwgZmlsbChSZW5kZXJTdHlsZTo6aW5pdGlh
bENvbHVtbkZpbGwoKSkKKyAgICAsIGNvbHVtblNwYW4oZmFsc2UpCisgICAgLCBheGlzKFJlbmRl
clN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQorICAgICwgcHJvZ3Jlc3Npb24oUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQogewogfQogCi1pbmxpbmUgU3R5bGVNdWx0
aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKQor
aW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YShjb25zdCBTdHlsZU11
bHRpQ29sRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlTXVsdGlDb2xEYXRhPigp
Ci0gICAgLCBtX3dpZHRoKG8ubV93aWR0aCkKLSAgICAsIG1fY291bnQoby5tX2NvdW50KQotICAg
ICwgbV9nYXAoby5tX2dhcCkKLSAgICAsIG1fcnVsZShvLm1fcnVsZSkKLSAgICAsIG1fdmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKQotICAg
ICwgbV9hdXRvV2lkdGgoby5tX2F1dG9XaWR0aCkKLSAgICAsIG1fYXV0b0NvdW50KG8ubV9hdXRv
Q291bnQpCi0gICAgLCBtX25vcm1hbEdhcChvLm1fbm9ybWFsR2FwKQotICAgICwgbV9maWxsKG8u
bV9maWxsKQotICAgICwgbV9jb2x1bW5TcGFuKG8ubV9jb2x1bW5TcGFuKQotICAgICwgbV9heGlz
KG8ubV9heGlzKQotICAgICwgbV9wcm9ncmVzc2lvbihvLm1fcHJvZ3Jlc3Npb24pCisgICAgLCB3
aWR0aChvdGhlci53aWR0aCkKKyAgICAsIGNvdW50KG90aGVyLmNvdW50KQorICAgICwgZ2FwKG90
aGVyLmdhcCkKKyAgICAsIHJ1bGUob3RoZXIucnVsZSkKKyAgICAsIHZpc2l0ZWRMaW5rQ29sdW1u
UnVsZUNvbG9yKG90aGVyLnZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKQorICAgICwgYXV0b1dp
ZHRoKG90aGVyLmF1dG9XaWR0aCkKKyAgICAsIGF1dG9Db3VudChvdGhlci5hdXRvQ291bnQpCisg
ICAgLCBub3JtYWxHYXAob3RoZXIubm9ybWFsR2FwKQorICAgICwgZmlsbChvdGhlci5maWxsKQor
ICAgICwgY29sdW1uU3BhbihvdGhlci5jb2x1bW5TcGFuKQorICAgICwgYXhpcyhvdGhlci5heGlz
KQorICAgICwgcHJvZ3Jlc3Npb24ob3RoZXIucHJvZ3Jlc3Npb24pCiB7CiB9CiAKQEAgLTYyLDEz
ICs2MCwxMyBAQCBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IFN0eWxlTXVsdGlDb2xEYXRhOjpjb3B5
KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSgqdGhp
cykpOwogfQogCi1ib29sIFN0eWxlTXVsdGlDb2xEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
TXVsdGlDb2xEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZU11bHRpQ29sRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
d2lkdGggPT0gby5tX3dpZHRoICYmIG1fY291bnQgPT0gby5tX2NvdW50ICYmIG1fZ2FwID09IG8u
bV9nYXAKLSAgICAgICAgJiYgbV9ydWxlID09IG8ubV9ydWxlICYmIG1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yCi0gICAgICAgICYm
IG1fYXV0b1dpZHRoID09IG8ubV9hdXRvV2lkdGggJiYgbV9hdXRvQ291bnQgPT0gby5tX2F1dG9D
b3VudCAmJiBtX25vcm1hbEdhcCA9PSBvLm1fbm9ybWFsR2FwCi0gICAgICAgICYmIG1fZmlsbCA9
PSBvLm1fZmlsbCAmJiBtX2NvbHVtblNwYW4gPT0gby5tX2NvbHVtblNwYW4KLSAgICAgICAgJiYg
bV9heGlzID09IG8ubV9heGlzICYmIG1fcHJvZ3Jlc3Npb24gPT0gby5tX3Byb2dyZXNzaW9uOwor
ICAgIHJldHVybiB3aWR0aCA9PSBvdGhlci53aWR0aCAmJiBjb3VudCA9PSBvdGhlci5jb3VudCAm
JiBnYXAgPT0gb3RoZXIuZ2FwCisgICAgICAgICYmIHJ1bGUgPT0gb3RoZXIucnVsZSAmJiB2aXNp
dGVkTGlua0NvbHVtblJ1bGVDb2xvciA9PSBvdGhlci52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xv
cgorICAgICAgICAmJiBhdXRvV2lkdGggPT0gb3RoZXIuYXV0b1dpZHRoICYmIGF1dG9Db3VudCA9
PSBvdGhlci5hdXRvQ291bnQgJiYgbm9ybWFsR2FwID09IG90aGVyLm5vcm1hbEdhcAorICAgICAg
ICAmJiBmaWxsID09IG90aGVyLmZpbGwgJiYgY29sdW1uU3BhbiA9PSBvdGhlci5jb2x1bW5TcGFu
CisgICAgICAgICYmIGF4aXMgPT0gb3RoZXIuYXhpcyAmJiBwcm9ncmVzc2lvbiA9PSBvdGhlci5w
cm9ncmVzc2lvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAppbmRleCAyOTM0Zjk4
NTU2N2U3ZDExMTMzYTRjNmRlNTNmZTFhNThkNDUzMjcwLi41YmRmODFkNTE3YjkwZDE5NjhjZDIy
ZDM3NjE3N2MyN2JiZDY5M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAw
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWls
LmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zOCwzMiArMzgsMjkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVNdWx0aUNvbERhdGEpOyB9CiAgICAgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjb3B5KCkg
Y29uc3Q7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRh
JiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEg
Jm8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHVuc2lnbmVkIHNob3J0IHJ1bGVXaWR0
aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9ydWxlLnN0eWxlKCkgPT0gQk5PTkUgfHwg
bV9ydWxlLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgaWYgKHJ1bGUuc3R5bGUoKSA9PSBC
Tk9ORSB8fCBydWxlLnN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAgIHJldHVybiAwOyAK
LSAgICAgICAgcmV0dXJuIG1fcnVsZS53aWR0aCgpOworICAgICAgICByZXR1cm4gcnVsZS53aWR0
aCgpOwogICAgIH0KIAotICAgIGZsb2F0IG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9j
b3VudDsKLSAgICBmbG9hdCBtX2dhcDsKLSAgICBCb3JkZXJWYWx1ZSBtX3J1bGU7Ci0gICAgQ29s
b3IgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsKKyAgICBmbG9hdCB3aWR0aCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBzaG9ydCBjb3VudDsKKyAgICBmbG9hdCBnYXAgeyAwIH07CisgICAgQm9y
ZGVyVmFsdWUgcnVsZTsKKyAgICBDb2xvciB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsKIAot
ICAgIGJvb2wgbV9hdXRvV2lkdGggOiAxOwotICAgIGJvb2wgbV9hdXRvQ291bnQgOiAxOwotICAg
IGJvb2wgbV9ub3JtYWxHYXAgOiAxOwotICAgIHVuc2lnbmVkIG1fZmlsbCA6IDE7IC8vIENvbHVt
bkZpbGwKLSAgICB1bnNpZ25lZCBtX2NvbHVtblNwYW4gOiAxOwotICAgIHVuc2lnbmVkIG1fYXhp
cyA6IDI7IC8vIENvbHVtbkF4aXMKLSAgICB1bnNpZ25lZCBtX3Byb2dyZXNzaW9uIDogMjsgLy8g
Q29sdW1uUHJvZ3Jlc3Npb24KKyAgICBib29sIGF1dG9XaWR0aCA6IDE7CisgICAgYm9vbCBhdXRv
Q291bnQgOiAxOworICAgIGJvb2wgbm9ybWFsR2FwIDogMTsKKyAgICB1bnNpZ25lZCBmaWxsIDog
MTsgLy8gQ29sdW1uRmlsbAorICAgIHVuc2lnbmVkIGNvbHVtblNwYW4gOiAxOworICAgIHVuc2ln
bmVkIGF4aXMgOiAyOyAvLyBDb2x1bW5BeGlzCisgICAgdW5zaWduZWQgcHJvZ3Jlc3Npb24gOiAy
OyAvLyBDb2x1bW5Qcm9ncmVzc2lvbgogCiBwcml2YXRlOgogICAgIFN0eWxlTXVsdGlDb2xEYXRh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggZmEyOWFmMGRjZTcxNjBiOTU4YTM1N2NkZDI4ODc3
ODFhYjk3ZmRmNy4uZmM2MDVkNDhmY2M4NTkwNTgzOTBkZjM5ODJiNWJkYjA1OTg4YjVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgR3JlYXRlclRoYW5PclNh
bWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R3JlYXRl
cgogICAgIHZvaWQqIHJlZlB0cnNbMl07CiAgICAgTGVuZ3RoIGxlbmd0aHNbMl07CiAgICAgZmxv
YXQgc2Vjb25kRmxvYXQ7Ci0gICAgdW5zaWduZWQgbV9iaXRmaWVsZHNbNF07CisgICAgdW5zaWdu
ZWQgYml0ZmllbGRzWzRdOwogICAgIHNob3J0IHBhZ2VkTWVkaWFTaG9ydHNbMl07CiAgICAgdW5z
aWduZWQgdW5zaWduZWRzWzFdOwogICAgIHNob3J0IGh5cGhlbmF0aW9uU2hvcnRzWzNdOwpAQCAt
NzMsMTIgKzczLDEyIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGEoKQogICAgIDogbGlzdFN0eWxlSW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5
bGVJbWFnZSgpKQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5k
ZW50KCkpCi0gICAgLCBtX2VmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkp
Ci0gICAgLCBtX2N1c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0
ZSgpKQorICAgICwgZWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKKyAg
ICAsIGN1c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQog
ICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5z
KFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKQotICAgICwgbV9oYXNBdXRvV2lkb3dzKHRy
dWUpCi0gICAgLCBtX2hhc0F1dG9PcnBoYW5zKHRydWUpCisgICAgLCBoYXNBdXRvV2lkb3dzKHRy
dWUpCisgICAgLCBoYXNBdXRvT3JwaGFucyh0cnVlKQogICAgICwgdGV4dFNlY3VyaXR5KFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dFNlY3VyaXR5KCkpCiAgICAgLCB1c2VyTW9kaWZ5KFJFQURfT05M
WSkKICAgICAsIHdvcmRCcmVhayhSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRCcmVhaygpKQpAQCAt
OTEsNTAgKzkxLDUwIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGEoKQogICAgICwgdGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKQog
ICAgICwgdGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrTm9uZSkKICAgICAsIHRleHRF
bXBoYXNpc1Bvc2l0aW9uKFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciB8IFRleHRFbXBoYXNpc1Bv
c2l0aW9uUmlnaHQpCi0gICAgLCBtX3RleHRPcmllbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVGV4dE9yaWVudGF0aW9uOjpNaXhlZCkpCisgICAgLCB0ZXh0T3JpZW50YXRpb24oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQpKQogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCi0gICAgLCBtX3RleHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dElu
ZGVudExpbmUoKSkKLSAgICAsIG1fdGV4dEluZGVudFR5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0SW5kZW50VHlwZSgpKQorICAgICwgdGV4dEluZGVudExpbmUoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0SW5kZW50TGluZSgpKQorICAgICwgdGV4dEluZGVudFR5cGUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0SW5kZW50VHlwZSgpKQogI2VuZGlmCi0gICAgLCBtX2xpbmVCb3hDb250YWluKFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUJveENvbnRhaW4oKSkKKyAgICAsIGxpbmVCb3hDb250YWlu
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUJveENvbnRhaW4oKSkKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQotICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKFJlbmRlclN0eWxlOjpp
bml0aWFsSW1hZ2VPcmllbnRhdGlvbigpKQorICAgICwgaW1hZ2VPcmllbnRhdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSkKICNlbmRpZgotICAgICwgbV9pbWFnZVJl
bmRlcmluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCi0gICAgLCBtX2xp
bmVTbmFwKFJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkKLSAgICAsIG1fbGluZUFsaWdu
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWduKCkpCisgICAgLCBpbWFnZVJlbmRlcmluZyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCisgICAgLCBsaW5lU25hcChSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCisgICAgLCBsaW5lQWxpZ24oUmVuZGVyU3R5bGU6
OmluaXRpYWxMaW5lQWxpZ24oKSkKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKQogICAgICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhSZW5kZXJTdHlsZTo6aW5p
dGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlKFJlbmRlclN0
eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCi0gICAgLCBtX2ltYWdlUmVzb2x1
dGlvblNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkpCisgICAg
LCBpbWFnZVJlc29sdXRpb25Tb3VyY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRp
b25Tb3VyY2UoKSkKKyAgICAsIGltYWdlUmVzb2x1dGlvblNuYXAoUmVuZGVyU3R5bGU6OmluaXRp
YWxJbWFnZVJlc29sdXRpb25TbmFwKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQot
ICAgICwgbV90ZXh0QWxpZ25MYXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduTGFzdCgp
KQotICAgICwgbV90ZXh0SnVzdGlmeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRKdXN0aWZ5KCkp
Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU2tpcChSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpKQotICAgICwgbV90ZXh0VW5kZXJsaW5l
UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSkKLSAg
ICAsIG1fcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpCi0g
ICAgLCBtX3RleHRab29tKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkKKyAgICAsIHRl
eHRBbGlnbkxhc3QoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QWxpZ25MYXN0KCkpCisgICAgLCB0
ZXh0SnVzdGlmeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRKdXN0aWZ5KCkpCisjZW5kaWYKKyAg
ICAsIHRleHREZWNvcmF0aW9uU2tpcChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9u
U2tpcCgpKQorICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dFVuZGVybGluZVBvc2l0aW9uKCkpCisgICAgLCBydWJ5UG9zaXRpb24oUmVuZGVyU3R5bGU6
OmluaXRpYWxSdWJ5UG9zaXRpb24oKSkKKyAgICAsIHRleHRab29tKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dFpvb20oKSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCB0b3VjaENhbGxvdXRFbmFi
bGVkKFJlbmRlclN0eWxlOjppbml0aWFsVG91Y2hDYWxsb3V0RW5hYmxlZCgpKQogI2VuZGlmCiAj
aWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICwgdHJhaWxpbmdXb3JkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYWlsaW5nV29yZCgpKSkKICNlbmRp
ZgotICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5n
UHVuY3R1YXRpb24oKSkKKyAgICAsIGhhbmdpbmdQdW5jdHVhdGlvbihSZW5kZXJTdHlsZTo6aW5p
dGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgt
MSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcigtMSkKICAgICAsIGh5cGhlbmF0aW9uTGlt
aXRMaW5lcygtMSkKLSAgICAsIG1fbGluZUdyaWQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3Jp
ZCgpKQotICAgICwgbV90YWJTaXplKFJlbmRlclN0eWxlOjppbml0aWFsVGFiU2l6ZSgpKQorICAg
ICwgbGluZUdyaWQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpKQorICAgICwgdGFiU2l6
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYlNpemUoKSkKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQogICAgICwgdGV4dFNpemVBZGp1c3QoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0U2l6ZUFk
anVzdCgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgICwg
bV9pbWFnZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24oKSkK
KyAgICAsIGltYWdlUmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlv
bigpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdo
dENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKSkKQEAgLTE1NSwx
MiArMTU1LDEyIEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB0ZXh0U2hhZG93KG8u
dGV4dFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykg
OiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQo
by5pbmRlbnQpCi0gICAgLCBtX2VmZmVjdGl2ZVpvb20oby5tX2VmZmVjdGl2ZVpvb20pCi0gICAg
LCBtX2N1c3RvbVByb3BlcnRpZXMoby5tX2N1c3RvbVByb3BlcnRpZXMpCisgICAgLCBlZmZlY3Rp
dmVab29tKG8uZWZmZWN0aXZlWm9vbSkKKyAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Q
cm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3JwaGFucyhvLm9ycGhh
bnMpCi0gICAgLCBtX2hhc0F1dG9XaWRvd3Moby5tX2hhc0F1dG9XaWRvd3MpCi0gICAgLCBtX2hh
c0F1dG9PcnBoYW5zKG8ubV9oYXNBdXRvT3JwaGFucykKKyAgICAsIGhhc0F1dG9XaWRvd3Moby5o
YXNBdXRvV2lkb3dzKQorICAgICwgaGFzQXV0b09ycGhhbnMoby5oYXNBdXRvT3JwaGFucykKICAg
ICAsIHRleHRTZWN1cml0eShvLnRleHRTZWN1cml0eSkKICAgICAsIHVzZXJNb2RpZnkoby51c2Vy
TW9kaWZ5KQogICAgICwgd29yZEJyZWFrKG8ud29yZEJyZWFrKQpAQCAtMTczLDUyICsxNzMsNTIg
QEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEo
Y29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIHRleHRFbXBoYXNpc0ZpbGwoby50ZXh0
RW1waGFzaXNGaWxsKQogICAgICwgdGV4dEVtcGhhc2lzTWFyayhvLnRleHRFbXBoYXNpc01hcmsp
CiAgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihvLnRleHRFbXBoYXNpc1Bvc2l0aW9uKQotICAg
ICwgbV90ZXh0T3JpZW50YXRpb24oby5tX3RleHRPcmllbnRhdGlvbikKKyAgICAsIHRleHRPcmll
bnRhdGlvbihvLnRleHRPcmllbnRhdGlvbikKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICwg
bV90ZXh0SW5kZW50TGluZShvLm1fdGV4dEluZGVudExpbmUpCi0gICAgLCBtX3RleHRJbmRlbnRU
eXBlKG8ubV90ZXh0SW5kZW50VHlwZSkKKyAgICAsIHRleHRJbmRlbnRMaW5lKG8udGV4dEluZGVu
dExpbmUpCisgICAgLCB0ZXh0SW5kZW50VHlwZShvLnRleHRJbmRlbnRUeXBlKQogI2VuZGlmCi0g
ICAgLCBtX2xpbmVCb3hDb250YWluKG8ubV9saW5lQm94Q29udGFpbikKKyAgICAsIGxpbmVCb3hD
b250YWluKG8ubGluZUJveENvbnRhaW4pCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKLSAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihvLm1faW1hZ2VPcmllbnRhdGlvbikKKyAgICAs
IGltYWdlT3JpZW50YXRpb24oby5pbWFnZU9yaWVudGF0aW9uKQogI2VuZGlmCi0gICAgLCBtX2lt
YWdlUmVuZGVyaW5nKG8ubV9pbWFnZVJlbmRlcmluZykKLSAgICAsIG1fbGluZVNuYXAoby5tX2xp
bmVTbmFwKQotICAgICwgbV9saW5lQWxpZ24oby5tX2xpbmVBbGlnbikKKyAgICAsIGltYWdlUmVu
ZGVyaW5nKG8uaW1hZ2VSZW5kZXJpbmcpCisgICAgLCBsaW5lU25hcChvLmxpbmVTbmFwKQorICAg
ICwgbGluZUFsaWduKG8ubGluZUFsaWduKQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKG8udXNlVG91Y2hP
dmVyZmxvd1Njcm9sbGluZykKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlKG8ubV9pbWFnZVJlc29sdXRpb25Tb3Vy
Y2UpCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAoby5tX2ltYWdlUmVzb2x1dGlvblNuYXAp
CisgICAgLCBpbWFnZVJlc29sdXRpb25Tb3VyY2Uoby5pbWFnZVJlc29sdXRpb25Tb3VyY2UpCisg
ICAgLCBpbWFnZVJlc29sdXRpb25TbmFwKG8uaW1hZ2VSZXNvbHV0aW9uU25hcCkKICNlbmRpZgog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgLCBtX3RleHRBbGlnbkxhc3Qoby5tX3RleHRBbGln
bkxhc3QpCi0gICAgLCBtX3RleHRKdXN0aWZ5KG8ubV90ZXh0SnVzdGlmeSkKLSNlbmRpZiAvLyBD
U1MzX1RFWFQKLSAgICAsIG1fdGV4dERlY29yYXRpb25Ta2lwKG8ubV90ZXh0RGVjb3JhdGlvblNr
aXApCi0gICAgLCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbihvLm1fdGV4dFVuZGVybGluZVBvc2l0
aW9uKQotICAgICwgbV9ydWJ5UG9zaXRpb24oby5tX3J1YnlQb3NpdGlvbikKLSAgICAsIG1fdGV4
dFpvb20oby5tX3RleHRab29tKQorICAgICwgdGV4dEFsaWduTGFzdChvLnRleHRBbGlnbkxhc3Qp
CisgICAgLCB0ZXh0SnVzdGlmeShvLnRleHRKdXN0aWZ5KQorI2VuZGlmCisgICAgLCB0ZXh0RGVj
b3JhdGlvblNraXAoby50ZXh0RGVjb3JhdGlvblNraXApCisgICAgLCB0ZXh0VW5kZXJsaW5lUG9z
aXRpb24oby50ZXh0VW5kZXJsaW5lUG9zaXRpb24pCisgICAgLCBydWJ5UG9zaXRpb24oby5ydWJ5
UG9zaXRpb24pCisgICAgLCB0ZXh0Wm9vbShvLnRleHRab29tKQogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoby50b3VjaENhbGxvdXRFbmFibGVkKQogI2VuZGlm
CiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICwgdHJhaWxpbmdXb3JkKG8udHJh
aWxpbmdXb3JkKQogI2VuZGlmCi0gICAgLCBtX2hhbmdpbmdQdW5jdHVhdGlvbihvLm1faGFuZ2lu
Z1B1bmN0dWF0aW9uKQorICAgICwgaGFuZ2luZ1B1bmN0dWF0aW9uKG8uaGFuZ2luZ1B1bmN0dWF0
aW9uKQogICAgICwgaHlwaGVuYXRpb25TdHJpbmcoby5oeXBoZW5hdGlvblN0cmluZykKICAgICAs
IGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoby5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKQogICAgICwg
aHlwaGVuYXRpb25MaW1pdEFmdGVyKG8uaHlwaGVuYXRpb25MaW1pdEFmdGVyKQogICAgICwgaHlw
aGVuYXRpb25MaW1pdExpbmVzKG8uaHlwaGVuYXRpb25MaW1pdExpbmVzKQogICAgICwgdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCi0gICAgLCBtX2xpbmVH
cmlkKG8ubV9saW5lR3JpZCkKLSAgICAsIG1fdGFiU2l6ZShvLm1fdGFiU2l6ZSkKKyAgICAsIGxp
bmVHcmlkKG8ubGluZUdyaWQpCisgICAgLCB0YWJTaXplKG8udGFiU2l6ZSkKICNpZiBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogICAgICwgdGV4dFNpemVBZGp1c3Qoby50ZXh0U2l6ZUFkanVzdCkK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VS
ZXNvbHV0aW9uKG8ubV9pbWFnZVJlc29sdXRpb24pCisgICAgLCBpbWFnZVJlc29sdXRpb24oby5p
bWFnZVJlc29sdXRpb24pCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwg
dGFwSGlnaGxpZ2h0Q29sb3Ioby50YXBIaWdobGlnaHRDb2xvcikKQEAgLTI1MCwxMSArMjUwLDEx
IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKHRleHRTaGFkb3csIG8udGV4dFNoYWRvdykKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0Vx
dWFsRGF0YShjdXJzb3JEYXRhLCBvLmN1cnNvckRhdGEpCiAgICAgICAgICYmIGluZGVudCA9PSBv
LmluZGVudAotICAgICAgICAmJiBtX2VmZmVjdGl2ZVpvb20gPT0gby5tX2VmZmVjdGl2ZVpvb20K
KyAgICAgICAgJiYgZWZmZWN0aXZlWm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20KICAgICAgICAgJiYg
d2lkb3dzID09IG8ud2lkb3dzCiAgICAgICAgICYmIG9ycGhhbnMgPT0gby5vcnBoYW5zCi0gICAg
ICAgICYmIG1faGFzQXV0b1dpZG93cyA9PSBvLm1faGFzQXV0b1dpZG93cwotICAgICAgICAmJiBt
X2hhc0F1dG9PcnBoYW5zID09IG8ubV9oYXNBdXRvT3JwaGFucworICAgICAgICAmJiBoYXNBdXRv
V2lkb3dzID09IG8uaGFzQXV0b1dpZG93cworICAgICAgICAmJiBoYXNBdXRvT3JwaGFucyA9PSBv
Lmhhc0F1dG9PcnBoYW5zCiAgICAgICAgICYmIHRleHRTZWN1cml0eSA9PSBvLnRleHRTZWN1cml0
eQogICAgICAgICAmJiB1c2VyTW9kaWZ5ID09IG8udXNlck1vZGlmeQogICAgICAgICAmJiB3b3Jk
QnJlYWsgPT0gby53b3JkQnJlYWsKQEAgLTI3Niw0NCArMjc2LDQ0IEBAIGJvb2wgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBv
KSBjb25zdAogICAgICAgICAmJiB0ZXh0RW1waGFzaXNGaWxsID09IG8udGV4dEVtcGhhc2lzRmls
bAogICAgICAgICAmJiB0ZXh0RW1waGFzaXNNYXJrID09IG8udGV4dEVtcGhhc2lzTWFyawogICAg
ICAgICAmJiB0ZXh0RW1waGFzaXNQb3NpdGlvbiA9PSBvLnRleHRFbXBoYXNpc1Bvc2l0aW9uCi0g
ICAgICAgICYmIG1fdGV4dE9yaWVudGF0aW9uID09IG8ubV90ZXh0T3JpZW50YXRpb24KKyAgICAg
ICAgJiYgdGV4dE9yaWVudGF0aW9uID09IG8udGV4dE9yaWVudGF0aW9uCiAjaWYgRU5BQkxFKENT
UzNfVEVYVCkKLSAgICAgICAgJiYgbV90ZXh0SW5kZW50TGluZSA9PSBvLm1fdGV4dEluZGVudExp
bmUKLSAgICAgICAgJiYgbV90ZXh0SW5kZW50VHlwZSA9PSBvLm1fdGV4dEluZGVudFR5cGUKKyAg
ICAgICAgJiYgdGV4dEluZGVudExpbmUgPT0gby50ZXh0SW5kZW50TGluZQorICAgICAgICAmJiB0
ZXh0SW5kZW50VHlwZSA9PSBvLnRleHRJbmRlbnRUeXBlCiAjZW5kaWYKLSAgICAgICAgJiYgbV9s
aW5lQm94Q29udGFpbiA9PSBvLm1fbGluZUJveENvbnRhaW4KKyAgICAgICAgJiYgbGluZUJveENv
bnRhaW4gPT0gby5saW5lQm94Q29udGFpbgogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgJiYg
dG91Y2hDYWxsb3V0RW5hYmxlZCA9PSBvLnRvdWNoQ2FsbG91dEVuYWJsZWQKICNlbmRpZgogICAg
ICAgICAmJiBoeXBoZW5hdGlvblN0cmluZyA9PSBvLmh5cGhlbmF0aW9uU3RyaW5nCiAgICAgICAg
ICYmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsgPT0gby50ZXh0RW1waGFzaXNDdXN0b21NYXJrCiAg
ICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEocXVvdGVzLCBvLnF1b3RlcykKLSAgICAg
ICAgJiYgbV90YWJTaXplID09IG8ubV90YWJTaXplCi0gICAgICAgICYmIG1fbGluZUdyaWQgPT0g
by5tX2xpbmVHcmlkCisgICAgICAgICYmIHRhYlNpemUgPT0gby50YWJTaXplCisgICAgICAgICYm
IGxpbmVHcmlkID09IG8ubGluZUdyaWQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQotICAgICAgICAmJiBtX2ltYWdlT3JpZW50YXRpb24gPT0gby5tX2ltYWdlT3JpZW50YXRpb24K
KyAgICAgICAgJiYgaW1hZ2VPcmllbnRhdGlvbiA9PSBvLmltYWdlT3JpZW50YXRpb24KICNlbmRp
ZgotICAgICAgICAmJiBtX2ltYWdlUmVuZGVyaW5nID09IG8ubV9pbWFnZVJlbmRlcmluZworICAg
ICAgICAmJiBpbWFnZVJlbmRlcmluZyA9PSBvLmltYWdlUmVuZGVyaW5nCiAjaWYgRU5BQkxFKENT
U19JTUFHRV9SRVNPTFVUSU9OKQotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZSA9
PSBvLm1faW1hZ2VSZXNvbHV0aW9uU291cmNlCi0gICAgICAgICYmIG1faW1hZ2VSZXNvbHV0aW9u
U25hcCA9PSBvLm1faW1hZ2VSZXNvbHV0aW9uU25hcAotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1
dGlvbiA9PSBvLm1faW1hZ2VSZXNvbHV0aW9uCisgICAgICAgICYmIGltYWdlUmVzb2x1dGlvblNv
dXJjZSA9PSBvLmltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgICAgICAmJiBpbWFnZVJlc29sdXRp
b25TbmFwID09IG8uaW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAgICAmJiBpbWFnZVJlc29sdXRp
b24gPT0gby5pbWFnZVJlc29sdXRpb24KICNlbmRpZgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0g
ICAgICAgICYmIG1fdGV4dEFsaWduTGFzdCA9PSBvLm1fdGV4dEFsaWduTGFzdAotICAgICAgICAm
JiBtX3RleHRKdXN0aWZ5ID09IG8ubV90ZXh0SnVzdGlmeQorICAgICAgICAmJiB0ZXh0QWxpZ25M
YXN0ID09IG8udGV4dEFsaWduTGFzdAorICAgICAgICAmJiB0ZXh0SnVzdGlmeSA9PSBvLnRleHRK
dXN0aWZ5CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICYmIG1fdGV4dERlY29yYXRpb25T
a2lwID09IG8ubV90ZXh0RGVjb3JhdGlvblNraXAKLSAgICAgICAgJiYgbV90ZXh0VW5kZXJsaW5l
UG9zaXRpb24gPT0gby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbgotICAgICAgICAmJiBtX3J1YnlQ
b3NpdGlvbiA9PSBvLm1fcnVieVBvc2l0aW9uCi0gICAgICAgICYmIG1fdGV4dFpvb20gPT0gby5t
X3RleHRab29tCi0gICAgICAgICYmIG1fbGluZVNuYXAgPT0gby5tX2xpbmVTbmFwCi0gICAgICAg
ICYmIG1fbGluZUFsaWduID09IG8ubV9saW5lQWxpZ24KKyAgICAgICAgJiYgdGV4dERlY29yYXRp
b25Ta2lwID09IG8udGV4dERlY29yYXRpb25Ta2lwCisgICAgICAgICYmIHRleHRVbmRlcmxpbmVQ
b3NpdGlvbiA9PSBvLnRleHRVbmRlcmxpbmVQb3NpdGlvbgorICAgICAgICAmJiBydWJ5UG9zaXRp
b24gPT0gby5ydWJ5UG9zaXRpb24KKyAgICAgICAgJiYgdGV4dFpvb20gPT0gby50ZXh0Wm9vbQor
ICAgICAgICAmJiBsaW5lU25hcCA9PSBvLmxpbmVTbmFwCisgICAgICAgICYmIGxpbmVBbGlnbiA9
PSBvLmxpbmVBbGlnbgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAgICAgJiYg
dHJhaWxpbmdXb3JkID09IG8udHJhaWxpbmdXb3JkCiAjZW5kaWYKLSAgICAgICAgJiYgbV9oYW5n
aW5nUHVuY3R1YXRpb24gPT0gby5tX2hhbmdpbmdQdW5jdHVhdGlvbgotICAgICAgICAmJiBtX2N1
c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3RvbVByb3BlcnRpZXMKKyAgICAgICAgJiYgaGFuZ2lu
Z1B1bmN0dWF0aW9uID09IG8uaGFuZ2luZ1B1bmN0dWF0aW9uCisgICAgICAgICYmIGN1c3RvbVBy
b3BlcnRpZXMgPT0gby5jdXN0b21Qcm9wZXJ0aWVzCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9F
cXVhbERhdGEobGlzdFN0eWxlSW1hZ2UsIG8ubGlzdFN0eWxlSW1hZ2UpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuaAppbmRleCAxMmI3ZTM5YTNhYTljNGViN2Y4ODJiZmFjNjA5YzdmMjkyMDk4N2Q3Li4yZmYy
N2M5ODUwZjNhMDYwODAzYzRhMDQ1NGI2ODdhNzU4NTNjZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAg
LTcyLDE3ICs3MiwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVmUHRyPEN1cnNvckxpc3Q+IGN1
cnNvckRhdGE7CiAgICAgTGVuZ3RoIGluZGVudDsKLSAgICBmbG9hdCBtX2VmZmVjdGl2ZVpvb207
CisgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKICAgICAKICAgICBMZW5ndGggd29yZFNwYWNpbmc7
CiAKLSAgICBEYXRhUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBtX2N1c3RvbVByb3BlcnRp
ZXM7CisgICAgRGF0YVJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3VzdG9tUHJvcGVydGll
czsKIAogICAgIC8vIFBhZ2VkIG1lZGlhIHByb3BlcnRpZXMuCiAgICAgc2hvcnQgd2lkb3dzOwog
ICAgIHNob3J0IG9ycGhhbnM7Ci0gICAgdW5zaWduZWQgbV9oYXNBdXRvV2lkb3dzIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2hhc0F1dG9PcnBoYW5zIDogMTsKKyAgICB1bnNpZ25lZCBoYXNBdXRvV2lk
b3dzIDogMTsKKyAgICB1bnNpZ25lZCBoYXNBdXRvT3JwaGFucyA6IDE7CiAgICAgCiAgICAgdW5z
aWduZWQgdGV4dFNlY3VyaXR5IDogMjsgLy8gRVRleHRTZWN1cml0eQogICAgIHVuc2lnbmVkIHVz
ZXJNb2RpZnkgOiAyOyAvLyBFVXNlck1vZGlmeSAoZWRpdGluZykKQEAgLTk3LDM0ICs5NywzNCBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dEVtcGhhc2lzRmlsbCA6IDE7IC8vIFRleHRFbXBo
YXNpc0ZpbGwKICAgICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNNYXJrIDogMzsgLy8gVGV4dEVtcGhh
c2lzTWFyawogICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc1Bvc2l0aW9uIDogNDsgLy8gVGV4dEVt
cGhhc2lzUG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX3RleHRPcmllbnRhdGlvbiA6IDI7IC8vIFRl
eHRPcmllbnRhdGlvbgorICAgIHVuc2lnbmVkIHRleHRPcmllbnRhdGlvbiA6IDI7IC8vIFRleHRP
cmllbnRhdGlvbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgdW5zaWduZWQgbV90ZXh0SW5k
ZW50TGluZSA6IDE7IC8vIFRleHRJbmRlbnRMaW5lCi0gICAgdW5zaWduZWQgbV90ZXh0SW5kZW50
VHlwZSA6IDE7IC8vIFRleHRJbmRlbnRUeXBlCisgICAgdW5zaWduZWQgdGV4dEluZGVudExpbmUg
OiAxOyAvLyBUZXh0SW5kZW50TGluZQorICAgIHVuc2lnbmVkIHRleHRJbmRlbnRUeXBlIDogMTsg
Ly8gVGV4dEluZGVudFR5cGUKICNlbmRpZgotICAgIHVuc2lnbmVkIG1fbGluZUJveENvbnRhaW46
IDc7IC8vIExpbmVCb3hDb250YWluCisgICAgdW5zaWduZWQgbGluZUJveENvbnRhaW46IDc7IC8v
IExpbmVCb3hDb250YWluCiAgICAgLy8gQ1NTIEltYWdlIFZhbHVlcyBMZXZlbCAzCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB1bnNpZ25lZCBtX2ltYWdlT3JpZW50YXRp
b24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQorICAgIHVuc2lnbmVkIGltYWdlT3JpZW50
YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQogI2VuZGlmCi0gICAgdW5zaWduZWQg
bV9pbWFnZVJlbmRlcmluZyA6IDM7IC8vIEVJbWFnZVJlbmRlcmluZwotICAgIHVuc2lnbmVkIG1f
bGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAotICAgIHVuc2lnbmVkIG1fbGluZUFsaWduIDogMTsg
Ly8gTGluZUFsaWduCisgICAgdW5zaWduZWQgaW1hZ2VSZW5kZXJpbmcgOiAzOyAvLyBFSW1hZ2VS
ZW5kZXJpbmcKKyAgICB1bnNpZ25lZCBsaW5lU25hcCA6IDI7IC8vIExpbmVTbmFwCisgICAgdW5z
aWduZWQgbGluZUFsaWduIDogMTsgLy8gTGluZUFsaWduCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykKICAgICB1bnNpZ25lZCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xs
aW5nOiAxOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIHVu
c2lnbmVkIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU291
cmNlCi0gICAgdW5zaWduZWQgbV9pbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNv
bHV0aW9uU25hcAorICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNvdXJjZSA6IDE7IC8vIElt
YWdlUmVzb2x1dGlvblNvdXJjZQorICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNuYXAgOiAx
OyAvLyBJbWFnZVJlc29sdXRpb25TbmFwCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQot
ICAgIHVuc2lnbmVkIG1fdGV4dEFsaWduTGFzdCA6IDM7IC8vIFRleHRBbGlnbkxhc3QKLSAgICB1
bnNpZ25lZCBtX3RleHRKdXN0aWZ5IDogMjsgLy8gVGV4dEp1c3RpZnkKLSNlbmRpZiAvLyBDU1Mz
X1RFWFQKLSAgICB1bnNpZ25lZCBtX3RleHREZWNvcmF0aW9uU2tpcCA6IDU7IC8vIFRleHREZWNv
cmF0aW9uU2tpcAotICAgIHVuc2lnbmVkIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uIDogMzsgLy8g
VGV4dFVuZGVybGluZVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV9ydWJ5UG9zaXRpb24gOiAyOyAv
LyBSdWJ5UG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX3RleHRab29tOiAxOyAvLyBUZXh0Wm9vbQor
ICAgIHVuc2lnbmVkIHRleHRBbGlnbkxhc3QgOiAzOyAvLyBUZXh0QWxpZ25MYXN0CisgICAgdW5z
aWduZWQgdGV4dEp1c3RpZnkgOiAyOyAvLyBUZXh0SnVzdGlmeQorI2VuZGlmCisgICAgdW5zaWdu
ZWQgdGV4dERlY29yYXRpb25Ta2lwIDogNTsgLy8gVGV4dERlY29yYXRpb25Ta2lwCisgICAgdW5z
aWduZWQgdGV4dFVuZGVybGluZVBvc2l0aW9uIDogMzsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9u
CisgICAgdW5zaWduZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCisgICAgdW5z
aWduZWQgdGV4dFpvb206IDE7IC8vIFRleHRab29tCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
dW5zaWduZWQgdG91Y2hDYWxsb3V0RW5hYmxlZCA6IDE7CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIHRyYWlsaW5nV29yZCA6IDE7CiAjZW5kaWYKIAotICAgIHVuc2ln
bmVkIG1faGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsKKyAgICB1bnNpZ25lZCBoYW5naW5nUHVuY3R1
YXRpb24gOiA0OwogCiAgICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3RyaW5nOwogICAgIHNo
b3J0IGh5cGhlbmF0aW9uTGltaXRCZWZvcmU7CkBAIC0xNDQsMTUgKzE0NCwxNSBAQCBwdWJsaWM6
CiAgICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNpc0N1c3RvbU1hcms7CiAgICAgUmVmUHRyPFF1
b3Rlc0RhdGE+IHF1b3RlczsKIAotICAgIEF0b21pY1N0cmluZyBtX2xpbmVHcmlkOwotICAgIHVu
c2lnbmVkIG1fdGFiU2l6ZTsKKyAgICBBdG9taWNTdHJpbmcgbGluZUdyaWQ7CisgICAgdW5zaWdu
ZWQgdGFiU2l6ZTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgVGV4dFNpemVB
ZGp1c3RtZW50IHRleHRTaXplQWRqdXN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X1JFU09MVVRJT04pCi0gICAgZmxvYXQgbV9pbWFnZVJlc29sdXRpb247CisgICAgZmxvYXQgaW1h
Z2VSZXNvbHV0aW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwCmluZGV4IDRhN2Y3ZTY4NzAxOThjYzA5ZjI0NmIwNmQ3NGMxOTliYzgx
NTI3ODcuLjY1MTQyMDA5OWY5NzgwMDUyYWJlMGU0MjYxNGJkMGQ0MzdhNGZmZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzcsMTc0ICszNywxNzQgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSgpCi0gICAgOiBtX29wYWNpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxPcGFjaXR5
KCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxB
c3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSkKLSAgICAsIG1fcGVyc3Bl
Y3RpdmUoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZSgpKQotICAgICwgbV9wZXJzcGVj
dGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSkKLSAg
ICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVP
cmlnaW5ZKCkpCisgICAgOiBvcGFjaXR5KFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpKQor
ICAgICwgYXNwZWN0UmF0aW9EZW5vbWluYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJh
dGlvRGVub21pbmF0b3IoKSkKKyAgICAsIGFzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRlclN0eWxl
Ojppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSkKKyAgICAsIHBlcnNwZWN0aXZlKFJlbmRl
clN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmUoKSkKKyAgICAsIHBlcnNwZWN0aXZlT3JpZ2luWChS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpKQorICAgICwgcGVyc3BlY3Rp
dmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkpCiAgICAg
LCBsaW5lQ2xhbXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQ2xhbXAoKSkKLSAgICAsIG1faW5p
dGlhbExldHRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0ZXIoKSkKLSAgICAsIG1f
ZGVwcmVjYXRlZEZsZXhpYmxlQm94KFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6Y3Jl
YXRlKCkpCi0gICAgLCBtX2ZsZXhpYmxlQm94KFN0eWxlRmxleGlibGVCb3hEYXRhOjpjcmVhdGUo
KSkKLSAgICAsIG1fbWFycXVlZShTdHlsZU1hcnF1ZWVEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1f
bXVsdGlDb2woU3R5bGVNdWx0aUNvbERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV90cmFuc2Zvcm0o
U3R5bGVUcmFuc2Zvcm1EYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fZmlsdGVyKFN0eWxlRmlsdGVy
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBpbml0aWFsTGV0dGVyKFJlbmRlclN0eWxlOjppbml0aWFs
SW5pdGlhbExldHRlcigpKQorICAgICwgZGVwcmVjYXRlZEZsZXhpYmxlQm94KFN0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBmbGV4aWJsZUJveChTdHlsZUZs
ZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtYXJxdWVlKFN0eWxlTWFycXVlZURhdGE6
OmNyZWF0ZSgpKQorICAgICwgbXVsdGlDb2woU3R5bGVNdWx0aUNvbERhdGE6OmNyZWF0ZSgpKQor
ICAgICwgdHJhbnNmb3JtKFN0eWxlVHJhbnNmb3JtRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBmaWx0
ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8y
KQotICAgICwgbV9iYWNrZHJvcEZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0ZSgpKQorICAg
ICwgYmFja2Ryb3BGaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKICNlbmRpZgogI2lm
IEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgLCBtX2dyaWQoU3R5bGVHcmlkRGF0YTo6Y3Jl
YXRlKCkpCi0gICAgLCBtX2dyaWRJdGVtKFN0eWxlR3JpZEl0ZW1EYXRhOjpjcmVhdGUoKSkKKyAg
ICAsIGdyaWQoU3R5bGVHcmlkRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBncmlkSXRlbShTdHlsZUdy
aWRJdGVtRGF0YTo6Y3JlYXRlKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgICwgbV9zY3JvbGxTbmFwUG9ydChTdHlsZVNjcm9sbFNuYXBQb3J0OjpjcmVhdGUoKSkK
LSAgICAsIG1fc2Nyb2xsU25hcEFyZWEoU3R5bGVTY3JvbGxTbmFwQXJlYTo6Y3JlYXRlKCkpCisg
ICAgLCBzY3JvbGxTbmFwUG9ydChTdHlsZVNjcm9sbFNuYXBQb3J0OjpjcmVhdGUoKSkKKyAgICAs
IHNjcm9sbFNuYXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQogI2VuZGlmCi0g
ICAgLCBtX3dpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCi0gICAg
LCBtX21hc2soRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQotICAgICwgbV9vYmplY3RQb3NpdGlv
bihSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCkpCi0gICAgLCBtX3NoYXBlT3V0
c2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQotICAgICwgbV9zaGFwZU1h
cmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCi0gICAgLCBtX3NoYXBlSW1h
Z2VUaHJlc2hvbGQoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZUltYWdlVGhyZXNob2xkKCkpCi0g
ICAgLCBtX2NsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkKLSAgICAsIG1f
dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5k
Q29sb3IoKSkKLSAgICAsIG1fb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcigpKQotICAg
ICwgbV9mbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVhZCgpKQotICAgICwg
bV9yZWdpb25UaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJlYWQoKSkKLSAgICAs
IG1fYWxpZ25Db250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFsaWdubWVudCgpKQot
ICAgICwgbV9hbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsRGVmYXVsdEFsaWdubWVudCgp
KQotICAgICwgbV9hbGlnblNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkp
Ci0gICAgLCBtX2p1c3RpZnlDb250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFsaWdu
bWVudCgpKQotICAgICwgbV9qdXN0aWZ5SXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxp
Z25tZW50KCkpCi0gICAgLCBtX2p1c3RpZnlTZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFs
aWdubWVudCgpKQorICAgICwgd2lsbENoYW5nZShSZW5kZXJTdHlsZTo6aW5pdGlhbFdpbGxDaGFu
Z2UoKSkKKyAgICAsIG1hc2soRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQorICAgICwgb2JqZWN0
UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpKQorICAgICwgc2hh
cGVPdXRzaWRlKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVPdXRzaWRlKCkpCisgICAgLCBzaGFw
ZU1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCisgICAgLCBzaGFwZUlt
YWdlVGhyZXNob2xkKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZCgpKQor
ICAgICwgY2xpcFBhdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxDbGlwUGF0aCgpKQorICAgICwgdmlz
aXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29s
b3IoKSkKKyAgICAsIG9yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKKyAgICAsIGZs
b3dUaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFkKCkpCisgICAgLCByZWdpb25U
aHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJlYWQoKSkKKyAgICAsIGFsaWduQ29u
dGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKKyAgICAsIGFsaWdu
SXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxEZWZhdWx0QWxpZ25tZW50KCkpCisgICAgLCBhbGln
blNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5
Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKKyAgICAsIGp1
c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKKyAgICAsIGp1
c3RpZnlTZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgLCBtX3RvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQorICAgICwgdG91Y2hBY3Rpb24o
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVG91Y2hBY3Rpb24oKSkp
CiAjZW5kaWYKLSAgICAsIG1fcmVnaW9uRnJhZ21lbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdp
b25GcmFnbWVudCgpKQotICAgICwgbV9wYWdlU2l6ZVR5cGUoUEFHRV9TSVpFX0FVVE8pCi0gICAg
LCBtX3RyYW5zZm9ybVN0eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1TdHlsZTNE
KCkpCi0gICAgLCBtX2JhY2tmYWNlVmlzaWJpbGl0eShSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tm
YWNlVmlzaWJpbGl0eSgpKQorICAgICwgcmVnaW9uRnJhZ21lbnQoUmVuZGVyU3R5bGU6OmluaXRp
YWxSZWdpb25GcmFnbWVudCgpKQorICAgICwgcGFnZVNpemVUeXBlKFBBR0VfU0laRV9BVVRPKQor
ICAgICwgdHJhbnNmb3JtU3R5bGUzRChSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybVN0eWxl
M0QoKSkKKyAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tm
YWNlVmlzaWJpbGl0eSgpKQogICAgICwgdXNlckRyYWcoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2Vy
RHJhZygpKQogICAgICwgdGV4dE92ZXJmbG93KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dE92ZXJm
bG93KCkpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShNQ09MTEFQU0UpCiAgICAgLCBtYXJn
aW5BZnRlckNvbGxhcHNlKE1DT0xMQVBTRSkKLSAgICAsIG1fYXBwZWFyYW5jZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkKLSAgICAsIG1fYm9yZGVyRml0KFJlbmRlclN0eWxlOjpp
bml0aWFsQm9yZGVyRml0KCkpCi0gICAgLCBtX3RleHRDb21iaW5lKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dENvbWJpbmUoKSkKLSAgICAsIG1fdGV4dERlY29yYXRpb25TdHlsZShSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkKLSAgICAsIG1fYXNwZWN0UmF0aW9UeXBl
KFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpCisgICAgLCBhcHBlYXJhbmNl
KFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKQorICAgICwgYm9yZGVyRml0KFJlbmRl
clN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCisgICAgLCB0ZXh0Q29tYmluZShSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRDb21iaW5lKCkpCisgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpKQorICAgICwgYXNwZWN0UmF0aW9U
eXBlKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpCiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKLSAgICAsIG1fZWZmZWN0aXZlQmxlbmRNb2RlKFJlbmRlclN0eWxlOjpp
bml0aWFsQmxlbmRNb2RlKCkpCi0gICAgLCBtX2lzb2xhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlh
bElzb2xhdGlvbigpKQorICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKFJlbmRlclN0eWxlOjppbml0
aWFsQmxlbmRNb2RlKCkpCisgICAgLCBpc29sYXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJc29s
YXRpb24oKSkKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX2FwcGxlUGF5
QnV0dG9uU3R5bGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBw
bGVQYXlCdXR0b25TdHlsZSgpKSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25UeXBlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9uVHlwZSgpKSkK
KyAgICAsIGFwcGxlUGF5QnV0dG9uU3R5bGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0
eWxlOjppbml0aWFsQXBwbGVQYXlCdXR0b25TdHlsZSgpKSkKKyAgICAsIGFwcGxlUGF5QnV0dG9u
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1
dHRvblR5cGUoKSkpCiAjZW5kaWYKLSAgICAsIG1fb2JqZWN0Rml0KFJlbmRlclN0eWxlOjppbml0
aWFsT2JqZWN0Rml0KCkpCi0gICAgLCBtX2JyZWFrQmVmb3JlKFJlbmRlclN0eWxlOjppbml0aWFs
QnJlYWtCZXR3ZWVuKCkpCi0gICAgLCBtX2JyZWFrQWZ0ZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxC
cmVha0JldHdlZW4oKSkKLSAgICAsIG1fYnJlYWtJbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxC
cmVha0luc2lkZSgpKQotICAgICwgbV9yZXNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxSZXNpemUo
KSkKLSAgICAsIG1faGFzQXR0ckNvbnRlbnQoZmFsc2UpCi0gICAgLCBtX2lzUGxhY2Vob2xkZXJT
dHlsZShmYWxzZSkKKyAgICAsIG9iamVjdEZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdEZp
dCgpKQorICAgICwgYnJlYWtCZWZvcmUoUmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4o
KSkKKyAgICAsIGJyZWFrQWZ0ZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4oKSkK
KyAgICAsIGJyZWFrSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtJbnNpZGUoKSkKKyAg
ICAsIHJlc2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFJlc2l6ZSgpKQorICAgICwgaGFzQXR0ckNv
bnRlbnQoZmFsc2UpCisgICAgLCBpc1BsYWNlaG9sZGVyU3R5bGUoZmFsc2UpCiB7Ci0gICAgbV9t
YXNrQm94SW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7CisgICAgbWFza0JveEltYWdlLnNldE1hc2tE
ZWZhdWx0cygpOwogfQogCiBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKQog
ICAgIDogUmVmQ291bnRlZDxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPigpCi0gICAgLCBtX29w
YWNpdHkoby5tX29wYWNpdHkpCi0gICAgLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3Ioby5tX2Fz
cGVjdFJhdGlvRGVub21pbmF0b3IpCi0gICAgLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yKG8ubV9h
c3BlY3RSYXRpb051bWVyYXRvcikKLSAgICAsIG1fcGVyc3BlY3RpdmUoby5tX3BlcnNwZWN0aXZl
KQotICAgICwgbV9wZXJzcGVjdGl2ZU9yaWdpblgoby5tX3BlcnNwZWN0aXZlT3JpZ2luWCkKLSAg
ICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5ZKG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkpCisgICAgLCBv
cGFjaXR5KG8ub3BhY2l0eSkKKyAgICAsIGFzcGVjdFJhdGlvRGVub21pbmF0b3Ioby5hc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKQorICAgICwgYXNwZWN0UmF0aW9OdW1lcmF0b3Ioby5hc3BlY3RSYXRp
b051bWVyYXRvcikKKyAgICAsIHBlcnNwZWN0aXZlKG8ucGVyc3BlY3RpdmUpCisgICAgLCBwZXJz
cGVjdGl2ZU9yaWdpblgoby5wZXJzcGVjdGl2ZU9yaWdpblgpCisgICAgLCBwZXJzcGVjdGl2ZU9y
aWdpblkoby5wZXJzcGVjdGl2ZU9yaWdpblkpCiAgICAgLCBsaW5lQ2xhbXAoby5saW5lQ2xhbXAp
Ci0gICAgLCBtX2luaXRpYWxMZXR0ZXIoby5tX2luaXRpYWxMZXR0ZXIpCi0gICAgLCBtX2RlcHJl
Y2F0ZWRGbGV4aWJsZUJveChvLm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94KQotICAgICwgbV9mbGV4
aWJsZUJveChvLm1fZmxleGlibGVCb3gpCi0gICAgLCBtX21hcnF1ZWUoby5tX21hcnF1ZWUpCi0g
ICAgLCBtX211bHRpQ29sKG8ubV9tdWx0aUNvbCkKLSAgICAsIG1fdHJhbnNmb3JtKG8ubV90cmFu
c2Zvcm0pCi0gICAgLCBtX2ZpbHRlcihvLm1fZmlsdGVyKQorICAgICwgaW5pdGlhbExldHRlcihv
LmluaXRpYWxMZXR0ZXIpCisgICAgLCBkZXByZWNhdGVkRmxleGlibGVCb3goby5kZXByZWNhdGVk
RmxleGlibGVCb3gpCisgICAgLCBmbGV4aWJsZUJveChvLmZsZXhpYmxlQm94KQorICAgICwgbWFy
cXVlZShvLm1hcnF1ZWUpCisgICAgLCBtdWx0aUNvbChvLm11bHRpQ29sKQorICAgICwgdHJhbnNm
b3JtKG8udHJhbnNmb3JtKQorICAgICwgZmlsdGVyKG8uZmlsdGVyKQogI2lmIEVOQUJMRShGSUxU
RVJTX0xFVkVMXzIpCi0gICAgLCBtX2JhY2tkcm9wRmlsdGVyKG8ubV9iYWNrZHJvcEZpbHRlcikK
KyAgICAsIGJhY2tkcm9wRmlsdGVyKG8uYmFja2Ryb3BGaWx0ZXIpCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICwgbV9ncmlkKG8ubV9ncmlkKQotICAgICwgbV9ncmlk
SXRlbShvLm1fZ3JpZEl0ZW0pCisgICAgLCBncmlkKG8uZ3JpZCkKKyAgICAsIGdyaWRJdGVtKG8u
Z3JpZEl0ZW0pCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICwgbV9z
Y3JvbGxTbmFwUG9ydChvLm1fc2Nyb2xsU25hcFBvcnQpCi0gICAgLCBtX3Njcm9sbFNuYXBBcmVh
KG8ubV9zY3JvbGxTbmFwQXJlYSkKKyAgICAsIHNjcm9sbFNuYXBQb3J0KG8uc2Nyb2xsU25hcFBv
cnQpCisgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2VuZGlmCi0gICAg
LCBtX2NvbnRlbnQoby5tX2NvbnRlbnQgPyBvLm1fY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIp
Ci0gICAgLCBtX2NvdW50ZXJEaXJlY3RpdmVzKG8ubV9jb3VudGVyRGlyZWN0aXZlcyA/IGNsb25l
KCpvLm1fY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKLSAgICAsIG1fYWx0VGV4dChvLm1f
YWx0VGV4dCkKLSAgICAsIG1fYm94U2hhZG93KG8ubV9ib3hTaGFkb3cgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KCpvLm1fYm94U2hhZG93KSA6IG51bGxwdHIpCi0gICAgLCBtX3dpbGxD
aGFuZ2Uoby5tX3dpbGxDaGFuZ2UpCi0gICAgLCBtX2JveFJlZmxlY3Qoby5tX2JveFJlZmxlY3Qp
Ci0gICAgLCBtX2FuaW1hdGlvbnMoby5tX2FuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpvLm1fYW5pbWF0aW9ucykgOiBudWxscHRyKQotICAgICwgbV90cmFuc2l0
aW9ucyhvLm1fdHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpv
Lm1fdHJhbnNpdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIG1fbWFzayhvLm1fbWFzaykKLSAgICAs
IG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2UpCi0gICAgLCBtX3BhZ2VTaXplKG8ubV9w
YWdlU2l6ZSkKLSAgICAsIG1fb2JqZWN0UG9zaXRpb24oby5tX29iamVjdFBvc2l0aW9uKQotICAg
ICwgbV9zaGFwZU91dHNpZGUoby5tX3NoYXBlT3V0c2lkZSkKLSAgICAsIG1fc2hhcGVNYXJnaW4o
by5tX3NoYXBlTWFyZ2luKQotICAgICwgbV9zaGFwZUltYWdlVGhyZXNob2xkKG8ubV9zaGFwZUlt
YWdlVGhyZXNob2xkKQotICAgICwgbV9jbGlwUGF0aChvLm1fY2xpcFBhdGgpCi0gICAgLCBtX3Rl
eHREZWNvcmF0aW9uQ29sb3Ioby5tX3RleHREZWNvcmF0aW9uQ29sb3IpCi0gICAgLCBtX3Zpc2l0
ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcihvLm1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNv
bG9yKQotICAgICwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihvLm1fdmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKG8ubV92aXNp
dGVkTGlua091dGxpbmVDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3Io
by5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQotICAgICwgbV92aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcikKLSAgICAsIG1fdmlz
aXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcikKLSAg
ICAsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcikKLSAgICAsIG1fb3JkZXIoby5tX29yZGVyKQotICAgICwgbV9mbG93VGhyZWFk
KG8ubV9mbG93VGhyZWFkKQotICAgICwgbV9yZWdpb25UaHJlYWQoby5tX3JlZ2lvblRocmVhZCkK
LSAgICAsIG1fYWxpZ25Db250ZW50KG8ubV9hbGlnbkNvbnRlbnQpCi0gICAgLCBtX2FsaWduSXRl
bXMoby5tX2FsaWduSXRlbXMpCi0gICAgLCBtX2FsaWduU2VsZihvLm1fYWxpZ25TZWxmKQotICAg
ICwgbV9qdXN0aWZ5Q29udGVudChvLm1fanVzdGlmeUNvbnRlbnQpCi0gICAgLCBtX2p1c3RpZnlJ
dGVtcyhvLm1fanVzdGlmeUl0ZW1zKQotICAgICwgbV9qdXN0aWZ5U2VsZihvLm1fanVzdGlmeVNl
bGYpCisgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxw
dHIpCisgICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gY2xvbmUo
Km8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGFsdFRleHQoby5hbHRUZXh0
KQorICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHdpbGxDaGFuZ2Uoby53aWxsQ2hh
bmdlKQorICAgICwgYm94UmVmbGVjdChvLmJveFJlZmxlY3QpCisgICAgLCBhbmltYXRpb25zKG8u
YW5pbWF0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9u
cykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKKyAgICAs
IG1hc2soby5tYXNrKQorICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQorICAgICwg
cGFnZVNpemUoby5wYWdlU2l6ZSkKKyAgICAsIG9iamVjdFBvc2l0aW9uKG8ub2JqZWN0UG9zaXRp
b24pCisgICAgLCBzaGFwZU91dHNpZGUoby5zaGFwZU91dHNpZGUpCisgICAgLCBzaGFwZU1hcmdp
bihvLnNoYXBlTWFyZ2luKQorICAgICwgc2hhcGVJbWFnZVRocmVzaG9sZChvLnNoYXBlSW1hZ2VU
aHJlc2hvbGQpCisgICAgLCBjbGlwUGF0aChvLmNsaXBQYXRoKQorICAgICwgdGV4dERlY29yYXRp
b25Db2xvcihvLnRleHREZWNvcmF0aW9uQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua1RleHREZWNv
cmF0aW9uQ29sb3Ioby52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IpCisgICAgLCB2aXNp
dGVkTGlua0JhY2tncm91bmRDb2xvcihvLnZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQorICAg
ICwgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ioby52aXNpdGVkTGlua091dGxpbmVDb2xvcikKKyAg
ICAsIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29s
b3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ioby52aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKG8udmlzaXRlZExp
bmtCb3JkZXJUb3BDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ioby52
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKQorICAgICwgb3JkZXIoby5vcmRlcikKKyAgICAs
IGZsb3dUaHJlYWQoby5mbG93VGhyZWFkKQorICAgICwgcmVnaW9uVGhyZWFkKG8ucmVnaW9uVGhy
ZWFkKQorICAgICwgYWxpZ25Db250ZW50KG8uYWxpZ25Db250ZW50KQorICAgICwgYWxpZ25JdGVt
cyhvLmFsaWduSXRlbXMpCisgICAgLCBhbGlnblNlbGYoby5hbGlnblNlbGYpCisgICAgLCBqdXN0
aWZ5Q29udGVudChvLmp1c3RpZnlDb250ZW50KQorICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlm
eUl0ZW1zKQorICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotICAgICwgbV90b3VjaEFjdGlvbihvLm1fdG91Y2hBY3Rpb24pCisgICAgLCB0
b3VjaEFjdGlvbihvLnRvdWNoQWN0aW9uKQogI2VuZGlmCi0gICAgLCBtX3JlZ2lvbkZyYWdtZW50
KG8ubV9yZWdpb25GcmFnbWVudCkKLSAgICAsIG1fcGFnZVNpemVUeXBlKG8ubV9wYWdlU2l6ZVR5
cGUpCi0gICAgLCBtX3RyYW5zZm9ybVN0eWxlM0Qoby5tX3RyYW5zZm9ybVN0eWxlM0QpCi0gICAg
LCBtX2JhY2tmYWNlVmlzaWJpbGl0eShvLm1fYmFja2ZhY2VWaXNpYmlsaXR5KQorICAgICwgcmVn
aW9uRnJhZ21lbnQoby5yZWdpb25GcmFnbWVudCkKKyAgICAsIHBhZ2VTaXplVHlwZShvLnBhZ2VT
aXplVHlwZSkKKyAgICAsIHRyYW5zZm9ybVN0eWxlM0Qoby50cmFuc2Zvcm1TdHlsZTNEKQorICAg
ICwgYmFja2ZhY2VWaXNpYmlsaXR5KG8uYmFja2ZhY2VWaXNpYmlsaXR5KQogICAgICwgdXNlckRy
YWcoby51c2VyRHJhZykKICAgICAsIHRleHRPdmVyZmxvdyhvLnRleHRPdmVyZmxvdykKICAgICAs
IG1hcmdpbkJlZm9yZUNvbGxhcHNlKG8ubWFyZ2luQmVmb3JlQ29sbGFwc2UpCiAgICAgLCBtYXJn
aW5BZnRlckNvbGxhcHNlKG8ubWFyZ2luQWZ0ZXJDb2xsYXBzZSkKLSAgICAsIG1fYXBwZWFyYW5j
ZShvLm1fYXBwZWFyYW5jZSkKLSAgICAsIG1fYm9yZGVyRml0KG8ubV9ib3JkZXJGaXQpCi0gICAg
LCBtX3RleHRDb21iaW5lKG8ubV90ZXh0Q29tYmluZSkKLSAgICAsIG1fdGV4dERlY29yYXRpb25T
dHlsZShvLm1fdGV4dERlY29yYXRpb25TdHlsZSkKLSAgICAsIG1fYXNwZWN0UmF0aW9UeXBlKG8u
bV9hc3BlY3RSYXRpb1R5cGUpCisgICAgLCBhcHBlYXJhbmNlKG8uYXBwZWFyYW5jZSkKKyAgICAs
IGJvcmRlckZpdChvLmJvcmRlckZpdCkKKyAgICAsIHRleHRDb21iaW5lKG8udGV4dENvbWJpbmUp
CisgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKG8udGV4dERlY29yYXRpb25TdHlsZSkKKyAgICAs
IGFzcGVjdFJhdGlvVHlwZShvLmFzcGVjdFJhdGlvVHlwZSkKICNpZiBFTkFCTEUoQ1NTX0NPTVBP
U0lUSU5HKQotICAgICwgbV9lZmZlY3RpdmVCbGVuZE1vZGUoby5tX2VmZmVjdGl2ZUJsZW5kTW9k
ZSkKLSAgICAsIG1faXNvbGF0aW9uKG8ubV9pc29sYXRpb24pCisgICAgLCBlZmZlY3RpdmVCbGVu
ZE1vZGUoby5lZmZlY3RpdmVCbGVuZE1vZGUpCisgICAgLCBpc29sYXRpb24oby5pc29sYXRpb24p
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9hcHBsZVBheUJ1dHRvblN0
eWxlKG8ubV9hcHBsZVBheUJ1dHRvblN0eWxlKQotICAgICwgbV9hcHBsZVBheUJ1dHRvblR5cGUo
by5tX2FwcGxlUGF5QnV0dG9uVHlwZSkKKyAgICAsIGFwcGxlUGF5QnV0dG9uU3R5bGUoby5hcHBs
ZVBheUJ1dHRvblN0eWxlKQorICAgICwgYXBwbGVQYXlCdXR0b25UeXBlKG8uYXBwbGVQYXlCdXR0
b25UeXBlKQogI2VuZGlmCi0gICAgLCBtX29iamVjdEZpdChvLm1fb2JqZWN0Rml0KQotICAgICwg
bV9icmVha0JlZm9yZShvLm1fYnJlYWtCZWZvcmUpCi0gICAgLCBtX2JyZWFrQWZ0ZXIoby5tX2Jy
ZWFrQWZ0ZXIpCi0gICAgLCBtX2JyZWFrSW5zaWRlKG8ubV9icmVha0luc2lkZSkKLSAgICAsIG1f
cmVzaXplKG8ubV9yZXNpemUpCi0gICAgLCBtX2hhc0F0dHJDb250ZW50KG8ubV9oYXNBdHRyQ29u
dGVudCkKLSAgICAsIG1faXNQbGFjZWhvbGRlclN0eWxlKG8ubV9pc1BsYWNlaG9sZGVyU3R5bGUp
CisgICAgLCBvYmplY3RGaXQoby5vYmplY3RGaXQpCisgICAgLCBicmVha0JlZm9yZShvLmJyZWFr
QmVmb3JlKQorICAgICwgYnJlYWtBZnRlcihvLmJyZWFrQWZ0ZXIpCisgICAgLCBicmVha0luc2lk
ZShvLmJyZWFrSW5zaWRlKQorICAgICwgcmVzaXplKG8ucmVzaXplKQorICAgICwgaGFzQXR0ckNv
bnRlbnQoby5oYXNBdHRyQ29udGVudCkKKyAgICAsIGlzUGxhY2Vob2xkZXJTdHlsZShvLmlzUGxh
Y2Vob2xkZXJTdHlsZSkKIHsKIH0KIApAQCAtMjE5LDEyMyArMjE5LDEyMyBAQCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjp+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAKIGJvb2wgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhJiBvKSBjb25zdAogewotICAgIHJldHVybiBtX29wYWNpdHkgPT0gby5tX29wYWNp
dHkKLSAgICAgICAgJiYgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yID09IG8ubV9hc3BlY3RSYXRp
b0Rlbm9taW5hdG9yCi0gICAgICAgICYmIG1fYXNwZWN0UmF0aW9OdW1lcmF0b3IgPT0gby5tX2Fz
cGVjdFJhdGlvTnVtZXJhdG9yCi0gICAgICAgICYmIG1fcGVyc3BlY3RpdmUgPT0gby5tX3BlcnNw
ZWN0aXZlCi0gICAgICAgICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5YID09IG8ubV9wZXJzcGVjdGl2
ZU9yaWdpblgKLSAgICAgICAgJiYgbV9wZXJzcGVjdGl2ZU9yaWdpblkgPT0gby5tX3BlcnNwZWN0
aXZlT3JpZ2luWQorICAgIHJldHVybiBvcGFjaXR5ID09IG8ub3BhY2l0eQorICAgICAgICAmJiBh
c3BlY3RSYXRpb0Rlbm9taW5hdG9yID09IG8uYXNwZWN0UmF0aW9EZW5vbWluYXRvcgorICAgICAg
ICAmJiBhc3BlY3RSYXRpb051bWVyYXRvciA9PSBvLmFzcGVjdFJhdGlvTnVtZXJhdG9yCisgICAg
ICAgICYmIHBlcnNwZWN0aXZlID09IG8ucGVyc3BlY3RpdmUKKyAgICAgICAgJiYgcGVyc3BlY3Rp
dmVPcmlnaW5YID09IG8ucGVyc3BlY3RpdmVPcmlnaW5YCisgICAgICAgICYmIHBlcnNwZWN0aXZl
T3JpZ2luWSA9PSBvLnBlcnNwZWN0aXZlT3JpZ2luWQogICAgICAgICAmJiBsaW5lQ2xhbXAgPT0g
by5saW5lQ2xhbXAKLSAgICAgICAgJiYgbV9pbml0aWFsTGV0dGVyID09IG8ubV9pbml0aWFsTGV0
dGVyCisgICAgICAgICYmIGluaXRpYWxMZXR0ZXIgPT0gby5pbml0aWFsTGV0dGVyCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICAmJiBtX2Rhc2hib2FyZFJlZ2lvbnMgPT0g
by5tX2Rhc2hib2FyZFJlZ2lvbnMKKyAgICAgICAgJiYgZGFzaGJvYXJkUmVnaW9ucyA9PSBvLmRh
c2hib2FyZFJlZ2lvbnMKICNlbmRpZgotICAgICAgICAmJiBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eCA9PSBvLm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94Ci0gICAgICAgICYmIG1fZmxleGlibGVCb3gg
PT0gby5tX2ZsZXhpYmxlQm94Ci0gICAgICAgICYmIG1fbWFycXVlZSA9PSBvLm1fbWFycXVlZQot
ICAgICAgICAmJiBtX211bHRpQ29sID09IG8ubV9tdWx0aUNvbAotICAgICAgICAmJiBtX3RyYW5z
Zm9ybSA9PSBvLm1fdHJhbnNmb3JtCi0gICAgICAgICYmIG1fZmlsdGVyID09IG8ubV9maWx0ZXIK
KyAgICAgICAgJiYgZGVwcmVjYXRlZEZsZXhpYmxlQm94ID09IG8uZGVwcmVjYXRlZEZsZXhpYmxl
Qm94CisgICAgICAgICYmIGZsZXhpYmxlQm94ID09IG8uZmxleGlibGVCb3gKKyAgICAgICAgJiYg
bWFycXVlZSA9PSBvLm1hcnF1ZWUKKyAgICAgICAgJiYgbXVsdGlDb2wgPT0gby5tdWx0aUNvbAor
ICAgICAgICAmJiB0cmFuc2Zvcm0gPT0gby50cmFuc2Zvcm0KKyAgICAgICAgJiYgZmlsdGVyID09
IG8uZmlsdGVyCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAgICAgJiYgbV9iYWNr
ZHJvcEZpbHRlciA9PSBvLm1fYmFja2Ryb3BGaWx0ZXIKKyAgICAgICAgJiYgYmFja2Ryb3BGaWx0
ZXIgPT0gby5iYWNrZHJvcEZpbHRlcgogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKLSAgICAgICAgJiYgbV9ncmlkID09IG8ubV9ncmlkCi0gICAgICAgICYmIG1fZ3JpZEl0ZW0g
PT0gby5tX2dyaWRJdGVtCisgICAgICAgICYmIGdyaWQgPT0gby5ncmlkCisgICAgICAgICYmIGdy
aWRJdGVtID09IG8uZ3JpZEl0ZW0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
Ci0gICAgICAgICYmIG1fc2Nyb2xsU25hcFBvcnQgPT0gby5tX3Njcm9sbFNuYXBQb3J0Ci0gICAg
ICAgICYmIG1fc2Nyb2xsU25hcEFyZWEgPT0gby5tX3Njcm9sbFNuYXBBcmVhCisgICAgICAgICYm
IHNjcm9sbFNuYXBQb3J0ID09IG8uc2Nyb2xsU25hcFBvcnQKKyAgICAgICAgJiYgc2Nyb2xsU25h
cEFyZWEgPT0gby5zY3JvbGxTbmFwQXJlYQogI2VuZGlmCiAgICAgICAgICYmIGNvbnRlbnREYXRh
RXF1aXZhbGVudChvKQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fY291bnRl
ckRpcmVjdGl2ZXMsIG8ubV9jb3VudGVyRGlyZWN0aXZlcykKLSAgICAgICAgJiYgbV9hbHRUZXh0
ID09IG8ubV9hbHRUZXh0Ci0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9ib3hT
aGFkb3csIG8ubV9ib3hTaGFkb3cpCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEo
bV93aWxsQ2hhbmdlLCBvLm1fd2lsbENoYW5nZSkKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0Vx
dWFsRGF0YShtX2JveFJlZmxlY3QsIG8ubV9ib3hSZWZsZWN0KQotICAgICAgICAmJiBhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKG1fYW5pbWF0aW9ucywgby5tX2FuaW1hdGlvbnMpCi0gICAgICAgICYm
IGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV90cmFuc2l0aW9ucywgby5tX3RyYW5zaXRpb25zKQot
ICAgICAgICAmJiBtX21hc2sgPT0gby5tX21hc2sKLSAgICAgICAgJiYgbV9tYXNrQm94SW1hZ2Ug
PT0gby5tX21hc2tCb3hJbWFnZQotICAgICAgICAmJiBtX3BhZ2VTaXplID09IG8ubV9wYWdlU2l6
ZQotICAgICAgICAmJiBtX29iamVjdFBvc2l0aW9uID09IG8ubV9vYmplY3RQb3NpdGlvbgotICAg
ICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fc2hhcGVPdXRzaWRlLCBvLm1fc2hhcGVP
dXRzaWRlKQotICAgICAgICAmJiBtX3NoYXBlTWFyZ2luID09IG8ubV9zaGFwZU1hcmdpbgotICAg
ICAgICAmJiBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5tX3NoYXBlSW1hZ2VUaHJlc2hvbGQK
LSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2NsaXBQYXRoLCBvLm1fY2xpcFBh
dGgpCi0gICAgICAgICYmIG1fdGV4dERlY29yYXRpb25Db2xvciA9PSBvLm1fdGV4dERlY29yYXRp
b25Db2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciA9PSBv
Lm1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yCi0gICAg
ICAgICYmIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IgPT0gby5tX3Zp
c2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IKLSAgICAgICAgJiYg
bV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENv
bG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciA9PSBvLm1fdmlz
aXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcgotICAgICAgICAmJiBtX29yZGVyID09IG8ubV9vcmRl
cgotICAgICAgICAmJiBtX2Zsb3dUaHJlYWQgPT0gby5tX2Zsb3dUaHJlYWQKLSAgICAgICAgJiYg
bV9hbGlnbkNvbnRlbnQgPT0gby5tX2FsaWduQ29udGVudAotICAgICAgICAmJiBtX2FsaWduSXRl
bXMgPT0gby5tX2FsaWduSXRlbXMKLSAgICAgICAgJiYgbV9hbGlnblNlbGYgPT0gby5tX2FsaWdu
U2VsZgotICAgICAgICAmJiBtX2p1c3RpZnlDb250ZW50ID09IG8ubV9qdXN0aWZ5Q29udGVudAot
ICAgICAgICAmJiBtX2p1c3RpZnlJdGVtcyA9PSBvLm1fanVzdGlmeUl0ZW1zCi0gICAgICAgICYm
IG1fanVzdGlmeVNlbGYgPT0gby5tX2p1c3RpZnlTZWxmCi0gICAgICAgICYmIG1fcmVnaW9uVGhy
ZWFkID09IG8ubV9yZWdpb25UaHJlYWQKLSAgICAgICAgJiYgbV9yZWdpb25GcmFnbWVudCA9PSBv
Lm1fcmVnaW9uRnJhZ21lbnQKLSAgICAgICAgJiYgbV9wYWdlU2l6ZVR5cGUgPT0gby5tX3BhZ2VT
aXplVHlwZQotICAgICAgICAmJiBtX3RyYW5zZm9ybVN0eWxlM0QgPT0gby5tX3RyYW5zZm9ybVN0
eWxlM0QKLSAgICAgICAgJiYgbV9iYWNrZmFjZVZpc2liaWxpdHkgPT0gby5tX2JhY2tmYWNlVmlz
aWJpbGl0eQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGNvdW50ZXJEaXJlY3Rp
dmVzLCBvLmNvdW50ZXJEaXJlY3RpdmVzKQorICAgICAgICAmJiBhbHRUZXh0ID09IG8uYWx0VGV4
dAorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGJveFNoYWRvdywgby5ib3hTaGFk
b3cpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEod2lsbENoYW5nZSwgby53aWxs
Q2hhbmdlKQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGJveFJlZmxlY3QsIG8u
Ym94UmVmbGVjdCkKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShhbmltYXRpb25z
LCBvLmFuaW1hdGlvbnMpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEodHJhbnNp
dGlvbnMsIG8udHJhbnNpdGlvbnMpCisgICAgICAgICYmIG1hc2sgPT0gby5tYXNrCisgICAgICAg
ICYmIG1hc2tCb3hJbWFnZSA9PSBvLm1hc2tCb3hJbWFnZQorICAgICAgICAmJiBwYWdlU2l6ZSA9
PSBvLnBhZ2VTaXplCisgICAgICAgICYmIG9iamVjdFBvc2l0aW9uID09IG8ub2JqZWN0UG9zaXRp
b24KKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShzaGFwZU91dHNpZGUsIG8uc2hh
cGVPdXRzaWRlKQorICAgICAgICAmJiBzaGFwZU1hcmdpbiA9PSBvLnNoYXBlTWFyZ2luCisgICAg
ICAgICYmIHNoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5zaGFwZUltYWdlVGhyZXNob2xkCisgICAg
ICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY2xpcFBhdGgsIG8uY2xpcFBhdGgpCisgICAg
ICAgICYmIHRleHREZWNvcmF0aW9uQ29sb3IgPT0gby50ZXh0RGVjb3JhdGlvbkNvbG9yCisgICAg
ICAgICYmIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciA9PSBvLnZpc2l0ZWRMaW5rVGV4
dERlY29yYXRpb25Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciA9
PSBvLnZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yID09IG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IKKyAgICAgICAgJiYgdmlzaXRl
ZExpbmtCb3JkZXJMZWZ0Q29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcgorICAg
ICAgICAmJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA9PSBvLnZp
c2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJCb3R0
b21Db2xvciA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IKKyAgICAgICAgJiYgb3Jk
ZXIgPT0gby5vcmRlcgorICAgICAgICAmJiBmbG93VGhyZWFkID09IG8uZmxvd1RocmVhZAorICAg
ICAgICAmJiBhbGlnbkNvbnRlbnQgPT0gby5hbGlnbkNvbnRlbnQKKyAgICAgICAgJiYgYWxpZ25J
dGVtcyA9PSBvLmFsaWduSXRlbXMKKyAgICAgICAgJiYgYWxpZ25TZWxmID09IG8uYWxpZ25TZWxm
CisgICAgICAgICYmIGp1c3RpZnlDb250ZW50ID09IG8uanVzdGlmeUNvbnRlbnQKKyAgICAgICAg
JiYganVzdGlmeUl0ZW1zID09IG8uanVzdGlmeUl0ZW1zCisgICAgICAgICYmIGp1c3RpZnlTZWxm
ID09IG8uanVzdGlmeVNlbGYKKyAgICAgICAgJiYgcmVnaW9uVGhyZWFkID09IG8ucmVnaW9uVGhy
ZWFkCisgICAgICAgICYmIHJlZ2lvbkZyYWdtZW50ID09IG8ucmVnaW9uRnJhZ21lbnQKKyAgICAg
ICAgJiYgcGFnZVNpemVUeXBlID09IG8ucGFnZVNpemVUeXBlCisgICAgICAgICYmIHRyYW5zZm9y
bVN0eWxlM0QgPT0gby50cmFuc2Zvcm1TdHlsZTNECisgICAgICAgICYmIGJhY2tmYWNlVmlzaWJp
bGl0eSA9PSBvLmJhY2tmYWNlVmlzaWJpbGl0eQogICAgICAgICAmJiB1c2VyRHJhZyA9PSBvLnVz
ZXJEcmFnCiAgICAgICAgICYmIHRleHRPdmVyZmxvdyA9PSBvLnRleHRPdmVyZmxvdwogICAgICAg
ICAmJiBtYXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBvLm1hcmdpbkJlZm9yZUNvbGxhcHNlCiAgICAg
ICAgICYmIG1hcmdpbkFmdGVyQ29sbGFwc2UgPT0gby5tYXJnaW5BZnRlckNvbGxhcHNlCi0gICAg
ICAgICYmIG1fYXBwZWFyYW5jZSA9PSBvLm1fYXBwZWFyYW5jZQotICAgICAgICAmJiBtX2JvcmRl
ckZpdCA9PSBvLm1fYm9yZGVyRml0Ci0gICAgICAgICYmIG1fdGV4dENvbWJpbmUgPT0gby5tX3Rl
eHRDb21iaW5lCi0gICAgICAgICYmIG1fdGV4dERlY29yYXRpb25TdHlsZSA9PSBvLm1fdGV4dERl
Y29yYXRpb25TdHlsZQorICAgICAgICAmJiBhcHBlYXJhbmNlID09IG8uYXBwZWFyYW5jZQorICAg
ICAgICAmJiBib3JkZXJGaXQgPT0gby5ib3JkZXJGaXQKKyAgICAgICAgJiYgdGV4dENvbWJpbmUg
PT0gby50ZXh0Q29tYmluZQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvblN0eWxlID09IG8udGV4
dERlY29yYXRpb25TdHlsZQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgICAgICYmIG1f
dG91Y2hBY3Rpb24gPT0gby5tX3RvdWNoQWN0aW9uCisgICAgICAgICYmIHRvdWNoQWN0aW9uID09
IG8udG91Y2hBY3Rpb24KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAg
ICAgICYmIG1fZWZmZWN0aXZlQmxlbmRNb2RlID09IG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUKLSAg
ICAgICAgJiYgbV9pc29sYXRpb24gPT0gby5tX2lzb2xhdGlvbgorICAgICAgICAmJiBlZmZlY3Rp
dmVCbGVuZE1vZGUgPT0gby5lZmZlY3RpdmVCbGVuZE1vZGUKKyAgICAgICAgJiYgaXNvbGF0aW9u
ID09IG8uaXNvbGF0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICAgICAm
JiBtX2FwcGxlUGF5QnV0dG9uU3R5bGUgPT0gby5tX2FwcGxlUGF5QnV0dG9uU3R5bGUKLSAgICAg
ICAgJiYgbV9hcHBsZVBheUJ1dHRvblR5cGUgPT0gby5tX2FwcGxlUGF5QnV0dG9uVHlwZQorICAg
ICAgICAmJiBhcHBsZVBheUJ1dHRvblN0eWxlID09IG8uYXBwbGVQYXlCdXR0b25TdHlsZQorICAg
ICAgICAmJiBhcHBsZVBheUJ1dHRvblR5cGUgPT0gby5hcHBsZVBheUJ1dHRvblR5cGUKICNlbmRp
ZgotICAgICAgICAmJiBtX2FzcGVjdFJhdGlvVHlwZSA9PSBvLm1fYXNwZWN0UmF0aW9UeXBlCi0g
ICAgICAgICYmIG1fb2JqZWN0Rml0ID09IG8ubV9vYmplY3RGaXQKLSAgICAgICAgJiYgbV9icmVh
a0FmdGVyID09IG8ubV9icmVha0FmdGVyCi0gICAgICAgICYmIG1fYnJlYWtCZWZvcmUgPT0gby5t
X2JyZWFrQmVmb3JlCi0gICAgICAgICYmIG1fYnJlYWtJbnNpZGUgPT0gby5tX2JyZWFrSW5zaWRl
Ci0gICAgICAgICYmIG1fcmVzaXplID09IG8ubV9yZXNpemUKLSAgICAgICAgJiYgbV9oYXNBdHRy
Q29udGVudCA9PSBvLm1faGFzQXR0ckNvbnRlbnQKLSAgICAgICAgJiYgbV9pc1BsYWNlaG9sZGVy
U3R5bGUgPT0gby5tX2lzUGxhY2Vob2xkZXJTdHlsZTsKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9U
eXBlID09IG8uYXNwZWN0UmF0aW9UeXBlCisgICAgICAgICYmIG9iamVjdEZpdCA9PSBvLm9iamVj
dEZpdAorICAgICAgICAmJiBicmVha0FmdGVyID09IG8uYnJlYWtBZnRlcgorICAgICAgICAmJiBi
cmVha0JlZm9yZSA9PSBvLmJyZWFrQmVmb3JlCisgICAgICAgICYmIGJyZWFrSW5zaWRlID09IG8u
YnJlYWtJbnNpZGUKKyAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCisgICAgICAgICYmIGhh
c0F0dHJDb250ZW50ID09IG8uaGFzQXR0ckNvbnRlbnQKKyAgICAgICAgJiYgaXNQbGFjZWhvbGRl
clN0eWxlID09IG8uaXNQbGFjZWhvbGRlclN0eWxlOwogfQogCi1ib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250
ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgb3RoZXIp
IGNvbnN0CiB7Ci0gICAgQ29udGVudERhdGEqIGEgPSBtX2NvbnRlbnQuZ2V0KCk7Ci0gICAgQ29u
dGVudERhdGEqIGIgPSBvLm1fY29udGVudC5nZXQoKTsKLQorICAgIGF1dG8qIGEgPSBjb250ZW50
LmdldCgpOworICAgIGF1dG8qIGIgPSBvdGhlci5jb250ZW50LmdldCgpOwogICAgIHdoaWxlIChh
ICYmIGIgJiYgKmEgPT0gKmIpIHsKICAgICAgICAgYSA9IGEtPm5leHQoKTsKICAgICAgICAgYiA9
IGItPm5leHQoKTsKICAgICB9Ci0KICAgICByZXR1cm4gIWEgJiYgIWI7CiB9CiAKIGJvb2wgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6aGFzRmlsdGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZmlsdGVyLmdldCgpICYmICFtX2ZpbHRlci0+bV9vcGVyYXRpb25zLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gIWZpbHRlci0+b3BlcmF0aW9ucy5pc0VtcHR5KCk7CiB9CiAKICNpZiBFTkFCTEUo
RklMVEVSU19MRVZFTF8yKQorCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Omhhc0Jh
Y2tkcm9wRmlsdGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYmFja2Ryb3BGaWx0ZXIuZ2V0
KCkgJiYgIW1fYmFja2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7CisgICAgcmV0
dXJuICFiYWNrZHJvcEZpbHRlci0+b3BlcmF0aW9ucy5pc0VtcHR5KCk7CiB9CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCAwNGMwOWJh
ZGZmZjg5OWYzNzRhMzQ4NjVlYWVjYWY1OTNhYjU5ZTBlLi5iZjliYTIwNzQ1MGM1ZGFiYzQ5Njc3
N2ViMWQzNmY1N2I5Yjk4NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3Jh
aGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDQsMzQgKzQ0LDI3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkxpc3Q7CitjbGFzcyBDb250ZW50
RGF0YTsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJv
eERhdGE7CiBjbGFzcyBTdHlsZUZpbHRlckRhdGE7CiBjbGFzcyBTdHlsZUZsZXhpYmxlQm94RGF0
YTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogY2xhc3MgU3R5bGVHcmlkRGF0YTsKIGNs
YXNzIFN0eWxlR3JpZEl0ZW1EYXRhOwotI2VuZGlmCiBjbGFzcyBTdHlsZU1hcnF1ZWVEYXRhOwog
Y2xhc3MgU3R5bGVNdWx0aUNvbERhdGE7CiBjbGFzcyBTdHlsZVJlZmxlY3Rpb247CiBjbGFzcyBT
dHlsZVJlc29sdmVyOwotY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwotI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi1jbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgU3R5bGVTY3Jv
bGxTbmFwQXJlYTsKLSNlbmRpZgorY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKK2NsYXNzIFN0
eWxlVHJhbnNmb3JtRGF0YTsKIAotY2xhc3MgQ29udGVudERhdGE7CiBzdHJ1Y3QgTGVuZ3RoU2l6
ZTsKLQotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIHN0cnVjdCBTdHlsZURhc2hib2Fy
ZFJlZ2lvbjsKLSNlbmRpZgogCiAvLyBQYWdlIHNpemUgdHlwZS4KLS8vIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6Om1fcGFnZVNpemUgaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4gCi0vLyBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhOjptX3BhZ2VTaXplVHlwZSBpcyBQQUdFX1NJWkVfUkVTT0xW
RUQuCisvLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpwYWdlU2l6ZSBpcyBtZWFuaW5nZnVs
IG9ubHkgd2hlbgorLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6cGFnZVNpemVUeXBlIGlz
IFBBR0VfU0laRV9SRVNPTFZFRC4KIGVudW0gUGFnZVNpemVUeXBlIHsKICAgICBQQUdFX1NJWkVf
QVVUTywgLy8gc2l6ZTogYXV0bwogICAgIFBBR0VfU0laRV9BVVRPX0xBTkRTQ0FQRSwgLy8gc2l6
ZTogbGFuZHNjYXBlCkBAIC04OSwxNDQgKzgyLDE0NyBAQCBwdWJsaWM6CiAgICAgflN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgYm9v
bCBjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNGaWx0ZXJzKCkgY29uc3Q7CisKICNpZiBFTkFCTEUoRklM
VEVSU19MRVZFTF8yKQogICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXJzKCkgY29uc3Q7CiAjZW5k
aWYKLSAgICBib29sIGhhc09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHkgPCAxOyB9
CiAKLSAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9hbmltYXRpb25zIHx8IG1fdHJhbnNpdGlvbnM7IH0KKyAgICBib29sIGhhc09wYWNpdHkoKSBj
b25zdCB7IHJldHVybiBvcGFjaXR5IDwgMTsgfQogCi0gICAgZmxvYXQgbV9vcGFjaXR5OworICAg
IGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBhbmltYXRp
b25zIHx8IHRyYW5zaXRpb25zOyB9CiAKLSAgICBmbG9hdCBtX2FzcGVjdFJhdGlvRGVub21pbmF0
b3I7Ci0gICAgZmxvYXQgbV9hc3BlY3RSYXRpb051bWVyYXRvcjsKKyAgICBmbG9hdCBvcGFjaXR5
OwogCi0gICAgZmxvYXQgbV9wZXJzcGVjdGl2ZTsKLSAgICBMZW5ndGggbV9wZXJzcGVjdGl2ZU9y
aWdpblg7Ci0gICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5ZOworICAgIGZsb2F0IGFzcGVj
dFJhdGlvRGVub21pbmF0b3I7CisgICAgZmxvYXQgYXNwZWN0UmF0aW9OdW1lcmF0b3I7CisKKyAg
ICBmbG9hdCBwZXJzcGVjdGl2ZTsKKyAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5YOworICAg
IExlbmd0aCBwZXJzcGVjdGl2ZU9yaWdpblk7CiAKICAgICBMaW5lQ2xhbXBWYWx1ZSBsaW5lQ2xh
bXA7IC8vIEFuIEFwcGxlIGV4dGVuc2lvbi4KICAgICAKLSAgICBJbnRTaXplIG1faW5pdGlhbExl
dHRlcjsKKyAgICBJbnRTaXplIGluaXRpYWxMZXR0ZXI7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCi0gICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBtX2Rhc2hib2FyZFJl
Z2lvbnM7CisgICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBkYXNoYm9hcmRSZWdpb25z
OwogI2VuZGlmCiAKLSAgICBEYXRhUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4g
bV9kZXByZWNhdGVkRmxleGlibGVCb3g7IC8vIEZsZXhpYmxlIGJveCBwcm9wZXJ0aWVzCi0gICAg
RGF0YVJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gbV9mbGV4aWJsZUJveDsKLSAgICBEYXRhUmVm
PFN0eWxlTWFycXVlZURhdGE+IG1fbWFycXVlZTsgLy8gTWFycXVlZSBwcm9wZXJ0aWVzCi0gICAg
RGF0YVJlZjxTdHlsZU11bHRpQ29sRGF0YT4gbV9tdWx0aUNvbDsgLy8gIENTUzMgbXVsdGljb2wg
cHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBtX3RyYW5zZm9ybTsg
Ly8gVHJhbnNmb3JtIHByb3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNrZXcsIGV0Yy4pCi0gICAg
RGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IG1fZmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAo
dXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YT4gZGVwcmVjYXRlZEZsZXhpYmxlQm94OyAvLyBGbGV4aWJsZSBib3ggcHJvcGVy
dGllcworICAgIERhdGFSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGZsZXhpYmxlQm94OworICAg
IERhdGFSZWY8U3R5bGVNYXJxdWVlRGF0YT4gbWFycXVlZTsgLy8gTWFycXVlZSBwcm9wZXJ0aWVz
CisgICAgRGF0YVJlZjxTdHlsZU11bHRpQ29sRGF0YT4gbXVsdGlDb2w7IC8vICBDU1MzIG11bHRp
Y29sIHByb3BlcnRpZXMKKyAgICBEYXRhUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gdHJhbnNmb3Jt
OyAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyAocm90YXRlLCBzY2FsZSwgc2tldywgZXRjLikKKyAg
ICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gZmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAo
dXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKwogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0g
ICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IG1fYmFja2Ryb3BGaWx0ZXI7IC8vIEZpbHRlciBv
cGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQorICAgIERhdGFSZWY8U3R5bGVGaWx0
ZXJEYXRhPiBiYWNrZHJvcEZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEs
IGJsdXIsIGV0Yy4pCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAg
RGF0YVJlZjxTdHlsZUdyaWREYXRhPiBtX2dyaWQ7Ci0gICAgRGF0YVJlZjxTdHlsZUdyaWRJdGVt
RGF0YT4gbV9ncmlkSXRlbTsKKyAgICBEYXRhUmVmPFN0eWxlR3JpZERhdGE+IGdyaWQ7CisgICAg
RGF0YVJlZjxTdHlsZUdyaWRJdGVtRGF0YT4gZ3JpZEl0ZW07CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0gICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBQb3J0PiBtX3Nj
cm9sbFNuYXBQb3J0OwotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gbV9zY3JvbGxT
bmFwQXJlYTsKKyAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcFBvcnQ+IHNjcm9sbFNuYXBQb3J0
OworICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gc2Nyb2xsU25hcEFyZWE7CiAjZW5k
aWYKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gbV9jb250ZW50OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJlY3RpdmVzOwot
ICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBj
b250ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjb3VudGVy
RGlyZWN0aXZlczsKKyAgICBTdHJpbmcgYWx0VGV4dDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBtX2JveFNoYWRvdzsgLy8gRm9yIGJveC1zaGFkb3cgZGVjb3JhdGlvbnMuCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJveFNoYWRvdzsgLy8gRm9yIGJveC1zaGFk
b3cgZGVjb3JhdGlvbnMuCiAKLSAgICBSZWZQdHI8V2lsbENoYW5nZURhdGE+IG1fd2lsbENoYW5n
ZTsgLy8gTnVsbCBpbmRpY2F0ZXMgJ2F1dG8nLgorICAgIFJlZlB0cjxXaWxsQ2hhbmdlRGF0YT4g
d2lsbENoYW5nZTsgLy8gTnVsbCBpbmRpY2F0ZXMgJ2F1dG8nLgogICAgIAotICAgIFJlZlB0cjxT
dHlsZVJlZmxlY3Rpb24+IG1fYm94UmVmbGVjdDsKKyAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9u
PiBib3hSZWZsZWN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IG1fYW5p
bWF0aW9uczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gbV90cmFuc2l0aW9u
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gYW5pbWF0aW9uczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gdHJhbnNpdGlvbnM7CiAKLSAgICBGaWxsTGF5
ZXIgbV9tYXNrOwotICAgIE5pbmVQaWVjZUltYWdlIG1fbWFza0JveEltYWdlOworICAgIEZpbGxM
YXllciBtYXNrOworICAgIE5pbmVQaWVjZUltYWdlIG1hc2tCb3hJbWFnZTsKIAotICAgIExlbmd0
aFNpemUgbV9wYWdlU2l6ZTsKLSAgICBMZW5ndGhQb2ludCBtX29iamVjdFBvc2l0aW9uOworICAg
IExlbmd0aFNpemUgcGFnZVNpemU7CisgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb247CiAK
LSAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gbV9zaGFwZU91dHNpZGU7Ci0gICAgTGVuZ3RoIG1fc2hh
cGVNYXJnaW47Ci0gICAgZmxvYXQgbV9zaGFwZUltYWdlVGhyZXNob2xkOworICAgIFJlZlB0cjxT
aGFwZVZhbHVlPiBzaGFwZU91dHNpZGU7CisgICAgTGVuZ3RoIHNoYXBlTWFyZ2luOworICAgIGZs
b2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQ7CiAKLSAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+
IG1fY2xpcFBhdGg7CisgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBjbGlwUGF0aDsKIAot
ICAgIENvbG9yIG1fdGV4dERlY29yYXRpb25Db2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5r
VGV4dERlY29yYXRpb25Db2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7Ci0gICAgQ29sb3IgbV92
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7Ci0gICAg
Q29sb3IgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOworICAgIENvbG9yIHRleHREZWNv
cmF0aW9uQ29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yOwor
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIHZpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOwor
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVk
TGlua0JvcmRlclRvcENvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3I7CiAKLSAgICBpbnQgbV9vcmRlcjsKKyAgICBpbnQgb3JkZXI7CiAKLSAgICBBdG9taWNTdHJp
bmcgbV9mbG93VGhyZWFkOwotICAgIEF0b21pY1N0cmluZyBtX3JlZ2lvblRocmVhZDsKKyAgICBB
dG9taWNTdHJpbmcgZmxvd1RocmVhZDsKKyAgICBBdG9taWNTdHJpbmcgcmVnaW9uVGhyZWFkOwog
Ci0gICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBtX2FsaWduQ29udGVudDsKLSAgICBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhIG1fYWxpZ25JdGVtczsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhIG1fYWxpZ25TZWxmOwotICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgbV9qdXN0aWZ5
Q29udGVudDsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlmeUl0ZW1zOwotICAg
IFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5U2VsZjsKKyAgICBTdHlsZUNvbnRlbnRB
bGlnbm1lbnREYXRhIGFsaWduQ29udGVudDsKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGFs
aWduSXRlbXM7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnblNlbGY7CisgICAgU3R5
bGVDb250ZW50QWxpZ25tZW50RGF0YSBqdXN0aWZ5Q29udGVudDsKKyAgICBTdHlsZVNlbGZBbGln
bm1lbnREYXRhIGp1c3RpZnlJdGVtczsKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGp1c3Rp
ZnlTZWxmOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB1bnNpZ25lZCBtX3RvdWNo
QWN0aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KKyAgICB1bnNpZ25lZCB0b3VjaEFjdGlvbiA6IDE7
IC8vIFRvdWNoQWN0aW9uCiAjZW5kaWYKIAotICAgIHVuc2lnbmVkIG1fcmVnaW9uRnJhZ21lbnQg
OiAxOyAvLyBSZWdpb25GcmFnbWVudAorICAgIHVuc2lnbmVkIHJlZ2lvbkZyYWdtZW50IDogMTsg
Ly8gUmVnaW9uRnJhZ21lbnQKIAotICAgIHVuc2lnbmVkIG1fcGFnZVNpemVUeXBlIDogMjsgLy8g
UGFnZVNpemVUeXBlCi0gICAgdW5zaWduZWQgbV90cmFuc2Zvcm1TdHlsZTNEIDogMTsgLy8gRVRy
YW5zZm9ybVN0eWxlM0QKLSAgICB1bnNpZ25lZCBtX2JhY2tmYWNlVmlzaWJpbGl0eSA6IDE7IC8v
IEVCYWNrZmFjZVZpc2liaWxpdHkKKyAgICB1bnNpZ25lZCBwYWdlU2l6ZVR5cGUgOiAyOyAvLyBQ
YWdlU2l6ZVR5cGUKKyAgICB1bnNpZ25lZCB0cmFuc2Zvcm1TdHlsZTNEIDogMTsgLy8gRVRyYW5z
Zm9ybVN0eWxlM0QKKyAgICB1bnNpZ25lZCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOyAvLyBFQmFj
a2ZhY2VWaXNpYmlsaXR5CiAKIAogICAgIHVuc2lnbmVkIHVzZXJEcmFnIDogMjsgLy8gRVVzZXJE
cmFnCiAgICAgdW5zaWduZWQgdGV4dE92ZXJmbG93IDogMTsgLy8gV2hldGhlciBvciBub3QgbGlu
ZXMgdGhhdCBzcGlsbCBvdXQgc2hvdWxkIGJlIHRydW5jYXRlZCB3aXRoICIuLi4iCiAgICAgdW5z
aWduZWQgbWFyZ2luQmVmb3JlQ29sbGFwc2UgOiAyOyAvLyBFTWFyZ2luQ29sbGFwc2UKICAgICB1
bnNpZ25lZCBtYXJnaW5BZnRlckNvbGxhcHNlIDogMjsgLy8gRU1hcmdpbkNvbGxhcHNlCi0gICAg
dW5zaWduZWQgbV9hcHBlYXJhbmNlIDogNjsgLy8gRUFwcGVhcmFuY2UKLSAgICB1bnNpZ25lZCBt
X2JvcmRlckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQKLSAgICB1bnNpZ25lZCBtX3RleHRDb21iaW5l
IDogMTsgLy8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcworICAgIHVuc2lnbmVkIGFwcGVh
cmFuY2UgOiA2OyAvLyBFQXBwZWFyYW5jZQorICAgIHVuc2lnbmVkIGJvcmRlckZpdCA6IDE7IC8v
IEVCb3JkZXJGaXQKKyAgICB1bnNpZ25lZCB0ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1j
b21iaW5lIHByb3BlcnRpZXMKIAotICAgIHVuc2lnbmVkIG1fdGV4dERlY29yYXRpb25TdHlsZSA6
IDM7IC8vIFRleHREZWNvcmF0aW9uU3R5bGUKKyAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvblN0
eWxlIDogMzsgLy8gVGV4dERlY29yYXRpb25TdHlsZQogCi0gICAgdW5zaWduZWQgbV9hc3BlY3RS
YXRpb1R5cGUgOiAyOworICAgIHVuc2lnbmVkIGFzcGVjdFJhdGlvVHlwZSA6IDI7CiAKICNpZiBF
TkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIHVuc2lnbmVkIG1fZWZmZWN0aXZlQmxlbmRNb2Rl
OiA1OyAvLyBFQmxlbmRNb2RlCi0gICAgdW5zaWduZWQgbV9pc29sYXRpb24gOiAxOyAvLyBJc29s
YXRpb24KKyAgICB1bnNpZ25lZCBlZmZlY3RpdmVCbGVuZE1vZGU6IDU7IC8vIEVCbGVuZE1vZGUK
KyAgICB1bnNpZ25lZCBpc29sYXRpb24gOiAxOyAvLyBJc29sYXRpb24KICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKLSAgICB1bnNpZ25lZCBtX2FwcGxlUGF5QnV0dG9uU3R5bGUgOiAy
OwotICAgIHVuc2lnbmVkIG1fYXBwbGVQYXlCdXR0b25UeXBlIDogMzsKKyAgICB1bnNpZ25lZCBh
cHBsZVBheUJ1dHRvblN0eWxlIDogMjsKKyAgICB1bnNpZ25lZCBhcHBsZVBheUJ1dHRvblR5cGUg
OiAzOwogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX29iamVjdEZpdCA6IDM7IC8vIE9iamVjdEZp
dAorICAgIHVuc2lnbmVkIG9iamVjdEZpdCA6IDM7IC8vIE9iamVjdEZpdAogICAgIAotICAgIHVu
c2lnbmVkIG1fYnJlYWtCZWZvcmUgOiA0OyAvLyBCcmVha0JldHdlZW4KLSAgICB1bnNpZ25lZCBt
X2JyZWFrQWZ0ZXIgOiA0OwotICAgIHVuc2lnbmVkIG1fYnJlYWtJbnNpZGUgOiAzOyAvLyBCcmVh
a0luc2lkZQotICAgIHVuc2lnbmVkIG1fcmVzaXplIDogMjsgLy8gRVJlc2l6ZQorICAgIHVuc2ln
bmVkIGJyZWFrQmVmb3JlIDogNDsgLy8gQnJlYWtCZXR3ZWVuCisgICAgdW5zaWduZWQgYnJlYWtB
ZnRlciA6IDQ7CisgICAgdW5zaWduZWQgYnJlYWtJbnNpZGUgOiAzOyAvLyBCcmVha0luc2lkZQor
ICAgIHVuc2lnbmVkIHJlc2l6ZSA6IDI7IC8vIEVSZXNpemUKIAotICAgIHVuc2lnbmVkIG1faGFz
QXR0ckNvbnRlbnQgOiAxOworICAgIHVuc2lnbmVkIGhhc0F0dHJDb250ZW50IDogMTsKIAotICAg
IHVuc2lnbmVkIG1faXNQbGFjZWhvbGRlclN0eWxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1BsYWNl
aG9sZGVyU3R5bGUgOiAxOwogCiBwcml2YXRlOgogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRy
YW5zZm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJh
bnNmb3JtRGF0YS5jcHAKaW5kZXggZWFmMzEwYjYzZDYxYWQxY2MxMDQ4YjBjNjgyYWNmZWQ1MmQ5
YWZhNi4uZWFmN2E2YTQzN2U5MzYxMTY4M2JlNmExYTllNDNiYTAwODBhMzk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5j
cHAKQEAgLTI3LDE5ICsyNywxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZVRyYW5z
Zm9ybURhdGE6OlN0eWxlVHJhbnNmb3JtRGF0YSgpCi0gICAgOiBtX29wZXJhdGlvbnMoUmVuZGVy
U3R5bGU6OmluaXRpYWxUcmFuc2Zvcm0oKSkKLSAgICAsIG1feChSZW5kZXJTdHlsZTo6aW5pdGlh
bFRyYW5zZm9ybU9yaWdpblgoKSkKLSAgICAsIG1feShSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblkoKSkKLSAgICAsIG1feihSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9y
aWdpblooKSkKKyAgICA6IG9wZXJhdGlvbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm0o
KSkKKyAgICAsIHgoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkpCisgICAg
LCB5KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpKQorICAgICwgeihSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblooKSkKIHsKIH0KIAotaW5saW5lIFN0eWxl
VHJhbnNmb3JtRGF0YTo6U3R5bGVUcmFuc2Zvcm1EYXRhKGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0
YSYgbykKK2lubGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNmb3JtRGF0YShjb25z
dCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVRyYW5z
Zm9ybURhdGE+KCkKLSAgICAsIG1fb3BlcmF0aW9ucyhvLm1fb3BlcmF0aW9ucykKLSAgICAsIG1f
eChvLm1feCkKLSAgICAsIG1feShvLm1feSkKLSAgICAsIG1feihvLm1feikKKyAgICAsIG9wZXJh
dGlvbnMob3RoZXIub3BlcmF0aW9ucykKKyAgICAsIHgob3RoZXIueCkKKyAgICAsIHkob3RoZXIu
eSkKKyAgICAsIHoob3RoZXIueikKIHsKIH0KIApAQCAtNDgsOSArNDgsOSBAQCBSZWY8U3R5bGVU
cmFuc2Zvcm1EYXRhPiBTdHlsZVRyYW5zZm9ybURhdGE6OmNvcHkoKSBjb25zdAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSgqdGhpcykpOwogfQogCi1ib29sIFN0
eWxlVHJhbnNmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8p
IGNvbnN0Citib29sIFN0eWxlVHJhbnNmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVRy
YW5zZm9ybURhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3ggPT0gby5tX3ggJiYg
bV95ID09IG8ubV95ICYmIG1feiA9PSBvLm1feiAmJiBtX29wZXJhdGlvbnMgPT0gby5tX29wZXJh
dGlvbnM7CisgICAgcmV0dXJuIHggPT0gb3RoZXIueCAmJiB5ID09IG90aGVyLnkgJiYgeiA9PSBv
dGhlci56ICYmIG9wZXJhdGlvbnMgPT0gb3RoZXIub3BlcmF0aW9uczsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVHJhbnNmb3JtRGF0YS5oCmluZGV4IDJlYTA3OTViNmFlZGMxNTAzNGY3YmYyOGYzZDhmYTM2
MjJlZWQ4Y2EuLjZiNDZhMzU2YjQxZmMxYjYxMjNlODJjNDdkMjEwNjAzYWFhYzkyNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRh
LmgKQEAgLTM2LDE4ICszNiwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZVRyYW5z
Zm9ybURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUcmFuc2Zvcm1E
YXRhKTsgfQogICAgIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBjb25zdDsKIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pIGNvbnN0OwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pIGNvbnN0CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYpIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBtX29wZXJhdGlvbnMuc2l6ZSgpOyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBvcGVyYXRpb25zLnNpemUoKTsgfQogCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBtX29wZXJhdGlvbnM7Ci0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95OwotICAg
IGZsb2F0IG1fejsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CisgICAgTGVu
Z3RoIHg7CisgICAgTGVuZ3RoIHk7CisgICAgZmxvYXQgejsKIAogcHJpdmF0ZToKICAgICBTdHls
ZVRyYW5zZm9ybURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlVmlzdWFsRGF0YS5jcHAKaW5kZXggMjU2YzE1NDk1ZmE2ZTAwYzdhY2MwYjFkZGI3Yjcw
ZmZjODIyMGIyZS4uMTBmZDU4ODhmN2Y3YjY3ODc1NDRkZDExZWI4ZjdlZWFkYjAxODBhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3R5bGVWaXN1YWxEYXRh
OjpTdHlsZVZpc3VhbERhdGEoKQogICAgIDogaGFzQ2xpcChmYWxzZSkKICAgICAsIHRleHREZWNv
cmF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKSkKLSAgICAsIG1fem9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKKyAgICAsIHpvb20oUmVuZGVyU3R5bGU6Omlu
aXRpYWxab29tKCkpCiB7CiB9CiAKQEAgLTM3LDEyICszNywxMiBAQCBTdHlsZVZpc3VhbERhdGE6
On5TdHlsZVZpc3VhbERhdGEoKQogewogfQogCi1pbmxpbmUgU3R5bGVWaXN1YWxEYXRhOjpTdHls
ZVZpc3VhbERhdGEoY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKQoraW5saW5lIFN0eWxlVmlzdWFs
RGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpCiAgICAg
OiBSZWZDb3VudGVkPFN0eWxlVmlzdWFsRGF0YT4oKQotICAgICwgY2xpcChvLmNsaXApCi0gICAg
LCBoYXNDbGlwKG8uaGFzQ2xpcCkKLSAgICAsIHRleHREZWNvcmF0aW9uKG8udGV4dERlY29yYXRp
b24pCi0gICAgLCBtX3pvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBjbGlw
KG90aGVyLmNsaXApCisgICAgLCBoYXNDbGlwKG90aGVyLmhhc0NsaXApCisgICAgLCB0ZXh0RGVj
b3JhdGlvbihvdGhlci50ZXh0RGVjb3JhdGlvbikKKyAgICAsIHpvb20oUmVuZGVyU3R5bGU6Omlu
aXRpYWxab29tKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVZpc3VhbERhdGEuaAppbmRleCBhNmY2OGVmZDA1MGE3ZGEwOGU2NTU3MDE2NTUwMDBh
YTA4YWRmYjQyLi5kNDE4YWNiNTBhMjRmOGEzYjIxOGRkZTE4YzMzZTFhYTg4YThjYjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCkBA
IC0zNywxOSArMzcsMTkgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVZpc3VhbERhdGE+IGNvcHko
KSBjb25zdDsKICAgICB+U3R5bGVWaXN1YWxEYXRhKCk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGNs
aXAgPT0gby5jbGlwCi0gICAgICAgICAgICAmJiBoYXNDbGlwID09IG8uaGFzQ2xpcAotICAgICAg
ICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gby50ZXh0RGVjb3JhdGlvbgotICAgICAgICAgICAg
JiYgbV96b29tID09IG8ubV96b29tOworICAgICAgICByZXR1cm4gY2xpcCA9PSBvdGhlci5jbGlw
CisgICAgICAgICAgICAmJiBoYXNDbGlwID09IG90aGVyLmhhc0NsaXAKKyAgICAgICAgICAgICYm
IHRleHREZWNvcmF0aW9uID09IG90aGVyLnRleHREZWNvcmF0aW9uCisgICAgICAgICAgICAmJiB6
b29tID09IG90aGVyLnpvb207CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHls
ZVZpc3VhbERhdGEmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIExlbmd0aEJveCBjbGlwOwogICAgIGJvb2wgaGFz
Q2xpcCA6IDE7CiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb24gOiBUZXh0RGVjb3JhdGlvbkJp
dHM7IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50Lgot
ICAgIGZsb2F0IG1fem9vbTsKKyAgICBmbG9hdCB6b29tOwogCiBwcml2YXRlOgogICAgIFN0eWxl
VmlzdWFsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVQZW5k
aW5nUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291
cmNlcy5jcHAKaW5kZXggZjc0OTMzOTAzNDIwOTVjZTMxNzQxY2NkMmMwMDNhM2YyYjY0NzI3Mi4u
MTAzMTlmODIzZWQwMzE0YjJlYjM4MjU4OTBiZWMzNTcwNzAzMTVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHN0YXRpYyB2b2lkIGxvYWRQZW5kaW5nSW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHlsZUltYWdlKiBzdHlsZUltYWdlLCBjCiAKIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoUmVu
ZGVyU3R5bGUmIHN0eWxlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgZm9yIChhdXRvKiBiYWNrZ3JvdW5kTGF5ZXIgPSBzdHlsZS5iYWNrZ3JvdW5k
TGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFja2dyb3VuZExheWVyID0gYmFja2dyb3VuZExh
eWVyLT5uZXh0KCkpCisgICAgZm9yIChhdXRvKiBiYWNrZ3JvdW5kTGF5ZXIgPSAmc3R5bGUuYmFj
a2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7IGJhY2tncm91bmRMYXllciA9IGJhY2tn
cm91bmRMYXllci0+bmV4dCgpKQogICAgICAgICBsb2FkUGVuZGluZ0ltYWdlKGRvY3VtZW50LCBi
YWNrZ3JvdW5kTGF5ZXItPmltYWdlKCksIGVsZW1lbnQpOwogCiAgICAgZm9yIChhdXRvKiBjb250
ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9
IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBsb2FkUGVuZGlu
Z1Jlc291cmNlcyhSZW5kZXJTdHlsZSYgc3R5bGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
RWxlbWVudCoKICAgICBpZiAoYXV0byogcmVmbGVjdGlvbiA9IHN0eWxlLmJveFJlZmxlY3QoKSkK
ICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgcmVmbGVjdGlvbi0+bWFzaygpLmlt
YWdlKCksIGVsZW1lbnQpOwogCi0gICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSBzdHlsZS5tYXNr
TGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpCisgICAg
Zm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAmc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1h
c2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKQogICAgICAgICBsb2FkUGVuZGluZ0ltYWdlKGRv
Y3VtZW50LCBtYXNrTGF5ZXItPmltYWdlKCksIGVsZW1lbnQpOwogCiAgICAgaWYgKHN0eWxlLnNo
YXBlT3V0c2lkZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZTI4ZmQ0ZWE1ZTUwN2ViODZiODNl
NzFhZDY4MDlmMzA2NjkzODc0Li40ZTliMmUyNzJkMmQzOWRhYTgwZGEwY2NhNDNkZDJmYTA5ODlj
MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTg0OSw3ICsxODQ5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICB7Ci0gICAgICAg
IEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKKyAgICAgICAgRnJh
bWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KCp0aGlzKTsKICAgICAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggMGM1ZmRhMDFmMDhhOTA1ZDE2YzkzYzRiNzM4MmI2NDJkODJlZjVh
YS4uYzkxMTU1MjBmMmM4OTUyMzllNDE0MmNhODY3YTdmNmQ0ZjYwNjJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzQ3MCw4ICszNDcwLDggQEAgLSAodm9pZClfYWRk
U2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OihGcmFtZVZpZXcqKWZyYW1lVmll
dyBkYXNoYm9hcmQKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtba2l0KCZmcmFtZVZpZXct
PmZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgd2lkZ2V0OiBmcmFtZVZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGlzPEZyYW1l
Vmlldz4oKndpZGdldCkpIHsKLSAgICAgICAgICAgIFtzZWxmIF9hZGRTY3JvbGxlckRhc2hib2Fy
ZFJlZ2lvbnNGb3JGcmFtZVZpZXc6ZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpIGRh
c2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KHdpZGdl
dCkpIHsKKyAgICAgICAgICAgIFtzZWxmIF9hZGRTY3JvbGxlckRhc2hib2FyZFJlZ2lvbnNGb3JG
cmFtZVZpZXc6JmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdp
b25zOnJlZ2lvbnNdOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggOWE4NzM1OGIwODU0MzUxOGQ4MDQ2NjMxYjUxOTMwM2UwYTMxYzRhNy4uZGYxYTU3YmE0OTRj
YjA3MjMyMWE2NzJiOTkwMmMwODNiYThlM2E1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVGV4dHUKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihhbmltYXRpb25PYmplY3QtPmZpbGxNb2RlKCkpOwogICAgIGVuY29kZXIgPDwgYW5pbWF0
aW9uT2JqZWN0LT5kdXJhdGlvbigpOwogICAgIGVuY29kZXIgPDwgYW5pbWF0aW9uT2JqZWN0LT5p
dGVyYXRpb25Db3VudCgpOwotICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIGFuaW1h
dGlvbk9iamVjdC0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKSk7CisgICAgZW5jb2RlVGltaW5nRnVu
Y3Rpb24oZW5jb2RlciwgYW5pbWF0aW9uT2JqZWN0LT50aW1pbmdGdW5jdGlvbigpKTsKIAogICAg
IGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMgPSBhbmltYXRpb24ua2V5ZnJhbWVz
KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtleWZyYW1lcy5wcm9wZXJ0eSgpKTsKQEAgLTUy
Nyw3ICs1MjcsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0dXJlTWFwcAogICAgIGFuaW1hdGlvbk9iamVj
dC0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogICAgIGFuaW1hdGlvbk9iamVjdC0+c2V0SXRlcmF0
aW9uQ291bnQoaXRlcmF0aW9uQ291bnQpOwogICAgIGlmICh0aW1pbmdGdW5jdGlvbikKLSAgICAg
ICAgYW5pbWF0aW9uT2JqZWN0LT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbik7Cisg
ICAgICAgIGFuaW1hdGlvbk9iamVjdC0+c2V0VGltaW5nRnVuY3Rpb24oV1RGTW92ZSh0aW1pbmdG
dW5jdGlvbikpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHByb3BlcnR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRl
eCBiYWU5NmI2YTJjZGRmOWJiMmM4MDkxMWY3NmE2ZjQ0OGFjZGRmMjRiLi44NTA5YWU2NTAyNGQ0
ZWU1OTJlZDEyNWExMjEyMTQwZjA3ZmNlMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBA
IC02NjYsNyArNjY2LDcgQEAgUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVTY3JvbGxi
YXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgICAgICAgICAgICAgc2Ny
b2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZS0+dGVzdFRyaWdnZXIo
KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT52aWV3KCkt
PmFkZENoaWxkKHdpZGdldC5wdHIoKSk7CisgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT52aWV3
KCktPmFkZENoaWxkKHdpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298447</attachid>
            <date>2017-01-09 23:46:04 -0800</date>
            <delta_ts>2017-01-10 19:29:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170109234427.patch</filename>
            <type>text/plain</type>
            <size>937401</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li4yMDVmYjdiNDRlZjQyOTFj
YTZlMDQ2YzhlZTI0MTc4MTQ1YzYyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUg
cGlwZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDI2NTZjZGU4Y2M0NmYxMGMwMzgyZDMxMTI1YWI1NTY3NzkwMWRjZi4u
MzQwOWMyY2VjZDkxOTIwNWQ5ZjNmYTg2M2M2NTY2ZjQ4OTljYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2Vk
IHRoZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5v
bi1jb25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29u
c3QgVD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGlu
dGVudGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZl
cmVuY2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2Ug
UmVmUHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAg
aXMgdG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nh
c3QganVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9z
ZSBhbmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0w
NiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbR1RLXSBTaG91bGQgc3VwcG9ydCBrZXkgYW5kIGNvZGUgcHJvcGVydGll
cyBvbiBrZXlib2FyZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWM4MjJiNTkzMzViNWIzYzJiODFi
MzgyMTc2MTA4YjZhNTY0OTc2Li5lYzAwZDZmYTk5OGQ1ZjU3NjcyOGJlMDlhN2U5NWIyNzFlYjg0
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIyIEBACisyMDE3LTAxLTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1v
cmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg6IFR3ZWFrcywgbXNhZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0xlbmd0aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
IFVwZGF0ZWQgbWFueSBwcm9wZXJ0aWVzCisgICAgICAgIHNpbmNlIHRoZSBsYXllciBwcm9wZXJ0
aWVzIG5vdyByZXR1cm4gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycy4KKworICAgICAg
ICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjppbWFnZSk6IFJlbW92
ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6
Oml0ZW0pOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdCk6IFVwZGF0ZWQgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBSZW1vdmVk
IG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBVcGRhdGVk
IGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlOjp2YXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemVGb3JMZW5ndGhTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFNpemVGb3JMZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZCBz
aXplRm9yTGVuZ3RoU2l6ZS4KKworICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRPcmRlcik6IEN1dCBkb3duIG9u
IGNyZWF0aW9uIG9mIHVudXNlZCBvYmplY3RzLgorICAgICAgICBXZSBub3cgY3JlYXRlIG9ubHkg
d2hhdCB3ZSBhY3R1YWxseSB1c2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMpOiBVcGRhdGVkIGZvcgorICAgICAgICBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOiBQYXNz
IHJlZmVyZW5jZXMKKyAgICAgICAgd2hlbiBjcmVhdGluZyBTaGFwZVZhbHVlLgorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZElu
aGVyaXRlZFZhbHVlKTogQWRkZWQuIFRoaXMgc2V0IG9mIG92ZXJsb2FkZWQKKyAgICAgICAgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byB1c2UgbW92ZSBzZW1hbnRpY3MgZm9yIHNvbWUgdHlwZXMsIGJ1
dCBjb3B5CisgICAgICAgIHRoZW0gd2hlbiBpbmhlcml0aW5nLiBEb2luZyBpdCB3aXRoIHNwZWNp
YWwgY2FzZXMgaGVyZSBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGlzIHdpdGhvdXQg
YWRkaW5nIG92ZXJsb2FkcyBzb21lb25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8KKyAgICAgICAgY2Fs
bCBvdXRzaWRlIHRoZSBzdHlsZSBidWlsZGVyLCBhbmQgd2l0aG91dCBhZGRpbmcgc3BlY2lhbCBj
YXNlcyB0bworICAgICAgICB0aGUgSlNPTiBmaWxlIGZvciBlYWNoIHByb3BlcnR5LgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJk
UmVnaW9uKToKKyAgICAgICAgQWRkIFdURk1vdmUgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBydmFs
dWUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5l
SGVpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXApOiBEaXR0by4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQpOiBVc2UKKyAgICAgICAgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgY3VzdG9tIHByb3Bl
cnR5IGRhdGEgaW4gUmVuZGVyU3R5bGUuCisKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6IFVz
ZSBhdXRvIHF1aXRlIGEgYml0IG1vcmUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBV
cGRhdGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxheWVycyB0byBleHBlY3QgcmVmZXJlbmNlcy4gQWRk
ZWQgYSBXVEZNb3ZlCisgICAgICAgIHNvIHdlIGNhbiBnZXQgbW92ZSBzZW1hbnRpY3MgZm9yIGNv
bnZlcnRlZCB2YWx1ZXMgdGhhdCBjb21lIG91dCBpbgorICAgICAgICBhbiBvcHRpb25hbC4gQWRk
ZWQgY2FsbCB0byBmb3J3YXJkSW5oZXJpdGVkVmFsdWUgKHNlZSBhYm92ZSkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTogVXNlIGF1dG8gYW5kIHVwZGF0ZQorICAgICAgICBzaW5jZSBM
ZW5ndGhTaXplIGlzIGEgc3RydWN0LgorCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCk6
IFVzZSBhdXRvLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGl2ZU5vZGVMaXN0Ojpvd25lck5vZGUpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpzb3VyY2UpOiBSZW1vdmVkIHVubmVlZGVkIHN0YXRpY19j
YXN0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNl
dFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6IFR3ZWFrZWQgZm9ybWF0dGlu
Zy4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Om93
bmVyRG9jdW1lbnQpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0
UnVubmVyKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSk6IERpdHRvLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFj
a0l0ZW06Om5vZGUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
ZXRKYXZhU2NyaXB0UGF1c2VkKTogQ3V0IGRvd24gb24gdGhlIG51bWJlcgorICAgICAgICBvZiBk
aWZmZXJlbnQgZnVuY3Rpb25zIGhlcmUuIEFsc28gdXNlIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBw
b2ludGVyLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6IFVzZSBhdXRvLiBMZXQgdGhlIGlzPD4gZnVu
Y3Rpb24gZG8gbnVsbAorICAgICAgICBjaGVja2luZyBmb3IgdXMuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6ZnJhbWVGb3JXaWRnZXQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QpOiBVc2UgQ2hyb21lIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgSG9zdFdpbmRvdy4gSG9zdFdpbmRvdyBpcyBhbiBhYnN0cmFjdGlvbiBmb3Ig
dGhlIHBsYXRmb3JtIGxheWVyLCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gZ29vZCByZWFzb24g
dG8gdXNlIGl0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlQW5p
bWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldCk6IFVwZGF0ZWQgdG8gdXNlIHJlZmVyZW5jZQorICAgICAgICB3
aGVuIGNhbGxpbmcgUmVuZGVyV2lkZ2V0OjpmaW5kLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogVXNlIENocm9tZSBpbnN0ZWFkIG9mIEhvc3RX
aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvc3RXaW5kb3cpOiBVc2UgZWFy
bHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlCisgICAgICAgIGNsYXNz
IGZ1bmN0aW9uLCB3aGljaCB3YXMgZW1wdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93
CisgICAgICAgIGNvbnRhaW5zIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucyk6IFVzZSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6IFVz
ZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBSZW1vdmUgbm93LXVubmVlZGVkIGNvbnN0X2Nh
c3QuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cGx1Z2luVmlld3MpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5z
CisgICAgICAgIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0
eSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
OjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvCisg
ICAgICAgIHRoZSB0eXBlcyBpbiBhbmltYXRpb24gZnVuY3Rpb24gbWVtYmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUpOiBEaXR0by4KKworICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFwcGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIp
OiBVcGRhdGVkIHNpbmNlIHdlIG5vdworICAgICAgICB1c2UgcnZhbHVlIHJlZmVyZW5jZXMgYW5k
IG1vdmUgc2VtYW50aWNzIHdoZW4gc2V0dGluZyBsZW5ndGggcHJvcGVydGllcy4KKworICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25z
Rm9yRnJhbWUpOiBUd2Vha2VkIHRvCisgICAgICAgIHVzZSBhdXRvLCBwYXNzIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOiBSZXR1cm4gUmVmUHRyIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOiBBZGRl
ZCBhIGNvbnN0cnVjdG9yIHRoYXQgbW92ZXMgdGhlIGxlbmd0aHMgaW4sIHJhdGhlcgorICAgICAg
ICB0aGFuIGFsd2F5cyBjb3B5aW5nIHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oOiBU
dXJuZWQgTGVuZ3RoU2l6ZSBpbnRvIGEgc3RydWN0IGFuZCByZW1vdmVkIGFsbCB0aGUKKyAgICAg
ICAgZ2V0dGVyIGFuZCBzZXR0ZXIgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuIFVudXNlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUpOiBSZXR1cm4gUmVmIHJh
dGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOiBUYWtl
CisgICAgICAgIGEgcmVmZXJlbmNlLiBJbml0aWFsaXplIGRhdGEgbWVtYmVycyBpbiBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQ
YXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGRDaGlsZCk6IFRha2Ug
YSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwpOiBVcGRhdGVkIGZvciBjaGFuZ2Ug
dG8gYWRkQ2hpbGQKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgpOiBEZWxldGVkLiBUaGlzIHdhcyBuZXZlciBjYWxsZWQsCisgICAgICAgIHNvIG1h
ZGUgaXQgcHVyZSB2aXJ0dWFsLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6ZnJhbWVS
ZWN0c0NoYW5nZWQpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IERlbGV0ZWQuIFRoaXMgd2FzIGVtcHR5IHNv
IG1hZGUgaXQgcHVyZQorICAgICAgICB2aXJ0dWFsIGFuZCBjaGFuZ2VkIEZyYW1lVmlldyB0byBu
b3QgY2FsbCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzaG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpoaWRlKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBDaGFuZ2VkIHRoZSBjaGlsZHJl
biBzZXQgdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIENoYW5nZWQg
ZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBvdmVycmlkZGVuIHRvIGVpdGhlciBiZSBmaW5hbCBv
ciBub24tdmlydHVhbCwKKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVy
IGNhbGxlZCB0byBiZSBwdXJlIHZpcnR1YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSk6IFVwZGF0ZWQg
Zm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oOiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgor
ICAgICAgICByYXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRp
bWluZ0Z1bmN0aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5k
IFJlZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rp
b24gYW5kCisgICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50
IGNoZWNrIGluIEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25MaXN0OjpBbmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJl
ZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250
YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNz
aWdubWVudAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlcjo6Y2xvbmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAg
ICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9u
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9y
ZQorICAgICAgICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGlu
ZyB0byBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
Zyk6IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlk
ZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUg
b2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6IFNpbXBsaWZpZWQsIHJlbW92aW5nIHVu
bmVjZXNzYXJ5IGZsb2F0aW5nIHBvaW50IG1hdGguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpGaWx0ZXJPcGVyYXRpb25zKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBn
ZW5lcmF0ZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0
b3I9KTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGlzLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6IFN0cmVhbWxpbmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogUmVtb3Zl
ZCBpbmNsdWRlZCBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6IFR3ZWFrZWQgZm9ybWF0dGluZy4gUmVtb3ZlZCBuZXN0aW5n
CisgICAgICAgIGZyb20gI2lmIHNpbmNlIG91ciBmb3JtYXR0aW5nIG1ha2VzIGl0IGhhcmQgdG8g
c2VlIG5lc3RpbmcuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGUgdGhlIGRlZmF1
bHQgbW92ZSBhbmQgY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbmVtbnQgb3BlcmF0b3JzIGV4
Y2VwdAorICAgICAgICBpbiB0aGUgVVNFKEZSRUVUWVBFKSBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKTogVXBkYXRlZCBzaW5jZSBjbG9uZSBub3cgcmV0dXJu
cyBhIFJlZgorICAgICAgICByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0aW9uVmFsdWUpOiBEZWxldGVkLiBMZXQg
dGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpdGhv
dXQgZGVmaW5pbmcgaXQgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6IFVzZSBhIG1vZGVybiBmb3IK
KyAgICAgICAgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSwgYW5kIHVuY2hlY2tlZCBhcHBl
bmQuIEFsc28gdGVsbCB0aGUgY29tcGlsZXIgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIG1vdmUg
Y29uc3RydWN0b3IsIHNpbmNlIHRoZSBzcGVjaWFsIHdvcmsgaXMgb25seSBuZWVkZWQgZm9yIHRo
ZQorICAgICAgICBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQW5p
bWF0aW9uVmFsdWU6OkZpbHRlckFuaW1hdGlvblZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6S2V5ZnJhbWVWYWx1ZUxpc3QpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhT
aHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKTogVXBkYXRlZAorICAgICAgICBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgRG9uJ3QgYm90aGVyIHNldHRpbmcgbV9jbGllbnQgc2luY2Ugd2Ug
bmV2ZXIgdXNlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBDbGVhbiB1cCBjb2RlIGEgYml0CisgICAgICAgIGJ5IHVz
aW5nIGF1dG8gYSBsb3QgbW9yZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6IEFkZGVkIGluY2x1ZGUKKyAgICAg
ICAgdGhhdCBpcyBub3cgbmVlZGVkIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2Ug
Y2xhc3MuIFRpZGllZCB0aGUgY2xhc3MKKyAgICAgICAgdXAgYSBiaXQsIG1hcmtpbmcgaXQgZmlu
YWwsIG1ha2luZyBldmVyeXRoaW5nIHByaXZhdGUsIHRha2luZyBhIHJlZmVyZW5jZSwgYW5kCisg
ICAgICAgIHJlbW92aW5nIGFuIHVudXNlZCBkYXRhIG1lbWJlciwgbV9jbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOiBQYXNzIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwgbm93
IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1ZGUg
ZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgorICAg
ICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVy
QW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAo
LVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2VkIGFy
Z3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaXplRnJvbU5TQ29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5naHRTaXplIHN0cnVjdC4K
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6cmFkaW9TaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJv
bFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5pbXVtQ29udHJv
bFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEZvY3VzKTogVXBkYXRlZCB0byBwYXNzIGEgcmVm
ZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcDogUmVtb3ZlZC4gVW51c2VkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90
aW9uQ2xpZW50TW9jay5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6
IFJldHVybiBhIFJlZiBpbnN0ZWFkIG9mIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaGFyZWRDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRDdXJzb3JC
eU5hbWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KTog
UmVtb3ZlZCBhIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6IFVwZGF0
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4gQWxzbworICAgICAgICB1c2VkIGEgdmVjdG9yIHRvIGl0
ZXJhdGUgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIgaW5zdGVhZCBvZiByZWN1cnNp
b24uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6IFRh
a2UgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1h
c2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKTogVXNlIGF1dG8gYSBi
aXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0
ZW50KTogVXNlIHJlZmVyZW5jZSBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFza0NsaXBSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZpbGxMYXllcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJzVXNlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKTogVXNlIHJlZmVyZW5j
ZSBmb3IKKyAgICAgICAgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdl
b21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KTogVXNl
IHJlZmVyZW5jZXMgZm9yIHRoZSBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKTogVXNlIFJlbmRlclN0eWxlOjpyZXBsYWNlIHRvIHJl
cGxhY2UgdGhlCisgICAgICAgIG9sZCBzdHlsZSB3aXRoIHRoZSBuZXcgc3R5bGUsIGFuZCBnZXQg
dGhlIG9sZCBvbmUgb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJz
LgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxsTGF5ZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFVwZGF0ZWQgZm9y
IHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25PZmZzZXQpOgorICAgICAgICBSZWZhY3RvciBzbyB3ZSBkb24ndCBuZWVkIHNvIG1hbnkg
ZnVuY3Rpb25zIGluIFJlbmRlclN0eWxlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFsc28gZGlkIGEgZmV3IG90aGVy
IHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVU
aWxlZEltYWdlKTogVXBkYXRlZCBzaW5jZSBsYXllcnMgYXJlIHJlZmVyZW5jZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJh
Y2tncm91bmRJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKTogVXBkYXRlZCB0byB1c2UKKyAgICAg
ICAgcmVmZXJlbmNlcyBmb3IgbGF5ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6IFVz
ZSBXVEZNb3ZlIHRvIHBhc3MgYSBMZW5ndGhCb3guCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6aXNDb250cm9sU3R5bGVkKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3Ry
dWN0LAorICAgICAgICBtb3JlIFdURk1vdmUsIGNoYW5nZSBzaW5jZSBsYXllcnMgYXJlIGZlcmVu
Y2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cyk6IFVzZSBtb3ZlCisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9v
cCBpbnN0ZWFkIG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1Bh
cmVudFNvb24pOiBUYWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFs
dWU6OnJlc2V0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2
YWx1ZSByZWZlcmVuY2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUp
OiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVt
b3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5j
ZSBtYXRoTUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlT
dHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNo
b3VsZE1vdmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0
aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9y
ZGVyRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVy
UmFkaXVzKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1i
ZXIgbmFtZXMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxp
emVyIGxpc3RzIHNvIHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJl
cXVpcmluZyBleHBsaWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJl
cGxhY2UpOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisg
ICAgICAgIGNhbiBiZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2
YWx1ZSBvdXQgd2l0aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBh
Ym91dCBub3QgYmVpbmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVp
bmcKKyAgICAgICAgbW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3Rk
OjpleGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQm
KTogQWRkZWQgb3BlcmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVu
Y2VzIHdpdGhvdXQgYW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vz
cyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0
ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1
bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFy
ZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAg
ICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9y
PT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xh
c3MKKyAgICAgICAgZm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlv
biBpbiB0aGlzCisgICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBl
bGltaW5hdGUgdGhlIHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFy
ZCBkYXRhIG1lbWJlciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVy
TmFtZSBpbiBhCisgICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGlj
bHkgYWNjZXNzaWJsZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJu
IG1vcmUgcmVmZXJlbmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJu
IGZvciBsb29wcy4KKyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24g
YnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0
aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFk
ZGVkIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ug
b3BlcmF0aW9uLCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0
ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFk
ZGVkLiBDYWxscyB0aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0
IGVxdWFsaXR5CisgICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1h
bCBlZmZpY2llbmN5IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
RGFzaGJvYXJkUmVnaW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNl
dCBvZiBmdW5jdGlvbnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFsc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25J
dGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3Rp
ZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25U
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2Vs
ZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0
aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVt
c092ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRB
bGlnblNlbGZPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNP
dmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3Bw
OiBTaW1pbGFyIGNoYW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpj
cmVhdGUpOiBUYWtlIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlVmFsdWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVz
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRv
OyBtYWtlIHRoZW0gcHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8t
bG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6
IFRha2UgYW4gcnZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3Rv
bVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjb250YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBk
YXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zv
cm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUg
c2luY2UgbGF5ZXJzIGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEpTU291cmNl
Q29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUKQEAgLTM3MCw3
ICs5ODksNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdz
IG9mIHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRo
ZSBzZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVj
ZSBDUFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2NzI4OTUyOWViYWU0YzYzZGEuLjY2NjY0
ZTdhMzhhYmU3ZGIxN2MwZjhjMmI1NDU4MjM2MjkzNTQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldp
ZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2lu
Y2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgor
CiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVjdG9yIiwgInBsYXRmb3JtL3NxbCIsIGFu
ZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDk0MDQ2M2FhYzM5MWIzMDI2NmNiMDY5
ZGQwYWRmODE5Zjg3Yjg0Li4zN2Q5OTA3NjhhYmE5YTcyYmQ4Y2U5OGFlZThhMDdmNWRmZWI1NzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMDkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBv
ZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmVuY29kZSk6IFVwZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAg
ICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVu
Y3Rpb24KKyAgICAgICAgc2V0dGVycyBub3cgdGFrZXMgYW4gcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOiBVcGRhdGVkIHNp
bmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4KKwogMjAxNy0wMS0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyb3AgVk5vZGVUcmFj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhkYjRiZjAzZjZkZGVhN2U2
ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNlMmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Jj4o
bV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRlcy4KICAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3MWE3MjM3NGU3MTEyM2Uy
OTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZiMWI1M2Y2MTdjM2RiZWIy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQcml2YXRlTmFtZSYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1ib2xJbXBsJiB1aWQoKSBj
b25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZhMDk2ZTgxNjAzYzA4ZTU2
YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBhOWM5YzY3ZTJmM2U3NWM3
MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
cHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZjxUPiByZXBsYWNl
KFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4uMzA4ODFkM2JlMjgxZDAx
YzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNzcs
NyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBwbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMGJiNDZlYmU0OTJlOTAx
ZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZhNjFhZjUxYTZiMGU4Mzc4
YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3ZGQxYTMuLjY3NDZmNGVm
NGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25DbwogCiBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1V
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2JlNDIzYWI1OGNmMS4uYjVj
YjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnRl
eHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYyLDIxIEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
cGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAgICAgUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJl
ZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggZjkw
Zjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2MWJjYWRiMGMzYmM5YjMw
MDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBUKiBwKSB7IHJl
dHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
JiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQmPihwKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBSZWZQdHI8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNi
NzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0ODIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01XcmFwcGVkOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwogCi0gICAgSW1wbGVtZW50
YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50
YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNz
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNET01XcmFw
cGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IGIzZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjAwY2NhY2Q5NjRk
ZTVlZWUzNzBjZWFjYzBlOWRmMjE0MWI0NzgwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTQsMTAgKzU0LDkgQEAgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkKIHsKICAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgIGxvYWRl
ci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jvb3RNb2R1bGUoSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBpbXBvcnRlck1vZHVsZUtl
eS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggMDg4NjRmYTFhNjhlNDFh
YzdlZGNkZmRlN2RiNGFhZDBiMWY0MGUxNS4uNWYyMjVmNzRhYmI1NTI5MGFjZjExNjkyYzY2Y2Zi
ODNiN2JiMzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cApAQCAtMTQ0LDE4ICsxNDQsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBM
ZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCk7Ci0g
ICAgcmV0dXJuIExlbmd0aFNpemUoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQo
KSkpOworICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIHJldHVybiB7
IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29udmVydFRv
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwogfQogCiBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlKQogewotICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgIExlbmd0aCBvZmZzZXQgPSBMZW5ndGgoMCwgRml4ZWQpOwotCiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7CisgICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2Vu
dGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE2Niw2ICsxNjQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRp
bmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKIAorICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29y
ZCkgewogICAgIGNhc2UgQ1NTVmFsdWVUb3A6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzguLjU2NzA2MTM4MjRj
ZGM5NDU4MjNlYWJjMGU2OGI5ZDlhOTg4Yjg0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBTZW5jaGEsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTYwNiwxMSArNjA2LDEwIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94KQogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxS
ZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0
UnVsZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7Ci0KKyAgICBhdXRvIGhvcml6b250YWxSZXBl
YXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVs
ZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2ZXJ0aWNhbFJlcGVhdDsKICAgICBpZiAoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSA9PSBpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkKLSAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVw
ZWF0OworICAgICAgICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigp
OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkp
OwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1v
dmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CkBAIC02ODgs
MjAgKzY4NywyMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29u
c3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgIHJldHVybiBDU1NSZWZs
ZWN0VmFsdWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7
CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3Np
dGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9u
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAobGF5
ZXItPmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgeworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5k
WE9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKTsKLSAgICAgICAgcG9zaXRpb25MaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLT5iYWNr
Z3JvdW5kWE9yaWdpbigpKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLmJhY2tncm91bmRYT3JpZ2luKCkpKTsKICAgICB9
Ci0gICAgcG9zaXRpb25MaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGxheWVyLT54UG9zaXRpb24oKSwgc3R5bGUpKTsKLSAgICBpZiAobGF5ZXItPmlzQmFj
a2dyb3VuZFlPcmlnaW5TZXQoKSkgeworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKGxheWVyLnhQb3NpdGlvbigpLCBzdHlsZSkpOworICAgIGlmIChsYXll
ci5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFja2dyb3Vu
ZFlPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpKSk7CiAgICAgfQotICAg
IHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChsYXllci0+eVBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uTGlzdDsK
KyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci55
UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTc2NSwzOSArNzY0LDM4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7Ci0gICAgbGlzdC5nZXQoKS5hcHBl
bmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVzLmhlaWdodCgpLCBzdHlsZSkp
OworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMu
d2lkdGgsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy5oZWlnaHQsIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJh
ZGl1cy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7Ci0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOworICAgIGlmIChyYWRpdXMud2lkdGggPT0gcmFk
aXVzLmhlaWdodCkKKyAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVl
KHJhZGl1cy53aWR0aCwgc3R5bGUpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3Jk
ZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkud2lkdGgoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQgPSBz
aG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7Ci0gICAg
Ym9vbCBzaG93SG9yaXpvbnRhbFRvcFJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoOworICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21SaWdo
dCA9IHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgpOworICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLndpZHRoKTsKIAotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCA9
IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tUmln
aHQgPSBzaG93VmVydGljYWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7
Ci0gICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRl
clRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21M
ZWZ0ID0gc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodDsKKyAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7Cisg
ICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8
IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCAhPSBzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRS
YWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJh
ZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOworICAgIGF1dG8gdG9wTGVmdFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcFJp
Z2h0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIGJvdHRvbVJpZ2h0UmFkaXVzID0gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsK
KyAgICBhdXRvIGJvdHRvbUxlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgYXV0byBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcExlZnRSYWRp
dXMtPml0ZW0oMCkpOwogICAgIGlmIChzaG93SG9yaXpvbnRhbFRvcFJpZ2h0KQogICAgICAgICBo
b3Jpem9udGFsUmFkaWktPmFwcGVuZCgqdG9wUmlnaHRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODA2
LDkgKzgwNCw5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9y
dGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKHNob3dIb3Jpem9u
dGFsQm90dG9tTGVmdCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKmJvdHRvbUxl
ZnRSYWRpdXMtPml0ZW0oMCkpOwogCi0gICAgbGlzdC5nZXQoKS5hcHBlbmQoaG9yaXpvbnRhbFJh
ZGlpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKGhvcml6b250
YWxSYWRpaSkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmVydGljYWxSYWRpaUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2ZXJ0aWNh
bFJhZGlpTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2
ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDEpKTsKICAgICBp
ZiAoc2hvd1ZlcnRpY2FsVG9wUmlnaHQpCiAgICAgICAgIHZlcnRpY2FsUmFkaWlMaXN0LT5hcHBl
bmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDEpKTsKQEAgLTgxNyw4ICs4MTUsOCBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93VmVydGljYWxCb3R0b21MZWZ0KQogICAgICAg
ICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDEpKTsK
IAotICAgIGlmICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpsaXN0LmdldCgpLml0ZW0oMCkpKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmVy
dGljYWxSYWRpaUxpc3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaWYgKCF2ZXJ0aWNhbFJhZGlp
TGlzdC0+ZXF1YWxzKGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QtPml0ZW0oMCkpKSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmVydGljYWxSYWRpaUxpc3QpKTsKIAogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtODg3LDcgKzg4NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNv
bXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZChtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKQEAgLTkzNCw3ICs5MzIsNyBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmls
dGVyT3BlcmF0aW9uLnR5cGUoKSkgewpAQCAtOTk2LDcgKzk5NCw3IEBAIFJlZjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFIKICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tTaXplcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNv
bGxlY3RvciwgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChz
cGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJh
Y2tTaXplc1tpXSwgc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25JbmRleCA9
IHRyYWNrU2l6ZXMuc2l6ZSgpOwogICAgIH0KQEAgLTExODcsMTMgKzExODUsMTMgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb24uaXNTcGFuKCkpIHsKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBv
c2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNwYW4pKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogI2VuZGlmCkBAIC0xMjA3LDE0ICsxMjA1LDE0IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uKQogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmlt
TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVHJh
bnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTI0Miw3ICsxMjQwLDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3Jv
bGxTbmFwQWxpZ24mIGFsaWcKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0
YSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghd2lsbENoYW5nZURhdGEgfHwg
IXdpbGxDaGFuZ2VEYXRhLT5udW1GZWF0dXJlcygpKQpAQCAtMTI1MywxMyArMTI1MSwxMyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxs
Q2hhbmdlRGF0YSogd2lsbENoYW5nZQogICAgICAgICBXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZVBy
b3BlcnR5UGFpciBmZWF0dXJlID0gd2lsbENoYW5nZURhdGEtPmZlYXR1cmVBdChpKTsKICAgICAg
ICAgc3dpdGNoIChmZWF0dXJlLmZpcnN0KSB7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6
OlNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6Q29udGVudHM6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudHMpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpQcm9wZXJ0eToKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmVhdHVyZS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGZlYXR1cmUuc2Vjb25kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWxs
Q2hhbmdlRGF0YTo6SW52YWxpZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ1NiwzOSArMTQ1NCwzOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVh
c3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAg
ICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVy
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfQogICAgIHJl
dHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlv
blZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkg
eworICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdG
dW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5j
dGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZh
bGlkOwogICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
KSB7CkBAIC0xNTExLDU5ICsxNTA5LDYwIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAg
ICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJP
ZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpz
dGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVz
cygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAg
ICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkg
PT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSA9PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVMaW5lYXIpOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRp
b25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9u
KGkpLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1
bmN0aW9uKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0
aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3
aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1h
dGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKnRyaWdnZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChz
Y3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwg
c3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6
Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdn
ZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAg
ICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9u
VHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRy
aWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblRyaWdnZXJWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCku
Z2V0KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJp
Z2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0K
KwogI2VuZGlmCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCkBAIC0xNzAwLDcgKzE2OTksNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4
dERlY29yYXRpb24pCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSkpOwogICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAKICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQpAQCAtMTc1OCw3ICsxNzU3LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0
RW1waGFzaXNQb3NpdGlvbgogICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb25VbmRlcikpKTsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpKSk7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcikpOwog
ICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIp
CkBAIC0xNzY3LDE2ICsxNzY2LDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
ZWZ0KSk7CiAgICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRp
b25SaWdodCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSaWdodCkpOwotCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25U
b0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24pCiB7CiAgICAg
YXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24p
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRmlyc3QpKTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgQWxsb3dFbmRI
YW5naW5nUHVuY3R1YXRpb24pCkBAIC0xNzg3LDcgKzE3ODUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5n
aW5nUHVuYwogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1
ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQpAQCAtMTgwMyw4ICsx
ODAxLDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxS
ZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXRZKTsKIAogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0Lmdl
dCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CisgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh4UmVwZWF0KSk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAKQEAgLTE4MjcsNDAgKzE4MjUsNDAgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3Qg
UmVuZGVyU3QKICAgICBpZiAoZmlsbFNpemUudHlwZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q292ZXIpOwogCi0gICAgaWYgKGZpbGxTaXplLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUu
d2lkdGgoKSwgc3R5bGUpOworICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodC5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS53aWR0aCwgc3R5bGUpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS5oZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUuaGVp
Z2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdHls
ZS5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAg
ICAgCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERh
dGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVy
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmlt
YWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1h
Z2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAg
ICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICB9Ci0gICAgaWYgKHN0eWxlLT5oYXNG
bG93RnJvbSgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewotICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG1hcCA9IHN0eWxlLT5jb3VudGVy
RGlyZWN0aXZlcygpOworICAgIGF1dG8qIG1hcCA9IHN0eWxlLmNvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCkBAIC0xODgzLDE0ICsxODgx
LDIxIEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlMaXN0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUNvdW50KCk7ICsr
aSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUtPmZvbnRD
YXNjYWRlKCkuZmFtaWx5QXQoaSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5
bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRGYW1pbHlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmIChzdHlsZS5mb250Q2FzY2Fk
ZSgpLmZhbWlseUNvdW50KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmFtaWx5KHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5QXQoMCkpOworICAgIHJldHVybiBmb250RmFtaWx5TGlz
dEZyb21TdHlsZShzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
bmVIZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIExlbmd0
aCBsZW5ndGggPSBzdHlsZS5saW5lSGVpZ2h0KCk7CkBAIC0xOTExLDIwMyArMTkxNiwyMDMgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q29tbW9uTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9Db21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgeworICAgIHN3aXRj
aCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpObzoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkp
IHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250
ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9Db250ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVh
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50UG9z
aXRpb246Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudFBvc2l0
aW9uOjpTdWJzY3JpcHQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVN1YikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246OlN1cGVyc2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBz
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6UGV0aXRlOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGV0
aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxs
UGV0aXRlOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VW5pY2FzZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmlj
YXNlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuaWNhc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OlRpdGxpbmc6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlVGl0bGluZ0NhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUxpbmluZ051bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVtcykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1i
ZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
c3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTcGFjaW5nKCkp
IHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3Bh
Y2luZygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9y
dGlvbmFsTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1bGFyTnVtYmVyczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVUYWJ1bGFyTnVtcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxG
cmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFs
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmlj
T3JkaW5hbCgpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlT3JkaW5hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNsYXNoZWRaZXJvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVI
aXN0b3JpY2FsRm9ybXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgeworICAg
IHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM3OCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVK
aXM3OCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzODM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSmlzODMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkw
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXMwNCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXMwNCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNpbXBsaWZpZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRy
YWRpdGlvbmFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZh
cmlhbnRFYXN0QXNpYW5XaWR0aCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5XaWR0aDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6OkZ1bGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVQcm9wb3J0aW9uYWxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdo
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWUxMDApOwogICAgIGNhc2UgRm9udFdlaWdodDIwMDoKQEAgLTIxMzgsMTkgKzIxNDMs
MTkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
eW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdHlsZSkpOwogICAgIGlmIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KQot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlaWdodCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVX
ZWlnaHQpKTsKICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygp
ICYgRm9udFN5bnRoZXNpc1NtYWxsQ2FwcykKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFs
bENhcHMpKTsKLSAgICByZXR1cm4gUmVmPENTU1ZhbHVlPihsaXN0LmdldCgpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxlbmd0aEdl
dHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxPYmplY3Q6
OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1wbGF0ZTxS
ZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1dGVkQ1NT
VmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgTGVuZ3RoIHVuem9vbXpl
ZExlbmd0aCA9IChzdHlsZS4qbGVuZ3RoR2V0dGVyKSgpOwogICAgIGlmICghaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgfHwgdW56b29temVkTGVuZ3RoLmlzRml4ZWQoKSkKQEAgLTIxNTksMTEgKzIx
NjQsOSBAQCBpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJn
aW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiB0ZW1wbGF0ZTxSZW5kZXJTdHls
ZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXI+Ci1pbmxpbmUgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHBhZGRpbmdPck1hcmdpbklzUmVuZGVyZXJEZXBlbmRl
bnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICEoc3R5bGUgJiYgKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0eWxlICYmIHJlbmRlcmVyLT5pc0Jv
eCgpICYmICEoc3R5bGUtPipsZW5ndGhHZXR0ZXIpKCkuaXNGaXhlZCgpOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQpAQCAtMjQ0
NSwxMSArMjQ0OCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9z
aXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoY29uc3QgU3R5bGVTZQogICAgIGF1dG8mIGNzc1Zh
bHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEucG9zaXRp
b25UeXBlKCkgPT0gTGVnYWN5UG9zaXRpb24pCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOwotICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRp
b24oKSkpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTGVnYWN5KSk7CisgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRpb24oKSkpOwogICAgIGlmIChkYXRhLnBvc2l0aW9u
KCkgPj0gSXRlbVBvc2l0aW9uQ2VudGVyICYmIGRhdGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0Fs
aWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCku
bGVuZ3RoKCkgPD0gMik7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8
PSAyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDU4LDIxICsyNDYxLDIxIEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbldpdGhPdmVyZmxvd0FsaWduCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSAhPSBDb250ZW50
RGlzdHJpYnV0aW9uRGVmYXVsdCkKLSAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOworICAgICAgICByZXN1bHQt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOwog
ICAgIGlmIChkYXRhLmRpc3RyaWJ1dGlvbigpID09IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0
IHx8IGRhdGEucG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwpIHsKICAgICAgICAg
Ym9vbCBncmlkRW5hYmxlZCA9IGZhbHNlOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgICAgIGdyaWRFbmFibGVkID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRhdGEu
cG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwgfHwgZ3JpZEVuYWJsZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRh
LnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKG5v
cm1hbEJlaGF2aW9yVmFsdWVJRCkpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKICAg
ICB9CiAgICAgaWYgKChkYXRhLnBvc2l0aW9uKCkgPj0gQ29udGVudFBvc2l0aW9uQ2VudGVyIHx8
IGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpICYmIGRh
dGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3Vs
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkp
OwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkubGVuZ3RoKCkgPiAwKTsKLSAgICBBU1NFUlQocmVz
dWx0LmdldCgpLmxlbmd0aCgpIDw9IDMpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+
bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8PSAzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk0LDEwICsyNDk3LDEwIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3BlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7
CiAgICAgYXV0byogc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSgqc3R5bGVk
RWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3RvbSwgb3du
ZWRTdHlsZSk7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQocHJvcGVydHlOYW1lKTsK
IH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VGV4dChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTI1NjAsODggKzI1NjMsNjkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
Q29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAg
ICAgICAgaWYgKCFsYXllcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllcnMtPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMtPmltYWdlKCktPmNzc1ZhbHVlKCk7Ci0K
KyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2UgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChsYXllcnMuaW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy5p
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KSB7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyckxheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3VyckxheWVyLT5pbWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy0+c2l6ZSgpLCAqc3R5bGUpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXll
cnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NTVmFsdWUobGF5
ZXJzLnNpemUoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3Vyckxh
eWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXll
ci0+c2l6ZSgpLCAqc3R5bGUpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxheWVy
cy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUobGF5ZXJzLnJlcGVhdFgoKSwgbGF5ZXJzLnJlcGVhdFkoKSk7CisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGN1cnJMYXllci0+cmVwZWF0WCgpLCBjdXJyTGF5ZXItPnJl
cGVhdFkoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU291cmNlVHlwZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBzdHlsZS0+bWFza0xheWVycygpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLT5tYXNrU291cmNl
VHlwZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+bWFza0xh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLm1hc2tTb3VyY2VUeXBlKCkp
OworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoY3VyckxheWVyLT5tYXNrU291cmNl
VHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUtPm1hc2tMYXll
cnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVy
cy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUobGF5ZXJzLT5jb21wb3NpdGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlm
ICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGxheWVycy5jb21wb3NpdGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5hdHRhY2htZW50KCkpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVudCgpKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKQEAgLTI2NDksNjUgKzI2MzMsNTkgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRPcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IEZpbGxMYXllciogbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBi
b29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwotICAgICAgICAgICAgaWYgKCFsYXllcnMt
Pm5leHQoKSkgewotICAgICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGxheWVy
cy0+Y2xpcCgpIDogbGF5ZXJzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBj
dXJyTGF5ZXItPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoYm94KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAo
KSA6IGxheWVycy5vcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShp
c0NsaXAgPyBjdXJyTGF5ZXItPmNsaXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0g
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVy
dHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3VyckxheWVyLCAqc3R5
bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+eFBvc2l0aW9uKCkpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy54UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICAgICAgY29uc3QgRmlsbExh
eWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+eVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAg
ICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRpb24oKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbGxhcHNl
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU2VwYXJhdGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygp
LCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZzoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpOwpAQCAtMjgyMiw3ICsyODAwLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwotICAgICAgICAg
ICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBh
dXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKICAgICAgICAgICAgIGlmIChjdXJzb3Jz
ICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKQEAgLTI4ODEsNTkgKzI4NTks
NTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTRm9u
dFZhbHVlPiBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZShzdHlsZSk7CisgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29tcHV0ZWRGb250LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0
eWxlKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250OwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5
bGUpOwotICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZhbWlseSwgcmV0
dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5PVEU6IEdl
Y2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgQ1NTUHJpbWl0aXZl
VmFsdWUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0LT5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+aXRlbSgwKTsKLSAg
ICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+ZmFtaWx5ID0gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21T
dHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CiAgICAgICAg
ICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM6CiAgICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNp
c0Zyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVT
ZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwog
ICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzOiB7CiAgICAgICAg
ICAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzID0gc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7CiAgICAgICAgICAgICBp
ZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiB2
YXJpYXRpb25TZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udFZh
cmlhdGlvblZhbHVlOjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9GbG93OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgQVNTRVJUKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJv
dygpIHx8IHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSkKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVJvdykpOwpAQCAtMjk0Myw3ICsyOTE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNw
ZWNzIG1lbnRpb24gdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNl
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI5Nzks
MTMgKzI5NTEsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZENvbHVtblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRSb3dTaG9ydGhhbmQo
KSk7Ci0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgogICAgICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5HYXAo
KSwgKnN0eWxlKTsKQEAgLTMxMjAsMTAgKzMwOTAsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueCgpLCAqc3R5bGUpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmpl
Y3RQb3NpdGlvbigpLnkoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CkBAIC0zMjI0LDMxICszMTk0LDMwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6CisgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogewogICAgICAgICAgICAgLy8g
SWYgQ1NTM19URVhUIGlzIGRpc2FibGVkIG9yIHRleHQtaW5kZW50IGhhcyBvbmx5IG9uZSB2YWx1
ZSg8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiksCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZS4KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dGV4dEluZGVudCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJ
bmRlbnQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgKnN0eWxlKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgLy8gSWYgQ1NTM19URVhUIGlzIGVuYWJs
ZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVhY2gtbGluZSBvciAtd2Via2l0LWhhbmdp
bmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1
ZUxpc3QuCiAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5n
aW5nKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHRleHRJbmRlbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLT50ZXh0SW5kZW50TGluZSgpID09IFRleHRJbmRlbnRFYWNoTGluZSkK
ICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVXZWJraXRFYWNoTGluZSkpOwogICAgICAgICAgICAgICAgIGlm
IChzdHlsZS0+dGV4dEluZGVudFR5cGUoKSA9PSBUZXh0SW5kZW50SGFuZ2luZykKICAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVXZWJraXRIYW5naW5nKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgICAgICB9CiAj
ZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB0ZXh0SW5kZW50OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUodGV4dEluZGVudCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3c6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRl
eHRTaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKQEAgLTMzMjEsOCArMzI5MCw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+d2lkdGgoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2U6Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0V2lsbENoYW5nZVByb3BlcnR5VmFsdWUoc3R5bGUtPndpbGxDaGFuZ2UoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiB3aWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShz
dHlsZS0+d2lsbENoYW5nZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPndvcmRC
cmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgpAQCAtMzM5NCw5
ICszMzYyLDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfQogI2VuZGlmCiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKLSAgICAgICAgICAgIHJldHVy
biBnZXREZWxheVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJu
IGRlbGF5VmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25EaXJlY3Rpb246IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAg
ICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAg
ICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0LT5zaXplKCk7ICsraSkgewpAQCAtMzQxNywxMiArMzM4NSwxMiBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9ybWFsKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXREdXJhdGlvblZhbHVl
KHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGR1cmF0aW9uVmFsdWUo
c3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25G
aWxsTW9kZTogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYg
KHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsg
KytpKSB7CkBAIC0zNDQzLDEwICszNDExLDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25l
KSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVy
YXRpb25Db3VudDogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNv
bnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAg
aWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUo
KTsgKytpKSB7CkBAIC0zNDU4LDIwICszNDI2LDIwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxJ
dGVyYXRpb25Db3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgICAg
ICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZTogewotICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQg
PSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHQtPmFuaW1hdGlv
bihpKS5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0
OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZTogewotICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5p
bWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CkBAIC0zNDgzLDEzICszNDUxLDEzIEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlz
dDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAj
aWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25UcmlnZ2VyOgotICAgICAgICAgICAgcmV0dXJuIGdldEFuaW1hdGlv
blRyaWdnZXJWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpLCAqc3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIGFuaW1hdGlvblRyaWdnZXJWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpLCAqc3R5bGUp
OwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+YXBwZWFyYW5j
ZSgpKTsKQEAgLTM1MzEsOCArMzQ5OSw4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgICAgICAvLyBOb3QgYSByZWFsIHN0eWxlIHByb3BlcnR5IC0tIHVzZWQgYnkgdGhlIGVkaXRp
bmcgZW5naW5lIC0tIHNvIGhhcyBubyBjb21wdXRlZCB2YWx1ZS4KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SW5pdGlhbExldHRlcjogewotICAgICAg
ICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBkcm9wID0gIXN0eWxlLT5pbml0aWFsTGV0dGVy
RHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1h
bCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJEcm9wKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAgIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2l6ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgYXV0byBkcm9wID0gIXN0eWxlLT5pbml0
aWFsTGV0dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0
ZXJEcm9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1
dG8gc2l6ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQ
YWlyOjpjcmVhdGUoV1RGTW92ZShkcm9wKSwgV1RGTW92ZShzaXplKSkpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKQEAgLTM1
NTIsNyArMzUyMCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsK
ICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJzcGVj
dGl2ZSgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmln
aW46IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveDsKICAgICAgICAgICAgICAgICBp
ZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQpAQCAtMzU2Niw3ICszNTM0LDcgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksICpzdHls
ZSkpOwogCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRSdGxPcmRlcmluZzoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1
YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOwpAQCAtMzU4NSwxMyArMzU1MywxMyBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJT
ZWxlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
OgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgKnN0
eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgot
ICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCAqc3R5
bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAgICAg
ICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9w
TGVmdFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0Nv
cm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksICpzdHlsZSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAgICAgICAgIHJldHVy
biBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShz
dHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNsaXA6IHsKICAgICAgICAgICAgIGlmICghc3R5bGUtPmhhc0NsaXAoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUF1dG8pOwpAQCAtMzYwNyw3ICszNTc1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKICAgICAgICAgICAgIHJldHVybiBj
b21wdXRlZFRyYW5zZm9ybShyZW5kZXJlciwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgIGlmIChyZW5kZXJlcikgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYm94Owog
ICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpCkBAIC0zNjIzLDQy
ICszNTkxLDQxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJv
cGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgaWYg
KHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpbloo
KSwgKnN0eWxlKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlUcmFuc2Zvcm1TdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoKHN0eWxlLT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5
bGUzRFByZXNlcnZlM0QpID8gQ1NTVmFsdWVQcmVzZXJ2ZTNkIDogQ1NTVmFsdWVGbGF0KTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKLSAgICAgICAgICAgIHJldHVy
biBnZXREZWxheVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVy
biBkZWxheVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXREdXJhdGlvblZh
bHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZh
bHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
aXRpb25Qcm9wZXJ0eToKLSAgICAgICAgICAgIHJldHVybiBnZXRUcmFuc2l0aW9uUHJvcGVydHlW
YWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlv
blByb3BlcnR5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldFRp
bWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0
dXJuIHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjogewotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9u
TGlzdCogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKTsKLSAgICAgICAgICAgIGlmIChh
bmltTGlzdCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRp
b25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpKSB7CisgICAgICAg
ICAgICAgICAgYXV0byB0cmFuc2l0aW9uc0xpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmlt
TGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24gPSBhbmltTGlzdC0+YW5p
bWF0aW9uKGkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIGFuaW1h
dGlvbiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmltYXRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmlt
YXRpb24uZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGFuaW1hdGlv
bi50aW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltYXRpb24udGltaW5nRnVuY3Rpb24o
KSkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1hdGlvbi5kZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKLSAg
ICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQobGlzdC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQoV1RG
TW92ZShsaXN0KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0
cmFuc2l0aW9uc0xpc3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUodHJhbnNpdGlv
bnNMaXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAg
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAg
ICAgICAgICAgIC8vIHRyYW5zaXRpb24tcHJvcGVydHkgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UykpOwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUo
QW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFs
VGltaW5nRnVuY3Rpb24oKSkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50
ZXJFdmVudHM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLT5wb2ludGVyRXZlbnRzKCkpOwpAQCAtMzY3OSwzMyArMzY0NiwyOSBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRh
aW46CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGluZUJveENvbnRhaW5WYWx1ZShzdHlsZS0+
bGluZUJveENvbnRhaW4oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gYWx0VGV4dFRvQ1NTVmFsdWUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJu
IGFsdFRleHRUb0NTU1ZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb250
ZW50OgotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRUb0NTU1ZhbHVlKHN0eWxlKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZW50VG9DU1NWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q291bnRlckluY3JlbWVudDoKLSAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9D
U1NWYWx1ZShzdHlsZSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRv
Q1NTVmFsdWUoKnN0eWxlLCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
dW50ZXJSZXNldDoKLSAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1ZShzdHlsZSwg
cHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoKnN0eWxl
LCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOiB7
Ci0gICAgICAgICAgICBDbGlwUGF0aE9wZXJhdGlvbiogb3BlcmF0aW9uID0gc3R5bGUtPmNsaXBQ
YXRoKCk7CisgICAgICAgICAgICBhdXRvKiBvcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBhdGgoKTsK
ICAgICAgICAgICAgIGlmICghb3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAg
ICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgYXV0byYgcmVmZXJlbmNlT3BlcmF0aW9uID0gZG93bmNhc3Q8UmVm
ZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4o
Km9wZXJhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoZG93bmNhc3Q8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnVy
bCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAo
aXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVy
YXRpb24+KCpvcGVyYXRpb24pOworICAgICAgICAgICAgICAgIGF1dG8mIHNoYXBlT3BlcmF0aW9u
ID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNTaGFwZSgqc3R5bGUsIHNoYXBlT3Bl
cmF0aW9uLmJhc2ljU2hhcGUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzaGFwZU9wZXJhdGlv
bi5yZWZlcmVuY2VCb3goKSAhPSBCb3hNaXNzaW5nKQogICAgICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5j
ZUJveCgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhP
cGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYm94
T3BlcmF0aW9uID0gZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwot
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94
T3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIGlmIChpczxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9w
ZXJhdGlvbikpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikucmVmZXJl
bmNlQm94KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9
CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rmxvd0ludG86CkBAIC0zNzM4LDIwICszNzAxLDE4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pc29s
YXRpb24oKSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVu
ZE1vZGU6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gc3R5bGUtPmJh
Y2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMtPmJsZW5k
TW9kZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+YmFja2dy
b3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLmJsZW5kTW9kZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3Vy
ckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YmxlbmRNb2Rl
KCkpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZDoKICAgICAgICAgICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjogewotICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIERvTm90VXBk
YXRlTGF5b3V0KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CiAgICAgICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHZhbHVlLCBwcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5LCBEb05vdFVwZGF0ZUxheW91dCkpKQpAQCAtMzc2OCw3ICszNzI5LDcgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgog
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2Uoc3R5bGUtPmJvcmRlcklt
YWdlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgICAgICAg
ICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKCpzdHlsZSk7CisgICAgICAg
ICAgICByZXR1cm4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoKnN0eWxlKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJSaWdodFNob3J0aGFuZCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgpAQCAtMzk5OCw3ICszOTU5
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKIAogU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUo
cHJvcGVydHlJRCk7CisgICAgYXV0byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dHlJRCk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8v
IEZJWE1FOiBTaG91bGQgdGhpcyBiZSBudWxsIGluc3RlYWQsIGFzIGl0IGlzIGluIFN0eWxlUHJv
cGVydGllczo6Z2V0UHJvcGVydHlWYWx1ZT8KICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsK
QEAgLTQwNjMsMjIgKzQwMjQsMjEgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzKCkKIAogUmVmUHRyPENTU1ZhbHVlTGlz
dD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhh
bmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsK
LSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgICAg
ICBsaXN0LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotICAgIHJldHVy
biBsaXN0OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytp
KQorICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCiAgICAgLy8g
QXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgdXN1YWwgb3JkZXIgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0LgotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBwcm9wZXJ0eVZh
bHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbMV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGJv
dHRvbVZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzJdLCBEb05v
dFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBwcm9wZXJ0
eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAg
ICBhdXRvIHRvcFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzBd
LCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0byByaWdodFZhbHVlID0gcHJvcGVydHlWYWx1
ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0
byBib3R0b21WYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSwg
RG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gbGVmdFZhbHVlID0gcHJvcGVydHlWYWx1ZShz
aG9ydGhhbmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CiAKICAgICAvLyBB
bGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwg
IXJpZ2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC00MDk2LDE3ICs0
MDU2LDE1IEBAIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6Omdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhCiAgICAgaWYgKHNob3dMZWZ0KQogICAg
ICAgICBsaXN0LT5hcHBlbmQobGVmdFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgcmV0
dXJuIGxpc3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3Jp
ZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0g
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hT
ZXBhcmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVl
KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICAgICAg
bGlzdC0+YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4g
bGlzdDsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVk
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkK
KyAgICAgICAgbGlzdC0+YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTQxMTQsOCArNDA3Miw3IEBAIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0
KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNl
dFtpXSk7Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm9w
ZXJ0eVZhbHVlKHNldFtpXSkpCiAgICAgICAgICAgICBsaXN0LmFwcGVuZChDU1NQcm9wZXJ0eShz
ZXRbaV0sIFdURk1vdmUodmFsdWUpLCBmYWxzZSkpOwogICAgIH0KICAgICByZXR1cm4gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGxpc3QuZGF0YSgpLCBsaXN0LnNpemUoKSk7CkBAIC00
MTM4LDcgKzQwOTUsNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjbwogICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXBy
b3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIGF1dG8gdmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogICAgIGlmICghdmFsdWUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB2YWx1ZS0+Y3JlYXRlRGVwcmVjYXRlZENT
U09NV3JhcHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCmluZGV4IGM4YjYxNTUwYjZiYTdlNjJjM2I3MzNkNDVhYTA4NTQxYTA4NTUwOGEuLjNj
N2MyOTk1NjBhODFmMTdhZDY4N2E1YzNjOGIyOTYzOTM0NzlmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhY2hlZEdlbmVyYXRlZEltYWdl
KENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmLCBGbG9hdFNpemUsIEdlbmVyYXRlZEltYWdlJik7Ci0g
ICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5l
cmF0ZWRJbWFnZSY+KG1faW1hZ2UuZ2V0KCkpOyB9CisgICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIHZvaWQgcHVudEV2aWN0aW9uVGltZXIo
KSB7IG1fZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAwNjQyYjg3OGNlOTM1MjNjZmUwYWNkOTYx
ZTkxNzU0YWViZTBlYTBhLi4wOWU3YWQzMTA2NTFkMWEwODdmMmRiN2QzZjg0NGI3MzE4MzMyNTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMTEsMTIgKzIx
MSwxMCBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiB7IAogICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KICAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUo
KSA9PSBtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpLnNpemUoKSk7Ci0gICAgUmVmUHRyPENT
U0tleWZyYW1lUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwor
ICAgIGF1dG8mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwogICAgIGlm
ICghcnVsZSkKLSAgICAgICAgcnVsZSA9IGFkb3B0UmVmKG5ldyBDU1NLZXlmcmFtZVJ1bGUoY29u
c3RfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZSY+KG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKClb
aW5kZXhdLmdldCgpKSwgY29uc3RfY2FzdDxDU1NLZXlmcmFtZXNSdWxlKj4odGhpcykpKTsKLQor
ICAgICAgICBydWxlID0gYWRvcHRSZWYoKm5ldyBDU1NLZXlmcmFtZVJ1bGUobV9rZXlmcmFtZXNS
dWxlLT5rZXlmcmFtZXMoKVtpbmRleF0sIGNvbnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRo
aXMpKSk7CiAgICAgcmV0dXJuIHJ1bGUuZ2V0KCk7IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAyMGM1NmU2NmJlNGY1M2I3YWU2ZGE3ZTIzNjU5OTQ4
OWZlZTZhMmNmLi40ODJmZDNkYTgyY2EyYzYwMzMxMjNhNjY0ZWQxMWI0OTI4MzNkMzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQyNyw3ICs0MjcsNyBA
QCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNp
emUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdAogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBD
U1NfUEFJUjsKICAgICBtX2hhc0NhY2hlZENTU1RleHQgPSBmYWxzZTsKLSAgICBtX3ZhbHVlLnBh
aXIgPSAmUGFpcjo6Y3JlYXRlKGNyZWF0ZShsZW5ndGhTaXplLndpZHRoKCksIHN0eWxlKSwgY3Jl
YXRlKGxlbmd0aFNpemUuaGVpZ2h0KCksIHN0eWxlKSkubGVha1JlZigpOworICAgIG1fdmFsdWUu
cGFpciA9ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgsIHN0eWxlKSwgY3Jl
YXRlKGxlbmd0aFNpemUuaGVpZ2h0LCBzdHlsZSkpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQ
cmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8Q291bnRlcj4mJiBjb3VudGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5oCmluZGV4IDgxMGI5YTQ1NGQ2NTc2ZThhZTc4ZTRmNWViY2ZmMGIwMTJiNzNm
MjAuLjcxZjM1NTA1NTZjNjg1ZjhmNWYwNTE1ZGEwMDMyYTg5OTE2N2E3MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVSdWxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIENTU1N0eWxlRGVjbGFyYXRpb24mIHN0eWxlKCk7CiAKICAgICAvLyBGSVhNRTogTm90
IENTU09NLiBSZW1vdmUuCi0gICAgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PFN0eWxlUnVsZSY+KG1fc3R5bGVSdWxlLmdldCgpKTsgfQorICAgIFN0eWxl
UnVsZSYgc3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKICAgICBDU1NTdHlsZVJ1bGUoU3R5bGVSdWxlJiwgQ1NTU3R5bGVTaGVldCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDJhMjdkZGIwMDk0ZTQ4NmQwZTA0
NDU2ZmI1MzVlYWQyZTU2ODM4ZDYuLjg1YzQ0YTJmM2E5YjQ5ZmQxMTZmYWVlMWMzOTYyYTdhZDNm
ZGUyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTE4OCwxMiArMTg4
LDExIEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjCiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVy
dFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0aFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkgewot
ICAgICAgICBzaXplLnNldFdpZHRoKHBhaXItPmZpcnN0KCktPmNvbnZlcnRUb0xlbmd0aDxBbnlD
b252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwotICAgICAgICBzaXplLnNldEhlaWdodChwYWly
LT5zZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRh
KSk7CisgICAgICAgIHNpemUud2lkdGggPSBwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8
QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBzaXplLmhlaWdodCA9IHBh
aXItPnNlY29uZCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRh
dGEpOwogICAgIH0gZWxzZQotICAgICAgICBzaXplLnNldFdpZHRoKHByaW1pdGl2ZVZhbHVlLmNv
bnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwotCi0gICAgcmV0
dXJuICFzaXplLndpZHRoKCkuaXNVbmRlZmluZWQoKSAmJiAhc2l6ZS5oZWlnaHQoKS5pc1VuZGVm
aW5lZCgpOworICAgICAgICBzaXplLndpZHRoID0gcHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVu
Z3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICByZXR1cm4gIXNpemUud2lk
dGguaXNVbmRlZmluZWQoKSAmJiAhc2l6ZS5oZWlnaHQuaXNVbmRlZmluZWQoKTsKIH0KIAogdm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZp
bGxMYXllciYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IGM5ZmI3MzM1OTg1YjhiYzdiZTY4NjdiOGY3MWNmMjEzMTYyNTZhM2EuLmMyODlm
Nzg0MGFhNjhjOTgxN2ViZjQxZDU1Mjc2NmZhMjE3NjE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtMjU4LDEzICsyNTgsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNl
dEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykKIAogU3RyaW5n
IEZvbnRGYWNlOjpmYW1pbHkoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2Um
PihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmct
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbV9iYWNraW5nLT5mYW1pbGllcygp
LT5jc3NUZXh0KCk7CiB9CiAKIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogewotICAg
IGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBzd2l0
Y2ggKG1fYmFja2luZy0+dHJhaXRzTWFzaygpICYgRm9udFN0eWxlTWFzaykgewogICAgIGNhc2Ug
Rm9udFN0eWxlTm9ybWFsTWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgU3RyaW5nIEZv
bnRGYWNlOjpzdHlsZSgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6d2VpZ2h0KCkgY29uc3QK
IHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAg
ICAgc3dpdGNoIChtX2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRXZWlnaHRNYXNrKSB7CiAg
ICAgY2FzZSBGb250V2VpZ2h0MTAwTWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygiMTAwIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC0zMDksNyArMzA5LDcgQEAgU3RyaW5n
IEZvbnRGYWNlOjpzdHJldGNoKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFu
Z2UoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0
KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+cmFuZ2VzKCkuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJVKzAtMTBGRkZGIik7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpAQCAtMzIw
LDEzICszMjAsMTMgQEAgU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBjb25zdAogCiBT
dHJpbmcgRm9udEZhY2U6OnZhcmlhbnQoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9u
dEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2Jh
Y2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gY29tcHV0ZUZvbnRWYXJp
YW50KG1fYmFja2luZy0+dmFyaWFudFNldHRpbmdzKCkpLT5jc3NUZXh0KCk7CiB9CiAKIFN0cmlu
ZyBGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENT
U0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAg
bV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZl
YXR1cmVTZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9y
bWFsIik7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5n
dGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAK
aW5kZXggYjIxZGQ1ZDU2MzczOWZmYmRkMWQ4OWQ4MWU1ZTQ0MzBhYWU2ZTE1My4uNjhmZmZkZWI5
ZTQyYzcxNjIzZDg3YTU3NWNhMGRjNWM3MGFhZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlv
bnMuaCIKIAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkxheW91dFNpemUuaCIK
ICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYg
KzU5LDExIEBAIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogICAgIHJldHVybiAwOwogfQogCitMYXlvdXRTaXpl
IHNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0
U2l6ZSYgbWF4aW11bVZhbHVlKQoreworICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0
aC53aWR0aCwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGguaGVp
Z2h0LCBtYXhpbXVtVmFsdWUuaGVpZ2h0KCkpIH07Cit9CisKIC8vIEZJWE1FOiB3aGVuIHN1YnBp
eGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgo
KSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogewpAQCAt
MTEzLDcgKzExOSw3IEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBs
ZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSkKIAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0
aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hT
aXplKQogewotICAgIHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhT
aXplLndpZHRoKCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3Ro
U2l6ZS5oZWlnaHQoKSwgYm94U2l6ZS5oZWlnaHQoKSkpOworICAgIHJldHVybiB7IGZsb2F0VmFs
dWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53aWR0aCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1
ZUZvckxlbmd0aChsZW5ndGhTaXplLmhlaWdodCwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xl
bmd0aEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCmlu
ZGV4IDlkMjI0ZDkxMTI3ZTVmODNhYWIxMDQ4OTJkZTY4MDQ2NDExOGRkNmEuLjFjNGUwNTBkYTYw
NGE0M2E1NjgzYWFmZDJlZWQ0MzZhNDUzMTM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAxMSBS
aWsgQ2FiYW5pZXIgKGNhYmFuaWVyQGFkb2JlLmNvbSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC0yOSw4ICsyOSw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0
U2l6ZTsKLWNsYXNzIExheW91dFVuaXQ7CitjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgUmVuZGVy
VmlldzsKKwogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBMZW5ndGhTaXplOwogCkBAIC0zOCw2ICsz
OSw3IEBAIGludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUpOwogaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYs
IExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIFdFQkNPUkVfRVhQ
T1JUIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBt
YXhpbXVtVmFsdWUpOworTGF5b3V0U2l6ZSBzaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhT
aXplJiwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKTsKIGZsb2F0IGZsb2F0VmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogV0VCQ09S
RV9FWFBPUlQgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBmbG9hdCBt
YXhpbXVtVmFsdWUpOwogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVu
Z3RoU2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA1MzgzNDI3ZDkyYWJm
ZjE5N2U3ZmFkZDY4NzQ3NzdkN2E4NTQ5ZDVjLi5kNzY5YTVhNTg2YzgxMTI3MTg3ZTc1NDQzMmM5
ZjJjNWY4Yzc3MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtMzEsMzQgKzMy
LDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gcGFpbnRP
cmRlcihQYWludE9yZGVyIHBhaW50T3JkZXIpCiB7Ci0gICAgUmVmPENTU1ZhbHVlTGlzdD4gcGFp
bnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAg
UmVmPENTU1ZhbHVlPiBmaWxsID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVGaWxsKTsKLSAgICBSZWY8Q1NTVmFsdWU+IHN0cm9rZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKTsKLSAgICBSZWY8Q1NTVmFsdWU+
IG1hcmtlcnMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1h
cmtlcnMpOworICAgIGlmIChwYWludE9yZGVyID09IFBhaW50T3JkZXJOb3JtYWwpCisgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1h
bCk7CiAKKyAgICBhdXRvIHBhaW50T3JkZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwogICAgIHN3aXRjaCAocGFpbnRPcmRlcikgewogICAgIGNhc2UgUGFpbnRP
cmRlck5vcm1hbDoKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlckZpbGw6Ci0gICAgICAgIHBhaW50T3Jk
ZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShmaWxsKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVGaWxsKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlckZpbGxNYXJrZXJzOgotICAgICAg
ICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUoZmlsbCkpOwotICAgICAgICBwYWludE9y
ZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRmls
bCkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBhaW50T3JkZXJTdHJva2U6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RG
TW92ZShzdHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFBhaW50T3JkZXJTdHJva2VNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVy
TGlzdC0+YXBwZW5kKFdURk1vdmUoc3Ryb2tlKSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5h
cHBlbmQoV1RGTW92ZShtYXJrZXJzKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKKyAg
ICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWlu
dE9yZGVyTWFya2VyczoKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKG1h
cmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQYWludE9yZGVyTWFya2Vyc1N0cm9rZToKLSAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVu
ZChXVEZNb3ZlKHN0cm9rZSkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOworICAgICAg
ICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlU3Ryb2tlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4g
V1RGTW92ZShwYWludE9yZGVyTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgKaW5kZXggZTRjNzk0M2Y4MDgyNTVlMjkxNmE2NzFlNGY1OTUzYzdkYWZkMjE3
MS4uZDQ5NTBhMDY5YzlhM2ZmMzBlYTYxZjVkMThiNGExZmM5YWMxYmM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjk0LDIxICsyOTQsMTkgQEAg
aW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0
aChDU1NUb0xlbmd0aENvbnZlcnNpb24KIAogaW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2
ZVZhbHVlLnBhaXJWYWx1ZSgpOworICAgIGF1dG8qIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmly
c3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0
aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOworICAgICAgICByZXR1cm4geyB7IDAsIEZp
eGVkIH0sIHsgMCwgRml4ZWQgfSB9OwogCiAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBj
b252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCk7Ci0gICAgTGVuZ3RoIHJhZGl1c1dpZHRoID0gY29udmVydFRvUmFkaXVzTGVuZ3Ro
KGNvbnZlcnNpb25EYXRhLCAqcGFpci0+Zmlyc3QoKSk7Ci0gICAgTGVuZ3RoIHJhZGl1c0hlaWdo
dCA9IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKnBhaXItPnNlY29uZCgp
KTsKKyAgICBMZW5ndGhTaXplIHJhZGl1cyB7IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJz
aW9uRGF0YSwgKnBhaXItPmZpcnN0KCkpLCBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lv
bkRhdGEsICpwYWlyLT5zZWNvbmQoKSkgfTsKIAotICAgIEFTU0VSVCghcmFkaXVzV2lkdGguaXNO
ZWdhdGl2ZSgpKTsKLSAgICBBU1NFUlQoIXJhZGl1c0hlaWdodC5pc05lZ2F0aXZlKCkpOwotICAg
IGlmIChyYWRpdXNXaWR0aC5pc1plcm8oKSB8fCByYWRpdXNIZWlnaHQuaXNaZXJvKCkpCi0gICAg
ICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkp
OworICAgIEFTU0VSVCghcmFkaXVzLndpZHRoLmlzTmVnYXRpdmUoKSk7CisgICAgQVNTRVJUKCFy
YWRpdXMuaGVpZ2h0LmlzTmVnYXRpdmUoKSk7CisgICAgaWYgKHJhZGl1cy53aWR0aC5pc1plcm8o
KSB8fCByYWRpdXMuaGVpZ2h0LmlzWmVybygpKQorICAgICAgICByZXR1cm4geyB7IDAsIEZpeGVk
IH0sIHsgMCwgRml4ZWQgfSB9OwogCi0gICAgcmV0dXJuIExlbmd0aFNpemUocmFkaXVzV2lkdGgs
IHJhZGl1c0hlaWdodCk7CisgICAgcmV0dXJuIHJhZGl1czsKIH0KIAogaW5saW5lIExlbmd0aCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCkKQEAgLTc2Niw3ICs3NjQsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBl
VmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNv
bHZlcgogICAgIH0KIAogICAgIGlmIChpc0ltYWdlU2hhcGUodmFsdWUpKQotICAgICAgICByZXR1
cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHN0eWxlUmVzb2x2ZXIuc3R5bGVJbWFnZSh2YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHN0eWxlUmVzb2x2ZXIuc3R5bGVJbWFn
ZSh2YWx1ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gc2hh
cGU7CiAgICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBCb3hNaXNzaW5nOwpAQCAtNzg2LDcg
Kzc4NCw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyCiAgICAgfQogCiAgICAgaWYgKHNoYXBl
KQotICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoc2hhcGUpLCByZWZl
cmVuY2VCb3gpOworICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHNoYXBlLnJlbGVh
c2VOb25OdWxsKCksIHJlZmVyZW5jZUJveCk7CiAKICAgICBpZiAocmVmZXJlbmNlQm94ICE9IEJv
eE1pc3NpbmcpCiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUocmVmZXJlbmNlQm94
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAwZmZkOWQ0OWJh
YTY5MzczNGM2MWQ1YTU5N2ZmYTQwNTc1ZjcyMjdlLi5jNGZiZWY5YWQxNTUyNzZlMDE4MTVhNjA0
ZjY4MjYwNTZmMjIzZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CkBAIC01OCw2ICs1OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsIyNwcm9wZXJ0eShTdHlsZVJlc29sdmVyJik7IFwKICAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlIyNwcm9wZXJ0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoVCYmIHZhbHVl
KSB7IHJldHVybiBzdGQ6OmZvcndhcmQ8VD4odmFsdWUpOyB9CitpbmxpbmUgTGVuZ3RoIGZvcndh
cmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5ndGgmIHZhbHVlKSB7IHJldHVybiBMZW5ndGggeyB2
YWx1ZSB9OyB9CitpbmxpbmUgTGVuZ3RoU2l6ZSBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3Qg
TGVuZ3RoU2l6ZSYgdmFsdWUpIHsgcmV0dXJuIExlbmd0aFNpemUgeyB2YWx1ZSB9OyB9Citpbmxp
bmUgTGVuZ3RoQm94IGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5ndGhCb3gmIHZhbHVl
KSB7IHJldHVybiBMZW5ndGhCb3ggeyB2YWx1ZSB9OyB9CisKIC8vIE5vdGUgdGhhdCB3ZSBhc3N1
bWUgdGhlIENTUyBwYXJzZXIgb25seSBhbGxvd3MgdmFsaWQgQ1NTVmFsdWUgdHlwZXMuCiBjbGFz
cyBTdHlsZUJ1aWxkZXJDdXN0b20gewogcHVibGljOgpAQCAtMzAxLDYgKzMwNiw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvCiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisK
IHN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEpCiB7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlID8gcHJpbWl0aXZlVmFsdWUt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpIDogTGVuZ3RoKFVuZGVm
aW5lZCk7CkBAIC0zMTgsNyArMzI0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVzb2x2ZXImIHMKICAgICBp
ZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGFzaGJvYXJkUmVnaW9uKiBmaXJz
dCA9IHJlZ2lvbjsKKyAgICBhdXRvKiBmaXJzdCA9IHJlZ2lvbjsKICAgICB3aGlsZSAocmVnaW9u
KSB7CiAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT50b3Ao
KSwgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5
V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7CiAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZlcnRU
b0ludExlbmd0aChyZWdpb24tPnJpZ2h0KCksIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwpAQCAtMzM1
LDE3ICszNDEsMjAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
V2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVzb2x2ZXImIHMKICAgICAgICAgICAgIGxlZnQg
PSBMZW5ndGgoKTsKIAogICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9h
cmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6
Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdU
Rk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0KSwgcmVnaW9uICE9IGZpcnN0KTsKICAgICAgICAg
ZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rh
bmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9
PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlLCBy
ZWdpb24tPm1fbGFiZWwsIFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90
dG9tKSwgV1RGTW92ZShsZWZ0KSwgcmVnaW9uICE9IGZpcnN0KTsKKwogICAgICAgICByZWdpb24g
PSByZWdpb24tPm1fbmV4dC5nZXQoKTsKICAgICB9CiAKICAgICBzdHlsZVJlc29sdmVyLmRvY3Vt
ZW50KCkuc2V0SGFzQW5ub3RhdGVkUmVnaW9ucyh0cnVlKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikK
KwogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRJbWFnZVJlc29s
dXRpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldEltYWdlUmVzb2x1dGlvblNvdXJjZShzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpKTsKQEAgLTM3OCwxOCArMzg3LDIzIEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbihT
dHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJbWFn
ZVJlc29sdXRpb25TbmFwKHNuYXApOwogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW1h
Z2VSZXNvbHV0aW9uKHJlc29sdXRpb24pOwogfQorCiAjZW5kaWYgLy8gRU5BQkxFKENTU19JTUFH
RV9SRVNPTFVUSU9OKQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdFNpemUoU3R5bGVSZXNvbHZlciYpIHsgfQorCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbFNpemUoU3R5bGVSZXNvbHZlciYpIHsgfQorCiBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnJlc2V0UGFnZVNpemVUeXBlKCk7CisKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUp
KQorICAgICAgICByZXR1cm47CisKICAgICBMZW5ndGggd2lkdGg7CiAgICAgTGVuZ3RoIGhlaWdo
dDsKICAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87Ci0gICAg
aWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CiAgICAgc3dpdGNo
ICh2YWx1ZUxpc3QubGVuZ3RoKCkpIHsKQEAgLTQ1MywxMiArNDY3LDEyIEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQ1NTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBlKTsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOworICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemUoeyBXVEZNb3ZlKHdpZHRoKSwgV1RGTW92
ZShoZWlnaHQpIH0pOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdFRleHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQoc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT50ZXh0SW5kZW50KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4
dEluZGVudChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJbmRlbnQo
KSB9KTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0VGV4dEluZGVudExpbmUoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5kZW50
TGluZSgpKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRUeXBlKHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dEluZGVudFR5cGUoKSk7CkBAIC00OTYsNyAr
NTEwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dElu
ZGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmUKICAgICBpZiAobGVuZ3RoT3JQZXJjZW50
YWdlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KGxlbmd0aE9yUGVyY2VudGFnZVZhbHVlKTsKKyAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQoV1RGTW92ZShsZW5ndGhPclBl
cmNlbnRhZ2VWYWx1ZSkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50TGluZSh0ZXh0SW5kZW50TGluZVZhbHVlKTsKICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRUeXBlKHRleHRJbmRlbnRUeXBlVmFs
dWUpOwpAQCAtNjExLDggKzYyNSw4IEBAIERFRklORV9CT1JERVJfSU1BR0VfTU9ESUZJRVJfSEFO
RExFUihXZWJraXRNYXNrQm94SW1hZ2UsIFdpZHRoKQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExpbmVIZWlnaHQoc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5saW5lSGVpZ2h0KCkpOwotICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxl
KCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRMaW5lSGVpZ2h0KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+bGluZUhl
aWdodCgpIH0pOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhl
aWdodChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnNwZWNpZmllZExpbmVI
ZWlnaHQoKSB9KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCkBAIC02MjgsOCAr
NjQyLDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhl
aWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmUKICAgICBpZiAoIWxpbmVIZWlnaHQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TGluZUhlaWdo
dChsaW5lSGVpZ2h0LnZhbHVlKCkpOwotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3Bl
Y2lmaWVkTGluZUhlaWdodChsaW5lSGVpZ2h0LnZhbHVlKCkpOworICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0TGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVpZ2h0LnZhbHVlKCkgfSk7Cisg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KFdURk1vdmUo
bGluZUhlaWdodC52YWx1ZSgpKSk7CiB9CiAKICNlbmRpZgpAQCAtNjY1LDIxICs2NzksMjEgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDbGlwKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAgYXV0byogcGFyZW50U3R5bGUgPSBzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCk7CiAgICAgaWYgKCFwYXJlbnRTdHlsZS0+aGFzQ2xpcCgpKQogICAg
ICAgICByZXR1cm4gYXBwbHlJbml0aWFsQ2xpcChzdHlsZVJlc29sdmVyKTsKLSAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldENsaXAocGFyZW50U3R5bGUtPmNsaXBUb3AoKSwgcGFyZW50U3R5
bGUtPmNsaXBSaWdodCgpLCBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpLCBwYXJlbnRTdHlsZS0+
Y2xpcExlZnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKExlbmd0aCB7
IHBhcmVudFN0eWxlLT5jbGlwVG9wKCkgfSwgTGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBSaWdo
dCgpIH0sCisgICAgICAgIExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlwQm90dG9tKCkgfSwgTGVu
Z3RoIHsgcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCkgfSk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVDbGlwKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7Ci0KLSAgICBpZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVl
LnJlY3RWYWx1ZSgpKSB7CisgICAgaWYgKGF1dG8qIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5yZWN0
VmFsdWUoKSkgewogICAgICAgICBhdXRvIGNvbnZlcnNpb25EYXRhID0gc3R5bGVSZXNvbHZlci5z
dGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKLSAgICAgICAgTGVuZ3RoIHRvcCA9
IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBl
cmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAg
ICAgTGVuZ3RoIHJpZ2h0ID0gcmVjdC0+cmlnaHQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50
ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSk7Ci0gICAgICAgIExlbmd0aCBib3R0b20gPSByZWN0LT5ib3R0b20oKS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0gICAgICAgIExlbmd0aCBsZWZ0ID0g
cmVjdC0+bGVmdCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBl
cmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCk7CisgICAgICAgIGF1dG8gdG9wID0gcmVjdC0+dG9wKCktPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4o
Y29udmVyc2lvbkRhdGEpOworICAgICAgICBhdXRvIHJpZ2h0ID0gcmVjdC0+cmlnaHQoKS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGF1dG8gYm90dG9tID0g
cmVjdC0+Ym90dG9tKCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwg
UGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAg
ICAgICBhdXRvIGxlZnQgPSByZWN0LT5sZWZ0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVy
c2lvbkRhdGEpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAoV1RGTW92
ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpKTsK
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKTsKQEAgLTczNSwxMiArNzQ5LDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzCiAg
ICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldEZvbnREaXJ0eSh0cnVlKTsKIH0KIAotdGVtcGxh
dGUgPENTU1Byb3BlcnR5SUQgaWQ+Cit0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5Pgog
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVl
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBp
ZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsK
LSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKKyAgICAgICAgaWYgKHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhudWxscHRyKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBAIC03
NjEsOCArNzc1LDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRP
ckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9y
ID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29s
b3IpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+Y29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwg
aWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9y
IDogQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4
dFNoYWRvdykKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9y
IDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4
dFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRo
ZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhXVEZNb3ZlKHNoYWRv
d0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90
IHRoZSBmaXJzdCBlbnRyeQpAQCAtMTE1NiwyMiArMTE3MCwyMiBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQwogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZp
bGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYg
c3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAg
YXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7
CiAgICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBh
aW50VHlwZSgpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNWR1Jl
bmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVu
ZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHls
ZSgpOwotICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdQYXJl
bnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICBz
dmdTdHlsZS5zZXRGaWxsUGFpbnQoc3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50VHlwZSgpLCBzdmdQ
YXJlbnRTdHlsZS5maWxsUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS5maWxsUGFpbnRVcmko
KSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVSZXNv
bHZlci5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogCiB9CiAKIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUo
KSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKKyAgICBh
dXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsK
KyAgICBjb25zdCBhdXRvKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpID8g
JmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOwogICAgIFN0cmlu
ZyB1cmw7CiAgICAgaWYgKHZhbHVlLmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgY29uc3QgQ1NT
VmFsdWVMaXN0JiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0xMTgz
LDEwICsxMTk3LDEwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUZpbGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBDb2xvciBjb2xvcjsKLSAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gU1ZH
X1BBSU5UVFlQRV9SR0JDT0xPUjsKKyAgICBhdXRvIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVf
UkdCQ09MT1I7CiAgICAgaWYgKGxvY2FsVmFsdWUtPmlzVVJJKCkpIHsKICAgICAgICAgcGFpbnRU
eXBlID0gU1ZHX1BBSU5UVFlQRV9VUkk7Ci0gICAgICAgIHVybCA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihsb2NhbFZhbHVlKS0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgdXJsID0gbG9j
YWxWYWx1ZS0+c3RyaW5nVmFsdWUoKTsKICAgICB9IGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlzVmFs
dWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAg
IHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX05PTkUgOiBTVkdfUEFJ
TlRUWVBFX1VSSV9OT05FOwogICAgIGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlzVmFsdWVJRCgpICYm
IGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikgewpAQCAtMTIw
NywxNSArMTIyMSwxNSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbFN0cm9rZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogCiBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFN0cm9rZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYg
c3ZnUGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7
CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0
eWxlKCk7CisgICAgYXV0byYgc3ZnUGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0U3Ryb2tlUGFpbnQoc3ZnUGFyZW50
U3R5bGUuc3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50Q29sb3Io
KSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwgc3R5bGVSZXNvbHZlci5hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZh
bHVlKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogbG9j
YWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKKyAgICBjb25zdCBhdXRvKiBsb2NhbFZh
bHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkgOiBudWxscHRyOwogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKHZhbHVlLmlz
VmFsdWVMaXN0KCkpIHsKICAgICAgICAgY29uc3QgQ1NTVmFsdWVMaXN0JiBsaXN0ID0gZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0xMjI3LDcgKzEyNDEsNyBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQ29sb3IgY29sb3I7Ci0g
ICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CisgICAg
YXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOwogICAgIGlmIChsb2NhbFZh
bHVlLT5pc1VSSSgpKSB7CiAgICAgICAgIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfVVJJOwog
ICAgICAgICB1cmwgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obG9jYWxWYWx1ZSktPnN0
cmluZ1ZhbHVlKCk7CkBAIC0xMjU4LDcgKzEyNzIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdFN2Z1NoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHls
ZQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRTdmdT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewot
ICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNj
ZXNzU1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+YWNjZXNzU1ZHU3R5bGUoKTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgc3ZnU3R5bGUuc2V0U2hhZG93KG51
bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDAwNDY5ZWU3ZmEw
OTE2NjhmNjM4NjZhZWNiNDU0YjAzMzQxMjg1NzUuLjM0OTdiMmE3MDdkNGU1NDI2OTM2YjJkMWY4
NmY1MmVlYzM5YThjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2FjaGVCb3Jk
ZXJBbmRCYWNrZ3JvdW5kKCkKICAgICBtX2hhc1VBQXBwZWFyYW5jZSA9IG1fc3R5bGUtPmhhc0Fw
cGVhcmFuY2UoKTsKICAgICBpZiAobV9oYXNVQUFwcGVhcmFuY2UpIHsKICAgICAgICAgbV9ib3Jk
ZXJEYXRhID0gbV9zdHlsZS0+Ym9yZGVyKCk7Ci0gICAgICAgIG1fYmFja2dyb3VuZERhdGEgPSAq
bV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICBtX2JhY2tncm91bmREYXRhID0g
bV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpOwogICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9
IG1fc3R5bGUtPmJhY2tncm91bmRDb2xvcigpOwogICAgIH0KIH0KQEAgLTEzMjgsNyArMTMyOCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRj
aFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgICAgIC8vIFdlIGNhbiBidWlsZCB1cCB0
aGUgc3R5bGUgYnkgY29weWluZyBub24taW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBhbiBlYXJs
aWVyIHN0eWxlIG9iamVjdCBidWlsdCB1c2luZyB0aGUgc2FtZSBleGFjdAogICAgICAgICAvLyBz
dHlsZSBkZWNsYXJhdGlvbnMuIFdlIHRoZW4gb25seSBuZWVkIHRvIGFwcGx5IHRoZSBpbmhlcml0
ZWQgcHJvcGVydGllcywgaWYgYW55LCBhcyB0aGVpciB2YWx1ZXMgY2FuIGRlcGVuZCBvbiB0aGUg
CiAgICAgICAgIC8vIGVsZW1lbnQgY29udGV4dC4gVGhpcyBpcyBmYXN0IGFuZCBzYXZlcyBtZW1v
cnkgYnkgcmV1c2luZyB0aGUgc3R5bGUgZGF0YSBzdHJ1Y3R1cmVzLgotICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLmdldCgp
KTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oKmNhY2hlSXRl
bS0+cmVuZGVyU3R5bGUpOwogICAgICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKS0+aW5oZXJp
dGVkRGF0YVNoYXJlZChjYWNoZUl0ZW0tPnBhcmVudFJlbmRlclN0eWxlLmdldCgpKSAmJiAhaXNB
dFNoYWRvd0JvdW5kYXJ5KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBFSW5zaWRlTGluayBsaW5r
U3RhdHVzID0gc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpOwogICAgICAgICAgICAgLy8gSWYg
dGhlIGNhY2hlIGl0ZW0gcGFyZW50IHN0eWxlIGhhcyBpZGVudGljYWwgaW5oZXJpdGVkIHByb3Bl
cnRpZXMgdG8gdGhlIGN1cnJlbnQgcGFyZW50IHN0eWxlIHRoZW4gdGhlCkBAIC0xNjYxLDE3ICsx
NjYxLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAgICAgaWYgKGlzSW5oZXJpdCAmJiAh
Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQogICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwogICAgIAotICAgIGlm
IChpZCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgewotICAgICAgICBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlKiBjdXN0b21Qcm9wZXJ0eSA9ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigq
dmFsdWVUb0FwcGx5KTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgUmVm
UHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGN1c3RvbVZhbCA9IHN0YXRlLnBhcmVudFN0eWxl
KCktPmdldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5hbWUoKSk7Ci0gICAg
ICAgICAgICBpZiAoIWN1c3RvbVZhbCkKLSAgICAgICAgICAgICAgICBjdXN0b21WYWwgPSBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCksIGN1
c3RvbVZhbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgp
LCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCkpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3Rv
bVByb3BlcnR5LT5uYW1lKCksIGN1c3RvbVByb3BlcnR5KTsKKyAgICBpZiAoY3VzdG9tUHJvcGVy
dHlWYWx1ZSkgeworICAgICAgICBhdXRvJiBuYW1lID0gY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFt
ZSgpOworICAgICAgICBhdXRvKiB2YWx1ZSA9IGlzSW5pdGlhbCA/IG51bGxwdHIgOiBpc0luaGVy
aXQgPyBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5jdXN0b21Qcm9wZXJ0aWVzKCkuZ2V0KG5hbWUpIDog
Y3VzdG9tUHJvcGVydHlWYWx1ZTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJv
cGVydHlWYWx1ZShuYW1lLCB2YWx1ZSA/IG1ha2VSZWYoKnZhbHVlKSA6IENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbAppbmRleCA4NTE5ODU1NTdjMzMzODVjNjgzNDE0MzlkYWY0ZTU2Njlj
MzNjNzdmLi5lNjE3YzM4ZTc5ZjIzNTFmY2E4N2E4YmRiMjY0MTA0MDcxM2JhZjM3IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCkBAIC02MTQsOCArNjE0LDggQEAgc3ViIGdlbmVyYXRlQW5pbWF0aW9u
UHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICBteSAkaW5kZW50ID0gc2hpZnQ7CiAKICAg
bXkgJHNldHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJB
bmltYXRpb25MaXN0JiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJl
QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKLSAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICJjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0g
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlv
bnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJhdXRvJiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJlQW5pbWF0
aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICJhdXRvKiBwYXJlbnRMaXN0ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigp
O1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzaXplX3QgaSA9IDAsIHBhcmVu
dFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRM
aXN0LT5hbmltYXRpb24oaSkuIiAuIGdldFRlc3RGdW5jdGlvbigkbmFtZSkgLiAiKCk7ICsraSkg
e1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKGxpc3Quc2l6ZSgp
IDw9IGkpXG4iOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHN1YiBnZW5lcmF0ZUFuaW1hdGlvblByb3Bl
cnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgbGlzdC5hbmltYXRpb24oaSkuc2V0QW5pbWF0aW9uTW9kZShwYXJlbnRMaXN0LT5hbmltYXRp
b24oaSkuYW5pbWF0aW9uTW9kZSgpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAifVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUg
dGhlIHByb3BlcnR5IHNldC4gKi9cbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
Ly8gUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0
eSBzZXQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8IGxp
c3Quc2l6ZSgpOyArK2kpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBs
aXN0LmFuaW1hdGlvbihpKS4iIC4gZ2V0Q2xlYXJGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwog
CkBAIC02NzQsMTEgKzY3NCwxMSBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaXRp
YWxWYWx1ZVNldHRlciB7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIvLyBDaGVjayBmb3IgKHNpbmdsZS1sYXllcikgbm8tb3AgYmVm
b3JlIGNsZWFyaW5nIGFueXRoaW5nLlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJjb25zdCBGaWxsTGF5ZXImIGxheWVycyA9ICpzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gImF1dG8mIGxheWVycyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExh
eWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiaWYgKCFsYXllcnMubmV4dCgpICYmICghbGF5ZXJzLiIgLiAkdGVzdEZ1bmN0aW9uIC4g
IigpIHx8IGxheWVycy4iIC4gJGdldHRlciAuICIoKSA9PSAkaW5pdGlhbCkpXG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29udGVu
dCAuPSAiXG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogY2hp
bGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlv
bigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8q
IGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVu
Y3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJj
aGlsZC0+IiAuICRzZXR0ZXIgLiAiKCIgLiAkaW5pdGlhbCAuICIpO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGNoaWxkID0gY2hpbGQtPm5leHQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHQoKSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
ICAgIGNoaWxkLT4iIC4gJGNsZWFyRnVuY3Rpb24gLiAiKCk7XG4iOwpAQCAtNjk3LDEyICs2OTcs
MTIgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewog
CiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiLy8gQ2hlY2sgZm9yIG5vLW9wIGJlZm9yZSBjb3B5aW5nIGFueXRoaW5nLlxuIjsKLSAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUo
KS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuIigpID09ICpzdHlsZVJlc29sdmVyLnN0
eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOworICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gImlmIChzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIg
LiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOwogICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAiXG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8qIGNoaWxkID0gJnN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVuY3Rpb24oJG5hbWUpIC4gIigp
O1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZpb3Vz
Q2hpbGQgPSBudWxscHRyO1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3Ig
KGF1dG8qIHBhcmVudCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVy
c0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rp
b24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOworICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBh
cmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxkKSB7XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+
c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUo
JG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
IGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKQEAgLTcyNCw3ICs3MjQsNyBAQCBz
dWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgbXkgJENTU1Byb3Bl
cnR5SWQgPSAiQ1NTUHJvcGVydHkiIC4gJG5hbWVUb0lkeyRuYW1lfTsKIAogICBteSAkc2V0dGVy
Q29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciog
Y2hpbGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5j
dGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1
dG8qIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29y
RnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICJpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkgJiYgIWlzPENTU0lt
YWdlU2V0VmFsdWU+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGlu
ZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CkBAIC04MzAsNyArODMwLDcgQEAgc3ViIGdlbmVy
YXRlSW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgfQogICBpZiAoISRkaWRDYWxsU2V0VmFsdWUpIHsK
ICAgICBteSAkaW5oZXJpdGVkVmFsdWUgPSAkcGFyZW50U3R5bGUgLiAiLT4iIC4gKCRpc1NWRyA/
ICJzdmdTdHlsZSgpLiIgOiAiIikgLiAgJGdldHRlciAuICIoKSI7Ci0gICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5hbWUs
ICRpbmhlcml0ZWRWYWx1ZSkgLiAiO1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICAiIC4gZ2VuZXJhdGVTZXRWYWx1ZVN0YXRlbWVudCgkbmFtZSwgImZvcndhcmRJbmhl
cml0ZWRWYWx1ZSgiIC4gJGluaGVyaXRlZFZhbHVlIC4gIikiKSAuICI7XG4iOwogICB9CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAifVxuIjsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHN1
YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgICAkY29udmVydGVkVmFsdWUgPSAiU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlv
bnN7JG5hbWV9eyJjb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpIjsKICAgfSBl
bHNpZiAoZXhpc3RzKCRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJj
b25kaXRpb25hbC1jb252ZXJ0ZXIifSkpIHsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25kaXRp
b25hbC1jb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpO1xuIjsKLSAgICAkY29u
dmVydGVkVmFsdWUgPSAiY29udmVydGVkVmFsdWUudmFsdWUoKSI7CisgICAgJGNvbnZlcnRlZFZh
bHVlID0gIldURk1vdmUoY29udmVydGVkVmFsdWUudmFsdWUoKSkiOwogICB9IGVsc2UgewogICAg
ICRjb252ZXJ0ZWRWYWx1ZSA9ICJkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIjsK
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTQxMmViNWFlNWEwYTc4ZGM4NTJjNDBm
M2FhYzcwYjRhNmRhZjc3Mi4uY2Q3MTU0NDFlN2Q5Y2E1NmM0ZjcyZTMxZjhjZWE1N2ZmMDYzMzdl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBib29sIERv
Y3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpCiB2b2lkIERvY3VtZW50Ojpw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6
ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBp
bnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5z
dHlsZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICBhdXRvIHN0eWxlID0gc3R5bGVTY29wZSgpLnJl
c29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CiAKICAgICBpbnQgd2lkdGggPSBwYWdl
U2l6ZS53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQoKTsKQEAgLTIw
ODgsMTEgKzIwODgsMTEgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICAgICAgICAgIHN0
ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQQUdFX1NJ
WkVfUkVTT0xWRUQ6IHsKLSAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXpl
KCk7Ci0gICAgICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKLSAgICAgICAgQVNT
RVJUKHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxl
bmd0aChzaXplLndpZHRoKCksIDApOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChz
aXplLmhlaWdodCgpLCAwKTsKKyAgICAgICAgYXV0byYgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6ZSgp
OworICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aC5pc0ZpeGVkKCkpOworICAgICAgICBBU1NFUlQo
c2l6ZS5oZWlnaHQuaXNGaXhlZCgpKTsKKyAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChz
aXplLndpZHRoLCAwKTsKKyAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS5oZWln
aHQsIDApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50UGF0aC5jcHAKaW5kZXggYzJiZGQwNTY3Nzg2N2EwMjljNTFhZmEzZTdjZjk3MzdlZTc5NmVi
ZS4uNzc3MTI4MWFiOTQ3YTMxNGY2NDBhMDlhYmQzZTQ3OGI3MjI2MjNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50UGF0aC5jcHAKQEAgLTI1OCwyMyArMjU4LDIxIEBAIGJvb2wgRXZlbnRQYXRoOjpoYXNF
dmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIFZlY3Rv
cjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KGNv
bnN0IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEV2ZW50VGFyZ2V0
Kj4gcGF0aDsKLSAgICBjb25zdCBOb2RlKiB0YXJnZXROb2RlID0gY29uc3RfY2FzdDxFdmVudFRh
cmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CisgICAgYXV0byogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nh
c3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOwogICAgIGlmICghdGFyZ2V0Tm9kZSkg
ewotICAgICAgICBjb25zdCBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGNvbnN0X2Nhc3Q8RXZlbnRU
YXJnZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CisgICAgICAgIGF1dG8qIGRvbVdpbmRvdyA9
IGNvbnN0X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CiAgICAgICAg
IGlmICghZG9tV2luZG93KQogICAgICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgICAgIHRhcmdl
dE5vZGUgPSBkb21XaW5kb3ctPmRvY3VtZW50KCk7CiAgICAgICAgIEFTU0VSVCh0YXJnZXROb2Rl
KTsKICAgICB9Ci0KICAgICBmb3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKLSAgICAgICAg
aWYgKE5vZGUqIG5vZGVJblBhdGggPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCktPnRvTm9kZSgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdl
dCgpLT50b05vZGUoKSkgewogICAgICAgICAgICAgaWYgKCF0YXJnZXROb2RlLT5pc0Nsb3NlZFNo
YWRvd0hpZGRlbigqbm9kZUluUGF0aCkpCiAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQoY29u
dGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwYXRo
LmFwcGVuZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgIH0KLQogICAgIHJldHVybiBw
YXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggYTJlOTYxMWQ2YzU0ODg4
NjE0NmJiYTkxYTEwNWQ4MDkxYjhjZmFhZS4uZGVlNjQ2YzM3ZDE1YWQ0NDMzYzAzMWI1ZTNhNWFj
NDFlNjE0Mjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0ID0g
MDsKIAogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRh
dGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlv
blR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KLSAgICBDb250YWluZXJOb2RlJiBvd25lck5v
ZGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9k
ZS5nZXQoKSk7IH0KKyAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdCB7IHJldHVy
biBtX293bmVyTm9kZTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2FjaGVG
b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIWF0dHJOYW1lIHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVD
aGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0ck5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcAppbmRleCBjYzFhNmE0YTA2NjY4ZjYwNGJjYmRkNDNjNGViNjJjN2E3MjY2ZTYy
Li41YmEzN2NmODA2ZWJkY2VmYTMyYTM2NWRlOWM2ZGNiNjNiNGVhMjAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIEV2ZW50VGFyZ2V0KiBNZXNz
YWdlRXZlbnQ6OnNvdXJjZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9zb3VyY2UudmFsdWUoKSwKLSAgICAgICAgW10oY29uc3Qg
UmVmUHRyPERPTVdpbmRvdz4mIHdpbmRvdykgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8RXZlbnRUYXJnZXQqPihzdGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KHdpbmRv
dy5nZXQoKSkpOyB9LAotICAgICAgICBbXShjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNz
YWdlUG9ydCkgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRUYXJnZXQq
PihzdGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KG1lc3NhZ2VQb3J0LmdldCgpKSk7IH0K
KyAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFy
Z2V0KiB7IHJldHVybiBjb25zdF9jYXN0PERPTVdpbmRvdyo+KHdpbmRvdy5nZXQoKSk7IH0sCisg
ICAgICAgIFtdIChjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNzYWdlUG9ydCkgLT4gRXZl
bnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPihtZXNzYWdlUG9ydC5n
ZXQoKSk7IH0KICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTJmYmJjZjgxYTEzY2Zk
MDQwNWUxMjAzOTFlNTJiM2RlNWQzZTI4OS4uM2M3MTIwZWFhNGY4YTMwYjlmNDZiOGI1YWE5OTZk
N2Y4NjE3ZThjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDMwLDExICs0MzAsMTAgQEAgc3RhdGlj
IEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3Ry
aW5nVmVjdG9yKGNvbnN0IFYKICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldDsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhbnQgOiB2ZWN0b3IpIHsKICAgICAgICAgV1RGOjpzd2l0
Y2hPbih2YXJpYW50LAotICAgICAgICAgICAgWyZdKGNvbnN0IFJlZlB0cjxOb2RlPiYgbm9kZSkg
eyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdldCgpKSk7IH0sCi0gICAgICAg
ICAgICBbXShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRy
PE5vZGU+JiBub2RlKSB7IG5vZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0KCkp
KTsgfSwKKyAgICAgICAgICAgIFtdIChjb25zdCBTdHJpbmcmKSB7IH0KICAgICAgICAgKTsKICAg
ICB9Ci0KICAgICByZXR1cm4gbm9kZVNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4MDNmOGZl
MjNmNzM3MGJjY2NkMmE3NWY3MDM5MTU3M2ZlYWQzYTdkLi5iOWEwMjJkNTBkMTM2OGQ5MzUzZjAy
Y2I1MDIzM2U3OTAxZGQyOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gY3JlYXRlKERvY3VtZW50
JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflJhbmdlKCk7CiAKLSAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX293bmVyRG9jdW1lbnQuZ2V0
KCkpOyB9CisgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX293
bmVyRG9jdW1lbnQ7IH0KIAogICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyBBU1NF
UlQobV9zdGFydC5jb250YWluZXIoKSk7IHJldHVybiAqbV9zdGFydC5jb250YWluZXIoKTsgfQog
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5vZmZzZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAppbmRl
eCAxMGIyYWQ5NDNjYzNiOTAzMzFkYzdhYjY4ZDU1ZmNmOTQ5MmZlMDgyLi4yYTU4YTNmYTBiYzFk
OWU1NGI2YTFjMzQ1MWE5NzI5YTYzNzJhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFdURk1vdmUobGlz
dGVuZXIpLCBvcHRpb25zKSk7CiAgICAgfQogCi0gICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJhY2so
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXImPihtX2NhbGxiYWNrLmdl
dCgpKTsgfQorICAgIEV2ZW50TGlzdGVuZXImIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsYmFjazsgfQogICAgIGJvb2wgdXNlQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlQ2Fw
dHVyZTsgfQogICAgIGJvb2wgaXNQYXNzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Bhc3NpdmU7
IH0KICAgICBib29sIGlzT25jZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbmNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MWU2ZDEzMzFmNDQyM2MxNWM5ODc2OWY5YTIy
NzRjZWQwYWQwZmYuLjFkNTJlNTg4OGUyNzFiMGU4MWIzMDVmMWVmMGM5YzI4ZGM1ZmM0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFNjcmlwdFJ1
bm5lcjo6flNjcmlwdFJ1bm5lcigpCiAgICAgfQogICAgIGZvciAoYXV0byYgcGVuZGluZ1Njcmlw
dCA6IG1fcGVuZGluZ0FzeW5jU2NyaXB0cykgewogICAgICAgICBpZiAocGVuZGluZ1NjcmlwdC0+
d2F0Y2hpbmdGb3JMb2FkKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFBlbmRpbmdTY3JpcHQm
PihwZW5kaW5nU2NyaXB0LmdldCgpKS5jbGVhckNsaWVudCgpOworICAgICAgICAgICAgcGVuZGlu
Z1NjcmlwdC0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9kb2N1bWVudC5kZWNyZW1lbnRMb2Fk
RXZlbnREZWxheUNvdW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5oCmluZGV4IDZmYWFkNDA3NTA1MDQ1MGRkM2I5MDliZWRhYzAwMzAwY2M5ZTJhODYuLjQ4MDEy
NmI2NTE2YjdlNzk1MzhiNjI5ZmI4NmFlYzAyYzkxNzJmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBpbmxpbmUgQ29sbGVjdGlvblR5cGUg
SFRNTENvbGxlY3Rpb246OnR5cGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRN
TENvbGxlY3Rpb246Om93bmVyTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
Q29udGFpbmVyTm9kZSY+KG1fb3duZXJOb2RlLmdldCgpKTsKKyAgICByZXR1cm4gbV9vd25lck5v
ZGU7CiB9CiAKIGlubGluZSBEb2N1bWVudCYgSFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAppbmRleCBlZjIw
NmY2YzFlMWE1NjE0NzUwOTZlMjJhYjc5N2QzMjJjOWJlMTBmLi45ODUzMTk4MzFiMTUzMjliYmE5
NGZjZmE5MDU0NGU4Y2YzN2NmYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3RhY2tJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIFJlZjxIVE1MU3RhY2tJdGVt
PiBIVE1MU3RhY2tJdGVtOjpjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiAKIGlu
bGluZSBDb250YWluZXJOb2RlJiBIVE1MU3RhY2tJdGVtOjpub2RlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9ub2RlLmdldCgpKTsKKyAgICByZXR1
cm4gbV9ub2RlLmdldCgpOwogfQogCiBpbmxpbmUgRWxlbWVudCYgSFRNTFN0YWNrSXRlbTo6ZWxl
bWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDNhYzI4NzA3NzNiODM0MGFlNWUzYjRiOTY3MjkyYWRjZDJi
MDkzMTEuLmMyZTUxNGNiN2M3MjExYmMzN2MyNDMyOGJkNDAyZjQ5ZTY4NDQ4YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0xMzMsNTggKzEzMyw0NCBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNj
cmlwdFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbAogewogICAgIHNldE1h
aW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKIAotICAgIGZvciAoYXV0byYgcGFnZSA6
IHBhZ2VHcm91cC5wYWdlcygpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKHBhZ2UsIHBh
dXNlZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1
c2VkKFBhZ2UqIHBhZ2UsIGJvb2wgcGF1c2VkKQotewotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFn
ZSk7Ci0KLSAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7Ci0KLSAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChmcmFtZSwg
cGF1c2VkKTsKLQotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGll
bnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
KSkgewotICAgICAgICBpZiAocGF1c2VkKQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQtPnBh
Z2VQYXVzZWQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQtPnBh
Z2VVbnBhdXNlZCgpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5wYWdlcygpKSB7
CisgICAgICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQo
KmZyYW1lLCBwYXVzZWQpOworCisgICAgICAgIGlmIChhdXRvKiBmcm9udGVuZENsaWVudCA9IHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSB7Cisg
ICAgICAgICAgICBpZiAocGF1c2VkKQorICAgICAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50LT5w
YWdlUGF1c2VkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJvbnRlbmRD
bGllbnQtPnBhZ2VVbnBhdXNlZCgpOworICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJvb2wg
cGF1c2VkKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQo
RnJhbWUmIGZyYW1lLCBib29sIHBhdXNlZCkKIHsKLSAgICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFt
ZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91
dFRvRXhlY3V0ZVNjcmlwdCkpCisgICAgaWYgKCFmcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLT5zY3JpcHQoKS5zZXRQYXVzZWQocGF1c2VkKTsKKyAgICBmcmFtZS5zY3JpcHQoKS5zZXRQ
YXVzZWQocGF1c2VkKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVu
dCgpOworICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlmIChwYXVzZWQpIHsKLSAgICAgICAgZG9jdW1lbnQt
PnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICAgICAg
ZG9jdW1lbnQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNj
cmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5kQWN0
aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMo
QWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwotICAgICAgICBkb2N1
bWVudC0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAg
ICAgIGRvY3VtZW50LnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZh
U2NyaXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5yZXN1bWVTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB9CiAKLSAgICBzZXRKYXZhU2NyaXB0
UGF1c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVn
U2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyogdmlldywgYm9vbCBwYXVzZWQp
Ci17Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGNo
aWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNl
PigqY2hpbGQpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KCpjaGlsZCkuc2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAgIGlm
IChhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQg
OiB2aWV3LT5jaGlsZHJlbigpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNl
PihjaGlsZC5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBk
b3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpLnNldEphdmFTY3JpcHRQYXVzZWQo
cGF1c2VkKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDNiNDk3OTFlZTI5ZTVjNTBmMGEz
YzhhYzFjNDE2ZGE1YTdjNzdiZDEuLjdmNThjNmM4YjA0OGJmM2RjMjc3YWI5ZGY2NWZlYTI0Njgy
MmI3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZUdyb3VwOwog
CkBAIC01Niw5ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBh
dXNlZEludGVybmFsKCk7CiAKICAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFn
ZUdyb3VwJiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChQYWdl
KiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSosIGJv
b2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiwgYm9v
bCBwYXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSYsIGJvb2wgcGF1
c2VkKTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA0ZTgyNzU0NWUyYzA4ZTRkM2VmYTIyNGE2M2RmZDVl
YjM1NzBhOWNiLi4yOTViOTRhMWE1NTViMmEyOGU3NTAzNmM2YjFkMDI1NzA3Mjk5N2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0
ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFt
ZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJU
KGNoaWxkRnJhbWUpOwogCi0gICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5y
ZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxk
SXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIo
KS5oaXN0b3J5KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNoaWxkSXRlbSwgZnJvbUNo
aWxkSXRlbSk7CiAgICAgfQogfQogCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVt
KiBmcm9tSXQKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+
Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9t
Q2hpbGRJdGVtKTsKICAgICAgICAgaWYgKEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVl
KCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpKQotICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVy
KCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihj
aGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKKyAgICAgICAgICAgIGNoaWxk
RnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjaGlsZEl0ZW0sIGZy
b21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAw
YmIyODhlYWVmY2Y4MDgxYjFmMGNmNDFkYzU2YTlhMTg3N2NmZTdlLi5kNWE1MTA2MDE3NGE4NzA2
Zjg5OWQ1Mjg4NGFkNmJiNGNmNjcwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzIzLDMx
ICs3MjMsMjcgQEAgUmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CiAK
IFJlbmRlcldpZGdldCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBjb25zdAogewotICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CisgICAgYXV0
byogb3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CiAgICAgaWYgKCFvd25lckVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8qIG9iamVjdCA9IG93bmVyRWxlbWVu
dC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgLy8gRklYTUU6IElmIDxvYmplY3Q+IGlzIGV2ZXIgZml4ZWQgdG8gZGlzYXNzb2NpYXRl
IGl0c2VsZiBmcm9tIGZyYW1lcwogICAgIC8vIHRoYXQgaXQgaGFzIHN0YXJ0ZWQgYnV0IGNhbmNl
bGVkLCB0aGVuIHRoaXMgY2FuIHR1cm4gaW50byBhbiBBU1NFUlQKLSAgICAvLyBzaW5jZSBtX293
bmVyRWxlbWVudCB3b3VsZCBiZSAwIHdoZW4gdGhlIGxvYWQgaXMgY2FuY2VsZWQuCisgICAgLy8g
c2luY2UgbV9vd25lckVsZW1lbnQgd291bGQgYmUgbnVsbHB0ciB3aGVuIHRoZSBsb2FkIGlzIGNh
bmNlbGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODU4NQotICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0Pigqb2JqZWN0KSkKKyAgICBpZiAoIWlzPFJl
bmRlcldpZGdldD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlcldpZGdldD4ob2JqZWN0KTsKIH0KIAotRnJhbWUqIEZyYW1lOjpmcmFt
ZUZvcldpZGdldChjb25zdCBXaWRnZXQqIHdpZGdldCkKK0ZyYW1lKiBGcmFtZTo6ZnJhbWVGb3JX
aWRnZXQoY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUX0FSRyh3aWRnZXQsIHdp
ZGdldCk7Ci0KLSAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6
ZmluZCh3aWRnZXQpKQorICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6Zmlu
ZCh3aWRnZXQpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPmZyYW1lT3duZXJFbGVtZW50KCku
ZG9jdW1lbnQoKS5mcmFtZSgpOwogCiAgICAgLy8gQXNzdW1lIGFsbCB3aWRnZXRzIGFyZSBlaXRo
ZXIgYSBGcmFtZVZpZXcgb3Igb3duZWQgYnkgYSBSZW5kZXJXaWRnZXQuCiAgICAgLy8gRklYTUU6
IFRoYXQgYXNzdW1wdGlvbiBpcyBub3QgcmlnaHQgZm9yIHNjcm9sbCBiYXJzIQotICAgIHJldHVy
biAmZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5mcmFtZSgpOworICAgIHJldHVybiAmZG93
bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCk7CiB9CiAKIHZvaWQgRnJhbWU6OmNsZWFy
VGltZXJzKEZyYW1lVmlldyAqdmlldywgRG9jdW1lbnQgKmRvY3VtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CmluZGV4IDY4MzQxMTA3ZDk4MWM0YTMyYWJlYjljNTEwOTNjODdhODFkZjg2NTUuLjlhOGY3M2Nj
YjU4ZDc3ZWRkNDkxOTZhNTdmZmRiYWYxMzhhMWVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE2
NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJl
ZUFzVGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Jik7
CiAKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiAqbV9zZXR0aW5nczsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNzcwNzVmZDU3OWJmY2IzOWY2NmY2
ZDkzNjY5ZGVkNTA3NmEwMzc0NS4uYjI5MTIzNjNmMjFkZDgwZDZiZTAxMGQwOGFjYTI3YWU5MmY3
NWIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMyw3ICszLDcgQEAKICAqICAg
ICAgICAgICAgICAgICAgICAgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgogICogICAg
ICAgICAgICAgICAgICAgICAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgog
ICogICAgICAgICAgICAgICAgICAgICAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAo
Z3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MDYsMTggKzUwNiwxNyBAQCBib29sIEZyYW1l
Vmlldzo6ZGlkRmlyc3RMYXlvdXQoKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewotICAgICAg
ICBpZiAoSG9zdFdpbmRvdyogd2luZG93ID0gaG9zdFdpbmRvdygpKQotICAgICAgICAgICAgd2lu
ZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKKyAgICAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmlu
dmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigp
OworICAgIGF1dG8qIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCByZXBhaW50UmVjdCA9
IHJlY3Q7Ci0gICAgcmVwYWludFJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVu
ZGVyZXItPnBhZGRpbmdMZWZ0KCksCi0gICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+Ym9y
ZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKKyAgICByZXBhaW50UmVjdC5tb3Zl
KHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwgcmVuZGVy
ZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CiAgICAgcmVuZGVyZXIt
PnJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOwogfQogCkBAIC01NDQsMTQgKzU0MywxNiBA
QCB2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpCiB9
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisKIGJvb2wgRnJhbWVWaWV3
OjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhv
c3RXaW5kb3coKSkgewotICAgICAgICB3aW5kb3ctPnNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHBhZ2UtPmNocm9tZSgpLnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEZyYW1lVmlldzo6c2V0TWFyZ2luV2lkdGgoTGF5b3V0
VW5pdCB3KQpAQCAtMTA1NiwyMiArMTA1NywyMiBAQCBHcmFwaGljc0xheWVyKiBGcmFtZVZpZXc6
OmdyYXBoaWNzTGF5ZXJGb3JQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybQog
ewogICAgIC8vIFRvIGZpbmQgdGhlIFdpZGdldCB0aGF0IGNvcnJlc3BvbmRzIHdpdGggcGxhdGZv
cm1XaWRnZXQgd2UgaGF2ZSB0byBkbyBhIGxpbmVhcgogICAgIC8vIHNlYXJjaCBvZiBvdXIgY2hp
bGQgd2lkZ2V0cy4KLSAgICBXaWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKKyAgICBjb25z
dCBXaWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIHdpZGdldCA6
IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSAhPSBw
bGF0Zm9ybVdpZGdldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3VuZFdpZGdl
dCA9IHdpZGdldC5nZXQoKTsKKyAgICAgICAgZm91bmRXaWRnZXQgPSB3aWRnZXQucHRyKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICghZm91bmRXaWRnZXQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0Ojpm
aW5kKGZvdW5kV2lkZ2V0KTsKKyAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6
OmZpbmQoKmZvdW5kV2lkZ2V0KTsKICAgICBpZiAoIXJlbmRlcldpZGdldCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJMYXllciogd2lkZ2V0TGF5ZXIgPSByZW5kZXJXaWRn
ZXQtPmxheWVyKCk7CisgICAgYXV0byogd2lkZ2V0TGF5ZXIgPSByZW5kZXJXaWRnZXQtPmxheWVy
KCk7CiAgICAgaWYgKCF3aWRnZXRMYXllciB8fCAhd2lkZ2V0TGF5ZXItPmlzQ29tcG9zaXRlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjE4MCwxMSArMjE4MSwxMSBAQCBib29s
IEZyYW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmICgh
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyB8fCBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVs
dGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hy
b21lKCkuc2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgYm9vbCBpc0NvbXBvc2l0ZWRDb250
ZW50TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAgIGJvb2wgaXNDb21wb3Np
dGVkQ29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIAogICAgIC8vIEdl
dCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Ny
b2xsCiAgICAgUmVnaW9uIHJlZ2lvblRvVXBkYXRlOwpAQCAtMjIyMCw3ICsyMjIxLDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QKICAgICB9CiAKICAgICAvLyAxKSBzY3JvbGwKLSAgICBob3N0
V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cisg
ICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Ny
b2xsLCBjbGlwUmVjdCk7CiAKICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2Jq
ZWN0cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCiAgICAgZm9yIChhdXRvJiB1cGRhdGVSZWN0
IDogcmVnaW9uVG9VcGRhdGUucmVjdHMoKSkgewpAQCAtMjIzNSw3ICsyMjM2LDcgQEAgYm9vbCBG
cmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QKICAgICAgICAgfQogICAgICAgICBpZiAoY2xpcHNSZXBhaW50cygp
KQogICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKLSAgICAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVSZWN0
KTsKKyAgICAgICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KHVwZGF0ZVJlY3QpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjY0
Miw5ICsyNjQzLDEwIEBAIGJvb2wgRnJhbWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRh
dGUoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogCiBIb3N0V2luZG93KiBGcmFtZVZp
ZXc6Omhvc3RXaW5kb3coKSBjb25zdAogewotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5w
YWdlKCkpCi0gICAgICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKIH0KIAog
dm9pZCBGcmFtZVZpZXc6OmFkZFRyYWNrZWRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHIp
CkBAIC0yNzg0LDEwICsyNzg2LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RUaWxlZEJhY2tp
bmdTY3JvbGxhYmlsaXR5KCkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKKwogdm9pZCBGcmFtZVZp
ZXc6OnVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKQogewogICAgIGFkanVzdFRpbGVkQmFj
a2luZ1Njcm9sbGFiaWxpdHkoKTsKIH0KKwogI2VuZGlmCiAKIHN0YXRpYyBMYXllckZsdXNoVGhy
b3R0bGVTdGF0ZTo6RmxhZ3MgZGV0ZXJtaW5lTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUoUGFnZSYg
cGFnZSkKQEAgLTQwODIsOCArNDA4Niw2IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxD
b3JuZXIoKQogICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUoKmNv
cm5lclN0eWxlKSk7CiAgICAgICAgIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoY29ybmVyUmVjdCk7
CiAgICAgfQotCi0gICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCkBAIC00MTU3LDE1ICs0MTU5LDE0IEBAIENvbG9y
IEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogYm9vbCBGcmFtZVZp
ZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgd2lkZ2V0
IDogY2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgewot
ICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuaGFzQ3VzdG9tU2Ny
b2xsYmFycygpKQorICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpKSB7Cisg
ICAgICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpLmhhc0N1c3Rv
bVNjcm9sbGJhcnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBl
bHNlIGlmIChpczxTY3JvbGxiYXI+KCp3aWRnZXQpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNh
c3Q8U2Nyb2xsYmFyPigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQorICAgICAgICB9IGVs
c2UgaWYgKGlzPFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKSkgeworICAgICAgICAgICAgaWYgKGRv
d25jYXN0PFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKS5pc0N1c3RvbVNjcm9sbGJhcigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC00MTczLDExICs0MTc0LDEwIEBAIEZyYW1lVmlldyogRnJhbWVWaWV3
OjpwYXJlbnRGcmFtZVZpZXcoKSBjb25zdAogewogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCku
dHJlZSgpLnBhcmVudCgpKQotICAgICAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKLQot
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhcmVudEZyYW1lID0gZnJhbWUoKS50cmVl
KCkucGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3
Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKSBjb25zdApAQCAtNTE4Myw4ICs1
MTgzLDggQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpCiAgICAgLy8g
c2NyaXB0cyBpbiByZXNwb25zZSB0byBOUFBfU2V0V2luZG93LCBmb3IgZXhhbXBsZSksIHNvIHdl
IG5lZWQgdG8ga2VlcCB0aGUgV2lkZ2V0cwogICAgIC8vIGFsaXZlIGR1cmluZyBlbnVtZXJhdGlv
bi4KICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IGNvbGxlY3RBbmRQcm90ZWN0V2lkZ2V0cyhtX3dp
ZGdldHNJblJlbmRlclRyZWUpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBh
dXRvIGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVyV2lkZ2V0LT51cGRhdGVXaWRnZXRQb3NpdGlv
bigpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoKndp
ZGdldCkpIHsKKyAgICAgICAgICAgIGF1dG8gaWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJlci0+
dXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShpZ25vcmVX
aWRnZXRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRl
eCAyM2E3ZmQxYjQ0ZjZlZTkwNDIwYjIwNTA4OTNjNzgzYWFlODUwM2I2Li43MTFiNzRiNDY3YjM3
NTg4NGEzNTc4YTQwMmE0ZTQ0YzQ2MjMzNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAg
LTQsNyArNCw3IEBACiAgICAgICAgICAgICAgKEMpIDE5OTgsIDE5OTkgVG9yYmVuIFdlaXMgKHdl
aXNAa2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICAgICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQotICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NCwxNiArNzQsMTYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RnJhbWVWaWV3KCk7CiAKLSAgICBIb3N0V2luZG93
KiBob3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dygpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNldEZyYW1lUmVjdChjb25z
dCBJbnRSZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
Ci0gICAgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgc2NoZWR1
bGVBbmltYXRpb24oKSBmaW5hbDsKICNlbmRpZgogCi0gICAgRnJhbWUmIGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxGcmFtZSY+KG1fZnJhbWUuZ2V0KCkpOyB9CisgICAgRnJhbWUm
IGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCkBAIC05NSwxNSArOTUsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWFyZ2luV2lkdGgoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRN
YXJnaW5IZWlnaHQoTGF5b3V0VW5pdCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENh
bkhhdmVTY3JvbGxiYXJzKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVDYW5IYXZlU2Nyb2xsYmFycygpOwogCi0gICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRl
U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8U2Nyb2xs
YmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGZpbmFsOwogCi0gICAg
Ym9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBh
dm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldENvbnRl
bnRzU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50
c1NpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXpl
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c1NpemUoKSBmaW5hbDsKIAogICAgIHZv
aWQgbGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gdHJ1ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBkaWRGaXJzdExheW91dCgpIGNvbnN0OwpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyRm9yUGxhdGZv
cm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1
bGVMYXllckZsdXNoQWxsb3dpbmdUaHJvdHRsaW5nKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBU
aWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3QgZmluYWw7CiAKICAgICAv
LyBJbiB0aGUgZnV0dXJlIHdoZW4gYW55IFNjcm9sbGFibGVBcmVhIGNhbiBoYXZlIGEgbm9kZSBp
biB0aCBTY3JvbGxpbmdUcmVlLCB0aGlzIHNob3VsZAogICAgIC8vIGJlY29tZSBhIHZpcnR1YWwg
ZnVuY3Rpb24gb24gU2Nyb2xsYWJsZUFyZWEuCkBAIC0yMjUsMjEgKzIyNSwyMSBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzKEludFNpemUpOwogICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpIGNvbnN0OwogICAgIAotICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3QgZmluYWw7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckZyYW1lT3duZXIoY29uc3QgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgYm9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKIAot
ICAgIGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50
UmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXhlZFZpc2libGVD
b250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xs
UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5pbXVt
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3Jv
bGxQb3NpdGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9u
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkg
ZmluYWw7CisgICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xs
UG9zaXRpb24mKSBmaW5hbDsKKyAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlv
biBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFRoZSBzY3Jv
bGxPcmlnaW4sIHNjcm9sbFBvc2l0aW9uLCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24gYW5kIG1heGlt
dW1TY3JvbGxQb3NpdGlvbiBhcmUgYWxsIGFmZmVjdGVkIGJ5IGZyYW1lIHNjYWxlLAogICAgIC8v
IGJ1dCBsYXlvdXRWaWV3cG9ydCBjb21wdXRhdGlvbnMgcmVxdWlyZSB1bnNjYWxlZCBzY3JvbGwg
cG9zaXRpb25zLgpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVtYmVk
ZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92
ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFp
bnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZp
bmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3I7CkBAIC0zNzksOSArMzc5LDkgQEAgcHVibGljOgogICAgIGVudW0gQ29v
cmRpbmF0ZVNwYWNlRm9yU25hcHNob3QgeyBEb2N1bWVudENvb3JkaW5hdGVzLCBWaWV3Q29vcmRp
bmF0ZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHNGb3JTbmFwc2hv
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNlbGVjdGlvbklu
U25hcHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90
KTsKIAotICAgIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2Fs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29y
bmVyUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisgICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IElu
dFJlY3QmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yKCkgY29uc3Q7CiAKQEAgLTQzNiwxMCArNDM2LDEwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJl
cihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIC8v
IE92ZXJyaWRlIFNjcm9sbFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9uIHZpYSBy
ZW5kZXJlcnMsIGluIG9yZGVyIHRvIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0gICAg
SW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRG
cm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJ
bnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5h
bDsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYp
IGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWlu
aW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBpc0ZyYW1l
Vmlld1Njcm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0JiBzY3JvbGxDb3JuZXIp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxDb3JuZXI7IH0KIApAQCAt
NDUxLDIwICs0NTEsMjAgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2Nyb2xsYWJpbGl0eSB7
IFNjcm9sbGFibGUsIFNjcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlIH07CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1Njcm9sbGFibGUoU2Nyb2xsYWJpbGl0eSBkZWZpbml0aW9uT2ZTY3JvbGxh
YmxlID0gU2Nyb2xsYWJpbGl0eTo6U2Nyb2xsYWJsZSk7CiAKLSAgICBib29sIGlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZTsKLSAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1
YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZU9y
UnViYmVyYmFuZGFibGUoKSBmaW5hbDsKKyAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJh
bmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKIAogICAgIGVudW0gU2Nyb2xsYmFyTW9kZXNDYWxjdWxh
dGlvblN0cmF0ZWd5IHsgUnVsZXNGcm9tV2ViQ29udGVudE9ubHksIEFueVJ1bGUgfTsKICAgICB2
b2lkIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2Rl
LCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xsYmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5
ID0gQW55UnVsZSk7CiAKLSAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
aG91bGRTZXRDdXJzb3IoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRo
b2Qgb25jZSBwbHVnaW4gbG9hZGluZyBpcyBkZWNvdXBsZWQgZnJvbSBsYXlvdXQuCiAgICAgdm9p
ZCBmbHVzaEFueVBlbmRpbmdQb3N0TGF5b3V0VGFza3MoKTsKIAotICAgIGJvb2wgc2hvdWxkU3Vz
cGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN1
c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxiYXJT
dHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRlOwog
CiAgICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKQEAgLTQ4Myw3ICs0
ODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc1Njcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKikgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFibGVB
cmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFzLmdldCgpOyB9CiAKLSAgICB2
b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2hpbGQo
V2lkZ2V0JikgZmluYWw7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgcG9ydHMg
dGhhdCBuZWVkIHRvIGhhbmRsZSB3aGVlbCBldmVudHMgbWFudWFsbHkuCiAgICAgLy8gT24gTWFj
IFdlYktpdDEgdGhlIHVuZGVybHlpbmcgTlNTY3JvbGxWaWV3IGp1c3QgZG9lcyB0aGUgc2Nyb2xs
aW5nLCBidXQgb24gbW9zdCBvdGhlciBwbGF0Zm9ybXMKQEAgLTUwMSw3ICs1MDEsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbigpIGNvbnN0OwogICAgIHZvaWQg
c2V0UGFnaW5hdGlvbihjb25zdCBQYWdpbmF0aW9uJik7CiAgICAgCi0gICAgYm9vbCBpblByb2dy
YW1tYXRpY1Njcm9sbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNT
Y3JvbGw7IH0KKyAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pblByb2dyYW1tYXRpY1Njcm9sbDsgfQogICAgIHZvaWQgc2V0SW5Qcm9ncmFtbWF0
aWNTY3JvbGwoYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpIHsgbV9pblByb2dyYW1tYXRpY1Njcm9s
bCA9IHByb2dyYW1tYXRpY1Njcm9sbDsgfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRB
VElPTikKQEAgLTUwOSw4ICs1MDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWFsVmll
d3BvcnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9pbml0aWFsVmlld3BvcnRTaXplID0g
c2l6ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRl
c3RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5j
ZVRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBzZXRXYW50c0xheWVyRm9yVG9wT3Zlckhh
bmdBcmVhKGJvb2wpIGNvbnN0OwpAQCAtNTIzLDIwICs1MjMsMjAgQEAgcHVibGljOgogCiAgICAg
TGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb25SZXNwZWN0aW5nQ3VzdG9tRml4ZWRQb3NpdGlvbigp
IGNvbnN0OwogCi0gICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faGVhZGVySGVpZ2h0OyB9CisgICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faGVhZGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIZWFk
ZXJIZWlnaHQoaW50KTsKLSAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KKyAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEZvb3RlckhlaWdodChpbnQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgdG9wQ29udGVu
dEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJDb3Jl
Q29udGVudEluc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB0
b3BDb250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5cGU6
OldlYkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdG9wQ29udGVudElu
c2V0RGlkQ2hhbmdlKGZsb2F0IG5ld1RvcENvbnRlbnRJbnNldCk7CiAKICAgICB2b2lkIHRvcENv
bnRlbnREaXJlY3Rpb25EaWRDaGFuZ2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2ls
bEVuZExpdmVSZXNpemUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxT
dGFydExpdmVSZXNpemUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxFbmRM
aXZlUmVzaXplKCkgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJsZUNv
bnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFi
bGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKIAogICAgIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5n
U2Nyb2xsYWJpbGl0eSgpOwogCkBAIC01NzQsMjkgKzU3NCwyOSBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0V4cG9zZWRSZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZv
aWQgdXBkYXRlU25hcE9mZnNldHMoKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkg
ZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkg
Y29uc3Q7CiAjZW5kaWYKIAotICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRl
bnQoZmxvYXQgc3RlcCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBv
dmVycmlkZTsKKyAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRDb250ZW50KGZsb2F0
IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7CiAK
ICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpOwogCi0gICAgdm9pZCBzaG93KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzaG93KCkgZmluYWw7CiAKICAgICBib29sIHNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlk
UmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc2Nyb2xsQ29u
dGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYg
cmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIG92ZXJy
aWRlOworICAgIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCkgZmluYWw7CisgICAgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJl
Y3QmIHVwZGF0ZVJlY3QpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVwYWludFNsb3dSZXBhaW50
T2JqZWN0cygpOwogCi0gICAgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRmxpcHBlZERv
Y3VtZW50KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVWaWV3
KEZyYW1lJik7CkBAIC02MTcsNyArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5QcmVM
YXlvdXRTdHlsZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UGhhc2UgPT0gSW5QcmVM
YXlvdXRTdHlsZVVwZGF0ZTsgfQogCi0gICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRnJhbWVWaWV3KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlcldpZGdldDsKICAgICBi
b29sIHVzZVNsb3dSZXBhaW50cyhib29sIGNvbnNpZGVyT3ZlcmxhcCA9IHRydWUpIGNvbnN0OwpA
QCAtNjI4LDkgKzYyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVcGRhdGVDb21wb3Np
dGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBmbHVzaENvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzRnJhbWUoY29uc3QgRnJhbWUmIHJvb3RGcmFtZUZvckZsdXNoKTsKIAot
ICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNp
emVDaGFuZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRm
b3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xs
T2Zmc2V0JiBuZXdPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdl
ZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29u
c3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBseU92ZXJm
bG93VG9WaWV3cG9ydChjb25zdCBSZW5kZXJFbGVtZW50JiwgU2Nyb2xsYmFyTW9kZSYgaE1vZGUs
IFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKICAgICB2b2lkIGFwcGx5UGFnaW5hdGlvblRvVmlld3Bv
cnQoKTsKQEAgLTY1MSwzOSArNjUxLDM5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXll
ckZsdXNoVGhyb3R0bGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRC
YWNraW5nQ292ZXJhZ2UoKTsKIAotICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJl
Y3QmKSBmaW5hbDsKKyAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgZmluYWw7CiAK
LSAgICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICAvLyBTY3JvbGxh
YmxlQXJlYSBpbnRlcmZhY2UKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvKGNvbnN0
IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJU
aHVtYlJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIFNjcm9sbGFibGVBcmVhKiBl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3Qgc2Ny
b2xsYWJsZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgR3Jh
cGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBHcmFw
aGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IFNjcm9sbFBvc2l0
aW9uJikgZmluYWw7CisgICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3Qg
SW50UmVjdCYpIGZpbmFsOworICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxl
QXJlYSgpIGNvbnN0IGZpbmFsOworICAgIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0Jv
eChib29sKiA9IG51bGxwdHIpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JF
bmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxp
bmcoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JT
Y3JvbGxDb3JuZXIoKSBjb25zdCBmaW5hbDsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0g
ICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKLSAgICB2b2lkIGNvbnRlbnRzUmVzaXplZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29udGVudHNSZXNpemVkKCkgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCB1
bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bm9ic2N1
cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIGJvb2wgdXNlc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNBc3luY1Nj
cm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmltYXRv
cigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2Fn
ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVzZXNDb21wb3NpdGVk
U2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZSBzY3JvbGxiYXIgbm90aWZpY2F0aW9ucyB0
byB1cGRhdGUgdGhlIEFYT2JqZWN0IGNhY2hlLgotICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNj
cm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxS
ZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0
aW9uKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Ny
b2xsYmFyT3JpZW50YXRpb24pIGZpbmFsOwogCiAgICAgSW50U2l6ZSBzaXplRm9yUmVzaXplRXZl
bnQoKSBjb25zdDsKICAgICB2b2lkIHNlbmRSZXNpemVFdmVudElmTmVlZGVkKCk7CkBAIC02OTMs
NyArNjkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7
CiAgICAgdm9pZCB1cGRhdGVMYXlvdXRWaWV3cG9ydCgpOwogCi0gICAgdm9pZCBub3RpZnlQYWdl
VGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBub3Rp
ZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGVuYWJsZVNwZWN1bGF0aXZlVGlsaW5nSWZOZWVkZWQoKTsKICAgICB2b2lkIHNwZWN1bGF0aXZl
VGlsaW5nRW5hYmxlVGltZXJGaXJlZCgpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRl
U2Nyb2xsQ29ybmVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBm
aW5hbDsKIAogICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDkzMzFiMzAyOTA3ZTc5YjdjMTFiNWVjMDg0NmJhZmQ1YzNmZWM0OTcu
LjZjNDc2NWYwY2JjNDUyNDI4MmUwN2M2MTg2NjRlNzZhMDI1MzExZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTMzMywxOCArMTMzMywxNSBAQCB2b2lkIFBhZ2U6OmRuc1ByZWZldGNoaW5nU3Rh
dGVDaGFuZ2VkKCkKIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBQYWdlOjpwbHVnaW5WaWV3
cygpCiB7CiAgICAgVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IHZpZXdzOwotCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZp
ZXcoKTsKKyAgICAgICAgYXV0byogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICgh
dmlldykKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGZvciAoYXV0byYgd2lkZ2V0IDog
dmlldy0+Y2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPigq
d2lkZ2V0KSkKLSAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2luVmll
d0Jhc2U+KCp3aWRnZXQpKTsKKyAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFzZT4od2lk
Z2V0LmdldCgpKSkKKyAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2lu
Vmlld0Jhc2U+KHdpZGdldC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJu
IHZpZXdzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggNDQzMDU0
Njc1NTcxYmI5MGQ3NDAxZjJiYjExMjNhY2U5YWZjZTExMC4uNjdjZTMxNzA3Y2IyMTdiM2IwMTRm
MTY5YTkyNGY0YzhjNWZkOWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApA
QCAtMjg2LDE2ICsyODYsMTkgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3Rp
bmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KIAogU3RyaW5nIFBy
aW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBpbnQgcGFnZU51bWJlcikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVChmcmFtZS0+ZG9j
dW1lbnQoKSk7CisKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKICAgICBwcmludENvbnRleHQuYmVn
aW4oODAwKTsgLy8gQW55IHdpZHRoIGlzIE9LIGhlcmUuCi0gICAgZG9jdW1lbnQtPnVwZGF0ZUxh
eW91dCgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBkb2N1bWVu
dC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOworICAg
IGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8gc3R5bGUgPSBkb2N1bWVudC5zdHls
ZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZU51bWJlcik7CiAKICAgICAvLyBJ
bXBsZW1lbnQgZm9ybWF0dGVycyBmb3IgcHJvcGVydGllcyB3ZSBjYXJlIGFib3V0LgogICAgIGlm
ICghc3RyY21wKHByb3BlcnR5TmFtZSwgIm1hcmdpbi1sZWZ0IikpIHsKICAgICAgICAgaWYgKHN0
eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJh
dXRvIik7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgImF1dG8iIH07CiAgICAg
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZhbHVlKCkpOwog
ICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQpAQCAt
MzA1LDkgKzMwOCw5IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSog
ZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgaWYgKCFzdHJjbXAo
cHJvcGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKICAgICAgICAgcmV0dXJuIHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS5maXJzdEZhbWlseSgpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFt
ZSwgInNpemUiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5wYWdlU2l6
ZSgpLndpZHRoKCkudmFsdWUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFnZVNp
emUoKS5oZWlnaHQoKS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0
eWxlLT5wYWdlU2l6ZSgpLndpZHRoLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5
bGUtPnBhZ2VTaXplKCkuaGVpZ2h0LnZhbHVlKCkpOwogCi0gICAgcmV0dXJuIFN0cmluZygicGFn
ZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIpICsgcHJvcGVydHlOYW1lOworICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJwYWdlUHJvcGVydHkoKSB1bmltcGxlbWVudGVkIGZvcjogIiwgcHJv
cGVydHlOYW1lKTsKIH0KIAogYm9vbCBQcmludENvbnRleHQ6OmlzUGFnZUJveFZpc2libGUoRnJh
bWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMWM0N2UzZGZjNGRkZDFiZDQ1YzMyNTdmN2I0
ZWQzMGRlYjhmOWE2OC4uNzZlODBjMDc4ZjFjNjZiZGFkNmI4MDFmODkzN2RiZDAwMWJmY2M1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
QEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVu
dHNJZk5lZWRlZCgpCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1fYW5p
bWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7CiAgICAgICAg
ICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0aW9uKCk7
Ci0gICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9
IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigp
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChvZmZzZXQgPiBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJ
bnB1dDo6U3RhcnRUaW1lckZpcmVkLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTU3Nyw3ICs1Nzcs
NyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAgICBp
ZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsK
ICAgICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJl
bnRTY3JvbGxQb3NpdGlvbiA9IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xsUG9z
aXRpb25Gb3JGaXhlZFBvc2l0aW9uKCkueSgpLnRvRmxvYXQoKTsKLSAgICAgICAgICAgICAgICBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25Ucmln
Z2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnRTY3JvbGxQb3NpdGlvbiA+PSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgpICYm
ICghc2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpIHx8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA8
PSBzY3JvbGxUcmlnZ2VyLmVuZFZhbHVlKCkudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtNjUzLDcgKzY1Myw3IEBAIGRvdWJsZSBBbmlt
YXRpb25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRp
bWluZ0Z1bmN0aW9uCiAgICAgfQogCiAgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAg
dGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAg
ICAgICAgdGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKTsKIAog
ICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVu
Y3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBkb3VibGUg
QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1Nf
QU5JTUFUSU9OU19MRVZFTF8yKQogICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1f
YW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAg
ICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAg
ICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
PigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2VyLmhh
c0VuZFZhbHVlKCkgJiYgbV9vYmplY3QpIHsKICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1f
Y29tcG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRpb24o
KTsKICAgICAgICAgICAgIGZsb2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFs
dWUoKS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDJkODk0MDQ1MjA0OGEyOGY0MTEwYTU1MjAz
NWZmMWM3MWZkODhkNTUuLjlmNmI5MTdjNmVjMWM2ZmViYmE2OTQwYTE2NzA1YmRiZDVhYzc0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGggYmxl
bmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IEwK
IAogc3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91
YmxlIHByb2dyZXNzKQogewotICAgIHJldHVybiBMZW5ndGhTaXplKGJsZW5kRnVuYyhhbmltLCBm
cm9tLndpZHRoKCksIHRvLndpZHRoKCksIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQoKSwgdG8uaGVpZ2h0KCksIHByb2dyZXNzKSk7
CisgICAgcmV0dXJuIHsgYmxlbmRGdW5jKGFuaW0sIGZyb20ud2lkdGgsIHRvLndpZHRoLCBwcm9n
cmVzcyksIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCwgdG8uaGVpZ2h0LCBwcm9ncmVzcykg
fTsKIH0KIAogc3RhdGljIGlubGluZSBTaGFkb3dTdHlsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5bGUgdG8sIGRvdWJsZSBw
cm9ncmVzcykKQEAgLTQ5Miw3ICs0OTEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNz
IExlbmd0aFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29u
c3QgVCY+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBMZW5n
dGhQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAoUmVuZGVyU3R5
bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShUKSkKKyAg
ICBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAoUmVu
ZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShU
JiYpKQogICAgICAgICA6IFByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj4ocHJvcCwgZ2V0
dGVyKQogICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKICAgICB7CkBAIC01MDQsNyArNTAzLDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgKFJlbmRlclN0eWxlOjoq
bV9zZXR0ZXIpKFQpOworICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFQmJik7CiB9
OwogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJDbGlwUGF0aCA6IHB1YmxpYyBSZWZDb3VudGVkUHJv
cGVydHlXcmFwcGVyPENsaXBQYXRoT3BlcmF0aW9uPiB7CkBAIC0xMDQ5LDcgKzEwNDgsNyBAQCBw
dWJsaWM6CiBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlv
blByb3BlcnR5V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6OipMYXllcnNH
ZXR0ZXIpKCkgY29uc3Q7CisgICAgdHlwZWRlZiBjb25zdCBGaWxsTGF5ZXImIChSZW5kZXJTdHls
ZTo6KkxheWVyc0dldHRlcikoKSBjb25zdDsKICAgICB0eXBlZGVmIEZpbGxMYXllciYgKFJlbmRl
clN0eWxlOjoqTGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICBGaWxsTGF5ZXJzUHJvcGVydHlXcmFw
cGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgTGF5ZXJzR2V0dGVyIGdldHRlciwgTGF5ZXJzQWNjZXNz
b3IgYWNjZXNzb3IpCkBAIC0xMDg2LDggKzEwODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
YSB8fCAhYikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjb25zdCBGaWxs
TGF5ZXIqIGZyb21MYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNvbnN0
IEZpbGxMYXllciogdG9MYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1
dG8qIGZyb21MYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRvKiB0
b0xheWVyID0gJihiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CiAKICAgICAgICAgd2hpbGUgKGZyb21M
YXllciAmJiB0b0xheWVyKSB7CiAgICAgICAgICAgICBpZiAoIW1fZmlsbExheWVyUHJvcGVydHlX
cmFwcGVyLT5lcXVhbHMoZnJvbUxheWVyLCB0b0xheWVyKSkKQEAgLTExMDIsOSArMTEwMSw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVu
ZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBi
LCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBjb25zdCBG
aWxsTGF5ZXIqIGFMYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNvbnN0
IEZpbGxMYXllciogYkxheWVyID0gKGItPiptX2xheWVyc0dldHRlcikoKTsKLSAgICAgICAgRmls
bExheWVyKiBkc3RMYXllciA9ICYoZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKKyAgICAgICAg
YXV0byogYUxheWVyID0gJihhLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1dG8qIGJM
YXllciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRvKiBkc3RMYXllciA9
ICYoZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKIAogICAgICAgICB3aGlsZSAoYUxheWVyICYm
IGJMYXllciAmJiBkc3RMYXllcikgewogICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXItPmJsZW5kKGFuaW0sIGRzdExheWVyLCBhTGF5ZXIsIGJMYXllciwgcHJvZ3Jlc3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCmluZGV4IGVkOTZhYjE1Mzg4MmI1OWRjOTljYmRmNWFjOTg2NGRiMGYwMDVhMDQu
LjIyYmRlNDY4YTA2YWI0NmMwYmEwZTg4OGI5YjczNWQxNDUxMmMwZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
QEAgLTk5LDI4ICs5OSwyOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRl
c1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYQogCiBFdmVudFRyYWNr
aW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVn
aW9uc0ZvckZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKLSAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVy
VmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyVmlldyB8fCBy
ZW5kZXJWaWV3LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybiBFdmVu
dFRyYWNraW5nUmVnaW9ucygpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAg
Ly8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVzZW50IHRo
ZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRsZXJzLgog
ICAgIEFTU0VSVChmcmFtZS5pc01haW5GcmFtZSgpKTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNraW5nUmVn
aW9ucygpOwogICAgIHJldHVybiBkb2N1bWVudC0+ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICNl
bHNlCi0gICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lLnZp
ZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEV2ZW50VHJhY2tpbmdS
ZWdpb25zKCk7CiAKKyAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CisKICAgICAv
LyBGSVhNRTogc2hvdWxkIEFTU0VSVCghZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSBoZXJlLCBi
dXQgbmVlZCB0byBmaXggRGVidWdQYWdlT3ZlcmxheXMKICAgICAvLyB0byBub3QgYXNrIGZvciBy
ZWdpb25zIGF0IGJhZCB0aW1lcy4KIAotICAgIGlmIChjb25zdCBGcmFtZVZpZXc6OlNjcm9sbGFi
bGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygp
KSB7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJs
ZUFyZWFzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxh
YmxlQXJlYXMpIHsKICAgICAgICAgICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xsYWJsZSBhcmVhcyBj
YW4gYmUgc2Nyb2xsZWQgb2ZmIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAgIGlmIChzY3Jv
bGxhYmxlQXJlYS0+dXNlc0FzeW5jU2Nyb2xsaW5nKCkpCkBAIC0xMzYsMTggKzEzNiwyMSBAQCBF
dmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRy
YWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgIH0KIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDog
ZnJhbWVWaWV3LT53aWRnZXRzSW5SZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0
KiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KTsKLSAgICAgICAgaWYg
KCFyZW5kZXJXaWRnZXQgfHwgIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKKyAgICAgICAg
aWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAKLSAgICAgICAgaWYgKGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50
c1doZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0
ZShyZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICBpZiAo
IWRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1doZWVsRXZlbnRzKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVy
V2lkZ2V0OjpmaW5kKCp3aWRnZXQpOworICAgICAgICBpZiAoIXJlbmRlcldpZGdldCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShy
ZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwogICAgIH0KICAgICAKLSAg
ICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJhbWUg
YXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBoZXJl
LgogICAgIEV2ZW50VHJhY2tpbmdSZWdpb25zIGV2ZW50VHJhY2tpbmdSZWdpb25zOworCisgICAg
Ly8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZyYW1lIGFz
IGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQgaGVyZS4K
ICAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IHN1
YmZyYW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBGcmFtZVZpZXcqIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CisgICAgICAg
IGF1dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghc3Vi
ZnJhbWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2MCw3ICsxNjMsNyBAQCBF
dmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRy
YWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgICAgICBldmVudFRyYWNraW5nUmVnaW9ucy51bml0
ZShzdWJmcmFtZVJlZ2lvbik7CiAgICAgfQogCi0gICAgRG9jdW1lbnQ6OlJlZ2lvbkZpeGVkUGFp
ciB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0ZVJlZ2lvbkZv
ckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0cygpKTsKKyAg
ICBhdXRvIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFic29sdXRlUmVn
aW9uRm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRUYXJnZXRzKCkp
OwogICAgIGJvb2wgd2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQgPSB3aGVlbEhhbmRsZXJSZWdp
b24uc2Vjb25kOwogICAgIGlmICh3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCkgewogICAgICAg
ICAvLyBGSVhNRTogbmVlZCB0byBoYW5kbGUgcG9zaXRpb246c3RpY2t5IGhlcmUgdG9vLgpAQCAt
MTcyLDYgKzE3NSw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAKICAgICAvLyBGSVhNRTog
SWYgdGhpcyBpcyBub3QgdGhlIG1haW4gZnJhbWUsIHdlIGNvdWxkIGNsaXAgdGhlIHJlZ2lvbiB0
byB0aGUgZnJhbWUncyBib3VuZHMuCiAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMudW5pdGVTeW5j
aHJvbm91c1JlZ2lvbihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24pOworCiAgICAgcmV0dXJuIGV2ZW50VHJhY2tpbmdSZWdpb25zOwogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA5ZTcwZTlkMzZiOTk1ZWRjYmVh
MjkyNTQzNjczNjZjNDkxOGEzYmMxLi5iMTExNjRmMDg1NWRiZGYyNWY2YjFjNjg2ZjcxNmI0Njcy
MzJjNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEtleWVkQ29kaW5nX2gKLSNkZWZpbmUgS2V5ZWRDb2RpbmdfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNTYsNyAr
MTU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3Ry
aW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1
ZSkKQEAgLTIxMSw1ICsyMTAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gS2V5ZWRDb2RpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhC
b3guaAppbmRleCBlN2E5NzhhOWM4YzA1MjhkMjljYTBlMGQzN2NjOWY0YzdlZDc3MTA3Li4zZTBm
MjE4NGU2ODZkMGVkYzBjZWEzOWIzNDU4ZTc0ZjZjNmVhNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhCb3guaApAQCAtMTksOCArMTksNyBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogKi8KIAotI2lmbmRlZiBMZW5ndGhCb3hfaAotI2RlZmluZSBMZW5ndGhCb3hfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJXcml0aW5nTW9k
ZS5oIgpAQCAtMzEsMTIgKzMwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIEJveEV4dGVudCB7CiBwdWJsaWM6CiAgICAgQm94RXh0ZW50KCkKLSAg
ICAgICAgOiBtX3NpZGVzKHt7IFQoMCksIFQoMCksIFQoMCksIFQoMCkgfX0pCisgICAgICAgIDog
bV9zaWRlcyh7IHsgeyAwIH0sIHsgMCB9LCB7IDAgfSwgeyAwIH0gfSB9KQogICAgIHsKICAgICB9
CiAKICAgICBCb3hFeHRlbnQoY29uc3QgVCYgdG9wLCBjb25zdCBUJiByaWdodCwgY29uc3QgVCYg
Ym90dG9tLCBjb25zdCBUJiBsZWZ0KQotICAgICAgICA6IG1fc2lkZXMoe3sgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0IH19KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdCB9IH0pCisgICAgeworICAgIH0KKworICAgIEJveEV4dGVudChUJiYgdG9wLCBUJiYg
cmlnaHQsIFQmJiBib3R0b20sIFQmJiBsZWZ0KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHN0ZDo6
Zm9yd2FyZDxUPih0b3ApLCBzdGQ6OmZvcndhcmQ8VD4ocmlnaHQpLCBzdGQ6OmZvcndhcmQ8VD4o
Ym90dG9tKSwgc3RkOjpmb3J3YXJkPFQ+KGxlZnQpIH0gfSkKICAgICB7CiAgICAgfQogCkBAIC0x
MzksOCArMTQzLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBMZW5ndGhCb3goY29u
c3QgTGVuZ3RoJiB0b3AsIGNvbnN0IExlbmd0aCYgcmlnaHQsIGNvbnN0IExlbmd0aCYgYm90dG9t
LCBjb25zdCBMZW5ndGgmIGxlZnQpCi0gICAgICAgIDogQm94RXh0ZW50KHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCkKKyAgICBMZW5ndGhCb3goTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwg
TGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQorICAgICAgICA6IEJveEV4dGVudCB7IFdU
Rk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0
KSB9CiAgICAgewogICAgIH0KIApAQCAtMTUwLDExICsxNTQsOSBAQCBwdWJsaWM6CiAgICAgfQog
fTsKIAotdHlwZWRlZiBCb3hFeHRlbnQ8TGF5b3V0VW5pdD4gTGF5b3V0Qm94RXh0ZW50OwotdHlw
ZWRlZiBCb3hFeHRlbnQ8ZmxvYXQ+IEZsb2F0Qm94RXh0ZW50OwordXNpbmcgTGF5b3V0Qm94RXh0
ZW50ID0gQm94RXh0ZW50PExheW91dFVuaXQ+OwordXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBCb3hF
eHRlbnQ8ZmxvYXQ+OwogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBMZW5ndGhCb3gmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTGVu
Z3RoQm94X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5jcHAKaW5kZXggMTY4Mzlj
Y2JhOGYwMTE5NWY3ZTQyZTZmYzFmZmVlNzIxNTlhZjFmYi4uN2YzNTBlNzczODYzZDE2YzUzMDcx
YTJjNGFjMGZiNjk2YzgxZmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoU2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4g
dHMgPDwgc2l6ZS53aWR0aCgpIDw8ICIgIiA8PCBzaXplLmhlaWdodCgpOworICAgIHJldHVybiB0
cyA8PCBzaXplLndpZHRoIDw8ICIgIiA8PCBzaXplLmhlaWdodDsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oCmluZGV4IGQ3MTNlMTg5
MmM1YTVjNGIzY2MwNWYzODkzMmYyYjYxNTYxYmYxNzguLjYwNTIzZWVjNmNiMzJkMTAxYmQxZDI0
NDE0MDQ1Y2E2NjM0NGU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgKQEAg
LTEsNiArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOCw0OCArMTcsMjcg
QEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgTGVuZ3Ro
U2l6ZV9oCi0jZGVmaW5lIExlbmd0aFNpemVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJM
ZW5ndGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoU2l6ZSB7Ci1w
dWJsaWM6Ci0gICAgTGVuZ3RoU2l6ZSgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBMZW5ndGhT
aXplKExlbmd0aCB3aWR0aCwgTGVuZ3RoIGhlaWdodCkKLSAgICAgICAgOiBtX3dpZHRoKFdURk1v
dmUod2lkdGgpKQotICAgICAgICAsIG1faGVpZ2h0KFdURk1vdmUoaGVpZ2h0KSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFNpemUmIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9oZWlnaHQgPT0g
by5tX2hlaWdodDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB3aWR0aCkgeyBt
X3dpZHRoID0gV1RGTW92ZSh3aWR0aCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi0gICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIGhlaWdo
dCkgeyBtX2hlaWdodCA9IFdURk1vdmUoaGVpZ2h0KTsgfQotICAgIGNvbnN0IExlbmd0aCYgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLQotcHJpdmF0ZToKLSAgICBMZW5ndGgg
bV93aWR0aDsKLSAgICBMZW5ndGggbV9oZWlnaHQ7CisgICAgTGVuZ3RoIHdpZHRoOworICAgIExl
bmd0aCBoZWlnaHQ7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFNp
emUmIGEsIGNvbnN0IExlbmd0aFNpemUmIGIpCit7CisgICAgcmV0dXJuIGEud2lkdGggPT0gYi53
aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKK30KKwogaW5saW5lIExlbmd0aFNpemUgYmxl
bmQoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGRvdWJsZSBw
cm9ncmVzcykKIHsKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZChmcm9tLndpZHRoKCksIHRv
LndpZHRoKCksIHByb2dyZXNzKSwgYmxlbmQoZnJvbS5oZWlnaHQoKSwgdG8uaGVpZ2h0KCksIHBy
b2dyZXNzKSk7CisgICAgcmV0dXJuIHsgYmxlbmQoZnJvbS53aWR0aCwgdG8ud2lkdGgsIHByb2dy
ZXNzKSwgYmxlbmQoZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgcHJvZ3Jlc3MpIH07CiB9CiAKIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFNpemUmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTGVuZ3RoU2l6ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzNDAwMTRhZDVhOTk1MzU5YWY3YjY5OWM1MjhkZDM4
MDMyMDk1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLSNkZWZpbmUg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaAotCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
Ci0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXM7Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7
Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNWb2ljZTsKLSAgICAKLWNsYXNzIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4g
Y3JlYXRlKFNwZWVjaFN5bnRoZXNpcyopOwotICAgIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplVm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mKTsKLSAg
ICB2b2lkIHBsYXRmb3JtU3BlYWsoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik7Ci0gICAgCi1w
cml2YXRlOgotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwot
Ci0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVjaFN5bnRoZXNpczsKLX07Ci0gICAgCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmNwcAppbmRleCAxZjIwN2Y0NDM2Njk5YjRkMWM4NDVkNzBjY2M3MjlkMzZlOTBiYmEyLi4xMGE4
MzBlMzljN2I3ZmVkODkzOGVjMGI1NDAwMGVlODQ3Y2UwYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzAsMTYgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCog
Y2xpZW50KQorUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKIH0KICAgICAK
LVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50
KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAsIG1f
cmF0ZSgxLjBmKQotICAgICwgbV9waXRjaCgxLjBmKQoraW5saW5lIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQo
JmNsaWVudCkKIHsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IGE4NjliYjg3Mjg0
ZGM1OWUwN2VlNjQyMzM2ZWFkMThjYTljNWQ4ODQuLmUwODc3NWIyNWVmNDAwZTY2YmRjMmU4ZGM0
NWM4MmI2ZjEwYzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyMSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
X2gKLSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICAvLyBJbXBsZW1lbnQgbWV0aG9kcyBh
cyBuZWVkZWQuCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQoKSB7IH0KIH07CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZUNsaWVudCopOwotICAgIAorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNs
aWVudCYpOworCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0
OyB9CiAgICAgCkBAIC03NCwyMCArNjYsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqKTsKKyAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYpOwogCiAgICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3RleHQ7
CiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gbV92b2ljZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsKLSAgICBmbG9hdCBtX3JhdGU7Ci0g
ICAgZmxvYXQgbV9waXRjaDsKLSAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZmxvYXQgbV92
b2x1bWUgeyAxIH07CisgICAgZmxvYXQgbV9yYXRlIHsgMSB9OworICAgIGZsb2F0IG1fcGl0Y2gg
eyAxIH07CisgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgMCB9OwogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0j
ZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cAppbmRleCA1ODBmMTlkMTY3OGRlOTVlZmU2Yzk3MjAwNTlkMGViNjJiM2QwMWI4Li4yNDM3NmNk
ZTkyMzA4ZjY2MDMwN2EzY2QzNWQ2ZGZiNzFkNTUyZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE3ICsz
MCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBs
YW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCitSZWY8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBs
YW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBs
YW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2Fs
U2VydmljZSwgaXNEZWZhdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK1JlZjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlKTsKIH0KLSAgICAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29s
IGlzRGVmYXVsdCkKKworaW5saW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlz
RGVmYXVsdCkKICAgICA6IG1fdm9pY2VVUkkodm9pY2VVUkkpCiAgICAgLCBtX25hbWUobmFtZSkK
ICAgICAsIG1fbGFuZyhsYW5nKQpAQCAtNDksMTIgKzQ5LDYgQEAgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZv
aWNlVVIKIHsKIH0KIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSgpCi0gICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKLSAgICAsIG1f
ZGVmYXVsdChmYWxzZSkKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggMzQzYjllN2JhY2Yx
NWU0OTkzMjA4ZjU1ODE0ZmNlMzdmNzQ1MWQ5ZC4uMDE1OGIzNDk4NGRmNTYxZWNhN2ViZmU3NDMw
ZmU4ODNmOWExOTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIxICsyMywxOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2VfaAotI2RlZmluZSBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlz
RGVmYXVsdCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29s
IGlzRGVmYXVsdCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
PiBjcmVhdGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VVUkkoKSBjb25zdCB7IHJldHVy
biBtX3ZvaWNlVVJJOyB9CiAgICAgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBTdHJpbmcmIHZvaWNl
VVJJKSB7IG1fdm9pY2VVUkkgPSB2b2ljZVVSSTsgfQpAQCAtNTYsMTcgKzUzLDE1IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0
cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UoKTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgPSBkZWZh
dWx0OwogCiAgICAgU3RyaW5nIG1fdm9pY2VVUkk7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBT
dHJpbmcgbV9sYW5nOwotICAgIGJvb2wgbV9sb2NhbFNlcnZpY2U7Ci0gICAgYm9vbCBtX2RlZmF1
bHQ7CisgICAgYm9vbCBtX2xvY2FsU2VydmljZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RlZmF1
bHQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggY2Jm
ZmU2ZTFjODEyYjRkZGQxNGU0NzAwM2E4Nzg0OGI0ZWYxYWRjYi4uYjg5ZDU2NjExM2Y1Y2M3ZmRl
NWU0ZWU0YjU4YThjMjlhOWI2NDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MiwxNCArNjIsMTQgQEAgU2Nyb2xsVmlldzo6
flNjcm9sbFZpZXcoKQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFBhc3NSZWZQ
dHI8V2lkZ2V0PiBwcnBDaGlsZCkgCit2b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFdpZGdldCYg
Y2hpbGQpCiB7Ci0gICAgV2lkZ2V0KiBjaGlsZCA9IHBycENoaWxkLmdldCgpOwotICAgIEFTU0VS
VChjaGlsZCAhPSB0aGlzICYmICFjaGlsZC0+cGFyZW50KCkpOwotICAgIGNoaWxkLT5zZXRQYXJl
bnQodGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hZGQocHJwQ2hpbGQpOwotICAgIGlmIChjaGlsZC0+
cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcGxhdGZvcm1BZGRDaGlsZChjaGlsZCk7CisgICAg
QVNTRVJUKCZjaGlsZCAhPSB0aGlzKTsKKyAgICBBU1NFUlQoIWNoaWxkLnBhcmVudCgpKTsKKyAg
ICBjaGlsZC5zZXRQYXJlbnQodGhpcyk7CisgICAgbV9jaGlsZHJlbi5hZGQoY2hpbGQpOworICAg
IGlmIChjaGlsZC5wbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBwbGF0Zm9ybUFkZENoaWxkKCZj
aGlsZCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGlsZCkK
QEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNTY3JvbGxiYXJJbnRlcm5h
bChSZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyLCBTY3JvbGxiYXIKIAogICAgIGlmIChoYXNC
YXIgJiYgIXNjcm9sbGJhcikgewogICAgICAgICBzY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIo
b3JpZW50YXRpb24pOwotICAgICAgICBhZGRDaGlsZChzY3JvbGxiYXIuZ2V0KCkpOworICAgICAg
ICBhZGRDaGlsZCgqc2Nyb2xsYmFyKTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHNjcm9sbGJh
ci5nZXQoKSwgb3JpZW50YXRpb24pOwogICAgICAgICBzY3JvbGxiYXItPnN0eWxlQ2hhbmdlZCgp
OwogICAgICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKQEAgLTgyOSwxMiArODI5LDYgQEAg
dm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSkKICAgICB3aW5kb3ctPmludmFsaWRhdGVSb290VmlldyhJbnRSZWN0KCkpOwogfQogCi1ib29s
IFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCi17Ci0gICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9s
bCwgY2xpcFJlY3QpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnNj
cm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKIHsKICAgICBo
b3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwodXBkYXRlUmVjdCk7
CkBAIC0xMDM4LDE3ICsxMDMyLDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6ZnJhbWVSZWN0c0NoYW5n
ZWQoKQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAgICAgICByZXR1cm47Ci0KLSAg
ICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJl
bi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRv
ciBjdXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50
KQotICAgICAgICAoKmN1cnJlbnQpLT5mcmFtZVJlY3RzQ2hhbmdlZCgpOworICAgIGZvciAoYXV0
byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+ZnJhbWVSZWN0c0NoYW5nZWQo
KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQoKQogewotICAgIEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgp
OwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJl
bnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAg
ICAgICgqY3VycmVudCktPmNsaXBSZWN0Q2hhbmdlZCgpOworICAgIGZvciAoYXV0byYgY2hpbGQg
OiBtX2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+Y2xpcFJlY3RDaGFuZ2VkKCk7CiB9CiAKIHN0
YXRpYyB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllciwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0xMTUwLDEwICsxMTQxLDYgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUs
IGJvb2wgZm9yY2VVcGRhdGUKICAgICBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCi17Ci19Ci0KIHZvaWQgU2Nyb2xs
Vmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnBhaW50
U2Nyb2xsQ29ybmVyKHRoaXMsIGNvbnRleHQsIGNvcm5lclJlY3QpOwpAQCAtMTM5Miw5ICsxMzc5
LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAg
ICBpZiAoIWlzU2VsZlZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsK
LSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c2V0UGFyZW50Vmlz
aWJsZSh2aXNpYmxlKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAg
ICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiB9CiAKIHZvaWQgU2Nyb2xsVmll
dzo6c2hvdygpCkBAIC0xNDAyLDkgKzEzODgsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNob3coKQog
ICAgIGlmICghaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIHNldFNlbGZWaXNpYmxlKHRydWUp
OwogICAgICAgICBpZiAoaXNQYXJlbnRWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8
UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgICAg
ICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxk
cmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0
UGFyZW50VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2No
aWxkcmVuKQorICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xNDE1LDkgKzE0MDAsOCBAQCB2b2lkIFNjcm9sbFZpZXc6
OmhpZGUoKQogewogICAgIGlmIChpc1NlbGZWaXNpYmxlKCkpIHsKICAgICAgICAgaWYgKGlzUGFy
ZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRl
cmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSGFzaFNldDxS
ZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUoZmFsc2Up
OworICAgICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgICAg
ICAgICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgICAgICB9CiAgICAgICAg
IHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKaW5kZXggZGI1NzBkZDk4NWIxNzcyNDA5YTUxNTBhZmQ3NjNjMzBjMjQ3MTQ4Yy4uNmIz
MWY5ODJmNDI4YjA4YWFiNTU5NjU4NWZkZmM3MTFhZjRlN2ZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCi0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorCiBP
QkpDX0NMQVNTIFdBS1Njcm9sbFZpZXc7CiBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKQEAgLTQ2LDYg
KzQ2LDcgQEAgT0JKQ19DTEFTUyBXQUtWaWV3OwogI2lmbmRlZiBOU1ZpZXcKICNkZWZpbmUgTlNW
aWV3IFdBS1ZpZXcKICNlbmRpZgorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIGRlZmluZWQgX19PQkpDX18KQEAgLTY0LDEwICs2NSwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsVmlldygpOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEg
ZnVuY3Rpb25zLgotICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25z
dCBvdmVycmlkZTsKLSAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9yaWVudGF0aW9uKSBj
b25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9mZnNldChj
b25zdCBTY3JvbGxPZmZzZXQmKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsQ29ybmVyVmlz
aWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVu
dGF0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9yaWVu
dGF0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9m
ZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSBmaW5hbDsKKyAgICBib29sIGlzU2Nyb2xsQ29ybmVy
VmlzaWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNj
cm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Q7CkBAIC04NSwx
NCArODYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgp
IGNvbnN0ID0gMDsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFu
ZCBpbnNwZWN0aW9uLgotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKKyAgICBjb25zdCBIYXNoU2V0
PFJlZjxXaWRnZXQ+PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZChXaWRnZXQmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jik7CiAKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9l
cyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZv
cm0gU2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0
YWluIHRob3NlIHNjcm9sbGJhcnMuCi0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9
Ci0gICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIGhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIu
Z2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3JvbGxW
aWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250
YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxkOyB9
CiAKICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMjEsNyArMTIyLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5
bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIGZpbmFsOwogCiAgICAgLy8gQnkg
ZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFyZWEgdGhhdCBp
cyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQgYmFja2luZyBz
dG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3IHBhaW50cyB0
aGUgZW50aXJlIGNvbnRlbnRzLgpAQCAtMTY3LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBJ
biB0aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3JvbGxp
bmcgKGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8gdXNl
CiAgICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRoZSBt
YWluZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1c3Qg
YmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhhcHBl
biB3aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNjYWxl
IG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9T
RG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CisgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVu
dFZpc2libGVSZWN0KS5zaXplKCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVj
dCYgdmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNp
YmxlQ29udGVudFJlY3Q7IH0KQEAgLTIxNywxMyArMjE4LDEzIEBAIHB1YmxpYzoKIAogICAgIC8v
IEZ1bmN0aW9ucyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBj
b250YWluZWQgaW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGluZGl2
aWR1YWwgd2lkdGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgV0VCQ09SRV9FWFBP
UlQgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsgLy8gQWx3YXlzIGF0IGxl
YXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkvdmlzaWJsZUhlaWdodCgpLgorICAgIFdF
QkNPUkVfRVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgZmluYWw7IC8vIEFsd2F5
cyBhdCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4K
ICAgICBpbnQgY29udGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndp
ZHRoKCk7IH0KICAgICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50
c1NpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29u
c3QgSW50U2l6ZSYpOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3VycmVu
dCBzY3JvbGxlZCBwb3NpdGlvbiAoYm90aCBhcyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGluZGl2
aWR1YWwgWCBhbmQgWSB2YWx1ZXMpLgotICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCk7IH0KKyAgICBTY3JvbGxQb3NpdGlvbiBzY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdh
Y3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CiAKICAgICBTY3JvbGxQb3Np
dGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsgLy8gVGhlIG1heGlt
dW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogCkBAIC0yNTgsNyArMjU5LDcgQEAg
cHVibGljOgogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSB2ZXJ5IHRvcCBvZiB0aGUgdmlldy4KICAg
ICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBkb2N1bWVudFNjcm9sbFBvc2l0aW9uUmVs
YXRpdmVUb1ZpZXdPcmlnaW4oKSBjb25zdDsKIAotICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgZmlu
YWw7CiAKICAgICB2b2lkIGNhY2hlQ3VycmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hlZFNj
cm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb24oKTsgfQogICAgIFNjcm9sbFBvc2l0aW9uIGNh
Y2hlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3NpdGlv
bjsgfQpAQCAtMzEzLDEzICszMTQsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNPZmZzY3JlZW4o
KSBjb25zdDsKIAogICAgIC8vIENhbGxlZCB3aGVuIG91ciBmcmFtZSByZWN0IGNoYW5nZXMgKG9y
IHRoZSByZWN0L3Njcm9sbCBwb3NpdGlvbiBvZiBhbiBhbmNlc3RvciBjaGFuZ2VzKS4KLSAgICB2
b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmFtZVJlY3RzQ2hh
bmdlZCgpIGZpbmFsOwogICAgIAogICAgIC8vIFdpZGdldCBvdmVycmlkZSB0byB1cGRhdGUgb3Vy
IHNjcm9sbGJhcnMgYW5kIG5vdGlmeSBvdXIgY29udGVudHMgb2YgdGhlIHJlc2l6ZS4KICAgICB2
b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBXaWRn
ZXQgb3ZlcnJpZGUgdG8gbm90aWZ5IG91ciBjb250ZW50cyBvZiBhIGNsaXByZWN0IGNoYW5nZS4K
LSAgICB2b2lkIGNsaXBSZWN0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFJlY3RD
aGFuZ2VkKCkgZmluYWw7CiAKICAgICAvLyBGb3IgcGxhdGZvcm1zIHRoYXQgbmVlZCB0byBoaXQg
dGVzdCBzY3JvbGxiYXJzIGZyb20gd2l0aGluIHRoZSBlbmdpbmUncyBldmVudCBoYW5kbGVycyAo
bGlrZSBXaW4zMikuCiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXJBdFBvaW50KGNvbnN0IEludFBv
aW50JiB3aW5kb3dQb2ludCk7CkBAIC0zNDMsMTMgKzM0NCwxMyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50
cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdpZGdldCBvdmVycmlkZXMgdG8gZW5zdXJl
IHRoYXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaXMga2VwdCB1cCB0byBkYXRl
IHdoZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
aG93KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBmaW5hbDsKICAgICAKICAgICAvLyBQYW4g
c2Nyb2xsaW5nLgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsK
QEAgLTM1NywyMSArMzU4LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVBhblNjcm9sbElj
b24oKTsKICAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwotICAg
IEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNQ
b2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBvaW50Jik7CisgICAgYm9vbCBzY3JvbGxi
YXJDb3JuZXJQcmVzZW50KCkgY29uc3Q7CisgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkg
Y29uc3QgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhj
b25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50
UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRG
cm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdW
aWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBJ
bnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxi
YXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZy
b21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBv
aW50JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmll
d1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgY29uc3QgZmlu
YWw7CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgYm9vbCBpc1Njcm9sbFZp
ZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldChjb25zdCBTY3JvbGxP
ZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpOwogCiBwcm90
ZWN0ZWQ6CkBAIC0zODQsMjYgKzM4MywyNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGF2YWls
YWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSA9IDA7CiAKICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gY3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KICAgICAv
LyBUaGV5IHJldHVybiB0cnVlIGlmIHRoZSBzY3JvbGxiYXIgd2FzIGFkZGVkIG9yIHJlbW92ZWQu
Ci0gICAgYm9vbCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRT
aXplQWZmZWN0ZWQgPSAwKTsKLSAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2ws
IGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSAwKTsKKyAgICBib29sIHNldEhhc0hvcml6b250
YWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCA9IG51bGxwdHIpOwor
ICAgIGJvb2wgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVB
ZmZlY3RlZCA9IG51bGxwdHIpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5l
cigpOwotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSA9IDA7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7
CiAKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscy4KLSAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCk7CisgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QpID0gMDsKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxp
ZGF0aW5nIGV2ZXJ5dGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CiAKICAgICB2b2lkIHNldFNjcm9sbE9yaWdp
bihjb25zdCBJbnRQb2ludCYsIGJvb2wgdXBkYXRlUG9zaXRpb25BdEFsbCwgYm9vbCB1cGRhdGVQ
b3NpdGlvblN5bmNocm9ub3VzbHkpOwogCiAgICAgLy8gU3ViY2xhc3NlZCBieSBGcmFtZVZpZXcg
dG8gY2hlY2sgdGhlIHdyaXRpbmctbW9kZSBvZiB0aGUgZG9jdW1lbnQuCi0gICAgdmlydHVhbCBi
b29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHRv
IHVwZGF0ZSB0aGUgc2Nyb2xsYmFycyB0byBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIHN0YXRlIG9m
IHRoZSB2aWV3LgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlv
biYgZGVzaXJlZFBvc2l0aW9uKTsKQEAgLTQxMSwyNyArNDEwLDI5IEBAIHByb3RlY3RlZDoKICAg
ICBmbG9hdCBwbGF0Zm9ybVRvcENvbnRlbnRJbnNldCgpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZv
cm1TZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZURl
ZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOworICAgIHZvaWQgaGFu
ZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdl
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxV
cGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNj
cm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0
JiwgY29uc3QgU2Nyb2xsT2Zmc2V0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbE9mZnNl
dENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiwgY29uc3Qg
U2Nyb2xsT2Zmc2V0JikgPSAwOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9p
ZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVu
b2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSA9IDA7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAg
ICAvLyBTaXplIGF2YWlsYWJsZSBmb3IgdmlldyBjb250ZW50cywgZXhjbHVkaW5nIGNvbnRlbnQg
aW5zZXRzLiBOb3QgYWZmZWN0ZWQgYnkgem9vbWluZy4KICAgICBJbnRTaXplIHNpemVGb3JVbm9i
c2N1cmVkQ29udGVudChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNs
dWRlU2Nyb2xsYmFycykgY29uc3Q7CiAKLSAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdElu
dGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNvbnRl
bnRSZWN0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3QgdmlzaWJsZUNvbnRl
bnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNp
YmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
SW50UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJ
bmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CiAKICAgICB2b2lk
IGNvbXBsZXRlVXBkYXRlc0FmdGVyU2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEp
OwogCiAgICAgYm9vbCBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChSZWZQdHI8U2Nyb2xsYmFyPiYs
IFNjcm9sbGJhck9yaWVudGF0aW9uLCBib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVBZmZl
Y3RlZCk7CiAKKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIFNjcm9sbGJhck1v
ZGUgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZTsKQEAgLTQ0Miw3ICs0NDMsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX3Byb2hpYml0c1Njcm9sbGluZzsKIAotICAgIEhhc2hTZXQ8UmVmUHRy
PFdpZGdldD4+IG1fY2hpbGRyZW47CisgICAgSGFzaFNldDxSZWY8V2lkZ2V0Pj4gbV9jaGlsZHJl
bjsKIAogICAgIC8vIFRoaXMgYm9vbCBpcyB1bnVzZWQgb24gTWFjIE9TIGJlY2F1c2Ugd2UgZGly
ZWN0bHkgYXNrIHRoZSBwbGF0Zm9ybSB3aWRnZXQKICAgICAvLyB3aGV0aGVyIGl0IGlzIHNhZmUg
dG8gYmxpdCBvbiBzY3JvbGwuCkBAIC00ODMsOSArNDg0LDkgQEAgcHJpdmF0ZToKIAogICAgIElu
dFJlY3QgcmVjdFRvQ29weU9uU2Nyb2xsKCkgY29uc3Q7CiAKLSAgICAvLyBDYWxsZWQgd2hlbiB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZpZXcgY2hhbmdlcy4gIEZyYW1lVmlldyBv
dmVycmlkZXMgdGhpcyB0byBnZW5lcmF0ZSByZXBhaW50IGludmFsaWRhdGlvbnMuCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIHsgfQor
ICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoaXMgdmlldyBj
aGFuZ2VzLiBGcmFtZVZpZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZh
bGlkYXRpb25zLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Ny
b2xsaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0Fm
dGVyU2Nyb2xsaW5nKCkgPSAwOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCop
OwogICAgIHZvaWQgcGxhdGZvcm1SZW1vdmVDaGlsZChXaWRnZXQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZS5oCmluZGV4IDU5MTE5NzhhZWVjMThmMDgzZmRiZjg1ZjFhZjNlZDI0MTc5MDExNjUuLjMx
NGE4ZGY3NTkwOTkxNTM5Mjc1YWFkNGEzOWRkOWI2YzhlYTZlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWUuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMZW5ndGhTaXpl
IGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0
aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB6
b29tZWRTaXplOyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSBzaXplIGZvciBh
IGNvbnRyb2wgaW4gem9vbWVkIGNvb3JkaW5hdGVzLiAgCi0gICAgdmlydHVhbCBMZW5ndGhTaXpl
IG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9h
dCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsgfQorICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVt
Q29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29t
RmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsg
fQogICAgIAogICAgIC8vIEFsbG93cyB0aGUgdGhlbWUgdG8gbW9kaWZ5IHRoZSBleGlzdGluZyBw
YWRkaW5nL2JvcmRlci4KICAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhDb250
cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwg
ZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uLmgKaW5kZXggOWEwZGYxNzAwOGYyMTc0YmQxN2ZiMzYxNjgzNzQ5NWE0
M2MxOGE3Yy4uOGY1YWQ5MzYyNzMxMWJlMjMyNjFmMTQ3OGNjNDZlYmVhZDNjZWY5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApAQCAtMiw3ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlz
IChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwyMSArMjIsMTYg
QEAKICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25faAotI2RlZmluZSBBbmltYXRpb25faAor
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaWYg
RU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0jaW5jbHVkZSAiQW5pbWF0aW9uVHJpZ2dl
ci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUg
IlRpbWluZ0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisj
aWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCisjaW5jbHVkZSAiQW5pbWF0aW9uVHJp
Z2dlci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMjAgKzU3LDIw
IEBAIHB1YmxpYzoKIAogICAgIC8vIEZsYWdzIHRoaXMgdG8gYmUgdGhlIHNwZWNpYWwgIm5vbmUi
IGFuaW1hdGlvbiAoYW5pbWF0aW9uLW5hbWU6IG5vbmUpCiAgICAgYm9vbCBpc05vbmVBbmltYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzTm9uZTsgfQorCiAgICAgLy8gV2UgY2FuIG1ha2UgcGxh
Y2Vob2xkZXIgQW5pbWF0aW9uIG9iamVjdHMgdG8ga2VlcCB0aGUgY29tbWEtc2VwYXJhdGVkIGxp
c3RzCiAgICAgLy8gb2YgcHJvcGVydGllcyBpbiBzeW5jLiBpc1ZhbGlkQW5pbWF0aW9uIG1lYW5z
IHRoaXMgaXMgbm90IGEgcGxhY2Vob2xkZXIuCiAgICAgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gIW1faXNOb25lICYmICFtX25hbWUuaXNFbXB0eSgpOyB9CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICghbV9kaXJlY3Rpb25T
ZXQgJiYgIW1fZHVyYXRpb25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKLSAgICAgICAgICAgICAgICAm
JiAhbV9uYW1lU2V0ICYmICFtX3BsYXlTdGF0ZVNldCAmJiAhbV9pdGVyYXRpb25Db3VudFNldAot
ICAgICAgICAgICAgICAgICYmICFtX2RlbGF5U2V0ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0ICYm
ICFtX3Byb3BlcnR5U2V0CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
ICAgICAgICAgICAgJiYgIW1fdHJpZ2dlclNldCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgICk7
CisgICAgICAgIGlmIChtX3RyaWdnZXJTZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKKyAgICAgICAgcmV0dXJuICFtX2RpcmVjdGlvblNldCAmJiAhbV9kdXJhdGlvblNldCAm
JiAhbV9maWxsTW9kZVNldAorICAgICAgICAgICAgJiYgIW1fbmFtZVNldCAmJiAhbV9wbGF5U3Rh
dGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRTZXQKKyAgICAgICAgICAgICYmICFtX2RlbGF5U2V0
ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0ICYmICFtX3Byb3BlcnR5U2V0OwogICAgIH0KIAogICAg
IGJvb2wgaXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkgY29uc3QKQEAgLTExNCwxMSArMTA5LDcgQEAg
cHVibGljOgogCiAgICAgZG91YmxlIGRlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheTsgfQog
Ci0gICAgZW51bSBBbmltYXRpb25Nb2RlIHsKLSAgICAgICAgQW5pbWF0ZUFsbCwKLSAgICAgICAg
QW5pbWF0ZU5vbmUsCi0gICAgICAgIEFuaW1hdGVTaW5nbGVQcm9wZXJ0eQotICAgIH07CisgICAg
ZW51bSBBbmltYXRpb25Nb2RlIHsgQW5pbWF0ZUFsbCwgQW5pbWF0ZU5vbmUsIEFuaW1hdGVTaW5n
bGVQcm9wZXJ0eSB9OwogCiAgICAgZW51bSBBbmltYXRpb25EaXJlY3Rpb24gewogICAgICAgICBB
bmltYXRpb25EaXJlY3Rpb25Ob3JtYWwsCkBAIC0xMzksMTAgKzEzMCwxMCBAQCBwdWJsaWM6CiAg
ICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVTY29wZU9yZGluYWwoKSBjb25zdCB7IHJl
dHVybiBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbDsgfQogICAgIEVBbmltUGxheVN0YXRlIHBsYXlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVBbmltUGxheVN0YXRlPihtX3BsYXlT
dGF0ZSk7IH0KICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9w
cm9wZXJ0eTsgfQotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbjsgfQorICAgIFRpbWluZ0Z1bmN0aW9u
KiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb24uZ2V0KCk7
IH0KICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBQYXNzUmVmUHRy
PEFuaW1hdGlvblRyaWdnZXI+IHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXI7IH0K
KyAgICBBbmltYXRpb25UcmlnZ2VyKiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0RGVsYXkoZG91YmxlIGMpIHsgbV9kZWxh
eSA9IGM7IG1fZGVsYXlTZXQgPSB0cnVlOyB9CkBAIC0xNTgsMTAgKzE0OSwxMCBAQCBwdWJsaWM6
CiAgICAgfQogICAgIHZvaWQgc2V0UGxheVN0YXRlKEVBbmltUGxheVN0YXRlIGQpIHsgbV9wbGF5
U3RhdGUgPSBkOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgdCkgeyBtX3Byb3BlcnR5ID0gdDsgbV9wcm9wZXJ0eVNldCA9IHRydWU7
IH0KLSAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IGYpIHsgbV90aW1pbmdGdW5jdGlvbiA9IGY7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0cnVlOyB9
CisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihSZWZQdHI8VGltaW5nRnVuY3Rpb24+JiYgZnVu
Y3Rpb24pIHsgbV90aW1pbmdGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyBtX3RpbWluZ0Z1
bmN0aW9uU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb25N
b2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19M
RVZFTF8yKQotICAgIHZvaWQgc2V0VHJpZ2dlcihQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+
IHQpIHsgbV90cmlnZ2VyID0gdDsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0
VHJpZ2dlcihSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4mJiB0cmlnZ2VyKSB7IG1fdHJpZ2dlciA9
IFdURk1vdmUodHJpZ2dlcik7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KICNlbmRpZgogCiAgICAg
dm9pZCBzZXRJc05vbmVBbmltYXRpb24oYm9vbCBuKSB7IG1faXNOb25lID0gbjsgfQpAQCAtMTk3
LDIyICsxODgsMjIgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZpbGxNb2RlIDogMjsKIAog
Ci0gICAgdW5zaWduZWQgbV9wbGF5U3RhdGUgICAgIDogMjsKKyAgICB1bnNpZ25lZCBtX3BsYXlT
dGF0ZSA6IDI7CiAKLSAgICBib29sIG1fZGVsYXlTZXQgICAgICAgICAgOiAxOwotICAgIGJvb2wg
bV9kaXJlY3Rpb25TZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX2R1cmF0aW9uU2V0ICAgICAgIDog
MTsKLSAgICBib29sIG1fZmlsbE1vZGVTZXQgICAgICAgOiAxOworICAgIGJvb2wgbV9kZWxheVNl
dCA6IDE7CisgICAgYm9vbCBtX2RpcmVjdGlvblNldCA6IDE7CisgICAgYm9vbCBtX2R1cmF0aW9u
U2V0IDogMTsKKyAgICBib29sIG1fZmlsbE1vZGVTZXQgOiAxOwogICAgIGJvb2wgbV9pdGVyYXRp
b25Db3VudFNldCA6IDE7Ci0gICAgYm9vbCBtX25hbWVTZXQgICAgICAgICAgIDogMTsKLSAgICBi
b29sIG1fcGxheVN0YXRlU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9wcm9wZXJ0eVNldCAgICAg
ICA6IDE7CisgICAgYm9vbCBtX25hbWVTZXQgOiAxOworICAgIGJvb2wgbV9wbGF5U3RhdGVTZXQg
OiAxOworICAgIGJvb2wgbV9wcm9wZXJ0eVNldCA6IDE7CiAgICAgYm9vbCBtX3RpbWluZ0Z1bmN0
aW9uU2V0IDogMTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBib29s
IG1fdHJpZ2dlclNldCAgICAgICAgOiAxOworICAgIGJvb2wgbV90cmlnZ2VyU2V0IDogMTsKICNl
bmRpZgogCi0gICAgYm9vbCBtX2lzTm9uZSAgICAgICAgICAgIDogMTsKKyAgICBib29sIG1faXNO
b25lIDogMTsKIAogcHVibGljOgogICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbERlbGF5KCkgeyBy
ZXR1cm4gMDsgfQpAQCAtMjIzLDEyICsyMTQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGluaXRpYWxOYW1lKCk7CiAgICAgc3RhdGljIEVBbmltUGxheVN0YXRlIGluaXRp
YWxQbGF5U3RhdGUoKSB7IHJldHVybiBBbmltUGxheVN0YXRlUGxheWluZzsgfQogICAgIHN0YXRp
YyBDU1NQcm9wZXJ0eUlEIGluaXRpYWxQcm9wZXJ0eSgpIHsgcmV0dXJuIENTU1Byb3BlcnR5SW52
YWxpZDsgfQotICAgIHN0YXRpYyBjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBpbml0
aWFsVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpj
cmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxUaW1pbmdG
dW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpOyB9
CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgc3RhdGljIGNvbnN0IFBh
c3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gaW5pdGlhbFRyaWdnZXIoKSB7IHJldHVybiBBdXRv
QW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblRy
aWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4gQXV0b0FuaW1hdGlvblRyaWdnZXI6OmNy
ZWF0ZSgpOyB9CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEFuaW1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uTGlzdC5jcHAKaW5kZXggNjI1ZDc5MDE1YTA3NDA2YTI5OTg4MDEzYTY1MjA2
YjUwODQyNzFlYS4uMGEzMjAyMjU0NTliMWZkMDY2MjY1ZWYyY2Q3YTU5ZGU3MjI1NzI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0
LmNwcApAQCAtMjYsMTUgKzI2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmluZSBG
SUxMX1VOU0VUX1BST1BFUlRZKHRlc3QsIHByb3BHZXQsIHByb3BTZXQpIFwKIGZvciAoaSA9IDA7
IGkgPCBzaXplKCkgJiYgYW5pbWF0aW9uKGkpLnRlc3QoKTsgKytpKSB7IH0gXAotaWYgKGkgPCBz
aXplKCkgJiYgaSAhPSAwKSB7IFwKK2lmIChpKSB7IFwKICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aSA8IHNpemUoKTsgKytpLCArK2opIFwKICAgICAgICAgYW5pbWF0aW9uKGkpLnByb3BTZXQoYW5p
bWF0aW9uKGopLnByb3BHZXQoKSk7IFwKIH0KIAogQW5pbWF0aW9uTGlzdDo6QW5pbWF0aW9uTGlz
dChjb25zdCBBbmltYXRpb25MaXN0JiBvdGhlcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG90aGVyLnNpemUoKTsgKytpKQotICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKEFuaW1h
dGlvbjo6Y3JlYXRlKG90aGVyLmFuaW1hdGlvbihpKSkpOworICAgIG1fYW5pbWF0aW9ucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBhbmltYXRp
b24gOiBvdGhlci5tX2FuaW1hdGlvbnMpCisgICAgICAgIG1fYW5pbWF0aW9ucy51bmNoZWNrZWRB
cHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKSk7CiB9CiAKIHZvaWQgQW5p
bWF0aW9uTGlzdDo6ZmlsbFVuc2V0UHJvcGVydGllcygpCkBAIC01NSw5ICs1NiwxMCBAQCBib29s
IEFuaW1hdGlvbkxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIpIGNv
bnN0CiB7CiAgICAgaWYgKHNpemUoKSAhPSBvdGhlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGFuaW1hdGlvbihp
KSAhPSBvdGhlci5hbmltYXRpb24oaSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaAppbmRleCBjODRjYjliMWQxNTE2M2QwNzY4OTM3NDYx
NzQwNmQ4NDk0MGRhYWZlLi5lYTdjOWI3OGExOTUwZjE1ZTk0ZmFhYmFhOTUxYjQ4MTU1MmY3Y2Nh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmgKQEAgLTIyLDggKzIyLDcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25MaXN0
X2gKLSNkZWZpbmUgQW5pbWF0aW9uTGlzdF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFu
aW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDYgKzM1LDcgQEAgY2xh
c3MgQW5pbWF0aW9uTGlzdCB7CiBwdWJsaWM6CiAgICAgQW5pbWF0aW9uTGlzdCgpIHsgfQogICAg
IEFuaW1hdGlvbkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYpOworICAgIEFuaW1hdGlvbkxpc3Qo
QW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGZpbGxVbnNldFByb3BlcnRp
ZXMoKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uTGlzdCYpIGNvbnN0OwpA
QCAtNDksMjIgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXplX3Qg
bikgeyBtX2FuaW1hdGlvbnMucmVzaXplKG4pOyB9CiAgICAgdm9pZCByZW1vdmUoc2l6ZV90IGkp
IHsgbV9hbmltYXRpb25zLnJlbW92ZShpKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
QW5pbWF0aW9uPiBhbmltYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0aW9uKTsK
LSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChhbmltYXRpb24pOwotICAgIH0KLSAgICAKLSAg
ICBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgeyByZXR1cm4gKm1fYW5pbWF0aW9uc1tp
XTsgfQotICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiAqbV9hbmltYXRpb25zW2ldOyB9CisgICAgdm9pZCBhcHBlbmQoUmVmPEFuaW1hdGlvbj4m
JiBhbmltYXRpb24pIHsgbV9hbmltYXRpb25zLmFwcGVuZChXVEZNb3ZlKGFuaW1hdGlvbikpOyB9
CisKKyAgICBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgeyByZXR1cm4gbV9hbmltYXRp
b25zW2ldLmdldCgpOyB9CisgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkp
IGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uc1tpXS5nZXQoKTsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oY29uc3QgQW5pbWF0aW9uTGlzdCYpOworICAg
IEFuaW1hdGlvbkxpc3QmIG9wZXJhdG9yPShBbmltYXRpb25MaXN0JiYpID0gZGVmYXVsdDsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8QW5pbWF0aW9uPj4gbV9hbmltYXRpb25zOworICAgIFZlY3RvcjxS
ZWY8QW5pbWF0aW9uPj4gbV9hbmltYXRpb25zOwogfTsgICAgCiAKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gQW5pbWF0aW9uTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAppbmRleCBmY2E0NWMx
MGQyMTA0ZjA1ZWRlYmI3ODgwMDE0YTI2M2E2NWIxZTExLi41ZWEwMWIyMGIyNjI3YjhkOTdiYTM1
ZjNlMmQ3Y2JlNGE1NTI5NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKQEAgLTIzLDI5ICsyMywyNCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvblRyaWdnZXJfaAotI2RlZmluZSBBbmlt
YXRpb25UcmlnZ2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05T
X0xFVkVMXzIpCiAKICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFu
aW1hdGlvblRyaWdnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRpb25UcmlnZ2VyPiB7CiBw
dWJsaWM6Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUo
KSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIGNsYXNzIEFuaW1hdGlvblRyaWdnZXJUeXBlIHsKLSAg
ICAgICAgQXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlLCBTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlw
ZQotICAgIH07CisgICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIH5BbmltYXRpb25UcmlnZ2VyKCkgeyB9CiAKKyAgICBlbnVt
IGNsYXNzIEFuaW1hdGlvblRyaWdnZXJUeXBlIHsgQXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlLCBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZSB9OwogICAgIEFuaW1hdGlvblRyaWdnZXJUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGJvb2wgaXNBdXRvQW5pbWF0aW9u
VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBBbmltYXRpb25UcmlnZ2VyVHlwZTo6
QXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlOyB9CkBAIC02MiwxNiArNTcsMTQgQEAgcHJvdGVjdGVk
OgogICAgIEFuaW1hdGlvblRyaWdnZXJUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIEF1dG9Bbmlt
YXRpb25UcmlnZ2VyIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgeworY2xhc3MgQXV0b0FuaW1h
dGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFJlZjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+QXV0b0FuaW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewogICAgICAgICBy
ZXR1cm4gb3RoZXIuaXNBdXRvQW5pbWF0aW9uVHJpZ2dlcigpOwogICAgIH0KQEAgLTgyLDIyICs3
NSwyMCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1hdGlv
blRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiB9OwogCi1jbGFzcyBTY3JvbGxBbmltYXRpb25U
cmlnZ2VyIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgeworY2xhc3MgU2Nyb2xsQW5pbWF0aW9u
VHJpZ2dlciBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3RoIHN0
YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNjcm9sbEFuaW1hdGlv
blRyaWdnZXI+IGNyZWF0ZShMZW5ndGggc3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0
YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9s
bEFuaW1hdGlvblRyaWdnZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKCFvdGhlci5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzMyw5ICsxMjQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9l
bmRWYWx1ZSA9IGVuZFZhbHVlOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJp
Z2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBj
bG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNj
cm9sbEFuaW1hdGlvblRyaWdnZXIobV9zdGFydFZhbHVlLCBtX2VuZFZhbHVlKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIobV9zdGFydFZhbHVl
LCBtX2VuZFZhbHVlKSk7CiAgICAgfQogCiAgICAgTGVuZ3RoIG1fc3RhcnRWYWx1ZTsKQEAgLTE1
NCw1ICsxNDUsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FOSU1BVElPTl9UUklHR0VSKEF1
dG9BbmltYXRpb25UcmlnZ2VyLCBpc0F1dG9BbmltYXRpb25UcgogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19BTklNQVRJT05fVFJJR0dFUihTY3JvbGxBbmltYXRpb25UcmlnZ2VyLCBpc1Njcm9sbEFu
aW1hdGlvblRyaWdnZXIpOwogCiAjZW5kaWYKLQotI2VuZGlmIC8vIEFuaW1hdGlvblRyaWdnZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaAppbmRleCBmNWU2NjE2YTk3Y2Q1M2M2YmNhZTEzNWRkMzZjYzQ3YzJmYjdjOGNjLi5mY2Fh
M2MzZmZkYjZkZWIyYWJlZWJjOGQwMjBhMGQzOWRhMzJmNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaApAQCAtMjIsNTQgKzIy
LDUwIEBACiAgKgogICovCiAKLSNpZm5kZWYgVGltaW5nRnVuY3Rpb25faAotI2RlZmluZSBUaW1p
bmdGdW5jdGlvbl9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRleHRT
dHJlYW07CisKIGNsYXNzIFRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VGltaW5n
RnVuY3Rpb24+IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xv
bmUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IGNsb25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgewotICAg
ICAgICBMaW5lYXJGdW5jdGlvbiwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbiwg
U3ByaW5nRnVuY3Rpb24KLSAgICB9OwotICAgIAogICAgIHZpcnR1YWwgflRpbWluZ0Z1bmN0aW9u
KCkgeyB9CiAKKyAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7IExpbmVhckZ1bmN0aW9uLCBD
dWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9uLCBTcHJpbmdGdW5jdGlvbiB9OwogICAg
IFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAg
CisKICAgICBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gTGluZWFyRnVuY3Rpb247IH0KICAgICBib29sIGlzQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDdWJpY0JlemllckZ1bmN0aW9uOyB9CiAg
ICAgYm9vbCBpc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
U3RlcHNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBTcHJpbmdGdW5jdGlvbjsgfQotICAgIAotICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgPSAwOworCisgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mKSBjb25zdCA9IDA7
CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogcHJvdGVjdGVkOgotICAgIFRpbWluZ0Z1
bmN0aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQorICAgIGV4cGxpY2l0IFRpbWluZ0Z1bmN0
aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAg
IHsKICAgICB9Ci0gICAgCisKK3ByaXZhdGU6CiAgICAgVGltaW5nRnVuY3Rpb25UeXBlIG1fdHlw
ZTsKIH07CiAKIGNsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRpbWlu
Z0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMaW5lYXJUaW1pbmdG
dW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPExpbmVhclRpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdG
dW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1bmN0
aW9uKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+TGluZWFyVGltaW5nRnVuY3Rpb24oKSB7
IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVy
KSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3Ro
ZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1p
bmdGdW5jdGlvbigpOwogICAgIH0KQEAgLTgwLDYxICs3Niw1NCBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwogICAgIH0K
IH07CiAKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGlt
aW5nRnVuY3Rpb24gewogcHVibGljOgotICAgIGVudW0gVGltaW5nRnVuY3Rpb25QcmVzZXQgewot
ICAgICAgICBFYXNlLAotICAgICAgICBFYXNlSW4sCi0gICAgICAgIEVhc2VPdXQsCi0gICAgICAg
IEVhc2VJbk91dCwKLSAgICAgICAgQ3VzdG9tCi0gICAgfTsKKyAgICBlbnVtIFRpbWluZ0Z1bmN0
aW9uUHJlc2V0IHsgRWFzZSwgRWFzZUluLCBFYXNlT3V0LCBFYXNlSW5PdXQsIEN1c3RvbSB9Owog
ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCisgICAgc3Rh
dGljIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoZG91YmxlIHgxLCBkb3Vi
bGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEN1c3RvbSwgeDEsIHkxLCB4MiwgeTIp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bihDdXN0b20sIHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CiAgICAgfQogICAg
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0
ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpCisgICAgc3RhdGljIFJlZjxDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQogICAg
IHsKICAgICAgICAgc3dpdGNoIChwcmVzZXQpIHsKICAgICAgICAgY2FzZSBFYXNlOgotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bik7CiAgICAgICAgIGNhc2UgRWFzZUluOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlT3V0
OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKEVhc2VPdXQsIDAuMCwgMC4wLCAwLjU4LCAxLjApKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZU91dCwgMC4wLCAwLjAs
IDAuNTgsIDEuMCkpOwogICAgICAgICBjYXNlIEVhc2VJbk91dDoKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW5PdXQsIDAuNDIs
IDAuMCwgMC41OCwgMS4wKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW5PdXQsIDAuNDIs
IDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgIGNhc2UgQ3VzdG9tOgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24pOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgfkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSB7IH0KLSAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFs
CiAgICAgewotICAgICAgICBpZiAob3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkp
IHsKLSAgICAgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPigmb3RoZXIpOwotICAg
ICAgICAgICAgaWYgKG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgIT0gQ3VzdG9tKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID09IGN0Zi0+bV90aW1pbmdGdW5j
dGlvblByZXNldDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIG1feDEgPT0gY3Rm
LT5tX3gxICYmIG1feTEgPT0gY3RmLT5tX3kxICYmIG1feDIgPT0gY3RmLT5tX3gyICYmIG1feTIg
PT0gY3RmLT5tX3kyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgb3RoZXJDdWJpYyA9IHN0YXRpY19jYXN0PGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mPihvdGhlcik7CisgICAgICAgIGlmIChtX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0ICE9IG90aGVyQ3ViaWMubV90aW1pbmdGdW5jdGlvblByZXNldCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1fdGltaW5nRnVuY3Rpb25QcmVz
ZXQgIT0gQ3VzdG9tKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBt
X3gxID09IG90aGVyQ3ViaWMubV94MSAmJiBtX3kxID09IG90aGVyQ3ViaWMubV95MSAmJiBtX3gy
ID09IG90aGVyQ3ViaWMubV94MiAmJiBtX3kyID09IG90aGVyQ3ViaWMubV95MjsKICAgICB9CiAK
ICAgICBkb3VibGUgeDEoKSBjb25zdCB7IHJldHVybiBtX3gxOyB9CkBAIC0xNDksMjEgKzEzOCwy
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1feDIgPSB4MjsKICAgICAgICAgbV95MiA9IHkyOwogICAg
IH0KLSAgICAKKwogICAgIFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHRpbWluZ0Z1bmN0aW9uUHJlc2V0
KCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldDsgfQogICAgIHZvaWQgc2V0
VGltaW5nRnVuY3Rpb25QcmVzZXQoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KSB7IG1fdGlt
aW5nRnVuY3Rpb25QcmVzZXQgPSBwcmVzZXQ7IH0KLSAgICAKLSAgICBzdGF0aWMgY29uc3QgQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbiogZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCkKKworICAgIHN0
YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBkZWZhdWx0VGltaW5nRnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24qIGR0ZiA9IGNyZWF0ZSgpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGR0ZjsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGZ1bmN0aW9uID0gY3Jl
YXRlKCkubGVha1JlZigpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogCi0gICAg
UGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNlZCgpIGNv
bnN0CisgICAgUmVmPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2VkKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoMS4wIC0gbV94MiwgMS4wIC0gbV95
MiwgMS4wIC0gbV94MSwgMS4wIC0gbV95MSk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb25QcmVzZXQg
cHJlc2V0ID0gRWFzZSwgZG91YmxlIHgxID0gMC4yNSwgZG91YmxlIHkxID0gMC4xLCBkb3VibGUg
eDIgPSAwLjI1LCBkb3VibGUgeTIgPSAxLjApCiAgICAgICAgIDogVGltaW5nRnVuY3Rpb24oQ3Vi
aWNCZXppZXJGdW5jdGlvbikKQEAgLTE3NSw5ICsxNjQsOSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24obV90
aW1pbmdGdW5jdGlvblByZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKG1fdGltaW5nRnVu
Y3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKICAgICB9CiAKICAgICBkb3Vi
bGUgbV94MTsKQEAgLTE4OSwyNSArMTc4LDIxIEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0ZXBzVGlt
aW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGltaW5nRnVuY3Rpb24gewogcHVibGljOgotICAg
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShpbnQg
c3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0
aW9uPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9uKHN0ZXBzLCBzdGVwQXRTdGFy
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9uKHN0
ZXBzLCBzdGVwQXRTdGFydCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1Rp
bWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1p
bmdGdW5jdGlvbigxLCB0cnVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0ZXBz
VGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5TdGVw
c1RpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgaWYgKG90
aGVyLmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBjb25zdCBTdGVwc1Rp
bWluZ0Z1bmN0aW9uKiBzdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVybiBtX3N0ZXBzID09IHN0Zi0+bV9zdGVwcyAm
JiBtX3N0ZXBBdFN0YXJ0ID09IHN0Zi0+bV9zdGVwQXRTdGFydDsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghb3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyU3RlcHMg
PSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAgICAg
ICByZXR1cm4gbV9zdGVwcyA9PSBvdGhlclN0ZXBzLm1fc3RlcHMgJiYgbV9zdGVwQXRTdGFydCA9
PSBvdGhlclN0ZXBzLm1fc3RlcEF0U3RhcnQ7CiAgICAgfQogICAgIAogICAgIGludCBudW1iZXJP
ZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQpAQCAtMjE1LDcgKzIwMCw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc3RlcEF0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBBdFN0
YXJ0OyB9CiAgICAgdm9pZCBzZXRTdGVwQXRTdGFydChib29sIHN0ZXBBdFN0YXJ0KSB7IG1fc3Rl
cEF0U3RhcnQgPSBzdGVwQXRTdGFydDsgfQotICAgIAorCiBwcml2YXRlOgogICAgIFN0ZXBzVGlt
aW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgICAgICA6IFRpbWlu
Z0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCkBAIC0yMjQsOSArMjA5LDkgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9uKG1f
c3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rl
cHNUaW1pbmdGdW5jdGlvbihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CiAgICAgfQogICAgIAog
ICAgIGludCBtX3N0ZXBzOwpAQCAtMjQ3LDEzICsyMzIsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY3JlYXRlKDAsIDAsIDAsIDApOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAg
ICAgICBpZiAob3RoZXIuaXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBj
b25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiYgb3RoZXJTdHJpbmcgPSAqc3RhdGljX2Nhc3Q8Y29u
c3QgU3ByaW5nVGltaW5nRnVuY3Rpb24qPigmb3RoZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1f
bWFzcyA9PSBvdGhlclN0cmluZy5tX21hc3MgJiYgbV9zdGlmZm5lc3MgPT0gb3RoZXJTdHJpbmcu
bV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90aGVyU3RyaW5nLm1fZGFtcGluZyAmJiBtX2lu
aXRpYWxWZWxvY2l0eSA9PSBvdGhlclN0cmluZy5tX2luaXRpYWxWZWxvY2l0eTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghb3RoZXIuaXNTcHJpbmdUaW1p
bmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBv
dGhlclNwcmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uJj4ob3Ro
ZXIpOworICAgICAgICByZXR1cm4gbV9tYXNzID09IG90aGVyU3ByaW5nLm1fbWFzcyAmJiBtX3N0
aWZmbmVzcyA9PSBvdGhlclNwcmluZy5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXJT
cHJpbmcubV9kYW1waW5nICYmIG1faW5pdGlhbFZlbG9jaXR5ID09IG90aGVyU3ByaW5nLm1faW5p
dGlhbFZlbG9jaXR5OwogICAgIH0KIAogICAgIGRvdWJsZSBtYXNzKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNzOyB9CkBAIC0yNzksOSArMjYzLDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0g
ICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAg
IFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3RpZmZu
ZXNzLCBtX2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKG1fbWFzcywgbV9zdGlmZm5lc3MsIG1fZGFt
cGluZywgbV9pbml0aWFsVmVsb2NpdHkpKTsKICAgICB9CiAKICAgICBkb3VibGUgbV9tYXNzOwpA
QCAtMjkwLDkgKzI3NCw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1faW5pdGlhbFZlbG9jaXR5
OwogfTsKIAotY2xhc3MgVGV4dFN0cmVhbTsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFRpbWluZ0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDRmOWI1ZjU1Y2M4NDNmNGFiODdkZTM1
NTQzOWY4NmQ5Nzg2ZDE2ZWEuLmQxOGRiZGQ5NDQyNDY1ZDMzZTdlOWQwZTdkY2Y4NGU2ZTAzYzA1
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9CiAKICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWwo
dW5zaWduZWQgY2hhbm5lbCkgeyByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsgfQot
ICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBjaGFubmVsKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PEF1ZGlvQnVzKj4odGhpcyktPm1fY2hhbm5lbHNbY2hhbm5lbF0u
Z2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5l
bCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsgfQogICAgIEF1ZGlv
Q2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKTsKICAgICBjb25zdCBBdWRpb0No
YW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCAxZWM1M2Q4YTAxMjdm
YzE5YmE1OGJhNmQ0ZGYyYzlkMTlhOTc1NmJmLi42MTlhMmMwNDAyZTIxODVlOTMyZGRhMWRlMTE4
MmE0ZTFlNTBlMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCkBAIC0xNDAsMTIgKzE0MCwxMSBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOworICAgIGF1dG8gZGF0YSA9IGFkb3B0
Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERp
Y3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxs
cHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGZjNThmYjY1ZGZlZWRm
YzI1NWI1ZTljN2EyZWM3OGFlNmFlOTUyMDMuLjgyYjZiNjE1Njg3N2UwNDNjYzYxZDgzNmJhYTky
YTRiMmM0NzEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgS2V5ZWRFbmNvZGVyQ0ZfaAotI2RlZmluZSBLZXllZEVuY29kZXJD
Rl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsMjUgKzM2LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVu
Y29kZXJDRigpOwogICAgIH5LZXllZEVuY29kZXJDRigpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6
Ci0gICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtl
eSwgdWludDMyX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIGludDMyX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3Ry
aW5nJiBrZXksIGludDY0X3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3Qg
U3RyaW5nJiBrZXksIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZURvdWJsZShjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZVN0cmluZyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKworICAgIHZvaWQg
ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7
CisgICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBmaW5h
bDsKKyAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgZmluYWw7
CisgICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgZmluYWw7
CisgICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmRPYmplY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luT2JqZWN0
KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsKKyAgICB2b2lkIGVuZE9iamVjdCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2
b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheUVsZW1l
bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBi
ZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQXJyYXlF
bGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2
b2lkIGVuZEFycmF5KCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4gbV9yb290RGljdGlvbmFyeTsKIApAQCAtNjQsNSArNjMsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRFbmNvZGVyQ0ZfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzUHJvdmlkZXJFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKaW5kZXggYjM4ZDJjYWZlN2I2OTAzZGQ0NGZh
NmMzNmNlMzQwMWU4ZTczYjU2Yi4uNzc4MjAxNzQxMjdhZTVkYTM1YTYxYmE0YTg2YWQwZmJlMzRm
MzNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCkBAIC0yMywxMyArMjMsMTEg
QEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRl
ckVmbF9oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmxfaAorI3By
YWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgPHNw
ZWFrX2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03Niw1ICs3NCwz
IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKaW5kZXggZDQ5MjEzNjQzMDk5YzJiYTc0NWViZmQ2OTdlYjE1MWEzZmU1M2Zm
MS4uODFjYmVkNTNkMTE1ZTQ0ZjEzNGMxMjI2ZDYzNDYyYzU5OGU0NDkyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMjcs
NyArMTI3LDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJh
eVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRC
dWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdW
YXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
aW5kZXggMmQ3YjFjMzRmNzE5YjI0ODY3NzI2MjI1ZTEzYjk3NzQyZDJjYjNiYy4uZjkxYjRkZGIz
MzE1ZjY2ZWM0ZTBjMTlmZDI3MDY3M2I2YzQ3NWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5jb2Rl
ckdsaWJfaAotI2RlZmluZSBLZXllZEVuY29kZXJHbGliX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zOSwyNSArMzgsMjUg
QEAgcHVibGljOgogICAgIEtleWVkRW5jb2RlckdsaWIoKTsKICAgICB+S2V5ZWRFbmNvZGVyR2xp
YigpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIGVu
Y29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBmaW5hbDsKKworICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlQm9vbChjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3Qg
U3RyaW5nJiBrZXksIHVpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0
IFN0cmluZyYga2V5LCBpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQ2NF90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0
IFN0cmluZyYga2V5LCBmbG9hdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3Qg
U3RyaW5nJiBrZXksIGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbk9iamVj
dChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRPYmplY3QoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsKKyAg
ICB2b2lkIGVuZE9iamVjdCgpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0IFN0
cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFy
cmF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBm
aW5hbDsKKyAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRB
cnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5KCkgZmluYWw7CiAKICAgICBH
VmFyaWFudEJ1aWxkZXIgbV92YXJpYW50QnVpbGRlcjsKICAgICBWZWN0b3I8R1ZhcmlhbnRCdWls
ZGVyKiwgMTY+IG1fdmFyaWFudEJ1aWxkZXJTdGFjazsKQEAgLTY2LDUgKzY1LDMgQEAgcHJpdmF0
ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5jb2Rl
ckdsaWJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApp
bmRleCBkMDU2ZWJmZTIyYWFlODE1OTRlODhiYTRiMmU3ODIxNTM5ZGI3OTdhLi5hZjQ4YjBiOTI0
MmM1OTcwMGVlZWIzNjJjYWI2ZTAzZTVhZjZkMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMjcsMTUgKzI3LDEzIEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgRm9udENhY2hlX2gKLSNkZWZpbmUgRm9udENhY2hlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CkBAIC0yOTAsNSArMjg4LDMgQEAgaW5saW5lIHZvaWQgRm9udENhY2hl
OjpwbGF0Zm9ybVB1cmdlSW5hY3RpdmVGb250RGF0YSgpCiAjZW5kaWYKIAogfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAppbmRleCA5MzAzYTkwNWIwOTcxM2EyZDVjY2IyMzliMmQ5Nzc1ZGU4MTFhYTU2Li5hZDM4
MmY0MTVhM2I1MTBlZmU0MTNiZWY3YTlkYWNmMWRmOWMzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMy0y
MDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1p
a2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENlbnRl
ciBVU0EsIEluYy4KQEAgLTIyLDEwICsyMiwxNSBAQAogICoKICAqLwogCi0jaWZuZGVmIEZvbnRQ
bGF0Zm9ybURhdGFfaAotI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
KwogCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIkNPTVB0ci5oIgpAQCAtNDQsMjUgKzQ5
LDE4IEBACiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKEFQUEtJVCkKIE9CSkNfQ0xBU1MgTlNGb250OwogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RGb250
KiBDVEZvbnRSZWY7Ci0KICNlbmRpZgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5o
PgogdHlwZWRlZiBzdHJ1Y3QgSEZPTlRfXyogSEZPTlQ7CkBAIC03MCw3ICs2OCw2IEBAIGludGVy
ZmFjZSBJRFdyaXRlRm9udDsKIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiAjZW5kaWYKIAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKQEAgLTgyLDEw
ICs3OSw3IEBAIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewogcHVibGljOgogICAgIEZvbnRQbGF0
Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKICAgICBGb250UGxhdGZv
cm1EYXRhKCk7Ci0jaWYgIVVTRShGUkVFVFlQRSkKLSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmKSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLSAgICBGb250UGxhdGZvcm1E
YXRhKEZvbnRQbGF0Zm9ybURhdGEmJikgPSBkZWZhdWx0OworCiAgICAgRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAg
ICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwgRm9udFdpZHRo
VmFyaWFudCA9IFJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBBdXRvVGV4dFJlbmRl
cmluZyk7CiAKQEAgLTEwMywyNyArOTcsMzYgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgZmxvYXQgc2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJKTsKKyNl
bmRpZgogCi0jaWYgVVNFKENHKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKQogICAgIEZv
bnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgQ0dGb250UmVmLCBmbG9hdCBzaXplLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9vbCB1c2VHREkpOwot
I2VsaWYgVVNFKERJUkVDVDJEKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShE
SVJFQ1QyRCkKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIElEV3JpdGVG
b250KiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlx
dWUsIGJvb2wgdXNlR0RJKTsKLSNlbGlmIFVTRShDQUlSTykKLSAgICBGb250UGxhdGZvcm1EYXRh
KEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2ZvbnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBi
b2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENB
SVJPKQorICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgY2Fpcm9fZm9udF9m
YWNlX3QqLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKICNlbmRpZgogCiAj
aWYgVVNFKEZSRUVUWVBFKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoRmNQYXR0ZXJuKiwgY29uc3Qg
Rm9udERlc2NyaXB0aW9uJik7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2Vf
dCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKEZvbnRQbGF0Zm9ybURhdGEmJikgPSBkZWZhdWx0
OworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRh
Jik7CisgICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KEZvbnRQbGF0Zm9ybURhdGEmJikg
PSBkZWZhdWx0OwogICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKFdJTikKICAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9u
dC0+Z2V0KCkgOiAwOyB9CiAgICAgYm9vbCB1c2VHREkoKSBjb25zdCB7IHJldHVybiBtX3VzZUdE
STsgfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIENURm9udFJlZiBmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250LmdldCgpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQ1RGb250UmVmIHJlZ2lzdGVyZWRGb250KCkgY29uc3Q7IC8vIFJl
dHVybnMgbnVsbHB0ciBpZmYgdGhlIGZvbnQgaXMgbm90IHJlZ2lzdGVyZWQsIHN1Y2ggYXMgd2Vi
IGZvbnRzIChvdGhlcndpc2UgcmV0dXJucyBmb250KCkpLgogCkBAIC0xODksMTIgKzE5Miw2IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFVTRShGUkVFVFlQRSkKLSAgICBGb250UGxh
dGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwotI2Vsc2UKLSAg
ICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpID0g
ZGVmYXVsdDsKLSNlbmRpZgotCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtSXNFcXVh
bChvdGhlcikKQEAgLTIzMiwxMiArMjI5LDE1IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIHBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJikgY29uc3Q7CisKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBDR0Zsb2F0IGN0Rm9udFNpemUoKSBjb25zdDsKICNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgcGxhdGZvcm1EYXRhSW5pdChIRk9OVCwg
ZmxvYXQgc2l6ZSwgSERDLCBXQ0hBUiogZmFjZU5hbWUpOwogI2VuZGlmCisKICNpZiBVU0UoRlJF
RVRZUEUpCiAgICAgdm9pZCBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fZm9udF9mYWNlX3QqKTsKICNl
bmRpZgpAQCAtMjUzLDEzICsyNTMsMTYgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpICYmIChQTEFU
Rk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAwMDAwKSkKICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBtX2NnRm9u
dDsKICNlbmRpZgorCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIENPTVB0cjxJRFdyaXRlRm9udD4g
bV9kd0ZvbnQ7CiAgICAgQ09NUHRyPElEV3JpdGVGb250RmFjZT4gbV9kd0ZvbnRGYWNlOwogI2Vu
ZGlmCisKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+IG1f
c2NhbGVkRm9udDsKICNlbmRpZgorCiAjaWYgVVNFKEZSRUVUWVBFKQogICAgIFJlZlB0cjxGY1Bh
dHRlcm4+IG1fcGF0dGVybjsKICAgICBtdXRhYmxlIEZjVW5pcXVlUHRyPEZjRm9udFNldD4gbV9m
YWxsYmFja3M7CkBAIC0yODUsMTUgKzI4OCwxOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElP
UykKICAgICBib29sIG1faXNFbW9qaSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBib29sIG1fdXNlR0RJIHsgZmFsc2UgfTsKICNlbmRpZgorCiAjaWYgVVNFKEZS
RUVUWVBFKQogICAgIGJvb2wgbV9maXhlZFdpZHRoIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIAog
I2lmIFVTRShBUFBLSVQpCisKIC8vIE5TRm9udHMgYW5kIENURm9udFJlZnMgYXJlIHRvbGwtZnJl
ZS1icmlkZ2VkLgogaW5saW5lIENURm9udFJlZiB0b0NURm9udChOU0ZvbnQgKmZvbnQpCiB7CkBA
IC0zMDQsOSArMzEwLDExIEBAIGlubGluZSBOU0ZvbnQgKnRvTlNGb250KENURm9udFJlZiBmb250
KQogewogICAgIHJldHVybiAoTlNGb250ICopZm9udDsKIH0KKwogI2VuZGlmCiAKICNpZiBVU0Uo
Q0cpCisKIGNsYXNzIFNjb3BlZFRleHRNYXRyaXggewogcHVibGljOgogICAgIFNjb3BlZFRleHRN
YXRyaXgoQ0dBZmZpbmVUcmFuc2Zvcm0gbmV3TWF0cml4LCBDR0NvbnRleHRSZWYgY29udGV4dCkK
QEAgLTMzMCw4ICszMzgsNyBAQCBwcml2YXRlOgogICAgIENHQ29udGV4dFJlZiBtX2NvbnRleHQ7
CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV90ZXh0TWF0cml4OwogfTsKKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEZvbnRQbGF0Zm9ybURhdGFfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IGQ5MTlmZmRiZTU0ZmMyNTlhNjFmMTUxYWRlNzcwNWI3M2Q4MzYwMGMuLmZlMzdkMjUzNGJmYzEw
NzEyYjY0MDEyMWUyZjViZDIzMjRiYWViYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFwaGljc0xheWVyX2gKLSNkZWZpbmUgR3JhcGhp
Y3NMYXllcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCkBAIC04MCwxMSArNzksMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IG1fa2V5VGlt
ZShvdGhlci5tX2tleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbihvdGhlci5tX3Rp
bWluZ0Z1bmN0aW9uID8gb3RoZXIubV90aW1pbmdGdW5jdGlvbi0+Y2xvbmUoKSA6IG51bGxwdHIp
CisgICAgICAgICwgbV90aW1pbmdGdW5jdGlvbihvdGhlci5tX3RpbWluZ0Z1bmN0aW9uID8gUmVm
UHRyPFRpbWluZ0Z1bmN0aW9uPiB7IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkgfSA6
IG51bGxwdHIpCiAgICAgewogICAgIH0KIAorICAgIEFuaW1hdGlvblZhbHVlKEFuaW1hdGlvblZh
bHVlJiYpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBB
bmltYXRpb25WYWx1ZSYpID0gZGVsZXRlOworCiAgICAgZG91YmxlIG1fa2V5VGltZTsKICAgICBS
ZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiB9OwpAQCAtMTA0LDEyICsx
MDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5p
bWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKLSAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGNv
bnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIG90aGVyKQotICAgICAgICA6IEFuaW1hdGlvblZhbHVl
KG90aGVyKQotICAgICAgICAsIG1fdmFsdWUob3RoZXIubV92YWx1ZSkKLSAgICB7Ci0gICAgfQot
CiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByaXZhdGU6
CkBAIC0xMzQsMTAgKzEzMSwxMyBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IEFuaW1h
dGlvblZhbHVlKG90aGVyKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
dGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFs
dWUub3BlcmF0aW9ucygpLmFwcGVuZChvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKVtpXS0+Y2xv
bmUoKSk7CisgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRv
JiBvcGVyYXRpb24gOiBvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKSkKKyAgICAgICAgICAgIG1f
dmFsdWUub3BlcmF0aW9ucygpLnVuY2hlY2tlZEFwcGVuZChvcGVyYXRpb24tPmNsb25lKCkpOwog
ICAgIH0KIAorICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlJiYpID0gZGVmYXVsdDsKKwogICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAtMTYyLDEwICsxNjIs
MTMgQEAgcHVibGljOgogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZpbHRlckFuaW1h
dGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBBbmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQo
b3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVl
Lm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0
aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92
YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNo
ZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgpKTsKICAgICB9CiAKKyAgICBGaWx0ZXJBbmlt
YXRpb25WYWx1ZShGaWx0ZXJBbmltYXRpb25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAog
cHJpdmF0ZToKQEAgLTE4NSwxMyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICBLZXlmcmFtZVZhbHVl
TGlzdChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgICAgIDogbV9wcm9wZXJ0
eShvdGhlci5wcm9wZXJ0eSgpKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvdGhlci5tX3ZhbHVlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVu
ZChvdGhlci5tX3ZhbHVlc1tpXS0+Y2xvbmUoKSk7CisgICAgICAgIG1fdmFsdWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6IG90aGVyLm1fdmFsdWVzKQorICAgICAgICAgICAgbV92YWx1ZXMudW5jaGVja2Vk
QXBwZW5kKHZhbHVlLT5jbG9uZSgpKTsKICAgICB9CiAKLSAgICB+S2V5ZnJhbWVWYWx1ZUxpc3Qo
KQotICAgIHsKLSAgICB9CisgICAgS2V5ZnJhbWVWYWx1ZUxpc3QoS2V5ZnJhbWVWYWx1ZUxpc3Qm
JikgPSBkZWZhdWx0OwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QmIG9wZXJhdG9yPShjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewpAQCAtMjAwLDYgKzIwMiw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIEtleWZyYW1lVmFsdWVMaXN0
JiBvcGVyYXRvcj0oS2V5ZnJhbWVWYWx1ZUxpc3QmJikgPSBkZWZhdWx0OworCiAgICAgdm9pZCBz
d2FwKEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcCht
X3Byb3BlcnR5LCBvdGhlci5tX3Byb3BlcnR5KTsKQEAgLTIxMCwxMCArMjE0LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9
CiAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiAq
bV92YWx1ZXMuYXQoaSk7IH0KLSAgICAKKwogICAgIC8vIEluc2VydCwgc29ydGVkIGJ5IGtleVRp
bWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnQoc3RkOjp1bmlxdWVfcHRyPGNvbnN0
IEFuaW1hdGlvblZhbHVlPik7Ci0gICAgCisKIHByb3RlY3RlZDoKICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPGNvbnN0IEFuaW1hdGlvblZhbHVlPj4gbV92YWx1ZXM7CiAgICAgQW5pbWF0ZWRQ
cm9wZXJ0eUlEIG1fcHJvcGVydHk7CkBAIC0yMjUsNyArMjI5LDYgQEAgcHJvdGVjdGVkOgogY2xh
c3MgR3JhcGhpY3NMYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NMYXll
cik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotCiAgICAgZW51bSBjbGFzcyBU
eXBlIHsKICAgICAgICAgTm9ybWFsLAogICAgICAgICBQYWdlVGlsZWRCYWNraW5nLApAQCAtMjQx
LDcgKzI0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFR5cGUp
IHsgfQogCi0gICAgdHlwZWRlZiB1aW50NjRfdCBQbGF0Zm9ybUxheWVySUQ7CisgICAgdXNpbmcg
UGxhdGZvcm1MYXllcklEID0gdWludDY0X3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQg
cHJpbWFyeUxheWVySUQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICBHcmFwaGljc0xheWVy
Q2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtNjgzLDUgKzY4
NiwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIC8vIE91dHNpZGUgdGhlIFdlYkNv
cmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSB0aGUgZGVidWdnZXIuCiB2
b2lkIHNob3dHcmFwaGljc0xheWVyVHJlZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBs
YXllcik7CiAjZW5kaWYKLQotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IDgy
NDVkNGU2ZGE3MzUzODgyZWE5Y2UyN2E1MzcyNWUxY2ZlODE2ZGUuLjg1NDZjNzEyZjY0YTE3MDZk
NjIwYjM1MjM0NjRiZWY1NWJkOGNhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTIzLDIxICsyMywxOCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RNU2Vzc2lv
bl9oCi0jZGVmaW5lIENETVNlc3Npb25faAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
Q2xpZW50KCkgeyB9OworICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGllbnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVS
TCkgPSAwOwogCiAgICAgZW51bSB7CkBAIC02NCw3ICs2MSw2IEBAIGVudW0gQ0RNU2Vzc2lvblR5
cGUgewogCiBjbGFzcyBDRE1TZXNzaW9uIHsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uKCkgeyB9
CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbigpIHsgfQogCiAgICAgdmlydHVhbCBDRE1TZXNzaW9u
VHlwZSB0eXBlKCkgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVVbmtub3duOyB9CkBAIC03OSw1ICs3
NSwzIEBAIHB1YmxpYzoKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IGIxNzYzMjQ3YzEwMmY2OTBh
ODQ3YTI2OGI5OTA2Mjk3ZWJiNzRlNDMuLjkxNGEwYTI3N2YyYTQ2NzgzNjVlMzIzMjdkMDI2OWEy
MGJmOGNkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwCkBAIC00ODYsMTQgKzQ4NiwxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IHJlY3RGcm9tUG9seWdvbihjb25zdCBGbG9hdFBvaW50R3JhcGg6OlBvbHln
b24mCiAgICAgcmV0dXJuIEZsb2F0UmVjdCh0b3BMZWZ0LnZhbHVlKCksIGJvdHRvbVJpZ2h0LnZh
bHVlKCkpOwogfQogCi1QYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJl
Y3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IEJvcmRl
ckRhdGEmIGJvcmRlckRhdGEsIGZsb2F0IG91dGxpbmVPZmZzZXQsIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uLAotICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvcikKK1BhdGggUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHNGb3JP
dXRsaW5lKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgY29uc3QgQm9yZGVyRGF0YSYg
Ym9yZGVyRGF0YSwKKyAgICBmbG9hdCBvdXRsaW5lT2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ewogICAgIEFTU0VSVChib3JkZXJEYXRhLmhhc0JvcmRlclJhZGl1cygpKTsKLSAgICBGbG9hdFNp
emUgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJEYXRhLnRvcExlZnQoKS53aWR0aCgp
LnZhbHVlKCksIGJvcmRlckRhdGEudG9wTGVmdCgpLmhlaWdodCgpLnZhbHVlKCkpOwotICAgIEZs
b2F0U2l6ZSB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJEYXRhLnRvcFJpZ2h0KCku
d2lkdGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcFJpZ2h0KCkuaGVpZ2h0KCkudmFsdWUoKSk7
Ci0gICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRhdGEu
Ym90dG9tUmlnaHQoKS53aWR0aCgpLnZhbHVlKCksIGJvcmRlckRhdGEuYm90dG9tUmlnaHQoKS5o
ZWlnaHQoKS52YWx1ZSgpKTsKLSAgICBGbG9hdFNpemUgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0
U2l6ZShib3JkZXJEYXRhLmJvdHRvbUxlZnQoKS53aWR0aCgpLnZhbHVlKCksIGJvcmRlckRhdGEu
Ym90dG9tTGVmdCgpLmhlaWdodCgpLnZhbHVlKCkpOworCisgICAgRmxvYXRTaXplIHRvcExlZnRS
YWRpdXMgeyBib3JkZXJEYXRhLnRvcExlZnQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLnRv
cExlZnQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSB0b3BSaWdodFJhZGl1cyB7
IGJvcmRlckRhdGEudG9wUmlnaHQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcFJpZ2h0
KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXMgeyBi
b3JkZXJEYXRhLmJvdHRvbVJpZ2h0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS5ib3R0b21S
aWdodCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIGJvdHRvbUxlZnRSYWRpdXMg
eyBib3JkZXJEYXRhLmJvdHRvbUxlZnQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLmJvdHRv
bUxlZnQoKS5oZWlnaHQudmFsdWUoKSB9OwogCiAgICAgYXV0byByb3VuZGVkUmVjdCA9IFt0b3BM
ZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRS
YWRpdXMsIG91dGxpbmVPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yXSAoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZv
dW5kYXRpb25DRi5jcHAKaW5kZXggZDc1NDZlMjY4NzEzZjhkNDVjZDVjZjhmOTQ2YWVhZDVmNDQ5
ZGUyMC4uZTdiMGEyYzI4OGZlYWZiNDlmNGU0MzliOWM3ZjA0MTdjM2EzZWE3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNl
c3Npb25BVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQ0
LDE2ICs0NCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkZvdW5k
YXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25B
VkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKQogICAgIDogbV9wYXJl
bnQocGFyZW50KQotICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zZXNzaW9uSWQoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQogewogfQogCi1SZWZQdHI8VWludDhBcnJheT4gQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQorUmVmUHRyPFVp
bnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBVTlVTRURf
UEFSQU0oaW5pdERhdGEpOwogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CkBAIC03
NiwyOSArNzQsMjQgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNlcnRpZmlj
YXRlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlm
aWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRl
RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlLT5i
YXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CiAKLSAgICBDU3RyaW5n
IGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7CisgICAgYXV0byBhc3NldFN0ciA9IGtleUlELnV0Zjgo
KTsKKyAgICBhdXRvIGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhhc3NldElELmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYXNzZXRTdHIu
ZGF0YSgpKSwgYXNzZXRTdHIubGVuZ3RoKCkpOwogCiAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0g
bnVsbHB0cjsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlSZXF1ZXN0ID0gYWRvcHRDRihB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRhLmdldCgpLCBh
c3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOworICAgIGF1dG8ga2V5UmVxdWVzdCA9
IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0
YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKIAogICAgIGlmICgh
a2V5UmVxdWVzdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5m
bzsKICAgICAgICAgaWYgKGNmRXJyb3IpIHsKLSAgICAgICAgICAgIHVzZXJJbmZvID0gYWRvcHRD
RihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKLQotICAgICAgICAgICAgaWYgKHVzZXJJ
bmZvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYgdW5kZXJseWluZ0Vycm9yID0g
KENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9y
VW5kZXJseWluZ0Vycm9yS2V5KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHVzZXJJbmZvID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKSkgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvIHVuZGVybHlpbmdFcnJvciA9IChDRkVycm9yUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvclVuZGVybHlpbmdFcnJvcktleSkpCiAgICAgICAgICAg
ICAgICAgICAgIHN5c3RlbUNvZGUgPSBDRkVycm9yR2V0Q29kZSh1bmRlcmx5aW5nRXJyb3IpOwog
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBDRlJlbGVhc2UoY2ZFcnJvcik7CiAgICAgICAg
IH0KLQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNiw4ICs5OSw4IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKLSAgICByZXR1cm4g
VWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3QuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoa2V5UmVxdWVzdC5nZXQoKSkpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RG
TW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICNlbmRpZgogfQogCkBAIC0xMTcsNyArMTEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewotICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
YXV0byBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3Mo
KSksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVsbHB0ciwg
a2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CkBAIC0xMjUsNyArMTE4LDYgQEAgYm9vbCBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYgbmV4dE0KICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBz
eXN0ZW1Db2RlID0gMDsKICAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCmluZGV4IDY1MjRkMWRmMGIzMTBiNmZmZTk0NjVjNTQzODZhZGRiZjhhNGQ5ZmUuLjEy
YTZhNzkzMWVlZWFmNDAxNWZmYjU2NjBlM2Y3MDE3MDU1Y2FlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTIzLDExICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKQEAgLTM3LDI2ICszNywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCi1jbGFzcyBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CitjbGFzcyBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YoKSB7IH0KLQotICAgIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQotICAgIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0K
LSAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIGJvb2wgdXBkYXRlKFVpbnQ4
QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogbV9wYXJlbnQ7Ci0gICAgQ0RN
U2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIENE
TVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYg
cGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRDbGll
bnQoQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBmaW5hbCB7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQg
cmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWlu
dDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YmIG1fcGFyZW50OworICAgIGNvbnN0IFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0Owog
fTsKIAogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25DRl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBkMWEwNjNlMGZiNTg3Y2ZjMGQ1YTAxYjQxNTY3YTBiN2I2
ZGMwMmU1Li40OWQzNTA5MjIxNWM2ODE4NjJiMzExYjk2OGEwZjBlOTU3ODIzNjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAKQEAgLTExMjIsNiArMTEyMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAogfQog
CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKwogUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0YWtlUmVxdWVzdEZv
cktleVVSSShjb25zdCBTdHJpbmcmIGtleVVSSSkKIHsKICAgICBpZiAoIW1fYXZmV3JhcHBlcikK
QEAgLTExMzUsMTMgKzExMzYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnMKICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
Pih0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CisKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCAsIENETVNlc3Npb25DbGllbnQqKQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENETVNlc3Npb25DbGllbnQqKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQorCiAjZW5kaWYKIAogbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
YXNzZXRFcnJvckNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZGYwM2NjYjYxMjkwMTllMGM4ODQyNmQ3
ODBhYWVkZTUyNmUyMGIyOS4uYmJjMDVkNTA3ZjQyNTY2NzlmYjdkN2JjZjcyMGQ4NTI2YzFhYzM3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKLSNk
ZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIApAQCAtNjYsNSArNjYsMyBAQCBw
cm90ZWN0ZWQ6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYmE0OTYzNTk3ZGFkZjBlMmZjYzUyOGZjODFjYzMy
MTVlOGNkMmJlZS4uZmE0NDQ0YjFlY2ZhYTJjMGU2MjkwNzgwODVmZmE2ZmMyYjI5NmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCkBAIC05MjQsOCArOTI0LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkK
IAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIC8vIElmIHRoZXJlIGlz
IGEgdHJpZ2dlciB0aGF0IGRlcGVuZHMgb24gdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgY2Fubm90
IGFjY2VsZXJhdGUgdGhlIGFuaW1hdGlvbi4KLSAgICBpZiAoYW5pbS0+dHJpZ2dlcigpLT5pc1Nj
cm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewotICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
JiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0t
PnRyaWdnZXIoKS5nZXQoKSk7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KGFu
aW0tPnRyaWdnZXIoKSkpIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAo
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTI4MDUsNyArMjgwNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVB
bmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAg
aW50IGFuaW1hdGlvbkluZGV4ID0gMDsKICAgICAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb247Ci0gICAgCisKICAgICBpZiAoaXNLZXlmcmFtZSkgewogICAgICAg
ICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVy
dHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOwogICAgICAgICB2
YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FB
bmltYXRpb24uZ2V0KCkpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHUKICAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2
ZSk7CiAgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2
YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDI0LDEzICszMDI0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9u
KiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShm
aWxsTW9kZSk7CiB9CiAKLWNvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1W
YWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQorY29uc3QgVGltaW5nRnVuY3Rpb24mIEdyYXBo
aWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCiB7CiAgICAgaWYgKGFu
aW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAqYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7
CiAgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICByZXR1cm4gYW5p
bS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotICAgIAorICAgICAgICByZXR1cm4gKmFuaW0udGlt
aW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVm
YXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTMwNTQsOSArMzA1Myw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlm
cmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAg
ICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0
aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9u
LgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKLSAgICBp
ZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24o
dGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICph
bmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDg2LDEz
ICszMDgzLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlU
aW1lcyk7CiAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModmFsdWVzKTsKICAgICBrZXlmcmFt
ZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFmb3J3YXJkcyk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSw4ICszMTAyLDggQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAg
ICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGF1dG8mIHN0
YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZh
bHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBhdXRvJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsK
IAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKQEAgLTMxNDksMTAgKzMxNDYsOSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZv
ciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUg
c3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2lu
ZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcg
ZnVuY3Rpb24uCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24p
OwotICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3
YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMp
OwogCi0gICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9y
bU9wVHlwZSk7CisgICAgYXV0byB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVG
b3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKICAgICBpZiAodmFsdWVGdW5j
dGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24pCiAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKIApAQCAtMzIwNCw3ICsz
MjAwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9u
cy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZh
bHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
Zm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9u
KSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMp
OwpAQCAtMzI2MCw3ICszMjU2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKIAogICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzI4OCw3
ICszMjg0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCBkMjQ5N2MzMWRhYWIzYjRmYWQ5NTk1NGQ3NTNlMDZhMzJhNWY1
ZDY2Li4yMjNiMTVmZjBmZWM2MTMwNTJmOGY0MzQyOTZlNWRkZjBiMTBjMGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FB
bmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCBlMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUx
MTAzOWRmOWJlNDAwNzEwLi5kYzJiZTFiODc1YjRiZTdhZGVmZDY3MmFiYTgxYjZkZDA3ZTk2M2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDkgKzM1LDMzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBJbnRTaXplIG91dHNldFNpemVGb3JCbHVyKGZsb2F0
IHN0ZERldmlhdGlvbikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1
cjo6Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBz
dGREZXZpYXRpb24pKTsKKyAgICBhdXRvIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBzdGREZXZp
YXRpb24pKTsKIAotICAgIEludFNpemUgb3V0c2V0OwogICAgIC8vIFdlIHRha2UgdGhlIGhhbGYg
a2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJlY2F1c2Ugd2UgcnVuIGJv
eCBibHVyIHRocmVlIHRpbWVzLgotICAgIG91dHNldC5zZXRXaWR0aCgzICoga2VybmVsU2l6ZS53
aWR0aCgpICogMC41Zik7Ci0gICAgb3V0c2V0LnNldEhlaWdodCgzICoga2VybmVsU2l6ZS5oZWln
aHQoKSAqIDAuNWYpOwotCi0gICAgcmV0dXJuIG91dHNldDsKLX0KLQotRmlsdGVyT3BlcmF0aW9u
czo6RmlsdGVyT3BlcmF0aW9ucygpCi17Ci19Ci0KLUZpbHRlck9wZXJhdGlvbnMmIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikKLXsKLSAg
ICBtX29wZXJhdGlvbnMgPSBvdGhlci5tX29wZXJhdGlvbnM7Ci0gICAgcmV0dXJuICp0aGlzOwor
ICAgIHJldHVybiB7CisgICAgICAgIDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLAorICAgICAg
ICAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIKKyAgICB9OwogfQogCi1ib29sIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK2Jv
b2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
dGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0
aW9ucy5zaXplKCkpCisgICAgc2l6ZV90IHNpemUgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOworICAg
IGlmIChzaXplICE9IG90aGVyLm1fb3BlcmF0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHVuc2lnbmVkIHMgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzOyBpKyspIHsKLSAgICAgICAgaWYgKCptX29wZXJhdGlvbnNb
aV0gIT0gKm8ubV9vcGVyYXRpb25zW2ldKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmICgqbV9vcGVyYXRpb25zW2ldICE9ICpvdGhlci5tX29wZXJh
dGlvbnNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAogewotICAgIHNpemVfdCBudW1PcGVyYXRp
b25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICAvLyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1
bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlzdHMgZG9uJ3QgbWF0Y2gKLSAgICBpZiAo
bnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25zKCkuc2l6ZSgpKQorICAgIHNpemVfdCBz
aXplID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICBpZiAoc2l6ZSAhPSBvdGhlci5vcGVyYXRp
b25zKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgdHlw
ZXMgb2YgZWFjaCBmdW5jdGlvbiBhcmUgbm90IHRoZSBzYW1lLCB0aGUgbGlzdHMgZG9uJ3QgbWF0
Y2gKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJhdGlvbnM7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghb3BlcmF0
aW9ucygpW2ldLT5pc1NhbWVUeXBlKCpvdGhlci5vcGVyYXRpb25zKClbaV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg2LDggKzcwLDggQEAgYm9vbCBGaWx0ZXJPcGVy
YXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNv
bnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QK
IHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAobV9vcGVyYXRpb25zLmF0KGkpLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMp
IHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVG
RVJFTkNFKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk1LDkgKzc5LDkgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VG
aWx0ZXIoKSBjb25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25z
dAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBl
ID0gbV9vcGVyYXRpb25zLmF0KGkpLmdldCgpLT50eXBlKCk7Ci0gICAgICAgIGlmIChvcGVyYXRp
b25UeXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCBvcGVyYXRpb25UeXBlID09IEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29w
ZXJhdGlvbnMpIHsKKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAg
ICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCB0eXBlID09IEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDExICs5MCwxMCBAQCBib29sIEZpbHRlck9wZXJhdGlv
bnM6Omhhc091dHNldHMoKSBjb25zdAogRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpv
dXRzZXRzKCkgY29uc3QKIHsKICAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICptX29wZXJhdGlvbnMu
YXQoaSk7Ci0gICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgeworICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7CisgICAgICAgIHN3aXRjaCAob3Bl
cmF0aW9uLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
LSAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAg
ICAgYXV0byYgYmx1ck9wZXJhdGlvbiA9IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpv
cGVyYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7CiAgICAg
ICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0
U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOwpA
QCAtMTE4LDE0ICsxMDEsMTQgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRz
ZXRzKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgY29uc3QgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBhdXRv
JiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRT
aXplRm9yQmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAg
ICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygKKyAgICAgICAgICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cyB7CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAt
IGRyb3BTaGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBv
dXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAgICAg
ICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVyYXRp
b24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLndpZHRoKCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSkKLSAgICAgICAgICAgICk7CisgICAgICAgICAgICB9
OwogICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTM4LDI0ICsxMjEsMjYgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9vcGVyYXRpb25z
W2ldLT5hZmZlY3RzT3BhY2l0eSgpKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVy
YXRpb25zKSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPmFmZmVjdHNPcGFjaXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGlmIChtX29wZXJhdGlvbnNbaV0tPm1vdmVzUGl4ZWxzKCkpCisgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+bW92ZXNQ
aXhlbHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVy
cy5hdChpKTsKKyAgICAgICAgYXV0byBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwogICAgICAgICBp
ZiAoZmlsdGVyKQogICAgICAgICAgICAgdHMgPDwgKmZpbHRlcjsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaAppbmRleCBjZjJjNWI5YjYyNWNiNjY5YzhjNzE0ZTdkM2ZiYTdjMDgz
YTFkZDExLi40ODZmNjg2ZmFhNjk0M2E0NmIyYjhiMWFiNmMwYzdkYzE4ZGQ2Nzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEZpbHRlck9wZXJhdGlvbnNfaAotI2RlZmluZSBGaWx0ZXJPcGVyYXRpb25zX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSW50
UmVjdEV4dGVudC5oIgpAQCAtMzMsMzMgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdHlwZWRlZiBJbnRSZWN0RXh0ZW50IEZpbHRlck91dHNldHM7Cit1c2luZyBGaWx0ZXJPdXRz
ZXRzID0gSW50UmVjdEV4dGVudDsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVy
T3BlcmF0aW9ucygpOwotICAgIEZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0b3I9KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX29wZXJhdGlvbnMuY2xlYXIo
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0K
LSAgICAKICAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkg
eyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+PiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fb3BlcmF0aW9ucy5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuaXNFbXB0
eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6
ZSgpOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChp
bmRleCkuZ2V0KCkgOiAwOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3Bl
cmF0aW9uc1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICBib29sIG9wZXJhdGlvbnNN
YXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKQEAgLTcwLDYgKzU4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKICAg
ICBib29sIGhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3Rv
cjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9vcGVyYXRpb25zOwogfTsKQEAgLTc3LDUgKzY2
LDMgQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5jcHAKaW5kZXggMGJlZGQwYTU3NGMyNDk5ZTVlM2FjZTkyN2I1NDExZjk0MjAx
YTg1MC4uOWNjMWRmNmFkM2JlNTcyOWQzYjJhODE3OTNlNWE1NzA0YWUxZWRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMTI4LDE5ICsxMjgsMTYgQEAgc3RhdGlj
IGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVw
QXRTdGFydCwgZG91YmxlIHQKICAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0
ZXBzOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1
cmF0aW9uKQorc3RhdGljIGlubGluZSBmbG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJh
dGlvbikKIHsKLSAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gcHJvZ3Jl
c3M7Ci0KLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlv
bik7Ci0gICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLCBj
dGYtPnkxKCksIGN0Zi0+eDIoKSwgY3RmLT55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOworICAg
IGlmICh0aW1pbmdGdW5jdGlvbi5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAg
ICAgICBhdXRvJiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi54MSgpLCBjdGYueTEoKSwgY3RmLngyKCksIGN0Zi55MigpLCBwcm9ncmVzcywg
ZHVyYXRpb24pOwogICAgIH0KIAotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
LSAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwg
c3RmLT5zdGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKKyAgICBpZiAodGltaW5nRnVu
Y3Rpb24uaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byYgc3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYubnVtYmVyT2ZTdGVwcygpLCBzdGYu
c3RlcEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHBy
b2dyZXNzOwpAQCAtMTk0LDEzICsxOTEsMTIgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGYKICAg
ICByZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmlt
YXRpb25WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVy
biBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotCisgICAgaWYgKGFuaW1hdGlvblZhbHVl
LnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiAqYW5pbWF0aW9uVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiAqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0yNTcs
NyArMjUzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgp
ID09IDIpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0g
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgbV9hbmlt
YXRpb24uZ2V0KCkpOworICAgICAgICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksICptX2FuaW1hdGlvbik7CiAg
ICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rp
b24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBh
cHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEp
LCBub3JtYWxpemVkVmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjY2LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVk
VmFsdWUgLSBmcm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkp
OwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAg
ICAgYXV0byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sICptX2FuaW1hdGlvbik7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5v
cm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRl
eCA1ODRmZGFiZDkyNDdmYTU4ZDliMGYwZjA0NjhkNDI2MGE2NmQyMDVhLi5lZmJlODBmYWUwM2M0
Y2EyODg0ZGMyZmI5MmExNzdmZmFhYzAyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAt
NjAsNyArNjAsNyBAQCBAaW50ZXJmYWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09i
amVjdDxBVlNwZWVjaFN5bnRoZXNpemVyRGVsZWdhdGU+CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgKilpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKilzeW50aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0
dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAtODcs
NyArODcsNyBAQCAtIChmbG9hdCltYXBTcGVlY2hSYXRlVG9QbGF0Zm9ybVJhdGU6KGZsb2F0KXJh
dGUKICAgICByZXR1cm4gcmF0ZTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0ZXJhbmNl
CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBj
YWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0
c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAg
LSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pdXQKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9sdW1lOnV0dGVy
YW5jZS0+dm9sdW1lKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0
ZXJhbmNlLT5waXRjaCgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07Ci0g
ICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0
dGVyYW5jZSk7CiAKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5j
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4OWQyYWVlMDNl
MjI0NWMuLjJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTE1NSwxMCArMTU1LDEwIEBAIHN0
YXRpYyBMZW5ndGhTaXplIHNpemVGcm9tTlNDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIG5zQ29u
dHJvbFNpemUsIGNvbnN0IExlbmd0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikKICAgICAg
ICAgY29udHJvbFNpemUgPSBJbnRTaXplKGNvbnRyb2xTaXplLndpZHRoKCkgKiB6b29tRmFjdG9y
LCBjb250cm9sU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwogICAgIExlbmd0aFNpemUgcmVz
dWx0ID0gem9vbWVkU2l6ZTsKLSAgICBpZiAoem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRX
aWR0aChMZW5ndGgoY29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBpZiAoem9vbWVk
U2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgp
ID4gMCkKLSAgICAgICAgcmVzdWx0LnNldEhlaWdodChMZW5ndGgoY29udHJvbFNpemUuaGVpZ2h0
KCksIEZpeGVkKSk7CisgICAgaWYgKHpvb21lZFNpemUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8o
KSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmVzdWx0LndpZHRoID0geyBj
b250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCB9OworICAgIGlmICh6b29tZWRTaXplLmhlaWdodC5p
c0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgpID4gMCkKKyAgICAgICAg
cmVzdWx0LmhlaWdodCA9IHsgY29udHJvbFNpemUuaGVpZ2h0KCksIEZpeGVkIH07CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIGNo
ZWNrYm94TWFyZ2lucyhOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNp
emUgY2hlY2tib3hTaXplKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBh
bmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8u
Ci0gICAgaWYgKCF6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9v
bWVkU2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6
ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJp
bnNpY09yQXV0bygpKQogICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0
aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250
cm9sLgpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIHJhZGlvTWFyZ2lucyhO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNpemUgcmFkaW9TaXplKGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9h
dCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3Ro
IHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCF6b29tZWRT
aXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQoKS5p
c0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNp
Y09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAg
ICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRl
dGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgpAQCAtNzEzLDkgKzcx
Myw5IEBAIExlbmd0aFNpemUgVGhlbWVNYWM6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zCiAgICAgICAgICAgICByZXR1cm4gcmFkaW9T
aXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgogICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBz
cGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KLSAgICAgICAgICAgIHJldHVybiBzaXpl
RnJvbUZvbnQoZm9udCwgTGVuZ3RoU2l6ZSh6b29tZWRTaXplLndpZHRoKCksIExlbmd0aCgpKSwg
em9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21G
b250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNp
emVzKCkpOwogICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICBp
ZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXpl
LmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgICAgICBpZiAoIXpvb21lZFNp
emUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRy
aW5zaWNPckF1dG8oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKICAgICAg
ICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRyb2xTaXplRm9y
Rm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzI2LDE3ICs3MjYsMTcgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6
Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnMKIExlbmd0aFNpemUgVGhlbWVNYWM6Om1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAg
ICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICBjYXNlIElu
bmVyU3BpbkJ1dHRvblBhcnQ6ewotICAgICAgICAgICAgSW50U2l6ZSBiYXNlID0gc3RlcHBlclNp
emVzKClbTlNDb250cm9sU2l6ZU1pbmldOwotICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUo
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4oYmFzZS53aWR0aCgpICogem9vbUZhY3RvciksIEZpeGVk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+
KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUo
cGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgorICAg
IGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3Ip
LCBGaXhlZCB9IH07CisgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OiB7CisgICAgICAgIGF1
dG8mIGJhc2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07CisgICAgICAgIHJl
dHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4
ZWQgfSwKKyAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9v
bUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA0MzE1
Y2NjNTdhNWQxNWZjZGI1NjU5YzcxZjFiZmQ5ZmRlMjgyMTNjLi5lZDMwYWIwMzI3MDFjZGUzZDJh
NmRjNjkxNzgyZjczMmUxNWViYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wgZm9j
dXNlZCkKICAgICBpZiAoIWZvY3VzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBm
cmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKKyAgICBGcmFtZSogZnJhbWUgPSBG
cmFtZTo6ZnJhbWVGb3JXaWRnZXQoKnRoaXMpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmFk
NDM5N2EwNGMwNTU2MWM3YzFkNjA2N2FkZWM1MTU5ZjIzNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50TW9jay5oIgotCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURldmljZU1vdGlvbkNsaWVudE1vY2s6OkRldmljZU1vdGlvbkNs
aWVudE1vY2soKQotICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKCp0aGlzLCAm
RGV2aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCkKLSAgICAsIG1faXNVcGRhdGluZyhm
YWxzZSkKLXsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nv
bnRyb2xsZXIpOwotICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgQVNTRVJUKG1f
Y29udHJvbGxlcik7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRh
dGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IGZhbHNl
OwotICAgIG1fdGltZXIuc3RvcCgpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6
OnNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IG1vdGlvbikKLXsKLSAgICBt
X21vdGlvbiA9IG1vdGlvbjsKLSAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIERldmlj
ZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoKQotewotICAgIG1fdGltZXIuc3RvcCgpOwot
ICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1fbW90aW9uLmdldCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2M2MjY4MjhlYTRmMzk0MWRlNWJjZTAxNTM1ODhkMWIwNGNhZTk5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERldmljZU1vdGlvbkNsaWVudE1vY2tf
aAotI2RlZmluZSBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJU
aW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGV2aWNlTW90aW9uQ29udHJv
bGxlcjsKLQotLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIERldmljZU1vdGlvbkNsaWVudCB1
c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KLS8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMg
c2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCi0vLyBj
bGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgotY2xhc3MgRGV2aWNlTW90aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewotcHVibGljOgotICAgIERldmlj
ZU1vdGlvbkNsaWVudE1vY2soKTsKLQotICAgIC8vIERldmljZU1vdGlvbkNsaWVudAotICAgIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKLSAgICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9tb3Rpb24uZ2V0KCk7IH0KLSAgICAvLyBtb2NrIGlzIG93bmVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yaywgd2hpY2ggc2hvdWxkIGhhbmRsZSBkZWxldGlvbgotICAgIHZv
aWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotCi0gICAg
dm9pZCBzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPik7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCB0aW1lckZpcmVkKCk7Ci0KLSAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4g
bV9tb3Rpb247Ci0gICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFRpbWVyIG1fdGltZXI7Ci0gICAgYm9vbCBtX2lzVXBkYXRpbmc7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAKaW5kZXggMzg4MTFmYzEwODE4OGNm
ZTI2ZTE4MGYwMGY5ZjUwZmQ2MTVkYjdkMy4uN2E5OTMxMzZiYTJjM2EwNWQyZDMxOTZhNTU2Nzcx
OGEwMGRhZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNv
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAK
QEAgLTQwLDEwICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIFJlZlB0
cjxTaGFyZWRDdXJzb3I+IGltcGw7Ci0KICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0g
ZGV0ZXJtaW5lSG90U3BvdChpbWcsIGhvdFNwb3QpOwogICAgIHN0YXRpYyBib29sIGRvQWxwaGEg
PSB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NYUDsKICAgICBCaXRtYXBJbmZvIGN1cnNvcklt
YWdlID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoaW1nLT53aWR0aCgpLCBpbWctPmhlaWdo
dCgpKSk7CkBAIC01Miw4ICs1MCw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
Y3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgYXV0
byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwog
ICAgIGlmIChkb0FscGhhKSB7CiAgICAgICAgIGF1dG8gaEN1cnNvciA9IGFkb3B0R0RJT2JqZWN0
KDo6Q3JlYXRlRElCU2VjdGlvbihkYywgJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgbnVs
bHB0ciwgMCwgMCkpOwotICAgICAgICBpZiAoIWhDdXJzb3IpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBpbWctPmdldEhCSVRNQVAoaEN1cnNvci5nZXQoKSk7IAogICAg
ICAgICBIQklUTUFQIGhPbGRCaXRtYXAgPSAoSEJJVE1BUClTZWxlY3RPYmplY3Qod29ya2luZ0RD
LmdldCgpLCBoQ3Vyc29yLmdldCgpKTsKQEAgLTcxLDE1ICs2NywxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpaS5oYm1NYXNrID0gaE1hc2suZ2V0KCk7CiAgICAgICAgIGlp
LmhibUNvbG9yID0gaEN1cnNvci5nZXQoKTsKIAotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29y
OjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3QoJmlpKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRDdXJzb3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgYmxlbmRlZCBjdXJz
b3JzLCBzbyB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGNyZWF0ZSB0aGUgbWFzayBtYW51YWxseQog
ICAgICAgICBhdXRvIGFuZE1hc2tEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKGRjKSk7CiAgICAgICAgIGF1dG8geG9yTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMoZGMpKTsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmpl
Y3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBu
dWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAg
ICAgICAgIEJJVE1BUCBjdXJzb3I7CkBAIC0xMDgsMTggKzEwMiwxNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpY29uLnlIb3RzcG90ID0gZWZmZWN0aXZlSG90U3BvdC55KCk7
CiAgICAgICAgIGljb24uaGJtTWFzayA9IGFuZE1hc2suZ2V0KCk7CiAgICAgICAgIGljb24uaGJt
Q29sb3IgPSB4b3JNYXNrLmdldCgpOwotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29yOjpjcmVh
dGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
bG9hZFNoYXJlZEN1cnNvcihISU5TVEFOQ0UgaEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFt
ZSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBo
SW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1lKQogewogICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZSg6OkxvYWRDdXJzb3JXKGhJbnN0YW5jZSwgbHBDdXJzb3JOYW1lKSk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5TmFtZShjaGFyKiBu
YW1lLCBpbnQgeCwgaW50IHkpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5
TmFtZShjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgSW50UG9pbnQgaG90U3BvdCh4
LCB5KTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnNvckltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCAwMDA4N2QyM2Y2MjY4NjVmOTc2YTc2Mjg2MWY2NzQzOWEw
Y2NiYmQzLi5mNTlmMTVmNmI0ZTA3MWYwMzk5OTcwMzMzZTFkYmQ5MWY4YzFjNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAg
LTM2NCw3ICszNjQsNyBAQCBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRl
U291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dAogCiBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxhc3QoKS5nZXQoKSkuYXNJbWFnZUJ1ZmZl
cigpOworICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpLT5hc0ltYWdlQnVmZmVyKCk7CiB9CiAK
IHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgZWZmZWN0UmVjdCkKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCiAK
IEludFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dFJlY3QoKSBjb25zdAogewotICAg
IGF1dG8mIGxhc3RFZmZlY3QgPSBjb25zdF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5s
YXN0KCkuZ2V0KCkpOworICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpOwogICAgIGlmICghbGFzdEVmZmVjdC5oYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA2M2I3M2M1YzUzMjQyMzM5
YzZkMzYwMWQ2YTJjNjVhZWQzYWY1YTAzLi5jMmIyMjE2YTZhOThmNzU2NGFlODk5OGUwMjI4ZDdm
NjAzYzU4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1
YWxpdHkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1JbnRlcnBvbGF0aW9uUXVhbGl0
eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdl
JiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitJbnRl
cnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNp
emUmIHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwg
dGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaCBx
dWFsaXR5LgogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRv
Y3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYjFmYjMwYTA5Y2MzYTJmNTRh
ZDhhYjQ3NThmYmI1YjEwNzkyZTVkYy4uNWEwMGY5ZWNlMGFhODk1MWEyZTZkODBlYWZmNDFlNmJi
ZWM0M2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApA
QCAtMTIzMSwxMiArMTIzMSwxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgfQogfQog
Ci12b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBpZiAoIWZpbGxMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXll
ci0+bmV4dCgpLCByZWN0LCBvcCk7Ci0gICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIG9wKTsKKyAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5
ZXJzOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKQorICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBsYXllcnMu
cmV2ZXJzZSgpOworICAgIGZvciAoYXV0byogbGF5ZXIgOiBsYXllcnMpCisgICAgICAgIHBhaW50
RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllciwgcmVjdCwgb3ApOwogfQogCiBib29s
IElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBG
aWxsTGF5ZXImIGxhc3RCYWNrZ3JvdW5kTGF5ZXIpIGNvbnN0CkBAIC0xMjQ4LDE3ICsxMjUwLDE3
IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tnCiAgICAgcmV0dXJuICghaGFzRmlsbEltYWdlICYm
ICFyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3go
KSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgpOwogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
aWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7Ci0gICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgpOwot
ICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKCZyZW5kZXJlcigp
LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBhdXRvKiBpbWFnZSA9
IGZpbGxMYXllci5pbWFnZSgpOworICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1hZ2UgJiYgaW1h
Z2UtPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgaWYgKCghaGFzRmlsbEltYWdlICYmICFyZW5kZXJlcigpLnN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwg
IXBhcmVudCgpKQotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFp
bnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJl
Y3Quc2l6ZSgpLCBvcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChwYWludEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUs
IHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9C
UkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gRENMT05FKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOwot
ICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBv
cCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Qu
c2l6ZSgpLCBvcCk7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC0xMjkwLDcgKzEyOTIs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgYwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgp
LCBoZWlnaHQoKSkpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlw
V2lkdGgsIHN0cmlwSGVpZ2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXpl
KCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUo
KSwgb3ApOwogICAgIH0KIH0KIApAQCAtMTQ0Niw3ICsxNDQ4LDcgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyA9IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnM7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSB7Ci0gICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJlbmRlcmVy
KCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCktPmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUo
KS5tYXNrTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgaWYgKChtYXNrQm94SW1hZ2UgJiYgcmVu
ZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0
eWxlKCkubWFza0xheWVycygpLm5leHQoKSkKICAgICAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURl
c3RpbmF0aW9uSW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRl
eCA4MzkwNWJkYzRlN2E3ZWIwN2Y5MzdlNDJhMDBjZDYyNDU5YzA0NWI5Li41NzJiMDI1NjFiMWQ5
MWY2YWViMGM0OGQxYmVlMjYzMmIzNTZlZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29u
c3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBiNGE3YmEwMjM3OTcxZjE3YWEyYzA3OTVjMzBlYzIyOTc3MDk5YTNj
Li44YTk2Yzg0OTdmYjM0NmQ0OTIzZmUwMmVkMWViNzA0ODMxYjdiZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTI3MCwxMCArMTI3MCw5IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogICAgIGlmICghcm9vdEJhY2tncm91bmRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgQ29sb3IgYmdDb2xvciA9IHJvb3RCYWNrZ3Jv
dW5kUmVuZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLQotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3Is
IGJnTGF5ZXIsIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKKyAgICBhdXRvJiBz
dHlsZSA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXItPnN0eWxlKCk7CisgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgY29sb3IsIHN0eWxlLmJhY2tncm91bmRM
YXllcnMoKSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCiBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtMTQxNCwxMiArMTQxMywx
MyBAQCBib29sIFJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoIXN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpIHx8IHN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKKyAgICBhdXRvJiBsYXllcnMgPSBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoIWxheWVycy5pbWFnZSgpIHx8IGxheWVy
cy5uZXh0KCkpIHsKICAgICAgICAgcGFpbnRlZEV4dGVudCA9ICBiYWNrZ3JvdW5kUmVjdDsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
Z2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0LCBiYWNrZ3JvdW5kUmVjdCk7Cisg
ICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxw
dHIsIGxheWVycywgcGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KTsKICAgICBwYWludGVkRXh0
ZW50ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKICAgICByZXR1cm4gIWdlb21ldHJ5Lmhhc05vbkxv
Y2FsR2VvbWV0cnkoKTsKIH0KQEAgLTE0NDksNyArMTQ0OSw3IEBAIGJvb2wgUmVuZGVyQm94Ojpi
YWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxS
ZWN0KSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBGSVhNRTogVGhlIGJh
Y2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgotICAgIGlm
IChzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgpKQorICAgIGlmIChzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKS5uZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMYXlv
dXRSZWN0IGJhY2tncm91bmRSZWN0OwogICAgIHN3aXRjaCAoc3R5bGUoKS5iYWNrZ3JvdW5kQ2xp
cCgpKSB7CkBAIC0xNTM5LDE5ICsxNTM5LDE5IEBAIGJvb2wgUmVuZGVyQm94Ojpjb21wdXRlQmFj
a2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAK
IGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7Ci0gICAgaWYgKCFmaWxsTGF5ZXIgfHwgZmlsbExheWVyLT5jbGlwKCkgIT0gQm9yZGVyRmls
bEJveCkKKyAgICBhdXRvJiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsK
KyAgICBpZiAoZmlsbExheWVyLmNsaXAoKSAhPSBCb3JkZXJGaWxsQm94KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDbGlwcGVkIHdpdGggbG9jYWwgc2Nyb2xsaW5nCi0gICAgaWYg
KGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXllci0+YXR0YWNobWVudCgpID09IExvY2FsQmFj
a2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXll
ci5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGZpbGxMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYm
IGZpbGxMYXllci0+aGFzUmVwZWF0WFkoKSAmJiBmaWxsTGF5ZXItPmltYWdlKCktPmNhblJlbmRl
cih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCisgICAgaWYgKGZpbGxMYXllci5oYXNP
cGFxdWVJbWFnZSgqdGhpcykgJiYgZmlsbExheWVyLmhhc1JlcGVhdFhZKCkgJiYgZmlsbExheWVy
LmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgYW5k
IG5vIGltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZS4K
LSAgICBpZiAoIWZpbGxMYXllci0+bmV4dCgpICYmICFmaWxsTGF5ZXItPmhhc0ltYWdlKCkpIHsK
KyAgICBpZiAoIWZpbGxMYXllci5uZXh0KCkgJiYgIWZpbGxMYXllci5oYXNJbWFnZSgpKSB7CiAg
ICAgICAgIENvbG9yIGJnQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiZ0NvbG9yLmlzT3BhcXVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1OTAsMTUgKzE1OTAsMTIgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcGEKICAgICAKICAgICBpZiAoIWNvbXBvc2l0ZWRNYXNrIHx8IGZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycykgewogICAgICAgICBwdXNoVHJhbnNwYXJlbmN5TGF5ZXIgPSB0
cnVlOwotICAgICAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCk7Ci0gICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0
eWxlKCkubWFza0xheWVycygpOwogCiAgICAgICAgIC8vIERvbid0IHJlbmRlciBhIG1hc2tlZCBl
bGVtZW50IHVudGlsIGFsbCB0aGUgbWFzayBpbWFnZXMgaGF2ZSBsb2FkZWQsIHRvIHByZXZlbnQg
YSBmbGFzaCBvZiB1bm1hc2tlZCBjb250ZW50LgotICAgICAgICBpZiAobWFza0JveEltYWdlKQor
ICAgICAgICBpZiAoYXV0byogbWFza0JveEltYWdlID0gc3R5bGUoKS5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKQogICAgICAgICAgICAgYWxsTWFza0ltYWdlc0xvYWRlZCAmPSBtYXNrQm94SW1hZ2Ut
PmlzTG9hZGVkKCk7CiAKLSAgICAgICAgaWYgKG1hc2tMYXllcnMpCi0gICAgICAgICAgICBhbGxN
YXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOworICAgICAg
ICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IHN0eWxlKCkubWFza0xheWVycygpLmltYWdlc0FyZUxv
YWRlZCgpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CkBAIC0xNjI3LDcxICsxNjI0LDY5IEBAIExheW91
dFJlY3QgUmVuZGVyQm94OjptYXNrQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIExheW91dFJlY3QgYm9yZGVy
Qm94ID0gYm9yZGVyQm94UmVjdCgpOwotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5
ZXIgPSBzdHlsZSgpLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkgeworICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0eWxlKCkubWFza0xh
eWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgIGlmIChtYXNrTGF5ZXItPmltYWdlKCkpIHsKICAgICAgICAgICAgIC8vIE1hc2tzIHNob3Vs
ZCBuZXZlciBoYXZlIGZpeGVkIGF0dGFjaG1lbnQsIHNvIGl0J3MgT0sgZm9yIHBhaW50Q29udGFp
bmVyIHRvIGJlIG51bGwuCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9t
ZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5
ZXIsIHBhaW50T2Zmc2V0LCBib3JkZXJCb3gpOwotICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGdl
b21ldHJ5LmRlc3RSZWN0KCkpOworICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5ZXIsIHBhaW50T2Zmc2V0LCBi
b3JkZXJCb3gpLmRlc3RSZWN0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAgICBWZWN0b3I8Y29uc3QgRmlsbExh
eWVyKiwgOD4gbGF5ZXJzOwotICAgIGNvbnN0IEZpbGxMYXllciogY3VyTGF5ZXIgPSBmaWxsTGF5
ZXI7CiAgICAgYm9vbCBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSBmYWxz
ZTsKLSAgICB3aGlsZSAoY3VyTGF5ZXIpIHsKLSAgICAgICAgbGF5ZXJzLmFwcGVuZChjdXJMYXll
cik7CisKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPm5leHQoKSkgeworICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKworICAgICAg
ICBpZiAobGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgICAg
IHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7CisKICAgICAgICAg
Ly8gU3RvcCB0cmF2ZXJzYWwgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCi0g
ICAgICAgIC8vIEZJWE1FIDogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xsb3dpbmcg
b2NjbHVzaW9uIGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgCisgICAgICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24g
Y3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZQogICAgICAgICAvLyBvbiBsYXllcnMg
d2l0aCBubyByZXBlYXQgYnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxh
eW91dCByZWN0LgogICAgICAgICAvLyBUZXN0aW5nIHRoYXQgaGVyZSB3b3VsZCBpbXBseSBkdXBs
aWNhdGluZyBhIGxvdCBvZiBjYWxjdWxhdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5IGRvbmUgaW4K
ICAgICAgICAgLy8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQu
IEEgbW9yZSBlZmZpY2llbnQgc29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQogICAgICAgICAvLyB0
aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29t
cHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVyZQogICAgICAgICAvLyBhbmQgcGFzcyBpdCBkb3du
LgogCi0gICAgICAgIGlmICghc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGVOb3JtYWwpCi0gICAgICAgICAgICBz
aG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSB0cnVlOwotCiAgICAgICAgIC8v
IFRoZSBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzIGNvbmRpdGlvbiBtdXN0IGJlIGV2YWx1YXRlZCBm
aXJzdCB0byBhdm9pZCBzaG9ydC1jaXJjdWl0aW5nLgotICAgICAgICBpZiAoY3VyTGF5ZXItPmNs
aXBPY2NsdWRlc05leHRMYXllcnMoY3VyTGF5ZXIgPT0gZmlsbExheWVyKSAmJiBjdXJMYXllci0+
aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGN1ckxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGN1ckxheWVyLT5oYXNSZXBlYXRYWSgpICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIGlmIChs
YXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXll
ci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxh
eWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwogICAgIH0KIAotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgQmFzZUJhY2tn
cm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
OworICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGF1dG8gYmFz
ZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxk
RHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7Ci0gICAgICAgIHBhaW50RmlsbExheWVy
KHBhaW50SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CisgICAgICAgIHBh
aW50RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllcnMubGFzdCgpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5
KTsKICAgICAgICAgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwog
ICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVy
ID0gbGF5ZXJzLnJlbmQoKTsKLSAgICBmb3IgKFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IGxheWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7
ICsraXQpCi0gICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgKml0LCByZWN0LCBi
bGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwor
ICAgIGF1dG8gdG9wTGF5ZXIgPSBsYXllcnMucmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGxh
eWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7ICsraXQpCisgICAgICAgIHBhaW50RmlsbExh
eWVyKHBhaW50SW5mbywgY29sb3IsICoqaXQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0Jh
Y2tncm91bmRJblNlcGFyYXRlQnVmZmVyKQogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExh
eWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJh
c2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG51bGxwdHIsIExheW91dFNpemUo
KSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogfQogCi1zdGF0aWMg
Ym9vbCBsYXllcnNVc2VJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
ciogbGF5ZXJzKQorc3RhdGljIGJvb2wgbGF5ZXJzVXNlSW1hZ2UoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycykKIHsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1ckxheWVyOyBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGN1ckxheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGN1ckxheWVy
LT5pbWFnZSgpLT5kYXRhKCkpCisgICAgZm9yIChhdXRvKiBsYXllciA9ICZsYXllcnM7IGxheWVy
OyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpICYm
IGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3MjUsMTMgKzE3MjAsMTMg
QEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEludFJlY3QqKQogICAgICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChCYWNrZ3JvdW5k
SW1hZ2VDaGFuZ2VkKTsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9v
bCBkcmF3aW5nQmFja2dyb3VuZCkKK2Jvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0Zv
ckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpCiB7CiAgICAgTGF5b3V0UmVjdCByZW5kZXJlclJlY3Q7CiAg
ICAgUmVuZGVyQm94KiBsYXllclJlbmRlcmVyID0gbnVsbHB0cjsKIAotICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5
ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0g
Y3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVy
KHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChs
YXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBsYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGxheWVy
LT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CiAg
ICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoaXMgaW1hZ2UgaXMgYmVpbmcgdXNlZCwg
Y29tcHV0ZSB0aGUgcmVuZGVyZXIgYW5kIHRoZSByZWN0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4K
ICAgICAgICAgICAgIGJvb2wgZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kID0gZHJhd2luZ0JhY2tncm91
bmQgJiYgKGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSB8fCAoaXNCb2R5KCkgJiYgIWRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkpOwog
ICAgICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKSB7CkBAIC0xNzUxLDcgKzE3NDYsNyBAQCBi
b29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIg
aW1hZ2UsIGNvbnN0IEZpbGxMYXllcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBwYXNzIGFic29sdXRlIHBv
c2l0aW9uIHRvIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5IChmb3IgcGl4ZWwgc25h
cHBpbmcpCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGxh
eWVyUmVuZGVyZXItPmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpj
dXJMYXllciwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXJSZWN0KTsKKyAgICAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gbGF5ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKmxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5k
ZXJlclJlY3QpOwogICAgICAgICAgICAgaWYgKGdlb21ldHJ5Lmhhc05vbkxvY2FsR2VvbWV0cnko
KSkgewogICAgICAgICAgICAgICAgIC8vIFJhdGhlciB0aGFuIGluY3VyIHRoZSBjb3N0cyBvZiBj
b21wdXRpbmcgdGhlIHBhaW50Q29udGFpbmVyIGZvciByZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNr
Z3JvdW5kcwogICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCB0aGUgcmlnaHQgZGVz
dFJlY3QsIGp1c3QgcmVwYWludCB0aGUgZW50aXJlIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IGQwZmE3YjJhNTc2Mjc5ZGEwMTVmNjI4NTdhNGJiNGMzODdi
NzgxMmQuLjAxMjRhZGFiYzM4YTVmNjQ4MmFjNjllYjgxOTlhMTc4ZjM1YTVlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYyNyw4ICs2MjcsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7
CiAgICAgCi0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBD
b2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRy
KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwor
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOwog
CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYpOwogCkBAIC02NjYsOCArNjY2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gUmV0
dXJucyB0cnVlIGlmIHdlIGRpZCBhIGZ1bGwgcmVwYWludAotICAgIGJvb2wgcmVwYWludExheWVy
UmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5
ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ug
ZGlkIGEgZnVsbCByZXBhaW50LgorICAgIGJvb2wgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShX
cmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNr
Z3JvdW5kKTsKIAogICAgIGJvb2wgc2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRD
YWxjdWxhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBl
bmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3Q7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVjNjU5YjcyY2E5ZDA3N2Zi
NjcyYTY3MjI1YTNjNTIzZGUxYTAxNjguLjFmNGQwYzVmYzlkNWE1YWFlYzk3ZGFhZjc5NmE2NTkz
YWFiYmRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZpbGxMYXllciogYmdMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBiZ0xheWVy
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAgLTYzNSwxMiAr
NjM1LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgYm9vbCBpbmNsdWRlUmlnaHRF
ZGdlID0gYm94ID8gYm94LT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpIDogdHJ1ZTsKIAogICAg
IGJvb2wgaGFzUm91bmRlZEJvcmRlciA9IHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgKGlu
Y2x1ZGVMZWZ0RWRnZSB8fCBpbmNsdWRlUmlnaHRFZGdlKTsKLSAgICBib29sIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiBiZ0xheWVyLT5hdHRhY2htZW50
KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKLSAgICBib29sIGlzQm9yZGVyRmlsbCA9
IGJnTGF5ZXItPmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OworICAgIGJvb2wgY2xpcHBlZFdpdGhM
b2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5ZXIuYXR0YWNobWVudCgp
ID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQ7CisgICAgYm9vbCBpc0JvcmRlckZpbGwgPSBi
Z0xheWVyLmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OwogICAgIGJvb2wgaXNSb290ID0gdGhpcy0+
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpOwogCiAgICAgQ29sb3IgYmdDb2xvciA9IGNvbG9y
OwotICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOworICAgIFN0eWxl
SW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLmltYWdlKCk7CiAgICAgYm9vbCBzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYgYmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hp
dGUgPSBmYWxzZTsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgIC8vIHdoaWxlIHJlbmRlcmluZy4pCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUp
IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVs
b3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2VkCi0gICAgICAgIGJvb2wgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNW
aXNpYmxlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdM
YXllci5uZXh0KCkgJiYgYmdDb2xvci5pc1Zpc2libGUoKTsKICAgICAgICAgaWYgKHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlIHx8IHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yKSB7CiAgICAg
ICAgICAgICBiZ0NvbG9yID0gQ29sb3I6OndoaXRlOwogICAgICAgICAgICAgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgIH0KIAogICAgIGJvb2wgYmFzZUJnQ29sb3JPbmx5ID0gKGJhc2VCZ0Nv
bG9yVXNhZ2UgPT0gQmFzZUJhY2tncm91bmRDb2xvck9ubHkpOwotICAgIGlmIChiYXNlQmdDb2xv
ck9ubHkgJiYgKCFpc1Jvb3QgfHwgYmdMYXllci0+bmV4dCgpIHx8IGJnQ29sb3IuaXNPcGFxdWUo
KSkpCisgICAgaWYgKGJhc2VCZ0NvbG9yT25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLm5leHQo
KSB8fCBiZ0NvbG9yLmlzT3BhcXVlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNv
bG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWaXNpYmxlKCk7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8g
RmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xvciBiYWNrZ3JvdW5kcy4KLSAgICBpZiAo
IWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRCYWNr
Z3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICBp
ZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLm5leHQoKSkgewogICAg
ICAgICBpZiAoIWNvbG9yVmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzA5LDEw
ICs3MDksMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gaXNCb3JkZXJGaWxsID8gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KHJlY3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNs
dWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCi0gICAgICAgIGlmIChiZ0xh
eWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKKyAgICAgICAgaWYgKGJnTGF5ZXIuY2xp
cCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgICAgICBib3JkZXIgPSBzdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLAogICAgICAgICAgICAgICAgIHBh
ZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20o
KSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJS
aWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwotICAgICAgICB9IGVs
c2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKKyAgICAgICAgfSBlbHNl
IGlmIChiZ0xheWVyLmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKICAgICAgICAgICAgIGJvcmRl
ciA9IHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTc0MCwxMCArNzQwLDEw
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtYXNrSW1hZ2U7CiAgICAgSW50UmVjdCBtYXNrUmVjdDsKIAotICAgIGlmIChiZ0xheWVy
LT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdMYXllci0+Y2xpcCgpID09IENvbnRlbnRG
aWxsQm94KSB7CisgICAgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJn
TGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCiAgICAgICAgIGlmICghY2xp
cFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdM
YXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94OworICAgICAgICAgICAgYm9vbCBpbmNsdWRl
UGFkZGluZyA9IGJnTGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94OwogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCA9IExheW91dFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QueCgpICsg
YkxlZnQgKyAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCA6IExheW91dFVuaXQoKSksCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QueSgpICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBh
ZGRpbmcgPyBwYWRkaW5nVG9wKCkgOiBMYXlvdXRVbml0KCkpLAogICAgICAgICAgICAgICAgIHNj
cm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFkZGlu
ZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKQEAgLTc1MSw3ICs3NTEsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYmFja2dyb3VuZENsaXBTdGF0ZVNh
dmVyLnNhdmUoKTsKICAgICAgICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAg
IH0gZWxzZSBpZiAoYmdMYXllci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNl
ZCB0byBjbGlwIGJhY2tncm91bmQgZHJhd2luZy4KICAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91
dCBob3cgYmlnIHRoZSBtYXNrIGhhcyB0byBiZS4gIEl0IHNob3VsZCBiZSBubyBiaWdnZXIgdGhh
biB3aGF0IHdlIG5lZWQKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcmVuZGVyLCBzbyB3ZSBzaG91
bGQgaW50ZXJzZWN0IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGJvcmRlciBib3ggb2YgdGhlIGJh
Y2tncm91bmQuCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICBib29sIGlzT3BhcXVlUm9vdCA9IGZhbHNlOwogICAgIGlmIChpc1Jvb3QpIHsKICAgICAgICAg
aXNPcGFxdWVSb290ID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIWJn
Q29sb3IuaXNPcGFxdWUoKSkgeworICAgICAgICBpZiAoIWJnTGF5ZXIubmV4dCgpICYmICFiZ0Nv
bG9yLmlzT3BhcXVlKCkpIHsKICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChv
d25lckVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aGFzVGFn
TmFtZShmcmFtZVRhZykpIHsKQEAgLTc5OCwxMiArNzk4LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvCiAgICAgfQogCiAgICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGgg
YWxsIGltYWdlcywgY3VsbGVkIGlmIGJhY2tncm91bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCi0gICAg
Ly8gRklYTUU6IEluIHRoZSBiZ0xheWVyLT5oYXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3Vs
ZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QKKyAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXIu
aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0
CiAgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJz
IHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCi0gICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKKyAg
ICBpZiAoIWJnTGF5ZXIubmV4dCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Qoc2Nyb2xsZWRQYWludFJlY3QpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZChyZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlLCBib3gpOwotICAgICAgICBpZiAo
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kIHx8ICFzaG91bGRQYWludEJhY2tn
cm91bmRJbWFnZSB8fCAhYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVy
LT5oYXNSZXBlYXRYWSgpKSB7CisgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRU
b0JhY2tncm91bmQgfHwgIXNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLmhh
c09wYXF1ZUltYWdlKCp0aGlzKSB8fCAhYmdMYXllci5oYXNSZXBlYXRYWSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGFpbnRJbmZvLnJlY3QpOwogCkBAIC04
MjQsMTAgKzgyNCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBpZiAo
YmFzZUNvbG9yLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xv
ck9ubHkgJiYgYmdDb2xvci5pc1Zpc2libGUoKSkKICAgICAgICAgICAgICAgICAgICAgYmFzZUNv
bG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3IpOwotCiAgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIENvbXBvc2l0
ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IHNo
b3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwpAQCAtODM2LDE5ICs4MzUsMTkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KIAogICAgIC8vIG5vIHByb2dyZXNzaXZlIGxvYWRpbmcgb2Yg
dGhlIGJhY2tncm91bmQgaW1hZ2UKICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBzaG91bGRQ
YWludEJhY2tncm91bmRJbWFnZSkgewotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBn
ZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWlu
dENvbnRhaW5lciwgKmJnTGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3Qs
IGJhY2tncm91bmRPYmplY3QpOworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCBiZ0xheWVyLCBy
ZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFpbnRSZWN0LCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAg
ICAgICAgZ2VvbWV0cnkuY2xpcChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFJlY3QpKTsKICAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8g
YmFja2dyb3VuZE9iamVjdCA6IHRoaXMsIGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewotICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGNvbnRleHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKKyAgICAgICAgICAgIGF1dG8gY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGUoKSA6IG9wOworICAgICAgICAgICAgY29udGV4
dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CiAKLSAgICAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRp
b24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIs
IGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVs
YXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xh
eWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5
ZXIuY2xpcCgpID09IFRleHRGaWxsQm94KSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKFdURk1vdmUobWFza0ltYWdlKSwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
fQpAQCAtOTYxLDggKzk2MCw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNh
bGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllCiAgICAgICAgIGNh
c2UgU2l6ZUxlbmd0aDogewogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0
aW9uaW5nQXJlYVNpemU7CiAKLSAgICAgICAgICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExh
eWVyLnNpemUoKS5zaXplLndpZHRoKCk7Ci0gICAgICAgICAgICBMZW5ndGggbGF5ZXJIZWlnaHQg
PSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCk7CisgICAgICAgICAgICBMZW5ndGggbGF5
ZXJXaWR0aCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aDsKKyAgICAgICAgICAgIExlbmd0
aCBsYXllckhlaWdodCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQ7CiAKICAgICAgICAg
ICAgIGlmIChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0aWxlU2l6ZS5z
ZXRXaWR0aChsYXllcldpZHRoLnZhbHVlKCkpOwpAQCAtOTg2LDcgKzk4NSw3IEBAIExheW91dFNp
emUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllCiAgICAgICAgICAgICAgICAgLy8gSWYgYm90aCB3aWR0aCBhbmQgaGVp
Z2h0IGFyZSBhdXRvLCB1c2UgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUuCiAgICAgICAgICAg
ICAgICAgdGlsZVNpemUgPSBpbWFnZUludHJpbnNpY1NpemU7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgdGlsZVNpemUuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwog
ICAgICAgICAgICAgcmV0dXJuIHRpbGVTaXplOwogICAgICAgICB9CkBAIC0xMTcxLDcgKzExNzAs
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9z
aXRpb24gPSByZXNvbHZlRWRnZVJlbGF0aXZlTGVuZ3RoKGZpbGxMYXllci54UG9zaXRpb24oKSwg
ZmlsbExheWVyLmJhY2tncm91bmRYT3JpZ2luKCksIGF2YWlsYWJsZVdpZHRoLCBwb3NpdGlvbmlu
Z0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYgKGJhY2tncm91bmRSZXBlYXRYID09IFJvdW5k
RmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgPiAwICYmIHRpbGVTaXplLndpZHRo
KCkgPiAwKSB7CiAgICAgICAgIGludCBudW1UaWxlcyA9IHN0ZDo6bWF4KDEsIHJvdW5kVG9JbnQo
cG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC8gdGlsZVNpemUud2lkdGgoKSkpOwotICAgICAg
ICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodCgpLmlzQXV0bygpICYmIGJhY2tncm91
bmRSZXBlYXRZICE9IFJvdW5kRmlsbCkKKyAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS5oZWlnaHQuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFkgIT0gUm91bmRGaWxsKQogICAg
ICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHRpbGVTaXplLmhlaWdodCgpICogcG9zaXRpb25p
bmdBcmVhU2l6ZS53aWR0aCgpIC8gKG51bVRpbGVzICogdGlsZVNpemUud2lkdGgoKSkpOwogCiAg
ICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAvIG51
bVRpbGVzKTsKQEAgLTExODEsNyArMTE4MCw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZFlQb3NpdGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5n
dGgoZmlsbExheWVyLnlQb3NpdGlvbigpLCBmaWxsTGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4oKSwg
YXZhaWxhYmxlSGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYg
KGJhY2tncm91bmRSZXBlYXRZID09IFJvdW5kRmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLmhl
aWdodCgpID4gMCAmJiB0aWxlU2l6ZS5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgaW50IG51bVRp
bGVzID0gc3RkOjptYXgoMSwgcm91bmRUb0ludChwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgp
IC8gdGlsZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS53aWR0aCgpLmlzQXV0bygpICYmIGJhY2tncm91bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKKyAg
ICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aC5pc0F1dG8oKSAmJiBiYWNrZ3Jv
dW5kUmVwZWF0WCAhPSBSb3VuZEZpbGwpCiAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aCh0
aWxlU2l6ZS53aWR0aCgpICogcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIChudW1UaWxl
cyAqIHRpbGVTaXplLmhlaWdodCgpKSk7CiAKICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHBv
c2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLyBudW1UaWxlcyk7CkBAIC0xMjUwLDcgKzEyNDks
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgRmxvYXRTaXplJiBwaGFzZSwgRmxvYXRTaXplJiB0aWxlU2l6ZSkgY29u
c3QKIHsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdChkZXN0UmVjdCk7Ci0gICAgQmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eShwYWludENvbnRhaW5lciwgKnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludE9mZnNl
dCwgcGFpbnRSZWN0KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkocGFpbnRDb250YWluZXIsIHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBw
YWludE9mZnNldCwgcGFpbnRSZWN0KTsKICAgICBwaGFzZSA9IGdlb21ldHJ5LnBoYXNlKCk7CiAg
ICAgdGlsZVNpemUgPSBnZW9tZXRyeS50aWxlU2l6ZSgpOwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0
cnkuZGVzdFJlY3QoKTsKQEAgLTIxNzAsOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQ
b2luCiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uc3QgRmlsbExheWVyKiBsYXN0QmFja2dyb3VuZExheWVyID0gc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG5leHQg
PSBsYXN0QmFja2dyb3VuZExheWVyLT5uZXh0KCk7IG5leHQ7IG5leHQgPSBsYXN0QmFja2dyb3Vu
ZExheWVyLT5uZXh0KCkpCisgICAgYXV0byogbGFzdEJhY2tncm91bmRMYXllciA9ICZzdHlsZSgp
LmJhY2tncm91bmRMYXllcnMoKTsKKyAgICB3aGlsZSAoYXV0byogbmV4dCA9IGxhc3RCYWNrZ3Jv
dW5kTGF5ZXItPm5leHQoKSkKICAgICAgICAgbGFzdEJhY2tncm91bmRMYXllciA9IG5leHQ7CiAK
ICAgICBpZiAobGFzdEJhY2tncm91bmRMYXllci0+Y2xpcCgpICE9IEJvcmRlckZpbGxCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDc4ZjUyZWM2MGU4NGUzMjc0MWM3YzQzMDhmYTJkYzY3Yjg3MGU1MTEuLjkzZWMyY2U4YTgxMDQ4
NTczNDAyMDQwZmE0Mjk3MzViZjI5OWM5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFn
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5
b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VC
YWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRT
aXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxl
bWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRv
d1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQ
YWludFBvc3Rpb24sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBu
dWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGUyN2I0MWFiMTBlYThhNWJmZTJlNjMyNzI4NWI1YThmMjFmMWJmMmQuLmY4NDdm
ZmRlOGZlNWQyNmQ1M2M2MWQ5NTQ3NTk0Yjg4NGE2YzRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNSwyMiArMTM1LDE4IEBAIFJlbmRlckVs
ZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsCiBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAg
aWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVy
ID0gYmdMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dy
b3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBiZ0xheWVy
ID0gJm1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXll
ci0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gYmdM
YXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBt
YXNrTGF5ZXIgPSBtX3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBt
YXNrTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tJbWFn
ZSA9IG1hc2tMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAm
bV9zdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxl
LmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIGJvcmRlckltYWdlID0g
bV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBib3JkZXJJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1h
Z2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChhdXRvKiBt
YXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAg
ICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLQogICAgICAgICBpZiAoYXV0byBz
aGFwZVZhbHVlID0gbV9zdHlsZS5zaGFwZU91dHNpZGUoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gc2hhcGVJbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgc2hh
cGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtMzAzLDggKzI5OSw4IEBAIFN0eWxlRGlm
ZmVyZW5jZSBSZW5kZXJFbGVtZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIHVuc2lnCiAgICAgfQogICAgIAogICAgIGlmICgoY29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXIpICYmIGhhc0xheWVyKCkp
IHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCk7Ci0gICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygpKQorICAgICAgICBhdXRvJiBsYXllciA9
ICpkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKTsKKyAgICAg
ICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSB8fCBsYXllci5wYWludHNXaXRoRmlsdGVycygp
KQogICAgICAgICAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYsIFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnRMYXllcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRpZmYgPSBzdGQ6Om1heChkaWZm
LCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKTsKQEAgLTM0MSwyMSArMzM3LDIwIEBA
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYpCiAgICAgcmV0dXJuIGRpZmYgPT0gU3R5bGVEaWZmZXJl
bmNlUmVwYWludCB8fCAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50SWZUZXh0T3JCb3Jk
ZXJPck91dGxpbmUgJiYgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZE9yQm9yZGVy
T3JPdXRsaW5lKCkpOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMo
Y29uc3QgRmlsbExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciogbmV3TGF5ZXJzKQor
dm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciogb2xk
TGF5ZXJzLCBjb25zdCBGaWxsTGF5ZXImIG5ld0xheWVycykKIHsKLSAgICAvLyBPcHRpbWl6ZSB0
aGUgY29tbW9uIGNhc2UKLSAgICBpZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5
ZXJzLCBuZXdMYXllcnMpKQorICAgIC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZS4KKyAgICBp
ZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5ZXJzLCAmbmV3TGF5ZXJzKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdvIHRocm91Z2ggdGhlIG5ldyBsYXllcnMgYW5k
IGFkZENsaWVudHMgZmlyc3QsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRzIG9mIGFuIGlt
YWdlLgotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTmV3ID0gbmV3TGF5ZXJzOyBjdXJy
TmV3OyBjdXJyTmV3ID0gY3Vyck5ldy0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyTmV3LT5p
bWFnZSgpKQotICAgICAgICAgICAgY3Vyck5ldy0+aW1hZ2UoKS0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgIC8vIEFkZCBiZWZvcmUgcmVtb3ZpbmcsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRz
IG9mIGFuIGltYWdlIHRoYXQgaXMgaW4gYm90aCBzZXRzLgorICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbmV3TGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGxheWVyLT5pbWFnZSgpLT5hZGRDbGllbnQo
dGhpcyk7CiAgICAgfQotCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJPbGQgPSBvbGRM
YXllcnM7IGN1cnJPbGQ7IGN1cnJPbGQgPSBjdXJyT2xkLT5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGN1cnJPbGQtPmltYWdlKCkpCi0gICAgICAgICAgICBjdXJyT2xkLT5pbWFnZSgpLT5yZW1vdmVD
bGllbnQodGhpcyk7CisgICAgZm9yIChhdXRvKiBsYXllciA9IG9sZExheWVyczsgbGF5ZXI7IGxh
eWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkpCisgICAg
ICAgICAgICBsYXllci0+aW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIH0KIApA
QCAtNDA5LDggKzQwNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpCiAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKHN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwogCiAgICAg
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlKTsKLSAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92
ZShtX3N0eWxlKTsKLSAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7CisgICAgYXV0byBvbGRT
dHlsZSA9IG1fc3R5bGUucmVwbGFjZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYm9vbCBkZXRhY2hl
ZEZyb21QYXJlbnQgPSAhcGFyZW50KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaW52YWxpZGF0
ZSB0aGUgY29udGFpbmluZyBibG9jayBjYWNoZSBmb3IgZmxvd3Mgd2hlbiB0aGUgY29udGlhbmlu
ZyBibG9jayBjb250ZXh0IGNoYW5nZXMKQEAgLTgwNyw3ICs4MDEsNyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihTdHlsZVByb3BhZ2F0aW9u
VHlwZSBwcm9wYQogICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlz
cGxheSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAg
ICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgmc3R5bGUo
KSk7CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KHN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLmNvbHVtblNw
YW4oKSkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOwogICAgICAgICB9CkBAIC05OTksOCArOTkzLDggQEAgc3RhdGljIGlubGluZSBib29sIGFy
ZUN1cnNvcnNFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICB1cGRhdGVGaWxsSW1hZ2Vz
KG9sZFN0eWxlID8gb2xkU3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5
bGUuYmFja2dyb3VuZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8g
b2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRl
RmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwg
bV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2Uo
KS5pbWFnZSgpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
KTsKICAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlT3V0c2lk
ZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CkBAIC0xMjMxLDQxICsxMjI1
LDM5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpM
YXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0
KCkpOwotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUg
KGNoaWxkKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xh
eW91dCgpKQogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgbXVz
dFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
aWxsTGF5ZXImIGxheWVyKQogewogICAgIC8vIE5vYm9keSB3aWxsIHVzZSBtdWx0aXBsZSBsYXll
cnMgd2l0aG91dCB3YW50aW5nIGZhbmN5IHBvc2l0aW9uaW5nLgotICAgIGlmIChsYXllci0+bmV4
dCgpKQorICAgIGlmIChsYXllci5uZXh0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGhhdmUgYSB2YWxpZCBpbWFnZS4KLSAgICBTdHlsZUltYWdlKiBpbWFn
ZSA9IGxheWVyLT5pbWFnZSgpOworICAgIGF1dG8qIGltYWdlID0gbGF5ZXIuaW1hZ2UoKTsKICAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlciwgcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWxheWVyLT54UG9zaXRpb24oKS5pc1plcm8oKSB8fCAhbGF5ZXItPnlQb3NpdGlvbigpLmlzWmVy
bygpKQorICAgIGlmICghbGF5ZXIueFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLnlQb3Np
dGlvbigpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVGaWxsU2l6ZVR5
cGUgc2l6ZVR5cGUgPSBsYXllci0+c2l6ZVR5cGUoKTsKKyAgICBhdXRvIHNpemVUeXBlID0gbGF5
ZXIuc2l6ZVR5cGUoKTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBDb250YWluIHx8IHNpemVUeXBl
ID09IENvdmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBT
aXplTGVuZ3RoKSB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IGxheWVyLT5zaXplTGVuZ3Ro
KCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwg
c2l6ZS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKKyAgICAgICAgYXV0byBzaXpl
ID0gbGF5ZXIuc2l6ZUxlbmd0aCgpOworICAgICAgICBpZiAoc2l6ZS53aWR0aC5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKSB8fCBzaXplLmhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRo
ZXIgYW4gaW50cmluc2ljIHdpZHRoIG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBp
cyBkZXRlcm1pbmVkIGFzIGZvciAnY29udGFpbicuCi0gICAgICAgIGlmICgoc2l6ZS53aWR0aCgp
LmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRl
ZEltYWdlKCkpCisgICAgICAgIGlmICgoc2l6ZS53aWR0aC5pc0F1dG8oKSB8fCBzaXplLmhlaWdo
dC5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVkSW1hZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoaW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzY1LDE0ICsxMzU3LDE0IEBAIGJvb2wgUmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4
dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFVuaXQgYm9yZGVy
UmlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMp
LmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJv
eD4oKnRoaXMpLndpZHRoKCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWlu
SW5zZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5yaWdodCgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwg
b2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0LCBzdGQ6Om1heDxMYXlvdXRVbml0Pih2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lk
dGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKSwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBib3Jk
ZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5p
dD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVuaXQgbWluSW5z
ZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4
dGVudC5yaWdodCgpLCBzdGQ6Om1pbihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRo
KCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4KGJvcmRlclJp
Z2h0LCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgsIGJveFdpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21S
aWdodFJhZGl1cygpLndpZHRoLCBib3hXaWR0aCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNv
cmF0aW9uc1dpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQm94LndpZHRoKCks
IG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRoLAogICAgICAgICAgICAg
bmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGRlY29yYXRpb25zV2lkdGgs
CiAgICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LmhlaWdodCgpLCBvbGRPdXRsaW5l
Qm94LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbjxMYXlv
dXRVbml0PihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKKyAgICAgICAgTGF5
b3V0VW5pdCByaWdodCA9IHN0ZDo6bWluKG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhY
KCkpOwogICAgICAgICBpZiAocmlnaHRSZWN0LngoKSA8IHJpZ2h0KSB7CiAgICAgICAgICAgICBy
aWdodFJlY3Quc2V0V2lkdGgoc3RkOjptaW4ocmlnaHRSZWN0LndpZHRoKCksIHJpZ2h0IC0gcmln
aHRSZWN0LngoKSkpOwogICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHJpZ2h0UmVjdCk7CkBAIC0xMzg1LDEwICsxMzc3LDEwIEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuYm9y
ZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91dFVu
aXQgYm94SGVpZ2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKS5oZWlnaHQoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLmhlaWdodCgp
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQg
PSBzdGQ6Om1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgp
LCBib3hIZWlnaHQpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpKSk7Ci0gICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20p
OworICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjpt
aW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbihuZXdC
b3VuZHMuaGVpZ2h0KCksIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckhlaWdodCA9IHN0ZDo6bWF4KGJvcmRlckJvdHRvbSwgc3RkOjptYXgodmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQp
LAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSkpOworICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRp
b25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zm
c2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIHN0ZDo6
bWF4KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0
b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgc3RkOjptaW4obmV3T3V0bGlu
ZUJveC5tYXhZKCksIG9sZE91dGxpbmVCb3gubWF4WSgpKSAtIGRlY29yYXRpb25zSGVpZ2h0LAog
ICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94
LndpZHRoKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
MjgwMzc0NDE1ZGM2MTI3ZDM1OGU2ZmU0NDMyZGY3YzhiYmZiZWI5Ny4uYzZmOTcwMThkZGI2OTI2
MTdlM2VmZDVmNGVlMTliZTRlMmUwNjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlKSBjb25zdDsKICAgICBi
b29sIGhhc0ltbWVkaWF0ZU5vbldoaXRlc3BhY2VUZXh0Q2hpbGRPckJvcmRlck9yT3V0bGluZSgp
IGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IEZpbGxMYXllciopOworICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5
ZXIqLCBjb25zdCBGaWxsTGF5ZXImKTsKICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2Uq
LCBTdHlsZUltYWdlKik7CiAgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCAzM2JmZjBlNDFkMDAzMmE3NTU3ZjA0ZDUzZjc1YWNkMTEzZWI2ZWYwLi43
ODYzODAxOTA5OTE1NjlmNzY1NTI0NGU5MDRlNTM4MjJjYzA3MDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNzIwLDcgKzI3MjAsNyBAQCBDb250ZW50QWxp
Z25tZW50RGF0YSBSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0
aW9uT2Zmc2V0KEdyaQogICAgIGlmIChjb250ZW50QWxpZ25tZW50LmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRBbGlnbm1lbnQ7CiAKLSAgICBhdXRvIG92ZXJmbG93ID0gaXNSb3dB
eGlzID8gc3R5bGUoKS5qdXN0aWZ5Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgOiBzdHlsZSgp
LmFsaWduQ29udGVudE92ZXJmbG93QWxpZ25tZW50KCk7CisgICAgYXV0byBvdmVyZmxvdyA9IChp
c1Jvd0F4aXMgPyBzdHlsZSgpLmp1c3RpZnlDb250ZW50KCkgOiBzdHlsZSgpLmFsaWduQ29udGVu
dCgpKS5vdmVyZmxvdygpOwogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPD0gMCAmJiBvdmVy
ZmxvdyA9PSBPdmVyZmxvd0FsaWdubWVudFNhZmUpCiAgICAgICAgIHJldHVybiB7MCwgMH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA1MWQ0NGJmNTY2
OTY3Y2FhZGFmOTc0MjAyOTgyY2I5MThiZmU4NTEuLmFjZWVkN2Q1OTBkZTI1Y2M0Mzk5ODc4NDgz
Yjg5ODc3YWYyOTU2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzE0MywxNyArMzE0MywxOCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyRm9yU2Nyb2xsYmFyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogUmVmPFNj
cm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7Ci0gICAgUmVu
ZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJl
cigpKTsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gYWN0dWFsUmVuZGVyZXIt
PmlzQm94KCkgJiYgYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKTsKKyAgICBBU1NFUlQocmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSkpOworICAg
IGF1dG8mIGFjdHVhbFJlbmRlcmVyID0gKnJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkp
OworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVh
bFJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0
eWxlKQotICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9s
bGJhcigqdGhpcywgb3JpZW50YXRpb24sIGFjdHVhbFJlbmRlcmVyLT5lbGVtZW50KCkpOworICAg
ICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhp
cywgb3JpZW50YXRpb24sIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLmVsZW1l
bnQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CiAgICAg
ICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIo
KSk7CiAgICAgfQotICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdp
ZGdldC5nZXQoKSk7CisgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQo
KndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGM4
YzQwYzVjZjAzMDQzYjkwNWVkOWE0YzFmZmY5OWRlOTMxNTAzZjQuLjNlYzdmZGQ4MDU3YzkwNzRh
MDIzNGM3NzBhZjQ3OTRhN2Q5M2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNzI2LDMwICsxNzI2LDI3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogCiBzdGF0aWMgYm9vbCBjYW5DcmVhdGVUaWxlZEltYWdlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciA9IHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKTsKLSAgICBpZiAoZmlsbExheWVyLT5uZXh0KCkpCisgICAgYXV0byYgZmls
bExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOworICAgIGlmIChmaWxsTGF5ZXIubmV4
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWZpbGxMYXllci0+aW1hZ2Vz
QXJlTG9hZGVkKCkpCisgICAgaWYgKCFmaWxsTGF5ZXIuaW1hZ2VzQXJlTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSAhPSBT
Y3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoZmlsbExheWVyLmF0dGFjaG1lbnQo
KSAhPSBTY3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotCiAgICAgLy8gRklYTUU6IEFsbG93IGNvbG9yK2ltYWdlIGNv
bXBvc2l0aW5nIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCiAgICAgLy8gRm9yIG5vdyBiYWlsaW5nIG91
dC4KLSAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpCisgICAgaWYgKHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBmaWxsTGF5
ZXItPmltYWdlKCk7Ci0KICAgICAvLyBGSVhNRTogc3VwcG9ydCBncmFkaWVudHMgd2l0aCBpc0dl
bmVyYXRlZEltYWdlLgorICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsK
ICAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1h
Z2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTE4MDksMjUgKzE4MDYsMjQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRJbWFnZShib29sIGlzU2ltcGxlQ28KICAg
ICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0KKyAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIWlzU2ltcGxlQ29udGFp
bmVyIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGJhY2tncm91bmRCb3hGb3JTaW1wbGVDb250YWluZXJQ
YWludGluZygpOworICAgIGF1dG8gZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9yU2ltcGxlQ29u
dGFpbmVyUGFpbnRpbmcoKTsKICAgICBGbG9hdFNpemUgcGhhc2U7CiAgICAgRmxvYXRTaXplIHRp
bGVTaXplOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlLmJhY2tncm91bmRMYXll
cnMoKS0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAvLyBGSVhNRTogYWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KKyAgICAvLyBGSVhNRTogQWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KICAgICBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpLmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKCZyZW5kZXJl
cigpLCBMYXlvdXRQb2ludCgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKKwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFzZSk7CiAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChkZXN0UmVjdCkpOwotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlLmdldCgpKTsKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCku
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKICAgICBkaWRVcGRhdGVDb250ZW50
c1JlY3QgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKaW5kZXggMjJlZTk4MTEwNzdmZmQ4MDhiZmJhMTM5NDA5YjZjOTYwZjYzNGZhZi4uY2Rm
ODA2MGJjYjVlZDhhOGY0ZjkzN2E3ZTQ5N2UxNDY3ZDZlYmI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIFJlZjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAg
IH0KLSAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICB2
aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQoKndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAppbmRleCBkMzlmNjQ2OTU4N2M3NDQyZjM3MjQ0NzNiNjg1ODA4YTk3ZmE2N2Zi
Li5kMmMwMmVmOWQ2MGUwNmM2ODY2NzIzZTQ3NDA3MzdhZDhjMGMzODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAvLyBVc2UgbWFyZ2lu
OmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0IHNhZmUgY2VudGVyaW5n
LCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MsIHRyZWF0IGl0IHRoZSBz
YW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIC8vIEJ1dCB3ZSBvbmx5IGRvIHRo
YXQgZm9yIHRoZSBjYXNlcyB3aGVyZSBodG1sLmNzcyB3b3VsZCBvdGhlcndpc2UgdXNlIGNlbnRl
ci4KLSAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25D
ZW50ZXIpIHsKKyAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zKCkucG9zaXRpb24oKSA9PSBJdGVt
UG9zaXRpb25DZW50ZXIpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3Ro
KCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpbkJvdHRvbShMZW5ndGgoKSk7CiAgICAg
ICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uRmxleFN0YXJ0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMS4uM2U3MDMyMGQ2OTUyMjhj
MmRhNmQ3NmEwZDFlYmYyMTQ2YTA5M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyNzYsOSArMTI3Niw5IEBAIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5CiAgICAgICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkp
OwogCiAgICAgQ29sb3IgYyA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBjb25zdCBGaWxsTGF5
ZXIqIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMo
KTsKKyAgICBhdXRvJiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CiAKLSAgICBpZiAoYmdMYXllci0+aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQo
KSkgeworICAgIGlmIChiZ0xheWVyLmhhc0ltYWdlKCkgfHwgYy5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBw
YWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBv
bmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAgICBib29sIHNob3VsZENsaXAg
PSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNrZ3JvdW5kT2JqZWN0ID09IHRo
aXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYgdGFibGVFbHQtPmNvbGxhcHNl
Qm9yZGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXgg
ZmE1OTlhNzE4NzJiNDk4YTU0NjMyZWQzZGVjZmU2NmU2ZjMxMWMxZS4uYzMxYTlhYTZjZjJiMDY5
ODIyYjZmZjUwNjdiZmZhYzUzN2ZmMmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAog
ICAgICAgICAvLyBQYWRkaW5nCiAgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gbV90aGVt
ZS0+Y29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFkZGlu
Z0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFkZGluZ0JveCAh
PSBzdHlsZS5wYWRkaW5nQm94KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KHBh
ZGRpbmdCb3gpOworICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBhZGRp
bmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCiAgICAgICAgIGlmIChtX3RoZW1lLT5j
b250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQpAQCAtMTU1LDE5ICsxNTUsMTkgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAg
ICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4K
ICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtl
IG1pbi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgotICAgICAgICBMZW5ndGhTaXplIGNv
bnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgTGVuZ3RoU2l6ZShzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSksIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKSk7Ci0gICAgICAgIGlmIChjb250cm9sU2l6ZS53aWR0aCgpICE9IHN0eWxlLndp
ZHRoKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChjb250cm9sU2l6ZS53aWR0aCgpKTsK
LSAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCgpICE9IHN0eWxlLmhlaWdodCgpKQotICAg
ICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGNvbnRyb2xTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICAKKyAgICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRy
b2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUu
aGVpZ2h0KCkgfSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xT
aXplLndpZHRoICE9IHN0eWxlLndpZHRoKCkpCisgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChX
VEZNb3ZlKGNvbnRyb2xTaXplLndpZHRoKSk7CisgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWln
aHQgIT0gc3R5bGUuaGVpZ2h0KCkpCisgICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92
ZShjb250cm9sU2l6ZS5oZWlnaHQpKTsKKwogICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVp
Z2h0CiAgICAgICAgIExlbmd0aFNpemUgbWluQ29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVt
Q29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKLSAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUubWluV2lk
dGgoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKG1pbkNvbnRyb2xTaXplLndpZHRo
KCkpOwotICAgICAgICBpZiAobWluQ29udHJvbFNpemUuaGVpZ2h0KCkgIT0gc3R5bGUubWluSGVp
Z2h0KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQobWluQ29udHJvbFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lk
dGggIT0gc3R5bGUubWluV2lkdGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdU
Rk1vdmUobWluQ29udHJvbFNpemUud2lkdGgpKTsKKyAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXpl
LmhlaWdodCAhPSBzdHlsZS5taW5IZWlnaHQoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbkhl
aWdodChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOworCiAgICAgICAgIC8vIEZvbnQK
ICAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwg
c3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAg
ICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9u
dCwgYWxzbyBvdmVycmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBo
ZWlnaHQuCkBAIC03MDksOSArNzA5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5
bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm8KICAgICBj
YXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgY2FzZSBUZXh0QXJlYVBhcnQ6CiAgICAgICAgIC8vIFRl
c3QgdGhlIHN0eWxlIHRvIHNlZSBpZiB0aGUgVUEgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIG1hdGNo
LgotICAgICAgICByZXR1cm4gKHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgotICAgICAgICAgICAg
fHwgKnN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICB8
fCAhc3R5bGUuYmFja2dyb3VuZENvbG9yRXF1YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChiYWNr
Z3JvdW5kQ29sb3IpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgor
ICAgICAgICAgICAgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQKKyAg
ICAgICAgICAgIHx8ICFzdHlsZS5iYWNrZ3JvdW5kQ29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdW
aXNpdGVkKGJhY2tncm91bmRDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5k
ZXggMzczOTVlNDM2NjY3YTIxNWFhYjZlNzYzMDU4ZDQ3Y2I4MjZkNzQwZC4uNjIzYTZjNzk0Yjk2
MTBlMzJhOWIzNmNiNTY5ODdjMmYwNjVjNDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKQEAgLTUyLDI5ICs1MiwyNyBAQCBXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYgV2lkZ2V0SGllcmFyY2h5VXBk
YXRlcwogCiB2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVX
aWRnZXRzKCkKIHsKLSAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXA7Ci0gICAgd2lkZ2V0TmV3UGFy
ZW50TWFwKCkuc3dhcChtYXApOwotICAgIFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBlbmQg
PSBtYXAuZW5kKCk7Ci0gICAgZm9yIChXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgaXQgPSBt
YXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdpZGdldCogY2hpbGQgPSBp
dC0+a2V5LmdldCgpOwotICAgICAgICBTY3JvbGxWaWV3KiBjdXJyZW50UGFyZW50ID0gY2hpbGQt
PnBhcmVudCgpOwotICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGl0LT52YWx1ZTsKKyAg
ICBhdXRvIG1hcCA9IFdURk1vdmUod2lkZ2V0TmV3UGFyZW50TWFwKCkpOworICAgIGZvciAoYXV0
byYgZW50cnkgOiBtYXApIHsKKyAgICAgICAgYXV0byYgY2hpbGQgPSAqZW50cnkua2V5OworICAg
ICAgICBhdXRvKiBjdXJyZW50UGFyZW50ID0gY2hpbGQucGFyZW50KCk7CisgICAgICAgIGF1dG8q
IG5ld1BhcmVudCA9IGVudHJ5LnZhbHVlOwogICAgICAgICBpZiAobmV3UGFyZW50ICE9IGN1cnJl
bnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50KQotICAgICAgICAgICAg
ICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKCpjaGlsZCk7CisgICAgICAgICAgICAgICAg
Y3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgaWYgKG5ld1Bh
cmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRn
ZXQqIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKK3N0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1Bh
cmVudFNvb24oV2lkZ2V0JiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCiB7CiAgICAgaWYgKCFX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjppc1N1c3BlbmRlZCgpKSB7CiAg
ICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21QYXJlbnQoKTsKKyAg
ICAgICAgICAgIGNoaWxkLnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpzY2hlZHVsZVdp
ZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKQEAgLTE2Nyw3ICsxNjUsNyBAQCB2b2lkIFJlbmRl
cldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV93aWRnZXQpIHsKLSAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50U29v
bihtX3dpZGdldC5nZXQoKSwgMCk7CisgICAgICAgIG1vdmVXaWRnZXRUb1BhcmVudFNvb24oKm1f
d2lkZ2V0LCBudWxscHRyKTsKICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLndpbGxSZW1vdmVX
aWRnZXRGcm9tUmVuZGVyVHJlZSgqbV93aWRnZXQpOwogICAgICAgICB3aWRnZXRSZW5kZXJlck1h
cCgpLnJlbW92ZShtX3dpZGdldC5nZXQoKSk7CiAgICAgICAgIG1fd2lkZ2V0ID0gbnVsbHB0cjsK
QEAgLTE5Myw3ICsxOTEsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0cjxX
aWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKG1fd2lkZ2V0Lmdl
dCgpLCAmdmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50U29v
bigqbV93aWRnZXQsICZ2aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgIH0KIH0KIApAQCAtMzM4LDkg
KzMzNiw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSkKICAgICAgICAgbV93aWRnZXQtPnNldElzU2VsZWN0ZWQoaXNTZWxlY3RlZCgp
KTsKIH0KIAotUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lkZ2V0KiB3
aWRnZXQpCitSZW5kZXJXaWRnZXQqIFJlbmRlcldpZGdldDo6ZmluZChjb25zdCBXaWRnZXQmIHdp
ZGdldCkKIHsKLSAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQod2lkZ2V0KTsKKyAg
ICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQoJndpZGdldCk7CiB9CiAKIGJvb2wgUmVu
ZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
biBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXggNmUw
MTFkNzM5ZTUzYzZkYTliMTFhN2RhODZkOGVkY2VjM2U0NDk3Yi4uYzZhOWJjNWY5MzVjMzM5NDgw
ODcyYTExZjM2MDc5ODBlYjRiYTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaApAQCAtNDQsMTQgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMg
Ym9vbCBpc1N1c3BlbmRlZCgpIHsgcmV0dXJuIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVu
ZENvdW50OyB9Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01vdmUoV2lkZ2V0KiB3
aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0KHdpZGdl
dCwgZnJhbWUpOyB9CisgICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01vdmUoV2lkZ2V0
JiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0KCZ3
aWRnZXQsIGZyYW1lKTsgfQogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7CisgICAgdXNpbmcgV2lkZ2V0
VG9QYXJlbnRNYXAgPSBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZpZXcqPjsKICAgICBz
dGF0aWMgV2lkZ2V0VG9QYXJlbnRNYXAmIHdpZGdldE5ld1BhcmVudE1hcCgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHVuc2lnbmVkIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50OwogfTsKICAg
ICAKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV93aWRnZXQuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdp
ZGdldChSZWZQdHI8V2lkZ2V0PiYmKTsKIAotICAgIHN0YXRpYyBSZW5kZXJXaWRnZXQqIGZpbmQo
Y29uc3QgV2lkZ2V0Kik7CisgICAgc3RhdGljIFJlbmRlcldpZGdldCogZmluZChjb25zdCBXaWRn
ZXQmKTsKIAogICAgIGVudW0gY2xhc3MgQ2hpbGRXaWRnZXRTdGF0ZSB7IFZhbGlkLCBEZXN0cm95
ZWQgfTsKICAgICBDaGlsZFdpZGdldFN0YXRlIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCkgV0FSTl9V
TlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5j
cHAKaW5kZXggMWE1OWY2NTU3NDg5ZDA3N2Y0YmJkYmYyOGE4ZGZiOGI0NmU3YTI0Yy4uYWFmNzFj
Yjc5ZmMxNjA4ZmRiMGY0YTc4M2I5NmM4YTExZDRiYjE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBUZXh0
QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKCkgLT4gU3RpbGxIYXNOb2Rlcwog
CiAgICAgICAgIC8vIFJlc2l6ZSB0aGUgbGluZSBoZWlnaHQgb2YgdGhlIHBhcmVudC4KICAgICAg
ICAgYXV0byYgcGFyZW50U3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAg
TGVuZ3RoIGxpbmVIZWlnaHRMZW5ndGggPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0
KCk7CisgICAgICAgIGF1dG8mIGxpbmVIZWlnaHRMZW5ndGggPSBwYXJlbnRTdHlsZS5zcGVjaWZp
ZWRMaW5lSGVpZ2h0KCk7CiAKICAgICAgICAgaW50IHNwZWNpZmllZExpbmVIZWlnaHQ7CiAgICAg
ICAgIGlmIChsaW5lSGVpZ2h0TGVuZ3RoLmlzUGVyY2VudCgpKQpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IGF1dG8gVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4dE5vZGVTaXplcygpIC0+IFN0aWxs
SGFzTm9kZXMKIAogICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHls
ZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVI
ZWlnaHQoTGVuZ3RoKGxpbmVIZWlnaHQsIEZpeGVkKSk7Ci0gICAgICAgIG5ld1BhcmVudFN0eWxl
LnNldFNwZWNpZmllZExpbmVIZWlnaHQobGluZUhlaWdodExlbmd0aCk7CisgICAgICAgIG5ld1Bh
cmVudFN0eWxlLnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHsgbGluZUhlaWdodExlbmd0
aCB9KTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZu
b2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgcGFyZW50UmVuZGVyZXIt
PnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKQEAgLTE4OCwxMiArMTg4LDEyIEBA
IHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQoKQogICAgICAgICAgICAgcGFyZW50UmVu
ZGVyZXIgPSBwYXJlbnRSZW5kZXJlci0+cGFyZW50KCk7CiAKICAgICAgICAgYXV0byYgcGFyZW50
U3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgTGVuZ3RoIG9yaWdpbmFs
TGluZUhlaWdodCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKKyAgICAgICAg
YXV0byYgb3JpZ2luYWxMaW5lSGVpZ2h0ID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhlaWdo
dCgpOwogICAgICAgICBpZiAob3JpZ2luYWxMaW5lSGVpZ2h0ID09IHBhcmVudFN0eWxlLmxpbmVI
ZWlnaHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gbmV3UGFyZW50
U3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHBhcmVudFN0eWxlKTsKLSAgICAgICAg
bmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChvcmlnaW5hbExpbmVIZWlnaHQpOworICAgICAg
ICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IG9yaWdpbmFsTGluZUhlaWdo
dCB9KTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZu
b2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgcGFyZW50UmVuZGVyZXIt
PnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggY2E0NmMyZWJjZDAyZmRlMzRl
NWU2YzBiZjBiZDhiNzJhMDRhMmUwNC4uNjE2MmFjYmI5M2Y3M2ViNWY5OTU3M2JkMTVkYzFjNjMz
ZDExMzE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHAKQEAgLTQ5LDE0ICs0OSwxMSBAQCBSZWY8TWF0aE1MU3R5bGU+IE1hdGhNTFN0eWxl
OjpjcmVhdGUoKQogCiBjb25zdCBNYXRoTUxTdHlsZSogTWF0aE1MU3R5bGU6OmdldE1hdGhNTFN0
eWxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBSZW5kZXJNYXRoTUxUYWJsZSBkZXJpdmUgZnJv
bSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGlzPwotICAgICAgICBp
ZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpLT5tYXRoTUxTdHlsZSgpOwotICAg
ICAgICBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpLT5tYXRoTUxTdHlsZSgp
OwotICAgIH0KLQorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBSZW5kZXJNYXRoTUxUYWJs
ZSBkZXJpdmUgZnJvbSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGlz
PworICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQorICAgICAgICByZXR1
cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPigqcmVuZGVyZXIpLm1hdGhNTFN0eWxlKCk7
CisgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlcikpCisgICAgICAgIHJldHVy
biAmZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpyZW5kZXJlcikubWF0aE1MU3R5bGUoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNjUsOSArNjIsOSBAQCB2b2lkIE1hdGhNTFN0
eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAg
Zm9yIChhdXRvKiBjaGlsZCA9IHJlbmRlcmVyOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dElu
UHJlT3JkZXIocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBS
ZW5kZXJNYXRoTUxUYWJsZSBkZXJpdmUgZnJvbSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRlciB0
byBzaW1wbGlmeSB0aGlzPwogICAgICAgICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KGNoaWxk
KSkKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPihjaGlsZCktPm1hdGhN
TFN0eWxlKCktPnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CisgICAgICAgICAgICBkb3duY2Fz
dDxSZW5kZXJNYXRoTUxUYWJsZT4oKmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29sdmVNYXRoTUxT
dHlsZShjaGlsZCk7CiAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihjaGls
ZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oY2hpbGQpLT5tYXRo
TUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOworICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpjaGlsZCkubWF0aE1MU3R5bGUoKS5yZXNvbHZlTWF0aE1M
U3R5bGUoY2hpbGQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IGJiMTQyYTI1NDIwYTNhNmJjZTE0
YzE1NGJkZTkzMjMzNjM0MzRlMTIuLjYxYTEyY2E0ODdmM2E1YmJjNTU0ZGVlMGM4M2FmNjQ1YTYy
MWRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhN
TEJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTWF0
aE1MQmxvY2soKTsKIAotICAgIE1hdGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8TWF0aE1MU3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0KKyAg
ICBNYXRoTUxTdHlsZSYgbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21hdGhNTFN0eWxl
OyB9CiAKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAKLSAgICBNYXRoTUxTdHlsZSogbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0aE1MU3R5bGUuZ2V0KCkpOyB9Cisg
ICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9tYXRoTUxTdHls
ZTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggMzVlNDQxNDVmN2Y4NjJj
MDhiZDA0ZTIxN2VkNWZkMGRlNjMwYzEwOC4uYTIwYmQxMjJkODhjZTBmMDhkNzQ1NzdlZTc5ODVh
MDNhNTk4OTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUmVuZGVyTWF0
aE1MRnJhY3Rpb246OkZyYWN0aW9uUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJh
Y3Rpb25QYXJhbWV0ZXIKICAgICAvLyBXZSB0cnkgYW5kIHJlYWQgY29uc3RhbnRzIHRvIGRyYXcg
dGhlIGZyYWN0aW9uIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5kIHVzZSBmYWxsYmFjayB2YWx1
ZXMgb3RoZXJ3aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5mb250
Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0byogbWF0aERhdGEgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpOwotICAgIGJvb2wgZGlz
cGxheSA9IG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOworICAgIGJvb2wgZGlzcGxheSA9
IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYgKG1hdGhEYXRhKSB7CiAgICAg
ICAgIHBhcmFtZXRlcnMubnVtZXJhdG9yR2FwTWluID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFu
dChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uTnVtRGlz
cGxheVN0eWxlR2FwTWluIDogT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25OdW1lcmF0b3JHYXBN
aW4pOwogICAgICAgICBwYXJhbWV0ZXJzLmRlbm9taW5hdG9yR2FwTWluID0gbWF0aERhdGEtPmdl
dE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OkZy
YWN0aW9uRGVub21EaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlv
bkRlbm9taW5hdG9yR2FwTWluKTsKQEAgLTExNiw3ICsxMTYsNyBAQCBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6U3RhY2tQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpzdGFja1BhcmFtZXRl
cnMoKQogICAgIC8vIFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMgdG8gZHJhdyB0aGUgc3RhY2sg
ZnJvbSB0aGUgT3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxiYWNrIHZhbHVlcyBvdGhlcndpc2Uu
CiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkucHJp
bWFyeUZvbnQoKTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1M
U3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5bGUo
KS5kaXNwbGF5U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEpIHsKICAgICAgICAgcGFyYW1ldGVy
cy5nYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5
ID8gT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tEaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVuVHlwZU1h
dGhEYXRhOjpTdGFja0dhcE1pbik7CiAgICAgICAgIHBhcmFtZXRlcnMudG9wU2hpZnRVcCA9IG1h
dGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1h
dGhEYXRhOjpTdGFja1RvcERpc3BsYXlTdHlsZVNoaWZ0VXAgOiBPcGVuVHlwZU1hdGhEYXRhOjpT
dGFja1RvcFNoaWZ0VXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGUyMTJlOWJmNzM0YWQyNTVmMDZlNjkw
ZWMyNWUxNzg1YTkyOTllMDUuLjAyZmQ0NGU1NTQ0ZTlmNzIyMTI2NzNlOTE2ZGQ2NWI4MTQzYmEx
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmgKQEAgLTQ4LDggKzQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXRTdHJldGNoU2l6ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc09wZXJhdG9yRmxhZyhNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpIGNvbnN0OwotICAgIGJvb2wgaXNMYXJnZU9wZXJh
dG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JGbGFnKE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxP
cGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYmIG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHls
ZSgpOyB9Ci0gICAgYm9vbCBzaG91bGRNb3ZlTGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFzT3Bl
cmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYgIW1h
dGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOyB9CisgICAgYm9vbCBpc0xhcmdlT3BlcmF0b3JJ
bkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6TGFyZ2VPcCkgJiYgbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsg
fQorICAgIGJvb2wgc2hvdWxkTW92ZUxpbWl0cygpIGNvbnN0IHsgcmV0dXJuIGhhc09wZXJhdG9y
RmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6Ok1vdmFibGVMaW1pdHMpICYmICFtYXRoTUxT
dHlsZSgpLmRpc3BsYXlTdHlsZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmVydGljYWwoKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGl0YWxpY0NvcnJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X21hdGhPcGVyYXRvci5pdGFsaWNDb3JyZWN0aW9uKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggMWE2NmVj
ODdlNmQ5MzQzYmY1Y2E1NTliOTc4MGE5MDJmN2YxNGUyMi4uM2Q3NTdhN2E4NTZhY2I2MWYwZTZm
ODIzZDk2YTk5ODk1Mjk1YTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVuZGVy
TWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZlcnRpY2Fs
UGFyYW1ldGVycygpCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRD
YXNjYWRlKCkucHJpbWFyeUZvbnQoKTsKICAgICBpZiAoYXV0byogbWF0aERhdGEgPSBzdHlsZSgp
LmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMucnVsZVRoaWNrbmVzcyA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxSdWxlVGhpY2tuZXNzKTsKLSAgICAgICAgcGFy
YW1ldGVycy52ZXJ0aWNhbEdhcCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6UmFk
aWNhbERpc3BsYXlTdHlsZVZlcnRpY2FsR2FwIDogT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFZl
cnRpY2FsR2FwKTsKKyAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IG1hdGhEYXRhLT5n
ZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCkg
PyBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGlzcGxheVN0eWxlVmVydGljYWxHYXAgOiBPcGVu
VHlwZU1hdGhEYXRhOjpSYWRpY2FsVmVydGljYWxHYXApOwogICAgICAgICBwYXJhbWV0ZXJzLmV4
dHJhQXNjZW5kZXIgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVu
VHlwZU1hdGhEYXRhOjpSYWRpY2FsRXh0cmFBc2NlbmRlcik7CiAgICAgICAgIGlmIChtX2tpbmQg
PT0gUm9vdFdpdGhJbmRleCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMuZGVncmVlQm90dG9tUmFp
c2VQZXJjZW50ID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3BlblR5
cGVNYXRoRGF0YTo6UmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCk7CkBAIC0xMzEsNyAr
MTMxLDcgQEAgUmVuZGVyTWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhN
TFJvb3Q6OnZlcnRpY2FsUGFyYW1ldGVycygpCiAgICAgICAgIC8vIFJhZGljYWxFeHRyYUFzY2Vu
ZGVyOiBTdWdnZXN0ZWQgdmFsdWUgaXMgUmFkaWNhbFJ1bGVUaGlja25lc3MuCiAgICAgICAgIC8v
IFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2YWx1ZSBpcyA2MCUu
CiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IHJ1bGVUaGlja25lc3NGYWxsYmFj
aygpOwotICAgICAgICBpZiAobWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCkpCisgICAgICAg
IGlmIChtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpKQogICAgICAgICAgICAgcGFyYW1ldGVy
cy52ZXJ0aWNhbEdhcCA9IHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyArIHN0eWxlKCkuZm9udE1l
dHJpY3MoKS54SGVpZ2h0KCkgLyA0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJhbWV0
ZXJzLnZlcnRpY2FsR2FwID0gNSAqIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyAvIDQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCmluZGV4IDU1NWJkNjhkNjUxYjVmOGFmMDUxZjAxNWQzZWFmYzc3ZTA2OGYzOTEuLmE1YzRj
MWMwZDBjNWQ5YWU2MGZlMTEyMDg0ZjY4NGE2NzE5YWY4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01Mjgs
NyArNTI4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlw
aCgpCiAKICAgICBjb25zdCBhdXRvJiB0b2tlbkVsZW1lbnQgPSBlbGVtZW50KCk7CiAgICAgaWYg
KGF1dG8gY29kZVBvaW50ID0gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2Rl
UG9pbnQoZWxlbWVudCgpLnRleHRDb250ZW50KCkpKSB7Ci0gICAgICAgIE1hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQoKTsK
KyAgICAgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aHZhcmlhbnQgPSBtYXRoTUxT
dHlsZSgpLm1hdGhWYXJpYW50KCk7CiAgICAgICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRoTUxF
bGVtZW50OjpNYXRoVmFyaWFudDo6Tm9uZSkKICAgICAgICAgICAgIG1hdGh2YXJpYW50ID0gdG9r
ZW5FbGVtZW50Lmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKSA/IE1hdGhNTEVsZW1lbnQ6
Ok1hdGhWYXJpYW50OjpJdGFsaWMgOiBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9ybWFs
OwogICAgICAgICBVQ2hhcjMyIHRyYW5zZm9ybWVkQ29kZVBvaW50ID0gbWF0aFZhcmlhbnQoY29k
ZVBvaW50LnZhbHVlKCksIG1hdGh2YXJpYW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDI5MGM2ZDg1ZDBlZTMyZDUwNjM3MzUyNmI5
MDZiNDg2ZmQ4MzM1OTAuLjA2YjNlMDkwZWE5N2JhZWQxNTAxMTc0OTExNzcyMmJlMWY3MjlhNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApA
QCAtMzg3LDggKzM4Nyw4IEBAIGJvb2wgQmFzaWNTaGFwZUluc2V0OjpvcGVyYXRvcj09KGNvbnN0
IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAogCiBzdGF0aWMgRmxvYXRTaXplIGZsb2F0U2l6ZUZv
ckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCkKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5n
dGgobGVuZ3RoU2l6ZS53aWR0aCgpLCBib3VuZGluZ0JveC53aWR0aCgpKSwKLSAgICAgICAgZmxv
YXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLmhlaWdodCgpLCBib3VuZGluZ0JveC5oZWlnaHQo
KSkpOworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53aWR0aCwg
Ym91bmRpbmdCb3gud2lkdGgoKSksCisgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3Ro
U2l6ZS5oZWlnaHQsIGJvdW5kaW5nQm94LmhlaWdodCgpKSB9OwogfQogCiBjb25zdCBQYXRoJiBC
YXNpY1NoYXBlSW5zZXQ6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDI5NGZiODJhMDRl
ZGY0Y2EyOTFiODJjODNkMTllZDBjMDZmMjBhMWQuLjA2YmNjOTlmOGIwZjE5ZGNhNGJkMjcyNjUx
ZGFjMzJiYjdkZDU1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Cb3JkZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRl
ckRhdGEuaApAQCAtMzQsMTAgKzM0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJv
cmRlckRhdGEgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgotICAgIEJvcmRl
ckRhdGEoKSA6IG1fdG9wTGVmdChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQot
ICAgICAgICAgICAgICAgICAsIG1fdG9wUmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX2JvdHRvbUxlZnQoTGVuZ3RoKDAsIEZpeGVk
KSwgTGVuZ3RoKDAsIEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX2JvdHRvbVJpZ2h0KExl
bmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCisgICAgQm9yZGVyRGF0YSgpCisgICAg
ICAgIDogbV90b3BMZWZ0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQorICAgICAgICAs
IG1fdG9wUmlnaHQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CisgICAgICAgICwgbV9i
b3R0b21MZWZ0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQorICAgICAgICAsIG1fYm90
dG9tUmlnaHQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CiAgICAgewogICAgIH0KICAg
ICBib29sIGhhc0JvcmRlcigpIGNvbnN0CkBAIC01OSwxNSArNjAsMTAgQEAgcHVibGljOgogICAg
IAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICgh
bV90b3BMZWZ0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKS5pc1plcm8oKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgo
KS5pc1plcm8oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiAhbV90b3BMZWZ0LndpZHRoLmlzWmVybygpCisgICAgICAgICAg
ICB8fCAhbV90b3BSaWdodC53aWR0aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fYm90dG9t
TGVmdC53aWR0aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fYm90dG9tUmlnaHQud2lkdGgu
aXNaZXJvKCk7CiAgICAgfQogICAgIAogICAgIGZsb2F0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAppbmRl
eCAwYmQwZDcwNjExYWMxYzFmMGM0MzEzMGI0MDMxYmJkZDI0ZWZjMzlmLi5jNmMwMjI0YmNkYjhh
ODdlNWU1YzIzMTA5YTVlMWRmZWM5N2E0Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKQEAgLTM4LDggKzM4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnREYXRhPiBDb250ZW50RGF0YTo6Y2xvbmUoKSBjb25zdAogICAgIGF1dG8gcmVz
dWx0ID0gY2xvbmVJbnRlcm5hbCgpOwogICAgIGF1dG8qIGxhc3ROZXdEYXRhID0gcmVzdWx0Lmdl
dCgpOwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBuZXh0KCk7IGNvbnRlbnREYXRhOyBj
b250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKLSAgICAgICAgYXV0byBuZXdEYXRh
ID0gY29udGVudERhdGEtPmNsb25lSW50ZXJuYWwoKTsKLSAgICAgICAgbGFzdE5ld0RhdGEtPnNl
dE5leHQoV1RGTW92ZShuZXdEYXRhKSk7CisgICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0KGNv
bnRlbnREYXRhLT5jbG9uZUludGVybmFsKCkpOwogICAgICAgICBsYXN0TmV3RGF0YSA9IGxhc3RO
ZXdEYXRhLT5uZXh0KCk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IDE2ZDY1NTc2MGRlNzUyY2Yx
NjJhMzZlNTBjYjAzNTY3NmQ3ZGQyOTIuLjllOTdjMDIzNWMzZGZlZDVkYzg0OTVmYmY3YTY5NjAx
MDQ2YjhlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0
YS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlbmRlclB0
cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRh
PiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29udGVudERhdGE+KHRleHQoKSk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERh
dGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAppbmRleCAzZjkzYTU3ZWY1ODI2
MWRmYWEyY2VmZGY2ZGE5YjJhOWIzOWYyMzljLi5mNTQyZDZjMmExNmZjZjc4YjE2NmVhMjllZWQw
ZmQ4YjRjZjBmMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RGF0YVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgK
QEAgLTEsOCArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwzMCArMjYs
NjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
RGF0YVJlZiB7CiBwdWJsaWM6Ci0gICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1f
ZGF0YShjb25zdF9jYXN0PFQmPihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KLSAgICBEYXRhUmVm
JiBvcGVyYXRvcj0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxU
Jj4ob3RoZXIubV9kYXRhLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgRGF0YVJlZihSZWY8
VD4mJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgIHsKKyAgICB9
CiAKLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0KKyAg
ICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKQorICAgICAgICA6IG1fZGF0YShvdGhlci5t
X2RhdGEuY29weVJlZigpKQorICAgIHsKKyAgICB9CisKKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0o
Y29uc3QgRGF0YVJlZiYgb3RoZXIpCisgICAgeworICAgICAgICBtX2RhdGEgPSBvdGhlci5tX2Rh
dGEuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgY29uc3Qg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9Ci0gICAgY29uc3QgVCogb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisgICAgRGF0YVJlZihEYXRhUmVmJiYp
ID0gZGVmYXVsdDsKKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0oRGF0YVJlZiYmKSA9IGRlZmF1bHQ7
CisKKyAgICBEYXRhUmVmIHJlcGxhY2UoRGF0YVJlZiYmIG90aGVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZGF0YS5yZXBsYWNlKFdURk1vdmUob3RoZXIubV9kYXRhKSk7CisgICAgfQorCisg
ICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0
YTsKKyAgICB9CiAKLSAgICBUKiBhY2Nlc3MoKQorICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJh
dG9yKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAg
IGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0
YS5wdHIoKTsKKyAgICB9CisKKyAgICBUJiBhY2Nlc3MoKQogICAgIHsKICAgICAgICAgaWYgKCFt
X2RhdGEtPmhhc09uZVJlZigpKQogICAgICAgICAgICAgbV9kYXRhID0gbV9kYXRhLT5jb3B5KCk7
Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWYmIG90aGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKSA9PSBvLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0
KCkgPT0gby5tX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgPT0gb3Ro
ZXIubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9PSBvdGhlci5tX2RhdGEuZ2V0KCk7CiAg
ICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmPFQ+JiBvKSBjb25z
dAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERhdGFSZWYmIG90aGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKSAhPSBvLm1fZGF0YS5wdHIoKSAmJiBtX2Rh
dGEuZ2V0KCkgIT0gby5tX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9LZXlmcmFtZUxpc3QuY3BwCmluZGV4IDc2NTIzODA1YTI1Yzk0MjZhZmUwM2MzMzkxYzBl
Nzg5OThhNTFkMjYuLjk3Mjk4YWI0NDc5YTdlYTI3ZGU5ZmJlMzgyZTJiNzQ3MGI2ZjQwMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwCkBA
IC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaW1pbmdGdW5jdGlvbiog
S2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBj
b25zdAogewotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBrZXlmcmFtZVN0eWxlID0gc3R5bGUoKTsK
KyAgICBhdXRvKiBrZXlmcmFtZVN0eWxlID0gc3R5bGUoKTsKICAgICBpZiAoIWtleWZyYW1lU3R5
bGUgfHwgIWtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleWZyYW1lU3R5bGUtPmFuaW1hdGlv
bnMoKS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24g
PSBrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCktPmFuaW1hdGlvbihpKTsKICAgICAgICAgaWYg
KG5hbWUgPT0gYW5pbWF0aW9uLm5hbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBhbmltYXRpb24u
dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb24udGlt
aW5nRnVuY3Rpb24oKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ0LDcgKzQ0
LDYgQEAgVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIAogS2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0
KCkKIHsKLSAgICBjbGVhcigpOwogfQogCiB2b2lkIEtleWZyYW1lTGlzdDo6Y2xlYXIoKQpAQCAt
NTgsMTUgKzU3LDEyIEBAIGJvb2wgS2V5ZnJhbWVMaXN0OjpvcGVyYXRvcj09KGNvbnN0IEtleWZy
YW1lTGlzdCYgbykgY29uc3QKICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgpICE9IG8ubV9rZXlm
cmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBWZWN0b3I8S2V5ZnJh
bWVWYWx1ZT46OmNvbnN0X2l0ZXJhdG9yIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVnaW4oKTsKLSAg
ICBmb3IgKFZlY3RvcjxLZXlmcmFtZVZhbHVlPjo6Y29uc3RfaXRlcmF0b3IgaXQxID0gbV9rZXlm
cmFtZXMuYmVnaW4oKTsgaXQxICE9IG1fa2V5ZnJhbWVzLmVuZCgpOyArK2l0MSkgeworICAgIGF1
dG8gaXQyID0gby5tX2tleWZyYW1lcy5iZWdpbigpOworICAgIGZvciAoYXV0byBpdDEgPSBtX2tl
eWZyYW1lcy5iZWdpbigpOyBpdDEgIT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxLCArK2l0Mikg
ewogICAgICAgICBpZiAoaXQxLT5rZXkoKSAhPSBpdDItPmtleSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUxID0gKml0MS0+c3R5
bGUoKTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlMiA9ICppdDItPnN0eWxlKCk7
Ci0gICAgICAgIGlmIChzdHlsZTEgIT0gc3R5bGUyKQorICAgICAgICBpZiAoKml0MS0+c3R5bGUo
KSAhPSAqaXQyLT5zdHlsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAr
K2l0MjsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IGNlODRiMTYwZjE5NzM5ZGQ5
NmI0ODFiMDQ5ZjZmZmMwM2Y1YmUwNzYuLmU4YzkyMzJjMTZlNTc5ZmYxNmZmNDM3NTY1ZTlkZTI2
ODgwYzAyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmNwcApAQCAtNjAsMjAgKzYwLDIyIEBAIExheW91dFVuaXQgTmluZVBpZWNlSW1h
Z2U6OmNvbXB1dGVTbGljZShMZW5ndGggbGVuZ3RoLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRV
CiAKIExheW91dEJveEV4dGVudCBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZVNsaWNlcyhjb25zdCBM
YXlvdXRTaXplJiBzaXplLCBjb25zdCBMZW5ndGhCb3gmIGxlbmd0aHMsIGludCBzY2FsZUZhY3Rv
cikKIHsKLSAgICBMYXlvdXRVbml0IHRvcCAgICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUu
aGVpZ2h0KCksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aHMudG9wKCksICAgIHNpemUuaGVpZ2h0KCkp
KSAqIHNjYWxlRmFjdG9yOwotICAgIExheW91dFVuaXQgcmlnaHQgID0gc3RkOjptaW48TGF5b3V0
VW5pdD4oc2l6ZS53aWR0aCgpLCAgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5yaWdodCgpLCAgc2l6
ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3I7Ci0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6
Om1pbjxMYXlvdXRVbml0PihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLmJv
dHRvbSgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlvdXRVbml0IGxl
ZnQgICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUud2lkdGgoKSwgIHZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aHMubGVmdCgpLCAgIHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yOwotICAgIHJl
dHVybiBMYXlvdXRCb3hFeHRlbnQodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICByZXR1
cm4geworICAgICAgICBzdGQ6Om1pbihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChsZW5n
dGhzLnRvcCgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvciwKKyAgICAgICAgc3RkOjpt
aW4oc2l6ZS53aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLnJpZ2h0KCksIHNpemUud2lk
dGgoKSkpICAqIHNjYWxlRmFjdG9yLAorICAgICAgICBzdGQ6Om1pbihzaXplLmhlaWdodCgpLCB2
YWx1ZUZvckxlbmd0aChsZW5ndGhzLmJvdHRvbSgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZh
Y3RvciwKKyAgICAgICAgc3RkOjptaW4oc2l6ZS53aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChsZW5n
dGhzLmxlZnQoKSwgc2l6ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3IKKyAgICB9OwogfQogCiBM
YXlvdXRCb3hFeHRlbnQgTmluZVBpZWNlSW1hZ2U6OmNvbXB1dGVTbGljZXMoY29uc3QgTGF5b3V0
U2l6ZSYgc2l6ZSwgY29uc3QgTGVuZ3RoQm94JiBsZW5ndGhzLCBjb25zdCBGbG9hdEJveEV4dGVu
dCYgd2lkdGhzLCBjb25zdCBMYXlvdXRCb3hFeHRlbnQmIHNsaWNlcykKIHsKLSAgICBMYXlvdXRV
bml0IHRvcCAgICA9IGNvbXB1dGVTbGljZShsZW5ndGhzLnRvcCgpLCAgICB3aWR0aHMudG9wKCks
ICAgIHNsaWNlcy50b3AoKSwgICAgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCByaWdo
dCAgPSBjb21wdXRlU2xpY2UobGVuZ3Rocy5yaWdodCgpLCAgd2lkdGhzLnJpZ2h0KCksICBzbGlj
ZXMucmlnaHQoKSwgIHNpemUud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBjb21w
dXRlU2xpY2UobGVuZ3Rocy5ib3R0b20oKSwgd2lkdGhzLmJvdHRvbSgpLCBzbGljZXMuYm90dG9t
KCksIHNpemUuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgbGVmdCAgID0gY29tcHV0ZVNsaWNl
KGxlbmd0aHMubGVmdCgpLCAgIHdpZHRocy5sZWZ0KCksICAgc2xpY2VzLmxlZnQoKSwgICBzaXpl
LndpZHRoKCkpOwotICAgIHJldHVybiBMYXlvdXRCb3hFeHRlbnQodG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0KTsKKyAgICByZXR1cm4geworICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy50b3Ao
KSwgd2lkdGhzLnRvcCgpLCBzbGljZXMudG9wKCksIHNpemUuaGVpZ2h0KCkpLAorICAgICAgICBj
b21wdXRlU2xpY2UobGVuZ3Rocy5yaWdodCgpLCB3aWR0aHMucmlnaHQoKSwgc2xpY2VzLnJpZ2h0
KCksIHNpemUud2lkdGgoKSksCisgICAgICAgIGNvbXB1dGVTbGljZShsZW5ndGhzLmJvdHRvbSgp
LCB3aWR0aHMuYm90dG9tKCksIHNsaWNlcy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSksCisgICAg
ICAgIGNvbXB1dGVTbGljZShsZW5ndGhzLmxlZnQoKSwgd2lkdGhzLmxlZnQoKSwgc2xpY2VzLmxl
ZnQoKSwgc2l6ZS53aWR0aCgpKQorICAgIH07CiB9CiAKIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnNj
YWxlU2xpY2VzSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgTGF5b3V0Qm94RXh0ZW50
JiBzbGljZXMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCBmYWFiYmZkNWE4NmU4MTAwZmQ4
OTFiMGEwMDc1NjM0MzVmZjQxYTRjLi4yYjVmZTY1NTRlNzYzMWUxMmY0MzhmMWY4ZWUzMGZkNzE4
OTg4ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaApAQCAtMTA4LDUzICsxMDgsNTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+aW1hZ2U7IH0KICAgICBTdHlsZUltYWdlKiBpbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+aW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldElt
YWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2Ug
PSBXVEZNb3ZlKGltYWdlKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+
JiYgaW1hZ2UpIHsgbV9kYXRhLmFjY2VzcygpLmltYWdlID0gV1RGTW92ZShpbWFnZSk7IH0KIAog
ICAgIGNvbnN0IExlbmd0aEJveCYgaW1hZ2VTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEt
PmltYWdlU2xpY2VzOyB9Ci0gICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xpY2Vz
KSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KKyAg
ICB2b2lkIHNldEltYWdlU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2Vzcygp
LmltYWdlU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CiAKICAgICBib29sIGZpbGwoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEtPmZpbGw7IH0KLSAgICB2b2lkIHNldEZpbGwoYm9vbCBmaWxsKSB7
IG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IGZpbGw7IH0KKyAgICB2b2lkIHNldEZpbGwoYm9vbCBm
aWxsKSB7IG1fZGF0YS5hY2Nlc3MoKS5maWxsID0gZmlsbDsgfQogCiAgICAgY29uc3QgTGVuZ3Ro
Qm94JiBib3JkZXJTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmJvcmRlclNsaWNlczsg
fQotICAgIHZvaWQgc2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFj
Y2VzcygpLT5ib3JkZXJTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KKyAgICB2b2lkIHNldEJv
cmRlclNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGlj
ZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYgb3V0c2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLT5vdXRzZXQ7IH0KLSAgICB2b2lkIHNldE91dHNldChMZW5n
dGhCb3ggb3V0c2V0KSB7IG1fZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0gV1RGTW92ZShvdXRzZXQp
OyB9CisgICAgdm9pZCBzZXRPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNjZXNz
KCkub3V0c2V0ID0gV1RGTW92ZShvdXRzZXQpOyB9CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxl
IGhvcml6b250YWxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5pbmVQaWVjZUlt
YWdlUnVsZT4obV9kYXRhLT5ob3Jpem9udGFsUnVsZSk7IH0KLSAgICB2b2lkIHNldEhvcml6b250
YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCktPmhvcml6
b250YWxSdWxlID0gcnVsZTsgfQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFJ1bGUoRU5pbmVQaWVj
ZUltYWdlUnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nlc3MoKS5ob3Jpem9udGFsUnVsZSA9IHJ1bGU7
IH0KICAgICAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZlcnRpY2FsUnVsZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVOaW5lUGllY2VJbWFnZVJ1bGU+KG1fZGF0YS0+dmVydGljYWxS
dWxlKTsgfQotICAgIHZvaWQgc2V0VmVydGljYWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVs
ZSkgeyBtX2RhdGEuYWNjZXNzKCktPnZlcnRpY2FsUnVsZSA9IHJ1bGU7IH0KKyAgICB2b2lkIHNl
dFZlcnRpY2FsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2Vzcygp
LnZlcnRpY2FsUnVsZSA9IHJ1bGU7IH0KIAogICAgIHZvaWQgY29weUltYWdlU2xpY2VzRnJvbShj
b25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNz
KCktPmltYWdlU2xpY2VzID0gb3RoZXIubV9kYXRhLT5pbWFnZVNsaWNlczsKLSAgICAgICAgbV9k
YXRhLmFjY2VzcygpLT5maWxsID0gb3RoZXIubV9kYXRhLT5maWxsOworICAgICAgICBtX2RhdGEu
YWNjZXNzKCkuaW1hZ2VTbGljZXMgPSBvdGhlci5tX2RhdGEtPmltYWdlU2xpY2VzOworICAgICAg
ICBtX2RhdGEuYWNjZXNzKCkuZmlsbCA9IG90aGVyLm1fZGF0YS0+ZmlsbDsKICAgICB9CiAKICAg
ICB2b2lkIGNvcHlCb3JkZXJTbGljZXNGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhlcikK
ICAgICB7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gb3RoZXIubV9k
YXRhLT5ib3JkZXJTbGljZXM7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGljZXMg
PSBvdGhlci5tX2RhdGEtPmJvcmRlclNsaWNlczsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb3B5
T3V0c2V0RnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBt
X2RhdGEuYWNjZXNzKCktPm91dHNldCA9IG90aGVyLm1fZGF0YS0+b3V0c2V0OworICAgICAgICBt
X2RhdGEuYWNjZXNzKCkub3V0c2V0ID0gb3RoZXIubV9kYXRhLT5vdXRzZXQ7CiAgICAgfQogCiAg
ICAgdm9pZCBjb3B5UmVwZWF0RnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAg
ewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmhvcml6b250YWxSdWxlID0gb3RoZXIubV9kYXRh
LT5ob3Jpem9udGFsUnVsZTsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT52ZXJ0aWNhbFJ1bGUg
PSBvdGhlci5tX2RhdGEtPnZlcnRpY2FsUnVsZTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmhv
cml6b250YWxSdWxlID0gb3RoZXIubV9kYXRhLT5ob3Jpem9udGFsUnVsZTsKKyAgICAgICAgbV9k
YXRhLmFjY2VzcygpLnZlcnRpY2FsUnVsZSA9IG90aGVyLm1fZGF0YS0+dmVydGljYWxSdWxlOwog
ICAgIH0KIAogICAgIHZvaWQgc2V0TWFza0RlZmF1bHRzKCkKICAgICB7Ci0gICAgICAgIG1fZGF0
YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBMZW5ndGhCb3goMCk7Ci0gICAgICAgIG1fZGF0YS5h
Y2Nlc3MoKS0+ZmlsbCA9IHRydWU7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xp
Y2VzID0gTGVuZ3RoQm94KCk7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNlcyA9
IExlbmd0aEJveCgwKTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSB0cnVlOworICAg
ICAgICBtX2RhdGEuYWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gTGVuZ3RoQm94KCk7CiAgICAgfQog
CiAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZU91dHNldChjb25zdCBMZW5ndGgmIG91dHNl
dFNpZGUsIExheW91dFVuaXQgYm9yZGVyU2lkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDljNDcxMjVlYTc0MGY5NjcwNjA2ZmVmYWJi
OTVmZjhlNzZjYmQyMWMuLjhmZTgyZTE2NWI3M2MyYTNhYjc3ODYwMTBkZjQ1ZDdjZTJmNDhlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
NzEsMTEgKzcxLDExIEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAgIHZvaWQq
IGRhdGFSZWZTdmdTdHlsZTsKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICB1
bnNpZ25lZCBtX2JpdGZpZWxkc1syXTsKLSAgICB9IGluaGVyaXRlZF9mbGFnczsKKyAgICB9IG1f
aW5oZXJpdGVkRmxhZ3M7CiAKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAg
ICB1aW50NjRfdCBtX2ZsYWdzOwotICAgIH0gbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH0gbV9u
b25Jbmhlcml0ZWRGbGFnczsKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklU
WV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVsZXRpb25DaGVjazsKICNlbmRpZgpAQCAtODUsNyAr
ODUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1l
U2l6ZUFzUmVuZGVyU3R5bGUpLCBSZW5kZXJTdHlsZQogCiBSZW5kZXJTdHlsZSYgUmVuZGVyU3R5
bGU6OmRlZmF1bHRTdHlsZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZSA9ICpu
ZXcgUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmVuZGVyU3R5bGU+IHN0eWxlIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CiAgICAgcmV0
dXJuIHN0eWxlOwogfQogCkBAIC0xMjgsNTMgKzEyOCw2OCBAQCBSZW5kZXJTdHlsZSBSZW5kZXJT
dHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJgogfQogCiBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFn
KQotICAgIDogbV9ib3goU3R5bGVCb3hEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHZpc3VhbChTdHls
ZVZpc3VhbERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9iYWNrZ3JvdW5kKFN0eWxlQmFja2dyb3Vu
ZERhdGE6OmNyZWF0ZSgpKQotICAgICwgc3Vycm91bmQoU3R5bGVTdXJyb3VuZERhdGE6OmNyZWF0
ZSgpKQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEoU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6Y3JlYXRlKCkpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhOjpjcmVhdGUoKSkKLSAgICAsIGluaGVyaXRlZChTdHlsZUluaGVyaXRlZERhdGE6OmNyZWF0
ZSgpKQorICAgIDogbV9ib3hEYXRhKFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3Zp
c3VhbERhdGEoU3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2dyb3VuZERh
dGEoU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N1cnJvdW5kRGF0YShT
dHlsZVN1cnJvdW5kRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
KFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9yYXJlSW5oZXJp
dGVkRGF0YShTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1faW5oZXJp
dGVkRGF0YShTdHlsZUluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9zdmdTdHlsZShT
VkdSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpCiB7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9j
ZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9u
X3NpZGUgPSBpbml0aWFsQ2FwdGlvblNpZGUoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rf
c3R5bGVfdHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdz
Ll9saXN0X3N0eWxlX3Bvc2l0aW9uID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0gICAg
aW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKLSAgICBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7Ci0gICAgaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSA9IGluaXRpYWxUZXh0VHJhbnNmb3JtKCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zID0gaW5pdGlhbFRleHREZWNvcmF0
aW9uKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBpbml0aWFsQ3Vyc29y
KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gaW5pdGlhbEVtcHR5Q2VsbHMo
KTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gaW5pdGlhbENhcHRpb25TaWRl
KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gaW5pdGlhbExpc3RTdHls
ZVR5cGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gaW5pdGlh
bExpc3RTdHlsZVBvc2l0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0g
aW5pdGlhbFZpc2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IGlu
aXRpYWxUZXh0QWxpZ24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0gPSBp
bml0aWFsVGV4dFRyYW5zZm9ybSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRp
b25zID0gaW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJz
b3IgPSBpbml0aWFsQ3Vyc29yKCk7CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAg
IGluaGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlzaWJp
bGl0eSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRpYWxD
dXJzb3JWaXNpYmlsaXR5KCk7CiAjZW5kaWYKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlv
biA9IGluaXRpYWxEaXJlY3Rpb24oKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNl
ID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xs
YXBzZSA9IGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5tX3J0
bE9yZGVyaW5nID0gaW5pdGlhbFJUTE9yZGVyaW5nKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9i
b3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFn
cy5tX3ByaW50Q29sb3JBZGp1c3QgPSBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpOwotICAgIGlu
aGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKLSAgICBpbmhl
cml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKLSAgICBpbmhlcml0ZWRf
ZmxhZ3MubV93cml0aW5nTW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlvbigpOworICAgIG1faW5oZXJpdGVk
RmxhZ3Mud2hpdGVTcGFjZSA9IGluaXRpYWxXaGl0ZVNwYWNlKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5ib3JkZXJDb2xsYXBzZSA9IGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpOworICAgIG1faW5o
ZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24oKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QgPSBpbml0aWFsUHJpbnRDb2xvckFkanVz
dCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVy
RXZlbnRzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gTm90SW5zaWRlTGlu
azsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5oZXJp
dGVkRmxhZ3MgZG9lcyBub3QgZ3JvdyIpOwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25J
bmhlcml0ZWRGbGFncykgPD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7
CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIs
IENsb25lVGFnKQotICAgIDogbV9ib3gob3RoZXIubV9ib3gpCi0gICAgLCB2aXN1YWwob3RoZXIu
dmlzdWFsKQotICAgICwgbV9iYWNrZ3JvdW5kKG90aGVyLm1fYmFja2dyb3VuZCkKLSAgICAsIHN1
cnJvdW5kKG90aGVyLnN1cnJvdW5kKQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEob3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YSkKLSAgICAsIGluaGVyaXRlZChvdGhlci5pbmhlcml0ZWQpCitpbmxpbmUg
UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xvbmVU
YWcpCisgICAgOiBtX2JveERhdGEob3RoZXIubV9ib3hEYXRhKQorICAgICwgbV92aXN1YWxEYXRh
KG90aGVyLm1fdmlzdWFsRGF0YSkKKyAgICAsIG1fYmFja2dyb3VuZERhdGEob3RoZXIubV9iYWNr
Z3JvdW5kRGF0YSkKKyAgICAsIG1fc3Vycm91bmREYXRhKG90aGVyLm1fc3Vycm91bmREYXRhKQor
ICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
KQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKQor
ICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0YShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKQorICAg
ICwgbV9pbmhlcml0ZWREYXRhKG90aGVyLm1faW5oZXJpdGVkRGF0YSkKKyAgICAsIG1faW5oZXJp
dGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIu
bV9zdmdTdHlsZSkKLSAgICAsIGluaGVyaXRlZF9mbGFncyhvdGhlci5pbmhlcml0ZWRfZmxhZ3Mp
Ci0gICAgLCBub25pbmhlcml0ZWRfZmxhZ3Mob3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzKQorewor
fQorCitpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5k
ZXJTdHlsZSYmIGIpCisgICAgOiBtX2JveERhdGEoYS5tX2JveERhdGEucmVwbGFjZShXVEZNb3Zl
KGIubV9ib3hEYXRhKSkpCisgICAgLCBtX3Zpc3VhbERhdGEoYS5tX3Zpc3VhbERhdGEucmVwbGFj
ZShXVEZNb3ZlKGIubV92aXN1YWxEYXRhKSkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKGEubV9i
YWNrZ3JvdW5kRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX2JhY2tncm91bmREYXRhKSkpCisgICAg
LCBtX3N1cnJvdW5kRGF0YShhLm1fc3Vycm91bmREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fc3Vy
cm91bmREYXRhKSkpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhKGEubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKSkpCisg
ICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKHN0ZDo6ZXhjaGFuZ2UoYS5tX25vbkluaGVyaXRlZEZs
YWdzLCBiLm1fbm9uSW5oZXJpdGVkRmxhZ3MpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0YShh
Lm1fcmFyZUluaGVyaXRlZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9yYXJlSW5oZXJpdGVkRGF0
YSkpKQorICAgICwgbV9pbmhlcml0ZWREYXRhKGEubV9pbmhlcml0ZWREYXRhLnJlcGxhY2UoV1RG
TW92ZShiLm1faW5oZXJpdGVkRGF0YSkpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhzdGQ6OmV4
Y2hhbmdlKGEubV9pbmhlcml0ZWRGbGFncywgYi5tX2luaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1f
Y2FjaGVkUHNldWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2NhY2hlZFBzZXVkb1N0eWxlcywg
V1RGTW92ZShiLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCisgICAgLCBtX3N2Z1N0eWxlKGEubV9z
dmdTdHlsZS5yZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxlKSkpCiB7CiB9CiAKQEAgLTE4Niw2
ICsyMDEsMTEgQEAgUmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpCiAjZW5kaWYKIH0KIAorUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkKK3sK
KyAgICByZXR1cm4gUmVuZGVyU3R5bGUgeyAqdGhpcywgV1RGTW92ZShuZXdTdHlsZSkgfTsKK30K
KwogYm9vbCBSZW5kZXJTdHlsZTo6aXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpCiB7CiAjaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKQEAgLTIxMiw3ICsyMzIsNyBAQCBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduU2VsZihjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50UwogewogICAgIC8vIFRoZSBhdXRvIGtleXdvcmQgY29tcHV0ZXMgdG8gdGhlIHBhcmVu
dCdzIGFsaWduLWl0ZW1zIGNvbXB1dGVkIHZhbHVlLgogICAgIC8vIFdlIHdpbGwgcmV0dXJuIHRo
ZSBiZWhhdmlvdXIgb2YgJ25vcm1hbCcgdmFsdWUgaWYgbmVlZGVkLCB3aGljaCBpcyBzcGVjaWZp
YyBvZiBlYWNoIGxheW91dCBtb2RlbC4KLSAgICBpZiAoYWxpZ25TZWxmUG9zaXRpb24oKSA9PSBJ
dGVtUG9zaXRpb25BdXRvKQorICAgIGlmIChhbGlnblNlbGYoKS5wb3NpdGlvbigpID09IEl0ZW1Q
b3NpdGlvbkF1dG8pCiAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS5yZXNvbHZlZEFsaWduSXRl
bXMobm9ybWFsVmFsdWVCZWhhdmlvdXIpOwogICAgIHJldHVybiByZXNvbHZlZFNlbGZBbGlnbm1l
bnQoYWxpZ25TZWxmKCksIG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKIH0KQEAgLTIyMiw5ICsyNDIs
OCBAQCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlJ
dGVtcyhJdGVtUG9zaXRpb24gbm9ybWFsVmFsdQogICAgIC8vIEZJWE1FOiBqdXN0aWZ5LWl0ZW1z
ICdhdXRvJyB2YWx1ZSBpcyBhbGxvd2VkIG9ubHkgdG8gcHJvdmlkZSB0aGUgJ2xlZ2FjeScga2V5
d29yZCdzIGJlaGF2aW9yLCB3aGljaCBpdCdzIHN0aWxsIG5vdCBpbXBsZW1lbnRlZCBmb3IgbGF5
b3V0LgogICAgIC8vICJJZiB0aGUgaW5oZXJpdGVkIHZhbHVlIG9mIGp1c3RpZnktaXRlbXMgaW5j
bHVkZXMgdGhlIGxlZ2FjeSBrZXl3b3JkLCBhdXRvIGNvbXB1dGVzIHRvIHRoZSBpbmhlcml0ZWQg
dmFsdWUuIgogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtYWxpZ24vI2p1c3Rp
ZnktaXRlbXMtcHJvcGVydHkKLSAgICBpZiAoanVzdGlmeUl0ZW1zUG9zaXRpb24oKSA9PSBJdGVt
UG9zaXRpb25BdXRvKQorICAgIGlmIChqdXN0aWZ5SXRlbXMoKS5wb3NpdGlvbigpID09IEl0ZW1Q
b3NpdGlvbkF1dG8pCiAgICAgICAgIHJldHVybiB7IG5vcm1hbFZhbHVlQmVoYXZpb3VyLCBPdmVy
Zmxvd0FsaWdubWVudERlZmF1bHQgfTsKLQogICAgIHJldHVybiByZXNvbHZlZFNlbGZBbGlnbm1l
bnQoanVzdGlmeUl0ZW1zKCksIG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKIH0KIApAQCAtMjMyLDcg
KzI1MSw3IEBAIFN0eWxlU2VsZkFsaWdubWVudERhdGEgUmVuZGVyU3R5bGU6OnJlc29sdmVkSnVz
dGlmeVNlbGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVuCiB7CiAgICAgLy8gVGhlIGF1dG8ga2V5
d29yZCBjb21wdXRlcyB0byB0aGUgcGFyZW50J3MganVzdGlmeS1pdGVtcyBjb21wdXRlZCB2YWx1
ZS4KICAgICAvLyBXZSB3aWxsIHJldHVybiB0aGUgYmVoYXZpb3VyIG9mICdub3JtYWwnIHZhbHVl
IGlmIG5lZWRlZCwgd2hpY2ggaXMgc3BlY2lmaWMgb2YgZWFjaCBsYXlvdXQgbW9kZWwuCi0gICAg
aWYgKGp1c3RpZnlTZWxmUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQorICAgIGlmIChq
dXN0aWZ5U2VsZigpLnBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKICAgICAgICAgcmV0
dXJuIHBhcmVudFN0eWxlLnJlc29sdmVkSnVzdGlmeUl0ZW1zKG5vcm1hbFZhbHVlQmVoYXZpb3Vy
KTsKICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGp1c3RpZnlTZWxmKCksIG5vcm1h
bFZhbHVlQmVoYXZpb3VyKTsKIH0KQEAgLTI2OSw0MyArMjg4LDQyIEBAIENvbnRlbnREaXN0cmli
dXRpb25UeXBlIFJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudERpc3RyaWJ1dGlvbihj
b25zdCBTdHlsCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0
eWxlJiBpbmhlcml0UGFyZW50KQogewotICAgIHJhcmVJbmhlcml0ZWREYXRhID0gaW5oZXJpdFBh
cmVudC5yYXJlSW5oZXJpdGVkRGF0YTsKLSAgICBpbmhlcml0ZWQgPSBpbmhlcml0UGFyZW50Lmlu
aGVyaXRlZDsKLSAgICBpbmhlcml0ZWRfZmxhZ3MgPSBpbmhlcml0UGFyZW50LmluaGVyaXRlZF9m
bGFnczsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhID0gaW5oZXJpdFBhcmVudC5tX3JhcmVJbmhl
cml0ZWREYXRhOworICAgIG1faW5oZXJpdGVkRGF0YSA9IGluaGVyaXRQYXJlbnQubV9pbmhlcml0
ZWREYXRhOworICAgIG1faW5oZXJpdGVkRmxhZ3MgPSBpbmhlcml0UGFyZW50Lm1faW5oZXJpdGVk
RmxhZ3M7CiAKICAgICBpZiAobV9zdmdTdHlsZSAhPSBpbmhlcml0UGFyZW50Lm1fc3ZnU3R5bGUp
Ci0gICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCktPmluaGVyaXRGcm9tKGluaGVyaXRQYXJlbnQu
bV9zdmdTdHlsZS5nZXQoKSk7CisgICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCkuaW5oZXJpdEZy
b20oaW5oZXJpdFBhcmVudC5tX3N2Z1N0eWxlLmdldCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHls
ZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKQordm9pZCBS
ZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
KQogewotICAgIG1fYm94ID0gb3RoZXItPm1fYm94OwotICAgIHZpc3VhbCA9IG90aGVyLT52aXN1
YWw7Ci0gICAgbV9iYWNrZ3JvdW5kID0gb3RoZXItPm1fYmFja2dyb3VuZDsKLSAgICBzdXJyb3Vu
ZCA9IG90aGVyLT5zdXJyb3VuZDsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YSA9IG90aGVyLT5y
YXJlTm9uSW5oZXJpdGVkRGF0YTsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3MuY29weU5vbkluaGVy
aXRlZEZyb20ob3RoZXItPm5vbmluaGVyaXRlZF9mbGFncyk7CisgICAgbV9ib3hEYXRhID0gb3Ro
ZXIubV9ib3hEYXRhOworICAgIG1fdmlzdWFsRGF0YSA9IG90aGVyLm1fdmlzdWFsRGF0YTsKKyAg
ICBtX2JhY2tncm91bmREYXRhID0gb3RoZXIubV9iYWNrZ3JvdW5kRGF0YTsKKyAgICBtX3N1cnJv
dW5kRGF0YSA9IG90aGVyLm1fc3Vycm91bmREYXRhOworICAgIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEgPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhOworICAgIG1fbm9uSW5oZXJpdGVkRmxh
Z3MuY29weU5vbkluaGVyaXRlZEZyb20ob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncyk7CiAKLSAg
ICBpZiAobV9zdmdTdHlsZSAhPSBvdGhlci0+bV9zdmdTdHlsZSkKLSAgICAgICAgbV9zdmdTdHls
ZS5hY2Nlc3MoKS0+Y29weU5vbkluaGVyaXRlZEZyb20ob3RoZXItPm1fc3ZnU3R5bGUuZ2V0KCkp
OworICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLm1fc3ZnU3R5bGUpCisgICAgICAgIG1fc3Zn
U3R5bGUuYWNjZXNzKCkuY29weU5vbkluaGVyaXRlZEZyb20ob3RoZXIubV9zdmdTdHlsZS5nZXQo
KSk7CiAKICAgICBBU1NFUlQoem9vbSgpID09IGluaXRpYWxab29tKCkpOwogfQogCi1ib29sIFJl
bmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvKSBjb25zdAorYm9vbCBS
ZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgLy8gY29tcGFyZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgcHNldWRvU3R5bGUgcG9pbnRl
cgotICAgIHJldHVybiBpbmhlcml0ZWRfZmxhZ3MgPT0gby5pbmhlcml0ZWRfZmxhZ3MKLSAgICAg
ICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzID09IG8ubm9uaW5oZXJpdGVkX2ZsYWdzCi0gICAgICAg
ICYmIG1fYm94ID09IG8ubV9ib3gKLSAgICAgICAgJiYgdmlzdWFsID09IG8udmlzdWFsCi0gICAg
ICAgICYmIG1fYmFja2dyb3VuZCA9PSBvLm1fYmFja2dyb3VuZAotICAgICAgICAmJiBzdXJyb3Vu
ZCA9PSBvLnN1cnJvdW5kCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhID09IG8ucmFy
ZU5vbkluaGVyaXRlZERhdGEKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEgPT0gby5yYXJl
SW5oZXJpdGVkRGF0YQotICAgICAgICAmJiBpbmhlcml0ZWQgPT0gby5pbmhlcml0ZWQKLSAgICAg
ICAgJiYgbV9zdmdTdHlsZSA9PSBvLm1fc3ZnU3R5bGUKLSAgICAgICAgICAgIDsKKyAgICByZXR1
cm4gbV9pbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzCisgICAgICAgICYm
IG1fbm9uSW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncworICAgICAg
ICAmJiBtX2JveERhdGEgPT0gb3RoZXIubV9ib3hEYXRhCisgICAgICAgICYmIG1fdmlzdWFsRGF0
YSA9PSBvdGhlci5tX3Zpc3VhbERhdGEKKyAgICAgICAgJiYgbV9iYWNrZ3JvdW5kRGF0YSA9PSBv
dGhlci5tX2JhY2tncm91bmREYXRhCisgICAgICAgICYmIG1fc3Vycm91bmREYXRhID09IG90aGVy
Lm1fc3Vycm91bmREYXRhCisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgPT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRh
ID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRh
ID09IG90aGVyLm1faW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX3N2Z1N0eWxlID09IG90aGVy
Lm1fc3ZnU3R5bGU7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxl
KCkgY29uc3QKQEAgLTMxMyw4ICszMzEsNyBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNVbmlxdWVQ
c2V1ZG9TdHlsZSgpIGNvbnN0CiAgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcyB8fCBzdHls
ZVR5cGUoKSAhPSBOT1BTRVVETykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmF0
KGkpLmdldCgpOworICAgIGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9T
dHlsZXMpIHsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT51bmlxdWUoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzMCwxMCArMzQ3LDkgQEAgUmVuZGVyU3R5bGUqIFJl
bmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwaWQpIGNvbnN0CiAgICAg
aWYgKHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKSAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCk7
ICsraSkgewotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBtX2NhY2hlZFBzZXVk
b1N0eWxlcy0+YXQoaSkuZ2V0KCk7CisgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2Nh
Y2hlZFBzZXVkb1N0eWxlcykgewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnN0eWxlVHlwZSgp
ID09IHBpZCkKLSAgICAgICAgICAgIHJldHVybiBwc2V1ZG9TdHlsZTsKKyAgICAgICAgICAgIHJl
dHVybiBwc2V1ZG9TdHlsZS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM3MSwxMCArMzg3LDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkIHBpZCkKIAogYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1YWwo
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0ZWRf
ZmxhZ3MgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncwotICAgICAgICAgICB8fCBpbmhlcml0ZWQg
IT0gb3RoZXItPmluaGVyaXRlZAotICAgICAgICAgICB8fCBtX3N2Z1N0eWxlLT5pbmhlcml0ZWRO
b3RFcXVhbChvdGhlci0+bV9zdmdTdHlsZS5nZXQoKSkKLSAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhOworICAgIHJldHVybiBtX2luaGVy
aXRlZEZsYWdzICE9IG90aGVyLT5tX2luaGVyaXRlZEZsYWdzCisgICAgICAgIHx8IG1faW5oZXJp
dGVkRGF0YSAhPSBvdGhlci0+bV9pbmhlcml0ZWREYXRhCisgICAgICAgIHx8IG1fc3ZnU3R5bGUt
PmluaGVyaXRlZE5vdEVxdWFsKG90aGVyLT5tX3N2Z1N0eWxlKQorICAgICAgICB8fCBtX3JhcmVJ
bmhlcml0ZWREYXRhICE9IG90aGVyLT5tX3JhcmVJbmhlcml0ZWREYXRhOwogfQogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTM5MCw0NiArNDA2LDQ2IEBAIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY29tcHV0ZUZvbnRIYXNoKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogdW5zaWdu
ZWQgUmVuZGVyU3R5bGU6Omhhc2hGb3JUZXh0QXV0b3NpemluZygpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IE5vdCBhIHZlcnkgc21hcnQgaGFzaC4gQ291bGQgYmUgaW1wcm92ZWQgdXBvbi4gU2Vl
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTMxPi4KLSAgICB1
bnNpZ25lZCBoYXNoID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZTsKLSAgICBo
YXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZTsKLSAgICBo
YXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlOwotICAgIGhh
c2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcC52YWx1ZSgpOwotICAgIGhhc2gg
Xj0gcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcDsKLSAgICBoYXNoIF49IHJhcmVJbmhl
cml0ZWREYXRhLT5uYnNwTW9kZTsKLSAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT5saW5l
QnJlYWs7Ci0gICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2goaW5oZXJpdGVk
LT5zcGVjaWZpZWRMaW5lSGVpZ2h0LnZhbHVlKCkpOwotICAgIGhhc2ggXj0gY29tcHV0ZUZvbnRI
YXNoKGluaGVyaXRlZC0+Zm9udENhc2NhZGUpOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8
ZmxvYXQ+OjpoYXNoKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyk7Ci0gICAg
aGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2goaW5oZXJpdGVkLT52ZXJ0aWNhbF9i
b3JkZXJfc3BhY2luZyk7Ci0gICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rp
b247Ci0gICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZzsKLSAgICBoYXNo
IF49IG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpOwotICAgIGhhc2ggXj0gbm9uaW5oZXJp
dGVkX2ZsYWdzLmZsb2F0aW5nKCk7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dE92ZXJmbG93OwotICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0
eTsKKyAgICB1bnNpZ25lZCBoYXNoID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5j
ZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxh
cHNlOworICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xs
YXBzZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcC52YWx1
ZSgpOworICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwOworICAg
IGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGU7CisgICAgaGFzaCBePSBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWs7CisgICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxm
bG9hdD46Omhhc2gobV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0LnZhbHVlKCkp
OworICAgIGhhc2ggXj0gY29tcHV0ZUZvbnRIYXNoKG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2Nh
ZGUpOworICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVk
RGF0YS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpOworICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhh
c2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nKTsK
KyAgICBoYXNoIF49IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uOworICAgIGhhc2ggXj0g
bV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZzsKKyAgICBoYXNoIF49IG1fbm9uSW5oZXJpdGVk
RmxhZ3MucG9zaXRpb24oKTsKKyAgICBoYXNoIF49IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRp
bmcoKTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsK
KyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eTsKICAgICByZXR1
cm4gaGFzaDsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3NpemluZyhj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FwcGVhcmFuY2UgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YXBwZWFyYW5jZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3Jl
Q29sbGFwc2UgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxh
cHNlCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNl
ID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCi0gICAg
ICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgPT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPmxpbmVDbGFtcAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNpemVBZGp1c3QgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0Ci0g
ICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgPT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+
bmJzcE1vZGUgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlCi0gICAgICAgICYm
IHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
PmxpbmVCcmVhawotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ID09
IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgJiYgaW5oZXJp
dGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0ID09IG90aGVyLmluaGVyaXRlZC0+c3BlY2lmaWVkTGlu
ZUhlaWdodAotICAgICAgICAmJiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmVxdWFsRm9yVGV4dEF1
dG9TaXppbmcob3RoZXIuaW5oZXJpdGVkLT5mb250Q2FzY2FkZSkKLSAgICAgICAgJiYgaW5oZXJp
dGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLmluaGVyaXRlZC0+aG9yaXpv
bnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICAmJiBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRl
cl9zcGFjaW5nID09IG90aGVyLmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcKLSAg
ICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID09IG90aGVyLmluaGVyaXRl
ZF9mbGFncy5fYm94X2RpcmVjdGlvbgotICAgICAgICAmJiBpbmhlcml0ZWRfZmxhZ3MubV9ydGxP
cmRlcmluZyA9PSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZwotICAgICAgICAm
JiBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKSA9PSBvdGhlci5ub25pbmhlcml0ZWRfZmxh
Z3MucG9zaXRpb24oKQotICAgICAgICAmJiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKSA9
PSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQotICAgICAgICAmJiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT50ZXh0T3ZlcmZsb3c7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGVh
cmFuY2UgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZQorICAgICAg
ICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQorICAgICAgICAm
JiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlID09IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKKyAgICAgICAgJiYgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmxpbmVDbGFtcAorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6
ZUFkanVzdCA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAorICAg
ICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgPT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERh
dGEtPm5ic3BNb2RlID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlCisgICAg
ICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayA9PSBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT5saW5lQnJlYWsKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNlY3VyaXR5ID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQorICAg
ICAgICAmJiBtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQgPT0gb3RoZXIubV9p
bmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgICYmIG1faW5oZXJpdGVk
RGF0YS0+Zm9udENhc2NhZGUuZXF1YWxGb3JUZXh0QXV0b1NpemluZyhvdGhlci5tX2luaGVyaXRl
ZERhdGEtPmZvbnRDYXNjYWRlKQorICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPmhvcml6b250
YWxCb3JkZXJTcGFjaW5nID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJvcmRl
clNwYWNpbmcKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNp
bmcgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcKKyAgICAg
ICAgJiYgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPT0gb3RoZXIubV9pbmhlcml0ZWRG
bGFncy5ib3hEaXJlY3Rpb24KKyAgICAgICAgJiYgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmlu
ZyA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nCisgICAgICAgICYmIG1fbm9u
SW5oZXJpdGVkRmxhZ3MucG9zaXRpb24oKSA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLnBv
c2l0aW9uKCkKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpID09IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKQorICAgICAgICAmJiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dGV4dE92ZXJmbG93OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
QEAgLTQzNywxMCArNDUzLDEwIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9z
aXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogYm9vbCBSZW5kZXJTdHlsZTo6
aW5oZXJpdGVkRGF0YVNoYXJlZChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7CiAg
ICAgLy8gVGhpcyBpcyBhIGZhc3QgY2hlY2sgdGhhdCBvbmx5IGxvb2tzIGlmIHRoZSBkYXRhIHN0
cnVjdHVyZXMgYXJlIHNoYXJlZC4KLSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzID09IG90aGVy
LT5pbmhlcml0ZWRfZmxhZ3MKLSAgICAgICAgJiYgaW5oZXJpdGVkLmdldCgpID09IG90aGVyLT5p
bmhlcml0ZWQuZ2V0KCkKKyAgICByZXR1cm4gbV9pbmhlcml0ZWRGbGFncyA9PSBvdGhlci0+bV9p
bmhlcml0ZWRGbGFncworICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3RoZXIt
Pm1faW5oZXJpdGVkRGF0YS5nZXQoKQogICAgICAgICAmJiBtX3N2Z1N0eWxlLmdldCgpID09IG90
aGVyLT5tX3N2Z1N0eWxlLmdldCgpCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLmdldCgp
ID09IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKTsKKyAgICAgICAgJiYgbV9yYXJlSW5o
ZXJpdGVkRGF0YS5nZXQoKSA9PSBvdGhlci0+bV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKTsKIH0K
IAogc3RhdGljIGJvb2wgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShjb25zdCBMZW5ndGhC
b3gmIGEsIGNvbnN0IExlbmd0aEJveCYgYiwgY29uc3QgTGVuZ3RoJiB3aWR0aCkKQEAgLTQ3Miwx
NyArNDg4LDE3IEBAIHN0YXRpYyBib29sIHBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkoY29u
c3QgTGVuZ3RoQm94JiBhLCBjb25zdCBMZW5ndGhCb3gmIGIsCiAKIGlubGluZSBib29sIFJlbmRl
clN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIG90
aGVyKSBjb25zdAogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKQotICAgICAgICAmJiAhYXJlUG9pbnRpbmdUb0Vx
dWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3csIG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdykpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKQorICAgICAgICAm
JiAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hTaGFk
b3csIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFNoYWRvdykpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLmdldCgpCi0gICAgICAgICYmICFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LCBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNoYWRvdykpCisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKQorICAgICAgICAmJiAhYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LCBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2hhZG93KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5f
dGV4dF9kZWNvcmF0aW9ucwotICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0aW9uICE9IG90
aGVyLnZpc3VhbC0+dGV4dERlY29yYXRpb24KLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90ZXh0RGVjb3JhdGlvblN0eWxlKSB7CisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudGV4dERl
Y29yYXRpb25zICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zCisgICAg
ICAgIHx8IG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIubV92aXN1YWxEYXRh
LT50ZXh0RGVjb3JhdGlvbgorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0
RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNv
cmF0aW9uU3R5bGUpIHsKICAgICAgICAgLy8gVW5kZXJsaW5lcyBhcmUgYWx3YXlzIGRyYXduIG91
dHNpZGUgb2YgdGhlaXIgdGV4dGJveCBib3VuZHMgd2hlbiB0ZXh0LXVuZGVybGluZS1wb3NpdGlv
bjogdW5kZXI7CiAgICAgICAgIC8vIGlzIHNwZWNpZmllZC4gV2UgY2FuIHRha2UgYW4gZWFybHkg
b3V0IGhlcmUuCiAgICAgICAgIGlmICh0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSA9PSBUZXh0VW5k
ZXJsaW5lUG9zaXRpb25VbmRlcgpAQCAtNDk4LDE2OCArNTE0LDE2OCBAQCBpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlcikgYwogCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25z
dCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYm94LT53aWR0aCgpICE9IG90aGVyLm1fYm94
LT53aWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9IG90aGVyLm1fYm94LT5t
aW5XaWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5tYXhXaWR0aCgpICE9IG90aGVyLm1fYm94LT5t
YXhXaWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5oZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+aGVp
Z2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90aGVyLm1fYm94LT5taW5I
ZWlnaHQoKQotICAgICAgICB8fCBtX2JveC0+bWF4SGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gtPm1h
eEhlaWdodCgpKQorICAgIGlmIChtX2JveERhdGEtPndpZHRoKCkgIT0gb3RoZXIubV9ib3hEYXRh
LT53aWR0aCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+bWluV2lkdGgoKSAhPSBvdGhlci5tX2Jv
eERhdGEtPm1pbldpZHRoKCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5tYXhXaWR0aCgpICE9IG90
aGVyLm1fYm94RGF0YS0+bWF4V2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPmhlaWdodCgp
ICE9IG90aGVyLm1fYm94RGF0YS0+aGVpZ2h0KCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5taW5I
ZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPm1pbkhlaWdodCgpCisgICAgICAgIHx8IG1fYm94
RGF0YS0+bWF4SGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5tYXhIZWlnaHQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ib3gtPnZlcnRpY2FsQWxpZ24oKSAhPSBvdGhl
ci5tX2JveC0+dmVydGljYWxBbGlnbigpIHx8IG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFs
aWduKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2FsQWxpZ24oKSkKKyAgICBp
ZiAobV9ib3hEYXRhLT52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIubV9ib3hEYXRhLT52ZXJ0aWNh
bEFsaWduKCkgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaWYgKG1fYm94LT5ib3hTaXppbmcoKSAhPSBvdGhlci5tX2JveC0+Ym94U2l6aW5n
KCkpCisgICAgaWYgKG1fYm94RGF0YS0+Ym94U2l6aW5nKCkgIT0gb3RoZXIubV9ib3hEYXRhLT5i
b3hTaXppbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3Vycm91bmQtPm1h
cmdpbiAhPSBvdGhlci5zdXJyb3VuZC0+bWFyZ2luKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+
bWFyZ2luICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5tYXJnaW4pCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5wYWRkaW5nICE9IG90aGVyLnN1cnJvdW5kLT5wYWRk
aW5nKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+cGFkZGluZyAhPSBvdGhlci5tX3N1cnJvdW5k
RGF0YS0+cGFkZGluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFkZCBhbiBvcHRpbWl6ZWQgZm9ybSBvZiBsYXlvdXQgdGhhdCBqdXN0IHJlY29tcHV0
ZXMgdmlzdWFsIG92ZXJmbG93LgogICAgIGlmIChjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3co
b3RoZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
PmxpbmVDbGFtcCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCi0gICAg
ICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0dGVyICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIKLSAgICAgICAgICAgIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRleHRPdmVyZmxvdykKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQo
KSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmFwcGVhcmFuY2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hcmdpbkJlZm9yZUNvbGxhcHNlCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hcmdpbkFmdGVyQ29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmxpbmVDbGFtcCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAK
KyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRpYWxMZXR0ZXIgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aW5pdGlhbExldHRlcgorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCkKKyAgICAgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50ICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luKQorICAgICAgICBpZiAobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVNYXJnaW4gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2hhcGVNYXJnaW4pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94ICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkKKyAgICAg
ICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveCAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmxleGlibGVCb3ggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVC
b3gpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveCAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRlciAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRlcgotICAgICAgICAgICAgfHwgcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FsaWduQ29udGVudAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYWxpZ25JdGVtcyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0
ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmCi0gICAgICAgICAgICB8fCBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudCAhPSBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2p1c3RpZnlJdGVtcwotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeVNlbGYgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYpCisg
ICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcmRlciAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vcmRlcgorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+YWxpZ25Db250ZW50ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWdu
Q29udGVudAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25JdGVt
cyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0ZW1zCisgICAgICAgICAg
ICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnblNlbGYgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5qdXN0aWZ5Q29udGVudCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5q
dXN0aWZ5Q29udGVudAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVz
dGlmeUl0ZW1zICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVtcwor
ICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGYgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGYpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYm94UmVmbGVjdCwgb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Ym94UmVmbGVjdCkpCisgICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ib3hSZWZsZWN0LCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5ib3hSZWZsZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9tdWx0aUNvbCkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11
bHRpQ29sICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3RyYW5zZm9ybSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0pIHsK
LSAgICAgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPmhhc1Ry
YW5zZm9ybSgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+aGFz
VHJhbnNmb3JtKCkpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zv
cm0gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtKSB7CisgICAgICAg
ICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0o
KSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9y
bSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCpyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0gIT0gKm90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RyYW5zZm9ybSkgeworICAgICAgICAgICAgaWYgKCptX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50cmFuc2Zvcm0gIT0gKm90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9y
bSkgewogICAgICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8
PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlUcmFuc2Zvcm07CiAgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIGlm
IChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJ
dGVtICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtKQorICAgICAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlk
SXRlbSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CiAgICAgICAgIC8vIElmIHJlZ2lvbnMgY2hhbmdlLCB0cmlnZ2VyIGEgcmVsYXlvdXQgdG8gcmUt
Y2FsYyByZWdpb25zLgotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFzaGJv
YXJkUmVnaW9ucyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdp
b25zKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJvYXJkUmVnaW9u
cyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9hcmRSZWdpb25zKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgICAgICBpZiAoIWFyZVBvaW50aW5n
VG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZSwgb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZSkpIHsKKyAgICAgICAgaWYgKCFhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UsIG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UpKSB7CiAgICAgICAgICAgICBjaGFu
Z2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5
V2lsbENoYW5nZTsKICAgICAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZv
ciBhbm90aGVyIGNoYW5nZQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHJhcmVJbmhlcml0
ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLmdldCgpKSB7Ci0gICAgICAg
IGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5pbmRlbnQKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbmRlbnQgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRBbGln
bkxhc3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdAotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkgIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5tX3RleHRJbmRlbnRMaW5lICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRJ
bmRlbnRMaW5lCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0QWxpZ25M
YXN0ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRBbGlnbkxhc3QKKyAgICAgICAg
ICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRKdXN0aWZ5ICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRKdXN0aWZ5CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0SW5kZW50TGluZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SW5k
ZW50TGluZQogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9lZmZl
Y3RpdmVab29tICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpvb20KLSAg
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRab29tICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RleHRab29tCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5lZmZlY3RpdmVab29tICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVjdGl2
ZVpvb20KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRab29tICE9IG90
aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRab29tCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdCAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKKyAgICAgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPnRleHRTaXplQWRqdXN0CiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVh
awotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+bmJzcE1vZGUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2Rl
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0
eQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMgIT0gb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPmh5cGhlbnMKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBo
ZW5hdGlvbkxpbWl0QmVmb3JlCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlw
aGVuYXRpb25MaW1pdEFmdGVyICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
blN0cmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcKLSAg
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbiAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNNYXJrCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzUG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bv
c2l0aW9uCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFy
awotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uICE9
IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbgotICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0
YS0+bV90YWJTaXplCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94
Q29udGFpbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFpbgotICAg
ICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQgIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPm1fbGluZUdyaWQKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERh
dGEtPndvcmRCcmVhayAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsKKyAg
ICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCAhPSBvdGhlci5t
X3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKKyAgICAgICAgICAgIHx8IG1fcmFyZUlu
aGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BN
b2RlCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAgICAgICAgICB8fCBtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNlY3VyaXR5CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5z
ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMKKyAgICAgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUgIT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZQorICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcgorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+aHlwaGVuYXRpb25TdHJpbmcKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERh
dGEtPnJ1YnlQb3NpdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9zaXRp
b24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01hcmsg
IT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyaworICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24gIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24KKyAgICAgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaworICAgICAgICAgICAgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPnRleHRPcmllbnRhdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGFiU2l6ZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50YWJTaXplCisgICAg
ICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQm94Q29udGFpbiAhPSBvdGhlci5t
X3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQm94Q29udGFpbgorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUdyaWQgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlu
ZUdyaWQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgfHwg
cmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJp
dGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmlt
YWdlT3JpZW50YXRpb24KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNvdXJj
ZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UKLSAg
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNuYXAgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcAotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlICE9IG90aGVyLm1fcmFyZUluaGVyaXRl
ZERhdGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZVJlc29sdXRpb25TbmFwCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZVJlc29sdXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNv
bHV0aW9uCiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVT
bmFwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFwCi0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQWxpZ24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPm1fbGluZUFsaWduCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9oYW5n
aW5nUHVuY3R1YXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0
dWF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcCAhPSBv
dGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcAorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUFsaWduICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxp
bmVBbGlnbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFuZ2luZ1B1bmN0
dWF0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlvbgog
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZworICAgICAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCiAjZW5kaWYK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UpIC8vIEZJWE1FOiBuZWVkcyBhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKCk/CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT5saXN0U3R5bGVJbWFnZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJ
bWFnZSkgLy8gRklYTUU6IG5lZWRzIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoKT8KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmICh0ZXh0U3Ryb2tlV2lkdGgoKSAhPSBvdGhl
ci50ZXh0U3Ryb2tlV2lkdGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIGlmIChpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0ICE9IG90aGVyLmluaGVyaXRlZC0+bGluZV9o
ZWlnaHQKKyAgICBpZiAobV9pbmhlcml0ZWREYXRhLT5saW5lSGVpZ2h0ICE9IG90aGVyLm1faW5o
ZXJpdGVkRGF0YS0+bGluZUhlaWdodAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAg
ICAgIHx8IGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5pbmhlcml0ZWQt
PnNwZWNpZmllZExpbmVIZWlnaHQKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT5zcGVjaWZp
ZWRMaW5lSGVpZ2h0ICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdo
dAogI2VuZGlmCi0gICAgICAgIHx8IGluaGVyaXRlZC0+Zm9udENhc2NhZGUgIT0gb3RoZXIuaW5o
ZXJpdGVkLT5mb250Q2FzY2FkZQotICAgICAgICB8fCBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9y
ZGVyX3NwYWNpbmcgIT0gb3RoZXIuaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
Ci0gICAgICAgIHx8IGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgIT0gb3RoZXIu
aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8fCBpbmhlcml0ZWRf
ZmxhZ3MuX2JveF9kaXJlY3Rpb24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0
aW9uCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nICE9IG90aGVyLmlu
aGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFn
cy5wb3NpdGlvbigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpCi0gICAg
ICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpICE9IG90aGVyLm5vbmluaGVyaXRl
ZF9mbGFncy5mbG9hdGluZygpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5h
bERpc3BsYXkoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkp
CisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUgIT0gb3RoZXIubV9pbmhl
cml0ZWREYXRhLT5mb250Q2FzY2FkZQorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPmhvcml6
b250YWxCb3JkZXJTcGFjaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNw
YWNpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcKKyAg
ICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gIT0gb3RoZXIubV9pbmhlcml0
ZWRGbGFncy5ib3hEaXJlY3Rpb24KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRl
cmluZyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nCisgICAgICAgIHx8IG1f
bm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRpb24oKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
LnBvc2l0aW9uKCkKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpICE9
IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKQorICAgICAgICB8fCBtX25vbklu
aGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3JpZ2luYWxEaXNwbGF5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAKLSAgICBpZiAo
KG5vbmluaGVyaXRlZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkpID49IFRBQkxFKSB7Ci0gICAg
ICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZSAhPSBvdGhlci5pbmhlcml0
ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdz
Ll9lbXB0eV9jZWxscyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzCi0gICAg
ICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSAhPSBvdGhlci5pbmhlcml0
ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZQotICAgICAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdz
LnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5b3V0KCkp
CisgICAgaWYgKChtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0gVEFC
TEUpIHsKKyAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgIT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZQorICAgICAgICAgICAgfHwgbV9pbmhl
cml0ZWRGbGFncy5lbXB0eUNlbGxzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxs
cworICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlCisgICAgICAgICAgICB8fCBtX25vbkluaGVyaXRl
ZEZsYWdzLnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy50YWJsZUxh
eW91dCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gSW4gdGhlIGNv
bGxhcHNpbmcgYm9yZGVyIG1vZGVsLCAnaGlkZGVuJyBzdXBwcmVzc2VzIG90aGVyIGJvcmRlcnMs
IHdoaWxlICdub25lJwogICAgICAgICAvLyBkb2VzIG5vdCwgc28gdGhlc2Ugc3R5bGUgZGlmZmVy
ZW5jZXMgY2FuIGJlIHdpZHRoIGRpZmZlcmVuY2VzLgotICAgICAgICBpZiAoaW5oZXJpdGVkX2Zs
YWdzLl9ib3JkZXJfY29sbGFwc2UKKyAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVy
Q29sbGFwc2UKICAgICAgICAgICAgICYmICgoYm9yZGVyVG9wU3R5bGUoKSA9PSBCSElEREVOICYm
IG90aGVyLmJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgICAgICAgICAgfHwgKGJv
cmRlclRvcFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyVG9wU3R5bGUoKSA9PSBCSElE
REVOKQogICAgICAgICAgICAgICAgIHx8IChib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4g
JiYgb3RoZXIuYm9yZGVyQm90dG9tU3R5bGUoKSA9PSBCTk9ORSkKQEAgLTY3MSwzNyArNjg3LDM3
IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0
eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSA9PSBM
SVNUX0lURU0pIHsKLSAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBl
ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCi0gICAgICAgICAgICB8
fCBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdz
LmVmZmVjdGl2ZURpc3BsYXkoKSA9PSBMSVNUX0lURU0pIHsKKyAgICAgICAgaWYgKG1faW5oZXJp
dGVkRmxhZ3MubGlzdFN0eWxlVHlwZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVR5cGUKKyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24g
IT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbikKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxp
Z24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduCi0gICAgICAgIHx8IGluaGVy
aXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0
X3RyYW5zZm9ybQotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbiAhPSBvdGhl
ci5pbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3Mu
X3doaXRlX3NwYWNlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UKLSAgICAg
ICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2Zs
YWdzLmNsZWFyKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCkg
IT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCkpCisgICAgaWYgKG1faW5o
ZXJpdGVkRmxhZ3MudGV4dEFsaWduICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWdu
CisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5k
aXJlY3Rpb24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24KKyAgICAgICAgfHwg
bV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mud2hp
dGVTcGFjZQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmNsZWFyKCkgIT0gb3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncy5jbGVhcigpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxh
Z3MudW5pY29kZUJpZGkoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRp
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgYmxvY2sgZmxvdyBkaXJl
Y3Rpb24uCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlICE9IG90aGVyLmlu
aGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLndy
aXRpbmdNb2RlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGV4dCBjb21iaW5lIG1vZGUuCi0gICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRDb21iaW5lICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RleHRDb21iaW5lKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50ZXh0Q29tYmluZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0Q29tYmlu
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayBicmVha3MuCi0gICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2JyZWFrQWZ0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtBZnRl
cgotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSkKKyAgICBpZiAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YnJlYWtCZWZvcmUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YnJlYWtCZWZvcmUKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtB
ZnRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0FmdGVyCisgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrSW5zaWRlICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmJyZWFrSW5zaWRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIE92ZXJmbG93IHJldHVybnMgYSBsYXlvdXQgaGludC4KLSAgICBpZiAobm9uaW5oZXJpdGVk
X2ZsYWdzLm92ZXJmbG93WCgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1go
KQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkgIT0gb3RoZXIubm9u
aW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdz
Lm92ZXJmbG93WCgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYKCkKKyAg
ICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKSAhPSBvdGhlci5tX25vbklu
aGVyaXRlZEZsYWdzLm92ZXJmbG93WSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IElmIG91ciBib3JkZXIgd2lkdGhzIGNoYW5nZSwgdGhlbiB3ZSBuZWVkIHRvIGxheW91dC4gIE90
aGVyIGNoYW5nZXMgdG8gYm9yZGVycwpAQCAtNzEzLDEzICs3MjksMTMgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNp
Z25lZCYgY2hhbmcKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUgY291bnRl
ciBkaXJlY3RpdmVzIGNoYW5nZSwgdHJpZ2dlciBhIHJlbGF5b3V0IHRvIHJlLWNhbGN1bGF0ZSBj
b3VudGVyIHZhbHVlcyBhbmQgcmVidWlsZCB0aGUgY291bnRlciBub2RlIHRyZWUuCi0gICAgaWYg
KCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJE
aXJlY3RpdmVzLCBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZl
cykpCisgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvdW50ZXJEaXJlY3RpdmVzLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3Vu
dGVyRGlyZWN0aXZlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCh2aXNpYmls
aXR5KCkgPT0gQ09MTEFQU0UpICE9IChvdGhlci52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFz
T3BhY2l0eSgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkpIHsK
KyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugd291bGQgbGlrZSB0byB1c2UgU2ltcGxpZmllZExheW91dCBoZXJlLCBidXQgd2UgY2FuJ3Qg
cXVpdGUgZG8gdGhhdCB5ZXQuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNpbXBs
aWZpZWRMYXlvdXQgY2FuIG9wZXJhdGUgY29ycmVjdGx5IG9uIFJlbmRlcklubGluZXMgKHdlIHdp
bGwgbmVlZAogICAgICAgICAvLyB0byBhZGQgYSBzZWxmTmVlZHNTaW1wbGlmaWVkTGF5b3V0IGJp
dCBpbiBvcmRlciB0byBub3QgZ2V0IGNvbmZ1c2VkIGFuZCB0YWludCBldmVyeSBsaW5lKS4KQEAg
LTcyOCwxOSArNzQ0LDE5IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0
KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVy
cygpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkpCisgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYg
RU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPmhh
c0JhY2tkcm9wRmlsdGVycygpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNCYWNr
ZHJvcEZpbHRlcnMoKSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ry
b3BGaWx0ZXJzKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ryb3BG
aWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBpZiAoIWFyZVBv
aW50aW5nVG9FcXVhbERhdGEocmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcywgb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPnF1b3RlcykpCisgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1f
cmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcywgb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVv
dGVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocG9zaXRpb24oKSAhPSBTdGF0
aWNQb3NpdGlvbikgewotICAgICAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBvdGhlci5zdXJy
b3VuZC0+b2Zmc2V0KSB7CisgICAgICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0ICE9IG90
aGVyLm1fc3Vycm91bmREYXRhLT5vZmZzZXQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3
b3VsZCBsaWtlIHRvIHVzZSBTaW1wbGlmaWVkTGF5b3V0IGZvciByZWxhdGl2ZSBwb3NpdGlvbmlu
ZywgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYWtlIHN1cmUgU2ltcGxpZmllZExheW91dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkgb24g
UmVuZGVySW5saW5lcyAod2Ugd2lsbCBuZWVkCiAgICAgICAgICAgICAvLyB0byBhZGQgYSBzZWxm
TmVlZHNTaW1wbGlmaWVkTGF5b3V0IGJpdCBpbiBvcmRlciB0byBub3QgZ2V0IGNvbmZ1c2VkIGFu
ZCB0YWludCBldmVyeSBsaW5lKS4KQEAgLTc0OCw3ICs3NjQsNyBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVk
JiBjaGFuZwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICAvLyBP
cHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBwb3NpdGlvbmVkIGxheWVyIGlzIG1vdmluZyBi
dXQgbm90IGNoYW5naW5nIHNpemUuCi0gICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlSXNN
b3ZlbWVudE9ubHkoc3Vycm91bmQtPm9mZnNldCwgb3RoZXIuc3Vycm91bmQtPm9mZnNldCwgbV9i
b3gtPndpZHRoKCkpKQorICAgICAgICAgICAgaWYgKCFwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRP
bmx5KG1fc3Vycm91bmREYXRhLT5vZmZzZXQsIG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZzZXQs
IG1fYm94RGF0YS0+d2lkdGgoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICB9CkBAIC03NzYsOSArNzkyLDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdl
UmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHUK
ICAgICBpZiAocG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5vZmZzZXQgIT0gb3RoZXIuc3Vycm91bmQtPm9mZnNl
dCkgeworICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0ICE9IG90aGVyLm1fc3Vycm91bmRE
YXRhLT5vZmZzZXQpIHsKICAgICAgICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIGEg
cG9zaXRpb25lZCBsYXllciBpcyBtb3ZpbmcgYnV0IG5vdCBjaGFuZ2luZyBzaXplLgotICAgICAg
ICBpZiAocG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uICYmIHBvc2l0aW9uQ2hhbmdlSXNN
b3ZlbWVudE9ubHkoc3Vycm91bmQtPm9mZnNldCwgb3RoZXIuc3Vycm91bmQtPm9mZnNldCwgbV9i
b3gtPndpZHRoKCkpKQorICAgICAgICBpZiAocG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9u
ICYmIHBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkobV9zdXJyb3VuZERhdGEtPm9mZnNldCwg
b3RoZXIubV9zdXJyb3VuZERhdGEtPm9mZnNldCwgbV9ib3hEYXRhLT53aWR0aCgpKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTc4OCw0MCArODA0LDQwIEBAIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCB1CiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xh
eWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgLy8gU3R5bGVSZXNvbHZlciBo
YXMgZW5zdXJlZCB0aGF0IHpJbmRleCBpcyBub24tYXV0byBvbmx5IGlmIGl0J3MgYXBwbGljYWJs
ZS4KLSAgICBpZiAobV9ib3gtPnpJbmRleCgpICE9IG90aGVyLm1fYm94LT56SW5kZXgoKSB8fCBt
X2JveC0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1fYm94LT5oYXNBdXRvWkluZGV4KCkpCisg
ICAgaWYgKG1fYm94RGF0YS0+ekluZGV4KCkgIT0gb3RoZXIubV9ib3hEYXRhLT56SW5kZXgoKSB8
fCBtX2JveERhdGEtPmhhc0F1dG9aSW5kZXgoKSAhPSBvdGhlci5tX2JveERhdGEtPmhhc0F1dG9a
SW5kZXgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocG9zaXRpb24oKSAhPSBT
dGF0aWNQb3NpdGlvbikgewotICAgICAgICBpZiAodmlzdWFsLT5jbGlwICE9IG90aGVyLnZpc3Vh
bC0+Y2xpcCB8fCB2aXN1YWwtPmhhc0NsaXAgIT0gb3RoZXIudmlzdWFsLT5oYXNDbGlwKSB7Cisg
ICAgICAgIGlmIChtX3Zpc3VhbERhdGEtPmNsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5jbGlw
IHx8IG1fdmlzdWFsRGF0YS0+aGFzQ2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmhhc0NsaXAp
IHsKICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydHlDbGlwUmVjdDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSkKKyAgICBpZiAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFjaXR5ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHkpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5
KSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHlPcGFjaXR5OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAg
bG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2ZpbHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0
ZXIpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlcikgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5RmlsdGVyOwogICAg
ICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAg
ICAgfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fYmFja2Ryb3BGaWx0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYmFja2Ryb3BGaWx0ZXIpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFj
a2Ryb3BGaWx0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0
ZXIpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVw
IGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbWFzawotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2Ug
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlKQorICAgIGlmICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hc2sKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdl
ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC04MjksMjYgKzg0NSwyNiBAQCBi
b29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIsIHVuc2lnbmVkJgogCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3Mu
X3Zpc2liaWxpdHkgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5Ci0gICAgICAg
IHx8IGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QgIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdAotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2lu
c2lkZUxpbmsgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rCi0gICAgICAgIHx8
IGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbiAhPSBvdGhlci5pbmhlcml0ZWRf
ZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24KLSAgICAgICAgfHwgc3Vycm91bmQtPmJvcmRlciAh
PSBvdGhlci5zdXJyb3VuZC0+Ym9yZGVyCi0gICAgICAgIHx8ICFtX2JhY2tncm91bmQtPmlzRXF1
aXZhbGVudEZvclBhaW50aW5nKCpvdGhlci5tX2JhY2tncm91bmQpCi0gICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT51c2Vy
TW9kaWZ5Ci0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0ICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT51c2VyRHJhZyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcK
LSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdAotICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9vYmplY3RGaXQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2Jq
ZWN0Rml0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdFBvc2l0aW9u
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdFBvc2l0aW9uCi0gICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLnZp
c2liaWxpdHkgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5CisgICAgICAgIHx8
IG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci5tX2luaGVyaXRlZEZs
YWdzLnByaW50Q29sb3JBZGp1c3QKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVM
aW5rICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluaworICAgICAgICB8fCBtX2lu
aGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFn
cy5pbnNpZGVEZWZhdWx0QnV0dG9uCisgICAgICAgIHx8IG1fc3Vycm91bmREYXRhLT5ib3JkZXIg
IT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPmJvcmRlcgorICAgICAgICB8fCAhbV9iYWNrZ3JvdW5k
RGF0YS0+aXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoKm90aGVyLm1fYmFja2dyb3VuZERhdGEpCisg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkgIT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT51c2VyU2VsZWN0ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QKKyAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Ym9yZGVyRml0ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZp
dAorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0Rml0CisgICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm9iamVjdFBvc2l0aW9uICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm9iamVjdFBvc2l0aW9uCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdl
UmVuZGVyaW5nICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9z
aGFwZU91dHNpZGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRl
KQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBjaGFu
Z2VSZXF1aXJlc0xheWVyUmVwYWludCgpLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9jbGlwUGF0aCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aCkgewor
ICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCkgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xpcFBhdGg7CiAgICAg
ICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAg
ICB9CkBAIC04NTgsMTYgKzg3NCwxNiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbgogCiBib29s
IFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGlu
ZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJikgY29uc3QKIHsKLSAgICBpZiAo
aW5oZXJpdGVkLT5jb2xvciAhPSBvdGhlci5pbmhlcml0ZWQtPmNvbG9yCi0gICAgICAgIHx8IGlu
aGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3Mu
X3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAhPSBv
dGhlci52aXN1YWwtPnRleHREZWNvcmF0aW9uCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdGV4dERlY29yYXRpb25TdHlsZQotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90ZXh0RGVjb3JhdGlvbkNvbG9yICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Rl
eHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERl
Y29yYXRpb25Ta2lwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9u
U2tpcAotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvciAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcgotICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0
U3Ryb2tlQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0Nv
bG9yICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcgotICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCkKKyAgICBpZiAobV9pbmhlcml0ZWREYXRhLT5j
b2xvciAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmNvbG9yCisgICAgICAgIHx8IG1faW5oZXJp
dGVkRmxhZ3MudGV4dERlY29yYXRpb25zICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dERl
Y29yYXRpb25zCisgICAgICAgIHx8IG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24gIT0gb3Ro
ZXIubV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbgorICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Db2xvciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50ZXh0RGVjb3JhdGlvbkNvbG9yCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHREZWNvcmF0aW9uU2tpcCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3Jh
dGlvblNraXAKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvciAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCisgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvciAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEVtcGhhc2lzQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhh
c2lzQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmls
bCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTg3NSwxMiArODkxLDEyIEBA
IGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JP
dXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJikg
Y29uc3QKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtU3R5bGUzRAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tm
YWNlVmlzaWJpbGl0eQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWCAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblgKLSAgICAg
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWSAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkpCisgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5nZXQoKSkgeworICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNm
b3JtU3R5bGUzRCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHls
ZTNECisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2li
aWxpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VWaXNpYmlsaXR5
CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZQorICAgICAgICAgICAgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWAorICAgICAgICAgICAgfHwgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtOTQ0LDE2OCArOTYwLDE1MCBAQCBib29sIFJlbmRlclN0eWxlOjpk
aWZmUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIGlz
Q29tcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChM
ZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQordm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5n
dGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQpCiB7Ci0gICAgU3R5bGVWaXN1YWxEYXRhKiBkYXRh
ID0gdmlzdWFsLmFjY2VzcygpOwotICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0b3A7Ci0gICAgZGF0
YS0+Y2xpcC5yaWdodCgpID0gcmlnaHQ7Ci0gICAgZGF0YS0+Y2xpcC5ib3R0b20oKSA9IGJvdHRv
bTsKLSAgICBkYXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CisgICAgYXV0byYgZGF0YSA9IG1fdmlz
dWFsRGF0YS5hY2Nlc3MoKTsKKyAgICBkYXRhLmNsaXAudG9wKCkgPSBXVEZNb3ZlKHRvcCk7Cisg
ICAgZGF0YS5jbGlwLnJpZ2h0KCkgPSBXVEZNb3ZlKHJpZ2h0KTsKKyAgICBkYXRhLmNsaXAuYm90
dG9tKCkgPSBXVEZNb3ZlKGJvdHRvbSk7CisgICAgZGF0YS5jbGlwLmxlZnQoKSA9IFdURk1vdmUo
bGVmdCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFn
ZT4mJiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgaWYgKCFyYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKLSAgICAgICAgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVhdGUoKTsKLSAgICByYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEoV1RG
TW92ZShpbWFnZSksIGhvdFNwb3QpKTsKKyAgICBhdXRvJiBjdXJzb3JEYXRhID0gbV9yYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhOworICAgIGlmICghY3Vyc29yRGF0YSkKKyAg
ICAgICAgY3Vyc29yRGF0YSA9IEN1cnNvckxpc3Q6OmNyZWF0ZSgpOworICAgIGN1cnNvckRhdGEt
PmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7CiB9CiAKIHZvaWQg
UmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYgbGlzdCkKIHsK
LSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IFdURk1vdmUobGlz
dCk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhID0gV1RGTW92
ZShsaXN0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0UXVvdGVzKFJlZlB0cjxRdW90ZXNE
YXRhPiYmIHEpCiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgPT0gcSB8fCAo
cmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICpyYXJlSW5oZXJpdGVkRGF0YS0+cXVv
dGVzID09ICpxKSkKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09IHEgfHwg
KG1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICptX3JhcmVJbmhlcml0ZWREYXRh
LT5xdW90ZXMgPT0gKnEpKQogICAgICAgICByZXR1cm47CiAKLSAgICByYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+cXVvdGVzID0gV1RGTW92ZShxKTsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRh
LmFjY2VzcygpLnF1b3RlcyA9IFdURk1vdmUocSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dFdpbGxDaGFuZ2UoUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiYmIHdpbGxDaGFuZ2VEYXRhKQogewot
ICAgIGlmIChhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dp
bGxDaGFuZ2UuZ2V0KCksIHdpbGxDaGFuZ2VEYXRhLmdldCgpKSkKKyAgICBpZiAoYXJlUG9pbnRp
bmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLmdldCgpLCB3
aWxsQ2hhbmdlRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3dpbGxDaGFuZ2UgPSBXVEZNb3ZlKHdpbGxDaGFuZ2VEYXRh
KTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLndpbGxDaGFuZ2UgPSBXVEZN
b3ZlKHdpbGxDaGFuZ2VEYXRhKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JM
aXN0KCkKIHsKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEpCi0gICAgICAg
IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gbnVsbHB0cjsKKyAgICBp
ZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgbV9yYXJlSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6Y2xlYXJDb250ZW50KCkKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y29udGVudCkKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVu
dCA9IG51bGxwdHI7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvbnRlbnQpCisg
ICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY29udGVudCA9IG51bGxwdHI7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFwcGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnREYXRhPiBjb250ZW50RGF0YSkKK3N0YXRpYyBpbmxpbmUgQ29udGVudERhdGEmIGxhc3RD
b250ZW50KENvbnRlbnREYXRhJiBmaXJzdENvbnRlbnQpCiB7Ci0gICAgYXV0byYgY29udGVudCA9
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQ7Ci0gICAgQ29udGVudERh
dGEqIGxhc3RDb250ZW50ID0gY29udGVudC5nZXQoKTsKLSAgICB3aGlsZSAobGFzdENvbnRlbnQg
JiYgbGFzdENvbnRlbnQtPm5leHQoKSkKLSAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29udGVu
dC0+bmV4dCgpOworICAgIGF1dG8qIGxhc3RDb250ZW50ID0gJmZpcnN0Q29udGVudDsKKyAgICBm
b3IgKGF1dG8qIGNvbnRlbnQgPSAmZmlyc3RDb250ZW50OyBjb250ZW50OyBjb250ZW50ID0gY29u
dGVudC0+bmV4dCgpKQorICAgICAgICBsYXN0Q29udGVudCA9IGNvbnRlbnQ7CisgICAgcmV0dXJu
ICpsYXN0Q29udGVudDsKK30KIAotICAgIGlmIChsYXN0Q29udGVudCkKLSAgICAgICAgbGFzdENv
bnRlbnQtPnNldE5leHQoV1RGTW92ZShjb250ZW50RGF0YSkpOwotICAgIGVsc2UKLSAgICAgICAg
Y29udGVudCA9IFdURk1vdmUoY29udGVudERhdGEpOwordm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNvbnRlbnREYXRhLCBib29sIGFkZCkK
K3sKKyAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAg
ICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkKKyAgICAgICAgbGFzdENvbnRlbnQoKmRhdGEuY29u
dGVudCkuc2V0TmV4dChXVEZNb3ZlKGNvbnRlbnREYXRhKSk7CisgICAgZWxzZSB7CisgICAgICAg
IGRhdGEuY29udGVudCA9IFdURk1vdmUoY29udGVudERhdGEpOworICAgICAgICBhdXRvJiBhbHRU
ZXh0ID0gZGF0YS5hbHRUZXh0OworICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCisgICAg
ICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CisgICAgfQogfQogCiB2
b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBi
b29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAot
ICAgIGlmIChhZGQpIHsKLSAgICAgICAgYXBwZW5kQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPElt
YWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxs
KCkpOwotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dC5p
c051bGwoKSkKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVu
dC0+c2V0QWx0VGV4dChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0KTsK
KyAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2Uu
cmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRl
bnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogewotICAgIGF1dG8mIGNvbnRlbnQg
PSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50OwotICAgIGlmIChhZGQp
IHsKLSAgICAgICAgQ29udGVudERhdGEqIGxhc3RDb250ZW50ID0gY29udGVudC5nZXQoKTsKLSAg
ICAgICAgd2hpbGUgKGxhc3RDb250ZW50ICYmIGxhc3RDb250ZW50LT5uZXh0KCkpCi0gICAgICAg
ICAgICBsYXN0Q29udGVudCA9IGxhc3RDb250ZW50LT5uZXh0KCk7Ci0KLSAgICAgICAgaWYgKGxh
c3RDb250ZW50KSB7Ci0gICAgICAgICAgICAvLyBXZSBhdHRlbXB0IHRvIG1lcmdlIHdpdGggdGhl
IGxhc3QgQ29udGVudERhdGEgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiAoaXM8VGV4dENv
bnRlbnREYXRhPigqbGFzdENvbnRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgVGV4dENvbnRlbnRE
YXRhJiB0ZXh0Q29udGVudCA9IGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmxhc3RDb250ZW50
KTsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGVudC5zZXRUZXh0KHRleHRDb250ZW50LnRleHQo
KSArIHN0cmluZyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBsYXN0Q29u
dGVudC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7
Ci0KLSAgICAgICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0
VGV4dC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBsYXN0Q29udGVudC0+c2V0QWx0VGV4dChy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0KTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsK
KyAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgeworICAgICAgICBhdXRvJiBsYXN0ID0gbGFz
dENvbnRlbnQoKmRhdGEuY29udGVudCk7CisgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRh
PihsYXN0KSkKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byYg
dGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3QpOworICAgICAgICAg
ICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwogICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGF1dG8mIGFsdFRleHQgPSBk
YXRhLmFsdFRleHQ7CisgICAgICAgIGlmICghYWx0VGV4dC5pc051bGwoKSkKKyAgICAgICAgICAg
IGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChhbHRUZXh0KTsKICAgICB9Ci0KLSAgICBjb250ZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7Ci0gICAgaWYgKCFy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0LmlzTnVsbCgpKQotICAgICAg
ICBjb250ZW50LT5zZXRBbHRUZXh0KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Fs
dFRleHQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0
cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVy
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIGFwcGVuZENvbnRl
bnQoc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4o
V1RGTW92ZShjb3VudGVyKSk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50
ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVy
U3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBpZiAo
YWRkKSB7Ci0gICAgICAgIGFwcGVuZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRl
bnREYXRhPihxdW90ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVD
b250ZW50RGF0YT4ocXVvdGUpOworICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90
ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQgPSBzdHJpbmc7Ci0gICAgCi0gICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRleHQoc3RyaW5nKTsKKyAgICBh
dXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAgICBkYXRhLmFs
dFRleHQgPSBzdHJpbmc7CisgICAgaWYgKGRhdGEuY29udGVudCkKKyAgICAgICAgZGF0YS5jb250
ZW50LT5zZXRBbHRUZXh0KHN0cmluZyk7CiB9CiAKIGNvbnN0IFN0cmluZyYgUmVuZGVyU3R5bGU6
OmNvbnRlbnRBbHRUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYWx0VGV4dDsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWx0VGV4
dDsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0SGFzQXR0ckNvbnRlbnQoKQogewogICAgIHNl
dFVuaXF1ZSgpOwotICAgIFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faGFzQXR0ckNv
bnRlbnQsIHRydWUpOworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaGFzQXR0
ckNvbnRlbnQsIHRydWUpOwogfQogCi0vLyBGSVhNRTogdXNlIGFmZmVjdGVkQnlUcmFuc2Zvcm1P
cmlnaW4oKS4KIHN0YXRpYyBpbmxpbmUgYm9vbCByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKGNvbnN0
IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPj4mIHRyYW5zZm9ybU9wZXJhdGlvbnMs
IFJlbmRlclN0eWxlOjpBcHBseVRyYW5zZm9ybU9yaWdpbiBhcHBseU9yaWdpbikKIHsKLSAgICAv
LyB0cmFuc2Zvcm0tb3JpZ2luIGJyYWNrZXRzIHRoZSB0cmFuc2Zvcm0gd2l0aCB0cmFuc2xhdGUg
b3BlcmF0aW9ucy4KLSAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG9ubHkg
dHJhbnNmb3JtIGlzIGEgdHJhbnNsYXRpb24sIHNpbmNlIHRoZSB0cmFuc2Zvcm0tb3JpZ2luIGlz
IGlycmVsZXZhbnQKLSAgICAvLyBpbiB0aGF0IGNhc2UuCisgICAgLy8gVGhlIHRyYW5zZm9ybS1v
cmlnaW4gcHJvcGVydHkgYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRoIHRyYW5zbGF0ZSBvcGVy
YXRpb25zLgorICAgIC8vIFdoZW4gdGhlIG9ubHkgdHJhbnNmb3JtIGlzIGEgdHJhbnNsYXRpb24s
IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIGlzIGlycmVsZXZhbnQuCisKICAgICBpZiAoYXBwbHlPcmln
aW4gIT0gUmVuZGVyU3R5bGU6OkluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0aW9u
cykgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IG9w
ZXJhdGlvbi0+dHlwZSgpOwotICAgICAgICBpZiAodHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YCisgICAgICAgIC8vIEZJWE1FOiBVc2UgYWZmZWN0ZWRCeVRyYW5zZm9ybU9y
aWdpbigpLgorICAgICAgICBhdXRvIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKKyAgICAgICAg
aWYgKHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUKKyAgICAgICAgICAgICYm
IHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0QKKyAgICAgICAgICAgICYm
IHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWAogICAgICAgICAgICAgJiYg
dHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZCi0gICAgICAgICAgICAmJiB0
eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFIAotICAgICAgICAgICAgJiYgdHlw
ZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aCi0gICAgICAgICAgICAmJiB0eXBl
ICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEKQorICAgICAgICAgICAgJiYgdHlw
ZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xMTE0LDcgKzExMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
cmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbgogCiB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBBcHBseVRyYW5z
Zm9ybU9yaWdpbiBhcHBseU9yaWdpbikgY29uc3QKIHsKLSAgICBhdXRvJiBvcGVyYXRpb25zID0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9u
cygpOworICAgIGF1dG8mIG9wZXJhdGlvbnMgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2Zvcm0tPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpOwogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1P
cmlnaW4gPSByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKG9wZXJhdGlvbnMsIGFwcGx5T3JpZ2luKTsK
IAogICAgIGZsb2F0IG9mZnNldFggPSB0cmFuc2Zvcm1PcmlnaW5YKCkuaXNQZXJjZW50KCkgPyBi
b3VuZGluZ0JveC54KCkgOiAwOwpAQCAtMTE1MSw3OCArMTE0OSw5MSBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRUZXh0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRh
LCBib29sIGFkZAogewogICAgIEFTU0VSVCghc2hhZG93RGF0YSB8fCAoIXNoYWRvd0RhdGEtPnNw
cmVhZCgpICYmIHNoYWRvd0RhdGEtPnN0eWxlKCkgPT0gTm9ybWFsKSk7CiAKLSAgICBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhKiByYXJlRGF0YSA9IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpOwor
ICAgIGF1dG8mIHJhcmVEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBp
ZiAoIWFkZCkgewotICAgICAgICByYXJlRGF0YS0+dGV4dFNoYWRvdyA9IFdURk1vdmUoc2hhZG93
RGF0YSk7CisgICAgICAgIHJhcmVEYXRhLnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2hhZG93RGF0YS0+c2V0TmV4dChXVEZN
b3ZlKHJhcmVEYXRhLT50ZXh0U2hhZG93KSk7Ci0gICAgcmFyZURhdGEtPnRleHRTaGFkb3cgPSBX
VEZNb3ZlKHNoYWRvd0RhdGEpOworICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShyYXJl
RGF0YS50ZXh0U2hhZG93KSk7CisgICAgcmFyZURhdGEudGV4dFNoYWRvdyA9IFdURk1vdmUoc2hh
ZG93RGF0YSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyhzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQpCiB7Ci0gICAgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSogcmFyZURhdGEgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7
CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RGTW92
ZShzaGFkb3dEYXRhKTsKKyAgICAgICAgcmFyZURhdGEuYm94U2hhZG93ID0gV1RGTW92ZShzaGFk
b3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNoYWRvd0RhdGEtPnNldE5l
eHQoV1RGTW92ZShyYXJlRGF0YS0+bV9ib3hTaGFkb3cpKTsKLSAgICByYXJlRGF0YS0+bV9ib3hT
aGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RG
TW92ZShyYXJlRGF0YS5ib3hTaGFkb3cpKTsKKyAgICByYXJlRGF0YS5ib3hTaGFkb3cgPSBXVEZN
b3ZlKHNoYWRvd0RhdGEpOwogfQogCiBzdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNSYWRp
aUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7
Ci0gICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRpaSgKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1
ZUZvckxlbmd0aChib3JkZXIudG9wTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0gICAg
ICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLCBzaXplLmhl
aWdodCgpKSksCi0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJp
Z2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3Ro
KGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSksCi0gICAgICAgIExh
eW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLCBzaXpl
LndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQo
KS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9y
TGVuZ3RoKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0gICAg
ICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgc2l6
ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4geworICAgICAgICBzaXplRm9yTGVuZ3RoU2l6ZShi
b3JkZXIudG9wTGVmdCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVy
LnRvcFJpZ2h0KCksIHNpemUpLAorICAgICAgICBzaXplRm9yTGVuZ3RoU2l6ZShib3JkZXIuYm90
dG9tTGVmdCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLmJvdHRv
bVJpZ2h0KCksIHNpemUpCisgICAgfTsKIH0KIAotU3R5bGVJbWFnZSogUmVuZGVyU3R5bGU6Omxp
c3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHls
ZUltYWdlLmdldCgpOyB9CitTdHlsZUltYWdlKiBSZW5kZXJTdHlsZTo6bGlzdFN0eWxlSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5nZXQo
KTsgfQorCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZShSZWZQdHI8U3R5bGVJ
bWFnZT4mJiB2KQogewotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2Ug
IT0gdikKLSAgICAgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmxpc3RTdHlsZUltYWdl
ID0gV1RGTW92ZSh2KTsKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1h
Z2UgIT0gdikKKyAgICAgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5saXN0U3R5bGVJ
bWFnZSA9IFdURk1vdmUodik7CiB9CiAKIGNvbnN0IENvbG9yJiBSZW5kZXJTdHlsZTo6Y29sb3Io
KSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0ZWQtPmNvbG9yOworICAgIHJldHVybiBtX2lu
aGVyaXRlZERhdGEtPmNvbG9yOwogfQogCiBjb25zdCBDb2xvciYgUmVuZGVyU3R5bGU6OnZpc2l0
ZWRMaW5rQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0ZWQtPnZpc2l0ZWRMaW5r
Q29sb3I7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtDb2xvcjsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIHYpCiB7Ci0gICAgU0VU
X1ZBUihpbmhlcml0ZWQsIGNvbG9yLCB2KTsKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwg
Y29sb3IsIHYpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKGNv
bnN0IENvbG9yJiB2KQogewotICAgIFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9y
LCB2KTsKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtDb2xvciwgdik7
Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmc7
CiB9CiAKLWZsb2F0IFJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsgfQotZmxvYXQg
UmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVy
aXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldEhv
cml6b250YWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0aWNh
bEJvcmRlclNwYWNpbmcoZmxvYXQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxfYm9y
ZGVyX3NwYWNpbmcsIHYpOyB9CitmbG9hdCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFj
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRl
clNwYWNpbmc7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJTcGFj
aW5nKGZsb2F0IHYpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIGhvcml6b250YWxC
b3JkZXJTcGFjaW5nLCB2KTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3Jk
ZXJTcGFjaW5nKGZsb2F0IHYpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIHZlcnRp
Y2FsQm9yZGVyU3BhY2luZywgdik7Cit9CiAKIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRS
b3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsK
ICAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChib3JkZXJSZWN0KTsKICAgICBpZiAoaGFzQm9y
ZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1Jh
ZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIGJvcmRlclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgUm91
bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1JhZGlpRm9yKG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIsIGJvcmRlclJlY3Quc2l6ZSgpKTsKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0JvcmRlclJh
ZGlpQ29uc3RyYWludFNjYWxlRm9yKGJvcmRlclJlY3QsIHJhZGlpKSk7CiAgICAgICAgIHJvdW5k
ZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAg
ICB9CkBAIC0xMjMyLDQxICsxMjQzLDMzIEBAIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRS
b3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wKIFJvdW5k
ZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0
UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewogICAgIGJvb2wgaG9yaXpvbnRhbCA9IGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0KLSAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCA9ICghaG9y
aXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExlZnRFZGdlKSA/IGJvcmRlckxlZnRXaWR0aCgpIDog
MDsKLSAgICBMYXlvdXRVbml0IHJpZ2h0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyUmlnaHRXaWR0aCgpIDogMDsKLSAgICBMYXlvdXRVbml0
IHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBib3Jk
ZXJUb3BXaWR0aCgpIDogMDsKLSAgICBMYXlvdXRVbml0IGJvdHRvbVdpZHRoID0gKGhvcml6b250
YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6IDA7
Ci0KKyAgICBhdXRvIGxlZnRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlKSA/IGJvcmRlckxlZnRXaWR0aCgpIDogMDsKKyAgICBhdXRvIHJpZ2h0V2lkdGggPSAo
IWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyUmlnaHRXaWR0
aCgpIDogMDsKKyAgICBhdXRvIHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSkgPyBib3JkZXJUb3BXaWR0aCgpIDogMDsKKyAgICBhdXRvIGJvdHRvbVdpZHRo
ID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyQm90dG9t
V2lkdGgoKSA6IDA7CiAgICAgcmV0dXJuIGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJS
ZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQogCiBSb3VuZGVk
UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJl
Y3QmIGJvcmRlclJlY3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lk
dGgsCiAgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQgcmlnaHRXaWR0aCwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBj
b25zdAogewotICAgIExheW91dFJlY3QgaW5uZXJSZWN0KGJvcmRlclJlY3QueCgpICsgbGVmdFdp
ZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3QueSgpICsgdG9wV2lkdGgsIAotICAgICAg
ICAgICAgICAgYm9yZGVyUmVjdC53aWR0aCgpIC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgCi0g
ICAgICAgICAgICAgICBib3JkZXJSZWN0LmhlaWdodCgpIC0gdG9wV2lkdGggLSBib3R0b21XaWR0
aCk7Ci0KLSAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChpbm5lclJlY3QpOwotCisgICAgUm91
bmRlZFJlY3Qgcm91bmRlZFJlY3QgeyB7IGJvcmRlclJlY3QueCgpICsgbGVmdFdpZHRoLCBib3Jk
ZXJSZWN0LnkoKSArIHRvcFdpZHRoLAorICAgICAgICBib3JkZXJSZWN0LndpZHRoKCkgLSBsZWZ0
V2lkdGggLSByaWdodFdpZHRoLCBib3JkZXJSZWN0LmhlaWdodCgpIC0gdG9wV2lkdGggLSBib3R0
b21XaWR0aCB9IH07CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5k
ZWRSZWN0OjpSYWRpaSByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFk
aWkoKTsKKyAgICAgICAgYXV0byByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVj
dCkucmFkaWkoKTsKICAgICAgICAgcmFkaWkuc2hyaW5rKHRvcFdpZHRoLCBib3R0b21XaWR0aCwg
bGVmdFdpZHRoLCByaWdodFdpZHRoKTsKICAgICAgICAgcm91bmRlZFJlY3QuaW5jbHVkZUxvZ2lj
YWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIH0KICAgICByZXR1cm4gcm91
bmRlZFJlY3Q7CiB9CiAKLXN0YXRpYyBib29sIGFsbExheWVyc0FyZUZpeGVkKGNvbnN0IEZpbGxM
YXllciogbGF5ZXIpCitzdGF0aWMgYm9vbCBhbGxMYXllcnNBcmVGaXhlZChjb25zdCBGaWxsTGF5
ZXImIGxheWVycykKIHsKLSAgICBib29sIGFsbEZpeGVkID0gdHJ1ZTsKLSAgICAKLSAgICBmb3Ig
KGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXI7IGN1cnJMYXllcjsgY3VyckxheWVy
ID0gY3VyckxheWVyLT5uZXh0KCkpCi0gICAgICAgIGFsbEZpeGVkICY9IChjdXJyTGF5ZXItPmlt
YWdlKCkgJiYgY3VyckxheWVyLT5hdHRhY2htZW50KCkgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNo
bWVudCk7Ci0KLSAgICByZXR1cm4gbGF5ZXIgJiYgYWxsRml4ZWQ7CisgICAgZm9yIChhdXRvKiBs
YXllciA9ICZsYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAg
aWYgKCEobGF5ZXItPmltYWdlKCkgJiYgbGF5ZXItPmF0dGFjaG1lbnQoKSA9PSBGaXhlZEJhY2tn
cm91bmRBdHRhY2htZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0VudGlyZWx5Rml4ZWRCYWNr
Z3JvdW5kKCkgY29uc3QKQEAgLTEyNzYsMTIgKzEyNzksMTIgQEAgYm9vbCBSZW5kZXJTdHlsZTo6
aGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSBjb25zdAogCiBjb25zdCBDb3VudGVyRGlyZWN0
aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRpcmVjdGl2ZXMoKSBjb25zdAogewotICAgIHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQoKTsKKyAg
ICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7
CiB9CiAKIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGly
ZWN0aXZlcygpCiB7Ci0gICAgYXV0byYgbWFwID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fY291bnRlckRpcmVjdGl2ZXM7CisgICAgYXV0byYgbWFwID0gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5jb3VudGVyRGlyZWN0aXZlczsKICAgICBpZiAoIW1hcCkKICAgICAg
ICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJl
dHVybiAqbWFwOwpAQCAtMTI5OCw3ICsxMzAxLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZW5k
ZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaHlwaGVucygpICE9
IEh5cGhlbnNOb25lKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJp
bmcgPSByYXJlSW5oZXJpdGVkRGF0YS5nZXQoKS0+aHlwaGVuYXRpb25TdHJpbmc7CisgICAgYXV0
byYgaHlwaGVuYXRpb25TdHJpbmcgPSBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0
cmluZzsKICAgICBpZiAoIWh5cGhlbmF0aW9uU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gaHlwaGVuYXRpb25TdHJpbmc7CiAKQEAgLTEzNTAsNiArMTM1Myw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorCiBjb25zdCBWZWN0b3I8U3R5bGVEYXNo
Ym9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+PiBl
bXB0eUxpc3Q7CkBAIC0xMzYwLDMwICsxMzY0LDIzIEBAIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hi
b2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+IG5vbmVM
aXN0OwogICAgIHN0YXRpYyBib29sIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQogICAg
IGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewotICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lv
biByZWdpb247Ci0gICAgICAgIHJlZ2lvbi5sYWJlbCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAg
IHJlZ2lvbi5vZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQu
cmlnaHQoKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gTGVu
Z3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gTGVuZ3RoKCk7Ci0gICAgICAg
IHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmU7Ci0gICAgICAgIG5vbmVM
aXN0LmdldCgpLmFwcGVuZChyZWdpb24pOworICAgICAgICBub25lTGlzdC5nZXQoKS5hcHBlbmQo
U3R5bGVEYXNoYm9hcmRSZWdpb24geyBlbXB0eVN0cmluZygpLCB7IH0sIFN0eWxlRGFzaGJvYXJk
UmVnaW9uOjpOb25lIH0pOwogICAgICAgICBub25lTGlzdEluaXRpYWxpemVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIG5vbmVMaXN0OwogfQorCiAjZW5kaWYKIAogdm9pZCBSZW5kZXJTdHls
ZTo6YWRqdXN0QW5pbWF0aW9ucygpCiB7Ci0gICAgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9uTGlz
dCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0KCk7CisgICAgYXV0byog
YW5pbWF0aW9uTGlzdCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7
CiAgICAgaWYgKCFhbmltYXRpb25MaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBHZXQg
cmlkIG9mIGVtcHR5IGFuaW1hdGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVtCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25MaXN0LT5zaXplKCk7ICsraSkgeworICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYW5pbWF0aW9uTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIGlmIChhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBhbmltYXRpb25MaXN0LT5yZXNpemUoaSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0MDEsMTIgKzEzOTgsMTIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0QW5p
bWF0aW9ucygpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIHsKLSAg
ICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9uTGlzdCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3RyYW5zaXRpb25zLmdldCgpOworICAgIGF1dG8qIHRyYW5zaXRpb25MaXN0ID0gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMuZ2V0KCk7CiAgICAgaWYgKCF0cmFuc2l0aW9uTGlz
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHJpZCBvZiBlbXB0eSB0cmFuc2l0aW9u
cyBhbmQgYW55dGhpbmcgYmV5b25kIHRoZW0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YW5zaXRpb25MaXN0LT5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gdHJhbnNpdGlvbkxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAo
dHJhbnNpdGlvbkxpc3QtPmFuaW1hdGlvbihpKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRy
YW5zaXRpb25MaXN0LT5yZXNpemUoaSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0MjEsMTAg
KzE0MTgsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogICAgIC8v
IFJlcGVhdCBwYXR0ZXJucyBpbnRvIGxheWVycyB0aGF0IGRvbid0IGhhdmUgc29tZSBwcm9wZXJ0
aWVzIHNldC4KICAgICB0cmFuc2l0aW9uTGlzdC0+ZmlsbFVuc2V0UHJvcGVydGllcygpOwogCi0g
ICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgcHJvcGVydGllcy4gVGhpcyBp
cyBhbiBPKG5eMikgYWxnb3JpdGhtCi0gICAgLy8gYnV0IHRoZSBsaXN0cyB0ZW5kIHRvIGJlIHZl
cnkgc2hvcnQsIHNvIGl0IGlzIHByb2JhYmx5IG9rCisgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFy
ZSBubyBkdXBsaWNhdGUgcHJvcGVydGllcy4KKyAgICAvLyBUaGlzIGlzIGFuIE8obl4yKSBhbGdv
cml0aG0gYnV0IHRoZSBsaXN0cyB0ZW5kIHRvIGJlIHNob3J0LCBzbyBpdCBpcyBwcm9iYWJseSBP
Sy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7ICsr
aSkgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gaSsxOyBqIDwgdHJhbnNpdGlvbkxpc3QtPnNp
emUoKTsgKytqKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IHRyYW5zaXRp
b25MaXN0LT5zaXplKCk7ICsraikgewogICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25MaXN0LT5h
bmltYXRpb24oaSkucHJvcGVydHkoKSA9PSB0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGopLnBy
b3BlcnR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyB0b3NzIGkKICAgICAgICAgICAgICAgICB0
cmFuc2l0aW9uTGlzdC0+cmVtb3ZlKGkpOwpAQCAtMTQzNiw2MiArMTQzMywxMDcgQEAgdm9pZCBS
ZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJT
dHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigp
OwotICAgIHJldHVybiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9uczsKKyAgICBp
ZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKKyAgICAgICAg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRy
YW5zaXRpb25zKCkKIHsKLSAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X3RyYW5zaXRpb25zKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90
cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKLSAgICByZXR1
cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zOworICAgIGlmICghbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKKyAgICAgICAgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uTGlzdD4oKTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5z
aXRpb25zOwogfQogCiBjb25zdCBBbmltYXRpb24qIFJlbmRlclN0eWxlOjp0cmFuc2l0aW9uRm9y
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAodHJhbnNp
dGlvbnMoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaXRpb25zKCkt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBBbmltYXRpb24mIHAgPSB0cmFuc2l0
aW9ucygpLT5hbmltYXRpb24oaSk7Ci0gICAgICAgICAgICBpZiAocC5hbmltYXRpb25Nb2RlKCkg
PT0gQW5pbWF0aW9uOjpBbmltYXRlQWxsIHx8IHAucHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiAmcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAg
IGF1dG8qIHRyYW5zaXRpb25zID0gdGhpcy0+dHJhbnNpdGlvbnMoKTsKKyAgICBpZiAoIXRyYW5z
aXRpb25zKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IHRyYW5zaXRpb25zLT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgYXV0
byYgYW5pbWF0aW9uID0gdHJhbnNpdGlvbnMtPmFuaW1hdGlvbihpKTsKKyAgICAgICAgaWYgKGFu
aW1hdGlvbi5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uOjpBbmltYXRlQWxsIHx8IGFuaW1h
dGlvbi5wcm9wZXJ0eSgpID09IHByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuICZhbmltYXRp
b247CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25z
dCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QgeyByZXR1cm4g
aW5oZXJpdGVkLT5mb250Q2FzY2FkZTsgfQotY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxl
Ojpmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZm9u
dE1ldHJpY3MoKTsgfQotY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6
OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUu
Zm9udERlc2NyaXB0aW9uKCk7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZpZWRGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsgfQot
ZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBmb250
RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsgfQotaW50IFJlbmRlclN0eWxlOjpmb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUucGl4ZWxTaXplKCk7IH0K
K2NvbnN0IEZvbnRDYXNjYWRlJiBSZW5kZXJTdHlsZTo6Zm9udENhc2NhZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlOworfQogCi1jb25zdCBMZW5n
dGgmIFJlbmRlclN0eWxlOjp3b3JkU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0
ZWREYXRhLT53b3JkU3BhY2luZzsgfQotZmxvYXQgUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmco
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmxldHRlclNwYWNpbmcoKTsg
fQorY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9udE1ldHJpY3MoKTsK
K30KIAotYm9vbCBSZW5kZXJTdHlsZTo6c2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIHYpCitjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5kZXJT
dHlsZTo6Zm9udERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5oZXJpdGVkLT5mb250
Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSAhPSB2KSB7Ci0gICAgICAgIGluaGVyaXRlZC5hY2Nl
c3MoKS0+Zm9udENhc2NhZGUgPSBGb250Q2FzY2FkZSh2LCBpbmhlcml0ZWQtPmZvbnRDYXNjYWRl
LmxldHRlclNwYWNpbmcoKSwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZS53b3JkU3BhY2luZygpKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKTsKK30KKwor
ZmxvYXQgUmVuZGVyU3R5bGU6OnNwZWNpZmllZEZvbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworfQorCitmbG9hdCBSZW5kZXJT
dHlsZTo6Y29tcHV0ZWRGb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZvbnREZXNjcmlw
dGlvbigpLmNvbXB1dGVkU2l6ZSgpOworfQorCitpbnQgUmVuZGVyU3R5bGU6OmZvbnRTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5waXhlbFNp
emUoKTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkU3BhY2luZzsKK30KKwor
ZmxvYXQgUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBt
X2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmxldHRlclNwYWNpbmcoKTsKIH0KIAorYm9vbCBS
ZW5kZXJTdHlsZTo6c2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uKQoreworICAgIGlmIChtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRl
LmZvbnREZXNjcmlwdGlvbigpID09IGRlc2NyaXB0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byYgY2FzY2FkZSA9IG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2Fk
ZTsKKyAgICBjYXNjYWRlID0geyBkZXNjcmlwdGlvbiwgY2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCks
IGNhc2NhZGUud29yZFNwYWNpbmcoKSB9OworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBM
ZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QKK3sKICNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lm
aWVkTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhl
aWdodDsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGgg
dikgeyBTRVRfVkFSKGluaGVyaXRlZCwgc3BlY2lmaWVkTGluZUhlaWdodCwgdik7IH0KKyAgICBy
ZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0OwogI2Vsc2UKLWNvbnN0
IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0OyB9CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+
bGluZUhlaWdodDsKICNlbmRpZgorfQogCi1MZW5ndGggUmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQo
KSBjb25zdAorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisKK3ZvaWQgUmVuZGVyU3R5bGU6
OnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQogewotICAgIHJldHVybiBp
bmhlcml0ZWQtPmxpbmVfaGVpZ2h0OworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCBzcGVj
aWZpZWRMaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkpOworfQorCisjZW5kaWYKKworY29uc3Qg
TGVuZ3RoJiBSZW5kZXJTdHlsZTo6bGluZUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW5oZXJpdGVkRGF0YS0+bGluZUhlaWdodDsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0TGlu
ZUhlaWdodChMZW5ndGgmJiBoZWlnaHQpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEs
IGxpbmVIZWlnaHQsIFdURk1vdmUoaGVpZ2h0KSk7CiB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRM
aW5lSGVpZ2h0KExlbmd0aCBzcGVjaWZpZWRMaW5lSGVpZ2h0KSB7IFNFVF9WQVIoaW5oZXJpdGVk
LCBsaW5lX2hlaWdodCwgc3BlY2lmaWVkTGluZUhlaWdodCk7IH0KIAogaW50IFJlbmRlclN0eWxl
Ojpjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdAogewpAQCAtMTUwNyw3ICsxNTQ5LDcgQEAgaW50
IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBjbGFt
cFRvPGludD4obGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFdvcmRTcGFj
aW5nKExlbmd0aCB2YWx1ZSkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFdvcmRTcGFjaW5nKExlbmd0
aCYmIHZhbHVlKQogewogICAgIGZsb2F0IGZvbnRXb3JkU3BhY2luZzsKICAgICBzd2l0Y2ggKHZh
bHVlLnR5cGUoKSkgewpAQCAtMTUyOCwxMSArMTU3MCwxMSBAQCB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRXb3JkU3BhY2luZyhMZW5ndGggdmFsdWUpCiAgICAgICAgIGZvbnRXb3JkU3BhY2luZyA9IDA7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRDYXNj
YWRlLnNldFdvcmRTcGFjaW5nKGZvbnRXb3JkU3BhY2luZyk7Ci0gICAgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPndvcmRTcGFjaW5nID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgbV9pbmhlcml0
ZWREYXRhLmFjY2VzcygpLmZvbnRDYXNjYWRlLnNldFdvcmRTcGFjaW5nKGZvbnRXb3JkU3BhY2lu
Zyk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS53b3JkU3BhY2luZyA9IFdURk1v
dmUodmFsdWUpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0
IHYpIHsgaW5oZXJpdGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZS5zZXRMZXR0ZXJTcGFjaW5nKHYp
OyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0IHYpIHsgbV9pbmhl
cml0ZWREYXRhLmFjY2VzcygpLmZvbnRDYXNjYWRlLnNldExldHRlclNwYWNpbmcodik7IH0KIAog
dm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFNpemUoZmxvYXQgc2l6ZSkKIHsKQEAgLTE1NjYsNyAr
MTYwOCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRWYXJpYXRpb25TZXR0aW5ncyhGb250
VmFyaWF0aW9uU2V0dGluZ3Mgc2V0dGluZ3MpCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJTdHls
ZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCAm
dG9wLCBMYXlvdXRVbml0ICZyaWdodCwgTGF5b3V0VW5pdCAmYm90dG9tLCBMYXlvdXRVbml0ICZs
ZWZ0KSBjb25zdAordm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0
VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdAogewogICAgIHRvcCA9IDA7CiAg
ICAgcmlnaHQgPSAwOwpAQCAtMTgxMCw1MyArMTg1Miw1MyBAQCBmbG9hdCBSZW5kZXJTdHlsZTo6
Ym9yZGVyRW5kV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBib3JkZXJCb3R0b21XaWR0aCgpIDogYm9yZGVyVG9wV2lkdGgoKTsKIH0KIAotdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0TWFyZ2luU3RhcnQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldE1hcmdpblN0YXJ0KExlbmd0aCYmIG1hcmdpbikKIHsKICAgICBpZiAoaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KQotICAgICAgICAgICAgc2V0TWFyZ2luTGVmdChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFy
Z2luTGVmdChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRN
YXJnaW5SaWdodChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQoV1RGTW92ZSht
YXJnaW4pKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQotICAgICAgICAgICAgc2V0TWFyZ2luVG9wKG1hcmdpbik7CisgICAgICAgICAgICBzZXRN
YXJnaW5Ub3AoV1RGTW92ZShtYXJnaW4pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0
TWFyZ2luQm90dG9tKG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5Cb3R0b20oV1RGTW92
ZShtYXJnaW4pKTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpbkVuZChM
ZW5ndGggbWFyZ2luKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFyZ2luRW5kKExlbmd0aCYmIG1h
cmdpbikKIHsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBp
ZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQo
bWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpblJpZ2h0KFdURk1vdmUobWFyZ2luKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpbkxlZnQobWFyZ2luKTsKKyAgICAgICAg
ICAgIHNldE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgc2V0TWFyZ2luQm90
dG9tKG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5Cb3R0b20oV1RGTW92ZShtYXJnaW4p
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luVG9wKG1hcmdpbik7CisgICAg
ICAgICAgICBzZXRNYXJnaW5Ub3AoV1RGTW92ZShtYXJnaW4pKTsKICAgICB9CiB9CiAKIFRleHRF
bXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmsoKSBjb25zdAogewotICAg
IFRleHRFbXBoYXNpc01hcmsgbWFyayA9IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc01hcms+KHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrKTsKKyAgICBhdXRvIG1hcmsgPSBzdGF0
aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJrPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNNYXJrKTsKICAgICBpZiAobWFyayAhPSBUZXh0RW1waGFzaXNNYXJrQXV0bykKICAgICAgICAg
cmV0dXJuIG1hcms7Ci0KICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAg
ICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtEb3Q7Ci0KICAgICByZXR1cm4gVGV4dEVtcGhhc2lz
TWFya1Nlc2FtZTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIENvbG9yIFJlbmRl
clN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKQogewogICAgIHJldHVybiBSZW5kZXJU
aGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKTsKIH0KKwogI2VuZGlmCiAKIExheW91dEJveEV4dGVu
dCBSZW5kZXJTdHlsZTo6aW1hZ2VPdXRzZXRzKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkg
Y29uc3QKQEAgLTE4ODksMzAgKzE5MzEsMzAgQEAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlvbiwg
Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4gUmVuZGVyU3R5bGU6OmZvbnRBbmRHbHlwaE9yaWUKIAog
dm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+
JiYgaW1hZ2UpCiB7Ci0gICAgaWYgKHN1cnJvdW5kLT5ib3JkZXIubV9pbWFnZS5pbWFnZSgpID09
IGltYWdlLmdldCgpKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLm1faW1hZ2UuaW1h
Z2UoKSA9PSBpbWFnZS5nZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2Vz
cygpLT5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZShXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9zdXJy
b3VuZERhdGEuYWNjZXNzKCkuYm9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2UoV1RGTW92ZShpbWFnZSkp
OwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5ndGhCb3gg
c2xpY2VzKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94
JiYgc2xpY2VzKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2VTbGlj
ZXMoKSA9PSBzbGljZXMpCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5ib3JkZXIubV9pbWFnZS5p
bWFnZVNsaWNlcygpID09IHNsaWNlcykKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFj
Y2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZVNsaWNlcyhzbGljZXMpOworICAgIG1fc3Vy
cm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldEltYWdlU2xpY2VzKFdURk1vdmUo
c2xpY2VzKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlV2lkdGgoTGVu
Z3RoQm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlV2lkdGgoTGVu
Z3RoQm94JiYgc2xpY2VzKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2UuYm9y
ZGVyU2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLm1f
aW1hZ2UuYm9yZGVyU2xpY2VzKCkgPT0gc2xpY2VzKQogICAgICAgICByZXR1cm47Ci0gICAgc3Vy
cm91bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldEJvcmRlclNsaWNlcyhzbGljZXMpOwor
ICAgIG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldEJvcmRlclNsaWNl
cyhXVEZNb3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFn
ZU91dHNldChMZW5ndGhCb3ggb3V0c2V0KQordm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1h
Z2VPdXRzZXQoTGVuZ3RoQm94JiYgb3V0c2V0KQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVy
Lm1faW1hZ2Uub3V0c2V0KCkgPT0gb3V0c2V0KQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLm1faW1hZ2Uub3V0c2V0KCkgPT0gb3V0c2V0KQogICAgICAgICByZXR1cm47Ci0gICAgc3Vy
cm91bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldE91dHNldChvdXRzZXQpOworICAgIG1f
c3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldE91dHNldChXVEZNb3ZlKG91
dHNldCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5h
dGlvbk1vZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaW5hdGlvbk1vZGUpCkBAIC0xOTU4
LDYgKzIwMDAsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5h
dGlvbk1vZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaQogfQogCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKKwogU2Nyb2xsU25hcFR5cGUgUmVuZGVyU3R5bGU6OmluaXRpYWxTY3Jv
bGxTbmFwVHlwZSgpCiB7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTE5NzAsMjIgKzIwMTMsMjIgQEAg
U2Nyb2xsU25hcEFsaWduIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcEFsaWduKCkKIAog
Y29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBB
cmVhOworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWE7
CiB9CiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFw
UG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3Jv
bGxTbmFwUG9ydDsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNu
YXBQb3J0OwogfQogCiBjb25zdCBTY3JvbGxTbmFwVHlwZSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNu
YXBUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Ny
b2xsU25hcFBvcnQtPnR5cGU7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNj
cm9sbFNuYXBQb3J0LT50eXBlOwogfQogCiBjb25zdCBMZW5ndGhCb3gmIFJlbmRlclN0eWxlOjpz
Y3JvbGxQYWRkaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fc2Nyb2xsU25hcFBvcnQtPnNjcm9sbFBhZGRpbmc7CisgICAgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnNjcm9sbFNuYXBQb3J0LT5zY3JvbGxQYWRkaW5nOwogfQogCiBjb25zdCBM
ZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxQYWRkaW5nVG9wKCkgY29uc3QKQEAgLTIwMTAsMTIg
KzIwNTMsMTIgQEAgY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZ1JpZ2h0
KCkgY29uc3QKIAogY29uc3QgU2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25h
cEFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Ny
b2xsU25hcEFyZWEtPmFsaWdubWVudDsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKIH0KIAogY29uc3QgTGVuZ3RoQm94JiBSZW5k
ZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBBcmVhLT5zY3JvbGxTbmFwTWFyZ2luOworICAgIHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwQXJlYS0+c2Nyb2xsU25hcE1h
cmdpbjsKIH0KIAogY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpblRv
cCgpIGNvbnN0CkBAIC0yMDQwLDc5ICsyMDgzLDc0IEBAIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbFNuYXBNYXJnaW5SaWdodCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJiB0eXBlKQogewotICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT50eXBl
ID0gdHlwZTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3Jv
bGxTbmFwUG9ydCwgdHlwZSwgdHlwZSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9s
bFBhZGRpbmdUb3AoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxQYWRkaW5nVG9wKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5z
ZXRUb3AobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsK
IH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0JvdHRvbShjb25zdCBMZW5n
dGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20oTGVu
Z3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Nj
cm9sbFNuYXBQb3J0LmFjY2VzcygpLT5zY3JvbGxQYWRkaW5nLnNldEJvdHRvbShsZW5ndGgpOwor
ICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0
LCBzY3JvbGxQYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KExlbmd0aCYmIGxlbmd0aCkKIHsK
LSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nl
c3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcubGVm
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQ
YWRkaW5nUmlnaHQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT5zY3JvbGxQYWRkaW5n
LnNldFJpZ2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5n
dGgpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0IFNj
cm9sbFNuYXBBbGlnbiYgYWxpZ25tZW50KQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7
CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFy
ZWEsIGFsaWdubWVudCwgYWxpZ25tZW50KTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsU25hcE1hcmdpblRvcChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6
OnNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3JvbGxT
bmFwTWFyZ2luLnNldFRvcChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFwTWFyZ2luLnRvcCgpLCBXVEZN
b3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2lu
Qm90dG9tKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
U25hcE1hcmdpbkJvdHRvbShMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPnNjcm9sbFNuYXBNYXJn
aW4uc2V0Qm90dG9tKGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4uYm90dG9tKCksIFdURk1v
dmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5M
ZWZ0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25h
cE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3JvbGxTbmFwTWFyZ2luLnNl
dExlZnQobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3Ro
KSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5SaWdodChjb25z
dCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5S
aWdodChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPnNjcm9sbFNuYXBNYXJnaW4uc2V0UmlnaHQo
bGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3Jv
bGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwog
fQorCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFoYXNGaWx0ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucyA9IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zOwotICAgIGlmIChmaWx0ZXJPcGVy
YXRpb25zLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICpmaWx0ZXJPcGVyYXRpb25zLmF0KDAp
OwotICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVG
RVJFTkNFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBh
dXRvJiBmaWx0ZXJPcGVyYXRpb25zID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5v
cGVyYXRpb25zOworICAgIHJldHVybiBmaWx0ZXJPcGVyYXRpb25zLnNpemUoKSA9PSAxICYmIGZp
bHRlck9wZXJhdGlvbnMuYXQoMCktPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5D
RTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRp
ZXMoKQogewotICAgIGlmICghcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+
Y29udGFpbnNWYXJpYWJsZXMoKSkKKyAgICBpZiAoIW1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3Rv
bVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
KyAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0eURhdGEgPSBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vz
cygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCk7CisKICAgICAvLyBPdXIgZmlyc3QgcGFzcyBj
aGVja3MgdGhlIHZhcmlhYmxlcyBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VzIGFueSBwcm9wZXJ0
aWVzIHRoYXQgYmVjYW1lCiAgICAgLy8gaW52YWxpZCB3aXRoIGVtcHR5IHZhbHVlcy4KLSAgICBh
dXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0gcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY3Vz
dG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+dmFsdWVzKCk7CisgICAgYXV0byYgY3VzdG9tUHJvcGVy
dGllcyA9IGN1c3RvbVByb3BlcnR5RGF0YS52YWx1ZXM7CiAgICAgSGFzaFNldDxBdG9taWNTdHJp
bmc+IGludmFsaWRQcm9wZXJ0aWVzOwogICAgIGZvciAoYXV0byBlbnRyeSA6IGN1c3RvbVByb3Bl
cnRpZXMpIHsKICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkK
QEAgLTIxNDIsMjUgKzIxODAsMjUgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJ
bkN1c3RvbVByb3BlcnRpZXMoKQogICAgIGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6IHJlc29s
dmVkVmFsdWVzKQogICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChyZXNvbHZlZFZhbHVlLT5u
YW1lKCksIHJlc29sdmVkVmFsdWUuY29weVJlZigpKTsKIAotICAgIHJhcmVJbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldENvbnRhaW5zVmFyaWFi
bGVzKGZhbHNlKTsKKyAgICBjdXN0b21Qcm9wZXJ0eURhdGEuY29udGFpbnNWYXJpYWJsZXMgPSBm
YWxzZTsKIH0KIAogZmxvYXQgUmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5PTkUpCisgICAgaWYg
KG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKG91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICByZXR1cm4gc3Rk
OjptYXgobV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkud2lkdGgoKSwgUmVuZGVyVGhlbWU6OnBsYXRm
b3JtRm9jdXNSaW5nV2lkdGgoKSk7Ci0gICAgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgp
LndpZHRoKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChtX2JhY2tncm91bmREYXRhLT5vdXRs
aW5lLndpZHRoKCksIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCkpOworICAg
IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLndpZHRoKCk7CiB9CiAKIGZsb2F0IFJl
bmRlclN0eWxlOjpvdXRsaW5lT2Zmc2V0KCkgY29uc3QKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5k
LT5vdXRsaW5lKCkuc3R5bGUoKSA9PSBCTk9ORSkKKyAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+
b3V0bGluZS5zdHlsZSgpID09IEJOT05FKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAob3V0
bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAgIHJldHVybiAobV9iYWNrZ3JvdW5kLT5vdXRsaW5l
KCkub2Zmc2V0KCkgKyBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdPZmZzZXQob3V0bGlu
ZVdpZHRoKCkpKTsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkub2Zmc2V0KCk7
CisgICAgICAgIHJldHVybiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5vZmZzZXQoKSArIFJl
bmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ09mZnNldChvdXRsaW5lV2lkdGgoKSkpOworICAg
IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLm9mZnNldCgpOwogfQogCiBib29sIFJl
bmRlclN0eWxlOjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29u
c3QKQEAgLTIxNjgsNCArMjIwNiwxNSBAQCBib29sIFJlbmRlclN0eWxlOjpzaG91bGRQbGFjZUJs
b2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QKICAgICByZXR1cm4gIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSAmJiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQogCisjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXREYXNoYm9h
cmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgbGFiZWwsIExlbmd0aCYmIHRvcCwgTGVu
Z3RoJiYgcmlnaHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCwgYm9vbCBhcHBlbmQp
Cit7CisgICAgaWYgKCFhcHBlbmQpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkuZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOworICAgIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkuZGFzaGJvYXJkUmVnaW9ucy5hcHBlbmQoeyBsYWJlbCwgeyBXVEZNb3ZlKHRv
cCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCkgfSwgdHlw
ZSB9KTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYzI4YWYxYWUwNDYwZjJm
M2M3MjhhODYwZTlmOTAyOWY2NGFjMDA2ZC4uNGI4MTgwMGJmNjc4YjBmOTEyODhmNWY0M2E5ZmJj
ZTRkZDIxNWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChn
cmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04MiwxOSArODIsMjAgQEAK
ICNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwg
Y29uc3QgVSYgdSkgeyByZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25zdCBUJj4odSk7IH0KLQot
I2RlZmluZSBTRVRfVkFSKGdyb3VwLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNvbXBh
cmVFcXVhbChncm91cC0+dmFyaWFibGUsIHZhbHVlKSkgXAotICAgICAgICBncm91cC5hY2Nlc3Mo
KS0+dmFyaWFibGUgPSB2YWx1ZQorI2RlZmluZSBTRVRfVkFSKGdyb3VwLCB2YXJpYWJsZSwgdmFs
dWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUsIHZh
bHVlKSkgXAorICAgICAgICAgICAgZ3JvdXAuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1ZTsgXAor
ICAgIH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0VUX05FU1RFRF9WQVIoZ3JvdXAsIHBhcmVudFZh
cmlhYmxlLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+
cGFyZW50VmFyaWFibGUtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKLSAgICAgICAgZ3JvdXAuYWNjZXNz
KCktPnBhcmVudFZhcmlhYmxlLmFjY2VzcygpLT52YXJpYWJsZSA9IHZhbHVlCisjZGVmaW5lIFNF
VF9ORVNURURfVkFSKGdyb3VwLCBwYXJlbnRWYXJpYWJsZSwgdmFyaWFibGUsIHZhbHVlKSBkbyB7
IFwKKyAgICAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnBhcmVudFZhcmlhYmxlLT52YXJp
YWJsZSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS5wYXJlbnRWYXJpYWJs
ZS5hY2Nlc3MoKS52YXJpYWJsZSA9IHZhbHVlOyBcCisgICAgfSB3aGlsZSAoMCkKIAotI2RlZmlu
ZSBTRVRfQk9SREVSVkFMVUVfQ09MT1IoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgXAotICAgIGlm
ICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZS5jb2xvcigpLCB2YWx1ZSkpIFwKLSAgICAg
ICAgZ3JvdXAuYWNjZXNzKCktPnZhcmlhYmxlLnNldENvbG9yKHZhbHVlKQorI2RlZmluZSBTRVRf
Qk9SREVSVkFMVUVfQ09MT1IoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCisgICAgICAg
IGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZS5jb2xvcigpLCB2YWx1ZSkpIFwKKyAg
ICAgICAgICAgIGdyb3VwLmFjY2VzcygpLnZhcmlhYmxlLnNldENvbG9yKHZhbHVlKTsgXAorICAg
IH0gd2hpbGUgKDApCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTExLDM4NiArMTEyLDM1
IEBAIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgU3R5bGVJbmhl
cml0ZWREYXRhOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcEFy
ZWE7CitjbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xhc3MgU3R5bGVTY3JvbGxTbmFw
UG9ydDsKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci1zdHJ1Y3QgU2Nyb2xsU25hcFR5cGU7
CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwotI2VuZGlmCitzdHJ1Y3QgU2Nyb2xsU25hcFR5cGU7
CiAKLXR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+IFBzZXVk
b1N0eWxlQ2FjaGU7Cit1c2luZyBQc2V1ZG9TdHlsZUNhY2hlID0gVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIDQ+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdSkgeyByZXR1
cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25zdCBUJj4odSk7IH0KIAogY2xhc3MgUmVuZGVyU3R5bGUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIAotICAgIGZyaWVuZCBjbGFzcyBD
U1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA7IC8vIFVzZWQgYnkgQ1NTIGFuaW1hdGlvbnMu
IFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBiYXNlZCBvZmYgdmlzaXRlZCBjb2xvcnMu
Ci0gICAgZnJpZW5kIGNsYXNzIEFwcGx5U3R5bGVDb21tYW5kOyAvLyBFZGl0aW5nIGhhcyB0byBv
bmx5IHJldmVhbCB1bnZpc2l0ZWQgaW5mby4KLSAgICBmcmllbmQgY2xhc3MgRWRpdGluZ1N0eWxl
OyAvLyBFZGl0aW5nIGhhcyB0byBvbmx5IHJldmVhbCB1bnZpc2l0ZWQgaW5mby4KLSAgICBmcmll
bmQgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsgLy8gSWdub3JlcyB2aXNpdGVkIHN0eWxl
cywgc28gbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgdW52aXNpdGVkIGluZm8uCi0gICAgZnJpZW5k
IGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yOyAvLyBVc2VkIGJ5IENTUyBh
bmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0
ZWQgY29sb3JzLgotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZTsgLy8gRklYTUU6
IE5lZWRzIHRvIGFsdGVyIHRoZSB2aXNpdGVkIHN0YXRlIGJ5IGhhbmQuIFNob3VsZCBjbGVhbiB0
aGUgU1ZHIGNvZGUgdXAgYW5kIG1vdmUgaXQgaW50byBSZW5kZXJTdHlsZSBwZXJoYXBzLgotICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJUcmVlQXNUZXh0OyAvLyBGSVhNRTogT25seSBuZWVkZWQgc28g
dGhlIHJlbmRlciB0cmVlIGNhbiBrZWVwIGx5aW5nIGFuZCBkdW1wIHRoZSB3cm9uZyBjb2xvcnMu
ICBSZWJhc2VsaW5pbmcgd291bGQgYWxsb3cgdGhpcyB0byBiZSB5YW5rZWQuCi0gICAgZnJpZW5k
IGNsYXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5Lgot
ICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDdXN0b207IC8vIFNldHMgbWVtYmVycyBkaXJl
Y3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyRnVuY3Rpb25zOyAvLyBTZXRzIG1l
bWJlcnMgZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlUmVzb2x2ZXI7IC8vIFNldHMg
bWVtYmVycyBkaXJlY3RseS4KLQotcHVibGljOgotICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFn
cyB7Ci0gICAgICAgIE5vbkluaGVyaXRlZEZsYWdzKCkKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gVGhlIGRlZmF1bHQgdmFsdWVzIHNob3VsZCBhbGwgYmUgemVyby4KLSAgICAgICAgICAgIEFT
U0VSVCghaW5pdGlhbE92ZXJmbG93WCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbE92
ZXJmbG93WSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbENsZWFyKCkpOwotICAgICAg
ICAgICAgQVNTRVJUKCFpbml0aWFsRGlzcGxheSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5p
dGlhbFVuaWNvZGVCaWRpKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkpOwotICAgICAg
ICAgICAgQVNTRVJUKCFpbml0aWFsRmxvYXRpbmcoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWlu
aXRpYWxUYWJsZUxheW91dCgpKTsKLQotICAgICAgICAgICAgbV9mbGFncyA9IDA7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9mbGFncyA9PSBvdGhl
ci5tX2ZsYWdzOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5v
bkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KLQotICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRl
ZEZsYWdzJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gT25seSBhIHN1YnNldCBp
cyBjb3BpZWQgYmVjYXVzZSBOb25Jbmhlcml0ZWRGbGFncyBjb250YWlucyBhIGJ1bmNoIG9mIHN0
dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBkYXRhLgotICAgICAgICAgICAgdWludDY0X3Qgbm9u
SW5oZXJpdGVkTWFzayA9IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1hPZmZzZXQKLSAgICAgICAg
ICAgICAgICB8IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1lPZmZzZXQKLSAgICAgICAgICAgICAg
ICB8IGNsZWFyTWFzayA8PCBjbGVhck9mZnNldAotICAgICAgICAgICAgICAgIHwgZGlzcGxheU1h
c2sgPDwgZWZmZWN0aXZlRGlzcGxheU9mZnNldAotICAgICAgICAgICAgICAgIHwgcG9zaXRpb25N
YXNrIDw8IHBvc2l0aW9uT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBkaXNwbGF5TWFzayA8PCBv
cmlnaW5hbERpc3BsYXlPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHVuaWNvZGVCaWRpTWFzayA8
PCB1bmljb2RlQmlkaU9mZnNldAotICAgICAgICAgICAgICAgIHwgdmVydGljYWxBbGlnbk1hc2sg
PDwgdmVydGljYWxBbGlnbk9mZnNldAotICAgICAgICAgICAgICAgIHwgZmxvYXRpbmdNYXNrIDw8
IGZsb2F0aW5nT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBvbmVCaXRNYXNrIDw8IGV4cGxpY2l0
SW5oZXJpdGFuY2VPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHRhYmxlTGF5b3V0Qml0TWFzayA8
PCB0YWJsZUxheW91dE9mZnNldAotICAgICAgICAgICAgICAgIHwgaGFzVmlld3BvcnRVbml0c0Jp
dE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c09mZnNldDsKLQotICAgICAgICAgICAgbV9mbGFncyA9
IChtX2ZsYWdzICYgfm5vbkluaGVyaXRlZE1hc2spIHwgKG90aGVyLm1fZmxhZ3MgJiBub25Jbmhl
cml0ZWRNYXNrKTsKLSAgICAgICAgfQotCi0gICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1goKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93TWFz
aywgb3ZlcmZsb3dYT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJm
bG93IG92ZXJmbG93WCkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1gsIG92ZXJmbG93TWFzaywgb3Zl
cmZsb3dYT2Zmc2V0KTsgfQotCi0gICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93TWFzaywgb3Zl
cmZsb3dZT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IG92
ZXJmbG93WSkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1ksIG92ZXJmbG93TWFzaywgb3ZlcmZsb3dZ
T2Zmc2V0KTsgfQotCi0gICAgICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVDbGVhcj4oZ2V0VmFsdWUoY2xlYXJNYXNrLCBjbGVhck9mZnNldCkpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0Q2xlYXIoRUNsZWFyIGNsZWFyKSB7IHVwZGF0ZVZhbHVlKGNsZWFyLCBjbGVh
ck1hc2ssIGNsZWFyT2Zmc2V0KTsgfQotCi0gICAgICAgIEVEaXNwbGF5IGVmZmVjdGl2ZURpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4oZ2V0VmFsdWUoZGlzcGxh
eU1hc2ssIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldEVmZmVj
dGl2ZURpc3BsYXkoRURpc3BsYXkgZWZmZWN0aXZlRGlzcGxheSkgeyB1cGRhdGVWYWx1ZShlZmZl
Y3RpdmVEaXNwbGF5LCBkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCk7IH0KLQot
ICAgICAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
UG9zaXRpb24+KGdldFZhbHVlKHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpKTsgfQotICAg
ICAgICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiBwb3NpdGlvbikgeyB1cGRhdGVWYWx1ZShw
b3NpdGlvbiwgcG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCk7IH0KLQotICAgICAgICBFRGlz
cGxheSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxh
eT4oZ2V0VmFsdWUoZGlzcGxheU1hc2ssIG9yaWdpbmFsRGlzcGxheU9mZnNldCkpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSkgeyB1
cGRhdGVWYWx1ZShvcmlnaW5hbERpc3BsYXksIGRpc3BsYXlNYXNrLCBvcmlnaW5hbERpc3BsYXlP
ZmZzZXQpOyB9Ci0KLSAgICAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVVuaWNvZGVCaWRpPihnZXRWYWx1ZSh1bmljb2RlQmlkaU1hc2ss
IHVuaWNvZGVCaWRpT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRVbmljb2RlQmlkaShFVW5p
Y29kZUJpZGkgdW5pY29kZUJpZGkpIHsgdXBkYXRlVmFsdWUodW5pY29kZUJpZGksIHVuaWNvZGVC
aWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNWaWV3cG9y
dFVuaXRzKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0
KTsgfQotICAgICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2YWx1ZSkgeyB1cGRh
dGVCb29sZWFuKHZhbHVlLCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0KTsgfQotCi0gICAgICAgIEVW
ZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
VmVydGljYWxBbGlnbj4oZ2V0VmFsdWUodmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25P
ZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxpZ24g
dmVydGljYWxBbGlnbikgeyB1cGRhdGVWYWx1ZSh2ZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWdu
TWFzaywgdmVydGljYWxBbGlnbk9mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihleHBsaWNp
dEluaGVyaXRhbmNlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZXhwbGlj
aXRJbmhlcml0YW5jZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25z
dCB7IHJldHVybiBmbG9hdGluZygpICE9IE5vRmxvYXQ7IH0KLSAgICAgICAgRUZsb2F0IGZsb2F0
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsb2F0PihnZXRWYWx1ZShmbG9hdGlu
Z01hc2ssIGZsb2F0aW5nT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRGbG9hdGluZyhFRmxv
YXQgZmxvYXRpbmcpIHsgdXBkYXRlVmFsdWUoZmxvYXRpbmcsIGZsb2F0aW5nTWFzaywgZmxvYXRp
bmdPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBj
b25zdCB7IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIGdldFZhbHVlKHBzZXVkb0JpdHNN
YXNrLCBwc2V1ZG9CaXRzT2Zmc2V0KTsgfQotICAgICAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBz
ZXVkb0lkIHBzZXVkbykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBzZXVk
byA+IE5PUFNFVURPKTsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5B
TF9QU0VVRE9JRCk7Ci0gICAgICAgICAgICByZXR1cm4gKG9uZUJpdE1hc2sgPDwgKHBzZXVkb0Jp
dHNPZmZzZXQgLSAxICsgcHNldWRvKSkgJiBtX2ZsYWdzOwotICAgICAgICB9Ci0gICAgICAgIHZv
aWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgICAgICAgICAgQVNTRVJUKHBzZXVk
byA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICAgICAgICAgIG1fZmxhZ3MgfD0gb25l
Qml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOwotICAgICAgICB9Ci0g
ICAgICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0IHBzZXVkb0lkU2V0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHNldWRvSWRTZXQpOwotICAgICAgICAgICAg
dWludDY0X3QgcmF3UHNldWRvSWRTZXQgPSBwc2V1ZG9JZFNldC5kYXRhKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoKHJhd1BzZXVkb0lkU2V0ICYgUFVCTElDX1BTRVVET0lEX01BU0spID09IHJhd1Bz
ZXVkb0lkU2V0KTsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQocHNldWRvQml0c09mZnNldCA+
PSAxLCAiKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSBzaG91bGQgYmUgdmFsaWQuIik7Ci0gICAgICAg
ICAgICBtX2ZsYWdzIHw9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmF3UHNldWRvSWRTZXQpIDw8
IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgRVRhYmxlTGF5
b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRhYmxlTGF5b3V0
PihnZXRWYWx1ZSh0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KSk7IH0KLSAg
ICAgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQpIHsgdXBk
YXRlVmFsdWUodGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZz
ZXQpOyB9Ci0KLSAgICAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHNldWRvSWQ+KGdldFZhbHVlKHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNl
dCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyB1
cGRhdGVWYWx1ZShzdHlsZVR5cGUsIHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCk7IH0K
LQotICAgICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihpc1Vu
aXF1ZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRJc1VuaXF1ZSgpIHsgdXBkYXRlQm9vbGVh
bih0cnVlLCBpc1VuaXF1ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGVtcHR5U3RhdGUoKSBj
b25zdCB7IHJldHVybiBnZXRCb29sZWFuKGVtcHR5U3RhdGVPZmZzZXQpOyAgfQotICAgICAgICB2
b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBlbXB0
eVN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gZ2V0Qm9vbGVhbihmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQotICAgICAgICB2
b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUs
IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9Ci0g
ICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFu
KHZhbHVlLCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGFmZmVjdGVk
QnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0
KTsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KLQotICAgICAgICBib29s
IGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlB
Y3RpdmVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZh
bHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9Ci0K
LSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
YWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWco
Ym9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5RHJhZ09mZnNldCk7
IH0KLQotICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNM
aW5rT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldElzTGluayhib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGlzTGlua09mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNl
dERpcmVjdGlvbihib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlTZXRX
cml0aW5nTW9kZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFn
c01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRGbGFn
cywgbV9mbGFncyk7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlB
Y3RpdmUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQ7IH0K
LSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJu
IG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1
aW50NjRfdCBmbGFnUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSB7IHJldHVybiBvbmVCaXRN
YXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7IH0KLSAgICAgICAgc3RhdGlj
IHVpbnQ2NF90IHNldEZpcnN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0ZpcnN0Q2hp
bGRTdGF0ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNl
dExhc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnTGFzdENoaWxkU3RhdGUoKSB8IGZs
YWdJc1VuaXF1ZSgpOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVCb29sZWFu
KGJvb2wgaXNTZXQsIHVpbnQ2NF90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGlzU2V0KQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gKG9uZUJpdE1hc2sgPDwgb2Zmc2V0
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2ZsYWdzICY9IH4ob25lQml0
TWFzayA8PCBvZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVp
bnQ2NF90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmxh
Z3MgJiAob25lQml0TWFzayA8PCBvZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB1
cGRhdGVWYWx1ZSh1aW50OF90IG5ld1ZhbHVlLCB1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50
TWFzaywgdWludDY0X3Qgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShu
ZXdWYWx1ZSAmIH5wb3NpdGlvbkluZGVwZW5kZW50TWFzaykpOwotICAgICAgICAgICAgdWludDY0
X3QgcG9zaXRpb25EZXBlbmRlbnRNYXNrID0gcG9zaXRpb25JbmRlcGVuZGVudE1hc2sgPDwgb2Zm
c2V0OwotICAgICAgICAgICAgbV9mbGFncyA9IChtX2ZsYWdzICYgfnBvc2l0aW9uRGVwZW5kZW50
TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKSA8PCBvZmZzZXQpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgZ2V0VmFsdWUodWludDY0X3QgcG9zaXRpb25JbmRl
cGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPigobV9mbGFncyA+PiBvZmZzZXQpICYgcG9z
aXRpb25JbmRlcGVuZGVudE1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHVpbnQ2
NF90IGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgaXNVbmlxdWVPZmZzZXQ7
IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdGaXJzdENoaWxkU3RhdGUoKSB7IHJldHVy
biBvbmVCaXRNYXNrIDw8IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldDsgfQotICAgICAgICBzdGF0aWMg
dWludDY0X3QgZmxhZ0xhc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBsYXN0
Q2hpbGRTdGF0ZU9mZnNldDsgfQotCi0gICAgICAgIC8vIFRvIHR5cGUgdGhlIGJpdCBtYXNrIHBy
b3Blcmx5IG9uIDY0Yml0cy4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG9uZUJpdE1h
c2sgPSAweDE7Ci0KLSAgICAgICAgLy8gQnl0ZSAxLgotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgb3ZlcmZsb3dCaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRf
dCBvdmVyZmxvd01hc2sgPSAob25lQml0TWFzayA8PCBvdmVyZmxvd0JpdENvdW50KSAtIDE7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1hPZmZzZXQgPSAwOwotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dZT2Zmc2V0ID0gb3ZlcmZsb3dYT2Zmc2V0
ICsgb3ZlcmZsb3dCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsZWFy
Qml0Q291bnQgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgY2xlYXJNYXNrID0g
KG9uZUJpdE1hc2sgPDwgY2xlYXJCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2xlYXJPZmZzZXQgPSBvdmVyZmxvd1lPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50
OwotCi0gICAgICAgIC8vIEJ5dGUgMi4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRp
c3BsYXlCaXRDb3VudCA9IDU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkaXNwbGF5
TWFzayA9IChvbmVCaXRNYXNrIDw8IGRpc3BsYXlCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZWZmZWN0aXZlRGlzcGxheU9mZnNldCA9IGNsZWFyT2Zmc2V0ICsg
Y2xlYXJCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uQml0
Q291bnQgPSAzOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcG9zaXRpb25NYXNrID0g
KG9uZUJpdE1hc2sgPDwgcG9zaXRpb25CaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ICsgZGlz
cGxheUJpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgMy4KLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG9yaWdpbmFsRGlzcGxheU9mZnNldCA9IHBvc2l0aW9uT2Zmc2V0ICsgcG9zaXRp
b25CaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRpQml0
Q291bnQgPSAzOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdW5pY29kZUJpZGlNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgdW5pY29kZUJpZGlCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgdW5pY29kZUJpZGlPZmZzZXQgPSBvcmlnaW5hbERpc3BsYXlPZmZz
ZXQgKyBkaXNwbGF5Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA0LgotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdCaXRDb3VudCA9IDI7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCB1aW50NjRfdCBmbG9hdGluZ01hc2sgPSAob25lQml0TWFzayA8PCBmbG9hdGluZ0JpdENv
dW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ09mZnNldCA9
IHVuaWNvZGVCaWRpT2Zmc2V0ICsgdW5pY29kZUJpZGlCaXRDb3VudDsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25CaXRjb3VudCA9IDE7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zm
c2V0ID0gZmxvYXRpbmdPZmZzZXQgKyBmbG9hdGluZ0JpdENvdW50OwotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlQml0Y291bnQgPSAxOwot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2Rl
T2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCArIGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25CaXRjb3VudDsKLQotICAgICAgICAvLyBCeXRlIDUuCi0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlQml0Q291bnQgPSAxOwotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCA9IGhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCArIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9k
ZUJpdGNvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVMYXlvdXRCaXRD
b3VudCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB0YWJsZUxheW91dEJpdE1h
c2sgPSBvbmVCaXRNYXNrOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVMYXlv
dXRPZmZzZXQgPSBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0ICsgZXhwbGljaXRJbmhlcml0YW5j
ZUJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbkJp
dENvdW50ID0gNDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25Q
YWRkaW5nID0gMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25B
bmRQYWRkaW5nQml0Q291bnQgPSB2ZXJ0aWNhbEFsaWduQml0Q291bnQgKyB2ZXJ0aWNhbEFsaWdu
UGFkZGluZzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHZlcnRpY2FsQWxpZ25NYXNr
ID0gKG9uZUJpdE1hc2sgPDwgdmVydGljYWxBbGlnbkJpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gdGFibGVMYXlvdXRPZmZz
ZXQgKyB0YWJsZUxheW91dEJpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNi4KLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNCaXRDb3VudCA9IDc7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1aW50NjRfdCBwc2V1ZG9CaXRzTWFzayA9IChvbmVCaXRNYXNrIDw8IHBzZXVk
b0JpdHNCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRv
Qml0c09mZnNldCA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyB2ZXJ0aWNhbEFsaWduQml0Q291bnQ7
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3Vu
dCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBoYXNWaWV3cG9ydFVuaXRzQml0
TWFzayA9IChvbmVCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCkgLSAxOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3BvcnRVbml0c09mZnNldCA9IHBzZXVk
b0JpdHNPZmZzZXQgKyBwc2V1ZG9CaXRzQml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA3Lgot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQml0Q291bnQgPSA2OwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlUGFkZGluZyA9IDI7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQgPSBzdHls
ZVR5cGVCaXRDb3VudCArIHN0eWxlVHlwZVBhZGRpbmc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBzdHlsZVR5cGVNYXNrID0gKG9uZUJpdE1hc2sgPDwgc3R5bGVUeXBlQW5kUGFkZGlu
Z0JpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVP
ZmZzZXQgPSBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgKyBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0
OwotCi0gICAgICAgIC8vIEJ5dGUgOC4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlz
VW5pcXVlT2Zmc2V0ID0gc3R5bGVUeXBlT2Zmc2V0ICsgc3R5bGVUeXBlQW5kUGFkZGluZ0JpdENv
dW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZW1wdHlTdGF0ZU9mZnNldCA9IGlz
VW5pcXVlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZpcnN0Q2hp
bGRTdGF0ZU9mZnNldCA9IGVtcHR5U3RhdGVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbGFzdENoaWxkU3RhdGVPZmZzZXQgPSBmaXJzdENoaWxkU3RhdGVPZmZzZXQg
KyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0
ID0gbGFzdENoaWxkU3RhdGVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCA9IGFmZmVjdGVkQnlIb3Zlck9mZnNldCArIDE7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5RHJhZ09mZnNldCA9IGFmZmVj
dGVkQnlBY3RpdmVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaXNM
aW5rT2Zmc2V0ID0gYWZmZWN0ZWRCeURyYWdPZmZzZXQgKyAxOwotCi0gICAgICAgIC8vIDYwIGJp
dHMgYXJlIGFzc2lnbmVkLiBUaGVyZSBhcmUgNCBiaXRzIGF2YWlsYWJsZSBjdXJyZW50bHkgdXNl
ZCBhcyBwYWRkaW5nIHRvIGltcHJvdmUgY29kZSBnZW5lcmF0aW9uLgotICAgICAgICAvLyBJZiB5
b3UgYWRkIG1vcmUgc3R5bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRl
IFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpLgotICAgICAgICB1aW50NjRfdCBt
X2ZsYWdzOwotICAgIH07Ci0KLXByb3RlY3RlZDoKLQotICAgIC8vIG5vbi1pbmhlcml0ZWQgYXR0
cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVCb3hEYXRhPiBtX2JveDsKLSAgICBEYXRhUmVmPFN0
eWxlVmlzdWFsRGF0YT4gdmlzdWFsOwotICAgIERhdGFSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4g
bV9iYWNrZ3JvdW5kOwotICAgIERhdGFSZWY8U3R5bGVTdXJyb3VuZERhdGE+IHN1cnJvdW5kOwot
ICAgIERhdGFSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gcmFyZU5vbkluaGVyaXRlZERh
dGE7Ci0KLSAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YT4gcmFyZUluaGVyaXRlZERhdGE7Ci0gICAgRGF0YVJlZjxTdHlsZUluaGVy
aXRlZERhdGE+IGluaGVyaXRlZDsKLQotICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8g
c3R5bGVzCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNl
dWRvU3R5bGVzOwotCi0gICAgRGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9zdmdTdHlsZTsKLQot
Ly8gIVNUQVJUIFNZTkMhOiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBjb3B5IGNvbnN0cnVj
dG9yIGluIFJlbmRlclN0eWxlLmNwcCBhbmQgaW1wbGljaXRseUluaGVyaXRlZCgpIGluIFN0eWxl
UmVzb2x2ZXIuY3BwCi0KLSAgICAvLyBpbmhlcml0Ci0gICAgc3RydWN0IEluaGVyaXRlZEZsYWdz
IHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChfZW1wdHlfY2VsbHMgPT0gb3Ro
ZXIuX2VtcHR5X2NlbGxzKQotICAgICAgICAgICAgICAgICYmIChfY2FwdGlvbl9zaWRlID09IG90
aGVyLl9jYXB0aW9uX3NpZGUpCi0gICAgICAgICAgICAgICAgJiYgKF9saXN0X3N0eWxlX3R5cGUg
PT0gb3RoZXIuX2xpc3Rfc3R5bGVfdHlwZSkKLSAgICAgICAgICAgICAgICAmJiAoX2xpc3Rfc3R5
bGVfcG9zaXRpb24gPT0gb3RoZXIuX2xpc3Rfc3R5bGVfcG9zaXRpb24pCi0gICAgICAgICAgICAg
ICAgJiYgKF92aXNpYmlsaXR5ID09IG90aGVyLl92aXNpYmlsaXR5KQotICAgICAgICAgICAgICAg
ICYmIChfdGV4dF9hbGlnbiA9PSBvdGhlci5fdGV4dF9hbGlnbikKLSAgICAgICAgICAgICAgICAm
JiAoX3RleHRfdHJhbnNmb3JtID09IG90aGVyLl90ZXh0X3RyYW5zZm9ybSkKLSAgICAgICAgICAg
ICAgICAmJiAoX3RleHRfZGVjb3JhdGlvbnMgPT0gb3RoZXIuX3RleHRfZGVjb3JhdGlvbnMpCi0g
ICAgICAgICAgICAgICAgJiYgKF9jdXJzb3Jfc3R5bGUgPT0gb3RoZXIuX2N1cnNvcl9zdHlsZSkK
LSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgICAgICAgICAgICAgJiYgKG1fY3Vy
c29yVmlzaWJpbGl0eSA9PSBvdGhlci5tX2N1cnNvclZpc2liaWxpdHkpCi0jZW5kaWYKLSAgICAg
ICAgICAgICAgICAmJiAoX2RpcmVjdGlvbiA9PSBvdGhlci5fZGlyZWN0aW9uKQotICAgICAgICAg
ICAgICAgICYmIChfd2hpdGVfc3BhY2UgPT0gb3RoZXIuX3doaXRlX3NwYWNlKQotICAgICAgICAg
ICAgICAgICYmIChfYm9yZGVyX2NvbGxhcHNlID09IG90aGVyLl9ib3JkZXJfY29sbGFwc2UpCi0g
ICAgICAgICAgICAgICAgJiYgKF9ib3hfZGlyZWN0aW9uID09IG90aGVyLl9ib3hfZGlyZWN0aW9u
KQotICAgICAgICAgICAgICAgICYmIChtX3J0bE9yZGVyaW5nID09IG90aGVyLm1fcnRsT3JkZXJp
bmcpCi0gICAgICAgICAgICAgICAgJiYgKG1fcHJpbnRDb2xvckFkanVzdCA9PSBvdGhlci5tX3By
aW50Q29sb3JBZGp1c3QpCi0gICAgICAgICAgICAgICAgJiYgKF9wb2ludGVyRXZlbnRzID09IG90
aGVyLl9wb2ludGVyRXZlbnRzKQotICAgICAgICAgICAgICAgICYmIChfaW5zaWRlTGluayA9PSBv
dGhlci5faW5zaWRlTGluaykKLSAgICAgICAgICAgICAgICAmJiAoX2luc2lkZURlZmF1bHRCdXR0
b24gPT0gb3RoZXIuX2luc2lkZURlZmF1bHRCdXR0b24pCi0gICAgICAgICAgICAgICAgJiYgKG1f
d3JpdGluZ01vZGUgPT0gb3RoZXIubV93cml0aW5nTW9kZSk7Ci0gICAgICAgIH0KIAotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgICAgIHVuc2lnbmVkIF9lbXB0eV9jZWxs
cyA6IDE7IC8vIEVFbXB0eUNlbGwKLSAgICAgICAgdW5zaWduZWQgX2NhcHRpb25fc2lkZSA6IDI7
IC8vIEVDYXB0aW9uU2lkZQotICAgICAgICB1bnNpZ25lZCBfbGlzdF9zdHlsZV90eXBlIDogNzsg
Ly8gRUxpc3RTdHlsZVR5cGUKLSAgICAgICAgdW5zaWduZWQgX2xpc3Rfc3R5bGVfcG9zaXRpb24g
OiAxOyAvLyBFTGlzdFN0eWxlUG9zaXRpb24KLSAgICAgICAgdW5zaWduZWQgX3Zpc2liaWxpdHkg
OiAyOyAvLyBFVmlzaWJpbGl0eQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9hbGlnbiA6IDQ7IC8v
IEVUZXh0QWxpZ24KLSAgICAgICAgdW5zaWduZWQgX3RleHRfdHJhbnNmb3JtIDogMjsgLy8gRVRl
eHRUcmFuc2Zvcm0KLSAgICAgICAgdW5zaWduZWQgX3RleHRfZGVjb3JhdGlvbnMgOiBUZXh0RGVj
b3JhdGlvbkJpdHM7Ci0gICAgICAgIHVuc2lnbmVkIF9jdXJzb3Jfc3R5bGUgOiA2OyAvLyBFQ3Vy
c29yCi0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgICAgICB1bnNpZ25lZCBtX2N1
cnNvclZpc2liaWxpdHkgOiAxOyAvLyBDdXJzb3JWaXNpYmlsaXR5Ci0jZW5kaWYKLSAgICAgICAg
dW5zaWduZWQgX2RpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KLSAgICAgICAgdW5zaWdu
ZWQgX3doaXRlX3NwYWNlIDogMzsgLy8gRVdoaXRlU3BhY2UKLSAgICAgICAgLy8gMzIgYml0cwot
ICAgICAgICB1bnNpZ25lZCBfYm9yZGVyX2NvbGxhcHNlIDogMTsgLy8gRUJvcmRlckNvbGxhcHNl
Ci0gICAgICAgIHVuc2lnbmVkIF9ib3hfZGlyZWN0aW9uIDogMTsgLy8gRUJveERpcmVjdGlvbiAo
Q1NTMyBib3hfZGlyZWN0aW9uIHByb3BlcnR5LCBmbGV4aWJsZSBib3ggbGF5b3V0IG1vZHVsZSkK
LQotICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKLSAgICAgICAgdW5zaWduZWQgbV9ydGxP
cmRlcmluZyA6IDE7IC8vIE9yZGVyCi0gICAgICAgIHVuc2lnbmVkIG1fcHJpbnRDb2xvckFkanVz
dCA6IFByaW50Q29sb3JBZGp1c3RCaXRzOwotICAgICAgICB1bnNpZ25lZCBfcG9pbnRlckV2ZW50
cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCi0gICAgICAgIHVuc2lnbmVkIF9pbnNpZGVMaW5rIDog
MjsgLy8gRUluc2lkZUxpbmsKLSAgICAgICAgdW5zaWduZWQgX2luc2lkZURlZmF1bHRCdXR0b24g
OiAxOwotICAgICAgICAvLyA0NCBiaXRzCi0KLSAgICAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1v
ZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICAgICAgdW5zaWduZWQg
bV93cml0aW5nTW9kZSA6IDI7IC8vIFdyaXRpbmdNb2RlCi0gICAgICAgIC8vIDQ2IGJpdHMKLSAg
ICB9IGluaGVyaXRlZF9mbGFnczsKLQotLy8gZG9uJ3QgaW5oZXJpdAotICAgIE5vbkluaGVyaXRl
ZEZsYWdzIG5vbmluaGVyaXRlZF9mbGFnczsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5B
QkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCi0gICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBm
YWxzZSB9OwotI2VuZGlmCi0KLS8vICFFTkQgU1lOQyEKIHByaXZhdGU6CisgICAgZW51bSBDbG9u
ZVRhZyB7IENsb25lIH07CiAgICAgZW51bSBDcmVhdGVEZWZhdWx0U3R5bGVUYWcgeyBDcmVhdGVE
ZWZhdWx0U3R5bGUgfTsKLSAgICBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcpOwot
Ci0gICAgc3RhdGljIFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKTsKIAogcHVibGljOgogICAg
IFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKICAgICBSZW5kZXJTdHlsZSYg
b3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKyAgICB+UmVuZGVyU3R5bGUoKTsK
IAotICAgIC8vIFRoaXMgaXMgbm90IGEgdHJ1ZSBjb3B5IGNvbnN0cnVjdG9yLiBJdCBkb2Vzbid0
IGNvcHkgcHNldWRvIHN0eWxlIGNhY2hlcyBmb3IgZXhhbXBsZS4KLSAgICBlbnVtIENsb25lVGFn
IHsgQ2xvbmUgfTsKKyAgICBSZW5kZXJTdHlsZSByZXBsYWNlKFJlbmRlclN0eWxlJiYpIFdBUk5f
VU5VU0VEX1JFVFVSTjsKKworICAgIGV4cGxpY2l0IFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRT
dHlsZVRhZyk7CiAgICAgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBDbG9uZVRhZyk7
CiAKLSAgICB+UmVuZGVyU3R5bGUoKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIGRlZmF1bHRT
dHlsZSgpOwogCiAgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZSgpOwogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVB0cigpOwpAQCAtNTA1LDYgKzE1NSwx
MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGlvbkhhc0JlZ3VuKCkgY29uc3QgeyByZXR1cm4g
bV9kZWxldGlvbkhhc0JlZ3VuOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICB2
b2lkIGluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0UGFyZW50KTsKKyAgICB2
b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJik7CisKICAgICBDb250
ZW50UG9zaXRpb24gcmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKGNvbnN0IFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0OwogICAgIENvbnRl
bnREaXN0cmlidXRpb25UeXBlIHJlc29sdmVkSnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24oY29u
c3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29uc3Q7
CiAgICAgQ29udGVudFBvc2l0aW9uIHJlc29sdmVkQWxpZ25Db250ZW50UG9zaXRpb24oY29uc3Qg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29uc3Q7CkBA
IC01MTQsMTEgKzE3MCw4IEBAIHB1YmxpYzoKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIHJl
c29sdmVkSnVzdGlmeUl0ZW1zKEl0ZW1Qb3NpdGlvbiBub3JtYWxWYWx1ZUJlaGF2aW91cikgY29u
c3Q7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSByZXNvbHZlZEp1c3RpZnlTZWxmKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHVlQmVoYXZp
b3VyKSBjb25zdDsKIAotICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIGlu
aGVyaXRQYXJlbnQpOwotICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVy
U3R5bGUqKTsKLQotICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5zdHlsZVR5cGUoKTsgfQotICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVk
b0lkIHN0eWxlVHlwZSkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0U3R5bGVUeXBlKHN0eWxlVHlw
ZSk7IH0KKyAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLnN0eWxlVHlwZSgpOyB9CisgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQg
c3R5bGVUeXBlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0U3R5bGVUeXBlKHN0eWxlVHlwZSk7
IH0KIAogICAgIFJlbmRlclN0eWxlKiBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29u
c3Q7CiAgICAgUmVuZGVyU3R5bGUqIGFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOwpAQCAtNTI2LDExNiArMTc5LDkzIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFBzZXVkb1N0eWxlQ2FjaGUqIGNhY2hlZFBzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkUHNldWRvU3R5bGVzLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQdHI8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4mIHZhbHVlKSB7IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2N1
c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFs
dWUpOyB9Ci0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGdldEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUpOyB9Ci0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMt
Pmhhc0N1c3RvbVByb3BlcnR5KG5hbWUpOyB9Ci0gICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1
ZU1hcCYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT5tX2N1c3RvbVByb3BlcnRpZXMtPm1fdmFsdWVzOyB9CisgICAgY29uc3QgQ3VzdG9tUHJvcGVy
dHlWYWx1ZU1hcCYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQorICAgIHZvaWQgc2V0Q3VzdG9t
UHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBX
VEZNb3ZlKHZhbHVlKSk7IH0KIAotICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIGhh
c1ZpZXdwb3J0VW5pdHMgPSB0cnVlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNWaWV3cG9y
dFVuaXRzKGhhc1ZpZXdwb3J0VW5pdHMpOyB9Ci0gICAgYm9vbCBoYXNWaWV3cG9ydFVuaXRzKCkg
Y29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMoKTsgfQor
ICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIGhhc1ZpZXdwb3J0VW5pdHMgPSB0cnVl
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVu
aXRzKTsgfQorICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
SW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0cygpOyB9CiAKLSAgICBib29sIGFmZmVjdGVk
QnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5SG92
ZXIoKTsgfQotICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KLSAgICBib29sIGFmZmVjdGVkQnlE
cmFnKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVkQnlEcmFnKCk7
IH0KKyAgICBib29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlBY3RpdmUoKTsg
fQorICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRl
ZEZsYWdzLmFmZmVjdGVkQnlEcmFnKCk7IH0KIAotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVy
KCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKHRydWUpOyB9Ci0gICAg
dm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0
ZWRCeUFjdGl2ZSh0cnVlKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyh0cnVlKTsgfQorICAgIHZvaWQgc2V0QWZm
ZWN0ZWRCeUhvdmVyKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEFmZmVjdGVkQnlIb3Zlcih0
cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOyB9CisgICAgdm9pZCBzZXRBZmZlY3RlZEJ5
RHJhZygpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyh0cnVlKTsgfQog
CiAgICAgdm9pZCBzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUoY29uc3QgUGFnaW5h
dGlvbjo6TW9kZSYpOwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5kZXJTdHlsZSYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgYm9vbCBpc0Zs
b2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmlzRmxvYXRpbmcoKTsg
fQotICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5tYXJnaW4u
aXNaZXJvKCk7IH0KLSAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KLSAgICBib29sIGhhc0JvcmRlckZpbGwoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQorICAgIGJvb2wgaXNGbG9hdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNGbG9hdGluZygpOyB9Cisg
ICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhbV9zdXJyb3VuZERhdGEtPm1hcmdp
bi5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQorICAgIGJvb2wgaGFzQm9yZGVyRmlsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzRmlsbCgpOyB9CiAgICAg
Ym9vbCBoYXNWaXNpYmxlQm9yZGVyRGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2li
bGVCb3JkZXIoKSB8fCBoYXNCb3JkZXJGaWxsKCk7IH0KLSAgICBib29sIGhhc1Zpc2libGVCb3Jk
ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc1Zpc2libGVCb3JkZXIoKTsg
fQotICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+cGFkZGlu
Zy5pc1plcm8oKTsgfQotICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIXN1cnJv
dW5kLT5vZmZzZXQuaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc1Zpc2libGVCb3JkZXIoKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc1Zpc2libGVCb3JkZXIoKTsgfQor
ICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0YS0+cGFk
ZGluZy5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIW1f
c3Vycm91bmREYXRhLT5vZmZzZXQuaXNaZXJvKCk7IH0KICAgICBib29sIGhhc01hcmdpbkJlZm9y
ZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkuaGFzUXVpcmsoKTsgfQogICAg
IGJvb2wgaGFzTWFyZ2luQWZ0ZXJRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVyKCku
aGFzUXVpcmsoKTsgfQogCi0gICAgYm9vbCBoYXNCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5oYXNJbWFnZSgpOyB9Ci0gICAgYm9vbCBo
YXNGaXhlZEJhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFj
a2dyb3VuZCgpLmhhc0ZpeGVkSW1hZ2UoKTsgfQotICAgIAorICAgIGJvb2wgaGFzQmFja2dyb3Vu
ZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5oYXNJ
bWFnZSgpOyB9CisgICAgYm9vbCBoYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuaGFzRml4ZWRJbWFnZSgpOyB9CisKICAg
ICBib29sIGhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0gICAgCisKICAgICBi
b29sIGhhc0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBhcHBlYXJhbmNlKCkgIT0gTm9Db250
cm9sUGFydDsgfQogCi0gICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIENvbG9yIGNvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKLSAgICAgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBoYXNCYWNrZ3JvdW5kSW1hZ2UoKTsKLSAgICB9
CisgICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3Q7CiAgICAgCiAgICAgTGF5b3V0Qm94RXh0
ZW50IGltYWdlT3V0c2V0cyhjb25zdCBOaW5lUGllY2VJbWFnZSYpIGNvbnN0OwotICAgIGJvb2wg
aGFzQm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBib3Jk
ZXJJbWFnZSgpLmhhc0ltYWdlKCkgJiYgIWJvcmRlckltYWdlKCkub3V0c2V0KCkuaXNaZXJvKCk7
Ci0gICAgfQotICAgIExheW91dEJveEV4dGVudCBib3JkZXJJbWFnZU91dHNldHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgpKTsKLSAgICB9
CisgICAgYm9vbCBoYXNCb3JkZXJJbWFnZU91dHNldHMoKSBjb25zdCB7IHJldHVybiBib3JkZXJJ
bWFnZSgpLmhhc0ltYWdlKCkgJiYgIWJvcmRlckltYWdlKCkub3V0c2V0KCkuaXNaZXJvKCk7IH0K
KyAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4g
aW1hZ2VPdXRzZXRzKGJvcmRlckltYWdlKCkpOyB9CiAKLSAgICBMYXlvdXRCb3hFeHRlbnQgbWFz
a0JveEltYWdlT3V0c2V0cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaW1hZ2VPdXRz
ZXRzKG1hc2tCb3hJbWFnZSgpKTsKLSAgICB9CisgICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tCb3hJ
bWFnZU91dHNldHMoKSBjb25zdCB7IHJldHVybiBpbWFnZU91dHNldHMobWFza0JveEltYWdlKCkp
OyB9CiAKICAgICBib29sIGhhc0ZpbHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0
ZXIoKSAmJiBmaWx0ZXIoKS5oYXNPdXRzZXRzKCk7IH0KICAgICBGaWx0ZXJPdXRzZXRzIGZpbHRl
ck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNldHMo
KSA6IEZpbHRlck91dHNldHMoKTsgfQogCi0gICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4oaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcp
OyB9Ci0gICAgdm9pZCBzZXRSVExPcmRlcmluZyhPcmRlciBvKSB7IGluaGVyaXRlZF9mbGFncy5t
X3J0bE9yZGVyaW5nID0gbzsgfQorICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcpOyB9Cisg
ICAgdm9pZCBzZXRSVExPcmRlcmluZyhPcmRlciBvcmRlcmluZykgeyBtX2luaGVyaXRlZEZsYWdz
LnJ0bE9yZGVyaW5nID0gb3JkZXJpbmc7IH0KIAogICAgIGJvb2wgaXNTdHlsZUF2YWlsYWJsZSgp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdDsKLSAg
ICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pOworICAgIGJvb2wgaGFzUHNldWRvU3R5
bGUoUHNldWRvSWQpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQp
OwogICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0KTsKICAgICBib29sIGhh
c1VuaXF1ZVBzZXVkb1N0eWxlKCkgY29uc3Q7CiAKICAgICAvLyBhdHRyaWJ1dGUgZ2V0dGVyIG1l
dGhvZHMKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpOyB9Ci0gICAgRURpc3BsYXkgb3JpZ2luYWxEaXNw
bGF5KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgp
OyB9CisgICAgRURpc3BsYXkgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnJpZ2h0KCk7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQudG9w
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5vZmZzZXQuYm90dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
cmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LnJpZ2h0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5v
ZmZzZXQudG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBm
b3IgcG9zaXRpb25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5n
IG1vZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuZW5kKHdyaXRp
bmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmFm
dGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5vZmZzZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5iZWZv
cmUod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2RlKCkp
OyB9CiAKLSAgICAvLyBXaGV0aGVyIG9yIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCByZXF1aXJl
cyBub3JtYWwgZmxvdyB4L3kgdG8gYmUgY29tcHV0ZWQKLSAgICAvLyB0byBkZXRlcm1pbmUgaXRz
IHBvc2l0aW9uLgotICAgIGJvb2wgaGFzQXV0b0xlZnRBbmRSaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGxlZnQoKS5pc0F1dG8oKSAmJiByaWdodCgpLmlzQXV0bygpOyB9Ci0gICAgYm9vbCBoYXNBdXRv
VG9wQW5kQm90dG9tKCkgY29uc3QgeyByZXR1cm4gdG9wKCkuaXNBdXRvKCkgJiYgYm90dG9tKCku
aXNBdXRvKCk7IH0KKyAgICAvLyBXaGV0aGVyIG9yIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCBy
ZXF1aXJlcyBub3JtYWwgZmxvdyB4L3kgdG8gYmUgY29tcHV0ZWQgIHRvIGRldGVybWluZSBpdHMg
cG9zaXRpb24uCiAgICAgYm9vbCBoYXNTdGF0aWNJbmxpbmVQb3NpdGlvbihib29sIGhvcml6b250
YWwpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWwgPyBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgOiBo
YXNBdXRvVG9wQW5kQm90dG9tKCk7IH0KICAgICBib29sIGhhc1N0YXRpY0Jsb2NrUG9zaXRpb24o
Ym9vbCBob3Jpem9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsID8gaGFzQXV0b1RvcEFu
ZEJvdHRvbSgpIDogaGFzQXV0b0xlZnRBbmRSaWdodCgpOyB9CiAKLSAgICBFUG9zaXRpb24gcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKTsgfQor
ICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxh
Z3MucG9zaXRpb24oKTsgfQogICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBwb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBG
aXhlZFBvc2l0aW9uOyB9CiAgICAgYm9vbCBoYXNJbkZsb3dQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IFN0aWNr
eVBvc2l0aW9uOyB9CiAgICAgYm9vbCBoYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9
PSBTdGlja3lQb3NpdGlvbjsgfQotICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJu
IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpOyB9Ci0KLSAgICBjb25zdCBMZW5ndGgmIHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPndpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oZWlnaHQoKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgbWluV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+bWluV2lkdGgoKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgbWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+bWF4V2lkdGgo
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gt
Pm1pbkhlaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXhIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2JveC0+bWF4SGVpZ2h0KCk7IH0KKyAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCk7IH0KKworICAgIGNvbnN0IExl
bmd0aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPndpZHRoKCk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+aGVpZ2h0KCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIG1pbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRh
LT5taW5XaWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm94RGF0YS0+bWF4V2lkdGgoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWluSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5taW5IZWlnaHQoKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgbWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5tYXhIZWlnaHQoKTsg
fQogICAgIAogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQogICAgIGNv
bnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6IHdpZHRoKCk7IH0KQEAgLTY0NCw0MiArMjc0LDQyIEBA
IHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxNaW5IZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWluSGVpZ2h0KCkgOiBtaW5XaWR0aCgp
OyB9CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heEhlaWdodCgpIDogbWF4V2lkdGgoKTsgfQog
Ci0gICAgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlcjsgfQotICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCk7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYg
Ym9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCk7IH0K
LSAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci50b3AoKTsgfQotICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJCb3R0b20o
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpOyB9CisgICAgY29uc3Qg
Qm9yZGVyRGF0YSYgYm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRl
cjsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYg
Ym9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0
KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3AoKTsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBi
b3JkZXJCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRv
bSgpOyB9CiAKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQmVmb3JlKCkgY29uc3Q7CiAg
ICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFmdGVyKCkgY29uc3Q7CiAgICAgY29uc3QgQm9y
ZGVyVmFsdWUmIGJvcmRlclN0YXJ0KCkgY29uc3Q7CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJv
cmRlckVuZCgpIGNvbnN0OwogCi0gICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGJvcmRlckltYWdl
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpOyB9Ci0gICAgU3R5bGVJ
bWFnZSogYm9yZGVySW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVy
LmltYWdlKCkuaW1hZ2UoKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VTbGlj
ZXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuaW1hZ2VTbGljZXMo
KTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKS5ib3JkZXJTbGljZXMoKTsgfQotICAgIGNvbnN0
IExlbmd0aEJveCYgYm9yZGVySW1hZ2VPdXRzZXQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmltYWdlKCkub3V0c2V0KCk7IH0KLQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRl
clRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQo
KTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
U2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tTGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0
KCk7IH0KLSAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KLQotICAgIGZsb2F0IGJvcmRlckxlZnRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0K
LSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyTGVmdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5sZWZ0KCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVyTGVmdElzVHJhbnNw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5pc1RyYW5zcGFy
ZW50KCk7IH0KLSAgICBmbG9hdCBib3JkZXJSaWdodFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5ib3JkZXJSaWdodFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9y
ZGVyUmlnaHRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5z
dHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJSaWdodElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgZmxv
YXQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRl
clRvcFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyVG9wU3R5bGUoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJvcmRl
clRvcElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgp
LmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIGZsb2F0IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJCb3R0b21XaWR0aCgpOyB9Ci0gICAgRUJv
cmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5ib3R0b20oKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5zcGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5pc1RyYW5zcGFy
ZW50KCk7IH0KLSAgICBGbG9hdEJveEV4dGVudCBib3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyV2lkdGgoKTsgfQorICAgIGNvbnN0IE5pbmVQaWVjZUlt
YWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIu
aW1hZ2UoKTsgfQorICAgIFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmltYWdlKCk7IH0KKyAgICBjb25z
dCBMZW5ndGhCb3gmIGJvcmRlckltYWdlU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPmJvcmRlci5pbWFnZSgpLmltYWdlU2xpY2VzKCk7IH0KKyAgICBjb25zdCBMZW5ndGhC
b3gmIGJvcmRlckltYWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmltYWdlKCkuYm9yZGVyU2xpY2VzKCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRl
ckltYWdlT3V0c2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFn
ZSgpLm91dHNldCgpOyB9CisKKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BMZWZ0UmFk
aXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3BMZWZ0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wUmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0
aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRl
ci5ib3R0b21SaWdodCgpOyB9CisgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CisKKyAgICBm
bG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7
IH0KKyAgICBib29sIGJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0KCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgZmxvYXQg
Ym9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIu
Ym9yZGVyUmlnaHRXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUoKTsg
fQorICAgIGJvb2wgYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPmJvcmRlci5yaWdodCgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZsb2F0
IGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5i
b3JkZXJUb3BXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3AoKS5zdHlsZSgpOyB9CisgICAg
Ym9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBmbG9hdCBib3JkZXJCb3R0
b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVyQm90
dG9tV2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHlsZSBib3JkZXJCb3R0b21TdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQorICAg
IGJvb2wgYm9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5ib3JkZXIuYm90dG9tKCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgRmxvYXRCb3hF
eHRlbnQgYm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVy
LmJvcmRlcldpZHRoKCk7IH0KIAogICAgIGZsb2F0IGJvcmRlckJlZm9yZVdpZHRoKCkgY29uc3Q7
CiAgICAgZmxvYXQgYm9yZGVyQWZ0ZXJXaWR0aCgpIGNvbnN0OwpAQCAtNjg5LDI4ICszMTksMjgg
QEAgcHVibGljOgogICAgIGZsb2F0IG91dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gc3RkOjpt
YXg8ZmxvYXQ+KDAsIG91dGxpbmVXaWR0aCgpICsgb3V0bGluZU9mZnNldCgpKTsgfQogICAgIGZs
b2F0IG91dGxpbmVXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3V0bGluZSgpIGNvbnN0IHsg
cmV0dXJuIG91dGxpbmVTdHlsZSgpID4gQkhJRERFTiAmJiBvdXRsaW5lV2lkdGgoKSA+IDA7IH0K
LSAgICBFQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kLT5vdXRsaW5lKCkuc3R5bGUoKTsgfQotICAgIE91dGxpbmVJc0F1dG8gb3V0bGluZVN0eWxl
SXNBdXRvKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9iYWNr
Z3JvdW5kLT5vdXRsaW5lKCkuaXNBdXRvKCkpOyB9CisgICAgRUJvcmRlclN0eWxlIG91dGxpbmVT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKTsg
fQorICAgIE91dGxpbmVJc0F1dG8gb3V0bGluZVN0eWxlSXNBdXRvKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5pc0F1
dG8oKSk7IH0KICAgICBib29sIGhhc091dGxpbmVJblZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gaGFzT3V0bGluZSgpICYmIG91dGxpbmVTaXplKCkgPiAwOyB9CiAgICAgCi0gICAgRU92
ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5vdmVy
Zmxvd1goKTsgfQotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBub25p
bmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCk7IH0KKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkg
Y29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1goKTsgfQorICAgIEVP
dmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLm92
ZXJmbG93WSgpOyB9CiAKLSAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+KGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSk7
IH0KLSAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2FsQWxpZ24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYgdmVy
dGljYWxBbGlnbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT52ZXJ0aWNhbEFsaWduKCk7
IH0KKyAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVZpc2liaWxpdHk+KG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSk7IH0KKyAgICBFVmVy
dGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRG
bGFncy52ZXJ0aWNhbEFsaWduKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25M
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKTsgfQogCi0g
ICAgY29uc3QgTGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5s
ZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZp
c3VhbC0+Y2xpcC5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkgY29uc3Qg
eyByZXR1cm4gdmlzdWFsLT5jbGlwLnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwLmJvdHRvbSgpOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoQm94JiBjbGlwKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwOyB9Ci0gICAgYm9v
bCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5oYXNDbGlwOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5sZWZ0
KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
dWFsRGF0YS0+Y2xpcC5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkgY29u
c3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwLnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBjbGlwQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwLmJvdHRvbSgp
OyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBjbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxE
YXRhLT5jbGlwOyB9CisgICAgYm9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxE
YXRhLT5oYXNDbGlwOyB9CiAKLSAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7
IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKTsgfQorICAgIEVVbmljb2Rl
QmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MudW5p
Y29kZUJpZGkoKTsgfQogCi0gICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmNsZWFyKCk7IH0KLSAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBj
b25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKTsgfQorICAgIEVD
bGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKTsg
fQorICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Q7CkBAIC03MTgsMjc3ICszNDgsMjEy
IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzcGVjaWZpZWRGb250U2l6ZSgpIGNvbnN0OwogICAgIGZs
b2F0IGNvbXB1dGVkRm9udFNpemUoKSBjb25zdDsKICAgICBpbnQgZm9udFNpemUoKSBjb25zdDsK
KyAgICBzdGQ6OnBhaXI8Rm9udE9yaWVudGF0aW9uLCBOb25DSktHbHlwaE9yaWVudGF0aW9uPiBm
b250QW5kR2x5cGhPcmllbnRhdGlvbigpOworCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykK
ICAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgZm9udFZhcmlhdGlvblNldHRpbmdzKCkgY29uc3Qg
eyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkudmFyaWF0aW9uU2V0dGluZ3MoKTsgfQogI2VuZGlm
Ci0gICAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlvbiwgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4g
Zm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsKIAotICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KKyAgICBjb25z
dCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbmRlbnQ7IH0KKyAgICBFVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVUZXh0QWxpZ24+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQorICAg
IEVUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFVGV4dFRyYW5zZm9ybT4obV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQorICAg
IFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRp
b25zKTsgfQorICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRp
b24pOyB9CisgICAgVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25TdHlsZT4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSk7IH0KKyAgICBUZXh0RGVjb3JhdGlvblNr
aXAgdGV4dERlY29yYXRpb25Ta2lwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERl
Y29yYXRpb25Ta2lwPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXApOyB9
CisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4obV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQorCiAjaWYgRU5BQkxFKENTUzNfVEVY
VCkKLSAgICBUZXh0SW5kZW50TGluZSB0ZXh0SW5kZW50TGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFRleHRJbmRlbnRMaW5lPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50
TGluZSk7IH0KLSAgICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRUeXBlPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0
SW5kZW50VHlwZSk7IH0KKyAgICBUZXh0SW5kZW50TGluZSB0ZXh0SW5kZW50TGluZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRMaW5lPihtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0SW5kZW50TGluZSk7IH0KKyAgICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRUeXBlPihtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0SW5kZW50VHlwZSk7IH0KKyAgICBUZXh0QWxpZ25MYXN0IHRleHRBbGlnbkxh
c3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25MYXN0PihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0QWxpZ25MYXN0KTsgfQorICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEp1c3RpZnk+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRKdXN0aWZ5KTsgfQogI2VuZGlmCi0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihpbmhlcml0ZWRfZmxhZ3Mu
X3RleHRfYWxpZ24pOyB9Ci0gICAgRVRleHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0VHJhbnNmb3JtPihpbmhlcml0ZWRfZmxhZ3MuX3Rl
eHRfdHJhbnNmb3JtKTsgfQotICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KGluaGVyaXRl
ZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyk7IH0KLSAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVj
b3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPih2aXN1
YWwtPnRleHREZWNvcmF0aW9uKTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgVGV4dEFs
aWduTGFzdCB0ZXh0QWxpZ25MYXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFs
aWduTGFzdD4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdCk7IH0KLSAgICBUZXh0
SnVzdGlmeSB0ZXh0SnVzdGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRKdXN0
aWZ5PihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SnVzdGlmeSk7IH0KLSNlbmRpZiAvLyBDU1Mz
X1RFWFQKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQotICAgIFRleHREZWNvcmF0aW9uU2tp
cCB0ZXh0RGVjb3JhdGlvblNraXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVj
b3JhdGlvblNraXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU2tpcCk7IH0K
LSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdGV4dFVuZGVybGluZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihyYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHdv
cmRTcGFjaW5nKCkgY29uc3Q7CiAgICAgZmxvYXQgbGV0dGVyU3BhY2luZygpIGNvbnN0OwogCi0g
ICAgZmxvYXQgem9vbSgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+bV96b29tOyB9Ci0gICAgZmxv
YXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2Vm
ZmVjdGl2ZVpvb207IH0KKyAgICBmbG9hdCB6b29tKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxE
YXRhLT56b29tOyB9CisgICAgZmxvYXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZVpvb207IH0KICAgICAKLSAgICBUZXh0Wm9vbSB0
ZXh0Wm9vbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRab29tPihyYXJlSW5oZXJp
dGVkRGF0YS0+bV90ZXh0Wm9vbSk7IH0KKyAgICBUZXh0Wm9vbSB0ZXh0Wm9vbSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRab29tPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9v
bSk7IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24pOyB9Cisg
ICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbik7IH0KICAgICBib29sIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7
IH0KLSAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpOyB9CisgICAgYm9v
bCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0
ZWRGbGFncy5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCk7IH0KIAogICAgIGNvbnN0IExlbmd0
aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIExlbmd0
aCBsaW5lSGVpZ2h0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGVuZ3RoJiBs
aW5lSGVpZ2h0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbXB1dGVkTGluZUhl
aWdodCgpIGNvbnN0OwogCi0gICAgRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNlPihpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNl
KTsgfQotICAgIHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsKLSAg
ICAgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGljYWxseSB3cmFwLgotICAgICAg
ICByZXR1cm4gd3MgIT0gTk9XUkFQICYmIHdzICE9IFBSRTsKLSAgICB9CisgICAgRVdoaXRlU3Bh
Y2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNlPiht
X2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UpOyB9CisgICAgc3RhdGljIGJvb2wgYXV0b1dyYXAo
RVdoaXRlU3BhY2UpOworICAgIGJvb2wgYXV0b1dyYXAoKSBjb25zdCB7IHJldHVybiBhdXRvV3Jh
cCh3aGl0ZVNwYWNlKCkpOyB9CisgICAgc3RhdGljIGJvb2wgcHJlc2VydmVOZXdsaW5lKEVXaGl0
ZVNwYWNlKTsKKyAgICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIHByZXNl
cnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOyB9CisgICAgc3RhdGljIGJvb2wgY29sbGFwc2VXaGl0
ZVNwYWNlKEVXaGl0ZVNwYWNlKTsKKyAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh3aGl0ZVNwYWNlKCkpOyB9CisgICAgYm9vbCBp
c0NvbGxhcHNpYmxlV2hpdGVTcGFjZShVQ2hhcikgY29uc3Q7CisgICAgYm9vbCBicmVha09ubHlB
ZnRlcldoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBib29sIGJyZWFrV29yZHMoKSBjb25zdDsKKwor
ICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQucmVwZWF0WCgp
KTsgfQorICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQucmVw
ZWF0WSgpKTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGJhY2tncm91bmRDb21wb3NpdGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4obV9iYWNrZ3JvdW5k
RGF0YS0+YmFja2dyb3VuZC5jb21wb3NpdGUoKSk7IH0KKyAgICBFRmlsbEF0dGFjaG1lbnQgYmFj
a2dyb3VuZEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEF0dGFj
aG1lbnQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuYXR0YWNobWVudCgpKTsgfQorICAg
IEVGaWxsQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZp
bGxCb3g+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuY2xpcCgpKTsgfQorICAgIEVGaWxs
Qm94IGJhY2tncm91bmRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJv
eD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5vcmlnaW4oKSk7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIGJhY2tncm91bmRYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRE
YXRhLT5iYWNrZ3JvdW5kLnhQb3NpdGlvbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3Jv
dW5kWVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3Vu
ZC55UG9zaXRpb24oKTsgfQorICAgIEVGaWxsU2l6ZVR5cGUgYmFja2dyb3VuZFNpemVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5zaXplVHlwZSgpOyB9
CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYmFja2dyb3VuZFNpemVMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnNpemVMZW5ndGgoKTsgfQorICAgIEZp
bGxMYXllciYgZW5zdXJlQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuIG1fYmFja2dyb3VuZERh
dGEuYWNjZXNzKCkuYmFja2dyb3VuZDsgfQorICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3Vu
ZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQ7IH0K
KworICAgIFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hc2suaW1hZ2UoKTsgfQorICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRY
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hc2sucmVwZWF0WCgpKTsgfQorICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRZ
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hc2sucmVwZWF0WSgpKTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1hc2tD
b21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4o
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5jb21wb3NpdGUoKSk7IH0KKyAgICBFRmlsbEJv
eCBtYXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5tYXNrLmNsaXAoKSk7IH0KKyAgICBFRmlsbEJveCBtYXNrT3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hc2sub3JpZ2luKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay54UG9zaXRpb24o
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFza1lQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2sueVBvc2l0aW9uKCk7IH0KKyAgICBFRmlsbFNpemVU
eXBlIG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hc2suc2l6ZVR5cGUoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5zaXplTGVuZ3Ro
KCk7IH0KKyAgICBGaWxsTGF5ZXImIGVuc3VyZU1hc2tMYXllcnMoKSB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2s7IH0KKyAgICBjb25zdCBGaWxsTGF5ZXImIG1h
c2tMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrOyB9
CisgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tCb3hJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZTsgfQorICAgIFN0eWxlSW1hZ2Uq
IG1hc2tCb3hJbWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hc2tCb3hJbWFnZS5pbWFnZSgpOyB9CisKKyAgICBFQm9yZGVyQ29sbGFwc2UgYm9yZGVy
Q29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyQ29sbGFwc2U+KG1f
aW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UpOyB9CisgICAgZmxvYXQgaG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcoKSBjb25zdDsKKyAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBj
b25zdDsKKyAgICBFRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFRW1wdHlDZWxsPihtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMpOyB9CisgICAgRUNh
cHRpb25TaWRlIGNhcHRpb25TaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNhcHRp
b25TaWRlPihtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlKTsgfQogCi0gICAgYm9vbCBhdXRv
V3JhcCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXV0b1dyYXAod2hpdGVTcGFjZSgp
KTsKLSAgICB9CisgICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVR5cGUpOyB9CisgICAgU3R5bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBjb25zdDsKKyAgICBF
TGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFTGlzdFN0eWxlUG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9z
aXRpb24pOyB9CisKKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5tYXJnaW4udG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdp
bkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYm90dG9tKCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+bWFyZ2luLmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnJpZ2h0KCk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5tYXJnaW4uYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJn
aW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYWZ0ZXIod3Jp
dGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rp
b24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5tYXJnaW4uZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3Ro
ZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5zdGFydChvdGhl
clN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxl
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmVuZChvdGhlclN0eWxlLT53
cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJlZm9yZShvdGhlclN0eWxlLT53cml0
aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1h
cmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQorCisgICAgY29uc3QgTGVu
Z3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRp
bmc7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3AoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+cGFkZGluZy50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0Jv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmJvdHRvbSgpOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5wYWRkaW5nLmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1JpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcucmlnaHQoKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgcGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5wYWRkaW5nLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
cGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuYWZ0
ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnN0YXJ0KHdyaXRpbmdNb2RlKCks
IGRpcmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rp
b24oKSk7IH0KKworICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUN1cnNvcj4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3IpOyB9CiAKLSAgICBzdGF0aWMgYm9v
bCBwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd3MpCi0gICAgewotICAgICAgICAvLyBOb3Jt
YWwgYW5kIG5vd3JhcCBkbyBub3QgcHJlc2VydmUgbmV3bGluZXMuCi0gICAgICAgIHJldHVybiB3
cyAhPSBOT1JNQUwgJiYgd3MgIT0gTk9XUkFQOwotICAgIH0KKyNpZiBFTkFCTEUoQ1VSU09SX1ZJ
U0lCSUxJVFkpCisgICAgQ3Vyc29yVmlzaWJpbGl0eSBjdXJzb3JWaXNpYmlsaXR5KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy5j
dXJzb3JWaXNpYmlsaXR5KTsgfQorI2VuZGlmCiAKLSAgICBib29sIHByZXNlcnZlTmV3bGluZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlc2VydmVOZXdsaW5lKHdoaXRlU3BhY2Uo
KSk7Ci0gICAgfQorICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBj
b2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2Ugd3MpCi0gICAgewotICAgICAgICAvLyBQcmUg
YW5kIHByZXdyYXAgZG8gbm90IGNvbGxhcHNlIHdoaXRlc3BhY2UuCi0gICAgICAgIHJldHVybiB3
cyAhPSBQUkUgJiYgd3MgIT0gUFJFX1dSQVA7Ci0gICAgfQorICAgIEVJbnNpZGVMaW5rIGluc2lk
ZUxpbmsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW5zaWRlTGluaz4obV9pbmhlcml0
ZWRGbGFncy5pbnNpZGVMaW5rKTsgfQorICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4g
bV9ub25Jbmhlcml0ZWRGbGFncy5pc0xpbmsoKTsgfQogCi0gICAgYm9vbCBjb2xsYXBzZVdoaXRl
U3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh3
aGl0ZVNwYWNlKCkpOwotICAgIH0KKyAgICBib29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBjb25z
dCB7IHJldHVybiBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b247IH0KIAotICAg
IGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgYykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoYykgewotICAgICAgICAgICAgY2FzZSAnICc6Ci0gICAgICAgICAgICBjYXNl
ICdcdCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSgpOwotICAg
ICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIHJldHVybiAhcHJlc2VydmVOZXds
aW5lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBzaG9y
dCB3aWRvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT53aWRvd3M7IH0K
KyAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+
b3JwaGFuczsgfQorICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPmhhc0F1dG9XaWRvd3M7IH0KKyAgICBib29sIGhhc0F1dG9PcnBoYW5z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFzQXV0b09ycGhhbnM7IH0K
IAotICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB3aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAgfHwgbGluZUJyZWFrKCkgPT0gTGlu
ZUJyZWFrQWZ0ZXJXaGl0ZVNwYWNlOwotICAgIH0KKyAgICBCcmVha0luc2lkZSBicmVha0luc2lk
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5icmVha0luc2lkZSk7IH0KKyAgICBCcmVha0JldHdlZW4gYnJlYWtCZWZvcmUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJyZWFrQmVmb3JlKTsgfQorICAgIEJyZWFrQmV0d2VlbiBicmVha0FmdGVyKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5icmVha0FmdGVyKTsgfQogCi0gICAgYm9vbCBicmVha1dvcmRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWsoKSA9PSBCcmVha1dvcmRCcmVhayB8fCBvdmVy
Zmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93V3JhcDsKLSAgICB9Ci0KLSAgICBFRmlsbFJlcGVh
dCBiYWNrZ3JvdW5kUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVw
ZWF0PihtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5yZXBlYXRYKCkpOyB9Ci0gICAgRUZpbGxS
ZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkucmVwZWF0WSgpKTsgfQotICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGJhY2tncm91bmRDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkuY29t
cG9zaXRlKCkpOyB9Ci0gICAgRUZpbGxBdHRhY2htZW50IGJhY2tncm91bmRBdHRhY2htZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxBdHRhY2htZW50PihtX2JhY2tncm91bmQt
PmJhY2tncm91bmQoKS5hdHRhY2htZW50KCkpOyB9Ci0gICAgRUZpbGxCb3ggYmFja2dyb3VuZENs
aXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9iYWNrZ3JvdW5kLT5i
YWNrZ3JvdW5kKCkuY2xpcCgpKTsgfQotICAgIEVGaWxsQm94IGJhY2tncm91bmRPcmlnaW4oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3Jv
dW5kKCkub3JpZ2luKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueFBvc2l0aW9uKCk7
IH0KLSAgICBjb25zdCBMZW5ndGgmIGJhY2tncm91bmRZUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS55UG9zaXRpb24oKTsgfQotICAgIEVGaWxsU2l6
ZVR5cGUgYmFja2dyb3VuZFNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5i
YWNrZ3JvdW5kKCkuc2l6ZVR5cGUoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJhY2tncm91
bmRTaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCku
c2l6ZUxlbmd0aCgpOyB9Ci0gICAgRmlsbExheWVyJiBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kLmFjY2VzcygpLT5tX2JhY2tncm91bmQ7IH0KLSAgICBjb25z
dCBGaWxsTGF5ZXIqIGJhY2tncm91bmRMYXllcnMoKSBjb25zdCB7IHJldHVybiAmKG1fYmFja2dy
b3VuZC0+YmFja2dyb3VuZCgpKTsgfQotCi0gICAgU3R5bGVJbWFnZSogbWFza0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5pbWFnZSgpOyB9Ci0gICAg
RUZpbGxSZXBlYXQgbWFza1JlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bFJlcGVhdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5yZXBlYXRYKCkpOyB9Ci0gICAg
RUZpbGxSZXBlYXQgbWFza1JlcGVhdFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bFJlcGVhdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5yZXBlYXRZKCkpOyB9Ci0gICAg
Q29tcG9zaXRlT3BlcmF0b3IgbWFza0NvbXBvc2l0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbXBvc2l0ZU9wZXJhdG9yPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmNvbXBv
c2l0ZSgpKTsgfQotICAgIEVGaWxsQm94IG1hc2tDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suY2xpcCgpKTsgfQot
ICAgIEVGaWxsQm94IG1hc2tPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bEJveD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5vcmlnaW4oKSk7IH0KLSAgICBjb25z
dCBMZW5ndGgmIG1hc2tYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9tYXNrLnhQb3NpdGlvbigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXNrWVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay55UG9zaXRp
b24oKTsgfQotICAgIEVGaWxsU2l6ZVR5cGUgbWFza1NpemVUeXBlKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5zaXplVHlwZSgpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoU2l6ZSYgbWFza1NpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9tYXNrLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxMYXllciYgZW5zdXJlTWFza0xh
eWVycygpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2s7IH0K
LSAgICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllcnMoKSBjb25zdCB7IHJldHVybiAmKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX21hc2spOyB9Ci0gICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1h
c2tCb3hJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tC
b3hJbWFnZTsgfQotICAgIFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZVNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5pbWFnZSgpOyB9Ci0g
Ci0gICAgRUJvcmRlckNvbGxhcHNlIGJvcmRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUJvcmRlckNvbGxhcHNlPihpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBz
ZSk7IH0KLSAgICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0OwotICAgIGZs
b2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0OwotICAgIEVFbXB0eUNlbGwgZW1wdHlD
ZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KGluaGVyaXRlZF9m
bGFncy5fZW1wdHlfY2VsbHMpOyB9Ci0gICAgRUNhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNhcHRpb25TaWRlPihpbmhlcml0ZWRfZmxhZ3MuX2Nh
cHRpb25fc2lkZSk7IH0KLQotICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4oaW5oZXJpdGVkX2ZsYWdzLl9s
aXN0X3N0eWxlX3R5cGUpOyB9Ci0gICAgU3R5bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBjb25z
dDsKLSAgICBFTGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlUG9zaXRpb24+KGluaGVyaXRlZF9mbGFncy5fbGlz
dF9zdHlsZV9wb3NpdGlvbik7IH0KLQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luVG9wKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5ib3R0b20oKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5tYXJnaW4ubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5SaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4ucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUod3Jp
dGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbWFyZ2luU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnN0
YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFy
Z2luRW5kKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5lbmQod3JpdGluZ01vZGUo
KSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFydFVzaW5nKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFy
Z2luLnN0YXJ0KG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlv
bigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVyU3R5
bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uZW5kKG90aGVy
U3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlvbigpKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5
bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYmVmb3JlKG90aGVyU3R5bGUtPndy
aXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5BZnRlclVzaW5nKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2lu
LmFmdGVyKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpOyB9Ci0KLSAgICBjb25zdCBMZW5ndGhC
b3gmIHBhZGRpbmdCb3goKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZzsgfQotICAg
IGNvbnN0IExlbmd0aCYgcGFkZGluZ1RvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRk
aW5nLnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYm90dG9tKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBh
ZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcubGVmdCgpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
cGFkZGluZy5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
cGFkZGluZy5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGlu
Z1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuc3RhcnQod3JpdGluZ01v
ZGUoKSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nRW5kKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlv
bigpKTsgfQotCi0gICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQ3Vyc29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KLSNpZiBFTkFCTEUo
Q1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgQ3Vyc29yVmlzaWJpbGl0eSBjdXJzb3JWaXNpYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlzaWJpbGl0eT4oaW5oZXJpdGVk
X2ZsYWdzLm1fY3Vyc29yVmlzaWJpbGl0eSk7IH0KLSNlbmRpZgotCi0gICAgQ3Vyc29yTGlzdCog
Y3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhLmdl
dCgpOyB9Ci0KLSAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUluc2lkZUxpbms+KGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayk7IH0KLSAg
ICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0xpbmso
KTsgfQotCi0gICAgYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uOyB9Ci0KLSAgICBzaG9ydCB3aWRvd3Mo
KSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+d2lkb3dzOyB9Ci0gICAgc2hvcnQg
b3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5vcnBoYW5zOyB9Ci0g
ICAgYm9vbCBoYXNBdXRvV2lkb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
Pm1faGFzQXV0b1dpZG93czsgfQotICAgIGJvb2wgaGFzQXV0b09ycGhhbnMoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9oYXNBdXRvT3JwaGFuczsgfQotCi0gICAgLy8gQ1NT
MyBHZXR0ZXIgTWV0aG9kcwotICAgIEJyZWFrSW5zaWRlIGJyZWFrSW5zaWRlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtJbnNpZGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Jy
ZWFrSW5zaWRlKTsgfQotICAgIEJyZWFrQmV0d2VlbiBicmVha0JlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJl
YWtCZWZvcmUpOyB9Ci0gICAgQnJlYWtCZXR3ZWVuIGJyZWFrQWZ0ZXIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFr
QWZ0ZXIpOyB9Ci0gICAgCi0gICAgSGFuZ2luZ1B1bmN0dWF0aW9uIGhhbmdpbmdQdW5jdHVhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmdpbmdQdW5jdHVhdGlvbj4ocmFyZUlu
aGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uKTsgfQorICAgIEhhbmdpbmdQdW5jdHVh
dGlvbiBoYW5naW5nUHVuY3R1YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5n
aW5nUHVuY3R1YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlvbik7
IH0KIAogICAgIGZsb2F0IG91dGxpbmVPZmZzZXQoKSBjb25zdDsKLSAgICBjb25zdCBTaGFkb3dE
YXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRT
aGFkb3cuZ2V0KCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dFeHRlbnQoTGF5b3V0VW5pdCYg
dG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBs
ZWZ0KSBjb25zdCB7IGdldFNoYWRvd0V4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KExh
eW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0hvcml6
b250YWxFeHRlbnQodGV4dFNoYWRvdygpLCBsZWZ0LCByaWdodCk7IH0KLSAgICB2b2lkIGdldFRl
eHRTaGFkb3dWZXJ0aWNhbEV4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIGJvdHRv
bSkgY29uc3QgeyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwgYm90
dG9tKTsgfQorICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3coKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LmdldCgpOyB9CiAgICAgdm9pZCBnZXRU
ZXh0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0LCBM
YXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93SW5saW5lRGlyZWN0aW9u
RXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7IH0KICAgICB2
b2lkIGdldFRleHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Jsb2NrRGly
ZWN0aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7IH0K
IAotICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3BhY2l0eTsgfQotICAgIENvbnRyb2xQYXJ0
IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFydD4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSk7IH0KLSAgICBBc3BlY3RSYXRpb1R5cGUg
YXNwZWN0UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXNwZWN0UmF0aW9U
eXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb1R5cGUpOyB9Ci0gICAgZmxv
YXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBhc3BlY3RSYXRpb051bWVyYXRvcigpIC8g
YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5vbWlu
YXRvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlv
RGVub21pbmF0b3I7IH0KLSAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVyYXRvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yOyB9Ci0g
ICAgRUJveEFsaWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVC
b3hBbGlnbm1lbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eC0+YWxpZ24pOyB9Ci0gICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQm94RGlyZWN0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJl
Y3Rpb24pOyB9Ci0gICAgZmxvYXQgYm94RmxleCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleDsgfQotICAgIHVuc2lnbmVk
IGludCBib3hGbGV4R3JvdXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXhfZ3JvdXA7IH0KLSAgICBFQm94TGluZXMgYm94
TGluZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94TGluZXM+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+bGluZXMpOyB9Ci0gICAgdW5zaWdu
ZWQgaW50IGJveE9yZGluYWxHcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JkaW5hbF9ncm91cDsgfQotICAgIEVCb3hP
cmllbnQgYm94T3JpZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveE9yaWVudD4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmllbnQpOyB9
Ci0gICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hQ
YWNrPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPnBhY2sp
OyB9Ci0KLSAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9vcmRlcjsgfQotICAgIGZsb2F0IGZsZXhHcm93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleEdyb3c7IH0KLSAgICBmbG9hdCBm
bGV4U2hyaW5rKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGli
bGVCb3gtPm1fZmxleFNocmluazsgfQotICAgIGNvbnN0IExlbmd0aCYgZmxleEJhc2lzKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleEJh
c2lzOyB9Ci0gICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgYWxpZ25Db250ZW50
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50OyB9
Ci0gICAgQ29udGVudFBvc2l0aW9uIGFsaWduQ29udGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50LnBvc2l0aW9uKCk7IH0KLSAg
ICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBhbGlnbkNvbnRlbnREaXN0cmlidXRpb24oKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQuZGlzdHJpYnV0
aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnbkNvbnRlbnRPdmVyZmxvd0FsaWdu
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVu
dC5vdmVyZmxvdygpOyB9Ci0gICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25J
dGVtcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXM7
IH0KLSAgICBJdGVtUG9zaXRpb24gYWxpZ25JdGVtc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5wb3NpdGlvbigpOyB9Ci0gICAgT3Zl
cmZsb3dBbGlnbm1lbnQgYWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5vdmVyZmxvdygpOyB9Ci0gICAg
Y29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxmKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGFs
aWduU2VsZlBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YWxpZ25TZWxmLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnblNlbGZP
dmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FsaWduU2VsZi5vdmVyZmxvdygpOyB9Ci0gICAgRUZsZXhEaXJlY3Rpb24gZmxleERpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4RGlyZWN0aW9uPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4RGlyZWN0aW9uKTsgfQorICAgIGZsb2F0
IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTdHJva2VXaWR0aDsgfQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CisgICAgQ29udHJvbFBhcnQgYXBwZWFyYW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hcHBlYXJhbmNlKTsgfQorICAgIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRp
b1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvVHlwZSk7IH0KKyAgICBmbG9hdCBhc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
YXNwZWN0UmF0aW9EZW5vbWluYXRvcjsgfQorICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXNwZWN0UmF0aW9OdW1l
cmF0b3I7IH0KKyAgICBFQm94QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUJveEFsaWdubWVudD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRl
ZEZsZXhpYmxlQm94LT5hbGlnbik7IH0KKyAgICBFQm94RGlyZWN0aW9uIGJveERpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hEaXJlY3Rpb24+KG1faW5oZXJpdGVkRmxh
Z3MuYm94RGlyZWN0aW9uKTsgfQorICAgIGZsb2F0IGJveEZsZXgoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXg7IH0KKyAg
ICB1bnNpZ25lZCBib3hGbGV4R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXhHcm91cDsgfQorICAgIEVCb3hMaW5l
cyBib3hMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hMaW5lcz4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5saW5lcyk7IH0KKyAgICB1
bnNpZ25lZCBib3hPcmRpbmFsR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPm9yZGluYWxHcm91cDsgfQorICAgIEVCb3hP
cmllbnQgYm94T3JpZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveE9yaWVudD4o
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmllbnQpOyB9
CisgICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hQ
YWNrPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPnBhY2sp
OyB9CisKKyAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5vcmRlcjsgfQorICAgIGZsb2F0IGZsZXhHcm93KCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhHcm93OyB9CisgICAgZmxvYXQgZmxl
eFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxl
Qm94LT5mbGV4U2hyaW5rOyB9CisgICAgY29uc3QgTGVuZ3RoJiBmbGV4QmFzaXMoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleEJhc2lzOyB9
CisgICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgYWxpZ25Db250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25Db250ZW50OyB9CisgICAg
Y29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25JdGVtcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXM7IH0KKyAgICBjb25zdCBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhJiBhbGlnblNlbGYoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbGlnblNlbGY7IH0KKyAgICBFRmxleERpcmVjdGlvbiBmbGV4RGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhEaXJlY3Rpb24+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4RGlyZWN0aW9uKTsgfQogICAgIGJvb2wgaXND
b2x1bW5GbGV4RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmxleERpcmVjdGlvbigpID09IEZs
b3dDb2x1bW4gfHwgZmxleERpcmVjdGlvbigpID09IEZsb3dDb2x1bW5SZXZlcnNlOyB9CiAgICAg
Ym9vbCBpc1JldmVyc2VGbGV4RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmxleERpcmVjdGlv
bigpID09IEZsb3dSb3dSZXZlcnNlIHx8IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1uUmV2
ZXJzZTsgfQotICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxl
eFdyYXApOyB9Ci0gICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYganVzdGlmeUNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29u
dGVudDsgfQotICAgIENvbnRlbnRQb3NpdGlvbiBqdXN0aWZ5Q29udGVudFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQucG9zaXRp
b24oKTsgfQotICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIGp1c3RpZnlDb250ZW50RGlzdHJp
YnV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNv
bnRlbnQuZGlzdHJpYnV0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5Q29u
dGVudE92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fanVzdGlmeUNvbnRlbnQub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFs
aWdubWVudERhdGEmIGp1c3RpZnlJdGVtcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2p1c3RpZnlJdGVtczsgfQotICAgIEl0ZW1Qb3NpdGlvbiBqdXN0aWZ5SXRlbXNQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJ
dGVtcy5wb3NpdGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlmeUl0ZW1zT3Zl
cmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9q
dXN0aWZ5SXRlbXMub3ZlcmZsb3coKTsgfQotICAgIEl0ZW1Qb3NpdGlvblR5cGUganVzdGlmeUl0
ZW1zUG9zaXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
anVzdGlmeUl0ZW1zLnBvc2l0aW9uVHlwZSgpOyB9Ci0gICAgY29uc3QgU3R5bGVTZWxmQWxpZ25t
ZW50RGF0YSYganVzdGlmeVNlbGYoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9qdXN0aWZ5U2VsZjsgfQotICAgIEl0ZW1Qb3NpdGlvbiBqdXN0aWZ5U2VsZlBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYucG9z
aXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlTZWxmT3ZlcmZsb3dBbGln
bm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5U2Vs
Zi5vdmVyZmxvdygpOyB9CisgICAgRUZsZXhXcmFwIGZsZXhXcmFwKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZsZXhXcmFwPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJv
eC0+ZmxleFdyYXApOyB9CisgICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYganVz
dGlmeUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0
aWZ5Q29udGVudDsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlJ
dGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVt
czsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGY7IH0KIAogI2lm
IEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWQtPm1fZ3JpZENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdy
aWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9n
cmlkUm93czsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9SZXBl
YXRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9ncmlkQXV0b1JlcGVhdENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6
ZT4mIGdyaWRBdXRvUmVwZWF0Um93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRSb3dzOyB9Ci0gICAgdW5zaWduZWQgZ3JpZEF1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQ7IH0K
LSAgICB1bnNpZ25lZCBncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdFJvd3NJbnNl
cnRpb25Qb2ludDsgfQotICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5
cGUoKSBjb25zdCAgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRv
UmVwZWF0Q29sdW1uc1R5cGU7IH0KLSAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdFJv
d3NUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1f
YXV0b1JlcGVhdFJvd3NUeXBlOyB9Ci0gICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVk
R3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZC0+bV9uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExpbmVz
TWFwJiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExp
bmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5M
aW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlk
Um93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5t
X2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5l
c01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3Jp
ZEFyZWE7IH0KLSAgICBzaXplX3QgbmFtZWRHcmlkQXJlYVJvd0NvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7
IH0KLSAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7
IH0KLSAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R3JpZEF1dG9GbG93PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRB
dXRvRmxvdyk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkgY29uc3Qg
eyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYg
SW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdyk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93
RGlyZWN0aW9uQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbik7
IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlKCkgY29uc3QgeyByZXR1
cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJu
YWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93QWxn
b3JpdGhtRGVuc2UoKSBjb25zdCB7IHJldHVybiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UpOyB9Ci0g
ICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b0NvbHVtbnMoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvQ29sdW1uczsg
fQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9Sb3dzKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b1Jvd3M7IH0K
LSAgICBjb25zdCBMZW5ndGgmIGdyaWRDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5HYXA7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGdyaWRSb3dHYXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2dyaWRSb3dHYXA7IH0KLQotCi0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRl
bUNvbHVtblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZEl0ZW0tPm1fZ3JpZENvbHVtblN0YXJ0OyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlk
SXRlbUNvbHVtbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWRJdGVtLT5tX2dyaWRDb2x1bW5FbmQ7IH0KLSAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJ
dGVtUm93U3RhcnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
SXRlbS0+bV9ncmlkUm93U3RhcnQ7IH0KLSAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJdGVt
Um93RW5kKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0t
Pm1fZ3JpZFJvd0VuZDsgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICovCi0K
LSAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3coKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+Z3JpZENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Z3JpZC0+Z3JpZFJvd3M7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRB
dXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmdyaWQtPmdyaWRBdXRvUmVwZWF0Q29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJh
Y2tTaXplPiYgZ3JpZEF1dG9SZXBlYXRSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9SZXBlYXRSb3dzOyB9CisgICAgdW5zaWduZWQgZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OyB9
CisgICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Um93c0luc2Vy
dGlvblBvaW50OyB9CisgICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlw
ZSgpIGNvbnN0ICB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVw
ZWF0Q29sdW1uc1R5cGU7IH0KKyAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdFJvd3NU
eXBlKCkgY29uc3QgIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9S
ZXBlYXRSb3dzVHlwZTsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRD
b2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQt
Pm5hbWVkR3JpZENvbHVtbkxpbmVzOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Z3JpZC0+bmFtZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQor
ICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+b3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNv
bnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxp
bmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNv
bnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRBcmVhOyB9CisgICAgc2l6ZV90IG5h
bWVkR3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmdyaWQtPm5hbWVkR3JpZEFyZWFSb3dDb3VudDsgfQorICAgIHNpemVfdCBuYW1lZEdyaWRB
cmVhQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7IH0KKyAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1
dG9GbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R3JpZEF1dG9GbG93PihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cpOyB9CisgICAgYm9vbCBpc0dyaWRB
dXRvRmxvd0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uUm93KTsg
fQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4oKSBjb25zdCB7IHJldHVy
biAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvbkNvbHVtbik7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93QWxnb3Jp
dGhtU3BhcnNlKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQt
PmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UpOyB9CisgICAg
Ym9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkgY29uc3QgeyByZXR1cm4gKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dB
bGdvcml0aG1EZW5zZSk7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRB
dXRvQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQt
PmdyaWRBdXRvQ29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3Jp
ZEF1dG9Sb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+
Z3JpZEF1dG9Sb3dzOyB9CisgICAgY29uc3QgTGVuZ3RoJiBncmlkQ29sdW1uR2FwKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZENvbHVtbkdhcDsgfQor
ICAgIGNvbnN0IExlbmd0aCYgZ3JpZFJvd0dhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmdyaWQtPmdyaWRSb3dHYXA7IH0KKworICAgIGNvbnN0IEdyaWRQb3NpdGlv
biYgZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmdyaWRJdGVtLT5ncmlkQ29sdW1uU3RhcnQ7IH0KKyAgICBjb25zdCBHcmlkUG9zaXRp
b24mIGdyaWRJdGVtQ29sdW1uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Z3JpZEl0ZW0tPmdyaWRDb2x1bW5FbmQ7IH0KKyAgICBjb25zdCBHcmlkUG9zaXRpb24m
IGdyaWRJdGVtUm93U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5ncmlkSXRlbS0+Z3JpZFJvd1N0YXJ0OyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlk
SXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJ
dGVtLT5ncmlkUm93RW5kOyB9CisjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKwor
ICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmJveFNoYWRvdy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0Qm94U2hhZG93
RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJv
dHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQoYm94U2hhZG93
KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7IH0KICAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0
Qm94U2hhZG93SW5zZXRFeHRlbnQoKSBjb25zdCB7IHJldHVybiBnZXRTaGFkb3dJbnNldEV4dGVu
dChib3hTaGFkb3coKSk7IH0KICAgICB2b2lkIGdldEJveFNoYWRvd0hvcml6b250YWxFeHRlbnQo
TGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93SG9y
aXpvbnRhbEV4dGVudChib3hTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9CkBAIC05OTcsMTM2ICs1
NjIsMTMzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJveFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0
ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNv
bnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoYm94U2hhZG93KCksIGxvZ2ljYWxU
b3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKQotICAgIEVCb3hEZWNvcmF0aW9uQnJlYWsgYm94RGVjb3JhdGlvbkJyZWFrKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3gtPmJveERlY29yYXRpb25CcmVhaygpOyB9CisgICAgRUJveERlY29yYXRp
b25CcmVhayBib3hEZWNvcmF0aW9uQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmJv
eERlY29yYXRpb25CcmVhaygpOyB9CiAjZW5kaWYKLSAgICBTdHlsZVJlZmxlY3Rpb24qIGJveFJl
ZmxlY3QoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0
LmdldCgpOyB9Ci0gICAgRUJveFNpemluZyBib3hTaXppbmcoKSBjb25zdCB7IHJldHVybiBtX2Jv
eC0+Ym94U2l6aW5nKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcnF1ZWVJbmNyZW1lbnQoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5pbmNyZW1lbnQ7
IH0KLSAgICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbWFycXVlZS0+c3BlZWQ7IH0KLSAgICBpbnQgbWFycXVlZUxvb3BDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmxvb3BzOyB9Ci0g
ICAgRU1hcnF1ZWVCZWhhdmlvciBtYXJxdWVlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFTWFycXVlZUJlaGF2aW9yPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVl
LT5iZWhhdmlvcik7IH0KLSAgICBFTWFycXVlZURpcmVjdGlvbiBtYXJxdWVlRGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVEaXJlY3Rpb24+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX21hcnF1ZWUtPmRpcmVjdGlvbik7IH0KLSAgICBFVXNlck1vZGlmeSB1c2Vy
TW9kaWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJNb2RpZnk+KHJhcmVJbmhl
cml0ZWREYXRhLT51c2VyTW9kaWZ5KTsgfQotICAgIEVVc2VyRHJhZyB1c2VyRHJhZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyRHJhZz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPnVz
ZXJEcmFnKTsgfQotICAgIEVVc2VyU2VsZWN0IHVzZXJTZWxlY3QoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFVXNlclNlbGVjdD4ocmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QpOyB9
Ci0gICAgVGV4dE92ZXJmbG93IHRleHRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRPdmVyZmxvdz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyk7IH0K
LSAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQmVmb3JlQ29sbGFwc2UoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJn
aW5CZWZvcmVDb2xsYXBzZSk7IH0KLSAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQWZ0ZXJDb2xs
YXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UpOyB9Ci0gICAgRVdvcmRCcmVhayB3
b3JkQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV29yZEJyZWFrPihyYXJlSW5o
ZXJpdGVkRGF0YS0+d29yZEJyZWFrKTsgfQotICAgIEVPdmVyZmxvd1dyYXAgb3ZlcmZsb3dXcmFw
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93V3JhcD4ocmFyZUluaGVyaXRl
ZERhdGEtPm92ZXJmbG93V3JhcCk7IH0KLSAgICBFTkJTUE1vZGUgbmJzcE1vZGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFTkJTUE1vZGU+KHJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9k
ZSk7IH0KLSAgICBMaW5lQnJlYWsgbGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGluZUJyZWFrPihyYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrKTsgfQotICAgIEh5cGhl
bnMgaHlwaGVucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEh5cGhlbnM+KHJhcmVJbmhl
cml0ZWREYXRhLT5oeXBoZW5zKTsgfQotICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRCZWZvcmUo
KSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9y
ZTsgfQotICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7IH0KLSAgICBzaG9ydCBoeXBo
ZW5hdGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlw
aGVuYXRpb25MaW1pdExpbmVzOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5hdGlv
blN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0
cmluZzsgfQorCisgICAgU3R5bGVSZWZsZWN0aW9uKiBib3hSZWZsZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdC5nZXQoKTsgfQorICAgIEVCb3hT
aXppbmcgYm94U2l6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5ib3hTaXppbmcoKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgbWFycXVlZUluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmluY3JlbWVudDsgfQorICAgIGludCBtYXJx
dWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVl
LT5zcGVlZDsgfQorICAgIGludCBtYXJxdWVlTG9vcENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+bG9vcHM7IH0KKyAgICBFTWFycXVlZUJlaGF2
aW9yIG1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVl
QmVoYXZpb3I+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmJlaGF2aW9yKTsgfQor
ICAgIEVNYXJxdWVlRGlyZWN0aW9uIG1hcnF1ZWVEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFTWFycXVlZURpcmVjdGlvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFy
cXVlZS0+ZGlyZWN0aW9uKTsgfQorICAgIEVVc2VyTW9kaWZ5IHVzZXJNb2RpZnkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlck1vZGlmeT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNl
ck1vZGlmeSk7IH0KKyAgICBFVXNlckRyYWcgdXNlckRyYWcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFVXNlckRyYWc+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnKTsgfQor
ICAgIEVVc2VyU2VsZWN0IHVzZXJTZWxlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
VXNlclNlbGVjdD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCk7IH0KKyAgICBUZXh0
T3ZlcmZsb3cgdGV4dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE92
ZXJmbG93PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpOyB9CisgICAgRU1h
cmdpbkNvbGxhcHNlIG1hcmdpbkJlZm9yZUNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZv
cmVDb2xsYXBzZSk7IH0KKyAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQWZ0ZXJDb2xsYXBzZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSk7IH0KKyAgICBFV29yZEJyZWFrIHdvcmRC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXb3JkQnJlYWs+KG1fcmFyZUluaGVy
aXRlZERhdGEtPndvcmRCcmVhayk7IH0KKyAgICBFT3ZlcmZsb3dXcmFwIG92ZXJmbG93V3JhcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvd1dyYXA+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPm92ZXJmbG93V3JhcCk7IH0KKyAgICBFTkJTUE1vZGUgbmJzcE1vZGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFTkJTUE1vZGU+KG1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BN
b2RlKTsgfQorICAgIExpbmVCcmVhayBsaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxMaW5lQnJlYWs+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayk7IH0KKyAgICBI
eXBoZW5zIGh5cGhlbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIeXBoZW5zPihtX3Jh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zKTsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRC
ZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxp
bWl0QmVmb3JlOyB9CisgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyOyB9CisgICAg
c2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUoKSBj
b25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsgfQotICAgIEVCb3JkZXJG
aXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0KTsgfQotICAgIEVSZXNpemUgcmVzaXplKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVJlc2l6ZT4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcmVzaXplKTsgfQotICAgIENvbHVtbkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29s
LT5tX2F4aXMpOyB9Ci0gICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3QgewotICAg
ICAgICBDb2x1bW5BeGlzIGF4aXMgPSBjb2x1bW5BeGlzKCk7Ci0gICAgICAgIHJldHVybiBheGlz
ID09IEF1dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMg
PT0gSG9yaXpvbnRhbENvbHVtbkF4aXMpOwotICAgIH0KLSAgICBDb2x1bW5Qcm9ncmVzc2lvbiBj
b2x1bW5Qcm9ncmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblByb2dy
ZXNzaW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9wcm9ncmVzc2lvbik7
IH0KLSAgICBmbG9hdCBjb2x1bW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX211bHRpQ29sLT5tX3dpZHRoOyB9Ci0gICAgYm9vbCBoYXNBdXRvQ29sdW1uV2lk
dGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9h
dXRvV2lkdGg7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2NvdW50OyB9Ci0gICAgYm9v
bCBoYXNBdXRvQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tdWx0aUNvbC0+bV9hdXRvQ291bnQ7IH0KKyAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmJvcmRlckZpdCk7IH0KKyAgICBFUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVSZXNpemU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJlc2l6ZSk7IH0K
KyAgICBDb2x1bW5BeGlzIGNvbHVtbkF4aXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b2x1bW5BeGlzPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+YXhpcyk7IH0KKyAg
ICBib29sIGhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdDsKKyAgICBDb2x1bW5Qcm9ncmVzc2lv
biBjb2x1bW5Qcm9ncmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblBy
b2dyZXNzaW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cHJvZ3Jlc3Npb24p
OyB9CisgICAgZmxvYXQgY29sdW1uV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5tdWx0aUNvbC0+d2lkdGg7IH0KKyAgICBib29sIGhhc0F1dG9Db2x1bW5XaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5hdXRv
V2lkdGg7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5jb3VudDsgfQorICAgIGJvb2wgaGFz
QXV0b0NvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bXVsdGlDb2wtPmF1dG9Db3VudDsgfQogICAgIGJvb2wgc3BlY2lmaWVzQ29sdW1ucygpIGNvbnN0
IHsgcmV0dXJuICFoYXNBdXRvQ29sdW1uQ291bnQoKSB8fCAhaGFzQXV0b0NvbHVtbldpZHRoKCkg
fHwgIWhhc0lubGluZUNvbHVtbkF4aXMoKTsgfQotICAgIENvbHVtbkZpbGwgY29sdW1uRmlsbCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkZpbGw+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX211bHRpQ29sLT5tX2ZpbGwpOyB9Ci0gICAgZmxvYXQgY29sdW1uR2FwKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fZ2FwOyB9Ci0gICAg
Ym9vbCBoYXNOb3JtYWxDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9tdWx0aUNvbC0+bV9ub3JtYWxHYXA7IH0KLSAgICBFQm9yZGVyU3R5bGUgY29sdW1u
UnVsZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlD
b2wtPm1fcnVsZS5zdHlsZSgpOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgY29sdW1uUnVsZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPnJ1bGVX
aWR0aCgpOyB9Ci0gICAgYm9vbCBjb2x1bW5SdWxlSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuaXNUcmFuc3BhcmVu
dCgpOyB9Ci0gICAgQ29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29sdW1uU3Bhbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fY29s
dW1uU3Bhbik7IH0KLQotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVy
YXRpb25zOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3g7IH0KLSAgICBjb25z
dCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feTsgfQotICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpbloo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fejsg
fQotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7
IH0KLQotICAgIFRleHRFbXBoYXNpc0ZpbGwgdGV4dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc0ZpbGw+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0
RW1waGFzaXNGaWxsKTsgfQorICAgIENvbHVtbkZpbGwgY29sdW1uRmlsbCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbHVtbkZpbGw+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRp
Q29sLT5maWxsKTsgfQorICAgIGZsb2F0IGNvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5nYXA7IH0KKyAgICBib29sIGhhc05vcm1hbENv
bHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29s
LT5ub3JtYWxHYXA7IH0KKyAgICBFQm9yZGVyU3R5bGUgY29sdW1uUnVsZVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuc3R5bGUoKTsg
fQorICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtblJ1bGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlV2lkdGgoKTsgfQorICAgIGJvb2wg
Y29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tdWx0aUNvbC0+cnVsZS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBDb2x1bW5TcGFu
IGNvbHVtblNwYW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5TcGFuPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+Y29sdW1uU3Bhbik7IH0KKworICAgIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9uczsgfQorICAgIGNvbnN0IExlbmd0
aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRyYW5zZm9ybS0+eDsgfQorICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+eTsgfQor
ICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50cmFuc2Zvcm0tPno7IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorCisgICAgVGV4dEVtcGhhc2lzRmlsbCB0ZXh0RW1w
aGFzaXNGaWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzRmlsbD4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCk7IH0KICAgICBUZXh0RW1waGFz
aXNNYXJrIHRleHRFbXBoYXNpc01hcmsoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyazsgfQotICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRl
eHRFbXBoYXNpc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhh
c2lzUG9zaXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbik7IH0K
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrOyB9Cisg
ICAgVGV4dEVtcGhhc2lzUG9zaXRpb24gdGV4dEVtcGhhc2lzUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24pOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0
RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBSdWJ5UG9zaXRpb24gcnVieVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UnVieVBvc2l0aW9uPihyYXJlSW5oZXJp
dGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24pOyB9CisgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5oZXJp
dGVkRGF0YS0+cnVieVBvc2l0aW9uKTsgfQogCi0gICAgVGV4dE9yaWVudGF0aW9uIHRleHRPcmll
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPcmllbnRhdGlvbj4ocmFy
ZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uKTsgfQorICAgIFRleHRPcmllbnRhdGlv
biB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3JpZW50
YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7IH0KIAotICAgIE9i
amVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdCk7IH0KLSAgICBMZW5ndGhQb2ludCBv
YmplY3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29i
amVjdFBvc2l0aW9uOyB9CisgICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PE9iamVjdEZpdD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0Rml0
KTsgfQorICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0UG9zaXRpb247IH0KIAogICAgIC8vIFJldHVybiB0
cnVlIGlmIGFueSB0cmFuc2Zvcm0gcmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5IHRyYW5zZm9y
bSwgdHJhbnNmb3JtU3R5bGUzRCBvciBwZXJzcGVjdGl2ZSkKLSAgICAvLyBpbmRpY2F0ZXMgdGhh
dCB3ZSBhcmUgdHJhbnNmb3JtaW5nCisgICAgLy8gaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHRyYW5z
Zm9ybWluZy4KICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIGhhc1RyYW5zZm9ybSgpIHx8IHByZXNlcnZlczNEKCkgfHwgaGFzUGVyc3BlY3RpdmUo
KTsgfQogCiAgICAgZW51bSBBcHBseVRyYW5zZm9ybU9yaWdpbiB7IEluY2x1ZGVUcmFuc2Zvcm1P
cmlnaW4sIEV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4gfTsKICAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgQXBw
bHlUcmFuc2Zvcm1PcmlnaW4gPSBJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKSBjb25zdDsKICAgICB2
b2lkIHNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCk7CiAKLSAgICBib29sIGhhc01hc2soKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmhhc0ltYWdlKCkgfHwg
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlLmhhc0ltYWdlKCk7IH0KKyAgICBi
b29sIGhhc01hc2soKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNr
Lmhhc0ltYWdlKCkgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlLmhhc0lt
YWdlKCk7IH0KIAotICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRDb21i
aW5lKTsgfQorICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRDb21iaW5l
KTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0Q29tYmlu
ZSgpICE9IFRleHRDb21iaW5lTm9uZTsgfQogCi0gICAgdW5zaWduZWQgdGFiU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX3RhYlNpemU7IH0KKyAgICB1bnNpZ25lZCB0
YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZTsgfQog
CiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCi0gICAgYm9vbCBoYXNGbG93SW50bygpIGNvbnN0
IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkLmlzTnVsbCgpOyB9
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZDsgfQotICAgIGJvb2wgaGFzRmxvd0Zyb20o
KSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkLmlz
TnVsbCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQ7IH0KLSAgICBSZWdp
b25GcmFnbWVudCByZWdpb25GcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJl
Z2lvbkZyYWdtZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCk7IH0K
KyAgICBib29sIGhhc0Zsb3dJbnRvKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmZsb3dUaHJlYWQuaXNOdWxsKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZs
b3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbG93VGhy
ZWFkOyB9CisgICAgYm9vbCBoYXNGbG93RnJvbSgpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5yZWdpb25UaHJlYWQuaXNOdWxsKCk7IH0KKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJlZ2lvblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnJlZ2lvblRocmVhZDsgfQorICAgIFJlZ2lvbkZyYWdtZW50IHJlZ2lvbkZyYWdtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaW9uRnJhZ21lbnQ+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50KTsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBs
aW5lR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkOyB9
Ci0gICAgTGluZVNuYXAgbGluZVNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5l
U25hcD4ocmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXApOyB9Ci0gICAgTGluZUFsaWduIGxp
bmVBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVBbGlnbj4ocmFyZUluaGVy
aXRlZERhdGEtPm1fbGluZUFsaWduKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdy
aWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lR3JpZDsgfQorICAg
IExpbmVTbmFwIGxpbmVTbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNuYXA+
KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwKTsgfQorICAgIExpbmVBbGlnbiBsaW5lQWxp
Z24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQWxpZ24+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPmxpbmVBbGlnbik7IH0KIAotICAgIC8vIEFwcGxlLXNwZWNpZmljIHByb3BlcnR5IGdl
dHRlciBtZXRob2RzCi0gICAgRVBvaW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVQb2ludGVyRXZlbnRzPihpbmhlcml0ZWRfZmxhZ3MuX3BvaW50
ZXJFdmVudHMpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0KCk7IH0KLSAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLmdldCgpOyB9CisgICAgRVBvaW50ZXJFdmVu
dHMgcG9pbnRlckV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQb2ludGVyRXZl
bnRzPihtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMpOyB9CisgICAgY29uc3QgQW5pbWF0
aW9uTGlzdCogYW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmFuaW1hdGlvbnMuZ2V0KCk7IH0KKyAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFuc2l0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25z
LmdldCgpOyB9CiAKLSAgICBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsgfQotICAgIEFuaW1hdGlvbkxp
c3QqIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNp
dGlvbnMuZ2V0KCk7IH0KKyAgICBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9ucy5nZXQoKTsgfQorICAgIEFuaW1hdGlv
bkxpc3QqIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJh
bnNpdGlvbnMuZ2V0KCk7IH0KICAgICAKLSAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRp
b25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0FuaW1hdGlvbnNP
clRyYW5zaXRpb25zKCk7IH0KKyAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQW5pbWF0aW9uc09yVHJh
bnNpdGlvbnMoKTsgfQogCiAgICAgQW5pbWF0aW9uTGlzdCYgZW5zdXJlQW5pbWF0aW9ucygpOwog
ICAgIEFuaW1hdGlvbkxpc3QmIGVuc3VyZVRyYW5zaXRpb25zKCk7CiAKLSAgICBib29sIGhhc0Fu
aW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRp
b25zICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMtPnNpemUoKSA+IDA7IH0K
LSAgICBib29sIGhhc1RyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNpdGlvbnMgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNpdGlv
bnMtPnNpemUoKSA+IDA7IH0KKyAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zICYmIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmFuaW1hdGlvbnMtPnNpemUoKSA+IDA7IH0KKyAgICBib29sIGhhc1RyYW5zaXRpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMgJiYg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMtPnNpemUoKSA+IDA7IH0KIAotICAg
IC8vIHJldHVybiB0aGUgZmlyc3QgZm91bmQgQW5pbWF0aW9uIChpbmNsdWRpbmcgJ2FsbCcgdHJh
bnNpdGlvbnMpCisgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCBmb3VuZCBBbmltYXRpb24gKGluY2x1
ZGluZyAnYWxsJyB0cmFuc2l0aW9ucykuCiAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKLSAgICBFVHJhbnNmb3JtU3R5bGUz
RCB0cmFuc2Zvcm1TdHlsZTNEKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRyYW5zZm9y
bVN0eWxlM0Q+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QpOyB9Ci0g
ICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybVN0eWxlM0QgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0KKyAg
ICBFVHJhbnNmb3JtU3R5bGUzRCB0cmFuc2Zvcm1TdHlsZTNEKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RVRyYW5zZm9ybVN0eWxlM0Q+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5z
Zm9ybVN0eWxlM0QpOyB9CisgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybVN0eWxlM0QgPT0gVHJhbnNmb3JtU3R5bGUz
RFByZXNlcnZlM0Q7IH0KIAotICAgIEVCYWNrZmFjZVZpc2liaWxpdHkgYmFja2ZhY2VWaXNpYmls
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tmYWNlVmlzaWJpbGl0eT4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2ZhY2VWaXNpYmlsaXR5KTsgfQotICAgIGZsb2F0IHBl
cnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3Bl
Y3RpdmU7IH0KLSAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUgPiAwOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBw
ZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9wZXJzcGVjdGl2ZU9yaWdpblg7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3Jp
Z2luWSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZl
T3JpZ2luWTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFnZVNpemU7IH0KLSAgICBQYWdlU2l6ZVR5cGUg
cGFnZVNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBlPihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wYWdlU2l6ZVR5cGUpOyB9CisgICAgRUJhY2tmYWNlVmlz
aWJpbGl0eSBiYWNrZmFjZVZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
QmFja2ZhY2VWaXNpYmlsaXR5PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2li
aWxpdHkpOyB9CisgICAgZmxvYXQgcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZTsgfQorICAgIGJvb2wgaGFzUGVyc3BlY3RpdmUo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZSA+IDA7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWDsgfQorICAgIGNvbnN0
IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYg
cGFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wYWdlU2l6
ZTsgfQorICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQYWdlU2l6ZVR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBhZ2VTaXplVHlw
ZSk7IH0KICAgICAKLSAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluOyB9Ci0gICAgY29uc3Qg
TGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5saW5lQ2xhbXA7IH0KLSAgICBjb25zdCBJbnRTaXplJiBpbml0aWFsTGV0dGVyKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faW5pdGlhbExldHRlcjsgfQor
ICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUJveENvbnRhaW47IH0KKyAgICBjb25zdCBMaW5lQ2xhbXBWYWx1
ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGlu
ZUNsYW1wOyB9CisgICAgY29uc3QgSW50U2l6ZSYgaW5pdGlhbExldHRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRpYWxMZXR0ZXI7IH0KICAgICBpbnQgaW5p
dGlhbExldHRlckRyb3AoKSBjb25zdCB7IHJldHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgoKTsg
fQogICAgIGludCBpbml0aWFsTGV0dGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExl
dHRlcigpLmhlaWdodCgpOyB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNo
QWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hBY3Rp
b24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RvdWNoQWN0aW9uKTsgfQorICAgIFRvdWNoQWN0
aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hBY3Rpb24+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRvdWNoQWN0aW9uKTsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtMTE1MCw2OSArNzEyLDYyIEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0YXBIaWdobGlnaHRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xv
cjsgfQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxpZ2h0Q29sb3I7IH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgIGJvb2wgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT50b3VjaENhbGxvdXRFbmFibGVkOyB9CisgICAgYm9vbCB0b3VjaENh
bGxvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dG91Y2hD
YWxsb3V0RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKQotICAgIGJvb2wgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOyB9
CisgICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzsgfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0
U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFk
anVzdDsgfQorICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAjZW5kaWYKIAot
ICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0KKyAg
ICBFVGV4dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVUZXh0U2VjdXJpdHk+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0KIAot
ICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
V3JpdGluZ01vZGU+KGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKTsgfQorICAgIFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V3JpdGluZ01v
ZGU+KG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUpOyB9CiAgICAgYm9vbCBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUo
KSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGluZ01v
ZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9
CiAgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdl
YkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAKLSAgICBJbWFn
ZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKLSAgICB7Ci0jaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElt
YWdlT3JpZW50YXRpb25FbnVtPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9u
KTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKLSNlbmRp
ZgotICAgIH0KKyAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29u
c3Q7CiAKLSAgICBFSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFSW1hZ2VSZW5kZXJpbmc+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdl
UmVuZGVyaW5nKTsgfQorICAgIEVJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbWFnZVJlbmRlcmluZz4obV9yYXJlSW5oZXJpdGVkRGF0
YS0+aW1hZ2VSZW5kZXJpbmcpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04p
Ci0gICAgSW1hZ2VSZXNvbHV0aW9uU291cmNlIGltYWdlUmVzb2x1dGlvblNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzb2x1dGlvblNvdXJjZT4ocmFyZUluaGVyaXRl
ZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU291cmNlKTsgfQotICAgIEltYWdlUmVzb2x1dGlvblNu
YXAgaW1hZ2VSZXNvbHV0aW9uU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdl
UmVzb2x1dGlvblNuYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNuYXAp
OyB9Ci0gICAgZmxvYXQgaW1hZ2VSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVy
aXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uOyB9CisgICAgSW1hZ2VSZXNvbHV0aW9uU291cmNl
IGltYWdlUmVzb2x1dGlvblNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdl
UmVzb2x1dGlvblNvdXJjZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU291
cmNlKTsgfQorICAgIEltYWdlUmVzb2x1dGlvblNuYXAgaW1hZ2VSZXNvbHV0aW9uU25hcCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzb2x1dGlvblNuYXA+KG1fcmFyZUluaGVy
aXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNuYXApOyB9CisgICAgZmxvYXQgaW1hZ2VSZXNvbHV0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9u
OyB9CiAjZW5kaWYKICAgICAKLSAgICBFU3BlYWsgc3BlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFU3BlYWs+KHJhcmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KKyAgICBFU3BlYWsg
c3BlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFU3BlYWs+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnNwZWFrKTsgfQogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUZpbHRlcigp
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZpbHRlci5hY2Nlc3Mo
KS0+bV9vcGVyYXRpb25zOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJhdGlv
bnM7IH0KLSAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9maWx0ZXItPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9
CisgICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUZpbHRlcigpIHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuZmlsdGVyLmFjY2VzcygpLm9wZXJhdGlvbnM7IH0KKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5maWx0ZXItPm9wZXJhdGlvbnM7IH0KKyAgICBib29sIGhhc0ZpbHRl
cigpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXItPm9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzUmVmZXJlbmNlRmls
dGVyT25seSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBGaWx0
ZXJPcGVyYXRpb25zJiBtdXRhYmxlQmFja2Ryb3BGaWx0ZXIoKSB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9iYWNrZHJvcEZpbHRlci5hY2Nlc3MoKS0+bV9vcGVyYXRp
b25zOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2Ryb3BGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlci0+bV9vcGVy
YXRpb25zOyB9Ci0gICAgYm9vbCBoYXNCYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuICFy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlci0+bV9vcGVyYXRpb25zLm9wZXJh
dGlvbnMoKS5pc0VtcHR5KCk7IH0KKyAgICBGaWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxlQmFja2Ry
b3BGaWx0ZXIoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmJhY2tk
cm9wRmlsdGVyLmFjY2VzcygpLm9wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmJhY2tkcm9wRmlsdGVyLT5vcGVyYXRpb25zOyB9CisgICAgYm9vbCBoYXNCYWNrZHJvcEZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZp
bHRlci0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CiAjZWxzZQogICAgIGJv
b2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSk7IH0KLSAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1v
ZGUgYmxlbmRNb2RlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZWZmZWN0aXZl
QmxlbmRNb2RlLCBibGVuZE1vZGUpOyB9Ci0gICAgYm9vbCBoYXNCbGVuZE1vZGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Vm
ZmVjdGl2ZUJsZW5kTW9kZSkgIT0gQmxlbmRNb2RlTm9ybWFsOyB9CisgICAgQmxlbmRNb2RlIGJs
ZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKTsgfQorICAgIHZvaWQgc2V0QmxlbmRN
b2RlKEJsZW5kTW9kZSBtb2RlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZWZm
ZWN0aXZlQmxlbmRNb2RlLCBtb2RlKTsgfQorICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5l
ZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5kTW9kZU5vcm1hbDsgfQogCi0gICAgSXNvbGF0aW9u
IGlzb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElzb2xhdGlvbj4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1faXNvbGF0aW9uKTsgfQotICAgIHZvaWQgc2V0SXNvbGF0aW9uKElz
b2xhdGlvbiBpc29sYXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9pc29s
YXRpb24sIGlzb2xhdGlvbik7IH0KLSAgICBib29sIGhhc0lzb2xhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzb2xhdGlvbiAhPSBJc29sYXRpb25BdXRvOyB9
CisgICAgSXNvbGF0aW9uIGlzb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElz
b2xhdGlvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aXNvbGF0aW9uKTsgfQorICAgIHZvaWQg
c2V0SXNvbGF0aW9uKElzb2xhdGlvbiBpc29sYXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBpc29sYXRpb24sIGlzb2xhdGlvbik7IH0KKyAgICBib29sIGhhc0lzb2xhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlzb2xhdGlvbiAhPSBJ
c29sYXRpb25BdXRvOyB9CiAjZWxzZQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7
IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjI0LDU3MyArNzc5LDUwNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3Q7CiAK
ICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCi0gICAgVHJhaWxpbmdXb3JkIHRyYWlsaW5n
V29yZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYWlsaW5nV29yZD4ocmFyZUluaGVy
aXRlZERhdGEtPnRyYWlsaW5nV29yZCk7IH0KKyAgICBUcmFpbGluZ1dvcmQgdHJhaWxpbmdXb3Jk
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhaWxpbmdXb3JkPihtX3JhcmVJbmhlcml0
ZWREYXRhLT50cmFpbGluZ1dvcmQpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
Ci0gICAgQXBwbGVQYXlCdXR0b25TdHlsZSBhcHBsZVBheUJ1dHRvblN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25TdHlsZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYXBwbGVQYXlCdXR0b25TdHlsZSk7IH0KLSAgICBBcHBsZVBheUJ1dHRvblR5cGUgYXBw
bGVQYXlCdXR0b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0
b25UeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBsZVBheUJ1dHRvblR5cGUpOyB9Cisg
ICAgQXBwbGVQYXlCdXR0b25TdHlsZSBhcHBsZVBheUJ1dHRvblN0eWxlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25TdHlsZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YXBwbGVQYXlCdXR0b25TdHlsZSk7IH0KKyAgICBBcHBsZVBheUJ1dHRvblR5cGUgYXBwbGVQ
YXlCdXR0b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25U
eXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBsZVBheUJ1dHRvblR5cGUpOyB9CiAjZW5k
aWYKIAogICAgIHZvaWQgY2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoKTsKIAogLy8g
YXR0cmlidXRlIHNldHRlciBtZXRob2RzCiAKLSAgICB2b2lkIHNldERpc3BsYXkoRURpc3BsYXkg
dikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RWZmZWN0aXZlRGlzcGxheSh2KTsgfQotICAgIHZv
aWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNl
dE9yaWdpbmFsRGlzcGxheSh2KTsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYp
IHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9Ci0gICAgdm9pZCBzZXRGbG9h
dGluZyhFRmxvYXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KLQot
ICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubGVm
dCgpLCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgb2Zmc2V0LnJpZ2h0KCksIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRU
b3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnRvcCgpLCBXVEZNb3ZlKHYp
KTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5ib3R0b20oKSwgV1RGTW92ZSh2KSk7IH0KLQotICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNl
dEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7
IH0KLQotICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKExlbmd0aCB2KQotICAgIHsKLSAgICAgICAg
aWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9i
b3gsIG1fd2lkdGgsIFdURk1vdmUodikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
U0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIHZvaWQgc2V0RGlzcGxheShFRGlzcGxheSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0
RWZmZWN0aXZlRGlzcGxheSh2KTsgfQorICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNw
bGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRPcmlnaW5hbERpc3BsYXkodik7IH0KKyAg
ICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0
UG9zaXRpb24odik7IH0KKyAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KIAotICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChMZW5ndGggdikKLSAgICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
KSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEZN
b3ZlKHYpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldExlZnQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG9mZnNldC5sZWZ0KCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
c3Vycm91bmREYXRhLCBvZmZzZXQucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZv
aWQgc2V0VG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBvZmZz
ZXQudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LmJvdHRvbSgpLCBXVEZN
b3ZlKGxlbmd0aCkpOyB9CiAKLSAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCB2KSB7IFNFVF9W
QVIobV9ib3gsIG1fbWluV2lkdGgsIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXhXaWR0
aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heFdpZHRoLCBXVEZNb3ZlKHYpKTsgfQot
ICAgIHZvaWQgc2V0TWluSGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWluSGVp
Z2h0LCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCB2KSB7IFNF
VF9WQVIobV9ib3gsIG1fbWF4SGVpZ2h0LCBXVEZNb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0V2lk
dGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3dpZHRoLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV9ib3hEYXRhLCBtX2hlaWdodCwgV1RGTW92ZShsZW5ndGgpKTsgfQorCisgICAgdm9pZCBz
ZXRMb2dpY2FsV2lkdGgoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChMZW5n
dGgmJik7CisKKyAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFS
KG1fYm94RGF0YSwgbV9taW5XaWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
TWF4V2lkdGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX21heFdpZHRo
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX21pbkhlaWdodCwgV1RGTW92ZShsZW5ndGgpKTsg
fQorICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94
RGF0YSwgbV9tYXhIZWlnaHQsIFdURk1vdmUobGVuZ3RoKSk7IH0KIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKLSAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IGRhc2hib2Fy
ZFJlZ2lvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9h
cmRSZWdpb25zOyB9Ci0gICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4gcmVnaW9ucykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2Rhc2hib2FyZFJlZ2lvbnMsIHJlZ2lvbnMpOyB9Ci0KLSAgICB2b2lkIHNldERhc2hib2FyZFJl
Z2lvbihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoIHQsIExlbmd0aCByLCBM
ZW5ndGggYiwgTGVuZ3RoIGwsIGJvb2wgYXBwZW5kKQotICAgIHsKLSAgICAgICAgU3R5bGVEYXNo
Ym9hcmRSZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJlbDsKLSAgICAg
ICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURk1vdmUodCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZz
ZXQucmlnaHQoKSA9IFdURk1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9tKCkg
PSBXVEZNb3ZlKGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IFdURk1vdmUobCk7
Ci0gICAgICAgIHJlZ2lvbi50eXBlID0gdHlwZTsKLSAgICAgICAgaWYgKCFhcHBlbmQpCi0gICAg
ICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kYXNoYm9hcmRSZWdpb25z
LmNsZWFyKCk7Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hi
b2FyZFJlZ2lvbnMuYXBwZW5kKHJlZ2lvbik7Ci0gICAgfQorICAgIGNvbnN0IFZlY3RvcjxTdHls
ZURhc2hib2FyZFJlZ2lvbj4mIGRhc2hib2FyZFJlZ2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9hcmRSZWdpb25zOyB9CisgICAgdm9pZCBzZXREYXNo
Ym9hcmRSZWdpb25zKGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIHJlZ2lvbnMp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkYXNoYm9hcmRSZWdpb25zLCByZWdp
b25zKTsgfQorICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20s
IExlbmd0aCYmIGxlZnQsIGJvb2wgYXBwZW5kKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXNldEJv
cmRlcigpIHsgcmVzZXRCb3JkZXJJbWFnZSgpOyByZXNldEJvcmRlclRvcCgpOyByZXNldEJvcmRl
clJpZ2h0KCk7IHJlc2V0Qm9yZGVyQm90dG9tKCk7IHJlc2V0Qm9yZGVyTGVmdCgpOyByZXNldEJv
cmRlclJhZGl1cygpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlclRvcCgpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgYm9yZGVyLm1fdG9wLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3Jk
ZXJSaWdodCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQsIEJvcmRlclZhbHVl
KCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckJvdHRvbSgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
Ym9yZGVyLm1fYm90dG9tLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJM
ZWZ0KCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0LCBCb3JkZXJWYWx1ZSgpKTsg
fQotICAgIHZvaWQgcmVzZXRCb3JkZXJJbWFnZSgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1faW1hZ2UsIE5pbmVQaWVjZUltYWdlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcCgp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLCBCb3JkZXJWYWx1ZSgpKTsg
fQorICAgIHZvaWQgcmVzZXRCb3JkZXJSaWdodCgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
Ym9yZGVyLm1fcmlnaHQsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckJv
dHRvbSgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLCBCb3JkZXJW
YWx1ZSgpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJMZWZ0KCkgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV9sZWZ0LCBCb3JkZXJWYWx1ZSgpKTsgfQorICAgIHZvaWQgcmVzZXRC
b3JkZXJJbWFnZSgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1faW1hZ2UsIE5p
bmVQaWVjZUltYWdlKCkpOyB9CiAgICAgdm9pZCByZXNldEJvcmRlclJhZGl1cygpIHsgcmVzZXRC
b3JkZXJUb3BMZWZ0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoKTsgcmVzZXRC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKTsg
fQotICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV90b3BMZWZ0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9pZCBy
ZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90
b3BSaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0
LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgaW5p
dGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BMZWZ0UmFkaXVz
KCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BMZWZ0LCBpbml0aWFsQm9y
ZGVyUmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BSaWdodCwgaW5pdGlhbEJvcmRlclJh
ZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b21MZWZ0LCBpbml0aWFsQm9yZGVyUmFk
aXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b21SaWdodCwgaW5pdGlhbEJvcmRlclJh
ZGl1cygpKTsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fY29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBj
b2xvciwgdik7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGggbGVu
Z3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV94UG9zaXRpb24sIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRpb24oTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feVBvc2l0aW9u
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZShFRmlsbFNp
emVUeXBlIGIpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3NpemVUeXBl
LCBiKTsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemVMZW5ndGgoTGVuZ3RoU2l6ZSBzaXpl
KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV9zaXplTGVuZ3RoLCBXVEZN
b3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGgmJiBs
ZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5kLm1feFBvc2l0aW9u
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQubV95
UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRTaXpl
KEVGaWxsU2l6ZVR5cGUgYikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQu
bV9zaXplVHlwZSwgYik7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExlbmd0
aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dyb3VuZC5tX3Np
emVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRCb3JkZXJJbWFn
ZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9p
bWFnZSwgYik7IH0KKyAgICB2b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBiKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2ltYWdlLCBiKTsgfQogICAg
IHZvaWQgc2V0Qm9yZGVySW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYpOwotICAgIHZv
aWQgc2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94KTsKLSAgICB2b2lkIHNldEJvcmRlcklt
YWdlV2lkdGgoTGVuZ3RoQm94KTsKLSAgICB2b2lkIHNldEJvcmRlckltYWdlT3V0c2V0KExlbmd0
aEJveCk7Ci0KLSAgICB2b2lkIHNldEJvcmRlclRvcExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXpl
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcExlZnQsIFdURk1vdmUoc2l6ZSkpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9Ci0gICAg
dm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQotICAgIHZv
aWQgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQotCi0gICAg
dm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSBzKQotICAgIHsKLSAgICAgICAgc2V0Qm9y
ZGVyVG9wTGVmdFJhZGl1cyhzKTsKLSAgICAgICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMocyk7
Ci0gICAgICAgIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMocyk7Ci0gICAgICAgIHNldEJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKHMpOwotICAgIH0KLSAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhj
b25zdCBJbnRTaXplJiBzKQotICAgIHsKLSAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNp
emUoTGVuZ3RoKHMud2lkdGgoKSwgRml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQpKSk7
Ci0gICAgfQotICAgIAorICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94JiYp
OworICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5ndGhCb3gmJik7CisgICAgdm9pZCBz
ZXRCb3JkZXJJbWFnZU91dHNldChMZW5ndGhCb3gmJik7CisKKyAgICB2b2lkIHNldEJvcmRlclRv
cExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
Ym9yZGVyLm1fdG9wTGVmdCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlclRv
cFJpZ2h0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IGJvcmRlci5tX3RvcFJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0Qm9yZGVy
Qm90dG9tTGVmdFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBib3JkZXIubV9ib3R0b21MZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1
cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9CisKKyAg
ICB2b2lkIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplJiYpOworICAgIHZvaWQgc2V0Qm9yZGVy
UmFkaXVzKGNvbnN0IEludFNpemUmKTsKKwogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRCb3Jk
ZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0
OwogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRS
ZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBSb3VuZGVkUmVj
dCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwg
TGF5b3V0VW5pdCB0b3BXaWR0aCwgTGF5b3V0VW5pdCBib3R0b21XaWR0aCwKICAgICAgICAgTGF5
b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQgcmlnaHRXaWR0aCwgYm9vbCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUp
IGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3Jk
ZXJMZWZ0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1f
bGVmdC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdCwg
dik7IH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVy
UmlnaHRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9y
aWdodC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0
LCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRv
cFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5t
X3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV90b3AsIHYpOyB9Ci0g
ICAgdm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9t
U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9t
Lm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xv
ciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbSwg
dik7IH0KLQotICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX2Jh
Y2tncm91bmQsIG1fb3V0bGluZS5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGluZVN0
eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBt
X291dGxpbmUubV9pc0F1dG8sIGlzQXV0byk7IH0KLSAgICB2b2lkIHNldE91dGxpbmVTdHlsZShF
Qm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fc3R5bGUs
IHYpOyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JP
UkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2KTsgfQotCi0gICAgdm9p
ZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldE92ZXJm
bG93WCh2KTsgfQotICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7IG5vbmluaGVy
aXRlZF9mbGFncy5zZXRPdmVyZmxvd1kodik7IH0KLSAgICB2b2lkIHNldFZpc2liaWxpdHkoRVZp
c2liaWxpdHkgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgPSB2OyB9Ci0gICAgdm9p
ZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldFZlcnRpY2FsQWxpZ24odik7IH0KLSAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ25MZW5ndGgo
TGVuZ3RoIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7IFNFVF9WQVIobV9ib3gs
IG1fdmVydGljYWxBbGlnbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotCi0gICAgdm9pZCBzZXRIYXND
bGlwKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0gICAg
dm9pZCBzZXRDbGlwTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmxl
ZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsg
fQotICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBj
bGlwLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9tKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAuYm90dG9tKCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5n
dGggYm90dG9tLCBMZW5ndGggbGVmdCk7Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBib3gp
IHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURk1vdmUoYm94KSk7IH0KLQotICAgIHZvaWQgc2V0
VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFVuaWNv
ZGVCaWRpKGIpOyB9Ci0KLSAgICB2b2lkIHNldENsZWFyKEVDbGVhciB2KSB7IG5vbmluaGVyaXRl
ZF9mbGFncy5zZXRDbGVhcih2KTsgfQotICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5
b3V0IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFRhYmxlTGF5b3V0KHYpOyB9CisgICAgdm9p
ZCBzZXRCb3JkZXJMZWZ0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBi
b3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUo
RUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdC5t
X3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdCwg
dik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1f
c3Vycm91bmREYXRhLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0
Qm9yZGVyUmlnaHRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRh
LCBib3JkZXIubV9yaWdodC5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRD
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3VuZERh
dGEsIGJvcmRlci5tX3JpZ2h0LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgoZmxv
YXQgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AubV93aWR0aCwgdik7
IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcC5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0
Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1f
c3Vycm91bmREYXRhLCBib3JkZXIubV90b3AsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0
b21XaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRv
bS5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tU3R5bGUoRUJvcmRlclN0
eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLm1fc3R5bGUs
IHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBT
RVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbSwgdik7
IH0KKworICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmREYXRhLCBvdXRsaW5lLm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lU3R5
bGVJc0F1dG8oT3V0bGluZUlzQXV0byBpc0F1dG8pIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRh
LCBvdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8pOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lU3R5bGUo
RUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBvdXRsaW5lLm1fc3R5
bGUsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUsIHYpOyB9CisKKyAg
ICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNl
dE92ZXJmbG93WCh2KTsgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7IG1f
bm9uSW5oZXJpdGVkRmxhZ3Muc2V0T3ZlcmZsb3dZKHYpOyB9CisgICAgdm9pZCBzZXRWaXNpYmls
aXR5KEVWaXNpYmlsaXR5IHYpIHsgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0gdjsgfQor
ICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2KSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3Muc2V0VmVydGljYWxBbGlnbih2KTsgfQorICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bkxlbmd0aChMZW5ndGgmJiBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRf
VkFSKG1fYm94RGF0YSwgbV92ZXJ0aWNhbEFsaWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisKKyAg
ICB2b2lkIHNldEhhc0NsaXAoYm9vbCBiID0gdHJ1ZSkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwg
aGFzQ2xpcCwgYik7IH0KKyAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldENsaXBSaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERh
dGEsIGNsaXAucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFRv
cChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAudG9wKCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0b20oTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRDbGlwKExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExlbmd0
aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCk7CisgICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCYm
IGJveCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcCwgV1RGTW92ZShib3gpKTsgfQorCisg
ICAgdm9pZCBzZXRVbmljb2RlQmlkaShFVW5pY29kZUJpZGkgYikgeyBtX25vbkluaGVyaXRlZEZs
YWdzLnNldFVuaWNvZGVCaWRpKGIpOyB9CisKKyAgICB2b2lkIHNldENsZWFyKEVDbGVhciB2KSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0Q2xlYXIodik7IH0KKyAgICB2b2lkIHNldFRhYmxlTGF5
b3V0KEVUYWJsZUxheW91dCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0VGFibGVMYXlvdXQo
dik7IH0KIAogICAgIGJvb2wgc2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mKTsKKwogICAgIC8vIE9ubHkgdXNlZCBmb3IgYmxlbmRpbmcgZm9udCBzaXplcyB3
aGVuIGFuaW1hdGluZywgZm9yIE1hdGhNTCBhbm9ueW1vdXMgYmxvY2tzLCBhbmQgZm9yIHRleHQg
YXV0b3NpemluZy4KICAgICB2b2lkIHNldEZvbnRTaXplKGZsb2F0KTsKKwogI2lmIEVOQUJMRShW
QVJJQVRJT05fRk9OVFMpCiAgICAgdm9pZCBzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZh
cmlhdGlvblNldHRpbmdzKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xv
ciYpOwotICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIGluZGVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQotI2lmIEVOQUJMRShD
U1MzX1RFWFQpCi0gICAgdm9pZCBzZXRUZXh0SW5kZW50TGluZShUZXh0SW5kZW50TGluZSB2KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dEluZGVudExpbmUsIHYpOyB9Ci0gICAg
dm9pZCBzZXRUZXh0SW5kZW50VHlwZShUZXh0SW5kZW50VHlwZSB2KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIG1fdGV4dEluZGVudFR5cGUsIHYpOyB9Ci0jZW5kaWYKLSAgICB2b2lkIHNl
dFRleHRBbGlnbihFVGV4dEFsaWduIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0g
djsgfQotICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IGluaGVy
aXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSB2OyB9Ci0gICAgdm9pZCBhZGRUb1RleHREZWNv
cmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0
X2RlY29yYXRpb25zIHw9IHY7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0
KFRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zID0g
djsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oVGV4dERlY29yYXRpb24gdikgeyBTRVRf
VkFSKHZpc3VhbCwgdGV4dERlY29yYXRpb24sIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGluZGVudCwg
V1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VGV4dEFsaWduKEVUZXh0QWxpZ24gdikg
eyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHY7IH0KKyAgICB2b2lkIHNldFRleHRUcmFu
c2Zvcm0oRVRleHRUcmFuc2Zvcm0gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0g
PSB2OyB9CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0
aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gdjsgfQorICAgIHZv
aWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBtX2luaGVy
aXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0
aW9uLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlv
blN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlv
blN0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKFRleHREZWNvcmF0
aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRp
b25Ta2lwLCBza2lwKTsgfQorICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVu
ZGVybGluZVBvc2l0aW9uLCB2KTsgfQorICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IHY7IH0KKyAgICB2b2lkIHNldEhh
c0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0
SGFzRXhwbGljaXRseVNldERpcmVjdGlvbih2KTsgfQorICAgIHZvaWQgc2V0TGluZUhlaWdodChM
ZW5ndGgmJik7CisgICAgYm9vbCBzZXRab29tKGZsb2F0KTsKKyAgICB2b2lkIHNldFpvb21XaXRo
b3V0UmV0dXJuVmFsdWUoZmxvYXQgZikgeyBzZXRab29tKGYpOyB9CisgICAgYm9vbCBzZXRFZmZl
Y3RpdmVab29tKGZsb2F0KTsKKyAgICB2b2lkIHNldFRleHRab29tKFRleHRab29tIHYpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0Wm9vbSwgdik7IH0KKwogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCi0gICAgdm9pZCBzZXRUZXh0QWxpZ25MYXN0KFRleHRBbGlnbkxhc3QgdikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRBbGlnbkxhc3QsIHYpOyB9Ci0gICAgdm9p
ZCBzZXRUZXh0SnVzdGlmeShUZXh0SnVzdGlmeSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIG1fdGV4dEp1c3RpZnksIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50TGluZShUZXh0
SW5kZW50TGluZSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEluZGVudExp
bmUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50VHlwZShUZXh0SW5kZW50VHlwZSB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEluZGVudFR5cGUsIHYpOyB9CisgICAg
dm9pZCBzZXRUZXh0QWxpZ25MYXN0KFRleHRBbGlnbkxhc3QgdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRBbGlnbkxhc3QsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SnVzdGlm
eShUZXh0SnVzdGlmeSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEp1c3Rp
ZnksIHYpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4dERl
Y29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4dERl
Y29yYXRpb25TdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0
RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRE
ZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlv
bihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBt
X3RleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KLSAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0
RGlyZWN0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSB2OyB9Ci0gICAgdm9p
ZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBub25pbmhlcml0ZWRfZmxh
Z3Muc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbih2KTsgfQorCiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKLSAgICB2b2lkIHNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHYpOwor
ICAgIHZvaWQgc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGgmJik7CiAjZW5kaWYKLSAgICB2
b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQpOwotICAgIGJvb2wg
c2V0Wm9vbShmbG9hdCk7Ci0gICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0
IGYpIHsgc2V0Wm9vbShmKTsgfQotICAgIGJvb2wgc2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7Ci0g
ICAgdm9pZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIG1fdGV4dFpvb20sIHYpOyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51
bSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VPcmllbnRhdGlvbiwgc3Rh
dGljX2Nhc3Q8aW50Pih2KSk7IH0KKyAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VP
cmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlT3Jp
ZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0
SW1hZ2VSZW5kZXJpbmcoRUltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9pbWFnZVJlbmRlcmluZywgdik7IH0KKyAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5n
KEVJbWFnZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VS
ZW5kZXJpbmcsIHYpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAg
dm9pZCBzZXRJbWFnZVJlc29sdXRpb25Tb3VyY2UoSW1hZ2VSZXNvbHV0aW9uU291cmNlIHYpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UsIHYpOyB9
Ci0gICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25TbmFwKEltYWdlUmVzb2x1dGlvblNuYXAgdikg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAsIHYpOyB9
Ci0gICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvbiwgZik7IH0KKyAgICB2b2lkIHNldEltYWdlUmVz
b2x1dGlvblNvdXJjZShJbWFnZVJlc29sdXRpb25Tb3VyY2UgdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvblNvdXJjZSwgdik7IH0KKyAgICB2b2lkIHNldElt
YWdlUmVzb2x1dGlvblNuYXAoSW1hZ2VSZXNvbHV0aW9uU25hcCB2KSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgaW1hZ2VSZXNvbHV0aW9uU25hcCwgdik7IH0KKyAgICB2b2lkIHNldElt
YWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1h
Z2VSZXNvbHV0aW9uLCBmKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFdoaXRlU3BhY2UoRVdo
aXRlU3BhY2UgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gdjsgfQorICAgIHZv
aWQgc2V0V2hpdGVTcGFjZShFV2hpdGVTcGFjZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVT
cGFjZSA9IHY7IH0KIAotICAgIHZvaWQgc2V0V29yZFNwYWNpbmcoTGVuZ3RoKTsKKyAgICB2b2lk
IHNldFdvcmRTcGFjaW5nKExlbmd0aCYmKTsKICAgICB2b2lkIHNldExldHRlclNwYWNpbmcoZmxv
YXQpOwogCi0gICAgdm9pZCBjbGVhckJhY2tncm91bmRMYXllcnMoKSB7IG1fYmFja2dyb3VuZC5h
Y2Nlc3MoKS0+bV9iYWNrZ3JvdW5kID0gRmlsbExheWVyKEJhY2tncm91bmRGaWxsTGF5ZXIpOyB9
Ci0gICAgdm9pZCBpbmhlcml0QmFja2dyb3VuZExheWVycyhjb25zdCBGaWxsTGF5ZXImIHBhcmVu
dCkgeyBtX2JhY2tncm91bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZCA9IHBhcmVudDsgfQorICAg
IHZvaWQgY2xlYXJCYWNrZ3JvdW5kTGF5ZXJzKCkgeyBtX2JhY2tncm91bmREYXRhLmFjY2Vzcygp
LmJhY2tncm91bmQgPSBGaWxsTGF5ZXIoQmFja2dyb3VuZEZpbGxMYXllcik7IH0KKyAgICB2b2lk
IGluaGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IG1fYmFj
a2dyb3VuZERhdGEuYWNjZXNzKCkuYmFja2dyb3VuZCA9IHBhcmVudDsgfQogCi0gICAgdm9pZCBh
ZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmIChiYWNrZ3JvdW5kTGF5
ZXJzKCktPm5leHQoKSkgewotICAgICAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmN1
bGxFbXB0eUxheWVycygpOwotICAgICAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmZp
bGxVbnNldFByb3BlcnRpZXMoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGFkanVzdEJh
Y2tncm91bmRMYXllcnMoKTsKIAotICAgIHZvaWQgY2xlYXJNYXNrTGF5ZXJzKCkgeyByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrID0gRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIp
OyB9Ci0gICAgdm9pZCBpbmhlcml0TWFza0xheWVycyhjb25zdCBGaWxsTGF5ZXImIHBhcmVudCkg
eyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrID0gcGFyZW50OyB9CisgICAg
dm9pZCBjbGVhck1hc2tMYXllcnMoKSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
bWFzayA9IEZpbGxMYXllcihNYXNrRmlsbExheWVyKTsgfQorICAgIHZvaWQgaW5oZXJpdE1hc2tM
YXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5tYXNrID0gcGFyZW50OyB9CiAKLSAgICB2b2lkIGFkanVzdE1hc2tMYXllcnMoKQot
ICAgIHsKLSAgICAgICAgaWYgKG1hc2tMYXllcnMoKS0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBl
bnN1cmVNYXNrTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7Ci0gICAgICAgICAgICBlbnN1cmVN
YXNrTGF5ZXJzKCkuZmlsbFVuc2V0UHJvcGVydGllcygpOwotICAgICAgICB9Ci0gICAgfQorICAg
IHZvaWQgYWRqdXN0TWFza0xheWVycygpOwogCi0gICAgdm9pZCBzZXRNYXNrSW1hZ2UoUmVmUHRy
PFN0eWxlSW1hZ2U+JiYgdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNr
LnNldEltYWdlKFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRNYXNrSW1hZ2UoUmVmUHRyPFN0
eWxlSW1hZ2U+JiYgdikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2suc2V0
SW1hZ2UoV1RGTW92ZSh2KSk7IH0KIAotICAgIHZvaWQgc2V0TWFza0JveEltYWdlKGNvbnN0IE5p
bmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFza0Jv
eEltYWdlLCBiKTsgfQotICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFJlZlB0cjxTdHls
ZUltYWdlPiYmIHYpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFza0JveElt
YWdlLnNldEltYWdlKFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXNrWFBvc2l0aW9uKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1feFBv
c2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXNrWVBvc2l0aW9uKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1feVBv
c2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXNrU2l6ZShMZW5ndGhT
aXplIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1fc2l6ZUxl
bmd0aCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldE1hc2tCb3hJbWFnZShjb25zdCBO
aW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2tC
b3hJbWFnZSwgYik7IH0KKyAgICB2b2lkIHNldE1hc2tCb3hJbWFnZVNvdXJjZShSZWZQdHI8U3R5
bGVJbWFnZT4mJiB2KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFza0JveElt
YWdlLnNldEltYWdlKFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRNYXNrWFBvc2l0aW9uKExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2subV94
UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hc2tZUG9zaXRpb24o
TGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFzay5t
X3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFza1NpemUoTGVu
Z3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFzay5tX3Np
emVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CiAKLSAgICB2b2lkIHNldEJvcmRlckNvbGxhcHNl
KEVCb3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xs
YXBzZSA9IGNvbGxhcHNlOyB9CisgICAgdm9pZCBzZXRCb3JkZXJDb2xsYXBzZShFQm9yZGVyQ29s
bGFwc2UgY29sbGFwc2UpIHsgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSA9IGNvbGxh
cHNlOyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCk7CiAgICAg
dm9pZCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwotICAgIHZvaWQgc2V0RW1wdHlD
ZWxscyhFRW1wdHlDZWxsIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IHY7IH0K
LSAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IGluaGVyaXRlZF9mbGFn
cy5fY2FwdGlvbl9zaWRlID0gdjsgfQorICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlDZWxs
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gdjsgfQorICAgIHZvaWQgc2V0Q2Fw
dGlvblNpZGUoRUNhcHRpb25TaWRlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9
IHY7IH0KIAotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvVHlwZSBhc3Bl
Y3RSYXRpb1R5cGUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRp
b1R5cGUsIGFzcGVjdFJhdGlvVHlwZSk7IH0KLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21p
bmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVjdFJh
dGlvRGVub21pbmF0b3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihm
bG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9OdW1l
cmF0b3IsIHYpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9UeXBl
IGFzcGVjdFJhdGlvVHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFzcGVj
dFJhdGlvVHlwZSwgYXNwZWN0UmF0aW9UeXBlKTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9E
ZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVtZXJh
dG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRp
b051bWVyYXRvciwgdik7IH0KIAotICAgIHZvaWQgc2V0TGlzdFN0eWxlVHlwZShFTGlzdFN0eWxl
VHlwZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlID0gdjsgfQorICAgIHZv
aWQgc2V0TGlzdFN0eWxlVHlwZShFTGlzdFN0eWxlVHlwZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZSA9IHY7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFJlZlB0cjxT
dHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQ
b3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IHY7IH0K
LQotICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbiwgTGVu
Z3RoQm94KEZpeGVkKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3RoKSB7
IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
bWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5M
ZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmxlZnQoKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQot
ICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKTsKLSAgICB2b2lkIHNldE1hcmdpbkVuZChM
ZW5ndGgpOwotCi0gICAgdm9pZCByZXNldFBhZGRpbmcoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBh
ZGRpbmcsIExlbmd0aEJveChBdXRvKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVuZ3Ro
Qm94IGJveCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBXVEZNb3ZlKGJveCkpOyB9Ci0g
ICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
cGFkZGluZy50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0Jv
dHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcuYm90dG9tKCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotCi0gICAgdm9pZCBz
ZXRDdXJzb3IoRUN1cnNvciBjKSB7IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsg
fQorICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYpIHsg
bV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHY7IH0KKworICAgIHZvaWQgcmVz
ZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbiwgTGVuZ3RoQm94KEZp
eGVkKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
TWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFy
Z2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQo
TGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi5yaWdodCgp
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5TdGFydChMZW5ndGgmJik7
CisgICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoJiYpOworCisgICAgdm9pZCByZXNldFBhZGRp
bmcoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcsIExlbmd0aEJveChBdXRvKSk7
IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVuZ3RoQm94JiYgYm94KSB7IFNFVF9WQVIobV9z
dXJyb3VuZERhdGEsIHBhZGRpbmcsIFdURk1vdmUoYm94KSk7IH0KKyAgICB2b2lkIHNldFBhZGRp
bmdUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcu
dG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcuYm90dG9tKCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCYmIGxl
bmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KKworICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1
cnNvciA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4mJiwgY29u
c3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsKICAgICB2b2lkIHNldEN1cnNvckxp
c3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYpOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAK
ICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgdm9pZCBzZXRDdXJzb3JWaXNpYmls
aXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBpbmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JWaXNpYmls
aXR5ID0gYzsgfQorICAgIHZvaWQgc2V0Q3Vyc29yVmlzaWJpbGl0eShDdXJzb3JWaXNpYmlsaXR5
IGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0gYzsgfQogI2VuZGlmCiAK
LSAgICB2b2lkIHNldEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBpbmhlcml0
ZWRfZmxhZ3MuX2luc2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9Ci0gICAgdm9pZCBzZXRJc0xpbmso
Ym9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRJc0xpbmsoYik7IH0KKyAgICB2b2lkIHNl
dEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBtX2luaGVyaXRlZEZsYWdzLmlu
c2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9CisgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCBiKSB7IG1f
bm9uSW5oZXJpdGVkRmxhZ3Muc2V0SXNMaW5rKGIpOyB9CiAKLSAgICB2b2lkIHNldEluc2lkZURl
ZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKSB7IGluaGVyaXRlZF9mbGFncy5f
aW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURlZmF1bHRCdXR0b247IH0KKyAgICB2b2lkIHNl
dEluc2lkZURlZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKSB7IG1faW5oZXJp
dGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURlZmF1bHRCdXR0b247IH0KIAot
ICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xvckFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JB
ZGp1c3QpOyB9Ci0gICAgdm9pZCBzZXRQcmludENvbG9yQWRqdXN0KFByaW50Q29sb3JBZGp1c3Qg
dmFsdWUpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IHZhbHVlOyB9Cisg
ICAgUHJpbnRDb2xvckFkanVzdCBwcmludENvbG9yQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJpbnRDb2xvckFkanVzdD4obV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRq
dXN0KTsgfQorICAgIHZvaWQgc2V0UHJpbnRDb2xvckFkanVzdChQcmludENvbG9yQWRqdXN0IHZh
bHVlKSB7IG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCA9IHZhbHVlOyB9CiAKLSAg
ICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+aGFzQXV0b1pJbmRl
eCgpOyB9Ci0gICAgdm9pZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBTRVRfVkFSKG1fYm94LCBtX2hh
c0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwgMCk7IH0KLSAgICBp
bnQgekluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPnpJbmRleCgpOyB9Ci0gICAgdm9pZCBz
ZXRaSW5kZXgoaW50IHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oYXNBdXRvWkluZGV4LCBmYWxzZSk7
IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCB2KTsgfQorICAgIGJvb2wgaGFzQXV0b1pJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+aGFzQXV0b1pJbmRleCgpOyB9CisgICAgdm9pZCBz
ZXRIYXNBdXRvWkluZGV4KCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9oYXNBdXRvWkluZGV4LCB0
cnVlKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fekluZGV4LCAwKTsgfQorICAgIGludCB6SW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPnpJbmRleCgpOyB9CisgICAgdm9pZCBzZXRaSW5k
ZXgoaW50IHYpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1faGFzQXV0b1pJbmRleCwgZmFsc2UpOyBT
RVRfVkFSKG1fYm94RGF0YSwgbV96SW5kZXgsIHYpOyB9CiAKLSAgICB2b2lkIHNldEhhc0F1dG9X
aWRvd3MoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywgdHJ1
ZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygpKTsg
fQotICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgbV9oYXNBdXRvV2lkb3dzLCBmYWxzZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdp
ZG93cywgdyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9XaWRvd3MoKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgaGFzQXV0b1dpZG93cywgdHJ1ZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgd2lkb3dzLCBpbml0aWFsV2lkb3dzKCkpOyB9CisgICAgdm9pZCBzZXRXaWRvd3Mo
c2hvcnQgdykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9XaWRvd3MsIGZh
bHNlKTsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIHcpOyB9CiAKLSAgICB2
b2lkIHNldEhhc0F1dG9PcnBoYW5zKCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hh
c0F1dG9PcnBoYW5zLCB0cnVlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFucywg
aW5pdGlhbE9ycGhhbnMoKSk7IH0KLSAgICB2b2lkIHNldE9ycGhhbnMoc2hvcnQgbykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9PcnBoYW5zLCBmYWxzZSk7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIG8pOyB9CisgICAgdm9pZCBzZXRIYXNBdXRvT3Jw
aGFucygpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvT3JwaGFucywgdHJ1
ZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFucywgaW5pdGlhbE9ycGhhbnMo
KSk7IH0KKyAgICB2b2lkIHNldE9ycGhhbnMoc2hvcnQgbykgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIGhhc0F1dG9PcnBoYW5zLCBmYWxzZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgb3JwaGFucywgbyk7IH0KIAogICAgIC8vIENTUzMgU2V0dGVycwotICAgIHZvaWQgc2V0
T3V0bGluZU9mZnNldChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUu
bV9vZmZzZXQsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lT2Zmc2V0KGZsb2F0IHYpIHsgU0VU
X1ZBUihtX2JhY2tncm91bmREYXRhLCBvdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQogICAgIHZvaWQg
c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4sIGJvb2wgYWRkID0gZmFs
c2UpOwotICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYyk7IH0KLSAgICB2b2lkIHNl
dFRleHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRl
eHRTdHJva2VXaWR0aCwgdyk7IH0KLSAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0K
LSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4o
ZiwgMCwgMSk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb3BhY2l0eSwgdik7IH0K
LSAgICB2b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2FwcGVhcmFuY2UsIGEpOyB9CisgICAgdm9pZCBzZXRUZXh0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
U3Ryb2tlQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQgdykg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VXaWR0aCwgdyk7IH0KKyAg
ICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShm
bG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAwLCAxKTsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQorICAgIHZvaWQgc2V0QXBwZWFyYW5j
ZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwZWFy
YW5jZSwgYSk7IH0KICAgICAvLyBGb3IgdmFsaWQgdmFsdWVzIG9mIGJveC1hbGlnbiBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLWZsZXhib3gtMjAwOTA3MjMvI2FsaWdubWVu
dAotICAgIHZvaWQgc2V0Qm94QWxpZ24oRUJveEFsaWdubWVudCBhKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgYWxpZ24sIGEp
OyB9CisgICAgdm9pZCBzZXRCb3hBbGlnbihFQm94QWxpZ25tZW50IGEpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBhbGlnbiwg
YSk7IH0KKyAgICB2b2lkIHNldEJveERpcmVjdGlvbihFQm94RGlyZWN0aW9uIGQpIHsgbV9pbmhl
cml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPSBkOyB9CisgICAgdm9pZCBzZXRCb3hGbGV4KGZsb2F0
IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZs
ZXhpYmxlQm94LCBmbGV4LCBmKTsgfQorICAgIHZvaWQgc2V0Qm94RmxleEdyb3VwKHVuc2lnbmVk
IGdyb3VwKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0
ZWRGbGV4aWJsZUJveCwgZmxleEdyb3VwLCBncm91cCk7IH0KKyAgICB2b2lkIHNldEJveExpbmVz
KEVCb3hMaW5lcyBsaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGxpbmVzLCBsaW5lcyk7IH0KKyAgICB2b2lkIHNldEJv
eE9yZGluYWxHcm91cCh1bnNpZ25lZCBncm91cCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIG9yZGluYWxHcm91cCwgZ3JvdXAp
OyB9CisgICAgdm9pZCBzZXRCb3hPcmllbnQoRUJveE9yaWVudCBvKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JpZW50LCBv
KTsgfQorICAgIHZvaWQgc2V0Qm94UGFjayhFQm94UGFjayBwKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgcGFjaywgcCk7IH0K
KyAgICB2b2lkIHNldEJveFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4sIGJvb2wg
YWRkID0gZmFsc2UpOworICAgIHZvaWQgc2V0Qm94UmVmbGVjdChSZWZQdHI8U3R5bGVSZWZsZWN0
aW9uPiYmKTsKKyAgICB2b2lkIHNldEJveFNpemluZyhFQm94U2l6aW5nIHMpIHsgU0VUX1ZBUiht
X2JveERhdGEsIG1fYm94U2l6aW5nLCBzKTsgfQorICAgIHZvaWQgc2V0RmxleEdyb3coZmxvYXQg
ZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJsZUJveCwg
ZmxleEdyb3csIGYpOyB9CisgICAgdm9pZCBzZXRGbGV4U2hyaW5rKGZsb2F0IGYpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gsIGZsZXhTaHJpbmss
IGYpOyB9CisgICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4QmFzaXMsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE9yZGVyKGludCBvKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgb3JkZXIsIG8pOyB9CisgICAgdm9pZCBzZXRBbGlnbkNvbnRl
bnQoY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGFsaWduQ29udGVudCwgZGF0YSk7IH0KKyAgICB2b2lkIHNldEFs
aWduSXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGFsaWduSXRlbXMsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRB
bGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCkuYWxpZ25JdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAg
ICB2b2lkIHNldEFsaWduU2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYWxpZ25TZWxmLCBkYXRhKTsgfQorICAg
IHZvaWQgc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYWxpZ25TZWxmLnNldFBvc2l0aW9uKHBvc2l0aW9u
KTsgfQorICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24p
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gsIGZs
ZXhEaXJlY3Rpb24sIGRpcmVjdGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3Jh
cCB3KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94
LCBmbGV4V3JhcCwgdyk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50KGNvbnN0IFN0eWxl
Q29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBqdXN0aWZ5Q29udGVudCwgZGF0YSk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50
UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkuanVzdGlmeUNvbnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CisgICAg
dm9pZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGp1c3RpZnlJdGVtcywgZGF0YSk7IH0K
KyAgICB2b2lkIHNldEp1c3RpZnlTZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRh
dGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBqdXN0aWZ5U2VsZiwgZGF0YSk7
IH0KKwogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCi0gICAgdm9pZCBzZXRC
b3hEZWNvcmF0aW9uQnJlYWsoRUJveERlY29yYXRpb25CcmVhayBiKSB7IFNFVF9WQVIobV9ib3gs
IG1fYm94RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0Qm94RGVjb3JhdGlvbkJy
ZWFrKEVCb3hEZWNvcmF0aW9uQnJlYWsgYikgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9ib3hEZWNv
cmF0aW9uQnJlYWssIGIpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldEJveERpcmVjdGlvbihFQm94
RGlyZWN0aW9uIGQpIHsgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gZDsgfQotICAg
IHZvaWQgc2V0Qm94RmxleChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleCwgZik7IH0KLSAgICB2b2lkIHNl
dEJveEZsZXhHcm91cCh1bnNpZ25lZCBpbnQgZmcpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBmbGV4X2dyb3VwLCBmZyk7IH0K
LSAgICB2b2lkIHNldEJveExpbmVzKEVCb3hMaW5lcyBsKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgbGluZXMsIGwpOyB9Ci0g
ICAgdm9pZCBzZXRCb3hPcmRpbmFsR3JvdXAodW5zaWduZWQgaW50IG9nKSB7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JkaW5h
bF9ncm91cCwgb2cpOyB9Ci0gICAgdm9pZCBzZXRCb3hPcmllbnQoRUJveE9yaWVudCBvKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eCwgb3JpZW50LCBvKTsgfQotICAgIHZvaWQgc2V0Qm94UGFjayhFQm94UGFjayBwKSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwg
cGFjaywgcCk7IH0KLSAgICB2b2lkIHNldEJveFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93
RGF0YT4sIGJvb2wgYWRkID0gZmFsc2UpOwotICAgIHZvaWQgc2V0Qm94UmVmbGVjdChSZWZQdHI8
U3R5bGVSZWZsZWN0aW9uPiYmIHJlZmxlY3QpIHsgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2JveFJlZmxlY3QgIT0gcmVmbGVjdCkgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Ym94UmVmbGVjdCA9IFdURk1vdmUocmVmbGVjdCk7IH0KLSAgICB2b2lkIHNldEJveFNpemluZyhF
Qm94U2l6aW5nIHMpIHsgU0VUX1ZBUihtX2JveCwgbV9ib3hTaXppbmcsIHMpOyB9Ci0gICAgdm9p
ZCBzZXRGbGV4R3JvdyhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhHcm93LCBmKTsgfQotICAgIHZvaWQgc2V0RmxleFNo
cmluayhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2Zs
ZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9Ci0gICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4
aWJsZUJveCwgbV9mbGV4QmFzaXMsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE9y
ZGVyKGludCBvKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb3JkZXIsIG8pOyB9
Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQoY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0
YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduQ29udGVudCwg
ZGF0YSk7IH0KLSAgICB2b2lkIHNldEFsaWduQ29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlv
biBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkNvbnRl
bnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnRPdmVy
ZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9hbGlnbkNvbnRlbnQuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9p
ZCBzZXRBbGlnbkNvbnRlbnREaXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvblR5cGUgZGlz
dHJpYnV0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduQ29udGVu
dC5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxpZ25JdGVt
cyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fYWxpZ25JdGVtcywgZGF0YSk7IH0KLSAgICB2b2lkIHNldEFsaWduSXRl
bXNQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fYWxpZ25JdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lk
IHNldEFsaWduSXRlbXNPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkl0ZW1zLnNldE92ZXJmbG93KG92ZXJm
bG93KTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERh
dGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnblNlbGYsIGRh
dGEpOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRp
b24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25TZWxmLnNldFBvc2l0
aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmT3ZlcmZsb3coT3ZlcmZsb3dB
bGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxp
Z25TZWxmLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0RmxleERpcmVjdGlv
bihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsgfQot
ICAgIHZvaWQgc2V0RmxleFdyYXAoRUZsZXhXcmFwIHcpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleFdyYXAsIHcpOyB9Ci0gICAgdm9p
ZCBzZXRKdXN0aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRh
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUNvbnRlbnQsIGRhdGEp
OyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbiBw
b3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5Q29udGVu
dC5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50T3Zl
cmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fanVzdGlmeUNvbnRlbnQuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAg
dm9pZCBzZXRKdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9uVHlw
ZSBkaXN0cmlidXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlm
eUNvbnRlbnQuc2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7IH0KLSAgICB2b2lkIHNldEp1
c3RpZnlJdGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUl0ZW1zLCBkYXRhKTsgfQotICAgIHZvaWQg
c2V0SnVzdGlmeUl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlv
bik7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc092ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50
IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVt
cy5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0
aW9uVHlwZShJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkgeyByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0UG9zaXRpb25UeXBlKHBvc2l0aW9uVHlw
ZSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERh
dGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5U2VsZiwg
ZGF0YSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBv
c2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlTZWxmLnNl
dFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGZPdmVyZmxvdyhP
dmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9qdXN0aWZ5U2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KKwogI2lmIEVOQUJMRShD
U1NfR1JJRF9MQVlPVVQpCi0gICAgdm9pZCBzZXRHcmlkQXV0b0NvbHVtbnMoY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9Db2x1bW5zLCB0cmFja1NpemVMaXN0KTsg
fQotICAgIHZvaWQgc2V0R3JpZEF1dG9Sb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX2dyaWRBdXRvUm93cywgdHJhY2tTaXplTGlzdCk7IH0KLSAgICB2b2lkIHNldEdyaWRD
b2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRDb2x1bW5zLCBsZW5ndGhz
KTsgfQotICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBs
ZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1f
Z3JpZFJvd3MsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnMo
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zLCBsZW5n
dGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzKGNvbnN0IFZlY3RvcjxHcmlk
VHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9ncmlkLCBtX2dyaWRBdXRvUmVwZWF0Um93cywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNl
dEdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGluc2Vy
dGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9uUG9pbnQpOyB9Ci0g
ICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChjb25zdCB1bnNpZ25l
ZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkLCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsg
fQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZShjb25zdCBBdXRvUmVwZWF0
VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9Ci0g
ICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NUeXBlKGNvbnN0IEF1dG9SZXBlYXRUeXBlIGF1
dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fYXV0b1JlcGVhdFJvd3NUeXBlLCBhdXRvUmVwZWF0VHlwZSk7IH0KLSAgICB2b2lkIHNl
dE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRD
b2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX25hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2
b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdy
aWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX25hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2b2lkIHNl
dE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcywgb3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9
Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRH
cmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVz
LCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdy
aWRSb3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsg
U0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0
TmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2b2lkIHNl
dEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3Jp
ZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdy
aWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhLCBuYW1l
ZEdyaWRBcmVhKTsgfQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KHNpemVfdCBy
b3dDb3VudCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBt
X25hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50LCBj
b2x1bW5Db3VudCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvRmxvdyhHcmlkQXV0b0Zsb3cgZmxv
dykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRB
dXRvRmxvdywgZmxvdyk7IH0KLSAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uU3RhcnQoY29uc3Qg
R3JpZFBvc2l0aW9uJiBjb2x1bW5TdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW5TdGFydCwgY29sdW1uU3Rh
cnRQb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uRW5kKGNvbnN0IEdyaWRQ
b3NpdGlvbiYgY29sdW1uRW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtbkVuZCwgY29sdW1uRW5kUG9zaXRpb24p
OyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbVJvd1N0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93
U3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkSXRlbSwgbV9ncmlkUm93U3RhcnQsIHJvd1N0YXJ0UG9zaXRpb24pOyB9Ci0gICAgdm9pZCBz
ZXRHcmlkSXRlbVJvd0VuZChjb25zdCBHcmlkUG9zaXRpb24mIHJvd0VuZFBvc2l0aW9uKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRSb3dF
bmQsIHJvd0VuZFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZENvbHVtbkdhcChjb25zdCBM
ZW5ndGgmIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwg
bV9ncmlkQ29sdW1uR2FwLCB2KTsgfQotICAgIHZvaWQgc2V0R3JpZFJvd0dhcChjb25zdCBMZW5n
dGgmIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9n
cmlkUm93R2FwLCB2KTsgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICovCi0g
ICAgdm9pZCBzZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgaW5jcmVtZW50LCBXVEZNb3ZlKGxl
bmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgc3BlZWQsIGYpOyB9Ci0gICAgdm9p
ZCBzZXRNYXJxdWVlRGlyZWN0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGQpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgZGlyZWN0aW9uLCBkKTsgfQotICAg
IHZvaWQgc2V0TWFycXVlZUJlaGF2aW9yKEVNYXJxdWVlQmVoYXZpb3IgYikgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBiZWhhdmlvciwgYik7IH0KLSAg
ICB2b2lkIHNldE1hcnF1ZWVMb29wQ291bnQoaW50IGkpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgbG9vcHMsIGkpOyB9Ci0gICAgdm9pZCBzZXRVc2Vy
TW9kaWZ5KEVVc2VyTW9kaWZ5IHUpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNlck1v
ZGlmeSwgdSk7IH0KLSAgICB2b2lkIHNldFVzZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIHVzZXJEcmFnLCBkKTsgfQotICAgIHZvaWQgc2V0VXNlclNl
bGVjdChFVXNlclNlbGVjdCBzKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZXJTZWxl
Y3QsIHMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0T3ZlcmZsb3coVGV4dE92ZXJmbG93IG92ZXJmbG93
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRPdmVyZmxvdywgb3ZlcmZsb3cp
OyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5CZWZvcmVDb2xsYXBzZSwgYyk7
IH0KLSAgICB2b2lkIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UoRU1hcmdpbkNvbGxhcHNlIGMpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQWZ0ZXJDb2xsYXBzZSwgYyk7IH0K
LSAgICB2b2lkIHNldFdvcmRCcmVhayhFV29yZEJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgd29yZEJyZWFrLCBiKTsgfQotICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVPdmVy
Zmxvd1dyYXAgYikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvdmVyZmxvd1dyYXAsIGIp
OyB9Ci0gICAgdm9pZCBzZXROQlNQTW9kZShFTkJTUE1vZGUgYikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBuYnNwTW9kZSwgYik7IH0KLSAgICB2b2lkIHNldExpbmVCcmVhayhMaW5lQnJl
YWsgYikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIGIpOyB9Ci0gICAg
dm9pZCBzZXRIeXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBo
eXBoZW5zLCBoKTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEJlZm9yZShzaG9ydCBs
aW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QmVmb3Jl
LCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRBZnRlcihzaG9ydCBsaW1p
dCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsIGxp
bWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0IGxpbWl0KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGltaXQp
OyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGgp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25TdHJpbmcsIGgpOyB9Ci0g
ICAgdm9pZCBzZXRCb3JkZXJGaXQoRUJvcmRlckZpdCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fYm9yZGVyRml0LCBiKTsgfQotICAgIHZvaWQgc2V0UmVzaXplKEVSZXNpemUg
cikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Jlc2l6ZSwgcik7IH0KLSAgICB2
b2lkIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpcyBheGlzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F4aXMsIGF4aXMpOyB9Ci0gICAgdm9pZCBz
ZXRDb2x1bW5Qcm9ncmVzc2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9wcm9ncmVzc2lv
biwgcHJvZ3Jlc3Npb24pOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5XaWR0aChmbG9hdCBmKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1dG9XaWR0
aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNv
bCwgbV93aWR0aCwgZik7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXV0b1dpZHRo
LCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2ws
IG1fd2lkdGgsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNpZ25lZCBzaG9ydCBj
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1
dG9Db3VudCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9t
dWx0aUNvbCwgbV9jb3VudCwgYyk7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5Db3VudCgp
IHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXV0
b0NvdW50LCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVs
dGlDb2wsIG1fY291bnQsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5GaWxsKENvbHVtbkZpbGwg
Y29sdW1uRmlsbCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0
aUNvbCwgbV9maWxsLCBjb2x1bW5GaWxsKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZsb2F0
IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1f
bm9ybWFsR2FwLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX2dhcCwgZik7IH0KLSAgICB2b2lkIHNldEhhc05vcm1hbENvbHVtbkdhcCgp
IHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fbm9y
bWFsR2FwLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVs
dGlDb2wsIG1fZ2FwLCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUnVsZUNvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9tdWx0aUNvbCwgbV9ydWxlLCBjKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUnVsZVN0
eWxlKEVCb3JkZXJTdHlsZSBiKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX211bHRpQ29sLCBtX3J1bGUubV9zdHlsZSwgYik7IH0KLSAgICB2b2lkIHNldENvbHVtblJ1
bGVXaWR0aCh1bnNpZ25lZCBzaG9ydCB3KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX211bHRpQ29sLCBtX3J1bGUubV93aWR0aCwgdyk7IH0KLSAgICB2b2lkIHJlc2V0
Q29sdW1uUnVsZSgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVs
dGlDb2wsIG1fcnVsZSwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHNldENvbHVtblNwYW4o
Q29sdW1uU3BhbiBjb2x1bW5TcGFuKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX211bHRpQ29sLCBtX2NvbHVtblNwYW4sIGNvbHVtblNwYW4pOyB9Ci0gICAgdm9pZCBp
bmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCA9IHBhcmVudC0+cmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2w7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0KLSAgICB2b2lkIHNl
dFRyYW5zZm9ybU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1feCwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWShMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV95LCBXVEZNb3ZlKGxlbmd0aCkp
OyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5aKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3osIGYpOyB9Ci0gICAgdm9p
ZCBzZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywg
cyk7IH0KLSAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KLSAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV90ZXh0RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0VGV4dEVt
cGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRl
eHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1w
aGFzaXNGaWxsLCBmaWxsKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1w
aGFzaXNNYXJrIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lz
TWFyaywgbWFyayk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29uc3Qg
QXRvbWljU3RyaW5nJiBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc0N1c3RvbU1hcmssIG1hcmspOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNQb3NpdGlv
bihUZXh0RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0RW1waGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlk
QXV0b0NvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0KSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRvQ29s
dW1ucywgdHJhY2tTaXplTGlzdCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUm93cyhjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9Sb3dzLCB0cmFja1NpemVMaXN0KTsg
fQorICAgIHZvaWQgc2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBs
ZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdy
aWRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGdyaWQsIGdyaWRSb3dzLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1
dG9SZXBlYXRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b1JlcGVh
dENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3MoY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRvUmVwZWF0Um93cywgbGVuZ3Rocyk7IH0K
KyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGNvbnN0IHVu
c2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBv
aW50KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoY29u
c3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9u
UG9pbnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGNvbnN0IEF1
dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRDb2x1bW5zVHlwZSwgYXV0b1JlcGVhdFR5cGUp
OyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NUeXBlKGNvbnN0IEF1dG9SZXBlYXRU
eXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIGdyaWQsIGF1dG9SZXBlYXRSb3dzVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9CisgICAgdm9p
ZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRH
cmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
Z3JpZCwgbmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAg
IHZvaWQgc2V0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVk
R3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdy
aWQsIG5hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNl
dE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBncmlkLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMsIG9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldE9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBv
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAg
ICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRM
aW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1l
ZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRSb3dM
aW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE5hbWVkR3Jp
ZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFw
JiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
cywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAm
IG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhKGNvbnN0
IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYSwgbmFtZWRHcmlkQXJlYSk7IH0K
KyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChzaXplX3Qgcm93Q291bnQpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYVJv
d0NvdW50LCByb3dDb3VudCk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3Vu
dChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50LCBjb2x1bW5Db3VudCk7IH0KKyAg
ICB2b2lkIHNldEdyaWRBdXRvRmxvdyhHcmlkQXV0b0Zsb3cgZmxvdykgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b0Zsb3csIGZsb3cpOyB9Cisg
ICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1u
U3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBn
cmlkSXRlbSwgZ3JpZENvbHVtblN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQorICAgIHZv
aWQgc2V0R3JpZEl0ZW1Db2x1bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3Np
dGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwg
Z3JpZENvbHVtbkVuZCwgY29sdW1uRW5kUG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlkSXRl
bVJvd1N0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93U3RhcnRQb3NpdGlvbikgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZFJvd1N0YXJ0LCBy
b3dTdGFydFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dFbmQoY29uc3QgR3Jp
ZFBvc2l0aW9uJiByb3dFbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZFJvd0VuZCwgcm93RW5kUG9zaXRpb24pOyB9CisgICAg
dm9pZCBzZXRHcmlkQ29sdW1uR2FwKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQ29sdW1uR2FwLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93R2FwKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkUm93R2FwLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9CisjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKworICAgIHZv
aWQgc2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgaW5jcmVtZW50LCBXVEZNb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRNYXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgc3BlZWQsIGYpOyB9CisgICAgdm9pZCBz
ZXRNYXJxdWVlRGlyZWN0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGQpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgZGlyZWN0aW9uLCBkKTsgfQorICAgIHZv
aWQgc2V0TWFycXVlZUJlaGF2aW9yKEVNYXJxdWVlQmVoYXZpb3IgYikgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBiZWhhdmlvciwgYik7IH0KKyAgICB2
b2lkIHNldE1hcnF1ZWVMb29wQ291bnQoaW50IGkpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgbG9vcHMsIGkpOyB9CisgICAgdm9pZCBzZXRVc2VyTW9k
aWZ5KEVVc2VyTW9kaWZ5IHUpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB1c2VyTW9k
aWZ5LCB1KTsgfQorICAgIHZvaWQgc2V0VXNlckRyYWcoRVVzZXJEcmFnIGQpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2VyRHJhZywgZCk7IH0KKyAgICB2b2lkIHNldFVzZXJT
ZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHVzZXJT
ZWxlY3QsIHMpOyB9CisgICAgdm9pZCBzZXRUZXh0T3ZlcmZsb3coVGV4dE92ZXJmbG93IG92ZXJm
bG93KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dE92ZXJmbG93LCBvdmVy
Zmxvdyk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKEVNYXJnaW5Db2xsYXBz
ZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQmVmb3JlQ29sbGFw
c2UsIGMpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlKEVNYXJnaW5Db2xsYXBz
ZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZSwgYyk7IH0KKyAgICB2b2lkIHNldFdvcmRCcmVhayhFV29yZEJyZWFrIGIpIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCB3b3JkQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRPdmVyZmxv
d1dyYXAoRU92ZXJmbG93V3JhcCBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgb3Zl
cmZsb3dXcmFwLCBiKTsgfQorICAgIHZvaWQgc2V0TkJTUE1vZGUoRU5CU1BNb2RlIGIpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBuYnNwTW9kZSwgYik7IH0KKyAgICB2b2lkIHNldExp
bmVCcmVhayhMaW5lQnJlYWsgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVC
cmVhaywgYik7IH0KKyAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9u
TGltaXRCZWZvcmUoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBo
eXBoZW5hdGlvbkxpbWl0QmVmb3JlLCBsaW1pdCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9u
TGltaXRBZnRlcihzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5
cGhlbmF0aW9uTGltaXRBZnRlciwgbGltaXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxp
bWl0TGluZXMoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBo
ZW5hdGlvbkxpbWl0TGluZXMsIGxpbWl0KTsgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25TdHJp
bmcoY29uc3QgQXRvbWljU3RyaW5nJiBoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aHlwaGVuYXRpb25TdHJpbmcsIGgpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJGaXQoRUJvcmRlckZp
dCBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYm9yZGVyRml0LCBiKTsgfQor
ICAgIHZvaWQgc2V0UmVzaXplKEVSZXNpemUgcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIHJlc2l6ZSwgcik7IH0KKyAgICB2b2lkIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpcyBh
eGlzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBh
eGlzLCBheGlzKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1uUHJvZ3Jl
c3Npb24gcHJvZ3Jlc3Npb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIHByb2dyZXNzaW9uLCBwcm9ncmVzc2lvbik7IH0KKyAgICB2b2lkIHNldENv
bHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIGYpOyB9CisgICAgdm9pZCBzZXRIYXNBdXRv
Q29sdW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCBhdXRvV2lkdGgsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIDApOyB9CisgICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1
bnNpZ25lZCBzaG9ydCBjKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG11bHRpQ29sLCBhdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGNvdW50LCBjKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b0Nv
bHVtbkNvdW50KCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0
aUNvbCwgYXV0b0NvdW50LCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIGNvdW50LCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uRmlsbChDb2x1
bW5GaWxsIGNvbHVtbkZpbGwpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIGZpbGwsIGNvbHVtbkZpbGwpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5HYXAo
ZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNv
bCwgbm9ybWFsR2FwLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBnYXAsIGYpOyB9CisgICAgdm9pZCBzZXRIYXNOb3JtYWxDb2x1bW5HYXAo
KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBub3Jt
YWxHYXAsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0
aUNvbCwgZ2FwLCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9y
JiBjKSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLm11bHRpQ29sLCBydWxlLCBjKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVN0eWxlKEVC
b3JkZXJTdHlsZSBiKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCBydWxlLm1fc3R5bGUsIGIpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgo
dW5zaWduZWQgc2hvcnQgdykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBtdWx0aUNvbCwgcnVsZS5tX3dpZHRoLCB3KTsgfQorICAgIHZvaWQgcmVzZXRDb2x1bW5SdWxl
KCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgcnVs
ZSwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHNldENvbHVtblNwYW4oQ29sdW1uU3BhbiBj
b2x1bW5TcGFuKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBjb2x1bW5TcGFuLCBjb2x1bW5TcGFuKTsgfQorICAgIHZvaWQgaW5oZXJpdENvbHVtblBy
b3BlcnRpZXNGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnQpIHsgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5tdWx0aUNvbCA9IHBhcmVudC5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5tdWx0aUNvbDsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFu
c2Zvcm0sIG9wZXJhdGlvbnMsIG9wcyk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblgo
TGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHRyYW5zZm9ybSwgeCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3Jt
T3JpZ2luWShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdHJhbnNmb3JtLCB5LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRU
cmFuc2Zvcm1PcmlnaW5aKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdHJhbnNmb3JtLCB6LCBmKTsgfQorICAgIHZvaWQgc2V0U3BlYWsoRVNwZWFrIHMp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywgcyk7IH0KKyAgICB2b2lkIHNl
dFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCB0ZXh0Q29tYmluZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uQ29sb3Io
Y29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVj
b3JhdGlvbkNvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDb2xv
ciwgYyk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBm
aWxsKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgZmls
bCk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJr
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgbWFyayk7
IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29uc3QgQXRvbWljU3RyaW5n
JiBtYXJrKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ3VzdG9t
TWFyaywgbWFyayk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRFbXBo
YXNpc1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEVtcGhhc2lzUG9zaXRpb24sIHBvc2l0aW9uKTsgfQogICAgIGJvb2wgc2V0VGV4dE9yaWVudGF0
aW9uKFRleHRPcmllbnRhdGlvbik7CiAKLSAgICB2b2lkIHNldE9iamVjdEZpdChPYmplY3RGaXQg
Zml0KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb2JqZWN0Rml0LCBmaXQpOyB9
Ci0gICAgdm9pZCBzZXRPYmplY3RQb3NpdGlvbihjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24p
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vYmplY3RQb3NpdGlvbiwgcG9zaXRp
b24pOyB9CisgICAgdm9pZCBzZXRPYmplY3RGaXQoT2JqZWN0Rml0IGZpdCkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIG9iamVjdEZpdCwgZml0KTsgfQorICAgIHZvaWQgc2V0T2Jq
ZWN0UG9zaXRpb24oTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG9iamVjdFBvc2l0aW9uLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KKworICAg
IHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKLSAgICB2b2lk
IHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgbV9ydWJ5UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0Rmls
dGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KIAotICAgIHZvaWQg
c2V0RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9maWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQogI2lm
IEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgdm9pZCBzZXRCYWNrZHJvcEZpbHRlcihjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fYmFja2Ryb3BGaWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQorICAgIHZvaWQg
c2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRpb25z
LCBvcHMpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXplKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2b2lk
IHNldFRhYlNpemUodW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRhYlNpemUsIHNpemUpOyB9CiAKLSAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2Vl
biBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtC
ZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0
d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJl
YWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFr
SW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9i
cmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJy
ZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgYnJlYWtCZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVha0FmdGVy
KEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgYnJlYWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrSW5z
aWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBicmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KICAgICAKLSAgICB2b2lkIHNl
dEhhbmdpbmdQdW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9u
KTsgfQorICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBw
dW5jdHVhdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVh
dGlvbiwgcHVuY3R1YXRpb24pOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBTZXR0ZXJzCiAKLSAgICB2
b2lkIHNldExpbmVHcmlkKGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdyaWQpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lR3JpZCwgbGluZUdyaWQpOyB9Ci0gICAgdm9pZCBzZXRM
aW5lU25hcChMaW5lU25hcCBsaW5lU25hcCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBt
X2xpbmVTbmFwLCBsaW5lU25hcCk7IH0KLSAgICB2b2lkIHNldExpbmVBbGlnbihMaW5lQWxpZ24g
bGluZUFsaWduKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUFsaWduLCBsaW5l
QWxpZ24pOyB9CisgICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVH
cmlkKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZUdyaWQsIGxpbmVHcmlkKTsg
fQorICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBsaW5lU25hcCwgbGluZVNuYXApOyB9CisgICAgdm9pZCBzZXRMaW5l
QWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IGxpbmVBbGlnbiwgbGluZUFsaWduKTsgfQogCi0gICAgdm9pZCBzZXRGbG93VGhyZWFkKGNvbnN0
IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2Zsb3dUaHJlYWQsIGZsb3dUaHJlYWQpOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25UaHJlYWQo
Y29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9yZWdpb25UaHJlYWQsIHJlZ2lvblRocmVhZCk7IH0KLSAgICB2b2lkIHNldFJl
Z2lvbkZyYWdtZW50KFJlZ2lvbkZyYWdtZW50IHJlZ2lvbkZyYWdtZW50KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uRnJhZ21lbnQsIHJlZ2lvbkZyYWdtZW50KTsgfQor
ICAgIHZvaWQgc2V0Rmxvd1RocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpIHsg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbG93VGhyZWFkLCBmbG93VGhyZWFkKTsg
fQorICAgIHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhy
ZWFkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcmVnaW9uVGhyZWFkLCByZWdp
b25UaHJlYWQpOyB9CisgICAgdm9pZCBzZXRSZWdpb25GcmFnbWVudChSZWdpb25GcmFnbWVudCBy
ZWdpb25GcmFnbWVudCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHJlZ2lvbkZy
YWdtZW50LCByZWdpb25GcmFnbWVudCk7IH0KIAotICAgIC8vIEFwcGxlLXNwZWNpZmljIHByb3Bl
cnR5IHNldHRlcnMKLSAgICB2b2lkIHNldFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMgcCkg
eyBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBwOyB9CisgICAgdm9pZCBzZXRQb2lu
dGVyRXZlbnRzKEVQb2ludGVyRXZlbnRzIHApIHsgbV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZl
bnRzID0gcDsgfQogCi0gICAgdm9pZCBjbGVhckFuaW1hdGlvbnMoKQotICAgIHsKLSAgICAgICAg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgdm9pZCBjbGVhclRyYW5zaXRpb25zKCkKLSAgICB7Ci0gICAgICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gbnVsbHB0cjsKLSAgICB9
CisgICAgdm9pZCBjbGVhckFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhbnNpdGlvbnMo
KTsKIAotICAgIHZvaWQgaW5oZXJpdEFuaW1hdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFy
ZW50KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBwYXJl
bnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0cjsg
fQotICAgIHZvaWQgaW5oZXJpdFRyYW5zaXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVu
dCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IHBhcmVu
dCA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRyOyB9
CiAgICAgdm9pZCBhZGp1c3RBbmltYXRpb25zKCk7CiAgICAgdm9pZCBhZGp1c3RUcmFuc2l0aW9u
cygpOwogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFuc2Zvcm1TdHlsZTNEIGIp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm1TdHlsZTNELCBiKTsg
fQotICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZpc2liaWxpdHkgYikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tmYWNlVmlzaWJpbGl0eSwgYik7
IH0KLSAgICB2b2lkIHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2ZSwgcCk7IH0KLSAgICB2b2lkIHNldFBlcnNwZWN0aXZl
T3JpZ2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGVyc3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQZXJz
cGVjdGl2ZU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQg
c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fcGFnZVNpemUsIFdURk1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRQYWdlU2l6ZVR5
cGUoUGFnZVNpemVUeXBlIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdl
U2l6ZVR5cGUsIHQpOyB9Ci0gICAgdm9pZCByZXNldFBhZ2VTaXplVHlwZSgpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBBR0VfU0laRV9BVVRPKTsgfQot
Ci0gICAgdm9pZCBzZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9Ci0gICAgdm9pZCBzZXRM
aW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBsaW5lQ2xhbXAsIGMpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFuc2Zv
cm1TdHlsZTNEIGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm1T
dHlsZTNELCBiKTsgfQorICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZp
c2liaWxpdHkgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tmYWNlVmlz
aWJpbGl0eSwgYik7IH0KKyAgICB2b2lkIHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZSwgcCk7IH0KKyAgICB2b2lkIHNl
dFBlcnNwZWN0aXZlT3JpZ2luWChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldFBlcnNwZWN0aXZlT3JpZ2luWShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KKyAgICB2b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHBhZ2VTaXplLCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZv
aWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgcGFnZVNpemVUeXBlLCB0KTsgfQorICAgIHZvaWQgcmVzZXRQYWdlU2l6ZVR5
cGUoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGFnZVNpemVUeXBlLCBQQUdF
X1NJWkVfQVVUTyk7IH0KKworICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRh
aW4gYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVCb3hDb250YWluLCBjKTsg
fQorICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAsIGMpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRJ
bml0aWFsTGV0dGVyKGNvbnN0IEludFNpemUmIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9pbml0aWFsTGV0dGVyLCBzaXplKTsgfQorICAgIHZvaWQgc2V0SW5pdGlhbExl
dHRlcihjb25zdCBJbnRTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgaW5pdGlhbExldHRlciwgc2l6ZSk7IH0KICAgICAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotICAgIHZvaWQgc2V0VG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvdWNoQWN0aW9uKSk7IH0KKyAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNoQWN0
aW9uIHRvdWNoQWN0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdG91Y2hB
Y3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgLy8gU2Nyb2xsIHNuYXAgcG9ydCBzdHls
ZS4KICAgICB2b2lkIHNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJik7Ci0g
ICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0
U2Nyb2xsUGFkZGluZ0JvdHRvbShjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBh
ZGRpbmdMZWZ0KGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1JpZ2h0
KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJik7
CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmKTsKKyAgICB2b2lkIHNl
dFNjcm9sbFBhZGRpbmdMZWZ0KExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdS
aWdodChMZW5ndGgmJik7CiAKLSAgICAvLyBTY3JvbGwgc25hcCBhcmVhIHN0eWxlLgogICAgIHZv
aWQgc2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYpOwotICAgIHZvaWQg
c2V0U2Nyb2xsU25hcE1hcmdpblRvcChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9s
bFNuYXBNYXJnaW5Cb3R0b20oY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFw
TWFyZ2luTGVmdChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5S
aWdodChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoTGVu
Z3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShMZW5ndGgmJik7Cisg
ICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRT
Y3JvbGxTbmFwTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9Cisg
ICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBzZXRUb3VjaENhbGxvdXRFbmFibGVkKGJvb2wgdikg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsgfQor
ICAgIHZvaWQgc2V0VG91Y2hDYWxsb3V0RW5hYmxlZChib29sIHYpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgIHZvaWQgc2V0VXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgdik7IH0KKyAgICB2b2lkIHNldFVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZywgdik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKLSAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVu
dCBhbkFkanVzdG1lbnQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNpemVBZGp1
c3QsIGFuQWRqdXN0bWVudCk7IH0KKyAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRTaXpl
QWRqdXN0bWVudCBhZGp1c3RtZW50KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dFNpemVBZGp1c3QsIGFkanVzdG1lbnQpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGV4dFNl
Y3VyaXR5KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CisgICAgdm9pZCBzZXRUZXh0
U2VjdXJpdHkoRVRleHRTZWN1cml0eSBzZWN1cml0eSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRleHRTZWN1cml0eSwgc2VjdXJpdHkpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1RSQUlM
SU5HX1dPUkQpCi0gICAgdm9pZCBzZXRUcmFpbGluZ1dvcmQoVHJhaWxpbmdXb3JkIHYpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdHJhaWxpbmdXb3JkLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odikpOyB9CisgICAgdm9pZCBzZXRUcmFpbGluZ1dvcmQoVHJhaWxpbmdXb3JkIHYpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0cmFpbGluZ1dvcmQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2KSk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICB2b2lkIHNl
dEFwcGxlUGF5QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fYXBwbGVQYXlCdXR0b25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHYpKTsgfQotICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5QnV0
dG9uVHlwZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXBwbGVQYXlCdXR0
b25UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CisgICAgdm9pZCBzZXRBcHBsZVBh
eUJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3R5bGUpKTsgfQorICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5QnV0
dG9uVHlwZSB0eXBlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlC
dXR0b25UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOyB9CiAjZW5kaWYKIAotICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N2Z1N0
eWxlOyB9Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIGFjY2Vzc1NWR1N0eWxlKCkgeyByZXR1cm4gKm1f
c3ZnU3R5bGUuYWNjZXNzKCk7IH0KKyAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3N2Z1N0eWxlOyB9CisgICAgU1ZHUmVuZGVyU3R5bGUmIGFjY2Vz
c1NWR1N0eWxlKCkgeyByZXR1cm4gbV9zdmdTdHlsZS5hY2Nlc3MoKTsgfQogCiAgICAgY29uc3Qg
U1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5m
aWxsUGFpbnRUeXBlKCk7IH0KICAgICBDb2xvciBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCkuZmlsbFBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0RmlsbFBhaW50
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZH
X1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIpOyB9CisgICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZH
X1BBSU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxvYXQg
ZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxPcGFjaXR5KCk7IH0K
ICAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRG
aWxsT3BhY2l0eShmKTsgfQogCiAgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9CiAgICAg
Q29sb3Igc3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tl
UGFpbnRDb2xvcigpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9y
JiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JD
T0xPUiwgYywgIiIpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVBhaW50KFNWR19QQUlOVFRZUEVf
UkdCQ09MT1IsIGNvbG9yLCBlbXB0eVN0cmluZygpKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNp
dHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZU9wYWNpdHkoKTsgfQogICAgIHZv
aWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tl
T3BhY2l0eShmKTsgfQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLnN0cm9rZVdpZHRoKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVdpZHRo
KExlbmd0aCB3KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAgICB2
b2lkIHNldFN0cm9rZVdpZHRoKExlbmd0aCYmIHcpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJv
a2VXaWR0aChXVEZNb3ZlKHcpKTsgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tl
RGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VEYXNoQXJyYXkoKTsg
fQogICAgIHZvaWQgc2V0U3Ryb2tlRGFzaEFycmF5KFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gYXJy
YXkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoQXJyYXkoYXJyYXkpOyB9CiAgICAg
Y29uc3QgTGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5zdHJva2VEYXNoT2Zmc2V0KCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoTGVu
Z3RoIGQpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9CisgICAg
dm9pZCBzZXRTdHJva2VEYXNoT2Zmc2V0KExlbmd0aCYmIGQpIHsgYWNjZXNzU1ZHU3R5bGUoKS5z
ZXRTdHJva2VEYXNoT2Zmc2V0KFdURk1vdmUoZCkpOyB9CiAgICAgZmxvYXQgc3Ryb2tlTWl0ZXJM
aW1pdCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlTWl0ZXJMaW1pdCgpOyB9CiAg
ICAgdm9pZCBzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5z
ZXRTdHJva2VNaXRlckxpbWl0KGYpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3Qg
eyByZXR1cm4gc3ZnU3R5bGUoKS5jeCgpOyB9Ci0gICAgdm9pZCBzZXRDeChMZW5ndGggY3gpIHsg
YWNjZXNzU1ZHU3R5bGUoKS5zZXRDeChjeCk7IH0KKyAgICB2b2lkIHNldEN4KExlbmd0aCYmIGN4
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3goV1RGTW92ZShjeCkpOyB9CiAgICAgY29uc3QgTGVu
Z3RoJiBjeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3koKTsgfQotICAgIHZvaWQgc2V0
Q3koTGVuZ3RoIGN5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3koY3kpOyB9CisgICAgdm9pZCBz
ZXRDeShMZW5ndGgmJiBjeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN5KFdURk1vdmUoY3kpKTsg
fQogICAgIGNvbnN0IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkucigpOyB9
Ci0gICAgdm9pZCBzZXRSKExlbmd0aCByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihyKTsgfQor
ICAgIHZvaWQgc2V0UihMZW5ndGgmJiByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihXVEZNb3Zl
KHIpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgcngoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgp
LnJ4KCk7IH0KLSAgICB2b2lkIHNldFJ4KExlbmd0aCByeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNl
dFJ4KHJ4KTsgfQorICAgIHZvaWQgc2V0UngoTGVuZ3RoJiYgcngpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRSeChXVEZNb3ZlKHJ4KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3QgeyBy
ZXR1cm4gc3ZnU3R5bGUoKS5yeSgpOyB9Ci0gICAgdm9pZCBzZXRSeShMZW5ndGggcnkpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRSeShyeSk7IH0KKyAgICB2b2lkIHNldFJ5KExlbmd0aCYmIHJ5KSB7
IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UnkoV1RGTW92ZShyeSkpOyB9CiAgICAgY29uc3QgTGVuZ3Ro
JiB4KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS54KCk7IH0KLSAgICB2b2lkIHNldFgoTGVu
Z3RoIHgpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRYKHgpOyB9CisgICAgdm9pZCBzZXRYKExlbmd0
aCYmIHgpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRYKFdURk1vdmUoeCkpOyB9CiAgICAgY29uc3Qg
TGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS55KCk7IH0KLSAgICB2b2lkIHNl
dFkoTGVuZ3RoIHkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKHkpOyB9CisgICAgdm9pZCBzZXRZ
KExlbmd0aCYmIHkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKFdURk1vdmUoeSkpOyB9CiAKICAg
ICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29kT3Bh
Y2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdT
dHlsZSgpLnNldEZsb29kT3BhY2l0eShmKTsgfQpAQCAtMTgwNyw0MCArMTI5NSwyNSBAQCBwdWJs
aWM6CiAgICAgU1ZHTGVuZ3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCkua2VybmluZygpOyB9CiAgICAgdm9pZCBzZXRLZXJuaW5nKFNWR0xlbmd0aFZhbHVlIGspIHsg
YWNjZXNzU1ZHU3R5bGUoKS5zZXRLZXJuaW5nKGspOyB9CiAKLSAgICB2b2lkIHNldFNoYXBlT3V0
c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUgPT0gdmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3NoYXBlT3V0
c2lkZSA9IFdURk1vdmUodmFsdWUpOwotICAgIH0KLSAgICBTaGFwZVZhbHVlKiBzaGFwZU91dHNp
ZGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUu
Z2V0KCk7IH0KLQotICAgIHN0YXRpYyBTaGFwZVZhbHVlKiBpbml0aWFsU2hhcGVPdXRzaWRlKCkg
eyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0U2hhcGVPdXRzaWRlKFJlZlB0cjxTaGFwZVZhbHVl
PiYmKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgU2hh
cGVWYWx1ZSogaW5pdGlhbFNoYXBlT3V0c2lkZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAg
IGNvbnN0IExlbmd0aCYgc2hhcGVNYXJnaW4oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9zaGFwZU1hcmdpbjsgfQotICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3Ro
IHNoYXBlTWFyZ2luKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVNYXJn
aW4sIFdURk1vdmUoc2hhcGVNYXJnaW4pKTsgfQorICAgIGNvbnN0IExlbmd0aCYgc2hhcGVNYXJn
aW4oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU1hcmdpbjsg
fQorICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3RoJiYgc2hhcGVNYXJnaW4pIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzaGFwZU1hcmdpbiwgV1RGTW92ZShzaGFwZU1hcmdp
bikpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2hhcGVNYXJnaW4oKSB7IHJldHVybiBM
ZW5ndGgoMCwgRml4ZWQpOyB9CiAKLSAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVJbWFnZVRocmVzaG9sZDsg
fQotICAgIHZvaWQgc2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhyZXNo
b2xkKSAKLSAgICB7IAotICAgICAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9
IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAsIDEpOwotICAgICAgICBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRT
aGFwZUltYWdlVGhyZXNob2xkKTsgCi0gICAgfQorICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hv
bGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZUltYWdlVGhy
ZXNob2xkOyB9CisgICAgdm9pZCBzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0KTsKICAgICBz
dGF0aWMgZmxvYXQgaW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSB7IHJldHVybiAwOyB9CiAK
LSAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJiBvcGVyYXRp
b24pCi0gICAgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGgg
IT0gb3BlcmF0aW9uKQotICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fY2xpcFBhdGggPSBXVEZNb3ZlKG9wZXJhdGlvbik7Ci0gICAgfQotICAgIENsaXBQYXRoT3Bl
cmF0aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2NsaXBQYXRoLmdldCgpOyB9Ci0KKyAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0
aE9wZXJhdGlvbj4mJik7CisgICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGguZ2V0KCk7IH0KICAgICBz
dGF0aWMgQ2xpcFBhdGhPcGVyYXRpb24qIGluaXRpYWxDbGlwUGF0aCgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnREYXRh
KCk7IH0KLSAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb250ZW50LmdldCgpOyB9Ci0gICAgYm9vbCBjb250
ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPih0aGlzKS0+cmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvbnRlbnREYXRhRXF1aXZhbGVudCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90aGVy
U3R5bGUpLT5yYXJlTm9uSW5oZXJpdGVkRGF0YSk7IH0KKyAgICBjb25zdCBDb250ZW50RGF0YSog
Y29udGVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250
ZW50LmdldCgpOyB9CisgICAgYm9vbCBjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVy
U3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUq
Pih0aGlzKS0+bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y29udGVudERhdGFFcXVpdmFsZW50KCpj
b25zdF9jYXN0PFJlbmRlclN0eWxlKj4ob3RoZXJTdHlsZSktPm1fcmFyZU5vbkluaGVyaXRlZERh
dGEpOyB9CiAgICAgdm9pZCBjbGVhckNvbnRlbnQoKTsKICAgICB2b2lkIHNldENvbnRlbnQoY29u
c3QgU3RyaW5nJiwgYm9vbCBhZGQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRDb250ZW50KFJlZlB0
cjxTdHlsZUltYWdlPiYmLCBib29sIGFkZCA9IGZhbHNlKTsKQEAgLTE4NDgsMjYgKzEzMjEsMjAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudChRdW90ZVR5cGUsIGJvb2wgYWRkID0gZmFs
c2UpOwogICAgIHZvaWQgc2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJik7CiAgICAgY29u
c3QgU3RyaW5nJiBjb250ZW50QWx0VGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQXR0ckNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBdHRyQ29udGVu
dDsgfQorICAgIGJvb2wgaGFzQXR0ckNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5oYXNBdHRyQ29udGVudDsgfQogICAgIHZvaWQgc2V0SGFzQXR0ckNvbnRl
bnQoKTsKIAogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIGNvdW50ZXJEaXJlY3RpdmVz
KCkgY29uc3Q7CiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgYWNjZXNzQ291bnRlckRpcmVjdGl2
ZXMoKTsKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyBnZXRDb3VudGVyRGlyZWN0aXZlcyhj
b25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgUXVvdGVzRGF0YSog
cXVvdGVzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcy5nZXQoKTsg
fQorICAgIFF1b3Rlc0RhdGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRl
ZERhdGEtPnF1b3Rlcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UXVvdGVzKFJlZlB0cjxRdW90ZXNE
YXRhPiYmKTsKIAotICAgIFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZS5nZXQoKTsgfQorICAgIFdpbGxD
aGFuZ2VEYXRhKiB3aWxsQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+d2lsbENoYW5nZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0V2lsbENoYW5nZShSZWZQdHI8
V2lsbENoYW5nZURhdGE+JiYpOwogCi0gICAgYm9vbCB3aWxsQ2hhbmdlQ3JlYXRlc1N0YWNraW5n
Q29udGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxDaGFuZ2UoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aWxsQ2hhbmdl
KCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpOwotICAgIH0KKyAgICBib29sIHdpbGxDaGFu
Z2VDcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGh5cGhlblN0cmluZygpIGNvbnN0OwogCkBAIC0xODgyLDQ2ICsxMzQ5LDMyIEBAIHB1Ymxp
YzoKICAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVk
JiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwogICAgIGJvb2wgZGlm
ZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiwgYm9vbCBpc0NvbXBvc2l0
ZWQpIGNvbnN0OwogCi0gICAgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoKSBjb25zdCB7IHJl
dHVybiBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSgpKTsgfQogICAgIGJvb2wgaXNEaXNw
bGF5SW5saW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUlubGluZVR5cGUoZGlzcGxh
eSgpKTsgfQogICAgIGJvb2wgaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gaXNEaXNwbGF5SW5saW5lVHlwZShvcmlnaW5hbERpc3BsYXkoKSk7IH0KICAgICBib29s
IGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5Rmxl
eGlibGVPckdyaWRCb3goZGlzcGxheSgpKTsgfQotICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVC
b3goKSBjb25zdCB7IHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KCkpOyB9Ci0g
ICAgYm9vbCBpc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBkaXNwbGF5KCkgPT0gQkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElORV9CTE9DSwotICAgICAg
ICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSgpID09IFRBQkxFX0NB
UFRJT04KLSAgICAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBMSVNUX0lURU07Ci0gICAgfQotCi0g
ICAgYm9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KQotICAgIHsKLSAgICAgICAgaWYg
KHYgPT0gd3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29s
IGlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdDsKIAotICAgICAgICBpbmhlcml0ZWRfZmxhZ3Mu
bV93cml0aW5nTW9kZSA9IHY7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBib29s
IHNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlKTsKIAotICAgIGJvb2wgaGFzRXhwbGljaXRseVNl
dFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4cGxp
Y2l0bHlTZXRXcml0aW5nTW9kZSgpOyB9Ci0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGUoYm9vbCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGUodik7IH0KKyAgICBib29sIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldFdyaXRp
bmdNb2RlKCk7IH0KKyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZShib29s
IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUo
dik7IH0KIAogICAgIC8vIEEgdW5pcXVlIHN0eWxlIGlzIG9uZSB0aGF0IGhhcyBtYXRjaGVzIHNv
bWV0aGluZyB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gc2hhcmUuCi0gICAgYm9vbCB1bmlx
dWUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNVbmlxdWUoKTsgfQotICAg
IHZvaWQgc2V0VW5pcXVlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNVbmlxdWUoKTsgfQor
ICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5pc1Vu
aXF1ZSgpOyB9CisgICAgdm9pZCBzZXRVbmlxdWUoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0
SXNVbmlxdWUoKTsgfQogCi0gICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLmVtcHR5U3RhdGUoKTsgfQotICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShi
b29sIGIpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRFbXB0eVN0YXRlKGIp
OyB9Ci0gICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MuZmlyc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0
ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGaXJzdENoaWxkU3RhdGUo
dHJ1ZSk7IH0KLSAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmxhc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldExhc3RDaGlsZFN0
YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldExhc3RDaGlsZFN0YXRl
KHRydWUpOyB9CisgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5lbXB0eVN0YXRlKCk7IH0KKyAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBi
KSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEVtcHR5U3RhdGUoYik7IH0K
KyAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuZmlyc3RDaGlsZFN0YXRlKCk7IH0KKyAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZSgp
IHsgc2V0VW5pcXVlKCk7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0Rmlyc3RDaGlsZFN0YXRlKHRy
dWUpOyB9CisgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MubGFzdENoaWxkU3RhdGUoKTsgfQorICAgIHZvaWQgc2V0TGFzdENoaWxkU3Rh
dGUoKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdzLnNldExhc3RDaGlsZFN0YXRl
KHRydWUpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciB2aXNpdGVkRGVwZW5kZW50Q29s
b3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogICAgIGJvb2wgYmFja2dyb3VuZENvbG9yRXF1
YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0IHsgcmV0
dXJuIGNvbG9yID09IGJhY2tncm91bmRDb2xvcigpOyB9CiAKLSAgICB2b2lkIHNldEhhc0V4cGxp
Y2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzRXhw
bGljaXRseUluaGVyaXRlZFByb3BlcnRpZXModHJ1ZSk7IH0KLSAgICBib29sIGhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
Lmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7IH0KKyAgICB2b2lkIHNldEhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKHRydWUpOyB9CisgICAgYm9vbCBoYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsgfQogICAgIAogICAgIC8v
IEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgRU92ZXJm
bG93IGluaXRpYWxPdmVyZmxvd1goKSB7IHJldHVybiBPVklTSUJMRTsgfQpAQCAtMTk0MCwxNSAr
MTM5MywxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3JkZXJTdHlsZSBpbml0aWFsQm9yZGVy
U3R5bGUoKSB7IHJldHVybiBCTk9ORTsgfQogICAgIHN0YXRpYyBPdXRsaW5lSXNBdXRvIGluaXRp
YWxPdXRsaW5lU3R5bGVJc0F1dG8oKSB7IHJldHVybiBBVVRPX09GRjsgfQogICAgIHN0YXRpYyBO
aW5lUGllY2VJbWFnZSBpbml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGllY2VJ
bWFnZSgpOyB9Ci0gICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsg
cmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7IH0K
KyAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4geyB7
IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9CiAgICAgc3RhdGljIEVDYXB0aW9uU2lkZSBp
bml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDQVBUT1A7IH0KICAgICBzdGF0aWMgQ29sdW1u
QXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJuIEF1dG9Db2x1bW5BeGlzOyB9CiAgICAg
c3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0
dXJuIE5vcm1hbENvbHVtblByb2dyZXNzaW9uOyB9CiAgICAgc3RhdGljIFRleHREaXJlY3Rpb24g
aW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIExUUjsgfQogICAgIHN0YXRpYyBXcml0aW5nTW9k
ZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOyB9
CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgpIHsgcmV0dXJuIFRl
eHRDb21iaW5lTm9uZTsgfQotICAgIHN0YXRpYyBUZXh0T3JpZW50YXRpb24gaW5pdGlhbFRleHRP
cmllbnRhdGlvbigpIHsgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6Ci0gICAgTWl4ZWQ7IH0KKyAg
ICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVy
biBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFs
T2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0RmlsbDsgfQogICAgIHN0YXRpYyBMZW5ndGhQ
b2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgo
NTAuMGYsIFBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpKTsgfQogICAgIHN0YXRpYyBF
RW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4gU0hPVzsgfQpAQCAtMTk2MCw5
ICsxNDEyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsSG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxWZXJ0
aWNhbEJvcmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEVDdXJzb3IgaW5p
dGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvckF1dG87IH0KLSNpZiBFTkFCTEUoQ1VSU09SX1ZJ
U0lCSUxJVFkpCi0gICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNvclZpc2li
aWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsgfQotI2VuZGlmCiAgICAgc3Rh
dGljIENvbG9yIGluaXRpYWxDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQogICAgIHN0
YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSB7IHJldHVybiAwOyB9CiAg
ICAgc3RhdGljIGZsb2F0IGluaXRpYWxCb3JkZXJXaWR0aCgpIHsgcmV0dXJuIDM7IH0KQEAgLTE5
NzksMjIgKzE0MjgsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRleHRJ
bmRlbnQoKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsWmVyb0xlbmd0aCgpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxPbmVMZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoMSwgRml4ZWQpOyB9Ci0jaWYg
RU5BQkxFKENTUzNfVEVYVCkKLSAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJ
bmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQotICAgIHN0YXRpYyBU
ZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5kZW50
Tm9ybWFsOyB9Ci0jZW5kaWYKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0
dXJuIDI7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9
CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgt
MTAwLjBmLCBQZXJjZW50KTsgfQotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgt
MTAwLjBmLCBQZXJjZW50KTsgfQotI2VuZGlmCiAgICAgc3RhdGljIEVUZXh0QWxpZ24gaW5pdGlh
bFRleHRBbGlnbigpIHsgcmV0dXJuIFRBU1RBUlQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRp
b24gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ob25lOyB9
Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICBzdGF0aWMgVGV4dEFsaWduTGFzdCBpbml0aWFs
VGV4dEFsaWduTGFzdCgpIHsgcmV0dXJuIFRleHRBbGlnbkxhc3RBdXRvOyB9Ci0gICAgc3RhdGlj
IFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlmeSgpIHsgcmV0dXJuIFRleHRKdXN0aWZ5QXV0
bzsgfQotI2VuZGlmIC8vIENTUzNfVEVYVAogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxl
IGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHls
ZVNvbGlkOyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU2tpcCBpbml0aWFsVGV4dERlY29y
YXRpb25Ta2lwKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ta2lwQXV0bzsgfQogICAgIHN0YXRp
YyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gaW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpIHsg
cmV0dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbkF1dG87IH0KQEAgLTIwMDksOCArMTQ0Nyw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRUJveE9yaWVudCBpbml0aWFsQm94T3JpZW50KCkgeyByZXR1
cm4gSE9SSVpPTlRBTDsgfQogICAgIHN0YXRpYyBFQm94UGFjayBpbml0aWFsQm94UGFjaygpIHsg
cmV0dXJuIFN0YXJ0OyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxCb3hGbGV4KCkgeyByZXR1
cm4gMC4wZjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5pdGlhbEJveEZsZXhHcm91cCgp
IHsgcmV0dXJuIDE7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGluaXRpYWxCb3hPcmRpbmFs
R3JvdXAoKSB7IHJldHVybiAxOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3hGbGV4
R3JvdXAoKSB7IHJldHVybiAxOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3hPcmRp
bmFsR3JvdXAoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIEVCb3hTaXppbmcgaW5pdGlhbEJv
eFNpemluZygpIHsgcmV0dXJuIENPTlRFTlRfQk9YOyB9CiAgICAgc3RhdGljIFN0eWxlUmVmbGVj
dGlvbiogaW5pdGlhbEJveFJlZmxlY3QoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0
IGluaXRpYWxGbGV4R3JvdygpIHsgcmV0dXJuIDA7IH0KQEAgLTIwODMsNiArMTUyMSwyMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFF1b3Rlc0RhdGEqIGluaXRpYWxRdW90ZXMoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbENvbnRlbnRB
bHRUZXh0KCkgeyByZXR1cm4gZW1wdHlBdG9tOyB9CiAKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQor
ICAgIHN0YXRpYyBUZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVy
biBUZXh0SW5kZW50Rmlyc3RMaW5lOyB9CisgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRp
YWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnROb3JtYWw7IH0KKyAgICBzdGF0
aWMgVGV4dEFsaWduTGFzdCBpbml0aWFsVGV4dEFsaWduTGFzdCgpIHsgcmV0dXJuIFRleHRBbGln
bkxhc3RBdXRvOyB9CisgICAgc3RhdGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlmeSgp
IHsgcmV0dXJuIFRleHRKdXN0aWZ5QXV0bzsgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1VSU09S
X1ZJU0lCSUxJVFkpCisgICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNvclZp
c2liaWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsgfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNwZWNp
ZmllZExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KKyAg
ICBzdGF0aWMgVGV4dFNpemVBZGp1c3RtZW50IGluaXRpYWxUZXh0U2l6ZUFkanVzdCgpIHsgcmV0
dXJuIFRleHRTaXplQWRqdXN0bWVudCgpOyB9CisjZW5kaWYKKwogICAgIHN0YXRpYyBib29sIGlz
Q1NTR3JpZExheW91dEVuYWJsZWQoKTsKIAogICAgIHN0YXRpYyBXaWxsQ2hhbmdlRGF0YSogaW5p
dGlhbFdpbGxDaGFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CkBAIC0yMTM4LDcgKzE1OTIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Db2x1bW5F
bmQoKSB7IHJldHVybiBHcmlkUG9zaXRpb24oKTsgfQogICAgIHN0YXRpYyBHcmlkUG9zaXRpb24g
aW5pdGlhbEdyaWRJdGVtUm93U3RhcnQoKSB7IHJldHVybiBHcmlkUG9zaXRpb24oKTsgfQogICAg
IHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtUm93RW5kKCkgeyByZXR1cm4gR3Jp
ZFBvc2l0aW9uKCk7IH0KLSNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLworI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5p
dGlhbFRhYlNpemUoKSB7IHJldHVybiA4OyB9CiAKQEAgLTIxNTAsNDEgKzE2MDQsMzI1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVnaW9uVGhyZWFk
KCkgeyByZXR1cm4gbnVsbEF0b207IH0KICAgICBzdGF0aWMgUmVnaW9uRnJhZ21lbnQgaW5pdGlh
bFJlZ2lvbkZyYWdtZW50KCkgeyByZXR1cm4gQXV0b1JlZ2lvbkZyYWdtZW50OyB9CiAKLSAgICAv
LyBLZWVwIHRoZXNlIGF0IHRoZSBlbmQuCiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbEluaXRp
YWxMZXR0ZXIoKSB7IHJldHVybiBJbnRTaXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1wVmFs
dWUgaW5pdGlhbExpbmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBz
dGF0aWMgRVRleHRTZWN1cml0eSBpbml0aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNOT05F
OyB9Ci0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBzdGF0aWMgVGV4dFNpemVBZGp1
c3RtZW50IGluaXRpYWxUZXh0U2l6ZUFkanVzdCgpIHsgcmV0dXJuIFRleHRTaXplQWRqdXN0bWVu
dCgpOyB9Ci0jZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBpbml0
aWFsVG91Y2hDYWxsb3V0RW5hYmxlZCgpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdo
dENvbG9yKCk7CiAjZW5kaWYKKwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JP
TExJTkcpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmco
KSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRp
YWxEYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hi
b2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKKwogICAgIHN0YXRp
YyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsRmlsdGVyKCkgeyBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RmlsdGVyT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CisKICNpZiBFTkFC
TEUoRklMVEVSU19MRVZFTF8yKQogICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBp
bml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVy
YXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19DT01Q
T1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJldHVy
biBCbGVuZE1vZGVOb3JtYWw7IH0KICAgICBzdGF0aWMgSXNvbGF0aW9uIGluaXRpYWxJc29sYXRp
b24oKSB7IHJldHVybiBJc29sYXRpb25BdXRvOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNQbGFj
ZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faXNQ
bGFjZWhvbGRlclN0eWxlOyB9Ci0gICAgdm9pZCBzZXRJc1BsYWNlaG9sZGVyU3R5bGUoKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faXNQbGFjZWhvbGRlclN0eWxlLCB0cnVlKTsg
fQorICAgIGJvb2wgaXNQbGFjZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+aXNQbGFjZWhvbGRlclN0eWxlOyB9CisgICAgdm9pZCBzZXRJc1BsYWNl
aG9sZGVyU3R5bGUoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaXNQbGFjZWhv
bGRlclN0eWxlLCB0cnVlKTsgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBub25pbmhlcml0ZWRG
bGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZW5kZXJTdHlsZSwg
bm9uaW5oZXJpdGVkX2ZsYWdzKTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25z
dCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0Jh
Y2tncm91bmRDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlz
aXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdik7IH0K
KyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua091dGxpbmVD
b2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0
IENvbG9yJiB2KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciwgdik7IH0K
KyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0Nv
bG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0Rmls
bENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1Rl
eHRTdHJva2VDb2xvciwgdik7IH0KKworICAgIHZvaWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJvbShj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0VW5pY29k
ZUJpZGkocGFyZW50LT5tX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCkpOyB9CisgICAg
dm9pZCBnZXRTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwg
TGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkg
Y29uc3Q7CisgICAgdm9pZCBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRvd0Rh
dGEqLCBMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3Q7CisgICAgdm9p
ZCBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYg
dG9wLCBMYXlvdXRVbml0JiBib3R0b20pIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93SW5saW5l
RGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBsb2dpY2FsTGVm
dCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdDsKKyAgICB2b2lkIGdldFNoYWRvd0Js
b2NrRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBsb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdDsKKworICAgIHN0YXRpYyBDb2xv
ciBpbnZhbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJv
cmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVm
dCgpLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9CisgICAg
Y29uc3QgQ29sb3ImIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPmJvcmRlci50b3AoKS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJvcmRlckJvdHRv
bUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20oKS5j
b2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZERhdGEtPmNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkg
Y29uc3Q7CisgICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlLmNvbG9yKCk7IH0KKyAgICBj
b25zdCBDb2xvciYgb3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0
YS0+b3V0bGluZS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRFbXBoYXNpc0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3I7
IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dFN0
cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9r
ZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdDsKKyAg
ICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsgfQor
ICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOyB9
CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xv
cjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJCb3R0
b21Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJU
b3BDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua091dGxpbmVDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnZpc2l0ZWRMaW5r
Q29sdW1uUnVsZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHREZWNvcmF0aW9uQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvbkNv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dERl
Y29yYXRpb25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRGaWxs
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1Rl
eHRGaWxsQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1RleHRT
dHJva2VDb2xvcjsgfQorCisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCkuc3RvcENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmxvb2RDb2xvcigpOyB9CisgICAgY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmxpZ2h0aW5n
Q29sb3IoKTsgfQogCiBwcml2YXRlOgorICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7Cisg
ICAgICAgIE5vbkluaGVyaXRlZEZsYWdzKCk7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mbGFncyA9PSBv
dGhlci5tX2ZsYWdzOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0
ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgIT0gb3RoZXIubV9mbGFnczsg
fQorCisgICAgICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVk
RmxhZ3MmKTsKKworICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9m
ZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyBvdmVyZmxvd1gp
IHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dYLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCk7
IH0KKworICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCkp
OyB9CisgICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyBvdmVyZmxvd1kpIHsgdXBk
YXRlVmFsdWUob3ZlcmZsb3dZLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCk7IH0KKwor
ICAgICAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2xlYXI+
KGdldFZhbHVlKGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldENs
ZWFyKEVDbGVhciBjbGVhcikgeyB1cGRhdGVWYWx1ZShjbGVhciwgY2xlYXJNYXNrLCBjbGVhck9m
ZnNldCk7IH0KKworICAgICAgICBFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBlZmZlY3Rp
dmVEaXNwbGF5T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRFZmZlY3RpdmVEaXNwbGF5KEVE
aXNwbGF5IGVmZmVjdGl2ZURpc3BsYXkpIHsgdXBkYXRlVmFsdWUoZWZmZWN0aXZlRGlzcGxheSwg
ZGlzcGxheU1hc2ssIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpOyB9CisKKyAgICAgICAgRVBvc2l0
aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihnZXRW
YWx1ZShwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRQ
b3NpdGlvbihFUG9zaXRpb24gcG9zaXRpb24pIHsgdXBkYXRlVmFsdWUocG9zaXRpb24sIHBvc2l0
aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpOyB9CisKKyAgICAgICAgRURpc3BsYXkgb3JpZ2luYWxE
aXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRp
c3BsYXlNYXNrLCBvcmlnaW5hbERpc3BsYXlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE9y
aWdpbmFsRGlzcGxheShFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkpIHsgdXBkYXRlVmFsdWUob3Jp
Z2luYWxEaXNwbGF5LCBkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KTsgfQorCisg
ICAgICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVVbmljb2RlQmlkaT4oZ2V0VmFsdWUodW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9m
ZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIHVuaWNv
ZGVCaWRpKSB7IHVwZGF0ZVZhbHVlKHVuaWNvZGVCaWRpLCB1bmljb2RlQmlkaU1hc2ssIHVuaWNv
ZGVCaWRpT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0
IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KKyAgICAgICAg
dm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1
ZSwgaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KKworICAgICAgICBFVmVydGljYWxBbGlnbiB2
ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxpZ24+
KGdldFZhbHVlKHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KSk7IH0KKyAg
ICAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24p
IHsgdXBkYXRlVmFsdWUodmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2Fs
QWxpZ25PZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZXhwbGljaXRJbmhlcml0YW5jZU9m
ZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGll
cyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGV4cGxpY2l0SW5oZXJpdGFuY2VP
ZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gZmxv
YXRpbmcoKSAhPSBOb0Zsb2F0OyB9CisgICAgICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVGbG9hdD4oZ2V0VmFsdWUoZmxvYXRpbmdNYXNrLCBmbG9hdGlu
Z09mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IGZsb2F0aW5nKSB7
IHVwZGF0ZVZhbHVlKGZsb2F0aW5nLCBmbG9hdGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KTsgfQor
CisgICAgICAgIGJvb2wgaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4g
UFVCTElDX1BTRVVET0lEX01BU0sgJiBnZXRWYWx1ZShwc2V1ZG9CaXRzTWFzaywgcHNldWRvQml0
c09mZnNldCk7IH0KKyAgICAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQpOworICAgICAgICB2b2lk
IHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCk7CisKKyAgICAgICAgRVRhYmxlTGF5b3V0
IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRhYmxlTGF5b3V0Pihn
ZXRWYWx1ZSh0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KSk7IH0KKyAgICAg
ICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQpIHsgdXBkYXRl
VmFsdWUodGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZzZXQp
OyB9CisKKyAgICAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHNldWRvSWQ+KGdldFZhbHVlKHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCkp
OyB9CisgICAgICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyB1cGRh
dGVWYWx1ZShzdHlsZVR5cGUsIHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCk7IH0KKwor
ICAgICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihpc1VuaXF1
ZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRJc1VuaXF1ZSgpIHsgdXBkYXRlQm9vbGVhbih0
cnVlLCBpc1VuaXF1ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGVtcHR5U3RhdGUoKSBjb25z
dCB7IHJldHVybiBnZXRCb29sZWFuKGVtcHR5U3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lk
IHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBlbXB0eVN0
YXRlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0Qm9vbGVhbihmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lk
IHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGZp
cnN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9CisgICAg
ICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZh
bHVlLCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGFmZmVjdGVkQnlI
b3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0KTsg
fQorICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IHVwZGF0ZUJv
b2xlYW4odmFsdWUsIGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KKworICAgICAgICBib29sIGFm
ZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlBY3Rp
dmVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVl
KSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9CisKKyAg
ICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZm
ZWN0ZWRCeURyYWdPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoYm9v
bCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5RHJhZ09mZnNldCk7IH0K
KworICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNMaW5r
T2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldElzTGluayhib29sIHZhbHVlKSB7IHVwZGF0ZUJv
b2xlYW4odmFsdWUsIGlzTGlua09mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25PZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERp
cmVjdGlvbihib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25PZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlTZXRXcml0
aW5nTW9kZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGVPZmZzZXQpOyB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc01l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRGbGFncywg
bV9mbGFncyk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlBY3Rp
dmUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQ7IH0KKyAg
ICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJuIG9u
ZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50
NjRfdCBmbGFnUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSB7IHJldHVybiBvbmVCaXRNYXNr
IDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7IH0KKyAgICAgICAgc3RhdGljIHVp
bnQ2NF90IHNldEZpcnN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0ZpcnN0Q2hpbGRT
dGF0ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNldExh
c3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnTGFzdENoaWxkU3RhdGUoKSB8IGZsYWdJ
c1VuaXF1ZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHVwZGF0ZUJvb2xlYW4o
Ym9vbCwgdWludDY0X3Qgb2Zmc2V0KTsKKyAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVpbnQ2NF90
IG9mZnNldCkgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdWYWx1
ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCk7Cisg
ICAgICAgIHVuc2lnbmVkIGdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNr
LCB1aW50NjRfdCBvZmZzZXQpIGNvbnN0OworCisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFn
SXNVbmlxdWUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGlzVW5pcXVlT2Zmc2V0OyB9CisgICAg
ICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0
TWFzayA8PCBmaXJzdENoaWxkU3RhdGVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90
IGZsYWdMYXN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgbGFzdENoaWxkU3Rh
dGVPZmZzZXQ7IH0KKworICAgICAgICAvLyBUbyB0eXBlIHRoZSBiaXQgbWFzayBwcm9wZXJseSBv
biA2NGJpdHMuCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBvbmVCaXRNYXNrID0gMHgx
OworCisgICAgICAgIC8vIEJ5dGUgMS4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92
ZXJmbG93Qml0Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb3ZlcmZs
b3dNYXNrID0gKG9uZUJpdE1hc2sgPDwgb3ZlcmZsb3dCaXRDb3VudCkgLSAxOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dYT2Zmc2V0ID0gMDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WU9mZnNldCA9IG92ZXJmbG93WE9mZnNldCArIG92ZXJm
bG93Qml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhckJpdENvdW50
ID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGNsZWFyTWFzayA9IChvbmVCaXRN
YXNrIDw8IGNsZWFyQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNsZWFyT2Zmc2V0ID0gb3ZlcmZsb3dZT2Zmc2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKKworICAg
ICAgICAvLyBCeXRlIDIuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaXNwbGF5Qml0
Q291bnQgPSA1OworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZGlzcGxheU1hc2sgPSAo
b25lQml0TWFzayA8PCBkaXNwbGF5Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQgPSBjbGVhck9mZnNldCArIGNsZWFyQml0
Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbkJpdENvdW50ID0g
MzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBvc2l0aW9uTWFzayA9IChvbmVCaXRN
YXNrIDw8IHBvc2l0aW9uQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHBvc2l0aW9uT2Zmc2V0ID0gZWZmZWN0aXZlRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRD
b3VudDsKKworICAgICAgICAvLyBCeXRlIDMuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBvcmlnaW5hbERpc3BsYXlPZmZzZXQgPSBwb3NpdGlvbk9mZnNldCArIHBvc2l0aW9uQml0Q291
bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaUJpdENvdW50ID0g
MzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHVuaWNvZGVCaWRpTWFzayA9IChvbmVC
aXRNYXNrIDw8IHVuaWNvZGVCaWRpQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHVuaWNvZGVCaWRpT2Zmc2V0ID0gb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ICsgZGlz
cGxheUJpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNC4KKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGZsb2F0aW5nQml0Q291bnQgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgZmxvYXRpbmdNYXNrID0gKG9uZUJpdE1hc2sgPDwgZmxvYXRpbmdCaXRDb3VudCkgLSAx
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdPZmZzZXQgPSB1bmljb2Rl
QmlkaU9mZnNldCArIHVuaWNvZGVCaWRpQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQgPSAxOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCA9IGZs
b2F0aW5nT2Zmc2V0ICsgZmxvYXRpbmdCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZUJpdGNvdW50ID0gMTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCA9
IGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0
aW9uQml0Y291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA1LgorICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZUJpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgPSBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3Vu
dDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQgPSAx
OworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0gb25l
Qml0TWFzazsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zmc2V0
ID0gZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3Vu
dDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3VudCA9
IDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGluZyA9
IDI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFkZGlu
Z0JpdENvdW50ID0gdmVydGljYWxBbGlnbkJpdENvdW50ICsgdmVydGljYWxBbGlnblBhZGRpbmc7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChvbmVC
aXRNYXNrIDw8IHZlcnRpY2FsQWxpZ25CaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgdmVydGljYWxBbGlnbk9mZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsgdGFi
bGVMYXlvdXRCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDYuCisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzQml0Q291bnQgPSA3OworICAgICAgICBzdGF0aWMgY29u
c3QgdWludDY0X3QgcHNldWRvQml0c01hc2sgPSAob25lQml0TWFzayA8PCBwc2V1ZG9CaXRzQml0
Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNPZmZz
ZXQgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgdmVydGljYWxBbGlnbkJpdENvdW50OworCisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgPSAxOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPSAo
b25lQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQgPSBwc2V1ZG9CaXRzT2Zm
c2V0ICsgcHNldWRvQml0c0JpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNy4KKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUJpdENvdW50ID0gNjsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZVBhZGRpbmcgPSAyOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQW5kUGFkZGluZ0JpdENvdW50ID0gc3R5bGVUeXBlQml0
Q291bnQgKyBzdHlsZVR5cGVQYWRkaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qg
c3R5bGVUeXBlTWFzayA9IChvbmVCaXRNYXNrIDw8IHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3Vu
dCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlT2Zmc2V0ID0g
aGFzVmlld3BvcnRVbml0c0JpdENvdW50ICsgaGFzVmlld3BvcnRVbml0c09mZnNldDsKKworICAg
ICAgICAvLyBCeXRlIDguCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1ZU9m
ZnNldCA9IHN0eWxlVHlwZU9mZnNldCArIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1ZU9m
ZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3RhdGVP
ZmZzZXQgPSBlbXB0eVN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGxhc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxhc3RD
aGlsZFN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVj
dGVkQnlBY3RpdmVPZmZzZXQgPSBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAxOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5QWN0
aXZlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09mZnNl
dCA9IGFmZmVjdGVkQnlEcmFnT2Zmc2V0ICsgMTsKKworICAgICAgICAvLyA2MCBiaXRzIGFyZSBh
c3NpZ25lZC4gVGhlcmUgYXJlIDQgYml0cyBhdmFpbGFibGUgY3VycmVudGx5IHVzZWQgYXMgcGFk
ZGluZyB0byBpbXByb3ZlIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICAgICAgLy8gSWYgeW91IGFkZCBt
b3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJT
dHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKS4KKyAgICAgICAgdWludDY0X3QgbV9mbGFncyB7
IDAgfTsKKyAgICB9OworCisgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7CisgICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7IC8v
IEVFbXB0eUNlbGwKKyAgICAgICAgdW5zaWduZWQgY2FwdGlvblNpZGUgOiAyOyAvLyBFQ2FwdGlv
blNpZGUKKyAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIEVMaXN0U3R5bGVU
eXBlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVBvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHls
ZVBvc2l0aW9uCisgICAgICAgIHVuc2lnbmVkIHZpc2liaWxpdHkgOiAyOyAvLyBFVmlzaWJpbGl0
eQorICAgICAgICB1bnNpZ25lZCB0ZXh0QWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCisgICAgICAg
IHVuc2lnbmVkIHRleHRUcmFuc2Zvcm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQorICAgICAgICB1
bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbnMgOiBUZXh0RGVjb3JhdGlvbkJpdHM7CisgICAgICAgIHVu
c2lnbmVkIGN1cnNvciA6IDY7IC8vIEVDdXJzb3IKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJ
VFkpCisgICAgICAgIHVuc2lnbmVkIGN1cnNvclZpc2liaWxpdHkgOiAxOyAvLyBDdXJzb3JWaXNp
YmlsaXR5CisjZW5kaWYKKyAgICAgICAgdW5zaWduZWQgZGlyZWN0aW9uIDogMTsgLy8gVGV4dERp
cmVjdGlvbgorICAgICAgICB1bnNpZ25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gRVdoaXRlU3BhY2UK
KyAgICAgICAgLy8gMzIgYml0cworICAgICAgICB1bnNpZ25lZCBib3JkZXJDb2xsYXBzZSA6IDE7
IC8vIEVCb3JkZXJDb2xsYXBzZQorICAgICAgICB1bnNpZ25lZCBib3hEaXJlY3Rpb24gOiAxOyAv
LyBFQm94RGlyZWN0aW9uIChDU1MzIGJveF9kaXJlY3Rpb24gcHJvcGVydHksIGZsZXhpYmxlIGJv
eCBsYXlvdXQgbW9kdWxlKQorCisgICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAorICAgICAg
ICB1bnNpZ25lZCBydGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCisgICAgICAgIHVuc2lnbmVkIHBy
aW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsKKyAgICAgICAgdW5zaWduZWQg
cG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCisgICAgICAgIHVuc2lnbmVkIGlu
c2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluaworICAgICAgICB1bnNpZ25lZCBpbnNpZGVEZWZh
dWx0QnV0dG9uIDogMTsKKyAgICAgICAgLy8gNDQgYml0cworCisgICAgICAgIC8vIENTUyBUZXh0
IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0CisgICAgICAg
IHVuc2lnbmVkIHdyaXRpbmdNb2RlIDogMjsgLy8gV3JpdGluZ01vZGUKKyAgICAgICAgLy8gNDYg
Yml0cworICAgIH07CisKKyAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgdG8gaW1wbGVt
ZW50IHRoZSByZXBsYWNlIG9wZXJhdGlvbi4KKyAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYs
IFJlbmRlclN0eWxlJiYpOworCisgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkoKTsgfQorCisgICAg
Ym9vbCBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGVmdCgpLmlzQXV0bygp
ICYmIHJpZ2h0KCkuaXNBdXRvKCk7IH0KKyAgICBib29sIGhhc0F1dG9Ub3BBbmRCb3R0b20oKSBj
b25zdCB7IHJldHVybiB0b3AoKS5pc0F1dG8oKSAmJiBib3R0b20oKS5pc0F1dG8oKTsgfQorCisg
ICAgdm9pZCBzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4sIGJvb2wgYWRk
KTsKKworICAgIExheW91dEJveEV4dGVudCBnZXRTaGFkb3dJbnNldEV4dGVudChjb25zdCBTaGFk
b3dEYXRhKikgY29uc3Q7CisKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUo
RURpc3BsYXkpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRURpc3BsYXkp
OworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5KTsKKyAgICBz
dGF0aWMgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBp
c0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChFRGlzcGxheSk7CisKKyAgICBDb2xvciBjb2xvcklu
Y2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25z
dDsKKwogICAgIGJvb2wgY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Q7CiAgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJT
dHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0
OwogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5k
ZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNv
bnN0OwpAQCAtMjE5MywxMDIgKzE5MzEsMTQzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGFuZ2VS
ZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZShjb25zdCBSZW5kZXJTdHlsZSYs
IHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwogICAg
IGJvb2wgY2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiwg
dW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CiAKLSAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9Ci0gICAg
dm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2
KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRW
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV92aXNpdGVkTGlua0NvbHVtblJ1
bGVDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0
ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5r
VGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRW
aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwgdik7IH0KLQotICAgIHZv
aWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJvbShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50KSB7IG5v
bmluaGVyaXRlZF9mbGFncy5zZXRVbmljb2RlQmlkaShwYXJlbnQtPm5vbmluaGVyaXRlZF9mbGFn
cy51bmljb2RlQmlkaSgpKTsgfQotICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRv
d0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBi
b3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OwotICAgIExheW91dEJveEV4dGVudCBnZXRT
aGFkb3dJbnNldEV4dGVudChjb25zdCBTaGFkb3dEYXRhKikgY29uc3Q7Ci0gICAgdm9pZCBnZXRT
aGFkb3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBsZWZ0
LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRTaGFkb3dWZXJ0aWNhbEV4
dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBib3R0
b20pIGNvbnN0OwotICAgIHZvaWQgZ2V0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQm
IGxvZ2ljYWxSaWdodCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxM
ZWZ0LCBsb2dpY2FsUmlnaHQpIDogZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBsb2dp
Y2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsKLSAgICB9Ci0gICAgdm9pZCBnZXRTaGFkb3dCbG9ja0Rp
cmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxvZ2lj
YWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50
KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jpem9udGFs
RXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7Ci0gICAgfQorICAgIC8v
IG5vbi1pbmhlcml0ZWQgYXR0cmlidXRlcworICAgIERhdGFSZWY8U3R5bGVCb3hEYXRhPiBtX2Jv
eERhdGE7CisgICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+IG1fdmlzdWFsRGF0YTsKKyAgICBE
YXRhUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IG1fYmFja2dyb3VuZERhdGE7CisgICAgRGF0YVJl
ZjxTdHlsZVN1cnJvdW5kRGF0YT4gbV9zdXJyb3VuZERhdGE7CisgICAgRGF0YVJlZjxTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhPiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhOworICAgIE5vbkluaGVy
aXRlZEZsYWdzIG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAKLSAgICBib29sIGlzRGlzcGxheVJlcGxh
Y2VkVHlwZShFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRp
c3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5
ID09IElOTElORV9GTEVYCi0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAgICAg
IHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQKLSNlbmRpZgotICAgICAgICAgICAgfHwgZGlzcGxh
eSA9PSBJTkxJTkVfVEFCTEU7Ci0gICAgfQorICAgIC8vIGluaGVyaXRlZCBhdHRyaWJ1dGVzCisg
ICAgRGF0YVJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBtX3JhcmVJbmhlcml0ZWREYXRhOwor
ICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERhdGE7CisgICAgSW5o
ZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKIAotICAgIGJvb2wgaXNEaXNwbGF5SW5saW5l
VHlwZShFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRpc3Bs
YXkgPT0gSU5MSU5FIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsKLSAgICB9Cisg
ICAgLy8gbGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHNldWRvU3R5bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CiAKLSAgICBib29sIGlz
RGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVg7Ci0gICAg
fQorICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKLSAgICBib29sIGlz
RGlzcGxheUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0jaWYgRU5BQkxF
KENTU19HUklEX0xBWU9VVCkKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gR1JJRCB8fCBkaXNw
bGF5ID09IElOTElORV9HUklEOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXkp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUo
U0VDVVJJVFlfQVNTRVJUSU9OUykKKyAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZhbHNl
IH07CiAjZW5kaWYKLSAgICB9Cit9OwogCi0gICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3Jp
ZEJveChFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzRGlz
cGxheUZsZXhpYmxlQm94KGRpc3BsYXkpIHx8IGlzRGlzcGxheUdyaWRCb3goZGlzcGxheSk7Ci0g
ICAgfQoraW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQsIGNvbnN0IFJlbmRlclN0eWxlJik7
CitmbG9hdCBhZGp1c3RGbG9hdEZvckFic29sdXRlWm9vbShmbG9hdCwgY29uc3QgUmVuZGVyU3R5
bGUmKTsKK0xheW91dFVuaXQgYWRqdXN0TGF5b3V0VW5pdEZvckFic29sdXRlWm9vbShMYXlvdXRV
bml0LCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgLy8gQ29sb3IgYWNjZXNzb3JzIGFyZSBh
bGwgcHJpdmF0ZSB0byBtYWtlIHN1cmUgY2FsbGVycyB1c2UgdmlzaXRlZERlcGVuZGVudENvbG9y
IGluc3RlYWQgdG8gYWNjZXNzIHRoZW0uCi0gICAgc3RhdGljIENvbG9yIGludmFsaWRDb2xvcigp
IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyTGVmdENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuY29sb3IoKTsgfQotICAgIGNv
bnN0IENvbG9yJiBib3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5yaWdodCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyVG9wQ29sb3Io
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmNvbG9yKCk7IH0KLSAgICBj
b25zdCBDb2xvciYgYm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmJvdHRvbSgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5jb2xvcigpOyB9Ci0gICAgY29uc3Qg
Q29sb3ImIGNvbG9yKCkgY29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUu
Y29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmQtPm91dGxpbmUoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIHRl
eHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc0NvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQotICAgIGNvbnN0IENv
bG9yJiB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFN0cm9rZUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sb3IoKSBj
b25zdDsKLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVm
dENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtC
b3JkZXJCb3R0b21Db2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclRv
cENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExp
bmtCb3JkZXJUb3BDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua091dGxpbmVD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1f
dmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dERlY29y
YXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRE
ZWNvcmF0aW9uQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RGVjb3Jh
dGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRl
ZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
VGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlu
a1RleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRl
ZExpbmtUZXh0RmlsbENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dFN0
cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5r
VGV4dFN0cm9rZUNvbG9yOyB9CitFQm9yZGVyU3R5bGUgY29sbGFwc2VkQm9yZGVyU3R5bGUoRUJv
cmRlclN0eWxlKTsKIAotICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soaW50IGNvbG9y
UHJvcGVydHksIGJvb2wgdmlzaXRlZExpbmspIGNvbnN0OworYm9vbCBwc2V1ZG9FbGVtZW50UmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSopOwogCi0gICAgY29uc3QgQ29sb3ImIHN0
b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3RvcENvbG9yKCk7IH0KLSAgICBj
b25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmxvb2RD
b2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsgfQoraW5saW5lIFJlbmRlclN0eWxlOjpOb25J
bmhlcml0ZWRGbGFnczo6Tm9uSW5oZXJpdGVkRmxhZ3MoKQoreworICAgIC8vIEFsbCB0aGVzZSBp
bml0aWFsIHZhbHVlcyBuZWVkIHRvIGJlIHplcm8gc28gdGhhdCB6ZXJvLWluaXRpYWxpemluZyBt
X2ZsYWdzIGlzIGNvcnJlY3QuCisgICAgQVNTRVJUKCFpbml0aWFsT3ZlcmZsb3dYKCkpOworICAg
IEFTU0VSVCghaW5pdGlhbE92ZXJmbG93WSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxDbGVhcigp
KTsKKyAgICBBU1NFUlQoIWluaXRpYWxEaXNwbGF5KCkpOworICAgIEFTU0VSVCghaW5pdGlhbFVu
aWNvZGVCaWRpKCkpOworICAgIEFTU0VSVCghaW5pdGlhbFBvc2l0aW9uKCkpOworICAgIEFTU0VS
VCghaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSk7CisgICAgQVNTRVJUKCFpbml0aWFsRmxvYXRpbmco
KSk7CisgICAgQVNTRVJUKCFpbml0aWFsVGFibGVMYXlvdXQoKSk7Cit9CiAKLSAgICB2b2lkIGFw
cGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPik7Ci19OworaW5saW5lIHZv
aWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShj
b25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpCit7CisgICAgLy8gT25seSBhIHN1YnNldCBp
cyBjb3BpZWQgYmVjYXVzZSBOb25Jbmhlcml0ZWRGbGFncyBjb250YWlucyBhIGJ1bmNoIG9mIHN0
dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBkYXRhLgorICAgIHVpbnQ2NF90IG5vbkluaGVyaXRl
ZE1hc2sgPSBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dYT2Zmc2V0CisgICAgICAgIHwgb3ZlcmZs
b3dNYXNrIDw8IG92ZXJmbG93WU9mZnNldAorICAgICAgICB8IGNsZWFyTWFzayA8PCBjbGVhck9m
ZnNldAorICAgICAgICB8IGRpc3BsYXlNYXNrIDw8IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQKKyAg
ICAgICAgfCBwb3NpdGlvbk1hc2sgPDwgcG9zaXRpb25PZmZzZXQKKyAgICAgICAgfCBkaXNwbGF5
TWFzayA8PCBvcmlnaW5hbERpc3BsYXlPZmZzZXQKKyAgICAgICAgfCB1bmljb2RlQmlkaU1hc2sg
PDwgdW5pY29kZUJpZGlPZmZzZXQKKyAgICAgICAgfCB2ZXJ0aWNhbEFsaWduTWFzayA8PCB2ZXJ0
aWNhbEFsaWduT2Zmc2V0CisgICAgICAgIHwgZmxvYXRpbmdNYXNrIDw8IGZsb2F0aW5nT2Zmc2V0
CisgICAgICAgIHwgb25lQml0TWFzayA8PCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0CisgICAg
ICAgIHwgdGFibGVMYXlvdXRCaXRNYXNrIDw8IHRhYmxlTGF5b3V0T2Zmc2V0CisgICAgICAgIHwg
aGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c09mZnNldDsKKworICAg
IG1fZmxhZ3MgPSAobV9mbGFncyAmIH5ub25Jbmhlcml0ZWRNYXNrKSB8IChvdGhlci5tX2ZsYWdz
ICYgbm9uSW5oZXJpdGVkTWFzayk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpOb25J
bmhlcml0ZWRGbGFnczo6aGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAorewor
ICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7CisgICAgQVNTRVJUKHBzZXVkbyA8IEZJUlNU
X0lOVEVSTkFMX1BTRVVET0lEKTsKKyAgICByZXR1cm4gKG9uZUJpdE1hc2sgPDwgKHBzZXVkb0Jp
dHNPZmZzZXQgLSAxICsgcHNldWRvKSkgJiBtX2ZsYWdzOworfQorCitpbmxpbmUgdm9pZCBSZW5k
ZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBz
ZXVkbykKK3sKKyAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOworICAgIEFTU0VSVChwc2V1
ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7CisgICAgbV9mbGFncyB8PSBvbmVCaXRNYXNr
IDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7Cit9CisKK2lubGluZSB2b2lkIFJl
bmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lk
U2V0IHBzZXVkb0lkU2V0KQoreworICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7CisgICAgdWludDY0
X3QgcmF3UHNldWRvSWRTZXQgPSBwc2V1ZG9JZFNldC5kYXRhKCk7CisgICAgQVNTRVJUKChyYXdQ
c2V1ZG9JZFNldCAmIFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9PSByYXdQc2V1ZG9JZFNldCk7Cisg
ICAgc3RhdGljX2Fzc2VydChwc2V1ZG9CaXRzT2Zmc2V0ID49IDEsICIocHNldWRvQml0c09mZnNl
dCAtIDEpIHNob3VsZCBiZSB2YWxpZC4iKTsKKyAgICBtX2ZsYWdzIHw9IChzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmF3UHNldWRvSWRTZXQpIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkpOworfQor
CitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnVwZGF0ZUJvb2xl
YW4oYm9vbCBpc1NldCwgdWludDY0X3Qgb2Zmc2V0KQoreworICAgIGlmIChpc1NldCkKKyAgICAg
ICAgbV9mbGFncyB8PSAob25lQml0TWFzayA8PCBvZmZzZXQpOworICAgIGVsc2UKKyAgICAgICAg
bV9mbGFncyAmPSB+KG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpnZXRCb29sZWFuKHVpbnQ2NF90IG9mZnNldCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9mbGFncyAmIChvbmVCaXRNYXNrIDw8IG9mZnNldCk7Cit9
CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6dXBkYXRlVmFs
dWUodWludDhfdCBuZXdWYWx1ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVp
bnQ2NF90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIShuZXdWYWx1ZSAmIH5wb3NpdGlvbkluZGVw
ZW5kZW50TWFzaykpOworICAgIHVpbnQ2NF90IHBvc2l0aW9uRGVwZW5kZW50TWFzayA9IHBvc2l0
aW9uSW5kZXBlbmRlbnRNYXNrIDw8IG9mZnNldDsKKyAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+
cG9zaXRpb25EZXBlbmRlbnRNYXNrKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4obmV3VmFsdWUp
IDw8IG9mZnNldCk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpJbmhlcml0ZWRGbGFn
czo6b3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGVtcHR5Q2VsbHMgPT0gb3RoZXIuZW1wdHlDZWxscworICAgICAgICAmJiBjYXB0aW9u
U2lkZSA9PSBvdGhlci5jYXB0aW9uU2lkZQorICAgICAgICAmJiBsaXN0U3R5bGVUeXBlID09IG90
aGVyLmxpc3RTdHlsZVR5cGUKKyAgICAgICAgJiYgbGlzdFN0eWxlUG9zaXRpb24gPT0gb3RoZXIu
bGlzdFN0eWxlUG9zaXRpb24KKyAgICAgICAgJiYgdmlzaWJpbGl0eSA9PSBvdGhlci52aXNpYmls
aXR5CisgICAgICAgICYmIHRleHRBbGlnbiA9PSBvdGhlci50ZXh0QWxpZ24KKyAgICAgICAgJiYg
dGV4dFRyYW5zZm9ybSA9PSBvdGhlci50ZXh0VHJhbnNmb3JtCisgICAgICAgICYmIHRleHREZWNv
cmF0aW9ucyA9PSBvdGhlci50ZXh0RGVjb3JhdGlvbnMKKyAgICAgICAgJiYgY3Vyc29yID09IG90
aGVyLmN1cnNvcgorI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKKyAgICAgICAgJiYgY3Vy
c29yVmlzaWJpbGl0eSA9PSBvdGhlci5jdXJzb3JWaXNpYmlsaXR5CisjZW5kaWYKKyAgICAgICAg
JiYgZGlyZWN0aW9uID09IG90aGVyLmRpcmVjdGlvbgorICAgICAgICAmJiB3aGl0ZVNwYWNlID09
IG90aGVyLndoaXRlU3BhY2UKKyAgICAgICAgJiYgYm9yZGVyQ29sbGFwc2UgPT0gb3RoZXIuYm9y
ZGVyQ29sbGFwc2UKKyAgICAgICAgJiYgYm94RGlyZWN0aW9uID09IG90aGVyLmJveERpcmVjdGlv
bgorICAgICAgICAmJiBydGxPcmRlcmluZyA9PSBvdGhlci5ydGxPcmRlcmluZworICAgICAgICAm
JiBwcmludENvbG9yQWRqdXN0ID09IG90aGVyLnByaW50Q29sb3JBZGp1c3QKKyAgICAgICAgJiYg
cG9pbnRlckV2ZW50cyA9PSBvdGhlci5wb2ludGVyRXZlbnRzCisgICAgICAgICYmIGluc2lkZUxp
bmsgPT0gb3RoZXIuaW5zaWRlTGluaworICAgICAgICAmJiBpbnNpZGVEZWZhdWx0QnV0dG9uID09
IG90aGVyLmluc2lkZURlZmF1bHRCdXR0b24KKyAgICAgICAgJiYgd3JpdGluZ01vZGUgPT0gb3Ro
ZXIud3JpdGluZ01vZGU7Cit9CisKK2lubGluZSB1bnNpZ25lZCBSZW5kZXJTdHlsZTo6Tm9uSW5o
ZXJpdGVkRmxhZ3M6OmdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1
aW50NjRfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigobV9mbGFncyA+PiBvZmZzZXQpICYgcG9zaXRpb25JbmRlcGVuZGVudE1hc2spOworfQogCiBp
bmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKIHsKQEAgLTIzMjUsNTAgKzIxMDQsMjUzIEBAIGlubGluZSBFQm9yZGVyU3R5
bGUgY29sbGFwc2VkQm9yZGVyU3R5bGUoRUJvcmRlclN0eWxlIHN0eWxlKQogICAgIHJldHVybiBz
dHlsZTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFpvb20oZmxvYXQgZikKK2lu
bGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNCYWNrZ3JvdW5kKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5pc1Zp
c2libGUoKSB8fCAgaGFzQmFja2dyb3VuZEltYWdlKCk7Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjphdXRvV3JhcChFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQogewotICAgIHNldEVmZmVj
dGl2ZVpvb20oZWZmZWN0aXZlWm9vbSgpICogZik7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbCh2aXN1
YWwtPm1fem9vbSwgZikpCisgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGljYWxs
eSB3cmFwLgorICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PV1JBUCAmJiB3aGl0ZVNwYWNlICE9
IFBSRTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZShFV2hp
dGVTcGFjZSB3aGl0ZVNwYWNlKQoreworICAgIC8vIE5vcm1hbCBhbmQgbm93cmFwIGRvIG5vdCBw
cmVzZXJ2ZSBuZXdsaW5lcy4KKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBOT1JNQUwgJiYgd2hp
dGVTcGFjZSAhPSBOT1dSQVA7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpjb2xsYXBz
ZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2Ugd3MpCit7CisgICAgLy8gUHJlIGFuZCBwcmV3cmFwIGRv
IG5vdCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgorICAgIHJldHVybiB3cyAhPSBQUkUgJiYgd3MgIT0g
UFJFX1dSQVA7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0NvbGxhcHNpYmxlV2hp
dGVTcGFjZShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgc3dpdGNoIChjaGFyYWN0ZXIp
IHsKKyAgICBjYXNlICcgJzoKKyAgICBjYXNlICdcdCc6CisgICAgICAgIHJldHVybiBjb2xsYXBz
ZVdoaXRlU3BhY2UoKTsKKyAgICBjYXNlICdcbic6CisgICAgICAgIHJldHVybiAhcHJlc2VydmVO
ZXdsaW5lKCk7CisgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZpc3Vh
bC5hY2Nlc3MoKS0+bV96b29tID0gZjsKKyAgICB9Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0
eWxlOjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiB3aGl0
ZVNwYWNlKCkgPT0gUFJFX1dSQVAgfHwgbGluZUJyZWFrKCkgPT0gTGluZUJyZWFrQWZ0ZXJXaGl0
ZVNwYWNlOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YnJlYWtXb3JkcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHdvcmRCcmVhaygpID09IEJyZWFrV29yZEJyZWFrIHx8IG92ZXJmbG93
V3JhcCgpID09IEJyZWFrT3ZlcmZsb3dXcmFwOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHls
ZTo6aGFzSW5saW5lQ29sdW1uQXhpcygpIGNvbnN0Cit7CisgICAgYXV0byBheGlzID0gY29sdW1u
QXhpcygpOworICAgIHJldHVybiBheGlzID09IEF1dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gSG9yaXpvbnRhbENvbHVtbkF4aXMpOworfQorCitp
bmxpbmUgSW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24o
KSBjb25zdAoreworI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihtX3JhcmVJbmhlcml0ZWREYXRhLT5p
bWFnZU9yaWVudGF0aW9uKTsKKyNlbHNlCisgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRMb2dpY2FsV2lk
dGgoTGVuZ3RoJiYgbG9naWNhbFdpZHRoKQoreworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQorICAgICAgICBzZXRXaWR0aChXVEZNb3ZlKGxvZ2ljYWxXaWR0aCkpOworICAgIGVs
c2UKKyAgICAgICAgc2V0SGVpZ2h0KFdURk1vdmUobG9naWNhbFdpZHRoKSk7Cit9CisKK2lubGlu
ZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCYmIGxvZ2ljYWxIZWln
aHQpCit7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHNldEhl
aWdodChXVEZNb3ZlKGxvZ2ljYWxIZWlnaHQpKTsKKyAgICBlbHNlCisgICAgICAgIHNldFdpZHRo
KFdURk1vdmUobG9naWNhbEhlaWdodCkpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUmJiBzaXplKQoreworICAgIHNldEJvcmRlclRvcExl
ZnRSYWRpdXMoTGVuZ3RoU2l6ZSB7IHNpemUgfSk7CisgICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRp
dXMoTGVuZ3RoU2l6ZSB7IHNpemUgfSk7CisgICAgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhM
ZW5ndGhTaXplIHsgc2l6ZSB9KTsKKyAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhXVEZN
b3ZlKHNpemUpKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1
cyhjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXpl
IHsgeyBzaXplLndpZHRoKCksIEZpeGVkIH0sIHsgc2l6ZS5oZWlnaHQoKSwgRml4ZWQgfSB9KTsK
K30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFpvb20oZmxvYXQgem9vbUxldmVsKQor
eworICAgIHNldEVmZmVjdGl2ZVpvb20oZWZmZWN0aXZlWm9vbSgpICogem9vbUxldmVsKTsKKyAg
ICBpZiAoY29tcGFyZUVxdWFsKG1fdmlzdWFsRGF0YS0+em9vbSwgem9vbUxldmVsKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIG1fdmlzdWFsRGF0YS5hY2Nlc3MoKS56b29tID0gem9vbUxl
dmVsOwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0
RWZmZWN0aXZlWm9vbShmbG9hdCBmKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldEVmZmVj
dGl2ZVpvb20oZmxvYXQgem9vbUxldmVsKQogewotICAgIGlmIChjb21wYXJlRXF1YWwocmFyZUlu
aGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSwgZikpCisgICAgaWYgKGNvbXBhcmVFcXVhbCht
X3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tLCB6b29tTGV2ZWwpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZWZmZWN0aXZl
Wm9vbSA9IGY7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5lZmZlY3RpdmVab29t
ID0gem9vbUxldmVsOwogICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJT
dHlsZTo6c2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24p
CiB7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbChyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50
YXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pKSkKKyAgICBpZiAo
Y29tcGFyZUVxdWFsKG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRleHRPcmllbnRhdGlvbikpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50ZXh0T3JpZW50YXRpb24gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odGV4dE9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEJhY2tncm91bmRMYXllcnMoKQorewor
ICAgIGlmIChiYWNrZ3JvdW5kTGF5ZXJzKCkubmV4dCgpKSB7CisgICAgICAgIGVuc3VyZUJhY2tn
cm91bmRMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAgZW5zdXJlQmFja2dyb3Vu
ZExheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lk
IFJlbmRlclN0eWxlOjphZGp1c3RNYXNrTGF5ZXJzKCkKK3sKKyAgICBpZiAobWFza0xheWVycygp
Lm5leHQoKSkgeworICAgICAgICBlbnN1cmVNYXNrTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7
CisgICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7CisgICAg
fQorfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJBbmltYXRpb25zKCkKK3sKKyAg
ICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBudWxscHRyOwor
fQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJUcmFuc2l0aW9ucygpCit7CisgICAg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG51bGxwdHI7Cit9
CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBl
VmFsdWU+JiYgdmFsdWUpCit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBl
T3V0c2lkZSA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuc2hhcGVPdXRzaWRlID0gV1RGTW92ZSh2YWx1ZSk7Cit9CisKK2lubGlu
ZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0IHNoYXBlSW1h
Z2VUaHJlc2hvbGQpCit7CisgICAgZmxvYXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBj
bGFtcFRvPGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xkLCAwLCAxKTsKKyAgICBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRTaGFwZUlt
YWdlVGhyZXNob2xkKTsKK30KIAotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Rl
eHRPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pOwor
aW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJh
dGlvbj4mJiBvcGVyYXRpb24pCit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNs
aXBQYXRoICE9IG9wZXJhdGlvbikKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5jbGlwUGF0aCA9IFdURk1vdmUob3BlcmF0aW9uKTsKK30KKworaW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6OndpbGxDaGFuZ2VDcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gd2lsbENoYW5nZSgpICYmIHdpbGxDaGFuZ2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdD
b250ZXh0KCk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25U
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXko
KSA9PSBJTkxJTkVfQkxPQ0sKKyAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwg
ZGlzcGxheSgpID09IFRBQkxFX0NBUFRJT04KKyAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1Rf
SVRFTTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFdyaXRpbmdNb2RlKFdyaXRp
bmdNb2RlIHYpCit7CisgICAgaWYgKHYgPT0gd3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUgPSB2OwogICAgIHJldHVy
biB0cnVlOwogfQogCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5saW5lRGly
ZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNh
bExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93
LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNo
YWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRl
clN0eWxlOjpnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3csIExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20p
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFk
b3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0
U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
OworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVE
aXNwbGF5IGRpc3BsYXkpCit7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8
IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYCisjaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRAor
I2VuZGlmCisgICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZShFRGlzcGxheSBkaXNwbGF5KQor
eworICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUo
ZGlzcGxheSk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJs
ZUJveChFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVybiBkaXNwbGF5ID09IEZMRVggfHwg
ZGlzcGxheSA9PSBJTkxJTkVfRkxFWDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omlz
RGlzcGxheUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK3sKKyNpZiBFTkFCTEUoQ1NTX0dSSURf
TEFZT1VUKQorICAgIHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVf
R1JJRDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXkpOworICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGli
bGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK3sKKyAgICByZXR1cm4gaXNEaXNwbGF5Rmxl
eGlibGVCb3goZGlzcGxheSkgfHwgaXNEaXNwbGF5R3JpZEJveChkaXNwbGF5KTsKK30KKwogaW5s
aW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMo
KTsKKyAgICByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHls
ZXMoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1BzZXVkb1N0eWxlKFBzZXVk
b0lkIHBzZXVkbykgY29uc3QKIHsKLSAgICByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1Bz
ZXVkb1N0eWxlKHBzZXVkbyk7CisgICAgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzUHNl
dWRvU3R5bGUocHNldWRvKTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc1Bz
ZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykKIHsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0
SGFzUHNldWRvU3R5bGUocHNldWRvKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1Bz
ZXVkb1N0eWxlKHBzZXVkbyk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNQ
c2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQgcHNldWRvSWRTZXQpCiB7Ci0gICAgbm9uaW5oZXJpdGVk
X2ZsYWdzLnNldEhhc1BzZXVkb1N0eWxlcyhwc2V1ZG9JZFNldCk7CisgICAgbV9ub25Jbmhlcml0
ZWRGbGFncy5zZXRIYXNQc2V1ZG9TdHlsZXMocHNldWRvSWRTZXQpOworfQorCitpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Qm94UmVmbGVjdChSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiYmIHJl
ZmxlY3QpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3hSZWZsZWN0
LCBXVEZNb3ZlKHJlZmxlY3QpKTsKIH0KIAogaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKaW5kZXggNmMwMmU1MDhhZjFh
YTM4YjIyYzJmMjM5OWZkZDUyNDdhZTM0MWM5Zi4uZTQ2OGY4OWQ4MTEzYzg4ZDYwZTU0MTJhMGFi
ZjBjMmZiYjllMDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGUuY3BwCkBAIC00OSw0NiArNDksNDYgQEAgUmVmPFNWR1JlbmRlclN0eWxl
PiBTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkKIH0KIAogU1ZHUmVuZGVyU3R5
bGU6OlNWR1JlbmRlclN0eWxlKCkKLSAgICA6IGZpbGwoZGVmYXVsdFNWR1N0eWxlKCkuZmlsbCkK
LSAgICAsIHN0cm9rZShkZWZhdWx0U1ZHU3R5bGUoKS5zdHJva2UpCi0gICAgLCB0ZXh0KGRlZmF1
bHRTVkdTdHlsZSgpLnRleHQpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoZGVmYXVsdFNWR1N0
eWxlKCkuaW5oZXJpdGVkUmVzb3VyY2VzKQotICAgICwgc3RvcHMoZGVmYXVsdFNWR1N0eWxlKCku
c3RvcHMpCi0gICAgLCBtaXNjKGRlZmF1bHRTVkdTdHlsZSgpLm1pc2MpCi0gICAgLCBzaGFkb3dT
VkcoZGVmYXVsdFNWR1N0eWxlKCkuc2hhZG93U1ZHKQotICAgICwgbGF5b3V0KGRlZmF1bHRTVkdT
dHlsZSgpLmxheW91dCkKLSAgICAsIHJlc291cmNlcyhkZWZhdWx0U1ZHU3R5bGUoKS5yZXNvdXJj
ZXMpCisgICAgOiBtX2ZpbGxEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fZmlsbERhdGEpCisgICAg
LCBtX3N0cm9rZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9zdHJva2VEYXRhKQorICAgICwgbV90
ZXh0RGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX3RleHREYXRhKQorICAgICwgbV9pbmhlcml0ZWRS
ZXNvdXJjZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEpCisg
ICAgLCBtX3N0b3BEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fc3RvcERhdGEpCisgICAgLCBtX21p
c2NEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fbWlzY0RhdGEpCisgICAgLCBtX3NoYWRvd0RhdGEo
ZGVmYXVsdFNWR1N0eWxlKCkubV9zaGFkb3dEYXRhKQorICAgICwgbV9sYXlvdXREYXRhKGRlZmF1
bHRTVkdTdHlsZSgpLm1fbGF5b3V0RGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VE
YXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKQogewogICAg
IHNldEJpdERlZmF1bHRzKCk7CiB9CiAKIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShD
cmVhdGVEZWZhdWx0VHlwZSkKLSAgICA6IGZpbGwoU3R5bGVGaWxsRGF0YTo6Y3JlYXRlKCkpCi0g
ICAgLCBzdHJva2UoU3R5bGVTdHJva2VEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHRleHQoU3R5bGVU
ZXh0RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoU3R5bGVJbmhlcml0
ZWRSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQotICAgICwgc3RvcHMoU3R5bGVTdG9wRGF0YTo6Y3Jl
YXRlKCkpCi0gICAgLCBtaXNjKFN0eWxlTWlzY0RhdGE6OmNyZWF0ZSgpKQotICAgICwgc2hhZG93
U1ZHKFN0eWxlU2hhZG93U1ZHRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBsYXlvdXQoU3R5bGVMYXlv
dXREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHJlc291cmNlcyhTdHlsZVJlc291cmNlRGF0YTo6Y3Jl
YXRlKCkpCisgICAgOiBtX2ZpbGxEYXRhKFN0eWxlRmlsbERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9zdHJva2VEYXRhKFN0eWxlU3Ryb2tlRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3RleHREYXRh
KFN0eWxlVGV4dERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEo
U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdG9wRGF0YShT
dHlsZVN0b3BEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fbWlzY0RhdGEoU3R5bGVNaXNjRGF0YTo6
Y3JlYXRlKCkpCisgICAgLCBtX3NoYWRvd0RhdGEoU3R5bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUo
KSkKKyAgICAsIG1fbGF5b3V0RGF0YShTdHlsZUxheW91dERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQog
ewogICAgIHNldEJpdERlZmF1bHRzKCk7CiB9CiAKIGlubGluZSBTVkdSZW5kZXJTdHlsZTo6U1ZH
UmVuZGVyU3R5bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogICAgIDogUmVmQ291bnRl
ZDxTVkdSZW5kZXJTdHlsZT4oKQotICAgICwgc3ZnX2luaGVyaXRlZF9mbGFncyhvdGhlci5zdmdf
aW5oZXJpdGVkX2ZsYWdzKQotICAgICwgc3ZnX25vbmluaGVyaXRlZF9mbGFncyhvdGhlci5zdmdf
bm9uaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgZmlsbChvdGhlci5maWxsKQotICAgICwgc3Ryb2tl
KG90aGVyLnN0cm9rZSkKLSAgICAsIHRleHQob3RoZXIudGV4dCkKLSAgICAsIGluaGVyaXRlZFJl
c291cmNlcyhvdGhlci5pbmhlcml0ZWRSZXNvdXJjZXMpCi0gICAgLCBzdG9wcyhvdGhlci5zdG9w
cykKLSAgICAsIG1pc2Mob3RoZXIubWlzYykKLSAgICAsIHNoYWRvd1NWRyhvdGhlci5zaGFkb3dT
VkcpCi0gICAgLCBsYXlvdXQob3RoZXIubGF5b3V0KQotICAgICwgcmVzb3VyY2VzKG90aGVyLnJl
c291cmNlcykKKyAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykK
KyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncykKKyAg
ICAsIG1fZmlsbERhdGEob3RoZXIubV9maWxsRGF0YSkKKyAgICAsIG1fc3Ryb2tlRGF0YShvdGhl
ci5tX3N0cm9rZURhdGEpCisgICAgLCBtX3RleHREYXRhKG90aGVyLm1fdGV4dERhdGEpCisgICAg
LCBtX2luaGVyaXRlZFJlc291cmNlRGF0YShvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YSkK
KyAgICAsIG1fc3RvcERhdGEob3RoZXIubV9zdG9wRGF0YSkKKyAgICAsIG1fbWlzY0RhdGEob3Ro
ZXIubV9taXNjRGF0YSkKKyAgICAsIG1fc2hhZG93RGF0YShvdGhlci5tX3NoYWRvd0RhdGEpCisg
ICAgLCBtX2xheW91dERhdGEob3RoZXIubV9sYXlvdXREYXRhKQorICAgICwgbV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGEob3RoZXIubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEpCiB7CiB9CiAK
QEAgLTEwMyw0OSArMTAzLDQ2IEBAIFNWR1JlbmRlclN0eWxlOjp+U1ZHUmVuZGVyU3R5bGUoKQog
CiBib29sIFNWR1JlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBv
dGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsbCA9PSBvdGhlci5maWxsCi0gICAgICAgICYm
IHN0cm9rZSA9PSBvdGhlci5zdHJva2UKLSAgICAgICAgJiYgdGV4dCA9PSBvdGhlci50ZXh0Ci0g
ICAgICAgICYmIHN0b3BzID09IG90aGVyLnN0b3BzCi0gICAgICAgICYmIG1pc2MgPT0gb3RoZXIu
bWlzYwotICAgICAgICAmJiBzaGFkb3dTVkcgPT0gb3RoZXIuc2hhZG93U1ZHCi0gICAgICAgICYm
IGxheW91dCA9PSBvdGhlci5sYXlvdXQKLSAgICAgICAgJiYgaW5oZXJpdGVkUmVzb3VyY2VzID09
IG90aGVyLmluaGVyaXRlZFJlc291cmNlcwotICAgICAgICAmJiByZXNvdXJjZXMgPT0gb3RoZXIu
cmVzb3VyY2VzCi0gICAgICAgICYmIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX2lu
aGVyaXRlZF9mbGFncwotICAgICAgICAmJiBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzID09IG90aGVy
LnN2Z19ub25pbmhlcml0ZWRfZmxhZ3M7CisgICAgcmV0dXJuIG1fZmlsbERhdGEgPT0gb3RoZXIu
bV9maWxsRGF0YQorICAgICAgICAmJiBtX3N0cm9rZURhdGEgPT0gb3RoZXIubV9zdHJva2VEYXRh
CisgICAgICAgICYmIG1fdGV4dERhdGEgPT0gb3RoZXIubV90ZXh0RGF0YQorICAgICAgICAmJiBt
X3N0b3BEYXRhID09IG90aGVyLm1fc3RvcERhdGEKKyAgICAgICAgJiYgbV9taXNjRGF0YSA9PSBv
dGhlci5tX21pc2NEYXRhCisgICAgICAgICYmIG1fc2hhZG93RGF0YSA9PSBvdGhlci5tX3NoYWRv
d0RhdGEKKyAgICAgICAgJiYgbV9sYXlvdXREYXRhID09IG90aGVyLm1fbGF5b3V0RGF0YQorICAg
ICAgICAmJiBtX2luaGVyaXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZFJlc291
cmNlRGF0YQorICAgICAgICAmJiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5t
X25vbkluaGVyaXRlZFJlc291cmNlRGF0YQorICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzID09
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncyA9
PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzOwogfQogCi1ib29sIFNWR1JlbmRlclN0eWxlOjpp
bmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0Citib29s
IFNWR1JlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSYg
b3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbGwgIT0gb3RoZXItPmZpbGwKLSAgICAgICAg
fHwgc3Ryb2tlICE9IG90aGVyLT5zdHJva2UKLSAgICAgICAgfHwgdGV4dCAhPSBvdGhlci0+dGV4
dAotICAgICAgICB8fCBpbmhlcml0ZWRSZXNvdXJjZXMgIT0gb3RoZXItPmluaGVyaXRlZFJlc291
cmNlcwotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5zdmdfaW5oZXJp
dGVkX2ZsYWdzOworICAgIHJldHVybiBtX2ZpbGxEYXRhICE9IG90aGVyLm1fZmlsbERhdGEKKyAg
ICAgICAgfHwgbV9zdHJva2VEYXRhICE9IG90aGVyLm1fc3Ryb2tlRGF0YQorICAgICAgICB8fCBt
X3RleHREYXRhICE9IG90aGVyLm1fdGV4dERhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRSZXNv
dXJjZURhdGEgIT0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEKKyAgICAgICAgfHwgbV9p
bmhlcml0ZWRGbGFncyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzOwogfQogCi12b2lkIFNWR1Jl
bmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnSW5oZXJpdFBh
cmVudCkKK3ZvaWQgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0
eWxlJiBvdGhlcikKIHsKLSAgICBpZiAoIXN2Z0luaGVyaXRQYXJlbnQpCi0gICAgICAgIHJldHVy
bjsKKyAgICBtX2ZpbGxEYXRhID0gb3RoZXIubV9maWxsRGF0YTsKKyAgICBtX3N0cm9rZURhdGEg
PSBvdGhlci5tX3N0cm9rZURhdGE7CisgICAgbV90ZXh0RGF0YSA9IG90aGVyLm1fdGV4dERhdGE7
CisgICAgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgPSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNl
RGF0YTsKIAotICAgIGZpbGwgPSBzdmdJbmhlcml0UGFyZW50LT5maWxsOwotICAgIHN0cm9rZSA9
IHN2Z0luaGVyaXRQYXJlbnQtPnN0cm9rZTsKLSAgICB0ZXh0ID0gc3ZnSW5oZXJpdFBhcmVudC0+
dGV4dDsKLSAgICBpbmhlcml0ZWRSZXNvdXJjZXMgPSBzdmdJbmhlcml0UGFyZW50LT5pbmhlcml0
ZWRSZXNvdXJjZXM7Ci0KLSAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzID0gc3ZnSW5oZXJpdFBhcmVu
dC0+c3ZnX2luaGVyaXRlZF9mbGFnczsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gb3RoZXIubV9p
bmhlcml0ZWRGbGFnczsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRl
ZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKQordm9pZCBTVkdSZW5kZXJTdHlsZTo6
Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogewotICAg
IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MgPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFnczsK
LSAgICBzdG9wcyA9IG90aGVyLT5zdG9wczsKLSAgICBtaXNjID0gb3RoZXItPm1pc2M7Ci0gICAg
c2hhZG93U1ZHID0gb3RoZXItPnNoYWRvd1NWRzsKLSAgICBsYXlvdXQgPSBvdGhlci0+bGF5b3V0
OwotICAgIHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJjZXM7CisgICAgbV9ub25Jbmhlcml0ZWRG
bGFncyA9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3M7CisgICAgbV9zdG9wRGF0YSA9IG90aGVy
Lm1fc3RvcERhdGE7CisgICAgbV9taXNjRGF0YSA9IG90aGVyLm1fbWlzY0RhdGE7CisgICAgbV9z
aGFkb3dEYXRhID0gb3RoZXIubV9zaGFkb3dEYXRhOworICAgIG1fbGF5b3V0RGF0YSA9IG90aGVy
Lm1fbGF5b3V0RGF0YTsKKyAgICBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9IG90aGVyLm1f
bm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogfQogCiBWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdS
ZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdApAQCAtMTg4LDEwNCAr
MTg1LDEwNCBAQCBWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBl
c0ZvclBhaW50T3JkZXIoKSBjb25zdAogICAgIHJldHVybiBwYWludE9yZGVyOwogfQogCi1TdHls
ZURpZmZlcmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90
aGVyKSBjb25zdAorU3R5bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBBbGwgY29tcGFyaXNp
b25zIHRoYXQgbWF5IHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQgaGF2ZSB0byBnbyBiZWZv
cmUgdGhvc2Ugd2hvIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50CiAKICAgICAvLyBJZiBr
ZXJuaW5nIGNoYW5nZXMsIHdlIG5lZWQgYSByZWxheW91dCwgdG8gZm9yY2UgU1ZHQ2hhcmFjdGVy
RGF0YSB0byBiZSByZWNhbGN1bGF0ZWQgaW4gdGhlIFNWR1Jvb3RJbmxpbmVCb3guCi0gICAgaWYg
KHRleHQgIT0gb3RoZXItPnRleHQpCisgICAgaWYgKG1fdGV4dERhdGEgIT0gb3RoZXIubV90ZXh0
RGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElm
IHJlc291cmNlcyBjaGFuZ2UsIHdlIG5lZWQgYSByZWxheW91dCwgYXMgdGhlIHByZXNlbmNlIG9m
IHJlc291cmNlcyBpbmZsdWVuY2VzIHRoZSByZXBhaW50IHJlY3QuCi0gICAgaWYgKHJlc291cmNl
cyAhPSBvdGhlci0+cmVzb3VyY2VzKQorICAgIGlmIChtX25vbkluaGVyaXRlZFJlc291cmNlRGF0
YSAhPSBvdGhlci5tX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0
eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElmIG1hcmtlcnMgY2hhbmdlLCB3ZSBuZWVk
IGEgcmVsYXlvdXQsIGFzIG1hcmtlciBib3VuZGFyaWVzIGFyZSBjYWNoZWQgaW4gUmVuZGVyU1ZH
UGF0aC4KLSAgICBpZiAoaW5oZXJpdGVkUmVzb3VyY2VzICE9IG90aGVyLT5pbmhlcml0ZWRSZXNv
dXJjZXMpCisgICAgaWYgKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVyLm1faW5oZXJp
dGVkUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0Owog
CiAgICAgLy8gQWxsIHRleHQgcmVsYXRlZCBwcm9wZXJ0aWVzIGluZmx1ZW5jZSBsYXlvdXQuCi0g
ICAgaWYgKHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgIT0gb3RoZXItPnN2Z19pbmhl
cml0ZWRfZmxhZ3MuX3RleHRBbmNob3IKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5f
Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFn
cy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCi0gICAgICAgIHx8IHN2Z19ub25pbmhlcml0ZWRf
ZmxhZ3MuZi5fYWxpZ25tZW50QmFzZWxpbmUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5fYWxpZ25tZW50QmFzZWxpbmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFn
cy5mLl9kb21pbmFudEJhc2VsaW5lICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X2RvbWluYW50QmFzZWxpbmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9i
YXNlbGluZVNoaWZ0ICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5l
U2hpZnQpCisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLnRleHRBbmNob3IKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5nbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbCAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmdseXBoT3Jp
ZW50YXRpb25Ib3Jpem9udGFsCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlv
blZlcnRpY2FsCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25t
ZW50QmFzZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1l
bnRCYXNlbGluZQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWlu
YW50QmFzZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFu
dEJhc2VsaW5lCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxp
bmVTaGlmdCAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hp
ZnQpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBUZXh0
IHJlbGF0ZWQgcHJvcGVydGllcyBpbmZsdWVuY2UgbGF5b3V0LgotICAgIGJvb2wgbWlzY05vdEVx
dWFsID0gbWlzYyAhPSBvdGhlci0+bWlzYzsKLSAgICBpZiAobWlzY05vdEVxdWFsICYmIG1pc2Mt
PmJhc2VsaW5lU2hpZnRWYWx1ZSAhPSBvdGhlci0+bWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlKQor
ICAgIGJvb2wgbWlzY05vdEVxdWFsID0gbV9taXNjRGF0YSAhPSBvdGhlci5tX21pc2NEYXRhOwor
ICAgIGlmIChtaXNjTm90RXF1YWwgJiYgbV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlICE9
IG90aGVyLm1fbWlzY0RhdGEtPmJhc2VsaW5lU2hpZnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0
eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYWZmZWN0IHRo
ZSBjYWNoZWQgc3Ryb2tlIGJvdW5kaW5nIGJveCByZWN0cy4KLSAgICBpZiAoc3ZnX2luaGVyaXRl
ZF9mbGFncy5fY2FwU3R5bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxl
Ci0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSAhPSBvdGhlci0+c3Zn
X2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmNh
cFN0eWxlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUKKyAgICAgICAgfHwgbV9p
bmhlcml0ZWRGbGFncy5qb2luU3R5bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5qb2luU3R5
bGUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBTaGFk
b3cgY2hhbmdlcyByZXF1aXJlIHJlbGF5b3V0cywgYXMgdGhleSBhZmZlY3QgdGhlIHJlcGFpbnQg
cmVjdHMuCi0gICAgaWYgKHNoYWRvd1NWRyAhPSBvdGhlci0+c2hhZG93U1ZHKQorICAgIGlmICht
X3NoYWRvd0RhdGEgIT0gb3RoZXIubV9zaGFkb3dEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVE
aWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gVGhlIHggb3IgeSBwcm9wZXJ0aWVzIHJlcXVpcmUg
cmVsYXlvdXQuCi0gICAgaWYgKGxheW91dCAhPSBvdGhlci0+bGF5b3V0KQorICAgIGlmIChtX2xh
eW91dERhdGEgIT0gb3RoZXIubV9sYXlvdXREYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0OyAKIAogICAgIC8vIFNvbWUgc3Ryb2tlIHByb3BlcnRpZXMsIHJlcXVpcmVz
IHJlbGF5b3V0cywgYXMgdGhlIGNhY2hlZCBzdHJva2UgYm91bmRhcmllcyBuZWVkIHRvIGJlIHJl
Y2FsY3VsYXRlZC4KLSAgICBpZiAoc3Ryb2tlICE9IG90aGVyLT5zdHJva2UpIHsKLSAgICAgICAg
aWYgKHN0cm9rZS0+d2lkdGggIT0gb3RoZXItPnN0cm9rZS0+d2lkdGgKLSAgICAgICAgICAgIHx8
IHN0cm9rZS0+cGFpbnRUeXBlICE9IG90aGVyLT5zdHJva2UtPnBhaW50VHlwZQotICAgICAgICAg
ICAgfHwgc3Ryb2tlLT5wYWludENvbG9yICE9IG90aGVyLT5zdHJva2UtPnBhaW50Q29sb3IKLSAg
ICAgICAgICAgIHx8IHN0cm9rZS0+cGFpbnRVcmkgIT0gb3RoZXItPnN0cm9rZS0+cGFpbnRVcmkK
LSAgICAgICAgICAgIHx8IHN0cm9rZS0+bWl0ZXJMaW1pdCAhPSBvdGhlci0+c3Ryb2tlLT5taXRl
ckxpbWl0Ci0gICAgICAgICAgICB8fCBzdHJva2UtPmRhc2hBcnJheSAhPSBvdGhlci0+c3Ryb2tl
LT5kYXNoQXJyYXkKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+ZGFzaE9mZnNldCAhPSBvdGhlci0+
c3Ryb2tlLT5kYXNoT2Zmc2V0Ci0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFp
bnRDb2xvciAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IKLSAgICAgICAg
ICAgIHx8IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVyaSAhPSBvdGhlci0+c3Ryb2tlLT52aXNp
dGVkTGlua1BhaW50VXJpCi0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRU
eXBlICE9IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKQorICAgIGlmIChtX3N0
cm9rZURhdGEgIT0gb3RoZXIubV9zdHJva2VEYXRhKSB7CisgICAgICAgIGlmIChtX3N0cm9rZURh
dGEtPndpZHRoICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+d2lkdGgKKyAgICAgICAgICAgIHx8IG1f
c3Ryb2tlRGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlCisg
ICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50Q29sb3IgIT0gb3RoZXIubV9zdHJva2VE
YXRhLT5wYWludENvbG9yCisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50VXJpICE9
IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRVcmkKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0
YS0+bWl0ZXJMaW1pdCAhPSBvdGhlci5tX3N0cm9rZURhdGEtPm1pdGVyTGltaXQKKyAgICAgICAg
ICAgIHx8IG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+ZGFz
aEFycmF5CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgIT0gb3RoZXIu
bV9zdHJva2VEYXRhLT5kYXNoT2Zmc2V0CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnZp
c2l0ZWRMaW5rUGFpbnRDb2xvciAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFp
bnRDb2xvcgorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJp
ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaQorICAgICAgICAgICAg
fHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSAhPSBvdGhlci5tX3N0cm9rZURh
dGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVy
ZW5jZUxheW91dDsKIAogICAgICAgICAvLyBPbmx5IHRoZSBzdHJva2Utb3BhY2l0eSBjYXNlIHJl
bWFpbnMsIHdoZXJlIHdlIG9ubHkgbmVlZCBhIHJlcGFpbnQuCi0gICAgICAgIEFTU0VSVChzdHJv
a2UtPm9wYWNpdHkgIT0gb3RoZXItPnN0cm9rZS0+b3BhY2l0eSk7CisgICAgICAgIEFTU0VSVCht
X3N0cm9rZURhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5vcGFjaXR5KTsKICAg
ICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCiAgICAgLy8gdmVj
dG9yLWVmZmVjdCBjaGFuZ2VzIHJlcXVpcmUgYSByZS1sYXlvdXQuCi0gICAgaWYgKHN2Z19ub25p
bmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy52ZWN0b3JFZmZlY3QgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52
ZWN0b3JFZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAg
ICAvLyBOT1RFOiBBbGwgY29tcGFyaXNpb25zIGJlbG93IG1heSBvbmx5IHJldHVybiBTdHlsZURp
ZmZlcmVuY2VSZXBhaW50CiAKICAgICAvLyBQYWludGluZyByZWxhdGVkIHByb3BlcnRpZXMgb25s
eSBuZWVkIHJlcGFpbnRzLiAKICAgICBpZiAobWlzY05vdEVxdWFsKSB7Ci0gICAgICAgIGlmICht
aXNjLT5mbG9vZENvbG9yICE9IG90aGVyLT5taXNjLT5mbG9vZENvbG9yCi0gICAgICAgICAgICB8
fCBtaXNjLT5mbG9vZE9wYWNpdHkgIT0gb3RoZXItPm1pc2MtPmZsb29kT3BhY2l0eQotICAgICAg
ICAgICAgfHwgbWlzYy0+bGlnaHRpbmdDb2xvciAhPSBvdGhlci0+bWlzYy0+bGlnaHRpbmdDb2xv
cikKKyAgICAgICAgaWYgKG1fbWlzY0RhdGEtPmZsb29kQ29sb3IgIT0gb3RoZXIubV9taXNjRGF0
YS0+Zmxvb2RDb2xvcgorICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5ICE9
IG90aGVyLm1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eQorICAgICAgICAgICAgfHwgbV9taXNjRGF0
YS0+bGlnaHRpbmdDb2xvciAhPSBvdGhlci5tX21pc2NEYXRhLT5saWdodGluZ0NvbG9yKQogICAg
ICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCi0gICAgLy8g
SWYgZmlsbCBjaGFuZ2VzLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYWludC4gRmlsbCBib3VuZGFyaWVz
IGFyZSBub3QgaW5mbHVlbmNlZCBieSB0aGlzLCBvbmx5IGJ5IHRoZSBQYXRoLCB0aGF0IFJlbmRl
clNWR1BhdGggY29udGFpbnMuCi0gICAgaWYgKGZpbGwtPnBhaW50VHlwZSAhPSBvdGhlci0+Zmls
bC0+cGFpbnRUeXBlIHx8IGZpbGwtPnBhaW50Q29sb3IgIT0gb3RoZXItPmZpbGwtPnBhaW50Q29s
b3IKLSAgICAgICAgfHwgZmlsbC0+cGFpbnRVcmkgIT0gb3RoZXItPmZpbGwtPnBhaW50VXJpIHx8
IGZpbGwtPm9wYWNpdHkgIT0gb3RoZXItPmZpbGwtPm9wYWNpdHkpCisgICAgLy8gSWYgZmlsbCBk
YXRhIGNoYW5nZXMsIHdlIGp1c3QgbmVlZCB0byByZXBhaW50LiBGaWxsIGJvdW5kYXJpZXMgYXJl
IG5vdCBpbmZsdWVuY2VkIGJ5IHRoaXMsIG9ubHkgYnkgdGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZH
UGF0aCBjb250YWlucy4KKyAgICBpZiAobV9maWxsRGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1f
ZmlsbERhdGEtPnBhaW50VHlwZSB8fCBtX2ZpbGxEYXRhLT5wYWludENvbG9yICE9IG90aGVyLm1f
ZmlsbERhdGEtPnBhaW50Q29sb3IKKyAgICAgICAgfHwgbV9maWxsRGF0YS0+cGFpbnRVcmkgIT0g
b3RoZXIubV9maWxsRGF0YS0+cGFpbnRVcmkgfHwgbV9maWxsRGF0YS0+b3BhY2l0eSAhPSBvdGhl
ci5tX2ZpbGxEYXRhLT5vcGFjaXR5KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVw
YWludDsKIAogICAgIC8vIElmIGdyYWRpZW50IHN0b3BzIGNoYW5nZSwgd2UganVzdCBuZWVkIHRv
IHJlcGFpbnQuIFN0eWxlIHVwZGF0ZXMgYXJlIGFscmVhZHkgaGFuZGxlZCB0aHJvdWdoIFJlbmRl
clNWR0dyYWRpZW50U1RvcC4KLSAgICBpZiAoc3RvcHMgIT0gb3RoZXItPnN0b3BzKQorICAgIGlm
IChtX3N0b3BEYXRhICE9IG90aGVyLm1fc3RvcERhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURp
ZmZlcmVuY2VSZXBhaW50OwogCiAgICAgLy8gQ2hhbmdlcyBvZiB0aGVzZSBmbGFncyBvbmx5IGNh
dXNlIHJlcGFpbnRzLgotICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmlu
ZyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmcKLSAgICAgICAg
fHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXItPnN2Z19pbmhl
cml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2NsaXBSdWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZQotICAg
ICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxsUnVsZSAhPSBvdGhlci0+c3ZnX2luaGVy
aXRlZF9mbGFncy5fZmlsbFJ1bGUKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29s
b3JJbnRlcnBvbGF0aW9uICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVy
cG9sYXRpb24KLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVycyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVycykKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZyAhPSBv
dGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nCisgICAgICAgIHx8IG1faW5oZXJp
dGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5zaGFwZVJl
bmRlcmluZworICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlICE9IG90aGVyLm1f
aW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5maWxs
UnVsZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlCisgICAgICAgIHx8IG1faW5o
ZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
Y29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRl
cnBvbGF0aW9uRmlsdGVycyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0g
ICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyAhPSBvdGhl
ci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nKQorICAgIGlmICht
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLm1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcpCiAgICAgICAgIHJl
dHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRf
ZmxhZ3MuZi5tYXNrVHlwZSAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tU
eXBlKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlICE9IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUpCiAgICAgICAgIHJldHVy
biBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCiAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUVx
dWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aAppbmRleCAzOTE5NzVhNThiOTUwZTdkNjc0YjY4YTdiZmE2NTNhN2Y3ODc0MTZmLi42NjlhMmMw
OTgzZTJhMmIyNGRjYWZlODU3MzE3YjkyNGIxNDQ4MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgotICAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICAgIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKQEAgLTIzLDcgKzIzLDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEYXRh
UmVmLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAg
LTMyLDI1ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVj
dDsKLWNsYXNzIEludFJlY3Q7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7Ci0KLWNsYXNzIFNWR1JlbmRl
clN0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+IHsgICAgCitjbGFzcyBT
VkdSZW5kZXJTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1JlbmRlclN0eWxlPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7
CiAgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdSZW5kZXJTdHlsZSk7IH0KICAgICBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNvcHko
KSBjb25zdDsKICAgICB+U1ZHUmVuZGVyU3R5bGUoKTsKIAotICAgIGJvb2wgaW5oZXJpdGVkTm90
RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICB2b2lkIGluaGVyaXRGcm9t
KGNvbnN0IFNWR1JlbmRlclN0eWxlKik7Ci0gICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShj
b25zdCBTVkdSZW5kZXJTdHlsZSopOworICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwoY29uc3Qg
U1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFNWR1Jl
bmRlclN0eWxlJik7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5k
ZXJTdHlsZSYpOwogCi0gICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5
bGUqKSBjb25zdDsKKyAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5kZXJTdHls
ZSYpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
IAogICAgIC8vIEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0
aWMgRUFsaWdubWVudEJhc2VsaW5lIGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpIHsgcmV0dXJu
IEFCX0FVVE87IH0KQEAgLTg0LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsRmxvb2RPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0
aWFsRmxvb2RDb2xvcigpIHsgcmV0dXJuIENvbG9yKDAsIDAsIDApOyB9CiAgICAgc3RhdGljIENv
bG9yIGluaXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDI1NSk7
IH0KLSAgICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIDA7IH0K
KyAgICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxDbGlwcGVyUmVzb3VyY2UoKSB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hc2tlclJlc291cmNlKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJTdGFydFJl
c291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTkyLDI4NyArODcsMTIyIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgc3RhdGljIEVNYXNrVHlwZSBpbml0aWFsTWFza1R5cGUoKSB7IHJl
dHVybiBNVF9MVU1JTkFOQ0U7IH0KICAgICBzdGF0aWMgUGFpbnRPcmRlciBpbml0aWFsUGFpbnRP
cmRlcigpIHsgcmV0dXJuIFBhaW50T3JkZXJOb3JtYWw7IH0KLQotICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMo
TGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQotCi0g
ICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkKLSAgICB7Ci0gICAgICAg
IFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVk
VW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAg
fQorICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7
CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCk7CiAKICAgICAvLyBT
VkcgQ1NTIFByb3BlcnR5IHNldHRlcnMKLSAgICB2b2lkIHNldEFsaWdubWVudEJhc2VsaW5lKEVB
bGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1l
bnRCYXNlbGluZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5h
bnRCYXNlbGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2Vs
aW5lID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZh
bCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSB2YWw7IH0KLSAg
ICB2b2lkIHNldFZlY3RvckVmZmVjdChFVmVjdG9yRWZmZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJp
dGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IHZhbDsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRS
ZW5kZXJpbmcoRUJ1ZmZlcmVkUmVuZGVyaW5nIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuYnVmZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KLSAgICB2b2lkIHNldENhcFN0eWxlKExpbmVD
YXAgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9Ci0gICAgdm9p
ZCBzZXRDbGlwUnVsZShXaW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1
bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBv
bGF0aW9uIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2
YWw7IH0KLSAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJw
b2xhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycyA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JSZW5kZXJpbmcoRUNvbG9yUmVuZGVyaW5n
IHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyA9IHZhbDsgfQotICAg
IHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2Zp
bGxSdWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0U2hhcGVS
ZW5kZXJpbmcoRVNoYXBlUmVuZGVyaW5nIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFw
ZVJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2
YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvciA9IHZhbDsgfQotICAgIHZvaWQg
c2V0R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gdmFsOyB9Ci0g
ICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoRUdseXBoT3JpZW50YXRpb24gdmFs
KSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsg
fQotICAgIHZvaWQgc2V0TWFza1R5cGUoRU1hc2tUeXBlIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYubWFza1R5cGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFBhaW50T3JkZXIoUGFpbnRP
cmRlciB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0gdmFsOyB9Ci0gICAg
dm9pZCBzZXRDeChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91
dC0+Y3ggPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+Y3ggPSBvYmo7Ci0g
ICAgfQotICAgIHZvaWQgc2V0Q3koY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBp
ZiAoIShsYXlvdXQtPmN5ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPmN5
ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFIoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewot
ICAgICAgICBpZiAoIShsYXlvdXQtPnIgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nl
c3MoKS0+ciA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRSeChjb25zdCBMZW5ndGgmIG9iaikK
LSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+cnggPT0gb2JqKSkKLSAgICAgICAgICAgIGxh
eW91dC5hY2Nlc3MoKS0+cnggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0UnkoY29uc3QgTGVu
Z3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnJ5ID09IG9iaikpCi0gICAg
ICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnJ5ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFgo
Y29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnggPT0gb2Jq
KSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+eCA9IG9iajsKLSAgICB9Ci0gICAgdm9p
ZCBzZXRZKGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT55
ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnkgPSBvYmo7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAo
IShmaWxsLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5vcGFj
aXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSB0
eXBlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9S
ZWd1bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2Up
Ci0gICAgewotICAgICAgICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgewotICAgICAgICAgICAg
aWYgKCEoZmlsbC0+cGFpbnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNj
ZXNzKCktPnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludENv
bG9yID09IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5wYWludENvbG9y
ID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludFVyaSA9PSB1cmkpKQotICAg
ICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEo
ZmlsbC0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgZmls
bC5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYg
KCEoZmlsbC0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKLSAgICAgICAgICAgICAg
ICBmaWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xvcjsKLSAgICAgICAg
ICAgIGlmICghKGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAg
ICAgICBmaWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0g
ICAgICAgIGlmICghKHN0cm9rZS0+b3BhY2l0eSA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tl
LmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlUGFp
bnQoU1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1
cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRM
aW5rU3R5bGUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxl
KSB7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50VHlwZSA9PSB0eXBlKSkKLSAgICAg
ICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAg
ICBpZiAoIShzdHJva2UtPnBhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIHN0
cm9rZS5hY2Nlc3MoKS0+cGFpbnRDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEoc3Ry
b2tlLT5wYWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+
cGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlu
a1N0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBl
ID09IHR5cGUpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQ
YWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT52aXNpdGVkTGlua1Bh
aW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlz
aXRlZExpbmtQYWludENvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZp
c2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBzdHJva2UuYWNjZXNz
KCktPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2
b2lkIHNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBvYmop
Ci0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPmRhc2hBcnJheSA9PSBvYmopKQotICAgICAg
ICAgICAgc3Ryb2tlLmFjY2VzcygpLT5kYXNoQXJyYXkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0
cm9rZS0+bWl0ZXJMaW1pdCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5t
aXRlckxpbWl0ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoY29uc3Qg
TGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPndpZHRoID09IG9iaikp
Ci0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPndpZHRoID0gb2JqOwotICAgIH0KLQotICAg
IHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAg
ICAgIGlmICghKHN0cm9rZS0+ZGFzaE9mZnNldCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tl
LmFjY2VzcygpLT5kYXNoT2Zmc2V0ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0S2Vybmlu
Zyhjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEodGV4dC0+
a2VybmluZyA9PSBvYmopKQotICAgICAgICAgICAgdGV4dC5hY2Nlc3MoKS0+a2VybmluZyA9IG9i
ajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0b3BPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0g
ICAgICAgIGlmICghKHN0b3BzLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBzdG9wcy5h
Y2Nlc3MoKS0+b3BhY2l0eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0b3BDb2xvcihj
b25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RvcHMtPmNvbG9yID09IG9i
aikpCi0gICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+Y29sb3IgPSBvYmo7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEo
bWlzYy0+Zmxvb2RPcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5m
bG9vZE9wYWNpdHkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0
IENvbG9yJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5mbG9vZENvbG9yID09IG9i
aikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZENvbG9yID0gb2JqOwotICAgIH0K
LQotICAgIHZvaWQgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAg
ICAgICAgaWYgKCEobWlzYy0+bGlnaHRpbmdDb2xvciA9PSBvYmopKQotICAgICAgICAgICAgbWlz
Yy5hY2Nlc3MoKS0+bGlnaHRpbmdDb2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJh
c2VsaW5lU2hpZnRWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAg
ICAgaWYgKCEobWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlID09IG9iaikpCi0gICAgICAgICAgICBt
aXNjLmFjY2VzcygpLT5iYXNlbGluZVNoaWZ0VmFsdWUgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG9iaikgeyBzaGFkb3dTVkcu
YWNjZXNzKCktPnNoYWRvdyA9IFdURk1vdmUob2JqKTsgfQorICAgIHZvaWQgc2V0QWxpZ25tZW50
QmFzZWxpbmUoRUFsaWdubWVudEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZs
YWdCaXRzLmFsaWdubWVudEJhc2VsaW5lID0gdmFsOyB9CisgICAgdm9pZCBzZXREb21pbmFudEJh
c2VsaW5lKEVEb21pbmFudEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLmRvbWluYW50QmFzZWxpbmUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnQo
RUJhc2VsaW5lU2hpZnQgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxp
bmVTaGlmdCA9IHZhbDsgfQorICAgIHZvaWQgc2V0VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3Qg
dmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0ID0gdmFsOyB9
CisgICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhFQnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0K
KyAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2Fw
U3R5bGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldENsaXBSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2lu
aGVyaXRlZEZsYWdzLmNsaXBSdWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9s
YXRpb24oRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvcklu
dGVycG9sYXRpb24gPSB2YWw7IH0KKyAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMoRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvclJlbmRlcmluZyhFQ29s
b3JSZW5kZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcgPSB2YWw7
IH0KKyAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdz
LmZpbGxSdWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7
IG1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRTaGFwZVJl
bmRlcmluZyhFU2hhcGVSZW5kZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5k
ZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNldFRleHRBbmNob3IoRVRleHRBbmNob3IgdmFsKSB7
IG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IHZhbDsgfQorICAgIHZvaWQgc2V0R2x5cGhP
cmllbnRhdGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVk
RmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldEds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0
ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldE1h
c2tUeXBlKEVNYXNrVHlwZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNr
VHlwZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIHZhbCkgeyBt
X2luaGVyaXRlZEZsYWdzLnBhaW50T3JkZXIgPSB2YWw7IH0KKyAgICB2b2lkIHNldEN4KGNvbnN0
IExlbmd0aCYpOworICAgIHZvaWQgc2V0Q3koY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRS
KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0UngoY29uc3QgTGVuZ3RoJik7CisgICAgdm9p
ZCBzZXRSeShjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFgoY29uc3QgTGVuZ3RoJik7Cisg
ICAgdm9pZCBzZXRZKGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxv
YXQpOworICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSwgY29uc3QgQ29sb3ImLCBj
b25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBh
cHBseVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFN0cm9rZU9wYWNp
dHkoZmxvYXQpOworICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBD
b2xvciYsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVl
LCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpOworCisgICAgdm9pZCBzZXRT
dHJva2VEYXNoQXJyYXkoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYpOworICAgIHZvaWQg
c2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCk7CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChjb25z
dCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoY29uc3QgTGVuZ3RoJik7
CisgICAgdm9pZCBzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CisgICAgdm9pZCBz
ZXRTdG9wT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3Im
KTsKKyAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRGbG9vZENv
bG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9y
Jik7CisgICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
KTsKKworICAgIHZvaWQgc2V0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiYmIGRh
dGEpIHsgbV9zaGFkb3dEYXRhLmFjY2VzcygpLnNoYWRvdyA9IFdURk1vdmUoZGF0YSk7IH0KIAog
ICAgIC8vIFNldHRlcnMgZm9yIG5vbi1pbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgdm9pZCBzZXRD
bGlwcGVyUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShy
ZXNvdXJjZXMtPmNsaXBwZXIgPT0gb2JqKSkKLSAgICAgICAgICAgIHJlc291cmNlcy5hY2Nlc3Mo
KS0+Y2xpcHBlciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hc2tlclJlc291cmNlKGNv
bnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEocmVzb3VyY2VzLT5tYXNrZXIg
PT0gb2JqKSkKLSAgICAgICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+bWFza2VyID0gb2JqOwot
ICAgIH0KKyAgICB2b2lkIHNldENsaXBwZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gU2V0dGVycyBm
b3IgaW5oZXJpdGVkIHJlc291cmNlcwotICAgIHZvaWQgc2V0TWFya2VyU3RhcnRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNl
cy0+bWFya2VyU3RhcnQgPT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5h
Y2Nlc3MoKS0+bWFya2VyU3RhcnQgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRNYXJrZXJN
aWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVy
aXRlZFJlc291cmNlcy0+bWFya2VyTWlkID09IG9iaikpCi0gICAgICAgICAgICBpbmhlcml0ZWRS
ZXNvdXJjZXMuYWNjZXNzKCktPm1hcmtlck1pZCA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYg
KCEoaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQgPT0gb2JqKSkKLSAgICAgICAgICAgIGlu
aGVyaXRlZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2VyRW5kID0gb2JqOwotICAgIH0KKyAgICB2
b2lkIHNldE1hcmtlclN0YXJ0UmVzb3VyY2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRN
YXJrZXJNaWRSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hcmtlckVuZFJl
c291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUmVhZCBhY2Nlc3NvcnMgZm9yIGFsbCB0
aGUgcHJvcGVydGllcwotICAgIEVBbGlnbm1lbnRCYXNlbGluZSBhbGlnbm1lbnRCYXNlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIChFQWxpZ25tZW50QmFzZWxpbmUpIHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5fYWxpZ25tZW50QmFzZWxpbmU7IH0KLSAgICBFRG9taW5hbnRCYXNlbGluZSBkb21pbmFu
dEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVEb21pbmFudEJhc2VsaW5lKSBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmU7IH0KLSAgICBFQmFzZWxpbmVTaGlmdCBi
YXNlbGluZVNoaWZ0KCkgY29uc3QgeyByZXR1cm4gKEVCYXNlbGluZVNoaWZ0KSBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQ7IH0KLSAgICBFVmVjdG9yRWZmZWN0IHZlY3Rv
ckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIChFVmVjdG9yRWZmZWN0KSBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX3ZlY3RvckVmZmVjdDsgfQotICAgIEVCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJl
ZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFQnVmZmVyZWRSZW5kZXJpbmcpIHN2Z19ub25p
bmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZzsgfQotICAgIExpbmVDYXAgY2FwU3R5
bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUNhcCkgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5
bGU7IH0KLSAgICBXaW5kUnVsZSBjbGlwUnVsZSgpIGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGU7IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9u
IGNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9u
KSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb247IH0KLSAgICBFQ29sb3JJ
bnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAo
RUNvbG9ySW50ZXJwb2xhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVyczsgfQotICAgIEVDb2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIChFQ29sb3JSZW5kZXJpbmcpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVu
ZGVyaW5nOyB9Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1
bGUpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlOyB9Ci0gICAgTGluZUpvaW4gam9pblN0
eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2lu
U3R5bGU7IH0KLSAgICBFU2hhcGVSZW5kZXJpbmcgc2hhcGVSZW5kZXJpbmcoKSBjb25zdCB7IHJl
dHVybiAoRVNoYXBlUmVuZGVyaW5nKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmlu
ZzsgfQotICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRB
bmNob3IpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3I7IH0KLSAgICBFR2x5cGhPcmll
bnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5
cGhPcmllbnRhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWw7IH0KLSAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwo
KSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQotICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gZmlsbC0+b3BhY2l0eTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmls
bFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50VHlwZTsgfQotICAgIGNvbnN0
IENvbG9yJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7
IH0KLSAgICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwt
PnBhaW50VXJpOyB9ICAgIAotICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdHJva2UtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29s
b3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50Q29sb3I7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gc3Ry
b2tlLT5wYWludFVyaTsgfQotICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFy
cmF5KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5kYXNoQXJyYXk7IH0KLSAgICBmbG9hdCBzdHJv
a2VNaXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5taXRlckxpbWl0OyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiBzdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+d2lkdGg7
IH0KLSAgICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBz
dHJva2UtPmRhc2hPZmZzZXQ7IH0KLSAgICBTVkdMZW5ndGhWYWx1ZSBrZXJuaW5nKCkgY29uc3Qg
eyByZXR1cm4gdGV4dC0+a2VybmluZzsgfQotICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gc3RvcHMtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gc3RvcHMtPmNvbG9yOyB9Ci0gICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RPcGFjaXR5OyB9Ci0gICAgY29uc3QgQ29sb3ImIGZs
b29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9Ci0gICAgY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9y
OyB9Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgYmFzZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlOyB9Ci0gICAgU2hhZG93RGF0YSogc2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gc2hhZG93U1ZHLT5zaGFkb3cuZ2V0KCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGN4KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5jeDsgfQotICAgIGNvbnN0IExlbmd0aCYg
Y3koKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPmN5OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByKCkg
Y29uc3QgeyByZXR1cm4gbGF5b3V0LT5yOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0
IHsgcmV0dXJuIGxheW91dC0+cng7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3QgeyBy
ZXR1cm4gbGF5b3V0LT5yeTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJu
IGxheW91dC0+eDsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIGxheW91
dC0+eTsgfQotICAgIFN0cmluZyBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNv
dXJjZXMtPmNsaXBwZXI7IH0KLSAgICBTdHJpbmcgbWFza2VyUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiByZXNvdXJjZXMtPm1hc2tlcjsgfQotICAgIFN0cmluZyBtYXJrZXJTdGFydFJlc291cmNl
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJTdGFydDsgfQotICAg
IFN0cmluZyBtYXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJlc291
cmNlcy0+bWFya2VyTWlkOyB9Ci0gICAgU3RyaW5nIG1hcmtlckVuZFJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQ7IH0KLSAgICBFTWFza1R5cGUg
bWFza1R5cGUoKSBjb25zdCB7IHJldHVybiAoRU1hc2tUeXBlKSBzdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzLmYubWFza1R5cGU7IH0KLSAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJl
dHVybiAoUGFpbnRPcmRlcikgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyOyB9CisgICAg
RUFsaWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVB
bGlnbm1lbnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRC
YXNlbGluZTsgfQorICAgIEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUoKSBjb25z
dCB7IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMuZG9taW5hbnRCYXNlbGluZTsgfQorICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQo
KSBjb25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxh
Z0JpdHMuYmFzZWxpbmVTaGlmdDsgfQorICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkg
Y29uc3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMudmVjdG9yRWZmZWN0OyB9CisgICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVy
aW5nKCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgbV9ub25Jbmhlcml0ZWRG
bGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZzsgfQorICAgIExpbmVDYXAgY2FwU3R5bGUo
KSBjb25zdCB7IHJldHVybiAoTGluZUNhcCkgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZTsgfQor
ICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVy
aXRlZEZsYWdzLmNsaXBSdWxlOyB9CisgICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVy
cG9sYXRpb24oKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0
ZWRGbGFncy5jb2xvckludGVycG9sYXRpb247IH0KKyAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xh
dGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9CisgICAg
RUNvbG9yUmVuZGVyaW5nIGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJl
bmRlcmluZykgbV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZzsgfQorICAgIFdpbmRSdWxl
IGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmZp
bGxSdWxlOyB9CisgICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVK
b2luKSBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZTsgfQorICAgIEVTaGFwZVJlbmRlcmluZyBz
aGFwZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFU2hhcGVSZW5kZXJpbmcpIG1faW5oZXJp
dGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmc7IH0KKyAgICBFVGV4dEFuY2hvciB0ZXh0QW5jaG9yKCkg
Y29uc3QgeyByZXR1cm4gKEVUZXh0QW5jaG9yKSBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3I7
IH0KKyAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpIGNv
bnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbDsgfQorICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgbV9pbmhl
cml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWw7IH0KKyAgICBmbG9hdCBmaWxsT3Bh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25zdCBT
VkdQYWludFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5w
YWludFR5cGU7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGxEYXRhLT5wYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiBmaWxsUGFp
bnRVcmkoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFVyaTsgfSAgICAKKyAgICBm
bG9hdCBzdHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5vcGFjaXR5
OyB9CisgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cm9rZURhdGEtPnBhaW50VHlwZTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VQ
YWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludENvbG9yOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBzdHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tl
RGF0YS0+cGFpbnRVcmk7IH0KKyAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hB
cnJheSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5OyB9CisgICAgZmxv
YXQgc3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+bWl0ZXJM
aW1pdDsgfQorICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0cm9rZURhdGEtPndpZHRoOyB9CisgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5kYXNoT2Zmc2V0OyB9CisgICAgU1ZHTGVu
Z3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERhdGEtPmtlcm5pbmc7IH0K
KyAgICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcERhdGEtPm9wYWNp
dHk7IH0KKyAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdG9w
RGF0YS0+Y29sb3I7IH0KKyAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBt
X21pc2NEYXRhLT5mbG9vZE9wYWNpdHk7IH0KKyAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmZsb29kQ29sb3I7IH0KKyAgICBjb25zdCBDb2xv
ciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29s
b3I7IH0KKyAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX21pc2NEYXRhLT5iYXNlbGluZVNoaWZ0VmFsdWU7IH0KKyAgICBTaGFkb3dEYXRhKiBz
aGFkb3coKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0RhdGEtPnNoYWRvdy5nZXQoKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgY3goKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPmN4OyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBjeSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+Y3k7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnI7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT5yeDsg
fQorICAgIGNvbnN0IExlbmd0aCYgcnkoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnJ5
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT54
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT55
OyB9CisgICAgY29uc3QgU3RyaW5nJiBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+Y2xpcHBlcjsgfQorICAgIGNvbnN0IFN0cmluZyYg
bWFza2VyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0
YS0+bWFza2VyOyB9CisgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJTdGFydFJlc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlclN0YXJ0OyB9CisgICAg
Y29uc3QgU3RyaW5nJiBtYXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJp
dGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJNaWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlckVu
ZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtl
ckVuZDsgfQorICAgIEVNYXNrVHlwZSBtYXNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIChFTWFza1R5
cGUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGU7IH0KKyAgICBQYWludE9y
ZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgbV9pbmhlcml0ZWRG
bGFncy5wYWludE9yZGVyOyB9CiAgICAgVmVjdG9yPFBhaW50VHlwZSwgMz4gcGFpbnRUeXBlc0Zv
clBhaW50T3JkZXIoKSBjb25zdDsKIAotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExp
bmtGaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludFR5
cGU7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdmlzaXRlZExpbmtGaWxsUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVk
TGlua1BhaW50VXJpOyB9Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua1N0cm9r
ZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGU7
IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtTdHJva2VQYWludENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJp
bmcmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnZp
c2l0ZWRMaW5rUGFpbnRVcmk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5r
RmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFp
bnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYg
dmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEt
PnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rU3Ry
b2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQ
YWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VXJp
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpOyB9CiAK
ICAgICAvLyBjb252ZW5pZW5jZQogICAgIGJvb2wgaGFzQ2xpcHBlcigpIGNvbnN0IHsgcmV0dXJu
ICFjbGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KQEAgLTM4MywxMDcgKzIxMywzMTEgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUo
KSAhPSBTVkdfUEFJTlRUWVBFX05PTkU7IH0KICAgICBib29sIGlzb2xhdGVzQmxlbmRpbmcoKSBj
b25zdCB7IHJldHVybiBoYXNNYXNrZXIoKSB8fCBzaGFkb3coKTsgfQogCi1wcm90ZWN0ZWQ6Ci0g
ICAgLy8gaW5oZXJpdAorcHJpdmF0ZToKKyAgICBTVkdSZW5kZXJTdHlsZSgpOworICAgIFNWR1Jl
bmRlclN0eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7CisKKyAgICBlbnVtIENyZWF0ZURlZmF1
bHRUeXBlIHsgQ3JlYXRlRGVmYXVsdCB9OworICAgIFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRUeXBlKTsgLy8gVXNlZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgc3R5bGUuCisKKyAgICB2b2lk
IHNldEJpdERlZmF1bHRzKCk7CisKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewotICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKF9jb2xvclJlbmRlcmluZyA9PSBvdGhlci5fY29s
b3JSZW5kZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYgKF9zaGFwZVJlbmRlcmluZyA9PSBvdGhl
ci5fc2hhcGVSZW5kZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYgKF9jbGlwUnVsZSA9PSBvdGhl
ci5fY2xpcFJ1bGUpCi0gICAgICAgICAgICAgICAgJiYgKF9maWxsUnVsZSA9PSBvdGhlci5fZmls
bFJ1bGUpCi0gICAgICAgICAgICAgICAgJiYgKF9jYXBTdHlsZSA9PSBvdGhlci5fY2FwU3R5bGUp
Ci0gICAgICAgICAgICAgICAgJiYgKF9qb2luU3R5bGUgPT0gb3RoZXIuX2pvaW5TdHlsZSkKLSAg
ICAgICAgICAgICAgICAmJiAoX3RleHRBbmNob3IgPT0gb3RoZXIuX3RleHRBbmNob3IpCi0gICAg
ICAgICAgICAgICAgJiYgKF9jb2xvckludGVycG9sYXRpb24gPT0gb3RoZXIuX2NvbG9ySW50ZXJw
b2xhdGlvbikKLSAgICAgICAgICAgICAgICAmJiAoX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMg
PT0gb3RoZXIuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpCi0gICAgICAgICAgICAgICAgJiYg
KF9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5fZ2x5cGhPcmllbnRhdGlvbkhv
cml6b250YWwpCi0gICAgICAgICAgICAgICAgJiYgKF9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwg
PT0gb3RoZXIuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkKLSAgICAgICAgICAgICAgICAmJiAo
cGFpbnRPcmRlciA9PSBvdGhlci5wYWludE9yZGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHVuc2lnbmVkIF9jb2xvclJlbmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZwot
ICAgICAgICB1bnNpZ25lZCBfc2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcg
Ci0gICAgICAgIHVuc2lnbmVkIF9jbGlwUnVsZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVu
c2lnbmVkIF9maWxsUnVsZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVkIF9jYXBT
dHlsZSA6IDI7IC8vIExpbmVDYXAKLSAgICAgICAgdW5zaWduZWQgX2pvaW5TdHlsZSA6IDI7IC8v
IExpbmVKb2luCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNo
b3IKLSAgICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIEVDb2xvcklu
dGVycG9sYXRpb24KLSAgICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMg
OiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCi0gICAgICAgIHVuc2ln
bmVkIF9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICB1bnNpZ25lZCBjb2xvclJl
bmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBzaGFwZVJl
bmRlcmluZyA6IDI7IC8vIEVTaGFwZVJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBjbGlwUnVs
ZSA6IDE7IC8vIFdpbmRSdWxlCisgICAgICAgIHVuc2lnbmVkIGZpbGxSdWxlIDogMTsgLy8gV2lu
ZFJ1bGUKKyAgICAgICAgdW5zaWduZWQgY2FwU3R5bGUgOiAyOyAvLyBMaW5lQ2FwCisgICAgICAg
IHVuc2lnbmVkIGpvaW5TdHlsZSA6IDI7IC8vIExpbmVKb2luCisgICAgICAgIHVuc2lnbmVkIHRl
eHRBbmNob3IgOiAyOyAvLyBFVGV4dEFuY2hvcgorICAgICAgICB1bnNpZ25lZCBjb2xvckludGVy
cG9sYXRpb24gOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGNv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAg
ICAgIHVuc2lnbmVkIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsgLy8gRUdseXBoT3Jp
ZW50YXRpb24KKyAgICAgICAgdW5zaWduZWQgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIDogMzsg
Ly8gRUdseXBoT3JpZW50YXRpb24KICAgICAgICAgdW5zaWduZWQgcGFpbnRPcmRlciA6IDM7IC8v
IFBhaW50T3JkZXIKLSAgICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7CisgICAgfTsKIAotICAgIC8v
IGRvbid0IGluaGVyaXQKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICAv
LyAzMiBiaXQgbm9uLWluaGVyaXRlZCwgZG9uJ3QgYWRkIHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBv
cGVyYXRvciB3aWxsIGJyZWFrLgotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5o
ZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyA9PSBvdGhlci5fbmlm
bGFnczsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3Mg
Jm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyAhPSBvdGhlci5fbmlmbGFnczsgfQorICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25z
dCB7IHJldHVybiBmbGFncyA9PSBvdGhlci5mbGFnczsgfQorICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFncyAh
PSBvdGhlci5mbGFnczsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgX2FsaWdubWVudEJhc2VsaW5lIDogNDsgLy8gRUFs
aWdubWVudEJhc2VsaW5lIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9kb21pbmFudEJhc2Vs
aW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBf
YmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgX3ZlY3RvckVmZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAorICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFsaWdubWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lCisg
ICAgICAgICAgICAgICAgdW5zaWduZWQgZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFu
dEJhc2VsaW5lCisgICAgICAgICAgICAgICAgdW5zaWduZWQgYmFzZWxpbmVTaGlmdCA6IDI7IC8v
IEVCYXNlbGluZVNoaWZ0CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yRWZmZWN0OiAx
OyAvLyBFVmVjdG9yRWZmZWN0CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyZWRSZW5k
ZXJpbmc6IDI7IC8vIEVCdWZmZXJlZFJlbmRlcmluZwogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG1hc2tUeXBlOiAxOyAvLyBFTWFza1R5cGUKICAgICAgICAgICAgICAgICAvLyAxOCBiaXRzIHVu
dXNlZAotICAgICAgICAgICAgfSBmOwotICAgICAgICAgICAgdWludDMyX3QgX25pZmxhZ3M7Cisg
ICAgICAgICAgICB9IGZsYWdCaXRzOworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7CiAgICAg
ICAgIH07Ci0gICAgfSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH07CisKKyAgICBJbmhl
cml0ZWRGbGFncyBtX2luaGVyaXRlZEZsYWdzOworICAgIE5vbkluaGVyaXRlZEZsYWdzIG1fbm9u
SW5oZXJpdGVkRmxhZ3M7CiAKICAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgIERhdGFS
ZWY8U3R5bGVGaWxsRGF0YT4gZmlsbDsKLSAgICBEYXRhUmVmPFN0eWxlU3Ryb2tlRGF0YT4gc3Ry
b2tlOwotICAgIERhdGFSZWY8U3R5bGVUZXh0RGF0YT4gdGV4dDsKLSAgICBEYXRhUmVmPFN0eWxl
SW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBpbmhlcml0ZWRSZXNvdXJjZXM7CisgICAgRGF0YVJlZjxT
dHlsZUZpbGxEYXRhPiBtX2ZpbGxEYXRhOworICAgIERhdGFSZWY8U3R5bGVTdHJva2VEYXRhPiBt
X3N0cm9rZURhdGE7CisgICAgRGF0YVJlZjxTdHlsZVRleHREYXRhPiBtX3RleHREYXRhOworICAg
IERhdGFSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IG1faW5oZXJpdGVkUmVzb3VyY2VE
YXRhOwogCiAgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHls
ZVN0b3BEYXRhPiBzdG9wczsKLSAgICBEYXRhUmVmPFN0eWxlTWlzY0RhdGE+IG1pc2M7Ci0gICAg
RGF0YVJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IHNoYWRvd1NWRzsKLSAgICBEYXRhUmVmPFN0eWxl
TGF5b3V0RGF0YT4gbGF5b3V0OwotICAgIERhdGFSZWY8U3R5bGVSZXNvdXJjZURhdGE+IHJlc291
cmNlczsKLQotcHJpdmF0ZToKLSAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBlIHsgQ3JlYXRlRGVm
YXVsdCB9OwotICAgICAgICAKLSAgICBTVkdSZW5kZXJTdHlsZSgpOwotICAgIFNWR1JlbmRlclN0
eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7Ci0gICAgU1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdFR5cGUpOyAvLyBVc2VkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KKyAgICBEYXRh
UmVmPFN0eWxlU3RvcERhdGE+IG1fc3RvcERhdGE7CisgICAgRGF0YVJlZjxTdHlsZU1pc2NEYXRh
PiBtX21pc2NEYXRhOworICAgIERhdGFSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBtX3NoYWRvd0Rh
dGE7CisgICAgRGF0YVJlZjxTdHlsZUxheW91dERhdGE+IG1fbGF5b3V0RGF0YTsKKyAgICBEYXRh
UmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YTsKK307CiAK
LSAgICB2b2lkIHNldEJpdERlZmF1bHRzKCkKLSAgICB7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX2NsaXBSdWxlID0gaW5pdGlhbENsaXBSdWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7Ci0gICAg
ICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlID0gaW5pdGlhbEZpbGxSdWxlKCk7Ci0g
ICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nID0gaW5pdGlhbFNoYXBl
UmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgPSBp
bml0aWFsVGV4dEFuY2hvcigpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHls
ZSA9IGluaXRpYWxDYXBTdHlsZSgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2lu
U3R5bGUgPSBpbml0aWFsSm9pblN0eWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2NvbG9ySW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb24oKTsKLSAgICAg
ICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRp
YWxDb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25I
b3Jpem9udGFsKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRp
b25WZXJ0aWNhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKLSAgICAgICAg
c3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0gaW5pdGlhbFBhaW50T3JkZXIoKTsKLQot
ICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLl9uaWZsYWdzID0gMDsKLSAgICAgICAgc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1l
bnRCYXNlbGluZSgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50
QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpOwotICAgICAgICBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOwot
ICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IGluaXRpYWxW
ZWN0b3JFZmZlY3QoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVk
UmVuZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19ub25p
bmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworaW5saW5lIFNW
R0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkK
K3sKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7CisgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwor
aW5saW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2VybmluZygpCit7
CisgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lu
bGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sK
KyAgICBpZiAoIShtX2xheW91dERhdGEtPmN4ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0
RGF0YS5hY2Nlc3MoKS5jeCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5
bGU6OnNldEN5KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0
YS0+Y3kgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLmN5ID0gbGVu
Z3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Uihjb25zdCBMZW5ndGgm
IGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnIgPT0gbGVuZ3RoKSkKKyAgICAg
ICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnIgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNW
R1JlbmRlclN0eWxlOjpzZXRSeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoISht
X2xheW91dERhdGEtPnJ4ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3Mo
KS5yeCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFJ5KGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+cnkgPT0gbGVu
Z3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnJ5ID0gbGVuZ3RoOworfQorCitp
bmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0WChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sK
KyAgICBpZiAoIShtX2xheW91dERhdGEtPnggPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXRE
YXRhLmFjY2VzcygpLnggPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxl
OjpzZXRZKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+
eSA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkueSA9IGxlbmd0aDsK
K30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpCit7CisgICAgaWYgKCEobV9maWxsRGF0YS0+b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAg
ICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29u
c3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0
eWxlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVn
dWxhclN0eWxlKSB7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnBhaW50VHlwZSA9PSB0eXBl
KSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRUeXBlID0gdHlwZTsKKyAg
ICAgICAgaWYgKCEobV9maWxsRGF0YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAg
ICBtX2ZpbGxEYXRhLmFjY2VzcygpLnBhaW50Q29sb3IgPSBjb2xvcjsKKyAgICAgICAgaWYgKCEo
bV9maWxsRGF0YS0+cGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNj
ZXNzKCkucGFpbnRVcmkgPSB1cmk7CiAgICAgfQotfTsKKyAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRM
aW5rU3R5bGUpIHsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5
cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5r
UGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQ
YWludENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlz
aXRlZExpbmtQYWludENvbG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnZp
c2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNz
KCkudmlzaXRlZExpbmtQYWludFVyaSA9IHVyaTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFNW
R1JlbmRlclN0eWxlOjpzZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYg
KCEobV9zdHJva2VEYXRhLT5vcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX3N0cm9rZURh
dGEuYWNjZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRl
clN0eWxlOjpzZXRTdHJva2VQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNv
bG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBib29sIGFw
cGx5VG9WaXNpdGVkTGlua1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7
CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlID09IHR5cGUpKQorICAgICAg
ICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnBhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlm
ICghKG1fc3Ryb2tlRGF0YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX3N0
cm9rZURhdGEuYWNjZXNzKCkucGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0
cm9rZURhdGEtPnBhaW50VXJpID09IHVyaSkpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNj
ZXNzKCkucGFpbnRVcmkgPSB1cmk7CisgICAgfQorICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtT
dHlsZSkgeworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBl
ID09IHR5cGUpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5r
UGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT52aXNpdGVkTGlu
a1BhaW50Q29sb3IgPT0gY29sb3IpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2Vzcygp
LnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURh
dGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0
YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOworICAgIH0KK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZH
TGVuZ3RoVmFsdWU+JiBhcnJheSkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hBcnJh
eSA9PSBhcnJheSkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5kYXNoQXJyYXkgPSBh
cnJheTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZU1pdGVyTGlt
aXQoZmxvYXQgbGltaXQpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT5taXRlckxpbWl0ID09
IGxpbWl0KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLm1pdGVyTGltaXQgPSBsaW1p
dDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZVdpZHRoKGNvbnN0
IExlbmd0aCYgd2lkdGgpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT53aWR0aCA9PSB3aWR0
aCkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS53aWR0aCA9IHdpZHRoOworfQorCitp
bmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5n
dGgmIG9mZnNldCkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgPT0gb2Zm
c2V0KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLmRhc2hPZmZzZXQgPSBvZmZzZXQ7
Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRLZXJuaW5nKGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiBrZXJuaW5nKQoreworICAgIGlmICghKG1fdGV4dERhdGEtPmtlcm5pbmcgPT0g
a2VybmluZykpCisgICAgICAgIG1fdGV4dERhdGEuYWNjZXNzKCkua2VybmluZyA9IGtlcm5pbmc7
Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wT3BhY2l0eShmbG9hdCBv
cGFjaXR5KQoreworICAgIGlmICghKG1fc3RvcERhdGEtPm9wYWNpdHkgPT0gb3BhY2l0eSkpCisg
ICAgICAgIG1fc3RvcERhdGEuYWNjZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGlu
ZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQor
eworICAgIGlmICghKG1fc3RvcERhdGEtPmNvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9zdG9w
RGF0YS5hY2Nlc3MoKS5jb2xvciA9IGNvbG9yOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9taXNj
RGF0YS0+Zmxvb2RPcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2Vz
cygpLmZsb29kT3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0
eWxlOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21p
c2NEYXRhLT5mbG9vZENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3Mo
KS5mbG9vZENvbG9yID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpz
ZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NE
YXRhLT5saWdodGluZ0NvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3Mo
KS5saWdodGluZ0NvbG9yID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxl
OjpzZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHNoaWZ0VmFsdWUp
Cit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlID09IHNoaWZ0VmFs
dWUpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmJhc2VsaW5lU2hpZnRWYWx1ZSA9IHNo
aWZ0VmFsdWU7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDbGlwcGVyUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX25vbkluaGVyaXRl
ZFJlc291cmNlRGF0YS0+Y2xpcHBlciA9PSByZXNvdXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLmNsaXBwZXIgPSByZXNvdXJjZTsKK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2UpCit7CisgICAgaWYgKCEobV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hc2tlciA9
PSByZXNvdXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2Vzcygp
Lm1hc2tlciA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0
TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICgh
KG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJTdGFydCA9PSByZXNvdXJjZSkpCisgICAg
ICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlclN0YXJ0ID0gcmVzb3Vy
Y2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJNaWRSZXNvdXJj
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhLT5tYXJrZXJNaWQgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX2luaGVyaXRlZFJlc291
cmNlRGF0YS5hY2Nlc3MoKS5tYXJrZXJNaWQgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2UpCit7CisgICAgaWYgKCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZCA9PSBy
ZXNvdXJjZSkpCisgICAgICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtl
ckVuZCA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Qml0
RGVmYXVsdHMoKQoreworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBpbml0aWFsQ2xp
cFJ1bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gaW5pdGlhbENv
bG9yUmVuZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSA9IGluaXRpYWxG
aWxsUnVsZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSBpbml0aWFs
U2hhcGVSZW5kZXJpbmcoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3IgPSBpbml0
aWFsVGV4dEFuY2hvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgPSBpbml0aWFs
Q2FwU3R5bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSA9IGluaXRpYWxKb2lu
U3R5bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IGluaXRp
YWxDb2xvckludGVycG9sYXRpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJw
b2xhdGlvbkZpbHRlcnMgPSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpOworICAg
IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSBpbml0aWFsR2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLnBhaW50T3JkZXIgPSBpbml0aWFsUGFpbnRPcmRlcigpOworCisg
ICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFncyA9IDA7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFn
cy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgp
OworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IGlu
aXRpYWxEb21pbmFudEJhc2VsaW5lKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5iYXNlbGluZVNoaWZ0ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKKyAgICBtX25vbkluaGVy
aXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsK
KyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5p
dGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworfQorCitpbmxpbmUgYm9vbCBTVkdSZW5k
ZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3Mm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb2xvclJlbmRlcmluZyA9PSBvdGhlci5jb2xv
clJlbmRlcmluZworICAgICAgICAmJiBzaGFwZVJlbmRlcmluZyA9PSBvdGhlci5zaGFwZVJlbmRl
cmluZworICAgICAgICAmJiBjbGlwUnVsZSA9PSBvdGhlci5jbGlwUnVsZQorICAgICAgICAmJiBm
aWxsUnVsZSA9PSBvdGhlci5maWxsUnVsZQorICAgICAgICAmJiBjYXBTdHlsZSA9PSBvdGhlci5j
YXBTdHlsZQorICAgICAgICAmJiBqb2luU3R5bGUgPT0gb3RoZXIuam9pblN0eWxlCisgICAgICAg
ICYmIHRleHRBbmNob3IgPT0gb3RoZXIudGV4dEFuY2hvcgorICAgICAgICAmJiBjb2xvckludGVy
cG9sYXRpb24gPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgICYmIGNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMgPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycworICAg
ICAgICAmJiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbAorICAgICAgICAmJiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3Ro
ZXIuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCisgICAgICAgICYmIHBhaW50T3JkZXIgPT0gb3Ro
ZXIucGFpbnRPcmRlcjsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4
M2YyMjQ5ZTQ5MGVjOTA2YTMzYjhlOC4uYjc0OWEyNmMwY2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5
NTc4ZjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5o
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXBlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94
VHlwZSBjc3NCb3gpCisgICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2lj
U2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShXVEZNb3ZlKHNoYXBlKSwgY3NzQm94KSk7CiAgICAg
fQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXBlVmFsdWUoYm94U2hhcGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFs
dWU+IGNyZWF0ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBzdGF0aWMgUmVmPFNo
YXBlVmFsdWU+IGNyZWF0ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoV1RGTW92ZShpbWFnZSkpKTsKICAgICB9
CkBAIC03MiwxNCArNzIsMTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaGFw
ZVZhbHVlKFJlZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAg
ICBTaGFwZVZhbHVlKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkK
ICAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEZNb3Zl
KHNoYXBlKSkKICAgICAgICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KIAotICAg
IGV4cGxpY2l0IFNoYXBlVmFsdWUoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhw
bGljaXQgU2hhcGVWYWx1ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICAgICAgOiBtX3R5
cGUoVHlwZTo6SW1hZ2UpCiAgICAgICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3Jv
dW5kRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3Jv
dW5kRGF0YS5jcHAKaW5kZXggMWJhMzZjNGE4ZDBkM2JlYzMxZjQzMmEwNmZmZjNjODNmMmFkZTRi
YS4uYWUzODM1Yzc5YmJhOGQwOTZiMTNiNzBkZDU2ZTk1ZjQ4MWYxNzc1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yOCwxNiArMjgsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5
bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YSgpCi0gICAgOiBtX2JhY2tncm91
bmQoQmFja2dyb3VuZEZpbGxMYXllcikKLSAgICAsIG1fY29sb3IoUmVuZGVyU3R5bGU6OmluaXRp
YWxCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICA6IGJhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXll
cikKKyAgICAsIGNvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCiB7
CiB9CiAKLWlubGluZSBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKGNv
bnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pCitpbmxpbmUgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6
U3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikKICAg
ICA6IFJlZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4oKQotICAgICwgbV9iYWNrZ3JvdW5k
KG8ubV9iYWNrZ3JvdW5kKQotICAgICwgbV9jb2xvcihvLm1fY29sb3IpCi0gICAgLCBtX291dGxp
bmUoby5tX291dGxpbmUpCisgICAgLCBiYWNrZ3JvdW5kKG90aGVyLmJhY2tncm91bmQpCisgICAg
LCBjb2xvcihvdGhlci5jb2xvcikKKyAgICAsIG91dGxpbmUob3RoZXIub3V0bGluZSkKIHsKIH0K
IApAQCAtNDYsMTggKzQ2LDE4IEBAIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBTdHlsZUJhY2tn
cm91bmREYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJh
Y2tncm91bmREYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6b3Bl
cmF0b3I9PShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUJh
Y2tncm91bmREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVy
KSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tncm91bmQgPT0gby5tX2JhY2tncm91bmQgJiYg
bV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9vdXRsaW5lID09IG8ubV9vdXRsaW5lOworICAgIHJl
dHVybiBiYWNrZ3JvdW5kID09IG90aGVyLmJhY2tncm91bmQgJiYgY29sb3IgPT0gb3RoZXIuY29s
b3IgJiYgb3V0bGluZSA9PSBvdGhlci5vdXRsaW5lOwogfQogCiBib29sIFN0eWxlQmFja2dyb3Vu
ZERhdGE6OmlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEm
IG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2JhY2tncm91bmQgIT0gb3RoZXIubV9iYWNrZ3Jv
dW5kIHx8IG1fY29sb3IgIT0gb3RoZXIubV9jb2xvcikKKyAgICBpZiAoYmFja2dyb3VuZCAhPSBv
dGhlci5iYWNrZ3JvdW5kIHx8IGNvbG9yICE9IG90aGVyLmNvbG9yKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFtX291dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm1fb3V0bGlu
ZS5pc1Zpc2libGUoKSkKKyAgICBpZiAoIW91dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm91
dGxpbmUuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX291
dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lOworICAgIHJldHVybiBvdXRsaW5lID09IG90aGVyLm91
dGxpbmU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCmluZGV4IDE0NDc3N2Fh
MGViOTVjMjVhNGFmZDEyM2Q0OGRiYzU3YjM2ZGJkNzMuLjliOTVlZTBjYWI5OTFkNmZkZmIwYjU2
ZGVkYTFjODBhZWU4OTQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdt
YWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwyOSArMzYsMTkgQEAgY2xhc3MgU3R5bGVCYWNr
Z3JvdW5kRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KICAgICBSZWY8U3R5bGVC
YWNrZ3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OwotICAgIH5TdHlsZUJhY2tncm91bmREYXRhKCkg
eyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8p
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBib29sIGlzRXF1aXZhbGVudEZvclBh
aW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKIAotICAgIGNvbnN0IEZp
bGxMYXllciYgYmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZDsgfQotICAg
IGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KLSAgICBjb25z
dCBPdXRsaW5lVmFsdWUmIG91dGxpbmUoKSBjb25zdCB7IHJldHVybiBtX291dGxpbmU7IH0KKyAg
ICBGaWxsTGF5ZXIgYmFja2dyb3VuZDsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBPdXRsaW5lVmFs
dWUgb3V0bGluZTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7Ci0K
ICAgICBTdHlsZUJhY2tncm91bmREYXRhKCk7Ci0gICAgU3R5bGVCYWNrZ3JvdW5kRGF0YShjb25z
dCBTdHlsZUJhY2tncm91bmREYXRhJik7IAotCi0gICAgRmlsbExheWVyIG1fYmFja2dyb3VuZDsK
LSAgICBDb2xvciBtX2NvbG9yOwotICAgIE91dGxpbmVWYWx1ZSBtX291dGxpbmU7CisgICAgU3R5
bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggZjcwNjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3
MmEyMTEzZjczNWFkYy4uNjkyMzk1YjFlMzUwZjFjYTBkM2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBDYWNoZWRJbWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6
Y2FjaGVkSW1hZ2UoKSBjb25zdAogCiBSZWY8Q1NTVmFsdWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNz
c1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3Nz
VmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBtX2Nzc1ZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9v
bCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCmluZGV4IGM2ZmZhNzU2
OTU5NmMzZTk0YjFjZDNiYzMyNjM3YzAxMjMyZDMwZjguLjg4ZjE4MzFjNGQ1MWNiNzM5Njk1MDlj
OWMyNTU1MzJhMmIwMjdkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBAIC0zNSw1MCArMzUsNDEgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEpOyB9CiAgICAg
UmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgqdGhpcykpOyB9CiAgICAgCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvKSBjb25zdAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNv
bnN0CiAgICAgewotICAgICAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcyAhPSBvLm1fY29udGFp
bnNWYXJpYWJsZXMpCisgICAgICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhlci5jb250
YWluc1ZhcmlhYmxlcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChtX3ZhbHVlcy5zaXplKCkgIT0gby5tX3ZhbHVlcy5zaXplKCkpCisKKyAgICAgICAg
aWYgKHZhbHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoV1RGOjpLZXlWYWx1ZVBhaXI8QXRv
bWljU3RyaW5nLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IGVudHJ5IDogbV92YWx1
ZXMpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBvdGhlciA9
IG8ubV92YWx1ZXMuZ2V0KGVudHJ5LmtleSk7Ci0gICAgICAgICAgICBpZiAoIW90aGVyIHx8ICFl
bnRyeS52YWx1ZS0+ZXF1YWxzKCpvdGhlcikpCisKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IHZhbHVlcykgeworICAgICAgICAgICAgYXV0byBvdGhlckVudHJ5ID0gb3RoZXIudmFsdWVzLmZp
bmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgIGlmIChvdGhlckVudHJ5ID09IG90aGVyLnZhbHVl
cy5lbmQoKSB8fCAhZW50cnkudmFsdWUtPmVxdWFscygqb3RoZXJFbnRyeS0+dmFsdWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YSAmbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVmUHRyPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+JiB2YWx1ZSkKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1
ZSkKICAgICB7Ci0gICAgICAgIG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7CiAgICAgICAgIGlm
ICh2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKLSAgICAgICAgICAgIG1fY29udGFpbnNWYXJp
YWJsZXMgPSB0cnVlOworICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOworICAg
ICAgICB2YWx1ZXMuc2V0KG5hbWUsIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQot
ICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9
Ci0gICAgCi0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmNvbnRhaW5zKG5hbWUpOyB9Ci0gICAgCi0gICAg
Ym9vbCBjb250YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNWYXJpYWJs
ZXM7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zVmFyaWFibGVzKGJvb2wgY29udGFpbnNWYXJpYWJs
ZXMpIHsgbV9jb250YWluc1ZhcmlhYmxlcyA9IGNvbnRhaW5zVmFyaWFibGVzOyB9Ci0KLSAgICBD
dXN0b21Qcm9wZXJ0eVZhbHVlTWFwIG1fdmFsdWVzOwotICAgIGJvb2wgbV9jb250YWluc1Zhcmlh
YmxlcyB7IGZhbHNlIH07CisgICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCB2YWx1ZXM7CisgICAg
Ym9vbCBjb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoKQotICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE+KCkKLSAgICB7IH0KKyAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSgpID0gZGVmYXVsdDsKICAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1
c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpCiAgICAgICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YT4oKQotICAgICAgICAsIG1fdmFsdWVzKEN1c3RvbVByb3BlcnR5VmFsdWVN
YXAob3RoZXIubV92YWx1ZXMpKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMob3RoZXIu
bV9jb250YWluc1ZhcmlhYmxlcykKKyAgICAgICAgLCB2YWx1ZXMob3RoZXIudmFsdWVzKQorICAg
ICAgICAsIGNvbnRhaW5zVmFyaWFibGVzKG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQogICAgIHsg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAppbmRleCAzMmY3ODA1ZWJj
ZjY1NjBhYWQ0NjllZmFmYzVhZWQzMmNjOTZhNWZmLi4xZmFmYTJkODg5NmQ3MTMyMzgyOTI2MTVm
NWNkNDBkZWNkZTU2OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcApAQCAt
MjgsOCArMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKCkKICAgICA6IGZsZXgo
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3hGbGV4KCkpCi0gICAgLCBmbGV4X2dyb3VwKFJlbmRlclN0
eWxlOjppbml0aWFsQm94RmxleEdyb3VwKCkpCi0gICAgLCBvcmRpbmFsX2dyb3VwKFJlbmRlclN0
eWxlOjppbml0aWFsQm94T3JkaW5hbEdyb3VwKCkpCisgICAgLCBmbGV4R3JvdXAoUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3hGbGV4R3JvdXAoKSkKKyAgICAsIG9yZGluYWxHcm91cChSZW5kZXJTdHls
ZTo6aW5pdGlhbEJveE9yZGluYWxHcm91cCgpKQogICAgICwgYWxpZ24oUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hBbGlnbigpKQogICAgICwgcGFjayhSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFBhY2so
KSkKICAgICAsIG9yaWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yaWVudCgpKQpAQCAtMzcs
MTUgKzM3LDE1IEBAIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKGNvbnN0IFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgbykKK2lubGluZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YShjb25zdCBTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGE+KCkKLSAgICAsIGZsZXgoby5mbGV4KQotICAgICwgZmxleF9n
cm91cChvLmZsZXhfZ3JvdXApCi0gICAgLCBvcmRpbmFsX2dyb3VwKG8ub3JkaW5hbF9ncm91cCkK
LSAgICAsIGFsaWduKG8uYWxpZ24pCi0gICAgLCBwYWNrKG8ucGFjaykKLSAgICAsIG9yaWVudChv
Lm9yaWVudCkKLSAgICAsIGxpbmVzKG8ubGluZXMpCisgICAgLCBmbGV4KG90aGVyLmZsZXgpCisg
ICAgLCBmbGV4R3JvdXAob3RoZXIuZmxleEdyb3VwKQorICAgICwgb3JkaW5hbEdyb3VwKG90aGVy
Lm9yZGluYWxHcm91cCkKKyAgICAsIGFsaWduKG90aGVyLmFsaWduKQorICAgICwgcGFjayhvdGhl
ci5wYWNrKQorICAgICwgb3JpZW50KG90aGVyLm9yaWVudCkKKyAgICAsIGxpbmVzKG90aGVyLmxp
bmVzKQogewogfQogCkBAIC01NCwxMSArNTQsMTEgQEAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YT4gU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEo
KnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJh
dG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorYm9v
bCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmxl
eCA9PSBvLmZsZXggJiYgZmxleF9ncm91cCA9PSBvLmZsZXhfZ3JvdXAgJiYKLSAgICAgICAgICAg
b3JkaW5hbF9ncm91cCA9PSBvLm9yZGluYWxfZ3JvdXAgJiYgYWxpZ24gPT0gby5hbGlnbiAmJgot
ICAgICAgICAgICBwYWNrID09IG8ucGFjayAmJiBvcmllbnQgPT0gby5vcmllbnQgJiYgbGluZXMg
PT0gby5saW5lczsKKyAgICByZXR1cm4gZmxleCA9PSBvdGhlci5mbGV4ICYmIGZsZXhHcm91cCA9
PSBvdGhlci5mbGV4R3JvdXAKKyAgICAgICAgJiYgb3JkaW5hbEdyb3VwID09IG90aGVyLm9yZGlu
YWxHcm91cCAmJiBhbGlnbiA9PSBvdGhlci5hbGlnbgorICAgICAgICAmJiBwYWNrID09IG90aGVy
LnBhY2sgJiYgb3JpZW50ID09IG90aGVyLm9yaWVudCAmJiBsaW5lcyA9PSBvdGhlci5saW5lczsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5o
CmluZGV4IDdmMDAwYmJlYmY3Y2ZkYWU0ZDZkYTk5NzdiMjQwYzg1ZmMyNGNmMzAuLjMzMGNmNjQ3
MzRkY2E3NWRiNWY4OWVlNzY2Y2I0ZGM5MTcxYWVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVC
b3hEYXRhLmgKQEAgLTM1LDE0ICszNSwxNCBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0
CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0
YSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAogICAgIGZsb2F0IGZsZXg7
Ci0gICAgdW5zaWduZWQgaW50IGZsZXhfZ3JvdXA7Ci0gICAgdW5zaWduZWQgaW50IG9yZGluYWxf
Z3JvdXA7CisgICAgdW5zaWduZWQgZmxleEdyb3VwOworICAgIHVuc2lnbmVkIG9yZGluYWxHcm91
cDsKIAogICAgIHVuc2lnbmVkIGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVudAogICAgIHVuc2ln
bmVkIHBhY2s6IDI7IC8vIEVCb3hQYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCmluZGV4IGIwZDNiZTExMDE1ZTQ3OWZmYWMwYWEx
NTAxNTBmZjdkMTg1YzIwYzIuLjIwZGJjMDhlNjYyNzM4NmRhZTMzNDVhM2Y1MmVmZmEyNWIyYjM5
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRl
ckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRl
ckRhdGEuY3BwCkBAIC0yNiwxOSArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTdHlsZUZpbHRlckRhdGEuaCIKIAotI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0j
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUZp
bHRlckRhdGE6OlN0eWxlRmlsdGVyRGF0YSgpCi0gICAgOiBtX29wZXJhdGlvbnMoKQogewogfQog
Ci1pbmxpbmUgU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoY29uc3QgU3R5bGVGaWx0
ZXJEYXRhJiBvKQoraW5saW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0
IFN0eWxlRmlsdGVyRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlRmlsdGVyRGF0
YT4oKQotICAgICwgbV9vcGVyYXRpb25zKG8ubV9vcGVyYXRpb25zKQorICAgICwgb3BlcmF0aW9u
cyhvdGhlci5vcGVyYXRpb25zKQogewogfQogCkBAIC00Nyw5ICs0Myw5IEBAIFJlZjxTdHlsZUZp
bHRlckRhdGE+IFN0eWxlRmlsdGVyRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVGaWx0ZXJEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVGaWx0ZXJE
YXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5
bGVGaWx0ZXJEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgb3RoZXIpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9ucyA9PSBvLm1fb3BlcmF0aW9uczsKKyAgICBy
ZXR1cm4gb3BlcmF0aW9ucyA9PSBvdGhlci5vcGVyYXRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGaWx0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0
ZXJEYXRhLmgKaW5kZXggYzk2ZTMxZWUwM2NlZWQ0OGI1MWQ0MmEzMTU3YWFhOGZlOTIxYzUzZC4u
YThiYTgzMWUyYzI1NWQ3ZTgyYmU4M2ZhNTU5MzI4YzEyZjRhZmNlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAotICAg
IEZpbHRlck9wZXJhdGlvbnMgbV9vcGVyYXRpb25zOworICAgIEZpbHRlck9wZXJhdGlvbnMgb3Bl
cmF0aW9uczsKIAogcHJpdmF0ZToKICAgICBTdHlsZUZpbHRlckRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3Bw
CmluZGV4IDk5ZTU1ZWI3ZTY0NjlkOWQ2NTQ1NWY2OWUxYzJkMjhhMjk3Y2JiNzUuLmE4MjE4NDQ1
YTE3NjcyMWViOWFiZGQyZmMyOGU4NGVmNDlmMzBlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcApAQCAtMzEs
MjEgKzMxLDIxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRmxleGlibGVCb3hEYXRh
OjpTdHlsZUZsZXhpYmxlQm94RGF0YSgpCi0gICAgOiBtX2ZsZXhHcm93KFJlbmRlclN0eWxlOjpp
bml0aWFsRmxleEdyb3coKSkKLSAgICAsIG1fZmxleFNocmluayhSZW5kZXJTdHlsZTo6aW5pdGlh
bEZsZXhTaHJpbmsoKSkKLSAgICAsIG1fZmxleEJhc2lzKFJlbmRlclN0eWxlOjppbml0aWFsRmxl
eEJhc2lzKCkpCi0gICAgLCBtX2ZsZXhEaXJlY3Rpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4
RGlyZWN0aW9uKCkpCi0gICAgLCBtX2ZsZXhXcmFwKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFdy
YXAoKSkKKyAgICA6IGZsZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEdyb3coKSkKKyAg
ICAsIGZsZXhTaHJpbmsoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4U2hyaW5rKCkpCisgICAgLCBm
bGV4QmFzaXMoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4QmFzaXMoKSkKKyAgICAsIGZsZXhEaXJl
Y3Rpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uKCkpCisgICAgLCBmbGV4V3Jh
cChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhXcmFwKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZUZs
ZXhpYmxlQm94RGF0YTo6U3R5bGVGbGV4aWJsZUJveERhdGEoY29uc3QgU3R5bGVGbGV4aWJsZUJv
eERhdGEmIG8pCitpbmxpbmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hE
YXRhKGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVGbGV4aWJsZUJveERhdGE+KCkKLSAgICAsIG1fZmxleEdyb3coby5tX2ZsZXhHcm93KQot
ICAgICwgbV9mbGV4U2hyaW5rKG8ubV9mbGV4U2hyaW5rKQotICAgICwgbV9mbGV4QmFzaXMoby5t
X2ZsZXhCYXNpcykKLSAgICAsIG1fZmxleERpcmVjdGlvbihvLm1fZmxleERpcmVjdGlvbikKLSAg
ICAsIG1fZmxleFdyYXAoby5tX2ZsZXhXcmFwKQorICAgICwgZmxleEdyb3cob3RoZXIuZmxleEdy
b3cpCisgICAgLCBmbGV4U2hyaW5rKG90aGVyLmZsZXhTaHJpbmspCisgICAgLCBmbGV4QmFzaXMo
b3RoZXIuZmxleEJhc2lzKQorICAgICwgZmxleERpcmVjdGlvbihvdGhlci5mbGV4RGlyZWN0aW9u
KQorICAgICwgZmxleFdyYXAob3RoZXIuZmxleFdyYXApCiB7CiB9CiAKQEAgLTU0LDEwICs1NCwx
MCBAQCBSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5
KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSgq
dGhpcykpOwogfQogCi1ib29sIFN0eWxlRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0
IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUZsZXhpYmxlQm94RGF0
YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZmxleEdyb3cgPT0gby5tX2ZsZXhHcm93ICYmIG1fZmxleFNocmluayA9
PSBvLm1fZmxleFNocmluayAmJiBtX2ZsZXhCYXNpcyA9PSBvLm1fZmxleEJhc2lzCi0gICAgICAg
ICYmIG1fZmxleERpcmVjdGlvbiA9PSBvLm1fZmxleERpcmVjdGlvbiAmJiBtX2ZsZXhXcmFwID09
IG8ubV9mbGV4V3JhcDsKKyAgICByZXR1cm4gZmxleEdyb3cgPT0gb3RoZXIuZmxleEdyb3cgJiYg
ZmxleFNocmluayA9PSBvdGhlci5mbGV4U2hyaW5rICYmIGZsZXhCYXNpcyA9PSBvdGhlci5mbGV4
QmFzaXMKKyAgICAgICAgJiYgZmxleERpcmVjdGlvbiA9PSBvdGhlci5mbGV4RGlyZWN0aW9uICYm
IGZsZXhXcmFwID09IG90aGVyLmZsZXhXcmFwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDMyMzhi
ODZmMmZiNTAwZGRmNGE4MDJlYTM5MDJiMDhhNjE3MGQ4NjkuLmY1NGQ4NTkwNGI5NGI0ZWFmNzM3
MjQwNzE3MWJmZmQzYmZlMzVmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCkBAIC00MiwxMiArNDIsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICBmbG9hdCBt
X2ZsZXhHcm93OwotICAgIGZsb2F0IG1fZmxleFNocmluazsKLSAgICBMZW5ndGggbV9mbGV4QmFz
aXM7CisgICAgZmxvYXQgZmxleEdyb3c7CisgICAgZmxvYXQgZmxleFNocmluazsKKyAgICBMZW5n
dGggZmxleEJhc2lzOwogCi0gICAgdW5zaWduZWQgbV9mbGV4RGlyZWN0aW9uIDogMjsgLy8gRUZs
ZXhEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBtX2ZsZXhXcmFwIDogMjsgLy8gRUZsZXhXcmFwCisg
ICAgdW5zaWduZWQgZmxleERpcmVjdGlvbiA6IDI7IC8vIEVGbGV4RGlyZWN0aW9uCisgICAgdW5z
aWduZWQgZmxleFdyYXAgOiAyOyAvLyBFRmxleFdyYXAKIAogcHJpdmF0ZToKICAgICBTdHlsZUZs
ZXhpYmxlQm94RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDJjODRiMmY1NjdmMDdhMTk1OGM3MGU2
NmI2ZjNmNGZjN2Q2OGZlMjIuLmIwMDYzNzgxNGVhM2I0YjcxNjAxNzkwM2RmY2RkZmUyNGJhMzBi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6
U3R5bGVHZW5lcmF0ZWRJbWFnZShSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkK
IAogUmVmPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5j
b3B5UmVmKCk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aXNQZW5kaW5nKCkgY29u
c3QKQEAgLTU2LDcgKzU2LDcgQEAgRmxvYXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdl
U2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXUKIHsKICAgICBBU1NF
UlQocmVuZGVyZXIpOwogICAgIGlmIChtX2ZpeGVkU2l6ZSkgewotICAgICAgICBGbG9hdFNpemUg
Zml4ZWRTaXplID0gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdl
bmVyYXRvclZhbHVlLmdldCgpKS5maXhlZFNpemUoKnJlbmRlcmVyKTsKKyAgICAgICAgRmxvYXRT
aXplIGZpeGVkU2l6ZSA9IG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+Zml4ZWRTaXplKCpyZW5kZXJl
cik7CiAgICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEuMGYpCiAgICAgICAgICAgICByZXR1cm4g
Zml4ZWRTaXplOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdl
OjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiBSZWZQdHI8SW1hZ2U+IFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKLSAgICByZXR1
cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZh
bHVlLmdldCgpKS5pbWFnZSgqcmVuZGVyZXIsIHNpemUpOworICAgIHJldHVybiBtX2ltYWdlR2Vu
ZXJhdG9yVmFsdWUtPmltYWdlKCpyZW5kZXJlciwgc2l6ZSk7CiB9CiAKIGJvb2wgU3R5bGVHZW5l
cmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuY3BwCmluZGV4IDU0ODA2MDQ0MDMwYTZhOWRjODBlZDc0YjI0ODdmODM3ZDU4ZjM0MzUuLmMx
NDFlZjdlYWFiN2M0OTVhMjhhZTRkODYzM2U5ODMzM2YzMzE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKQEAgLTMzLDU5ICszMyw1
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRh
KCkKLSAgICA6IG1fZ3JpZENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1ucygp
KQotICAgICwgbV9ncmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dzKCkpCi0gICAg
LCBtX25hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29s
dW1uTGluZXMoKSkKLSAgICAsIG1fbmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRp
YWxOYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAg
ICAsIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5M
aW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBt
X2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3Jp
ZFJvd0xpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAg
ICAsIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5p
dGlhbE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9ncmlkQXV0b0Zsb3coUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKSkKLSAgICAsIG1fZ3JpZEF1dG9Sb3dzKFJl
bmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCi0gICAgLCBtX2dyaWRBdXRvQ29sdW1u
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29sdW1ucygpKQotICAgICwgbV9uYW1lZEdy
aWRBcmVhKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgpKQotICAgICwgbV9uYW1l
ZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQo
KSkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFs
TmFtZWRHcmlkQXJlYUNvdW50KCkpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkQ29sdW1uR2FwKCkpCi0gICAgLCBtX2dyaWRSb3dHYXAoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkUm93R2FwKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBtX2dyaWRBdXRv
UmVwZWF0Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0g
ICAgLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlv
blBvaW50KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZShSZW5kZXJTdHlsZTo6aW5p
dGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpKQotICAgICwgbV9hdXRvUmVwZWF0Um93c1R5cGUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKKyAgICA6IGdyaWRDb2x1bW5z
KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMoKSkKKyAgICAsIGdyaWRSb3dzKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZFJvd3MoKSkKKyAgICAsIG5hbWVkR3JpZENvbHVtbkxpbmVzKFJl
bmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAsIG5hbWVkR3Jp
ZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAs
IG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWRO
YW1lZEdyaWRDb2x1bW5MaW5lcygpKQorICAgICwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJl
bmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpCisgICAgLCBhdXRv
UmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRD
b2x1bW5MaW5lcygpKQorICAgICwgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0
eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVk
TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGdy
aWRBdXRvRmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpKQorICAgICwgZ3Jp
ZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCisgICAgLCBncmlk
QXV0b0NvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKKyAgICAs
IG5hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhKCkpCisgICAg
LCBuYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVh
Q291bnQoKSkKKyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5p
dGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQorICAgICwgZ3JpZENvbHVtbkdhcChSZW5kZXJTdHls
ZTo6aW5pdGlhbEdyaWRDb2x1bW5HYXAoKSkKKyAgICAsIGdyaWRSb3dHYXAoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkUm93R2FwKCkpCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoUmVuZGVy
U3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFRyYWNrcygpKQorICAgICwgZ3JpZEF1dG9SZXBl
YXRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFja3MoKSkKKyAgICAs
IGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlk
QXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCisgICAgLCBhdXRvUmVwZWF0Um93c0luc2VydGlv
blBvaW50KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgp
KQorICAgICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1
dG9SZXBlYXRUeXBlKCkpCisgICAgLCBhdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKIHsKIH0KIAogaW5saW5lIFN0eWxlR3JpZERhdGE6
OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVHcmlkRGF0YT4oKQotICAgICwgbV9ncmlkQ29sdW1ucyhvLm1fZ3JpZENvbHVtbnMpCi0g
ICAgLCBtX2dyaWRSb3dzKG8ubV9ncmlkUm93cykKLSAgICAsIG1fbmFtZWRHcmlkQ29sdW1uTGlu
ZXMoby5tX25hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9uYW1lZEdyaWRSb3dMaW5lcyhv
Lm1fbmFtZWRHcmlkUm93TGluZXMpCi0gICAgLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
cyhvLm1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1fYXV0b1Jl
cGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXMpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLm1fYXV0b1JlcGVhdE5h
bWVkR3JpZFJvd0xpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwg
bV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzKQotICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxv
dykKLSAgICAsIG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCi0gICAgLCBtX2dyaWRB
dXRvQ29sdW1ucyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQotICAgICwgbV9uYW1lZEdyaWRBcmVhKG8u
bV9uYW1lZEdyaWRBcmVhKQotICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoby5tX25hbWVk
R3JpZEFyZWFSb3dDb3VudCkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoby5tX2dyaWRD
b2x1bW5HYXApCi0gICAgLCBtX2dyaWRSb3dHYXAoby5tX2dyaWRSb3dHYXApCi0gICAgLCBtX2dy
aWRBdXRvUmVwZWF0Q29sdW1ucyhvLm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQotICAgICwgbV9n
cmlkQXV0b1JlcGVhdFJvd3Moby5tX2dyaWRBdXRvUmVwZWF0Um93cykKLSAgICAsIG1fYXV0b1Jl
cGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludCkKLSAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVh
dFJvd3NJbnNlcnRpb25Qb2ludCkKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9h
dXRvUmVwZWF0Q29sdW1uc1R5cGUpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0
b1JlcGVhdFJvd3NUeXBlKQorICAgICwgZ3JpZENvbHVtbnMoby5ncmlkQ29sdW1ucykKKyAgICAs
IGdyaWRSb3dzKG8uZ3JpZFJvd3MpCisgICAgLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm5hbWVk
R3JpZENvbHVtbkxpbmVzKQorICAgICwgbmFtZWRHcmlkUm93TGluZXMoby5uYW1lZEdyaWRSb3dM
aW5lcykKKyAgICAsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lcykKKyAgICAsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLm9yZGVyZWRO
YW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhv
LmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdy
aWRSb3dMaW5lcyhvLmF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZENvbHVtbkxpbmVzKQorICAgICwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhv
LmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpCisgICAgLCBncmlkQXV0b0Zsb3co
by5ncmlkQXV0b0Zsb3cpCisgICAgLCBncmlkQXV0b1Jvd3Moby5ncmlkQXV0b1Jvd3MpCisgICAg
LCBncmlkQXV0b0NvbHVtbnMoby5ncmlkQXV0b0NvbHVtbnMpCisgICAgLCBuYW1lZEdyaWRBcmVh
KG8ubmFtZWRHcmlkQXJlYSkKKyAgICAsIG5hbWVkR3JpZEFyZWFSb3dDb3VudChvLm5hbWVkR3Jp
ZEFyZWFSb3dDb3VudCkKKyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChvLm5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCkKKyAgICAsIGdyaWRDb2x1bW5HYXAoby5ncmlkQ29sdW1uR2FwKQor
ICAgICwgZ3JpZFJvd0dhcChvLmdyaWRSb3dHYXApCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVt
bnMoby5ncmlkQXV0b1JlcGVhdENvbHVtbnMpCisgICAgLCBncmlkQXV0b1JlcGVhdFJvd3Moby5n
cmlkQXV0b1JlcGVhdFJvd3MpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
KG8uYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkKKyAgICAsIGF1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQoby5hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KQorICAgICwgYXV0
b1JlcGVhdENvbHVtbnNUeXBlKG8uYXV0b1JlcGVhdENvbHVtbnNUeXBlKQorICAgICwgYXV0b1Jl
cGVhdFJvd3NUeXBlKG8uYXV0b1JlcGVhdFJvd3NUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCAxNDRlZmFiOGJjOGZh
YzdmYzdjNTdmMzQzM2QzMmNjYmFhYTg5ODRjLi5iMTFmMzBhNWM2ZjQ0ZTZjNzI0MzhjOWNmZmI5
M2NkZjEyZGMxZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmgKQEAgLTQ4LDE4ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CiAgICAgewogICAgICAgICAvLyBGSVhN
RTogY29tcGFyaW5nIHR3byBoYXNoZXMgZG9lc24ndCBsb29rIGdyZWF0IGZvciBwZXJmb3JtYW5j
ZS4gU29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBnb2luZyBmb3J3YXJkLgotICAgICAgICByZXR1
cm4gbV9ncmlkQ29sdW1ucyA9PSBvLm1fZ3JpZENvbHVtbnMgJiYgbV9ncmlkUm93cyA9PSBvLm1f
Z3JpZFJvd3MKLSAgICAgICAgICAgICYmIG1fZ3JpZEF1dG9GbG93ID09IG8ubV9ncmlkQXV0b0Zs
b3cgJiYgbV9ncmlkQXV0b1Jvd3MgPT0gby5tX2dyaWRBdXRvUm93cyAmJiBtX2dyaWRBdXRvQ29s
dW1ucyA9PSBvLm1fZ3JpZEF1dG9Db2x1bW5zCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZENv
bHVtbkxpbmVzID09IG8ubV9uYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX25hbWVkR3JpZFJvd0xp
bmVzID09IG8ubV9uYW1lZEdyaWRSb3dMaW5lcwotICAgICAgICAgICAgJiYgbV9hdXRvUmVwZWF0
TmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5l
cyAmJiBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE5hbWVk
R3JpZFJvd0xpbmVzCi0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMgPT0gby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMg
JiYgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9hdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFyZWEg
PT0gby5tX25hbWVkR3JpZEFyZWEgJiYgbV9uYW1lZEdyaWRBcmVhID09IG8ubV9uYW1lZEdyaWRB
cmVhCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFyZWFSb3dDb3VudCA9PSBvLm1fbmFtZWRH
cmlkQXJlYVJvd0NvdW50ICYmIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50ID09IG8ubV9uYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQKLSAgICAgICAgICAgICYmIG1fb3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzID09IG8ubV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgJiYgbV9vcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMgPT0gby5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcwotICAgICAg
ICAgICAgJiYgbV9ncmlkQ29sdW1uR2FwID09IG8ubV9ncmlkQ29sdW1uR2FwICYmIG1fZ3JpZFJv
d0dhcCA9PSBvLm1fZ3JpZFJvd0dhcAotICAgICAgICAgICAgJiYgbV9ncmlkQXV0b1JlcGVhdENv
bHVtbnMgPT0gby5tX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBtX2dyaWRBdXRvUmVwZWF0Um93
cyA9PSBvLm1fZ3JpZEF1dG9SZXBlYXRSb3dzCi0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRD
b2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9p
bnQgJiYgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50ID09IG8ubV9hdXRvUmVwZWF0Um93
c0luc2VydGlvblBvaW50Ci0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSA9
PSBvLm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIG1fYXV0b1JlcGVhdFJvd3NUeXBlID09IG8u
bV9hdXRvUmVwZWF0Um93c1R5cGU7CisgICAgICAgIHJldHVybiBncmlkQ29sdW1ucyA9PSBvLmdy
aWRDb2x1bW5zICYmIGdyaWRSb3dzID09IG8uZ3JpZFJvd3MKKyAgICAgICAgICAgICYmIGdyaWRB
dXRvRmxvdyA9PSBvLmdyaWRBdXRvRmxvdyAmJiBncmlkQXV0b1Jvd3MgPT0gby5ncmlkQXV0b1Jv
d3MgJiYgZ3JpZEF1dG9Db2x1bW5zID09IG8uZ3JpZEF1dG9Db2x1bW5zCisgICAgICAgICAgICAm
JiBuYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG5hbWVk
R3JpZFJvd0xpbmVzID09IG8ubmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5M
aW5lcyAmJiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIGF1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzCisgICAgICAgICAgICAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFtZWRH
cmlkQXJlYSAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJlYQorICAgICAgICAgICAg
JiYgbmFtZWRHcmlkQXJlYVJvd0NvdW50ID09IG8ubmFtZWRHcmlkQXJlYVJvd0NvdW50ICYmIG5h
bWVkR3JpZEFyZWFDb2x1bW5Db3VudCA9PSBvLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAorICAg
ICAgICAgICAgJiYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ub3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzICYmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm9yZGVyZWROYW1l
ZEdyaWRDb2x1bW5MaW5lcworICAgICAgICAgICAgJiYgZ3JpZENvbHVtbkdhcCA9PSBvLmdyaWRD
b2x1bW5HYXAgJiYgZ3JpZFJvd0dhcCA9PSBvLmdyaWRSb3dHYXAKKyAgICAgICAgICAgICYmIGdy
aWRBdXRvUmVwZWF0Q29sdW1ucyA9PSBvLmdyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBncmlkQXV0
b1JlcGVhdFJvd3MgPT0gby5ncmlkQXV0b1JlcGVhdFJvd3MKKyAgICAgICAgICAgICYmIGF1dG9S
ZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlv
blBvaW50ICYmIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Um93
c0luc2VydGlvblBvaW50CisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0g
by5hdXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09IG8uYXV0b1Jl
cGVhdFJvd3NUeXBlOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdy
aWREYXRhJiBvKSBjb25zdApAQCAtNjcsNDMgKzY3LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgbmFt
aW5nIG9mIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzLgotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiBtX2dyaWRDb2x1bW5zOwotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRSb3dzOwor
ICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQ29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4gZ3JpZFJvd3M7CiAKLSAgICBOYW1lZEdyaWRMaW5lc01hcCBtX25hbWVkR3JpZENv
bHVtbkxpbmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fbmFtZWRHcmlkUm93TGluZXM7Cisg
ICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgTmFtZWRHcmlk
TGluZXNNYXAgbmFtZWRHcmlkUm93TGluZXM7CiAKLSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExp
bmVzTWFwIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3Jp
ZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKIAotICAgIE5hbWVkR3JpZExpbmVz
TWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzOwotICAgIE5hbWVkR3JpZExpbmVz
TWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOwotICAgIE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3Jk
ZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
czsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7
CisgICAgTmFtZWRHcmlkTGluZXNNYXAgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOworICAg
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzOwogCi0gICAgdW5zaWduZWQgbV9ncmlkQXV0b0Zsb3cgOiBHcmlkQXV0
b0Zsb3dCaXRzOworICAgIHVuc2lnbmVkIGdyaWRBdXRvRmxvdyA6IEdyaWRBdXRvRmxvd0JpdHM7
CiAKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b1Jvd3M7Ci0gICAgVmVjdG9y
PEdyaWRUcmFja1NpemU+IG1fZ3JpZEF1dG9Db2x1bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tT
aXplPiBncmlkQXV0b1Jvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvQ29s
dW1uczsKIAotICAgIE5hbWVkR3JpZEFyZWFNYXAgbV9uYW1lZEdyaWRBcmVhOwotICAgIC8vIEJl
Y2F1c2UgbV9uYW1lZEdyaWRBcmVhIGRvZXNuJ3Qgc3RvcmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVh
cywgd2UgbmVlZCB0byBrZWVwIHRyYWNrCisgICAgTmFtZWRHcmlkQXJlYU1hcCBuYW1lZEdyaWRB
cmVhOworICAgIC8vIEJlY2F1c2UgbmFtZWRHcmlkQXJlYSBkb2Vzbid0IHN0b3JlIHRoZSB1bm5h
bWVkIGdyaWQgYXJlYXMsIHdlIG5lZWQgdG8ga2VlcCB0cmFjawogICAgIC8vIG9mIHRoZSBleHBs
aWNpdCBncmlkIHNpemUgZGVmaW5lZCBieSBib3RoIG5hbWVkIGFuZCB1bm5hbWVkIGdyaWQgYXJl
YXMuCi0gICAgdW5zaWduZWQgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7Ci0gICAgdW5zaWduZWQg
bV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7CisgICAgdW5zaWduZWQgbmFtZWRHcmlkQXJlYVJv
d0NvdW50OworICAgIHVuc2lnbmVkIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKIAotICAgIExl
bmd0aCBtX2dyaWRDb2x1bW5HYXA7Ci0gICAgTGVuZ3RoIG1fZ3JpZFJvd0dhcDsKKyAgICBMZW5n
dGggZ3JpZENvbHVtbkdhcDsKKyAgICBMZW5ndGggZ3JpZFJvd0dhcDsKIAotICAgIFZlY3RvcjxH
cmlkVHJhY2tTaXplPiBtX2dyaWRBdXRvUmVwZWF0Q29sdW1uczsKLSAgICBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4gbV9ncmlkQXV0b1JlcGVhdFJvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+
IGdyaWRBdXRvUmVwZWF0Q29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1
dG9SZXBlYXRSb3dzOwogCi0gICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlv
blBvaW50OwotICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsKKyAg
ICB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OworICAgIHVuc2lnbmVk
IGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7CiAKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1
dG9SZXBlYXRDb2x1bW5zVHlwZTsKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRSb3dz
VHlwZTsKKyAgICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0Q29sdW1uc1R5cGU7CisgICAgQXV0
b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFJvd3NUeXBlOwogCiBwcml2YXRlOgogICAgIFN0eWxlR3Jp
ZERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWRJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkSXRlbURhdGEuY3BwCmluZGV4IDEwMmJlOTA4ZDc2Y2RkNmZmYTE3MmQ0YTJhMmEyMjZkZTVi
M2I1Y2QuLmMyZGI4ZTc0ODI1YjIwMWU0MTc0NDcxZGZkMjE0NTY2MzY3NDdlZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZUdyaWRJdGVtRGF0YS5oIgog
CkBAIC0zNywxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVHcmlkSXRl
bURhdGE6OlN0eWxlR3JpZEl0ZW1EYXRhKCkKLSAgICA6IG1fZ3JpZENvbHVtblN0YXJ0KFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEl0ZW1Db2x1bW5TdGFydCgpKQotICAgICwgbV9ncmlkQ29sdW1u
RW5kKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Db2x1bW5FbmQoKSkKLSAgICAsIG1fZ3Jp
ZFJvd1N0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpKQotICAgICwg
bV9ncmlkUm93RW5kKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dFbmQoKSkKKyAgICA6
IGdyaWRDb2x1bW5TdGFydChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtQ29sdW1uU3RhcnQo
KSkKKyAgICAsIGdyaWRDb2x1bW5FbmQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbUNvbHVt
bkVuZCgpKQorICAgICwgZ3JpZFJvd1N0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1S
b3dTdGFydCgpKQorICAgICwgZ3JpZFJvd0VuZChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVt
Um93RW5kKCkpCiB7CiB9CiAKIGlubGluZSBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRl
bURhdGEoY29uc3QgU3R5bGVHcmlkSXRlbURhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxl
R3JpZEl0ZW1EYXRhPigpCi0gICAgLCBtX2dyaWRDb2x1bW5TdGFydChvLm1fZ3JpZENvbHVtblN0
YXJ0KQotICAgICwgbV9ncmlkQ29sdW1uRW5kKG8ubV9ncmlkQ29sdW1uRW5kKQotICAgICwgbV9n
cmlkUm93U3RhcnQoby5tX2dyaWRSb3dTdGFydCkKLSAgICAsIG1fZ3JpZFJvd0VuZChvLm1fZ3Jp
ZFJvd0VuZCkKKyAgICAsIGdyaWRDb2x1bW5TdGFydChvLmdyaWRDb2x1bW5TdGFydCkKKyAgICAs
IGdyaWRDb2x1bW5FbmQoby5ncmlkQ29sdW1uRW5kKQorICAgICwgZ3JpZFJvd1N0YXJ0KG8uZ3Jp
ZFJvd1N0YXJ0KQorICAgICwgZ3JpZFJvd0VuZChvLmdyaWRSb3dFbmQpCiB7CiB9CiAKQEAgLTYw
LDQgKzYxLDQgQEAgUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29w
eSgpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8qIEVOQUJMRShD
U1NfR1JJRF9MQVlPVVQpICovCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKaW5kZXggOGIyOGQ5NGI0MWIyOWIwMDIxNGNk
YzY0ZWJmMTYxNzQwN2FlMGRkNi4uODBjODRmYzczMWUyZmNiZmZkZmY1MDgzZTIzY2MyMGExNGU4
NGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZEl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZEl0ZW1EYXRhLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZ3JpZENvbHVtblN0YXJ0ID09IG8ubV9ncmlkQ29sdW1uU3RhcnQgJiYgbV9ncmlkQ29s
dW1uRW5kID09IG8ubV9ncmlkQ29sdW1uRW5kCi0gICAgICAgICAgICAmJiBtX2dyaWRSb3dTdGFy
dCA9PSBvLm1fZ3JpZFJvd1N0YXJ0ICYmIG1fZ3JpZFJvd0VuZCA9PSBvLm1fZ3JpZFJvd0VuZDsK
KyAgICAgICAgcmV0dXJuIGdyaWRDb2x1bW5TdGFydCA9PSBvLmdyaWRDb2x1bW5TdGFydCAmJiBn
cmlkQ29sdW1uRW5kID09IG8uZ3JpZENvbHVtbkVuZAorICAgICAgICAgICAgJiYgZ3JpZFJvd1N0
YXJ0ID09IG8uZ3JpZFJvd1N0YXJ0ICYmIGdyaWRSb3dFbmQgPT0gby5ncmlkUm93RW5kOwogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykgY29u
c3QKQEAgLTU0LDEwICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG8pOwogICAgIH0KIAotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRDb2x1bW5TdGFydDsKLSAgICBH
cmlkUG9zaXRpb24gbV9ncmlkQ29sdW1uRW5kOwotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRSb3dT
dGFydDsKLSAgICBHcmlkUG9zaXRpb24gbV9ncmlkUm93RW5kOworICAgIEdyaWRQb3NpdGlvbiBn
cmlkQ29sdW1uU3RhcnQ7CisgICAgR3JpZFBvc2l0aW9uIGdyaWRDb2x1bW5FbmQ7CisgICAgR3Jp
ZFBvc2l0aW9uIGdyaWRSb3dTdGFydDsKKyAgICBHcmlkUG9zaXRpb24gZ3JpZFJvd0VuZDsKIAog
cHJpdmF0ZToKICAgICBTdHlsZUdyaWRJdGVtRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAppbmRleCA2MzM5ZjZk
ZGViMTdjOTc1YTE3ODhhYjFjOGRhNDMyNmVmMWU4NTkxLi5hNWUzNTdlZTkzMTIzZjEyZDc0MjZm
MDczMDA2NzVhMTIxZmFiNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcApAQCAtMjcsOSArMjcsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgp
Ci0gICAgOiBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoKSkKLSAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJl
bmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCi0gICAgLCBsaW5lX2hl
aWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKKyAgICA6IGhvcml6b250YWxC
b3JkZXJTcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
KSkKKyAgICAsIHZlcnRpY2FsQm9yZGVyU3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRp
Y2FsQm9yZGVyU3BhY2luZygpKQorICAgICwgbGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSkKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICwgc3BlY2lm
aWVkTGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKICNlbmRpZgpA
QCAtMzgsMTUgKzM4LDExIEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRh
KCkKIHsKIH0KIAotU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKCkKLXsK
LX0KLQogaW5saW5lIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0
IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWRE
YXRhPigpCi0gICAgLCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKG8uaG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZykKLSAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKG8udmVydGljYWxfYm9y
ZGVyX3NwYWNpbmcpCi0gICAgLCBsaW5lX2hlaWdodChvLmxpbmVfaGVpZ2h0KQorICAgICwgaG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoby5ob3Jpem9udGFsQm9yZGVyU3BhY2luZykKKyAgICAsIHZl
cnRpY2FsQm9yZGVyU3BhY2luZyhvLnZlcnRpY2FsQm9yZGVyU3BhY2luZykKKyAgICAsIGxpbmVI
ZWlnaHQoby5saW5lSGVpZ2h0KQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLCBz
cGVjaWZpZWRMaW5lSGVpZ2h0KG8uc3BlY2lmaWVkTGluZUhlaWdodCkKICNlbmRpZgpAQCAtNjMs
MTUgKzU5LDE1IEBAIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6
Y29weSgpIGNvbnN0CiAKIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0
IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsKLSAgICByZXR1cm4gbGluZV9oZWlnaHQg
PT0gby5saW5lX2hlaWdodAorICAgIHJldHVybiBsaW5lSGVpZ2h0ID09IG8ubGluZUhlaWdodAog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHNwZWNpZmllZExpbmVIZWln
aHQgPT0gby5zcGVjaWZpZWRMaW5lSGVpZ2h0CiAjZW5kaWYKICAgICAgICAgJiYgZm9udENhc2Nh
ZGUgPT0gby5mb250Q2FzY2FkZQogICAgICAgICAmJiBjb2xvciA9PSBvLmNvbG9yCiAgICAgICAg
ICYmIHZpc2l0ZWRMaW5rQ29sb3IgPT0gby52aXNpdGVkTGlua0NvbG9yCi0gICAgICAgICYmIGhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCi0g
ICAgICAgICYmIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG8udmVydGljYWxfYm9yZGVyX3Nw
YWNpbmc7CisgICAgICAgICYmIGhvcml6b250YWxCb3JkZXJTcGFjaW5nID09IG8uaG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcKKyAgICAgICAgJiYgdmVydGljYWxCb3JkZXJTcGFjaW5nID09IG8udmVy
dGljYWxCb3JkZXJTcGFjaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKaW5k
ZXggMjliZmNiNDQzYTBkZTA4MDlmNDRlY2E0ZGYxM2RjMjI2ZjcyYTgyOC4uZDY1NTU4MzVhYzhl
MDkzMDUwNjA1NWRmYzhiMTlhMjg4OTI4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0u
ZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNyw5ICsyNyw2IEBACiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkxlbmd0aC5o
IgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyMCAr
MzQsMTQgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVJbmhlcml0ZWREYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRl
ZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRh
KTsgfQogICAgIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdDsKLSAgICB+U3R5
bGVJbmhlcml0ZWREYXRhKCk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhl
cml0ZWREYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhl
cml0ZWREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7
Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgIGZsb2F0IGhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmc7Ci0gICAgZmxvYXQgdmVydGljYWxfYm9yZGVyX3NwYWNpbmc7
CisgICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmc7CisgICAgZmxvYXQgdmVydGljYWxC
b3JkZXJTcGFjaW5nOwogCi0gICAgLy8gY291bGQgYmUgcGFja2VkIGluIGEgc2hvcnQgYnV0IGRv
ZXNuJ3QKLSAgICAvLyBtYWtlIGEgZGlmZmVyZW5jZSBjdXJyZW50bHkgYmVjYXVzZSBvZiBwYWRk
aW5nCi0gICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OworICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogI2lm
IEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQ7
CiAjZW5kaWYKQEAgLTYyLDYgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHlsZUlu
aGVyaXRlZERhdGEoKTsKICAgICBTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0
ZWREYXRhJik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJikg
PSBkZWxldGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAppbmRleCA1Yzkw
ZTIwYTE4MGQyYWFkNmE0Zjk3OTBkMGQ0YWJlNzU0Zjc2NDc0Li5iN2U3OTRmODRiMzk3Y2ZkOGI2
YTQ5YWFmZTFmN2ZiOThiNzc5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMzMgKzI3LDMx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRp
Q29sRGF0YSgpCi0gICAgOiBtX3dpZHRoKDApCi0gICAgLCBtX2NvdW50KFJlbmRlclN0eWxlOjpp
bml0aWFsQ29sdW1uQ291bnQoKSkKLSAgICAsIG1fZ2FwKDApCi0gICAgLCBtX2F1dG9XaWR0aCh0
cnVlKQotICAgICwgbV9hdXRvQ291bnQodHJ1ZSkKLSAgICAsIG1fbm9ybWFsR2FwKHRydWUpCi0g
ICAgLCBtX2ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCi0gICAgLCBtX2Nv
bHVtblNwYW4oZmFsc2UpCi0gICAgLCBtX2F4aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5B
eGlzKCkpCi0gICAgLCBtX3Byb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJv
Z3Jlc3Npb24oKSkKKyAgICA6IGNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQo
KSkKKyAgICAsIGF1dG9XaWR0aCh0cnVlKQorICAgICwgYXV0b0NvdW50KHRydWUpCisgICAgLCBu
b3JtYWxHYXAodHJ1ZSkKKyAgICAsIGZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxs
KCkpCisgICAgLCBjb2x1bW5TcGFuKGZhbHNlKQorICAgICwgYXhpcyhSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbHVtbkF4aXMoKSkKKyAgICAsIHByb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFs
Q29sdW1uUHJvZ3Jlc3Npb24oKSkKIHsKIH0KIAotaW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpT
dHlsZU11bHRpQ29sRGF0YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKK2lubGluZSBTdHls
ZU11bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEm
IG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZU11bHRpQ29sRGF0YT4oKQotICAgICwgbV93
aWR0aChvLm1fd2lkdGgpCi0gICAgLCBtX2NvdW50KG8ubV9jb3VudCkKLSAgICAsIG1fZ2FwKG8u
bV9nYXApCi0gICAgLCBtX3J1bGUoby5tX3J1bGUpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1u
UnVsZUNvbG9yKG8ubV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKLSAgICAsIG1fYXV0b1dp
ZHRoKG8ubV9hdXRvV2lkdGgpCi0gICAgLCBtX2F1dG9Db3VudChvLm1fYXV0b0NvdW50KQotICAg
ICwgbV9ub3JtYWxHYXAoby5tX25vcm1hbEdhcCkKLSAgICAsIG1fZmlsbChvLm1fZmlsbCkKLSAg
ICAsIG1fY29sdW1uU3BhbihvLm1fY29sdW1uU3BhbikKLSAgICAsIG1fYXhpcyhvLm1fYXhpcykK
LSAgICAsIG1fcHJvZ3Jlc3Npb24oby5tX3Byb2dyZXNzaW9uKQorICAgICwgd2lkdGgob3RoZXIu
d2lkdGgpCisgICAgLCBjb3VudChvdGhlci5jb3VudCkKKyAgICAsIGdhcChvdGhlci5nYXApCisg
ICAgLCBydWxlKG90aGVyLnJ1bGUpCisgICAgLCB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihv
dGhlci52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKKyAgICAsIGF1dG9XaWR0aChvdGhlci5h
dXRvV2lkdGgpCisgICAgLCBhdXRvQ291bnQob3RoZXIuYXV0b0NvdW50KQorICAgICwgbm9ybWFs
R2FwKG90aGVyLm5vcm1hbEdhcCkKKyAgICAsIGZpbGwob3RoZXIuZmlsbCkKKyAgICAsIGNvbHVt
blNwYW4ob3RoZXIuY29sdW1uU3BhbikKKyAgICAsIGF4aXMob3RoZXIuYXhpcykKKyAgICAsIHBy
b2dyZXNzaW9uKG90aGVyLnByb2dyZXNzaW9uKQogewogfQogCkBAIC02MiwxMyArNjAsMTMgQEAg
UmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEoKnRoaXMpKTsKIH0KIAot
Ym9vbCBTdHlsZU11bHRpQ29sRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0
YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVNdWx0aUNvbERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVNdWx0aUNvbERhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3dpZHRoID09IG8u
bV93aWR0aCAmJiBtX2NvdW50ID09IG8ubV9jb3VudCAmJiBtX2dhcCA9PSBvLm1fZ2FwCi0gICAg
ICAgICYmIG1fcnVsZSA9PSBvLm1fcnVsZSAmJiBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
ID09IG8ubV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcgotICAgICAgICAmJiBtX2F1dG9XaWR0
aCA9PSBvLm1fYXV0b1dpZHRoICYmIG1fYXV0b0NvdW50ID09IG8ubV9hdXRvQ291bnQgJiYgbV9u
b3JtYWxHYXAgPT0gby5tX25vcm1hbEdhcAotICAgICAgICAmJiBtX2ZpbGwgPT0gby5tX2ZpbGwg
JiYgbV9jb2x1bW5TcGFuID09IG8ubV9jb2x1bW5TcGFuCi0gICAgICAgICYmIG1fYXhpcyA9PSBv
Lm1fYXhpcyAmJiBtX3Byb2dyZXNzaW9uID09IG8ubV9wcm9ncmVzc2lvbjsKKyAgICByZXR1cm4g
d2lkdGggPT0gb3RoZXIud2lkdGggJiYgY291bnQgPT0gb3RoZXIuY291bnQgJiYgZ2FwID09IG90
aGVyLmdhcAorICAgICAgICAmJiBydWxlID09IG90aGVyLnJ1bGUgJiYgdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IgPT0gb3RoZXIudmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IKKyAgICAgICAg
JiYgYXV0b1dpZHRoID09IG90aGVyLmF1dG9XaWR0aCAmJiBhdXRvQ291bnQgPT0gb3RoZXIuYXV0
b0NvdW50ICYmIG5vcm1hbEdhcCA9PSBvdGhlci5ub3JtYWxHYXAKKyAgICAgICAgJiYgZmlsbCA9
PSBvdGhlci5maWxsICYmIGNvbHVtblNwYW4gPT0gb3RoZXIuY29sdW1uU3BhbgorICAgICAgICAm
JiBheGlzID09IG90aGVyLmF4aXMgJiYgcHJvZ3Jlc3Npb24gPT0gb3RoZXIucHJvZ3Jlc3Npb247
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXggMjkzNGY5ODU1NjdlN2QxMTEz
M2E0YzZkZTUzZmUxYTU4ZDQ1MzI3MC4uNWJkZjgxZDUxN2I5MGQxOTY4Y2QyMmQzNzYxNzdjMjdi
YmQ2OTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtMzgsMzIgKzM4LDI5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxl
TXVsdGlDb2xEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlD
b2xEYXRhKTsgfQogICAgIFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gY29weSgpIGNvbnN0OwogICAg
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhICZvKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBydWxlV2lkdGgoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKG1fcnVsZS5zdHlsZSgpID09IEJOT05FIHx8IG1fcnVsZS5zdHls
ZSgpID09IEJISURERU4pCisgICAgICAgIGlmIChydWxlLnN0eWxlKCkgPT0gQk5PTkUgfHwgcnVs
ZS5zdHlsZSgpID09IEJISURERU4pCiAgICAgICAgICAgICByZXR1cm4gMDsgCi0gICAgICAgIHJl
dHVybiBtX3J1bGUud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIHJ1bGUud2lkdGgoKTsKICAgICB9
CiAKLSAgICBmbG9hdCBtX3dpZHRoOwotICAgIHVuc2lnbmVkIHNob3J0IG1fY291bnQ7Ci0gICAg
ZmxvYXQgbV9nYXA7Ci0gICAgQm9yZGVyVmFsdWUgbV9ydWxlOwotICAgIENvbG9yIG1fdmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3I7CisgICAgZmxvYXQgd2lkdGggeyAwIH07CisgICAgdW5zaWdu
ZWQgc2hvcnQgY291bnQ7CisgICAgZmxvYXQgZ2FwIHsgMCB9OworICAgIEJvcmRlclZhbHVlIHJ1
bGU7CisgICAgQ29sb3IgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CiAKLSAgICBib29sIG1f
YXV0b1dpZHRoIDogMTsKLSAgICBib29sIG1fYXV0b0NvdW50IDogMTsKLSAgICBib29sIG1fbm9y
bWFsR2FwIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZpbGwgOiAxOyAvLyBDb2x1bW5GaWxsCi0gICAg
dW5zaWduZWQgbV9jb2x1bW5TcGFuIDogMTsKLSAgICB1bnNpZ25lZCBtX2F4aXMgOiAyOyAvLyBD
b2x1bW5BeGlzCi0gICAgdW5zaWduZWQgbV9wcm9ncmVzc2lvbiA6IDI7IC8vIENvbHVtblByb2dy
ZXNzaW9uCisgICAgYm9vbCBhdXRvV2lkdGggOiAxOworICAgIGJvb2wgYXV0b0NvdW50IDogMTsK
KyAgICBib29sIG5vcm1hbEdhcCA6IDE7CisgICAgdW5zaWduZWQgZmlsbCA6IDE7IC8vIENvbHVt
bkZpbGwKKyAgICB1bnNpZ25lZCBjb2x1bW5TcGFuIDogMTsKKyAgICB1bnNpZ25lZCBheGlzIDog
MjsgLy8gQ29sdW1uQXhpcworICAgIHVuc2lnbmVkIHByb2dyZXNzaW9uIDogMjsgLy8gQ29sdW1u
UHJvZ3Jlc3Npb24KIAogcHJpdmF0ZToKICAgICBTdHlsZU11bHRpQ29sRGF0YSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwCmluZGV4IGZhMjlhZjBkY2U3MTYwYjk1OGEzNTdjZGQyODg3NzgxYWI5N2ZkZjcu
LmZjNjA1ZDQ4ZmNjODU5MDU4MzkwZGYzOTgyYjViZGIwNTk4OGI1ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICAgICB2b2lk
KiByZWZQdHJzWzJdOwogICAgIExlbmd0aCBsZW5ndGhzWzJdOwogICAgIGZsb2F0IHNlY29uZEZs
b2F0OwotICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzRdOworICAgIHVuc2lnbmVkIGJpdGZpZWxk
c1s0XTsKICAgICBzaG9ydCBwYWdlZE1lZGlhU2hvcnRzWzJdOwogICAgIHVuc2lnbmVkIHVuc2ln
bmVkc1sxXTsKICAgICBzaG9ydCBoeXBoZW5hdGlvblNob3J0c1szXTsKQEAgLTczLDEyICs3Mywx
MiBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAg
ICA6IGxpc3RTdHlsZUltYWdlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSkK
ICAgICAsIHRleHRTdHJva2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0
aCgpKQogICAgICwgaW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQotICAg
ICwgbV9lZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQotICAgICwgbV9j
dXN0b21Qcm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKKyAgICAs
IGVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBjdXN0b21Q
cm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKICAgICAsIHdpZG93
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKQogICAgICwgb3JwaGFucyhSZW5kZXJTdHls
ZTo6aW5pdGlhbE9ycGhhbnMoKSkKLSAgICAsIG1faGFzQXV0b1dpZG93cyh0cnVlKQotICAgICwg
bV9oYXNBdXRvT3JwaGFucyh0cnVlKQorICAgICwgaGFzQXV0b1dpZG93cyh0cnVlKQorICAgICwg
aGFzQXV0b09ycGhhbnModHJ1ZSkKICAgICAsIHRleHRTZWN1cml0eShSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRTZWN1cml0eSgpKQogICAgICwgdXNlck1vZGlmeShSRUFEX09OTFkpCiAgICAgLCB3
b3JkQnJlYWsoUmVuZGVyU3R5bGU6OmluaXRpYWxXb3JkQnJlYWsoKSkKQEAgLTkxLDUwICs5MSw1
MCBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAg
ICAsIHRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCkKICAgICAsIHRleHRF
bXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya05vbmUpCiAgICAgLCB0ZXh0RW1waGFzaXNQb3Np
dGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0
KQotICAgICwgbV90ZXh0T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmll
bnRhdGlvbjo6TWl4ZWQpKQorICAgICwgdGV4dE9yaWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihUZXh0T3JpZW50YXRpb246Ok1peGVkKSkKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAg
ICwgbV90ZXh0SW5kZW50TGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkp
Ci0gICAgLCBtX3RleHRJbmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5
cGUoKSkKKyAgICAsIHRleHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVu
dExpbmUoKSkKKyAgICAsIHRleHRJbmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dElu
ZGVudFR5cGUoKSkKICNlbmRpZgotICAgICwgbV9saW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6
aW5pdGlhbExpbmVCb3hDb250YWluKCkpCisgICAgLCBsaW5lQm94Q29udGFpbihSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVCb3hDb250YWluKCkpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKLSAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdl
T3JpZW50YXRpb24oKSkKKyAgICAsIGltYWdlT3JpZW50YXRpb24oUmVuZGVyU3R5bGU6OmluaXRp
YWxJbWFnZU9yaWVudGF0aW9uKCkpCiAjZW5kaWYKLSAgICAsIG1faW1hZ2VSZW5kZXJpbmcoUmVu
ZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKQotICAgICwgbV9saW5lU25hcChSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCi0gICAgLCBtX2xpbmVBbGlnbihSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVBbGlnbigpKQorICAgICwgaW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6
OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKQorICAgICwgbGluZVNuYXAoUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaW5lU25hcCgpKQorICAgICwgbGluZUFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsTGlu
ZUFsaWduKCkpCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAg
ICAsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VUb3Vj
aE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09M
VVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5pdGlh
bEltYWdlUmVzb2x1dGlvblNvdXJjZSgpKQotICAgICwgbV9pbWFnZVJlc29sdXRpb25TbmFwKFJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQorICAgICwgaW1hZ2VSZXNv
bHV0aW9uU291cmNlKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkp
CisgICAgLCBpbWFnZVJlc29sdXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNv
bHV0aW9uU25hcCgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4
dEFsaWduTGFzdChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QoKSkKLSAgICAsIG1f
dGV4dEp1c3RpZnkoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQotI2VuZGlmIC8v
IENTUzNfVEVYVAotICAgICwgbV90ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0RGVjb3JhdGlvblNraXAoKSkKLSAgICAsIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkpCi0gICAgLCBtX3J1YnlQ
b3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQotICAgICwgbV90ZXh0
Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCisgICAgLCB0ZXh0QWxpZ25MYXN0
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduTGFzdCgpKQorICAgICwgdGV4dEp1c3RpZnko
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQorI2VuZGlmCisgICAgLCB0ZXh0RGVj
b3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSkKKyAg
ICAsIHRleHRVbmRlcmxpbmVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRVbmRlcmxp
bmVQb3NpdGlvbigpKQorICAgICwgcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVi
eVBvc2l0aW9uKCkpCisgICAgLCB0ZXh0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29t
KCkpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxlZChSZW5kZXJT
dHlsZTo6aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSkKICNlbmRpZgogI2lmIEVOQUJMRShD
U1NfVFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5nV29yZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFpbGluZ1dvcmQoKSkpCiAjZW5kaWYKLSAgICAsIG1f
aGFuZ2luZ1B1bmN0dWF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9u
KCkpCisgICAgLCBoYW5naW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5n
UHVuY3R1YXRpb24oKSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEpCiAgICAgLCBo
eXBoZW5hdGlvbkxpbWl0QWZ0ZXIoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoLTEp
Ci0gICAgLCBtX2xpbmVHcmlkKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkKLSAgICAs
IG1fdGFiU2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYlNpemUoKSkKKyAgICAsIGxpbmVHcmlk
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkKKyAgICAsIHRhYlNpemUoUmVuZGVyU3R5
bGU6OmluaXRpYWxUYWJTaXplKCkpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAs
IHRleHRTaXplQWRqdXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNpemVBZGp1c3QoKSkKICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNv
bHV0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uKCkpCisgICAgLCBpbWFn
ZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24oKSkKICNlbmRp
ZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCkBAIC0xNTUsMTIgKzE1NSwxMiBA
QCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShj
b25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cg
PyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikK
ICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQot
ICAgICwgbV9lZmZlY3RpdmVab29tKG8ubV9lZmZlY3RpdmVab29tKQotICAgICwgbV9jdXN0b21Q
cm9wZXJ0aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQorICAgICwgZWZmZWN0aXZlWm9vbShvLmVm
ZmVjdGl2ZVpvb20pCisgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykK
ICAgICAsIHdpZG93cyhvLndpZG93cykKICAgICAsIG9ycGhhbnMoby5vcnBoYW5zKQotICAgICwg
bV9oYXNBdXRvV2lkb3dzKG8ubV9oYXNBdXRvV2lkb3dzKQotICAgICwgbV9oYXNBdXRvT3JwaGFu
cyhvLm1faGFzQXV0b09ycGhhbnMpCisgICAgLCBoYXNBdXRvV2lkb3dzKG8uaGFzQXV0b1dpZG93
cykKKyAgICAsIGhhc0F1dG9PcnBoYW5zKG8uaGFzQXV0b09ycGhhbnMpCiAgICAgLCB0ZXh0U2Vj
dXJpdHkoby50ZXh0U2VjdXJpdHkpCiAgICAgLCB1c2VyTW9kaWZ5KG8udXNlck1vZGlmeSkKICAg
ICAsIHdvcmRCcmVhayhvLndvcmRCcmVhaykKQEAgLTE3Myw1MiArMTczLDUyIEBAIGlubGluZSBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
UmFyZUluaGVyaXRlZERhCiAgICAgLCB0ZXh0RW1waGFzaXNGaWxsKG8udGV4dEVtcGhhc2lzRmls
bCkKICAgICAsIHRleHRFbXBoYXNpc01hcmsoby50ZXh0RW1waGFzaXNNYXJrKQogICAgICwgdGV4
dEVtcGhhc2lzUG9zaXRpb24oby50ZXh0RW1waGFzaXNQb3NpdGlvbikKLSAgICAsIG1fdGV4dE9y
aWVudGF0aW9uKG8ubV90ZXh0T3JpZW50YXRpb24pCisgICAgLCB0ZXh0T3JpZW50YXRpb24oby50
ZXh0T3JpZW50YXRpb24pCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEluZGVu
dExpbmUoby5tX3RleHRJbmRlbnRMaW5lKQotICAgICwgbV90ZXh0SW5kZW50VHlwZShvLm1fdGV4
dEluZGVudFR5cGUpCisgICAgLCB0ZXh0SW5kZW50TGluZShvLnRleHRJbmRlbnRMaW5lKQorICAg
ICwgdGV4dEluZGVudFR5cGUoby50ZXh0SW5kZW50VHlwZSkKICNlbmRpZgotICAgICwgbV9saW5l
Qm94Q29udGFpbihvLm1fbGluZUJveENvbnRhaW4pCisgICAgLCBsaW5lQm94Q29udGFpbihvLmxp
bmVCb3hDb250YWluKQogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgLCBt
X2ltYWdlT3JpZW50YXRpb24oby5tX2ltYWdlT3JpZW50YXRpb24pCisgICAgLCBpbWFnZU9yaWVu
dGF0aW9uKG8uaW1hZ2VPcmllbnRhdGlvbikKICNlbmRpZgotICAgICwgbV9pbWFnZVJlbmRlcmlu
ZyhvLm1faW1hZ2VSZW5kZXJpbmcpCi0gICAgLCBtX2xpbmVTbmFwKG8ubV9saW5lU25hcCkKLSAg
ICAsIG1fbGluZUFsaWduKG8ubV9saW5lQWxpZ24pCisgICAgLCBpbWFnZVJlbmRlcmluZyhvLmlt
YWdlUmVuZGVyaW5nKQorICAgICwgbGluZVNuYXAoby5saW5lU25hcCkKKyAgICAsIGxpbmVBbGln
bihvLmxpbmVBbGlnbikKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KQogICAgICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhvLnVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmcpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBt
X2ltYWdlUmVzb2x1dGlvblNvdXJjZShvLm1faW1hZ2VSZXNvbHV0aW9uU291cmNlKQotICAgICwg
bV9pbWFnZVJlc29sdXRpb25TbmFwKG8ubV9pbWFnZVJlc29sdXRpb25TbmFwKQorICAgICwgaW1h
Z2VSZXNvbHV0aW9uU291cmNlKG8uaW1hZ2VSZXNvbHV0aW9uU291cmNlKQorICAgICwgaW1hZ2VS
ZXNvbHV0aW9uU25hcChvLmltYWdlUmVzb2x1dGlvblNuYXApCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgICwgbV90ZXh0QWxpZ25MYXN0KG8ubV90ZXh0QWxpZ25MYXN0KQotICAg
ICwgbV90ZXh0SnVzdGlmeShvLm1fdGV4dEp1c3RpZnkpCi0jZW5kaWYgLy8gQ1NTM19URVhUCi0g
ICAgLCBtX3RleHREZWNvcmF0aW9uU2tpcChvLm1fdGV4dERlY29yYXRpb25Ta2lwKQotICAgICwg
bV90ZXh0VW5kZXJsaW5lUG9zaXRpb24oby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbikKLSAgICAs
IG1fcnVieVBvc2l0aW9uKG8ubV9ydWJ5UG9zaXRpb24pCi0gICAgLCBtX3RleHRab29tKG8ubV90
ZXh0Wm9vbSkKKyAgICAsIHRleHRBbGlnbkxhc3Qoby50ZXh0QWxpZ25MYXN0KQorICAgICwgdGV4
dEp1c3RpZnkoby50ZXh0SnVzdGlmeSkKKyNlbmRpZgorICAgICwgdGV4dERlY29yYXRpb25Ta2lw
KG8udGV4dERlY29yYXRpb25Ta2lwKQorICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKG8udGV4
dFVuZGVybGluZVBvc2l0aW9uKQorICAgICwgcnVieVBvc2l0aW9uKG8ucnVieVBvc2l0aW9uKQor
ICAgICwgdGV4dFpvb20oby50ZXh0Wm9vbSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCB0b3Vj
aENhbGxvdXRFbmFibGVkKG8udG91Y2hDYWxsb3V0RW5hYmxlZCkKICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5nV29yZChvLnRyYWlsaW5nV29yZCkK
ICNlbmRpZgotICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oby5tX2hhbmdpbmdQdW5jdHVhdGlv
bikKKyAgICAsIGhhbmdpbmdQdW5jdHVhdGlvbihvLmhhbmdpbmdQdW5jdHVhdGlvbikKICAgICAs
IGh5cGhlbmF0aW9uU3RyaW5nKG8uaHlwaGVuYXRpb25TdHJpbmcpCiAgICAgLCBoeXBoZW5hdGlv
bkxpbWl0QmVmb3JlKG8uaHlwaGVuYXRpb25MaW1pdEJlZm9yZSkKICAgICAsIGh5cGhlbmF0aW9u
TGltaXRBZnRlcihvLmh5cGhlbmF0aW9uTGltaXRBZnRlcikKICAgICAsIGh5cGhlbmF0aW9uTGlt
aXRMaW5lcyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykKICAgICAsIHRleHRFbXBoYXNpc0N1c3Rv
bU1hcmsoby50ZXh0RW1waGFzaXNDdXN0b21NYXJrKQotICAgICwgbV9saW5lR3JpZChvLm1fbGlu
ZUdyaWQpCi0gICAgLCBtX3RhYlNpemUoby5tX3RhYlNpemUpCisgICAgLCBsaW5lR3JpZChvLmxp
bmVHcmlkKQorICAgICwgdGFiU2l6ZShvLnRhYlNpemUpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKICAgICAsIHRleHRTaXplQWRqdXN0KG8udGV4dFNpemVBZGp1c3QpCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvbihv
Lm1faW1hZ2VSZXNvbHV0aW9uKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uKG8uaW1hZ2VSZXNvbHV0
aW9uKQogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdo
dENvbG9yKG8udGFwSGlnaGxpZ2h0Q29sb3IpCkBAIC0yNTAsMTEgKzI1MCwxMSBAQCBib29sIFN0
eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSh0ZXh0U2hh
ZG93LCBvLnRleHRTaGFkb3cpCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vy
c29yRGF0YSwgby5jdXJzb3JEYXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKLSAg
ICAgICAgJiYgbV9lZmZlY3RpdmVab29tID09IG8ubV9lZmZlY3RpdmVab29tCisgICAgICAgICYm
IGVmZmVjdGl2ZVpvb20gPT0gby5lZmZlY3RpdmVab29tCiAgICAgICAgICYmIHdpZG93cyA9PSBv
LndpZG93cwogICAgICAgICAmJiBvcnBoYW5zID09IG8ub3JwaGFucwotICAgICAgICAmJiBtX2hh
c0F1dG9XaWRvd3MgPT0gby5tX2hhc0F1dG9XaWRvd3MKLSAgICAgICAgJiYgbV9oYXNBdXRvT3Jw
aGFucyA9PSBvLm1faGFzQXV0b09ycGhhbnMKKyAgICAgICAgJiYgaGFzQXV0b1dpZG93cyA9PSBv
Lmhhc0F1dG9XaWRvd3MKKyAgICAgICAgJiYgaGFzQXV0b09ycGhhbnMgPT0gby5oYXNBdXRvT3Jw
aGFucwogICAgICAgICAmJiB0ZXh0U2VjdXJpdHkgPT0gby50ZXh0U2VjdXJpdHkKICAgICAgICAg
JiYgdXNlck1vZGlmeSA9PSBvLnVzZXJNb2RpZnkKICAgICAgICAgJiYgd29yZEJyZWFrID09IG8u
d29yZEJyZWFrCkBAIC0yNzYsNDQgKzI3Niw0NCBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAg
ICAgICAgJiYgdGV4dEVtcGhhc2lzRmlsbCA9PSBvLnRleHRFbXBoYXNpc0ZpbGwKICAgICAgICAg
JiYgdGV4dEVtcGhhc2lzTWFyayA9PSBvLnRleHRFbXBoYXNpc01hcmsKICAgICAgICAgJiYgdGV4
dEVtcGhhc2lzUG9zaXRpb24gPT0gby50ZXh0RW1waGFzaXNQb3NpdGlvbgotICAgICAgICAmJiBt
X3RleHRPcmllbnRhdGlvbiA9PSBvLm1fdGV4dE9yaWVudGF0aW9uCisgICAgICAgICYmIHRleHRP
cmllbnRhdGlvbiA9PSBvLnRleHRPcmllbnRhdGlvbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0g
ICAgICAgICYmIG1fdGV4dEluZGVudExpbmUgPT0gby5tX3RleHRJbmRlbnRMaW5lCi0gICAgICAg
ICYmIG1fdGV4dEluZGVudFR5cGUgPT0gby5tX3RleHRJbmRlbnRUeXBlCisgICAgICAgICYmIHRl
eHRJbmRlbnRMaW5lID09IG8udGV4dEluZGVudExpbmUKKyAgICAgICAgJiYgdGV4dEluZGVudFR5
cGUgPT0gby50ZXh0SW5kZW50VHlwZQogI2VuZGlmCi0gICAgICAgICYmIG1fbGluZUJveENvbnRh
aW4gPT0gby5tX2xpbmVCb3hDb250YWluCisgICAgICAgICYmIGxpbmVCb3hDb250YWluID09IG8u
bGluZUJveENvbnRhaW4KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICYmIHRvdWNoQ2FsbG91
dEVuYWJsZWQgPT0gby50b3VjaENhbGxvdXRFbmFibGVkCiAjZW5kaWYKICAgICAgICAgJiYgaHlw
aGVuYXRpb25TdHJpbmcgPT0gby5oeXBoZW5hdGlvblN0cmluZwogICAgICAgICAmJiB0ZXh0RW1w
aGFzaXNDdXN0b21NYXJrID09IG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFyawogICAgICAgICAmJiBh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKHF1b3Rlcywgby5xdW90ZXMpCi0gICAgICAgICYmIG1fdGFi
U2l6ZSA9PSBvLm1fdGFiU2l6ZQotICAgICAgICAmJiBtX2xpbmVHcmlkID09IG8ubV9saW5lR3Jp
ZAorICAgICAgICAmJiB0YWJTaXplID09IG8udGFiU2l6ZQorICAgICAgICAmJiBsaW5lR3JpZCA9
PSBvLmxpbmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAg
JiYgbV9pbWFnZU9yaWVudGF0aW9uID09IG8ubV9pbWFnZU9yaWVudGF0aW9uCisgICAgICAgICYm
IGltYWdlT3JpZW50YXRpb24gPT0gby5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKLSAgICAgICAg
JiYgbV9pbWFnZVJlbmRlcmluZyA9PSBvLm1faW1hZ2VSZW5kZXJpbmcKKyAgICAgICAgJiYgaW1h
Z2VSZW5kZXJpbmcgPT0gby5pbWFnZVJlbmRlcmluZwogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVT
T0xVVElPTikKLSAgICAgICAgJiYgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5tX2ltYWdl
UmVzb2x1dGlvblNvdXJjZQotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1dGlvblNuYXAgPT0gby5t
X2ltYWdlUmVzb2x1dGlvblNuYXAKLSAgICAgICAgJiYgbV9pbWFnZVJlc29sdXRpb24gPT0gby5t
X2ltYWdlUmVzb2x1dGlvbgorICAgICAgICAmJiBpbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5p
bWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uU25hcCA9PSBv
LmltYWdlUmVzb2x1dGlvblNuYXAKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uID09IG8uaW1h
Z2VSZXNvbHV0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAmJiBt
X3RleHRBbGlnbkxhc3QgPT0gby5tX3RleHRBbGlnbkxhc3QKLSAgICAgICAgJiYgbV90ZXh0SnVz
dGlmeSA9PSBvLm1fdGV4dEp1c3RpZnkKKyAgICAgICAgJiYgdGV4dEFsaWduTGFzdCA9PSBvLnRl
eHRBbGlnbkxhc3QKKyAgICAgICAgJiYgdGV4dEp1c3RpZnkgPT0gby50ZXh0SnVzdGlmeQogI2Vu
ZGlmIC8vIENTUzNfVEVYVAotICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU2tpcCA9PSBvLm1f
dGV4dERlY29yYXRpb25Ta2lwCi0gICAgICAgICYmIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uID09
IG8ubV90ZXh0VW5kZXJsaW5lUG9zaXRpb24KLSAgICAgICAgJiYgbV9ydWJ5UG9zaXRpb24gPT0g
by5tX3J1YnlQb3NpdGlvbgotICAgICAgICAmJiBtX3RleHRab29tID09IG8ubV90ZXh0Wm9vbQot
ICAgICAgICAmJiBtX2xpbmVTbmFwID09IG8ubV9saW5lU25hcAotICAgICAgICAmJiBtX2xpbmVB
bGlnbiA9PSBvLm1fbGluZUFsaWduCisgICAgICAgICYmIHRleHREZWNvcmF0aW9uU2tpcCA9PSBv
LnRleHREZWNvcmF0aW9uU2tpcAorICAgICAgICAmJiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24gPT0g
by50ZXh0VW5kZXJsaW5lUG9zaXRpb24KKyAgICAgICAgJiYgcnVieVBvc2l0aW9uID09IG8ucnVi
eVBvc2l0aW9uCisgICAgICAgICYmIHRleHRab29tID09IG8udGV4dFpvb20KKyAgICAgICAgJiYg
bGluZVNuYXAgPT0gby5saW5lU25hcAorICAgICAgICAmJiBsaW5lQWxpZ24gPT0gby5saW5lQWxp
Z24KICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgICYmIHRyYWlsaW5nV29y
ZCA9PSBvLnRyYWlsaW5nV29yZAogI2VuZGlmCi0gICAgICAgICYmIG1faGFuZ2luZ1B1bmN0dWF0
aW9uID09IG8ubV9oYW5naW5nUHVuY3R1YXRpb24KLSAgICAgICAgJiYgbV9jdXN0b21Qcm9wZXJ0
aWVzID09IG8ubV9jdXN0b21Qcm9wZXJ0aWVzCisgICAgICAgICYmIGhhbmdpbmdQdW5jdHVhdGlv
biA9PSBvLmhhbmdpbmdQdW5jdHVhdGlvbgorICAgICAgICAmJiBjdXN0b21Qcm9wZXJ0aWVzID09
IG8uY3VzdG9tUHJvcGVydGllcwogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGxp
c3RTdHlsZUltYWdlLCBvLmxpc3RTdHlsZUltYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXgg
MTJiN2UzOWEzYWE5YzRlYjdmODgyYmZhYzYwOWM3ZjI5MjA5ODdkNy4uMmZmMjdjOTg1MGYzYTA2
MDgwM2M0YTA0NTRiNjg3YTc1ODUzY2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC03MiwxNyArNzIs
MTcgQEAgcHVibGljOgogICAgIAogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwog
ICAgIExlbmd0aCBpbmRlbnQ7Ci0gICAgZmxvYXQgbV9lZmZlY3RpdmVab29tOworICAgIGZsb2F0
IGVmZmVjdGl2ZVpvb207CiAgICAgCiAgICAgTGVuZ3RoIHdvcmRTcGFjaW5nOwogCi0gICAgRGF0
YVJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworICAgIERh
dGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGN1c3RvbVByb3BlcnRpZXM7CiAKICAgICAv
LyBQYWdlZCBtZWRpYSBwcm9wZXJ0aWVzLgogICAgIHNob3J0IHdpZG93czsKICAgICBzaG9ydCBv
cnBoYW5zOwotICAgIHVuc2lnbmVkIG1faGFzQXV0b1dpZG93cyA6IDE7Ci0gICAgdW5zaWduZWQg
bV9oYXNBdXRvT3JwaGFucyA6IDE7CisgICAgdW5zaWduZWQgaGFzQXV0b1dpZG93cyA6IDE7Cisg
ICAgdW5zaWduZWQgaGFzQXV0b09ycGhhbnMgOiAxOwogICAgIAogICAgIHVuc2lnbmVkIHRleHRT
ZWN1cml0eSA6IDI7IC8vIEVUZXh0U2VjdXJpdHkKICAgICB1bnNpZ25lZCB1c2VyTW9kaWZ5IDog
MjsgLy8gRVVzZXJNb2RpZnkgKGVkaXRpbmcpCkBAIC05NywzNCArOTcsMzQgQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc0ZpbGwgOiAxOyAvLyBUZXh0RW1waGFzaXNGaWxsCiAg
ICAgdW5zaWduZWQgdGV4dEVtcGhhc2lzTWFyayA6IDM7IC8vIFRleHRFbXBoYXNpc01hcmsKICAg
ICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNQb3NpdGlvbiA6IDQ7IC8vIFRleHRFbXBoYXNpc1Bvc2l0
aW9uCi0gICAgdW5zaWduZWQgbV90ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRp
b24KKyAgICB1bnNpZ25lZCB0ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24K
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudExpbmUgOiAx
OyAvLyBUZXh0SW5kZW50TGluZQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudFR5cGUgOiAxOyAv
LyBUZXh0SW5kZW50VHlwZQorICAgIHVuc2lnbmVkIHRleHRJbmRlbnRMaW5lIDogMTsgLy8gVGV4
dEluZGVudExpbmUKKyAgICB1bnNpZ25lZCB0ZXh0SW5kZW50VHlwZSA6IDE7IC8vIFRleHRJbmRl
bnRUeXBlCiAjZW5kaWYKLSAgICB1bnNpZ25lZCBtX2xpbmVCb3hDb250YWluOiA3OyAvLyBMaW5l
Qm94Q29udGFpbgorICAgIHVuc2lnbmVkIGxpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29u
dGFpbgogICAgIC8vIENTUyBJbWFnZSBWYWx1ZXMgTGV2ZWwgMwogI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgdW5zaWduZWQgbV9pbWFnZU9yaWVudGF0aW9uIDogNDsgLy8g
SW1hZ2VPcmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9uIDogNDsg
Ly8gSW1hZ2VPcmllbnRhdGlvbkVudW0KICNlbmRpZgotICAgIHVuc2lnbmVkIG1faW1hZ2VSZW5k
ZXJpbmcgOiAzOyAvLyBFSW1hZ2VSZW5kZXJpbmcKLSAgICB1bnNpZ25lZCBtX2xpbmVTbmFwIDog
MjsgLy8gTGluZVNuYXAKLSAgICB1bnNpZ25lZCBtX2xpbmVBbGlnbiA6IDE7IC8vIExpbmVBbGln
bgorICAgIHVuc2lnbmVkIGltYWdlUmVuZGVyaW5nIDogMzsgLy8gRUltYWdlUmVuZGVyaW5nCisg
ICAgdW5zaWduZWQgbGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAorICAgIHVuc2lnbmVkIGxpbmVB
bGlnbiA6IDE7IC8vIExpbmVBbGlnbgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpCiAgICAgdW5zaWduZWQgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzogMTsKICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICB1bnNpZ25lZCBtX2lt
YWdlUmVzb2x1dGlvblNvdXJjZSA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgIHVu
c2lnbmVkIG1faW1hZ2VSZXNvbHV0aW9uU25hcCA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNuYXAK
KyAgICB1bnNpZ25lZCBpbWFnZVJlc29sdXRpb25Tb3VyY2UgOiAxOyAvLyBJbWFnZVJlc29sdXRp
b25Tb3VyY2UKKyAgICB1bnNpZ25lZCBpbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VS
ZXNvbHV0aW9uU25hcAogI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICB1bnNpZ25l
ZCBtX3RleHRBbGlnbkxhc3QgOiAzOyAvLyBUZXh0QWxpZ25MYXN0Ci0gICAgdW5zaWduZWQgbV90
ZXh0SnVzdGlmeSA6IDI7IC8vIFRleHRKdXN0aWZ5Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAg
dW5zaWduZWQgbV90ZXh0RGVjb3JhdGlvblNraXAgOiA1OyAvLyBUZXh0RGVjb3JhdGlvblNraXAK
LSAgICB1bnNpZ25lZCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRlcmxp
bmVQb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0
aW9uCi0gICAgdW5zaWduZWQgbV90ZXh0Wm9vbTogMTsgLy8gVGV4dFpvb20KKyAgICB1bnNpZ25l
ZCB0ZXh0QWxpZ25MYXN0IDogMzsgLy8gVGV4dEFsaWduTGFzdAorICAgIHVuc2lnbmVkIHRleHRK
dXN0aWZ5IDogMjsgLy8gVGV4dEp1c3RpZnkKKyNlbmRpZgorICAgIHVuc2lnbmVkIHRleHREZWNv
cmF0aW9uU2tpcCA6IDU7IC8vIFRleHREZWNvcmF0aW9uU2tpcAorICAgIHVuc2lnbmVkIHRleHRV
bmRlcmxpbmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3NpdGlvbgorICAgIHVuc2ln
bmVkIHJ1YnlQb3NpdGlvbiA6IDI7IC8vIFJ1YnlQb3NpdGlvbgorICAgIHVuc2lnbmVkIHRleHRa
b29tOiAxOyAvLyBUZXh0Wm9vbQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVuc2lnbmVkIHRv
dWNoQ2FsbG91dEVuYWJsZWQgOiAxOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCB0cmFpbGluZ1dvcmQgOiAxOwogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX2hhbmdp
bmdQdW5jdHVhdGlvbiA6IDQ7CisgICAgdW5zaWduZWQgaGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsK
IAogICAgIEF0b21pY1N0cmluZyBoeXBoZW5hdGlvblN0cmluZzsKICAgICBzaG9ydCBoeXBoZW5h
dGlvbkxpbWl0QmVmb3JlOwpAQCAtMTQ0LDE1ICsxNDQsMTUgQEAgcHVibGljOgogICAgIEF0b21p
Y1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBx
dW90ZXM7CiAKLSAgICBBdG9taWNTdHJpbmcgbV9saW5lR3JpZDsKLSAgICB1bnNpZ25lZCBtX3Rh
YlNpemU7CisgICAgQXRvbWljU3RyaW5nIGxpbmVHcmlkOworICAgIHVuc2lnbmVkIHRhYlNpemU7
CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0
ZXh0U2l6ZUFkanVzdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9O
KQotICAgIGZsb2F0IG1faW1hZ2VSZXNvbHV0aW9uOworICAgIGZsb2F0IGltYWdlUmVzb2x1dGlv
bjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAppbmRleCA0YTdmN2U2ODcwMTk4Y2MwOWYyNDZiMDZkNzRjMTk5YmM4MTUyNzg3Li42NTE0
MjAwOTlmOTc4MDA1MmFiZTBlNDI2MTRiZDBkNDM3YTRmZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM3LDE3NCArMzcsMTc0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEo
KQotICAgIDogbV9vcGFjaXR5KFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpKQotICAgICwg
bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9E
ZW5vbWluYXRvcigpKQotICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZlKFJlbmRl
clN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmUoKSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5Y
KFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkpCi0gICAgLCBtX3BlcnNw
ZWN0aXZlT3JpZ2luWShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQor
ICAgIDogb3BhY2l0eShSZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHkoKSkKKyAgICAsIGFzcGVj
dFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKCkpCisgICAgLCBhc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFz
cGVjdFJhdGlvTnVtZXJhdG9yKCkpCisgICAgLCBwZXJzcGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5p
dGlhbFBlcnNwZWN0aXZlKCkpCisgICAgLCBwZXJzcGVjdGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6
OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSkKKyAgICAsIHBlcnNwZWN0aXZlT3JpZ2luWShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQogICAgICwgbGluZUNsYW1w
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUNsYW1wKCkpCi0gICAgLCBtX2luaXRpYWxMZXR0ZXIo
UmVuZGVyU3R5bGU6OmluaXRpYWxJbml0aWFsTGV0dGVyKCkpCi0gICAgLCBtX2RlcHJlY2F0ZWRG
bGV4aWJsZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQotICAg
ICwgbV9mbGV4aWJsZUJveChTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBt
X21hcnF1ZWUoU3R5bGVNYXJxdWVlRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX211bHRpQ29sKFN0
eWxlTXVsdGlDb2xEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fdHJhbnNmb3JtKFN0eWxlVHJhbnNm
b3JtRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2ZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0
ZSgpKQorICAgICwgaW5pdGlhbExldHRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0
ZXIoKSkKKyAgICAsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGE6OmNyZWF0ZSgpKQorICAgICwgZmxleGlibGVCb3goU3R5bGVGbGV4aWJsZUJveERh
dGE6OmNyZWF0ZSgpKQorICAgICwgbWFycXVlZShTdHlsZU1hcnF1ZWVEYXRhOjpjcmVhdGUoKSkK
KyAgICAsIG11bHRpQ29sKFN0eWxlTXVsdGlDb2xEYXRhOjpjcmVhdGUoKSkKKyAgICAsIHRyYW5z
Zm9ybShTdHlsZVRyYW5zZm9ybURhdGE6OmNyZWF0ZSgpKQorICAgICwgZmlsdGVyKFN0eWxlRmls
dGVyRGF0YTo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAsIG1f
YmFja2Ryb3BGaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGJhY2tkcm9w
RmlsdGVyKFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRlKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQotICAgICwgbV9ncmlkKFN0eWxlR3JpZERhdGE6OmNyZWF0ZSgpKQotICAg
ICwgbV9ncmlkSXRlbShTdHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBncmlkKFN0
eWxlR3JpZERhdGE6OmNyZWF0ZSgpKQorICAgICwgZ3JpZEl0ZW0oU3R5bGVHcmlkSXRlbURhdGE6
OmNyZWF0ZSgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1f
c2Nyb2xsU25hcFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCi0gICAgLCBtX3Nj
cm9sbFNuYXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQorICAgICwgc2Nyb2xs
U25hcFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCisgICAgLCBzY3JvbGxTbmFw
QXJlYShTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUoKSkKICNlbmRpZgotICAgICwgbV93aWxs
Q2hhbmdlKFJlbmRlclN0eWxlOjppbml0aWFsV2lsbENoYW5nZSgpKQotICAgICwgbV9tYXNrKEZp
bGxMYXllcihNYXNrRmlsbExheWVyKSkKLSAgICAsIG1fb2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5
bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpKQotICAgICwgbV9zaGFwZU91dHNpZGUoUmVuZGVy
U3R5bGU6OmluaXRpYWxTaGFwZU91dHNpZGUoKSkKLSAgICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVy
U3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQotICAgICwgbV9zaGFwZUltYWdlVGhyZXNob2xk
KFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZCgpKQotICAgICwgbV9jbGlw
UGF0aChSZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCi0g
ICAgLCBtX29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKLSAgICAsIG1fZmxvd1Ro
cmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKLSAgICAsIG1fcmVnaW9uVGhy
ZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCi0gICAgLCBtX2FsaWduQ29u
dGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxp
Z25JdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbERlZmF1bHRBbGlnbm1lbnQoKSkKLSAgICAsIG1f
YWxpZ25TZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwgbV9q
dXN0aWZ5Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAg
ICAsIG1fanVzdGlmeUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQot
ICAgICwgbV9qdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkK
KyAgICAsIHdpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCisgICAg
LCBtYXNrKEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkKKyAgICAsIG9iamVjdFBvc2l0aW9uKFJl
bmRlclN0eWxlOjppbml0aWFsT2JqZWN0UG9zaXRpb24oKSkKKyAgICAsIHNoYXBlT3V0c2lkZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQorICAgICwgc2hhcGVNYXJnaW4oUmVu
ZGVyU3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQorICAgICwgc2hhcGVJbWFnZVRocmVzaG9s
ZChSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSkKKyAgICAsIGNsaXBQ
YXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkKKyAgICAsIHZpc2l0ZWRMaW5rQmFj
a2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCisgICAg
LCBvcmRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyKCkpCisgICAgLCBmbG93VGhyZWFkKFJl
bmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVhZCgpKQorICAgICwgcmVnaW9uVGhyZWFkKFJlbmRl
clN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCisgICAgLCBhbGlnbkNvbnRlbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCisgICAgLCBhbGlnbkl0ZW1zKFJlbmRl
clN0eWxlOjppbml0aWFsRGVmYXVsdEFsaWdubWVudCgpKQorICAgICwgYWxpZ25TZWxmKFJlbmRl
clN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQorICAgICwganVzdGlmeUNvbnRlbnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5SXRlbXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5U2VsZihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgICwgbV90b3VjaEFjdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5
bGU6OmluaXRpYWxUb3VjaEFjdGlvbigpKSkKKyAgICAsIHRvdWNoQWN0aW9uKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQogI2VuZGlmCi0g
ICAgLCBtX3JlZ2lvbkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQo
KSkKLSAgICAsIG1fcGFnZVNpemVUeXBlKFBBR0VfU0laRV9BVVRPKQotICAgICwgbV90cmFuc2Zv
cm1TdHlsZTNEKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpKQotICAgICwg
bV9iYWNrZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxp
dHkoKSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJh
Z21lbnQoKSkKKyAgICAsIHBhZ2VTaXplVHlwZShQQUdFX1NJWkVfQVVUTykKKyAgICAsIHRyYW5z
Zm9ybVN0eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkpCisgICAg
LCBiYWNrZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxp
dHkoKSkKICAgICAsIHVzZXJEcmFnKFJlbmRlclN0eWxlOjppbml0aWFsVXNlckRyYWcoKSkKICAg
ICAsIHRleHRPdmVyZmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRPdmVyZmxvdygpKQogICAg
ICwgbWFyZ2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNFKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xs
YXBzZShNQ09MTEFQU0UpCi0gICAgLCBtX2FwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxB
cHBlYXJhbmNlKCkpCi0gICAgLCBtX2JvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRl
ckZpdCgpKQotICAgICwgbV90ZXh0Q29tYmluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRDb21i
aW5lKCkpCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0RGVjb3JhdGlvblN0eWxlKCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKQorICAgICwgYXBwZWFyYW5jZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkKKyAgICAsIGJvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5p
dGlhbEJvcmRlckZpdCgpKQorICAgICwgdGV4dENvbWJpbmUoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0Q29tYmluZSgpKQorICAgICwgdGV4dERlY29yYXRpb25TdHlsZShSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkKKyAgICAsIGFzcGVjdFJhdGlvVHlwZShSZW5kZXJT
dHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJ
TkcpCi0gICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5k
TW9kZSgpKQotICAgICwgbV9pc29sYXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJc29sYXRpb24o
KSkKKyAgICAsIGVmZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9k
ZSgpKQorICAgICwgaXNvbGF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSXNvbGF0aW9uKCkpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9hcHBsZVBheUJ1dHRvblN0eWxl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9u
U3R5bGUoKSkpCi0gICAgLCBtX2FwcGxlUGF5QnV0dG9uVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1dHRvblR5cGUoKSkpCisgICAgLCBhcHBs
ZVBheUJ1dHRvblN0eWxlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlh
bEFwcGxlUGF5QnV0dG9uU3R5bGUoKSkpCisgICAgLCBhcHBsZVBheUJ1dHRvblR5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBwbGVQYXlCdXR0b25UeXBlKCkp
KQogI2VuZGlmCi0gICAgLCBtX29iamVjdEZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdEZp
dCgpKQotICAgICwgbV9icmVha0JlZm9yZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFrQmV0d2Vl
bigpKQotICAgICwgbV9icmVha0FmdGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVu
KCkpCi0gICAgLCBtX2JyZWFrSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtJbnNpZGUo
KSkKLSAgICAsIG1fcmVzaXplKFJlbmRlclN0eWxlOjppbml0aWFsUmVzaXplKCkpCi0gICAgLCBt
X2hhc0F0dHJDb250ZW50KGZhbHNlKQotICAgICwgbV9pc1BsYWNlaG9sZGVyU3R5bGUoZmFsc2Up
CisgICAgLCBvYmplY3RGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RGaXQoKSkKKyAgICAs
IGJyZWFrQmVmb3JlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBi
cmVha0FmdGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVh
a0luc2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFrSW5zaWRlKCkpCisgICAgLCByZXNpemUo
UmVuZGVyU3R5bGU6OmluaXRpYWxSZXNpemUoKSkKKyAgICAsIGhhc0F0dHJDb250ZW50KGZhbHNl
KQorICAgICwgaXNQbGFjZWhvbGRlclN0eWxlKGZhbHNlKQogewotICAgIG1fbWFza0JveEltYWdl
LnNldE1hc2tEZWZhdWx0cygpOworICAgIG1hc2tCb3hJbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsK
IH0KIAogaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNv
dW50ZWQ8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4oKQotICAgICwgbV9vcGFjaXR5KG8ubV9v
cGFjaXR5KQotICAgICwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8ubV9hc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKQotICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihvLm1fYXNwZWN0UmF0aW9O
dW1lcmF0b3IpCi0gICAgLCBtX3BlcnNwZWN0aXZlKG8ubV9wZXJzcGVjdGl2ZSkKLSAgICAsIG1f
cGVyc3BlY3RpdmVPcmlnaW5YKG8ubV9wZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgLCBtX3BlcnNw
ZWN0aXZlT3JpZ2luWShvLm1fcGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICwgb3BhY2l0eShvLm9w
YWNpdHkpCisgICAgLCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8uYXNwZWN0UmF0aW9EZW5vbWlu
YXRvcikKKyAgICAsIGFzcGVjdFJhdGlvTnVtZXJhdG9yKG8uYXNwZWN0UmF0aW9OdW1lcmF0b3Ip
CisgICAgLCBwZXJzcGVjdGl2ZShvLnBlcnNwZWN0aXZlKQorICAgICwgcGVyc3BlY3RpdmVPcmln
aW5YKG8ucGVyc3BlY3RpdmVPcmlnaW5YKQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5ZKG8ucGVy
c3BlY3RpdmVPcmlnaW5ZKQogICAgICwgbGluZUNsYW1wKG8ubGluZUNsYW1wKQotICAgICwgbV9p
bml0aWFsTGV0dGVyKG8ubV9pbml0aWFsTGV0dGVyKQotICAgICwgbV9kZXByZWNhdGVkRmxleGli
bGVCb3goby5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkKLSAgICAsIG1fZmxleGlibGVCb3goby5t
X2ZsZXhpYmxlQm94KQotICAgICwgbV9tYXJxdWVlKG8ubV9tYXJxdWVlKQotICAgICwgbV9tdWx0
aUNvbChvLm1fbXVsdGlDb2wpCi0gICAgLCBtX3RyYW5zZm9ybShvLm1fdHJhbnNmb3JtKQotICAg
ICwgbV9maWx0ZXIoby5tX2ZpbHRlcikKKyAgICAsIGluaXRpYWxMZXR0ZXIoby5pbml0aWFsTGV0
dGVyKQorICAgICwgZGVwcmVjYXRlZEZsZXhpYmxlQm94KG8uZGVwcmVjYXRlZEZsZXhpYmxlQm94
KQorICAgICwgZmxleGlibGVCb3goby5mbGV4aWJsZUJveCkKKyAgICAsIG1hcnF1ZWUoby5tYXJx
dWVlKQorICAgICwgbXVsdGlDb2woby5tdWx0aUNvbCkKKyAgICAsIHRyYW5zZm9ybShvLnRyYW5z
Zm9ybSkKKyAgICAsIGZpbHRlcihvLmZpbHRlcikKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8y
KQotICAgICwgbV9iYWNrZHJvcEZpbHRlcihvLm1fYmFja2Ryb3BGaWx0ZXIpCisgICAgLCBiYWNr
ZHJvcEZpbHRlcihvLmJhY2tkcm9wRmlsdGVyKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkKLSAgICAsIG1fZ3JpZChvLm1fZ3JpZCkKLSAgICAsIG1fZ3JpZEl0ZW0oby5tX2dy
aWRJdGVtKQorICAgICwgZ3JpZChvLmdyaWQpCisgICAgLCBncmlkSXRlbShvLmdyaWRJdGVtKQog
I2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xsU25hcFBv
cnQoby5tX3Njcm9sbFNuYXBQb3J0KQotICAgICwgbV9zY3JvbGxTbmFwQXJlYShvLm1fc2Nyb2xs
U25hcEFyZWEpCisgICAgLCBzY3JvbGxTbmFwUG9ydChvLnNjcm9sbFNuYXBQb3J0KQorICAgICwg
c2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgotICAgICwgbV9jb250ZW50
KG8ubV9jb250ZW50ID8gby5tX2NvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgbV9j
b3VudGVyRGlyZWN0aXZlcyhvLm1fY291bnRlckRpcmVjdGl2ZXMgPyBjbG9uZSgqby5tX2NvdW50
ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCi0gICAgLCBtX2FsdFRleHQoby5tX2FsdFRleHQpCi0g
ICAgLCBtX2JveFNoYWRvdyhvLm1fYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqby5tX2JveFNoYWRvdykgOiBudWxscHRyKQotICAgICwgbV93aWxsQ2hhbmdlKG8ubV93
aWxsQ2hhbmdlKQotICAgICwgbV9ib3hSZWZsZWN0KG8ubV9ib3hSZWZsZWN0KQotICAgICwgbV9h
bmltYXRpb25zKG8ubV9hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
Pigqby5tX2FuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIG1fdHJhbnNpdGlvbnMoby5tX3Ry
YW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5tX3RyYW5zaXRp
b25zKSA6IG51bGxwdHIpCi0gICAgLCBtX21hc2soby5tX21hc2spCi0gICAgLCBtX21hc2tCb3hJ
bWFnZShvLm1fbWFza0JveEltYWdlKQotICAgICwgbV9wYWdlU2l6ZShvLm1fcGFnZVNpemUpCi0g
ICAgLCBtX29iamVjdFBvc2l0aW9uKG8ubV9vYmplY3RQb3NpdGlvbikKLSAgICAsIG1fc2hhcGVP
dXRzaWRlKG8ubV9zaGFwZU91dHNpZGUpCi0gICAgLCBtX3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1h
cmdpbikKLSAgICAsIG1fc2hhcGVJbWFnZVRocmVzaG9sZChvLm1fc2hhcGVJbWFnZVRocmVzaG9s
ZCkKLSAgICAsIG1fY2xpcFBhdGgoby5tX2NsaXBQYXRoKQotICAgICwgbV90ZXh0RGVjb3JhdGlv
bkNvbG9yKG8ubV90ZXh0RGVjb3JhdGlvbkNvbG9yKQotICAgICwgbV92aXNpdGVkTGlua1RleHRE
ZWNvcmF0aW9uQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcikKLSAgICAs
IG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yKQotICAgICwgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1fdmlzaXRlZExpbmtPdXRs
aW5lQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV92aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
KG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9y
ZGVyVG9wQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCi0gICAgLCBtX3Zpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ip
Ci0gICAgLCBtX29yZGVyKG8ubV9vcmRlcikKLSAgICAsIG1fZmxvd1RocmVhZChvLm1fZmxvd1Ro
cmVhZCkKLSAgICAsIG1fcmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCi0gICAgLCBtX2Fs
aWduQ29udGVudChvLm1fYWxpZ25Db250ZW50KQotICAgICwgbV9hbGlnbkl0ZW1zKG8ubV9hbGln
bkl0ZW1zKQotICAgICwgbV9hbGlnblNlbGYoby5tX2FsaWduU2VsZikKLSAgICAsIG1fanVzdGlm
eUNvbnRlbnQoby5tX2p1c3RpZnlDb250ZW50KQotICAgICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1
c3RpZnlJdGVtcykKLSAgICAsIG1fanVzdGlmeVNlbGYoby5tX2p1c3RpZnlTZWxmKQorICAgICwg
Y29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQorICAgICwg
Y291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IGNsb25lKCpvLmNvdW50ZXJE
aXJlY3RpdmVzKSA6IG51bGxwdHIpCisgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKKyAgICAsIGJv
eFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94
U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKKyAgICAs
IGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMg
PyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0
cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBtYXNrKG8ubWFz
aykKKyAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKKyAgICAsIHBhZ2VTaXplKG8u
cGFnZVNpemUpCisgICAgLCBvYmplY3RQb3NpdGlvbihvLm9iamVjdFBvc2l0aW9uKQorICAgICwg
c2hhcGVPdXRzaWRlKG8uc2hhcGVPdXRzaWRlKQorICAgICwgc2hhcGVNYXJnaW4oby5zaGFwZU1h
cmdpbikKKyAgICAsIHNoYXBlSW1hZ2VUaHJlc2hvbGQoby5zaGFwZUltYWdlVGhyZXNob2xkKQor
ICAgICwgY2xpcFBhdGgoby5jbGlwUGF0aCkKKyAgICAsIHRleHREZWNvcmF0aW9uQ29sb3Ioby50
ZXh0RGVjb3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9y
KG8udmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3Ioby52aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKKyAgICAsIHZpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yKG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCisgICAgLCB2aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQorICAgICwg
dmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
KQorICAgICwgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8udmlzaXRlZExpbmtC
b3JkZXJCb3R0b21Db2xvcikKKyAgICAsIG9yZGVyKG8ub3JkZXIpCisgICAgLCBmbG93VGhyZWFk
KG8uZmxvd1RocmVhZCkKKyAgICAsIHJlZ2lvblRocmVhZChvLnJlZ2lvblRocmVhZCkKKyAgICAs
IGFsaWduQ29udGVudChvLmFsaWduQ29udGVudCkKKyAgICAsIGFsaWduSXRlbXMoby5hbGlnbkl0
ZW1zKQorICAgICwgYWxpZ25TZWxmKG8uYWxpZ25TZWxmKQorICAgICwganVzdGlmeUNvbnRlbnQo
by5qdXN0aWZ5Q29udGVudCkKKyAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKKyAg
ICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LSAgICAsIG1fdG91Y2hBY3Rpb24oby5tX3RvdWNoQWN0aW9uKQorICAgICwgdG91Y2hBY3Rpb24o
by50b3VjaEFjdGlvbikKICNlbmRpZgotICAgICwgbV9yZWdpb25GcmFnbWVudChvLm1fcmVnaW9u
RnJhZ21lbnQpCi0gICAgLCBtX3BhZ2VTaXplVHlwZShvLm1fcGFnZVNpemVUeXBlKQotICAgICwg
bV90cmFuc2Zvcm1TdHlsZTNEKG8ubV90cmFuc2Zvcm1TdHlsZTNEKQotICAgICwgbV9iYWNrZmFj
ZVZpc2liaWxpdHkoby5tX2JhY2tmYWNlVmlzaWJpbGl0eSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50
KG8ucmVnaW9uRnJhZ21lbnQpCisgICAgLCBwYWdlU2l6ZVR5cGUoby5wYWdlU2l6ZVR5cGUpCisg
ICAgLCB0cmFuc2Zvcm1TdHlsZTNEKG8udHJhbnNmb3JtU3R5bGUzRCkKKyAgICAsIGJhY2tmYWNl
VmlzaWJpbGl0eShvLmJhY2tmYWNlVmlzaWJpbGl0eSkKICAgICAsIHVzZXJEcmFnKG8udXNlckRy
YWcpCiAgICAgLCB0ZXh0T3ZlcmZsb3coby50ZXh0T3ZlcmZsb3cpCiAgICAgLCBtYXJnaW5CZWZv
cmVDb2xsYXBzZShvLm1hcmdpbkJlZm9yZUNvbGxhcHNlKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xs
YXBzZShvLm1hcmdpbkFmdGVyQ29sbGFwc2UpCi0gICAgLCBtX2FwcGVhcmFuY2Uoby5tX2FwcGVh
cmFuY2UpCi0gICAgLCBtX2JvcmRlckZpdChvLm1fYm9yZGVyRml0KQotICAgICwgbV90ZXh0Q29t
YmluZShvLm1fdGV4dENvbWJpbmUpCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5bGUoby5tX3Rl
eHREZWNvcmF0aW9uU3R5bGUpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShvLm1fYXNwZWN0UmF0
aW9UeXBlKQorICAgICwgYXBwZWFyYW5jZShvLmFwcGVhcmFuY2UpCisgICAgLCBib3JkZXJGaXQo
by5ib3JkZXJGaXQpCisgICAgLCB0ZXh0Q29tYmluZShvLnRleHRDb21iaW5lKQorICAgICwgdGV4
dERlY29yYXRpb25TdHlsZShvLnRleHREZWNvcmF0aW9uU3R5bGUpCisgICAgLCBhc3BlY3RSYXRp
b1R5cGUoby5hc3BlY3RSYXRpb1R5cGUpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAg
ICAsIG1fZWZmZWN0aXZlQmxlbmRNb2RlKG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUpCi0gICAgLCBt
X2lzb2xhdGlvbihvLm1faXNvbGF0aW9uKQorICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKG8uZWZm
ZWN0aXZlQmxlbmRNb2RlKQorICAgICwgaXNvbGF0aW9uKG8uaXNvbGF0aW9uKQogI2VuZGlmCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShvLm1fYXBw
bGVQYXlCdXR0b25TdHlsZSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25UeXBlKG8ubV9hcHBsZVBh
eUJ1dHRvblR5cGUpCisgICAgLCBhcHBsZVBheUJ1dHRvblN0eWxlKG8uYXBwbGVQYXlCdXR0b25T
dHlsZSkKKyAgICAsIGFwcGxlUGF5QnV0dG9uVHlwZShvLmFwcGxlUGF5QnV0dG9uVHlwZSkKICNl
bmRpZgotICAgICwgbV9vYmplY3RGaXQoby5tX29iamVjdEZpdCkKLSAgICAsIG1fYnJlYWtCZWZv
cmUoby5tX2JyZWFrQmVmb3JlKQotICAgICwgbV9icmVha0FmdGVyKG8ubV9icmVha0FmdGVyKQot
ICAgICwgbV9icmVha0luc2lkZShvLm1fYnJlYWtJbnNpZGUpCi0gICAgLCBtX3Jlc2l6ZShvLm1f
cmVzaXplKQotICAgICwgbV9oYXNBdHRyQ29udGVudChvLm1faGFzQXR0ckNvbnRlbnQpCi0gICAg
LCBtX2lzUGxhY2Vob2xkZXJTdHlsZShvLm1faXNQbGFjZWhvbGRlclN0eWxlKQorICAgICwgb2Jq
ZWN0Rml0KG8ub2JqZWN0Rml0KQorICAgICwgYnJlYWtCZWZvcmUoby5icmVha0JlZm9yZSkKKyAg
ICAsIGJyZWFrQWZ0ZXIoby5icmVha0FmdGVyKQorICAgICwgYnJlYWtJbnNpZGUoby5icmVha0lu
c2lkZSkKKyAgICAsIHJlc2l6ZShvLnJlc2l6ZSkKKyAgICAsIGhhc0F0dHJDb250ZW50KG8uaGFz
QXR0ckNvbnRlbnQpCisgICAgLCBpc1BsYWNlaG9sZGVyU3R5bGUoby5pc1BsYWNlaG9sZGVyU3R5
bGUpCiB7CiB9CiAKQEAgLTIxOSwxMjMgKzIxOSwxMjMgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6flN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogCiBib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYg
bykgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcGFjaXR5ID09IG8ubV9vcGFjaXR5Ci0gICAgICAg
ICYmIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBvLm1fYXNwZWN0UmF0aW9EZW5vbWluYXRv
cgotICAgICAgICAmJiBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yID09IG8ubV9hc3BlY3RSYXRpb051
bWVyYXRvcgotICAgICAgICAmJiBtX3BlcnNwZWN0aXZlID09IG8ubV9wZXJzcGVjdGl2ZQotICAg
ICAgICAmJiBtX3BlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0g
ICAgICAgICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5ZID09IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkK
KyAgICByZXR1cm4gb3BhY2l0eSA9PSBvLm9wYWNpdHkKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9E
ZW5vbWluYXRvciA9PSBvLmFzcGVjdFJhdGlvRGVub21pbmF0b3IKKyAgICAgICAgJiYgYXNwZWN0
UmF0aW9OdW1lcmF0b3IgPT0gby5hc3BlY3RSYXRpb051bWVyYXRvcgorICAgICAgICAmJiBwZXJz
cGVjdGl2ZSA9PSBvLnBlcnNwZWN0aXZlCisgICAgICAgICYmIHBlcnNwZWN0aXZlT3JpZ2luWCA9
PSBvLnBlcnNwZWN0aXZlT3JpZ2luWAorICAgICAgICAmJiBwZXJzcGVjdGl2ZU9yaWdpblkgPT0g
by5wZXJzcGVjdGl2ZU9yaWdpblkKICAgICAgICAgJiYgbGluZUNsYW1wID09IG8ubGluZUNsYW1w
Ci0gICAgICAgICYmIG1faW5pdGlhbExldHRlciA9PSBvLm1faW5pdGlhbExldHRlcgorICAgICAg
ICAmJiBpbml0aWFsTGV0dGVyID09IG8uaW5pdGlhbExldHRlcgogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKLSAgICAgICAgJiYgbV9kYXNoYm9hcmRSZWdpb25zID09IG8ubV9kYXNoYm9h
cmRSZWdpb25zCisgICAgICAgICYmIGRhc2hib2FyZFJlZ2lvbnMgPT0gby5kYXNoYm9hcmRSZWdp
b25zCiAjZW5kaWYKLSAgICAgICAgJiYgbV9kZXByZWNhdGVkRmxleGlibGVCb3ggPT0gby5tX2Rl
cHJlY2F0ZWRGbGV4aWJsZUJveAotICAgICAgICAmJiBtX2ZsZXhpYmxlQm94ID09IG8ubV9mbGV4
aWJsZUJveAotICAgICAgICAmJiBtX21hcnF1ZWUgPT0gby5tX21hcnF1ZWUKLSAgICAgICAgJiYg
bV9tdWx0aUNvbCA9PSBvLm1fbXVsdGlDb2wKLSAgICAgICAgJiYgbV90cmFuc2Zvcm0gPT0gby5t
X3RyYW5zZm9ybQotICAgICAgICAmJiBtX2ZpbHRlciA9PSBvLm1fZmlsdGVyCisgICAgICAgICYm
IGRlcHJlY2F0ZWRGbGV4aWJsZUJveCA9PSBvLmRlcHJlY2F0ZWRGbGV4aWJsZUJveAorICAgICAg
ICAmJiBmbGV4aWJsZUJveCA9PSBvLmZsZXhpYmxlQm94CisgICAgICAgICYmIG1hcnF1ZWUgPT0g
by5tYXJxdWVlCisgICAgICAgICYmIG11bHRpQ29sID09IG8ubXVsdGlDb2wKKyAgICAgICAgJiYg
dHJhbnNmb3JtID09IG8udHJhbnNmb3JtCisgICAgICAgICYmIGZpbHRlciA9PSBvLmZpbHRlcgog
I2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgICAgICYmIG1fYmFja2Ryb3BGaWx0ZXIg
PT0gby5tX2JhY2tkcm9wRmlsdGVyCisgICAgICAgICYmIGJhY2tkcm9wRmlsdGVyID09IG8uYmFj
a2Ryb3BGaWx0ZXIKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAg
ICYmIG1fZ3JpZCA9PSBvLm1fZ3JpZAotICAgICAgICAmJiBtX2dyaWRJdGVtID09IG8ubV9ncmlk
SXRlbQorICAgICAgICAmJiBncmlkID09IG8uZ3JpZAorICAgICAgICAmJiBncmlkSXRlbSA9PSBv
LmdyaWRJdGVtCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICAm
JiBtX3Njcm9sbFNuYXBQb3J0ID09IG8ubV9zY3JvbGxTbmFwUG9ydAotICAgICAgICAmJiBtX3Nj
cm9sbFNuYXBBcmVhID09IG8ubV9zY3JvbGxTbmFwQXJlYQorICAgICAgICAmJiBzY3JvbGxTbmFw
UG9ydCA9PSBvLnNjcm9sbFNuYXBQb3J0CisgICAgICAgICYmIHNjcm9sbFNuYXBBcmVhID09IG8u
c2Nyb2xsU25hcEFyZWEKICNlbmRpZgogICAgICAgICAmJiBjb250ZW50RGF0YUVxdWl2YWxlbnQo
bykKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2NvdW50ZXJEaXJlY3RpdmVz
LCBvLm1fY291bnRlckRpcmVjdGl2ZXMpCi0gICAgICAgICYmIG1fYWx0VGV4dCA9PSBvLm1fYWx0
VGV4dAotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fYm94U2hhZG93LCBvLm1f
Ym94U2hhZG93KQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fd2lsbENoYW5n
ZSwgby5tX3dpbGxDaGFuZ2UpCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9i
b3hSZWZsZWN0LCBvLm1fYm94UmVmbGVjdCkKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX2FuaW1hdGlvbnMsIG8ubV9hbmltYXRpb25zKQotICAgICAgICAmJiBhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG1fdHJhbnNpdGlvbnMsIG8ubV90cmFuc2l0aW9ucykKLSAgICAgICAgJiYg
bV9tYXNrID09IG8ubV9tYXNrCi0gICAgICAgICYmIG1fbWFza0JveEltYWdlID09IG8ubV9tYXNr
Qm94SW1hZ2UKLSAgICAgICAgJiYgbV9wYWdlU2l6ZSA9PSBvLm1fcGFnZVNpemUKLSAgICAgICAg
JiYgbV9vYmplY3RQb3NpdGlvbiA9PSBvLm1fb2JqZWN0UG9zaXRpb24KLSAgICAgICAgJiYgYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShtX3NoYXBlT3V0c2lkZSwgby5tX3NoYXBlT3V0c2lkZSkKLSAg
ICAgICAgJiYgbV9zaGFwZU1hcmdpbiA9PSBvLm1fc2hhcGVNYXJnaW4KLSAgICAgICAgJiYgbV9z
aGFwZUltYWdlVGhyZXNob2xkID09IG8ubV9zaGFwZUltYWdlVGhyZXNob2xkCi0gICAgICAgICYm
IGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9jbGlwUGF0aCwgby5tX2NsaXBQYXRoKQotICAgICAg
ICAmJiBtX3RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5tX3RleHREZWNvcmF0aW9uQ29sb3IKLSAg
ICAgICAgJiYgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5tX3Zpc2l0ZWRM
aW5rVGV4dERlY29yYXRpb25Db2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yID09IG8ubV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcgotICAgICAgICAmJiBtX3Zp
c2l0ZWRMaW5rT3V0bGluZUNvbG9yID09IG8ubV92aXNpdGVkTGlua091dGxpbmVDb2xvcgotICAg
ICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID09IG8ubV92aXNpdGVkTGlua0Jv
cmRlckxlZnRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA9
PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExp
bmtCb3JkZXJUb3BDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcgotICAgICAg
ICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9y
ZGVyQm90dG9tQ29sb3IKLSAgICAgICAgJiYgbV9vcmRlciA9PSBvLm1fb3JkZXIKLSAgICAgICAg
JiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFkCi0gICAgICAgICYmIG1fYWxpZ25Db250
ZW50ID09IG8ubV9hbGlnbkNvbnRlbnQKLSAgICAgICAgJiYgbV9hbGlnbkl0ZW1zID09IG8ubV9h
bGlnbkl0ZW1zCi0gICAgICAgICYmIG1fYWxpZ25TZWxmID09IG8ubV9hbGlnblNlbGYKLSAgICAg
ICAgJiYgbV9qdXN0aWZ5Q29udGVudCA9PSBvLm1fanVzdGlmeUNvbnRlbnQKLSAgICAgICAgJiYg
bV9qdXN0aWZ5SXRlbXMgPT0gby5tX2p1c3RpZnlJdGVtcwotICAgICAgICAmJiBtX2p1c3RpZnlT
ZWxmID09IG8ubV9qdXN0aWZ5U2VsZgotICAgICAgICAmJiBtX3JlZ2lvblRocmVhZCA9PSBvLm1f
cmVnaW9uVGhyZWFkCi0gICAgICAgICYmIG1fcmVnaW9uRnJhZ21lbnQgPT0gby5tX3JlZ2lvbkZy
YWdtZW50Ci0gICAgICAgICYmIG1fcGFnZVNpemVUeXBlID09IG8ubV9wYWdlU2l6ZVR5cGUKLSAg
ICAgICAgJiYgbV90cmFuc2Zvcm1TdHlsZTNEID09IG8ubV90cmFuc2Zvcm1TdHlsZTNECi0gICAg
ICAgICYmIG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IG8ubV9iYWNrZmFjZVZpc2liaWxpdHkKKyAg
ICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShjb3VudGVyRGlyZWN0aXZlcywgby5jb3Vu
dGVyRGlyZWN0aXZlcykKKyAgICAgICAgJiYgYWx0VGV4dCA9PSBvLmFsdFRleHQKKyAgICAgICAg
JiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShib3hTaGFkb3csIG8uYm94U2hhZG93KQorICAgICAg
ICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHdpbGxDaGFuZ2UsIG8ud2lsbENoYW5nZSkKKyAg
ICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShib3hSZWZsZWN0LCBvLmJveFJlZmxlY3Qp
CisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoYW5pbWF0aW9ucywgby5hbmltYXRp
b25zKQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHRyYW5zaXRpb25zLCBvLnRy
YW5zaXRpb25zKQorICAgICAgICAmJiBtYXNrID09IG8ubWFzaworICAgICAgICAmJiBtYXNrQm94
SW1hZ2UgPT0gby5tYXNrQm94SW1hZ2UKKyAgICAgICAgJiYgcGFnZVNpemUgPT0gby5wYWdlU2l6
ZQorICAgICAgICAmJiBvYmplY3RQb3NpdGlvbiA9PSBvLm9iamVjdFBvc2l0aW9uCisgICAgICAg
ICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoc2hhcGVPdXRzaWRlLCBvLnNoYXBlT3V0c2lkZSkK
KyAgICAgICAgJiYgc2hhcGVNYXJnaW4gPT0gby5zaGFwZU1hcmdpbgorICAgICAgICAmJiBzaGFw
ZUltYWdlVGhyZXNob2xkID09IG8uc2hhcGVJbWFnZVRocmVzaG9sZAorICAgICAgICAmJiBhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKGNsaXBQYXRoLCBvLmNsaXBQYXRoKQorICAgICAgICAmJiB0ZXh0
RGVjb3JhdGlvbkNvbG9yID09IG8udGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICAmJiB2aXNp
dGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby52aXNpdGVkTGlua1RleHREZWNvcmF0aW9u
Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPT0gby52aXNpdGVk
TGlua0JhY2tncm91bmRDb2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua091dGxpbmVDb2xvciA9
PSBvLnZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVy
TGVmdENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IKKyAgICAgICAgJiYgdmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
CisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby52aXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0g
by52aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yCisgICAgICAgICYmIG9yZGVyID09IG8ub3Jk
ZXIKKyAgICAgICAgJiYgZmxvd1RocmVhZCA9PSBvLmZsb3dUaHJlYWQKKyAgICAgICAgJiYgYWxp
Z25Db250ZW50ID09IG8uYWxpZ25Db250ZW50CisgICAgICAgICYmIGFsaWduSXRlbXMgPT0gby5h
bGlnbkl0ZW1zCisgICAgICAgICYmIGFsaWduU2VsZiA9PSBvLmFsaWduU2VsZgorICAgICAgICAm
JiBqdXN0aWZ5Q29udGVudCA9PSBvLmp1c3RpZnlDb250ZW50CisgICAgICAgICYmIGp1c3RpZnlJ
dGVtcyA9PSBvLmp1c3RpZnlJdGVtcworICAgICAgICAmJiBqdXN0aWZ5U2VsZiA9PSBvLmp1c3Rp
ZnlTZWxmCisgICAgICAgICYmIHJlZ2lvblRocmVhZCA9PSBvLnJlZ2lvblRocmVhZAorICAgICAg
ICAmJiByZWdpb25GcmFnbWVudCA9PSBvLnJlZ2lvbkZyYWdtZW50CisgICAgICAgICYmIHBhZ2VT
aXplVHlwZSA9PSBvLnBhZ2VTaXplVHlwZQorICAgICAgICAmJiB0cmFuc2Zvcm1TdHlsZTNEID09
IG8udHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAmJiBiYWNrZmFjZVZpc2liaWxpdHkgPT0gby5i
YWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgJiYgdXNlckRyYWcgPT0gby51c2VyRHJhZwogICAg
ICAgICAmJiB0ZXh0T3ZlcmZsb3cgPT0gby50ZXh0T3ZlcmZsb3cKICAgICAgICAgJiYgbWFyZ2lu
QmVmb3JlQ29sbGFwc2UgPT0gby5tYXJnaW5CZWZvcmVDb2xsYXBzZQogICAgICAgICAmJiBtYXJn
aW5BZnRlckNvbGxhcHNlID09IG8ubWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAmJiBtX2Fw
cGVhcmFuY2UgPT0gby5tX2FwcGVhcmFuY2UKLSAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5t
X2JvcmRlckZpdAotICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQot
ICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5
bGUKKyAgICAgICAgJiYgYXBwZWFyYW5jZSA9PSBvLmFwcGVhcmFuY2UKKyAgICAgICAgJiYgYm9y
ZGVyRml0ID09IG8uYm9yZGVyRml0CisgICAgICAgICYmIHRleHRDb21iaW5lID09IG8udGV4dENv
bWJpbmUKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25TdHlsZSA9PSBvLnRleHREZWNvcmF0aW9u
U3R5bGUKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICAmJiBtX3RvdWNoQWN0aW9u
ID09IG8ubV90b3VjaEFjdGlvbgorICAgICAgICAmJiB0b3VjaEFjdGlvbiA9PSBvLnRvdWNoQWN0
aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICAgICAmJiBtX2Vm
ZmVjdGl2ZUJsZW5kTW9kZSA9PSBvLm1fZWZmZWN0aXZlQmxlbmRNb2RlCi0gICAgICAgICYmIG1f
aXNvbGF0aW9uID09IG8ubV9pc29sYXRpb24KKyAgICAgICAgJiYgZWZmZWN0aXZlQmxlbmRNb2Rl
ID09IG8uZWZmZWN0aXZlQmxlbmRNb2RlCisgICAgICAgICYmIGlzb2xhdGlvbiA9PSBvLmlzb2xh
dGlvbgogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAgICAgJiYgbV9hcHBsZVBh
eUJ1dHRvblN0eWxlID09IG8ubV9hcHBsZVBheUJ1dHRvblN0eWxlCi0gICAgICAgICYmIG1fYXBw
bGVQYXlCdXR0b25UeXBlID09IG8ubV9hcHBsZVBheUJ1dHRvblR5cGUKKyAgICAgICAgJiYgYXBw
bGVQYXlCdXR0b25TdHlsZSA9PSBvLmFwcGxlUGF5QnV0dG9uU3R5bGUKKyAgICAgICAgJiYgYXBw
bGVQYXlCdXR0b25UeXBlID09IG8uYXBwbGVQYXlCdXR0b25UeXBlCiAjZW5kaWYKLSAgICAgICAg
JiYgbV9hc3BlY3RSYXRpb1R5cGUgPT0gby5tX2FzcGVjdFJhdGlvVHlwZQotICAgICAgICAmJiBt
X29iamVjdEZpdCA9PSBvLm1fb2JqZWN0Rml0Ci0gICAgICAgICYmIG1fYnJlYWtBZnRlciA9PSBv
Lm1fYnJlYWtBZnRlcgotICAgICAgICAmJiBtX2JyZWFrQmVmb3JlID09IG8ubV9icmVha0JlZm9y
ZQotICAgICAgICAmJiBtX2JyZWFrSW5zaWRlID09IG8ubV9icmVha0luc2lkZQotICAgICAgICAm
JiBtX3Jlc2l6ZSA9PSBvLm1fcmVzaXplCi0gICAgICAgICYmIG1faGFzQXR0ckNvbnRlbnQgPT0g
by5tX2hhc0F0dHJDb250ZW50Ci0gICAgICAgICYmIG1faXNQbGFjZWhvbGRlclN0eWxlID09IG8u
bV9pc1BsYWNlaG9sZGVyU3R5bGU7CisgICAgICAgICYmIGFzcGVjdFJhdGlvVHlwZSA9PSBvLmFz
cGVjdFJhdGlvVHlwZQorICAgICAgICAmJiBvYmplY3RGaXQgPT0gby5vYmplY3RGaXQKKyAgICAg
ICAgJiYgYnJlYWtBZnRlciA9PSBvLmJyZWFrQWZ0ZXIKKyAgICAgICAgJiYgYnJlYWtCZWZvcmUg
PT0gby5icmVha0JlZm9yZQorICAgICAgICAmJiBicmVha0luc2lkZSA9PSBvLmJyZWFrSW5zaWRl
CisgICAgICAgICYmIHJlc2l6ZSA9PSBvLnJlc2l6ZQorICAgICAgICAmJiBoYXNBdHRyQ29udGVu
dCA9PSBvLmhhc0F0dHJDb250ZW50CisgICAgICAgICYmIGlzUGxhY2Vob2xkZXJTdHlsZSA9PSBv
LmlzUGxhY2Vob2xkZXJTdHlsZTsKIH0KIAotYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
Ojpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYg
bykgY29uc3QKK2Jvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVp
dmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdAogewot
ICAgIENvbnRlbnREYXRhKiBhID0gbV9jb250ZW50LmdldCgpOwotICAgIENvbnRlbnREYXRhKiBi
ID0gby5tX2NvbnRlbnQuZ2V0KCk7Ci0KKyAgICBhdXRvKiBhID0gY29udGVudC5nZXQoKTsKKyAg
ICBhdXRvKiBiID0gb3RoZXIuY29udGVudC5nZXQoKTsKICAgICB3aGlsZSAoYSAmJiBiICYmICph
ID09ICpiKSB7CiAgICAgICAgIGEgPSBhLT5uZXh0KCk7CiAgICAgICAgIGIgPSBiLT5uZXh0KCk7
CiAgICAgfQotCiAgICAgcmV0dXJuICFhICYmICFiOwogfQogCiBib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6Omhhc0ZpbHRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpbHRlci5n
ZXQoKSAmJiAhbV9maWx0ZXItPm1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFm
aWx0ZXItPm9wZXJhdGlvbnMuaXNFbXB0eSgpOwogfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVW
RUxfMikKKwogYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpoYXNCYWNrZHJvcEZpbHRl
cnMoKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tkcm9wRmlsdGVyLmdldCgpICYmICFtX2Jh
Y2tkcm9wRmlsdGVyLT5tX29wZXJhdGlvbnMuaXNFbXB0eSgpOworICAgIHJldHVybiAhYmFja2Ry
b3BGaWx0ZXItPm9wZXJhdGlvbnMuaXNFbXB0eSgpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggMDRjMDliYWRmZmY4OTlmMzc0
YTM0ODY1ZWFlY2FmNTkzYWI1OWUwZS4uYmY5YmEyMDc0NTBjNWRhYmM0OTY3NzdlYjFkMzZmNTdi
OWI5ODZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNA
Z21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ0LDM0ICs0NCwyNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25MaXN0OworY2xhc3MgQ29udGVudERhdGE7CiBjbGFz
cyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOwogY2xh
c3MgU3R5bGVGaWx0ZXJEYXRhOwogY2xhc3MgU3R5bGVGbGV4aWJsZUJveERhdGE7Ci0jaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKIGNsYXNzIFN0eWxlR3JpZERhdGE7CiBjbGFzcyBTdHlsZUdy
aWRJdGVtRGF0YTsKLSNlbmRpZgogY2xhc3MgU3R5bGVNYXJxdWVlRGF0YTsKIGNsYXNzIFN0eWxl
TXVsdGlDb2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9uOwogY2xhc3MgU3R5bGVSZXNvbHZl
cjsKLWNsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7
Ci0jZW5kaWYKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7CitjbGFzcyBTdHlsZVRyYW5zZm9y
bURhdGE7CiAKLWNsYXNzIENvbnRlbnREYXRhOwogc3RydWN0IExlbmd0aFNpemU7Ci0KLSNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiBzdHJ1Y3QgU3R5bGVEYXNoYm9hcmRSZWdpb247Ci0j
ZW5kaWYKIAogLy8gUGFnZSBzaXplIHR5cGUuCi0vLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjptX3BhZ2VTaXplIGlzIG1lYW5pbmdmdWwgb25seSB3aGVuIAotLy8gU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6bV9wYWdlU2l6ZVR5cGUgaXMgUEFHRV9TSVpFX1JFU09MVkVELgorLy8gU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6cGFnZVNpemUgaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4K
Ky8vIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnBhZ2VTaXplVHlwZSBpcyBQQUdFX1NJWkVf
UkVTT0xWRUQuCiBlbnVtIFBhZ2VTaXplVHlwZSB7CiAgICAgUEFHRV9TSVpFX0FVVE8sIC8vIHNp
emU6IGF1dG8KICAgICBQQUdFX1NJWkVfQVVUT19MQU5EU0NBUEUsIC8vIHNpemU6IGxhbmRzY2Fw
ZQpAQCAtODksMTQ0ICs4MiwxNDcgQEAgcHVibGljOgogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKCk7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgY29udGVudERh
dGFFcXVpdmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzRmlsdGVycygpIGNvbnN0OworCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxf
MikKICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVycygpIGNvbnN0OwogI2VuZGlmCi0gICAgYm9v
bCBoYXNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5IDwgMTsgfQogCi0gICAgYm9v
bCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9u
cyB8fCBtX3RyYW5zaXRpb25zOyB9CisgICAgYm9vbCBoYXNPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gb3BhY2l0eSA8IDE7IH0KIAotICAgIGZsb2F0IG1fb3BhY2l0eTsKKyAgICBib29sIGhhc0Fu
aW1hdGlvbnNPclRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9ucyB8fCB0cmFu
c2l0aW9uczsgfQogCi0gICAgZmxvYXQgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOwotICAgIGZs
b2F0IG1fYXNwZWN0UmF0aW9OdW1lcmF0b3I7CisgICAgZmxvYXQgb3BhY2l0eTsKIAotICAgIGZs
b2F0IG1fcGVyc3BlY3RpdmU7Ci0gICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5YOwotICAg
IExlbmd0aCBtX3BlcnNwZWN0aXZlT3JpZ2luWTsKKyAgICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yOworICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yOworCisgICAgZmxvYXQgcGVy
c3BlY3RpdmU7CisgICAgTGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWDsKKyAgICBMZW5ndGggcGVy
c3BlY3RpdmVPcmlnaW5ZOwogCiAgICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wOyAvLyBBbiBB
cHBsZSBleHRlbnNpb24uCiAgICAgCi0gICAgSW50U2l6ZSBtX2luaXRpYWxMZXR0ZXI7CisgICAg
SW50U2l6ZSBpbml0aWFsTGV0dGVyOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQot
ICAgIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gbV9kYXNoYm9hcmRSZWdpb25zOworICAg
IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZGFzaGJvYXJkUmVnaW9uczsKICNlbmRpZgog
Ci0gICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IG1fZGVwcmVjYXRl
ZEZsZXhpYmxlQm94OyAvLyBGbGV4aWJsZSBib3ggcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5
bGVGbGV4aWJsZUJveERhdGE+IG1fZmxleGlibGVCb3g7Ci0gICAgRGF0YVJlZjxTdHlsZU1hcnF1
ZWVEYXRhPiBtX21hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5
bGVNdWx0aUNvbERhdGE+IG1fbXVsdGlDb2w7IC8vICBDU1MzIG11bHRpY29sIHByb3BlcnRpZXMK
LSAgICBEYXRhUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gbV90cmFuc2Zvcm07IC8vIFRyYW5zZm9y
bSBwcm9wZXJ0aWVzIChyb3RhdGUsIHNjYWxlLCBza2V3LCBldGMuKQotICAgIERhdGFSZWY8U3R5
bGVGaWx0ZXJEYXRhPiBtX2ZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEs
IGJsdXIsIGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+
IGRlcHJlY2F0ZWRGbGV4aWJsZUJveDsgLy8gRmxleGlibGUgYm94IHByb3BlcnRpZXMKKyAgICBE
YXRhUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBmbGV4aWJsZUJveDsKKyAgICBEYXRhUmVmPFN0
eWxlTWFycXVlZURhdGE+IG1hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcworICAgIERhdGFS
ZWY8U3R5bGVNdWx0aUNvbERhdGE+IG11bHRpQ29sOyAvLyAgQ1NTMyBtdWx0aWNvbCBwcm9wZXJ0
aWVzCisgICAgRGF0YVJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IHRyYW5zZm9ybTsgLy8gVHJhbnNm
b3JtIHByb3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNrZXcsIGV0Yy4pCisgICAgRGF0YVJlZjxT
dHlsZUZpbHRlckRhdGE+IGZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEs
IGJsdXIsIGV0Yy4pCisKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIERhdGFSZWY8
U3R5bGVGaWx0ZXJEYXRhPiBtX2JhY2tkcm9wRmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAo
dXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gYmFj
a2Ryb3BGaWx0ZXI7IC8vIEZpbHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMu
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIERhdGFSZWY8U3R5
bGVHcmlkRGF0YT4gbV9ncmlkOwotICAgIERhdGFSZWY8U3R5bGVHcmlkSXRlbURhdGE+IG1fZ3Jp
ZEl0ZW07CisgICAgRGF0YVJlZjxTdHlsZUdyaWREYXRhPiBncmlkOworICAgIERhdGFSZWY8U3R5
bGVHcmlkSXRlbURhdGE+IGdyaWRJdGVtOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwUG9ydD4gbV9zY3JvbGxTbmFwUG9y
dDsKLSAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IG1fc2Nyb2xsU25hcEFyZWE7Cisg
ICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBQb3J0PiBzY3JvbGxTbmFwUG9ydDsKKyAgICBEYXRh
UmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHNjcm9sbFNuYXBBcmVhOwogI2VuZGlmCiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IG1fY29udGVudDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKLSAgICBTdHJpbmcg
bV9hbHRUZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY291bnRlckRpcmVjdGl2ZXM7
CisgICAgU3RyaW5nIGFsdFRleHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4g
bV9ib3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTaGFkb3dEYXRhPiBib3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRp
b25zLgogCi0gICAgUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiBtX3dpbGxDaGFuZ2U7IC8vIE51bGwg
aW5kaWNhdGVzICdhdXRvJy4KKyAgICBSZWZQdHI8V2lsbENoYW5nZURhdGE+IHdpbGxDaGFuZ2U7
IC8vIE51bGwgaW5kaWNhdGVzICdhdXRvJy4KICAgICAKLSAgICBSZWZQdHI8U3R5bGVSZWZsZWN0
aW9uPiBtX2JveFJlZmxlY3Q7CisgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gYm94UmVmbGVj
dDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25MaXN0PiBtX2FuaW1hdGlvbnM7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlvbnM7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IGFuaW1hdGlvbnM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFuaW1hdGlvbkxpc3Q+IHRyYW5zaXRpb25zOwogCi0gICAgRmlsbExheWVyIG1fbWFzazsK
LSAgICBOaW5lUGllY2VJbWFnZSBtX21hc2tCb3hJbWFnZTsKKyAgICBGaWxsTGF5ZXIgbWFzazsK
KyAgICBOaW5lUGllY2VJbWFnZSBtYXNrQm94SW1hZ2U7CiAKLSAgICBMZW5ndGhTaXplIG1fcGFn
ZVNpemU7Ci0gICAgTGVuZ3RoUG9pbnQgbV9vYmplY3RQb3NpdGlvbjsKKyAgICBMZW5ndGhTaXpl
IHBhZ2VTaXplOworICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uOwogCi0gICAgUmVmUHRy
PFNoYXBlVmFsdWU+IG1fc2hhcGVPdXRzaWRlOwotICAgIExlbmd0aCBtX3NoYXBlTWFyZ2luOwot
ICAgIGZsb2F0IG1fc2hhcGVJbWFnZVRocmVzaG9sZDsKKyAgICBSZWZQdHI8U2hhcGVWYWx1ZT4g
c2hhcGVPdXRzaWRlOworICAgIExlbmd0aCBzaGFwZU1hcmdpbjsKKyAgICBmbG9hdCBzaGFwZUlt
YWdlVGhyZXNob2xkOwogCi0gICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRo
OworICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY2xpcFBhdGg7CiAKLSAgICBDb2xvciBt
X3RleHREZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua1RleHREZWNvcmF0
aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKLSAgICBD
b2xvciBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7
Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOwotICAgIENvbG9yIG1fdmlz
aXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBDb2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9y
OworICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsKKyAgICBDb2xvciB2
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua091dGxpbmVD
b2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKKyAgICBDb2xvciB2
aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJU
b3BDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOwogCi0gICAg
aW50IG1fb3JkZXI7CisgICAgaW50IG9yZGVyOwogCi0gICAgQXRvbWljU3RyaW5nIG1fZmxvd1Ro
cmVhZDsKLSAgICBBdG9taWNTdHJpbmcgbV9yZWdpb25UaHJlYWQ7CisgICAgQXRvbWljU3RyaW5n
IGZsb3dUaHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIHJlZ2lvblRocmVhZDsKIAotICAgIFN0eWxl
Q29udGVudEFsaWdubWVudERhdGEgbV9hbGlnbkNvbnRlbnQ7Ci0gICAgU3R5bGVTZWxmQWxpZ25t
ZW50RGF0YSBtX2FsaWduSXRlbXM7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWdu
U2VsZjsKLSAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIG1fanVzdGlmeUNvbnRlbnQ7Ci0g
ICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlJdGVtczsKLSAgICBTdHlsZVNlbGZB
bGlnbm1lbnREYXRhIG1fanVzdGlmeVNlbGY7CisgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0
YSBhbGlnbkNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnbkl0ZW1zOwor
ICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25TZWxmOworICAgIFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEganVzdGlmeUNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBq
dXN0aWZ5SXRlbXM7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5U2VsZjsKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdW5zaWduZWQgbV90b3VjaEFjdGlvbiA6IDE7
IC8vIFRvdWNoQWN0aW9uCisgICAgdW5zaWduZWQgdG91Y2hBY3Rpb24gOiAxOyAvLyBUb3VjaEFj
dGlvbgogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX3JlZ2lvbkZyYWdtZW50IDogMTsgLy8gUmVn
aW9uRnJhZ21lbnQKKyAgICB1bnNpZ25lZCByZWdpb25GcmFnbWVudCA6IDE7IC8vIFJlZ2lvbkZy
YWdtZW50CiAKLSAgICB1bnNpZ25lZCBtX3BhZ2VTaXplVHlwZSA6IDI7IC8vIFBhZ2VTaXplVHlw
ZQotICAgIHVuc2lnbmVkIG1fdHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHls
ZTNECi0gICAgdW5zaWduZWQgbV9iYWNrZmFjZVZpc2liaWxpdHkgOiAxOyAvLyBFQmFja2ZhY2VW
aXNpYmlsaXR5CisgICAgdW5zaWduZWQgcGFnZVNpemVUeXBlIDogMjsgLy8gUGFnZVNpemVUeXBl
CisgICAgdW5zaWduZWQgdHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNE
CisgICAgdW5zaWduZWQgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsgLy8gRUJhY2tmYWNlVmlzaWJp
bGl0eQogCiAKICAgICB1bnNpZ25lZCB1c2VyRHJhZyA6IDI7IC8vIEVVc2VyRHJhZwogICAgIHVu
c2lnbmVkIHRleHRPdmVyZmxvdyA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3Bp
bGwgb3V0IHNob3VsZCBiZSB0cnVuY2F0ZWQgd2l0aCAiLi4uIgogICAgIHVuc2lnbmVkIG1hcmdp
bkJlZm9yZUNvbGxhcHNlIDogMjsgLy8gRU1hcmdpbkNvbGxhcHNlCiAgICAgdW5zaWduZWQgbWFy
Z2luQWZ0ZXJDb2xsYXBzZSA6IDI7IC8vIEVNYXJnaW5Db2xsYXBzZQotICAgIHVuc2lnbmVkIG1f
YXBwZWFyYW5jZSA6IDY7IC8vIEVBcHBlYXJhbmNlCi0gICAgdW5zaWduZWQgbV9ib3JkZXJGaXQg
OiAxOyAvLyBFQm9yZGVyRml0Ci0gICAgdW5zaWduZWQgbV90ZXh0Q29tYmluZSA6IDE7IC8vIENT
UzMgdGV4dC1jb21iaW5lIHByb3BlcnRpZXMKKyAgICB1bnNpZ25lZCBhcHBlYXJhbmNlIDogNjsg
Ly8gRUFwcGVhcmFuY2UKKyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0
CisgICAgdW5zaWduZWQgdGV4dENvbWJpbmUgOiAxOyAvLyBDU1MzIHRleHQtY29tYmluZSBwcm9w
ZXJ0aWVzCiAKLSAgICB1bnNpZ25lZCBtX3RleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0
RGVjb3JhdGlvblN0eWxlCisgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25TdHlsZSA6IDM7IC8v
IFRleHREZWNvcmF0aW9uU3R5bGUKIAotICAgIHVuc2lnbmVkIG1fYXNwZWN0UmF0aW9UeXBlIDog
MjsKKyAgICB1bnNpZ25lZCBhc3BlY3RSYXRpb1R5cGUgOiAyOwogCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKLSAgICB1bnNpZ25lZCBtX2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJs
ZW5kTW9kZQotICAgIHVuc2lnbmVkIG1faXNvbGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCisgICAg
dW5zaWduZWQgZWZmZWN0aXZlQmxlbmRNb2RlOiA1OyAvLyBFQmxlbmRNb2RlCisgICAgdW5zaWdu
ZWQgaXNvbGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCi0gICAgdW5zaWduZWQgbV9hcHBsZVBheUJ1dHRvblN0eWxlIDogMjsKLSAgICB1bnNp
Z25lZCBtX2FwcGxlUGF5QnV0dG9uVHlwZSA6IDM7CisgICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0
b25TdHlsZSA6IDI7CisgICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25UeXBlIDogMzsKICNlbmRp
ZgogCi0gICAgdW5zaWduZWQgbV9vYmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQKKyAgICB1bnNp
Z25lZCBvYmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQKICAgICAKLSAgICB1bnNpZ25lZCBtX2Jy
ZWFrQmVmb3JlIDogNDsgLy8gQnJlYWtCZXR3ZWVuCi0gICAgdW5zaWduZWQgbV9icmVha0FmdGVy
IDogNDsKLSAgICB1bnNpZ25lZCBtX2JyZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKLSAg
ICB1bnNpZ25lZCBtX3Jlc2l6ZSA6IDI7IC8vIEVSZXNpemUKKyAgICB1bnNpZ25lZCBicmVha0Jl
Zm9yZSA6IDQ7IC8vIEJyZWFrQmV0d2VlbgorICAgIHVuc2lnbmVkIGJyZWFrQWZ0ZXIgOiA0Owor
ICAgIHVuc2lnbmVkIGJyZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKKyAgICB1bnNpZ25l
ZCByZXNpemUgOiAyOyAvLyBFUmVzaXplCiAKLSAgICB1bnNpZ25lZCBtX2hhc0F0dHJDb250ZW50
IDogMTsKKyAgICB1bnNpZ25lZCBoYXNBdHRyQ29udGVudCA6IDE7CiAKLSAgICB1bnNpZ25lZCBt
X2lzUGxhY2Vob2xkZXJTdHlsZSA6IDE7CisgICAgdW5zaWduZWQgaXNQbGFjZWhvbGRlclN0eWxl
IDogMTsKIAogcHJpdmF0ZToKICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEu
Y3BwCmluZGV4IGVhZjMxMGI2M2Q2MWFkMWNjMTA0OGIwYzY4MmFjZmVkNTJkOWFmYTYuLmVhZjdh
NmE0MzdlOTM2MTE2ODNiZTZhMWE5ZTQzYmEwMDgwYTM5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCkBAIC0yNywx
OSArMjcsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVUcmFuc2Zvcm1EYXRhOjpT
dHlsZVRyYW5zZm9ybURhdGEoKQotICAgIDogbV9vcGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNmb3JtKCkpCi0gICAgLCBtX3goUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1P
cmlnaW5YKCkpCi0gICAgLCBtX3koUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5Z
KCkpCi0gICAgLCBtX3ooUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aKCkpCisg
ICAgOiBvcGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtKCkpCisgICAgLCB4
KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpKQorICAgICwgeShSZW5kZXJT
dHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSkKKyAgICAsIHooUmVuZGVyU3R5bGU6Omlu
aXRpYWxUcmFuc2Zvcm1PcmlnaW5aKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZVRyYW5zZm9ybURh
dGE6OlN0eWxlVHJhbnNmb3JtRGF0YShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pCitpbmxp
bmUgU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoY29uc3QgU3R5bGVUcmFu
c2Zvcm1EYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVUcmFuc2Zvcm1EYXRhPigp
Ci0gICAgLCBtX29wZXJhdGlvbnMoby5tX29wZXJhdGlvbnMpCi0gICAgLCBtX3goby5tX3gpCi0g
ICAgLCBtX3koby5tX3kpCi0gICAgLCBtX3ooby5tX3opCisgICAgLCBvcGVyYXRpb25zKG90aGVy
Lm9wZXJhdGlvbnMpCisgICAgLCB4KG90aGVyLngpCisgICAgLCB5KG90aGVyLnkpCisgICAgLCB6
KG90aGVyLnopCiB7CiB9CiAKQEAgLTQ4LDkgKzQ4LDkgQEAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0
YT4gU3R5bGVUcmFuc2Zvcm1EYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVRyYW5zZm9ybURhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZVRyYW5zZm9y
bURhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorYm9v
bCBTdHlsZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRh
JiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9PSBvLm1f
eSAmJiBtX3ogPT0gby5tX3ogJiYgbV9vcGVyYXRpb25zID09IG8ubV9vcGVyYXRpb25zOworICAg
IHJldHVybiB4ID09IG90aGVyLnggJiYgeSA9PSBvdGhlci55ICYmIHogPT0gb3RoZXIueiAmJiBv
cGVyYXRpb25zID09IG90aGVyLm9wZXJhdGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5z
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9y
bURhdGEuaAppbmRleCAyZWEwNzk1YjZhZWRjMTUwMzRmN2JmMjhmM2Q4ZmEzNjIyZWVkOGNhLi42
YjQ2YTM1NmI0MWZjMWI2MTIzZTgyYzQ3ZDIxMDYwM2FhYWM5MjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCkBAIC0zNiwx
OCArMzYsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSk7IH0KICAg
ICBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9v
cGVyYXRpb25zLnNpemUoKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gb3BlcmF0aW9ucy5zaXplKCk7IH0KIAotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgbV9vcGVy
YXRpb25zOwotICAgIExlbmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1feTsKLSAgICBmbG9hdCBtX3o7
CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIExlbmd0aCB4OworICAg
IExlbmd0aCB5OworICAgIGZsb2F0IHo7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVUcmFuc2Zvcm1E
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3Vh
bERhdGEuY3BwCmluZGV4IDI1NmMxNTQ5NWZhNmUwMGM3YWNjMGIxZGRiN2I3MGZmYzgyMjBiMmUu
LjEwZmQ1ODg4ZjdmN2I2Nzg3NTQ0ZGQxMWViOGY3ZWVhZGIwMTgwYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCkBAIC0yOSw3
ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1
YWxEYXRhKCkKICAgICA6IGhhc0NsaXAoZmFsc2UpCiAgICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkpCi0gICAgLCBtX3pvb20oUmVuZGVyU3R5
bGU6OmluaXRpYWxab29tKCkpCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KQogewogfQogCkBAIC0zNywxMiArMzcsMTIgQEAgU3R5bGVWaXN1YWxEYXRhOjp+U3R5bGVWaXN1
YWxEYXRhKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRh
KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgbykKK2lubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxl
VmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRl
ZDxTdHlsZVZpc3VhbERhdGE+KCkKLSAgICAsIGNsaXAoby5jbGlwKQotICAgICwgaGFzQ2xpcChv
Lmhhc0NsaXApCi0gICAgLCB0ZXh0RGVjb3JhdGlvbihvLnRleHREZWNvcmF0aW9uKQotICAgICwg
bV96b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgY2xpcChvdGhlci5jbGlw
KQorICAgICwgaGFzQ2xpcChvdGhlci5oYXNDbGlwKQorICAgICwgdGV4dERlY29yYXRpb24ob3Ro
ZXIudGV4dERlY29yYXRpb24pCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVWaXN1YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmgKaW5kZXggYTZmNjhlZmQwNTBhN2RhMDhlNjU1NzAxNjU1MDAwYWEwOGFkZmI0Mi4u
ZDQxOGFjYjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtMzcsMTkgKzM3
LDE5IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29uc3Q7CiAg
ICAgflN0eWxlVmlzdWFsRGF0YSgpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
VmlzdWFsRGF0YSYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVWaXN1
YWxEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjbGlwID09IG8uY2xp
cAotICAgICAgICAgICAgJiYgaGFzQ2xpcCA9PSBvLmhhc0NsaXAKLSAgICAgICAgICAgICYmIHRl
eHREZWNvcmF0aW9uID09IG8udGV4dERlY29yYXRpb24KLSAgICAgICAgICAgICYmIG1fem9vbSA9
PSBvLm1fem9vbTsKKyAgICAgICAgcmV0dXJuIGNsaXAgPT0gb3RoZXIuY2xpcAorICAgICAgICAg
ICAgJiYgaGFzQ2xpcCA9PSBvdGhlci5oYXNDbGlwCisgICAgICAgICAgICAmJiB0ZXh0RGVjb3Jh
dGlvbiA9PSBvdGhlci50ZXh0RGVjb3JhdGlvbgorICAgICAgICAgICAgJiYgem9vbSA9PSBvdGhl
ci56b29tOwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRh
JiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsKICAgICBib29sIGhhc0NsaXAgOiAxOwog
ICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uIDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0
IGRlY29yYXRpb25zIGRlZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KLSAgICBmbG9hdCBt
X3pvb207CisgICAgZmxvYXQgem9vbTsKIAogcHJpdmF0ZToKICAgICBTdHlsZVZpc3VhbERhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCmlu
ZGV4IGY3NDkzMzkwMzQyMDk1Y2UzMTc0MWNjZDJjMDAzYTNmMmI2NDcyNzIuLjEwMzE5ZjgyM2Vk
MDMxNGIyZWIzODI1ODkwYmVjMzU3MDcwMzE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9p
ZCBsb2FkUGVuZGluZ0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3R5bGVJbWFnZSog
c3R5bGVJbWFnZSwgYwogCiB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKFJlbmRlclN0eWxlJiBz
dHlsZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAg
IGZvciAoYXV0byogYmFja2dyb3VuZExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBi
YWNrZ3JvdW5kTGF5ZXI7IGJhY2tncm91bmRMYXllciA9IGJhY2tncm91bmRMYXllci0+bmV4dCgp
KQorICAgIGZvciAoYXV0byogYmFja2dyb3VuZExheWVyID0gJnN0eWxlLmJhY2tncm91bmRMYXll
cnMoKTsgYmFja2dyb3VuZExheWVyOyBiYWNrZ3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXIt
Pm5leHQoKSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgYmFja2dyb3VuZExh
eWVyLT5pbWFnZSgpLCBlbGVtZW50KTsKIAogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBz
dHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0
YS0+bmV4dCgpKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMo
UmVuZGVyU3R5bGUmIHN0eWxlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAg
ICAgaWYgKGF1dG8qIHJlZmxlY3Rpb24gPSBzdHlsZS5ib3hSZWZsZWN0KCkpCiAgICAgICAgIGxv
YWRQZW5kaW5nSW1hZ2UoZG9jdW1lbnQsIHJlZmxlY3Rpb24tPm1hc2soKS5pbWFnZSgpLCBlbGVt
ZW50KTsKIAotICAgIGZvciAoYXV0byogbWFza0xheWVyID0gc3R5bGUubWFza0xheWVycygpOyBt
YXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKQorICAgIGZvciAoYXV0byog
bWFza0xheWVyID0gJnN0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBt
YXNrTGF5ZXItPm5leHQoKSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgbWFz
a0xheWVyLT5pbWFnZSgpLCBlbGVtZW50KTsKIAogICAgIGlmIChzdHlsZS5zaGFwZU91dHNpZGUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KaW5kZXggZmUyOGZkNGVhNWU1MDdlYjg2YjgzZTcxYWQ2ODA5ZjMw
NjY5Mzg3NC4uNGU5YjJlMjcyZDJkMzlkYWE4MGRhMGNjYTQzZGQyZmEwOTg5YzEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KQEAgLTE4NDksNyArMTg0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAgICAgewotICAgICAgICBGcmFtZSogZnJh
bWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9
IEZyYW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDBjNWZkYTAxZjA4YTkwNWQxNmM5M2M0YjczODJiNjQyZDgyZWY1YWEuLmM5MTE1NTIw
ZjJjODk1MjM5ZTQxNDJjYTg2N2E3ZjZkNGY2MDYyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTM0NzAsOCArMzQ3MCw4IEBAIC0gKHZvaWQpX2FkZFNjcm9sbGVyRGFz
aGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzooRnJhbWVWaWV3KilmcmFtZVZpZXcgZGFzaGJvYXJk
CiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW2tpdCgmZnJhbWVWaWV3LT5mcmFtZSgpKSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdpZGdldDog
ZnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRn
ZXQpKSB7Ci0gICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9y
RnJhbWVWaWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdp
b25zOnJlZ2lvbnNdOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQpKSB7CisgICAg
ICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OiZk
b3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25z
XTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDlhODczNThi
MDg1NDM1MThkODA0NjYzMWI1MTkzMDNlMGEzMWM0YTcuLmRmMWE1N2JhNDk0Y2IwNzIzMjFhNjcy
Yjk5MDJjMDgzYmE4ZTNhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFRleHR1CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYW5pbWF0
aW9uT2JqZWN0LT5maWxsTW9kZSgpKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+
ZHVyYXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+aXRlcmF0aW9uQ291
bnQoKTsKLSAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCBhbmltYXRpb25PYmplY3Qt
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpOworICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29k
ZXIsIGFuaW1hdGlvbk9iamVjdC0+dGltaW5nRnVuY3Rpb24oKSk7CiAKICAgICBjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYga2V5ZnJhbWVzID0gYW5pbWF0aW9uLmtleWZyYW1lcygpOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVydHkoKSk7CkBAIC01MjcsNyArNTI3LDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVGV4dHVyZU1hcHAKICAgICBhbmltYXRpb25PYmplY3QtPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKICAgICBhbmltYXRpb25PYmplY3QtPnNldEl0ZXJhdGlvbkNvdW50KGl0
ZXJhdGlvbkNvdW50KTsKICAgICBpZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGFuaW1hdGlv
bk9iamVjdC0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhbmlt
YXRpb25PYmplY3QtPnNldFRpbWluZ0Z1bmN0aW9uKFdURk1vdmUodGltaW5nRnVuY3Rpb24pKTsK
IAogICAgIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShwcm9wZXJ0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggYmFlOTZiNmEy
Y2RkZjliYjJjODA5MTFmNzZhNmY0NDhhY2RkZjI0Yi4uODUwOWFlNjUwMjRkNGVlNTkyZWQxMjVh
MTIxMjE0MGYwN2ZjZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtNjY2LDcgKzY2
Niw3IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9y
KCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3
aWRnZXQucHRyKCkpOworICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGls
ZCh3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298547</attachid>
            <date>2017-01-10 19:29:53 -0800</date>
            <delta_ts>2017-01-10 20:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170110192815.patch</filename>
            <type>text/plain</type>
            <size>945694</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li4yMDVmYjdiNDRlZjQyOTFj
YTZlMDQ2YzhlZTI0MTc4MTQ1YzYyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUg
cGlwZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDI2NTZjZGU4Y2M0NmYxMGMwMzgyZDMxMTI1YWI1NTY3NzkwMWRjZi4u
MzQwOWMyY2VjZDkxOTIwNWQ5ZjNmYTg2M2M2NTY2ZjQ4OTljYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2Vk
IHRoZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5v
bi1jb25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29u
c3QgVD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGlu
dGVudGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZl
cmVuY2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2Ug
UmVmUHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAg
aXMgdG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nh
c3QganVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9z
ZSBhbmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0w
NiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbR1RLXSBTaG91bGQgc3VwcG9ydCBrZXkgYW5kIGNvZGUgcHJvcGVydGll
cyBvbiBrZXlib2FyZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWM4MjJiNTkzMzViNWIzYzJiODFi
MzgyMTc2MTA4YjZhNTY0OTc2Li5lYzAwZDZmYTk5OGQ1ZjU3NjcyOGJlMDlhN2U5NWIyNzFlYjg0
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIyIEBACisyMDE3LTAxLTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1v
cmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg6IFR3ZWFrcywgbXNhZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0xlbmd0aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
IFVwZGF0ZWQgbWFueSBwcm9wZXJ0aWVzCisgICAgICAgIHNpbmNlIHRoZSBsYXllciBwcm9wZXJ0
aWVzIG5vdyByZXR1cm4gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycy4KKworICAgICAg
ICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjppbWFnZSk6IFJlbW92
ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6
Oml0ZW0pOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdCk6IFVwZGF0ZWQgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBSZW1vdmVk
IG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBVcGRhdGVk
IGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlOjp2YXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemVGb3JMZW5ndGhTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFNpemVGb3JMZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZCBz
aXplRm9yTGVuZ3RoU2l6ZS4KKworICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRPcmRlcik6IEN1dCBkb3duIG9u
IGNyZWF0aW9uIG9mIHVudXNlZCBvYmplY3RzLgorICAgICAgICBXZSBub3cgY3JlYXRlIG9ubHkg
d2hhdCB3ZSBhY3R1YWxseSB1c2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMpOiBVcGRhdGVkIGZvcgorICAgICAgICBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOiBQYXNz
IHJlZmVyZW5jZXMKKyAgICAgICAgd2hlbiBjcmVhdGluZyBTaGFwZVZhbHVlLgorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZElu
aGVyaXRlZFZhbHVlKTogQWRkZWQuIFRoaXMgc2V0IG9mIG92ZXJsb2FkZWQKKyAgICAgICAgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byB1c2UgbW92ZSBzZW1hbnRpY3MgZm9yIHNvbWUgdHlwZXMsIGJ1
dCBjb3B5CisgICAgICAgIHRoZW0gd2hlbiBpbmhlcml0aW5nLiBEb2luZyBpdCB3aXRoIHNwZWNp
YWwgY2FzZXMgaGVyZSBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGlzIHdpdGhvdXQg
YWRkaW5nIG92ZXJsb2FkcyBzb21lb25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8KKyAgICAgICAgY2Fs
bCBvdXRzaWRlIHRoZSBzdHlsZSBidWlsZGVyLCBhbmQgd2l0aG91dCBhZGRpbmcgc3BlY2lhbCBj
YXNlcyB0bworICAgICAgICB0aGUgSlNPTiBmaWxlIGZvciBlYWNoIHByb3BlcnR5LgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJk
UmVnaW9uKToKKyAgICAgICAgQWRkIFdURk1vdmUgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBydmFs
dWUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5l
SGVpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXApOiBEaXR0by4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQpOiBVc2UKKyAgICAgICAgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgY3VzdG9tIHByb3Bl
cnR5IGRhdGEgaW4gUmVuZGVyU3R5bGUuCisKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6IFVz
ZSBhdXRvIHF1aXRlIGEgYml0IG1vcmUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBV
cGRhdGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxheWVycyB0byBleHBlY3QgcmVmZXJlbmNlcy4gQWRk
ZWQgYSBXVEZNb3ZlCisgICAgICAgIHNvIHdlIGNhbiBnZXQgbW92ZSBzZW1hbnRpY3MgZm9yIGNv
bnZlcnRlZCB2YWx1ZXMgdGhhdCBjb21lIG91dCBpbgorICAgICAgICBhbiBvcHRpb25hbC4gQWRk
ZWQgY2FsbCB0byBmb3J3YXJkSW5oZXJpdGVkVmFsdWUgKHNlZSBhYm92ZSkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTogVXNlIGF1dG8gYW5kIHVwZGF0ZQorICAgICAgICBzaW5jZSBM
ZW5ndGhTaXplIGlzIGEgc3RydWN0LgorCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCk6
IFVzZSBhdXRvLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGl2ZU5vZGVMaXN0Ojpvd25lck5vZGUpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpzb3VyY2UpOiBSZW1vdmVkIHVubmVlZGVkIHN0YXRpY19j
YXN0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNl
dFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6IFR3ZWFrZWQgZm9ybWF0dGlu
Zy4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Om93
bmVyRG9jdW1lbnQpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0
UnVubmVyKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSk6IERpdHRvLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFj
a0l0ZW06Om5vZGUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
ZXRKYXZhU2NyaXB0UGF1c2VkKTogQ3V0IGRvd24gb24gdGhlIG51bWJlcgorICAgICAgICBvZiBk
aWZmZXJlbnQgZnVuY3Rpb25zIGhlcmUuIEFsc28gdXNlIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBw
b2ludGVyLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6IFVzZSBhdXRvLiBMZXQgdGhlIGlzPD4gZnVu
Y3Rpb24gZG8gbnVsbAorICAgICAgICBjaGVja2luZyBmb3IgdXMuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6ZnJhbWVGb3JXaWRnZXQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QpOiBVc2UgQ2hyb21lIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgSG9zdFdpbmRvdy4gSG9zdFdpbmRvdyBpcyBhbiBhYnN0cmFjdGlvbiBmb3Ig
dGhlIHBsYXRmb3JtIGxheWVyLCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gZ29vZCByZWFzb24g
dG8gdXNlIGl0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlQW5p
bWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldCk6IFVwZGF0ZWQgdG8gdXNlIHJlZmVyZW5jZQorICAgICAgICB3
aGVuIGNhbGxpbmcgUmVuZGVyV2lkZ2V0OjpmaW5kLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogVXNlIENocm9tZSBpbnN0ZWFkIG9mIEhvc3RX
aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvc3RXaW5kb3cpOiBVc2UgZWFy
bHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlCisgICAgICAgIGNsYXNz
IGZ1bmN0aW9uLCB3aGljaCB3YXMgZW1wdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93
CisgICAgICAgIGNvbnRhaW5zIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucyk6IFVzZSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6IFVz
ZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBSZW1vdmUgbm93LXVubmVlZGVkIGNvbnN0X2Nh
c3QuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cGx1Z2luVmlld3MpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5z
CisgICAgICAgIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0
eSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
OjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvCisg
ICAgICAgIHRoZSB0eXBlcyBpbiBhbmltYXRpb24gZnVuY3Rpb24gbWVtYmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUpOiBEaXR0by4KKworICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFwcGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIp
OiBVcGRhdGVkIHNpbmNlIHdlIG5vdworICAgICAgICB1c2UgcnZhbHVlIHJlZmVyZW5jZXMgYW5k
IG1vdmUgc2VtYW50aWNzIHdoZW4gc2V0dGluZyBsZW5ndGggcHJvcGVydGllcy4KKworICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25z
Rm9yRnJhbWUpOiBUd2Vha2VkIHRvCisgICAgICAgIHVzZSBhdXRvLCBwYXNzIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOiBSZXR1cm4gUmVmUHRyIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOiBBZGRl
ZCBhIGNvbnN0cnVjdG9yIHRoYXQgbW92ZXMgdGhlIGxlbmd0aHMgaW4sIHJhdGhlcgorICAgICAg
ICB0aGFuIGFsd2F5cyBjb3B5aW5nIHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oOiBU
dXJuZWQgTGVuZ3RoU2l6ZSBpbnRvIGEgc3RydWN0IGFuZCByZW1vdmVkIGFsbCB0aGUKKyAgICAg
ICAgZ2V0dGVyIGFuZCBzZXR0ZXIgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuIFVudXNlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUpOiBSZXR1cm4gUmVmIHJh
dGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOiBUYWtl
CisgICAgICAgIGEgcmVmZXJlbmNlLiBJbml0aWFsaXplIGRhdGEgbWVtYmVycyBpbiBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQ
YXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGRDaGlsZCk6IFRha2Ug
YSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwpOiBVcGRhdGVkIGZvciBjaGFuZ2Ug
dG8gYWRkQ2hpbGQKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgpOiBEZWxldGVkLiBUaGlzIHdhcyBuZXZlciBjYWxsZWQsCisgICAgICAgIHNvIG1h
ZGUgaXQgcHVyZSB2aXJ0dWFsLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6ZnJhbWVS
ZWN0c0NoYW5nZWQpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IERlbGV0ZWQuIFRoaXMgd2FzIGVtcHR5IHNv
IG1hZGUgaXQgcHVyZQorICAgICAgICB2aXJ0dWFsIGFuZCBjaGFuZ2VkIEZyYW1lVmlldyB0byBu
b3QgY2FsbCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzaG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpoaWRlKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBDaGFuZ2VkIHRoZSBjaGlsZHJl
biBzZXQgdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIENoYW5nZWQg
ZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBvdmVycmlkZGVuIHRvIGVpdGhlciBiZSBmaW5hbCBv
ciBub24tdmlydHVhbCwKKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVy
IGNhbGxlZCB0byBiZSBwdXJlIHZpcnR1YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSk6IFVwZGF0ZWQg
Zm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oOiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgor
ICAgICAgICByYXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRp
bWluZ0Z1bmN0aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5k
IFJlZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rp
b24gYW5kCisgICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50
IGNoZWNrIGluIEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25MaXN0OjpBbmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJl
ZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250
YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNz
aWdubWVudAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlcjo6Y2xvbmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAg
ICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9u
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9y
ZQorICAgICAgICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGlu
ZyB0byBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
Zyk6IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlk
ZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUg
b2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6IFNpbXBsaWZpZWQsIHJlbW92aW5nIHVu
bmVjZXNzYXJ5IGZsb2F0aW5nIHBvaW50IG1hdGguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpGaWx0ZXJPcGVyYXRpb25zKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBn
ZW5lcmF0ZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0
b3I9KTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGlzLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6IFN0cmVhbWxpbmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogUmVtb3Zl
ZCBpbmNsdWRlZCBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6IFR3ZWFrZWQgZm9ybWF0dGluZy4gUmVtb3ZlZCBuZXN0aW5n
CisgICAgICAgIGZyb20gI2lmIHNpbmNlIG91ciBmb3JtYXR0aW5nIG1ha2VzIGl0IGhhcmQgdG8g
c2VlIG5lc3RpbmcuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGUgdGhlIGRlZmF1
bHQgbW92ZSBhbmQgY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbmVtbnQgb3BlcmF0b3JzIGV4
Y2VwdAorICAgICAgICBpbiB0aGUgVVNFKEZSRUVUWVBFKSBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKTogVXBkYXRlZCBzaW5jZSBjbG9uZSBub3cgcmV0dXJu
cyBhIFJlZgorICAgICAgICByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0aW9uVmFsdWUpOiBEZWxldGVkLiBMZXQg
dGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpdGhv
dXQgZGVmaW5pbmcgaXQgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6IFVzZSBhIG1vZGVybiBmb3IK
KyAgICAgICAgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSwgYW5kIHVuY2hlY2tlZCBhcHBl
bmQuIEFsc28gdGVsbCB0aGUgY29tcGlsZXIgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIG1vdmUg
Y29uc3RydWN0b3IsIHNpbmNlIHRoZSBzcGVjaWFsIHdvcmsgaXMgb25seSBuZWVkZWQgZm9yIHRo
ZQorICAgICAgICBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQW5p
bWF0aW9uVmFsdWU6OkZpbHRlckFuaW1hdGlvblZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6S2V5ZnJhbWVWYWx1ZUxpc3QpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhT
aHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKTogVXBkYXRlZAorICAgICAgICBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgRG9uJ3QgYm90aGVyIHNldHRpbmcgbV9jbGllbnQgc2luY2Ugd2Ug
bmV2ZXIgdXNlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBDbGVhbiB1cCBjb2RlIGEgYml0CisgICAgICAgIGJ5IHVz
aW5nIGF1dG8gYSBsb3QgbW9yZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6IEFkZGVkIGluY2x1ZGUKKyAgICAg
ICAgdGhhdCBpcyBub3cgbmVlZGVkIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2Ug
Y2xhc3MuIFRpZGllZCB0aGUgY2xhc3MKKyAgICAgICAgdXAgYSBiaXQsIG1hcmtpbmcgaXQgZmlu
YWwsIG1ha2luZyBldmVyeXRoaW5nIHByaXZhdGUsIHRha2luZyBhIHJlZmVyZW5jZSwgYW5kCisg
ICAgICAgIHJlbW92aW5nIGFuIHVudXNlZCBkYXRhIG1lbWJlciwgbV9jbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOiBQYXNzIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwgbm93
IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1ZGUg
ZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgorICAg
ICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVy
QW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAo
LVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2VkIGFy
Z3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaXplRnJvbU5TQ29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5naHRTaXplIHN0cnVjdC4K
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6cmFkaW9TaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJv
bFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5pbXVtQ29udHJv
bFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEZvY3VzKTogVXBkYXRlZCB0byBwYXNzIGEgcmVm
ZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcDogUmVtb3ZlZC4gVW51c2VkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90
aW9uQ2xpZW50TW9jay5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6
IFJldHVybiBhIFJlZiBpbnN0ZWFkIG9mIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaGFyZWRDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRDdXJzb3JC
eU5hbWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KTog
UmVtb3ZlZCBhIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6IFVwZGF0
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4gQWxzbworICAgICAgICB1c2VkIGEgdmVjdG9yIHRvIGl0
ZXJhdGUgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIgaW5zdGVhZCBvZiByZWN1cnNp
b24uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6IFRh
a2UgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1h
c2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKTogVXNlIGF1dG8gYSBi
aXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0
ZW50KTogVXNlIHJlZmVyZW5jZSBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFza0NsaXBSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZpbGxMYXllcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJzVXNlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKTogVXNlIHJlZmVyZW5j
ZSBmb3IKKyAgICAgICAgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdl
b21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KTogVXNl
IHJlZmVyZW5jZXMgZm9yIHRoZSBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKTogVXNlIFJlbmRlclN0eWxlOjpyZXBsYWNlIHRvIHJl
cGxhY2UgdGhlCisgICAgICAgIG9sZCBzdHlsZSB3aXRoIHRoZSBuZXcgc3R5bGUsIGFuZCBnZXQg
dGhlIG9sZCBvbmUgb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJz
LgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxsTGF5ZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFVwZGF0ZWQgZm9y
IHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25PZmZzZXQpOgorICAgICAgICBSZWZhY3RvciBzbyB3ZSBkb24ndCBuZWVkIHNvIG1hbnkg
ZnVuY3Rpb25zIGluIFJlbmRlclN0eWxlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFsc28gZGlkIGEgZmV3IG90aGVy
IHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVU
aWxlZEltYWdlKTogVXBkYXRlZCBzaW5jZSBsYXllcnMgYXJlIHJlZmVyZW5jZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJh
Y2tncm91bmRJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKTogVXBkYXRlZCB0byB1c2UKKyAgICAg
ICAgcmVmZXJlbmNlcyBmb3IgbGF5ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6IFVz
ZSBXVEZNb3ZlIHRvIHBhc3MgYSBMZW5ndGhCb3guCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6aXNDb250cm9sU3R5bGVkKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3Ry
dWN0LAorICAgICAgICBtb3JlIFdURk1vdmUsIGNoYW5nZSBzaW5jZSBsYXllcnMgYXJlIGZlcmVu
Y2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cyk6IFVzZSBtb3ZlCisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9v
cCBpbnN0ZWFkIG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1Bh
cmVudFNvb24pOiBUYWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFs
dWU6OnJlc2V0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2
YWx1ZSByZWZlcmVuY2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUp
OiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVt
b3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5j
ZSBtYXRoTUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlT
dHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNo
b3VsZE1vdmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0
aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9y
ZGVyRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVy
UmFkaXVzKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1i
ZXIgbmFtZXMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxp
emVyIGxpc3RzIHNvIHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJl
cXVpcmluZyBleHBsaWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJl
cGxhY2UpOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisg
ICAgICAgIGNhbiBiZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2
YWx1ZSBvdXQgd2l0aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBh
Ym91dCBub3QgYmVpbmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVp
bmcKKyAgICAgICAgbW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3Rk
OjpleGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQm
KTogQWRkZWQgb3BlcmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVu
Y2VzIHdpdGhvdXQgYW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vz
cyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0
ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1
bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFy
ZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAg
ICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9y
PT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xh
c3MKKyAgICAgICAgZm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlv
biBpbiB0aGlzCisgICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBl
bGltaW5hdGUgdGhlIHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFy
ZCBkYXRhIG1lbWJlciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVy
TmFtZSBpbiBhCisgICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGlj
bHkgYWNjZXNzaWJsZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJu
IG1vcmUgcmVmZXJlbmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJu
IGZvciBsb29wcy4KKyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24g
YnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0
aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFk
ZGVkIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ug
b3BlcmF0aW9uLCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0
ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFk
ZGVkLiBDYWxscyB0aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0
IGVxdWFsaXR5CisgICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1h
bCBlZmZpY2llbmN5IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
RGFzaGJvYXJkUmVnaW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNl
dCBvZiBmdW5jdGlvbnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFsc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25J
dGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3Rp
ZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25U
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2Vs
ZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0
aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVt
c092ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRB
bGlnblNlbGZPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNP
dmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3Bw
OiBTaW1pbGFyIGNoYW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpj
cmVhdGUpOiBUYWtlIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlVmFsdWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVz
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRv
OyBtYWtlIHRoZW0gcHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8t
bG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6
IFRha2UgYW4gcnZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3Rv
bVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjb250YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBk
YXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zv
cm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUg
c2luY2UgbGF5ZXJzIGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEpTU291cmNl
Q29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUKQEAgLTM3MCw3
ICs5ODksNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdz
IG9mIHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRo
ZSBzZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVj
ZSBDUFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2NzI4OTUyOWViYWU0YzYzZGEuLjY2NjY0
ZTdhMzhhYmU3ZGIxN2MwZjhjMmI1NDU4MjM2MjkzNTQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldp
ZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2lu
Y2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgor
CiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVjdG9yIiwgInBsYXRmb3JtL3NxbCIsIGFu
ZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDk0MDQ2M2FhYzM5MWIzMDI2NmNiMDY5
ZGQwYWRmODE5Zjg3Yjg0Li4zN2Q5OTA3NjhhYmE5YTcyYmQ4Y2U5OGFlZThhMDdmNWRmZWI1NzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMDkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBv
ZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmVuY29kZSk6IFVwZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAg
ICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVu
Y3Rpb24KKyAgICAgICAgc2V0dGVycyBub3cgdGFrZXMgYW4gcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOiBVcGRhdGVkIHNp
bmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4KKwogMjAxNy0wMS0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyb3AgVk5vZGVUcmFj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhkYjRiZjAzZjZkZGVhN2U2
ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNlMmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Jj4o
bV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRlcy4KICAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3MWE3MjM3NGU3MTEyM2Uy
OTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZiMWI1M2Y2MTdjM2RiZWIy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQcml2YXRlTmFtZSYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1ib2xJbXBsJiB1aWQoKSBj
b25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZhMDk2ZTgxNjAzYzA4ZTU2
YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBhOWM5YzY3ZTJmM2U3NWM3
MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
cHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZjxUPiByZXBsYWNl
KFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4uMzA4ODFkM2JlMjgxZDAx
YzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNzcs
NyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBwbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMGJiNDZlYmU0OTJlOTAx
ZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZhNjFhZjUxYTZiMGU4Mzc4
YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3ZGQxYTMuLjY3NDZmNGVm
NGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25DbwogCiBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1V
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2JlNDIzYWI1OGNmMS4uYjVj
YjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnRl
eHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYyLDIxIEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
cGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAgICAgUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJl
ZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggZjkw
Zjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2MWJjYWRiMGMzYmM5YjMw
MDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBUKiBwKSB7IHJl
dHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
JiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQmPihwKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBSZWZQdHI8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNi
NzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0ODIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01XcmFwcGVkOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwogCi0gICAgSW1wbGVtZW50
YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50
YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNz
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNET01XcmFw
cGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IGIzZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjAwY2NhY2Q5NjRk
ZTVlZWUzNzBjZWFjYzBlOWRmMjE0MWI0NzgwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTQsMTAgKzU0LDkgQEAgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkKIHsKICAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgIGxvYWRl
ci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jvb3RNb2R1bGUoSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBpbXBvcnRlck1vZHVsZUtl
eS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggMDg4NjRmYTFhNjhlNDFh
YzdlZGNkZmRlN2RiNGFhZDBiMWY0MGUxNS4uNWYyMjVmNzRhYmI1NTI5MGFjZjExNjkyYzY2Y2Zi
ODNiN2JiMzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cApAQCAtMTQ0LDE4ICsxNDQsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBM
ZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCk7Ci0g
ICAgcmV0dXJuIExlbmd0aFNpemUoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQo
KSkpOworICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIHJldHVybiB7
IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29udmVydFRv
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwogfQogCiBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlKQogewotICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgIExlbmd0aCBvZmZzZXQgPSBMZW5ndGgoMCwgRml4ZWQpOwotCiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7CisgICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2Vu
dGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE2Niw2ICsxNjQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRp
bmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKIAorICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29y
ZCkgewogICAgIGNhc2UgQ1NTVmFsdWVUb3A6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzguLjYxYjI4YzUxMTkx
ZjE4ZmNmZDcxZWE2MzBmYjI3NTc2NjAyZDRlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBTZW5jaGEsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTYwNiwxMSArNjA2LDEwIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94KQogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxS
ZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0
UnVsZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7Ci0KKyAgICBhdXRvIGhvcml6b250YWxSZXBl
YXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVs
ZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2ZXJ0aWNhbFJlcGVhdDsKICAgICBpZiAoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSA9PSBpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkKLSAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVw
ZWF0OworICAgICAgICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigp
OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkp
OwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1v
dmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CkBAIC02ODgs
MjAgKzY4NywyMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29u
c3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgIHJldHVybiBDU1NSZWZs
ZWN0VmFsdWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7
CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3Np
dGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9u
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAobGF5
ZXItPmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgeworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5k
WE9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKTsKLSAgICAgICAgcG9zaXRpb25MaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLT5iYWNr
Z3JvdW5kWE9yaWdpbigpKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLmJhY2tncm91bmRYT3JpZ2luKCkpKTsKICAgICB9
Ci0gICAgcG9zaXRpb25MaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGxheWVyLT54UG9zaXRpb24oKSwgc3R5bGUpKTsKLSAgICBpZiAobGF5ZXItPmlzQmFj
a2dyb3VuZFlPcmlnaW5TZXQoKSkgeworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKGxheWVyLnhQb3NpdGlvbigpLCBzdHlsZSkpOworICAgIGlmIChsYXll
ci5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFja2dyb3Vu
ZFlPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpKSk7CiAgICAgfQotICAg
IHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChsYXllci0+eVBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uTGlzdDsK
KyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci55
UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTc2NSwzOSArNzY0LDM4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7Ci0gICAgbGlzdC5nZXQoKS5hcHBl
bmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVzLmhlaWdodCgpLCBzdHlsZSkp
OworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMu
d2lkdGgsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy5oZWlnaHQsIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJh
ZGl1cy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7Ci0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOworICAgIGlmIChyYWRpdXMud2lkdGggPT0gcmFk
aXVzLmhlaWdodCkKKyAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVl
KHJhZGl1cy53aWR0aCwgc3R5bGUpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3Jk
ZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkud2lkdGgoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQgPSBz
aG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7Ci0gICAg
Ym9vbCBzaG93SG9yaXpvbnRhbFRvcFJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoOworICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21SaWdo
dCA9IHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgpOworICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLndpZHRoKTsKIAotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCA9
IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tUmln
aHQgPSBzaG93VmVydGljYWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7
Ci0gICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRl
clRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21M
ZWZ0ID0gc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodDsKKyAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7Cisg
ICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8
IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCAhPSBzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRS
YWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJh
ZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOworICAgIGF1dG8gdG9wTGVmdFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcFJp
Z2h0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIGJvdHRvbVJpZ2h0UmFkaXVzID0gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsK
KyAgICBhdXRvIGJvdHRvbUxlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgYXV0byBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcExlZnRSYWRp
dXMtPml0ZW0oMCkpOwogICAgIGlmIChzaG93SG9yaXpvbnRhbFRvcFJpZ2h0KQogICAgICAgICBo
b3Jpem9udGFsUmFkaWktPmFwcGVuZCgqdG9wUmlnaHRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODA2
LDkgKzgwNCw5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9y
dGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKHNob3dIb3Jpem9u
dGFsQm90dG9tTGVmdCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKmJvdHRvbUxl
ZnRSYWRpdXMtPml0ZW0oMCkpOwogCi0gICAgbGlzdC5nZXQoKS5hcHBlbmQoaG9yaXpvbnRhbFJh
ZGlpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKGhvcml6b250
YWxSYWRpaSkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmVydGljYWxSYWRpaUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2ZXJ0aWNh
bFJhZGlpTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2
ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDEpKTsKICAgICBp
ZiAoc2hvd1ZlcnRpY2FsVG9wUmlnaHQpCiAgICAgICAgIHZlcnRpY2FsUmFkaWlMaXN0LT5hcHBl
bmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDEpKTsKQEAgLTgxNyw4ICs4MTUsOCBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93VmVydGljYWxCb3R0b21MZWZ0KQogICAgICAg
ICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDEpKTsK
IAotICAgIGlmICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpsaXN0LmdldCgpLml0ZW0oMCkpKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmVy
dGljYWxSYWRpaUxpc3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaWYgKCF2ZXJ0aWNhbFJhZGlp
TGlzdC0+ZXF1YWxzKGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QtPml0ZW0oMCkpKSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmVydGljYWxSYWRpaUxpc3QpKTsKIAogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtODg3LDcgKzg4NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNv
bXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZChtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKQEAgLTkzNCw3ICs5MzIsNyBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmls
dGVyT3BlcmF0aW9uLnR5cGUoKSkgewpAQCAtOTk2LDcgKzk5NCw3IEBAIFJlZjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFIKICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tTaXplcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNv
bGxlY3RvciwgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChz
cGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJh
Y2tTaXplc1tpXSwgc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25JbmRleCA9
IHRyYWNrU2l6ZXMuc2l6ZSgpOwogICAgIH0KQEAgLTExODcsMTMgKzExODUsMTMgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb24uaXNTcGFuKCkpIHsKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBv
c2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNwYW4pKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogI2VuZGlmCkBAIC0xMjA3LDE0ICsxMjA1LDE0IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uKQogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmlt
TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVHJh
bnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTI0Miw3ICsxMjQwLDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3Jv
bGxTbmFwQWxpZ24mIGFsaWcKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0
YSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghd2lsbENoYW5nZURhdGEgfHwg
IXdpbGxDaGFuZ2VEYXRhLT5udW1GZWF0dXJlcygpKQpAQCAtMTI1MywxMyArMTI1MSwxMyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxs
Q2hhbmdlRGF0YSogd2lsbENoYW5nZQogICAgICAgICBXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZVBy
b3BlcnR5UGFpciBmZWF0dXJlID0gd2lsbENoYW5nZURhdGEtPmZlYXR1cmVBdChpKTsKICAgICAg
ICAgc3dpdGNoIChmZWF0dXJlLmZpcnN0KSB7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6
OlNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6Q29udGVudHM6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudHMpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpQcm9wZXJ0eToKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmVhdHVyZS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGZlYXR1cmUuc2Vjb25kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWxs
Q2hhbmdlRGF0YTo6SW52YWxpZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ1NiwzOSArMTQ1NCwzOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVh
c3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAg
ICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVy
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfQogICAgIHJl
dHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlv
blZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkg
eworICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdG
dW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5j
dGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZh
bGlkOwogICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
KSB7CkBAIC0xNTExLDU5ICsxNTA5LDYwIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAg
ICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJP
ZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpz
dGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVz
cygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAg
ICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkg
PT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSA9PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVMaW5lYXIpOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRp
b25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9u
KGkpLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1
bmN0aW9uKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0
aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3
aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1h
dGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKnRyaWdnZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChz
Y3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwg
c3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6
Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdn
ZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAg
ICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9u
VHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRy
aWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblRyaWdnZXJWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCku
Z2V0KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJp
Z2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0K
KwogI2VuZGlmCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCkBAIC0xNzAwLDcgKzE2OTksNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4
dERlY29yYXRpb24pCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSkpOwogICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAKICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQpAQCAtMTc1OCw3ICsxNzU3LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0
RW1waGFzaXNQb3NpdGlvbgogICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb25VbmRlcikpKTsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpKSk7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcikpOwog
ICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIp
CkBAIC0xNzY3LDE2ICsxNzY2LDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
ZWZ0KSk7CiAgICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRp
b25SaWdodCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSaWdodCkpOwotCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25U
b0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24pCiB7CiAgICAg
YXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24p
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRmlyc3QpKTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgQWxsb3dFbmRI
YW5naW5nUHVuY3R1YXRpb24pCkBAIC0xNzg3LDcgKzE3ODUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5n
aW5nUHVuYwogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1
ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQpAQCAtMTgwMyw4ICsx
ODAxLDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxS
ZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXRZKTsKIAogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0Lmdl
dCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CisgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh4UmVwZWF0KSk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAKQEAgLTE4MjcsNDAgKzE4MjUsNDAgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3Qg
UmVuZGVyU3QKICAgICBpZiAoZmlsbFNpemUudHlwZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q292ZXIpOwogCi0gICAgaWYgKGZpbGxTaXplLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUu
d2lkdGgoKSwgc3R5bGUpOworICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodC5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS53aWR0aCwgc3R5bGUpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS5oZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUuaGVp
Z2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdHls
ZS5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAg
ICAgCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERh
dGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVy
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmlt
YWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1h
Z2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAg
ICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICB9Ci0gICAgaWYgKHN0eWxlLT5oYXNG
bG93RnJvbSgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewotICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG1hcCA9IHN0eWxlLT5jb3VudGVy
RGlyZWN0aXZlcygpOworICAgIGF1dG8qIG1hcCA9IHN0eWxlLmNvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCkBAIC0xODgzLDE0ICsxODgx
LDIxIEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlMaXN0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUNvdW50KCk7ICsr
aSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUtPmZvbnRD
YXNjYWRlKCkuZmFtaWx5QXQoaSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5
bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRGYW1pbHlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmIChzdHlsZS5mb250Q2FzY2Fk
ZSgpLmZhbWlseUNvdW50KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmFtaWx5KHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5QXQoMCkpOworICAgIHJldHVybiBmb250RmFtaWx5TGlz
dEZyb21TdHlsZShzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
bmVIZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIExlbmd0
aCBsZW5ndGggPSBzdHlsZS5saW5lSGVpZ2h0KCk7CkBAIC0xOTExLDIwMyArMTkxNiwyMDMgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q29tbW9uTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9Db21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgeworICAgIHN3aXRj
aCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpObzoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkp
IHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250
ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9Db250ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVh
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50UG9z
aXRpb246Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudFBvc2l0
aW9uOjpTdWJzY3JpcHQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVN1YikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246OlN1cGVyc2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBz
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6UGV0aXRlOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGV0
aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxs
UGV0aXRlOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VW5pY2FzZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmlj
YXNlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuaWNhc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OlRpdGxpbmc6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlVGl0bGluZ0NhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUxpbmluZ051bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVtcykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1i
ZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
c3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTcGFjaW5nKCkp
IHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3Bh
Y2luZygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9y
dGlvbmFsTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1bGFyTnVtYmVyczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVUYWJ1bGFyTnVtcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxG
cmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFs
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmlj
T3JkaW5hbCgpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlT3JkaW5hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNsYXNoZWRaZXJvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVI
aXN0b3JpY2FsRm9ybXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgeworICAg
IHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM3OCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVK
aXM3OCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzODM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSmlzODMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkw
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXMwNCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXMwNCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNpbXBsaWZpZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRy
YWRpdGlvbmFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZh
cmlhbnRFYXN0QXNpYW5XaWR0aCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5XaWR0aDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6OkZ1bGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVQcm9wb3J0aW9uYWxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdo
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWUxMDApOwogICAgIGNhc2UgRm9udFdlaWdodDIwMDoKQEAgLTIxMzgsMTkgKzIxNDMs
MTkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
eW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdHlsZSkpOwogICAgIGlmIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KQot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlaWdodCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVX
ZWlnaHQpKTsKICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygp
ICYgRm9udFN5bnRoZXNpc1NtYWxsQ2FwcykKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFs
bENhcHMpKTsKLSAgICByZXR1cm4gUmVmPENTU1ZhbHVlPihsaXN0LmdldCgpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxlbmd0aEdl
dHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxPYmplY3Q6
OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1wbGF0ZTxS
ZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1dGVkQ1NT
VmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgTGVuZ3RoIHVuem9vbXpl
ZExlbmd0aCA9IChzdHlsZS4qbGVuZ3RoR2V0dGVyKSgpOwogICAgIGlmICghaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgfHwgdW56b29temVkTGVuZ3RoLmlzRml4ZWQoKSkKQEAgLTIxNTksMTEgKzIx
NjQsOSBAQCBpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJn
aW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiB0ZW1wbGF0ZTxSZW5kZXJTdHls
ZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXI+Ci1pbmxpbmUgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHBhZGRpbmdPck1hcmdpbklzUmVuZGVyZXJEZXBlbmRl
bnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICEoc3R5bGUgJiYgKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0eWxlICYmIHJlbmRlcmVyLT5pc0Jv
eCgpICYmICEoc3R5bGUtPipsZW5ndGhHZXR0ZXIpKCkuaXNGaXhlZCgpOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQpAQCAtMjQ0
NSwxMSArMjQ0OCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9z
aXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoY29uc3QgU3R5bGVTZQogICAgIGF1dG8mIGNzc1Zh
bHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEucG9zaXRp
b25UeXBlKCkgPT0gTGVnYWN5UG9zaXRpb24pCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOwotICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRp
b24oKSkpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTGVnYWN5KSk7CisgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRpb24oKSkpOwogICAgIGlmIChkYXRhLnBvc2l0aW9u
KCkgPj0gSXRlbVBvc2l0aW9uQ2VudGVyICYmIGRhdGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0Fs
aWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCku
bGVuZ3RoKCkgPD0gMik7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8
PSAyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDU4LDIxICsyNDYxLDIxIEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbldpdGhPdmVyZmxvd0FsaWduCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSAhPSBDb250ZW50
RGlzdHJpYnV0aW9uRGVmYXVsdCkKLSAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOworICAgICAgICByZXN1bHQt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOwog
ICAgIGlmIChkYXRhLmRpc3RyaWJ1dGlvbigpID09IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0
IHx8IGRhdGEucG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwpIHsKICAgICAgICAg
Ym9vbCBncmlkRW5hYmxlZCA9IGZhbHNlOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgICAgIGdyaWRFbmFibGVkID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRhdGEu
cG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwgfHwgZ3JpZEVuYWJsZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRh
LnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKG5v
cm1hbEJlaGF2aW9yVmFsdWVJRCkpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKICAg
ICB9CiAgICAgaWYgKChkYXRhLnBvc2l0aW9uKCkgPj0gQ29udGVudFBvc2l0aW9uQ2VudGVyIHx8
IGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpICYmIGRh
dGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3Vs
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkp
OwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkubGVuZ3RoKCkgPiAwKTsKLSAgICBBU1NFUlQocmVz
dWx0LmdldCgpLmxlbmd0aCgpIDw9IDMpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+
bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8PSAzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk0LDEwICsyNDk3LDEwIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3BlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7
CiAgICAgYXV0byogc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSgqc3R5bGVk
RWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3RvbSwgb3du
ZWRTdHlsZSk7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQocHJvcGVydHlOYW1lKTsK
IH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VGV4dChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTI1NjAsODggKzI1NjMsNjkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
Q29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAg
ICAgICAgaWYgKCFsYXllcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllcnMtPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMtPmltYWdlKCktPmNzc1ZhbHVlKCk7Ci0K
KyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2UgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChsYXllcnMuaW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy5p
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KSB7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyckxheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3VyckxheWVyLT5pbWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy0+c2l6ZSgpLCAqc3R5bGUpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXll
cnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NTVmFsdWUobGF5
ZXJzLnNpemUoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3Vyckxh
eWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXll
ci0+c2l6ZSgpLCAqc3R5bGUpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxheWVy
cy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUobGF5ZXJzLnJlcGVhdFgoKSwgbGF5ZXJzLnJlcGVhdFkoKSk7CisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGN1cnJMYXllci0+cmVwZWF0WCgpLCBjdXJyTGF5ZXItPnJl
cGVhdFkoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU291cmNlVHlwZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBzdHlsZS0+bWFza0xheWVycygpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLT5tYXNrU291cmNl
VHlwZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+bWFza0xh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLm1hc2tTb3VyY2VUeXBlKCkp
OworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoY3VyckxheWVyLT5tYXNrU291cmNl
VHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUtPm1hc2tMYXll
cnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVy
cy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUobGF5ZXJzLT5jb21wb3NpdGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlm
ICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGxheWVycy5jb21wb3NpdGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5hdHRhY2htZW50KCkpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVudCgpKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKQEAgLTI2NDksNjUgKzI2MzMsNTkgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRPcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IEZpbGxMYXllciogbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBi
b29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwotICAgICAgICAgICAgaWYgKCFsYXllcnMt
Pm5leHQoKSkgewotICAgICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGxheWVy
cy0+Y2xpcCgpIDogbGF5ZXJzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBj
dXJyTGF5ZXItPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoYm94KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAo
KSA6IGxheWVycy5vcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShp
c0NsaXAgPyBjdXJyTGF5ZXItPmNsaXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0g
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVy
dHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3VyckxheWVyLCAqc3R5
bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+eFBvc2l0aW9uKCkpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy54UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICAgICAgY29uc3QgRmlsbExh
eWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+eVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAg
ICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRpb24oKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbGxhcHNl
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU2VwYXJhdGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygp
LCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZzoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpOwpAQCAtMjgyMiw3ICsyODAwLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwotICAgICAgICAg
ICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBh
dXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKICAgICAgICAgICAgIGlmIChjdXJzb3Jz
ICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKQEAgLTI4ODEsNTkgKzI4NTks
NTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTRm9u
dFZhbHVlPiBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZShzdHlsZSk7CisgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29tcHV0ZWRGb250LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0
eWxlKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250OwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5
bGUpOwotICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZhbWlseSwgcmV0
dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5PVEU6IEdl
Y2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgQ1NTUHJpbWl0aXZl
VmFsdWUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0LT5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+aXRlbSgwKTsKLSAg
ICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+ZmFtaWx5ID0gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21T
dHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CiAgICAgICAg
ICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM6CiAgICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNp
c0Zyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVT
ZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwog
ICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzOiB7CiAgICAgICAg
ICAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzID0gc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7CiAgICAgICAgICAgICBp
ZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiB2
YXJpYXRpb25TZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udFZh
cmlhdGlvblZhbHVlOjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9GbG93OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgQVNTRVJUKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJv
dygpIHx8IHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSkKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVJvdykpOwpAQCAtMjk0Myw3ICsyOTE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNw
ZWNzIG1lbnRpb24gdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNl
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI5Nzks
MTMgKzI5NTEsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZENvbHVtblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRSb3dTaG9ydGhhbmQo
KSk7Ci0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgogICAgICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5HYXAo
KSwgKnN0eWxlKTsKQEAgLTMxMjAsMTAgKzMwOTAsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueCgpLCAqc3R5bGUpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmpl
Y3RQb3NpdGlvbigpLnkoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CkBAIC0zMjI0LDMxICszMTk0LDMwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6CisgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogewogICAgICAgICAgICAgLy8g
SWYgQ1NTM19URVhUIGlzIGRpc2FibGVkIG9yIHRleHQtaW5kZW50IGhhcyBvbmx5IG9uZSB2YWx1
ZSg8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiksCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZS4KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dGV4dEluZGVudCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJ
bmRlbnQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgKnN0eWxlKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgLy8gSWYgQ1NTM19URVhUIGlzIGVuYWJs
ZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVhY2gtbGluZSBvciAtd2Via2l0LWhhbmdp
bmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1
ZUxpc3QuCiAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5n
aW5nKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQodGV4dEluZGVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodGV4dEluZGVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKHN0eWxlLT50ZXh0SW5kZW50TGluZSgpID09IFRleHRJbmRlbnRFYWNoTGluZSkKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVXZWJraXRFYWNoTGluZSkpOwogICAgICAgICAgICAgICAgIGlmIChzdHls
ZS0+dGV4dEluZGVudFR5cGUoKSA9PSBUZXh0SW5kZW50SGFuZ2luZykKICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVXZWJraXRIYW5naW5nKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgICAgICB9CiAjZW5kaWYK
LSAgICAgICAgICAgIHJldHVybiB0ZXh0SW5kZW50OworICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUodGV4dEluZGVudCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRT
aGFkb3c6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFk
b3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKQEAgLTMzMjEsOCArMzI5MCw3IEBAIFJlZlB0cjxD
U1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+d2lkdGgoKSwgKnN0eWxlKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2U6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0V2ls
bENoYW5nZVByb3BlcnR5VmFsdWUoc3R5bGUtPndpbGxDaGFuZ2UoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIHJldHVybiB3aWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShzdHlsZS0+
d2lsbENoYW5nZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPndvcmRCcmVhaygp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgpAQCAtMzM5NCw5ICszMzYy
LDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKLSAgICAgICAgICAgIHJldHVybiBnZXRE
ZWxheVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGRlbGF5
VmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmlt
YXRpb25EaXJlY3Rpb246IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAg
ICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5z
aXplKCk7ICsraSkgewpAQCAtMzQxNywxMiArMzM4NSwxMiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9ybWFsKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmlt
YXRpb25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXREdXJhdGlvblZhbHVlKHN0eWxl
LT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGR1cmF0aW9uVmFsdWUoc3R5bGUt
PmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9k
ZTogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1h
dGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7
CkBAIC0zNDQzLDEwICszNDExLDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25D
b3VudDogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFu
aW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQp
IHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytp
KSB7CkBAIC0zNDU4LDIwICszNDI2LDIwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxJdGVyYXRp
b25Db3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZTogewotICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHls
ZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHQtPmFuaW1hdGlvbihpKS5u
YW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZTogewotICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9u
cygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CkBAIC0zNDgzLDEzICszNDUxLDEzIEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBn
ZXRUaW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAjaWYgRU5B
QkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25UcmlnZ2VyOgotICAgICAgICAgICAgcmV0dXJuIGdldEFuaW1hdGlvblRyaWdn
ZXJWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJu
IGFuaW1hdGlvblRyaWdnZXJWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpLCAqc3R5bGUpOwogI2Vu
ZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+YXBwZWFyYW5jZSgpKTsK
QEAgLTM1MzEsOCArMzQ5OSw4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAg
ICAvLyBOb3QgYSByZWFsIHN0eWxlIHByb3BlcnR5IC0tIHVzZWQgYnkgdGhlIGVkaXRpbmcgZW5n
aW5lIC0tIHNvIGhhcyBubyBjb21wdXRlZCB2YWx1ZS4KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SW5pdGlhbExldHRlcjogewotICAgICAgICAgICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBkcm9wID0gIXN0eWxlLT5pbml0aWFsTGV0dGVyRHJvcCgp
ID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJEcm9wKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2l6ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgICAgICAgICAgYXV0byBkcm9wID0gIXN0eWxlLT5pbml0aWFsTGV0
dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
cm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmluaXRpYWxMZXR0ZXJEcm9w
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gc2l6
ZSA9ICFzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpj
cmVhdGUoV1RGTW92ZShkcm9wKSwgV1RGTW92ZShzaXplKSkpOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKQEAgLTM1NTIsNyAr
MzUyMCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZSgp
LCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW46IHsK
LSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpIHsK
ICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveDsKICAgICAgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyQm94PigqcmVuZGVyZXIpKQpAQCAtMzU2Niw3ICszNTM0LDcgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksICpzdHlsZSkpOwog
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRSdGxPcmRlcmluZzoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1YWwgOiBD
U1NWYWx1ZUxvZ2ljYWwpOwpAQCAtMzU4NSwxMyArMzU1MywxMyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJTZWxlY3Qo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAg
ICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJC
b3R0b21MZWZ0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgotICAgICAg
ICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1
c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCAqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAgICAgICAgICAg
IHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJh
ZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksICpzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBnZXRC
b3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgKnN0
eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUNsaXA6IHsKICAgICAgICAgICAgIGlmICghc3R5bGUtPmhhc0NsaXAoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwpAQCAtMzYwNyw3ICszNTc1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKICAgICAgICAgICAgIHJldHVybiBjb21wdXRl
ZFRyYW5zZm9ybShyZW5kZXJlciwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRy
YW5zZm9ybU9yaWdpbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAg
IGlmIChyZW5kZXJlcikgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYm94OwogICAgICAg
ICAgICAgICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpCkBAIC0zNjIzLDQyICszNTkx
LDQxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgaWYgKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSwgKnN0
eWxlKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlUcmFuc2Zvcm1TdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybVN0eWxlOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoKHN0eWxlLT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUzRFBy
ZXNlcnZlM0QpID8gQ1NTVmFsdWVQcmVzZXJ2ZTNkIDogQ1NTVmFsdWVGbGF0KTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKLSAgICAgICAgICAgIHJldHVybiBnZXRE
ZWxheVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWxh
eVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRy
YW5zaXRpb25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXREdXJhdGlvblZhbHVlKHN0
eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0
eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Q
cm9wZXJ0eToKLSAgICAgICAgICAgIHJldHVybiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvblByb3Bl
cnR5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldFRpbWluZ0Z1
bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIHRp
bWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VHJhbnNpdGlvbjogewotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCog
YW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKTsKLSAgICAgICAgICAgIGlmIChhbmltTGlz
dCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25zTGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpKSB7CisgICAgICAgICAgICAg
ICAgYXV0byB0cmFuc2l0aW9uc0xpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24gPSBhbmltTGlzdC0+YW5pbWF0aW9u
KGkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIGFuaW1hdGlvbiA9
IGFuaW1MaXN0LT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmltYXRpb24pKTsKICAgICAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltYXRpb24u
ZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGFuaW1hdGlvbi50aW1p
bmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltYXRpb24udGltaW5nRnVuY3Rpb24oKSkpOwog
ICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KGFuaW1hdGlvbi5kZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAg
ICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQobGlzdC5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQoV1RGTW92ZShs
aXN0KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2l0
aW9uc0xpc3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUodHJhbnNpdGlvbnNMaXN0
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAg
ICAgIC8vIHRyYW5zaXRpb24tcHJvcGVydHkgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQWxs
KSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFu
aW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwot
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5n
RnVuY3Rpb24oKSkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVu
dHM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5w
b2ludGVyRXZlbnRzKCkpOwpAQCAtMzY3OSwzMyArMzY0NiwyOSBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46CiAg
ICAgICAgICAgICByZXR1cm4gY3JlYXRlTGluZUJveENvbnRhaW5WYWx1ZShzdHlsZS0+bGluZUJv
eENvbnRhaW4oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWx0VGV4dFRvQ1NTVmFsdWUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGFsdFRl
eHRUb0NTU1ZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50Ogot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRUb0NTU1ZhbHVlKHN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBjb250ZW50VG9DU1NWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Q291bnRlckluY3JlbWVudDoKLSAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1
ZShzdHlsZSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFs
dWUoKnN0eWxlLCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJS
ZXNldDoKLSAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1ZShzdHlsZSwgcHJvcGVy
dHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoKnN0eWxlLCBwcm9w
ZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOiB7Ci0gICAg
ICAgICAgICBDbGlwUGF0aE9wZXJhdGlvbiogb3BlcmF0aW9uID0gc3R5bGUtPmNsaXBQYXRoKCk7
CisgICAgICAgICAgICBhdXRvKiBvcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBhdGgoKTsKICAgICAg
ICAgICAgIGlmICghb3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICBpZiAo
aXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgcmVmZXJlbmNlT3BlcmF0aW9uID0gZG93bmNhc3Q8UmVmZXJlbmNl
Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19VUkkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICAgICAgICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJh
dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
ZG93bmNhc3Q8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnVybCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAoaXM8U2hh
cGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgICAgICBjb25z
dCBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+
KCpvcGVyYXRpb24pOworICAgICAgICAgICAgICAgIGF1dG8mIHNoYXBlT3BlcmF0aW9uID0gZG93
bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNTaGFwZSgqc3R5bGUsIHNoYXBlT3BlcmF0aW9u
LmJhc2ljU2hhcGUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzaGFwZU9wZXJhdGlvbi5yZWZl
cmVuY2VCb3goKSAhPSBCb3hNaXNzaW5nKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5jZUJveCgp
KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRp
b24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYm94T3BlcmF0
aW9uID0gZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwotICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94T3BlcmF0
aW9uLnJlZmVyZW5jZUJveCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIGlmIChpczxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlv
bikpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikucmVmZXJlbmNlQm94
KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAjaWYg
RU5BQkxFKENTU19SRUdJT05TKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0lu
dG86CkBAIC0zNzM4LDIwICszNzAxLDE4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pc29sYXRpb24o
KSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6
IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91
bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMtPmJsZW5kTW9kZSgp
KTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExh
eWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+YmFja2dyb3VuZExh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLmJsZW5kTW9kZSgpKTsKKyAg
ICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVy
OyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YmxlbmRNb2RlKCkpKTsK
LQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShs
aXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKICAg
ICAgICAgICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSA9IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIERvTm90VXBkYXRlTGF5
b3V0KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91dCk7CiAgICAgICAgICAgICBjb25zdCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFj
b21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHZhbHVlLCBwcm9wZXJ0eVZhbHVlKHByb3BlcnR5
LCBEb05vdFVwZGF0ZUxheW91dCkpKQpAQCAtMzc2OCw3ICszNzI5LDcgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2Uoc3R5bGUtPmJvcmRlckltYWdlKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgICAgICAgICAgcmV0
dXJuIGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKCpzdHlsZSk7CisgICAgICAgICAgICBy
ZXR1cm4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3JkZXJSaWdodFNob3J0aGFuZCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgpAQCAtMzk5OCw3ICszOTU5LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKIAogU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dHlJRCk7CisgICAgYXV0byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIEZJWE1F
OiBTaG91bGQgdGhpcyBiZSBudWxsIGluc3RlYWQsIGFzIGl0IGlzIGluIFN0eWxlUHJvcGVydGll
czo6Z2V0UHJvcGVydHlWYWx1ZT8KICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKQEAgLTQw
NjMsMjIgKzQwMjQsMjEgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzKCkKIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9w
ZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgICAgICBsaXN0
LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotICAgIHJldHVybiBsaXN0
OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKQorICAg
ICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ld
LCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCiAgICAgLy8gQXNzdW1l
IHRoZSBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgdXN1YWwgb3JkZXIgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0LgotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbMV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZh
bHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzJdLCBEb05vdFVwZGF0
ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBwcm9wZXJ0eVZhbHVl
KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRv
IHRvcFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBEb05v
dFVwZGF0ZUxheW91dCk7CisgICAgYXV0byByaWdodFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9y
dGhhbmQucHJvcGVydGllcygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0byBib3R0
b21WYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSwgRG9Ob3RV
cGRhdGVMYXlvdXQpOworICAgIGF1dG8gbGVmdFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhh
bmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CiAKICAgICAvLyBBbGwgNCBw
cm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0
VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCkBAIC00MDk2LDE3ICs0MDU2LDE1
IEBAIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhCiAgICAgaWYgKHNob3dMZWZ0KQogICAgICAgICBs
aXN0LT5hcHBlbmQobGVmdFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgcmV0dXJuIGxp
c3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0
aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0
ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytp
KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICAgICAgbGlzdC0+
YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4gbGlzdDsK
KyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwg
RG9Ob3RVcGRhdGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQxMTQsOCArNDA3Miw3IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0
IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7
Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZh
bHVlKHNldFtpXSkpCiAgICAgICAgICAgICBsaXN0LmFwcGVuZChDU1NQcm9wZXJ0eShzZXRbaV0s
IFdURk1vdmUodmFsdWUpLCBmYWxzZSkpOwogICAgIH0KICAgICByZXR1cm4gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKGxpc3QuZGF0YSgpLCBsaXN0LnNpemUoKSk7CkBAIC00MTM4LDcg
KzQwOTUsNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjbwogICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5
SUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIGF1dG8gdmFsdWUgPSBnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiB2YWx1ZS0+Y3JlYXRlRGVwcmVjYXRlZENTU09NV3Jh
cHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3Bw
CmluZGV4IGM4YjYxNTUwYjZiYTdlNjJjM2I3MzNkNDVhYTA4NTQxYTA4NTUwOGEuLjNjN2MyOTk1
NjBhODFmMTdhZDY4N2E1YzNjOGIyOTYzOTM0NzlmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Q2FjaGVkR2VuZXJhdGVkSW1hZ2UgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhY2hlZEdlbmVyYXRlZEltYWdlKENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUmLCBGbG9hdFNpemUsIEdlbmVyYXRlZEltYWdlJik7Ci0gICAgR2Vu
ZXJhdGVkSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmF0ZWRJ
bWFnZSY+KG1faW1hZ2UuZ2V0KCkpOyB9CisgICAgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIHZvaWQgcHVudEV2aWN0aW9uVGltZXIoKSB7IG1f
ZXZpY3Rpb25UaW1lci5yZXN0YXJ0KCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAwNjQyYjg3OGNlOTM1MjNjZmUwYWNkOTYxZTkxNzU0
YWViZTBlYTBhLi4wOWU3YWQzMTA2NTFkMWEwODdmMmRiN2QzZjg0NGI3MzE4MzMyNTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMTEsMTIgKzIxMSwxMCBA
QCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0CiB7IAogICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KICAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBt
X2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpLnNpemUoKSk7Ci0gICAgUmVmUHRyPENTU0tleWZy
YW1lUnVsZT4mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOworICAgIGF1
dG8mIHJ1bGUgPSBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdOwogICAgIGlmICghcnVs
ZSkKLSAgICAgICAgcnVsZSA9IGFkb3B0UmVmKG5ldyBDU1NLZXlmcmFtZVJ1bGUoY29uc3RfY2Fz
dDxTdHlsZVJ1bGVLZXlmcmFtZSY+KG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKClbaW5kZXhd
LmdldCgpKSwgY29uc3RfY2FzdDxDU1NLZXlmcmFtZXNSdWxlKj4odGhpcykpKTsKLQorICAgICAg
ICBydWxlID0gYWRvcHRSZWYoKm5ldyBDU1NLZXlmcmFtZVJ1bGUobV9rZXlmcmFtZXNSdWxlLT5r
ZXlmcmFtZXMoKVtpbmRleF0sIGNvbnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRoaXMpKSk7
CiAgICAgcmV0dXJuIHJ1bGUuZ2V0KCk7IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAppbmRleCAyMGM1NmU2NmJlNGY1M2I3YWU2ZGE3ZTIzNjU5OTQ4OWZlZTZh
MmNmLi40ODJmZDNkYTgyY2EyYzYwMzMxMjNhNjY0ZWQxMWI0OTI4MzNkMzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lk
IENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdAogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfUEFJ
UjsKICAgICBtX2hhc0NhY2hlZENTU1RleHQgPSBmYWxzZTsKLSAgICBtX3ZhbHVlLnBhaXIgPSAm
UGFpcjo6Y3JlYXRlKGNyZWF0ZShsZW5ndGhTaXplLndpZHRoKCksIHN0eWxlKSwgY3JlYXRlKGxl
bmd0aFNpemUuaGVpZ2h0KCksIHN0eWxlKSkubGVha1JlZigpOworICAgIG1fdmFsdWUucGFpciA9
ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgsIHN0eWxlKSwgY3JlYXRlKGxl
bmd0aFNpemUuaGVpZ2h0LCBzdHlsZSkpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6aW5pdChSZWY8Q291bnRlcj4mJiBjb3VudGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
UnVsZS5oCmluZGV4IDgxMGI5YTQ1NGQ2NTc2ZThhZTc4ZTRmNWViY2ZmMGIwMTJiNzNmMjAuLjcx
ZjM1NTA1NTZjNjg1ZjhmNWYwNTE1ZGEwMDMyYTg5OTE2N2E3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVSdWxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IENTU1N0eWxlRGVjbGFyYXRpb24mIHN0eWxlKCk7CiAKICAgICAvLyBGSVhNRTogTm90IENTU09N
LiBSZW1vdmUuCi0gICAgU3R5bGVSdWxlJiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PFN0eWxlUnVsZSY+KG1fc3R5bGVSdWxlLmdldCgpKTsgfQorICAgIFN0eWxlUnVsZSYg
c3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUuZ2V0KCk7IH0KIAogcHJpdmF0
ZToKICAgICBDU1NTdHlsZVJ1bGUoU3R5bGVSdWxlJiwgQ1NTU3R5bGVTaGVldCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDJhMjdkZGIwMDk0ZTQ4NmQwZTA0NDU2ZmI1
MzVlYWQyZTU2ODM4ZDYuLjg1YzQ0YTJmM2E5YjQ5ZmQxMTZmYWVlMWMzOTYyYTdhZDNmZGUyYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTE4OCwxMiArMTg4LDExIEBA
IHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjCiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFRvTGVu
Z3RoU2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0aFNpemUmIHNpemUpCiB7CiAg
ICAgaWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkgewotICAgICAg
ICBzaXplLnNldFdpZHRoKHBhaXItPmZpcnN0KCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJz
aW9uPihjb252ZXJzaW9uRGF0YSkpOwotICAgICAgICBzaXplLnNldEhlaWdodChwYWlyLT5zZWNv
bmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7Cisg
ICAgICAgIHNpemUud2lkdGggPSBwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29u
dmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBzaXplLmhlaWdodCA9IHBhaXItPnNl
Y29uZCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwog
ICAgIH0gZWxzZQotICAgICAgICBzaXplLnNldFdpZHRoKHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRU
b0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwotCi0gICAgcmV0dXJuICFz
aXplLndpZHRoKCkuaXNVbmRlZmluZWQoKSAmJiAhc2l6ZS5oZWlnaHQoKS5pc1VuZGVmaW5lZCgp
OworICAgICAgICBzaXplLndpZHRoID0gcHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVuZ3RoPEFu
eUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICByZXR1cm4gIXNpemUud2lkdGguaXNV
bmRlZmluZWQoKSAmJiAhc2l6ZS5oZWlnaHQuaXNVbmRlZmluZWQoKTsKIH0KIAogdm9pZCBDU1NU
b1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmlu
ZGV4IGM5ZmI3MzM1OTg1YjhiYzdiZTY4NjdiOGY3MWNmMjEzMTYyNTZhM2EuLmMyODlmNzg0MGFh
NjhjOTgxN2ViZjQxZDU1Mjc2NmZhMjE3NjE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApA
QCAtMjU4LDEzICsyNTgsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldEZlYXR1
cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykKIAogU3RyaW5nIEZvbnRG
YWNlOjpmYW1pbHkoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2Jh
Y2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbV9iYWNraW5nLT5mYW1pbGllcygpLT5jc3NU
ZXh0KCk7CiB9CiAKIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogewotICAgIGNvbnN0
X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBzd2l0Y2ggKG1f
YmFja2luZy0+dHJhaXRzTWFzaygpICYgRm9udFN0eWxlTWFzaykgewogICAgIGNhc2UgRm9udFN0
eWxlTm9ybWFsTWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygibm9ybWFsIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgU3RyaW5nIEZvbnRGYWNl
OjpzdHlsZSgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6d2VpZ2h0KCkgY29uc3QKIHsKLSAg
ICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dp
dGNoIChtX2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRXZWlnaHRNYXNrKSB7CiAgICAgY2Fz
ZSBGb250V2VpZ2h0MTAwTWFzazoKICAgICAgICAgcmV0dXJuIFN0cmluZygiMTAwIiwgU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC0zMDksNyArMzA5LDcgQEAgU3RyaW5nIEZvbnRG
YWNlOjpzdHJldGNoKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBj
b25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKICAgICBpZiAoIW1fYmFja2luZy0+cmFuZ2VzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJVKzAtMTBGRkZGIik7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFs
dWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpAQCAtMzIwLDEzICsz
MjAsMTMgQEAgU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBjb25zdAogCiBTdHJpbmcg
Rm9udEZhY2U6OnZhcmlhbnQoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2Um
PihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmct
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICByZXR1cm4gY29tcHV0ZUZvbnRWYXJpYW50KG1f
YmFja2luZy0+dmFyaWFudFNldHRpbmdzKCkpLT5jc3NUZXh0KCk7CiB9CiAKIFN0cmluZyBGb250
RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRG
YWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNr
aW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVT
ZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9ybWFsIik7
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXgg
YjIxZGQ1ZDU2MzczOWZmYmRkMWQ4OWQ4MWU1ZTQ0MzBhYWU2ZTE1My4uNjhmZmZkZWI5ZTQyYzcx
NjIzZDg3YTU3NWNhMGRjNWM3MGFhZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0
aW9ucy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIK
IAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNs
dWRlICJMZW5ndGhTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYgKzU5LDEx
IEBAIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlKQogICAgIHJldHVybiAwOwogfQogCitMYXlvdXRTaXplIHNpemVG
b3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYg
bWF4aW11bVZhbHVlKQoreworICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aC53aWR0
aCwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGguaGVpZ2h0LCBt
YXhpbXVtVmFsdWUuaGVpZ2h0KCkpIH07Cit9CisKIC8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxh
eW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4g
YmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKQogewpAQCAtMTEzLDcg
KzExOSw3IEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IGZsb2F0IG1heGltdW1WYWx1ZSkKIAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUo
Y29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQog
ewotICAgIHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLndp
ZHRoKCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS5o
ZWlnaHQoKSwgYm94U2l6ZS5oZWlnaHQoKSkpOworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JM
ZW5ndGgobGVuZ3RoU2l6ZS53aWR0aCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxl
bmd0aChsZW5ndGhTaXplLmhlaWdodCwgYm94U2l6ZS5oZWlnaHQoKSkgfTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCmluZGV4IDlk
MjI0ZDkxMTI3ZTVmODNhYWIxMDQ4OTJkZTY4MDQ2NDExOGRkNmEuLjFjNGUwNTBkYTYwNGE0M2E1
NjgzYWFmZDJlZWQ0MzZhNDUzMTM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25z
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAxMSBSaWsgQ2Fi
YW5pZXIgKGNhYmFuaWVyQGFkb2JlLmNvbSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJpZ2h0
IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC0yOSw4ICsyOSw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0U2l6ZTsK
LWNsYXNzIExheW91dFVuaXQ7CitjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgUmVuZGVyVmlldzsK
Kwogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBMZW5ndGhTaXplOwogCkBAIC0zOCw2ICszOSw3IEBA
IGludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBt
YXhpbXVtVmFsdWUpOwogaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlKTsKIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIFdFQkNPUkVfRVhQT1JUIExh
eW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVt
VmFsdWUpOworTGF5b3V0U2l6ZSBzaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiwg
Y29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKTsKIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogV0VCQ09SRV9FWFBP
UlQgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBmbG9hdCBtYXhpbXVt
VmFsdWUpOwogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA1MzgzNDI3ZDkyYWJmZjE5N2U3
ZmFkZDY4NzQ3NzdkN2E4NTQ5ZDVjLi5kNzY5YTVhNTg2YzgxMTI3MTg3ZTc1NDQzMmM5ZjJjNWY4
Yzc3MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtMzEsMzQgKzMyLDM0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gcGFpbnRPcmRlcihQ
YWludE9yZGVyIHBhaW50T3JkZXIpCiB7Ci0gICAgUmVmPENTU1ZhbHVlTGlzdD4gcGFpbnRPcmRl
ckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgUmVmPENT
U1ZhbHVlPiBmaWxsID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVGaWxsKTsKLSAgICBSZWY8Q1NTVmFsdWU+IHN0cm9rZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKTsKLSAgICBSZWY8Q1NTVmFsdWU+IG1hcmtl
cnMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMp
OworICAgIGlmIChwYWludE9yZGVyID09IFBhaW50T3JkZXJOb3JtYWwpCisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCk7CiAK
KyAgICBhdXRvIHBhaW50T3JkZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwogICAgIHN3aXRjaCAocGFpbnRPcmRlcikgewogICAgIGNhc2UgUGFpbnRPcmRlck5v
cm1hbDoKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlckZpbGw6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0
LT5hcHBlbmQoV1RGTW92ZShmaWxsKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVGaWxsKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlckZpbGxNYXJrZXJzOgotICAgICAgICBwYWlu
dE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUoZmlsbCkpOwotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRmlsbCkpOwor
ICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBh
aW50T3JkZXJTdHJva2U6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShz
dHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBhaW50T3JkZXJTdHJva2VNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+
YXBwZW5kKFdURk1vdmUoc3Ryb2tlKSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQo
V1RGTW92ZShtYXJrZXJzKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKKyAgICAgICAg
cGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9yZGVy
TWFya2VyczoKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMp
KTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQYWludE9yZGVyTWFya2Vyc1N0cm9rZToKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVu
ZChXVEZNb3ZlKG1hcmtlcnMpKTsKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZN
b3ZlKHN0cm9rZSkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOworICAgICAgICBwYWlu
dE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlU3Ryb2tlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gV1RGTW92
ZShwYWludE9yZGVyTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKaW5kZXggZTRjNzk0M2Y4MDgyNTVlMjkxNmE2NzFlNGY1OTUzYzdkYWZkMjE3MS4uZDQ5
NTBhMDY5YzlhM2ZmMzBlYTYxZjVkMThiNGExZmM5YWMxYmM2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjk0LDIxICsyOTQsMTkgQEAgaW5saW5l
IExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NU
b0xlbmd0aENvbnZlcnNpb24KIAogaW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVl
LnBhaXJWYWx1ZSgpOworICAgIGF1dG8qIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8
fCAhcGFpci0+c2Vjb25kKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBG
aXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOworICAgICAgICByZXR1cm4geyB7IDAsIEZpeGVkIH0s
IHsgMCwgRml4ZWQgfSB9OwogCiAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJz
aW9uRGF0YSA9IHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCk7Ci0gICAgTGVuZ3RoIHJhZGl1c1dpZHRoID0gY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZl
cnNpb25EYXRhLCAqcGFpci0+Zmlyc3QoKSk7Ci0gICAgTGVuZ3RoIHJhZGl1c0hlaWdodCA9IGNv
bnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKnBhaXItPnNlY29uZCgpKTsKKyAg
ICBMZW5ndGhTaXplIHJhZGl1cyB7IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0
YSwgKnBhaXItPmZpcnN0KCkpLCBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEs
ICpwYWlyLT5zZWNvbmQoKSkgfTsKIAotICAgIEFTU0VSVCghcmFkaXVzV2lkdGguaXNOZWdhdGl2
ZSgpKTsKLSAgICBBU1NFUlQoIXJhZGl1c0hlaWdodC5pc05lZ2F0aXZlKCkpOwotICAgIGlmIChy
YWRpdXNXaWR0aC5pc1plcm8oKSB8fCByYWRpdXNIZWlnaHQuaXNaZXJvKCkpCi0gICAgICAgIHJl
dHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOworICAg
IEFTU0VSVCghcmFkaXVzLndpZHRoLmlzTmVnYXRpdmUoKSk7CisgICAgQVNTRVJUKCFyYWRpdXMu
aGVpZ2h0LmlzTmVnYXRpdmUoKSk7CisgICAgaWYgKHJhZGl1cy53aWR0aC5pc1plcm8oKSB8fCBy
YWRpdXMuaGVpZ2h0LmlzWmVybygpKQorICAgICAgICByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsg
MCwgRml4ZWQgfSB9OwogCi0gICAgcmV0dXJuIExlbmd0aFNpemUocmFkaXVzV2lkdGgsIHJhZGl1
c0hlaWdodCk7CisgICAgcmV0dXJuIHJhZGl1czsKIH0KIAogaW5saW5lIExlbmd0aCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCkKQEAgLTc2Niw3ICs3NjQsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlcgog
ICAgIH0KIAogICAgIGlmIChpc0ltYWdlU2hhcGUodmFsdWUpKQotICAgICAgICByZXR1cm4gU2hh
cGVWYWx1ZTo6Y3JlYXRlKHN0eWxlUmVzb2x2ZXIuc3R5bGVJbWFnZSh2YWx1ZSkpOworICAgICAg
ICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHN0eWxlUmVzb2x2ZXIuc3R5bGVJbWFnZSh2YWx1
ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gc2hhcGU7CiAg
ICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBCb3hNaXNzaW5nOwpAQCAtNzg2LDcgKzc4NCw3
IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQotICAg
ICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VC
b3gpOworICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHNoYXBlLnJlbGVhc2VOb25O
dWxsKCksIHJlZmVyZW5jZUJveCk7CiAKICAgICBpZiAocmVmZXJlbmNlQm94ICE9IEJveE1pc3Np
bmcpCiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUocmVmZXJlbmNlQm94KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAwZmZkOWQ0OWJhYTY5Mzcz
NGM2MWQ1YTU5N2ZmYTQwNTc1ZjcyMjdlLi5mYmZiZDgyMmZhZmRkZDZiYzA2ZTNlNmRkY2EyYWYw
ZGIyOWZiNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiAr
NTgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bCMjcHJvcGVydHkoU3R5bGVSZXNvbHZlciYpOyBcCiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZSMjcHJvcGVydHkoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJikKIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFQgZm9yd2FyZEluaGVyaXRlZFZhbHVlKFQmJiB2YWx1ZSkgeyByZXR1cm4g
c3RkOjpmb3J3YXJkPFQ+KHZhbHVlKTsgfQoraW5saW5lIExlbmd0aCBmb3J3YXJkSW5oZXJpdGVk
VmFsdWUoY29uc3QgTGVuZ3RoJiB2YWx1ZSkgeyBhdXRvIGNvcHkgPSB2YWx1ZTsgcmV0dXJuIGNv
cHk7IH0KK2lubGluZSBMZW5ndGhTaXplIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5n
dGhTaXplJiB2YWx1ZSkgeyBhdXRvIGNvcHkgPSB2YWx1ZTsgcmV0dXJuIGNvcHk7IH0KK2lubGlu
ZSBMZW5ndGhCb3ggZm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aEJveCYgdmFsdWUp
IHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBjb3B5OyB9CisKIC8vIE5vdGUgdGhhdCB3ZSBh
c3N1bWUgdGhlIENTUyBwYXJzZXIgb25seSBhbGxvd3MgdmFsaWQgQ1NTVmFsdWUgdHlwZXMuCiBj
bGFzcyBTdHlsZUJ1aWxkZXJDdXN0b20gewogcHVibGljOgpAQCAtMzAxLDYgKzMwNiw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvCiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CisKIHN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEpCiB7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlID8gcHJpbWl0aXZlVmFs
dWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZl
cnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpIDogTGVuZ3RoKFVu
ZGVmaW5lZCk7CkBAIC0zMTgsNyArMzI0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVzb2x2ZXImIHMKICAg
ICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGFzaGJvYXJkUmVnaW9uKiBm
aXJzdCA9IHJlZ2lvbjsKKyAgICBhdXRvKiBmaXJzdCA9IHJlZ2lvbjsKICAgICB3aGlsZSAocmVn
aW9uKSB7CiAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT50
b3AoKSwgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5j
b3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7CiAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZl
cnRUb0ludExlbmd0aChyZWdpb24tPnJpZ2h0KCksIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NU
b0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwpAQCAt
MzM1LDE3ICszNDEsMjAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlV2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVzb2x2ZXImIHMKICAgICAgICAgICAgIGxl
ZnQgPSBMZW5ndGgoKTsKIAogICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNo
Ym9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lv
bjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCks
IFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0KSwgcmVnaW9uICE9IGZpcnN0KTsKICAgICAg
ICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJl
Y3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lv
biA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xl
LCByZWdpb24tPm1fbGFiZWwsIFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUo
Ym90dG9tKSwgV1RGTW92ZShsZWZ0KSwgcmVnaW9uICE9IGZpcnN0KTsKKwogICAgICAgICByZWdp
b24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKICAgICB9CiAKICAgICBzdHlsZVJlc29sdmVyLmRv
Y3VtZW50KCkuc2V0SGFzQW5ub3RhdGVkUmVnaW9ucyh0cnVlKTsKIH0KKwogI2VuZGlmIC8vIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKKwogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRJbWFnZVJl
c29sdXRpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEltYWdlUmVzb2x1dGlvblNvdXJjZShzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpKTsKQEAgLTM3OCwxOCArMzg3LDIzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlv
bihTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJ
bWFnZVJlc29sdXRpb25TbmFwKHNuYXApOwogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
SW1hZ2VSZXNvbHV0aW9uKHJlc29sdXRpb24pOwogfQorCiAjZW5kaWYgLy8gRU5BQkxFKENTU19J
TUFHRV9SRVNPTFVUSU9OKQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdFNpemUoU3R5bGVSZXNvbHZlciYpIHsgfQorCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbFNpemUoU3R5bGVSZXNvbHZlciYpIHsgfQorCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnJlc2V0UGFnZVNpemVUeXBlKCk7CisKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFs
dWUpKQorICAgICAgICByZXR1cm47CisKICAgICBMZW5ndGggd2lkdGg7CiAgICAgTGVuZ3RoIGhl
aWdodDsKICAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87Ci0g
ICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CiAgICAgc3dp
dGNoICh2YWx1ZUxpc3QubGVuZ3RoKCkpIHsKQEAgLTQ1MywxMiArNDY3LDEyIEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBlKTsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOworICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemUoeyBXVEZNb3ZlKHdpZHRoKSwgV1RG
TW92ZShoZWlnaHQpIH0pOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdFRleHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQoc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT50ZXh0SW5kZW50KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dEluZGVudChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJbmRl
bnQoKSB9KTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0VGV4dEluZGVudExpbmUoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5k
ZW50TGluZSgpKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRUeXBl
KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dEluZGVudFR5cGUoKSk7CkBAIC00OTYs
NyArNTEwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4
dEluZGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmUKICAgICBpZiAobGVuZ3RoT3JQZXJj
ZW50YWdlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KGxlbmd0aE9yUGVyY2VudGFnZVZhbHVlKTsK
KyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQoV1RGTW92ZShsZW5ndGhP
clBlcmNlbnRhZ2VWYWx1ZSkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50TGluZSh0ZXh0SW5kZW50TGluZVZhbHVlKTsKICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRUeXBlKHRleHRJbmRlbnRUeXBl
VmFsdWUpOwpAQCAtNjExLDggKzYyNSw4IEBAIERFRklORV9CT1JERVJfSU1BR0VfTU9ESUZJRVJf
SEFORExFUihXZWJraXRNYXNrQm94SW1hZ2UsIFdpZHRoKQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExpbmVIZWlnaHQoc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5saW5lSGVpZ2h0KCkpOwotICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+bGlu
ZUhlaWdodCgpIH0pOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGlu
ZUhlaWdodChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnNwZWNpZmllZExp
bmVIZWlnaHQoKSB9KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCkBAIC02Mjgs
OCArNjQyLDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGlu
ZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmUKICAgICBpZiAoIWxpbmVIZWlnaHQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TGluZUhl
aWdodChsaW5lSGVpZ2h0LnZhbHVlKCkpOwotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
U3BlY2lmaWVkTGluZUhlaWdodChsaW5lSGVpZ2h0LnZhbHVlKCkpOworICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0TGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVpZ2h0LnZhbHVlKCkgfSk7
CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KFdURk1v
dmUobGluZUhlaWdodC52YWx1ZSgpKSk7CiB9CiAKICNlbmRpZgpAQCAtNjY1LDIxICs2NzksMjEg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDbGlwKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAgYXV0byogcGFyZW50U3R5bGUgPSBzdHlsZVJl
c29sdmVyLnBhcmVudFN0eWxlKCk7CiAgICAgaWYgKCFwYXJlbnRTdHlsZS0+aGFzQ2xpcCgpKQog
ICAgICAgICByZXR1cm4gYXBwbHlJbml0aWFsQ2xpcChzdHlsZVJlc29sdmVyKTsKLSAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAocGFyZW50U3R5bGUtPmNsaXBUb3AoKSwgcGFyZW50
U3R5bGUtPmNsaXBSaWdodCgpLCBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpLCBwYXJlbnRTdHls
ZS0+Y2xpcExlZnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKExlbmd0
aCB7IHBhcmVudFN0eWxlLT5jbGlwVG9wKCkgfSwgTGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBS
aWdodCgpIH0sCisgICAgICAgIExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlwQm90dG9tKCkgfSwg
TGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCkgfSk7CiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDbGlwKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0KLSAgICBpZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZh
bHVlLnJlY3RWYWx1ZSgpKSB7CisgICAgaWYgKGF1dG8qIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5y
ZWN0VmFsdWUoKSkgewogICAgICAgICBhdXRvIGNvbnZlcnNpb25EYXRhID0gc3R5bGVSZXNvbHZl
ci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKLSAgICAgICAgTGVuZ3RoIHRv
cCA9IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8
IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAg
ICAgICAgTGVuZ3RoIHJpZ2h0ID0gcmVjdC0+cmlnaHQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVk
SW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihj
b252ZXJzaW9uRGF0YSk7Ci0gICAgICAgIExlbmd0aCBib3R0b20gPSByZWN0LT5ib3R0b20oKS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lv
biB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0gICAgICAgIExlbmd0aCBsZWZ0
ID0gcmVjdC0+bGVmdCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8
IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCk7CisgICAgICAgIGF1dG8gdG9wID0gcmVjdC0+dG9wKCktPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lv
bj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBhdXRvIHJpZ2h0ID0gcmVjdC0+cmlnaHQoKS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lv
biB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGF1dG8gYm90dG9t
ID0gcmVjdC0+Ym90dG9tKCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9u
IHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwor
ICAgICAgICBhdXRvIGxlZnQgPSByZWN0LT5sZWZ0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZElu
dGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAoV1RG
TW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQp
KTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdXRvKTsKQEAgLTczNSwxMiArNzQ5LDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
CiAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldEZvbnREaXJ0eSh0cnVlKTsKIH0KIAotdGVt
cGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Cit0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
PgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1Zh
bHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KTsKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKKyAgICAgICAgaWYg
KHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhudWxscHRyKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBA
IC03NjEsOCArNzc1LDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRl
eHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNv
bG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUu
Y29sb3IpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+Y29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHls
ZSwgaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNv
bG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5
VGV4dFNoYWRvdykKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxT
aGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNv
bG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1By
b3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRv
IHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhXVEZNb3ZlKHNo
YWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMg
bm90IHRoZSBmaXJzdCBlbnRyeQpAQCAtMTE1NiwyMiArMTE3MCwyMiBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQwogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bEZpbGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBTVkdSZW5kZXJTdHls
ZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Cisg
ICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxl
KCk7CiAgICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmls
bFBhaW50VHlwZSgpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNW
R1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZH
UmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdT
dHlsZSgpOwotICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdQ
YXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAg
ICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQoc3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50VHlwZSgpLCBz
dmdQYXJlbnRTdHlsZS5maWxsUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS5maWxsUGFpbnRV
cmkoKSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVS
ZXNvbHZlci5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogCiB9CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBz
dmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBj
b25zdCBDU1NQcmltaXRpdmVWYWx1ZSogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFs
dWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKKyAg
ICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUo
KTsKKyAgICBjb25zdCBhdXRvKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgp
ID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOwogICAgIFN0
cmluZyB1cmw7CiAgICAgaWYgKHZhbHVlLmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgY29uc3Qg
Q1NTVmFsdWVMaXN0JiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0x
MTgzLDEwICsxMTk3LDEwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUZpbGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBDb2xvciBjb2xvcjsKLSAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlID0g
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjsKKyAgICBhdXRvIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZ
UEVfUkdCQ09MT1I7CiAgICAgaWYgKGxvY2FsVmFsdWUtPmlzVVJJKCkpIHsKICAgICAgICAgcGFp
bnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9VUkk7Ci0gICAgICAgIHVybCA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPihsb2NhbFZhbHVlKS0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgdXJsID0g
bG9jYWxWYWx1ZS0+c3RyaW5nVmFsdWUoKTsKICAgICB9IGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlz
VmFsdWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX05PTkUgOiBTVkdf
UEFJTlRUWVBFX1VSSV9OT05FOwogICAgIGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlzVmFsdWVJRCgp
ICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikgewpAQCAt
MTIwNywxNSArMTIyMSwxNSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbFN0cm9rZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogCiBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFN0cm9rZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBjb25zdCBTVkdSZW5kZXJTdHls
ZSYgc3ZnUGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxl
KCk7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NW
R1N0eWxlKCk7CisgICAgYXV0byYgc3ZnUGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0U3Ryb2tlUGFpbnQoc3ZnUGFy
ZW50U3R5bGUuc3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50Q29s
b3IoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwgc3R5bGVSZXNvbHZlci5hcHBs
eVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCkpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUm
IHZhbHVlKQogewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKLSAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSog
bG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKKyAgICBjb25zdCBhdXRvKiBsb2Nh
bFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOwogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKHZhbHVl
LmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgY29uc3QgQ1NTVmFsdWVMaXN0JiBsaXN0ID0gZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0xMjI3LDcgKzEyNDEsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQ29sb3IgY29sb3I7
Ci0gICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7Cisg
ICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOwogICAgIGlmIChsb2Nh
bFZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfVVJJ
OwogICAgICAgICB1cmwgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obG9jYWxWYWx1ZSkt
PnN0cmluZ1ZhbHVlKCk7CkBAIC0xMjU4LDcgKzEyNzIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdFN2Z1NoYWRvdyhTdHlsZVJlc29sdmVyJiBz
dHlsZQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRT
dmdTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQog
ewotICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
YWNjZXNzU1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgc3ZnU3R5bGUuc2V0U2hhZG93
KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDAwNDY5ZWU3
ZmEwOTE2NjhmNjM4NjZhZWNiNDU0YjAzMzQxMjg1NzUuLjM0OTdiMmE3MDdkNGU1NDI2OTM2YjJk
MWY4NmY1MmVlYzM5YThjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTE2OCw3ICsxNjgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2FjaGVC
b3JkZXJBbmRCYWNrZ3JvdW5kKCkKICAgICBtX2hhc1VBQXBwZWFyYW5jZSA9IG1fc3R5bGUtPmhh
c0FwcGVhcmFuY2UoKTsKICAgICBpZiAobV9oYXNVQUFwcGVhcmFuY2UpIHsKICAgICAgICAgbV9i
b3JkZXJEYXRhID0gbV9zdHlsZS0+Ym9yZGVyKCk7Ci0gICAgICAgIG1fYmFja2dyb3VuZERhdGEg
PSAqbV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICBtX2JhY2tncm91bmREYXRh
ID0gbV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpOwogICAgICAgICBtX2JhY2tncm91bmRDb2xv
ciA9IG1fc3R5bGUtPmJhY2tncm91bmRDb2xvcigpOwogICAgIH0KIH0KQEAgLTEzMjgsNyArMTMy
OCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBN
YXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgICAgIC8vIFdlIGNhbiBidWlsZCB1
cCB0aGUgc3R5bGUgYnkgY29weWluZyBub24taW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBhbiBl
YXJsaWVyIHN0eWxlIG9iamVjdCBidWlsdCB1c2luZyB0aGUgc2FtZSBleGFjdAogICAgICAgICAv
LyBzdHlsZSBkZWNsYXJhdGlvbnMuIFdlIHRoZW4gb25seSBuZWVkIHRvIGFwcGx5IHRoZSBpbmhl
cml0ZWQgcHJvcGVydGllcywgaWYgYW55LCBhcyB0aGVpciB2YWx1ZXMgY2FuIGRlcGVuZCBvbiB0
aGUgCiAgICAgICAgIC8vIGVsZW1lbnQgY29udGV4dC4gVGhpcyBpcyBmYXN0IGFuZCBzYXZlcyBt
ZW1vcnkgYnkgcmV1c2luZyB0aGUgc3R5bGUgZGF0YSBzdHJ1Y3R1cmVzLgotICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLmdl
dCgpKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oKmNhY2hl
SXRlbS0+cmVuZGVyU3R5bGUpOwogICAgICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKS0+aW5o
ZXJpdGVkRGF0YVNoYXJlZChjYWNoZUl0ZW0tPnBhcmVudFJlbmRlclN0eWxlLmdldCgpKSAmJiAh
aXNBdFNoYWRvd0JvdW5kYXJ5KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBFSW5zaWRlTGluayBs
aW5rU3RhdHVzID0gc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpOwogICAgICAgICAgICAgLy8g
SWYgdGhlIGNhY2hlIGl0ZW0gcGFyZW50IHN0eWxlIGhhcyBpZGVudGljYWwgaW5oZXJpdGVkIHBy
b3BlcnRpZXMgdG8gdGhlIGN1cnJlbnQgcGFyZW50IHN0eWxlIHRoZW4gdGhlCkBAIC0xNjYxLDE3
ICsxNjYxLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAgICAgaWYgKGlzSW5oZXJpdCAm
JiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQogICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwogICAgIAotICAg
IGlmIChpZCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgewotICAgICAgICBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlKiBjdXN0b21Qcm9wZXJ0eSA9ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PigqdmFsdWVUb0FwcGx5KTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
UmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGN1c3RvbVZhbCA9IHN0YXRlLnBhcmVudFN0
eWxlKCktPmdldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5hbWUoKSk7Ci0g
ICAgICAgICAgICBpZiAoIWN1c3RvbVZhbCkKLSAgICAgICAgICAgICAgICBjdXN0b21WYWwgPSBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCks
IGN1c3RvbVZhbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFt
ZSgpLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1
c3RvbVByb3BlcnR5LT5uYW1lKCksIGN1c3RvbVByb3BlcnR5KTsKKyAgICBpZiAoY3VzdG9tUHJv
cGVydHlWYWx1ZSkgeworICAgICAgICBhdXRvJiBuYW1lID0gY3VzdG9tUHJvcGVydHlWYWx1ZS0+
bmFtZSgpOworICAgICAgICBhdXRvKiB2YWx1ZSA9IGlzSW5pdGlhbCA/IG51bGxwdHIgOiBpc0lu
aGVyaXQgPyBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5jdXN0b21Qcm9wZXJ0aWVzKCkuZ2V0KG5hbWUp
IDogY3VzdG9tUHJvcGVydHlWYWx1ZTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9t
UHJvcGVydHlWYWx1ZShuYW1lLCB2YWx1ZSA/IG1ha2VSZWYoKnZhbHVlKSA6IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA4NTE5ODU1NTdjMzMzODVjNjgzNDE0MzlkYWY0ZTU2
NjljMzNjNzdmLi5lNjE3YzM4ZTc5ZjIzNTFmY2E4N2E4YmRiMjY0MTA0MDcxM2JhZjM3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL21ha2Vwcm9wLnBsCkBAIC02MTQsOCArNjE0LDggQEAgc3ViIGdlbmVyYXRlQW5pbWF0
aW9uUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICBteSAkaW5kZW50ID0gc2hpZnQ7CiAK
ICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJBbmltYXRpb25MaXN0JiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5z
dXJlQW5pbWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKLSAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0
ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNp
dGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJhdXRvJiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJlQW5p
bWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJhdXRvKiBwYXJlbnRMaXN0ID0gc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4g
IigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzaXplX3QgaSA9IDAsIHBh
cmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDtcbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJl
bnRMaXN0LT5hbmltYXRpb24oaSkuIiAuIGdldFRlc3RGdW5jdGlvbigkbmFtZSkgLiAiKCk7ICsr
aSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKGxpc3Quc2l6
ZSgpIDw9IGkpXG4iOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHN1YiBnZW5lcmF0ZUFuaW1hdGlvblBy
b3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICIgICAgbGlzdC5hbmltYXRpb24oaSkuc2V0QW5pbWF0aW9uTW9kZShwYXJlbnRMaXN0LT5hbmlt
YXRpb24oaSkuYW5pbWF0aW9uTW9kZSgpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAifVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhh
dmUgdGhlIHByb3BlcnR5IHNldC4gKi9cbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiLy8gUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9w
ZXJ0eSBzZXQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8
IGxpc3Quc2l6ZSgpOyArK2kpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICBsaXN0LmFuaW1hdGlvbihpKS4iIC4gZ2V0Q2xlYXJGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4i
OwogCkBAIC02NzQsMTEgKzY3NCwxMSBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUlu
aXRpYWxWYWx1ZVNldHRlciB7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIvLyBDaGVjayBmb3IgKHNpbmdsZS1sYXllcikgbm8tb3Ag
YmVmb3JlIGNsZWFyaW5nIGFueXRoaW5nLlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJjb25zdCBGaWxsTGF5ZXImIGxheWVycyA9ICpzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIg
LiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gImF1dG8mIGxheWVycyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdl
dExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiaWYgKCFsYXllcnMubmV4dCgpICYmICghbGF5ZXJzLiIgLiAkdGVzdEZ1bmN0aW9u
IC4gIigpIHx8IGxheWVycy4iIC4gJGdldHRlciAuICIoKSA9PSAkaW5pdGlhbCkpXG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29u
dGVudCAuPSAiXG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciog
Y2hpbGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5j
dGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1
dG8qIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29y
RnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJjaGlsZC0+IiAuICRzZXR0ZXIgLiAiKCIgLiAkaW5pdGlhbCAuICIpO1xuIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGNoaWxkID0gY2hpbGQtPm5leHQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHQoKSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgIGNoaWxkLT4iIC4gJGNsZWFyRnVuY3Rpb24gLiAiKCk7XG4iOwpAQCAtNjk3LDEyICs2
OTcsMTIgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIg
ewogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiLy8gQ2hlY2sgZm9yIG5vLW9wIGJlZm9yZSBjb3B5aW5nIGFueXRoaW5nLlxuIjsKLSAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuIigpID09ICpzdHlsZVJlc29sdmVy
LnN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOworICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImlmIChzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCkpXG4iOwogICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIiAgICByZXR1cm47XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAi
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImF1dG8qIGNoaWxkID0gJnN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVuY3Rpb24oJG5hbWUpIC4g
IigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZp
b3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJm
b3IgKGF1dG8qIHBhcmVudCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExh
eWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVu
Y3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOworICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYm
IHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgp
KSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxkKSB7
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGls
ZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5
cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKQEAgLTcyNCw3ICs3MjQsNyBA
QCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgbXkgJENTU1By
b3BlcnR5SWQgPSAiQ1NTUHJvcGVydHkiIC4gJG5hbWVUb0lkeyRuYW1lfTsKIAogICBteSAkc2V0
dGVyQ29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXll
ciogY2hpbGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JG
dW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
ImF1dG8qIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vz
c29yRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkgJiYgIWlzPENT
U0ltYWdlU2V0VmFsdWU+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVh
dGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CkBAIC04MzAsNyArODMwLDcgQEAgc3ViIGdl
bmVyYXRlSW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgfQogICBpZiAoISRkaWRDYWxsU2V0VmFsdWUp
IHsKICAgICBteSAkaW5oZXJpdGVkVmFsdWUgPSAkcGFyZW50U3R5bGUgLiAiLT4iIC4gKCRpc1NW
RyA/ICJzdmdTdHlsZSgpLiIgOiAiIikgLiAgJGdldHRlciAuICIoKSI7Ci0gICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5h
bWUsICRpbmhlcml0ZWRWYWx1ZSkgLiAiO1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICAiIC4gZ2VuZXJhdGVTZXRWYWx1ZVN0YXRlbWVudCgkbmFtZSwgImZvcndhcmRJ
bmhlcml0ZWRWYWx1ZSgiIC4gJGluaGVyaXRlZFZhbHVlIC4gIikiKSAuICI7XG4iOwogICB9CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAifVxuIjsKIApAQCAtODQ5LDcgKzg0OSw3IEBA
IHN1YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgICAkY29udmVydGVkVmFsdWUgPSAiU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9w
dGlvbnN7JG5hbWV9eyJjb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpIjsKICAg
fSBlbHNpZiAoZXhpc3RzKCRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9
eyJjb25kaXRpb25hbC1jb252ZXJ0ZXIifSkpIHsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25k
aXRpb25hbC1jb252ZXJ0ZXIifSAuICIoc3R5bGVSZXNvbHZlciwgdmFsdWUpO1xuIjsKLSAgICAk
Y29udmVydGVkVmFsdWUgPSAiY29udmVydGVkVmFsdWUudmFsdWUoKSI7CisgICAgJGNvbnZlcnRl
ZFZhbHVlID0gIldURk1vdmUoY29udmVydGVkVmFsdWUudmFsdWUoKSkiOwogICB9IGVsc2Ugewog
ICAgICRjb252ZXJ0ZWRWYWx1ZSA9ICJkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
IjsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTQxMmViNWFlNWEwYTc4ZGM4NTJj
NDBmM2FhYzcwYjRhNmRhZjc3Mi4uY2Q3MTU0NDFlN2Q5Y2E1NmM0ZjcyZTMxZjhjZWE1N2ZmMDYz
MzdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBib29s
IERvY3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpCiB2b2lkIERvY3VtZW50
OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdl
U2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9t
LCBpbnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNjb3BlKCkucmVzb2x2ZXIo
KS5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICBhdXRvIHN0eWxlID0gc3R5bGVTY29wZSgp
LnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CiAKICAgICBpbnQgd2lkdGggPSBw
YWdlU2l6ZS53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQoKTsKQEAg
LTIwODgsMTEgKzIwODgsMTEgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5Q
aXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICAgICAgICAg
IHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQQUdF
X1NJWkVfUkVTT0xWRUQ6IHsKLSAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VT
aXplKCk7Ci0gICAgICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKLSAgICAgICAg
QVNTRVJUKHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZv
ckxlbmd0aChzaXplLndpZHRoKCksIDApOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0
aChzaXplLmhlaWdodCgpLCAwKTsKKyAgICAgICAgYXV0byYgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6
ZSgpOworICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aC5pc0ZpeGVkKCkpOworICAgICAgICBBU1NF
UlQoc2l6ZS5oZWlnaHQuaXNGaXhlZCgpKTsKKyAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0
aChzaXplLndpZHRoLCAwKTsKKyAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS5o
ZWlnaHQsIDApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50UGF0aC5jcHAKaW5kZXggYzJiZGQwNTY3Nzg2N2EwMjljNTFhZmEzZTdjZjk3MzdlZTc5
NmViZS4uNzc3MTI4MWFiOTQ3YTMxNGY2NDBhMDlhYmQzZTQ3OGI3MjI2MjNkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UGF0aC5jcHAKQEAgLTI1OCwyMyArMjU4LDIxIEBAIGJvb2wgRXZlbnRQYXRoOjpo
YXNFdmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIFZl
Y3RvcjxFdmVudFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0
KGNvbnN0IEV2ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEV2ZW50VGFy
Z2V0Kj4gcGF0aDsKLSAgICBjb25zdCBOb2RlKiB0YXJnZXROb2RlID0gY29uc3RfY2FzdDxFdmVu
dFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CisgICAgYXV0byogdGFyZ2V0Tm9kZSA9IGNvbnN0
X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOwogICAgIGlmICghdGFyZ2V0Tm9k
ZSkgewotICAgICAgICBjb25zdCBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGNvbnN0X2Nhc3Q8RXZl
bnRUYXJnZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CisgICAgICAgIGF1dG8qIGRvbVdpbmRv
dyA9IGNvbnN0X2Nhc3Q8RXZlbnRUYXJnZXQmPih0YXJnZXQpLnRvRE9NV2luZG93KCk7CiAgICAg
ICAgIGlmICghZG9tV2luZG93KQogICAgICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgICAgIHRh
cmdldE5vZGUgPSBkb21XaW5kb3ctPmRvY3VtZW50KCk7CiAgICAgICAgIEFTU0VSVCh0YXJnZXRO
b2RlKTsKICAgICB9Ci0KICAgICBmb3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKLSAgICAg
ICAgaWYgKE5vZGUqIG5vZGVJblBhdGggPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCktPnRvTm9k
ZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRh
cmdldCgpLT50b05vZGUoKSkgewogICAgICAgICAgICAgaWYgKCF0YXJnZXROb2RlLT5pc0Nsb3Nl
ZFNoYWRvd0hpZGRlbigqbm9kZUluUGF0aCkpCiAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQo
Y29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBw
YXRoLmFwcGVuZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgIH0KLQogICAgIHJldHVy
biBwYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggYTJlOTYxMWQ2YzU0
ODg4NjE0NmJiYTkxYTEwNWQ4MDkxYjhjZmFhZS4uZGVlNjQ2YzM3ZDE1YWQ0NDMzYzAzMWI1ZTNh
NWFjNDFlNjE0Mjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0
ID0gMDsKIAogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFs
aWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRh
dGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KLSAgICBDb250YWluZXJOb2RlJiBvd25l
ck5vZGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX293bmVy
Tm9kZS5nZXQoKSk7IH0KKyAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyTm9kZTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIWF0dHJOYW1lIHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1
dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0ck5hbWUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmNwcAppbmRleCBjYzFhNmE0YTA2NjY4ZjYwNGJjYmRkNDNjNGViNjJjN2E3MjY2
ZTYyLi41YmEzN2NmODA2ZWJkY2VmYTMyYTM2NWRlOWM2ZGNiNjNiNGVhMjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIEV2ZW50VGFyZ2V0KiBN
ZXNzYWdlRXZlbnQ6OnNvdXJjZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zb3VyY2UudmFsdWUoKSwKLSAgICAgICAgW10oY29u
c3QgUmVmUHRyPERPTVdpbmRvdz4mIHdpbmRvdykgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8RXZlbnRUYXJnZXQqPihzdGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KHdp
bmRvdy5nZXQoKSkpOyB9LAotICAgICAgICBbXShjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBt
ZXNzYWdlUG9ydCkgLT4gRXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRUYXJn
ZXQqPihzdGF0aWNfY2FzdDxjb25zdCBFdmVudFRhcmdldCo+KG1lc3NhZ2VQb3J0LmdldCgpKSk7
IH0KKyAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50
VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PERPTVdpbmRvdyo+KHdpbmRvdy5nZXQoKSk7IH0s
CisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNzYWdlUG9ydCkgLT4g
RXZlbnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPihtZXNzYWdlUG9y
dC5nZXQoKSk7IH0KICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTJmYmJjZjgxYTEz
Y2ZkMDQwNWUxMjAzOTFlNTJiM2RlNWQzZTI4OS4uM2M3MTIwZWFhNGY4YTMwYjlmNDZiOGI1YWE5
OTZkN2Y4NjE3ZThjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDMwLDExICs0MzAsMTAgQEAgc3Rh
dGljIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9y
U3RyaW5nVmVjdG9yKGNvbnN0IFYKICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldDsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhbnQgOiB2ZWN0b3IpIHsKICAgICAgICAgV1RGOjpz
d2l0Y2hPbih2YXJpYW50LAotICAgICAgICAgICAgWyZdKGNvbnN0IFJlZlB0cjxOb2RlPiYgbm9k
ZSkgeyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdldCgpKSk7IH0sCi0gICAg
ICAgICAgICBbXShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVm
UHRyPE5vZGU+JiBub2RlKSB7IG5vZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0
KCkpKTsgfSwKKyAgICAgICAgICAgIFtdIChjb25zdCBTdHJpbmcmKSB7IH0KICAgICAgICAgKTsK
ICAgICB9Ci0KICAgICByZXR1cm4gbm9kZVNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4MDNm
OGZlMjNmNzM3MGJjY2NkMmE3NWY3MDM5MTU3M2ZlYWQzYTdkLi5iOWEwMjJkNTBkMTM2OGQ5MzUz
ZjAyY2I1MDIzM2U3OTAxZGQyOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gY3JlYXRlKERvY3Vt
ZW50JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgflJhbmdlKCk7CiAKLSAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX293bmVyRG9jdW1lbnQu
Z2V0KCkpOyB9CisgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X293bmVyRG9jdW1lbnQ7IH0KIAogICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyBB
U1NFUlQobV9zdGFydC5jb250YWluZXIoKSk7IHJldHVybiAqbV9zdGFydC5jb250YWluZXIoKTsg
fQogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5vZmZz
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaApp
bmRleCAxMGIyYWQ5NDNjYzNiOTAzMzFkYzdhYjY4ZDU1ZmNmOTQ5MmZlMDgyLi4yYTU4YTNmYTBi
YzFkOWU1NGI2YTFjMzQ1MWE5NzI5YTYzNzJhMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFdURk1vdmUo
bGlzdGVuZXIpLCBvcHRpb25zKSk7CiAgICAgfQogCi0gICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJh
Y2soKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXImPihtX2NhbGxiYWNr
LmdldCgpKTsgfQorICAgIEV2ZW50TGlzdGVuZXImIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFjazsgfQogICAgIGJvb2wgdXNlQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
Q2FwdHVyZTsgfQogICAgIGJvb2wgaXNQYXNzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Bhc3Np
dmU7IH0KICAgICBib29sIGlzT25jZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbmNlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MWU2ZDEzMzFmNDQyM2MxNWM5ODc2OWY5
YTIyNzRjZWQwYWQwZmYuLjFkNTJlNTg4OGUyNzFiMGU4MWIzMDVmMWVmMGM5YzI4ZGM1ZmM0YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFNjcmlw
dFJ1bm5lcjo6flNjcmlwdFJ1bm5lcigpCiAgICAgfQogICAgIGZvciAoYXV0byYgcGVuZGluZ1Nj
cmlwdCA6IG1fcGVuZGluZ0FzeW5jU2NyaXB0cykgewogICAgICAgICBpZiAocGVuZGluZ1Njcmlw
dC0+d2F0Y2hpbmdGb3JMb2FkKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFBlbmRpbmdTY3Jp
cHQmPihwZW5kaW5nU2NyaXB0LmdldCgpKS5jbGVhckNsaWVudCgpOworICAgICAgICAgICAgcGVu
ZGluZ1NjcmlwdC0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9kb2N1bWVudC5kZWNyZW1lbnRM
b2FkRXZlbnREZWxheUNvdW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5oCmluZGV4IDZmYWFkNDA3NTA1MDQ1MGRkM2I5MDliZWRhYzAwMzAwY2M5ZTJhODYuLjQ4
MDEyNmI2NTE2YjdlNzk1MzhiNjI5ZmI4NmFlYzAyYzkxNzJmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBpbmxpbmUgQ29sbGVjdGlvblR5
cGUgSFRNTENvbGxlY3Rpb246OnR5cGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSYg
SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8Q29udGFpbmVyTm9kZSY+KG1fb3duZXJOb2RlLmdldCgpKTsKKyAgICByZXR1cm4gbV9vd25l
ck5vZGU7CiB9CiAKIGlubGluZSBEb2N1bWVudCYgSFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0
ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAppbmRleCBl
ZjIwNmY2YzFlMWE1NjE0NzUwOTZlMjJhYjc5N2QzMjJjOWJlMTBmLi45ODUzMTk4MzFiMTUzMjli
YmE5NGZjZmE5MDU0NGU4Y2YzN2NmYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFN0YWNrSXRlbS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIFJlZjxIVE1MU3RhY2tJ
dGVtPiBIVE1MU3RhY2tJdGVtOjpjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiAK
IGlubGluZSBDb250YWluZXJOb2RlJiBIVE1MU3RhY2tJdGVtOjpub2RlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9ub2RlLmdldCgpKTsKKyAgICBy
ZXR1cm4gbV9ub2RlLmdldCgpOwogfQogCiBpbmxpbmUgRWxlbWVudCYgSFRNTFN0YWNrSXRlbTo6
ZWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDNhYzI4NzA3NzNiODM0MGFlNWUzYjRiOTY3MjkyYWRj
ZDJiMDkzMTEuLmMyZTUxNGNiN2M3MjExYmMzN2MyNDMyOGJkNDAyZjQ5ZTY4NDQ4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0xMzMsNTggKzEzMyw0NCBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2
YVNjcmlwdFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbAogewogICAgIHNl
dE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKIAotICAgIGZvciAoYXV0byYgcGFn
ZSA6IHBhZ2VHcm91cC5wYWdlcygpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKHBhZ2Us
IHBhdXNlZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0
UGF1c2VkKFBhZ2UqIHBhZ2UsIGJvb2wgcGF1c2VkKQotewotICAgIEFTU0VSVF9BUkcocGFnZSwg
cGFnZSk7Ci0KLSAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7Ci0KLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChmcmFt
ZSwgcGF1c2VkKTsKLQotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRD
bGllbnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoKSkgewotICAgICAgICBpZiAocGF1c2VkKQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQt
PnBhZ2VQYXVzZWQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJvbnRlbmRDbGllbnQt
PnBhZ2VVbnBhdXNlZCgpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5wYWdlcygp
KSB7CisgICAgICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQoKmZyYW1lLCBwYXVzZWQpOworCisgICAgICAgIGlmIChhdXRvKiBmcm9udGVuZENsaWVudCA9
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSB7
CisgICAgICAgICAgICBpZiAocGF1c2VkKQorICAgICAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlUGF1c2VkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJvbnRl
bmRDbGllbnQtPnBhZ2VVbnBhdXNlZCgpOworICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJv
b2wgcGF1c2VkKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVz
ZWQoRnJhbWUmIGZyYW1lLCBib29sIHBhdXNlZCkKIHsKLSAgICBBU1NFUlRfQVJHKGZyYW1lLCBm
cmFtZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkpCisgICAgaWYgKCFmcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRl
U2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZyYW1lLT5zY3JpcHQoKS5zZXRQYXVzZWQocGF1c2VkKTsKKyAgICBmcmFtZS5zY3JpcHQoKS5z
ZXRQYXVzZWQocGF1c2VkKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOworICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGlmIChwYXVzZWQpIHsKLSAgICAgICAgZG9jdW1l
bnQtPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICAg
ICAgZG9jdW1lbnQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2
YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNl
ZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9iamVj
dHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwotICAgICAgICBk
b2N1bWVudC0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7Cisg
ICAgICAgIGRvY3VtZW50LnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpK
YXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5yZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB9CiAKLSAgICBzZXRKYXZhU2Ny
aXB0UGF1c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERl
YnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyogdmlldywgYm9vbCBwYXVz
ZWQpCi17Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8m
IGNoaWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdC
YXNlPigqY2hpbGQpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZG93bmNhc3Q8
UGx1Z2luVmlld0Jhc2U+KCpjaGlsZCkuc2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAg
IGlmIChhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2hp
bGQgOiB2aWV3LT5jaGlsZHJlbigpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdC
YXNlPihjaGlsZC5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpLnNldEphdmFTY3JpcHRQYXVz
ZWQocGF1c2VkKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDNiNDk3OTFlZTI5ZTVjNTBm
MGEzYzhhYzFjNDE2ZGE1YTdjNzdiZDEuLjdmNThjNmM4YjA0OGJmM2RjMjc3YWI5ZGY2NWZlYTI0
NjgyMmI3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZUdyb3Vw
OwogCkBAIC01Niw5ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGls
ZVBhdXNlZEludGVybmFsKCk7CiAKICAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoY29uc3Qg
UGFnZUdyb3VwJiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChQ
YWdlKiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSos
IGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3Kiwg
Ym9vbCBwYXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSYsIGJvb2wg
cGF1c2VkKTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA0ZTgyNzU0NWUyYzA4ZTRkM2VmYTIyNGE2M2Rm
ZDVlYjM1NzBhOWNiLi4yOTViOTRhMWE1NTViMmEyOGU3NTAzNmM2YjFkMDI1NzA3Mjk5N2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTc0MSw3
ICs3NDEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25h
bEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRG
cmFtZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNT
RVJUKGNoaWxkRnJhbWUpOwogCi0gICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3Rvcnko
KS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNo
aWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOworICAgICAgICBjaGlsZEZyYW1lLT5sb2Fk
ZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNoaWxkSXRlbSwgZnJv
bUNoaWxkSXRlbSk7CiAgICAgfQogfQogCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJ
dGVtKiBmcm9tSXQKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRl
bS0+Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChm
cm9tQ2hpbGRJdGVtKTsKICAgICAgICAgaWYgKEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50
cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpKQotICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0m
PihjaGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKKyAgICAgICAgICAgIGNo
aWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjaGlsZEl0ZW0s
IGZyb21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCAwYmIyODhlYWVmY2Y4MDgxYjFmMGNmNDFkYzU2YTlhMTg3N2NmZTdlLi5kNWE1MTA2MDE3NGE4
NzA2Zjg5OWQ1Mjg4NGFkNmJiNGNmNjcwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzIz
LDMxICs3MjMsMjcgQEAgUmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0
CiAKIFJlbmRlcldpZGdldCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBjb25zdAogewotICAgIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CisgICAg
YXV0byogb3duZXJFbGVtZW50ID0gbV9vd25lckVsZW1lbnQ7CiAgICAgaWYgKCFvd25lckVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8qIG9iamVjdCA9IG93bmVyRWxl
bWVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgLy8gRklYTUU6IElmIDxvYmplY3Q+IGlzIGV2ZXIgZml4ZWQgdG8gZGlzYXNzb2Np
YXRlIGl0c2VsZiBmcm9tIGZyYW1lcwogICAgIC8vIHRoYXQgaXQgaGFzIHN0YXJ0ZWQgYnV0IGNh
bmNlbGVkLCB0aGVuIHRoaXMgY2FuIHR1cm4gaW50byBhbiBBU1NFUlQKLSAgICAvLyBzaW5jZSBt
X293bmVyRWxlbWVudCB3b3VsZCBiZSAwIHdoZW4gdGhlIGxvYWQgaXMgY2FuY2VsZWQuCisgICAg
Ly8gc2luY2UgbV9vd25lckVsZW1lbnQgd291bGQgYmUgbnVsbHB0ciB3aGVuIHRoZSBsb2FkIGlz
IGNhbmNlbGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU4NQotICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0Pigqb2JqZWN0KSkKKyAgICBpZiAoIWlz
PFJlbmRlcldpZGdldD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlcldpZGdldD4ob2JqZWN0KTsKIH0KIAotRnJhbWUqIEZyYW1lOjpm
cmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqIHdpZGdldCkKK0ZyYW1lKiBGcmFtZTo6ZnJhbWVG
b3JXaWRnZXQoY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUX0FSRyh3aWRnZXQs
IHdpZGdldCk7Ci0KLSAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IFJlbmRlcldpZGdl
dDo6ZmluZCh3aWRnZXQpKQorICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6
ZmluZCh3aWRnZXQpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPmZyYW1lT3duZXJFbGVtZW50
KCkuZG9jdW1lbnQoKS5mcmFtZSgpOwogCiAgICAgLy8gQXNzdW1lIGFsbCB3aWRnZXRzIGFyZSBl
aXRoZXIgYSBGcmFtZVZpZXcgb3Igb3duZWQgYnkgYSBSZW5kZXJXaWRnZXQuCiAgICAgLy8gRklY
TUU6IFRoYXQgYXNzdW1wdGlvbiBpcyBub3QgcmlnaHQgZm9yIHNjcm9sbCBiYXJzIQotICAgIHJl
dHVybiAmZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5mcmFtZSgpOworICAgIHJldHVybiAm
ZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCk7CiB9CiAKIHZvaWQgRnJhbWU6OmNs
ZWFyVGltZXJzKEZyYW1lVmlldyAqdmlldywgRG9jdW1lbnQgKmRvY3VtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCmluZGV4IDY4MzQxMTA3ZDk4MWM0YTMyYWJlYjljNTEwOTNjODdhODFkZjg2NTUuLjlhOGY3
M2NjYjU4ZDc3ZWRkNDkxOTZhNTdmZmRiYWYxMzhhMWVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAg
LTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVy
VHJlZUFzVGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0
Jik7CiAKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiAqbV9zZXR0aW5n
czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNzcwNzVmZDU3OWJmY2IzOWY2
NmY2ZDkzNjY5ZGVkNTA3NmEwMzc0NS4uYjI5MTIzNjNmMjFkZDgwZDZiZTAxMGQwOGFjYTI3YWU5
MmY3NWIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMyw3ICszLDcgQEAKICAq
ICAgICAgICAgICAgICAgICAgICAgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgogICog
ICAgICAgICAgICAgICAgICAgICAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3Jn
PgogICogICAgICAgICAgICAgICAgICAgICAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5p
cyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5
IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MDYsMTggKzUwNiwxNyBAQCBib29sIEZy
YW1lVmlldzo6ZGlkRmlyc3RMYXlvdXQoKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewotICAg
ICAgICBpZiAoSG9zdFdpbmRvdyogd2luZG93ID0gaG9zdFdpbmRvdygpKQotICAgICAgICAgICAg
d2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKKyAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJl
cigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAg
aWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCByZXBhaW50UmVj
dCA9IHJlY3Q7Ci0gICAgcmVwYWludFJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsg
cmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCi0gICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+
Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKKyAgICByZXBhaW50UmVjdC5t
b3ZlKHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwgcmVu
ZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CiAgICAgcmVuZGVy
ZXItPnJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOwogfQogCkBAIC01NDQsMTQgKzU0Mywx
NiBAQCB2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1JlY3Qp
CiB9CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisKIGJvb2wgRnJhbWVW
aWV3OjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9
IGhvc3RXaW5kb3coKSkgewotICAgICAgICB3aW5kb3ctPnNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byog
cGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHBhZ2UtPmNocm9tZSgpLnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEZyYW1lVmlldzo6c2V0TWFyZ2luV2lkdGgoTGF5
b3V0VW5pdCB3KQpAQCAtMTA1NiwyMiArMTA1NywyMiBAQCBHcmFwaGljc0xheWVyKiBGcmFtZVZp
ZXc6OmdyYXBoaWNzTGF5ZXJGb3JQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCBwbGF0Zm9y
bQogewogICAgIC8vIFRvIGZpbmQgdGhlIFdpZGdldCB0aGF0IGNvcnJlc3BvbmRzIHdpdGggcGxh
dGZvcm1XaWRnZXQgd2UgaGF2ZSB0byBkbyBhIGxpbmVhcgogICAgIC8vIHNlYXJjaCBvZiBvdXIg
Y2hpbGQgd2lkZ2V0cy4KLSAgICBXaWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKKyAgICBj
b25zdCBXaWRnZXQqIGZvdW5kV2lkZ2V0ID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSAh
PSBwbGF0Zm9ybVdpZGdldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3VuZFdp
ZGdldCA9IHdpZGdldC5nZXQoKTsKKyAgICAgICAgZm91bmRXaWRnZXQgPSB3aWRnZXQucHRyKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICghZm91bmRXaWRnZXQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0
OjpmaW5kKGZvdW5kV2lkZ2V0KTsKKyAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRn
ZXQ6OmZpbmQoKmZvdW5kV2lkZ2V0KTsKICAgICBpZiAoIXJlbmRlcldpZGdldCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJMYXllciogd2lkZ2V0TGF5ZXIgPSByZW5kZXJX
aWRnZXQtPmxheWVyKCk7CisgICAgYXV0byogd2lkZ2V0TGF5ZXIgPSByZW5kZXJXaWRnZXQtPmxh
eWVyKCk7CiAgICAgaWYgKCF3aWRnZXRMYXllciB8fCAhd2lkZ2V0TGF5ZXItPmlzQ29tcG9zaXRl
ZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjE4MCwxMSArMjE4MSwxMSBAQCBi
b29sIEZyYW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlm
ICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyB8fCBtX3ZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xs
RGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+
Y2hyb21lKCkuc2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgYm9vbCBpc0NvbXBvc2l0ZWRD
b250ZW50TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOworICAgIGJvb2wgaXNDb21w
b3NpdGVkQ29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKIAogICAgIC8v
IEdldCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRv
U2Nyb2xsCiAgICAgUmVnaW9uIHJlZ2lvblRvVXBkYXRlOwpAQCAtMjIyMCw3ICsyMjIxLDcgQEAg
Ym9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsRGVsdGEsIGNvbnN0IEludFJlY3QKICAgICB9CiAKICAgICAvLyAxKSBzY3JvbGwKLSAgICBo
b3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7
CisgICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRv
U2Nyb2xsLCBjbGlwUmVjdCk7CiAKICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQg
b2JqZWN0cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCiAgICAgZm9yIChhdXRvJiB1cGRhdGVS
ZWN0IDogcmVnaW9uVG9VcGRhdGUucmVjdHMoKSkgewpAQCAtMjIzNSw3ICsyMjM2LDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QKICAgICAgICAgfQogICAgICAgICBpZiAoY2xpcHNSZXBhaW50
cygpKQogICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKLSAg
ICAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh1cGRhdGVS
ZWN0KTsKKyAgICAgICAgZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmludmFsaWRhdGVDb250ZW50
c0FuZFJvb3RWaWV3KHVwZGF0ZVJlY3QpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MjY0Miw5ICsyNjQzLDEwIEBAIGJvb2wgRnJhbWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogCiBIb3N0V2luZG93KiBGcmFt
ZVZpZXc6Omhvc3RXaW5kb3coKSBjb25zdAogewotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUo
KS5wYWdlKCkpCi0gICAgICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICghcGFnZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKIH0K
IAogdm9pZCBGcmFtZVZpZXc6OmFkZFRyYWNrZWRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHIpCkBAIC0yNzg0LDEwICsyNzg2LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RUaWxlZEJh
Y2tpbmdTY3JvbGxhYmlsaXR5KCkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKKwogdm9pZCBGcmFt
ZVZpZXc6OnVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKQogewogICAgIGFkanVzdFRpbGVk
QmFja2luZ1Njcm9sbGFiaWxpdHkoKTsKIH0KKwogI2VuZGlmCiAKIHN0YXRpYyBMYXllckZsdXNo
VGhyb3R0bGVTdGF0ZTo6RmxhZ3MgZGV0ZXJtaW5lTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUoUGFn
ZSYgcGFnZSkKQEAgLTQwODIsOCArNDA4Niw2IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3Jv
bGxDb3JuZXIoKQogICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUo
KmNvcm5lclN0eWxlKSk7CiAgICAgICAgIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoY29ybmVyUmVj
dCk7CiAgICAgfQotCi0gICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiB9CiAK
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCkBAIC00MTU3LDE1ICs0MTU5LDE0IEBAIENv
bG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogYm9vbCBGcmFt
ZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgd2lk
Z2V0IDogY2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkg
ewotICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuaGFzQ3VzdG9t
U2Nyb2xsYmFycygpKQorICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpKSB7
CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0KCkpLmhhc0N1
c3RvbVNjcm9sbGJhcnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KCp3aWRnZXQpKSB7Ci0gICAgICAgICAgICBpZiAoZG93
bmNhc3Q8U2Nyb2xsYmFyPigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQorICAgICAgICB9
IGVsc2UgaWYgKGlzPFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKSkgeworICAgICAgICAgICAgaWYg
KGRvd25jYXN0PFNjcm9sbGJhcj4od2lkZ2V0LmdldCgpKS5pc0N1c3RvbVNjcm9sbGJhcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC00MTczLDExICs0MTc0LDEwIEBAIEZyYW1lVmlldyogRnJhbWVW
aWV3OjpwYXJlbnRGcmFtZVZpZXcoKSBjb25zdAogewogICAgIGlmICghcGFyZW50KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1l
KCkudHJlZSgpLnBhcmVudCgpKQotICAgICAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsK
LQotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhcmVudEZyYW1lID0gZnJhbWUoKS50
cmVlKCkucGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKSBjb25zdApAQCAtNTE4Myw4
ICs1MTgzLDggQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpCiAgICAg
Ly8gc2NyaXB0cyBpbiByZXNwb25zZSB0byBOUFBfU2V0V2luZG93LCBmb3IgZXhhbXBsZSksIHNv
IHdlIG5lZWQgdG8ga2VlcCB0aGUgV2lkZ2V0cwogICAgIC8vIGFsaXZlIGR1cmluZyBlbnVtZXJh
dGlvbi4KICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IGNvbGxlY3RBbmRQcm90ZWN0V2lkZ2V0cyht
X3dpZGdldHNJblJlbmRlclRyZWUpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldCA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQuZ2V0KCkpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVyV2lkZ2V0LT51cGRhdGVXaWRnZXRQb3Np
dGlvbigpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6OmZpbmQo
KndpZGdldCkpIHsKKyAgICAgICAgICAgIGF1dG8gaWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJl
ci0+dXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShpZ25v
cmVXaWRnZXRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApp
bmRleCAyM2E3ZmQxYjQ0ZjZlZTkwNDIwYjIwNTA4OTNjNzgzYWFlODUwM2I2Li43MTFiNzRiNDY3
YjM3NTg4NGEzNTc4YTQwMmE0ZTQ0YzQ2MjMzNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTQsNyArNCw3IEBACiAgICAgICAgICAgICAgKEMpIDE5OTgsIDE5OTkgVG9yYmVuIFdlaXMg
KHdlaXNAa2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICAgICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQotICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NCwxNiArNzQs
MTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RnJhbWVWaWV3KCk7CiAKLSAgICBIb3N0V2lu
ZG93KiBob3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdygpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBJbnRSZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpCi0gICAgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgc2No
ZWR1bGVBbmltYXRpb24oKSBmaW5hbDsKICNlbmRpZgogCi0gICAgRnJhbWUmIGZyYW1lKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxGcmFtZSY+KG1fZnJhbWUuZ2V0KCkpOyB9CisgICAgRnJh
bWUmIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCkBAIC05NSwxNSArOTUsMTUgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0TWFyZ2luV2lkdGgoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBz
ZXRNYXJnaW5IZWlnaHQoTGF5b3V0VW5pdCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVDYW5IYXZlU2Nyb2xsYmFycygpOwogCi0gICAgUmVmPFNjcm9sbGJhcj4gY3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8U2Ny
b2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGZpbmFsOwogCi0g
ICAgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldENv
bnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb250
ZW50c1NpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRT
aXplJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c1NpemUoKSBmaW5hbDsKIAogICAg
IHZvaWQgbGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gdHJ1ZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBkaWRGaXJzdExheW91dCgpIGNvbnN0OwpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyRm9yUGxh
dGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2No
ZWR1bGVMYXllckZsdXNoQWxsb3dpbmdUaHJvdHRsaW5nKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3QgZmluYWw7CiAKICAg
ICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4gYW55IFNjcm9sbGFibGVBcmVhIGNhbiBoYXZlIGEgbm9k
ZSBpbiB0aCBTY3JvbGxpbmdUcmVlLCB0aGlzIHNob3VsZAogICAgIC8vIGJlY29tZSBhIHZpcnR1
YWwgZnVuY3Rpb24gb24gU2Nyb2xsYWJsZUFyZWEuCkBAIC0yMjUsMjEgKzIyNSwyMSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKEludFNpemUpOwogICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cygpIGNvbnN0OwogICAgIAotICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckZyYW1lT3duZXIoY29uc3Qg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgYm9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsK
IAotICAgIGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdm9pZCBzZXRGaXhlZFZpc2libGVDb250
ZW50UmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXhlZFZpc2li
bGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Ny
b2xsUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
Y3JvbGxQb3NpdGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0
aW9uJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5n
KCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5n
KCkgZmluYWw7CisgICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Ny
b2xsUG9zaXRpb24mKSBmaW5hbDsKKyAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3Np
dGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFRoZSBz
Y3JvbGxPcmlnaW4sIHNjcm9sbFBvc2l0aW9uLCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24gYW5kIG1h
eGltdW1TY3JvbGxQb3NpdGlvbiBhcmUgYWxsIGFmZmVjdGVkIGJ5IGZyYW1lIHNjYWxlLAogICAg
IC8vIGJ1dCBsYXlvdXRWaWV3cG9ydCBjb21wdXRhdGlvbnMgcmVxdWlyZSB1bnNjYWxlZCBzY3Jv
bGwgcG9zaXRpb25zLgpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVt
YmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJl
bW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
IGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zNzksOSArMzc5LDkgQEAgcHVibGljOgogICAgIGVudW0g
Q29vcmRpbmF0ZVNwYWNlRm9yU25hcHNob3QgeyBEb2N1bWVudENvb3JkaW5hdGVzLCBWaWV3Q29v
cmRpbmF0ZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHNGb3JTbmFw
c2hvdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNlbGVjdGlv
bkluU25hcHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIENvb3JkaW5hdGVTcGFjZUZvclNuYXBz
aG90KTsKIAotICAgIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRp
Y2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
Y29ybmVyUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpv
bnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisgICAgdm9pZCBwYWludFNjcm9sbENvcm5l
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBmaW5hbDsKKyAg
ICB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0
IEludFJlY3QmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGRvY3VtZW50QmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAKQEAgLTQzNiwxMCArNDM2LDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5k
ZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAg
IC8vIE92ZXJyaWRlIFNjcm9sbFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9uIHZp
YSByZW5kZXJlcnMsIGluIG9yZGVyIHRvIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0g
ICAgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBm
aW5hbDsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVj
dCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBpc0Zy
YW1lVmlld1Njcm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0JiBzY3JvbGxDb3Ju
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxDb3JuZXI7IH0KIApA
QCAtNDUxLDIwICs0NTEsMjAgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2Nyb2xsYWJpbGl0
eSB7IFNjcm9sbGFibGUsIFNjcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlIH07CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc1Njcm9sbGFibGUoU2Nyb2xsYWJpbGl0eSBkZWZpbml0aW9uT2ZTY3Jv
bGxhYmxlID0gU2Nyb2xsYWJpbGl0eTo6U2Nyb2xsYWJsZSk7CiAKLSAgICBib29sIGlzU2Nyb2xs
YWJsZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZTsKLSAgICBib29sIGhhc1Njcm9sbGFibGVP
clJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKKyAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKIAogICAgIGVudW0gU2Nyb2xsYmFyTW9kZXNDYWxj
dWxhdGlvblN0cmF0ZWd5IHsgUnVsZXNGcm9tV2ViQ29udGVudE9ubHksIEFueVJ1bGUgfTsKICAg
ICB2b2lkIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xsYmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0
ZWd5ID0gQW55UnVsZSk7CiAKLSAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBzaG91bGRTZXRDdXJzb3IoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBt
ZXRob2Qgb25jZSBwbHVnaW4gbG9hZGluZyBpcyBkZWNvdXBsZWQgZnJvbSBsYXlvdXQuCiAgICAg
dm9pZCBmbHVzaEFueVBlbmRpbmdQb3N0TGF5b3V0VGFza3MoKTsKIAotICAgIGJvb2wgc2hvdWxk
U3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3Vs
ZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxi
YXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRl
OwogCiAgICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKQEAgLTQ4Myw3
ICs0ODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc1Njcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKikgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFi
bGVBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFzLmdldCgpOyB9CiAKLSAg
ICB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2hp
bGQoV2lkZ2V0JikgZmluYWw7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3IgcG9y
dHMgdGhhdCBuZWVkIHRvIGhhbmRsZSB3aGVlbCBldmVudHMgbWFudWFsbHkuCiAgICAgLy8gT24g
TWFjIFdlYktpdDEgdGhlIHVuZGVybHlpbmcgTlNTY3JvbGxWaWV3IGp1c3QgZG9lcyB0aGUgc2Ny
b2xsaW5nLCBidXQgb24gbW9zdCBvdGhlciBwbGF0Zm9ybXMKQEAgLTUwMSw3ICs1MDEsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbigpIGNvbnN0OwogICAgIHZv
aWQgc2V0UGFnaW5hdGlvbihjb25zdCBQYWdpbmF0aW9uJik7CiAgICAgCi0gICAgYm9vbCBpblBy
b2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0
aWNTY3JvbGw7IH0KKyAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pblByb2dyYW1tYXRpY1Njcm9sbDsgfQogICAgIHZvaWQgc2V0SW5Qcm9ncmFt
bWF0aWNTY3JvbGwoYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpIHsgbV9pblByb2dyYW1tYXRpY1Nj
cm9sbCA9IHByb2dyYW1tYXRpY1Njcm9sbDsgfQogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURB
UFRBVElPTikKQEAgLTUwOSw4ICs1MDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWFs
Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9pbml0aWFsVmlld3BvcnRTaXpl
ID0gc2l6ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5j
ZVRlc3RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3Jt
YW5jZVRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykK
ICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyKiBzZXRXYW50c0xheWVyRm9yVG9wT3Zl
ckhhbmdBcmVhKGJvb2wpIGNvbnN0OwpAQCAtNTIzLDIwICs1MjMsMjAgQEAgcHVibGljOgogCiAg
ICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb25SZXNwZWN0aW5nQ3VzdG9tRml4ZWRQb3NpdGlv
bigpIGNvbnN0OwogCi0gICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faGVhZGVySGVpZ2h0OyB9CisgICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faGVhZGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRI
ZWFkZXJIZWlnaHQoaW50KTsKLSAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KKyAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEZvb3RlckhlaWdodChpbnQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgdG9wQ29u
dGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJD
b3JlQ29udGVudEluc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9h
dCB0b3BDb250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5
cGU6OldlYkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdG9wQ29udGVu
dEluc2V0RGlkQ2hhbmdlKGZsb2F0IG5ld1RvcENvbnRlbnRJbnNldCk7CiAKICAgICB2b2lkIHRv
cENvbnRlbnREaXJlY3Rpb25EaWRDaGFuZ2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2lsbEVuZExpdmVSZXNpemUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdp
bGxTdGFydExpdmVSZXNpemUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxF
bmRMaXZlUmVzaXplKCkgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJs
ZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFp
bGFibGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKIAogICAgIHZvaWQgYWRqdXN0VGlsZWRCYWNr
aW5nU2Nyb2xsYWJpbGl0eSgpOwogCkBAIC01NzQsMjkgKzU3NCwyOSBAQCBwdWJsaWM6CiAgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld0V4cG9zZWRSZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAg
IHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsU25h
cEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRz
KCkgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVz
KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENv
bnRlbnQoZmxvYXQgc3RlcCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5
KSBvdmVycmlkZTsKKyAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRDb250ZW50KGZs
b2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7
CiAKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpOwogCi0gICAgdm9pZCBzaG93KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KCkgZmluYWw7CiAKICAgICBib29sIHNob3VsZFBsYWNl
QmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc2Nyb2xs
Q29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVj
dCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIG92
ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkgZmluYWw7CisgICAgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IElu
dFJlY3QmIHVwZGF0ZVJlY3QpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVwYWludFNsb3dSZXBh
aW50T2JqZWN0cygpOwogCi0gICAgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRmxpcHBl
ZERvY3VtZW50KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVW
aWV3KEZyYW1lJik7CkBAIC02MTcsNyArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5Q
cmVMYXlvdXRTdHlsZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UGhhc2UgPT0gSW5Q
cmVMYXlvdXRTdHlsZVVwZGF0ZTsgfQogCi0gICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRnJhbWVWaWV3KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlcldpZGdldDsKICAg
ICBib29sIHVzZVNsb3dSZXBhaW50cyhib29sIGNvbnNpZGVyT3ZlcmxhcCA9IHRydWUpIGNvbnN0
OwpAQCAtNjI4LDkgKzYyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVcGRhdGVDb21w
b3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzRnJhbWUoY29uc3QgRnJhbWUmIHJvb3RGcmFtZUZvckZsdXNoKTsK
IAotICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdl
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVu
dFNpemVDaGFuZ2UoKSBmaW5hbDsKIAotICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBs
YXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Ny
b2xsT2Zmc2V0JiBuZXdPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hh
bmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwg
Y29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBseU92
ZXJmbG93VG9WaWV3cG9ydChjb25zdCBSZW5kZXJFbGVtZW50JiwgU2Nyb2xsYmFyTW9kZSYgaE1v
ZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKICAgICB2b2lkIGFwcGx5UGFnaW5hdGlvblRvVmll
d3BvcnQoKTsKQEAgLTY1MSwzOSArNjUxLDM5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVM
YXllckZsdXNoVGhyb3R0bGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGls
ZWRCYWNraW5nQ292ZXJhZ2UoKTsKIAotICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUo
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxi
YXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IElu
dFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgZmluYWw7
CiAKLSAgICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICAvLyBTY3Jv
bGxhYmxlQXJlYSBpbnRlcmZhY2UKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNj
cm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvKGNv
bnN0IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xs
ZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIFNjcm9sbGFibGVBcmVh
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFJlY3Qg
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBH
cmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciYs
IGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJikgZmluYWw7CisgICAgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29u
c3QgSW50UmVjdCYpIGZpbmFsOworICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxh
YmxlQXJlYSgpIGNvbnN0IGZpbmFsOworICAgIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGlu
Z0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3Jv
bGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJG
b3JTY3JvbGxDb3JuZXIoKSBjb25zdCBmaW5hbDsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKLSAgICB2b2lkIGNvbnRlbnRzUmVzaXplZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgY29udGVudHNSZXNpemVkKCkgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9p
ZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bm9i
c2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIGJvb2wgdXNl
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNBc3lu
Y1Njcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmlt
YXRvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVz
c2FnZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVzZXNDb21wb3Np
dGVkU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmco
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZSBzY3JvbGxiYXIgbm90aWZpY2F0aW9u
cyB0byB1cGRhdGUgdGhlIEFYT2JqZWN0IGNhY2hlLgotICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFy
KFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVu
dGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyT3JpZW50YXRpb24pIGZpbmFsOwogCiAgICAgSW50U2l6ZSBzaXplRm9yUmVzaXpl
RXZlbnQoKSBjb25zdDsKICAgICB2b2lkIHNlbmRSZXNpemVFdmVudElmTmVlZGVkKCk7CkBAIC02
OTMsNyArNjkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0
KCk7CiAgICAgdm9pZCB1cGRhdGVMYXlvdXRWaWV3cG9ydCgpOwogCi0gICAgdm9pZCBub3RpZnlQ
YWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBu
b3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QgZmluYWw7CiAKICAgICB2
b2lkIGVuYWJsZVNwZWN1bGF0aXZlVGlsaW5nSWZOZWVkZWQoKTsKICAgICB2b2lkIHNwZWN1bGF0
aXZlVGlsaW5nRW5hYmxlVGltZXJGaXJlZCgpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIAotICAgIHZvaWQgdXBk
YXRlU2Nyb2xsQ29ybmVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIo
KSBmaW5hbDsKIAogICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IDkzMzFiMzAyOTA3ZTc5YjdjMTFiNWVjMDg0NmJhZmQ1YzNmZWM0
OTcuLjZjNDc2NWYwY2JjNDUyNDI4MmUwN2M2MTg2NjRlNzZhMDI1MzExZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTMzMywxOCArMTMzMywxNSBAQCB2b2lkIFBhZ2U6OmRuc1ByZWZldGNoaW5n
U3RhdGVDaGFuZ2VkKCkKIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBQYWdlOjpwbHVnaW5W
aWV3cygpCiB7CiAgICAgVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IHZpZXdzOwotCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKKyAgICAgICAgYXV0byogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlm
ICghdmlldykKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGZvciAoYXV0byYgd2lkZ2V0
IDogdmlldy0+Y2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNl
Pigqd2lkZ2V0KSkKLSAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2lu
Vmlld0Jhc2U+KCp3aWRnZXQpKTsKKyAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFzZT4o
d2lkZ2V0LmdldCgpKSkKKyAgICAgICAgICAgICAgICB2aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KHdpZGdldC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0
dXJuIHZpZXdzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggNDQz
MDU0Njc1NTcxYmI5MGQ3NDAxZjJiYjExMjNhY2U5YWZjZTExMC4uNjdjZTMxNzA3Y2IyMTdiM2Iw
MTRmMTY5YTkyNGY0YzhjNWZkOWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cApAQCAtMjg2LDE2ICsyODYsMTkgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERl
c3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KIAogU3RyaW5n
IFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVChmcmFtZS0+
ZG9jdW1lbnQoKSk7CisKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+ZG9jdW1lbnQoKTsK
ICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1lKTsKICAgICBwcmludENvbnRleHQu
YmVnaW4oODAwKTsgLy8gQW55IHdpZHRoIGlzIE9LIGhlcmUuCi0gICAgZG9jdW1lbnQtPnVwZGF0
ZUxheW91dCgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBkb2N1
bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOwor
ICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8gc3R5bGUgPSBkb2N1bWVudC5z
dHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZU51bWJlcik7CiAKICAgICAv
LyBJbXBsZW1lbnQgZm9ybWF0dGVycyBmb3IgcHJvcGVydGllcyB3ZSBjYXJlIGFib3V0LgogICAg
IGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIm1hcmdpbi1sZWZ0IikpIHsKICAgICAgICAgaWYg
KHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCJhdXRvIik7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgImF1dG8iIH07CiAg
ICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnZhbHVlKCkp
OwogICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQpA
QCAtMzA1LDkgKzMwOCw5IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFt
ZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgaWYgKCFzdHJj
bXAocHJvcGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKICAgICAgICAgcmV0dXJuIHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS5maXJzdEZhbWlseSgpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5
TmFtZSwgInNpemUiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5wYWdl
U2l6ZSgpLndpZHRoKCkudmFsdWUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFn
ZVNpemUoKS5oZWlnaHQoKS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KHN0eWxlLT5wYWdlU2l6ZSgpLndpZHRoLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIo
c3R5bGUtPnBhZ2VTaXplKCkuaGVpZ2h0LnZhbHVlKCkpOwogCi0gICAgcmV0dXJuIFN0cmluZygi
cGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIpICsgcHJvcGVydHlOYW1lOworICAg
IHJldHVybiBtYWtlU3RyaW5nKCJwYWdlUHJvcGVydHkoKSB1bmltcGxlbWVudGVkIGZvcjogIiwg
cHJvcGVydHlOYW1lKTsKIH0KIAogYm9vbCBQcmludENvbnRleHQ6OmlzUGFnZUJveFZpc2libGUo
RnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMWM0N2UzZGZjNGRkZDFiZDQ1YzMyNTdm
N2I0ZWQzMGRlYjhmOWE2OC4uNzZlODBjMDc4ZjFjNjZiZGFkNmI4MDFmODkzN2RiZDAwMWJmY2M1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25F
dmVudHNJZk5lZWRlZCgpCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYmIG1f
YW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7CiAgICAg
ICAgICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0aW9u
KCk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dl
ciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dl
cigpLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNh
c3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChvZmZzZXQgPiBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1
ZSgpKQogICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3Rh
dGVJbnB1dDo6U3RhcnRUaW1lckZpcmVkLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTU3Nyw3ICs1
NzcsNyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAg
ICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkp
IHsKICAgICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1
cnJlbnRTY3JvbGxQb3NpdGlvbiA9IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xs
UG9zaXRpb25Gb3JGaXhlZFBvc2l0aW9uKCkueSgpLnRvRmxvYXQoKTsKLSAgICAgICAgICAgICAg
ICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xs
QW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25U
cmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRTY3JvbGxQb3NpdGlvbiA+PSBzY3JvbGxUcmlnZ2VyLnN0YXJ0VmFsdWUoKS52YWx1ZSgp
ICYmICghc2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpIHx8IGN1cnJlbnRTY3JvbGxQb3NpdGlv
biA8PSBzY3JvbGxUcmlnZ2VyLmVuZFZhbHVlKCkudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtNjUzLDcgKzY1Myw3IEBAIGRvdWJsZSBB
bmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0
IFRpbWluZ0Z1bmN0aW9uCiAgICAgfQogCiAgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAg
ICAgdGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsK
KyAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKTsK
IAogICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5n
RnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBkb3Vi
bGUgQW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpICYm
IG1fYW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0g
ICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25Ucmln
Z2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChzY3JvbGxUcmlnZ2Vy
Lmhhc0VuZFZhbHVlKCkgJiYgbV9vYmplY3QpIHsKICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9
IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRp
b24oKTsKICAgICAgICAgICAgIGZsb2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0
VmFsdWUoKS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDJkODk0MDQ1MjA0OGEyOGY0MTEwYTU1
MjAzNWZmMWM3MWZkODhkNTUuLjlmNmI5MTdjNmVjMWM2ZmViYmE2OTQwYTE2NzA1YmRiZDVhYzc0
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGgg
YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0
IEwKIAogc3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiBhbmltLCBjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywg
ZG91YmxlIHByb2dyZXNzKQogewotICAgIHJldHVybiBMZW5ndGhTaXplKGJsZW5kRnVuYyhhbmlt
LCBmcm9tLndpZHRoKCksIHRvLndpZHRoKCksIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQoKSwgdG8uaGVpZ2h0KCksIHByb2dyZXNz
KSk7CisgICAgcmV0dXJuIHsgYmxlbmRGdW5jKGFuaW0sIGZyb20ud2lkdGgsIHRvLndpZHRoLCBw
cm9ncmVzcyksIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCwgdG8uaGVpZ2h0LCBwcm9ncmVz
cykgfTsKIH0KIAogc3RhdGljIGlubGluZSBTaGFkb3dTdHlsZSBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5bGUgdG8sIGRvdWJs
ZSBwcm9ncmVzcykKQEAgLTQ5Miw3ICs0OTEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNs
YXNzIExlbmd0aFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8
Y29uc3QgVCY+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBM
ZW5ndGhQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAoUmVuZGVy
U3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShUKSkK
KyAgICBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBUJiAo
UmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
KShUJiYpKQogICAgICAgICA6IFByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj4ocHJvcCwg
Z2V0dGVyKQogICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKICAgICB7CkBAIC01MDQsNyArNTAz
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgKFJlbmRlclN0eWxl
OjoqbV9zZXR0ZXIpKFQpOworICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFQmJik7
CiB9OwogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJDbGlwUGF0aCA6IHB1YmxpYyBSZWZDb3VudGVk
UHJvcGVydHlXcmFwcGVyPENsaXBQYXRoT3BlcmF0aW9uPiB7CkBAIC0xMDQ5LDcgKzEwNDgsNyBA
QCBwdWJsaWM6CiBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1h
dGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6OipMYXll
cnNHZXR0ZXIpKCkgY29uc3Q7CisgICAgdHlwZWRlZiBjb25zdCBGaWxsTGF5ZXImIChSZW5kZXJT
dHlsZTo6KkxheWVyc0dldHRlcikoKSBjb25zdDsKICAgICB0eXBlZGVmIEZpbGxMYXllciYgKFJl
bmRlclN0eWxlOjoqTGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICBGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgTGF5ZXJzR2V0dGVyIGdldHRlciwgTGF5ZXJzQWNj
ZXNzb3IgYWNjZXNzb3IpCkBAIC0xMDg2LDggKzEwODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghYSB8fCAhYikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjb25zdCBG
aWxsTGF5ZXIqIGZyb21MYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNv
bnN0IEZpbGxMYXllciogdG9MYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAg
IGF1dG8qIGZyb21MYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRv
KiB0b0xheWVyID0gJihiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CiAKICAgICAgICAgd2hpbGUgKGZy
b21MYXllciAmJiB0b0xheWVyKSB7CiAgICAgICAgICAgICBpZiAoIW1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyLT5lcXVhbHMoZnJvbUxheWVyLCB0b0xheWVyKSkKQEAgLTExMDIsOSArMTEwMSw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
UmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxl
KiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBjb25z
dCBGaWxsTGF5ZXIqIGFMYXllciA9IChhLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIGNv
bnN0IEZpbGxMYXllciogYkxheWVyID0gKGItPiptX2xheWVyc0dldHRlcikoKTsKLSAgICAgICAg
RmlsbExheWVyKiBkc3RMYXllciA9ICYoZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKKyAgICAg
ICAgYXV0byogYUxheWVyID0gJihhLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1dG8q
IGJMYXllciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRvKiBkc3RMYXll
ciA9ICYoZHN0LT4qbV9sYXllcnNBY2Nlc3NvcikoKTsKIAogICAgICAgICB3aGlsZSAoYUxheWVy
ICYmIGJMYXllciAmJiBkc3RMYXllcikgewogICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXItPmJsZW5kKGFuaW0sIGRzdExheWVyLCBhTGF5ZXIsIGJMYXllciwgcHJvZ3Jlc3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCmluZGV4IGVkOTZhYjE1Mzg4MmI1OWRjOTljYmRmNWFjOTg2NGRiMGYwMDVh
MDQuLjIyYmRlNDY4YTA2YWI0NmMwYmEwZTg4OGI5YjczNWQxNDUxMmMwZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTk5LDI4ICs5OSwyOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYQogCiBFdmVudFRy
YWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5n
UmVnaW9uc0ZvckZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKLSAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgYXV0byogcmVu
ZGVyVmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyVmlldyB8
fCByZW5kZXJWaWV3LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybiBF
dmVudFRyYWNraW5nUmVnaW9ucygpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAg
ICAgLy8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVzZW50
IHRoZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRsZXJz
LgogICAgIEFTU0VSVChmcmFtZS5pc01haW5GcmFtZSgpKTsKLQotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNraW5n
UmVnaW9ucygpOwogICAgIHJldHVybiBkb2N1bWVudC0+ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsK
ICNlbHNlCi0gICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1l
LnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEV2ZW50VHJhY2tp
bmdSZWdpb25zKCk7CiAKKyAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CisKICAg
ICAvLyBGSVhNRTogc2hvdWxkIEFTU0VSVCghZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSBoZXJl
LCBidXQgbmVlZCB0byBmaXggRGVidWdQYWdlT3ZlcmxheXMKICAgICAvLyB0byBub3QgYXNrIGZv
ciByZWdpb25zIGF0IGJhZCB0aW1lcy4KIAotICAgIGlmIChjb25zdCBGcmFtZVZpZXc6OlNjcm9s
bGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVh
cygpKSB7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xs
YWJsZUFyZWFzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3Jv
bGxhYmxlQXJlYXMpIHsKICAgICAgICAgICAgIC8vIENvbXBvc2l0ZWQgc2Nyb2xsYWJsZSBhcmVh
cyBjYW4gYmUgc2Nyb2xsZWQgb2ZmIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAgIGlmIChz
Y3JvbGxhYmxlQXJlYS0+dXNlc0FzeW5jU2Nyb2xsaW5nKCkpCkBAIC0xMzYsMTggKzEzNiwyMSBA
QCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVu
dFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgIH0KIAogICAgIGZvciAoYXV0byYgd2lkZ2V0
IDogZnJhbWVWaWV3LT53aWRnZXRzSW5SZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgUmVuZGVyV2lk
Z2V0KiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0KTsKLSAgICAgICAg
aWYgKCFyZW5kZXJXaWRnZXQgfHwgIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKKyAgICAg
ICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAKLSAgICAgICAgaWYgKGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53
YW50c1doZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51
bml0ZShyZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgICAgICBp
ZiAoIWRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KS53YW50c1doZWVsRXZlbnRzKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVu
ZGVyV2lkZ2V0OjpmaW5kKCp3aWRnZXQpOworICAgICAgICBpZiAoIXJlbmRlcldpZGdldCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0
ZShyZW5kZXJXaWRnZXQtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwogICAgIH0KICAgICAK
LSAgICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJh
bWUgYXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBo
ZXJlLgogICAgIEV2ZW50VHJhY2tpbmdSZWdpb25zIGV2ZW50VHJhY2tpbmdSZWdpb25zOworCisg
ICAgLy8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZyYW1l
IGFzIGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQgaGVy
ZS4KICAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7
IHN1YmZyYW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBGcmFtZVZpZXcqIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CisgICAg
ICAgIGF1dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICgh
c3ViZnJhbWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2MCw3ICsxNjMsNyBA
QCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVu
dFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogICAgICAgICBldmVudFRyYWNraW5nUmVnaW9ucy51
bml0ZShzdWJmcmFtZVJlZ2lvbik7CiAgICAgfQogCi0gICAgRG9jdW1lbnQ6OlJlZ2lvbkZpeGVk
UGFpciB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0ZVJlZ2lv
bkZvckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0cygpKTsK
KyAgICBhdXRvIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFic29sdXRl
UmVnaW9uRm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRUYXJnZXRz
KCkpOwogICAgIGJvb2wgd2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQgPSB3aGVlbEhhbmRsZXJS
ZWdpb24uc2Vjb25kOwogICAgIGlmICh3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCkgewogICAg
ICAgICAvLyBGSVhNRTogbmVlZCB0byBoYW5kbGUgcG9zaXRpb246c3RpY2t5IGhlcmUgdG9vLgpA
QCAtMTcyLDYgKzE3NSw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAKICAgICAvLyBGSVhN
RTogSWYgdGhpcyBpcyBub3QgdGhlIG1haW4gZnJhbWUsIHdlIGNvdWxkIGNsaXAgdGhlIHJlZ2lv
biB0byB0aGUgZnJhbWUncyBib3VuZHMuCiAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMudW5pdGVT
eW5jaHJvbm91c1JlZ2lvbihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24pOworCiAgICAgcmV0dXJuIGV2ZW50VHJhY2tpbmdSZWdpb25zOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA5ZTcwZTlkMzZiOTk1ZWRj
YmVhMjkyNTQzNjczNjZjNDkxOGEzYmMxLi5iMTExNjRmMDg1NWRiZGYyNWY2YjFjNjg2ZjcxNmI0
NjcyMzJjNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEtleWVkQ29kaW5nX2gKLSNkZWZpbmUgS2V5ZWRDb2RpbmdfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNTYs
NyArMTU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3Qg
U3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmco
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2
YWx1ZSkKQEAgLTIxMSw1ICsyMTAsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRDb2RpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhCb3guaAppbmRleCBlN2E5NzhhOWM4YzA1MjhkMjljYTBlMGQzN2NjOWY0YzdlZDc3MTA3Li4z
ZTBmMjE4NGU2ODZkMGVkYzBjZWEzOWIzNDU4ZTc0ZjZjNmVhNzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhCb3guaApAQCAtMTksOCArMTksNyBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBMZW5ndGhCb3hfaAotI2RlZmluZSBMZW5ndGhCb3hf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJXcml0aW5n
TW9kZS5oIgpAQCAtMzEsMTIgKzMwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIEJveEV4dGVudCB7CiBwdWJsaWM6CiAgICAgQm94RXh0ZW50KCkK
LSAgICAgICAgOiBtX3NpZGVzKHt7IFQoMCksIFQoMCksIFQoMCksIFQoMCkgfX0pCisgICAgICAg
IDogbV9zaWRlcyh7IHsgeyAwIH0sIHsgMCB9LCB7IDAgfSwgeyAwIH0gfSB9KQogICAgIHsKICAg
ICB9CiAKICAgICBCb3hFeHRlbnQoY29uc3QgVCYgdG9wLCBjb25zdCBUJiByaWdodCwgY29uc3Qg
VCYgYm90dG9tLCBjb25zdCBUJiBsZWZ0KQotICAgICAgICA6IG1fc2lkZXMoe3sgdG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0IH19KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCB9IH0pCisgICAgeworICAgIH0KKworICAgIEJveEV4dGVudChUJiYgdG9wLCBU
JiYgcmlnaHQsIFQmJiBib3R0b20sIFQmJiBsZWZ0KQorICAgICAgICA6IG1fc2lkZXMoeyB7IHN0
ZDo6Zm9yd2FyZDxUPih0b3ApLCBzdGQ6OmZvcndhcmQ8VD4ocmlnaHQpLCBzdGQ6OmZvcndhcmQ8
VD4oYm90dG9tKSwgc3RkOjpmb3J3YXJkPFQ+KGxlZnQpIH0gfSkKICAgICB7CiAgICAgfQogCkBA
IC0xMzksOCArMTQzLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBMZW5ndGhCb3go
Y29uc3QgTGVuZ3RoJiB0b3AsIGNvbnN0IExlbmd0aCYgcmlnaHQsIGNvbnN0IExlbmd0aCYgYm90
dG9tLCBjb25zdCBMZW5ndGgmIGxlZnQpCi0gICAgICAgIDogQm94RXh0ZW50KHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdCkKKyAgICBMZW5ndGhCb3goTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdo
dCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQorICAgICAgICA6IEJveEV4dGVudCB7
IFdURk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShs
ZWZ0KSB9CiAgICAgewogICAgIH0KIApAQCAtMTUwLDExICsxNTQsOSBAQCBwdWJsaWM6CiAgICAg
fQogfTsKIAotdHlwZWRlZiBCb3hFeHRlbnQ8TGF5b3V0VW5pdD4gTGF5b3V0Qm94RXh0ZW50Owot
dHlwZWRlZiBCb3hFeHRlbnQ8ZmxvYXQ+IEZsb2F0Qm94RXh0ZW50OwordXNpbmcgTGF5b3V0Qm94
RXh0ZW50ID0gQm94RXh0ZW50PExheW91dFVuaXQ+OwordXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBC
b3hFeHRlbnQ8ZmxvYXQ+OwogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBMZW5ndGhCb3gmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
TGVuZ3RoQm94X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNp
emUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5jcHAKaW5kZXggMTY4
MzljY2JhOGYwMTE5NWY3ZTQyZTZmYzFmZmVlNzIxNTlhZjFmYi4uN2YzNTBlNzczODYzZDE2YzUz
MDcxYTJjNGFjMGZiNjk2YzgxZmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoU2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1
cm4gdHMgPDwgc2l6ZS53aWR0aCgpIDw8ICIgIiA8PCBzaXplLmhlaWdodCgpOworICAgIHJldHVy
biB0cyA8PCBzaXplLndpZHRoIDw8ICIgIiA8PCBzaXplLmhlaWdodDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oCmluZGV4IGQ3MTNl
MTg5MmM1YTVjNGIzY2MwNWYzODkzMmYyYjYxNTYxYmYxNzguLjYwNTIzZWVjNmNiMzJkMTAxYmQx
ZDI0NDE0MDQ1Y2E2NjM0NGU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgK
QEAgLTEsNiArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQotICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOCw0OCArMTcs
MjcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgTGVu
Z3RoU2l6ZV9oCi0jZGVmaW5lIExlbmd0aFNpemVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJMZW5ndGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTGVuZ3RoU2l6ZSB7
Ci1wdWJsaWM6Ci0gICAgTGVuZ3RoU2l6ZSgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBMZW5n
dGhTaXplKExlbmd0aCB3aWR0aCwgTGVuZ3RoIGhlaWdodCkKLSAgICAgICAgOiBtX3dpZHRoKFdU
Rk1vdmUod2lkdGgpKQotICAgICAgICAsIG1faGVpZ2h0KFdURk1vdmUoaGVpZ2h0KSkKLSAgICB7
Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFNpemUmIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9oZWlnaHQg
PT0gby5tX2hlaWdodDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB3aWR0aCkg
eyBtX3dpZHRoID0gV1RGTW92ZSh3aWR0aCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotCi0gICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIGhl
aWdodCkgeyBtX2hlaWdodCA9IFdURk1vdmUoaGVpZ2h0KTsgfQotICAgIGNvbnN0IExlbmd0aCYg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLQotcHJpdmF0ZToKLSAgICBMZW5n
dGggbV93aWR0aDsKLSAgICBMZW5ndGggbV9oZWlnaHQ7CisgICAgTGVuZ3RoIHdpZHRoOworICAg
IExlbmd0aCBoZWlnaHQ7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0
aFNpemUmIGEsIGNvbnN0IExlbmd0aFNpemUmIGIpCit7CisgICAgcmV0dXJuIGEud2lkdGggPT0g
Yi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKK30KKwogaW5saW5lIExlbmd0aFNpemUg
YmxlbmQoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGRvdWJs
ZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZChmcm9tLndpZHRoKCks
IHRvLndpZHRoKCksIHByb2dyZXNzKSwgYmxlbmQoZnJvbS5oZWlnaHQoKSwgdG8uaGVpZ2h0KCks
IHByb2dyZXNzKSk7CisgICAgcmV0dXJuIHsgYmxlbmQoZnJvbS53aWR0aCwgdG8ud2lkdGgsIHBy
b2dyZXNzKSwgYmxlbmQoZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgcHJvZ3Jlc3MpIH07CiB9CiAK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IExlbmd0aFNpemUmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTGVuZ3RoU2l6ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzNDAwMTRhZDVhOTk1MzU5YWY3YjY5OWM1Mjhk
ZDM4MDMyMDk1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLSNkZWZp
bmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaAotCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgCi1jbGFzcyBTcGVlY2hTeW50aGVzaXM7Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U7Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNWb2ljZTsKLSAgICAKLWNsYXNzIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
cz4gY3JlYXRlKFNwZWVjaFN5bnRoZXNpcyopOwotICAgIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplVm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mKTsK
LSAgICB2b2lkIHBsYXRmb3JtU3BlYWsoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik7Ci0gICAg
Ci1wcml2YXRlOgotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyop
OwotCi0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVjaFN5bnRoZXNpczsKLX07Ci0gICAgCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmNwcAppbmRleCAxZjIwN2Y0NDM2Njk5YjRkMWM4NDVkNzBjY2M3MjlkMzZlOTBiYmEyLi4x
MGE4MzBlMzljN2I3ZmVkODkzOGVjMGI1NDAwMGVlODQ3Y2UwYzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzAsMTYgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVu
dCogY2xpZW50KQorUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKIH0KICAg
ICAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xp
ZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAs
IG1fcmF0ZSgxLjBmKQotICAgICwgbV9waXRjaCgxLjBmKQoraW5saW5lIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGll
bnQoJmNsaWVudCkKIHsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IGE4NjliYjg3
Mjg0ZGM1OWUwN2VlNjQyMzM2ZWFkMThjYTljNWQ4ODQuLmUwODc3NWIyNWVmNDAwZTY2YmRjMmU4
ZGM0NWM4MmI2ZjEwYzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyMSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlX2gKLSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAorI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICAvLyBJbXBsZW1lbnQgbWV0aG9k
cyBhcyBuZWVkZWQuCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7IH0KIH07CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCopOwotICAgIAorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZUNsaWVudCYpOworCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0
ZXh0OyB9CiAgICAgCkBAIC03NCwyMCArNjYsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xp
ZW50KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9j
bGllbnQgPSBjbGllbnQ7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VD
bGllbnQqKTsKKyAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCYpOwogCiAgICAgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Rl
eHQ7CiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gbV92b2ljZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsKLSAgICBmbG9hdCBtX3JhdGU7
Ci0gICAgZmxvYXQgbV9waXRjaDsKLSAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZmxvYXQg
bV92b2x1bWUgeyAxIH07CisgICAgZmxvYXQgbV9yYXRlIHsgMSB9OworICAgIGZsb2F0IG1fcGl0
Y2ggeyAxIH07CisgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgMCB9OwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQot
Ci0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmNwcAppbmRleCA1ODBmMTlkMTY3OGRlOTVlZmU2Yzk3MjAwNTlkMGViNjJiM2QwMWI4Li4yNDM3
NmNkZTkyMzA4ZjY2MDMwN2EzY2QzNWQ2ZGZiNzFkNTUyZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE3
ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCitSZWY8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1l
LCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxv
Y2FsU2VydmljZSwgaXNEZWZhdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK1Jl
ZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlKTsKIH0KLSAgICAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBi
b29sIGlzRGVmYXVsdCkKKworaW5saW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29s
IGlzRGVmYXVsdCkKICAgICA6IG1fdm9pY2VVUkkodm9pY2VVUkkpCiAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAsIG1fbGFuZyhsYW5nKQpAQCAtNDksMTIgKzQ5LDYgQEAgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcm
IHZvaWNlVVIKIHsKIH0KIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZSgpCi0gICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKLSAgICAs
IG1fZGVmYXVsdChmYWxzZSkKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggMzQzYjllN2Jh
Y2YxNWU0OTkzMjA4ZjU1ODE0ZmNlMzdmNzQ1MWQ5ZC4uMDE1OGIzNDk4NGRmNTYxZWNhN2ViZmU3
NDMwZmU4ODNmOWExOTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIxICsyMywxOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2VfaAotI2RlZmlu
ZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29s
IGlzRGVmYXVsdCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBi
b29sIGlzRGVmYXVsdCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlPiBjcmVhdGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VVUkkoKSBjb25zdCB7IHJl
dHVybiBtX3ZvaWNlVVJJOyB9CiAgICAgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBTdHJpbmcmIHZv
aWNlVVJJKSB7IG1fdm9pY2VVUkkgPSB2b2ljZVVSSTsgfQpAQCAtNTYsMTcgKzUzLDE1IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0
IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UoKTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgPSBk
ZWZhdWx0OwogCiAgICAgU3RyaW5nIG1fdm9pY2VVUkk7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAg
ICBTdHJpbmcgbV9sYW5nOwotICAgIGJvb2wgbV9sb2NhbFNlcnZpY2U7Ci0gICAgYm9vbCBtX2Rl
ZmF1bHQ7CisgICAgYm9vbCBtX2xvY2FsU2VydmljZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rl
ZmF1bHQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXgg
Y2JmZmU2ZTFjODEyYjRkZGQxNGU0NzAwM2E4Nzg0OGI0ZWYxYWRjYi4uYjg5ZDU2NjExM2Y1Y2M3
ZmRlNWU0ZWU0YjU4YThjMjlhOWI2NDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MiwxNCArNjIsMTQgQEAgU2Nyb2xsVmll
dzo6flNjcm9sbFZpZXcoKQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFBhc3NS
ZWZQdHI8V2lkZ2V0PiBwcnBDaGlsZCkgCit2b2lkIFNjcm9sbFZpZXc6OmFkZENoaWxkKFdpZGdl
dCYgY2hpbGQpCiB7Ci0gICAgV2lkZ2V0KiBjaGlsZCA9IHBycENoaWxkLmdldCgpOwotICAgIEFT
U0VSVChjaGlsZCAhPSB0aGlzICYmICFjaGlsZC0+cGFyZW50KCkpOwotICAgIGNoaWxkLT5zZXRQ
YXJlbnQodGhpcyk7Ci0gICAgbV9jaGlsZHJlbi5hZGQocHJwQ2hpbGQpOwotICAgIGlmIChjaGls
ZC0+cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcGxhdGZvcm1BZGRDaGlsZChjaGlsZCk7Cisg
ICAgQVNTRVJUKCZjaGlsZCAhPSB0aGlzKTsKKyAgICBBU1NFUlQoIWNoaWxkLnBhcmVudCgpKTsK
KyAgICBjaGlsZC5zZXRQYXJlbnQodGhpcyk7CisgICAgbV9jaGlsZHJlbi5hZGQoY2hpbGQpOwor
ICAgIGlmIChjaGlsZC5wbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBwbGF0Zm9ybUFkZENoaWxk
KCZjaGlsZCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiBjaGls
ZCkKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNTY3JvbGxiYXJJbnRl
cm5hbChSZWZQdHI8U2Nyb2xsYmFyPiYgc2Nyb2xsYmFyLCBTY3JvbGxiYXIKIAogICAgIGlmICho
YXNCYXIgJiYgIXNjcm9sbGJhcikgewogICAgICAgICBzY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxi
YXIob3JpZW50YXRpb24pOwotICAgICAgICBhZGRDaGlsZChzY3JvbGxiYXIuZ2V0KCkpOworICAg
ICAgICBhZGRDaGlsZCgqc2Nyb2xsYmFyKTsKICAgICAgICAgZGlkQWRkU2Nyb2xsYmFyKHNjcm9s
bGJhci5nZXQoKSwgb3JpZW50YXRpb24pOwogICAgICAgICBzY3JvbGxiYXItPnN0eWxlQ2hhbmdl
ZCgpOwogICAgICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKQEAgLTgyOSwxMiArODI5LDYg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSkKICAgICB3aW5kb3ctPmludmFsaWRhdGVSb290VmlldyhJbnRSZWN0KCkpOwogfQogCi1i
b29sIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QpCi17Ci0gICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Nj
cm9sbCwgY2xpcFJlY3QpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6
OnNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKIHsKICAg
ICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwodXBkYXRlUmVj
dCk7CkBAIC0xMDM4LDE3ICsxMDMyLDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6ZnJhbWVSZWN0c0No
YW5nZWQoKQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGls
ZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVy
YXRvciBjdXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJy
ZW50KQotICAgICAgICAoKmN1cnJlbnQpLT5mcmFtZVJlY3RzQ2hhbmdlZCgpOworICAgIGZvciAo
YXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+ZnJhbWVSZWN0c0NoYW5n
ZWQoKTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQoKQogewotICAgIEhh
c2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGN1
cnJlbnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0g
ICAgICAgICgqY3VycmVudCktPmNsaXBSZWN0Q2hhbmdlZCgpOworICAgIGZvciAoYXV0byYgY2hp
bGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+Y2xpcFJlY3RDaGFuZ2VkKCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhp
Y3NMYXllciwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0xMTUwLDEwICsxMTQxLDYgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5
bGUsIGJvb2wgZm9yY2VVcGRhdGUKICAgICBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwogfQog
Ci12b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCi17Ci19Ci0KIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnBh
aW50U2Nyb2xsQ29ybmVyKHRoaXMsIGNvbnRleHQsIGNvcm5lclJlY3QpOwpAQCAtMTM5Miw5ICsx
Mzc5LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
ICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAg
ICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQo
KTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hp
bGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c2V0UGFyZW50
VmlzaWJsZSh2aXNpYmxlKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAg
ICAgICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiB9CiAKIHZvaWQgU2Nyb2xs
Vmlldzo6c2hvdygpCkBAIC0xNDAyLDkgKzEzODgsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNob3co
KQogICAgIGlmICghaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIHNldFNlbGZWaXNpYmxlKHRy
dWUpOwogICAgICAgICBpZiAoaXNQYXJlbnRWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgIEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAg
ICAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2No
aWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICAoKml0KS0+
c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBt
X2NoaWxkcmVuKQorICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHRydWUp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDE1LDkgKzE0MDAsOCBAQCB2b2lkIFNjcm9sbFZp
ZXc6OmhpZGUoKQogewogICAgIGlmIChpc1NlbGZWaXNpYmxlKCkpIHsKICAgICAgICAgaWYgKGlz
UGFyZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6
aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSGFzaFNl
dDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldFBhcmVudFZpc2libGUoZmFs
c2UpOworICAgICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAg
ICAgICAgICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgICAgICB9CiAgICAg
ICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKaW5kZXggZGI1NzBkZDk4NWIxNzcyNDA5YTUxNTBhZmQ3NjNjMzBjMjQ3MTQ4Yy4u
NmIzMWY5ODJmNDI4YjA4YWFiNTU5NjU4NWZkZmM3MTFhZjRlN2ZjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNsdWRlICJT
Y3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCi0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQor
CiBPQkpDX0NMQVNTIFdBS1Njcm9sbFZpZXc7CiBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKQEAgLTQ2
LDYgKzQ2LDcgQEAgT0JKQ19DTEFTUyBXQUtWaWV3OwogI2lmbmRlZiBOU1ZpZXcKICNkZWZpbmUg
TlNWaWV3IFdBS1ZpZXcKICNlbmRpZgorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQgX19PQkpDX18KQEAgLTY0LDEwICs2NSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsVmlldygpOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFy
ZWEgZnVuY3Rpb25zLgotICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBj
b25zdCBvdmVycmlkZTsKLSAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9yaWVudGF0aW9u
KSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9mZnNl
dChjb25zdCBTY3JvbGxPZmZzZXQmKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2Nyb2xsQ29ybmVy
VmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9y
aWVudGF0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgc2Nyb2xsT2Zmc2V0KFNjcm9sbGJhck9y
aWVudGF0aW9uKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9s
bE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSBmaW5hbDsKKyAgICBib29sIGlzU2Nyb2xsQ29y
bmVyVmlzaWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2Vk
KFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Q7CkBAIC04
NSwxNCArODYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVj
dCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9u
IGFuZCBpbnNwZWN0aW9uLgotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKKyAgICBjb25zdCBIYXNo
U2V0PFJlZjxXaWRnZXQ+PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZChXaWRnZXQmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jik7CiAKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcg
ZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxh
dGZvcm0gU2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8g
b2J0YWluIHRob3NlIHNjcm9sbGJhcnMuCi0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xs
YmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgp
OyB9Ci0gICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIGhvcml6
b250YWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxi
YXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3Jv
bGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6
b250YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxk
OyB9CiAKICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMjEsNyArMTIy
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5
U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIGZpbmFsOwogCiAgICAgLy8g
QnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFyZWEgdGhh
dCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQgYmFja2lu
ZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3IHBhaW50
cyB0aGUgZW50aXJlIGNvbnRlbnRzLgpAQCAtMTY3LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAv
LyBJbiB0aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBzY3Jv
bGxpbmcgKGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMgcG9zc2libGUgdG8g
dXNlCiAgICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGluc3RlYWQgZm9yIHRo
ZSBtYWluZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51YWxseSwgZS5nIGp1
c3QgYmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1YWxseSB3aWxsIGhh
cHBlbiB3aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRzLCBvciB3aGVuIHNj
YWxlIG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIEludFNpemUgdmlzaWJs
ZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5
SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CisgICAgSW50U2l6ZSB2aXNpYmxlU2l6
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1
bWVudFZpc2libGVSZWN0KS5zaXplKCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50
UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3Q7IH0KQEAgLTIxNywxMyArMjE4LDEzIEBAIHB1YmxpYzoKIAogICAg
IC8vIEZ1bmN0aW9ucyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVu
dCBjb250YWluZWQgaW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGlu
ZGl2aWR1YWwgd2lkdGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgV0VCQ09SRV9F
WFBPUlQgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsgLy8gQWx3YXlzIGF0
IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkvdmlzaWJsZUhlaWdodCgpLgorICAg
IFdFQkNPUkVfRVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgZmluYWw7IC8vIEFs
d2F5cyBhdCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQo
KS4KICAgICBpbnQgY29udGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgp
LndpZHRoKCk7IH0KICAgICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250
ZW50c1NpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUo
Y29uc3QgSW50U2l6ZSYpOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3Vy
cmVudCBzY3JvbGxlZCBwb3NpdGlvbiAoYm90aCBhcyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGlu
ZGl2aWR1YWwgWCBhbmQgWSB2YWx1ZXMpLgotICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlP
U0RvY3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCk7IH0KKyAgICBTY3JvbGxQb3NpdGlvbiBz
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CiAKICAgICBTY3JvbGxQ
b3NpdGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsgLy8gVGhlIG1h
eGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogCkBAIC0yNTgsNyArMjU5LDcg
QEAgcHVibGljOgogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSB2ZXJ5IHRvcCBvZiB0aGUgdmlldy4K
ICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxQb3NpdGlvbiBkb2N1bWVudFNjcm9sbFBvc2l0aW9u
UmVsYXRpdmVUb1ZpZXdPcmlnaW4oKSBjb25zdDsKIAotICAgIEludFNpemUgb3ZlcmhhbmdBbW91
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGNhY2hlQ3VycmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hl
ZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb24oKTsgfQogICAgIFNjcm9sbFBvc2l0aW9u
IGNhY2hlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3Np
dGlvbjsgfQpAQCAtMzEzLDEzICszMTQsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNPZmZzY3Jl
ZW4oKSBjb25zdDsKIAogICAgIC8vIENhbGxlZCB3aGVuIG91ciBmcmFtZSByZWN0IGNoYW5nZXMg
KG9yIHRoZSByZWN0L3Njcm9sbCBwb3NpdGlvbiBvZiBhbiBhbmNlc3RvciBjaGFuZ2VzKS4KLSAg
ICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmFtZVJlY3Rz
Q2hhbmdlZCgpIGZpbmFsOwogICAgIAogICAgIC8vIFdpZGdldCBvdmVycmlkZSB0byB1cGRhdGUg
b3VyIHNjcm9sbGJhcnMgYW5kIG5vdGlmeSBvdXIgY29udGVudHMgb2YgdGhlIHJlc2l6ZS4KICAg
ICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBX
aWRnZXQgb3ZlcnJpZGUgdG8gbm90aWZ5IG91ciBjb250ZW50cyBvZiBhIGNsaXByZWN0IGNoYW5n
ZS4KLSAgICB2b2lkIGNsaXBSZWN0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFJl
Y3RDaGFuZ2VkKCkgZmluYWw7CiAKICAgICAvLyBGb3IgcGxhdGZvcm1zIHRoYXQgbmVlZCB0byBo
aXQgdGVzdCBzY3JvbGxiYXJzIGZyb20gd2l0aGluIHRoZSBlbmdpbmUncyBldmVudCBoYW5kbGVy
cyAobGlrZSBXaW4zMikuCiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXJBdFBvaW50KGNvbnN0IElu
dFBvaW50JiB3aW5kb3dQb2ludCk7CkBAIC0zNDMsMTMgKzM0NCwxMyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250
ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdpZGdldCBvdmVycmlkZXMgdG8gZW5z
dXJlIHRoYXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaXMga2VwdCB1cCB0byBk
YXRlIHdoZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzaG93KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoaWRlKCkgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBmaW5hbDsKICAgICAKICAgICAvLyBQ
YW4gc2Nyb2xsaW5nLgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAx
NTsKQEAgLTM1NywyMSArMzU4LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVBhblNjcm9s
bEljb24oKTsKICAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9p
bnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0Owot
ICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBvaW50Jik7CisgICAgYm9vbCBzY3Jv
bGxiYXJDb3JuZXJQcmVzZW50KCkgY29uc3Q7CisgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0
KCkgY29uc3QgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRS
ZWN0Jik7CiAKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmll
dyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
SW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xs
YmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5p
bmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAg
ICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVy
dEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IElu
dFBvaW50JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50JikgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgYm9vbCBpc1Njcm9s
bFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldChjb25zdCBTY3Jv
bGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpOwogCiBw
cm90ZWN0ZWQ6CkBAIC0zODQsMjYgKzM4MywyNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGF2
YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSA9IDA7CiAKICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gY3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KICAg
ICAvLyBUaGV5IHJldHVybiB0cnVlIGlmIHRoZSBzY3JvbGxiYXIgd2FzIGFkZGVkIG9yIHJlbW92
ZWQuCi0gICAgYm9vbCBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRl
bnRTaXplQWZmZWN0ZWQgPSAwKTsKLSAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJv
b2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSAwKTsKKyAgICBib29sIHNldEhhc0hvcml6
b250YWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCA9IG51bGxwdHIp
OworICAgIGJvb2wgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29udGVudFNp
emVBZmZlY3RlZCA9IG51bGxwdHIpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENv
cm5lcigpOwotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSA9IDA7
CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgZmlu
YWw7CiAKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscy4K
LSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCk7CisgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpID0gMDsKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52
YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xv
d1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CiAKICAgICB2b2lkIHNldFNjcm9sbE9y
aWdpbihjb25zdCBJbnRQb2ludCYsIGJvb2wgdXBkYXRlUG9zaXRpb25BdEFsbCwgYm9vbCB1cGRh
dGVQb3NpdGlvblN5bmNocm9ub3VzbHkpOwogCiAgICAgLy8gU3ViY2xhc3NlZCBieSBGcmFtZVZp
ZXcgdG8gY2hlY2sgdGhlIHdyaXRpbmctbW9kZSBvZiB0aGUgZG9jdW1lbnQuCi0gICAgdmlydHVh
bCBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ2FsbGVk
IHRvIHVwZGF0ZSB0aGUgc2Nyb2xsYmFycyB0byBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIHN0YXRl
IG9mIHRoZSB2aWV3LgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3Np
dGlvbiYgZGVzaXJlZFBvc2l0aW9uKTsKQEAgLTQxMSwyNyArNDEwLDI5IEBAIHByb3RlY3RlZDoK
ICAgICBmbG9hdCBwbGF0Zm9ybVRvcENvbnRlbnRJbnNldCgpIGNvbnN0OwogICAgIHZvaWQgcGxh
dGZvcm1TZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOworICAgIHZvaWQg
aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hh
bmdlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVmZXJTY3Jv
bGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zm
c2V0JiwgY29uc3QgU2Nyb2xsT2Zmc2V0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbE9m
ZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiwgY29u
c3QgU2Nyb2xsT2Zmc2V0JikgPSAwOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwg
dm9pZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSA9IDA7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICAvLyBTaXplIGF2YWlsYWJsZSBmb3IgdmlldyBjb250ZW50cywgZXhjbHVkaW5nIGNvbnRl
bnQgaW5zZXRzLiBOb3QgYWZmZWN0ZWQgYnkgem9vbWluZy4KICAgICBJbnRTaXplIHNpemVGb3JV
bm9ic2N1cmVkQ29udGVudChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBF
eGNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CiAKLSAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVj
dEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNv
bnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBW
aXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgSW50UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJl
Y3RJbmNsdWRlc1Njcm9sbGJhcnMgPSBFeGNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CiAKICAgICB2
b2lkIGNvbXBsZXRlVXBkYXRlc0FmdGVyU2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpOwogCiAgICAgYm9vbCBzZXRIYXNTY3JvbGxiYXJJbnRlcm5hbChSZWZQdHI8U2Nyb2xsYmFy
PiYsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVB
ZmZlY3RlZCk7CiAKKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsK
ICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIFNjcm9sbGJh
ck1vZGUgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZTsKQEAgLTQ0Miw3ICs0NDMsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBtX3Byb2hpYml0c1Njcm9sbGluZzsKIAotICAgIEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4+IG1fY2hpbGRyZW47CisgICAgSGFzaFNldDxSZWY8V2lkZ2V0Pj4gbV9jaGls
ZHJlbjsKIAogICAgIC8vIFRoaXMgYm9vbCBpcyB1bnVzZWQgb24gTWFjIE9TIGJlY2F1c2Ugd2Ug
ZGlyZWN0bHkgYXNrIHRoZSBwbGF0Zm9ybSB3aWRnZXQKICAgICAvLyB3aGV0aGVyIGl0IGlzIHNh
ZmUgdG8gYmxpdCBvbiBzY3JvbGwuCkBAIC00ODMsOSArNDg0LDkgQEAgcHJpdmF0ZToKIAogICAg
IEludFJlY3QgcmVjdFRvQ29weU9uU2Nyb2xsKCkgY29uc3Q7CiAKLSAgICAvLyBDYWxsZWQgd2hl
biB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZpZXcgY2hhbmdlcy4gIEZyYW1lVmll
dyBvdmVycmlkZXMgdGhpcyB0byBnZW5lcmF0ZSByZXBhaW50IGludmFsaWRhdGlvbnMuCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIHsg
fQorICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoaXMgdmll
dyBjaGFuZ2VzLiBGcmFtZVZpZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBp
bnZhbGlkYXRpb25zLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVy
U2Nyb2xsaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVy
c0FmdGVyU2Nyb2xsaW5nKCkgPSAwOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFkZENoaWxkKFdpZGdl
dCopOwogICAgIHZvaWQgcGxhdGZvcm1SZW1vdmVDaGlsZChXaWRnZXQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZS5oCmluZGV4IDU5MTE5NzhhZWVjMThmMDgzZmRiZjg1ZjFhZjNlZDI0MTc5MDExNjUu
LjMxNGE4ZGY3NTkwOTkxNTM5Mjc1YWFkNGEzOWRkOWI2YzhlYTZlMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMZW5ndGhT
aXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExl
bmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVy
biB6b29tZWRTaXplOyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSBzaXplIGZv
ciBhIGNvbnRyb2wgaW4gem9vbWVkIGNvb3JkaW5hdGVzLiAgCi0gICAgdmlydHVhbCBMZW5ndGhT
aXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBm
bG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsgfQorICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5p
bXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6
b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0g
fTsgfQogICAgIAogICAgIC8vIEFsbG93cyB0aGUgdGhlbWUgdG8gbW9kaWZ5IHRoZSBleGlzdGlu
ZyBwYWRkaW5nL2JvcmRlci4KICAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJv
eCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmgKaW5kZXggOWEwZGYxNzAwOGYyMTc0YmQxN2ZiMzYxNjgzNzQ5
NWE0M2MxOGE3Yy4uOGY1YWQ5MzYyNzMxMWJlMjMyNjFmMTQ3OGNjNDZlYmVhZDNjZWY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVu
bmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwyMSArMjIs
MTYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25faAotI2RlZmluZSBBbmltYXRpb25f
aAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0j
aWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0jaW5jbHVkZSAiQW5pbWF0aW9uVHJp
Z2dlci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1
ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCisjaW5jbHVkZSAiQW5pbWF0aW9u
VHJpZ2dlci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMjAgKzU3
LDIwIEBAIHB1YmxpYzoKIAogICAgIC8vIEZsYWdzIHRoaXMgdG8gYmUgdGhlIHNwZWNpYWwgIm5v
bmUiIGFuaW1hdGlvbiAoYW5pbWF0aW9uLW5hbWU6IG5vbmUpCiAgICAgYm9vbCBpc05vbmVBbmlt
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTm9uZTsgfQorCiAgICAgLy8gV2UgY2FuIG1ha2Ug
cGxhY2Vob2xkZXIgQW5pbWF0aW9uIG9iamVjdHMgdG8ga2VlcCB0aGUgY29tbWEtc2VwYXJhdGVk
IGxpc3RzCiAgICAgLy8gb2YgcHJvcGVydGllcyBpbiBzeW5jLiBpc1ZhbGlkQW5pbWF0aW9uIG1l
YW5zIHRoaXMgaXMgbm90IGEgcGxhY2Vob2xkZXIuCiAgICAgYm9vbCBpc1ZhbGlkQW5pbWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gIW1faXNOb25lICYmICFtX25hbWUuaXNFbXB0eSgpOyB9CiAKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICghbV9kaXJlY3Rp
b25TZXQgJiYgIW1fZHVyYXRpb25TZXQgJiYgIW1fZmlsbE1vZGVTZXQKLSAgICAgICAgICAgICAg
ICAmJiAhbV9uYW1lU2V0ICYmICFtX3BsYXlTdGF0ZVNldCAmJiAhbV9pdGVyYXRpb25Db3VudFNl
dAotICAgICAgICAgICAgICAgICYmICFtX2RlbGF5U2V0ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0
ICYmICFtX3Byb3BlcnR5U2V0CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0g
ICAgICAgICAgICAgICAgJiYgIW1fdHJpZ2dlclNldCk7Ci0jZWxzZQotICAgICAgICAgICAgICAg
ICk7CisgICAgICAgIGlmIChtX3RyaWdnZXJTZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKKyAgICAgICAgcmV0dXJuICFtX2RpcmVjdGlvblNldCAmJiAhbV9kdXJhdGlvblNl
dCAmJiAhbV9maWxsTW9kZVNldAorICAgICAgICAgICAgJiYgIW1fbmFtZVNldCAmJiAhbV9wbGF5
U3RhdGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRTZXQKKyAgICAgICAgICAgICYmICFtX2RlbGF5
U2V0ICYmICFtX3RpbWluZ0Z1bmN0aW9uU2V0ICYmICFtX3Byb3BlcnR5U2V0OwogICAgIH0KIAog
ICAgIGJvb2wgaXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkgY29uc3QKQEAgLTExNCwxMSArMTA5LDcg
QEAgcHVibGljOgogCiAgICAgZG91YmxlIGRlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheTsg
fQogCi0gICAgZW51bSBBbmltYXRpb25Nb2RlIHsKLSAgICAgICAgQW5pbWF0ZUFsbCwKLSAgICAg
ICAgQW5pbWF0ZU5vbmUsCi0gICAgICAgIEFuaW1hdGVTaW5nbGVQcm9wZXJ0eQotICAgIH07Cisg
ICAgZW51bSBBbmltYXRpb25Nb2RlIHsgQW5pbWF0ZUFsbCwgQW5pbWF0ZU5vbmUsIEFuaW1hdGVT
aW5nbGVQcm9wZXJ0eSB9OwogCiAgICAgZW51bSBBbmltYXRpb25EaXJlY3Rpb24gewogICAgICAg
ICBBbmltYXRpb25EaXJlY3Rpb25Ob3JtYWwsCkBAIC0xMzksMTAgKzEzMCwxMCBAQCBwdWJsaWM6
CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVTY29wZU9yZGluYWwoKSBjb25zdCB7
IHJldHVybiBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbDsgfQogICAgIEVBbmltUGxheVN0YXRlIHBs
YXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVBbmltUGxheVN0YXRlPihtX3Bs
YXlTdGF0ZSk7IH0KICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eTsgfQotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbjsgfQorICAgIFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb24uZ2V0
KCk7IH0KICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBt
X21vZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBQYXNzUmVm
UHRyPEFuaW1hdGlvblRyaWdnZXI+IHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3RyaWdnZXI7
IH0KKyAgICBBbmltYXRpb25UcmlnZ2VyKiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmln
Z2VyLmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0RGVsYXkoZG91YmxlIGMpIHsgbV9k
ZWxheSA9IGM7IG1fZGVsYXlTZXQgPSB0cnVlOyB9CkBAIC0xNTgsMTAgKzE0OSwxMCBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZvaWQgc2V0UGxheVN0YXRlKEVBbmltUGxheVN0YXRlIGQpIHsgbV9w
bGF5U3RhdGUgPSBkOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgdCkgeyBtX3Byb3BlcnR5ID0gdDsgbV9wcm9wZXJ0eVNldCA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rp
b24+IGYpIHsgbV90aW1pbmdGdW5jdGlvbiA9IGY7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0cnVl
OyB9CisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihSZWZQdHI8VGltaW5nRnVuY3Rpb24+JiYg
ZnVuY3Rpb24pIHsgbV90aW1pbmdGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyBtX3RpbWlu
Z0Z1bmN0aW9uU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QW5pbWF0aW9uTW9kZShBbmltYXRp
b25Nb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9O
U19MRVZFTF8yKQotICAgIHZvaWQgc2V0VHJpZ2dlcihQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdn
ZXI+IHQpIHsgbV90cmlnZ2VyID0gdDsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQg
c2V0VHJpZ2dlcihSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4mJiB0cmlnZ2VyKSB7IG1fdHJpZ2dl
ciA9IFdURk1vdmUodHJpZ2dlcik7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KICNlbmRpZgogCiAg
ICAgdm9pZCBzZXRJc05vbmVBbmltYXRpb24oYm9vbCBuKSB7IG1faXNOb25lID0gbjsgfQpAQCAt
MTk3LDIyICsxODgsMjIgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZpbGxNb2RlIDogMjsK
IAogCi0gICAgdW5zaWduZWQgbV9wbGF5U3RhdGUgICAgIDogMjsKKyAgICB1bnNpZ25lZCBtX3Bs
YXlTdGF0ZSA6IDI7CiAKLSAgICBib29sIG1fZGVsYXlTZXQgICAgICAgICAgOiAxOwotICAgIGJv
b2wgbV9kaXJlY3Rpb25TZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX2R1cmF0aW9uU2V0ICAgICAg
IDogMTsKLSAgICBib29sIG1fZmlsbE1vZGVTZXQgICAgICAgOiAxOworICAgIGJvb2wgbV9kZWxh
eVNldCA6IDE7CisgICAgYm9vbCBtX2RpcmVjdGlvblNldCA6IDE7CisgICAgYm9vbCBtX2R1cmF0
aW9uU2V0IDogMTsKKyAgICBib29sIG1fZmlsbE1vZGVTZXQgOiAxOwogICAgIGJvb2wgbV9pdGVy
YXRpb25Db3VudFNldCA6IDE7Ci0gICAgYm9vbCBtX25hbWVTZXQgICAgICAgICAgIDogMTsKLSAg
ICBib29sIG1fcGxheVN0YXRlU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9wcm9wZXJ0eVNldCAg
ICAgICA6IDE7CisgICAgYm9vbCBtX25hbWVTZXQgOiAxOworICAgIGJvb2wgbV9wbGF5U3RhdGVT
ZXQgOiAxOworICAgIGJvb2wgbV9wcm9wZXJ0eVNldCA6IDE7CiAgICAgYm9vbCBtX3RpbWluZ0Z1
bmN0aW9uU2V0IDogMTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBi
b29sIG1fdHJpZ2dlclNldCAgICAgICAgOiAxOworICAgIGJvb2wgbV90cmlnZ2VyU2V0IDogMTsK
ICNlbmRpZgogCi0gICAgYm9vbCBtX2lzTm9uZSAgICAgICAgICAgIDogMTsKKyAgICBib29sIG1f
aXNOb25lIDogMTsKIAogcHVibGljOgogICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbERlbGF5KCkg
eyByZXR1cm4gMDsgfQpAQCAtMjIzLDEyICsyMTQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcmIGluaXRpYWxOYW1lKCk7CiAgICAgc3RhdGljIEVBbmltUGxheVN0YXRlIGlu
aXRpYWxQbGF5U3RhdGUoKSB7IHJldHVybiBBbmltUGxheVN0YXRlUGxheWluZzsgfQogICAgIHN0
YXRpYyBDU1NQcm9wZXJ0eUlEIGluaXRpYWxQcm9wZXJ0eSgpIHsgcmV0dXJuIENTU1Byb3BlcnR5
SW52YWxpZDsgfQotICAgIHN0YXRpYyBjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBp
bml0aWFsVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxUaW1p
bmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgp
OyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgc3RhdGljIGNvbnN0
IFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gaW5pdGlhbFRyaWdnZXIoKSB7IHJldHVybiBB
dXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlv
blRyaWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4gQXV0b0FuaW1hdGlvblRyaWdnZXI6
OmNyZWF0ZSgpOyB9CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEFuaW1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5jcHAKaW5kZXggNjI1ZDc5MDE1YTA3NDA2YTI5OTg4MDEzYTY1
MjA2YjUwODQyNzFlYS4uMGEzMjAyMjU0NTliMWZkMDY2MjY1ZWYyY2Q3YTU5ZGU3MjI1NzI0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcApAQCAtMjYsMTUgKzI2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmlu
ZSBGSUxMX1VOU0VUX1BST1BFUlRZKHRlc3QsIHByb3BHZXQsIHByb3BTZXQpIFwKIGZvciAoaSA9
IDA7IGkgPCBzaXplKCkgJiYgYW5pbWF0aW9uKGkpLnRlc3QoKTsgKytpKSB7IH0gXAotaWYgKGkg
PCBzaXplKCkgJiYgaSAhPSAwKSB7IFwKK2lmIChpKSB7IFwKICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaSA8IHNpemUoKTsgKytpLCArK2opIFwKICAgICAgICAgYW5pbWF0aW9uKGkpLnByb3BTZXQo
YW5pbWF0aW9uKGopLnByb3BHZXQoKSk7IFwKIH0KIAogQW5pbWF0aW9uTGlzdDo6QW5pbWF0aW9u
TGlzdChjb25zdCBBbmltYXRpb25MaXN0JiBvdGhlcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG90aGVyLnNpemUoKTsgKytpKQotICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKG90aGVyLmFuaW1hdGlvbihpKSkpOworICAgIG1fYW5pbWF0aW9ucy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBhbmlt
YXRpb24gOiBvdGhlci5tX2FuaW1hdGlvbnMpCisgICAgICAgIG1fYW5pbWF0aW9ucy51bmNoZWNr
ZWRBcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKSk7CiB9CiAKIHZvaWQg
QW5pbWF0aW9uTGlzdDo6ZmlsbFVuc2V0UHJvcGVydGllcygpCkBAIC01NSw5ICs1NiwxMCBAQCBi
b29sIEFuaW1hdGlvbkxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIp
IGNvbnN0CiB7CiAgICAgaWYgKHNpemUoKSAhPSBvdGhlci5zaXplKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGFuaW1hdGlv
bihpKSAhPSBvdGhlci5hbmltYXRpb24oaSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaAppbmRleCBjODRjYjliMWQxNTE2M2QwNzY4OTM3
NDYxNzQwNmQ4NDk0MGRhYWZlLi5lYTdjOWI3OGExOTUwZjE1ZTk0ZmFhYmFhOTUxYjQ4MTU1MmY3
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25MaXN0LmgKQEAgLTIyLDggKzIyLDcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25M
aXN0X2gKLSNkZWZpbmUgQW5pbWF0aW9uTGlzdF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDYgKzM1LDcgQEAg
Y2xhc3MgQW5pbWF0aW9uTGlzdCB7CiBwdWJsaWM6CiAgICAgQW5pbWF0aW9uTGlzdCgpIHsgfQog
ICAgIEFuaW1hdGlvbkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYpOworICAgIEFuaW1hdGlvbkxp
c3QoQW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGZpbGxVbnNldFByb3Bl
cnRpZXMoKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uTGlzdCYpIGNvbnN0
OwpAQCAtNDksMjIgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2l6ZShzaXpl
X3QgbikgeyBtX2FuaW1hdGlvbnMucmVzaXplKG4pOyB9CiAgICAgdm9pZCByZW1vdmUoc2l6ZV90
IGkpIHsgbV9hbmltYXRpb25zLnJlbW92ZShpKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQ
dHI8QW5pbWF0aW9uPiBhbmltYXRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0aW9u
KTsKLSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChhbmltYXRpb24pOwotICAgIH0KLSAgICAK
LSAgICBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgeyByZXR1cm4gKm1fYW5pbWF0aW9u
c1tpXTsgfQotICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSBjb25zdCB7
IHJldHVybiAqbV9hbmltYXRpb25zW2ldOyB9CisgICAgdm9pZCBhcHBlbmQoUmVmPEFuaW1hdGlv
bj4mJiBhbmltYXRpb24pIHsgbV9hbmltYXRpb25zLmFwcGVuZChXVEZNb3ZlKGFuaW1hdGlvbikp
OyB9CisKKyAgICBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgeyByZXR1cm4gbV9hbmlt
YXRpb25zW2ldLmdldCgpOyB9CisgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90
IGkpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uc1tpXS5nZXQoKTsgfQogICAgIAogcHJpdmF0
ZToKICAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oY29uc3QgQW5pbWF0aW9uTGlzdCYpOwor
ICAgIEFuaW1hdGlvbkxpc3QmIG9wZXJhdG9yPShBbmltYXRpb25MaXN0JiYpID0gZGVmYXVsdDsK
IAotICAgIFZlY3RvcjxSZWZQdHI8QW5pbWF0aW9uPj4gbV9hbmltYXRpb25zOworICAgIFZlY3Rv
cjxSZWY8QW5pbWF0aW9uPj4gbV9hbmltYXRpb25zOwogfTsgICAgCiAKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQW5pbWF0aW9uTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAppbmRleCBmY2E0
NWMxMGQyMTA0ZjA1ZWRlYmI3ODgwMDE0YTI2M2E2NWIxZTExLi41ZWEwMWIyMGIyNjI3YjhkOTdi
YTM1ZjNlMmQ3Y2JlNGE1NTI5NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKQEAgLTIzLDI5ICsyMywyNCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvblRyaWdnZXJfaAotI2RlZmluZSBB
bmltYXRpb25UcmlnZ2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKENTU19BTklNQVRJ
T05TX0xFVkVMXzIpCiAKICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEFuaW1hdGlvblRyaWdnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRpb25UcmlnZ2VyPiB7
CiBwdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gY2xv
bmUoKSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIGNsYXNzIEFuaW1hdGlvblRyaWdnZXJUeXBlIHsK
LSAgICAgICAgQXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlLCBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
VHlwZQotICAgIH07CisgICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIH5BbmltYXRpb25UcmlnZ2VyKCkgeyB9CiAKKyAgICBl
bnVtIGNsYXNzIEFuaW1hdGlvblRyaWdnZXJUeXBlIHsgQXV0b0FuaW1hdGlvblRyaWdnZXJUeXBl
LCBTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZSB9OwogICAgIEFuaW1hdGlvblRyaWdnZXJUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGJvb2wgaXNBdXRvQW5pbWF0
aW9uVHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBBbmltYXRpb25UcmlnZ2VyVHlw
ZTo6QXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlOyB9CkBAIC02MiwxNiArNTcsMTQgQEAgcHJvdGVj
dGVkOgogICAgIEFuaW1hdGlvblRyaWdnZXJUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIEF1dG9B
bmltYXRpb25UcmlnZ2VyIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgeworY2xhc3MgQXV0b0Fu
aW1hdGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCisg
ICAgc3RhdGljIFJlZjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+QXV0b0FuaW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewogICAgICAg
ICByZXR1cm4gb3RoZXIuaXNBdXRvQW5pbWF0aW9uVHJpZ2dlcigpOwogICAgIH0KQEAgLTgyLDIy
ICs3NSwyMCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1h
dGlvblRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJp
Z2dlcj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiB9OwogCi1jbGFzcyBTY3JvbGxBbmltYXRp
b25UcmlnZ2VyIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgeworY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3Ro
IHN0YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNjcm9sbEFuaW1h
dGlvblRyaWdnZXI+IGNyZWF0ZShMZW5ndGggc3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
KHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNj
cm9sbEFuaW1hdGlvblRyaWdnZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAg
ICAgICAgaWYgKCFvdGhlci5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEzMyw5ICsxMjQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9lbmRWYWx1ZSA9IGVuZFZhbHVlOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9u
VHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25UcmlnZ2Vy
PiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIobV9zdGFydFZhbHVlLCBtX2VuZFZhbHVlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIobV9zdGFydFZh
bHVlLCBtX2VuZFZhbHVlKSk7CiAgICAgfQogCiAgICAgTGVuZ3RoIG1fc3RhcnRWYWx1ZTsKQEAg
LTE1NCw1ICsxNDUsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FOSU1BVElPTl9UUklHR0VS
KEF1dG9BbmltYXRpb25UcmlnZ2VyLCBpc0F1dG9BbmltYXRpb25UcgogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19BTklNQVRJT05fVFJJR0dFUihTY3JvbGxBbmltYXRpb25UcmlnZ2VyLCBpc1Njcm9s
bEFuaW1hdGlvblRyaWdnZXIpOwogCiAjZW5kaWYKLQotI2VuZGlmIC8vIEFuaW1hdGlvblRyaWdn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWlu
Z0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVu
Y3Rpb24uaAppbmRleCBmNWU2NjE2YTk3Y2Q1M2M2YmNhZTEzNWRkMzZjYzQ3YzJmYjdjOGNjLi5m
Y2FhM2MzZmZkYjZkZWIyYWJlZWJjOGQwMjBhMGQzOWRhMzJmNzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaApAQCAtMjIsNTQg
KzIyLDUwIEBACiAgKgogICovCiAKLSNpZm5kZWYgVGltaW5nRnVuY3Rpb25faAotI2RlZmluZSBU
aW1pbmdGdW5jdGlvbl9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRl
eHRTdHJlYW07CisKIGNsYXNzIFRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VGlt
aW5nRnVuY3Rpb24+IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIFJlZjxUaW1pbmdGdW5jdGlvbj4g
Y2xvbmUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rp
b24+IGNsb25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgewot
ICAgICAgICBMaW5lYXJGdW5jdGlvbiwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlv
biwgU3ByaW5nRnVuY3Rpb24KLSAgICB9OwotICAgIAogICAgIHZpcnR1YWwgflRpbWluZ0Z1bmN0
aW9uKCkgeyB9CiAKKyAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7IExpbmVhckZ1bmN0aW9u
LCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9uLCBTcHJpbmdGdW5jdGlvbiB9Owog
ICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0g
ICAgCisKICAgICBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gTGluZWFyRnVuY3Rpb247IH0KICAgICBib29sIGlzQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDdWJpY0JlemllckZ1bmN0aW9uOyB9
CiAgICAgYm9vbCBpc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gU3RlcHNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTcHJpbmdGdW5jdGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgPSAwOworCisg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mKSBjb25zdCA9
IDA7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogcHJvdGVjdGVkOgotICAgIFRpbWlu
Z0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQorICAgIGV4cGxpY2l0IFRpbWluZ0Z1
bmN0aW9uKFRpbWluZ0Z1bmN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQog
ICAgIHsKICAgICB9Ci0gICAgCisKK3ByaXZhdGU6CiAgICAgVGltaW5nRnVuY3Rpb25UeXBlIG1f
dHlwZTsKIH07CiAKIGNsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRp
bWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMaW5lYXJUaW1p
bmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPExpbmVhclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1p
bmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1
bmN0aW9uKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+TGluZWFyVGltaW5nRnVuY3Rpb24o
KSB7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90
aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYg
b3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJU
aW1pbmdGdW5jdGlvbigpOwogICAgIH0KQEAgLTgwLDYxICs3Niw1NCBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwogICAg
IH0KIH07CiAKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMg
VGltaW5nRnVuY3Rpb24gewogcHVibGljOgotICAgIGVudW0gVGltaW5nRnVuY3Rpb25QcmVzZXQg
ewotICAgICAgICBFYXNlLAotICAgICAgICBFYXNlSW4sCi0gICAgICAgIEVhc2VPdXQsCi0gICAg
ICAgIEVhc2VJbk91dCwKLSAgICAgICAgQ3VzdG9tCi0gICAgfTsKKyAgICBlbnVtIFRpbWluZ0Z1
bmN0aW9uUHJlc2V0IHsgRWFzZSwgRWFzZUluLCBFYXNlT3V0LCBFYXNlSW5PdXQsIEN1c3RvbSB9
OwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+
IGNyZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCisgICAg
c3RhdGljIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoZG91YmxlIHgxLCBk
b3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEN1c3RvbSwgeDEsIHkxLCB4Miwg
eTIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbihDdXN0b20sIHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVm
PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSk7CiAgICAgfQog
ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpCisgICAgc3RhdGljIFJlZjxDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQog
ICAgIHsKICAgICAgICAgc3dpdGNoIChwcmVzZXQpIHsKICAgICAgICAgY2FzZSBFYXNlOgotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbik7CiAgICAgICAgIGNhc2UgRWFzZUluOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbiwgMC40MiwgMC4wLCAxLjAsIDEu
MCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNl
T3V0OgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKEVhc2VPdXQsIDAuMCwgMC4wLCAwLjU4LCAxLjApKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZU91dCwgMC4wLCAw
LjAsIDAuNTgsIDEuMCkpOwogICAgICAgICBjYXNlIEVhc2VJbk91dDoKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW5PdXQsIDAu
NDIsIDAuMCwgMC41OCwgMS4wKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW5PdXQsIDAu
NDIsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgIGNhc2UgQ3VzdG9tOgorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24pOwogICAgIH0K
IAotICAgIHZpcnR1YWwgfkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSB7IH0KLSAgICAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZp
bmFsCiAgICAgewotICAgICAgICBpZiAob3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9
IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPigmb3RoZXIpOwot
ICAgICAgICAgICAgaWYgKG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgIT0gQ3VzdG9tKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID09IGN0Zi0+bV90aW1pbmdG
dW5jdGlvblByZXNldDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIG1feDEgPT0g
Y3RmLT5tX3gxICYmIG1feTEgPT0gY3RmLT5tX3kxICYmIG1feDIgPT0gY3RmLT5tX3gyICYmIG1f
eTIgPT0gY3RmLT5tX3kyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgb3RoZXJDdWJpYyA9IHN0YXRpY19jYXN0PGNv
bnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mPihvdGhlcik7CisgICAgICAgIGlmIChtX3Rp
bWluZ0Z1bmN0aW9uUHJlc2V0ICE9IG90aGVyQ3ViaWMubV90aW1pbmdGdW5jdGlvblByZXNldCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1fdGltaW5nRnVuY3Rpb25Q
cmVzZXQgIT0gQ3VzdG9tKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBtX3gxID09IG90aGVyQ3ViaWMubV94MSAmJiBtX3kxID09IG90aGVyQ3ViaWMubV95MSAmJiBt
X3gyID09IG90aGVyQ3ViaWMubV94MiAmJiBtX3kyID09IG90aGVyQ3ViaWMubV95MjsKICAgICB9
CiAKICAgICBkb3VibGUgeDEoKSBjb25zdCB7IHJldHVybiBtX3gxOyB9CkBAIC0xNDksMjEgKzEz
OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1feDIgPSB4MjsKICAgICAgICAgbV95MiA9IHkyOwog
ICAgIH0KLSAgICAKKwogICAgIFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHRpbWluZ0Z1bmN0aW9uUHJl
c2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldDsgfQogICAgIHZvaWQg
c2V0VGltaW5nRnVuY3Rpb25QcmVzZXQoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KSB7IG1f
dGltaW5nRnVuY3Rpb25QcmVzZXQgPSBwcmVzZXQ7IH0KLSAgICAKLSAgICBzdGF0aWMgY29uc3Qg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCkKKworICAg
IHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBkZWZhdWx0VGltaW5nRnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24qIGR0ZiA9IGNyZWF0ZSgpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGR0ZjsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGZ1bmN0aW9uID0g
Y3JlYXRlKCkubGVha1JlZigpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogCi0g
ICAgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNlZCgp
IGNvbnN0CisgICAgUmVmPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2Vk
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoMS4wIC0gbV94MiwgMS4wIC0g
bV95MiwgMS4wIC0gbV94MSwgMS4wIC0gbV95MSk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb25QcmVz
ZXQgcHJlc2V0ID0gRWFzZSwgZG91YmxlIHgxID0gMC4yNSwgZG91YmxlIHkxID0gMC4xLCBkb3Vi
bGUgeDIgPSAwLjI1LCBkb3VibGUgeTIgPSAxLjApCiAgICAgICAgIDogVGltaW5nRnVuY3Rpb24o
Q3ViaWNCZXppZXJGdW5jdGlvbikKQEAgLTE3NSw5ICsxNjQsOSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24o
bV90aW1pbmdGdW5jdGlvblByZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKG1fdGltaW5n
RnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKICAgICB9CiAKICAgICBk
b3VibGUgbV94MTsKQEAgLTE4OSwyNSArMTc4LDIxIEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0ZXBz
VGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGltaW5nRnVuY3Rpb24gewogcHVibGljOgot
ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShp
bnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1
bmN0aW9uPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9uKHN0ZXBzLCBzdGVwQXRT
dGFydCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9u
KHN0ZXBzLCBzdGVwQXRTdGFydCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVw
c1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdGdW5j
dGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNU
aW1pbmdGdW5jdGlvbigxLCB0cnVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
ZXBzVGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5T
dGVwc1RpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgaWYg
KG90aGVyLmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBjb25zdCBTdGVw
c1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0
aW9uKj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVybiBtX3N0ZXBzID09IHN0Zi0+bV9zdGVw
cyAmJiBtX3N0ZXBBdFN0YXJ0ID09IHN0Zi0+bV9zdGVwQXRTdGFydDsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghb3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyU3Rl
cHMgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAg
ICAgICByZXR1cm4gbV9zdGVwcyA9PSBvdGhlclN0ZXBzLm1fc3RlcHMgJiYgbV9zdGVwQXRTdGFy
dCA9PSBvdGhlclN0ZXBzLm1fc3RlcEF0U3RhcnQ7CiAgICAgfQogICAgIAogICAgIGludCBudW1i
ZXJPZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQpAQCAtMjE1LDcgKzIwMCw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgc3RlcEF0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBB
dFN0YXJ0OyB9CiAgICAgdm9pZCBzZXRTdGVwQXRTdGFydChib29sIHN0ZXBBdFN0YXJ0KSB7IG1f
c3RlcEF0U3RhcnQgPSBzdGVwQXRTdGFydDsgfQotICAgIAorCiBwcml2YXRlOgogICAgIFN0ZXBz
VGltaW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgICAgICA6IFRp
bWluZ0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCkBAIC0yMjQsOSArMjA5LDkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVwc1RpbWluZ0Z1bmN0aW9u
KG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RlcHNUaW1pbmdGdW5jdGlvbihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CiAgICAgfQogICAg
IAogICAgIGludCBtX3N0ZXBzOwpAQCAtMjQ3LDEzICsyMzIsMTIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY3JlYXRlKDAsIDAsIDAsIDApOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICBpZiAob3RoZXIuaXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiYgb3RoZXJTdHJpbmcgPSAqc3RhdGljX2Nhc3Q8
Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24qPigmb3RoZXIpOwotICAgICAgICAgICAgcmV0dXJu
IG1fbWFzcyA9PSBvdGhlclN0cmluZy5tX21hc3MgJiYgbV9zdGlmZm5lc3MgPT0gb3RoZXJTdHJp
bmcubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90aGVyU3RyaW5nLm1fZGFtcGluZyAmJiBt
X2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlclN0cmluZy5tX2luaXRpYWxWZWxvY2l0eTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghb3RoZXIuaXNTcHJpbmdU
aW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRv
JiBvdGhlclNwcmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uJj4o
b3RoZXIpOworICAgICAgICByZXR1cm4gbV9tYXNzID09IG90aGVyU3ByaW5nLm1fbWFzcyAmJiBt
X3N0aWZmbmVzcyA9PSBvdGhlclNwcmluZy5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3Ro
ZXJTcHJpbmcubV9kYW1waW5nICYmIG1faW5pdGlhbFZlbG9jaXR5ID09IG90aGVyU3ByaW5nLm1f
aW5pdGlhbFZlbG9jaXR5OwogICAgIH0KIAogICAgIGRvdWJsZSBtYXNzKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNzOyB9CkBAIC0yNzksOSArMjYzLDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3Rp
ZmZuZXNzLCBtX2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKG1fbWFzcywgbV9zdGlmZm5lc3MsIG1f
ZGFtcGluZywgbV9pbml0aWFsVmVsb2NpdHkpKTsKICAgICB9CiAKICAgICBkb3VibGUgbV9tYXNz
OwpAQCAtMjkwLDkgKzI3NCw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1faW5pdGlhbFZlbG9j
aXR5OwogfTsKIAotY2xhc3MgVGV4dFN0cmVhbTsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFRpbWluZ0Z1bmN0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDRmOWI1ZjU1Y2M4NDNmNGFiODdk
ZTM1NTQzOWY4NmQ5Nzg2ZDE2ZWEuLmQxOGRiZGQ5NDQyNDY1ZDMzZTdlOWQwZTdkY2Y4NGU2ZTAz
YzA1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0
IHsgcmV0dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9CiAKICAgICBBdWRpb0NoYW5uZWwqIGNoYW5u
ZWwodW5zaWduZWQgY2hhbm5lbCkgeyByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsg
fQotICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBjaGFubmVsKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PEF1ZGlvQnVzKj4odGhpcyktPm1fY2hhbm5lbHNbY2hhbm5l
bF0uZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hh
bm5lbCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsgfQogICAgIEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKTsKICAgICBjb25zdCBBdWRp
b0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCAxZWM1M2Q4YTAx
MjdmYzE5YmE1OGJhNmQ0ZGYyYzlkMTlhOTc1NmJmLi42MTlhMmMwNDAyZTIxODVlOTMyZGRhMWRl
MTE4MmE0ZTFlNTBlMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xNDAsMTIgKzE0MCwxMSBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjpl
bmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0
YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOworICAgIGF1dG8gZGF0YSA9IGFk
b3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9v
dERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBu
dWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YS5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGZjNThmYjY1ZGZl
ZWRmYzI1NWI1ZTljN2EyZWM3OGFlNmFlOTUyMDMuLjgyYjZiNjE1Njg3N2UwNDNjYzYxZDgzNmJh
YTkyYTRiMmM0NzEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgS2V5ZWRFbmNvZGVyQ0ZfaAotI2RlZmluZSBLZXllZEVuY29k
ZXJDRl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsMjUgKzM2LDI1IEBAIHB1YmxpYzoKICAgICBLZXll
ZEVuY29kZXJDRigpOwogICAgIH5LZXllZEVuY29kZXJDRigpOwogCi0gICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7Ci0KIHByaXZh
dGU6Ci0gICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgdWludDMyX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3Ry
aW5nJiBrZXksIGludDMyX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3Qg
U3RyaW5nJiBrZXksIGludDY0X3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlRmxvYXQoY29u
c3QgU3RyaW5nJiBrZXksIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZURvdWJsZShj
b25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKworICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOworICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgZmlu
YWw7CisgICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmRPYmplY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luT2Jq
ZWN0KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsKKyAgICB2b2lkIGVuZE9iamVjdCgpIGZpbmFs
OwogCi0gICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheUVs
ZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQXJy
YXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAg
ICB2b2lkIGVuZEFycmF5KCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlv
bmFyeVJlZj4gbV9yb290RGljdGlvbmFyeTsKIApAQCAtNjQsNSArNjMsMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRFbmNvZGVyQ0Zf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKaW5kZXggYjM4ZDJjYWZlN2I2OTAzZGQ0
NGZhNmMzNmNlMzQwMWU4ZTczYjU2Yi4uNzc4MjAxNzQxMjdhZTVkYTM1YTYxYmE0YTg2YWQwZmJl
MzRmMzNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCkBAIC0yMywxMyArMjMs
MTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92
aWRlckVmbF9oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmxfaAor
I3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUg
PHNwZWFrX2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03Niw1ICs3
NCwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
UHJvdmlkZXJFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKaW5kZXggZDQ5MjEzNjQzMDk5YzJiYTc0NWViZmQ2OTdlYjE1MWEzZmU1
M2ZmMS4uODFjYmVkNTNkMTE1ZTQ0ZjEzNGMxMjI2ZDYzNDYyYzU5OGU0NDkyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9h
cnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3Zhcmlh
bnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRy
PEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWls
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmgKaW5kZXggMmQ3YjFjMzRmNzE5YjI0ODY3NzI2MjI1ZTEzYjk3NzQyZDJjYjNiYy4uZjkxYjRk
ZGIzMzE1ZjY2ZWM0ZTBjMTlmZDI3MDY3M2I2YzQ3NWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5j
b2RlckdsaWJfaAotI2RlZmluZSBLZXllZEVuY29kZXJHbGliX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zOSwyNSArMzgs
MjUgQEAgcHVibGljOgogICAgIEtleWVkRW5jb2RlckdsaWIoKTsKICAgICB+S2V5ZWRFbmNvZGVy
R2xpYigpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKLSAgICB2b2lk
IGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QpIG92ZXJyaWRl
OwotICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBmaW5hbDsKKworICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVVSW50MzIoY29u
c3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUludDY0KGNv
bnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUZsb2F0KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVEb3VibGUoY29u
c3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbk9i
amVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRPYmplY3QoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBmaW5hbDsK
KyAgICB2b2lkIGVuZE9iamVjdCgpIGZpbmFsOwogCi0gICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0
IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVu
ZEFycmF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5
KSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBl
bmRBcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5KCkgZmluYWw7CiAKICAg
ICBHVmFyaWFudEJ1aWxkZXIgbV92YXJpYW50QnVpbGRlcjsKICAgICBWZWN0b3I8R1ZhcmlhbnRC
dWlsZGVyKiwgMTY+IG1fdmFyaWFudEJ1aWxkZXJTdGFjazsKQEAgLTY2LDUgKzY1LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5j
b2RlckdsaWJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAppbmRleCBkMDU2ZWJmZTIyYWFlODE1OTRlODhiYTRiMmU3ODIxNTM5ZGI3OTdhLi5hZjQ4YjBi
OTI0MmM1OTcwMGVlZWIzNjJjYWI2ZTAzZTVhZjZkMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMjcsMTUgKzI3LDEzIEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgRm9udENhY2hlX2gKLSNkZWZpbmUgRm9udENhY2hlX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CkBAIC0yOTAsNSArMjg4LDMgQEAgaW5saW5lIHZvaWQgRm9udENh
Y2hlOjpwbGF0Zm9ybVB1cmdlSW5hY3RpdmVGb250RGF0YSgpCiAjZW5kaWYKIAogfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaAppbmRleCA5MzAzYTkwNWIwOTcxM2EyZDVjY2IyMzliMmQ5Nzc1ZGU4MTFhYTU2Li5h
ZDM4MmY0MTVhM2I1MTBlZmU0MTNiZWY3YTlkYWNmMWRmOWMzODg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCwgMjAx
My0yMDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVs
IG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENl
bnRlciBVU0EsIEluYy4KQEAgLTIyLDEwICsyMiwxNSBAQAogICoKICAqLwogCi0jaWZuZGVmIEZv
bnRQbGF0Zm9ybURhdGFfaAotI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KKwogCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIkNPTVB0ci5oIgpAQCAtNDQsMjUg
KzQ5LDE4IEBACiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKEFQUEtJVCkKIE9CSkNfQ0xBU1MgTlNGb250Owog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RG
b250KiBDVEZvbnRSZWY7Ci0KICNlbmRpZgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVj
dC5oPgogdHlwZWRlZiBzdHJ1Y3QgSEZPTlRfXyogSEZPTlQ7CkBAIC03MCw3ICs2OCw2IEBAIGlu
dGVyZmFjZSBJRFdyaXRlRm9udDsKIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiAjZW5kaWYK
IAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKQEAgLTgy
LDEwICs3OSw3IEBAIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewogcHVibGljOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKICAgICBGb250UGxh
dGZvcm1EYXRhKCk7Ci0jaWYgIVVTRShGUkVFVFlQRSkKLSAgICBGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmKSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLSAgICBGb250UGxhdGZv
cm1EYXRhKEZvbnRQbGF0Zm9ybURhdGEmJikgPSBkZWZhdWx0OworCiAgICAgRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7
CiAgICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwgRm9udFdp
ZHRoVmFyaWFudCA9IFJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBBdXRvVGV4dFJl
bmRlcmluZyk7CiAKQEAgLTEwMywyNyArOTcsMzYgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgZmxvYXQgc2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJKTsK
KyNlbmRpZgogCi0jaWYgVVNFKENHKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKQogICAg
IEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgQ0dGb250UmVmLCBmbG9hdCBzaXpl
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9vbCB1c2VHREkp
OwotI2VsaWYgVVNFKERJUkVDVDJEKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVT
RShESVJFQ1QyRCkKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIElEV3Jp
dGVGb250KiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09i
bGlxdWUsIGJvb2wgdXNlR0RJKTsKLSNlbGlmIFVTRShDQUlSTykKLSAgICBGb250UGxhdGZvcm1E
YXRhKEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2ZvbnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9v
bCBib2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENBSVJPKQorICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgY2Fpcm9fZm9u
dF9mYWNlX3QqLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKICNlbmRpZgog
CiAjaWYgVVNFKEZSRUVUWVBFKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoRmNQYXR0ZXJuKiwgY29u
c3QgRm9udERlc2NyaXB0aW9uJik7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2Zh
Y2VfdCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNPYmxpcXVlKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKEZvbnRQbGF0Zm9ybURhdGEmJikgPSBkZWZh
dWx0OworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1E
YXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KEZvbnRQbGF0Zm9ybURhdGEm
JikgPSBkZWZhdWx0OwogICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1f
Zm9udC0+Z2V0KCkgOiAwOyB9CiAgICAgYm9vbCB1c2VHREkoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUdESTsgfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIENURm9udFJlZiBmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250LmdldCgpOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1RGb250UmVmIHJlZ2lzdGVyZWRGb250KCkgY29uc3Q7IC8v
IFJldHVybnMgbnVsbHB0ciBpZmYgdGhlIGZvbnQgaXMgbm90IHJlZ2lzdGVyZWQsIHN1Y2ggYXMg
d2ViIGZvbnRzIChvdGhlcndpc2UgcmV0dXJucyBmb250KCkpLgogCkBAIC0xODksMTIgKzE5Miw2
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFVTRShGUkVFVFlQRSkKLSAgICBGb250
UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwotI2Vsc2UK
LSAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYp
ID0gZGVmYXVsdDsKLSNlbmRpZgotCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtSXNF
cXVhbChvdGhlcikKQEAgLTIzMiwxMiArMjI5LDE1IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBib29sIHBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJikgY29uc3Q7CisK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBDR0Zsb2F0IGN0Rm9udFNpemUoKSBjb25zdDsKICNl
bmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgcGxhdGZvcm1EYXRhSW5pdChIRk9O
VCwgZmxvYXQgc2l6ZSwgSERDLCBXQ0hBUiogZmFjZU5hbWUpOwogI2VuZGlmCisKICNpZiBVU0Uo
RlJFRVRZUEUpCiAgICAgdm9pZCBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fZm9udF9mYWNlX3QqKTsK
ICNlbmRpZgpAQCAtMjUzLDEzICsyNTMsMTYgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpICYmIChQ
TEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwKSkKICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBtX2Nn
Rm9udDsKICNlbmRpZgorCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIENPTVB0cjxJRFdyaXRlRm9u
dD4gbV9kd0ZvbnQ7CiAgICAgQ09NUHRyPElEV3JpdGVGb250RmFjZT4gbV9kd0ZvbnRGYWNlOwog
I2VuZGlmCisKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+
IG1fc2NhbGVkRm9udDsKICNlbmRpZgorCiAjaWYgVVNFKEZSRUVUWVBFKQogICAgIFJlZlB0cjxG
Y1BhdHRlcm4+IG1fcGF0dGVybjsKICAgICBtdXRhYmxlIEZjVW5pcXVlUHRyPEZjRm9udFNldD4g
bV9mYWxsYmFja3M7CkBAIC0yODUsMTUgKzI4OCwxOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KElPUykKICAgICBib29sIG1faXNFbW9qaSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICBib29sIG1fdXNlR0RJIHsgZmFsc2UgfTsKICNlbmRpZgorCiAjaWYgVVNF
KEZSRUVUWVBFKQogICAgIGJvb2wgbV9maXhlZFdpZHRoIHsgZmFsc2UgfTsKICNlbmRpZgogfTsK
IAogI2lmIFVTRShBUFBLSVQpCisKIC8vIE5TRm9udHMgYW5kIENURm9udFJlZnMgYXJlIHRvbGwt
ZnJlZS1icmlkZ2VkLgogaW5saW5lIENURm9udFJlZiB0b0NURm9udChOU0ZvbnQgKmZvbnQpCiB7
CkBAIC0zMDQsOSArMzEwLDExIEBAIGlubGluZSBOU0ZvbnQgKnRvTlNGb250KENURm9udFJlZiBm
b250KQogewogICAgIHJldHVybiAoTlNGb250ICopZm9udDsKIH0KKwogI2VuZGlmCiAKICNpZiBV
U0UoQ0cpCisKIGNsYXNzIFNjb3BlZFRleHRNYXRyaXggewogcHVibGljOgogICAgIFNjb3BlZFRl
eHRNYXRyaXgoQ0dBZmZpbmVUcmFuc2Zvcm0gbmV3TWF0cml4LCBDR0NvbnRleHRSZWYgY29udGV4
dCkKQEAgLTMzMCw4ICszMzgsNyBAQCBwcml2YXRlOgogICAgIENHQ29udGV4dFJlZiBtX2NvbnRl
eHQ7CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV90ZXh0TWF0cml4OwogfTsKKwogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEZvbnRQbGF0Zm9ybURhdGFfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmlu
ZGV4IGQ5MTlmZmRiZTU0ZmMyNTlhNjFmMTUxYWRlNzcwNWI3M2Q4MzYwMGMuLmZlMzdkMjUzNGJm
YzEwNzEyYjY0MDEyMWUyZjViZDIzMjRiYWViYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFwaGljc0xheWVyX2gKLSNkZWZpbmUgR3Jh
cGhpY3NMYXllcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCkBAIC04MCwxMSArNzksMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IG1fa2V5
VGltZShvdGhlci5tX2tleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbihvdGhlci5t
X3RpbWluZ0Z1bmN0aW9uID8gb3RoZXIubV90aW1pbmdGdW5jdGlvbi0+Y2xvbmUoKSA6IG51bGxw
dHIpCisgICAgICAgICwgbV90aW1pbmdGdW5jdGlvbihvdGhlci5tX3RpbWluZ0Z1bmN0aW9uID8g
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB7IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkg
fSA6IG51bGxwdHIpCiAgICAgewogICAgIH0KIAorICAgIEFuaW1hdGlvblZhbHVlKEFuaW1hdGlv
blZhbHVlJiYpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKKyAgICB2b2lkIG9wZXJhdG9yPShjb25z
dCBBbmltYXRpb25WYWx1ZSYpID0gZGVsZXRlOworCiAgICAgZG91YmxlIG1fa2V5VGltZTsKICAg
ICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiB9OwpAQCAtMTA0LDEy
ICsxMDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKLSAgICBGbG9hdEFuaW1hdGlvblZhbHVl
KGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIG90aGVyKQotICAgICAgICA6IEFuaW1hdGlvblZh
bHVlKG90aGVyKQotICAgICAgICAsIG1fdmFsdWUob3RoZXIubV92YWx1ZSkKLSAgICB7Ci0gICAg
fQotCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByaXZh
dGU6CkBAIC0xMzQsMTAgKzEzMSwxMyBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IEFu
aW1hdGlvblZhbHVlKG90aGVyKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1f
dmFsdWUub3BlcmF0aW9ucygpLmFwcGVuZChvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKVtpXS0+
Y2xvbmUoKSk7CisgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiBvcGVyYXRpb24gOiBvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKSkKKyAgICAgICAgICAg
IG1fdmFsdWUub3BlcmF0aW9ucygpLnVuY2hlY2tlZEFwcGVuZChvcGVyYXRpb24tPmNsb25lKCkp
OwogICAgIH0KIAorICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJiYpID0gZGVmYXVsdDsKKwogICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAtMTYyLDEwICsx
NjIsMTMgQEAgcHVibGljOgogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBBbmltYXRpb25WYWx1ZShvdGhlcikKICAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIubV92YWx1ZS5vcGVyYXRp
b25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBl
bmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0tPmNsb25lKCkpOworICAgICAgICBtX3Zh
bHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWUub3Bl
cmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3RoZXIu
bV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51
bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgpKTsKICAgICB9CiAKKyAgICBGaWx0ZXJB
bmltYXRpb25WYWx1ZShGaWx0ZXJBbmltYXRpb25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
IAogcHJpdmF0ZToKQEAgLTE4NSwxMyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICBLZXlmcmFtZVZh
bHVlTGlzdChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgICAgIDogbV9wcm9w
ZXJ0eShvdGhlci5wcm9wZXJ0eSgpKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvdGhlci5tX3ZhbHVlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFsdWVzLmFw
cGVuZChvdGhlci5tX3ZhbHVlc1tpXS0+Y2xvbmUoKSk7CisgICAgICAgIG1fdmFsdWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IG90aGVyLm1fdmFsdWVzKQorICAgICAgICAgICAgbV92YWx1ZXMudW5jaGVj
a2VkQXBwZW5kKHZhbHVlLT5jbG9uZSgpKTsKICAgICB9CiAKLSAgICB+S2V5ZnJhbWVWYWx1ZUxp
c3QoKQotICAgIHsKLSAgICB9CisgICAgS2V5ZnJhbWVWYWx1ZUxpc3QoS2V5ZnJhbWVWYWx1ZUxp
c3QmJikgPSBkZWZhdWx0OwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QmIG9wZXJhdG9yPShjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewpAQCAtMjAwLDYgKzIwMiw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIEtleWZyYW1lVmFsdWVM
aXN0JiBvcGVyYXRvcj0oS2V5ZnJhbWVWYWx1ZUxpc3QmJikgPSBkZWZhdWx0OworCiAgICAgdm9p
ZCBzd2FwKEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICB7CiAgICAgICAgIHN0ZDo6c3dh
cChtX3Byb3BlcnR5LCBvdGhlci5tX3Byb3BlcnR5KTsKQEAgLTIxMCwxMCArMjE0LDEwIEBAIHB1
YmxpYzoKIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgp
OyB9CiAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVy
biAqbV92YWx1ZXMuYXQoaSk7IH0KLSAgICAKKwogICAgIC8vIEluc2VydCwgc29ydGVkIGJ5IGtl
eVRpbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnQoc3RkOjp1bmlxdWVfcHRyPGNv
bnN0IEFuaW1hdGlvblZhbHVlPik7Ci0gICAgCisKIHByb3RlY3RlZDoKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IEFuaW1hdGlvblZhbHVlPj4gbV92YWx1ZXM7CiAgICAgQW5pbWF0
ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CkBAIC0yMjUsNyArMjI5LDYgQEAgcHJvdGVjdGVkOgog
Y2xhc3MgR3JhcGhpY3NMYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NM
YXllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotCiAgICAgZW51bSBjbGFz
cyBUeXBlIHsKICAgICAgICAgTm9ybWFsLAogICAgICAgICBQYWdlVGlsZWRCYWNraW5nLApAQCAt
MjQxLDcgKzI0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFR5
cGUpIHsgfQogCi0gICAgdHlwZWRlZiB1aW50NjRfdCBQbGF0Zm9ybUxheWVySUQ7CisgICAgdXNp
bmcgUGxhdGZvcm1MYXllcklEID0gdWludDY0X3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
SUQgcHJpbWFyeUxheWVySUQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICBHcmFwaGljc0xh
eWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtNjgzLDUg
KzY4NiwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIC8vIE91dHNpZGUgdGhlIFdl
YkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSB0aGUgZGVidWdnZXIu
CiB2b2lkIHNob3dHcmFwaGljc0xheWVyVHJlZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBsYXllcik7CiAjZW5kaWYKLQotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4
IDgyNDVkNGU2ZGE3MzUzODgyZWE5Y2UyN2E1MzcyNWUxY2ZlODE2ZGUuLjg1NDZjNzEyZjY0YTE3
MDZkNjIwYjM1MjM0NjRiZWY1NWJkOGNhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTIzLDIxICsyMywxOCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RNU2Vz
c2lvbl9oCi0jZGVmaW5lIENETVNlc3Npb25faAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5DRE1TZXNz
aW9uQ2xpZW50KCkgeyB9OworICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGllbnQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlv
blVSTCkgPSAwOwogCiAgICAgZW51bSB7CkBAIC02NCw3ICs2MSw2IEBAIGVudW0gQ0RNU2Vzc2lv
blR5cGUgewogCiBjbGFzcyBDRE1TZXNzaW9uIHsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uKCkg
eyB9CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbigpIHsgfQogCiAgICAgdmlydHVhbCBDRE1TZXNz
aW9uVHlwZSB0eXBlKCkgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVVbmtub3duOyB9CkBAIC03OSw1
ICs3NSwzIEBAIHB1YmxpYzoKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IGIxNzYzMjQ3YzEwMmY2
OTBhODQ3YTI2OGI5OTA2Mjk3ZWJiNzRlNDMuLjkxNGEwYTI3N2YyYTQ2NzgzNjVlMzIzMjdkMDI2
OWEyMGJmOGNkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCkBAIC00ODYsMTQgKzQ4NiwxNSBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3RGcm9tUG9seWdvbihjb25zdCBGbG9hdFBvaW50R3JhcGg6OlBv
bHlnb24mCiAgICAgcmV0dXJuIEZsb2F0UmVjdCh0b3BMZWZ0LnZhbHVlKCksIGJvdHRvbVJpZ2h0
LnZhbHVlKCkpOwogfQogCi1QYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBl
ZFJlY3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IEJv
cmRlckRhdGEmIGJvcmRlckRhdGEsIGZsb2F0IG91dGxpbmVPZmZzZXQsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uLAotICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikKK1BhdGggUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHNG
b3JPdXRsaW5lKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgY29uc3QgQm9yZGVyRGF0
YSYgYm9yZGVyRGF0YSwKKyAgICBmbG9hdCBvdXRsaW5lT2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQogewogICAgIEFTU0VSVChib3JkZXJEYXRhLmhhc0JvcmRlclJhZGl1cygpKTsKLSAgICBGbG9h
dFNpemUgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJEYXRhLnRvcExlZnQoKS53aWR0
aCgpLnZhbHVlKCksIGJvcmRlckRhdGEudG9wTGVmdCgpLmhlaWdodCgpLnZhbHVlKCkpOwotICAg
IEZsb2F0U2l6ZSB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJEYXRhLnRvcFJpZ2h0
KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcFJpZ2h0KCkuaGVpZ2h0KCkudmFsdWUo
KSk7Ci0gICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRh
dGEuYm90dG9tUmlnaHQoKS53aWR0aCgpLnZhbHVlKCksIGJvcmRlckRhdGEuYm90dG9tUmlnaHQo
KS5oZWlnaHQoKS52YWx1ZSgpKTsKLSAgICBGbG9hdFNpemUgYm90dG9tTGVmdFJhZGl1cyA9IEZs
b2F0U2l6ZShib3JkZXJEYXRhLmJvdHRvbUxlZnQoKS53aWR0aCgpLnZhbHVlKCksIGJvcmRlckRh
dGEuYm90dG9tTGVmdCgpLmhlaWdodCgpLnZhbHVlKCkpOworCisgICAgRmxvYXRTaXplIHRvcExl
ZnRSYWRpdXMgeyBib3JkZXJEYXRhLnRvcExlZnQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRh
LnRvcExlZnQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSB0b3BSaWdodFJhZGl1
cyB7IGJvcmRlckRhdGEudG9wUmlnaHQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcFJp
Z2h0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXMg
eyBib3JkZXJEYXRhLmJvdHRvbVJpZ2h0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS5ib3R0
b21SaWdodCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIGJvdHRvbUxlZnRSYWRp
dXMgeyBib3JkZXJEYXRhLmJvdHRvbUxlZnQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLmJv
dHRvbUxlZnQoKS5oZWlnaHQudmFsdWUoKSB9OwogCiAgICAgYXV0byByb3VuZGVkUmVjdCA9IFt0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMsIGJvdHRvbUxl
ZnRSYWRpdXMsIG91dGxpbmVPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yXSAoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25B
VkZvdW5kYXRpb25DRi5jcHAKaW5kZXggZDc1NDZlMjY4NzEzZjhkNDVjZDVjZjhmOTQ2YWVhZDVm
NDQ5ZGUyMC4uODYxODVmYzJiYzE4MmU5MmVlOTBiYzI2ZTFkNTgxZmRiZDk4MTE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKQEAg
LTQ0LDE2ICs0NCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkZv
dW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Np
b25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKQogICAgIDogbV9w
YXJlbnQocGFyZW50KQotICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zZXNzaW9uSWQo
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQogewogfQogCi1SZWZQdHI8VWludDhBcnJheT4g
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkws
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQorUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBVTlVT
RURfUEFSQU0oaW5pdERhdGEpOwogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CkBA
IC03MCwzNSArNjgsMzAgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9yZXF1ZXN0ID0gbV9wYXJlbnQtPnRha2VSZXF1ZXN0
Rm9yS2V5VVJJKGtleVVSSSk7CisgICAgbV9yZXF1ZXN0ID0gbV9wYXJlbnQudGFrZVJlcXVlc3RG
b3JLZXlVUkkoa2V5VVJJKTsKICAgICBpZiAoIW1fcmVxdWVzdCkgewogICAgICAgICBlcnJvckNv
ZGUgPSBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY2VydGlmaWNh
dGVEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGNlcnRpZmljYXRlLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlRGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZXJ0aWZp
Y2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVE
YXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGUtPmJh
c2VBZGRyZXNzKCkpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAotICAgIENTdHJpbmcg
YXNzZXRTdHIgPSBrZXlJRC51dGY4KCk7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+
IGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKKyAgICBhdXRvIGFzc2V0U3RyID0ga2V5SUQudXRmOCgp
OworICAgIGF1dG8gYXNzZXRJRCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBhc3NldFN0ci5sZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVz
KGFzc2V0SUQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihhc3NldFN0ci5k
YXRhKCkpLCBhc3NldFN0ci5sZW5ndGgoKSk7CiAKICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBu
dWxscHRyOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGtleVJlcXVlc3QgPSBhZG9wdENGKEFW
Q0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RDcmVhdGVTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHAobV9yZXF1ZXN0LmdldCgpLCBjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIGFz
c2V0SUQuZ2V0KCksIG51bGxwdHIsICZjZkVycm9yKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0ID0g
YWRvcHRDRihBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRh
LmdldCgpLCBhc3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOwogCiAgICAgaWYgKCFr
ZXlSZXF1ZXN0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZv
OwogICAgICAgICBpZiAoY2ZFcnJvcikgewotICAgICAgICAgICAgdXNlckluZm8gPSBhZG9wdENG
KENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcikpOwotCi0gICAgICAgICAgICBpZiAodXNlcklu
Zm8pIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZFcnJvclJlZiB1bmRlcmx5aW5nRXJyb3IgPSAo
Q0ZFcnJvclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JV
bmRlcmx5aW5nRXJyb3JLZXkpKQorICAgICAgICAgICAgaWYgKGF1dG8gdXNlckluZm8gPSBhZG9w
dENGKENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcikpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGF1dG8gdW5kZXJseWluZ0Vycm9yID0gKENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtDRkVycm9yVW5kZXJseWluZ0Vycm9yS2V5KSkKICAgICAgICAgICAg
ICAgICAgICAgc3lzdGVtQ29kZSA9IENGRXJyb3JHZXRDb2RlKHVuZGVybHlpbmdFcnJvcik7CiAg
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIENGUmVsZWFzZShjZkVycm9yKTsKICAgICAgICAg
fQotCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTA2LDggKzk5LDggQEAg
UmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWkKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBkZXN0aW5h
dGlvblVSTCA9IFN0cmluZygpOwogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBrZXlSZXF1ZXN0
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3Qu
Z2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5UmVxdWVzdC5nZXQoKSkpOwotICAgIHJldHVybiBV
aW50OEFycmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoa2V5UmVxdWVzdC5nZXQoKSksIENGRGF0YUdldExlbmd0
aChrZXlSZXF1ZXN0LmdldCgpKSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogI2VuZGlmCiB9CiAKQEAgLTExNyw3ICsxMTAsNyBAQCB2b2lkIENETVNlc3Npb25BVkZvdW5k
YXRpb25DRjo6cmVsZWFzZUtleXMoKQogCiBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6
dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwg
dW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7Ci0gICAg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGtleURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5LT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBh
dXRvIGtleURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5LT5ieXRlTGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRh
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oa2V5LT5iYXNlQWRkcmVzcygp
KSwga2V5LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdEZpbmlzaExvYWRpbmdXaXRoUmVzcG9uc2UobV9yZXF1ZXN0LmdldCgpLCBudWxscHRyLCBr
ZXlEYXRhLmdldCgpLCBudWxscHRyKTsKQEAgLTEyNSw3ICsxMTgsNiBAQCBib29sIENETVNlc3Np
b25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJy
YXk+JiBuZXh0TQogICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5
c3RlbUNvZGUgPSAwOwogICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKLQogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGLmgKaW5kZXggNjUyNGQxZGYwYjMxMGI2ZmZlOTQ2NWM1NDM4NmFkZGJmOGE0ZDlmZS4uMTJh
NmE3OTMxZWVlYWY0MDE1ZmZiNTY2MGUzZjcwMTcwNTVjYWVjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZv
dW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAtMjMsMTEgKzIzLDExIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0ZfaAotI2RlZmluZSBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Zf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKIApAQCAtMzcsMjYgKzM3LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiAKLWNsYXNzIENETVNl
c3Npb25BVkZvdW5kYXRpb25DRiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Np
b25BVkZvdW5kYXRpb25DRiBmaW5hbCA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKIHB1YmxpYzoKLSAg
ICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YqIHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopOwotICAgIHZpcnR1YWwgfkNETVNlc3Npb25B
VkZvdW5kYXRpb25DRigpIHsgfQotCi0gICAgdm9pZCBzZXRDbGllbnQoQ0RNU2Vzc2lvbkNsaWVu
dCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9Ci0gICAgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQot
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1cGRhdGUoVWludDhB
cnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgot
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBtX3BhcmVudDsKLSAgICBDRE1T
ZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKLSAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CisgICAgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBw
YXJlbnQsIENETVNlc3Npb25DbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNldENsaWVu
dChDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgfQorICAgIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBSZWZQ
dHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9pZCBy
ZWxlYXNlS2V5cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8
VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50
MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiYgbV9wYXJlbnQ7CisgICAgY29uc3QgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIFJl
dGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiBtX3JlcXVlc3Q7CiB9
OwogCiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCmluZGV4IGQxYTA2M2UwZmI1ODdjZmMwZDVhMDFiNDE1NjdhMGI3YjZk
YzAyZTUuLjQ5ZDM1MDkyMjE1YzY4MTg2MmIzMTFiOTY4YTBmMGU5NTc4MjM2ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcApAQCAtMTEyMiw2ICsxMTIyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6cmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0CiB9CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorCiBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdFJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnRha2VSZXF1ZXN0Rm9y
S2V5VVJJKGNvbnN0IFN0cmluZyYga2V5VVJJKQogewogICAgIGlmICghbV9hdmZXcmFwcGVyKQpA
QCAtMTEzNSwxMyArMTEzNiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29ucwogICAgIGlmICgh
a2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+
KHRoaXMsIGNsaWVudCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KKwogI2VsaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCi1zdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sICwgQ0RNU2Vzc2lvbkNsaWVudCopCisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgQ0RNU2Vzc2lvbkNsaWVudCopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CisKICNlbmRpZgogCiBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjph
c3NldEVycm9yQ29kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAppbmRleCBkZjAzY2NiNjEyOTAxOWUwYzg4NDI2ZDc4
MGFhZWRlNTI2ZTIwYjI5Li5iYmMwNWQ1MDdmNDI1NjY3OWZiN2Q3YmNmNzIwZDg1MjZjMWFjMzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTIzLDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAotI2Rl
ZmluZSBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCkBAIC02Niw1ICs2NiwzIEBAIHBy
b3RlY3RlZDoKIH0KIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBiYTQ5NjM1OTdkYWRmMGUyZmNjNTI4ZmM4MWNjMzIx
NWU4Y2QyYmVlLi5mYTQ0NDRiMWVjZmFhMmMwZTYyOTA3ODA4NWZmYTZmYzJiMjk2YWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKQEAgLTkyNCw4ICs5MjQsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5p
bWF0aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaQog
CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgLy8gSWYgdGhlcmUgaXMg
YSB0cmlnZ2VyIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2Nyb2xsIHBvc2l0aW9uLCB3ZSBjYW5ub3Qg
YWNjZWxlcmF0ZSB0aGUgYW5pbWF0aW9uLgotICAgIGlmIChhbmltLT50cmlnZ2VyKCktPmlzU2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcigpKSB7Ci0gICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXIm
IHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqYW5pbS0+
dHJpZ2dlcigpLmdldCgpKTsKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oYW5p
bS0+dHJpZ2dlcigpKSkgeworICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0tPnRyaWdnZXIoKSk7CiAgICAgICAgIGlmIChz
Y3JvbGxUcmlnZ2VyLmhhc0VuZFZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtMjgwNSw3ICsyODA1LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
bnQgYW5pbWF0aW9uSW5kZXggPSAwOwogICAgIAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBjYUFuaW1hdGlvbjsKLSAgICAKKwogICAgIGlmIChpc0tleWZyYW1lKSB7CiAgICAgICAg
IGNhQW5pbWF0aW9uID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCBwcm9wZXJ0
eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7CiAgICAgICAgIHZh
bHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFu
aW1hdGlvbi5nZXQoKSk7CkBAIC0yODE2LDcgKzI4MTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdQogICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmlt
YXRpb24sIHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0aXZl
KTsKICAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBh
bmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIXZh
bHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMjQsMTMgKzMwMjQsMTIgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
IHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZp
bGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgYW5pbVZh
bHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCitjb25zdCBUaW1pbmdGdW5jdGlvbiYgR3JhcGhp
Y3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlv
blZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKIHsKICAgICBpZiAoYW5p
bVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICphbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKTsK
ICAgICBpZiAoYW5pbS5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmlt
LnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Ci0gICAgCisgICAgICAgIHJldHVybiAqYW5pbS50aW1p
bmdGdW5jdGlvbigpOwogICAgIHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZh
dWx0VGltaW5nRnVuY3Rpb24oKTsKIH0KIApAQCAtMzA1NCw5ICszMDUzLDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LAogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZy
YW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAg
ICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRp
b24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pOwotICAgIGlm
ICh0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0
aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0
aW9uKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFu
aW1hdGlvbiksICFmb3J3YXJkcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwODYsMTMg
KzMwODMsMTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rp
b25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3Vy
VmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAg
ICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRp
b24pKTsKICAgICB9Ci0gICAgCisKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRp
bWVzKTsKICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyh2YWx1ZXMpOwogICAgIGtleWZyYW1l
QW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRpbWluZ0Z1bmN0aW9ucywgIWZvcndhcmRzKTsKLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTA1LDggKzMxMDIsOCBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZyb21JbmRleCA9ICFmb3J3YXJkczsKICAg
ICB1bnNpZ25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAgICAgCi0gICAgY29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSYgZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CisgICAgYXV0byYgc3Rh
cnRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFs
dWVMaXN0LmF0KGZyb21JbmRleCkpOworICAgIGF1dG8mIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwog
CiAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwpAQCAtMzE0OSwxMCArMzE0Niw5IEBAIGJv
b2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7
Ci0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndh
cmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKCZ0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbiksICFmb3J3YXJkcyk7
CiAKLSAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0
aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3Jt
T3BUeXBlKTsKKyAgICBhdXRvIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZv
clRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwogICAgIGlmICh2YWx1ZUZ1bmN0
aW9uICE9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbikKICAgICAgICAgYmFz
aWNBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24pOwogCkBAIC0zMjA0LDcgKzMy
MDAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJh
bWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25z
LmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFs
dWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAgICAg
dGltaW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShm
b3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24p
KTsKICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7
CkBAIC0zMjYwLDcgKzMyNTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5p
bWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgLy8g
VGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0
aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rp
b24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZy
YW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmltLT5zZXRUaW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgw
KSwgKmFuaW1hdGlvbiksICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICph
bmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjg4LDcg
KzMyODQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJh
bWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rp
b25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3Vy
VmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOworICAgICAgICAg
ICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCgmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRp
b24pKTsKICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1l
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oCmluZGV4IGQyNDk3YzMxZGFhYjNiNGZhZDk1OTU0ZDc1M2UwNmEzMmE1ZjVk
NjYuLjIyM2IxNWZmMGZlYzYxMzA1MmY4ZjQzNDI5NmU1ZGRmMGIxMGMwZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlU3ByaW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgYWRkaXRpdmUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFu
aW1hdGlvbiosIGNvbnN0IEFuaW1hdGlvbiosIGJvb2wgYWRkaXRpdmUpOwogICAgIAotICAgIGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0
IEFuaW1hdGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CisgICAgY29uc3QgVGltaW5nRnVu
Y3Rpb24mIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFs
dWUmLCBjb25zdCBBbmltYXRpb24mKTsKICAgICAKICAgICBib29sIHNldEFuaW1hdGlvbkVuZHBv
aW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3Jt
Q0FBbmltYXRpb24qKTsKICAgICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IGUxZDBhOTc5YTRlOTE4YTJjYzczYjZlNTEx
MDM5ZGY5YmU0MDA3MTAuLmRjMmJlMWI4NzViNGJlN2FkZWZkNjcyYWJhODFiNmRkMDdlOTYzYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0OSArMzUsMzMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgaW5saW5lIEludFNpemUgb3V0c2V0U2l6ZUZvckJsdXIoZmxvYXQg
c3RkRGV2aWF0aW9uKQogewotICAgIEludFNpemUga2VybmVsU2l6ZSA9IEZFR2F1c3NpYW5CbHVy
OjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRQb2ludChzdGREZXZpYXRpb24sIHN0
ZERldmlhdGlvbikpOworICAgIGF1dG8ga2VybmVsU2l6ZSA9IEZFR2F1c3NpYW5CbHVyOjpjYWxj
dWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRQb2ludChzdGREZXZpYXRpb24sIHN0ZERldmlh
dGlvbikpOwogCi0gICAgSW50U2l6ZSBvdXRzZXQ7CiAgICAgLy8gV2UgdGFrZSB0aGUgaGFsZiBr
ZXJuZWwgc2l6ZSBhbmQgbXVsdGlwbHkgaXQgd2l0aCB0aHJlZSwgYmVjYXVzZSB3ZSBydW4gYm94
IGJsdXIgdGhyZWUgdGltZXMuCi0gICAgb3V0c2V0LnNldFdpZHRoKDMgKiBrZXJuZWxTaXplLndp
ZHRoKCkgKiAwLjVmKTsKLSAgICBvdXRzZXQuc2V0SGVpZ2h0KDMgKiBrZXJuZWxTaXplLmhlaWdo
dCgpICogMC41Zik7Ci0KLSAgICByZXR1cm4gb3V0c2V0OwotfQotCi1GaWx0ZXJPcGVyYXRpb25z
OjpGaWx0ZXJPcGVyYXRpb25zKCkKLXsKLX0KLQotRmlsdGVyT3BlcmF0aW9ucyYgRmlsdGVyT3Bl
cmF0aW9uczo6b3BlcmF0b3I9KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKQotewotICAg
IG1fb3BlcmF0aW9ucyA9IG90aGVyLm1fb3BlcmF0aW9uczsKLSAgICByZXR1cm4gKnRoaXM7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgMyAqIGtlcm5lbFNpemUud2lkdGgoKSAvIDIsCisgICAgICAg
IDMgKiBrZXJuZWxTaXplLmhlaWdodCgpIC8gMgorICAgIH07CiB9CiAKLWJvb2wgRmlsdGVyT3Bl
cmF0aW9uczo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvKSBjb25zdAorYm9v
bCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90
aGVyKSBjb25zdAogewotICAgIGlmIChtX29wZXJhdGlvbnMuc2l6ZSgpICE9IG8ubV9vcGVyYXRp
b25zLnNpemUoKSkKKyAgICBzaXplX3Qgc2l6ZSA9IG1fb3BlcmF0aW9ucy5zaXplKCk7CisgICAg
aWYgKHNpemUgIT0gb3RoZXIubV9vcGVyYXRpb25zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgdW5zaWduZWQgcyA9IG1fb3BlcmF0aW9ucy5zaXplKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHM7IGkrKykgewotICAgICAgICBpZiAoKm1fb3BlcmF0aW9uc1tp
XSAhPSAqby5tX29wZXJhdGlvbnNbaV0pCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICAgICAgaWYgKCptX29wZXJhdGlvbnNbaV0gIT0gKm90aGVyLm1fb3BlcmF0
aW9uc1tpXSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgc2l6ZV90IG51bU9wZXJhdGlv
bnMgPSBvcGVyYXRpb25zKCkuc2l6ZSgpOwotICAgIC8vIElmIHRoZSBzaXplcyBvZiB0aGUgZnVu
Y3Rpb24gbGlzdHMgZG9uJ3QgbWF0Y2gsIHRoZSBsaXN0cyBkb24ndCBtYXRjaAotICAgIGlmIChu
dW1PcGVyYXRpb25zICE9IG90aGVyLm9wZXJhdGlvbnMoKS5zaXplKCkpCisgICAgc2l6ZV90IHNp
emUgPSBvcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIGlmIChzaXplICE9IG90aGVyLm9wZXJhdGlv
bnMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIElmIHRoZSB0eXBl
cyBvZiBlYWNoIGZ1bmN0aW9uIGFyZSBub3QgdGhlIHNhbWUsIHRoZSBsaXN0cyBkb24ndCBtYXRj
aAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtT3BlcmF0aW9uczsgKytpKSB7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFvcGVyYXRp
b25zKClbaV0tPmlzU2FtZVR5cGUoKm90aGVyLm9wZXJhdGlvbnMoKVtpXSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODYsOCArNzAsOCBAQCBib29sIEZpbHRlck9wZXJh
dGlvbnM6Om9wZXJhdGlvbnNNYXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikgY29u
c3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIoKSBjb25zdAog
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChtX29wZXJhdGlvbnMuYXQoaSktPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRp
b246OlJFRkVSRU5DRSkKKyAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykg
eworICAgICAgICBpZiAob3BlcmF0aW9uLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZF
UkVOQ0UpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtOTUsOSArNzksOSBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc1JlZmVyZW5jZUZp
bHRlcigpIGNvbnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzT3V0c2V0cygpIGNvbnN0
CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUg
PSBtX29wZXJhdGlvbnMuYXQoaSkuZ2V0KCktPnR5cGUoKTsKLSAgICAgICAgaWYgKG9wZXJhdGlv
blR5cGUgPT0gRmlsdGVyT3BlcmF0aW9uOjpCTFVSIHx8IG9wZXJhdGlvblR5cGUgPT0gRmlsdGVy
T3BlcmF0aW9uOjpEUk9QX1NIQURPVykKKyAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3Bl
cmF0aW9ucykgeworICAgICAgICBhdXRvIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gRmlsdGVyT3BlcmF0aW9uOjpCTFVSIHx8IHR5cGUgPT0gRmlsdGVyT3Bl
cmF0aW9uOjpEUk9QX1NIQURPVykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMDYsMTEgKzkwLDEwIEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9u
czo6aGFzT3V0c2V0cygpIGNvbnN0CiBGaWx0ZXJPdXRzZXRzIEZpbHRlck9wZXJhdGlvbnM6Om91
dHNldHMoKSBjb25zdAogewogICAgIEZpbHRlck91dHNldHMgdG90YWxPdXRzZXRzOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uID0gKm1fb3BlcmF0aW9ucy5h
dChpKTsKLSAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpKSB7CisgICAgZm9y
IChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKKyAgICAgICAgc3dpdGNoIChvcGVy
YXRpb24tPnR5cGUoKSkgewogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewot
ICAgICAgICAgICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiYgYmx1ck9wZXJhdGlvbiA9IGRv
d25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAg
ICBhdXRvJiBibHVyT3BlcmF0aW9uID0gZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oKm9w
ZXJhdGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGJsdXJPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICAgICAgSW50
U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKICAgICAg
ICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRT
aXplLndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CkBA
IC0xMTgsMTQgKzEwMSwxNCBAQCBGaWx0ZXJPdXRzZXRzIEZpbHRlck9wZXJhdGlvbnM6Om91dHNl
dHMoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7Ci0gICAgICAgICAgICBjb25zdCBEcm9wU2hh
ZG93RmlsdGVyT3BlcmF0aW9uJiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGF1dG8m
IGRyb3BTaGFkb3dPcGVyYXRpb24gPSBkb3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKTsKICAgICAgICAgICAgIEludFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNp
emVGb3JCbHVyKGRyb3BTaGFkb3dPcGVyYXRpb24uc3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAg
ICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzKAorICAgICAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRz
ZXRzIHsKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLmhlaWdodCgpIC0g
ZHJvcFNoYWRvd09wZXJhdGlvbi55KCkpLAogICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91
dHNldFNpemUud2lkdGgoKSArIGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpKSwKICAgICAgICAgICAg
ICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLmhlaWdodCgpICsgZHJvcFNoYWRvd09wZXJhdGlv
bi55KCkpLAogICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUud2lkdGgoKSAt
IGRyb3BTaGFkb3dPcGVyYXRpb24ueCgpKQotICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH07
CiAgICAgICAgICAgICB0b3RhbE91dHNldHMgKz0gb3V0c2V0czsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0xMzgsMjQgKzEyMSwyNiBAQCBGaWx0ZXJPdXRzZXRzIEZpbHRlck9w
ZXJhdGlvbnM6Om91dHNldHMoKSBjb25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0Zp
bHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmIChtX29wZXJhdGlvbnNb
aV0tPmFmZmVjdHNPcGFjaXR5KCkpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJh
dGlvbnMpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+YWZmZWN0c09wYWNpdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wg
RmlsdGVyT3BlcmF0aW9uczo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QKIHsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkKLSAgICAg
ICAgaWYgKG1fb3BlcmF0aW9uc1tpXS0+bW92ZXNQaXhlbHMoKSkKKyAgICBmb3IgKGF1dG8mIG9w
ZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykgeworICAgICAgICBpZiAob3BlcmF0aW9uLT5tb3Zlc1Bp
eGVscygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bHRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byBmaWx0ZXIgPSBmaWx0ZXJz
LmF0KGkpOworICAgICAgICBhdXRvIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7CiAgICAgICAgIGlm
IChmaWx0ZXIpCiAgICAgICAgICAgICB0cyA8PCAqZmlsdGVyOwogICAgICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5oCmluZGV4IGNmMmM1YjliNjI1Y2I2NjljOGM3MTRlN2QzZmJhN2MwODNh
MWRkMTEuLjQ4NmY2ODZmYWE2OTQzYTQ2YjJiOGIxYWI2YzBjN2RjMThkZDY3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgRmlsdGVyT3BlcmF0aW9uc19oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbnNfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJbnRS
ZWN0RXh0ZW50LmgiCkBAIC0zMywzMyArMzIsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10eXBlZGVmIEludFJlY3RFeHRlbnQgRmlsdGVyT3V0c2V0czsKK3VzaW5nIEZpbHRlck91dHNl
dHMgPSBJbnRSZWN0RXh0ZW50OwogCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBGaWx0ZXJP
cGVyYXRpb25zKCk7Ci0gICAgRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRvcj0oY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpOworICAgIHZvaWQgY2xlYXIoKSB7IG1fb3BlcmF0aW9ucy5jbGVhcigp
OyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9vcGVyYXRpb25zLmNsZWFyKCk7Ci0gICAgfQot
ICAgIAogICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mIG9wZXJhdGlvbnMoKSB7
IHJldHVybiBtX29wZXJhdGlvbnM7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CiAK
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9vcGVyYXRpb25zLnNpemUoKTsg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5pc0VtcHR5
KCk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXpl
KCk7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5kZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGlu
ZGV4KS5nZXQoKSA6IDA7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGF0KHNpemVfdCBp
bmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVy
YXRpb25zW2luZGV4XS5nZXQoKSA6IG51bGxwdHI7IH0KIAogICAgIGJvb2wgb3BlcmF0aW9uc01h
dGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKIApAQCAtNzAsNiArNTgsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdDsKIAogICAg
IGJvb2wgaGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgVmVjdG9y
PFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiBtX29wZXJhdGlvbnM7CiB9OwpAQCAtNzcsNSArNjYs
MyBAQCBwcml2YXRlOgogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QW5pbWF0aW9uLmNwcAppbmRleCAwYmVkZDBhNTc0YzI0OTllNWUzYWNlOTI3YjU0MTFmOTQyMDFh
ODUwLi45Y2MxZGY2YWQzYmU1NzI5ZDNiMmE4MTc5M2U1YTU3MDRhZTFlZGMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFu
aW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC0xMjgsMTkgKzEyOCwxNiBAQCBzdGF0aWMg
aW5saW5lIGRvdWJsZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBib29sIHN0ZXBB
dFN0YXJ0LCBkb3VibGUgdAogICAgIHJldHVybiBmbG9vcihudW1TdGVwcyAqIHQpIC8gbnVtU3Rl
cHM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24sIGZsb2F0IHByb2dyZXNzLCBkb3VibGUgZHVy
YXRpb24pCitzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1cmF0
aW9uKQogewotICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAgICAgIHJldHVybiBwcm9ncmVz
czsKLQotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KCkpIHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9u
KTsKLSAgICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbihjdGYtPngxKCksIGN0
Zi0+eTEoKSwgY3RmLT54MigpLCBjdGYtPnkyKCksIHByb2dyZXNzLCBkdXJhdGlvbik7CisgICAg
aWYgKHRpbWluZ0Z1bmN0aW9uLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAg
ICAgIGF1dG8mIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24mPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVu
Y3Rpb24oY3RmLngxKCksIGN0Zi55MSgpLCBjdGYueDIoKSwgY3RmLnkyKCksIHByb2dyZXNzLCBk
dXJhdGlvbik7CiAgICAgfQogCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5n
RnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBz
dGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwot
ICAgICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBz
dGYtPnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9ncmVzcykpOworICAgIGlmICh0aW1pbmdGdW5j
dGlvbi5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBhdXRvJiBzdGYgPSBzdGF0
aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAg
ICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi5udW1iZXJPZlN0ZXBzKCksIHN0Zi5z
dGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gcHJv
Z3Jlc3M7CkBAIC0xOTQsMTMgKzE5MSwxMiBAQCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXgg
YXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZgogICAg
IHJldHVybiBtYXRyaXg7CiB9CiAKLXN0YXRpYyBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5n
RnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgYW5pbVZhbHVl
LCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitzdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1h
dGlvblZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKLSAgICBpZiAoYW5pbVZh
bHVlLnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUudGltaW5nRnVu
Y3Rpb24oKTsKLSAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJu
IGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Ci0KKyAgICBpZiAoYW5pbWF0aW9uVmFsdWUu
dGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuICphbmltYXRpb25WYWx1ZS50aW1pbmdG
dW5jdGlvbigpOworICAgIGlmIChhbmltYXRpb24udGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuICphbmltYXRpb24udGltaW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTI1Nyw3
ICsyNTMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFwcGx5KENsaWVudCYgY2xp
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkg
PT0gMikgewotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKG1fa2V5ZnJhbWVzLmF0KDApLCBtX2FuaW1h
dGlvbi5nZXQoKSk7CisgICAgICAgIGF1dG8mIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgKm1fYW5pbWF0aW9uKTsKICAg
ICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlv
biwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFw
cGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9rZXlmcmFtZXMuYXQoMSks
IG5vcm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MCw3ICsyNjYsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFwcGx5KENsaWVudCYgY2xpZW50KQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRW
YWx1ZSAtIGZyb20ua2V5VGltZSgpKSAvICh0by5rZXlUaW1lKCkgLSBmcm9tLmtleVRpbWUoKSk7
Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZnJvbSwgbV9hbmltYXRpb24uZ2V0KCkpOworICAgICAg
ICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
ZnJvbSwgKm1fYW5pbWF0aW9uKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+
ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0bywgbm9y
bWFsaXplZFZhbHVlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCmluZGV4
IDU4NGZkYWJkOTI0N2ZhNThkOWIwZjBmMDQ2OGQ0MjYwYTY2ZDIwNWEuLmVmYmU4MGZhZTAzYzRj
YTI4ODRkYzJmYjkyYTE3N2ZmYWFjMDJjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCkBAIC02
MCw3ICs2MCw3IEBAIEBpbnRlcmZhY2UgV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciA6IE5TT2Jq
ZWN0PEFWU3BlZWNoU3ludGhlc2l6ZXJEZWxlZ2F0ZT4KIH0KIAogLSAoV2ViU3BlZWNoU3ludGhl
c2lzV3JhcHBlciAqKWluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6KFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIqKXN5bnRoZXNpemVyOwotLSAodm9pZClzcGVha1V0dGVyYW5jZToo
UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0
ZXJhbmNlOworLSAodm9pZClzcGVha1V0dGVyYW5jZTooUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKXV0dGVyYW5jZTsKIAogQGVuZAogCkBAIC04Nyw3
ICs4Nyw3IEBAIC0gKGZsb2F0KW1hcFNwZWVjaFJhdGVUb1BsYXRmb3JtUmF0ZTooZmxvYXQpcmF0
ZQogICAgIHJldHVybiByYXRlOwogfQogCi0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPil1dHRlcmFuY2UK
Ky0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2UKIHsKICAgICAvLyBXaGVuIHNwZWFrIGlzIGNh
bGxlZCB3ZSBzaG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3BlZWNoIHV0dGVyYW5jZSBvdXRz
dGFuZGluZy4KICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCAt
ICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPil1dAogICAgIFthdlV0dGVyYW5jZSBzZXRWb2x1bWU6dXR0ZXJh
bmNlLT52b2x1bWUoKV07CiAgICAgW2F2VXR0ZXJhbmNlIHNldFBpdGNoTXVsdGlwbGllcjp1dHRl
cmFuY2UtPnBpdGNoKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRWb2ljZTphdlZvaWNlXTsKLSAg
ICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5jZSA9IFdURk1vdmUodXR0
ZXJhbmNlKTsKIAogICAgIFttX3N5bnRoZXNpemVyIHNwZWFrVXR0ZXJhbmNlOmF2VXR0ZXJhbmNl
XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KaW5kZXggYTFkNzg1ZjQ1NGViZWZhYmI0MTFlZjhhYzg5ZDJhZWUwM2Uy
MjQ1Yy4uMmUxYjJjYjY3ZTBkYTYyMTE1YjBhZDgyNThkNzE1N2MxOWE0NzA3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTU1LDEwICsxNTUsMTAgQEAgc3Rh
dGljIExlbmd0aFNpemUgc2l6ZUZyb21OU0NvbnRyb2xTaXplKE5TQ29udHJvbFNpemUgbnNDb250
cm9sU2l6ZSwgY29uc3QgTGVuZ3QKICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKQogICAgICAg
ICBjb250cm9sU2l6ZSA9IEludFNpemUoY29udHJvbFNpemUud2lkdGgoKSAqIHpvb21GYWN0b3Is
IGNvbnRyb2xTaXplLmhlaWdodCgpICogem9vbUZhY3Rvcik7CiAgICAgTGVuZ3RoU2l6ZSByZXN1
bHQgPSB6b29tZWRTaXplOwotICAgIGlmICh6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKLSAgICAgICAgcmVzdWx0LnNldFdp
ZHRoKExlbmd0aChjb250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIGlmICh6b29tZWRT
aXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgY29udHJvbFNpemUuaGVpZ2h0KCkg
PiAwKQotICAgICAgICByZXN1bHQuc2V0SGVpZ2h0KExlbmd0aChjb250cm9sU2l6ZS5oZWlnaHQo
KSwgRml4ZWQpKTsKKyAgICBpZiAoem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygp
ICYmIGNvbnRyb2xTaXplLndpZHRoKCkgPiAwKQorICAgICAgICByZXN1bHQud2lkdGggPSB7IGNv
bnRyb2xTaXplLndpZHRoKCksIEZpeGVkIH07CisgICAgaWYgKHpvb21lZFNpemUuaGVpZ2h0Lmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgY29udHJvbFNpemUuaGVpZ2h0KCkgPiAwKQorICAgICAgICBy
ZXN1bHQuaGVpZ2h0ID0geyBjb250cm9sU2l6ZS5oZWlnaHQoKSwgRml4ZWQgfTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAgc3RhdGljIGNvbnN0IGludCogY2hl
Y2tib3hNYXJnaW5zKE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpCiBzdGF0aWMgTGVuZ3RoU2l6
ZSBjaGVja2JveFNpemUoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUm
IHpvb21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpCiB7CiAgICAgLy8gSWYgdGhlIHdpZHRoIGFu
ZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4K
LSAgICBpZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29t
ZWRTaXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgaWYgKCF6b29tZWRTaXpl
LndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmlu
c2ljT3JBdXRvKCkpCiAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogCiAgICAgLy8gVXNlIHRo
ZSBmb250IHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGNvbnRy
b2wuCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIGNvbnN0IGludCogcmFkaW9NYXJnaW5zKE5T
Q29udHJvbFNpemUgY29udHJvbFNpemUpCiBzdGF0aWMgTGVuZ3RoU2l6ZSByYWRpb1NpemUoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0
IHpvb21GYWN0b3IpCiB7CiAgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGgg
c3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXpvb21lZFNp
emUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodCgpLmlz
SW50cmluc2ljT3JBdXRvKCkpCisgICAgaWYgKCF6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAg
ICAgIHJldHVybiB6b29tZWRTaXplOwogCiAgICAgLy8gVXNlIHRoZSBmb250IHNpemUgdG8gZGV0
ZXJtaW5lIHRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGNvbnRyb2wuCkBAIC03MTMsOSArNzEz
LDkgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnMKICAgICAgICAgICAgIHJldHVybiByYWRpb1Np
emUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CiAgICAgICAgIGNhc2UgUHVzaEJ1dHRv
blBhcnQ6CiAgICAgICAgICAgICAvLyBIZWlnaHQgaXMgcmVzZXQgdG8gYXV0byBzbyB0aGF0IHNw
ZWNpZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgotICAgICAgICAgICAgcmV0dXJuIHNpemVG
cm9tRm9udChmb250LCBMZW5ndGhTaXplKHpvb21lZFNpemUud2lkdGgoKSwgTGVuZ3RoKCkpLCB6
b29tRmFjdG9yLCBidXR0b25TaXplcygpKTsKKyAgICAgICAgICAgIHJldHVybiBzaXplRnJvbUZv
bnQoZm9udCwgeyB6b29tZWRTaXplLndpZHRoLCB7IH0gfSwgem9vbUZhY3RvciwgYnV0dG9uU2l6
ZXMoKSk7CiAgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKLSAgICAgICAgICAgIGlm
ICghem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUu
aGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICAgICAgICAgIGlmICghem9vbWVkU2l6
ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJp
bnNpY09yQXV0bygpKQogICAgICAgICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogICAgICAg
ICAgICAgcmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6ZShzdGVwcGVyQ29udHJvbFNpemVGb3JG
b250KGZvbnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBzdGVwcGVyU2l6ZXMoKSk7CiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC03MjYsMTcgKzcyNiwxNyBAQCBMZW5ndGhTaXplIFRoZW1lTWFjOjpj
b250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
cwogTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6bWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBh
cnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAogewog
ICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6Ci0gICAg
ICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgQnV0dG9uUGFydDoKLSAg
ICAgICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aChzdGF0
aWNfY2FzdDxpbnQ+KDE1ICogem9vbUZhY3RvciksIEZpeGVkKSk7Ci0gICAgICAgIGNhc2UgSW5u
ZXJTcGluQnV0dG9uUGFydDp7Ci0gICAgICAgICAgICBJbnRTaXplIGJhc2UgPSBzdGVwcGVyU2l6
ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShM
ZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4ZWQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKHN0YXRpY19jYXN0PGludD4o
YmFzZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZShw
YXJ0LCBmb250LCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6CisgICAg
Y2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvblBhcnQ6CisgICAgICAgIHJl
dHVybiB7IHsgMCwgRml4ZWQgfSwgeyBzdGF0aWNfY2FzdDxpbnQ+KDE1ICogem9vbUZhY3Rvciks
IEZpeGVkIH0gfTsKKyAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6IHsKKyAgICAgICAgYXV0
byYgYmFzZSA9IHN0ZXBwZXJTaXplcygpW05TQ29udHJvbFNpemVNaW5pXTsKKyAgICAgICAgcmV0
dXJuIHsgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uud2lkdGgoKSAqIHpvb21GYWN0b3IpLCBGaXhl
ZCB9LAorICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxpbnQ+KGJhc2UuaGVpZ2h0KCkgKiB6b29t
RmFjdG9yKSwgRml4ZWQgfSB9OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBmb250LCB6b29tRmFjdG9yKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDQzMTVj
Y2M1N2E1ZDE1ZmNkYjU2NTljNzFmMWJmZDlmZGUyODIxM2MuLmVkMzBhYjAzMjcwMWNkZTNkMmE2
ZGM2OTE3ODJmNzMyZTE1ZWJhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbQpAQCAtODksNyArODksNyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1
c2VkKQogICAgIGlmICghZm9jdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRoaXMpOworICAgIEZyYW1lKiBmcmFtZSA9IEZy
YW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1v
dGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIyYWQ0
Mzk3YTA0YzA1NTYxYzdjMWQ2MDY3YWRlYzUxNTlmMjM1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGll
bnRNb2NrLmgiCi0KLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6RGV2aWNlTW90aW9uQ2xp
ZW50TW9jaygpCi0gICAgOiBtX2NvbnRyb2xsZXIoMCkKLSAgICAsIG1fdGltZXIoKnRoaXMsICZE
ZXZpY2VNb3Rpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQotICAgICwgbV9pc1VwZGF0aW5nKGZh
bHNlKQotewotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIo
RGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAgICBBU1NFUlQoIW1fY29u
dHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBBU1NFUlQobV9j
b250cm9sbGVyKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0
aW5nKCkKLXsKLSAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOwotfQotCi12b2lkIERldmljZU1vdGlv
bkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7
Ci0gICAgbV90aW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6
c2V0TW90aW9uKFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gbW90aW9uKQotewotICAgIG1f
bW90aW9uID0gbW90aW9uOwotICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgRGV2aWNl
TW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0g
ICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZpY2VNb3Rpb24obV9tb3Rpb24uZ2V0KCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3YzYyNjgyOGVhNGYzOTQxZGU1YmNlMDE1MzU4OGQxYjA0Y2FlOTk4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50TW9ja19o
Ci0jZGVmaW5lIERldmljZU1vdGlvbkNsaWVudE1vY2tfaAotCi0jaW5jbHVkZSAiRGV2aWNlTW90
aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEZXZpY2VNb3Rpb25Db250cm9s
bGVyOwotCi0vLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlTW90aW9uQ2xpZW50IHVz
ZWQgdG8gdGVzdCB0aGUgZmVhdHVyZSBpbgotLy8gRHVtcFJlbmRlclRyZWUuIEVtYmVkZGVycyBz
aG91bGQgc2hvdWxkIGNvbmZpZ3VyZSB0aGUgUGFnZSBvYmplY3QgdG8gdXNlIHRoaXMKLS8vIGNs
aWVudCB3aGVuIHJ1bm5pbmcgRHVtcFJlbmRlclRyZWUuCi1jbGFzcyBEZXZpY2VNb3Rpb25DbGll
bnRNb2NrIDogcHVibGljIERldmljZU1vdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgRGV2aWNl
TW90aW9uQ2xpZW50TW9jaygpOwotCi0gICAgLy8gRGV2aWNlTW90aW9uQ2xpZW50Ci0gICAgdm9p
ZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92
ZXJyaWRlOwotICAgIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX21vdGlvbi5nZXQoKTsgfQotICAgIC8vIG1vY2sgaXMgb3duZWQgYnkgdGhl
IHRlc3RpbmcgZnJhbWV3b3JrLCB3aGljaCBzaG91bGQgaGFuZGxlIGRlbGV0aW9uCi0gICAgdm9p
ZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2
b2lkIHNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+KTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLQotICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBt
X21vdGlvbjsKLSAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAg
VGltZXIgbV90aW1lcjsKLSAgICBib29sIG1faXNVcGRhdGluZzsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERldmljZU1vdGlvbkNsaWVudE1vY2tfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAppbmRleCAzODgxMWZjMTA4MTg4Y2Zl
MjZlMTgwZjAwZjlmNTBmZDYxNWRiN2QzLi43YTk5MzEzNmJhMmMzYTA1ZDJkMzE5NmE1NTY3NzE4
YTAwZGFmODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29y
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcApA
QCAtNDAsMTAgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaG90U3BvdCkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRD
dXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEN1cnNvcj4gaW1wbDsKLQogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBk
ZXRlcm1pbmVIb3RTcG90KGltZywgaG90U3BvdCk7CiAgICAgc3RhdGljIGJvb2wgZG9BbHBoYSA9
IHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93c1hQOwogICAgIEJpdG1hcEluZm8gY3Vyc29ySW1h
Z2UgPSBCaXRtYXBJbmZvOjpjcmVhdGUoSW50U2l6ZShpbWctPndpZHRoKCksIGltZy0+aGVpZ2h0
KCkpKTsKQEAgLTUyLDggKzUwLDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBj
cmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGgKICAgICBhdXRv
IHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CiAg
ICAgaWYgKGRvQWxwaGEpIHsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmplY3Qo
OjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBudWxs
cHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAgICAg
ICAgIEhCSVRNQVAgaE9sZEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9iamVjdCh3b3JraW5nREMu
Z2V0KCksIGhDdXJzb3IuZ2V0KCkpOwpAQCAtNzEsMTUgKzY3LDEzIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IElu
dFBvaW50JiBoCiAgICAgICAgIGlpLmhibU1hc2sgPSBoTWFzay5nZXQoKTsKICAgICAgICAgaWku
aGJtQ29sb3IgPSBoQ3Vyc29yLmdldCgpOwogCi0gICAgICAgIGltcGwgPSBTaGFyZWRDdXJzb3I6
OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJl
ZEN1cnNvcjo6Y3JlYXRlKDo6Q3JlYXRlSWNvbkluZGlyZWN0KCZpaSkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYSBibGVuZGVkIGN1cnNv
cnMsIHNvIHdlIG5lZWQKICAgICAgICAgLy8gdG8gY3JlYXRlIHRoZSBtYXNrIG1hbnVhbGx5CiAg
ICAgICAgIGF1dG8gYW5kTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxl
REMoZGMpKTsKICAgICAgICAgYXV0byB4b3JNYXNrREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0
ZUNvbXBhdGlibGVEQyhkYykpOwogICAgICAgICBhdXRvIGhDdXJzb3IgPSBhZG9wdEdESU9iamVj
dCg6OkNyZWF0ZURJQlNlY3Rpb24oZGMsICZjdXJzb3JJbWFnZSwgRElCX1JHQl9DT0xPUlMsIG51
bGxwdHIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFoQ3Vyc29yKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgaW1nLT5nZXRIQklUTUFQKGhDdXJzb3IuZ2V0KCkpOyAKICAg
ICAgICAgQklUTUFQIGN1cnNvcjsKQEAgLTEwOCwxOCArMTAyLDE2IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IElu
dFBvaW50JiBoCiAgICAgICAgIGljb24ueUhvdHNwb3QgPSBlZmZlY3RpdmVIb3RTcG90LnkoKTsK
ICAgICAgICAgaWNvbi5oYm1NYXNrID0gYW5kTWFzay5nZXQoKTsKICAgICAgICAgaWNvbi5oYm1D
b2xvciA9IHhvck1hc2suZ2V0KCk7Ci0gICAgICAgIGltcGwgPSBTaGFyZWRDdXJzb3I6OmNyZWF0
ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEN1cnNv
cjo6Y3JlYXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOwogICAgIH0KLQotICAgIHJldHVy
biBpbXBsLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBs
b2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBoSW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1l
KQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGxvYWRTaGFyZWRDdXJzb3IoSElOU1RBTkNFIGhJ
bnN0YW5jZSwgTFBDV1NUUiBscEN1cnNvck5hbWUpCiB7CiAgICAgcmV0dXJuIFNoYXJlZEN1cnNv
cjo6Y3JlYXRlKDo6TG9hZEN1cnNvclcoaEluc3RhbmNlLCBscEN1cnNvck5hbWUpKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29yQnlOYW1lKGNoYXIqIG5h
bWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkQ3Vyc29yQnlO
YW1lKGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKIHsKICAgICBJbnRQb2ludCBob3RTcG90KHgs
IHkpOwogICAgIFJlZlB0cjxJbWFnZT4gY3Vyc29ySW1hZ2UoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKG5hbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwCmluZGV4IDAwMDg3ZDIzZjYyNjg2NWY5NzZhNzYyODYxZjY3NDM5YTBj
Y2JiZDMuLmY1OWYxNWY2YjRlMDcxZjAzOTk5NzAzMzNlMWRiZDkxZjhjMWM0MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAt
MzY0LDcgKzM2NCw3IEBAIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVT
b3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0CiAKIEltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxGaWx0ZXJFZmZlY3QmPihtX2VmZmVjdHMubGFzdCgpLmdldCgpKS5hc0ltYWdlQnVmZmVy
KCk7CisgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCktPmFzSW1hZ2VCdWZmZXIoKTsKIH0KIAog
dm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRS
ZWN0JiBlZmZlY3RSZWN0KQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKIAog
SW50UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiB7Ci0gICAg
YXV0byYgbGFzdEVmZmVjdCA9IGNvbnN0X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxh
c3QoKS5nZXQoKSk7CisgICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0
KCk7CiAgICAgaWYgKCFsYXN0RWZmZWN0Lmhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1cm4geyB9
OwogICAgIHJldHVybiBsYXN0RWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEo
SW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDYzYjczYzVjNTMyNDIzMzlj
NmQzNjAxZDZhMmM2NWFlZDNhZjVhMDMuLmMyYjIyMTZhNmE5OGY3NTY0YWU4OTk4ZTAyMjhkN2Y2
MDNjNThiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxp
dHlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6Om9wdGlvbmFsPEludGVy
cG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVh
bGl0eQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLUludGVycG9sYXRpb25RdWFsaXR5
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2Um
IGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK0ludGVy
cG9sYXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVycG9sYXRp
b25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSkKIHsKICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEgYml0bWFwIGltYWdlLCB0
aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBwYWludCBhdCBoaWdoIHF1
YWxpdHkuCiAgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLmlzUERGRG9j
dW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBiMWZiMzBhMDljYzNhMmY1NGFk
OGFiNDc1OGZiYjViMTA3OTJlNWRjLi41YTAwZjllY2UwYWE4OTUxYTJlNmQ4MGVhZmY0MWU2YmJl
YzQzZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBA
IC0xMjMxLDEyICsxMjMxLDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICB9CiB9CiAK
LXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGlmICghZmlsbExheWVyKQotICAg
ICAgICByZXR1cm47Ci0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywgZmlsbExheWVy
LT5uZXh0KCksIHJlY3QsIG9wKTsKLSAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsIGZp
bGxMYXllciwgcmVjdCwgb3ApOworICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqLCA4PiBsYXll
cnM7CisgICAgZm9yIChhdXRvKiBsYXllciA9ICZmaWxsTGF5ZXI7IGxheWVyOyBsYXllciA9IGxh
eWVyLT5uZXh0KCkpCisgICAgICAgIGxheWVycy5hcHBlbmQobGF5ZXIpOworICAgIGxheWVycy5y
ZXZlcnNlKCk7CisgICAgZm9yIChhdXRvKiBsYXllciA6IGxheWVycykKKyAgICAgICAgcGFpbnRG
aWxsTGF5ZXIocGFpbnRJbmZvLCBjb2xvciwgKmxheWVyLCByZWN0LCBvcCk7CiB9CiAKIGJvb2wg
SW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IEZp
bGxMYXllciYgbGFzdEJhY2tncm91bmRMYXllcikgY29uc3QKQEAgLTEyNDgsMTcgKzEyNTAsMTcg
QEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpib3hTaGFkb3dDYW5CZUFwcGxpZWRUb0JhY2tncm91bmQo
Y29uc3QgRmlsbExheWVyJiBsYXN0QmFja2cKICAgICByZXR1cm4gKCFoYXNGaWxsSW1hZ2UgJiYg
IXJlbmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgfHwgKCFwcmV2TGluZUJveCgp
ICYmICFuZXh0TGluZUJveCgpKSB8fCAhcGFyZW50KCk7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVy
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZp
bGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKIHsKLSAgICBTdHlsZUltYWdlKiBpbWcgPSBmaWxsTGF5ZXItPmltYWdlKCk7Ci0g
ICAgYm9vbCBoYXNGaWxsSW1hZ2UgPSBpbWcgJiYgaW1nLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCks
IHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAgIGF1dG8qIGltYWdlID0g
ZmlsbExheWVyLmltYWdlKCk7CisgICAgYm9vbCBoYXNGaWxsSW1hZ2UgPSBpbWFnZSAmJiBpbWFn
ZS0+Y2FuUmVuZGVyKCZyZW5kZXJlcigpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpKTsKICAgICBpZiAoKCFoYXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVyKCkuc3R5bGUoKS5oYXNC
b3JkZXJSYWRpdXMoKSkgfHwgKCFwcmV2TGluZUJveCgpICYmICFuZXh0TGluZUJveCgpKSB8fCAh
cGFyZW50KCkpCi0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWlu
dEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVj
dC5zaXplKCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVk
KHBhaW50SW5mbywgY29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwg
dGhpcywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWso
KSA9PSBEQ0xPTkUpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNs
aXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7Ci0g
ICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZp
bGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9w
KTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywg
Y29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5z
aXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIHsKQEAgLTEyOTAsNyArMTI5Miw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCks
IGhlaWdodCgpKSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChw
YWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUo
KSwgb3ApOworICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJ
bmZvLCBjb2xvciwgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdp
ZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgp
LCBvcCk7CiAgICAgfQogfQogCkBAIC0xNDQ2LDcgKzE0NDgsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2ZmcwogICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gcmVuZGVyZXIoKS52
aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENv
bXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgaWYgKCFjb21wb3NpdGVkTWFzayB8fCBmbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpIHsKLSAgICAgICAgaWYgKChtYXNrQm94SW1hZ2UgJiYgcmVuZGVyZXIo
KS5zdHlsZSgpLm1hc2tMYXllcnMoKS0+aGFzSW1hZ2UoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgp
Lm1hc2tMYXllcnMoKS0+bmV4dCgpKQorICAgICAgICBpZiAoKG1hc2tCb3hJbWFnZSAmJiByZW5k
ZXJlcigpLnN0eWxlKCkubWFza0xheWVycygpLmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCkuc3R5
bGUoKS5tYXNrTGF5ZXJzKCkubmV4dCgpKQogICAgICAgICAgICAgcHVzaFRyYW5zcGFyZW5jeUxh
eWVyID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVz
dGluYXRpb25JbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4
IDgzOTA1YmRjNGU3YTdlYjA3ZjkzN2U0MmEwMGNkNjI0NTljMDQ1YjkuLjU3MmIwMjU2MWIxZDkx
ZjZhZWIwYzQ4ZDFiZWUyNjMyYjM1NmVlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guaApAQCAtMTE1LDggKzExNSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZv
aWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBw
YWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxs
TGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgdm9pZCBwYWludEZpbGxMYXll
cnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXImLCBjb25z
dCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKICAgICBib29s
IG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IGI0YTdiYTAyMzc5NzFmMTdhYTJjMDc5NWMzMGVjMjI5NzcwOTlhM2Mu
LjhhOTZjODQ5N2ZiMzQ2ZDQ5MjNmZTAyZWQxZWI3MDQ4MzFiN2JkNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjcwLDEwICsxMjcwLDkgQEAgdm9pZCBSZW5k
ZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8p
CiAgICAgaWYgKCFyb290QmFja2dyb3VuZFJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIgPSByb290QmFja2dyb3VuZFJlbmRlcmVyLT5zdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKLSAgICBDb2xvciBiZ0NvbG9yID0gcm9vdEJhY2tncm91
bmRSZW5kZXJlci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOwotCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwg
YmdMYXllciwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOworICAgIGF1dG8mIHN0
eWxlID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5bGUoKTsKKyAgICBhdXRvIGNvbG9yID0g
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
KyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjb2xvciwgc3R5bGUuYmFja2dyb3VuZExh
eWVycygpLCB2aWV3KCkuYmFja2dyb3VuZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29t
cG9zaXRlU291cmNlT3Zlciwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CiB9CiAKIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0xNDE0LDEyICsxNDEzLDEz
IEBAIGJvb2wgUmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGlmICghc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmltYWdlKCkgfHwgc3R5bGUo
KS5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkgeworICAgIGF1dG8mIGxheWVycyA9IHN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpOworICAgIGlmICghbGF5ZXJzLmltYWdlKCkgfHwgbGF5ZXJz
Lm5leHQoKSkgewogICAgICAgICBwYWludGVkRXh0ZW50ID0gIGJhY2tncm91bmRSZWN0OwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBn
ZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KTsKKyAg
ICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0
ciwgbGF5ZXJzLCBwYWludE9mZnNldCwgYmFja2dyb3VuZFJlY3QpOwogICAgIHBhaW50ZWRFeHRl
bnQgPSBnZW9tZXRyeS5kZXN0UmVjdCgpOwogICAgIHJldHVybiAhZ2VvbWV0cnkuaGFzTm9uTG9j
YWxHZW9tZXRyeSgpOwogfQpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgYm9vbCBSZW5kZXJCb3g6OmJh
Y2tncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJl
Y3QpIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGUgYmFj
a2dyb3VuZCBjb2xvciBjbGlwIGlzIGRlZmluZWQgYnkgdGhlIGxhc3QgbGF5ZXIuCi0gICAgaWYg
KHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpCisgICAgaWYgKHN0eWxlKCkuYmFj
a2dyb3VuZExheWVycygpLm5leHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIExheW91
dFJlY3QgYmFja2dyb3VuZFJlY3Q7CiAgICAgc3dpdGNoIChzdHlsZSgpLmJhY2tncm91bmRDbGlw
KCkpIHsKQEAgLTE1MzksMTkgKzE1MzksMTkgQEAgYm9vbCBSZW5kZXJCb3g6OmNvbXB1dGVCYWNr
Z3JvdW5kSXNLbm93blRvQmVPYnNjdXJlZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmYKIAog
Ym9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMo
KTsKLSAgICBpZiAoIWZpbGxMYXllciB8fCBmaWxsTGF5ZXItPmNsaXAoKSAhPSBCb3JkZXJGaWxs
Qm94KQorICAgIGF1dG8mIGZpbGxMYXllciA9IHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpOwor
ICAgIGlmIChmaWxsTGF5ZXIuY2xpcCgpICE9IEJvcmRlckZpbGxCb3gpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIENsaXBwZWQgd2l0aCBsb2NhbCBzY3JvbGxpbmcKLSAgICBpZiAo
aGFzT3ZlcmZsb3dDbGlwKCkgJiYgZmlsbExheWVyLT5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNr
Z3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgZmlsbExheWVy
LmF0dGFjaG1lbnQoKSA9PSBMb2NhbEJhY2tncm91bmRBdHRhY2htZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoZmlsbExheWVyLT5oYXNPcGFxdWVJbWFnZSgqdGhpcykgJiYg
ZmlsbExheWVyLT5oYXNSZXBlYXRYWSgpICYmIGZpbGxMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVy
KHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkKKyAgICBpZiAoZmlsbExheWVyLmhhc09w
YXF1ZUltYWdlKCp0aGlzKSAmJiBmaWxsTGF5ZXIuaGFzUmVwZWF0WFkoKSAmJiBmaWxsTGF5ZXIu
aW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBsYXllciBhbmQg
bm8gaW1hZ2UsIGNoZWNrIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgb3BhcXVlLgot
ICAgIGlmICghZmlsbExheWVyLT5uZXh0KCkgJiYgIWZpbGxMYXllci0+aGFzSW1hZ2UoKSkgewor
ICAgIGlmICghZmlsbExheWVyLm5leHQoKSAmJiAhZmlsbExheWVyLmhhc0ltYWdlKCkpIHsKICAg
ICAgICAgQ29sb3IgYmdDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgaWYgKGJnQ29sb3IuaXNPcGFxdWUoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTU5MCwxNSArMTU5MCwxMiBAQCB2b2lkIFJl
bmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRSZWN0JiBwYQogICAgIAogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzKSB7CiAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lMYXllciA9IHRy
dWU7Ci0gICAgICAgIFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IHN0eWxlKCkubWFza0JveElt
YWdlKCkuaW1hZ2UoKTsKLSAgICAgICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXJzID0gc3R5
bGUoKS5tYXNrTGF5ZXJzKCk7CiAKICAgICAgICAgLy8gRG9uJ3QgcmVuZGVyIGEgbWFza2VkIGVs
ZW1lbnQgdW50aWwgYWxsIHRoZSBtYXNrIGltYWdlcyBoYXZlIGxvYWRlZCwgdG8gcHJldmVudCBh
IGZsYXNoIG9mIHVubWFza2VkIGNvbnRlbnQuCi0gICAgICAgIGlmIChtYXNrQm94SW1hZ2UpCisg
ICAgICAgIGlmIChhdXRvKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1hc2tCb3hJbWFnZSgpLmlt
YWdlKCkpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tCb3hJbWFnZS0+
aXNMb2FkZWQoKTsKIAotICAgICAgICBpZiAobWFza0xheWVycykKLSAgICAgICAgICAgIGFsbE1h
c2tJbWFnZXNMb2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CisgICAgICAg
IGFsbE1hc2tJbWFnZXNMb2FkZWQgJj0gc3R5bGUoKS5tYXNrTGF5ZXJzKCkuaW1hZ2VzQXJlTG9h
ZGVkKCk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKQEAgLTE2MjcsNzEgKzE2MjQsNjkgQEAgTGF5b3V0
UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiAgICAgCiAgICAgTGF5b3V0UmVjdCByZXN1bHQ7CiAgICAgTGF5b3V0UmVjdCBib3JkZXJC
b3ggPSBib3JkZXJCb3hSZWN0KCk7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXll
ciA9IHN0eWxlKCkubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXll
ci0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAmc3R5bGUoKS5tYXNrTGF5
ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsKICAgICAg
ICAgaWYgKG1hc2tMYXllci0+aW1hZ2UoKSkgewogICAgICAgICAgICAgLy8gTWFza3Mgc2hvdWxk
IG5ldmVyIGhhdmUgZml4ZWQgYXR0YWNobWVudCwgc28gaXQncyBPSyBmb3IgcGFpbnRDb250YWlu
ZXIgdG8gYmUgbnVsbC4KLSAgICAgICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdlb21l
dHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKm1hc2tMYXll
ciwgcGFpbnRPZmZzZXQsIGJvcmRlckJveCk7Ci0gICAgICAgICAgICByZXN1bHQudW5pdGUoZ2Vv
bWV0cnkuZGVzdFJlY3QoKSk7CisgICAgICAgICAgICByZXN1bHQudW5pdGUoY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKm1hc2tMYXllciwgcGFpbnRPZmZzZXQsIGJv
cmRlckJveCkuZGVzdFJlY3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICBCYWNrZ3JvdW5k
QmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5k
ZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5
ZXIqLCA4PiBsYXllcnM7Ci0gICAgY29uc3QgRmlsbExheWVyKiBjdXJMYXllciA9IGZpbGxMYXll
cjsKICAgICBib29sIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IGZhbHNl
OwotICAgIHdoaWxlIChjdXJMYXllcikgewotICAgICAgICBsYXllcnMuYXBwZW5kKGN1ckxheWVy
KTsKKworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKSB7CisgICAgICAgIGxheWVycy5hcHBlbmQobGF5ZXIpOworCisgICAgICAg
IGlmIChsYXllci0+YmxlbmRNb2RlKCkgIT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICAgICAg
c2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyID0gdHJ1ZTsKKwogICAgICAgICAv
LyBTdG9wIHRyYXZlcnNhbCB3aGVuIGFuIG9wYXF1ZSBsYXllciBpcyBlbmNvdW50ZXJlZC4KLSAg
ICAgICAgLy8gRklYTUUgOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBv
Y2NsdXNpb24gY3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZSAKKyAgICAgICAgLy8g
RklYTUU6IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9sbG93aW5nIG9jY2x1c2lvbiBj
dWxsaW5nIHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlCiAgICAgICAgIC8vIG9uIGxheWVycyB3
aXRoIG5vIHJlcGVhdCBieSB0ZXN0aW5nIHdoZXRoZXIgdGhlIGltYWdlIGNvdmVycyB0aGUgbGF5
b3V0IHJlY3QuCiAgICAgICAgIC8vIFRlc3RpbmcgdGhhdCBoZXJlIHdvdWxkIGltcGx5IGR1cGxp
Y2F0aW5nIGEgbG90IG9mIGNhbGN1bGF0aW9ucyB0aGF0IGFyZSBjdXJyZW50bHkgZG9uZSBpbgog
ICAgICAgICAvLyBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZC4g
QSBtb3JlIGVmZmljaWVudCBzb2x1dGlvbiBtaWdodCBiZSB0byBtb3ZlCiAgICAgICAgIC8vIHRo
ZSBsYXllciByZWN1cnNpb24gaW50byBwYWludEZpbGxMYXllckV4dGVuZGVkLCBvciB0byBjb21w
dXRlIHRoZSBsYXllciBnZW9tZXRyeSBoZXJlCiAgICAgICAgIC8vIGFuZCBwYXNzIGl0IGRvd24u
CiAKLSAgICAgICAgaWYgKCFzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgJiYg
Y3VyTGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgICAgIHNo
b3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7Ci0KICAgICAgICAgLy8g
VGhlIGNsaXBPY2NsdWRlc05leHRMYXllcnMgY29uZGl0aW9uIG11c3QgYmUgZXZhbHVhdGVkIGZp
cnN0IHRvIGF2b2lkIHNob3J0LWNpcmN1aXRpbmcuCi0gICAgICAgIGlmIChjdXJMYXllci0+Y2xp
cE9jY2x1ZGVzTmV4dExheWVycyhjdXJMYXllciA9PSBmaWxsTGF5ZXIpICYmIGN1ckxheWVyLT5o
YXNPcGFxdWVJbWFnZSgqdGhpcykgJiYgY3VyTGF5ZXItPmltYWdlKCktPmNhblJlbmRlcih0aGlz
LCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkgJiYgY3VyTGF5ZXItPmhhc1JlcGVhdFhZKCkgJiYg
Y3VyTGF5ZXItPmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgaWYgKGxh
eWVyLT5jbGlwT2NjbHVkZXNOZXh0TGF5ZXJzKGxheWVyID09ICZmaWxsTGF5ZXIpICYmIGxheWVy
LT5oYXNPcGFxdWVJbWFnZSgqdGhpcykgJiYgbGF5ZXItPmltYWdlKCktPmNhblJlbmRlcih0aGlz
LCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkgJiYgbGF5ZXItPmhhc1JlcGVhdFhZKCkgJiYgbGF5
ZXItPmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0KCk7CiAgICAgfQogCi0gICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBCYXNlQmFja2dy
b3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7
CisgICAgYXV0byYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgYXV0byBiYXNl
QmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZTsKIAogICAgIGlmIChzaG91bGRE
cmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpIHsKLSAgICAgICAgcGFpbnRGaWxsTGF5ZXIo
cGFpbnRJbmZvLCBjLCAqbGF5ZXJzLnJiZWdpbigpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3As
IGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5KTsKKyAgICAgICAgcGFp
bnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjb2xvciwgKmxheWVycy5sYXN0KCksIHJlY3QsIGJsZWVk
QXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvck9ubHkp
OwogICAgICAgICBiYXNlQmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclNraXA7CiAg
ICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICB9CiAKLSAgICBW
ZWN0b3I8Y29uc3QgRmlsbExheWVyKj46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdG9wTGF5ZXIg
PSBsYXllcnMucmVuZCgpOwotICAgIGZvciAoVmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbGF5ZXJzLnJiZWdpbigpOyBpdCAhPSB0b3BMYXllcjsg
KytpdCkKLSAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCAqaXQsIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7Cisg
ICAgYXV0byB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbGF5
ZXJzLnJiZWdpbigpOyBpdCAhPSB0b3BMYXllcjsgKytpdCkKKyAgICAgICAgcGFpbnRGaWxsTGF5
ZXIocGFpbnRJbmZvLCBjb2xvciwgKippdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNr
Z3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGREcmF3QmFj
a2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5
ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5
ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICBCYWNrZ3JvdW5k
QmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5k
ZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFz
ZUJnQ29sb3JVc2FnZSkKIHsKICAgICBwYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywg
YywgZmlsbExheWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgbnVsbHB0ciwgTGF5b3V0U2l6ZSgp
LCBvcCwgYmFja2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CiB9CiAKLXN0YXRpYyBi
b29sIGxheWVyc1VzZUltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVy
KiBsYXllcnMpCitzdGF0aWMgYm9vbCBsYXllcnNVc2VJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1h
Z2UsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzKQogewotICAgIGZvciAoY29uc3QgRmlsbExheWVy
KiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQo
KSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0gY3VyTGF5ZXIt
PmltYWdlKCktPmRhdGEoKSkKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmxheWVyczsgbGF5ZXI7
IGxheWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkgJiYg
aW1hZ2UgPT0gbGF5ZXItPmltYWdlKCktPmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTcyNSwxMyArMTcyMCwxMyBA
QCB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29u
c3QgSW50UmVjdCopCiAgICAgICAgIGxheWVyKCktPmNvbnRlbnRDaGFuZ2VkKEJhY2tncm91bmRJ
bWFnZUNoYW5nZWQpOwogfQogCi1ib29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJ
bWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzLCBib29s
IGRyYXdpbmdCYWNrZ3JvdW5kKQorYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycywgYm9v
bCBkcmF3aW5nQmFja2dyb3VuZCkKIHsKICAgICBMYXlvdXRSZWN0IHJlbmRlcmVyUmVjdDsKICAg
ICBSZW5kZXJCb3gqIGxheWVyUmVuZGVyZXIgPSBudWxscHRyOwogCi0gICAgZm9yIChjb25zdCBG
aWxsTGF5ZXIqIGN1ckxheWVyID0gbGF5ZXJzOyBjdXJMYXllcjsgY3VyTGF5ZXIgPSBjdXJMYXll
ci0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJMYXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBj
dXJMYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGN1ckxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIo
dGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CisgICAgZm9yIChhdXRvKiBsYXllciA9
ICZsYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxh
eWVyLT5pbWFnZSgpICYmIGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5kYXRhKCkgJiYgbGF5ZXIt
PmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpIHsKICAg
ICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgdGhpcyBpbWFnZSBpcyBiZWluZyB1c2VkLCBj
b21wdXRlIHRoZSByZW5kZXJlciBhbmQgdGhlIHJlY3QgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5Lgog
ICAgICAgICAgICAgYm9vbCBkcmF3aW5nUm9vdEJhY2tncm91bmQgPSBkcmF3aW5nQmFja2dyb3Vu
ZCAmJiAoaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IChpc0JvZHkoKSAmJiAhZG9jdW1l
bnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+aGFzQmFja2dyb3VuZCgpKSk7CiAg
ICAgICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXIpIHsKQEAgLTE3NTEsNyArMTc0Niw3IEBAIGJv
b2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdyYXBwZWRJbWFnZVB0ciBp
bWFnZSwgY29uc3QgRmlsbExheWVyCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHBhc3MgYWJzb2x1dGUgcG9z
aXRpb24gdG8gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgKGZvciBwaXhlbCBzbmFw
cGluZykKLSAgICAgICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gbGF5
ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKmN1
ckxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5kZXJlclJlY3QpOworICAgICAgICAgICAgQmFja2dy
b3VuZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBsYXllclJlbmRlcmVyLT5jYWxjdWxhdGVCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqbGF5ZXIsIExheW91dFBvaW50KCksIHJlbmRl
cmVyUmVjdCk7CiAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaGFzTm9uTG9jYWxHZW9tZXRyeSgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gUmF0aGVyIHRoYW4gaW5jdXIgdGhlIGNvc3RzIG9mIGNv
bXB1dGluZyB0aGUgcGFpbnRDb250YWluZXIgZm9yIHJlbmRlcmVycyB3aXRoIGZpeGVkIGJhY2tn
cm91bmRzCiAgICAgICAgICAgICAgICAgLy8gaW4gb3JkZXIgdG8gZ2V0IHRoZSByaWdodCBkZXN0
UmVjdCwganVzdCByZXBhaW50IHRoZSBlbnRpcmUgcmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKaW5kZXggZDBmYTdiMmE1NzYyNzlkYTAxNWY2Mjg1N2E0YmI0YzM4N2I3
ODEyZC4uMDEyNGFkYWJjMzhhNWY2NDgyYWM2OWViODE5OWExNzhmMzVhNWU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjI3LDggKzYyNyw4IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsK
ICAgICAKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENv
bG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRP
YmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2Up
OwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIp
OworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3Im
LCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7Cisg
ICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBj
b25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0cik7CiAK
ICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRS
ZWN0Jik7CiAKQEAgLTY2Niw4ICs2NjYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1Njcm9s
bGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICAvLyBSZXR1
cm5zIHRydWUgaWYgd2UgZGlkIGEgZnVsbCByZXBhaW50Ci0gICAgYm9vbCByZXBhaW50TGF5ZXJS
ZWN0c0ZvckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyKiBsYXll
cnMsIGJvb2wgZHJhd2luZ0JhY2tncm91bmQpOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBk
aWQgYSBmdWxsIHJlcGFpbnQuCisgICAgYm9vbCByZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdy
YXBwZWRJbWFnZVB0ciwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJvb2wgZHJhd2luZ0JhY2tn
cm91bmQpOwogCiAgICAgYm9vbCBza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENh
bGN1bGF0aW9uKGNvbnN0IFJlbmRlckJveCYgY29udGFpbmluZ0Jsb2NrLCBib29sIGlzUGVycGVu
ZGljdWxhcldyaXRpbmdNb2RlKSBjb25zdDsKICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNWM2NTliNzJjYTlkMDc3ZmI2
NzJhNjcyMjVhM2M1MjNkZTFhMDE2OC4uMWY0ZDBjNWZjOWQ1YTVhYWVjOTdkYWFmNzk2YTY1OTNh
YWJiZGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXImIGJnTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJs
ZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNp
emUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0
LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwpAQCAtNjM1LDEyICs2
MzUsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBib29sIGluY2x1ZGVSaWdodEVk
Z2UgPSBib3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkgOiB0cnVlOwogCiAgICAg
Ym9vbCBoYXNSb3VuZGVkQm9yZGVyID0gc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiAoaW5j
bHVkZUxlZnRFZGdlIHx8IGluY2x1ZGVSaWdodEVkZ2UpOwotICAgIGJvb2wgY2xpcHBlZFdpdGhM
b2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5ZXItPmF0dGFjaG1lbnQo
KSA9PSBMb2NhbEJhY2tncm91bmRBdHRhY2htZW50OwotICAgIGJvb2wgaXNCb3JkZXJGaWxsID0g
YmdMYXllci0+Y2xpcCgpID09IEJvcmRlckZpbGxCb3g7CisgICAgYm9vbCBjbGlwcGVkV2l0aExv
Y2FsU2Nyb2xsaW5nID0gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgYmdMYXllci5hdHRhY2htZW50KCkg
PT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKKyAgICBib29sIGlzQm9yZGVyRmlsbCA9IGJn
TGF5ZXIuY2xpcCgpID09IEJvcmRlckZpbGxCb3g7CiAgICAgYm9vbCBpc1Jvb3QgPSB0aGlzLT5p
c0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCk7CiAKICAgICBDb2xvciBiZ0NvbG9yID0gY29sb3I7
Ci0gICAgU3R5bGVJbWFnZSogYmdJbWFnZSA9IGJnTGF5ZXItPmltYWdlKCk7CisgICAgU3R5bGVJ
bWFnZSogYmdJbWFnZSA9IGJnTGF5ZXIuaW1hZ2UoKTsKICAgICBib29sIHNob3VsZFBhaW50QmFj
a2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5jYW5SZW5kZXIodGhpcywgc3R5bGUo
KS5lZmZlY3RpdmVab29tKCkpOwogICAgIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kVG9XaGl0
ZSA9IGZhbHNlOwpAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAg
ICAgLy8gd2hpbGUgcmVuZGVyaW5nLikKICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkg
ewogICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgcmV1c2UgdGhpcyB2YXJpYWJsZSBiZWxv
dyBiZWNhdXNlIHRoZSBiZ0NvbG9yIG1pZ2h0IGJlIGNoYW5nZWQKLSAgICAgICAgYm9vbCBzaG91
bGRQYWludEJhY2tncm91bmRDb2xvciA9ICFiZ0xheWVyLT5uZXh0KCkgJiYgYmdDb2xvci5pc1Zp
c2libGUoKTsKKyAgICAgICAgYm9vbCBzaG91bGRQYWludEJhY2tncm91bmRDb2xvciA9ICFiZ0xh
eWVyLm5leHQoKSAmJiBiZ0NvbG9yLmlzVmlzaWJsZSgpOwogICAgICAgICBpZiAoc2hvdWxkUGFp
bnRCYWNrZ3JvdW5kSW1hZ2UgfHwgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IpIHsKICAgICAg
ICAgICAgIGJnQ29sb3IgPSBDb2xvcjo6d2hpdGU7CiAgICAgICAgICAgICBzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSA9IGZhbHNlOwpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvCiAgICAgfQogCiAgICAgYm9vbCBiYXNlQmdDb2xvck9ubHkgPSAoYmFzZUJnQ29s
b3JVc2FnZSA9PSBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7Ci0gICAgaWYgKGJhc2VCZ0NvbG9y
T25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLT5uZXh0KCkgfHwgYmdDb2xvci5pc09wYXF1ZSgp
KSkKKyAgICBpZiAoYmFzZUJnQ29sb3JPbmx5ICYmICghaXNSb290IHx8IGJnTGF5ZXIubmV4dCgp
IHx8IGJnQ29sb3IuaXNPcGFxdWUoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgY29s
b3JWaXNpYmxlID0gYmdDb2xvci5pc1Zpc2libGUoKTsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0ID0gc25h
cFJlY3RUb0RldmljZVBpeGVscyhyZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAvLyBG
YXN0IHBhdGggZm9yIGRyYXdpbmcgc2ltcGxlIGNvbG9yIGJhY2tncm91bmRzLgotICAgIGlmICgh
aXNSb290ICYmICFjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nICYmICFzaG91bGRQYWludEJhY2tn
cm91bmRJbWFnZSAmJiBpc0JvcmRlckZpbGwgJiYgIWJnTGF5ZXItPm5leHQoKSkgeworICAgIGlm
ICghaXNSb290ICYmICFjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nICYmICFzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSAmJiBpc0JvcmRlckZpbGwgJiYgIWJnTGF5ZXIubmV4dCgpKSB7CiAgICAg
ICAgIGlmICghY29sb3JWaXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03MDksMTAg
KzcwOSwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBSb3VuZGVkUmVjdCBi
b3JkZXIgPSBpc0JvcmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJs
ZWVkQXZvaWRhbmNlKGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUs
IGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRl
ZFJlY3QocmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0aGUg
cGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYgKGJnTGF5
ZXItPmNsaXAoKSA9PSBDb250ZW50RmlsbEJveCkgeworICAgICAgICBpZiAoYmdMYXllci5jbGlw
KCkgPT0gQ29udGVudEZpbGxCb3gpIHsKICAgICAgICAgICAgIGJvcmRlciA9IHN0eWxlKCkuZ2V0
Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksCiAgICAgICAgICAgICAgICAgcGFk
ZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSArIGJvcmRlckJvdHRvbSgp
LCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJp
Z2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoYmdMYXllci0+Y2xpcCgpID09IFBhZGRpbmdGaWxsQm94KQorICAgICAgICB9IGVsc2Ug
aWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94KQogICAgICAgICAgICAgYm9yZGVy
ID0gc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyLnJlY3QoKSwgaW5jbHVk
ZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKIAogICAgICAgICBjbGlwUm91bmRlZElubmVy
UmVjdChjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0LCBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRl
ZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOwpAQCAtNzQwLDEwICs3NDAsMTAg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCi0gICAgaWYgKGJnTGF5ZXIt
PmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCB8fCBiZ0xheWVyLT5jbGlwKCkgPT0gQ29udGVudEZp
bGxCb3gpIHsKKyAgICBpZiAoYmdMYXllci5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdM
YXllci5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUg
cGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKCFjbGlw
VG9Cb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgICAgIGJvb2wgaW5jbHVkZVBhZGRpbmcgPSBiZ0xh
eWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3g7CisgICAgICAgICAgICBib29sIGluY2x1ZGVQ
YWRkaW5nID0gYmdMYXllci5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3g7CiAgICAgICAgICAgICBM
YXlvdXRSZWN0IGNsaXBSZWN0ID0gTGF5b3V0UmVjdChzY3JvbGxlZFBhaW50UmVjdC54KCkgKyBi
TGVmdCArIChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0IDogTGF5b3V0VW5pdCgpKSwKICAgICAgICAg
ICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC55KCkgKyBib3JkZXJUb3AoKSArIChpbmNsdWRlUGFk
ZGluZyA/IHBhZGRpbmdUb3AoKSA6IExheW91dFVuaXQoKSksCiAgICAgICAgICAgICAgICAgc2Ny
b2xsZWRQYWludFJlY3Qud2lkdGgoKSAtIGJMZWZ0IC0gYlJpZ2h0IC0gKGluY2x1ZGVQYWRkaW5n
ID8gcExlZnQgKyBwUmlnaHQgOiBMYXlvdXRVbml0KCkpLApAQCAtNzUxLDcgKzc1MSw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2
ZXIuc2F2ZSgpOwogICAgICAgICAgICAgY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAoYmdMYXllci0+Y2xpcCgpID09IFRleHRGaWxsQm94KSB7CisgICAg
fSBlbHNlIGlmIChiZ0xheWVyLmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICAvLyBX
ZSBoYXZlIHRvIGRyYXcgb3VyIHRleHQgaW50byBhIG1hc2sgdGhhdCBjYW4gdGhlbiBiZSB1c2Vk
IHRvIGNsaXAgYmFja2dyb3VuZCBkcmF3aW5nLgogICAgICAgICAvLyBGaXJzdCBmaWd1cmUgb3V0
IGhvdyBiaWcgdGhlIG1hc2sgaGFzIHRvIGJlLiAgSXQgc2hvdWxkIGJlIG5vIGJpZ2dlciB0aGFu
IHdoYXQgd2UgbmVlZAogICAgICAgICAvLyB0byBhY3R1YWxseSByZW5kZXIsIHNvIHdlIHNob3Vs
ZCBpbnRlcnNlY3QgdGhlIGRpcnR5IHJlY3Qgd2l0aCB0aGUgYm9yZGVyIGJveCBvZiB0aGUgYmFj
a2dyb3VuZC4KQEAgLTc3NSw3ICs3NzUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAg
IGJvb2wgaXNPcGFxdWVSb290ID0gZmFsc2U7CiAgICAgaWYgKGlzUm9vdCkgewogICAgICAgICBp
c09wYXF1ZVJvb3QgPSB0cnVlOwotICAgICAgICBpZiAoIWJnTGF5ZXItPm5leHQoKSAmJiAhYmdD
b2xvci5pc09wYXF1ZSgpKSB7CisgICAgICAgIGlmICghYmdMYXllci5uZXh0KCkgJiYgIWJnQ29s
b3IuaXNPcGFxdWUoKSkgewogICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ckVsZW1lbnQgPSBkb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogICAgICAgICAgICAgaWYgKG93
bmVyRWxlbWVudCkgewogICAgICAgICAgICAgICAgIGlmICghb3duZXJFbGVtZW50LT5oYXNUYWdO
YW1lKGZyYW1lVGFnKSkgewpAQCAtNzk4LDEyICs3OTgsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY28KICAgICB9CiAKICAgICAvLyBQYWludCB0aGUgY29sb3IgZmlyc3QgdW5kZXJuZWF0aCBh
bGwgaW1hZ2VzLCBjdWxsZWQgaWYgYmFja2dyb3VuZCBpbWFnZSBvY2NsdWRlcyBpdC4KLSAgICAv
LyBGSVhNRTogSW4gdGhlIGJnTGF5ZXItPmhhc0Zpbml0ZUJvdW5kcygpIGNhc2UsIHdlIGNvdWxk
IGltcHJvdmUgdGhlIGN1bGxpbmcgdGVzdAorICAgIC8vIEZJWE1FOiBJbiB0aGUgYmdMYXllci5o
YXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3VsZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QK
ICAgICAvLyBieSB2ZXJpZnlpbmcgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZSBjb3ZlcnMg
dGhlIGVudGlyZSBsYXlvdXQgcmVjdC4KLSAgICBpZiAoIWJnTGF5ZXItPm5leHQoKSkgeworICAg
IGlmICghYmdMYXllci5uZXh0KCkpIHsKICAgICAgICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVj
dChzY3JvbGxlZFBhaW50UmVjdCk7CiAgICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBs
aWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKHJlY3QubG9jYXRpb24oKSwgYmxlZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIGlmIChi
b3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgfHwgIXNob3VsZFBhaW50QmFja2dy
b3VuZEltYWdlIHx8ICFiZ0xheWVyLT5oYXNPcGFxdWVJbWFnZSgqdGhpcykgfHwgIWJnTGF5ZXIt
Pmhhc1JlcGVhdFhZKCkpIHsKKyAgICAgICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRv
QmFja2dyb3VuZCB8fCAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgfHwgIWJnTGF5ZXIuaGFz
T3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVyLmhhc1JlcGVhdFhZKCkpIHsKICAgICAgICAg
ICAgIGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAg
ICAgICAgIGJhY2tncm91bmRSZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAKQEAgLTgy
NCwxMCArODI0LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIGlmIChi
YXNlQ29sb3IuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWJhc2VCZ0NvbG9y
T25seSAmJiBiZ0NvbG9yLmlzVmlzaWJsZSgpKQogICAgICAgICAgICAgICAgICAgICBiYXNlQ29s
b3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7Ci0KICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwgQ29tcG9zaXRl
Q29weSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xv
ci5pc1Zpc2libGUoKSkgewotICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJh
dGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNv
bXBvc2l0ZU9wZXJhdGlvbigpOworICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gc2hv
dWxkQ2xlYXJCYWNrZ3JvdW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQuY29tcG9zaXRlT3Bl
cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVj
dEZvclBhaW50aW5nLCBiZ0NvbG9yLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChzaG91bGRDbGVhckJhY2tncm91bmQpCiAgICAgICAgICAgICAgICAgY29udGV4dC5jbGVhclJl
Y3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CkBAIC04MzYsMTkgKzgzNSwxOSBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgLy8gbm8gcHJvZ3Jlc3NpdmUgbG9hZGluZyBvZiB0
aGUgYmFja2dyb3VuZCBpbWFnZQogICAgIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlKSB7Ci0gICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdl
b21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50
Q29udGFpbmVyLCAqYmdMYXllciwgcmVjdC5sb2NhdGlvbigpLCBzY3JvbGxlZFBhaW50UmVjdCwg
YmFja2dyb3VuZE9iamVjdCk7CisgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludEluZm8ucGFpbnRDb250YWluZXIsIGJnTGF5ZXIsIHJl
Y3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3QsIGJhY2tncm91bmRPYmplY3QpOwogICAg
ICAgICBnZW9tZXRyeS5jbGlwKExheW91dFJlY3QocGl4ZWxTbmFwcGVkUmVjdCkpOwogICAgICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWdlb21ldHJ5LmRlc3RSZWN0KCku
aXNFbXB0eSgpICYmIChpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGJhY2tncm91bmRPYmplY3QgPyBi
YWNrZ3JvdW5kT2JqZWN0IDogdGhpcywgZ2VvbWV0cnkudGlsZVNpemUoKSkpKSB7Ci0gICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwotICAgICAgICAgICAgY29udGV4dC5z
ZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1p
bmFuY2UpOworICAgICAgICAgICAgYXV0byBjb21wb3NpdGVPcCA9IG9wID09IENvbXBvc2l0ZVNv
dXJjZU92ZXIgPyBiZ0xheWVyLmNvbXBvc2l0ZSgpIDogb3A7CisgICAgICAgICAgICBjb250ZXh0
LnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXIubWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKIAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlv
biA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgYmdMYXllciwg
Z2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdl
KCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxh
dGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAg
ICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4
dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CisgICAgICAgICAgICBj
b250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlv
dXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBn
ZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJn
TGF5ZXIuYmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBpbnRlcnBv
bGF0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5
ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAgIGlmIChtYXNrSW1hZ2UgJiYgYmdMYXll
ci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgY29udGV4dC5kcmF3Q29uc3VtaW5n
SW1hZ2VCdWZmZXIoV1RGTW92ZShtYXNrSW1hZ2UpLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGlu
YXRpb25Jbik7CiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICB9
CkBAIC05NjEsOCArOTYwLDggQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2Fs
Y3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciYgZmlsbExheWUKICAgICAgICAgY2Fz
ZSBTaXplTGVuZ3RoOiB7CiAgICAgICAgICAgICBMYXlvdXRTaXplIHRpbGVTaXplID0gcG9zaXRp
b25pbmdBcmVhU2l6ZTsKIAotICAgICAgICAgICAgTGVuZ3RoIGxheWVyV2lkdGggPSBmaWxsTGF5
ZXIuc2l6ZSgpLnNpemUud2lkdGgoKTsKLSAgICAgICAgICAgIExlbmd0aCBsYXllckhlaWdodCA9
IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIExlbmd0aCBsYXll
cldpZHRoID0gZmlsbExheWVyLnNpemUoKS5zaXplLndpZHRoOworICAgICAgICAgICAgTGVuZ3Ro
IGxheWVySGVpZ2h0ID0gZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodDsKIAogICAgICAgICAg
ICAgaWYgKGxheWVyV2lkdGguaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHRpbGVTaXplLnNl
dFdpZHRoKGxheWVyV2lkdGgudmFsdWUoKSk7CkBAIC05ODYsNyArOTg1LDcgQEAgTGF5b3V0U2l6
ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxM
YXllciYgZmlsbExheWUKICAgICAgICAgICAgICAgICAvLyBJZiBib3RoIHdpZHRoIGFuZCBoZWln
aHQgYXJlIGF1dG8sIHVzZSB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgc2l6ZS4KICAgICAgICAgICAg
ICAgICB0aWxlU2l6ZSA9IGltYWdlSW50cmluc2ljU2l6ZTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICB0aWxlU2l6ZS5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAg
ICAgICAgICAgICByZXR1cm4gdGlsZVNpemU7CiAgICAgICAgIH0KQEAgLTExNzEsNyArMTE3MCw3
IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxh
dGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlZFhQb3Np
dGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5ndGgoZmlsbExheWVyLnhQb3NpdGlvbigpLCBm
aWxsTGF5ZXIuYmFja2dyb3VuZFhPcmlnaW4oKSwgYXZhaWxhYmxlV2lkdGgsIHBvc2l0aW9uaW5n
QXJlYVNpemUsIHRpbGVTaXplKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFggPT0gUm91bmRG
aWxsICYmIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSA+IDAgJiYgdGlsZVNpemUud2lkdGgo
KSA+IDApIHsKICAgICAgICAgaW50IG51bVRpbGVzID0gc3RkOjptYXgoMSwgcm91bmRUb0ludChw
b3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLyB0aWxlU2l6ZS53aWR0aCgpKSk7Ci0gICAgICAg
IGlmIChmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgYmFja2dyb3Vu
ZFJlcGVhdFkgIT0gUm91bmRGaWxsKQorICAgICAgICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXpl
LmhlaWdodC5pc0F1dG8oKSAmJiBiYWNrZ3JvdW5kUmVwZWF0WSAhPSBSb3VuZEZpbGwpCiAgICAg
ICAgICAgICB0aWxlU2l6ZS5zZXRIZWlnaHQodGlsZVNpemUuaGVpZ2h0KCkgKiBwb3NpdGlvbmlu
Z0FyZWFTaXplLndpZHRoKCkgLyAobnVtVGlsZXMgKiB0aWxlU2l6ZS53aWR0aCgpKSk7CiAKICAg
ICAgICAgdGlsZVNpemUuc2V0V2lkdGgocG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC8gbnVt
VGlsZXMpOwpAQCAtMTE4MSw3ICsxMTgwLDcgQEAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGMKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVkWVBvc2l0aW9uID0gcmVzb2x2ZUVkZ2VSZWxhdGl2ZUxlbmd0
aChmaWxsTGF5ZXIueVBvc2l0aW9uKCksIGZpbGxMYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpLCBh
dmFpbGFibGVIZWlnaHQsIHBvc2l0aW9uaW5nQXJlYVNpemUsIHRpbGVTaXplKTsKICAgICBpZiAo
YmFja2dyb3VuZFJlcGVhdFkgPT0gUm91bmRGaWxsICYmIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVp
Z2h0KCkgPiAwICYmIHRpbGVTaXplLmhlaWdodCgpID4gMCkgewogICAgICAgICBpbnQgbnVtVGls
ZXMgPSBzdGQ6Om1heCgxLCByb3VuZFRvSW50KHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkg
LyB0aWxlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXpl
LndpZHRoKCkuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFggIT0gUm91bmRGaWxsKQorICAg
ICAgICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLndpZHRoLmlzQXV0bygpICYmIGJhY2tncm91
bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKICAgICAgICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHRp
bGVTaXplLndpZHRoKCkgKiBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpIC8gKG51bVRpbGVz
ICogdGlsZVNpemUuaGVpZ2h0KCkpKTsKIAogICAgICAgICB0aWxlU2l6ZS5zZXRIZWlnaHQocG9z
aXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIG51bVRpbGVzKTsKQEAgLTEyNTAsNyArMTI0OSw3
IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxh
dGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpn
ZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZShjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBwYWludENvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBGbG9hdFNpemUmIHBoYXNlLCBGbG9hdFNpemUmIHRpbGVTaXplKSBjb25z
dAogewogICAgIExheW91dFJlY3QgcGFpbnRSZWN0KGRlc3RSZWN0KTsKLSAgICBCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5
KHBhaW50Q29udGFpbmVyLCAqc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0
LCBwYWludFJlY3QpOworICAgIGF1dG8gZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1h
Z2VHZW9tZXRyeShwYWludENvbnRhaW5lciwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBh
aW50T2Zmc2V0LCBwYWludFJlY3QpOwogICAgIHBoYXNlID0gZ2VvbWV0cnkucGhhc2UoKTsKICAg
ICB0aWxlU2l6ZSA9IGdlb21ldHJ5LnRpbGVTaXplKCk7CiAgICAgZGVzdFJlY3QgPSBnZW9tZXRy
eS5kZXN0UmVjdCgpOwpAQCAtMjE3MCw4ICsyMTY5LDggQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBv
aW4KICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc09wYXF1ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGxhc3RCYWNrZ3JvdW5kTGF5ZXIgPSBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogbmV4dCA9
IGxhc3RCYWNrZ3JvdW5kTGF5ZXItPm5leHQoKTsgbmV4dDsgbmV4dCA9IGxhc3RCYWNrZ3JvdW5k
TGF5ZXItPm5leHQoKSkKKyAgICBhdXRvKiBsYXN0QmFja2dyb3VuZExheWVyID0gJnN0eWxlKCku
YmFja2dyb3VuZExheWVycygpOworICAgIHdoaWxlIChhdXRvKiBuZXh0ID0gbGFzdEJhY2tncm91
bmRMYXllci0+bmV4dCgpKQogICAgICAgICBsYXN0QmFja2dyb3VuZExheWVyID0gbmV4dDsKIAog
ICAgIGlmIChsYXN0QmFja2dyb3VuZExheWVyLT5jbGlwKCkgIT0gQm9yZGVyRmlsbEJveCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXgg
NzhmNTJlYzYwZTg0ZTMyNzQxYzdjNDMwOGZhMmRjNjdiODcwZTUxMS4uOTNlYzJjZThhODEwNDg1
NzM0MDIwNDBmYTQyOTczNWJmMjk5YzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5k
QmxlZWROb25lLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgYm9vbCBwYWludE5pbmVQaWVjZUltYWdl
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0g
dHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlv
dXRTaXplJiA9IExheW91dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJh
Y2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7CisgICAgdm9pZCBw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29u
c3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSwgSW5saW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNp
emUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVt
ZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdl
ID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93
U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZVBh
aW50UG9zdGlvbiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IG51
bGxwdHIpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAKaW5kZXggZTI3YjQxYWIxMGVhOGE1YmZlMmU2MzI3Mjg1YjVhOGYyMWYxYmYyZC4uZjg0N2Zm
ZGU4ZmU1ZDI2ZDUzYzYxZDk1NDc1OTRiODg0YTZjNGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTM1LDIyICsxMzUsMTggQEAgUmVuZGVyRWxl
bWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIEJhc2VUeXBlRmwKIFJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KCkKIHsKICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZWRTdHlsZSgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVy
KiBiZ0xheWVyID0gbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXI7IGJnTGF5ZXIg
PSBiZ0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBiYWNrZ3Jv
dW5kSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpKQorICAgICAgICBmb3IgKGF1dG8qIGJnTGF5ZXIg
PSAmbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXI7IGJnTGF5ZXIgPSBiZ0xheWVy
LT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZ3JvdW5kSW1hZ2UgPSBiZ0xh
eWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOwogICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG1h
c2tMYXllciA9IG1fc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1h
c2tMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0ltYWdl
ID0gbWFza0xheWVyLT5pbWFnZSgpKQorICAgICAgICBmb3IgKGF1dG8qIG1hc2tMYXllciA9ICZt
X3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5l
eHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG1hc2tJbWFnZSA9IG1hc2tMYXllci0+aW1h
Z2UoKSkKICAgICAgICAgICAgICAgICBtYXNrSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAg
ICAgICAgfQotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IG1fc3R5bGUu
Ym9yZGVySW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAoYXV0byogYm9yZGVySW1hZ2UgPSBt
X3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIGJvcmRlckltYWdlLT5y
ZW1vdmVDbGllbnQodGhpcyk7Ci0KLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFn
ZSA9IG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIG1h
c2tCb3hJbWFnZSA9IG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAg
IG1hc2tCb3hJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotCiAgICAgICAgIGlmIChhdXRvIHNo
YXBlVmFsdWUgPSBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0
byBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBzaGFw
ZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CkBAIC0zMDMsOCArMjk5LDggQEAgU3R5bGVEaWZm
ZXJlbmNlIFJlbmRlckVsZW1lbnQ6OmFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgdW5zaWcKICAgICB9CiAgICAgCiAgICAgaWYgKChjb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcyAmIENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcikgJiYgaGFzTGF5ZXIoKSkg
ewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVs
T2JqZWN0PigqdGhpcykubGF5ZXIoKTsKLSAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVk
KCkgfHwgbGF5ZXItPnBhaW50c1dpdGhGaWx0ZXJzKCkpCisgICAgICAgIGF1dG8mIGxheWVyID0g
KmRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpOworICAgICAg
ICBpZiAoIWxheWVyLmlzQ29tcG9zaXRlZCgpIHx8IGxheWVyLnBhaW50c1dpdGhGaWx0ZXJzKCkp
CiAgICAgICAgICAgICBkaWZmID0gc3RkOjptYXgoZGlmZiwgU3R5bGVEaWZmZXJlbmNlUmVwYWlu
dExheWVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYs
IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpOwpAQCAtMzQxLDIxICszMzcsMjAgQEAg
aW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6c2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5j
ZShTdHlsZURpZmZlcmVuY2UgZGlmZikKICAgICByZXR1cm4gZGlmZiA9PSBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50IHx8IChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnRJZlRleHRPckJvcmRl
ck9yT3V0bGluZSAmJiBoYXNJbW1lZGlhdGVOb25XaGl0ZXNwYWNlVGV4dENoaWxkT3JCb3JkZXJP
ck91dGxpbmUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6dXBkYXRlRmlsbEltYWdlcyhj
b25zdCBGaWxsTGF5ZXIqIG9sZExheWVycywgY29uc3QgRmlsbExheWVyKiBuZXdMYXllcnMpCit2
b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVyKiBvbGRM
YXllcnMsIGNvbnN0IEZpbGxMYXllciYgbmV3TGF5ZXJzKQogewotICAgIC8vIE9wdGltaXplIHRo
ZSBjb21tb24gY2FzZQotICAgIGlmIChGaWxsTGF5ZXI6OmltYWdlc0lkZW50aWNhbChvbGRMYXll
cnMsIG5ld0xheWVycykpCisgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlLgorICAgIGlm
IChGaWxsTGF5ZXI6OmltYWdlc0lkZW50aWNhbChvbGRMYXllcnMsICZuZXdMYXllcnMpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gR28gdGhyb3VnaCB0aGUgbmV3IGxheWVycyBhbmQg
YWRkQ2xpZW50cyBmaXJzdCwgdG8gYXZvaWQgcmVtb3ZpbmcgYWxsIGNsaWVudHMgb2YgYW4gaW1h
Z2UuCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJOZXcgPSBuZXdMYXllcnM7IGN1cnJO
ZXc7IGN1cnJOZXcgPSBjdXJyTmV3LT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGN1cnJOZXctPmlt
YWdlKCkpCi0gICAgICAgICAgICBjdXJyTmV3LT5pbWFnZSgpLT5hZGRDbGllbnQodGhpcyk7Cisg
ICAgLy8gQWRkIGJlZm9yZSByZW1vdmluZywgdG8gYXZvaWQgcmVtb3ZpbmcgYWxsIGNsaWVudHMg
b2YgYW4gaW1hZ2UgdGhhdCBpcyBpbiBib3RoIHNldHMuCisgICAgZm9yIChhdXRvKiBsYXllciA9
ICZuZXdMYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYg
KGxheWVyLT5pbWFnZSgpKQorICAgICAgICAgICAgbGF5ZXItPmltYWdlKCktPmFkZENsaWVudCh0
aGlzKTsKICAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vyck9sZCA9IG9sZExh
eWVyczsgY3Vyck9sZDsgY3Vyck9sZCA9IGN1cnJPbGQtPm5leHQoKSkgewotICAgICAgICBpZiAo
Y3Vyck9sZC0+aW1hZ2UoKSkKLSAgICAgICAgICAgIGN1cnJPbGQtPmltYWdlKCktPnJlbW92ZUNs
aWVudCh0aGlzKTsKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gb2xkTGF5ZXJzOyBsYXllcjsgbGF5
ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChsYXllci0+aW1hZ2UoKSkKKyAgICAg
ICAgICAgIGxheWVyLT5pbWFnZSgpLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogfQogCkBA
IC00MDksOCArNDA0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShSZW5kZXJTdHls
ZSYmIHN0eWxlLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGkKICAgICBTdHlsZTo6bG9h
ZFBlbmRpbmdSZXNvdXJjZXMoc3R5bGUsIGRvY3VtZW50KCksIGVsZW1lbnQoKSk7CiAKICAgICBz
dHlsZVdpbGxDaGFuZ2UoZGlmZiwgc3R5bGUpOwotICAgIGF1dG8gb2xkU3R5bGUgPSBXVEZNb3Zl
KG1fc3R5bGUpOwotICAgIG1fc3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsKKyAgICBhdXRvIG9sZFN0
eWxlID0gbV9zdHlsZS5yZXBsYWNlKFdURk1vdmUoc3R5bGUpKTsKICAgICBib29sIGRldGFjaGVk
RnJvbVBhcmVudCA9ICFwYXJlbnQoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbnZhbGlkYXRl
IHRoZSBjb250YWluaW5nIGJsb2NrIGNhY2hlIGZvciBmbG93cyB3aGVuIHRoZSBjb250aWFuaW5n
IGJsb2NrIGNvbnRleHQgY2hhbmdlcwpAQCAtODA3LDcgKzgwMSw3IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6cHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuKFN0eWxlUHJvcGFnYXRpb25U
eXBlIHByb3BhCiAgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBlbGVtZW50Q2hpbGQuc3R5bGUoKS5kaXNw
bGF5KCkpOwogICAgICAgICBpZiAoc3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkpIHsKICAgICAg
ICAgICAgIGlmIChlbGVtZW50Q2hpbGQuc3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkpCi0gICAg
ICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKCZzdHlsZSgp
KTsKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20o
c3R5bGUoKSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuY29sdW1uU3Bh
bigpKQogICAgICAgICAgICAgICAgIG5ld1N0eWxlLnNldENvbHVtblNwYW4oQ29sdW1uU3BhbkFs
bCk7CiAgICAgICAgIH0KQEAgLTk5OSw4ICs5OTMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXJl
Q3Vyc29yc0VxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikK
IAogdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIHVwZGF0ZUZpbGxJbWFnZXMo
b2xkU3R5bGUgPyBvbGRTdHlsZS0+YmFja2dyb3VuZExheWVycygpIDogbnVsbHB0ciwgbV9zdHls
ZS5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAgIHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUgPyBv
bGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwor
ICAgIHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUgPyAmb2xkU3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKSA6IG51bGxwdHIsIG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpKTsKKyAgICB1cGRhdGVG
aWxsSW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBudWxscHRyLCBt
X3N0eWxlLm1hc2tMYXllcnMoKSk7CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHls
ZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5ib3JkZXJJbWFnZSgp
LmltYWdlKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCkgOiBudWxscHRyLCBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkp
OwogICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVPdXRzaWRl
KCkgOiBudWxscHRyLCBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKTsKQEAgLTEyMzEsNDEgKzEyMjUs
MzkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpsYXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6Okxh
eW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQo
KSk7Ci0gICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAo
Y2hpbGQpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5
b3V0KCkpCiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLmxheW91
dCgpOwogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKLSAgICAgICAgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAgICAgY2xlYXJOZWVkc0xheW91dCgp
OwogfQogCi1zdGF0aWMgYm9vbCBtdXN0UmVwYWludEZpbGxMYXllcnMoY29uc3QgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIpCitzdGF0aWMgYm9vbCBtdXN0
UmVwYWludEZpbGxMYXllcnMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZp
bGxMYXllciYgbGF5ZXIpCiB7CiAgICAgLy8gTm9ib2R5IHdpbGwgdXNlIG11bHRpcGxlIGxheWVy
cyB3aXRob3V0IHdhbnRpbmcgZmFuY3kgcG9zaXRpb25pbmcuCi0gICAgaWYgKGxheWVyLT5uZXh0
KCkpCisgICAgaWYgKGxheWVyLm5leHQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBNYWtlIHN1cmUgd2UgaGF2ZSBhIHZhbGlkIGltYWdlLgotICAgIFN0eWxlSW1hZ2UqIGltYWdl
ID0gbGF5ZXItPmltYWdlKCk7CisgICAgYXV0byogaW1hZ2UgPSBsYXllci5pbWFnZSgpOwogICAg
IGlmICghaW1hZ2UgfHwgIWltYWdlLT5jYW5SZW5kZXIoJnJlbmRlcmVyLCByZW5kZXJlci5zdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICgh
bGF5ZXItPnhQb3NpdGlvbigpLmlzWmVybygpIHx8ICFsYXllci0+eVBvc2l0aW9uKCkuaXNaZXJv
KCkpCisgICAgaWYgKCFsYXllci54UG9zaXRpb24oKS5pc1plcm8oKSB8fCAhbGF5ZXIueVBvc2l0
aW9uKCkuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRUZpbGxTaXplVHlw
ZSBzaXplVHlwZSA9IGxheWVyLT5zaXplVHlwZSgpOworICAgIGF1dG8gc2l6ZVR5cGUgPSBsYXll
ci5zaXplVHlwZSgpOwogCiAgICAgaWYgKHNpemVUeXBlID09IENvbnRhaW4gfHwgc2l6ZVR5cGUg
PT0gQ292ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHNpemVUeXBlID09IFNp
emVMZW5ndGgpIHsKLSAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gbGF5ZXItPnNpemVMZW5ndGgo
KTsKLSAgICAgICAgaWYgKHNpemUud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8fCBz
aXplLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQorICAgICAgICBhdXRvIHNpemUg
PSBsYXllci5zaXplTGVuZ3RoKCk7CisgICAgICAgIGlmIChzaXplLndpZHRoLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpIHx8IHNpemUuaGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgbmVpdGhl
ciBhbiBpbnRyaW5zaWMgd2lkdGggbm9yIGFuIGludHJpbnNpYyBoZWlnaHQsIGl0cyBzaXplIGlz
IGRldGVybWluZWQgYXMgZm9yICdjb250YWluJy4KLSAgICAgICAgaWYgKChzaXplLndpZHRoKCku
aXNBdXRvKCkgfHwgc2l6ZS5oZWlnaHQoKS5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVk
SW1hZ2UoKSkKKyAgICAgICAgaWYgKChzaXplLndpZHRoLmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0
LmlzQXV0bygpKSAmJiBpbWFnZS0+aXNHZW5lcmF0ZWRJbWFnZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChpbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNjUsMTQgKzEzNTcsMTQgQEAgYm9vbCBSZW5k
ZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXAKICAgICAgICAgc3R5bGUoKS5nZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0
ZW50KHNoYWRvd0xlZnQsIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJS
aWdodCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcyku
Ym9yZGVyUmlnaHQoKSA6IExheW91dFVuaXQ6OmZyb21QaXhlbCgwKTsKICAgICAgICAgTGF5b3V0
VW5pdCBib3hXaWR0aCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94
PigqdGhpcykud2lkdGgoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldFJpZ2h0U2hhZG93RXh0ZW50ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93
RXh0ZW50LnJpZ2h0KCksIHN0ZDo6bWluPExheW91dFVuaXQ+KG5ld0JvdW5kcy53aWR0aCgpLCBv
bGRCb3VuZHMud2lkdGgoKSkpOwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gc3Rk
OjptYXg8TGF5b3V0VW5pdD4oYm9yZGVyUmlnaHQsIHN0ZDo6bWF4PExheW91dFVuaXQ+KHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0
aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0
aCgpLCBib3hXaWR0aCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc1dpZHRoID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGJvcmRl
cldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0
PihvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5JbnNl
dFJpZ2h0U2hhZG93RXh0ZW50ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0
ZW50LnJpZ2h0KCksIHN0ZDo6bWluKG5ld0JvdW5kcy53aWR0aCgpLCBvbGRCb3VuZHMud2lkdGgo
KSkpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gc3RkOjptYXgoYm9yZGVyUmln
aHQsIHN0ZDo6bWF4KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KS53aWR0aCwgYm94V2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKCkud2lkdGgsIGJveFdpZHRoKSkpOworICAgICAgICBMYXlvdXRVbml0IGRlY29y
YXRpb25zV2lkdGggPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLm91dGxpbmVP
ZmZzZXQoKSwgYm9yZGVyV2lkdGggKyBtaW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50KSArIHN0ZDo6
bWF4KG91dGxpbmVXaWR0aCwgc2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRSZWN0IHJpZ2h0
UmVjdChuZXdPdXRsaW5lQm94LngoKSArIHN0ZDo6bWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwg
b2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGRlY29yYXRpb25zV2lkdGgsCiAgICAgICAgICAgICBu
ZXdPdXRsaW5lQm94LnkoKSwKICAgICAgICAgICAgIHdpZHRoICsgZGVjb3JhdGlvbnNXaWR0aCwK
ICAgICAgICAgICAgIHN0ZDo6bWF4KG5ld091dGxpbmVCb3guaGVpZ2h0KCksIG9sZE91dGxpbmVC
b3guaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCByaWdodCA9IHN0ZDo6bWluPExheW91
dFVuaXQ+KG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhYKCkpOworICAgICAgICBMYXlv
dXRVbml0IHJpZ2h0ID0gc3RkOjptaW4obmV3Qm91bmRzLm1heFgoKSwgb2xkQm91bmRzLm1heFgo
KSk7CiAgICAgICAgIGlmIChyaWdodFJlY3QueCgpIDwgcmlnaHQpIHsKICAgICAgICAgICAgIHJp
Z2h0UmVjdC5zZXRXaWR0aChzdGQ6Om1pbihyaWdodFJlY3Qud2lkdGgoKSwgcmlnaHQgLSByaWdo
dFJlY3QueCgpKSk7CiAgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENv
bnRhaW5lciwgcmlnaHRSZWN0KTsKQEAgLTEzODUsMTAgKzEzNzcsMTAgQEAgYm9vbCBSZW5kZXJF
bGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXAKICAgICAgICAgc3R5bGUoKS5nZXRCb3hTaGFkb3dWZXJ0aWNhbEV4dGVudChz
aGFkb3dUb3AsIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIExheW91dFVuaXQgYm9yZGVyQm90dG9t
ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS5ib3Jk
ZXJCb3R0b20oKSA6IExheW91dFVuaXQ6OmZyb21QaXhlbCgwKTsKICAgICAgICAgTGF5b3V0VW5p
dCBib3hIZWlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4o
KnRoaXMpLmhlaWdodCgpIDogTGF5b3V0VW5pdCgpOwotICAgICAgICBMYXlvdXRVbml0IG1pbklu
c2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93
RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMuaGVpZ2h0KCks
IG9sZEJvdW5kcy5oZWlnaHQoKSkpOwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwgc3RkOjptYXg8TGF5b3V0VW5pdD4o
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCks
IGJveEhlaWdodCksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhlaWdodCkpKTsKLSAgICAgICAgTGF5b3V0
VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5
bGUub3V0bGluZU9mZnNldCgpLCBib3JkZXJIZWlnaHQgKyBtaW5JbnNldEJvdHRvbVNoYWRvd0V4
dGVudCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PihvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRvbSk7
CisgICAgICAgIExheW91dFVuaXQgbWluSW5zZXRCb3R0b21TaGFkb3dFeHRlbnQgPSBzdGQ6Om1p
bjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQuYm90dG9tKCksIHN0ZDo6bWluKG5ld0Jv
dW5kcy5oZWlnaHQoKSwgb2xkQm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgIExheW91dFVuaXQg
Ym9yZGVySGVpZ2h0ID0gc3RkOjptYXgoYm9yZGVyQm90dG9tLCBzdGQ6Om1heCh2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQsIGJveEhlaWdodCks
CisgICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQpKSk7CisgICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlv
bnNIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLm91dGxpbmVPZmZz
ZXQoKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dFeHRlbnQpICsgc3RkOjpt
YXgob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRSZWN0IGJvdHRv
bVJlY3QobmV3T3V0bGluZUJveC54KCksCiAgICAgICAgICAgICBzdGQ6Om1pbihuZXdPdXRsaW5l
Qm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gZGVjb3JhdGlvbnNIZWlnaHQsCiAg
ICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gu
d2lkdGgoKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAy
ODAzNzQ0MTVkYzYxMjdkMzU4ZTZmZTQ0MzJkZjdjOGJiZmJlYjk3Li5jNmY5NzAxOGRkYjY5MjYx
N2UzZWZkNWY0ZWUxOWJlNGUyZTA2NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKQEAgLTI5NCw3ICsyOTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxk
UmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UpIGNvbnN0OwogICAgIGJv
b2wgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZE9yQm9yZGVyT3JPdXRsaW5lKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVyKiwgY29u
c3QgRmlsbExheWVyKik7CisgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXll
ciosIGNvbnN0IEZpbGxMYXllciYpOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSos
IFN0eWxlSW1hZ2UqKTsKICAgICB2b2lkIHVwZGF0ZVNoYXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1
ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCmluZGV4IDMzYmZmMGU0MWQwMDMyYTc1NTdmMDRkNTNmNzVhY2QxMTNlYjZlZjAuLjc4
NjM4MDE5MDk5MTU2OWY3NjU1MjQ0ZTkwNGU1MzgyMmNjMDcwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTI3MjAsNyArMjcyMCw3IEBAIENvbnRlbnRBbGln
bm1lbnREYXRhIFJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmlidXRp
b25PZmZzZXQoR3JpCiAgICAgaWYgKGNvbnRlbnRBbGlnbm1lbnQuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gY29udGVudEFsaWdubWVudDsKIAotICAgIGF1dG8gb3ZlcmZsb3cgPSBpc1Jvd0F4
aXMgPyBzdHlsZSgpLmp1c3RpZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQoKSA6IHN0eWxlKCku
YWxpZ25Db250ZW50T3ZlcmZsb3dBbGlnbm1lbnQoKTsKKyAgICBhdXRvIG92ZXJmbG93ID0gKGlz
Um93QXhpcyA/IHN0eWxlKCkuanVzdGlmeUNvbnRlbnQoKSA6IHN0eWxlKCkuYWxpZ25Db250ZW50
KCkpLm92ZXJmbG93KCk7CiAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA8PSAwICYmIG92ZXJm
bG93ID09IE92ZXJmbG93QWxpZ25tZW50U2FmZSkKICAgICAgICAgcmV0dXJuIHswLCAwfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMDUxZDQ0YmY1NjY5
NjdjYWFkYWY5NzQyMDI5ODJjYjkxOGJmZTg1MS4uYWNlZWQ3ZDU5MGRlMjVjYzQzOTk4Nzg0ODNi
ODk4NzdhZjI5NTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTQzLDE3ICszMTQzLDE4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXJGb3JTY3JvbGxiYXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyCiBSZWY8U2Ny
b2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQogewogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKLSAgICBSZW5k
ZXJFbGVtZW50KiBhY3R1YWxSZW5kZXJlciA9IHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVy
KCkpOwotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBhY3R1YWxSZW5kZXJlci0+
aXNCb3goKSAmJiBhY3R1YWxSZW5kZXJlci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExC
QVIpOworICAgIEFTU0VSVChyZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKSk7CisgICAg
YXV0byYgYWN0dWFsUmVuZGVyZXIgPSAqcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7
CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IGlzPFJlbmRlckJveD4oYWN0dWFs
UmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLnN0eWxlKCku
aGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5
bGUpCi0gICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xs
YmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgYWN0dWFsUmVuZGVyZXItPmVsZW1lbnQoKSk7CisgICAg
ICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlz
LCBvcmllbnRhdGlvbiwgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuZWxlbWVu
dCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRp
dmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKICAgICAg
ICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdldC5nZXQoKSwgb3JpZW50YXRpb24pOwogICAgICAgICBp
ZiAocGFnZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKICAgICAgICAgICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UoKS50ZXN0VHJpZ2dlcigp
KTsKICAgICB9Ci0gICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lk
Z2V0LmdldCgpKTsKKyAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgq
d2lkZ2V0KTsKICAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYzhj
NDBjNWNmMDMwNDNiOTA1ZWQ5YTRjMWZmZjk5ZGU5MzE1MDNmNC4uM2VjN2ZkZDgwNTdjOTA3NGEw
MjM0Yzc3MGFmNDc5NGE3ZDkzZDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE3MjYsMzAgKzE3MjYsMjcgQEAgc3RhdGljIGlu
bGluZSBib29sIGhhc1Zpc2libGVCb3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiAKIHN0YXRpYyBib29sIGNhbkNyZWF0ZVRpbGVkSW1hZ2UoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogewotICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUuYmFja2dy
b3VuZExheWVycygpOwotICAgIGlmIChmaWxsTGF5ZXItPm5leHQoKSkKKyAgICBhdXRvJiBmaWxs
TGF5ZXIgPSBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgaWYgKGZpbGxMYXllci5uZXh0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZmlsbExheWVyLT5pbWFnZXNB
cmVMb2FkZWQoKSkKKyAgICBpZiAoIWZpbGxMYXllci5pbWFnZXNBcmVMb2FkZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZpbGxMYXllci0+YXR0YWNobWVudCgpICE9IFNj
cm9sbEJhY2tncm91bmRBdHRhY2htZW50KQorICAgIGlmIChmaWxsTGF5ZXIuYXR0YWNobWVudCgp
ICE9IFNjcm9sbEJhY2tncm91bmRBdHRhY2htZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBDb2xvciBjb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7Ci0KICAgICAvLyBGSVhNRTogQWxsb3cgY29sb3IraW1hZ2UgY29t
cG9zaXRpbmcgd2hlbiBpdCBtYWtlcyBzZW5zZS4KICAgICAvLyBGb3Igbm93IGJhaWxpbmcgb3V0
LgotICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkKKyAgICBpZiAoc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5pc1Zpc2libGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGZpbGxMYXll
ci0+aW1hZ2UoKTsKLQogICAgIC8vIEZJWE1FOiBzdXBwb3J0IGdyYWRpZW50cyB3aXRoIGlzR2Vu
ZXJhdGVkSW1hZ2UuCisgICAgYXV0byogc3R5bGVJbWFnZSA9IGZpbGxMYXllci5pbWFnZSgpOwog
ICAgIGlmICghc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBJbWFnZSogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFn
ZSgpOworICAgIGF1dG8qIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2Uo
KTsKICAgICBpZiAoIWltYWdlLT5pc0JpdG1hcEltYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTgwOSwyNSArMTgwNiwyNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlRGlyZWN0bHlDb21wb3NpdGVkQmFja2dyb3VuZEltYWdlKGJvb2wgaXNTaW1wbGVDbwogICAg
IGlmIChpc0RpcmVjdGx5Q29tcG9zaXRlZEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKLQorICAgIGF1
dG8mIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIGlmICghaXNTaW1wbGVDb250YWlu
ZXIgfHwgIXN0eWxlLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7CiAgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNUb0ltYWdlKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gYmFja2dyb3VuZEJveEZvclNpbXBsZUNvbnRhaW5lclBh
aW50aW5nKCk7CisgICAgYXV0byBkZXN0UmVjdCA9IGJhY2tncm91bmRCb3hGb3JTaW1wbGVDb250
YWluZXJQYWludGluZygpOwogICAgIEZsb2F0U2l6ZSBwaGFzZTsKICAgICBGbG9hdFNpemUgdGls
ZVNpemU7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gc3R5bGUuYmFja2dyb3VuZExheWVy
cygpLT5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOwotICAgIC8vIEZJWE1FOiBhYnNv
bHV0ZSBwYWludCBsb2NhdGlvbiBpcyByZXF1aXJlZCBoZXJlLgorICAgIC8vIEZJWE1FOiBBYnNv
bHV0ZSBwYWludCBsb2NhdGlvbiBpcyByZXF1aXJlZCBoZXJlLgogICAgIGRvd25jYXN0PFJlbmRl
ckJveD4ocmVuZGVyZXIoKSkuZ2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoJnJlbmRlcmVy
KCksIExheW91dFBvaW50KCksIGRlc3RSZWN0LCBwaGFzZSwgdGlsZVNpemUpOworCiAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXplKHRpbGVTaXplKTsKICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVBoYXNlKHBoYXNlKTsKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzUmVjdChkZXN0UmVjdCk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0NsaXBwaW5nUmVjdChGbG9hdFJvdW5kZWRSZWN0KGRlc3RSZWN0KSk7Ci0gICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKHN0eWxlLmJhY2tncm91bmRMYXllcnMoKS5p
bWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpKTsKKwogICAgIGRpZFVwZGF0ZUNvbnRlbnRz
UmVjdCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAppbmRleCAyMmVlOTgxMTA3N2ZmZDgwOGJmYmExMzk0MDliNmM5NjBmNjM0ZmFmLi5jZGY4
MDYwYmNiNWVkOGE4ZjRmOTM3YTdlNDk3ZTE0NjdkNmViYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgUmVmPFNjcm9s
bGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKICAgICAgICAgaWYgKHBhZ2Uo
KS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRv
cigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIoKSk7CiAgICAg
fQotICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCh3aWRnZXQuZ2V0KCkpOworICAgIHZp
ZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAgICByZXR1cm4gd2lkZ2V0LnJl
bGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCmluZGV4IGQzOWY2NDY5NTg3Yzc0NDJmMzcyNDQ3M2I2ODU4MDhhOTdmYTY3ZmIu
LmQyYzAyZWY5ZDYwZTA2YzY4NjY3MjNlNDc0MDczN2FkOGMwYzM4MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUoKQogICAgIC8vIFVzZSBtYXJnaW46
YXV0byBpbnN0ZWFkIG9mIGFsaWduLWl0ZW1zOmNlbnRlciB0byBnZXQgc2FmZSBjZW50ZXJpbmcs
IGkuZS4KICAgICAvLyB3aGVuIHRoZSBjb250ZW50IG92ZXJmbG93cywgdHJlYXQgaXQgdGhlIHNh
bWUgYXMgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQuCiAgICAgLy8gQnV0IHdlIG9ubHkgZG8gdGhh
dCBmb3IgdGhlIGNhc2VzIHdoZXJlIGh0bWwuY3NzIHdvdWxkIG90aGVyd2lzZSB1c2UgY2VudGVy
LgotICAgIGlmIChzdHlsZSgpLmFsaWduSXRlbXNQb3NpdGlvbigpID09IEl0ZW1Qb3NpdGlvbkNl
bnRlcikgeworICAgIGlmIChzdHlsZSgpLmFsaWduSXRlbXMoKS5wb3NpdGlvbigpID09IEl0ZW1Q
b3NpdGlvbkNlbnRlcikgewogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpblRvcChMZW5ndGgo
KSk7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0TWFyZ2luQm90dG9tKExlbmd0aCgpKTsKICAgICAg
ICAgaW5uZXJTdHlsZS5zZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb25GbGV4U3RhcnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBl
MWE3ZWFhNzU5YWQzMzE2OWJhMTExYTM1ZjkxNWE0YzFlOGM3NTIxLi4zZTcwMzIwZDY5NTIyOGMy
ZGE2ZDc2YTBkMWViZjIxNDZhMDkzY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI3Niw5ICsxMjc2LDkgQEAgdm9pZCBSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXkKICAgICAgICAgYWRqdXN0ZWRQYWludE9mZnNldC5tb3ZlQnkobG9jYXRpb24oKSk7
CiAKICAgICBDb2xvciBjID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIGNvbnN0IEZpbGxMYXll
ciogYmdMYXllciA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygp
OworICAgIGF1dG8mIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91
bmRMYXllcnMoKTsKIAotICAgIGlmIChiZ0xheWVyLT5oYXNJbWFnZSgpIHx8IGMuaXNWYWxpZCgp
KSB7CisgICAgaWYgKGJnTGF5ZXIuaGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQoKSkgewogICAgICAg
ICAvLyBXZSBoYXZlIHRvIGNsaXAgaGVyZSBiZWNhdXNlIHRoZSBiYWNrZ3JvdW5kIHdvdWxkIHBh
aW50CiAgICAgICAgIC8vIG9uIHRvcCBvZiB0aGUgYm9yZGVycyBvdGhlcndpc2UuICBUaGlzIG9u
bHkgbWF0dGVycyBmb3IgY2VsbHMgYW5kIHJvd3MuCiAgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IGJhY2tncm91bmRPYmplY3QtPmhhc0xheWVyKCkgJiYgKGJhY2tncm91bmRPYmplY3QgPT0gdGhp
cyB8fCBiYWNrZ3JvdW5kT2JqZWN0ID09IHBhcmVudCgpKSAmJiB0YWJsZUVsdC0+Y29sbGFwc2VC
b3JkZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBm
YTU5OWE3MTg3MmI0OThhNTQ2MzJlZDNkZWNmZTY2ZTZmMzExYzFlLi5jMzFhOWFhNmNmMmIwNjk4
MjJiNmZmNTA2N2JmZmFjNTM3ZmYyYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RT
dHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUsCiAg
ICAgICAgIC8vIFBhZGRpbmcKICAgICAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3ggPSBtX3RoZW1l
LT5jb250cm9sUGFkZGluZyhwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5wYWRkaW5n
Qm94KCksIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGlmIChwYWRkaW5nQm94ICE9
IHN0eWxlLnBhZGRpbmdCb3goKSkKLSAgICAgICAgICAgIHN0eWxlLnNldFBhZGRpbmdCb3gocGFk
ZGluZ0JveCk7CisgICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KFdURk1vdmUocGFkZGlu
Z0JveCkpOwogCiAgICAgICAgIC8vIFdoaXRlc3BhY2UKICAgICAgICAgaWYgKG1fdGhlbWUtPmNv
bnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UocGFydCkpCkBAIC0xNTUsMTkgKzE1NSwxOSBAQCB2
b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBSZW5kZXJTdHlsZSYgc3R5bGUsCiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAgICAgICAg
IC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6b29tLgog
ICAgICAgICAvLyBGSVhNRTogQ2hlY2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2Ug
bWluLXdpZHRoL21heC13aWR0aCBpbnRvIGFjY291bnQuCi0gICAgICAgIExlbmd0aFNpemUgY29u
dHJvbFNpemUgPSBtX3RoZW1lLT5jb250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgp
LCBMZW5ndGhTaXplKHN0eWxlLndpZHRoKCksIHN0eWxlLmhlaWdodCgpKSwgc3R5bGUuZWZmZWN0
aXZlWm9vbSgpKTsKLSAgICAgICAgaWYgKGNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUud2lk
dGgoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldFdpZHRoKGNvbnRyb2xTaXplLndpZHRoKCkpOwot
ICAgICAgICBpZiAoY29udHJvbFNpemUuaGVpZ2h0KCkgIT0gc3R5bGUuaGVpZ2h0KCkpCi0gICAg
ICAgICAgICBzdHlsZS5zZXRIZWlnaHQoY29udHJvbFNpemUuaGVpZ2h0KCkpOwotICAgICAgICAg
ICAgICAgIAorICAgICAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJv
bFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgpLCBzdHlsZS5o
ZWlnaHQoKSB9LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBpZiAoY29udHJvbFNp
emUud2lkdGggIT0gc3R5bGUud2lkdGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldFdpZHRoKFdU
Rk1vdmUoY29udHJvbFNpemUud2lkdGgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdo
dCAhPSBzdHlsZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldEhlaWdodChXVEZNb3Zl
KGNvbnRyb2xTaXplLmhlaWdodCkpOworCiAgICAgICAgIC8vIE1pbi1XaWR0aCAvIE1pbi1IZWln
aHQKICAgICAgICAgTGVuZ3RoU2l6ZSBtaW5Db250cm9sU2l6ZSA9IG1fdGhlbWUtPm1pbmltdW1D
b250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29t
KCkpOwotICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lkdGgoKSAhPSBzdHlsZS5taW5XaWR0
aCgpKQotICAgICAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgobWluQ29udHJvbFNpemUud2lkdGgo
KSk7Ci0gICAgICAgIGlmIChtaW5Db250cm9sU2l6ZS5oZWlnaHQoKSAhPSBzdHlsZS5taW5IZWln
aHQoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChtaW5Db250cm9sU2l6ZS5oZWln
aHQoKSk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChtaW5Db250cm9sU2l6ZS53aWR0
aCAhPSBzdHlsZS5taW5XaWR0aCgpKQorICAgICAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoV1RG
TW92ZShtaW5Db250cm9sU2l6ZS53aWR0aCkpOworICAgICAgICBpZiAobWluQ29udHJvbFNpemUu
aGVpZ2h0ICE9IHN0eWxlLm1pbkhlaWdodCgpKQorICAgICAgICAgICAgc3R5bGUuc2V0TWluSGVp
Z2h0KFdURk1vdmUobWluQ29udHJvbFNpemUuaGVpZ2h0KSk7CisKICAgICAgICAgLy8gRm9udAog
ICAgICAgICBpZiAoYXV0byB0aGVtZUZvbnQgPSBtX3RoZW1lLT5jb250cm9sRm9udChwYXJ0LCBz
dHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpKSB7CiAgICAgICAgICAg
ICAvLyBJZiBvdmVycmlkaW5nIHRoZSBzcGVjaWZpZWQgZm9udCB3aXRoIHRoZSB0aGVtZSBmb250
LCBhbHNvIG92ZXJyaWRlIHRoZSBsaW5lIGhlaWdodCB3aXRoIHRoZSBzdGFuZGFyZCBsaW5lIGhl
aWdodC4KQEAgLTcwOSw5ICs3MDksOSBAQCBib29sIFJlbmRlclRoZW1lOjppc0NvbnRyb2xTdHls
ZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBibwogICAgIGNh
c2UgVGV4dEZpZWxkUGFydDoKICAgICBjYXNlIFRleHRBcmVhUGFydDoKICAgICAgICAgLy8gVGVz
dCB0aGUgc3R5bGUgdG8gc2VlIGlmIHRoZSBVQSBib3JkZXIgYW5kIGJhY2tncm91bmQgbWF0Y2gu
Ci0gICAgICAgIHJldHVybiAoc3R5bGUuYm9yZGVyKCkgIT0gYm9yZGVyCi0gICAgICAgICAgICB8
fCAqc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQKLSAgICAgICAgICAgIHx8
ICFzdHlsZS5iYWNrZ3JvdW5kQ29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdWaXNpdGVkKGJhY2tn
cm91bmRDb2xvcikpOworICAgICAgICByZXR1cm4gc3R5bGUuYm9yZGVyKCkgIT0gYm9yZGVyCisg
ICAgICAgICAgICB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkgIT0gYmFja2dyb3VuZAorICAg
ICAgICAgICAgfHwgIXN0eWxlLmJhY2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zp
c2l0ZWQoYmFja2dyb3VuZENvbG9yKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmlu
ZGV4IDEwMGE1ZDE0ZTE2ZmJiZGI0M2RjODFhZjljNDhhOWNjYmFjZDk4NGMuLmRiZjViYjBiMzBl
NDNmYTBhNmQ0MDFjZDk5MDFjZTBkYjcxODBmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTM1NywxMCArMzU3LDkgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb24KICAgICBpZiAoIXN0eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAh
c3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExlbmd0aCBs
ZW5ndGggPSBMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihjZWlsZihzdGQ6Om1heChzdHlsZS5mb250
U2l6ZSgpLCAxMCkpKSwgRml4ZWQpOwotICAgIAotICAgIHN0eWxlLnNldFdpZHRoKGxlbmd0aCk7
Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KGxlbmd0aCk7CisgICAgaW50IHNpemUgPSBzdGQ6Om1heChz
dHlsZS5mb250U2l6ZSgpLCAxMCk7CisgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9
KTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKIH0KIAogc3RhdGljIENH
UG9pbnQgc2hvcnRlbmVkKENHUG9pbnQgc3RhcnQsIENHUG9pbnQgZW5kLCBmbG9hdCB3aWR0aCkK
QEAgLTQ0OCwxMCArNDQ3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OmlzQ29udHJvbFN0eWxl
ZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmCiB7CiAgICAgLy8g
QnV0dG9ucyBhbmQgTWVudWxpc3RCdXR0b25zIGFyZSBzdHlsZWQgaWYgdGhleSBjb250YWluIGEg
YmFja2dyb3VuZCBpbWFnZS4KICAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgpID09IFB1c2hCdXR0
b25QYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpCi0gICAg
ICAgIHJldHVybiAhc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKS5hbHBoYSgpIHx8IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKS0+aGFzSW1hZ2Uo
KTsKKyAgICAgICAgcmV0dXJuICFzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmlzaWJsZSgpIHx8IHN0eWxlLmJhY2tncm91bmRMYXllcnMo
KS5oYXNJbWFnZSgpOwogCiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBUZXh0RmllbGRQ
YXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBUZXh0QXJlYVBhcnQpCi0gICAgICAgIHJldHVy
biAqc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQ7CisgICAgICAgIHJldHVy
biBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkgIT0gYmFja2dyb3VuZDsKIAogICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJh
Y2tncm91bmRDb2xvcik7CiB9CkBAIC00NjEsMTAgKzQ2MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0CiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0
eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMZW5ndGggbGVu
Z3RoID0gTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oY2VpbGYoc3RkOjptYXgoc3R5bGUuZm9udFNp
emUoKSwgMTApKSksIEZpeGVkKTsKLSAgICBzdHlsZS5zZXRXaWR0aChsZW5ndGgpOwotICAgIHN0
eWxlLnNldEhlaWdodChsZW5ndGgpOwotICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhJbnRTaXpl
KGxlbmd0aC52YWx1ZSgpIC8gMi4wZiwgbGVuZ3RoLnZhbHVlKCkgLyAyLjBmKSk7CisgICAgaW50
IHNpemUgPSBzdGQ6Om1heChzdHlsZS5mb250U2l6ZSgpLCAxMCk7CisgICAgc3R5bGUuc2V0V2lk
dGgoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9
KTsKKyAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoeyBzaXplIC8gMiwgc2l6ZSAvIDIgfSk7CiB9
CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCkBAIC01MzgsMTMgKzUzNywxMSBAQCBMZW5ndGhCb3ggUmVuZGVyVGhlbWVJT1M6OnBv
cHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29ucwogCiB2
b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5kZXJTdHlsZSYg
c3R5bGUsIFJlbmRlckJveCYgYm94KQogewotICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0g
Tm9Db250cm9sUGFydCB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmhhc0ltYWdlKCkpCisg
ICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBOb0NvbnRyb2xQYXJ0IHx8IHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBiZSByZWx5aW5nIG9uIGJvcmRlciByYWRpdXMgZm9yIHRoZSBhcHBl
YXJhbmNlIG9mIG91ciBjb250cm9scyA8cmRhcjovL3Byb2JsZW0vNzY3NTQ5Mz4KLSAgICBMZW5n
dGggcmFkaXVzV2lkdGgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbihib3gud2lkdGgoKSwgYm94
LmhlaWdodCgpKSAvIDIuMCksIEZpeGVkKTsKLSAgICBMZW5ndGggcmFkaXVzSGVpZ2h0KHN0YXRp
Y19jYXN0PGludD4oYm94LmhlaWdodCgpIC8gMi4wKSwgRml4ZWQpOwotICAgIHN0eWxlLnNldEJv
cmRlclJhZGl1cyhMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpKTsKKyAgICBz
dHlsZS5zZXRCb3JkZXJSYWRpdXMoeyB7IHN0ZDo6bWluKGJveC53aWR0aCgpLCBib3guaGVpZ2h0
KCkpIC8gMiwgRml4ZWQgfSwgeyBib3guaGVpZ2h0KCkgLyAyLCBGaXhlZCB9IH0pOwogfQogCiBz
dGF0aWMgdm9pZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKQEAgLTY1NSwxMSArNjUyLDExIEBAIGJvb2wg
UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzOwog
CiAgICAgICAgIGlmIChpc1JUTCkgewotICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMgPSBGbG9h
dFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgp
LCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0
aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAt
IHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMg
PSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1
ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCByZWN0
LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAgICAgICAgdG9w
UmlnaHRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmln
aHRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHJl
Y3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CisgICAgICAgICAgICBib3R0
b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhl
aWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVG
b3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgo
KSkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
VG9wTGVmdFJhZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRv
cFdpZHRoKCkpOwotICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1
ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUu
Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICB0b3BMZWZ0UmFkaXVzID0gRmxvYXRT
aXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCwgcmVj
dC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJv
cmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6
ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgsIHJl
Y3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHls
ZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLApAQCAt
NjkyLDExICs2ODksMTEgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFNp
emUgYm90dG9tUmlnaHRSYWRpdXM7CiAKICAgICAgICAgaWYgKGlzUlRMKSB7Ci0gICAgICAgICAg
ICB0b3BMZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAg
IGJvdHRvbUxlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygp
LmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwor
ICAgICAgICAgICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3Jk
ZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygp
LmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICAg
ICAgICAgIGJvdHRvbUxlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6
ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIHJl
Y3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cyA9IEZs
b2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndp
ZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVp
Z2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICB0b3BSaWdo
dFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICAgICAgICAgIGJvdHRvbVJp
Z2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0
LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9
CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChidXR0b25DbGlwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAppbmRleCAzNzM5NWU0MzY2NjdhMjE1YWFiNmU3NjMwNThkNDdjYjgyNmQ3NDBkLi42MjNh
NmM3OTRiOTYxMGUzMmE5YjM2Y2I1Njk4N2MyZjA2NWM0MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNTIsMjkgKzUyLDI3IEBAIFdpZGdldEhpZXJh
cmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzCiAKIHZvaWQgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29w
ZTo6bW92ZVdpZGdldHMoKQogewotICAgIFdpZGdldFRvUGFyZW50TWFwIG1hcDsKLSAgICB3aWRn
ZXROZXdQYXJlbnRNYXAoKS5zd2FwKG1hcCk7Ci0gICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICBmb3IgKFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRv
ciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2lkZ2V0KiBj
aGlsZCA9IGl0LT5rZXkuZ2V0KCk7Ci0gICAgICAgIFNjcm9sbFZpZXcqIGN1cnJlbnRQYXJlbnQg
PSBjaGlsZC0+cGFyZW50KCk7Ci0gICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZh
bHVlOworICAgIGF1dG8gbWFwID0gV1RGTW92ZSh3aWRnZXROZXdQYXJlbnRNYXAoKSk7CisgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgeworICAgICAgICBhdXRvJiBjaGlsZCA9ICplbnRyeS5r
ZXk7CisgICAgICAgIGF1dG8qIGN1cnJlbnRQYXJlbnQgPSBjaGlsZC5wYXJlbnQoKTsKKyAgICAg
ICAgYXV0byogbmV3UGFyZW50ID0gZW50cnkudmFsdWU7CiAgICAgICAgIGlmIChuZXdQYXJlbnQg
IT0gY3VycmVudFBhcmVudCkgewogICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpCi0gICAg
ICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoKmNoaWxkKTsKKyAgICAgICAg
ICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICBp
ZiAobmV3UGFyZW50KQogICAgICAgICAgICAgICAgIG5ld1BhcmVudC0+YWRkQ2hpbGQoY2hpbGQp
OwogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRT
b29uKFdpZGdldCogY2hpbGQsIEZyYW1lVmlldyogcGFyZW50KQorc3RhdGljIHZvaWQgbW92ZVdp
ZGdldFRvUGFyZW50U29vbihXaWRnZXQmIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKIHsKICAg
ICBpZiAoIVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OmlzU3VzcGVuZGVk
KCkpIHsKICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQo
Y2hpbGQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZC0+cmVtb3ZlRnJvbVBhcmVu
dCgpOworICAgICAgICAgICAgY2hpbGQucmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNj
aGVkdWxlV2lkZ2V0VG9Nb3ZlKGNoaWxkLCBwYXJlbnQpOwpAQCAtMTY3LDcgKzE2NSw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX3dpZGdldCkgewotICAgICAgICBtb3ZlV2lkZ2V0VG9Q
YXJlbnRTb29uKG1fd2lkZ2V0LmdldCgpLCAwKTsKKyAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50
U29vbigqbV93aWRnZXQsIG51bGxwdHIpOwogICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkud2ls
bFJlbW92ZVdpZGdldEZyb21SZW5kZXJUcmVlKCptX3dpZGdldCk7CiAgICAgICAgIHdpZGdldFJl
bmRlcmVyTWFwKCkucmVtb3ZlKG1fd2lkZ2V0LmdldCgpKTsKICAgICAgICAgbV93aWRnZXQgPSBu
dWxscHRyOwpAQCAtMTkzLDcgKzE5MSw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQo
UmVmUHRyPFdpZGdldD4mJiB3aWRnZXQpCiAgICAgICAgICAgICAgICAgcmVwYWludCgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1vdmVXaWRnZXRUb1BhcmVudFNvb24obV93
aWRnZXQuZ2V0KCksICZ2aWV3KCkuZnJhbWVWaWV3KCkpOworICAgICAgICBtb3ZlV2lkZ2V0VG9Q
YXJlbnRTb29uKCptX3dpZGdldCwgJnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAgICAgfQogfQogCkBA
IC0zMzgsOSArMzM2LDkgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFNlbGVjdGlvblN0YXRlKFNl
bGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICBtX3dpZGdldC0+c2V0SXNTZWxlY3RlZChpc1Nl
bGVjdGVkKCkpOwogfQogCi1SZW5kZXJXaWRnZXQqIFJlbmRlcldpZGdldDo6ZmluZChjb25zdCBX
aWRnZXQqIHdpZGdldCkKK1JlbmRlcldpZGdldCogUmVuZGVyV2lkZ2V0OjpmaW5kKGNvbnN0IFdp
ZGdldCYgd2lkZ2V0KQogewotICAgIHJldHVybiB3aWRnZXRSZW5kZXJlck1hcCgpLmdldCh3aWRn
ZXQpOworICAgIHJldHVybiB3aWRnZXRSZW5kZXJlck1hcCgpLmdldCgmd2lkZ2V0KTsKIH0KIAog
Ym9vbCBSZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaApp
bmRleCA2ZTAxMWQ3MzllNTNjNmRhOWIxMWE3ZGE4NmQ4ZWRjZWMzZTQ0OTdiLi5jNmE5YmM1Zjkz
NWMzMzk0ODA4NzJhMTFmMzYwNzk4MGViNGJhM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCkBAIC00NCwxNCArNDQsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyBib29sIGlzU3VzcGVuZGVkKCkgeyByZXR1cm4gc193aWRnZXRIaWVyYXJjaHlVcGRh
dGVTdXNwZW5kQ291bnQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZVdpZGdldFRvTW92ZShX
aWRnZXQqIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFtZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAoKS5z
ZXQod2lkZ2V0LCBmcmFtZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZVdpZGdldFRvTW92
ZShXaWRnZXQmIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFtZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAo
KS5zZXQoJndpZGdldCwgZnJhbWUpOyB9CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZpZXcqPiBXaWRnZXRUb1BhcmVudE1hcDsKKyAgICB1c2lu
ZyBXaWRnZXRUb1BhcmVudE1hcCA9IEhhc2hNYXA8UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+
OwogICAgIHN0YXRpYyBXaWRnZXRUb1BhcmVudE1hcCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVXaWRnZXRzKCk7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdW5zaWduZWQgc193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7
CiB9OwogICAgIApAQCAtNjQsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXQo
KSBjb25zdCB7IHJldHVybiBtX3dpZGdldC5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYpOwogCi0gICAgc3RhdGljIFJlbmRlcldpZGdl
dCogZmluZChjb25zdCBXaWRnZXQqKTsKKyAgICBzdGF0aWMgUmVuZGVyV2lkZ2V0KiBmaW5kKGNv
bnN0IFdpZGdldCYpOwogCiAgICAgZW51bSBjbGFzcyBDaGlsZFdpZGdldFN0YXRlIHsgVmFsaWQs
IERlc3Ryb3llZCB9OwogICAgIENoaWxkV2lkZ2V0U3RhdGUgdXBkYXRlV2lkZ2V0UG9zaXRpb24o
KSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRv
U2l6aW5nLmNwcAppbmRleCAxYTU5ZjY1NTc0ODlkMDc3ZjRiYmRiZjI4YThkZmI4YjQ2ZTdhMjRj
Li5hYWY3MWNiNzlmYzE2MDhmZGIwZjRhNzgzYjk2YzhhMTFkNGJiMTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBh
dXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdFRleHROb2RlU2l6ZXMoKSAtPiBTdGlsbEhh
c05vZGVzCiAKICAgICAgICAgLy8gUmVzaXplIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgcGFyZW50
LgogICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZSA9IHBhcmVudFJlbmRlcmVyLT5zdHlsZSgpOwot
ICAgICAgICBMZW5ndGggbGluZUhlaWdodExlbmd0aCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExp
bmVIZWlnaHQoKTsKKyAgICAgICAgYXV0byYgbGluZUhlaWdodExlbmd0aCA9IHBhcmVudFN0eWxl
LnNwZWNpZmllZExpbmVIZWlnaHQoKTsKIAogICAgICAgICBpbnQgc3BlY2lmaWVkTGluZUhlaWdo
dDsKICAgICAgICAgaWYgKGxpbmVIZWlnaHRMZW5ndGguaXNQZXJjZW50KCkpCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgYXV0byBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKCkg
LT4gU3RpbGxIYXNOb2RlcwogCiAgICAgICAgIGF1dG8gbmV3UGFyZW50U3R5bGUgPSBjbG9uZVJl
bmRlclN0eWxlV2l0aFN0YXRlKHBhcmVudFN0eWxlKTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUu
c2V0TGluZUhlaWdodChMZW5ndGgobGluZUhlaWdodCwgRml4ZWQpKTsKLSAgICAgICAgbmV3UGFy
ZW50U3R5bGUuc2V0U3BlY2lmaWVkTGluZUhlaWdodChsaW5lSGVpZ2h0TGVuZ3RoKTsKKyAgICAg
ICAgbmV3UGFyZW50U3R5bGUuc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGggeyBsaW5lSGVp
Z2h0TGVuZ3RoIH0pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51
cGRhdGUoJm5vZGUtPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwogICAgICAgICBwYXJlbnRS
ZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHlsZSkpOwpAQCAtMTg4LDEyICsx
ODgsMTIgQEAgdm9pZCBUZXh0QXV0b1NpemluZ1ZhbHVlOjpyZXNldCgpCiAgICAgICAgICAgICBw
YXJlbnRSZW5kZXJlciA9IHBhcmVudFJlbmRlcmVyLT5wYXJlbnQoKTsKIAogICAgICAgICBhdXRv
JiBwYXJlbnRTdHlsZSA9IHBhcmVudFJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBMZW5ndGgg
b3JpZ2luYWxMaW5lSGVpZ2h0ID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOwor
ICAgICAgICBhdXRvJiBvcmlnaW5hbExpbmVIZWlnaHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmlnaW5hbExpbmVIZWlnaHQgPT0gcGFyZW50U3R5
bGUubGluZUhlaWdodCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBu
ZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwot
ICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KG9yaWdpbmFsTGluZUhlaWdodCk7
CisgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgb3JpZ2luYWxM
aW5lSGVpZ2h0IH0pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51
cGRhdGUoJm5vZGUtPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwogICAgICAgICBwYXJlbnRS
ZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHlsZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAppbmRleCBjYTQ2YzJlYmNk
MDJmZGUzNGU1ZTZjMGJmMGJkOGI3MmEwNGEyZTA0Li42MTYyYWNiYjkzZjczZWI1Zjk5NTczYmQx
NWRjMWM2MzNkMTEzMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL01hdGhNTFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L01hdGhNTFN0eWxlLmNwcApAQCAtNDksMTQgKzQ5LDExIEBAIFJlZjxNYXRoTUxTdHlsZT4gTWF0
aE1MU3R5bGU6OmNyZWF0ZSgpCiAKIGNvbnN0IE1hdGhNTFN0eWxlKiBNYXRoTUxTdHlsZTo6Z2V0
TWF0aE1MU3R5bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBpZiAocmVuZGVyZXIp
IHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRl
cml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/Ci0g
ICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQotICAgICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlciktPm1hdGhNTFN0eWxl
KCk7Ci0gICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpKQotICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlciktPm1hdGhN
TFN0eWxlKCk7Ci0gICAgfQotCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBtYWtlIFJlbmRlck1h
dGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGluIG9yZGVyIHRvIHNpbXBs
aWZ5IHRoaXM/CisgICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCisgICAg
ICAgIHJldHVybiAmZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpyZW5kZXJlcikubWF0aE1M
U3R5bGUoKTsKKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKSkKKyAgICAg
ICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oKnJlbmRlcmVyKS5tYXRoTUxT
dHlsZSgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC02NSw5ICs2Miw5IEBAIHZvaWQg
TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gcmVuZGVyZXI7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0SW5QcmVPcmRlcihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBtYWtlIFJlbmRlck1hdGhNTFRhYmxlIGRlcml2ZSBmcm9tIFJlbmRlck1hdGhNTEJsb2NrIGlu
IG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXM/CiAgICAgICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJs
ZT4oY2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KGNoaWxk
KS0+bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKKyAgICAgICAgICAg
IGRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPigqY2hpbGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2
ZU1hdGhNTFN0eWxlKGNoaWxkKTsKICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyTWF0aE1MQmxv
Y2s+KGNoaWxkKSkKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPihjaGls
ZCktPm1hdGhNTFN0eWxlKCktPnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CisgICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oKmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29s
dmVNYXRoTUxTdHlsZShjaGlsZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYmIxNDJhMjU0MjBh
M2E2YmNlMTRjMTU0YmRlOTMyMzM2MzQzNGUxMi4uNjFhMTJjYTQ4N2YzYTViYmM1NTRkZWUwYzgz
YWY2NDVhNjIxZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJNYXRoTUxCbG9jaygpOwogCi0gICAgTWF0aE1MU3R5bGUqIG1hdGhNTFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxTdHlsZSo+KCZtX21hdGhNTFN0eWxlLmdldCgp
KTsgfQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
aE1MU3R5bGU7IH0KIAogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTA0LDcgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIAotICAgIE1hdGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWF0aE1MU3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQo
KSk7IH0KKyAgICBNYXRoTUxTdHlsZSYgbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21h
dGhNTFN0eWxlOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCAzNWU0NDE0
NWY3Zjg2MmMwOGJkMDRlMjE3ZWQ1ZmQwZGU2MzBjMTA4Li5hMjBiZDEyMmQ4OGNlMGYwOGQ3NDU3
N2VlNzk4NWEwM2E1OTg5MDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6RnJhY3Rpb25QYXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0
aW9uOjpmcmFjdGlvblBhcmFtZXRlcgogICAgIC8vIFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMg
dG8gZHJhdyB0aGUgZnJhY3Rpb24gZnJvbSB0aGUgT3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxi
YWNrIHZhbHVlcyBvdGhlcndpc2UuCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0
YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAg
Ym9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBk
aXNwbGF5ID0gbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEp
IHsKICAgICAgICAgcGFyYW1ldGVycy5udW1lcmF0b3JHYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0
aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rp
b25OdW1EaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51bWVy
YXRvckdhcE1pbik7CiAgICAgICAgIHBhcmFtZXRlcnMuZGVub21pbmF0b3JHYXBNaW4gPSBtYXRo
RGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRo
RGF0YTo6RnJhY3Rpb25EZW5vbURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6
OkZyYWN0aW9uRGVub21pbmF0b3JHYXBNaW4pOwpAQCAtMTE2LDcgKzExNiw3IEBAIFJlbmRlck1h
dGhNTEZyYWN0aW9uOjpTdGFja1BhcmFtZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNr
UGFyYW1ldGVycygpCiAgICAgLy8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0YW50cyB0byBkcmF3IHRo
ZSBzdGFjayBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90
aGVyd2lzZS4KICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGNvbnN0IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkg
PSBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRo
TUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOwogICAgIGlmIChtYXRoRGF0YSkgewogICAgICAgICBw
YXJhbWV0ZXJzLmdhcE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQs
IGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRhOjpTdGFja0Rpc3BsYXlTdHlsZUdhcE1pbiA6IE9w
ZW5UeXBlTWF0aERhdGE6OlN0YWNrR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy50b3BTaGlm
dFVwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9w
ZW5UeXBlTWF0aERhdGE6OlN0YWNrVG9wRGlzcGxheVN0eWxlU2hpZnRVcCA6IE9wZW5UeXBlTWF0
aERhdGE6OlN0YWNrVG9wU2hpZnRVcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZTIxMmU5YmY3MzRhZDI1
NWYwNmU2OTBlYzI1ZTE3ODVhOTI5OWUwNS4uMDJmZDQ0ZTU1NDRlOWY3MjIxMjY3M2U5MTZkZDY1
YjgxNDNiYTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNldFN0cmV0Y2hTaXplKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlcmF0b3JG
bGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZykgY29uc3Q7Ci0gICAgYm9vbCBpc0xh
cmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZs
YWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFn
KE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TGFyZ2VPcCkgJiYgbWF0aE1MU3R5bGUoKS0+ZGlz
cGxheVN0eWxlKCk7IH0KLSAgICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVy
biBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRz
KSAmJiAhbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7IH0KKyAgICBib29sIGlzTGFyZ2VP
cGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9wKSAmJiBtYXRoTUxTdHlsZSgpLmRpc3BsYXlT
dHlsZSgpOyB9CisgICAgYm9vbCBzaG91bGRNb3ZlTGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFz
T3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYg
IW1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0
aWNhbCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgaXRhbGljQ29ycmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWF0aE9wZXJhdG9yLml0YWxpY0NvcnJlY3Rpb24oKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRl
eCAxYTY2ZWM4N2U2ZDkzNDNiZjVjYTU1OWI5NzgwYTkwMmY3ZjE0ZTIyLi4zZDc1N2E3YTg1NmFj
YjYxZjBlNmY4MjNkOTZhOTk4OTUyOTVhNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBSZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MUm9vdDo6
dmVydGljYWxQYXJhbWV0ZXJzKCkKICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxl
KCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGlmIChhdXRvKiBtYXRoRGF0YSA9
IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCkpIHsKICAgICAg
ICAgcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChw
cmltYXJ5Rm9udCwgT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFJ1bGVUaGlja25lc3MpOwotICAg
ICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChw
cmltYXJ5Rm9udCwgbWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCkgPyBPcGVuVHlwZU1hdGhE
YXRhOjpSYWRpY2FsRGlzcGxheVN0eWxlVmVydGljYWxHYXAgOiBPcGVuVHlwZU1hdGhEYXRhOjpS
YWRpY2FsVmVydGljYWxHYXApOworICAgICAgICBwYXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gbWF0
aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgbWF0aE1MU3R5bGUoKS5kaXNwbGF5
U3R5bGUoKSA/IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdh
cCA6IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CiAgICAgICAgIHBhcmFt
ZXRlcnMuZXh0cmFBc2NlbmRlciA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZv
bnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxFeHRyYUFzY2VuZGVyKTsKICAgICAgICAgaWYg
KG1fa2luZCA9PSBSb290V2l0aEluZGV4KQogICAgICAgICAgICAgcGFyYW1ldGVycy5kZWdyZWVC
b3R0b21SYWlzZVBlcmNlbnQgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250
LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50KTsKQEAg
LTEzMSw3ICsxMzEsNyBAQCBSZW5kZXJNYXRoTUxSb290OjpWZXJ0aWNhbFBhcmFtZXRlcnMgUmVu
ZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0ZXJzKCkKICAgICAgICAgLy8gUmFkaWNhbEV4
dHJhQXNjZW5kZXI6IFN1Z2dlc3RlZCB2YWx1ZSBpcyBSYWRpY2FsUnVsZVRoaWNrbmVzcy4KICAg
ICAgICAgLy8gUmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudDogU3VnZ2VzdGVkIHZhbHVl
IGlzIDYwJS4KICAgICAgICAgcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzID0gcnVsZVRoaWNrbmVz
c0ZhbGxiYWNrKCk7Ci0gICAgICAgIGlmIChtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSkK
KyAgICAgICAgaWYgKG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCkpCiAgICAgICAgICAgICBw
YXJhbWV0ZXJzLnZlcnRpY2FsR2FwID0gcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzICsgc3R5bGUo
KS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSA1ICogcGFyYW1ldGVycy5ydWxlVGhpY2tuZXNzIC8g
NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHAKaW5kZXggNTU1YmQ2OGQ2NTFiNWY4YWYwNTFmMDE1ZDNlYWZjNzdlMDY4ZjM5
MS4uYTVjNGMxYzBkMGM1ZDlhZTYwZmUxMTIwODRmNjg0YTY3MTlhZjg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAK
QEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFy
aWFudEdseXBoKCkKIAogICAgIGNvbnN0IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsK
ICAgICBpZiAoYXV0byBjb2RlUG9pbnQgPSBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1Np
bmdsZUNvZGVQb2ludChlbGVtZW50KCkudGV4dENvbnRlbnQoKSkpIHsKLSAgICAgICAgTWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aHZhcmlhbnQgPSBtYXRoTUxTdHlsZSgpLT5tYXRoVmFy
aWFudCgpOworICAgICAgICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9
IG1hdGhNTFN0eWxlKCkubWF0aFZhcmlhbnQoKTsKICAgICAgICAgaWYgKG1hdGh2YXJpYW50ID09
IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50OjpOb25lKQogICAgICAgICAgICAgbWF0aHZhcmlh
bnQgPSB0b2tlbkVsZW1lbnQuaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpID8gTWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQ6Okl0YWxpYyA6IE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
OjpOb3JtYWw7CiAgICAgICAgIFVDaGFyMzIgdHJhbnNmb3JtZWRDb2RlUG9pbnQgPSBtYXRoVmFy
aWFudChjb2RlUG9pbnQudmFsdWUoKSwgbWF0aHZhcmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMjkwYzZkODVkMGVlMzJkNTA2
MzczNTI2YjkwNmI0ODZmZDgzMzU5MC4uMDZiM2UwOTBlYTk3YmFlZDE1MDExNzQ5MTE3NzIyYmUx
ZjcyOWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCkBAIC0zODcsOCArMzg3LDggQEAgYm9vbCBCYXNpY1NoYXBlSW5zZXQ6Om9wZXJhdG9y
PT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0CiAKIHN0YXRpYyBGbG9hdFNpemUgZmxv
YXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nQm94KQogewotICAgIHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1
ZUZvckxlbmd0aChsZW5ndGhTaXplLndpZHRoKCksIGJvdW5kaW5nQm94LndpZHRoKCkpLAotICAg
ICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUuaGVpZ2h0KCksIGJvdW5kaW5nQm94
LmhlaWdodCgpKSk7CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXpl
LndpZHRoLCBib3VuZGluZ0JveC53aWR0aCgpKSwKKyAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0
aChsZW5ndGhTaXplLmhlaWdodCwgYm91bmRpbmdCb3guaGVpZ2h0KCkpIH07CiB9CiAKIGNvbnN0
IFBhdGgmIEJhc2ljU2hhcGVJbnNldDo6cGF0aChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggMjk0
ZmI4MmEwNGVkZjRjYTI5MWI4MmM4M2QxOWVkMGMwNmYyMGExZC4uMDZiY2M5OWY4YjBmMTlkY2E0
YmQyNzI2NTFkYWMzMmJiN2RkNTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyRGF0YS5oCkBAIC0zNCwxMCArMzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQm9yZGVyRGF0YSB7CiBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7CiBwdWJsaWM6Ci0g
ICAgQm9yZGVyRGF0YSgpIDogbV90b3BMZWZ0KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBG
aXhlZCkpCi0gICAgICAgICAgICAgICAgICwgbV90b3BSaWdodChMZW5ndGgoMCwgRml4ZWQpLCBM
ZW5ndGgoMCwgRml4ZWQpKQotICAgICAgICAgICAgICAgICAsIG1fYm90dG9tTGVmdChMZW5ndGgo
MCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQotICAgICAgICAgICAgICAgICAsIG1fYm90dG9t
UmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSkKKyAgICBCb3JkZXJEYXRh
KCkKKyAgICAgICAgOiBtX3RvcExlZnQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9Cisg
ICAgICAgICwgbV90b3BSaWdodCB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAg
ICAgLCBtX2JvdHRvbUxlZnQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CisgICAgICAg
ICwgbV9ib3R0b21SaWdodCB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KICAgICB7CiAg
ICAgfQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QKQEAgLTU5LDE1ICs2MCwxMCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKS5pc1plcm8oKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgpLmlzWmVy
bygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV9ib3R0b21SaWdo
dC53aWR0aCgpLmlzWmVybygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFtX3RvcExlZnQud2lkdGguaXNaZXJvKCkKKyAg
ICAgICAgICAgIHx8ICFtX3RvcFJpZ2h0LndpZHRoLmlzWmVybygpCisgICAgICAgICAgICB8fCAh
bV9ib3R0b21MZWZ0LndpZHRoLmlzWmVybygpCisgICAgICAgICAgICB8fCAhbV9ib3R0b21SaWdo
dC53aWR0aC5pc1plcm8oKTsKICAgICB9CiAgICAgCiAgICAgZmxvYXQgYm9yZGVyTGVmdFdpZHRo
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwCmluZGV4IDBiZDBkNzA2MTFhYzFjMWYwYzQzMTMwYjQwMzFiYmRkMjRlZmMzOWYuLmM2YzAy
MjRiY2RiOGE4N2U1ZTVjMjMxMDlhNWUxZGZlYzk3YTRjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcApAQCAtMzgsOCArMzgsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IENvbnRlbnREYXRhOjpjbG9uZSgpIGNvbnN0CiAgICAg
YXV0byByZXN1bHQgPSBjbG9uZUludGVybmFsKCk7CiAgICAgYXV0byogbGFzdE5ld0RhdGEgPSBy
ZXN1bHQuZ2V0KCk7CiAgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9IG5leHQoKTsgY29udGVu
dERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewotICAgICAgICBhdXRv
IG5ld0RhdGEgPSBjb250ZW50RGF0YS0+Y2xvbmVJbnRlcm5hbCgpOwotICAgICAgICBsYXN0TmV3
RGF0YS0+c2V0TmV4dChXVEZNb3ZlKG5ld0RhdGEpKTsKKyAgICAgICAgbGFzdE5ld0RhdGEtPnNl
dE5leHQoY29udGVudERhdGEtPmNsb25lSW50ZXJuYWwoKSk7CiAgICAgICAgIGxhc3ROZXdEYXRh
ID0gbGFzdE5ld0RhdGEtPm5leHQoKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKaW5kZXggMTZkNjU1NzYw
ZGU3NTJjZjE2MmEzNmU1MGNiMDM1Njc2ZDdkZDI5Mi4uOWU5N2MwMjM1YzNkZmVkNWRjODQ5NWZi
ZjdhNjk2MDEwNDZiOGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
UmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb250ZW50RGF0YT4odGV4dCgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCmluZGV4IDNmOTNh
NTdlZjU4MjYxZGZhYTJjZWZkZjZkYTliMmE5YjM5ZjIzOWMuLmY1NDJkNmMyYTE2ZmNmNzhiMTY2
ZWEyOWVlZDBmZDhiNGNmMGYyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9EYXRhUmVmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaApAQCAtMSw4ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDMwICsyNiw2NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBEYXRhUmVmIHsKIHB1YmxpYzoKLSAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpIDog
bV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3Ro
ZXIpIDogbV9kYXRhKGNvbnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSkpIHsgfQotICAg
IERhdGFSZWYmIG9wZXJhdG9yPShjb25zdCBEYXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBjb25z
dF9jYXN0PFQmPihvdGhlci5tX2RhdGEuZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBEYXRh
UmVmKFJlZjxUPiYmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAg
eworICAgIH0KIAotICAgIGNvbnN0IFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wdHIo
KTsgfQorICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3RoZXIpCisgICAgICAgIDogbV9kYXRh
KG90aGVyLm1fZGF0YS5jb3B5UmVmKCkpCisgICAgeworICAgIH0KKworICAgIERhdGFSZWYmIG9w
ZXJhdG9yPShjb25zdCBEYXRhUmVmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IG90
aGVyLm1fZGF0YS5jb3B5UmVmKCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAg
ICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KLSAgICBjb25z
dCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBEYXRhUmVmKERh
dGFSZWYmJikgPSBkZWZhdWx0OworICAgIERhdGFSZWYmIG9wZXJhdG9yPShEYXRhUmVmJiYpID0g
ZGVmYXVsdDsKKworICAgIERhdGFSZWYgcmVwbGFjZShEYXRhUmVmJiYgb3RoZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9kYXRhLnJlcGxhY2UoV1RGTW92ZShvdGhlci5tX2RhdGEpKTsKKyAg
ICB9CisKKyAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9kYXRhOworICAgIH0KIAotICAgIFQqIGFjY2VzcygpCisgICAgY29uc3QgVCYgZ2V0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgY29uc3Qg
VCYgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAg
fQorCisgICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9kYXRhLnB0cigpOworICAgIH0KKworICAgIFQmIGFjY2VzcygpCiAgICAgewogICAgICAg
ICBpZiAoIW1fZGF0YS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICBtX2RhdGEgPSBtX2RhdGEt
PmNvcHkoKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVJlZjxUPiYgbykg
Y29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG8ubV9kYXRhLnB0cigpIHx8IG1f
ZGF0YS5nZXQoKSA9PSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIo
KSA9PSBvdGhlci5tX2RhdGEucHRyKCkgfHwgbV9kYXRhLmdldCgpID09IG90aGVyLm1fZGF0YS5n
ZXQoKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERhdGFSZWY8VD4m
IG8pIGNvbnN0CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpICE9IG8ubV9kYXRhLnB0cigp
ICYmIG1fZGF0YS5nZXQoKSAhPSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKaW5kZXggNzY1MjM4MDVhMjVjOTQyNmFmZTAz
YzMzOTFjMGU3ODk5OGE1MWQyNi4uOTcyOThhYjQ0NzlhN2VhMjdkZTlmYmUzODJlMmI3NDcwYjZm
NDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlz
dC5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRpbWluZ0Z1
bmN0aW9uKiBLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGtleWZyYW1lU3R5bGUgPSBz
dHlsZSgpOworICAgIGF1dG8qIGtleWZyYW1lU3R5bGUgPSBzdHlsZSgpOwogICAgIGlmICgha2V5
ZnJhbWVTdHlsZSB8fCAha2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVTdHlsZS0+
YW5pbWF0aW9ucygpLT5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBBbmltYXRpb24mIGFu
aW1hdGlvbiA9IGtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwogICAg
ICAgICBpZiAobmFtZSA9PSBhbmltYXRpb24ubmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGFu
aW1hdGlvbi50aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIGFuaW1h
dGlvbi50aW1pbmdGdW5jdGlvbigpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
NDQsNyArNDQsNiBAQCBUaW1pbmdGdW5jdGlvbiogS2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rp
b24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogCiBLZXlmcmFtZUxpc3Q6On5LZXlm
cmFtZUxpc3QoKQogewotICAgIGNsZWFyKCk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVMaXN0OjpjbGVh
cigpCkBAIC01OCwxNSArNTcsMTIgQEAgYm9vbCBLZXlmcmFtZUxpc3Q6Om9wZXJhdG9yPT0oY29u
c3QgS2V5ZnJhbWVMaXN0JiBvKSBjb25zdAogICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgIT0g
by5tX2tleWZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3Rv
cjxLZXlmcmFtZVZhbHVlPjo6Y29uc3RfaXRlcmF0b3IgaXQyID0gby5tX2tleWZyYW1lcy5iZWdp
bigpOwotICAgIGZvciAoVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDEg
PSBtX2tleWZyYW1lcy5iZWdpbigpOyBpdDEgIT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxKSB7
CisgICAgYXV0byBpdDIgPSBvLm1fa2V5ZnJhbWVzLmJlZ2luKCk7CisgICAgZm9yIChhdXRvIGl0
MSA9IG1fa2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5lbmQoKTsgKytpdDEs
ICsraXQyKSB7CiAgICAgICAgIGlmIChpdDEtPmtleSgpICE9IGl0Mi0+a2V5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTEgPSAq
aXQxLT5zdHlsZSgpOwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUyID0gKml0Mi0+
c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlMSAhPSBzdHlsZTIpCisgICAgICAgIGlmICgqaXQx
LT5zdHlsZSgpICE9ICppdDItPnN0eWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICsraXQyOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKaW5kZXggY2U4NGIxNjBm
MTk3MzlkZDk2YjQ4MWIwNDlmNmZmYzAzZjViZTA3Ni4uZThjOTIzMmMxNmU1NzlmZjE2ZmY0Mzc1
NjVlOWRlMjY4ODBjMDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL05pbmVQaWVjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvTmluZVBpZWNlSW1hZ2UuY3BwCkBAIC02MCwyMCArNjAsMjIgQEAgTGF5b3V0VW5pdCBOaW5l
UGllY2VJbWFnZTo6Y29tcHV0ZVNsaWNlKExlbmd0aCBsZW5ndGgsIExheW91dFVuaXQgd2lkdGgs
IExheW91dFUKIAogTGF5b3V0Qm94RXh0ZW50IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2Vz
KGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IExlbmd0aEJveCYgbGVuZ3RocywgaW50IHNj
YWxlRmFjdG9yKQogewotICAgIExheW91dFVuaXQgdG9wICAgID0gc3RkOjptaW48TGF5b3V0VW5p
dD4oc2l6ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy50b3AoKSwgICAgc2l6ZS5o
ZWlnaHQoKSkpICogc2NhbGVGYWN0b3I7Ci0gICAgTGF5b3V0VW5pdCByaWdodCAgPSBzdGQ6Om1p
bjxMYXlvdXRVbml0PihzaXplLndpZHRoKCksICB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLnJpZ2h0
KCksICBzaXplLndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlvdXRVbml0IGJvdHRv
bSA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUuaGVpZ2h0KCksIHZhbHVlRm9yTGVuZ3RoKGxl
bmd0aHMuYm90dG9tKCksIHNpemUuaGVpZ2h0KCkpKSAqIHNjYWxlRmFjdG9yOwotICAgIExheW91
dFVuaXQgbGVmdCAgID0gc3RkOjptaW48TGF5b3V0VW5pdD4oc2l6ZS53aWR0aCgpLCAgdmFsdWVG
b3JMZW5ndGgobGVuZ3Rocy5sZWZ0KCksICAgc2l6ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3I7
Ci0gICAgcmV0dXJuIExheW91dEJveEV4dGVudCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwor
ICAgIHJldHVybiB7CisgICAgICAgIHN0ZDo6bWluKHNpemUuaGVpZ2h0KCksIHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aHMudG9wKCksIHNpemUuaGVpZ2h0KCkpKSAqIHNjYWxlRmFjdG9yLAorICAgICAg
ICBzdGQ6Om1pbihzaXplLndpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aHMucmlnaHQoKSwg
c2l6ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNpemUuaGVp
Z2h0KCksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aHMuYm90dG9tKCksIHNpemUuaGVpZ2h0KCkpKSAq
IHNjYWxlRmFjdG9yLAorICAgICAgICBzdGQ6Om1pbihzaXplLndpZHRoKCksIHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aHMubGVmdCgpLCBzaXplLndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvcgorICAgIH07
CiB9CiAKIExheW91dEJveEV4dGVudCBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZVNsaWNlcyhjb25z
dCBMYXlvdXRTaXplJiBzaXplLCBjb25zdCBMZW5ndGhCb3gmIGxlbmd0aHMsIGNvbnN0IEZsb2F0
Qm94RXh0ZW50JiB3aWR0aHMsIGNvbnN0IExheW91dEJveEV4dGVudCYgc2xpY2VzKQogewotICAg
IExheW91dFVuaXQgdG9wICAgID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMudG9wKCksICAgIHdpZHRo
cy50b3AoKSwgICAgc2xpY2VzLnRvcCgpLCAgICBzaXplLmhlaWdodCgpKTsKLSAgICBMYXlvdXRV
bml0IHJpZ2h0ICA9IGNvbXB1dGVTbGljZShsZW5ndGhzLnJpZ2h0KCksICB3aWR0aHMucmlnaHQo
KSwgIHNsaWNlcy5yaWdodCgpLCAgc2l6ZS53aWR0aCgpKTsKLSAgICBMYXlvdXRVbml0IGJvdHRv
bSA9IGNvbXB1dGVTbGljZShsZW5ndGhzLmJvdHRvbSgpLCB3aWR0aHMuYm90dG9tKCksIHNsaWNl
cy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBsZWZ0ICAgPSBjb21w
dXRlU2xpY2UobGVuZ3Rocy5sZWZ0KCksICAgd2lkdGhzLmxlZnQoKSwgICBzbGljZXMubGVmdCgp
LCAgIHNpemUud2lkdGgoKSk7Ci0gICAgcmV0dXJuIExheW91dEJveEV4dGVudCh0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQpOworICAgIHJldHVybiB7CisgICAgICAgIGNvbXB1dGVTbGljZShsZW5n
dGhzLnRvcCgpLCB3aWR0aHMudG9wKCksIHNsaWNlcy50b3AoKSwgc2l6ZS5oZWlnaHQoKSksCisg
ICAgICAgIGNvbXB1dGVTbGljZShsZW5ndGhzLnJpZ2h0KCksIHdpZHRocy5yaWdodCgpLCBzbGlj
ZXMucmlnaHQoKSwgc2l6ZS53aWR0aCgpKSwKKyAgICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMu
Ym90dG9tKCksIHdpZHRocy5ib3R0b20oKSwgc2xpY2VzLmJvdHRvbSgpLCBzaXplLmhlaWdodCgp
KSwKKyAgICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMubGVmdCgpLCB3aWR0aHMubGVmdCgpLCBz
bGljZXMubGVmdCgpLCBzaXplLndpZHRoKCkpCisgICAgfTsKIH0KIAogdm9pZCBOaW5lUGllY2VJ
bWFnZTo6c2NhbGVTbGljZXNJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiBzaXplLCBMYXlvdXRC
b3hFeHRlbnQmIHNsaWNlcywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IGZhYWJiZmQ1YTg2
ZTgxMDBmZDg5MWIwYTAwNzU2MzQzNWZmNDFhNGMuLjJiNWZlNjU1NGU3NjMxZTEyZjQzOGYxZjhl
ZTMwZmQ3MTg5ODhkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9O
aW5lUGllY2VJbWFnZS5oCkBAIC0xMDgsNTMgKzEwOCw1MyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5pbWFnZTsgfQogICAgIFN0eWxlSW1h
Z2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5pbWFnZS5nZXQoKTsgfQotICAgIHZv
aWQgc2V0SW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpIHsgbV9kYXRhLmFjY2Vzcygp
LT5pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOyB9CisgICAgdm9pZCBzZXRJbWFnZShSZWZQdHI8U3R5
bGVJbWFnZT4mJiBpbWFnZSkgeyBtX2RhdGEuYWNjZXNzKCkuaW1hZ2UgPSBXVEZNb3ZlKGltYWdl
KTsgfQogCiAgICAgY29uc3QgTGVuZ3RoQm94JiBpbWFnZVNsaWNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS0+aW1hZ2VTbGljZXM7IH0KLSAgICB2b2lkIHNldEltYWdlU2xpY2VzKExlbmd0aEJv
eCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IFdURk1vdmUoc2xpY2Vz
KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBtX2RhdGEu
YWNjZXNzKCkuaW1hZ2VTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KIAogICAgIGJvb2wgZmls
bCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+ZmlsbDsgfQotICAgIHZvaWQgc2V0RmlsbChib29s
IGZpbGwpIHsgbV9kYXRhLmFjY2VzcygpLT5maWxsID0gZmlsbDsgfQorICAgIHZvaWQgc2V0Rmls
bChib29sIGZpbGwpIHsgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSBmaWxsOyB9CiAKICAgICBjb25z
dCBMZW5ndGhCb3gmIGJvcmRlclNsaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+Ym9yZGVy
U2xpY2VzOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBt
X2RhdGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IFdURk1vdmUoc2xpY2VzKTsgfQorICAgIHZv
aWQgc2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLmJv
cmRlclNsaWNlcyA9IFdURk1vdmUoc2xpY2VzKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoQm94JiBv
dXRzZXQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPm91dHNldDsgfQotICAgIHZvaWQgc2V0T3V0
c2V0KExlbmd0aEJveCBvdXRzZXQpIHsgbV9kYXRhLmFjY2VzcygpLT5vdXRzZXQgPSBXVEZNb3Zl
KG91dHNldCk7IH0KKyAgICB2b2lkIHNldE91dHNldChMZW5ndGhCb3ggb3V0c2V0KSB7IG1fZGF0
YS5hY2Nlc3MoKS5vdXRzZXQgPSBXVEZNb3ZlKG91dHNldCk7IH0KIAogICAgIEVOaW5lUGllY2VJ
bWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTmlu
ZVBpZWNlSW1hZ2VSdWxlPihtX2RhdGEtPmhvcml6b250YWxSdWxlKTsgfQotICAgIHZvaWQgc2V0
SG9yaXpvbnRhbFJ1bGUoRU5pbmVQaWVjZUltYWdlUnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nlc3Mo
KS0+aG9yaXpvbnRhbFJ1bGUgPSBydWxlOyB9CisgICAgdm9pZCBzZXRIb3Jpem9udGFsUnVsZShF
TmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLmhvcml6b250YWxSdWxl
ID0gcnVsZTsgfQogICAgIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgdmVydGljYWxSdWxlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5pbmVQaWVjZUltYWdlUnVsZT4obV9kYXRhLT52
ZXJ0aWNhbFJ1bGUpOyB9Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbFJ1bGUoRU5pbmVQaWVjZUltYWdl
UnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nlc3MoKS0+dmVydGljYWxSdWxlID0gcnVsZTsgfQorICAg
IHZvaWQgc2V0VmVydGljYWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEu
YWNjZXNzKCkudmVydGljYWxSdWxlID0gcnVsZTsgfQogCiAgICAgdm9pZCBjb3B5SW1hZ2VTbGlj
ZXNGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fZGF0
YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBvdGhlci5tX2RhdGEtPmltYWdlU2xpY2VzOwotICAg
ICAgICBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSBvdGhlci5tX2RhdGEtPmZpbGw7CisgICAgICAg
IG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNlcyA9IG90aGVyLm1fZGF0YS0+aW1hZ2VTbGljZXM7
CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5maWxsID0gb3RoZXIubV9kYXRhLT5maWxsOwogICAg
IH0KIAogICAgIHZvaWQgY29weUJvcmRlclNsaWNlc0Zyb20oY29uc3QgTmluZVBpZWNlSW1hZ2Um
IG90aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBv
dGhlci5tX2RhdGEtPmJvcmRlclNsaWNlczsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmJvcmRl
clNsaWNlcyA9IG90aGVyLm1fZGF0YS0+Ym9yZGVyU2xpY2VzOwogICAgIH0KICAgICAKICAgICB2
b2lkIGNvcHlPdXRzZXRGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhlcikKICAgICB7Ci0g
ICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0gb3RoZXIubV9kYXRhLT5vdXRzZXQ7Cisg
ICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5vdXRzZXQgPSBvdGhlci5tX2RhdGEtPm91dHNldDsKICAg
ICB9CiAKICAgICB2b2lkIGNvcHlSZXBlYXRGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhl
cikKICAgICB7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+aG9yaXpvbnRhbFJ1bGUgPSBvdGhl
ci5tX2RhdGEtPmhvcml6b250YWxSdWxlOwotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPnZlcnRp
Y2FsUnVsZSA9IG90aGVyLm1fZGF0YS0+dmVydGljYWxSdWxlOworICAgICAgICBtX2RhdGEuYWNj
ZXNzKCkuaG9yaXpvbnRhbFJ1bGUgPSBvdGhlci5tX2RhdGEtPmhvcml6b250YWxSdWxlOworICAg
ICAgICBtX2RhdGEuYWNjZXNzKCkudmVydGljYWxSdWxlID0gb3RoZXIubV9kYXRhLT52ZXJ0aWNh
bFJ1bGU7CiAgICAgfQogCiAgICAgdm9pZCBzZXRNYXNrRGVmYXVsdHMoKQogICAgIHsKLSAgICAg
ICAgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IExlbmd0aEJveCgwKTsKLSAgICAgICAg
bV9kYXRhLmFjY2VzcygpLT5maWxsID0gdHJ1ZTsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5i
b3JkZXJTbGljZXMgPSBMZW5ndGhCb3goKTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmltYWdl
U2xpY2VzID0gTGVuZ3RoQm94KDApOworICAgICAgICBtX2RhdGEuYWNjZXNzKCkuZmlsbCA9IHRy
dWU7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGljZXMgPSBMZW5ndGhCb3goKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlT3V0c2V0KGNvbnN0IExlbmd0
aCYgb3V0c2V0U2lkZSwgTGF5b3V0VW5pdCBib3JkZXJTaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggOWM0NzEyNWVhNzQwZjk2NzA2
MDZmZWZhYmI5NWZmOGU3NmNiZDIxYy4uOGZlODJlMTY1YjczYzJhM2FiNzc4NjAxMGRmNDVkN2Nl
MmY0OGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC03MSwxMSArNzEsMTEgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJTdHlsZSB7CiAg
ICAgdm9pZCogZGF0YVJlZlN2Z1N0eWxlOwogICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzJdOwotICAgIH0gaW5oZXJpdGVkX2ZsYWdzOwor
ICAgIH0gbV9pbmhlcml0ZWRGbGFnczsKIAogICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7
CiAgICAgICAgIHVpbnQ2NF90IG1fZmxhZ3M7Ci0gICAgfSBub25pbmhlcml0ZWRfZmxhZ3M7Cisg
ICAgfSBtX25vbkluaGVyaXRlZEZsYWdzOwogI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxF
KFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgYm9vbCBkZWxldGlvbkNoZWNrOwogI2VuZGlmCkBA
IC04NSw3ICs4NSw3IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZW5kZXJTdHlsZSkgPT0gc2l6
ZW9mKFNhbWVTaXplQXNSZW5kZXJTdHlsZSksIFJlbmRlclN0eWxlCiAKIFJlbmRlclN0eWxlJiBS
ZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIHN0
eWxlID0gKm5ldyBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGUpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZW5kZXJTdHlsZT4gc3R5bGUgeyBDcmVhdGVEZWZhdWx0U3R5bGUgfTsK
ICAgICByZXR1cm4gc3R5bGU7CiB9CiAKQEAgLTEyOCw1MyArMTI4LDY4IEBAIFJlbmRlclN0eWxl
IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmCiB9CiAKIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0
U3R5bGVUYWcpCi0gICAgOiBtX2JveChTdHlsZUJveERhdGE6OmNyZWF0ZSgpKQotICAgICwgdmlz
dWFsKFN0eWxlVmlzdWFsRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2JhY2tncm91bmQoU3R5bGVC
YWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBzdXJyb3VuZChTdHlsZVN1cnJvdW5kRGF0
YTo6Y3JlYXRlKCkpCi0gICAgLCByYXJlTm9uSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHJhcmVJbmhlcml0ZWREYXRhKFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OmNyZWF0ZSgpKQotICAgICwgaW5oZXJpdGVkKFN0eWxlSW5oZXJpdGVkRGF0
YTo6Y3JlYXRlKCkpCisgICAgOiBtX2JveERhdGEoU3R5bGVCb3hEYXRhOjpjcmVhdGUoKSkKKyAg
ICAsIG1fdmlzdWFsRGF0YShTdHlsZVZpc3VhbERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9iYWNr
Z3JvdW5kRGF0YShTdHlsZUJhY2tncm91bmREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fc3Vycm91
bmREYXRhKFN0eWxlU3Vycm91bmREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEoU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3Jh
cmVJbmhlcml0ZWREYXRhKFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9pbmhlcml0ZWREYXRhKFN0eWxlSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCiAgICAgLCBtX3N2
Z1N0eWxlKFNWR1JlbmRlclN0eWxlOjpjcmVhdGUoKSkKIHsKLSAgICBpbmhlcml0ZWRfZmxhZ3Mu
X2VtcHR5X2NlbGxzID0gaW5pdGlhbEVtcHR5Q2VsbHMoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3Mu
X2NhcHRpb25fc2lkZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOwotICAgIGluaGVyaXRlZF9mbGFn
cy5fbGlzdF9zdHlsZV90eXBlID0gaW5pdGlhbExpc3RTdHlsZVR5cGUoKTsKLSAgICBpbmhlcml0
ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gPSBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24o
KTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgPSBpbml0aWFsVmlzaWJpbGl0eSgp
OwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiA9IGluaXRpYWxUZXh0QWxpZ24oKTsK
LSAgICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtID0gaW5pdGlhbFRleHRUcmFuc2Zv
cm0oKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgPSBpbml0aWFsVGV4
dERlY29yYXRpb24oKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGluaXRp
YWxDdXJzb3IoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSBpbml0aWFsRW1w
dHlDZWxscygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgPSBpbml0aWFsQ2Fw
dGlvblNpZGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSBpbml0aWFs
TGlzdFN0eWxlVHlwZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24g
PSBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnZpc2li
aWxpdHkgPSBpbml0aWFsVmlzaWJpbGl0eSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dEFs
aWduID0gaW5pdGlhbFRleHRBbGlnbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5z
Zm9ybSA9IGluaXRpYWxUZXh0VHJhbnNmb3JtKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0
RGVjb3JhdGlvbnMgPSBpbml0aWFsVGV4dERlY29yYXRpb24oKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmN1cnNvciA9IGluaXRpYWxDdXJzb3IoKTsKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJ
VFkpCi0gICAgaW5oZXJpdGVkX2ZsYWdzLm1fY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRpYWxDdXJz
b3JWaXNpYmlsaXR5KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0g
aW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKTsKICNlbmRpZgotICAgIGluaGVyaXRlZF9mbGFncy5f
ZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fd2hp
dGVfc3BhY2UgPSBpbml0aWFsV2hpdGVTcGFjZSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5fYm9y
ZGVyX2NvbGxhcHNlID0gaW5pdGlhbEJvcmRlckNvbGxhcHNlKCk7Ci0gICAgaW5oZXJpdGVkX2Zs
YWdzLm1fcnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKLSAgICBpbmhlcml0ZWRf
ZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0aWFsQm94RGlyZWN0aW9uKCk7Ci0gICAgaW5oZXJp
dGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IGluaXRpYWxQcmludENvbG9yQWRqdXN0KCk7
Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBvaW50ZXJFdmVu
dHMoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgPSBOb3RJbnNpZGVMaW5rOwot
ICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGZhbHNlOwotICAgIGlu
aGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CisgICAg
bV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7CisgICAgbV9p
bmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlID0gaW5pdGlhbEJvcmRlckNvbGxhcHNlKCk7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCA9IGluaXRpYWxQcmludENv
bG9yQWRqdXN0KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzID0gaW5pdGlh
bFBvaW50ZXJFdmVudHMoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBOb3RJ
bnNpZGVMaW5rOworICAgIG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGZh
bHNlOworICAgIG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUgPSBpbml0aWFsV3JpdGluZ01v
ZGUoKTsKIAogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihJbmhlcml0ZWRGbGFncykgPD0gOCks
ICJJbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CiAgICAgc3RhdGljX2Fzc2VydCgoc2l6
ZW9mKE5vbkluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIk5vbkluaGVyaXRlZEZsYWdzIGRvZXMgbm90
IGdyb3ciKTsKIH0KIAotUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlciwgQ2xvbmVUYWcpCi0gICAgOiBtX2JveChvdGhlci5tX2JveCkKLSAgICAsIHZpc3Vh
bChvdGhlci52aXN1YWwpCi0gICAgLCBtX2JhY2tncm91bmQob3RoZXIubV9iYWNrZ3JvdW5kKQot
ICAgICwgc3Vycm91bmQob3RoZXIuc3Vycm91bmQpCi0gICAgLCByYXJlTm9uSW5oZXJpdGVkRGF0
YShvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YSkKLSAgICAsIHJhcmVJbmhlcml0ZWREYXRhKG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhKQotICAgICwgaW5oZXJpdGVkKG90aGVyLmluaGVyaXRlZCkK
K2lubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
LCBDbG9uZVRhZykKKyAgICA6IG1fYm94RGF0YShvdGhlci5tX2JveERhdGEpCisgICAgLCBtX3Zp
c3VhbERhdGEob3RoZXIubV92aXN1YWxEYXRhKQorICAgICwgbV9iYWNrZ3JvdW5kRGF0YShvdGhl
ci5tX2JhY2tncm91bmREYXRhKQorICAgICwgbV9zdXJyb3VuZERhdGEob3RoZXIubV9zdXJyb3Vu
ZERhdGEpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhKG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEpCisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKG90aGVyLm1fbm9uSW5oZXJpdGVk
RmxhZ3MpCisgICAgLCBtX3JhcmVJbmhlcml0ZWREYXRhKG90aGVyLm1fcmFyZUluaGVyaXRlZERh
dGEpCisgICAgLCBtX2luaGVyaXRlZERhdGEob3RoZXIubV9pbmhlcml0ZWREYXRhKQorICAgICwg
bV9pbmhlcml0ZWRGbGFncyhvdGhlci5tX2luaGVyaXRlZEZsYWdzKQogICAgICwgbV9zdmdTdHls
ZShvdGhlci5tX3N2Z1N0eWxlKQotICAgICwgaW5oZXJpdGVkX2ZsYWdzKG90aGVyLmluaGVyaXRl
ZF9mbGFncykKLSAgICAsIG5vbmluaGVyaXRlZF9mbGFncyhvdGhlci5ub25pbmhlcml0ZWRfZmxh
Z3MpCit7Cit9CisKK2lubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUm
IGEsIFJlbmRlclN0eWxlJiYgYikKKyAgICA6IG1fYm94RGF0YShhLm1fYm94RGF0YS5yZXBsYWNl
KFdURk1vdmUoYi5tX2JveERhdGEpKSkKKyAgICAsIG1fdmlzdWFsRGF0YShhLm1fdmlzdWFsRGF0
YS5yZXBsYWNlKFdURk1vdmUoYi5tX3Zpc3VhbERhdGEpKSkKKyAgICAsIG1fYmFja2dyb3VuZERh
dGEoYS5tX2JhY2tncm91bmREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fYmFja2dyb3VuZERhdGEp
KSkKKyAgICAsIG1fc3Vycm91bmREYXRhKGEubV9zdXJyb3VuZERhdGEucmVwbGFjZShXVEZNb3Zl
KGIubV9zdXJyb3VuZERhdGEpKSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERhdGEoYS5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEpKSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Moc3RkOjpleGNoYW5nZShhLm1fbm9uSW5o
ZXJpdGVkRmxhZ3MsIGIubV9ub25Jbmhlcml0ZWRGbGFncykpCisgICAgLCBtX3JhcmVJbmhlcml0
ZWREYXRhKGEubV9yYXJlSW5oZXJpdGVkRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX3JhcmVJbmhl
cml0ZWREYXRhKSkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoYS5tX2luaGVyaXRlZERhdGEucmVw
bGFjZShXVEZNb3ZlKGIubV9pbmhlcml0ZWREYXRhKSkpCisgICAgLCBtX2luaGVyaXRlZEZsYWdz
KHN0ZDo6ZXhjaGFuZ2UoYS5tX2luaGVyaXRlZEZsYWdzLCBiLm1faW5oZXJpdGVkRmxhZ3MpKQor
ICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoc3RkOjpleGNoYW5nZShhLm1fY2FjaGVkUHNldWRv
U3R5bGVzLCBXVEZNb3ZlKGIubV9jYWNoZWRQc2V1ZG9TdHlsZXMpKSkKKyAgICAsIG1fc3ZnU3R5
bGUoYS5tX3N2Z1N0eWxlLnJlcGxhY2UoV1RGTW92ZShiLm1fc3ZnU3R5bGUpKSkKIHsKIH0KIApA
QCAtMTg2LDYgKzIwMSwxMSBAQCBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKICNlbmRpZgog
fQogCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6cmVwbGFjZShSZW5kZXJTdHlsZSYmIG5ld1N0
eWxlKQoreworICAgIHJldHVybiBSZW5kZXJTdHlsZSB7ICp0aGlzLCBXVEZNb3ZlKG5ld1N0eWxl
KSB9OworfQorCiBib29sIFJlbmRlclN0eWxlOjppc0NTU0dyaWRMYXlvdXRFbmFibGVkKCkKIHsK
ICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQpAQCAtMjEyLDcgKzIzMiw3IEBAIFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEgUmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25TZWxmKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTCiB7CiAgICAgLy8gVGhlIGF1dG8ga2V5d29yZCBjb21wdXRlcyB0byB0
aGUgcGFyZW50J3MgYWxpZ24taXRlbXMgY29tcHV0ZWQgdmFsdWUuCiAgICAgLy8gV2Ugd2lsbCBy
ZXR1cm4gdGhlIGJlaGF2aW91ciBvZiAnbm9ybWFsJyB2YWx1ZSBpZiBuZWVkZWQsIHdoaWNoIGlz
IHNwZWNpZmljIG9mIGVhY2ggbGF5b3V0IG1vZGVsLgotICAgIGlmIChhbGlnblNlbGZQb3NpdGlv
bigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCisgICAgaWYgKGFsaWduU2VsZigpLnBvc2l0aW9uKCkg
PT0gSXRlbVBvc2l0aW9uQXV0bykKICAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlLnJlc29sdmVk
QWxpZ25JdGVtcyhub3JtYWxWYWx1ZUJlaGF2aW91cik7CiAgICAgcmV0dXJuIHJlc29sdmVkU2Vs
ZkFsaWdubWVudChhbGlnblNlbGYoKSwgbm9ybWFsVmFsdWVCZWhhdmlvdXIpOwogfQpAQCAtMjIy
LDkgKzI0Miw4IEBAIFN0eWxlU2VsZkFsaWdubWVudERhdGEgUmVuZGVyU3R5bGU6OnJlc29sdmVk
SnVzdGlmeUl0ZW1zKEl0ZW1Qb3NpdGlvbiBub3JtYWxWYWx1CiAgICAgLy8gRklYTUU6IGp1c3Rp
ZnktaXRlbXMgJ2F1dG8nIHZhbHVlIGlzIGFsbG93ZWQgb25seSB0byBwcm92aWRlIHRoZSAnbGVn
YWN5JyBrZXl3b3JkJ3MgYmVoYXZpb3IsIHdoaWNoIGl0J3Mgc3RpbGwgbm90IGltcGxlbWVudGVk
IGZvciBsYXlvdXQuCiAgICAgLy8gIklmIHRoZSBpbmhlcml0ZWQgdmFsdWUgb2YganVzdGlmeS1p
dGVtcyBpbmNsdWRlcyB0aGUgbGVnYWN5IGtleXdvcmQsIGF1dG8gY29tcHV0ZXMgdG8gdGhlIGlu
aGVyaXRlZCB2YWx1ZS4iCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbGln
bi8janVzdGlmeS1pdGVtcy1wcm9wZXJ0eQotICAgIGlmIChqdXN0aWZ5SXRlbXNQb3NpdGlvbigp
ID09IEl0ZW1Qb3NpdGlvbkF1dG8pCisgICAgaWYgKGp1c3RpZnlJdGVtcygpLnBvc2l0aW9uKCkg
PT0gSXRlbVBvc2l0aW9uQXV0bykKICAgICAgICAgcmV0dXJuIHsgbm9ybWFsVmFsdWVCZWhhdmlv
dXIsIE92ZXJmbG93QWxpZ25tZW50RGVmYXVsdCB9OwotCiAgICAgcmV0dXJuIHJlc29sdmVkU2Vs
ZkFsaWdubWVudChqdXN0aWZ5SXRlbXMoKSwgbm9ybWFsVmFsdWVCZWhhdmlvdXIpOwogfQogCkBA
IC0yMzIsNyArMjUxLDcgQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBSZW5kZXJTdHlsZTo6cmVz
b2x2ZWRKdXN0aWZ5U2VsZihjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW4KIHsKICAgICAvLyBUaGUg
YXV0byBrZXl3b3JkIGNvbXB1dGVzIHRvIHRoZSBwYXJlbnQncyBqdXN0aWZ5LWl0ZW1zIGNvbXB1
dGVkIHZhbHVlLgogICAgIC8vIFdlIHdpbGwgcmV0dXJuIHRoZSBiZWhhdmlvdXIgb2YgJ25vcm1h
bCcgdmFsdWUgaWYgbmVlZGVkLCB3aGljaCBpcyBzcGVjaWZpYyBvZiBlYWNoIGxheW91dCBtb2Rl
bC4KLSAgICBpZiAoanVzdGlmeVNlbGZQb3NpdGlvbigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCisg
ICAgaWYgKGp1c3RpZnlTZWxmKCkucG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQogICAg
ICAgICByZXR1cm4gcGFyZW50U3R5bGUucmVzb2x2ZWRKdXN0aWZ5SXRlbXMobm9ybWFsVmFsdWVC
ZWhhdmlvdXIpOwogICAgIHJldHVybiByZXNvbHZlZFNlbGZBbGlnbm1lbnQoanVzdGlmeVNlbGYo
KSwgbm9ybWFsVmFsdWVCZWhhdmlvdXIpOwogfQpAQCAtMjY5LDQzICsyODgsNDIgQEAgQ29udGVu
dERpc3RyaWJ1dGlvblR5cGUgUmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25Db250ZW50RGlzdHJp
YnV0aW9uKGNvbnN0IFN0eWwKIAogdm9pZCBSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3Qg
UmVuZGVyU3R5bGUmIGluaGVyaXRQYXJlbnQpCiB7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEgPSBp
bmhlcml0UGFyZW50LnJhcmVJbmhlcml0ZWREYXRhOwotICAgIGluaGVyaXRlZCA9IGluaGVyaXRQ
YXJlbnQuaW5oZXJpdGVkOwotICAgIGluaGVyaXRlZF9mbGFncyA9IGluaGVyaXRQYXJlbnQuaW5o
ZXJpdGVkX2ZsYWdzOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEgPSBpbmhlcml0UGFyZW50Lm1f
cmFyZUluaGVyaXRlZERhdGE7CisgICAgbV9pbmhlcml0ZWREYXRhID0gaW5oZXJpdFBhcmVudC5t
X2luaGVyaXRlZERhdGE7CisgICAgbV9pbmhlcml0ZWRGbGFncyA9IGluaGVyaXRQYXJlbnQubV9p
bmhlcml0ZWRGbGFnczsKIAogICAgIGlmIChtX3N2Z1N0eWxlICE9IGluaGVyaXRQYXJlbnQubV9z
dmdTdHlsZSkKLSAgICAgICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS0+aW5oZXJpdEZyb20oaW5oZXJp
dFBhcmVudC5tX3N2Z1N0eWxlLmdldCgpKTsKKyAgICAgICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS5p
bmhlcml0RnJvbShpbmhlcml0UGFyZW50Lm1fc3ZnU3R5bGUuZ2V0KCkpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIp
Cit2b2lkIFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIpCiB7Ci0gICAgbV9ib3ggPSBvdGhlci0+bV9ib3g7Ci0gICAgdmlzdWFsID0gb3Ro
ZXItPnZpc3VhbDsKLSAgICBtX2JhY2tncm91bmQgPSBvdGhlci0+bV9iYWNrZ3JvdW5kOwotICAg
IHN1cnJvdW5kID0gb3RoZXItPnN1cnJvdW5kOwotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhID0g
b3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhOwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5jb3B5
Tm9uSW5oZXJpdGVkRnJvbShvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzKTsKKyAgICBtX2JveERh
dGEgPSBvdGhlci5tX2JveERhdGE7CisgICAgbV92aXN1YWxEYXRhID0gb3RoZXIubV92aXN1YWxE
YXRhOworICAgIG1fYmFja2dyb3VuZERhdGEgPSBvdGhlci5tX2JhY2tncm91bmREYXRhOworICAg
IG1fc3Vycm91bmREYXRhID0gb3RoZXIubV9zdXJyb3VuZERhdGE7CisgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSA9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGE7CisgICAgbV9ub25Jbmhl
cml0ZWRGbGFncy5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
KTsKIAotICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLT5tX3N2Z1N0eWxlKQotICAgICAgICBt
X3N2Z1N0eWxlLmFjY2VzcygpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci0+bV9zdmdTdHls
ZS5nZXQoKSk7CisgICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXIubV9zdmdTdHlsZSkKKyAgICAg
ICAgbV9zdmdTdHlsZS5hY2Nlc3MoKS5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci5tX3N2Z1N0
eWxlLmdldCgpKTsKIAogICAgIEFTU0VSVCh6b29tKCkgPT0gaW5pdGlhbFpvb20oKSk7CiB9CiAK
LWJvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG8pIGNvbnN0
Citib29sIFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBjb21wYXJlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBwc2V1ZG9TdHls
ZSBwb2ludGVyCi0gICAgcmV0dXJuIGluaGVyaXRlZF9mbGFncyA9PSBvLmluaGVyaXRlZF9mbGFn
cwotICAgICAgICAmJiBub25pbmhlcml0ZWRfZmxhZ3MgPT0gby5ub25pbmhlcml0ZWRfZmxhZ3MK
LSAgICAgICAgJiYgbV9ib3ggPT0gby5tX2JveAotICAgICAgICAmJiB2aXN1YWwgPT0gby52aXN1
YWwKLSAgICAgICAgJiYgbV9iYWNrZ3JvdW5kID09IG8ubV9iYWNrZ3JvdW5kCi0gICAgICAgICYm
IHN1cnJvdW5kID09IG8uc3Vycm91bmQKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEg
PT0gby5yYXJlTm9uSW5oZXJpdGVkRGF0YQotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YSA9
PSBvLnJhcmVJbmhlcml0ZWREYXRhCi0gICAgICAgICYmIGluaGVyaXRlZCA9PSBvLmluaGVyaXRl
ZAotICAgICAgICAmJiBtX3N2Z1N0eWxlID09IG8ubV9zdmdTdHlsZQotICAgICAgICAgICAgOwor
ICAgIHJldHVybiBtX2luaGVyaXRlZEZsYWdzID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MKKyAg
ICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
CisgICAgICAgICYmIG1fYm94RGF0YSA9PSBvdGhlci5tX2JveERhdGEKKyAgICAgICAgJiYgbV92
aXN1YWxEYXRhID09IG90aGVyLm1fdmlzdWFsRGF0YQorICAgICAgICAmJiBtX2JhY2tncm91bmRE
YXRhID09IG90aGVyLm1fYmFja2dyb3VuZERhdGEKKyAgICAgICAgJiYgbV9zdXJyb3VuZERhdGEg
PT0gb3RoZXIubV9zdXJyb3VuZERhdGEKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhCisgICAgICAgICYmIG1fcmFyZUluaGVy
aXRlZERhdGEgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX2luaGVy
aXRlZERhdGEgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhCisgICAgICAgICYmIG1fc3ZnU3R5bGUg
PT0gb3RoZXIubV9zdmdTdHlsZTsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzVW5pcXVlUHNl
dWRvU3R5bGUoKSBjb25zdApAQCAtMzEzLDggKzMzMSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhh
c1VuaXF1ZVBzZXVkb1N0eWxlKCkgY29uc3QKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVz
IHx8IHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCk7ICsr
aSkgewotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBtX2NhY2hlZFBzZXVkb1N0
eWxlcy0+YXQoaSkuZ2V0KCk7CisgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2NhY2hl
ZFBzZXVkb1N0eWxlcykgewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnVuaXF1ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzMwLDEwICszNDcsOSBAQCBSZW5kZXJT
dHlsZSogUmVuZGVyU3R5bGU6OmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBpZCkgY29u
c3QKICAgICBpZiAoc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pIAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IG1fY2Fj
aGVkUHNldWRvU3R5bGVzLT5hdChpKS5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxl
IDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+c3R5
bGVUeXBlKCkgPT0gcGlkKQotICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0eWxlOworICAgICAg
ICAgICAgcmV0dXJuIHBzZXVkb1N0eWxlLmdldCgpOwogICAgIH0KIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzcxLDEwICszODcsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FjaGVk
UHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKQogCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0ZWRO
b3RFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlu
aGVyaXRlZF9mbGFncyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICAgIHx8IGlu
aGVyaXRlZCAhPSBvdGhlci0+aW5oZXJpdGVkCi0gICAgICAgICAgIHx8IG1fc3ZnU3R5bGUtPmlu
aGVyaXRlZE5vdEVxdWFsKG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpKQotICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGE7CisgICAgcmV0dXJu
IG1faW5oZXJpdGVkRmxhZ3MgIT0gb3RoZXItPm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgfHwg
bV9pbmhlcml0ZWREYXRhICE9IG90aGVyLT5tX2luaGVyaXRlZERhdGEKKyAgICAgICAgfHwgbV9z
dmdTdHlsZS0+aW5oZXJpdGVkTm90RXF1YWwob3RoZXItPm1fc3ZnU3R5bGUpCisgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEgIT0gb3RoZXItPm1fcmFyZUluaGVyaXRlZERhdGE7CiB9CiAK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtMzkwLDQ2ICs0MDYsNDYgQEAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjb21wdXRlRm9udEhhc2goY29uc3QgRm9udENhc2NhZGUmIGZvbnQp
CiB1bnNpZ25lZCBSZW5kZXJTdHlsZTo6aGFzaEZvclRleHRBdXRvc2l6aW5nKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogTm90IGEgdmVyeSBzbWFydCBoYXNoLiBDb3VsZCBiZSBpbXByb3ZlZCB1
cG9uLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjExMzE+
LgotICAgIHVuc2lnbmVkIGhhc2ggPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNl
OwotICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNl
OwotICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7
Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wLnZhbHVlKCk7Ci0g
ICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwOwotICAgIGhhc2ggXj0g
cmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlOwotICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERh
dGEtPmxpbmVCcmVhazsKLSAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChp
bmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQudmFsdWUoKSk7Ci0gICAgaGFzaCBePSBjb21w
dXRlRm9udEhhc2goaW5oZXJpdGVkLT5mb250Q2FzY2FkZSk7Ci0gICAgaGFzaCBePSBXVEY6OkZs
b2F0SGFzaDxmbG9hdD46Omhhc2goaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
KTsKLSAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPnZl
cnRpY2FsX2JvcmRlcl9zcGFjaW5nKTsKLSAgICBoYXNoIF49IGluaGVyaXRlZF9mbGFncy5fYm94
X2RpcmVjdGlvbjsKLSAgICBoYXNoIF49IGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nOwot
ICAgIGhhc2ggXj0gbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCk7Ci0gICAgaGFzaCBePSBu
b25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKTsKLSAgICBoYXNoIF49IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0T3ZlcmZsb3c7Ci0gICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNlY3VyaXR5OworICAgIHVuc2lnbmVkIGhhc2ggPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
cHBlYXJhbmNlOworICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVm
b3JlQ29sbGFwc2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5B
ZnRlckNvbGxhcHNlOworICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNs
YW1wLnZhbHVlKCk7CisgICAgaGFzaCBePSBtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dy
YXA7CisgICAgaGFzaCBePSBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZTsKKyAgICBoYXNo
IF49IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhazsKKyAgICBoYXNoIF49IFdURjo6Rmxv
YXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQu
dmFsdWUoKSk7CisgICAgaGFzaCBePSBjb21wdXRlRm9udEhhc2gobV9pbmhlcml0ZWREYXRhLT5m
b250Q2FzY2FkZSk7CisgICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2gobV9p
bmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZyk7CisgICAgaGFzaCBePSBXVEY6
OkZsb2F0SGFzaDxmbG9hdD46Omhhc2gobV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNw
YWNpbmcpOworICAgIGhhc2ggXj0gbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb247CisgICAg
aGFzaCBePSBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nOworICAgIGhhc2ggXj0gbV9ub25J
bmhlcml0ZWRGbGFncy5wb3NpdGlvbigpOworICAgIGhhc2ggXj0gbV9ub25Jbmhlcml0ZWRGbGFn
cy5mbG9hdGluZygpOworICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92
ZXJmbG93OworICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5Owog
ICAgIHJldHVybiBoYXNoOwogfQogCiBib29sIFJlbmRlclN0eWxlOjplcXVhbEZvclRleHRBdXRv
c2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9hcHBlYXJhbmNlCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJn
aW5CZWZvcmVDb2xsYXBzZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVm
b3JlQ29sbGFwc2UKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVy
Q29sbGFwc2UgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFw
c2UKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcCA9PSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U2l6ZUFkanVzdCA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVB
ZGp1c3QKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCA9PSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCi0gICAgICAgICYmIHJhcmVJbmhlcml0
ZWREYXRhLT5uYnNwTW9kZSA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKLSAg
ICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayA9PSBvdGhlci5yYXJlSW5oZXJp
dGVkRGF0YS0+bGluZUJyZWFrCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2Vj
dXJpdHkgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQotICAgICAgICAm
JiBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQgPT0gb3RoZXIuaW5oZXJpdGVkLT5zcGVj
aWZpZWRMaW5lSGVpZ2h0Ci0gICAgICAgICYmIGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZXF1YWxG
b3JUZXh0QXV0b1NpemluZyhvdGhlci5pbmhlcml0ZWQtPmZvbnRDYXNjYWRlKQotICAgICAgICAm
JiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXIuaW5oZXJpdGVk
LT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgICYmIGluaGVyaXRlZC0+dmVydGlj
YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXIuaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZwotICAgICAgICAmJiBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPT0gb3RoZXIu
aW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uCi0gICAgICAgICYmIGluaGVyaXRlZF9mbGFn
cy5tX3J0bE9yZGVyaW5nID09IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nCi0g
ICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpID09IG90aGVyLm5vbmluaGVy
aXRlZF9mbGFncy5wb3NpdGlvbigpCi0gICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncy5mbG9h
dGluZygpID09IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpCi0gICAgICAgICYm
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHRPdmVyZmxvdzsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YXBwZWFyYW5jZSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNl
CisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNl
ID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCisg
ICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgPT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQorICAgICAg
ICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgPT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaXplQWRqdXN0ID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRq
dXN0CisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCA9PSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKKyAgICAgICAgJiYgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+bmJzcE1vZGUgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1v
ZGUKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrID09IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhaworICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U2VjdXJpdHkgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3Vy
aXR5CisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodCA9PSBv
dGhlci5tX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQKKyAgICAgICAgJiYgbV9p
bmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5lcXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLm1f
aW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUpCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS0+
aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5ob3Jpem9u
dGFsQm9yZGVyU3BhY2luZworICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9y
ZGVyU3BhY2luZyA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2lu
ZworICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiA9PSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbgorICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzLnJ0
bE9yZGVyaW5nID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcKKyAgICAgICAg
JiYgbV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpID09IG90aGVyLm1fbm9uSW5oZXJpdGVk
RmxhZ3MucG9zaXRpb24oKQorICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5n
KCkgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpCisgICAgICAgICYmIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyA9PSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0T3ZlcmZsb3c7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRP
U0laSU5HKQpAQCAtNDM3LDEwICs0NTMsMTAgQEAgYm9vbCBSZW5kZXJTdHlsZTo6ZXF1YWxGb3JU
ZXh0QXV0b3NpemluZyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiBib29sIFJlbmRl
clN0eWxlOjppbmhlcml0ZWREYXRhU2hhcmVkKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBUaGlzIGlzIGEgZmFzdCBjaGVjayB0aGF0IG9ubHkgbG9va3MgaWYgdGhl
IGRhdGEgc3RydWN0dXJlcyBhcmUgc2hhcmVkLgotICAgIHJldHVybiBpbmhlcml0ZWRfZmxhZ3Mg
PT0gb3RoZXItPmluaGVyaXRlZF9mbGFncwotICAgICAgICAmJiBpbmhlcml0ZWQuZ2V0KCkgPT0g
b3RoZXItPmluaGVyaXRlZC5nZXQoKQorICAgIHJldHVybiBtX2luaGVyaXRlZEZsYWdzID09IG90
aGVyLT5tX2luaGVyaXRlZEZsYWdzCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS5nZXQoKSA9
PSBvdGhlci0+bV9pbmhlcml0ZWREYXRhLmdldCgpCiAgICAgICAgICYmIG1fc3ZnU3R5bGUuZ2V0
KCkgPT0gb3RoZXItPm1fc3ZnU3R5bGUuZ2V0KCkKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERh
dGEuZ2V0KCkgPT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLmdldCgpOworICAgICAgICAmJiBt
X3JhcmVJbmhlcml0ZWREYXRhLmdldCgpID09IG90aGVyLT5tX3JhcmVJbmhlcml0ZWREYXRhLmdl
dCgpOwogfQogCiBzdGF0aWMgYm9vbCBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KGNvbnN0
IExlbmd0aEJveCYgYSwgY29uc3QgTGVuZ3RoQm94JiBiLCBjb25zdCBMZW5ndGgmIHdpZHRoKQpA
QCAtNDcyLDE3ICs0ODgsMTcgQEAgc3RhdGljIGJvb2wgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50
T25seShjb25zdCBMZW5ndGhCb3gmIGEsIGNvbnN0IExlbmd0aEJveCYgYiwKIAogaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgp
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpCi0gICAgICAgICYmICFhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdywgb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93KSkKKyAgICBpZiAobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpCisg
ICAgICAgICYmICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmJveFNoYWRvdywgb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94U2hhZG93KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEuZ2V0KCkKLSAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEocmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3csIG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2hhZG93KSkKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLmdldCgpCisgICAgICAgICYmICFhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3csIG90aGVyLm1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zCi0gICAgICAgIHx8IHZpc3VhbC0+dGV4dERlY29yYXRp
b24gIT0gb3RoZXIudmlzdWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUpIHsKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFn
cy50ZXh0RGVjb3JhdGlvbnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlv
bnMKKyAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci5tX3Zp
c3VhbERhdGEtPnRleHREZWNvcmF0aW9uCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dERlY29yYXRpb25TdHlsZSkgewogICAgICAgICAvLyBVbmRlcmxpbmVzIGFyZSBhbHdheXMg
ZHJhd24gb3V0c2lkZSBvZiB0aGVpciB0ZXh0Ym94IGJvdW5kcyB3aGVuIHRleHQtdW5kZXJsaW5l
LXBvc2l0aW9uOiB1bmRlcjsKICAgICAgICAgLy8gaXMgc3BlY2lmaWVkLiBXZSBjYW4gdGFrZSBh
biBlYXJseSBvdXQgaGVyZS4KICAgICAgICAgaWYgKHRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09
IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyCkBAIC00OTgsMTY4ICs1MTQsMTY4IEBAIGlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVu
ZGVyU3R5bGUmIG90aGVyKSBjCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5
b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKLSAgICBpZiAobV9ib3gtPndpZHRoKCkgIT0gb3Ro
ZXIubV9ib3gtPndpZHRoKCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbldpZHRoKCkgIT0gb3RoZXIu
bV9ib3gtPm1pbldpZHRoKCkKLSAgICAgICAgfHwgbV9ib3gtPm1heFdpZHRoKCkgIT0gb3RoZXIu
bV9ib3gtPm1heFdpZHRoKCkKLSAgICAgICAgfHwgbV9ib3gtPmhlaWdodCgpICE9IG90aGVyLm1f
Ym94LT5oZWlnaHQoKQotICAgICAgICB8fCBtX2JveC0+bWluSGVpZ2h0KCkgIT0gb3RoZXIubV9i
b3gtPm1pbkhlaWdodCgpCi0gICAgICAgIHx8IG1fYm94LT5tYXhIZWlnaHQoKSAhPSBvdGhlci5t
X2JveC0+bWF4SGVpZ2h0KCkpCisgICAgaWYgKG1fYm94RGF0YS0+d2lkdGgoKSAhPSBvdGhlci5t
X2JveERhdGEtPndpZHRoKCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5taW5XaWR0aCgpICE9IG90
aGVyLm1fYm94RGF0YS0+bWluV2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1heFdpZHRo
KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5tYXhXaWR0aCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+
aGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5oZWlnaHQoKQorICAgICAgICB8fCBtX2JveERh
dGEtPm1pbkhlaWdodCgpICE9IG90aGVyLm1fYm94RGF0YS0+bWluSGVpZ2h0KCkKKyAgICAgICAg
fHwgbV9ib3hEYXRhLT5tYXhIZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPm1heEhlaWdodCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2JveC0+dmVydGljYWxBbGlnbigp
ICE9IG90aGVyLm1fYm94LT52ZXJ0aWNhbEFsaWduKCkgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnZl
cnRpY2FsQWxpZ24oKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigp
KQorICAgIGlmIChtX2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKSAhPSBvdGhlci5tX2JveERhdGEt
PnZlcnRpY2FsQWxpZ24oKSB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24oKSAh
PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24oKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAobV9ib3gtPmJveFNpemluZygpICE9IG90aGVyLm1fYm94LT5i
b3hTaXppbmcoKSkKKyAgICBpZiAobV9ib3hEYXRhLT5ib3hTaXppbmcoKSAhPSBvdGhlci5tX2Jv
eERhdGEtPmJveFNpemluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJy
b3VuZC0+bWFyZ2luICE9IG90aGVyLnN1cnJvdW5kLT5tYXJnaW4pCisgICAgaWYgKG1fc3Vycm91
bmREYXRhLT5tYXJnaW4gIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPm1hcmdpbikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3Vycm91bmQtPnBhZGRpbmcgIT0gb3RoZXIuc3Vycm91
bmQtPnBhZGRpbmcpCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5wYWRkaW5nICE9IG90aGVyLm1f
c3Vycm91bmREYXRhLT5wYWRkaW5nKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYWRkIGFuIG9wdGltaXplZCBmb3JtIG9mIGxheW91dCB0aGF0IGp1c3Qg
cmVjb21wdXRlcyB2aXN1YWwgb3ZlcmZsb3cuCiAgICAgaWYgKGNoYW5nZUFmZmVjdHNWaXN1YWxP
dmVyZmxvdyhvdGhlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7
Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UKLSAgICAgICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAhPSBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UKLSAgICAgICAgICAgIHx8IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bGluZUNsYW1wICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xh
bXAKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1faW5pdGlhbExldHRlcgotICAgICAgICAg
ICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmdldCgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAg
ICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGVhcmFuY2UgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bGluZUNsYW1wICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxp
bmVDbGFtcAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aW5pdGlhbExl
dHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pbml0aWFsTGV0dGVyCisgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdt
ZW50ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50KQorICAg
ICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uRnJhZ21lbnQgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uRnJhZ21lbnQpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJn
aW4gIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW4pCisgICAgICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU1hcmdpbiAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5zaGFwZU1hcmdpbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVC
b3ggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94
KQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxl
Qm94ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9mbGV4aWJsZUJveCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9m
bGV4aWJsZUJveCkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxl
Qm94ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X29yZGVyICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29yZGVyCi0gICAgICAgICAg
ICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FsaWduSXRlbXMKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWdu
U2VsZiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYKLSAgICAgICAg
ICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50Ci0gICAgICAgICAgICB8fCByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fanVzdGlmeUl0ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9qdXN0aWZ5U2VsZiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5
U2VsZikKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9yZGVyICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9yZGVyCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5hbGlnbkNvbnRlbnQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YWxpZ25Db250ZW50CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
bGlnbkl0ZW1zICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXMKKyAg
ICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZiAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnblNlbGYKKyAgICAgICAgICAgIHx8IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmp1c3RpZnlDb250ZW50ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmp1c3RpZnlDb250ZW50CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5qdXN0aWZ5SXRlbXMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlm
eUl0ZW1zCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2Vs
ZiAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2VsZikKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0LCBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ib3hSZWZsZWN0KSkKKyAgICAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFJlZmxlY3QsIG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJveFJlZmxlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sICE9IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bXVsdGlDb2wgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNmb3JtICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5z
Zm9ybSkgewotICAgICAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9y
bS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNm
b3JtLT5oYXNUcmFuc2Zvcm0oKSkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsK
KyAgICAgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1Ry
YW5zZm9ybSgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFz
VHJhbnNmb3JtKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBp
ZiAoKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybSAhPSAqb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtKSB7CisgICAgICAgICAgICBpZiAoKm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zZm9ybSAhPSAqb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtKSB7CiAgICAgICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eVRyYW5zZm9ybTsKICAgICAgICAgICAg
ICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZEl0ZW0gIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0pCisg
ICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmdyaWQKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmdyaWRJdGVtICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKICAgICAgICAgLy8gSWYgcmVnaW9ucyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxheW91
dCB0byByZS1jYWxjIHJlZ2lvbnMuCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kYXNoYm9hcmRSZWdpb25zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rhc2hi
b2FyZFJlZ2lvbnMpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9h
cmRSZWdpb25zICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRhc2hib2FyZFJlZ2lv
bnMpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGlmICghYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLCBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlKSkgeworICAgICAgICBpZiAo
IWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5n
ZSwgb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSkpIHsKICAgICAgICAg
ICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZl
UHJvcGVydHlXaWxsQ2hhbmdlOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxv
b2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocmFy
ZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEuZ2V0KCkpIHsK
LSAgICAgICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQgIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEtPmluZGVudAorICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1fcmFyZUluaGVy
aXRlZERhdGEtPmluZGVudCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEFsaWduTGFzdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0QWxpZ25MYXN0
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SnVzdGlmeSAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SnVzdGlmeQotICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPm1fdGV4dEluZGVudExpbmUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
Pm1fdGV4dEluZGVudExpbmUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRBbGlnbkxhc3QgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdAor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEp1c3RpZnkgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEp1c3RpZnkKKyAgICAgICAgICAgIHx8IG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRJbmRlbnRMaW5lICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRJbmRlbnRMaW5lCiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5tX2VmZmVjdGl2ZVpvb20gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZl
Wm9vbQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFpvb20gIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFpvb20KKyAgICAgICAgICAgIHx8IG1fcmFyZUlu
aGVyaXRlZERhdGEtPmVmZmVjdGl2ZVpvb20gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
ZWZmZWN0aXZlWm9vbQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpv
b20gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpvb20KICNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXpl
QWRqdXN0ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAorICAgICAg
ICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKICNlbmRpZgotICAgICAgICAgICAgfHwg
cmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
d29yZEJyZWFrCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFw
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKLSAgICAgICAgICAgIHx8
IHJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
bmJzcE1vZGUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhawotICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNlY3VyaXR5Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucwotICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5
cGhlbmF0aW9uTGltaXRBZnRlcgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5
cGhlbmF0aW9uU3RyaW5nICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0
cmluZwotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uICE9
IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbgotICAgICAgICAgICAgfHwg
cmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01hcmsgIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPnRleHRFbXBoYXNpc01hcmsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0RW1waGFzaXNQb3NpdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzUG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1w
aGFzaXNDdXN0b21NYXJrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXND
dXN0b21NYXJrCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50
YXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uCi0gICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90YWJTaXplICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT5tX3RhYlNpemUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5t
X2xpbmVCb3hDb250YWluICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250
YWluCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lR3JpZCAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lR3JpZAorICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+d29yZEJyZWFrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPndvcmRC
cmVhaworICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAgICAgICAgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+bmJzcE1vZGUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVh
ayAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKKyAgICAgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2VjdXJpdHkKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbnMgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucworICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlCisgICAgICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCisgICAgICAgICAgICB8
fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZyAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZworICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnJ1
YnlQb3NpdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhh
c2lzTWFyayAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrCisg
ICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbiAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbgorICAgICAg
ICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyayAhPSBv
dGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrCisgICAgICAg
ICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24gIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJ
bmhlcml0ZWREYXRhLT50YWJTaXplICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNp
emUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluCisgICAgICAgICAgICB8
fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lR3JpZCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT5saW5lR3JpZAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFy
ZUluaGVyaXRlZERhdGEtPmltYWdlT3JpZW50YXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW1hZ2VPcmllbnRhdGlvbgogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNP
TFVUSU9OKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0
aW9uU291cmNlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNv
dXJjZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9u
U25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25TbmFwCi0g
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb24gIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uCisgICAgICAgICAgICB8fCBt
X3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlCisgICAgICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25TbmFwICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNuYXAKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVy
aXRlZERhdGEtPmltYWdlUmVzb2x1dGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5p
bWFnZVJlc29sdXRpb24KICNlbmRpZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
Pm1fbGluZVNuYXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXAKLSAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbiAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+bV9saW5lQWxpZ24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5tX2hhbmdpbmdQdW5jdHVhdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9oYW5n
aW5nUHVuY3R1YXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVT
bmFwICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwCisgICAgICAgICAgICB8
fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+bGluZUFsaWduCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oYW5n
aW5nUHVuY3R1YXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFuZ2luZ1B1bmN0
dWF0aW9uCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9
IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCisgICAg
ICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcK
ICNlbmRpZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdl
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSkgLy8gRklYTUU6IG5l
ZWRzIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoKT8KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVy
aXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxp
c3RTdHlsZUltYWdlKSAvLyBGSVhNRTogbmVlZHMgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSgpPwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgp
ICE9IG90aGVyLnRleHRTdHJva2VXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgaWYgKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgIT0gb3RoZXIuaW5oZXJpdGVk
LT5saW5lX2hlaWdodAorICAgIGlmIChtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQgIT0gb3Ro
ZXIubV9pbmhlcml0ZWREYXRhLT5saW5lSGVpZ2h0CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKLSAgICAgICAgfHwgaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0ICE9IG90aGVyLmlu
aGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodAorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEt
PnNwZWNpZmllZExpbmVIZWlnaHQgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRM
aW5lSGVpZ2h0CiAjZW5kaWYKLSAgICAgICAgfHwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZSAhPSBv
dGhlci5pbmhlcml0ZWQtPmZvbnRDYXNjYWRlCi0gICAgICAgIHx8IGluaGVyaXRlZC0+aG9yaXpv
bnRhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcKLSAgICAgICAgfHwgaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyAh
PSBvdGhlci5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgIHx8IGlu
aGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2Jv
eF9kaXJlY3Rpb24KLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgIT0g
b3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcKLSAgICAgICAgfHwgbm9uaW5oZXJp
dGVkX2ZsYWdzLnBvc2l0aW9uKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9u
KCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkgIT0gb3RoZXIubm9u
aW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdz
Lm9yaWdpbmFsRGlzcGxheSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5hbERp
c3BsYXkoKSkKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZSAhPSBvdGhl
ci5tX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlCisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0
YS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZworICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPnZlcnRpY2Fs
Qm9yZGVyU3BhY2luZyAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3Bh
Y2luZworICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdz
LnJ0bE9yZGVyaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcKKyAgICAg
ICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpICE9IG90aGVyLm1fbm9uSW5oZXJp
dGVkRmxhZ3MucG9zaXRpb24oKQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0
aW5nKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpCisgICAgICAgIHx8
IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkgIT0gb3RoZXIubV9ub25Jbmhl
cml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKIAot
ICAgIGlmICgobm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0gVEFCTEUp
IHsKLSAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlCi0gICAgICAgICAgICB8fCBpbmhlcml0
ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2Vs
bHMKLSAgICAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlCi0gICAgICAgICAgICB8fCBub25pbmhlcml0
ZWRfZmxhZ3MudGFibGVMYXlvdXQoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MudGFibGVM
YXlvdXQoKSkKKyAgICBpZiAoKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgp
KSA+PSBUQUJMRSkgeworICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBz
ZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlCisgICAgICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5l
bXB0eUNlbGxzCisgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlICE9
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUKKyAgICAgICAgICAgIHx8IG1fbm9u
SW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
LnRhYmxlTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBJ
biB0aGUgY29sbGFwc2luZyBib3JkZXIgbW9kZWwsICdoaWRkZW4nIHN1cHByZXNzZXMgb3RoZXIg
Ym9yZGVycywgd2hpbGUgJ25vbmUnCiAgICAgICAgIC8vIGRvZXMgbm90LCBzbyB0aGVzZSBzdHls
ZSBkaWZmZXJlbmNlcyBjYW4gYmUgd2lkdGggZGlmZmVyZW5jZXMuCi0gICAgICAgIGlmIChpbmhl
cml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQorICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFn
cy5ib3JkZXJDb2xsYXBzZQogICAgICAgICAgICAgJiYgKChib3JkZXJUb3BTdHlsZSgpID09IEJI
SURERU4gJiYgb3RoZXIuYm9yZGVyVG9wU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgICAgICAg
ICB8fCAoYm9yZGVyVG9wU3R5bGUoKSA9PSBCTk9ORSAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgp
ID09IEJISURERU4pCiAgICAgICAgICAgICAgICAgfHwgKGJvcmRlckJvdHRvbVN0eWxlKCkgPT0g
QkhJRERFTiAmJiBvdGhlci5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05FKQpAQCAtNjcxLDM3
ICs2ODcsMzcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGlmIChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxh
eSgpID09IExJU1RfSVRFTSkgewotICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0
eWxlX3R5cGUgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUKLSAgICAg
ICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiAhPSBvdGhlci5p
bmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24pCisgICAgaWYgKG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpID09IExJU1RfSVRFTSkgeworICAgICAgICBpZiAo
bV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZQorICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQ
b3NpdGlvbiAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5f
dGV4dF9hbGlnbiAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24KLSAgICAgICAg
fHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSAhPSBvdGhlci5pbmhlcml0ZWRfZmxh
Z3MuX3RleHRfdHJhbnNmb3JtCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9u
ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uCi0gICAgICAgIHx8IGluaGVyaXRl
ZF9mbGFncy5fd2hpdGVfc3BhY2UgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFj
ZQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MuY2xlYXIoKSAhPSBvdGhlci5ub25pbmhl
cml0ZWRfZmxhZ3MuY2xlYXIoKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MudW5pY29k
ZUJpZGkoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSkKKyAgICBp
ZiAobV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50
ZXh0QWxpZ24KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtICE9IG90
aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybQorICAgICAgICB8fCBtX2luaGVyaXRl
ZEZsYWdzLmRpcmVjdGlvbiAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbgorICAg
ICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgIT0gb3RoZXIubV9pbmhlcml0ZWRG
bGFncy53aGl0ZVNwYWNlCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKSAh
PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmNsZWFyKCkKKyAgICAgICAgfHwgbV9ub25Jbmhl
cml0ZWRGbGFncy51bmljb2RlQmlkaSgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudW5p
Y29kZUJpZGkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayBibG9jayBm
bG93IGRpcmVjdGlvbi4KLSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgIT0g
b3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUpCisgICAgaWYgKG1faW5oZXJpdGVk
RmxhZ3Mud3JpdGluZ01vZGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayB0ZXh0IGNvbWJpbmUgbW9kZS4K
LSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUgIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHRDb21iaW5lICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRl
eHRDb21iaW5lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGJyZWFrcy4K
LSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtCZWZvcmUgIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtCZWZvcmUKLSAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fYnJlYWtBZnRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9i
cmVha0FmdGVyCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrSW5zaWRl
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrSW5zaWRlKQorICAgIGlmICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0JlZm9yZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5icmVha0JlZm9yZQorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5icmVha0FmdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQWZ0ZXIK
KyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gT3ZlcmZsb3cgcmV0dXJucyBhIGxheW91dCBoaW50LgotICAgIGlmIChub25p
bmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLm92
ZXJmbG93WCgpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKSAhPSBv
dGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkpCisgICAgaWYgKG1fbm9uSW5oZXJp
dGVkRmxhZ3Mub3ZlcmZsb3dYKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxv
d1goKQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVy
Lm1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dZKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gSWYgb3VyIGJvcmRlciB3aWR0aHMgY2hhbmdlLCB0aGVuIHdlIG5lZWQgdG8gbGF5
b3V0LiAgT3RoZXIgY2hhbmdlcyB0byBib3JkZXJzCkBAIC03MTMsMTMgKzcyOSwxMyBAQCBib29s
IFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3Ro
ZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRo
ZSBjb3VudGVyIGRpcmVjdGl2ZXMgY2hhbmdlLCB0cmlnZ2VyIGEgcmVsYXlvdXQgdG8gcmUtY2Fs
Y3VsYXRlIGNvdW50ZXIgdmFsdWVzIGFuZCByZWJ1aWxkIHRoZSBjb3VudGVyIG5vZGUgdHJlZS4K
LSAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y291bnRlckRpcmVjdGl2ZXMsIG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJE
aXJlY3RpdmVzKSkKKyAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMsIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvdW50ZXJEaXJlY3RpdmVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAo
KHZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgIT0gKG90aGVyLnZpc2liaWxpdHkoKSA9PSBDT0xM
QVBTRSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5oYXNPcGFjaXR5KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNp
dHkoKSkgeworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHVzZSBTaW1wbGlmaWVkTGF5b3V0IGhlcmUsIGJ1dCB3
ZSBjYW4ndCBxdWl0ZSBkbyB0aGF0IHlldC4KICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1
cmUgU2ltcGxpZmllZExheW91dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkgb24gUmVuZGVySW5saW5l
cyAod2Ugd2lsbCBuZWVkCiAgICAgICAgIC8vIHRvIGFkZCBhIHNlbGZOZWVkc1NpbXBsaWZpZWRM
YXlvdXQgYml0IGluIG9yZGVyIHRvIG5vdCBnZXQgY29uZnVzZWQgYW5kIHRhaW50IGV2ZXJ5IGxp
bmUpLgpAQCAtNzI4LDE5ICs3NDQsMTkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5o
YXNGaWx0ZXJzKCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSkK
KyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+aGFzQmFja2Ryb3BGaWx0ZXJzKCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pmhhc0JhY2tkcm9wRmlsdGVycygpKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5o
YXNCYWNrZHJvcEZpbHRlcnMoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNC
YWNrZHJvcEZpbHRlcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIGlm
ICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLCBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzKSkKKyAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVh
bERhdGEobV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLCBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT5xdW90ZXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlvbigp
ICE9IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90
aGVyLnN1cnJvdW5kLT5vZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fc3Vycm91bmREYXRhLT5vZmZz
ZXQgIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPm9mZnNldCkgewogICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlvdXQgZm9yIHJlbGF0aXZlIHBv
c2l0aW9uaW5nLCBidXQgd2UgY2FuJ3QgcXVpdGUgZG8gdGhhdCB5ZXQuCiAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJl
Y3RseSBvbiBSZW5kZXJJbmxpbmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgICAgIC8vIHRvIGFk
ZCBhIHNlbGZOZWVkc1NpbXBsaWZpZWRMYXlvdXQgYml0IGluIG9yZGVyIHRvIG5vdCBnZXQgY29u
ZnVzZWQgYW5kIHRhaW50IGV2ZXJ5IGxpbmUpLgpAQCAtNzQ4LDcgKzc2NCw3IEBAIGJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
dW5zaWduZWQmIGNoYW5nCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAg
ICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMg
bW92aW5nIGJ1dCBub3QgY2hhbmdpbmcgc2l6ZS4KLSAgICAgICAgICAgIGlmICghcG9zaXRpb25D
aGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zm
c2V0LCBtX2JveC0+d2lkdGgoKSkpCisgICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlSXNN
b3ZlbWVudE9ubHkobV9zdXJyb3VuZERhdGEtPm9mZnNldCwgb3RoZXIubV9zdXJyb3VuZERhdGEt
Pm9mZnNldCwgbV9ib3hEYXRhLT53aWR0aCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3Niw5ICs3OTIsOSBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlciwgdQogICAgIGlmIChwb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBvdGhlci5zdXJyb3Vu
ZC0+b2Zmc2V0KSB7CisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5vZmZzZXQgIT0gb3RoZXIubV9z
dXJyb3VuZERhdGEtPm9mZnNldCkgewogICAgICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ug
d2hlcmUgYSBwb3NpdGlvbmVkIGxheWVyIGlzIG1vdmluZyBidXQgbm90IGNoYW5naW5nIHNpemUu
Ci0gICAgICAgIGlmIChwb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgcG9zaXRpb25D
aGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zm
c2V0LCBtX2JveC0+d2lkdGgoKSkpCisgICAgICAgIGlmIChwb3NpdGlvbigpID09IEFic29sdXRl
UG9zaXRpb24gJiYgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShtX3N1cnJvdW5kRGF0YS0+
b2Zmc2V0LCBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBtX2JveERhdGEtPndpZHRoKCkp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtNzg4LDQwICs4MDQs
NDAgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25s
eShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHUKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJl
cXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNo
YW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKICAgICAvLyBTdHlsZVJl
c29sdmVyIGhhcyBlbnN1cmVkIHRoYXQgekluZGV4IGlzIG5vbi1hdXRvIG9ubHkgaWYgaXQncyBh
cHBsaWNhYmxlLgotICAgIGlmIChtX2JveC0+ekluZGV4KCkgIT0gb3RoZXIubV9ib3gtPnpJbmRl
eCgpIHx8IG1fYm94LT5oYXNBdXRvWkluZGV4KCkgIT0gb3RoZXIubV9ib3gtPmhhc0F1dG9aSW5k
ZXgoKSkKKyAgICBpZiAobV9ib3hEYXRhLT56SW5kZXgoKSAhPSBvdGhlci5tX2JveERhdGEtPnpJ
bmRleCgpIHx8IG1fYm94RGF0YS0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1fYm94RGF0YS0+
aGFzQXV0b1pJbmRleCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlv
bigpICE9IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAgICAgIGlmICh2aXN1YWwtPmNsaXAgIT0gb3Ro
ZXIudmlzdWFsLT5jbGlwIHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBvdGhlci52aXN1YWwtPmhhc0Ns
aXApIHsKKyAgICAgICAgaWYgKG1fdmlzdWFsRGF0YS0+Y2xpcCAhPSBvdGhlci5tX3Zpc3VhbERh
dGEtPmNsaXAgfHwgbV92aXN1YWxEYXRhLT5oYXNDbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+
aGFzQ2xpcCkgewogICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
IHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUNsaXBSZWN0OwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQot
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUgIT0gb3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlKQorICAgIGlmICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHkgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3BhY2l0eSkgeworICAgIGlmIChtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm9wYWNpdHkpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9
IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eU9wYWNpdHk7CiAgICAgICAgIC8vIERvbid0IHJldHVy
bjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKLSAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2ZpbHRlcikgeworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyKSB7CiAgICAgICAgIGNoYW5nZWRD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0
ZXI7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNo
YW5nZS4KICAgICB9CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIGlmIChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlcikgeworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5iYWNrZHJvcEZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNr
ZHJvcEZpbHRlcikgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMg
fD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5RmlsdGVyOwogICAgICAgICAvLyBEb24ndCByZXR1
cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzayAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tC
b3hJbWFnZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UpCisg
ICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2sgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFzaworICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNr
Qm94SW1hZ2UgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTgyOSwyNiArODQ1
LDI2IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0
IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFu
Z2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRl
ZF9mbGFncy5fdmlzaWJpbGl0eSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkK
LSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci5p
bmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0Ci0gICAgICAgIHx8IGluaGVyaXRlZF9m
bGFncy5faW5zaWRlTGluayAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsKLSAg
ICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uICE9IG90aGVyLmlu
aGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbgotICAgICAgICB8fCBzdXJyb3VuZC0+
Ym9yZGVyICE9IG90aGVyLnN1cnJvdW5kLT5ib3JkZXIKLSAgICAgICAgfHwgIW1fYmFja2dyb3Vu
ZC0+aXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoKm90aGVyLm1fYmFja2dyb3VuZCkKLSAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPnVzZXJNb2RpZnkKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3Qg
IT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QKLSAgICAgICAgfHwgcmFyZU5v
bkluaGVyaXRlZERhdGEtPnVzZXJEcmFnICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT51
c2VyRHJhZwotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0Ci0gICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9vYmplY3RGaXQKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0
UG9zaXRpb24gIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0UG9zaXRpb24K
LSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcgIT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcpCisgICAgaWYgKG1faW5oZXJpdGVk
RmxhZ3MudmlzaWJpbGl0eSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkKKyAg
ICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdAorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZUxpbmsgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rCisgICAgICAg
IHx8IG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiAhPSBvdGhlci5tX2luaGVy
aXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24KKyAgICAgICAgfHwgbV9zdXJyb3VuZERhdGEt
PmJvcmRlciAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+Ym9yZGVyCisgICAgICAgIHx8ICFtX2Jh
Y2tncm91bmREYXRhLT5pc0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIubV9iYWNrZ3JvdW5k
RGF0YSkKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5CisgICAgICAgIHx8IG1fcmFyZUluaGVy
aXRlZERhdGEtPnVzZXJTZWxlY3QgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNl
bGVjdAorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZworICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ib3JkZXJGaXQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Ym9yZGVyRml0CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQKKyAgICAgICAgfHwgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0UG9zaXRpb24gIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b2JqZWN0UG9zaXRpb24KKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0
YS0+aW1hZ2VSZW5kZXJpbmcgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZW5k
ZXJpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3NoYXBlT3V0c2lkZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFw
ZU91dHNpZGUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVk
IHRvIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KCkuCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2NsaXBQYXRoICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQ
YXRoKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoKSB7CiAgICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlDbGlwUGF0
aDsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hh
bmdlLgogICAgIH0KQEAgLTg1OCwxNiArODc0LDE2IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFu
CiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVy
T3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAogewot
ICAgIGlmIChpbmhlcml0ZWQtPmNvbG9yICE9IG90aGVyLmluaGVyaXRlZC0+Y29sb3IKLSAgICAg
ICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRl
ZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucwotICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0
aW9uICE9IG90aGVyLnZpc3VhbC0+dGV4dERlY29yYXRpb24KLSAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25Db2xvcgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
bV90ZXh0RGVjb3JhdGlvblNraXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERl
Y29yYXRpb25Ta2lwCi0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9y
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCi0gICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VDb2xvcgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9y
Ci0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKQorICAgIGlmIChtX2luaGVyaXRl
ZERhdGEtPmNvbG9yICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+Y29sb3IKKyAgICAgICAgfHwg
bV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFn
cy50ZXh0RGVjb3JhdGlvbnMKKyAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlv
biAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uCisgICAgICAgIHx8IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZQorICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvbkNvbG9yICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Ta2lwICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHREZWNvcmF0aW9uU2tpcAorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Rmls
bENvbG9yICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IKKyAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yICE9IG90aGVyLm1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvciAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNDb2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1w
aGFzaXNGaWxsICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODc1LDEyICs4
OTEsMTIgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JC
b3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5z
aWduZWQmKSBjb25zdAogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtU3R5bGUzRCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNECi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9iYWNrZmFjZVZpc2liaWxpdHkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYmFja2ZhY2VWaXNpYmlsaXR5Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9wZXJzcGVjdGl2ZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVj
dGl2ZQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVP
cmlnaW5YICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2lu
WAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmln
aW5ZICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWSkK
KyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50cmFuc2Zvcm1TdHlsZTNEICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5z
Zm9ybVN0eWxlM0QKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tm
YWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZp
c2liaWxpdHkKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0
aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCisgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCisgICAgICAgICAg
ICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC05NDQsMTY4ICs5NjAsMTUwIEBAIGJvb2wgUmVuZGVy
U3R5bGU6OmRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGJvb2wgaXNDb21wCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxl
ZnQpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmln
aHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCkKIHsKLSAgICBTdHlsZVZpc3VhbERh
dGEqIGRhdGEgPSB2aXN1YWwuYWNjZXNzKCk7Ci0gICAgZGF0YS0+Y2xpcC50b3AoKSA9IHRvcDsK
LSAgICBkYXRhLT5jbGlwLnJpZ2h0KCkgPSByaWdodDsKLSAgICBkYXRhLT5jbGlwLmJvdHRvbSgp
ID0gYm90dG9tOwotICAgIGRhdGEtPmNsaXAubGVmdCgpID0gbGVmdDsKKyAgICBhdXRvJiBkYXRh
ID0gbV92aXN1YWxEYXRhLmFjY2VzcygpOworICAgIGRhdGEuY2xpcC50b3AoKSA9IFdURk1vdmUo
dG9wKTsKKyAgICBkYXRhLmNsaXAucmlnaHQoKSA9IFdURk1vdmUocmlnaHQpOworICAgIGRhdGEu
Y2xpcC5ib3R0b20oKSA9IFdURk1vdmUoYm90dG9tKTsKKyAgICBkYXRhLmNsaXAubGVmdCgpID0g
V1RGTW92ZShsZWZ0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKFJlZlB0cjxT
dHlsZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKIHsKLSAgICBpZiAo
IXJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhKQotICAgICAgICByYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IEN1cnNvckxpc3Q6OmNyZWF0ZSgpOwot
ICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhLT5hcHBlbmQoQ3Vyc29y
RGF0YShXVEZNb3ZlKGltYWdlKSwgaG90U3BvdCkpOworICAgIGF1dG8mIGN1cnNvckRhdGEgPSBt
X3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1cnNvckRhdGE7CisgICAgaWYgKCFjdXJzb3JE
YXRhKQorICAgICAgICBjdXJzb3JEYXRhID0gQ3Vyc29yTGlzdDo6Y3JlYXRlKCk7CisgICAgY3Vy
c29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEoV1RGTW92ZShpbWFnZSksIGhvdFNwb3QpKTsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yTGlzdChSZWZQdHI8Q3Vyc29yTGlzdD4mJiBs
aXN0KQogewotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gV1RG
TW92ZShsaXN0KTsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1cnNvckRhdGEg
PSBXVEZNb3ZlKGxpc3QpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRRdW90ZXMoUmVmUHRy
PFF1b3Rlc0RhdGE+JiYgcSkKIHsKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyA9
PSBxIHx8IChyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzICYmIHEgJiYgKnJhcmVJbmhlcml0ZWRE
YXRhLT5xdW90ZXMgPT0gKnEpKQorICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMg
PT0gcSB8fCAobV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzICYmIHEgJiYgKm1fcmFyZUluaGVy
aXRlZERhdGEtPnF1b3RlcyA9PSAqcSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVJbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5xdW90ZXMgPSBXVEZNb3ZlKHEpOworICAgIG1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkucXVvdGVzID0gV1RGTW92ZShxKTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0V2lsbENoYW5nZShSZWZQdHI8V2lsbENoYW5nZURhdGE+JiYgd2lsbENoYW5nZURh
dGEpCiB7Ci0gICAgaWYgKGFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fd2lsbENoYW5nZS5nZXQoKSwgd2lsbENoYW5nZURhdGEuZ2V0KCkpKQorICAgIGlmIChh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2Uu
Z2V0KCksIHdpbGxDaGFuZ2VEYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fd2lsbENoYW5nZSA9IFdURk1vdmUod2lsbENo
YW5nZURhdGEpOworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkud2lsbENoYW5n
ZSA9IFdURk1vdmUod2lsbENoYW5nZURhdGEpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpjbGVh
ckN1cnNvckxpc3QoKQogewotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YSkK
LSAgICAgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBudWxscHRy
OworICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhKQorICAgICAgICBtX3Jh
cmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1cnNvckRhdGEgPSBudWxscHRyOwogfQogCiB2b2lk
IFJlbmRlclN0eWxlOjpjbGVhckNvbnRlbnQoKQogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9jb250ZW50KQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9jb250ZW50ID0gbnVsbHB0cjsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y29u
dGVudCkKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb250ZW50ID0g
bnVsbHB0cjsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6YXBwZW5kQ29udGVudChzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudERhdGE+IGNvbnRlbnREYXRhKQorc3RhdGljIGlubGluZSBDb250ZW50RGF0
YSYgbGFzdENvbnRlbnQoQ29udGVudERhdGEmIGZpcnN0Q29udGVudCkKIHsKLSAgICBhdXRvJiBj
b250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudDsKLSAgICBD
b250ZW50RGF0YSogbGFzdENvbnRlbnQgPSBjb250ZW50LmdldCgpOwotICAgIHdoaWxlIChsYXN0
Q29udGVudCAmJiBsYXN0Q29udGVudC0+bmV4dCgpKQotICAgICAgICBsYXN0Q29udGVudCA9IGxh
c3RDb250ZW50LT5uZXh0KCk7CisgICAgYXV0byogbGFzdENvbnRlbnQgPSAmZmlyc3RDb250ZW50
OworICAgIGZvciAoYXV0byogY29udGVudCA9ICZmaXJzdENvbnRlbnQ7IGNvbnRlbnQ7IGNvbnRl
bnQgPSBjb250ZW50LT5uZXh0KCkpCisgICAgICAgIGxhc3RDb250ZW50ID0gY29udGVudDsKKyAg
ICByZXR1cm4gKmxhc3RDb250ZW50OworfQogCi0gICAgaWYgKGxhc3RDb250ZW50KQotICAgICAg
ICBsYXN0Q29udGVudC0+c2V0TmV4dChXVEZNb3ZlKGNvbnRlbnREYXRhKSk7Ci0gICAgZWxzZQot
ICAgICAgICBjb250ZW50ID0gV1RGTW92ZShjb250ZW50RGF0YSk7Cit2b2lkIFJlbmRlclN0eWxl
OjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudERhdGEsIGJv
b2wgYWRkKQoreworICAgIGF1dG8mIGRhdGEgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpOworICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KQorICAgICAgICBsYXN0Q29udGVudCgq
ZGF0YS5jb250ZW50KS5zZXROZXh0KFdURk1vdmUoY29udGVudERhdGEpKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgZGF0YS5jb250ZW50ID0gV1RGTW92ZShjb250ZW50RGF0YSk7CisgICAgICAgIGF1
dG8mIGFsdFRleHQgPSBkYXRhLmFsdFRleHQ7CisgICAgICAgIGlmICghYWx0VGV4dC5pc051bGwo
KSkKKyAgICAgICAgICAgIGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChhbHRUZXh0KTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUmVmUHRyPFN0eWxlSW1hZ2U+JiYg
aW1hZ2UsIGJvb2wgYWRkKQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCi0gICAgaWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Y29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFz
ZU5vbk51bGwoKSk7Ci0gICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9h
bHRUZXh0LmlzTnVsbCgpKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9jb250ZW50LT5zZXRBbHRUZXh0KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Fs
dFRleHQpOworICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRh
PihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCiB7Ci0gICAgYXV0byYg
Y29udGVudCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQ7Ci0gICAg
aWYgKGFkZCkgewotICAgICAgICBDb250ZW50RGF0YSogbGFzdENvbnRlbnQgPSBjb250ZW50Lmdl
dCgpOwotICAgICAgICB3aGlsZSAobGFzdENvbnRlbnQgJiYgbGFzdENvbnRlbnQtPm5leHQoKSkK
LSAgICAgICAgICAgIGxhc3RDb250ZW50ID0gbGFzdENvbnRlbnQtPm5leHQoKTsKLQotICAgICAg
ICBpZiAobGFzdENvbnRlbnQpIHsKLSAgICAgICAgICAgIC8vIFdlIGF0dGVtcHQgdG8gbWVyZ2Ug
d2l0aCB0aGUgbGFzdCBDb250ZW50RGF0YSBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAgIGlmIChp
czxUZXh0Q29udGVudERhdGE+KCpsYXN0Q29udGVudCkpIHsKLSAgICAgICAgICAgICAgICBUZXh0
Q29udGVudERhdGEmIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqbGFz
dENvbnRlbnQpOwotICAgICAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRl
bnQudGV4dCgpICsgc3RyaW5nKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGxhc3RDb250ZW50LT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihz
dHJpbmcpKTsKLQotICAgICAgICAgICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9hbHRUZXh0LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIGxhc3RDb250ZW50LT5zZXRB
bHRUZXh0KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8mIGRhdGEgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpOworICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CisgICAgICAgIGF1dG8mIGxh
c3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKKyAgICAgICAgaWYgKCFpczxUZXh0Q29u
dGVudERhdGE+KGxhc3QpKQorICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBhdXRvJiB0ZXh0Q29udGVudCA9IGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4obGFzdCk7Cisg
ICAgICAgICAgICB0ZXh0Q29udGVudC5zZXRUZXh0KHRleHRDb250ZW50LnRleHQoKSArIHN0cmlu
Zyk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhLmNvbnRlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKKyAgICAgICAgYXV0byYgYWx0
VGV4dCA9IGRhdGEuYWx0VGV4dDsKKyAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQorICAg
ICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwogICAgIH0KLQotICAg
IGNvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKLSAg
ICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkp
Ci0gICAgICAgIGNvbnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fYWx0VGV4dCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1
bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAo
IWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmIChhZGQpIHsKLSAgICAgICAgYXBw
ZW5kQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShj
b3VudGVyKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRl
bnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKTsKKyAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0KIAogdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewot
ICAgIGlmIChhZGQpIHsKLSAgICAgICAgYXBwZW5kQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPFF1
b3RlQ29udGVudERhdGE+KHF1b3RlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5p
cXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dCA9IHN0cmluZzsKLSAgICAKLSAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCkKLSAgICAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudC0+c2V0QWx0VGV4dChzdHJpbmcp
OworICAgIGF1dG8mIGRhdGEgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOworICAg
IGRhdGEuYWx0VGV4dCA9IHN0cmluZzsKKyAgICBpZiAoZGF0YS5jb250ZW50KQorICAgICAgICBk
YXRhLmNvbnRlbnQtPnNldEFsdFRleHQoc3RyaW5nKTsKIH0KIAogY29uc3QgU3RyaW5nJiBSZW5k
ZXJTdHlsZTo6Y29udGVudEFsdFRleHQoKSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hbHRUZXh0OworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5hbHRUZXh0OwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNBdHRyQ29udGVudCgpCiB7
CiAgICAgc2V0VW5pcXVlKCk7Ci0gICAgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9o
YXNBdHRyQ29udGVudCwgdHJ1ZSk7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBoYXNBdHRyQ29udGVudCwgdHJ1ZSk7CiB9CiAKLS8vIEZJWE1FOiB1c2UgYWZmZWN0ZWRCeVRy
YW5zZm9ybU9yaWdpbigpLgogc3RhdGljIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1Pcmln
aW4oY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiYgdHJhbnNmb3JtT3Bl
cmF0aW9ucywgUmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKQog
ewotICAgIC8vIHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRoIHRy
YW5zbGF0ZSBvcGVyYXRpb25zLgotICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGUgb25seSB0cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRyYW5zZm9ybS1v
cmlnaW4gaXMgaXJyZWxldmFudAotICAgIC8vIGluIHRoYXQgY2FzZS4KKyAgICAvLyBUaGUgdHJh
bnNmb3JtLW9yaWdpbiBwcm9wZXJ0eSBicmFja2V0cyB0aGUgdHJhbnNmb3JtIHdpdGggdHJhbnNs
YXRlIG9wZXJhdGlvbnMuCisgICAgLy8gV2hlbiB0aGUgb25seSB0cmFuc2Zvcm0gaXMgYSB0cmFu
c2xhdGlvbiwgdGhlIHRyYW5zZm9ybS1vcmlnaW4gaXMgaXJyZWxldmFudC4KKwogICAgIGlmIChh
cHBseU9yaWdpbiAhPSBSZW5kZXJTdHlsZTo6SW5jbHVkZVRyYW5zZm9ybU9yaWdpbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiB0cmFuc2Zvcm1P
cGVyYXRpb25zKSB7Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0
eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7Ci0gICAgICAgIGlmICh0eXBlICE9IFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFX1gKKyAgICAgICAgLy8gRklYTUU6IFVzZSBhZmZlY3RlZEJ5VHJh
bnNmb3JtT3JpZ2luKCkuCisgICAgICAgIGF1dG8gdHlwZSA9IG9wZXJhdGlvbi0+dHlwZSgpOwor
ICAgICAgICBpZiAodHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURQorICAgICAg
ICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRAorICAgICAg
ICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YCiAgICAgICAg
ICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1kKLSAgICAgICAg
ICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUgCi0gICAgICAgICAg
ICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1oKLSAgICAgICAgICAg
ICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0QpCisgICAgICAgICAg
ICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1opCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTExMTQsNyArMTExMiw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNm
b3JtT3BlcmF0aW9uCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIEFw
cGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKSBjb25zdAogewotICAgIGF1dG8mIG9wZXJh
dGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCk7CisgICAgYXV0byYgb3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCk7CiAgICAgYm9vbCBhcHBseVRy
YW5zZm9ybU9yaWdpbiA9IHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4ob3BlcmF0aW9ucywgYXBwbHlP
cmlnaW4pOwogCiAgICAgZmxvYXQgb2Zmc2V0WCA9IHRyYW5zZm9ybU9yaWdpblgoKS5pc1BlcmNl
bnQoKSA/IGJvdW5kaW5nQm94LngoKSA6IDA7CkBAIC0xMTUxLDc4ICsxMTQ5LDkxIEBAIHZvaWQg
UmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNo
YWRvd0RhdGEsIGJvb2wgYWRkCiB7CiAgICAgQVNTRVJUKCFzaGFkb3dEYXRhIHx8ICghc2hhZG93
RGF0YS0+c3ByZWFkKCkgJiYgc2hhZG93RGF0YS0+c3R5bGUoKSA9PSBOb3JtYWwpKTsKIAotICAg
IFN0eWxlUmFyZUluaGVyaXRlZERhdGEqIHJhcmVEYXRhID0gcmFyZUluaGVyaXRlZERhdGEuYWNj
ZXNzKCk7CisgICAgYXV0byYgcmFyZURhdGEgPSBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
OwogICAgIGlmICghYWRkKSB7Ci0gICAgICAgIHJhcmVEYXRhLT50ZXh0U2hhZG93ID0gV1RGTW92
ZShzaGFkb3dEYXRhKTsKKyAgICAgICAgcmFyZURhdGEudGV4dFNoYWRvdyA9IFdURk1vdmUoc2hh
ZG93RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaGFkb3dEYXRhLT5zZXRO
ZXh0KFdURk1vdmUocmFyZURhdGEtPnRleHRTaGFkb3cpKTsKLSAgICByYXJlRGF0YS0+dGV4dFNo
YWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CisgICAgc2hhZG93RGF0YS0+c2V0TmV4dChXVEZN
b3ZlKHJhcmVEYXRhLnRleHRTaGFkb3cpKTsKKyAgICByYXJlRGF0YS50ZXh0U2hhZG93ID0gV1RG
TW92ZShzaGFkb3dEYXRhKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KHN0
ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRhLCBib29sIGFkZCkKIHsKLSAgICBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKiByYXJlRGF0YSA9IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpOworICAgIGF1dG8mIHJhcmVEYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKTsKICAgICBpZiAoIWFkZCkgewotICAgICAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cg
PSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgICAgICByYXJlRGF0YS5ib3hTaGFkb3cgPSBXVEZN
b3ZlKHNoYWRvd0RhdGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2hhZG93RGF0
YS0+c2V0TmV4dChXVEZNb3ZlKHJhcmVEYXRhLT5tX2JveFNoYWRvdykpOwotICAgIHJhcmVEYXRh
LT5tX2JveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CisgICAgc2hhZG93RGF0YS0+c2V0
TmV4dChXVEZNb3ZlKHJhcmVEYXRhLmJveFNoYWRvdykpOworICAgIHJhcmVEYXRhLmJveFNoYWRv
dyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CiB9CiAKIHN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkg
Y2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKIHsKLSAgICByZXR1cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAotICAgICAgICBMYXlvdXRT
aXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgp
KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCks
IHNpemUuaGVpZ2h0KCkpKSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3Jk
ZXIudG9wUmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVG
b3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKLSAg
ICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tTGVmdCgpLndpZHRo
KCksIHNpemUud2lkdGgoKSksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90
dG9tTGVmdCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSksCi0gICAgICAgIExheW91dFNpemUo
dmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgp
KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdo
dCgpLCBzaXplLmhlaWdodCgpKSkpOworICAgIHJldHVybiB7CisgICAgICAgIHNpemVGb3JMZW5n
dGhTaXplKGJvcmRlci50b3BMZWZ0KCksIHNpemUpLAorICAgICAgICBzaXplRm9yTGVuZ3RoU2l6
ZShib3JkZXIudG9wUmlnaHQoKSwgc2l6ZSksCisgICAgICAgIHNpemVGb3JMZW5ndGhTaXplKGJv
cmRlci5ib3R0b21MZWZ0KCksIHNpemUpLAorICAgICAgICBzaXplRm9yTGVuZ3RoU2l6ZShib3Jk
ZXIuYm90dG9tUmlnaHQoKSwgc2l6ZSkKKyAgICB9OwogfQogCi1TdHlsZUltYWdlKiBSZW5kZXJT
dHlsZTo6bGlzdFN0eWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
bGlzdFN0eWxlSW1hZ2UuZ2V0KCk7IH0KK1N0eWxlSW1hZ2UqIFJlbmRlclN0eWxlOjpsaXN0U3R5
bGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUlt
YWdlLmdldCgpOyB9CisKIHZvaWQgUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZUltYWdlKFJlZlB0
cjxTdHlsZUltYWdlPiYmIHYpCiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5
bGVJbWFnZSAhPSB2KQotICAgICAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bGlzdFN0
eWxlSW1hZ2UgPSBXVEZNb3ZlKHYpOworICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLT5saXN0
U3R5bGVJbWFnZSAhPSB2KQorICAgICAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmxp
c3RTdHlsZUltYWdlID0gV1RGTW92ZSh2KTsKIH0KIAogY29uc3QgQ29sb3ImIFJlbmRlclN0eWxl
Ojpjb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaGVyaXRlZC0+Y29sb3I7CisgICAgcmV0
dXJuIG1faW5oZXJpdGVkRGF0YS0+Y29sb3I7CiB9CiAKIGNvbnN0IENvbG9yJiBSZW5kZXJTdHls
ZTo6dmlzaXRlZExpbmtDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluaGVyaXRlZC0+dmlz
aXRlZExpbmtDb2xvcjsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0Nv
bG9yOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikKIHsK
LSAgICBTRVRfVkFSKGluaGVyaXRlZCwgY29sb3IsIHYpOworICAgIFNFVF9WQVIobV9pbmhlcml0
ZWREYXRhLCBjb2xvciwgdik7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5r
Q29sb3IoY29uc3QgQ29sb3ImIHYpCiB7Ci0gICAgU0VUX1ZBUihpbmhlcml0ZWQsIHZpc2l0ZWRM
aW5rQ29sb3IsIHYpOworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0Nv
bG9yLCB2KTsKK30KKworZmxvYXQgUmVuZGVyU3R5bGU6Omhvcml6b250YWxCb3JkZXJTcGFjaW5n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVy
U3BhY2luZzsKIH0KIAotZmxvYXQgUmVuZGVyU3R5bGU6Omhvcml6b250YWxCb3JkZXJTcGFjaW5n
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nOyB9
Ci1mbG9hdCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZzsgfQotdm9pZCBSZW5kZXJTdHls
ZTo6c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoZmxvYXQgdikgeyBTRVRfVkFSKGluaGVyaXRl
ZCwgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZywgdik7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2ZXJ0
aWNhbF9ib3JkZXJfc3BhY2luZywgdik7IH0KK2Zsb2F0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJv
cmRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPnZlcnRp
Y2FsQm9yZGVyU3BhY2luZzsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0SG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcoZmxvYXQgdikKK3sKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwgaG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcsIHYpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0
aWNhbEJvcmRlclNwYWNpbmcoZmxvYXQgdikKK3sKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0
YSwgdmVydGljYWxCb3JkZXJTcGFjaW5nLCB2KTsKK30KIAogUm91bmRlZFJlY3QgUmVuZGVyU3R5
bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBj
b25zdAogewogICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0KGJvcmRlclJlY3QpOwogICAgIGlm
IChoYXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkg
PSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVyUmVjdC5zaXplKCkpOworICAg
ICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3IobV9zdXJyb3VuZERh
dGEtPmJvcmRlciwgYm9yZGVyUmVjdC5zaXplKCkpOwogICAgICAgICByYWRpaS5zY2FsZShjYWxj
Qm9yZGVyUmFkaWlDb25zdHJhaW50U2NhbGVGb3IoYm9yZGVyUmVjdCwgcmFkaWkpKTsKICAgICAg
ICAgcm91bmRlZFJlY3QuaW5jbHVkZUxvZ2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwogICAgIH0KQEAgLTEyMzIsNDEgKzEyNDMsMzMgQEAgUm91bmRlZFJlY3QgUmVuZGVyU3R5
bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9v
bAogUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25z
dCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CiB7CiAgICAgYm9vbCBob3Jpem9udGFs
ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLQotICAgIExheW91dFVuaXQgbGVmdFdpZHRo
ID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyTGVmdFdp
ZHRoKCkgOiAwOwotICAgIExheW91dFVuaXQgcmlnaHRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBib3JkZXJSaWdodFdpZHRoKCkgOiAwOwotICAgIExh
eW91dFVuaXQgdG9wV2lkdGggPSAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
KSA/IGJvcmRlclRvcFdpZHRoKCkgOiAwOwotICAgIExheW91dFVuaXQgYm90dG9tV2lkdGggPSAo
aG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBib3JkZXJCb3R0b21XaWR0
aCgpIDogMDsKLQorICAgIGF1dG8gbGVmdFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyTGVmdFdpZHRoKCkgOiAwOworICAgIGF1dG8gcmlnaHRX
aWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBib3JkZXJS
aWdodFdpZHRoKCkgOiAwOworICAgIGF1dG8gdG9wV2lkdGggPSAoaG9yaXpvbnRhbCB8fCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlKSA/IGJvcmRlclRvcFdpZHRoKCkgOiAwOworICAgIGF1dG8gYm90
dG9tV2lkdGggPSAoaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgPyBib3Jk
ZXJCb3R0b21XaWR0aCgpIDogMDsKICAgICByZXR1cm4gZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGJvcmRlclJlY3QsIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiB9CiAK
IFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3Qg
TGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgTGF5b3V0VW5pdCB0b3BXaWR0aCwgTGF5b3V0VW5pdCBi
b3R0b21XaWR0aCwKICAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5pdCByaWdodFdp
ZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIGNvbnN0CiB7Ci0gICAgTGF5b3V0UmVjdCBpbm5lclJlY3QoYm9yZGVyUmVjdC54KCkg
KyBsZWZ0V2lkdGgsIAotICAgICAgICAgICAgICAgYm9yZGVyUmVjdC55KCkgKyB0b3BXaWR0aCwg
Ci0gICAgICAgICAgICAgICBib3JkZXJSZWN0LndpZHRoKCkgLSBsZWZ0V2lkdGggLSByaWdodFdp
ZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3QuaGVpZ2h0KCkgLSB0b3BXaWR0aCAtIGJv
dHRvbVdpZHRoKTsKLQotICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0KGlubmVyUmVjdCk7Ci0K
KyAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdCB7IHsgYm9yZGVyUmVjdC54KCkgKyBsZWZ0V2lk
dGgsIGJvcmRlclJlY3QueSgpICsgdG9wV2lkdGgsCisgICAgICAgIGJvcmRlclJlY3Qud2lkdGgo
KSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIGJvcmRlclJlY3QuaGVpZ2h0KCkgLSB0b3BXaWR0
aCAtIGJvdHRvbVdpZHRoIH0gfTsKICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAg
ICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJS
ZWN0KS5yYWRpaSgpOworICAgICAgICBhdXRvIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRlckZvcihi
b3JkZXJSZWN0KS5yYWRpaSgpOwogICAgICAgICByYWRpaS5zaHJpbmsodG9wV2lkdGgsIGJvdHRv
bVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNs
dWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQogICAgIHJl
dHVybiByb3VuZGVkUmVjdDsKIH0KIAotc3RhdGljIGJvb2wgYWxsTGF5ZXJzQXJlRml4ZWQoY29u
c3QgRmlsbExheWVyKiBsYXllcikKK3N0YXRpYyBib29sIGFsbExheWVyc0FyZUZpeGVkKGNvbnN0
IEZpbGxMYXllciYgbGF5ZXJzKQogewotICAgIGJvb2wgYWxsRml4ZWQgPSB0cnVlOwotICAgIAot
ICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcjsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgYWxsRml4ZWQgJj0gKGN1cnJM
YXllci0+aW1hZ2UoKSAmJiBjdXJyTGF5ZXItPmF0dGFjaG1lbnQoKSA9PSBGaXhlZEJhY2tncm91
bmRBdHRhY2htZW50KTsKLQotICAgIHJldHVybiBsYXllciAmJiBhbGxGaXhlZDsKKyAgICBmb3Ig
KGF1dG8qIGxheWVyID0gJmxheWVyczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgewor
ICAgICAgICBpZiAoIShsYXllci0+aW1hZ2UoKSAmJiBsYXllci0+YXR0YWNobWVudCgpID09IEZp
eGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzRW50aXJlbHlG
aXhlZEJhY2tncm91bmQoKSBjb25zdApAQCAtMTI3NiwxMiArMTI3OSwxMiBAQCBib29sIFJlbmRl
clN0eWxlOjpoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpIGNvbnN0CiAKIGNvbnN0IENvdW50
ZXJEaXJlY3RpdmVNYXAqIFJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJEaXJlY3RpdmVzLmdl
dCgpOworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZl
cy5nZXQoKTsKIH0KIAogQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0Nv
dW50ZXJEaXJlY3RpdmVzKCkKIHsKLSAgICBhdXRvJiBtYXAgPSByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9jb3VudGVyRGlyZWN0aXZlczsKKyAgICBhdXRvJiBtYXAgPSBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFw
KQogICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7
CiAgICAgcmV0dXJuICptYXA7CkBAIC0xMjk4LDcgKzEzMDEsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBjb25zdAogewogICAgIEFTU0VSVChoeXBo
ZW5zKCkgIT0gSHlwaGVuc05vbmUpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5h
dGlvblN0cmluZyA9IHJhcmVJbmhlcml0ZWREYXRhLmdldCgpLT5oeXBoZW5hdGlvblN0cmluZzsK
KyAgICBhdXRvJiBoeXBoZW5hdGlvblN0cmluZyA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uU3RyaW5nOwogICAgIGlmICghaHlwaGVuYXRpb25TdHJpbmcuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBoeXBoZW5hdGlvblN0cmluZzsKIApAQCAtMTM1MCw2ICsxMzUzLDcgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNv
bnN0CiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisKIGNvbnN0IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9u
cygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJl
Z2lvbj4+IGVtcHR5TGlzdDsKQEAgLTEzNjAsMzAgKzEzNjQsMjMgQEAgY29uc3QgVmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
Pj4gbm9uZUxpc3Q7CiAgICAgc3RhdGljIGJvb2wgbm9uZUxpc3RJbml0aWFsaXplZCA9IGZhbHNl
OwotCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7Ci0gICAgICAgIFN0eWxlRGFzaGJv
YXJkUmVnaW9uIHJlZ2lvbjsKLSAgICAgICAgcmVnaW9uLmxhYmVsID0gZW1wdHlTdHJpbmcoKTsK
LSAgICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSAgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9u
Lm9mZnNldC5yaWdodCgpID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9t
KCkgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5sZWZ0KCkgPSBMZW5ndGgoKTsK
LSAgICAgICAgcmVnaW9uLnR5cGUgPSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6Tm9uZTsKLSAgICAg
ICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKHJlZ2lvbik7CisgICAgICAgIG5vbmVMaXN0LmdldCgp
LmFwcGVuZChTdHlsZURhc2hib2FyZFJlZ2lvbiB7IGVtcHR5U3RyaW5nKCksIHsgfSwgU3R5bGVE
YXNoYm9hcmRSZWdpb246Ok5vbmUgfSk7CiAgICAgICAgIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gbm9uZUxpc3Q7CiB9CisKICNlbmRpZgogCiB2b2lkIFJl
bmRlclN0eWxlOjphZGp1c3RBbmltYXRpb25zKCkKIHsKLSAgICBBbmltYXRpb25MaXN0KiBhbmlt
YXRpb25MaXN0ID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsKKyAg
ICBhdXRvKiBhbmltYXRpb25MaXN0ID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9u
cy5nZXQoKTsKICAgICBpZiAoIWFuaW1hdGlvbkxpc3QpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEdldCByaWQgb2YgZW1wdHkgYW5pbWF0aW9ucyBhbmQgYW55dGhpbmcgYmV5b25kIHRoZW0K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbkxpc3QtPnNpemUoKTsgKytpKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBhbmltYXRpb25MaXN0LT5zaXplKCk7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKGFuaW1hdGlvbkxpc3QtPmFuaW1hdGlvbihpKS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbkxpc3QtPnJlc2l6ZShpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTQwMSwxMiArMTM5OCwxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjph
ZGp1c3RBbmltYXRpb25zKCkKIAogdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMo
KQogewotICAgIEFuaW1hdGlvbkxpc3QqIHRyYW5zaXRpb25MaXN0ID0gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNpdGlvbnMuZ2V0KCk7CisgICAgYXV0byogdHJhbnNpdGlvbkxpc3QgPSBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9ucy5nZXQoKTsKICAgICBpZiAoIXRyYW5z
aXRpb25MaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBHZXQgcmlkIG9mIGVtcHR5IHRy
YW5zaXRpb25zIGFuZCBhbnl0aGluZyBiZXlvbmQgdGhlbQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdHJhbnNpdGlvbkxpc3QtPnNpemUoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAg
ICAgIGlmICh0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgdHJhbnNpdGlvbkxpc3QtPnJlc2l6ZShpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTQyMSwxMCArMTQxOCwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygp
CiAgICAgLy8gUmVwZWF0IHBhdHRlcm5zIGludG8gbGF5ZXJzIHRoYXQgZG9uJ3QgaGF2ZSBzb21l
IHByb3BlcnRpZXMgc2V0LgogICAgIHRyYW5zaXRpb25MaXN0LT5maWxsVW5zZXRQcm9wZXJ0aWVz
KCk7CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBwcm9wZXJ0aWVz
LiBUaGlzIGlzIGFuIE8obl4yKSBhbGdvcml0aG0KLSAgICAvLyBidXQgdGhlIGxpc3RzIHRlbmQg
dG8gYmUgdmVyeSBzaG9ydCwgc28gaXQgaXMgcHJvYmFibHkgb2sKKyAgICAvLyBNYWtlIHN1cmUg
dGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgIC8vIFRoaXMgaXMgYW4gTyhu
XjIpIGFsZ29yaXRobSBidXQgdGhlIGxpc3RzIHRlbmQgdG8gYmUgc2hvcnQsIHNvIGl0IGlzIHBy
b2JhYmx5IE9LLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNpdGlvbkxpc3QtPnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSBpKzE7IGogPCB0cmFuc2l0aW9u
TGlzdC0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwg
dHJhbnNpdGlvbkxpc3QtPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBpZiAodHJhbnNpdGlv
bkxpc3QtPmFuaW1hdGlvbihpKS5wcm9wZXJ0eSgpID09IHRyYW5zaXRpb25MaXN0LT5hbmltYXRp
b24oaikucHJvcGVydHkoKSkgewogICAgICAgICAgICAgICAgIC8vIHRvc3MgaQogICAgICAgICAg
ICAgICAgIHRyYW5zaXRpb25MaXN0LT5yZW1vdmUoaSk7CkBAIC0xNDM2LDYyICsxNDMzLDEwNyBA
QCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiAKIEFuaW1hdGlvbkxpc3Qm
IFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIXJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlv
bkxpc3Q+KCk7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRpb25z
OworICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zKQor
ICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgcmV0dXJuICptX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6
ZW5zdXJlVHJhbnNpdGlvbnMoKQogewotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fdHJhbnNpdGlvbnMpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX3RyYW5zaXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOwot
ICAgIHJldHVybiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNpdGlvbnM7CisgICAgaWYg
KCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRpb25zKQorICAgICAgICBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dHJhbnNpdGlvbnM7CiB9CiAKIGNvbnN0IEFuaW1hdGlvbiogUmVuZGVyU3R5bGU6OnRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlm
ICh0cmFuc2l0aW9ucygpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNp
dGlvbnMoKS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiYgcCA9
IHRyYW5zaXRpb25zKCktPmFuaW1hdGlvbihpKTsKLSAgICAgICAgICAgIGlmIChwLmFuaW1hdGlv
bk1vZGUoKSA9PSBBbmltYXRpb246OkFuaW1hdGVBbGwgfHwgcC5wcm9wZXJ0eSgpID09IHByb3Bl
cnR5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZwOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgYXV0byogdHJhbnNpdGlvbnMgPSB0aGlzLT50cmFuc2l0aW9ucygpOworICAgIGlm
ICghdHJhbnNpdGlvbnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBzaXplID0gdHJhbnNpdGlvbnMtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBhdXRvJiBhbmltYXRpb24gPSB0cmFuc2l0aW9ucy0+YW5pbWF0aW9uKGkpOworICAgICAg
ICBpZiAoYW5pbWF0aW9uLmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb246OkFuaW1hdGVBbGwg
fHwgYW5pbWF0aW9uLnByb3BlcnR5KCkgPT0gcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm4g
JmFuaW1hdGlvbjsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLWNvbnN0IEZvbnRDYXNjYWRlJiBSZW5kZXJTdHlsZTo6Zm9udENhc2NhZGUoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlOyB9Ci1jb25zdCBGb250TWV0cmljcyYgUmVu
ZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250Q2Fz
Y2FkZS5mb250TWV0cmljcygpOyB9Ci1jb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5k
ZXJTdHlsZTo6Zm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250
Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKTsgfQotZmxvYXQgUmVuZGVyU3R5bGU6OnNwZWNpZmll
ZEZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6
ZSgpOyB9Ci1mbG9hdCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOyB9Ci1pbnQgUmVuZGVyU3R5bGU6
OmZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250Q2FzY2FkZS5waXhlbFNp
emUoKTsgfQorY29uc3QgRm9udENhc2NhZGUmIFJlbmRlclN0eWxlOjpmb250Q2FzY2FkZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGU7Cit9CiAKLWNv
bnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPndvcmRTcGFjaW5nOyB9Ci1mbG9hdCBSZW5kZXJTdHlsZTo6bGV0dGVy
U3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUubGV0dGVyU3Bh
Y2luZygpOyB9Citjb25zdCBGb250TWV0cmljcyYgUmVuZGVyU3R5bGU6OmZvbnRNZXRyaWNzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250TWV0
cmljcygpOworfQogCi1ib29sIFJlbmRlclN0eWxlOjpzZXRGb250RGVzY3JpcHRpb24oY29uc3Qg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgdikKK2NvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IFJlbmRlclN0eWxlOjpmb250RGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIGlmIChpbmhlcml0
ZWQtPmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpICE9IHYpIHsKLSAgICAgICAgaW5oZXJp
dGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZSA9IEZvbnRDYXNjYWRlKHYsIGluaGVyaXRlZC0+Zm9u
dENhc2NhZGUubGV0dGVyU3BhY2luZygpLCBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLndvcmRTcGFj
aW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigp
OworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkRm9udFNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Cit9CisKK2Zsb2F0
IFJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Cit9CisKK2ludCBSZW5kZXJTdHlsZTo6Zm9u
dFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRl
LnBpeGVsU2l6ZSgpOworfQorCitjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjp3b3JkU3BhY2lu
ZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPndvcmRTcGFjaW5n
OworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6bGV0dGVyU3BhY2luZygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUubGV0dGVyU3BhY2luZygpOwogfQog
Citib29sIFJlbmRlclN0eWxlOjpzZXRGb250RGVzY3JpcHRpb24oY29uc3QgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+Zm9u
dENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkgPT0gZGVzY3JpcHRpb24pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvJiBjYXNjYWRlID0gbV9pbmhlcml0ZWREYXRhLmFjY2VzcygpLmZv
bnRDYXNjYWRlOworICAgIGNhc2NhZGUgPSB7IGRlc2NyaXB0aW9uLCBjYXNjYWRlLmxldHRlclNw
YWNpbmcoKSwgY2FzY2FkZS53b3JkU3BhY2luZygpIH07CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdAor
ewogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxl
OjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5zcGVjaWZp
ZWRMaW5lSGVpZ2h0OyB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0
KExlbmd0aCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBzcGVjaWZpZWRMaW5lSGVpZ2h0LCB2KTsg
fQorICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQ7CiAjZWxz
ZQotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7IH0KKyAgICByZXR1cm4gbV9pbmhlcml0
ZWREYXRhLT5saW5lSGVpZ2h0OwogI2VuZGlmCit9CiAKLUxlbmd0aCBSZW5kZXJTdHlsZTo6bGlu
ZUhlaWdodCgpIGNvbnN0CisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKwordm9pZCBSZW5k
ZXJTdHlsZTo6c2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGgmJiBoZWlnaHQpCiB7Ci0gICAg
cmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERh
dGEsIHNwZWNpZmllZExpbmVIZWlnaHQsIFdURk1vdmUoaGVpZ2h0KSk7Cit9CisKKyNlbmRpZgor
Citjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpsaW5lSGVpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5saW5lSGVpZ2h0OworfQorCit2b2lkIFJlbmRlclN0eWxl
OjpzZXRMaW5lSGVpZ2h0KExlbmd0aCYmIGhlaWdodCkKK3sKKyAgICBTRVRfVkFSKG1faW5oZXJp
dGVkRGF0YSwgbGluZUhlaWdodCwgV1RGTW92ZShoZWlnaHQpKTsKIH0KLXZvaWQgUmVuZGVyU3R5
bGU6OnNldExpbmVIZWlnaHQoTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQpIHsgU0VUX1ZBUihp
bmhlcml0ZWQsIGxpbmVfaGVpZ2h0LCBzcGVjaWZpZWRMaW5lSGVpZ2h0KTsgfQogCiBpbnQgUmVu
ZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCgpIGNvbnN0CiB7CkBAIC0xNTA3LDcgKzE1NDks
NyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCgpIGNvbnN0CiAgICAgcmV0
dXJuIGNsYW1wVG88aW50PihsaC52YWx1ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0
V29yZFNwYWNpbmcoTGVuZ3RoIHZhbHVlKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNp
bmcoTGVuZ3RoJiYgdmFsdWUpCiB7CiAgICAgZmxvYXQgZm9udFdvcmRTcGFjaW5nOwogICAgIHN3
aXRjaCAodmFsdWUudHlwZSgpKSB7CkBAIC0xNTI4LDExICsxNTcwLDExIEBAIHZvaWQgUmVuZGVy
U3R5bGU6OnNldFdvcmRTcGFjaW5nKExlbmd0aCB2YWx1ZSkKICAgICAgICAgZm9udFdvcmRTcGFj
aW5nID0gMDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+
Zm9udENhc2NhZGUuc2V0V29yZFNwYWNpbmcoZm9udFdvcmRTcGFjaW5nKTsKLSAgICByYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+d29yZFNwYWNpbmcgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICBt
X2luaGVyaXRlZERhdGEuYWNjZXNzKCkuZm9udENhc2NhZGUuc2V0V29yZFNwYWNpbmcoZm9udFdv
cmRTcGFjaW5nKTsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLndvcmRTcGFjaW5n
ID0gV1RGTW92ZSh2YWx1ZSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNp
bmcoZmxvYXQgdikgeyBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRDYXNjYWRlLnNldExldHRlclNw
YWNpbmcodik7IH0KK3ZvaWQgUmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNpbmcoZmxvYXQgdikg
eyBtX2luaGVyaXRlZERhdGEuYWNjZXNzKCkuZm9udENhc2NhZGUuc2V0TGV0dGVyU3BhY2luZyh2
KTsgfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250U2l6ZShmbG9hdCBzaXplKQogewpAQCAt
MTU2Niw3ICsxNjA4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFZhcmlhdGlvblNldHRp
bmdzKEZvbnRWYXJpYXRpb25TZXR0aW5ncyBzZXR0aW5ncykKIH0KICNlbmRpZgogCi12b2lkIFJl
bmRlclN0eWxlOjpnZXRTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlv
dXRVbml0ICZ0b3AsIExheW91dFVuaXQgJnJpZ2h0LCBMYXlvdXRVbml0ICZib3R0b20sIExheW91
dFVuaXQgJmxlZnQpIGNvbnN0Cit2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dFeHRlbnQoY29u
c3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0
LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0CiB7CiAgICAgdG9w
ID0gMDsKICAgICByaWdodCA9IDA7CkBAIC0xODEwLDUzICsxODUyLDUzIEBAIGZsb2F0IFJlbmRl
clN0eWxlOjpib3JkZXJFbmRXaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiBib3JkZXJUb3BXaWR0aCgpOwogfQog
Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5TdGFydChMZW5ndGggbWFyZ2luKQordm9pZCBS
ZW5kZXJTdHlsZTo6c2V0TWFyZ2luU3RhcnQoTGVuZ3RoJiYgbWFyZ2luKQogewogICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXRNYXJnaW5MZWZ0KG1hcmdpbik7CisgICAgICAgICAg
ICBzZXRNYXJnaW5MZWZ0KFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5SaWdodChX
VEZNb3ZlKG1hcmdpbikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXRNYXJnaW5Ub3AobWFyZ2luKTsKKyAgICAgICAg
ICAgIHNldE1hcmdpblRvcChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXRNYXJnaW5Cb3R0b20obWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpbkJvdHRv
bShXVEZNb3ZlKG1hcmdpbikpOwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFy
Z2luRW5kKExlbmd0aCBtYXJnaW4pCit2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5FbmQoTGVu
Z3RoJiYgbWFyZ2luKQogewogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAg
ICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXRNYXJn
aW5SaWdodChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQoV1RGTW92ZShtYXJn
aW4pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luTGVmdChtYXJnaW4pOwor
ICAgICAgICAgICAgc2V0TWFyZ2luTGVmdChXVEZNb3ZlKG1hcmdpbikpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICBzZXRN
YXJnaW5Cb3R0b20obWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShXVEZNb3Zl
KG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRNYXJnaW5Ub3AobWFyZ2lu
KTsKKyAgICAgICAgICAgIHNldE1hcmdpblRvcChXVEZNb3ZlKG1hcmdpbikpOwogICAgIH0KIH0K
IAogVGV4dEVtcGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFyaygpIGNvbnN0
CiB7Ci0gICAgVGV4dEVtcGhhc2lzTWFyayBtYXJrID0gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lz
TWFyaz4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01hcmspOworICAgIGF1dG8gbWFy
ayA9IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc01hcms+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc01hcmspOwogICAgIGlmIChtYXJrICE9IFRleHRFbXBoYXNpc01hcmtBdXRvKQog
ICAgICAgICByZXR1cm4gbWFyazsKLQogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
KQogICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya0RvdDsKLQogICAgIHJldHVybiBUZXh0
RW1waGFzaXNNYXJrU2VzYW1lOwogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogQ29s
b3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpCiB7CiAgICAgcmV0dXJu
IFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpOwogfQorCiAjZW5kaWYKIAogTGF5b3V0
Qm94RXh0ZW50IFJlbmRlclN0eWxlOjppbWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1hZ2Um
IGltYWdlKSBjb25zdApAQCAtMTg4OSwzMCArMTkzMSwzMCBAQCBzdGQ6OnBhaXI8Rm9udE9yaWVu
dGF0aW9uLCBOb25DSktHbHlwaE9yaWVudGF0aW9uPiBSZW5kZXJTdHlsZTo6Zm9udEFuZEdseXBo
T3JpZQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNvdXJjZShSZWZQdHI8U3R5
bGVJbWFnZT4mJiBpbWFnZSkKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLmlt
YWdlKCkgPT0gaW1hZ2UuZ2V0KCkpCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5ib3JkZXIubV9p
bWFnZS5pbWFnZSgpID09IGltYWdlLmdldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgc3Vycm91
bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldEltYWdlKFdURk1vdmUoaW1hZ2UpKTsKKyAg
ICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZShXVEZNb3Zl
KGltYWdlKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU2xpY2VzKExl
bmd0aEJveCBzbGljZXMpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNsaWNlcyhM
ZW5ndGhCb3gmJiBzbGljZXMpCiB7Ci0gICAgaWYgKHN1cnJvdW5kLT5ib3JkZXIubV9pbWFnZS5p
bWFnZVNsaWNlcygpID09IHNsaWNlcykKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5t
X2ltYWdlLmltYWdlU2xpY2VzKCkgPT0gc2xpY2VzKQogICAgICAgICByZXR1cm47Ci0gICAgc3Vy
cm91bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldEltYWdlU2xpY2VzKHNsaWNlcyk7Cisg
ICAgbV9zdXJyb3VuZERhdGEuYWNjZXNzKCkuYm9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2VTbGljZXMo
V1RGTW92ZShzbGljZXMpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VX
aWR0aChMZW5ndGhCb3ggc2xpY2VzKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VX
aWR0aChMZW5ndGhCb3gmJiBzbGljZXMpCiB7Ci0gICAgaWYgKHN1cnJvdW5kLT5ib3JkZXIubV9p
bWFnZS5ib3JkZXJTbGljZXMoKSA9PSBzbGljZXMpCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5i
b3JkZXIubV9pbWFnZS5ib3JkZXJTbGljZXMoKSA9PSBzbGljZXMpCiAgICAgICAgIHJldHVybjsK
LSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0Qm9yZGVyU2xpY2VzKHNs
aWNlcyk7CisgICAgbV9zdXJyb3VuZERhdGEuYWNjZXNzKCkuYm9yZGVyLm1faW1hZ2Uuc2V0Qm9y
ZGVyU2xpY2VzKFdURk1vdmUoc2xpY2VzKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEJv
cmRlckltYWdlT3V0c2V0KExlbmd0aEJveCBvdXRzZXQpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRC
b3JkZXJJbWFnZU91dHNldChMZW5ndGhCb3gmJiBvdXRzZXQpCiB7Ci0gICAgaWYgKHN1cnJvdW5k
LT5ib3JkZXIubV9pbWFnZS5vdXRzZXQoKSA9PSBvdXRzZXQpCisgICAgaWYgKG1fc3Vycm91bmRE
YXRhLT5ib3JkZXIubV9pbWFnZS5vdXRzZXQoKSA9PSBvdXRzZXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0T3V0c2V0KG91dHNldCk7
CisgICAgbV9zdXJyb3VuZERhdGEuYWNjZXNzKCkuYm9yZGVyLm1faW1hZ2Uuc2V0T3V0c2V0KFdU
Rk1vdmUob3V0c2V0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbHVtblN0eWxlc0Zy
b21QYWdpbmF0aW9uTW9kZShjb25zdCBQYWdpbmF0aW9uOjpNb2RlJiBwYWdpbmF0aW9uTW9kZSkK
QEAgLTE5NTgsNiArMjAwMCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbHVtblN0eWxlc0Zy
b21QYWdpbmF0aW9uTW9kZShjb25zdCBQYWdpbmF0aW9uOjpNb2RlJiBwYWdpCiB9CiAKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorCiBTY3JvbGxTbmFwVHlwZSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFNjcm9sbFNuYXBUeXBlKCkKIHsKICAgICByZXR1cm4geyB9OwpAQCAtMTk3MCwyMiArMjAx
MywyMiBAQCBTY3JvbGxTbmFwQWxpZ24gUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwQWxp
Z24oKQogCiBjb25zdCBTdHlsZVNjcm9sbFNuYXBBcmVhJiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25h
cEFyZWEoKSBjb25zdAogewotICAgIHJldHVybiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Ny
b2xsU25hcEFyZWE7CisgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxT
bmFwQXJlYTsKIH0KIAogY29uc3QgU3R5bGVTY3JvbGxTbmFwUG9ydCYgUmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBQb3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3Njcm9sbFNuYXBQb3J0OworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
c2Nyb2xsU25hcFBvcnQ7CiB9CiAKIGNvbnN0IFNjcm9sbFNuYXBUeXBlJiBSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcFR5cGUoKSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9zY3JvbGxTbmFwUG9ydC0+dHlwZTsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+c2Nyb2xsU25hcFBvcnQtPnR5cGU7CiB9CiAKIGNvbnN0IExlbmd0aEJveCYgUmVuZGVy
U3R5bGU6OnNjcm9sbFBhZGRpbmcoKSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9zY3JvbGxTbmFwUG9ydC0+c2Nyb2xsUGFkZGluZzsKKyAgICByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcFBvcnQtPnNjcm9sbFBhZGRpbmc7CiB9CiAK
IGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdUb3AoKSBjb25zdApAQCAt
MjAxMCwxMiArMjA1MywxMiBAQCBjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxQYWRk
aW5nUmlnaHQoKSBjb25zdAogCiBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIFJlbmRlclN0eWxlOjpz
Y3JvbGxTbmFwQWxpZ24oKSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9zY3JvbGxTbmFwQXJlYS0+YWxpZ25tZW50OworICAgIHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5zY3JvbGxTbmFwQXJlYS0+YWxpZ25tZW50OwogfQogCiBjb25zdCBMZW5ndGhC
b3gmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwTWFyZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcEFyZWEtPnNjcm9sbFNuYXBNYXJnaW47
CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5zY3Jv
bGxTbmFwTWFyZ2luOwogfQogCiBjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFw
TWFyZ2luVG9wKCkgY29uc3QKQEAgLTIwNDAsNzkgKzIwODMsNzQgQEAgY29uc3QgTGVuZ3RoJiBS
ZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpblJpZ2h0KCkgY29uc3QKIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5cGUmIHR5cGUpCiB7Ci0g
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNz
KCktPnR5cGUgPSB0eXBlOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHNjcm9sbFNuYXBQb3J0LCB0eXBlLCB0eXBlKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsUGFkZGluZ1RvcChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldFNjcm9sbFBhZGRpbmdUb3AoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT5zY3JvbGxQ
YWRkaW5nLnNldFRvcChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5nLnRvcCgpLCBXVEZNb3ZlKGxl
bmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nQm90dG9tKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0Jv
dHRvbShMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0Qm90dG9tKGxl
bmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xs
U25hcFBvcnQsIHNjcm9sbFBhZGRpbmcuYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0xlZnQoTGVuZ3RoJiYgbGVu
Z3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQ
b3J0LmFjY2VzcygpLT5zY3JvbGxQYWRkaW5nLnNldExlZnQobGVuZ3RoKTsKKyAgICBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFk
ZGluZy5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNjcm9sbFBhZGRpbmdSaWdodChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9s
bFBhZGRpbmcuc2V0UmlnaHQobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy5yaWdodCgpLCBXVEZN
b3ZlKGxlbmd0aCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwQWxpZ24o
Y29uc3QgU2Nyb2xsU25hcEFsaWduJiBhbGlnbm1lbnQpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPmFsaWdubWVudCA9IGFs
aWdubWVudDsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3Jv
bGxTbmFwQXJlYSwgYWxpZ25tZW50LCBhbGlnbm1lbnQpOwogfQogCi12b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCkt
PnNjcm9sbFNuYXBNYXJnaW4uc2V0VG9wKGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4udG9w
KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBNYXJnaW5Cb3R0b20oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxTbmFwTWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Nyb2xs
U25hcE1hcmdpbi5zZXRCb3R0b20obGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi5ib3R0b20o
KSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25h
cE1hcmdpbkxlZnQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxTbmFwTWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPnNjcm9sbFNuYXBN
YXJnaW4uc2V0TGVmdChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFwTWFyZ2luLmxlZnQoKSwgV1RGTW92
ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpblJp
Z2h0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25h
cE1hcmdpblJpZ2h0KExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5z
ZXRSaWdodChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFwTWFyZ2luLnJpZ2h0KCksIFdURk1vdmUobGVu
Z3RoKSk7CiB9CisKICNlbmRpZgogCiBib29sIFJlbmRlclN0eWxlOjpoYXNSZWZlcmVuY2VGaWx0
ZXJPbmx5KCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0ZpbHRlcigpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zID0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJhdGlvbnM7Ci0gICAgaWYgKGZp
bHRlck9wZXJhdGlvbnMuc2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uID0gKmZpbHRlck9wZXJhdGlv
bnMuYXQoMCk7Ci0gICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVl
OworICAgIGF1dG8mIGZpbHRlck9wZXJhdGlvbnMgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5m
aWx0ZXItPm9wZXJhdGlvbnM7CisgICAgcmV0dXJuIGZpbHRlck9wZXJhdGlvbnMuc2l6ZSgpID09
IDEgJiYgZmlsdGVyT3BlcmF0aW9ucy5hdCgwKS0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6
UkVGRVJFTkNFOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpjaGVja1ZhcmlhYmxlc0luQ3VzdG9t
UHJvcGVydGllcygpCiB7Ci0gICAgaWYgKCFyYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9w
ZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcygpKQorICAgIGlmICghbV9yYXJlSW5oZXJpdGVkRGF0
YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFpbnNWYXJpYWJsZXMpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKworICAgIGF1dG8mIGN1c3RvbVByb3BlcnR5RGF0YSA9IG1fcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKTsKKwogICAgIC8vIE91ciBmaXJz
dCBwYXNzIGNoZWNrcyB0aGUgdmFyaWFibGVzIGZvciB2YWxpZGl0eSBhbmQgcmVwbGFjZXMgYW55
IHByb3BlcnRpZXMgdGhhdCBiZWNhbWUKICAgICAvLyBpbnZhbGlkIHdpdGggZW1wdHkgdmFsdWVz
LgotICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT52YWx1ZXMoKTsKKyAgICBhdXRvJiBjdXN0
b21Qcm9wZXJ0aWVzID0gY3VzdG9tUHJvcGVydHlEYXRhLnZhbHVlczsKICAgICBIYXNoU2V0PEF0
b21pY1N0cmluZz4gaW52YWxpZFByb3BlcnRpZXM7CiAgICAgZm9yIChhdXRvIGVudHJ5IDogY3Vz
dG9tUHJvcGVydGllcykgewogICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWluc1Zhcmlh
YmxlcygpKQpAQCAtMjE0MiwyNSArMjE4MCwyNSBAQCB2b2lkIFJlbmRlclN0eWxlOjpjaGVja1Zh
cmlhYmxlc0luQ3VzdG9tUHJvcGVydGllcygpCiAgICAgZm9yIChhdXRvJiByZXNvbHZlZFZhbHVl
IDogcmVzb2x2ZWRWYWx1ZXMpCiAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHJlc29sdmVk
VmFsdWUtPm5hbWUoKSwgcmVzb2x2ZWRWYWx1ZS5jb3B5UmVmKCkpOwogCi0gICAgcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q29udGFp
bnNWYXJpYWJsZXMoZmFsc2UpOworICAgIGN1c3RvbVByb3BlcnR5RGF0YS5jb250YWluc1Zhcmlh
YmxlcyA9IGZhbHNlOwogfQogCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRoKCkgY29u
c3QKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuc3R5bGUoKSA9PSBCTk9ORSkK
KyAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5zdHlsZSgpID09IEJOT05FKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAob3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1heChtX2JhY2tncm91bmQtPm91dGxpbmUoKS53aWR0aCgpLCBSZW5kZXJUaGVt
ZTo6cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpKTsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kLT5v
dXRsaW5lKCkud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1fYmFja2dyb3VuZERh
dGEtPm91dGxpbmUud2lkdGgoKSwgUmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nV2lkdGgo
KSk7CisgICAgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUud2lkdGgoKTsKIH0KIAog
ZmxvYXQgUmVuZGVyU3R5bGU6Om91dGxpbmVPZmZzZXQoKSBjb25zdAogewotICAgIGlmIChtX2Jh
Y2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgpID09IEJOT05FKQorICAgIGlmIChtX2JhY2tncm91
bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmIChvdXRsaW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIChtX2JhY2tncm91bmQt
Pm91dGxpbmUoKS5vZmZzZXQoKSArIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ09mZnNl
dChvdXRsaW5lV2lkdGgoKSkpOwotICAgIHJldHVybiBtX2JhY2tncm91bmQtPm91dGxpbmUoKS5v
ZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLm9mZnNl
dCgpICsgUmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nT2Zmc2V0KG91dGxpbmVXaWR0aCgp
KSk7CisgICAgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUub2Zmc2V0KCk7CiB9CiAK
IGJvb2wgUmVuZGVyU3R5bGU6OnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxl
ZnQoKSBjb25zdApAQCAtMjE2OCw0ICsyMjA2LDE1IEBAIGJvb2wgUmVuZGVyU3R5bGU6OnNob3Vs
ZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdAogICAgIHJldHVybiAh
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiB9
CiAKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dERhc2hib2FyZFJlZ2lvbihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoJiYg
dG9wLCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0LCBib29s
IGFwcGVuZCkKK3sKKyAgICBpZiAoIWFwcGVuZCkKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5kYXNoYm9hcmRSZWdpb25zLmNsZWFyKCk7CisgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5kYXNoYm9hcmRSZWdpb25zLmFwcGVuZCh7IGxhYmVsLCB7IFdU
Rk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0
KSB9LCB0eXBlIH0pOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBjMjhhZjFh
ZTA0NjBmMmYzYzcyOGE4NjBlOWY5MDI5ZjY0YWMwMDZkLi45OWMxNTQ3YjM4MjRmM2ZhYTU0NWU2
MGVhMzFmZjI3NDRkODFhYjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBE
ZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTgyLDE5ICs4
MiwyMCBAQAogI2luY2x1ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25z
dCBUJiB0LCBjb25zdCBVJiB1KSB7IHJldHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0IFQmPih1
KTsgfQotCi0jZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgXAotICAgIGlm
ICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZSwgdmFsdWUpKSBcCi0gICAgICAgIGdyb3Vw
LmFjY2VzcygpLT52YXJpYWJsZSA9IHZhbHVlCisjZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlh
YmxlLCB2YWx1ZSkgZG8geyBcCisgICAgICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJp
YWJsZSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52YXJpYWJsZSA9IHZh
bHVlOyBcCisgICAgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBTRVRfTkVTVEVEX1ZBUihncm91cCwg
cGFyZW50VmFyaWFibGUsIHZhcmlhYmxlLCB2YWx1ZSkgXAotICAgIGlmICghY29tcGFyZUVxdWFs
KGdyb3VwLT5wYXJlbnRWYXJpYWJsZS0+dmFyaWFibGUsIHZhbHVlKSkgXAotICAgICAgICBncm91
cC5hY2Nlc3MoKS0+cGFyZW50VmFyaWFibGUuYWNjZXNzKCktPnZhcmlhYmxlID0gdmFsdWUKKyNk
ZWZpbmUgU0VUX05FU1RFRF9WQVIoZ3JvdXAsIHBhcmVudFZhcmlhYmxlLCB2YXJpYWJsZSwgdmFs
dWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+cGFyZW50VmFyaWFi
bGUtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKKyAgICAgICAgICAgIGdyb3VwLmFjY2VzcygpLnBhcmVu
dFZhcmlhYmxlLmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKKyAgICB9IHdoaWxlICgwKQog
Ci0jZGVmaW5lIFNFVF9CT1JERVJWQUxVRV9DT0xPUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBc
Ci0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLmNvbG9yKCksIHZhbHVlKSkg
XAotICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFyaWFibGUuc2V0Q29sb3IodmFsdWUpCisjZGVm
aW5lIFNFVF9CT1JERVJWQUxVRV9DT0xPUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwK
KyAgICAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLmNvbG9yKCksIHZhbHVl
KSkgXAorICAgICAgICAgICAgZ3JvdXAuYWNjZXNzKCkudmFyaWFibGUuc2V0Q29sb3IodmFsdWUp
OyBcCisgICAgfSB3aGlsZSAoMCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTEsMzg2
ICsxMTIsMzUgQEAgY2xhc3MgU2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBT
dHlsZUluaGVyaXRlZERhdGE7CiBjbGFzcyBTdHlsZVJlc29sdmVyOworY2xhc3MgU3R5bGVTY3Jv
bGxTbmFwQXJlYTsKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7CiBjbGFzcyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1jbGFzcyBTdHlsZVNj
cm9sbFNuYXBQb3J0OwotY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKLXN0cnVjdCBTY3JvbGxT
bmFwVHlwZTsKIHN0cnVjdCBTY3JvbGxTbmFwQWxpZ247Ci0jZW5kaWYKK3N0cnVjdCBTY3JvbGxT
bmFwVHlwZTsKIAotdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
ND4gUHNldWRvU3R5bGVDYWNoZTsKK3VzaW5nIFBzZXVkb1N0eWxlQ2FjaGUgPSBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgND47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25zdCBUJiB0LCBjb25zdCBVJiB1
KSB7IHJldHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0IFQmPih1KTsgfQogCiBjbGFzcyBSZW5k
ZXJTdHlsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgCi0gICAgZnJpZW5k
IGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDsgLy8gVXNlZCBieSBDU1MgYW5p
bWF0aW9ucy4gV2UgY2FuJ3QgYWxsb3cgdGhlbSB0byBhbmltYXRlIGJhc2VkIG9mZiB2aXNpdGVk
IGNvbG9ycy4KLSAgICBmcmllbmQgY2xhc3MgQXBwbHlTdHlsZUNvbW1hbmQ7IC8vIEVkaXRpbmcg
aGFzIHRvIG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBpbmZvLgotICAgIGZyaWVuZCBjbGFzcyBFZGl0
aW5nU3R5bGU7IC8vIEVkaXRpbmcgaGFzIHRvIG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBpbmZvLgot
ICAgIGZyaWVuZCBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOyAvLyBJZ25vcmVzIHZpc2l0
ZWQgc3R5bGVzLCBzbyBuZWVkcyB0byBiZSBhYmxlIHRvIHNlZSB1bnZpc2l0ZWQgaW5mby4KLSAg
ICBmcmllbmQgY2xhc3MgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I7IC8vIFVzZWQg
YnkgQ1NTIGFuaW1hdGlvbnMuIFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBiYXNlZCBv
ZmYgdmlzaXRlZCBjb2xvcnMuCi0gICAgZnJpZW5kIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOyAv
LyBGSVhNRTogTmVlZHMgdG8gYWx0ZXIgdGhlIHZpc2l0ZWQgc3RhdGUgYnkgaGFuZC4gU2hvdWxk
IGNsZWFuIHRoZSBTVkcgY29kZSB1cCBhbmQgbW92ZSBpdCBpbnRvIFJlbmRlclN0eWxlIHBlcmhh
cHMuCi0gICAgZnJpZW5kIGNsYXNzIFJlbmRlclRyZWVBc1RleHQ7IC8vIEZJWE1FOiBPbmx5IG5l
ZWRlZCBzbyB0aGUgcmVuZGVyIHRyZWUgY2FuIGtlZXAgbHlpbmcgYW5kIGR1bXAgdGhlIHdyb25n
IGNvbG9ycy4gIFJlYmFzZWxpbmluZyB3b3VsZCBhbGxvdyB0aGlzIHRvIGJlIHlhbmtlZC4KLSAg
ICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOyAvLyBTZXRzIG1lbWJlcnMgZGly
ZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlckN1c3RvbTsgLy8gU2V0cyBtZW1i
ZXJzIGRpcmVjdGx5LgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJGdW5jdGlvbnM7IC8v
IFNldHMgbWVtYmVycyBkaXJlY3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVSZXNvbHZlcjsg
Ly8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgotCi1wdWJsaWM6Ci0gICAgc3RydWN0IE5vbkluaGVy
aXRlZEZsYWdzIHsKLSAgICAgICAgTm9uSW5oZXJpdGVkRmxhZ3MoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgc2hvdWxkIGFsbCBiZSB6ZXJvLgotICAgICAg
ICAgICAgQVNTRVJUKCFpbml0aWFsT3ZlcmZsb3dYKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFp
bml0aWFsT3ZlcmZsb3dZKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsQ2xlYXIoKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxEaXNwbGF5KCkpOwotICAgICAgICAgICAgQVNT
RVJUKCFpbml0aWFsVW5pY29kZUJpZGkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxQ
b3NpdGlvbigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxGbG9hdGluZygpKTsKLSAgICAgICAgICAgIEFT
U0VSVCghaW5pdGlhbFRhYmxlTGF5b3V0KCkpOwotCi0gICAgICAgICAgICBtX2ZsYWdzID0gMDsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRG
bGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2ZsYWdz
ID09IG90aGVyLm1fZmxhZ3M7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQotCi0gICAgICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9u
SW5oZXJpdGVkRmxhZ3MmIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPbmx5IGEg
c3Vic2V0IGlzIGNvcGllZCBiZWNhdXNlIE5vbkluaGVyaXRlZEZsYWdzIGNvbnRhaW5zIGEgYnVu
Y2ggb2Ygc3R1ZmYgb3RoZXIgdGhhbiByZWFsIHN0eWxlIGRhdGEuCi0gICAgICAgICAgICB1aW50
NjRfdCBub25Jbmhlcml0ZWRNYXNrID0gb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WE9mZnNldAot
ICAgICAgICAgICAgICAgIHwgb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WU9mZnNldAotICAgICAg
ICAgICAgICAgIHwgY2xlYXJNYXNrIDw8IGNsZWFyT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBk
aXNwbGF5TWFzayA8PCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBw
b3NpdGlvbk1hc2sgPDwgcG9zaXRpb25PZmZzZXQKLSAgICAgICAgICAgICAgICB8IGRpc3BsYXlN
YXNrIDw8IG9yaWdpbmFsRGlzcGxheU9mZnNldAotICAgICAgICAgICAgICAgIHwgdW5pY29kZUJp
ZGlNYXNrIDw8IHVuaWNvZGVCaWRpT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCB2ZXJ0aWNhbEFs
aWduTWFzayA8PCB2ZXJ0aWNhbEFsaWduT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBmbG9hdGlu
Z01hc2sgPDwgZmxvYXRpbmdPZmZzZXQKLSAgICAgICAgICAgICAgICB8IG9uZUJpdE1hc2sgPDwg
ZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldAotICAgICAgICAgICAgICAgIHwgdGFibGVMYXlvdXRC
aXRNYXNrIDw8IHRhYmxlTGF5b3V0T2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBoYXNWaWV3cG9y
dFVuaXRzQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0OwotCi0gICAgICAgICAgICBt
X2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9uSW5oZXJpdGVkTWFzaykgfCAob3RoZXIubV9mbGFncyAm
IG5vbkluaGVyaXRlZE1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgRU92ZXJmbG93IG92ZXJm
bG93WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3Zl
cmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE92ZXJmbG93
WChFT3ZlcmZsb3cgb3ZlcmZsb3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WCwgb3ZlcmZsb3dN
YXNrLCBvdmVyZmxvd1hPZmZzZXQpOyB9Ci0KLSAgICAgICAgRU92ZXJmbG93IG92ZXJmbG93WSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3ZlcmZsb3dN
YXNrLCBvdmVyZmxvd1lPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE92ZXJmbG93WShFT3Zl
cmZsb3cgb3ZlcmZsb3dZKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3ZlcmZsb3dNYXNrLCBv
dmVyZmxvd1lPZmZzZXQpOyB9Ci0KLSAgICAgICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNsZWFyT2Zmc2V0KSk7
IH0KLSAgICAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBkYXRlVmFsdWUoY2xl
YXIsIGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpOyB9Ci0KLSAgICAgICAgRURpc3BsYXkgZWZmZWN0
aXZlRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1
ZShkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQg
c2V0RWZmZWN0aXZlRGlzcGxheShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KSB7IHVwZGF0ZVZh
bHVlKGVmZmVjdGl2ZURpc3BsYXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0
KTsgfQotCi0gICAgICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVQb3NpdGlvbj4oZ2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCkp
OyB9Ci0gICAgICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0aW9uKSB7IHVwZGF0
ZVZhbHVlKHBvc2l0aW9uLCBwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KTsgfQotCi0gICAg
ICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KSk7
IH0KLSAgICAgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgb3JpZ2luYWxEaXNw
bGF5KSB7IHVwZGF0ZVZhbHVlKG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1hc2ssIG9yaWdpbmFs
RGlzcGxheU9mZnNldCk7IH0KLQotICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZhbHVlKHVuaWNvZGVC
aWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFVuaWNvZGVC
aWRpKEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1bmljb2RlQmlkaSwg
dW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGhh
c1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc1ZpZXdwb3J0VW5p
dHNPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHZhbHVl
KSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQpOyB9Ci0KLSAg
ICAgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVWZXJ0aWNhbEFsaWduPihnZXRWYWx1ZSh2ZXJ0aWNhbEFsaWduTWFzaywgdmVydGlj
YWxBbGlnbk9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGlj
YWxBbGlnbiB2ZXJ0aWNhbEFsaWduKSB7IHVwZGF0ZVZhbHVlKHZlcnRpY2FsQWxpZ24sIHZlcnRp
Y2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzRXhwbGlj
aXRseUluaGVyaXRlZFByb3BlcnRpZXMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVl
LCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNGbG9hdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZsb2F0aW5nKCkgIT0gTm9GbG9hdDsgfQotICAgICAgICBFRmxv
YXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxvYXQ+KGdldFZhbHVl
KGZsb2F0aW5nTWFzaywgZmxvYXRpbmdPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldEZsb2F0
aW5nKEVGbG9hdCBmbG9hdGluZykgeyB1cGRhdGVWYWx1ZShmbG9hdGluZywgZmxvYXRpbmdNYXNr
LCBmbG9hdGluZ09mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0
eWxlcygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgZ2V0VmFsdWUocHNl
dWRvQml0c01hc2ssIHBzZXVkb0JpdHNPZmZzZXQpOyB9Ci0gICAgICAgIGJvb2wgaGFzUHNldWRv
U3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA8IEZJUlNU
X0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICAgICAgICAgIHJldHVybiAob25lQml0TWFzayA8PCAo
cHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pKSAmIG1fZmxhZ3M7Ci0gICAgICAgIH0KLSAg
ICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgICAgICAgICBBU1NF
UlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOwotICAgICAgICAgICAgbV9mbGFn
cyB8PSBvbmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQgcHNldWRv
SWRTZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7Ci0gICAg
ICAgICAgICB1aW50NjRfdCByYXdQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0LmRhdGEoKTsKLSAg
ICAgICAgICAgIEFTU0VSVCgocmF3UHNldWRvSWRTZXQgJiBQVUJMSUNfUFNFVURPSURfTUFTSykg
PT0gcmF3UHNldWRvSWRTZXQpOwotICAgICAgICAgICAgc3RhdGljX2Fzc2VydChwc2V1ZG9CaXRz
T2Zmc2V0ID49IDEsICIocHNldWRvQml0c09mZnNldCAtIDEpIHNob3VsZCBiZSB2YWxpZC4iKTsK
LSAgICAgICAgICAgIG1fZmxhZ3MgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdQc2V1ZG9J
ZFNldCkgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBF
VGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGFi
bGVMYXlvdXQ+KGdldFZhbHVlKHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZzZXQp
KTsgfQotICAgICAgICB2b2lkIHNldFRhYmxlTGF5b3V0KEVUYWJsZUxheW91dCB0YWJsZUxheW91
dCkgeyB1cGRhdGVWYWx1ZSh0YWJsZUxheW91dCwgdGFibGVMYXlvdXRCaXRNYXNrLCB0YWJsZUxh
eW91dE9mZnNldCk7IH0KLQotICAgICAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4oZ2V0VmFsdWUoc3R5bGVUeXBlTWFzaywgc3R5bGVU
eXBlT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVU
eXBlKSB7IHVwZGF0ZVZhbHVlKHN0eWxlVHlwZSwgc3R5bGVUeXBlTWFzaywgc3R5bGVUeXBlT2Zm
c2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBnZXRCb29s
ZWFuKGlzVW5pcXVlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldElzVW5pcXVlKCkgeyB1cGRh
dGVCb29sZWFuKHRydWUsIGlzVW5pcXVlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgZW1wdHlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZW1wdHlTdGF0ZU9mZnNldCk7ICB9Ci0g
ICAgICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFs
dWUsIGVtcHR5U3RhdGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUo
KSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9Ci0g
ICAgICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVh
bih2YWx1ZSwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgbGFzdENo
aWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGxhc3RDaGlsZFN0YXRlT2Zmc2V0
KTsgIH0KLSAgICAgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGxhc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wg
YWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5SG92
ZXJPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyKGJvb2wgdmFsdWUp
IHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0KTsgfQotCi0gICAg
ICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZm
ZWN0ZWRCeUFjdGl2ZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZl
KGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNl
dCk7IH0KLQotICAgICAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gZ2V0
Qm9vbGVhbihhZmZlY3RlZEJ5RHJhZ09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3Rl
ZEJ5RHJhZyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlEcmFn
T2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9v
bGVhbihpc0xpbmtPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgdmFsdWUp
IHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaXNMaW5rT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wg
aGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFz
RXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFz
RXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0V4cGxp
Y2l0bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzRXhwbGlj
aXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0
bHlTZXRXcml0aW5nTW9kZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCk7IH0KLQotICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IGZsYWdzTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vbkluaGVy
aXRlZEZsYWdzLCBtX2ZsYWdzKTsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzYWZm
ZWN0ZWRCeUFjdGl2ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUFjdGl2ZU9m
ZnNldDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzYWZmZWN0ZWRCeUhvdmVyKCkg
eyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0KLSAgICAgICAg
c3RhdGljIHVpbnQ2NF90IGZsYWdQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIHsgcmV0dXJu
IG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsgfQotICAgICAg
ICBzdGF0aWMgdWludDY0X3Qgc2V0Rmlyc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFn
Rmlyc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQotICAgICAgICBzdGF0aWMgdWlu
dDY0X3Qgc2V0TGFzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdMYXN0Q2hpbGRTdGF0
ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHVwZGF0
ZUJvb2xlYW4oYm9vbCBpc1NldCwgdWludDY0X3Qgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoaXNTZXQpCi0gICAgICAgICAgICAgICAgbV9mbGFncyB8PSAob25lQml0TWFzayA8
PCBvZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgJj0g
fihvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGdldEJv
b2xlYW4odWludDY0X3Qgb2Zmc2V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9mbGFncyAmIChvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0aW9uSW5k
ZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVCghKG5ld1ZhbHVlICYgfnBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKSk7Ci0gICAgICAgICAg
ICB1aW50NjRfdCBwb3NpdGlvbkRlcGVuZGVudE1hc2sgPSBwb3NpdGlvbkluZGVwZW5kZW50TWFz
ayA8PCBvZmZzZXQ7Ci0gICAgICAgICAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+cG9zaXRpb25E
ZXBlbmRlbnRNYXNrKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4obmV3VmFsdWUpIDw8IG9mZnNl
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBnZXRWYWx1ZSh1aW50NjRfdCBwb3Np
dGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChtX2ZsYWdzID4+IG9mZnNl
dCkgJiBwb3NpdGlvbkluZGVwZW5kZW50TWFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgdWludDY0X3QgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBpc1VuaXF1
ZU9mZnNldDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0ZpcnN0Q2hpbGRTdGF0ZSgp
IHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Ci0gICAgICAg
IHN0YXRpYyB1aW50NjRfdCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJldHVybiBvbmVCaXRNYXNr
IDw8IGxhc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Ci0KLSAgICAgICAgLy8gVG8gdHlwZSB0aGUgYml0
IG1hc2sgcHJvcGVybHkgb24gNjRiaXRzLgotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qg
b25lQml0TWFzayA9IDB4MTsKLQotICAgICAgICAvLyBCeXRlIDEuCi0gICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBvdmVyZmxvd0JpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IG92ZXJmbG93TWFzayA9IChvbmVCaXRNYXNrIDw8IG92ZXJmbG93Qml0Q291bnQp
IC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WE9mZnNldCA9IDA7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1lPZmZzZXQgPSBvdmVyZmxv
d1hPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2xlYXJCaXRDb3VudCA9IDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBjbGVh
ck1hc2sgPSAob25lQml0TWFzayA8PCBjbGVhckJpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjbGVhck9mZnNldCA9IG92ZXJmbG93WU9mZnNldCArIG92ZXJmbG93
Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSAyLgotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgZGlzcGxheUJpdENvdW50ID0gNTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90
IGRpc3BsYXlNYXNrID0gKG9uZUJpdE1hc2sgPDwgZGlzcGxheUJpdENvdW50KSAtIDE7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ID0gY2xlYXJP
ZmZzZXQgKyBjbGVhckJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcG9z
aXRpb25CaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBwb3NpdGlv
bk1hc2sgPSAob25lQml0TWFzayA8PCBwb3NpdGlvbkJpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IGVmZmVjdGl2ZURpc3BsYXlPZmZz
ZXQgKyBkaXNwbGF5Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSAzLgotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ID0gcG9zaXRpb25PZmZzZXQg
KyBwb3NpdGlvbkJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5pY29k
ZUJpZGlCaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB1bmljb2Rl
QmlkaU1hc2sgPSAob25lQml0TWFzayA8PCB1bmljb2RlQmlkaUJpdENvdW50KSAtIDE7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaU9mZnNldCA9IG9yaWdpbmFsRGlz
cGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDQuCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ0JpdENvdW50ID0gMjsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsb2F0aW5nTWFzayA9IChvbmVCaXRNYXNrIDw8IGZsb2F0
aW5nQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5n
T2Zmc2V0ID0gdW5pY29kZUJpZGlPZmZzZXQgKyB1bmljb2RlQmlkaUJpdENvdW50OwotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50
ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXREaXJl
Y3Rpb25PZmZzZXQgPSBmbG9hdGluZ09mZnNldCArIGZsb2F0aW5nQml0Q291bnQ7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3Vu
dCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGVPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0ICsgaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNS4KLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudCA9IDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0
ID0gaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0ICsgaGFzRXhwbGljaXRseVNldFdy
aXRpbmdNb2RlQml0Y291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWJsZUxh
eW91dEJpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRhYmxlTGF5
b3V0Qml0TWFzayA9IG9uZUJpdE1hc2s7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0
YWJsZUxheW91dE9mZnNldCA9IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgKyBleHBsaWNpdElu
aGVyaXRhbmNlQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNh
bEFsaWduQml0Q291bnQgPSA0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGlj
YWxBbGlnblBhZGRpbmcgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGlj
YWxBbGlnbkFuZFBhZGRpbmdCaXRDb3VudCA9IHZlcnRpY2FsQWxpZ25CaXRDb3VudCArIHZlcnRp
Y2FsQWxpZ25QYWRkaW5nOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmVydGljYWxB
bGlnbk1hc2sgPSAob25lQml0TWFzayA8PCB2ZXJ0aWNhbEFsaWduQml0Q291bnQpIC0gMTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSB0YWJsZUxh
eW91dE9mZnNldCArIHRhYmxlTGF5b3V0Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA2Lgot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0JpdENvdW50ID0gNzsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBzZXVkb0JpdHNNYXNrID0gKG9uZUJpdE1hc2sg
PDwgcHNldWRvQml0c0JpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBwc2V1ZG9CaXRzT2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCArIHZlcnRpY2FsQWxpZ25C
aXRDb3VudDsKLQotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3BvcnRVbml0
c0JpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGhhc1ZpZXdwb3J0
VW5pdHNCaXRNYXNrID0gKG9uZUJpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c0JpdENvdW50KSAt
IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0
ID0gcHNldWRvQml0c09mZnNldCArIHBzZXVkb0JpdHNCaXRDb3VudDsKLQotICAgICAgICAvLyBC
eXRlIDcuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVCaXRDb3VudCA9
IDY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVQYWRkaW5nID0gMjsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3Vu
dCA9IHN0eWxlVHlwZUJpdENvdW50ICsgc3R5bGVUeXBlUGFkZGluZzsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IHN0eWxlVHlwZU1hc2sgPSAob25lQml0TWFzayA8PCBzdHlsZVR5cGVB
bmRQYWRkaW5nQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0
eWxlVHlwZU9mZnNldCA9IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCArIGhhc1ZpZXdwb3J0VW5p
dHNPZmZzZXQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA4LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgaXNVbmlxdWVPZmZzZXQgPSBzdHlsZVR5cGVPZmZzZXQgKyBzdHlsZVR5cGVBbmRQYWRk
aW5nQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlbXB0eVN0YXRlT2Zm
c2V0ID0gaXNVbmlxdWVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
Zmlyc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZW1wdHlTdGF0ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCA9IGZpcnN0Q2hpbGRTdGF0
ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5SG92
ZXJPZmZzZXQgPSBsYXN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ID0gYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0
ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlEcmFnT2Zmc2V0
ID0gYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpc0xpbmtPZmZzZXQgPSBhZmZlY3RlZEJ5RHJhZ09mZnNldCArIDE7Ci0KLSAgICAgICAg
Ly8gNjAgYml0cyBhcmUgYXNzaWduZWQuIFRoZXJlIGFyZSA0IGJpdHMgYXZhaWxhYmxlIGN1cnJl
bnRseSB1c2VkIGFzIHBhZGRpbmcgdG8gaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24uCi0gICAgICAg
IC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0
byB1cGRhdGUgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkuCi0gICAgICAgIHVp
bnQ2NF90IG1fZmxhZ3M7Ci0gICAgfTsKLQotcHJvdGVjdGVkOgotCi0gICAgLy8gbm9uLWluaGVy
aXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZUJveERhdGE+IG1fYm94OwotICAgIERh
dGFSZWY8U3R5bGVWaXN1YWxEYXRhPiB2aXN1YWw7Ci0gICAgRGF0YVJlZjxTdHlsZUJhY2tncm91
bmREYXRhPiBtX2JhY2tncm91bmQ7Ci0gICAgRGF0YVJlZjxTdHlsZVN1cnJvdW5kRGF0YT4gc3Vy
cm91bmQ7Ci0gICAgRGF0YVJlZjxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPiByYXJlTm9uSW5o
ZXJpdGVkRGF0YTsKLQotICAgIC8vIGluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxT
dHlsZVJhcmVJbmhlcml0ZWREYXRhPiByYXJlSW5oZXJpdGVkRGF0YTsKLSAgICBEYXRhUmVmPFN0
eWxlSW5oZXJpdGVkRGF0YT4gaW5oZXJpdGVkOwotCi0gICAgLy8gbGlzdCBvZiBhc3NvY2lhdGVk
IHBzZXVkbyBzdHlsZXMKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHNldWRvU3R5bGVDYWNoZT4gbV9j
YWNoZWRQc2V1ZG9TdHlsZXM7Ci0KLSAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2Z1N0
eWxlOwotCi0vLyAhU1RBUlQgU1lOQyE6IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIGNvcHkg
Y29uc3RydWN0b3IgaW4gUmVuZGVyU3R5bGUuY3BwIGFuZCBpbXBsaWNpdGx5SW5oZXJpdGVkKCkg
aW4gU3R5bGVSZXNvbHZlci5jcHAKLQotICAgIC8vIGluaGVyaXQKLSAgICBzdHJ1Y3QgSW5oZXJp
dGVkRmxhZ3MgewotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3Mm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKF9lbXB0eV9jZWxs
cyA9PSBvdGhlci5fZW1wdHlfY2VsbHMpCi0gICAgICAgICAgICAgICAgJiYgKF9jYXB0aW9uX3Np
ZGUgPT0gb3RoZXIuX2NhcHRpb25fc2lkZSkKLSAgICAgICAgICAgICAgICAmJiAoX2xpc3Rfc3R5
bGVfdHlwZSA9PSBvdGhlci5fbGlzdF9zdHlsZV90eXBlKQotICAgICAgICAgICAgICAgICYmIChf
bGlzdF9zdHlsZV9wb3NpdGlvbiA9PSBvdGhlci5fbGlzdF9zdHlsZV9wb3NpdGlvbikKLSAgICAg
ICAgICAgICAgICAmJiAoX3Zpc2liaWxpdHkgPT0gb3RoZXIuX3Zpc2liaWxpdHkpCi0gICAgICAg
ICAgICAgICAgJiYgKF90ZXh0X2FsaWduID09IG90aGVyLl90ZXh0X2FsaWduKQotICAgICAgICAg
ICAgICAgICYmIChfdGV4dF90cmFuc2Zvcm0gPT0gb3RoZXIuX3RleHRfdHJhbnNmb3JtKQotICAg
ICAgICAgICAgICAgICYmIChfdGV4dF9kZWNvcmF0aW9ucyA9PSBvdGhlci5fdGV4dF9kZWNvcmF0
aW9ucykKLSAgICAgICAgICAgICAgICAmJiAoX2N1cnNvcl9zdHlsZSA9PSBvdGhlci5fY3Vyc29y
X3N0eWxlKQotI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICAgICAgICAgICAgICAm
JiAobV9jdXJzb3JWaXNpYmlsaXR5ID09IG90aGVyLm1fY3Vyc29yVmlzaWJpbGl0eSkKLSNlbmRp
ZgotICAgICAgICAgICAgICAgICYmIChfZGlyZWN0aW9uID09IG90aGVyLl9kaXJlY3Rpb24pCi0g
ICAgICAgICAgICAgICAgJiYgKF93aGl0ZV9zcGFjZSA9PSBvdGhlci5fd2hpdGVfc3BhY2UpCi0g
ICAgICAgICAgICAgICAgJiYgKF9ib3JkZXJfY29sbGFwc2UgPT0gb3RoZXIuX2JvcmRlcl9jb2xs
YXBzZSkKLSAgICAgICAgICAgICAgICAmJiAoX2JveF9kaXJlY3Rpb24gPT0gb3RoZXIuX2JveF9k
aXJlY3Rpb24pCi0gICAgICAgICAgICAgICAgJiYgKG1fcnRsT3JkZXJpbmcgPT0gb3RoZXIubV9y
dGxPcmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAobV9wcmludENvbG9yQWRqdXN0ID09IG90
aGVyLm1fcHJpbnRDb2xvckFkanVzdCkKLSAgICAgICAgICAgICAgICAmJiAoX3BvaW50ZXJFdmVu
dHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVudHMpCi0gICAgICAgICAgICAgICAgJiYgKF9pbnNpZGVM
aW5rID09IG90aGVyLl9pbnNpZGVMaW5rKQotICAgICAgICAgICAgICAgICYmIChfaW5zaWRlRGVm
YXVsdEJ1dHRvbiA9PSBvdGhlci5faW5zaWRlRGVmYXVsdEJ1dHRvbikKLSAgICAgICAgICAgICAg
ICAmJiAobV93cml0aW5nTW9kZSA9PSBvdGhlci5tX3dyaXRpbmdNb2RlKTsKLSAgICAgICAgfQog
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgX2Vt
cHR5X2NlbGxzIDogMTsgLy8gRUVtcHR5Q2VsbAotICAgICAgICB1bnNpZ25lZCBfY2FwdGlvbl9z
aWRlIDogMjsgLy8gRUNhcHRpb25TaWRlCi0gICAgICAgIHVuc2lnbmVkIF9saXN0X3N0eWxlX3R5
cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlwZQotICAgICAgICB1bnNpZ25lZCBfbGlzdF9zdHlsZV9w
b3NpdGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQb3NpdGlvbgotICAgICAgICB1bnNpZ25lZCBfdmlz
aWJpbGl0eSA6IDI7IC8vIEVWaXNpYmlsaXR5Ci0gICAgICAgIHVuc2lnbmVkIF90ZXh0X2FsaWdu
IDogNDsgLy8gRVRleHRBbGlnbgotICAgICAgICB1bnNpZ25lZCBfdGV4dF90cmFuc2Zvcm0gOiAy
OyAvLyBFVGV4dFRyYW5zZm9ybQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9kZWNvcmF0aW9ucyA6
IFRleHREZWNvcmF0aW9uQml0czsKLSAgICAgICAgdW5zaWduZWQgX2N1cnNvcl9zdHlsZSA6IDY7
IC8vIEVDdXJzb3IKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgICAgIHVuc2ln
bmVkIG1fY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1cnNvclZpc2liaWxpdHkKLSNlbmRpZgot
ICAgICAgICB1bnNpZ25lZCBfZGlyZWN0aW9uIDogMTsgLy8gVGV4dERpcmVjdGlvbgotICAgICAg
ICB1bnNpZ25lZCBfd2hpdGVfc3BhY2UgOiAzOyAvLyBFV2hpdGVTcGFjZQotICAgICAgICAvLyAz
MiBiaXRzCi0gICAgICAgIHVuc2lnbmVkIF9ib3JkZXJfY29sbGFwc2UgOiAxOyAvLyBFQm9yZGVy
Q29sbGFwc2UKLSAgICAgICAgdW5zaWduZWQgX2JveF9kaXJlY3Rpb24gOiAxOyAvLyBFQm94RGly
ZWN0aW9uIChDU1MzIGJveF9kaXJlY3Rpb24gcHJvcGVydHksIGZsZXhpYmxlIGJveCBsYXlvdXQg
bW9kdWxlKQotCi0gICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAotICAgICAgICB1bnNpZ25l
ZCBtX3J0bE9yZGVyaW5nIDogMTsgLy8gT3JkZXIKLSAgICAgICAgdW5zaWduZWQgbV9wcmludENv
bG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVzdEJpdHM7Ci0gICAgICAgIHVuc2lnbmVkIF9wb2lu
dGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKLSAgICAgICAgdW5zaWduZWQgX2luc2lk
ZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluawotICAgICAgICB1bnNpZ25lZCBfaW5zaWRlRGVmYXVs
dEJ1dHRvbiA6IDE7Ci0gICAgICAgIC8vIDQ0IGJpdHMKLQotICAgICAgICAvLyBDU1MgVGV4dCBM
YXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgICAgICB1
bnNpZ25lZCBtX3dyaXRpbmdNb2RlIDogMjsgLy8gV3JpdGluZ01vZGUKLSAgICAgICAgLy8gNDYg
Yml0cwotICAgIH0gaW5oZXJpdGVkX2ZsYWdzOwotCi0vLyBkb24ndCBpbmhlcml0Ci0gICAgTm9u
SW5oZXJpdGVkRmxhZ3Mgbm9uaW5oZXJpdGVkX2ZsYWdzOwotCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKLSAgICBib29sIG1fZGVsZXRpb25IYXNC
ZWd1biB7IGZhbHNlIH07Ci0jZW5kaWYKLQotLy8gIUVORCBTWU5DIQogcHJpdmF0ZToKKyAgICBl
bnVtIENsb25lVGFnIHsgQ2xvbmUgfTsKICAgICBlbnVtIENyZWF0ZURlZmF1bHRTdHlsZVRhZyB7
IENyZWF0ZURlZmF1bHRTdHlsZSB9OwotICAgIFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHls
ZVRhZyk7Ci0KLSAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIGRlZmF1bHRTdHlsZSgpOwogCiBwdWJs
aWM6CiAgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OwogICAgIFJlbmRl
clN0eWxlJiBvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OworICAgIH5SZW5kZXJT
dHlsZSgpOwogCi0gICAgLy8gVGhpcyBpcyBub3QgYSB0cnVlIGNvcHkgY29uc3RydWN0b3IuIEl0
IGRvZXNuJ3QgY29weSBwc2V1ZG8gc3R5bGUgY2FjaGVzIGZvciBleGFtcGxlLgotICAgIGVudW0g
Q2xvbmVUYWcgeyBDbG9uZSB9OworICAgIFJlbmRlclN0eWxlIHJlcGxhY2UoUmVuZGVyU3R5bGUm
JikgV0FSTl9VTlVTRURfUkVUVVJOOworCisgICAgZXhwbGljaXQgUmVuZGVyU3R5bGUoQ3JlYXRl
RGVmYXVsdFN0eWxlVGFnKTsKICAgICBSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIENs
b25lVGFnKTsKIAotICAgIH5SZW5kZXJTdHlsZSgpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYg
ZGVmYXVsdFN0eWxlKCk7CiAKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlKCk7CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlUHRyKCk7CkBAIC01MDUs
NiArMTU1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGRlbGV0aW9uSGFzQmVndW4oKSBjb25zdCB7
IHJldHVybiBtX2RlbGV0aW9uSGFzQmVndW47IH0KICNlbmRpZgogCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
KworICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIGluaGVyaXRQYXJlbnQp
OworICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUmKTsKKwog
ICAgIENvbnRlbnRQb3NpdGlvbiByZXNvbHZlZEp1c3RpZnlDb250ZW50UG9zaXRpb24oY29uc3Qg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29uc3Q7CiAg
ICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgcmVzb2x2ZWRKdXN0aWZ5Q29udGVudERpc3RyaWJ1
dGlvbihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9y
KSBjb25zdDsKICAgICBDb250ZW50UG9zaXRpb24gcmVzb2x2ZWRBbGlnbkNvbnRlbnRQb3NpdGlv
bihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yKSBj
b25zdDsKQEAgLTUxNCwxMSArMTcwLDggQEAgcHVibGljOgogICAgIFN0eWxlU2VsZkFsaWdubWVu
dERhdGEgcmVzb2x2ZWRKdXN0aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHVlQmVoYXZp
b3VyKSBjb25zdDsKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIHJlc29sdmVkSnVzdGlmeVNl
bGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBJdGVtUG9zaXRpb24gbm9ybWFsVmFs
dWVCZWhhdmlvdXIpIGNvbnN0OwogCi0gICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5kZXJT
dHlsZSYgaW5oZXJpdFBhcmVudCk7Ci0gICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25z
dCBSZW5kZXJTdHlsZSopOwotCi0gICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnN0eWxlVHlwZSgpOyB9Ci0gICAgdm9pZCBzZXRTdHlsZVR5
cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRTdHlsZVR5cGUo
c3R5bGVUeXBlKTsgfQorICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlKCk7IH0KKyAgICB2b2lkIHNldFN0eWxlVHlwZShQ
c2V1ZG9JZCBzdHlsZVR5cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRTdHlsZVR5cGUoc3R5
bGVUeXBlKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVk
b0lkKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CkBAIC01MjYsMTE2ICsxNzksOTMgQEAgcHVibGljOgog
CiAgICAgY29uc3QgUHNldWRvU3R5bGVDYWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQc2V1ZG9TdHlsZXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0Q3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlZlB0cjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYgdmFsdWUpIHsgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShu
YW1lLCB2YWx1ZSk7IH0KLSAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gZ2V0Q3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmdldEN1c3RvbVByb3BlcnR5
VmFsdWUobmFtZSk7IH0KLSAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJv
cGVydGllcy0+aGFzQ3VzdG9tUHJvcGVydHkobmFtZSk7IH0KLSAgICBjb25zdCBDdXN0b21Qcm9w
ZXJ0eVZhbHVlTWFwJiBjdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVy
aXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+bV92YWx1ZXM7IH0KKyAgICBjb25zdCBDdXN0
b21Qcm9wZXJ0eVZhbHVlTWFwJiBjdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CisgICAgdm9pZCBz
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEu
YWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQogCi0gICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRz
KGJvb2wgaGFzVmlld3BvcnRVbml0cyA9IHRydWUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhh
c1ZpZXdwb3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KLSAgICBib29sIGhhc1ZpZXdwb3J0
VW5pdHMoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzVmlld3BvcnRVbml0
cygpOyB9CisgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgaGFzVmlld3BvcnRVbml0
cyA9IHRydWUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNWaWV3cG9ydFVuaXRzKGhhc1Zp
ZXdwb3J0VW5pdHMpOyB9CisgICAgYm9vbCBoYXNWaWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1
cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3cG9ydFVuaXRzKCk7IH0KIAotICAgIGJvb2wg
YWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVj
dGVkQnlIb3ZlcigpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVkQnlBY3RpdmUoKTsgfQotICAgIGJvb2wgYWZm
ZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRC
eURyYWcoKTsgfQorICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gbV9u
b25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5SG92ZXIoKTsgfQorICAgIGJvb2wgYWZmZWN0ZWRC
eUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeUFj
dGl2ZSgpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
SW5oZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeURyYWcoKTsgfQogCi0gICAgdm9pZCBzZXRBZmZlY3Rl
ZEJ5SG92ZXIoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7
IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5z
ZXRBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5RHJhZygp
IHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlEcmFnKHRydWUpOyB9CisgICAgdm9p
ZCBzZXRBZmZlY3RlZEJ5SG92ZXIoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZmZWN0ZWRC
eUhvdmVyKHRydWUpOyB9CisgICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKCkgeyBtX25vbklu
aGVyaXRlZEZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFm
ZmVjdGVkQnlEcmFnKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEFmZmVjdGVkQnlEcmFnKHRy
dWUpOyB9CiAKICAgICB2b2lkIHNldENvbHVtblN0eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShjb25z
dCBQYWdpbmF0aW9uOjpNb2RlJik7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICBi
b29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNGbG9h
dGluZygpOyB9Ci0gICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQt
Pm1hcmdpbi5pc1plcm8oKTsgfQotICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQotICAgIGJvb2wgaGFzQm9yZGVyRmlsbCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzRmlsbCgpOyB9CisgICAgYm9vbCBp
c0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5pc0Zsb2F0aW5n
KCk7IH0KKyAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0
YS0+bWFyZ2luLmlzWmVybygpOyB9CisgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdCB7IHJldHVy
biBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9CisgICAgYm9vbCBoYXNCb3Jk
ZXJGaWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5oYXNGaWxsKCk7
IH0KICAgICBib29sIGhhc1Zpc2libGVCb3JkZXJEZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
aGFzVmlzaWJsZUJvcmRlcigpIHx8IGhhc0JvcmRlckZpbGwoKTsgfQotICAgIGJvb2wgaGFzVmlz
aWJsZUJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzVmlzaWJsZUJv
cmRlcigpOyB9Ci0gICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5k
LT5wYWRkaW5nLmlzWmVybygpOyB9Ci0gICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVy
biAhc3Vycm91bmQtPm9mZnNldC5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzVmlzaWJsZUJvcmRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzVmlzaWJsZUJvcmRl
cigpOyB9CisgICAgYm9vbCBoYXNQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fc3Vycm91bmRE
YXRhLT5wYWRkaW5nLmlzWmVybygpOyB9CisgICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiAhbV9zdXJyb3VuZERhdGEtPm9mZnNldC5pc1plcm8oKTsgfQogICAgIGJvb2wgaGFzTWFy
Z2luQmVmb3JlUXVpcmsoKSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKS5oYXNRdWlyaygp
OyB9CiAgICAgYm9vbCBoYXNNYXJnaW5BZnRlclF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2lu
QWZ0ZXIoKS5oYXNRdWlyaygpOyB9CiAKLSAgICBib29sIGhhc0JhY2tncm91bmRJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLmhhc0ltYWdlKCk7IH0KLSAg
ICBib29sIGhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kLT5iYWNrZ3JvdW5kKCkuaGFzRml4ZWRJbWFnZSgpOyB9Ci0gICAgCisgICAgYm9vbCBoYXNC
YWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3Jv
dW5kLmhhc0ltYWdlKCk7IH0KKyAgICBib29sIGhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5oYXNGaXhlZEltYWdlKCk7
IH0KKwogICAgIGJvb2wgaGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSBjb25zdDsKLSAgICAK
KwogICAgIGJvb2wgaGFzQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIGFwcGVhcmFuY2UoKSAh
PSBOb0NvbnRyb2xQYXJ0OyB9CiAKLSAgICBib29sIGhhc0JhY2tncm91bmQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQ29sb3IgY29sb3IgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGhhc0JhY2tncm91bmRJbWFnZSgp
OwotICAgIH0KKyAgICBib29sIGhhc0JhY2tncm91bmQoKSBjb25zdDsKICAgICAKICAgICBMYXlv
dXRCb3hFeHRlbnQgaW1hZ2VPdXRzZXRzKGNvbnN0IE5pbmVQaWVjZUltYWdlJikgY29uc3Q7Ci0g
ICAgYm9vbCBoYXNCb3JkZXJJbWFnZU91dHNldHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGJvcmRlckltYWdlKCkuaGFzSW1hZ2UoKSAmJiAhYm9yZGVySW1hZ2UoKS5vdXRzZXQoKS5p
c1plcm8oKTsKLSAgICB9Ci0gICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlckltYWdlT3V0c2V0cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaW1hZ2VPdXRzZXRzKGJvcmRlckltYWdlKCkp
OwotICAgIH0KKyAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJu
IGJvcmRlckltYWdlKCkuaGFzSW1hZ2UoKSAmJiAhYm9yZGVySW1hZ2UoKS5vdXRzZXQoKS5pc1pl
cm8oKTsgfQorICAgIExheW91dEJveEV4dGVudCBib3JkZXJJbWFnZU91dHNldHMoKSBjb25zdCB7
IHJldHVybiBpbWFnZU91dHNldHMoYm9yZGVySW1hZ2UoKSk7IH0KIAotICAgIExheW91dEJveEV4
dGVudCBtYXNrQm94SW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
bWFnZU91dHNldHMobWFza0JveEltYWdlKCkpOwotICAgIH0KKyAgICBMYXlvdXRCb3hFeHRlbnQg
bWFza0JveEltYWdlT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGltYWdlT3V0c2V0cyhtYXNrQm94
SW1hZ2UoKSk7IH0KIAogICAgIGJvb2wgaGFzRmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJu
IGhhc0ZpbHRlcigpICYmIGZpbHRlcigpLmhhc091dHNldHMoKTsgfQogICAgIEZpbHRlck91dHNl
dHMgZmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCku
b3V0c2V0cygpIDogRmlsdGVyT3V0c2V0cygpOyB9CiAKLSAgICBPcmRlciBydGxPcmRlcmluZygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihpbmhlcml0ZWRfZmxhZ3MubV9ydGxP
cmRlcmluZyk7IH0KLSAgICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG8pIHsgaW5oZXJpdGVk
X2ZsYWdzLm1fcnRsT3JkZXJpbmcgPSBvOyB9CisgICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmlu
Zyk7IH0KKyAgICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG9yZGVyaW5nKSB7IG1faW5oZXJp
dGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBvcmRlcmluZzsgfQogCiAgICAgYm9vbCBpc1N0eWxlQXZh
aWxhYmxlKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNv
bnN0OwotICAgIGJvb2wgaGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdDsKLSAg
ICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbyk7CisgICAgYm9vbCBoYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZCk7CiAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQpOwogICAg
IGJvb2wgaGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25zdDsKIAogICAgIC8vIGF0dHJpYnV0ZSBn
ZXR0ZXIgbWV0aG9kcwogCi0gICAgRURpc3BsYXkgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCk7IH0KLSAgICBFRGlzcGxheSBvcmln
aW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mub3JpZ2luYWxE
aXNwbGF5KCk7IH0KKyAgICBFRGlzcGxheSBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9ub25J
bmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KCk7IH0KIAotICAgIGNvbnN0IExlbmd0aCYg
bGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubGVmdCgpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQucmlnaHQo
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9m
ZnNldC50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm9mZnNldC5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQubGVmdCgpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQucmln
aHQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPm9mZnNldC50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5ib3R0b20oKTsgfQogCiAgICAgLy8gQWNj
ZXNzb3JzIGZvciBwb3NpdGlvbmVkIG9iamVjdCBlZGdlcyB0aGF0IHRha2UgaW50byBhY2NvdW50
IHdyaXRpbmcgbW9kZS4KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm9mZnNldC5zdGFydCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5l
bmQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxM
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5zdGFydCh3cml0aW5n
TW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5lbmQod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zm
c2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbEJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuYWZ0ZXIod3JpdGlu
Z01vZGUoKSk7IH0KIAotICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgcG9zaXRpb25lZCBlbGVtZW50
IHJlcXVpcmVzIG5vcm1hbCBmbG93IHgveSB0byBiZSBjb21wdXRlZAotICAgIC8vIHRvIGRldGVy
bWluZSBpdHMgcG9zaXRpb24uCi0gICAgYm9vbCBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbGVmdCgpLmlzQXV0bygpICYmIHJpZ2h0KCkuaXNBdXRvKCk7IH0KLSAgICBib29s
IGhhc0F1dG9Ub3BBbmRCb3R0b20oKSBjb25zdCB7IHJldHVybiB0b3AoKS5pc0F1dG8oKSAmJiBi
b3R0b20oKS5pc0F1dG8oKTsgfQorICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgcG9zaXRpb25lZCBl
bGVtZW50IHJlcXVpcmVzIG5vcm1hbCBmbG93IHgveSB0byBiZSBjb21wdXRlZCAgdG8gZGV0ZXJt
aW5lIGl0cyBwb3NpdGlvbi4KICAgICBib29sIGhhc1N0YXRpY0lubGluZVBvc2l0aW9uKGJvb2wg
aG9yaXpvbnRhbCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbCA/IGhhc0F1dG9MZWZ0QW5kUmln
aHQoKSA6IGhhc0F1dG9Ub3BBbmRCb3R0b20oKTsgfQogICAgIGJvb2wgaGFzU3RhdGljQmxvY2tQ
b3NpdGlvbihib29sIGhvcml6b250YWwpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWwgPyBoYXNB
dXRvVG9wQW5kQm90dG9tKCkgOiBoYXNBdXRvTGVmdEFuZFJpZ2h0KCk7IH0KIAotICAgIEVQb3Np
dGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlv
bigpOyB9CisgICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5wb3NpdGlvbigpOyB9CiAgICAgYm9vbCBoYXNPdXRPZkZsb3dQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBwb3NpdGlv
bigpID09IEZpeGVkUG9zaXRpb247IH0KICAgICBib29sIGhhc0luRmxvd1Bvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBSZWxhdGl2ZVBvc2l0aW9uIHx8IHBvc2l0aW9uKCkg
PT0gU3RpY2t5UG9zaXRpb247IH0KICAgICBib29sIGhhc1ZpZXdwb3J0Q29uc3RyYWluZWRQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBwb3Np
dGlvbigpID09IFN0aWNreVBvc2l0aW9uOyB9Ci0gICAgRUZsb2F0IGZsb2F0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCk7IH0KLQotICAgIGNvbnN0IExl
bmd0aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+d2lkdGgoKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPmhlaWdodCgpOyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiBtaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5taW5XaWR0aCgp
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5t
YXhXaWR0aCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtaW5IZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2JveC0+bWluSGVpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1heEhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm94LT5tYXhIZWlnaHQoKTsgfQorICAgIEVGbG9hdCBmbG9hdGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKTsgfQorCisgICAg
Y29uc3QgTGVuZ3RoJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+d2lkdGgoKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5o
ZWlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWluV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X2JveERhdGEtPm1pbldpZHRoKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1heFdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9ib3hEYXRhLT5tYXhXaWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
aW5IZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPm1pbkhlaWdodCgpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiBtYXhIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPm1heEhl
aWdodCgpOyB9CiAgICAgCiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsV2lkdGgoKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gd2lkdGgoKSA6IGhlaWdodCgpOyB9
CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGhlaWdodCgpIDogd2lkdGgoKTsgfQpAQCAtNjQ0LDQyICsy
NzQsNDIgQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbE1pbkhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5IZWlnaHQoKSA6IG1p
bldpZHRoKCk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxNYXhIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWF4SGVpZ2h0KCkgOiBtYXhXaWR0
aCgpOyB9CiAKLSAgICBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIoKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+Ym9yZGVyOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckxlZnQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKTsgfQotICAgIGNvbnN0IEJvcmRl
clZhbHVlJiBib3JkZXJSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmln
aHQoKTsgfQotICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJUb3AoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRl
ckJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tKCk7IH0KKyAg
ICBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+Ym9yZGVyOyB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckxlZnQoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmxlZnQoKTsgfQorICAgIGNvbnN0IEJvcmRl
clZhbHVlJiBib3JkZXJSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIucmlnaHQoKTsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJUb3AoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcCgpOyB9CisgICAgY29uc3QgQm9yZGVy
VmFsdWUmIGJvcmRlckJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIuYm90dG9tKCk7IH0KIAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJCZWZvcmUoKSBj
b25zdDsKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWZ0ZXIoKSBjb25zdDsKICAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyU3RhcnQoKSBjb25zdDsKICAgICBjb25zdCBCb3JkZXJW
YWx1ZSYgYm9yZGVyRW5kKCkgY29uc3Q7CiAKLSAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgYm9y
ZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCk7IH0KLSAg
ICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuaW1hZ2UoKS5pbWFnZSgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJ
bWFnZVNsaWNlcygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKS5pbWFn
ZVNsaWNlcygpOyB9Ci0gICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLmJvcmRlclNsaWNlcygpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZU91dHNldCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKS5vdXRzZXQoKTsgfQotCi0gICAgY29uc3QgTGVuZ3RoU2l6
ZSYgYm9yZGVyVG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
dG9wTGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCk7IH0KLSAgICBjb25z
dCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90
dG9tUmlnaHQoKTsgfQotICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXJSYWRpdXMoKTsgfQotCi0gICAgZmxvYXQgYm9yZGVy
TGVmdFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJMZWZ0V2lk
dGgoKTsgfQotICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJMZWZ0
SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLmlz
VHJhbnNwYXJlbnQoKTsgfQotICAgIGZsb2F0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQotICAgIEVCb3JkZXJT
dHlsZSBib3JkZXJSaWdodFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5y
aWdodCgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVudCgpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5pc1RyYW5zcGFyZW50KCk7IH0K
LSAgICBmbG9hdCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3Jk
ZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQotICAgIEVCb3JkZXJTdHlsZSBib3JkZXJUb3BTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wKCkuc3R5bGUoKTsgfQotICAgIGJv
b2wgYm9yZGVyVG9wSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3Jk
ZXIudG9wKCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgZmxvYXQgYm9yZGVyQm90dG9tV2lkdGgo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckJvdHRvbVdpZHRoKCk7IH0K
LSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyQm90dG9tU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmJvdHRvbSgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJvcmRlckJvdHRvbUlz
VHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpLmlz
VHJhbnNwYXJlbnQoKTsgfQotICAgIEZsb2F0Qm94RXh0ZW50IGJvcmRlcldpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJXaWR0aCgpOyB9CisgICAgY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmIGJvcmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PmJvcmRlci5pbWFnZSgpOyB9CisgICAgU3R5bGVJbWFnZSogYm9yZGVySW1hZ2VTb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmltYWdlKCkuaW1hZ2UoKTsgfQor
ICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VTbGljZXMoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmltYWdlKCkuaW1hZ2VTbGljZXMoKTsgfQorICAgIGNvbnN0
IExlbmd0aEJveCYgYm9yZGVySW1hZ2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5ib3JkZXIuaW1hZ2UoKS5ib3JkZXJTbGljZXMoKTsgfQorICAgIGNvbnN0IExlbmd0aEJv
eCYgYm9yZGVySW1hZ2VPdXRzZXQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmltYWdlKCkub3V0c2V0KCk7IH0KKworICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRv
cExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcExl
ZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3BSaWdodCgpOyB9CisgICAgY29u
c3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tTGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6
ZSYgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KKyAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0K
KworICAgIGZsb2F0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0KKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVy
TGVmdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0KCku
c3R5bGUoKTsgfQorICAgIGJvb2wgYm9yZGVyTGVmdElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmxlZnQoKS5pc1RyYW5zcGFyZW50KCk7IH0KKyAg
ICBmbG9hdCBib3JkZXJSaWdodFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PmJvcmRlci5ib3JkZXJSaWdodFdpZHRoKCk7IH0KKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVyUmln
aHRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5z
dHlsZSgpOyB9CisgICAgYm9vbCBib3JkZXJSaWdodElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCkuaXNUcmFuc3BhcmVudCgpOyB9Cisg
ICAgZmxvYXQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLmJvcmRlclRvcFdpZHRoKCk7IH0KKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVyVG9wU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcCgpLnN0eWxlKCk7
IH0KKyAgICBib29sIGJvcmRlclRvcElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcCgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZsb2F0IGJv
cmRlckJvdHRvbVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5i
b3JkZXJCb3R0b21XaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20oKS5zdHlsZSgp
OyB9CisgICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20oKS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBG
bG9hdEJveEV4dGVudCBib3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5ib3JkZXIuYm9yZGVyV2lkdGgoKTsgfQogCiAgICAgZmxvYXQgYm9yZGVyQmVmb3JlV2lkdGgo
KSBjb25zdDsKICAgICBmbG9hdCBib3JkZXJBZnRlcldpZHRoKCkgY29uc3Q7CkBAIC02ODksMjgg
KzMxOSwyOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgb3V0bGluZVNpemUoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om1heDxmbG9hdD4oMCwgb3V0bGluZVdpZHRoKCkgKyBvdXRsaW5lT2Zmc2V0KCkpOyB9
CiAgICAgZmxvYXQgb3V0bGluZVdpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNPdXRsaW5lKCkg
Y29uc3QgeyByZXR1cm4gb3V0bGluZVN0eWxlKCkgPiBCSElEREVOICYmIG91dGxpbmVXaWR0aCgp
ID4gMDsgfQotICAgIEVCb3JkZXJTdHlsZSBvdXRsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgpOyB9Ci0gICAgT3V0bGluZUlzQXV0byBvdXRs
aW5lU3R5bGVJc0F1dG8oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPdXRsaW5lSXNBdXRv
PihtX2JhY2tncm91bmQtPm91dGxpbmUoKS5pc0F1dG8oKSk7IH0KKyAgICBFQm9yZGVyU3R5bGUg
b3V0bGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5z
dHlsZSgpOyB9CisgICAgT3V0bGluZUlzQXV0byBvdXRsaW5lU3R5bGVJc0F1dG8oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxPdXRsaW5lSXNBdXRvPihtX2JhY2tncm91bmREYXRhLT5vdXRs
aW5lLmlzQXV0bygpKTsgfQogICAgIGJvb2wgaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBoYXNPdXRsaW5lKCkgJiYgb3V0bGluZVNpemUoKSA+IDA7IH0KICAgICAK
LSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLm92ZXJmbG93WCgpOyB9Ci0gICAgRU92ZXJmbG93IG92ZXJmbG93WSgpIGNvbnN0IHsgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKTsgfQorICAgIEVPdmVyZmxvdyBvdmVy
Zmxvd1goKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WCgpOyB9
CisgICAgRU92ZXJmbG93IG92ZXJmbG93WSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3Mub3ZlcmZsb3dZKCk7IH0KIAotICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVmlzaWJpbGl0eT4oaW5oZXJpdGVkX2ZsYWdzLl92aXNp
YmlsaXR5KTsgfQotICAgIEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiB2ZXJ0aWNhbEFsaWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPnZlcnRpY2Fs
QWxpZ24oKTsgfQorICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFVmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5KTsgfQor
ICAgIEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgdmVydGlj
YWxBbGlnbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+dmVydGljYWxBbGlnbigp
OyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGNsaXBMZWZ0KCkgY29uc3QgeyByZXR1cm4gdmlzdWFs
LT5jbGlwLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgY2xpcFJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gdmlzdWFsLT5jbGlwLnJpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGNsaXBUb3Ao
KSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAudG9wKCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGNsaXBCb3R0b20oKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAuYm90dG9tKCk7IH0KLSAg
ICBjb25zdCBMZW5ndGhCb3gmIGNsaXAoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXA7IH0K
LSAgICBib29sIGhhc0NsaXAoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmhhc0NsaXA7IH0KKyAg
ICBjb25zdCBMZW5ndGgmIGNsaXBMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5j
bGlwLmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV92aXN1YWxEYXRhLT5jbGlwLnJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGNsaXBU
b3AoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAudG9wKCk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIGNsaXBCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAu
Ym90dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGNsaXAoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbERhdGEtPmNsaXA7IH0KKyAgICBib29sIGhhc0NsaXAoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbERhdGEtPmhhc0NsaXA7IH0KIAotICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpOyB9CisgICAg
RVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRG
bGFncy51bmljb2RlQmlkaSgpOyB9CiAKLSAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVy
biBub25pbmhlcml0ZWRfZmxhZ3MuY2xlYXIoKTsgfQotICAgIEVUYWJsZUxheW91dCB0YWJsZUxh
eW91dCgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91dCgpOyB9
CisgICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5j
bGVhcigpOyB9CisgICAgRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4g
bV9ub25Jbmhlcml0ZWRGbGFncy50YWJsZUxheW91dCgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdDsKQEAgLTcxOCwyNzcg
KzM0OCwyMTIgQEAgcHVibGljOgogICAgIGZsb2F0IHNwZWNpZmllZEZvbnRTaXplKCkgY29uc3Q7
CiAgICAgZmxvYXQgY29tcHV0ZWRGb250U2l6ZSgpIGNvbnN0OwogICAgIGludCBmb250U2l6ZSgp
IGNvbnN0OworICAgIHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50
YXRpb24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CisKICNpZiBFTkFCTEUoVkFSSUFUSU9O
X0ZPTlRTKQogICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBmb250VmFyaWF0aW9uU2V0dGluZ3Mo
KSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS52YXJpYXRpb25TZXR0aW5ncygpOyB9
CiAjZW5kaWYKLSAgICBzdGQ6OnBhaXI8Rm9udE9yaWVudGF0aW9uLCBOb25DSktHbHlwaE9yaWVu
dGF0aW9uPiBmb250QW5kR2x5cGhPcmllbnRhdGlvbigpOwogCi0gICAgY29uc3QgTGVuZ3RoJiB0
ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQor
ICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPmluZGVudDsgfQorICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4obV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24p
OyB9CisgICAgRVRleHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVUZXh0VHJhbnNmb3JtPihtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0p
OyB9CisgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4obV9pbmhlcml0ZWRGbGFncy50ZXh0
RGVjb3JhdGlvbnMpOyB9CisgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4obV92aXN1YWxEYXRhLT50ZXh0
RGVjb3JhdGlvbik7IH0KKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5
bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQorICAgIFRleHREZWNv
cmF0aW9uU2tpcCB0ZXh0RGVjb3JhdGlvblNraXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0RGVjb3JhdGlvblNraXA+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9u
U2tpcCk7IH0KKyAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdGV4dFVuZGVybGluZVBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihtX3Jh
cmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CisKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgIFRleHRJbmRlbnRMaW5lIHRleHRJbmRlbnRMaW5lKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudExpbmU+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3Rl
eHRJbmRlbnRMaW5lKTsgfQotICAgIFRleHRJbmRlbnRUeXBlIHRleHRJbmRlbnRUeXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudFR5cGU+KHJhcmVJbmhlcml0ZWREYXRh
LT5tX3RleHRJbmRlbnRUeXBlKTsgfQorICAgIFRleHRJbmRlbnRMaW5lIHRleHRJbmRlbnRMaW5l
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudExpbmU+KG1fcmFyZUluaGVy
aXRlZERhdGEtPnRleHRJbmRlbnRMaW5lKTsgfQorICAgIFRleHRJbmRlbnRUeXBlIHRleHRJbmRl
bnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudFR5cGU+KG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRJbmRlbnRUeXBlKTsgfQorICAgIFRleHRBbGlnbkxhc3QgdGV4
dEFsaWduTGFzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbkxhc3Q+KG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRBbGlnbkxhc3QpOyB9CisgICAgVGV4dEp1c3RpZnkgdGV4
dEp1c3RpZnkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SnVzdGlmeT4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEp1c3RpZnkpOyB9CiAjZW5kaWYKLSAgICBFVGV4dEFsaWduIHRl
eHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KGluaGVyaXRl
ZF9mbGFncy5fdGV4dF9hbGlnbik7IH0KLSAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KGluaGVyaXRlZF9m
bGFncy5fdGV4dF90cmFuc2Zvcm0pOyB9Ci0gICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4o
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zKTsgfQotICAgIFRleHREZWNvcmF0aW9u
IHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRp
b24+KHZpc3VhbC0+dGV4dERlY29yYXRpb24pOyB9Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAg
ICBUZXh0QWxpZ25MYXN0IHRleHRBbGlnbkxhc3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0QWxpZ25MYXN0PihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0QWxpZ25MYXN0KTsgfQot
ICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dEp1c3RpZnk+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5KTsgfQotI2VuZGlm
IC8vIENTUzNfVEVYVAotICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5bGU+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUpOyB9Ci0gICAgVGV4dERlY29y
YXRpb25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFRleHREZWNvcmF0aW9uU2tpcD4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25T
a2lwKTsgfQotICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KHJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbik7IH0KIAogICAgIGNvbnN0IExl
bmd0aCYgd29yZFNwYWNpbmcoKSBjb25zdDsKICAgICBmbG9hdCBsZXR0ZXJTcGFjaW5nKCkgY29u
c3Q7CiAKLSAgICBmbG9hdCB6b29tKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5tX3pvb207IH0K
LSAgICBmbG9hdCBlZmZlY3RpdmVab29tKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPm1fZWZmZWN0aXZlWm9vbTsgfQorICAgIGZsb2F0IHpvb20oKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbERhdGEtPnpvb207IH0KKyAgICBmbG9hdCBlZmZlY3RpdmVab29tKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlWm9vbTsgfQogICAgIAotICAgIFRl
eHRab29tIHRleHRab29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KHJh
cmVJbmhlcml0ZWREYXRhLT5tX3RleHRab29tKTsgfQorICAgIFRleHRab29tIHRleHRab29tKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRab29tKTsgfQogCi0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlv
bik7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHREaXJlY3Rpb24+KG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uKTsgfQogICAg
IGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigp
ID09IExUUjsgfQotICAgIGJvb2wgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCk7IH0K
KyAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKTsgfQogCiAgICAgY29u
c3QgTGVuZ3RoJiBzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgTGVuZ3RoIGxpbmVIZWlnaHQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBM
ZW5ndGgmIGxpbmVIZWlnaHQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29tcHV0
ZWRMaW5lSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdoaXRlU3BhY2U+KGluaGVyaXRlZF9mbGFncy5fd2hp
dGVfc3BhY2UpOyB9Ci0gICAgc3RhdGljIGJvb2wgYXV0b1dyYXAoRVdoaXRlU3BhY2Ugd3MpCi0g
ICAgewotICAgICAgICAvLyBOb3dyYXAgYW5kIHByZSBkb24ndCBhdXRvbWF0aWNhbGx5IHdyYXAu
Ci0gICAgICAgIHJldHVybiB3cyAhPSBOT1dSQVAgJiYgd3MgIT0gUFJFOwotICAgIH0KKyAgICBF
V2hpdGVTcGFjZSB3aGl0ZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdoaXRl
U3BhY2U+KG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBh
dXRvV3JhcChFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBhdXRvV3JhcCgpIGNvbnN0IHsgcmV0dXJu
IGF1dG9XcmFwKHdoaXRlU3BhY2UoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBwcmVzZXJ2ZU5ld2xp
bmUoRVdoaXRlU3BhY2UpOworICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3QgeyByZXR1
cm4gcHJlc2VydmVOZXdsaW5lKHdoaXRlU3BhY2UoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBjb2xs
YXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2UpOworICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNl
KCkgY29uc3QgeyByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNlKHdoaXRlU3BhY2UoKSk7IH0KKyAg
ICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVDaGFyKSBjb25zdDsKKyAgICBib29sIGJy
ZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIGJvb2wgYnJlYWtXb3JkcygpIGNv
bnN0OworCisgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5y
ZXBlYXRYKCkpOyB9CisgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dy
b3VuZC5yZXBlYXRZKCkpOyB9CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgYmFja2dyb3VuZENvbXBv
c2l0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihtX2Jh
Y2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLmNvbXBvc2l0ZSgpKTsgfQorICAgIEVGaWxsQXR0YWNo
bWVudCBiYWNrZ3JvdW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVG
aWxsQXR0YWNobWVudD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5hdHRhY2htZW50KCkp
OyB9CisgICAgRUZpbGxCb3ggYmFja2dyb3VuZENsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFRmlsbEJveD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5jbGlwKCkpOyB9Cisg
ICAgRUZpbGxCb3ggYmFja2dyb3VuZE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVGaWxsQm94PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLm9yaWdpbigpKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFhQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZERhdGEtPmJhY2tncm91bmQueFBvc2l0aW9uKCk7IH0KKyAgICBjb25zdCBMZW5ndGgm
IGJhY2tncm91bmRZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5i
YWNrZ3JvdW5kLnlQb3NpdGlvbigpOyB9CisgICAgRUZpbGxTaXplVHlwZSBiYWNrZ3JvdW5kU2l6
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnNpemVU
eXBlKCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNrZ3JvdW5kU2l6ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuc2l6ZUxlbmd0aCgpOyB9
CisgICAgRmlsbExheWVyJiBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kRGF0YS5hY2Nlc3MoKS5iYWNrZ3JvdW5kOyB9CisgICAgY29uc3QgRmlsbExheWVyJiBi
YWNrZ3JvdW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dy
b3VuZDsgfQorCisgICAgU3R5bGVJbWFnZSogbWFza0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5pbWFnZSgpOyB9CisgICAgRUZpbGxSZXBlYXQgbWFz
a1JlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bWFzay5yZXBlYXRYKCkpOyB9CisgICAgRUZpbGxSZXBlYXQgbWFz
a1JlcGVhdFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bWFzay5yZXBlYXRZKCkpOyB9CisgICAgQ29tcG9zaXRlT3BlcmF0
b3IgbWFza0NvbXBvc2l0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9w
ZXJhdG9yPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLmNvbXBvc2l0ZSgpKTsgfQorICAg
IEVGaWxsQm94IG1hc2tDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2suY2xpcCgpKTsgfQorICAgIEVGaWxsQm94IG1h
c2tPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFzay5vcmlnaW4oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hc2tY
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnhQ
b3NpdGlvbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXNrWVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay55UG9zaXRpb24oKTsgfQorICAgIEVG
aWxsU2l6ZVR5cGUgbWFza1NpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFzay5zaXplVHlwZSgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgbWFza1Np
emVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnNp
emVMZW5ndGgoKTsgfQorICAgIEZpbGxMYXllciYgZW5zdXJlTWFza0xheWVycygpIHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFzazsgfQorICAgIGNvbnN0IEZpbGxM
YXllciYgbWFza0xheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hc2s7IH0KKyAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0JveEltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlOyB9CisgICAgU3R5
bGVJbWFnZSogbWFza0JveEltYWdlU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFza0JveEltYWdlLmltYWdlKCk7IH0KKworICAgIEVCb3JkZXJDb2xsYXBz
ZSBib3JkZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJDb2xs
YXBzZT4obV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSk7IH0KKyAgICBmbG9hdCBob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0OworICAgIGZsb2F0IHZlcnRpY2FsQm9yZGVyU3Bh
Y2luZygpIGNvbnN0OworICAgIEVFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyk7IH0K
KyAgICBFQ2FwdGlvblNpZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQ2FwdGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUpOyB9CiAKLSAgICBi
b29sIGF1dG9XcmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdXRvV3JhcCh3aGl0
ZVNwYWNlKCkpOwotICAgIH0KKyAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZSk7IH0KKyAgICBTdHlsZUltYWdlKiBsaXN0U3R5bGVJbWFnZSgpIGNvbnN0
OworICAgIEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVQb3NpdGlvbj4obV9pbmhlcml0ZWRGbGFncy5saXN0
U3R5bGVQb3NpdGlvbik7IH0KKworICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luVG9wKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5i
b3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5tYXJnaW4ubGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJn
aW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4ucmlnaHQoKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPm1hcmdpbi5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkFmdGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5h
ZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luU3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnN0YXJ0KHdyaXRpbmdNb2RlKCks
IGRpcmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luRW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9u
KCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFydFVzaW5nKGNvbnN0IFJlbmRlclN0
eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnN0
YXJ0KG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlvbigpKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90
aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uZW5kKG90aGVy
U3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlvbigpKTsgfQorICAgIGNv
bnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5
bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYmVmb3JlKG90aGVyU3R5
bGUtPndyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5BZnRlclVzaW5n
KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+bWFyZ2luLmFmdGVyKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpOyB9CisKKyAgICBj
b25zdCBMZW5ndGhCb3gmIHBhZGRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+cGFkZGluZzsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1RvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBw
YWRkaW5nQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuYm90
dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPnBhZGRpbmcubGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRk
aW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5yaWdodCgp
OyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPnBhZGRpbmcuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFk
ZGluZy5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1N0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuc3RhcnQod3JpdGlu
Z01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nRW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuZW5kKHdyaXRpbmdNb2RlKCks
IGRpcmVjdGlvbigpKTsgfQorCisgICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFQ3Vyc29yPihtX2luaGVyaXRlZEZsYWdzLmN1cnNvcik7IH0KIAotICAgIHN0
YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShFV2hpdGVTcGFjZSB3cykKLSAgICB7Ci0gICAgICAg
IC8vIE5vcm1hbCBhbmQgbm93cmFwIGRvIG5vdCBwcmVzZXJ2ZSBuZXdsaW5lcy4KLSAgICAgICAg
cmV0dXJuIHdzICE9IE5PUk1BTCAmJiB3cyAhPSBOT1dSQVA7Ci0gICAgfQorI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKKyAgICBDdXJzb3JWaXNpYmlsaXR5IGN1cnNvclZpc2liaWxpdHko
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDdXJzb3JWaXNpYmlsaXR5PihtX2luaGVyaXRl
ZEZsYWdzLmN1cnNvclZpc2liaWxpdHkpOyB9CisjZW5kaWYKIAotICAgIGJvb2wgcHJlc2VydmVO
ZXdsaW5lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmVzZXJ2ZU5ld2xpbmUod2hp
dGVTcGFjZSgpKTsKLSAgICB9CisgICAgQ3Vyc29yTGlzdCogY3Vyc29ycygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEuZ2V0KCk7IH0KIAotICAgIHN0YXRp
YyBib29sIGNvbGxhcHNlV2hpdGVTcGFjZShFV2hpdGVTcGFjZSB3cykKLSAgICB7Ci0gICAgICAg
IC8vIFByZSBhbmQgcHJld3JhcCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4KLSAgICAgICAg
cmV0dXJuIHdzICE9IFBSRSAmJiB3cyAhPSBQUkVfV1JBUDsKLSAgICB9CisgICAgRUluc2lkZUxp
bmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPiht
X2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmspOyB9CisgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmlzTGluaygpOyB9CiAKLSAgICBib29sIGNvbGxh
cHNlV2hpdGVTcGFjZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29sbGFwc2VXaGl0
ZVNwYWNlKHdoaXRlU3BhY2UoKSk7Ci0gICAgfQorICAgIGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbjsg
fQogCi0gICAgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShVQ2hhciBjKSBjb25zdAotICAg
IHsKLSAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgICAgICBjYXNlICcgJzoKLSAgICAgICAg
ICAgIGNhc2UgJ1x0JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNl
KCk7Ci0gICAgICAgICAgICBjYXNlICdcbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFwcmVz
ZXJ2ZU5ld2xpbmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPndp
ZG93czsgfQorICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0
ZWREYXRhLT5vcnBoYW5zOyB9CisgICAgYm9vbCBoYXNBdXRvV2lkb3dzKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFzQXV0b1dpZG93czsgfQorICAgIGJvb2wgaGFzQXV0
b09ycGhhbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oYXNBdXRvT3Jw
aGFuczsgfQogCi0gICAgYm9vbCBicmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHdoaXRlU3BhY2UoKSA9PSBQUkVfV1JBUCB8fCBsaW5lQnJlYWso
KSA9PSBMaW5lQnJlYWtBZnRlcldoaXRlU3BhY2U7Ci0gICAgfQorICAgIEJyZWFrSW5zaWRlIGJy
ZWFrSW5zaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtJbnNpZGU+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrSW5zaWRlKTsgfQorICAgIEJyZWFrQmV0d2VlbiBicmVh
a0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtCZWZvcmUpOyB9CisgICAgQnJlYWtCZXR3ZWVuIGJyZWFr
QWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmJyZWFrQWZ0ZXIpOyB9CiAKLSAgICBib29sIGJyZWFrV29yZHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhaygpID09IEJyZWFrV29yZEJyZWFr
IHx8IG92ZXJmbG93V3JhcCgpID09IEJyZWFrT3ZlcmZsb3dXcmFwOwotICAgIH0KLQotICAgIEVG
aWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnJlcGVhdFgoKSk7IH0KLSAg
ICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsUmVwZWF0PihtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5yZXBlYXRZKCkpOyB9
Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgYmFja2dyb3VuZENvbXBvc2l0ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihtX2JhY2tncm91bmQtPmJhY2tncm91
bmQoKS5jb21wb3NpdGUoKSk7IH0KLSAgICBFRmlsbEF0dGFjaG1lbnQgYmFja2dyb3VuZEF0dGFj
aG1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEF0dGFjaG1lbnQ+KG1fYmFj
a2dyb3VuZC0+YmFja2dyb3VuZCgpLmF0dGFjaG1lbnQoKSk7IH0KLSAgICBFRmlsbEJveCBiYWNr
Z3JvdW5kQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX2JhY2tn
cm91bmQtPmJhY2tncm91bmQoKS5jbGlwKCkpOyB9Ci0gICAgRUZpbGxCb3ggYmFja2dyb3VuZE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX2JhY2tncm91bmQt
PmJhY2tncm91bmQoKS5vcmlnaW4oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJhY2tncm91bmRY
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS54UG9z
aXRpb24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnlQb3NpdGlvbigpOyB9Ci0gICAg
RUZpbGxTaXplVHlwZSBiYWNrZ3JvdW5kU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmQtPmJhY2tncm91bmQoKS5zaXplVHlwZSgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYg
YmFja2dyb3VuZFNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tn
cm91bmQoKS5zaXplTGVuZ3RoKCk7IH0KLSAgICBGaWxsTGF5ZXImIGVuc3VyZUJhY2tncm91bmRM
YXllcnMoKSB7IHJldHVybiBtX2JhY2tncm91bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZDsgfQot
ICAgIGNvbnN0IEZpbGxMYXllciogYmFja2dyb3VuZExheWVycygpIGNvbnN0IHsgcmV0dXJuICYo
bV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkpOyB9Ci0KLSAgICBTdHlsZUltYWdlKiBtYXNrSW1h
Z2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmltYWdlKCk7
IH0KLSAgICBFRmlsbFJlcGVhdCBtYXNrUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsUmVwZWF0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnJlcGVhdFgoKSk7
IH0KLSAgICBFRmlsbFJlcGVhdCBtYXNrUmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsUmVwZWF0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnJlcGVhdFkoKSk7
IH0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBtYXNrQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2suY29tcG9zaXRlKCkpOyB9Ci0gICAgRUZpbGxCb3ggbWFza0NsaXAoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRmlsbEJveD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5jbGlw
KCkpOyB9Ci0gICAgRUZpbGxCb3ggbWFza09yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsQm94PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLm9yaWdpbigpKTsgfQot
ICAgIGNvbnN0IExlbmd0aCYgbWFza1hQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX21hc2sueFBvc2l0aW9uKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1h
c2tZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNr
LnlQb3NpdGlvbigpOyB9Ci0gICAgRUZpbGxTaXplVHlwZSBtYXNrU2l6ZVR5cGUoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnNpemVUeXBlKCk7IH0KLSAgICBj
b25zdCBMZW5ndGhTaXplJiBtYXNrU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX21hc2suc2l6ZUxlbmd0aCgpOyB9Ci0gICAgRmlsbExheWVyJiBlbnN1
cmVNYXNrTGF5ZXJzKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
bWFzazsgfQotICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycygpIGNvbnN0IHsgcmV0dXJu
ICYocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzayk7IH0KLSAgICBjb25zdCBOaW5lUGllY2VJ
bWFnZSYgbWFza0JveEltYWdlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbWFza0JveEltYWdlOyB9Ci0gICAgU3R5bGVJbWFnZSogbWFza0JveEltYWdlU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlLmltYWdl
KCk7IH0KLSAKLSAgICBFQm9yZGVyQ29sbGFwc2UgYm9yZGVyQ29sbGFwc2UoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyQ29sbGFwc2U+KGluaGVyaXRlZF9mbGFncy5fYm9yZGVy
X2NvbGxhcHNlKTsgfQotICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7
Ci0gICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7Ci0gICAgRUVtcHR5Q2Vs
bCBlbXB0eUNlbGxzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUVtcHR5Q2VsbD4oaW5o
ZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyk7IH0KLSAgICBFQ2FwdGlvblNpZGUgY2FwdGlvblNp
ZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2FwdGlvblNpZGU+KGluaGVyaXRlZF9m
bGFncy5fY2FwdGlvbl9zaWRlKTsgfQotCi0gICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihpbmhlcml0ZWRf
ZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSk7IH0KLSAgICBTdHlsZUltYWdlKiBsaXN0U3R5bGVJbWFn
ZSgpIGNvbnN0OwotICAgIEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVQb3NpdGlvbj4oaW5oZXJpdGVkX2Zs
YWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uKTsgfQotCi0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5U
b3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnRvcCgpOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBtYXJnaW5Cb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJv
dHRvbSgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm1hcmdpbi5sZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5yaWdodCgpOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBtYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJl
Zm9yZSh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXIoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5t
YXJnaW4uc3RhcnQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZCh3cml0
aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0
VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5tYXJnaW4uc3RhcnQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+
ZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmRVc2luZyhjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5l
bmQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSog
b3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUob3RoZXJT
dHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyVXNp
bmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5tYXJnaW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KLQotICAgIGNvbnN0
IExlbmd0aEJveCYgcGFkZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5n
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcudG9wKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCb3R0b20oKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5ib3R0b20oKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgcGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5sZWZ0
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5wYWRkaW5nLnJpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCZWZv
cmUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5iZWZvcmUod3JpdGluZ01vZGUo
KSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5wYWRkaW5nLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5zdGFydCh3
cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdF
bmQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwg
ZGlyZWN0aW9uKCkpOyB9Ci0KLSAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVDdXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQotI2lm
IEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICBDdXJzb3JWaXNpYmlsaXR5IGN1cnNvclZp
c2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDdXJzb3JWaXNpYmlsaXR5Pihp
bmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JWaXNpYmlsaXR5KTsgfQotI2VuZGlmCi0KLSAgICBDdXJz
b3JMaXN0KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmN1cnNv
ckRhdGEuZ2V0KCk7IH0KLQotICAgIEVJbnNpZGVMaW5rIGluc2lkZUxpbmsoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFSW5zaWRlTGluaz4oaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5r
KTsgfQotICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
LmlzTGluaygpOyB9Ci0KLSAgICBib29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b247IH0KLQotICAgIHNob3J0
IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT53aWRvd3M7IH0KLSAg
ICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm9ycGhh
bnM7IH0KLSAgICBib29sIGhhc0F1dG9XaWRvd3MoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+bV9oYXNBdXRvV2lkb3dzOyB9Ci0gICAgYm9vbCBoYXNBdXRvT3JwaGFucygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhc0F1dG9PcnBoYW5zOyB9Ci0KLSAg
ICAvLyBDU1MzIEdldHRlciBNZXRob2RzCi0gICAgQnJlYWtJbnNpZGUgYnJlYWtJbnNpZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0luc2lkZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYnJlYWtJbnNpZGUpOyB9Ci0gICAgQnJlYWtCZXR3ZWVuIGJyZWFrQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9icmVha0JlZm9yZSk7IH0KLSAgICBCcmVha0JldHdlZW4gYnJlYWtBZnRlcigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYnJlYWtBZnRlcik7IH0KLSAgICAKLSAgICBIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1
bmN0dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZ2luZ1B1bmN0dWF0aW9u
PihyYXJlSW5oZXJpdGVkRGF0YS0+bV9oYW5naW5nUHVuY3R1YXRpb24pOyB9CisgICAgSGFuZ2lu
Z1B1bmN0dWF0aW9uIGhhbmdpbmdQdW5jdHVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEhhbmdpbmdQdW5jdHVhdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFuZ2luZ1B1bmN0
dWF0aW9uKTsgfQogCiAgICAgZmxvYXQgb3V0bGluZU9mZnNldCgpIGNvbnN0OwotICAgIGNvbnN0
IFNoYWRvd0RhdGEqIHRleHRTaGFkb3coKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNoYWRvdy5nZXQoKTsgfQotICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0V4dGVudChMYXlv
dXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91
dFVuaXQmIGxlZnQpIGNvbnN0IHsgZ2V0U2hhZG93RXh0ZW50KHRleHRTaGFkb3coKSwgdG9wLCBy
aWdodCwgYm90dG9tLCBsZWZ0KTsgfQotICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0hvcml6b250YWxF
eHRlbnQoTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0IHsgZ2V0U2hh
ZG93SG9yaXpvbnRhbEV4dGVudCh0ZXh0U2hhZG93KCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIHZv
aWQgZ2V0VGV4dFNoYWRvd1ZlcnRpY2FsRXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5p
dCYgYm90dG9tKSBjb25zdCB7IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHRleHRTaGFkb3coKSwg
dG9wLCBib3R0b20pOyB9CisgICAgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cuZ2V0KCk7IH0KICAgICB2
b2lkIGdldFRleHRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNh
bExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgY29uc3QgeyBnZXRTaGFkb3dJbmxpbmVE
aXJlY3Rpb25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsg
fQogICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQm
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93
QmxvY2tEaXJlY3Rpb25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90
dG9tKTsgfQogCi0gICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VXaWR0aDsgfQotICAgIGZsb2F0IG9wYWNpdHkoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFjaXR5OyB9Ci0gICAgQ29u
dHJvbFBhcnQgYXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQ
YXJ0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlKTsgfQotICAgIEFzcGVjdFJh
dGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBc3Bl
Y3RSYXRpb1R5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvVHlwZSk7IH0K
LSAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIGFzcGVjdFJhdGlvTnVtZXJh
dG9yKCkgLyBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCk7IH0KLSAgICBmbG9hdCBhc3BlY3RSYXRp
b0Rlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNw
ZWN0UmF0aW9EZW5vbWluYXRvcjsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0
b3I7IH0KLSAgICBFQm94QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUJveEFsaWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZs
ZXhpYmxlQm94LT5hbGlnbik7IH0KLSAgICBFQm94RGlyZWN0aW9uIGJveERpcmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hEaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5f
Ym94X2RpcmVjdGlvbik7IH0KLSAgICBmbG9hdCBib3hGbGV4KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9Ci0gICAg
dW5zaWduZWQgaW50IGJveEZsZXhHcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleF9ncm91cDsgfQotICAgIEVCb3hM
aW5lcyBib3hMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hMaW5lcz4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5saW5lcyk7IH0KLSAg
ICB1bnNpZ25lZCBpbnQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmRpbmFsX2dyb3VwOyB9Ci0g
ICAgRUJveE9yaWVudCBib3hPcmllbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94
T3JpZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPm9y
aWVudCk7IH0KLSAgICBFQm94UGFjayBib3hQYWNrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUJveFBhY2s+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eC0+cGFjayk7IH0KLQotICAgIGludCBvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX29yZGVyOyB9Ci0gICAgZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4R3JvdzsgfQotICAg
IGZsb2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9mbGV4aWJsZUJveC0+bV9mbGV4U2hyaW5rOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBmbGV4QmFz
aXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+
bV9mbGV4QmFzaXM7IH0KLSAgICBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBhbGln
bkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNv
bnRlbnQ7IH0KLSAgICBDb250ZW50UG9zaXRpb24gYWxpZ25Db250ZW50UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQucG9zaXRpb24o
KTsgfQotICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIGFsaWduQ29udGVudERpc3RyaWJ1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudC5k
aXN0cmlidXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduQ29udGVudE92ZXJm
bG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxp
Z25Db250ZW50Lm92ZXJmbG93KCk7IH0KLSAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRh
JiBhbGlnbkl0ZW1zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxp
Z25JdGVtczsgfQotICAgIEl0ZW1Qb3NpdGlvbiBhbGlnbkl0ZW1zUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLnBvc2l0aW9uKCk7IH0K
LSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLm92ZXJmbG93KCk7
IH0KLSAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnblNlbGYoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGY7IH0KLSAgICBJdGVtUG9z
aXRpb24gYWxpZ25TZWxmUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9hbGlnblNlbGYucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFs
aWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWxpZ25TZWxmLm92ZXJmbG93KCk7IH0KLSAgICBFRmxleERpcmVjdGlvbiBmbGV4
RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhEaXJlY3Rpb24+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhEaXJlY3Rpb24pOyB9Cisg
ICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dFN0cm9rZVdpZHRoOyB9CisgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHk7IH0KKyAgICBDb250cm9sUGFydCBh
cHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udHJvbFBhcnQ+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmFwcGVhcmFuY2UpOyB9CisgICAgQXNwZWN0UmF0aW9UeXBlIGFz
cGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFzcGVjdFJhdGlvVHlw
ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXNwZWN0UmF0aW9UeXBlKTsgfQorICAgIGZsb2F0
IGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0aW9O
dW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hc3BlY3RS
YXRpb051bWVyYXRvcjsgfQorICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQm94QWxpZ25tZW50PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5k
ZXByZWNhdGVkRmxleGlibGVCb3gtPmFsaWduKTsgfQorICAgIEVCb3hEaXJlY3Rpb24gYm94RGly
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveERpcmVjdGlvbj4obV9pbmhl
cml0ZWRGbGFncy5ib3hEaXJlY3Rpb24pOyB9CisgICAgZmxvYXQgYm94RmxleCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+Zmxl
eDsgfQorICAgIHVuc2lnbmVkIGJveEZsZXhHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleEdyb3VwOyB9CisgICAg
RUJveExpbmVzIGJveExpbmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveExpbmVz
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPmxpbmVzKTsg
fQorICAgIHVuc2lnbmVkIGJveE9yZGluYWxHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JkaW5hbEdyb3VwOyB9Cisg
ICAgRUJveE9yaWVudCBib3hPcmllbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94
T3JpZW50PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPm9y
aWVudCk7IH0KKyAgICBFQm94UGFjayBib3hQYWNrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUJveFBhY2s+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC0+cGFjayk7IH0KKworICAgIGludCBvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm9yZGVyOyB9CisgICAgZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleEdyb3c7IH0KKyAgICBm
bG9hdCBmbGV4U2hyaW5rKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
ZmxleGlibGVCb3gtPmZsZXhTaHJpbms7IH0KKyAgICBjb25zdCBMZW5ndGgmIGZsZXhCYXNpcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4
QmFzaXM7IH0KKyAgICBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBhbGlnbkNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkNvbnRlbnQ7
IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnbkl0ZW1zKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25JdGVtczsgfQorICAgIGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWduU2VsZigpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZjsgfQorICAgIEVGbGV4RGlyZWN0aW9uIGZsZXhE
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleERpcmVjdGlvbj4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhEaXJlY3Rpb24pOyB9CiAgICAg
Ym9vbCBpc0NvbHVtbkZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBmbGV4RGlyZWN0aW9u
KCkgPT0gRmxvd0NvbHVtbiB8fCBmbGV4RGlyZWN0aW9uKCkgPT0gRmxvd0NvbHVtblJldmVyc2U7
IH0KICAgICBib29sIGlzUmV2ZXJzZUZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBmbGV4
RGlyZWN0aW9uKCkgPT0gRmxvd1Jvd1JldmVyc2UgfHwgZmxleERpcmVjdGlvbigpID09IEZsb3dD
b2x1bW5SZXZlcnNlOyB9Ci0gICAgRUZsZXhXcmFwIGZsZXhXcmFwKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZsZXhXcmFwPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJv
eC0+bV9mbGV4V3JhcCk7IH0KLSAgICBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBq
dXN0aWZ5Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1
c3RpZnlDb250ZW50OyB9Ci0gICAgQ29udGVudFBvc2l0aW9uIGp1c3RpZnlDb250ZW50UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVu
dC5wb3NpdGlvbigpOyB9Ci0gICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUganVzdGlmeUNvbnRl
bnREaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9q
dXN0aWZ5Q29udGVudC5kaXN0cmlidXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGp1
c3RpZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudC5vdmVyZmxvdygpOyB9Ci0gICAgY29uc3QgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSYganVzdGlmeUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGp1c3Rp
ZnlJdGVtc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
anVzdGlmeUl0ZW1zLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5
SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlJdGVtcy5vdmVyZmxvdygpOyB9Ci0gICAgSXRlbVBvc2l0aW9uVHlwZSBq
dXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9qdXN0aWZ5SXRlbXMucG9zaXRpb25UeXBlKCk7IH0KLSAgICBjb25zdCBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5U2VsZigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGp1c3RpZnlTZWxm
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5
U2VsZi5wb3NpdGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlmeVNlbGZPdmVy
Zmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1
c3RpZnlTZWxmLm92ZXJmbG93KCk7IH0KKyAgICBFRmxleFdyYXAgZmxleFdyYXAoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleFdyYXA+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZs
ZXhpYmxlQm94LT5mbGV4V3JhcCk7IH0KKyAgICBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnRE
YXRhJiBqdXN0aWZ5Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmp1c3RpZnlDb250ZW50OyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYg
anVzdGlmeUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVz
dGlmeUl0ZW1zOyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYganVzdGlmeVNl
bGYoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5U2VsZjsg
fQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uczsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgZ3JpZFJvd3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2dyaWRSb3dzOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlk
QXV0b1JlcGVhdENvbHVtbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX2dyaWRBdXRvUmVwZWF0Q29sdW1uczsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlk
VHJhY2tTaXplPiYgZ3JpZEF1dG9SZXBlYXRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b1JlcGVhdFJvd3M7IH0KLSAgICB1bnNpZ25l
ZCBncmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludDsgfQotICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0
Um93c0luc2VydGlvblBvaW50OyB9Ci0gICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRD
b2x1bW5zVHlwZSgpIGNvbnN0ICB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2F1dG9SZXBlYXRDb2x1bW5zVHlwZTsgfQotICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRv
UmVwZWF0Um93c1R5cGUoKSBjb25zdCAgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZC0+bV9hdXRvUmVwZWF0Um93c1R5cGU7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01h
cCYgbmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZENvbHVtbkxpbmVzOyB9Ci0gICAgY29uc3QgTmFtZWRH
cmlkTGluZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE9y
ZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOyB9Ci0gICAgY29uc3QgTmFt
ZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE5hbWVkR3Jp
ZENvbHVtbkxpbmVzOyB9Ci0gICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRO
YW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJl
ZE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzOyB9Ci0gICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRH
cmlkQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1f
bmFtZWRHcmlkQXJlYTsgfQotICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhUm93Q291bnQoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZEFyZWFS
b3dDb3VudDsgfQotICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZEFyZWFDb2x1
bW5Db3VudDsgfQotICAgIEdyaWRBdXRvRmxvdyBncmlkQXV0b0Zsb3coKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxHcmlkQXV0b0Zsb3c+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQt
Pm1fZ3JpZEF1dG9GbG93KTsgfQotICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3co
KSBjb25zdCB7IHJldHVybiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0
b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uUm93KTsgfQotICAgIGJvb2wgaXNHcmlk
QXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4oKSBjb25zdCB7IHJldHVybiAocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9u
Q29sdW1uKTsgfQotICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UoKSBjb25z
dCB7IHJldHVybiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0Zsb3cg
JiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlKTsgfQotICAgIGJvb2wgaXNHcmlkQXV0
b0Zsb3dBbGdvcml0aG1EZW5zZSgpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1EZW5z
ZSk7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvQ29sdW1ucygp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9D
b2x1bW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1Jvd3Mo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRv
Um93czsgfQotICAgIGNvbnN0IExlbmd0aCYgZ3JpZENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbkdhcDsgfQotICAgIGNv
bnN0IExlbmd0aCYgZ3JpZFJvd0dhcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fZ3JpZFJvd0dhcDsgfQotCi0KLSAgICBjb25zdCBHcmlkUG9zaXRpb24m
IGdyaWRJdGVtQ29sdW1uU3RhcnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uU3RhcnQ7IH0KLSAgICBjb25zdCBHcmlkUG9zaXRp
b24mIGdyaWRJdGVtQ29sdW1uRW5kKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZENvbHVtbkVuZDsgfQotICAgIGNvbnN0IEdyaWRQb3NpdGlv
biYgZ3JpZEl0ZW1Sb3dTdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWRJdGVtLT5tX2dyaWRSb3dTdGFydDsgfQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYg
Z3JpZEl0ZW1Sb3dFbmQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkSXRlbS0+bV9ncmlkUm93RW5kOyB9Ci0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9V
VCkgKi8KLQotICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdy5nZXQoKTsgfQorICAgIGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQ29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxH
cmlkVHJhY2tTaXplPiYgZ3JpZFJvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5ncmlkUm93czsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9SZXBlYXRDb2x1bW5zOyB9CisgICAgY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdFJvd3MoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b1JlcGVhdFJvd3M7IH0KKyAgICB1bnNp
Z25lZCBncmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9u
UG9pbnQ7IH0KKyAgICB1bnNpZ25lZCBncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRS
b3dzSW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdENv
bHVtbnNUeXBlKCkgY29uc3QgIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQt
PmF1dG9SZXBlYXRDb2x1bW5zVHlwZTsgfQorICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVw
ZWF0Um93c1R5cGUoKSBjb25zdCAgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3Jp
ZC0+YXV0b1JlcGVhdFJvd3NUeXBlOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+bmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5l
c01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1l
ZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxp
bmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlk
LT5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01h
cCYgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzOyB9
CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5l
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBl
YXROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01h
cCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOyB9
CisgICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm5hbWVkR3JpZEFyZWE7IH0KKyAgICBz
aXplX3QgbmFtZWRHcmlkQXJlYVJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Z3JpZC0+bmFtZWRHcmlkQXJlYVJvd0NvdW50OyB9CisgICAgc2l6ZV90IG5h
bWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmdyaWQtPm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsgfQorICAgIEdyaWRBdXRvRmxv
dyBncmlkQXV0b0Zsb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHcmlkQXV0b0Zsb3c+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyk7IH0KKyAgICBib29s
IGlzR3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rp
b25Sb3cpOyB9CisgICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpIGNvbnN0
IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJ
bnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uKTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zs
b3dBbGdvcml0aG1TcGFyc2UoKSBjb25zdCB7IHJldHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSk7
IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93QWxnb3JpdGhtRGVuc2UoKSBjb25zdCB7IHJldHVy
biAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxB
dXRvRmxvd0FsZ29yaXRobURlbnNlKTsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgZ3JpZEF1dG9Db2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+Z3JpZEF1dG9Db2x1bW5zOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1Np
emU+JiBncmlkQXV0b1Jvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5ncmlkLT5ncmlkQXV0b1Jvd3M7IH0KKyAgICBjb25zdCBMZW5ndGgmIGdyaWRDb2x1bW5HYXAo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQ29sdW1u
R2FwOyB9CisgICAgY29uc3QgTGVuZ3RoJiBncmlkUm93R2FwKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZFJvd0dhcDsgfQorCisgICAgY29uc3QgR3Jp
ZFBvc2l0aW9uJiBncmlkSXRlbUNvbHVtblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0tPmdyaWRDb2x1bW5TdGFydDsgfQorICAgIGNvbnN0IEdy
aWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5FbmQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZENvbHVtbkVuZDsgfQorICAgIGNvbnN0IEdyaWRQ
b3NpdGlvbiYgZ3JpZEl0ZW1Sb3dTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWRJdGVtLT5ncmlkUm93U3RhcnQ7IH0KKyAgICBjb25zdCBHcmlkUG9zaXRp
b24mIGdyaWRJdGVtUm93RW5kKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZEl0ZW0tPmdyaWRSb3dFbmQ7IH0KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQorCisgICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93KCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94U2hhZG93LmdldCgpOyB9CiAgICAgdm9pZCBnZXRC
b3hTaGFkb3dFeHRlbnQoTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0
VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdCB7IGdldFNoYWRvd0V4dGVudChi
b3hTaGFkb3coKSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsgfQogICAgIExheW91dEJveEV4
dGVudCBnZXRCb3hTaGFkb3dJbnNldEV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIGdldFNoYWRvd0lu
c2V0RXh0ZW50KGJveFNoYWRvdygpKTsgfQogICAgIHZvaWQgZ2V0Qm94U2hhZG93SG9yaXpvbnRh
bEV4dGVudChMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3QgeyBnZXRT
aGFkb3dIb3Jpem9udGFsRXh0ZW50KGJveFNoYWRvdygpLCBsZWZ0LCByaWdodCk7IH0KQEAgLTk5
NywxMzYgKzU2MiwxMzMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qm94U2hhZG93QmxvY2tEaXJl
Y3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJv
dHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChib3hTaGFkb3coKSwg
bG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7IH0KIAogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspCi0gICAgRUJveERlY29yYXRpb25CcmVhayBib3hEZWNvcmF0aW9uQnJlYWso
KSBjb25zdCB7IHJldHVybiBtX2JveC0+Ym94RGVjb3JhdGlvbkJyZWFrKCk7IH0KKyAgICBFQm94
RGVjb3JhdGlvbkJyZWFrIGJveERlY29yYXRpb25CcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fYm94
RGF0YS0+Ym94RGVjb3JhdGlvbkJyZWFrKCk7IH0KICNlbmRpZgotICAgIFN0eWxlUmVmbGVjdGlv
biogYm94UmVmbGVjdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Jv
eFJlZmxlY3QuZ2V0KCk7IH0KLSAgICBFQm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsgcmV0
dXJuIG1fYm94LT5ib3hTaXppbmcoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFycXVlZUluY3Jl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmlu
Y3JlbWVudDsgfQotICAgIGludCBtYXJxdWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5zcGVlZDsgfQotICAgIGludCBtYXJxdWVlTG9vcENv
dW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+bG9v
cHM7IH0KLSAgICBFTWFycXVlZUJlaGF2aW9yIG1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVlQmVoYXZpb3I+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X21hcnF1ZWUtPmJlaGF2aW9yKTsgfQotICAgIEVNYXJxdWVlRGlyZWN0aW9uIG1hcnF1ZWVEaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFycXVlZURpcmVjdGlvbj4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+ZGlyZWN0aW9uKTsgfQotICAgIEVVc2VyTW9k
aWZ5IHVzZXJNb2RpZnkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlck1vZGlmeT4o
cmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkpOyB9Ci0gICAgRVVzZXJEcmFnIHVzZXJEcmFn
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJEcmFnPihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dXNlckRyYWcpOyB9Ci0gICAgRVVzZXJTZWxlY3QgdXNlclNlbGVjdCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyU2VsZWN0PihyYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNl
bGVjdCk7IH0KLSAgICBUZXh0T3ZlcmZsb3cgdGV4dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dE92ZXJmbG93PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJm
bG93KTsgfQotICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5CZWZvcmVDb2xsYXBzZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlKTsgfQotICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5B
ZnRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNl
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSk7IH0KLSAgICBFV29y
ZEJyZWFrIHdvcmRCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXb3JkQnJlYWs+
KHJhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWspOyB9Ci0gICAgRU92ZXJmbG93V3JhcCBvdmVy
Zmxvd1dyYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3dXcmFwPihyYXJl
SW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwKTsgfQotICAgIEVOQlNQTW9kZSBuYnNwTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVOQlNQTW9kZT4ocmFyZUluaGVyaXRlZERhdGEt
Pm5ic3BNb2RlKTsgfQotICAgIExpbmVCcmVhayBsaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxMaW5lQnJlYWs+KHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWspOyB9Ci0g
ICAgSHlwaGVucyBoeXBoZW5zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SHlwaGVucz4o
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMpOyB9Ci0gICAgc2hvcnQgaHlwaGVuYXRpb25MaW1p
dEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxp
bWl0QmVmb3JlOyB9Ci0gICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcjsgfQotICAgIHNo
b3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5hdGlvbkxpbWl0TGluZXM7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5
cGhlbmF0aW9uU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uU3RyaW5nOyB9CisKKyAgICBTdHlsZVJlZmxlY3Rpb24qIGJveFJlZmxlY3QoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hSZWZsZWN0LmdldCgpOyB9Cisg
ICAgRUJveFNpemluZyBib3hTaXppbmcoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmJveFNp
emluZygpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJxdWVlSW5jcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+aW5jcmVtZW50OyB9CisgICAg
aW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hcnF1ZWUtPnNwZWVkOyB9CisgICAgaW50IG1hcnF1ZWVMb29wQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5sb29wczsgfQorICAgIEVNYXJx
dWVlQmVoYXZpb3IgbWFycXVlZUJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RU1hcnF1ZWVCZWhhdmlvcj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+YmVoYXZp
b3IpOyB9CisgICAgRU1hcnF1ZWVEaXJlY3Rpb24gbWFycXVlZURpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVlRGlyZWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJxdWVlLT5kaXJlY3Rpb24pOyB9CisgICAgRVVzZXJNb2RpZnkgdXNlck1vZGlmeSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyTW9kaWZ5PihtX3JhcmVJbmhlcml0ZWRE
YXRhLT51c2VyTW9kaWZ5KTsgfQorICAgIEVVc2VyRHJhZyB1c2VyRHJhZygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVVc2VyRHJhZz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRy
YWcpOyB9CisgICAgRVVzZXJTZWxlY3QgdXNlclNlbGVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVVc2VyU2VsZWN0PihtX3JhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0KTsgfQor
ICAgIFRleHRPdmVyZmxvdyB0ZXh0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0T3ZlcmZsb3c+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyk7IH0K
KyAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQmVmb3JlQ29sbGFwc2UoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1h
cmdpbkJlZm9yZUNvbGxhcHNlKTsgfQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5BZnRlckNv
bGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlKTsgfQorICAgIEVXb3JkQnJl
YWsgd29yZEJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdvcmRCcmVhaz4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrKTsgfQorICAgIEVPdmVyZmxvd1dyYXAgb3ZlcmZs
b3dXcmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93V3JhcD4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwKTsgfQorICAgIEVOQlNQTW9kZSBuYnNwTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVOQlNQTW9kZT4obV9yYXJlSW5oZXJpdGVkRGF0
YS0+bmJzcE1vZGUpOyB9CisgICAgTGluZUJyZWFrIGxpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PExpbmVCcmVhaz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrKTsg
fQorICAgIEh5cGhlbnMgaHlwaGVucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEh5cGhl
bnM+KG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMpOyB9CisgICAgc2hvcnQgaHlwaGVuYXRp
b25MaW1pdEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uTGltaXRCZWZvcmU7IH0KKyAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7
IH0KKyAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0TGluZXM7IH0KKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpOyB9Ci0gICAg
RUJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVy
Rml0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQpOyB9Ci0gICAgRVJlc2l6ZSBy
ZXNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUmVzaXplPihyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9yZXNpemUpOyB9Ci0gICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhpcz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
bXVsdGlDb2wtPm1fYXhpcyk7IH0KLSAgICBib29sIGhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25z
dCB7Ci0gICAgICAgIENvbHVtbkF4aXMgYXhpcyA9IGNvbHVtbkF4aXMoKTsKLSAgICAgICAgcmV0
dXJuIGF4aXMgPT0gQXV0b0NvbHVtbkF4aXMgfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9
PSAoYXhpcyA9PSBIb3Jpem9udGFsQ29sdW1uQXhpcyk7Ci0gICAgfQotICAgIENvbHVtblByb2dy
ZXNzaW9uIGNvbHVtblByb2dyZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29s
dW1uUHJvZ3Jlc3Npb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3Byb2dy
ZXNzaW9uKTsgfQotICAgIGZsb2F0IGNvbHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fd2lkdGg7IH0KLSAgICBib29sIGhhc0F1dG9D
b2x1bW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRp
Q29sLT5tX2F1dG9XaWR0aDsgfQotICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fY291bnQ7IH0K
LSAgICBib29sIGhhc0F1dG9Db2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2F1dG9Db3VudDsgfQorICAgIEVCb3JkZXJGaXQgYm9y
ZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Ym9yZGVyRml0KTsgfQorICAgIEVSZXNpemUgcmVzaXplKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVz
aXplKTsgfQorICAgIENvbHVtbkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbHVtbkF4aXM+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlz
KTsgfQorICAgIGJvb2wgaGFzSW5saW5lQ29sdW1uQXhpcygpIGNvbnN0OworICAgIENvbHVtblBy
b2dyZXNzaW9uIGNvbHVtblByb2dyZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29sdW1uUHJvZ3Jlc3Npb24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5wcm9n
cmVzc2lvbik7IH0KKyAgICBmbG9hdCBjb2x1bW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT53aWR0aDsgfQorICAgIGJvb2wgaGFzQXV0b0Nv
bHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlD
b2wtPmF1dG9XaWR0aDsgfQorICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtbkNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvdW50OyB9CisgICAg
Ym9vbCBoYXNBdXRvQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tdWx0aUNvbC0+YXV0b0NvdW50OyB9CiAgICAgYm9vbCBzcGVjaWZpZXNDb2x1bW5z
KCkgY29uc3QgeyByZXR1cm4gIWhhc0F1dG9Db2x1bW5Db3VudCgpIHx8ICFoYXNBdXRvQ29sdW1u
V2lkdGgoKSB8fCAhaGFzSW5saW5lQ29sdW1uQXhpcygpOyB9Ci0gICAgQ29sdW1uRmlsbCBjb2x1
bW5GaWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uRmlsbD4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fZmlsbCk7IH0KLSAgICBmbG9hdCBjb2x1bW5HYXAo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9nYXA7
IH0KLSAgICBib29sIGhhc05vcm1hbENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX25vcm1hbEdhcDsgfQotICAgIEVCb3JkZXJTdHls
ZSBjb2x1bW5SdWxlU3R5bGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9tdWx0aUNvbC0+bV9ydWxlLnN0eWxlKCk7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5S
dWxlV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNv
bC0+cnVsZVdpZHRoKCk7IH0KLSAgICBib29sIGNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fcnVsZS5pc1Ry
YW5zcGFyZW50KCk7IH0KLSAgICBDb2x1bW5TcGFuIGNvbHVtblNwYW4oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb2x1bW5TcGFuPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNv
bC0+bV9jb2x1bW5TcGFuKTsgfQotCi0gICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3Jt
LT5tX29wZXJhdGlvbnM7IH0KLSAgICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feDsgfQot
ICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV95OyB9Ci0gICAgZmxvYXQgdHJhbnNmb3Jt
T3JpZ2luWigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9y
bS0+bV96OyB9Ci0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAhcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlz
RW1wdHkoKTsgfQotCi0gICAgVGV4dEVtcGhhc2lzRmlsbCB0ZXh0RW1waGFzaXNGaWxsKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzRmlsbD4ocmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc0ZpbGwpOyB9CisgICAgQ29sdW1uRmlsbCBjb2x1bW5GaWxsKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uRmlsbD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bXVsdGlDb2wtPmZpbGwpOyB9CisgICAgZmxvYXQgY29sdW1uR2FwKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmdhcDsgfQorICAgIGJvb2wgaGFz
Tm9ybWFsQ29sdW1uR2FwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bXVsdGlDb2wtPm5vcm1hbEdhcDsgfQorICAgIEVCb3JkZXJTdHlsZSBjb2x1bW5SdWxlU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cnVsZS5z
dHlsZSgpOyB9CisgICAgdW5zaWduZWQgc2hvcnQgY29sdW1uUnVsZVdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGVXaWR0aCgpOyB9Cisg
ICAgYm9vbCBjb2x1bW5SdWxlSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIENv
bHVtblNwYW4gY29sdW1uU3BhbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblNw
YW4+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5jb2x1bW5TcGFuKTsgfQorCisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zOyB9CisgICAgY29u
c3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1P
cmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3Jt
LT55OyB9CisgICAgZmxvYXQgdHJhbnNmb3JtT3JpZ2luWigpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+ejsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CisKKyAgICBUZXh0RW1waGFzaXNGaWxs
IHRleHRFbXBoYXNpc0ZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFz
aXNGaWxsPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKTsgfQogICAgIFRl
eHRFbXBoYXNpc01hcmsgdGV4dEVtcGhhc2lzTWFyaygpIGNvbnN0OwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrOyB9Ci0gICAgVGV4dEVtcGhhc2lzUG9z
aXRpb24gdGV4dEVtcGhhc2lzUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RW1waGFzaXNQb3NpdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0
aW9uKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1h
cms7IH0KKyAgICBUZXh0RW1waGFzaXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbik7IH0KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdDsKIAotICAgIFJ1YnlQb3NpdGlvbiBy
dWJ5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSdWJ5UG9zaXRpb24+KHJh
cmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbik7IH0KKyAgICBSdWJ5UG9zaXRpb24gcnVi
eVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UnVieVBvc2l0aW9uPihtX3Jh
cmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9zaXRpb24pOyB9CiAKLSAgICBUZXh0T3JpZW50YXRpb24g
dGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0
aW9uPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24pOyB9CisgICAgVGV4dE9y
aWVudGF0aW9uIHRleHRPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRPcmllbnRhdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uKTsgfQog
Ci0gICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9i
amVjdEZpdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0KTsgfQotICAgIExlbmd0
aFBvaW50IG9iamVjdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fb2JqZWN0UG9zaXRpb247IH0KKyAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5v
YmplY3RGaXQpOyB9CisgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlvbjsgfQogCiAgICAgLy8g
UmV0dXJuIHRydWUgaWYgYW55IHRyYW5zZm9ybSByZWxhdGVkIHByb3BlcnR5IChjdXJyZW50bHkg
dHJhbnNmb3JtLCB0cmFuc2Zvcm1TdHlsZTNEIG9yIHBlcnNwZWN0aXZlKQotICAgIC8vIGluZGlj
YXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zvcm1pbmcKKyAgICAvLyBpbmRpY2F0ZXMgdGhhdCB3ZSBh
cmUgdHJhbnNmb3JtaW5nLgogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtKCkgfHwgcHJlc2VydmVzM0QoKSB8fCBoYXNQZXJz
cGVjdGl2ZSgpOyB9CiAKICAgICBlbnVtIEFwcGx5VHJhbnNmb3JtT3JpZ2luIHsgSW5jbHVkZVRy
YW5zZm9ybU9yaWdpbiwgRXhjbHVkZVRyYW5zZm9ybU9yaWdpbiB9OwogICAgIHZvaWQgYXBwbHlU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94LCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0
OwogICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0KTsKIAotICAgIGJvb2wgaGFz
TWFzaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaGFzSW1h
Z2UoKSB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsg
fQorICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hc2suaGFzSW1hZ2UoKSB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1h
Z2UuaGFzSW1hZ2UoKTsgfQogCi0gICAgVGV4dENvbWJpbmUgdGV4dENvbWJpbmUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Q29tYmluZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dGV4dENvbWJpbmUpOyB9CisgICAgVGV4dENvbWJpbmUgdGV4dENvbWJpbmUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0Q29tYmluZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4
dENvbWJpbmUpOyB9CiAgICAgYm9vbCBoYXNUZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHRl
eHRDb21iaW5lKCkgIT0gVGV4dENvbWJpbmVOb25lOyB9CiAKLSAgICB1bnNpZ25lZCB0YWJTaXpl
KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZTsgfQorICAgIHVu
c2lnbmVkIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50YWJT
aXplOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBHZXR0ZXJzCiAKLSAgICBib29sIGhhc0Zsb3dJbnRv
KCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQuaXNO
dWxsKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkOyB9Ci0gICAgYm9vbCBoYXNG
bG93RnJvbSgpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25U
aHJlYWQuaXNOdWxsKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRocmVhZCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZDsgfQot
ICAgIFJlZ2lvbkZyYWdtZW50IHJlZ2lvbkZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVnaW9uRnJhZ21lbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdt
ZW50KTsgfQorICAgIGJvb2wgaGFzRmxvd0ludG8oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Zmxvd1RocmVhZC5pc051bGwoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmZsb3dUaHJlYWQ7IH0KKyAgICBib29sIGhhc0Zsb3dGcm9tKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnJlZ2lvblRocmVhZC5pc051bGwoKTsgfQorICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgcmVnaW9uVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cmVnaW9uVGhyZWFkOyB9CisgICAgUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJh
Z21lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWdpb25GcmFnbWVudD4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uRnJhZ21lbnQpOyB9CiAKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGxpbmVHcmlkKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fbGlu
ZUdyaWQ7IH0KLSAgICBMaW5lU25hcCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PExpbmVTbmFwPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCk7IH0KLSAgICBMaW5l
QWxpZ24gbGluZUFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUFsaWduPihy
YXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQWxpZ24pOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsaW5lR3JpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlk
OyB9CisgICAgTGluZVNuYXAgbGluZVNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxM
aW5lU25hcD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZVNuYXApOyB9CisgICAgTGluZUFsaWdu
IGxpbmVBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVBbGlnbj4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUFsaWduKTsgfQogCi0gICAgLy8gQXBwbGUtc3BlY2lmaWMgcHJv
cGVydHkgZ2V0dGVyIG1ldGhvZHMKLSAgICBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvaW50ZXJFdmVudHM+KGluaGVyaXRlZF9mbGFn
cy5fcG9pbnRlckV2ZW50cyk7IH0KLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25z
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQo
KTsgfQotICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNpdGlvbnMuZ2V0KCk7IH0KKyAgICBFUG9p
bnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBv
aW50ZXJFdmVudHM+KG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyk7IH0KKyAgICBjb25z
dCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YW5pbWF0aW9ucy5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IHRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJh
bnNpdGlvbnMuZ2V0KCk7IH0KIAotICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRpb25zLmdldCgpOyB9Ci0gICAgQW5p
bWF0aW9uTGlzdCogdHJhbnNpdGlvbnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90cmFuc2l0aW9ucy5nZXQoKTsgfQorICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOyB9CisgICAg
QW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbnMoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50cmFuc2l0aW9ucy5nZXQoKTsgfQogICAgIAotICAgIGJvb2wgaGFzQW5pbWF0aW9uc09y
VHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQW5p
bWF0aW9uc09yVHJhbnNpdGlvbnMoKTsgfQorICAgIGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNp
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNBbmltYXRp
b25zT3JUcmFuc2l0aW9ucygpOyB9CiAKICAgICBBbmltYXRpb25MaXN0JiBlbnN1cmVBbmltYXRp
b25zKCk7CiAgICAgQW5pbWF0aW9uTGlzdCYgZW5zdXJlVHJhbnNpdGlvbnMoKTsKIAotICAgIGJv
b2wgaGFzQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FuaW1hdGlvbnMgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy0+c2l6ZSgp
ID4gMDsgfQotICAgIGJvb2wgaGFzVHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucyAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2l0aW9ucy0+c2l6ZSgpID4gMDsgfQorICAgIGJvb2wgaGFzQW5pbWF0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMgJiYgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9ucy0+c2l6ZSgpID4gMDsgfQorICAgIGJvb2wgaGFzVHJh
bnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0
aW9ucyAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9ucy0+c2l6ZSgpID4gMDsg
fQogCi0gICAgLy8gcmV0dXJuIHRoZSBmaXJzdCBmb3VuZCBBbmltYXRpb24gKGluY2x1ZGluZyAn
YWxsJyB0cmFuc2l0aW9ucykKKyAgICAvLyBSZXR1cm4gdGhlIGZpcnN0IGZvdW5kIEFuaW1hdGlv
biAoaW5jbHVkaW5nICdhbGwnIHRyYW5zaXRpb25zKS4KICAgICBjb25zdCBBbmltYXRpb24qIHRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIEVUcmFuc2Zv
cm1TdHlsZTNEIHRyYW5zZm9ybVN0eWxlM0QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
VHJhbnNmb3JtU3R5bGUzRD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtU3R5bGUz
RCk7IH0KLSAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fdHJhbnNmb3JtU3R5bGUzRCA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUz
RDsgfQorICAgIEVUcmFuc2Zvcm1TdHlsZTNEIHRyYW5zZm9ybVN0eWxlM0QoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFVHJhbnNmb3JtU3R5bGUzRD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dHJhbnNmb3JtU3R5bGUzRCk7IH0KKyAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtU3R5bGUzRCA9PSBUcmFuc2Zv
cm1TdHlsZTNEUHJlc2VydmUzRDsgfQogCi0gICAgRUJhY2tmYWNlVmlzaWJpbGl0eSBiYWNrZmFj
ZVZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2ZhY2VWaXNpYmls
aXR5PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZmFjZVZpc2liaWxpdHkpOyB9Ci0gICAg
ZmxvYXQgcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9wZXJzcGVjdGl2ZTsgfQotICAgIGJvb2wgaGFzUGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZSA+IDA7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWDsgfQotICAgIGNvbnN0IExlbmd0aCYgcGVyc3Bl
Y3RpdmVPcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmVPcmlnaW5ZOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYgcGFnZVNpemUoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wYWdlU2l6ZTsgfQotICAgIFBhZ2VT
aXplVHlwZSBwYWdlU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQYWdlU2l6
ZVR5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BhZ2VTaXplVHlwZSk7IH0KKyAgICBFQmFj
a2ZhY2VWaXNpYmlsaXR5IGJhY2tmYWNlVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVCYWNrZmFjZVZpc2liaWxpdHk+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tm
YWNlVmlzaWJpbGl0eSk7IH0KKyAgICBmbG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlOyB9CisgICAgYm9vbCBoYXNQZXJz
cGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0
aXZlID4gMDsgfQorICAgIGNvbnN0IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5YKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblk7IH0KKyAgICBjb25zdCBMZW5n
dGhTaXplJiBwYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnBhZ2VTaXplOyB9CisgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFBhZ2VTaXplVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGFn
ZVNpemVUeXBlKTsgfQogICAgIAotICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW47IH0KLSAg
ICBjb25zdCBMaW5lQ2xhbXBWYWx1ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcDsgfQotICAgIGNvbnN0IEludFNpemUmIGluaXRpYWxM
ZXR0ZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0
dGVyOyB9CisgICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQm94Q29udGFpbjsgfQorICAgIGNvbnN0IExpbmVD
bGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5saW5lQ2xhbXA7IH0KKyAgICBjb25zdCBJbnRTaXplJiBpbml0aWFsTGV0dGVyKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aW5pdGlhbExldHRlcjsgfQogICAg
IGludCBpbml0aWFsTGV0dGVyRHJvcCgpIGNvbnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS53
aWR0aCgpOyB9CiAgICAgaW50IGluaXRpYWxMZXR0ZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBp
bml0aWFsTGV0dGVyKCkuaGVpZ2h0KCk7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0g
ICAgVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
b3VjaEFjdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdG91Y2hBY3Rpb24pOyB9CisgICAg
VG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3Vj
aEFjdGlvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dG91Y2hBY3Rpb24pOyB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCkBAIC0xMTUwLDY5ICs3MTIsNjIgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9yIHRhcEhp
Z2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hs
aWdodENvbG9yOyB9CisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCB0b3VjaENhbGxvdXRFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRvdWNoQ2FsbG91dEVuYWJsZWQ7IH0KKyAgICBib29s
IHRvdWNoQ2FsbG91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50b3VjaENhbGxvdXRFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmc7IH0KKyAgICBib29sIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nOyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgVGV4dFNpemVBZGp1c3Rt
ZW50IHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTaXplQWRqdXN0OyB9CisgICAgVGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KICNl
bmRpZgogCi0gICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5
KTsgfQorICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RVRleHRTZWN1cml0eT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5
KTsgfQogCi0gICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxXcml0aW5nTW9kZT4oaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUpOyB9Cisg
ICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxX
cml0aW5nTW9kZT4obV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSk7IH0KICAgICBib29sIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29sIGlzVmVydGljYWxXcml0
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzVmVydGljYWxXcml0aW5nTW9kZSh3
cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUod3JpdGluZ01v
ZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KIAot
ICAgIEltYWdlT3JpZW50YXRpb25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdAotICAgIHsK
LSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3Jp
ZW50YXRpb24pOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
OwotI2VuZGlmCi0gICAgfQorICAgIEltYWdlT3JpZW50YXRpb25FbnVtIGltYWdlT3JpZW50YXRp
b24oKSBjb25zdDsKIAotICAgIEVJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbWFnZVJlbmRlcmluZz4ocmFyZUluaGVyaXRlZERhdGEt
Pm1faW1hZ2VSZW5kZXJpbmcpOyB9CisgICAgRUltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5n
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUltYWdlUmVuZGVyaW5nPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZyk7IH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVT
T0xVVElPTikKLSAgICBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW1hZ2VSZXNvbHV0aW9uU291cmNl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU291cmNlPihyYXJl
SW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UpOyB9Ci0gICAgSW1hZ2VSZXNv
bHV0aW9uU25hcCBpbWFnZVJlc29sdXRpb25TbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VSZXNvbHV0aW9uU25hcD4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0
aW9uU25hcCk7IH0KLSAgICBmbG9hdCBpbWFnZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb247IH0KKyAgICBJbWFnZVJlc29sdXRp
b25Tb3VyY2UgaW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VSZXNvbHV0aW9uU291cmNlPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29s
dXRpb25Tb3VyY2UpOyB9CisgICAgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbWFnZVJlc29sdXRpb25T
bmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNvbHV0aW9uU25hcD4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcCk7IH0KKyAgICBmbG9hdCBpbWFn
ZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJl
c29sdXRpb247IH0KICNlbmRpZgogICAgIAotICAgIEVTcGVhayBzcGVhaygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVTcGVhaz4ocmFyZUluaGVyaXRlZERhdGEtPnNwZWFrKTsgfQorICAg
IEVTcGVhayBzcGVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVTcGVhaz4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+c3BlYWspOyB9CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxl
RmlsdGVyKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmlsdGVy
LmFjY2VzcygpLT5tX29wZXJhdGlvbnM7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1f
b3BlcmF0aW9uczsgfQotICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gIXJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0Vt
cHR5KCk7IH0KKyAgICBGaWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxlRmlsdGVyKCkgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5maWx0ZXIuYWNjZXNzKCkub3BlcmF0aW9u
czsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlci0+b3BlcmF0aW9uczsgfQorICAgIGJvb2wg
aGFzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRl
ci0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNSZWZl
cmVuY2VGaWx0ZXJPbmx5KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQot
ICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFibGVCYWNrZHJvcEZpbHRlcigpIHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2JhY2tkcm9wRmlsdGVyLmFjY2VzcygpLT5t
X29wZXJhdGlvbnM7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZHJvcEZpbHRl
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVy
LT5tX29wZXJhdGlvbnM7IH0KLSAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyLT5tX29wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFi
bGVCYWNrZHJvcEZpbHRlcigpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuYmFja2Ryb3BGaWx0ZXIuYWNjZXNzKCkub3BlcmF0aW9uczsgfQorICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGJhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXItPm9wZXJhdGlvbnM7IH0KKyAgICBib29sIGhhc0Jh
Y2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJh
Y2tkcm9wRmlsdGVyLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KICNlbHNl
CiAgICAgYm9vbCBoYXNCYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgQmxlbmRNb2RlIGJsZW5k
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4ocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlKTsgfQotICAgIHZvaWQgc2V0QmxlbmRNb2Rl
KEJsZW5kTW9kZSBibGVuZE1vZGUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9l
ZmZlY3RpdmVCbGVuZE1vZGUsIGJsZW5kTW9kZSk7IH0KLSAgICBib29sIGhhc0JsZW5kTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlKSAhPSBCbGVuZE1vZGVOb3JtYWw7IH0KKyAgICBCbGVu
ZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUpOyB9CisgICAgdm9pZCBz
ZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBlZmZlY3RpdmVCbGVuZE1vZGUsIG1vZGUpOyB9CisgICAgYm9vbCBoYXNCbGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSkgIT0gQmxlbmRNb2RlTm9ybWFsOyB9CiAKLSAgICBJ
c29sYXRpb24gaXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0aW9u
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pc29sYXRpb24pOyB9Ci0gICAgdm9pZCBzZXRJc29s
YXRpb24oSXNvbGF0aW9uIGlzb2xhdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2lzb2xhdGlvbiwgaXNvbGF0aW9uKTsgfQotICAgIGJvb2wgaGFzSXNvbGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faXNvbGF0aW9uICE9IElzb2xhdGlv
bkF1dG87IH0KKyAgICBJc29sYXRpb24gaXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8SXNvbGF0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pc29sYXRpb24pOyB9Cisg
ICAgdm9pZCBzZXRJc29sYXRpb24oSXNvbGF0aW9uIGlzb2xhdGlvbikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGlzb2xhdGlvbiwgaXNvbGF0aW9uKTsgfQorICAgIGJvb2wgaGFz
SXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aXNvbGF0
aW9uICE9IElzb2xhdGlvbkF1dG87IH0KICNlbHNlCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIEJsZW5kTW9kZU5vcm1hbDsgfQogICAgIGJvb2wgaGFzQmxlbmRNb2Rl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEyMjQsNTczICs3NzksNTA2IEBAIHB1Ymxp
YzoKICAgICBib29sIHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBj
b25zdDsKIAogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKLSAgICBUcmFpbGluZ1dvcmQg
dHJhaWxpbmdXb3JkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhaWxpbmdXb3JkPihy
YXJlSW5oZXJpdGVkRGF0YS0+dHJhaWxpbmdXb3JkKTsgfQorICAgIFRyYWlsaW5nV29yZCB0cmFp
bGluZ1dvcmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUcmFpbGluZ1dvcmQ+KG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRyYWlsaW5nV29yZCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKLSAgICBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9uU3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBsZVBheUJ1dHRvblN0eWxlPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hcHBsZVBheUJ1dHRvblN0eWxlKTsgfQotICAgIEFwcGxlUGF5QnV0dG9u
VHlwZSBhcHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBs
ZVBheUJ1dHRvblR5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGxlUGF5QnV0dG9uVHlw
ZSk7IH0KKyAgICBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9uU3R5bGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBsZVBheUJ1dHRvblN0eWxlPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hcHBsZVBheUJ1dHRvblN0eWxlKTsgfQorICAgIEFwcGxlUGF5QnV0dG9uVHlw
ZSBhcHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBsZVBh
eUJ1dHRvblR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9uVHlwZSk7
IH0KICNlbmRpZgogCiAgICAgdm9pZCBjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVydGllcygp
OwogCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMKIAotICAgIHZvaWQgc2V0RGlzcGxheShF
RGlzcGxheSB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRFZmZlY3RpdmVEaXNwbGF5KHYpOyB9
Ci0gICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgdikgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0T3JpZ2luYWxEaXNwbGF5KHYpOyB9Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihFUG9z
aXRpb24gdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0UG9zaXRpb24odik7IH0KLSAgICB2b2lk
IHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGbG9hdGluZyh2
KTsgfQotCi0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC5sZWZ0KCksIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRSaWdodChMZW5ndGggdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQucmlnaHQoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2
b2lkIHNldFRvcChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQudG9wKCksIFdU
Rk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgb2Zmc2V0LmJvdHRvbSgpLCBXVEZNb3ZlKHYpKTsgfQotCi0gICAgdm9pZCBzZXRXaWR0
aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYpKTsgfQotICAg
IHZvaWQgc2V0SGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZN
b3ZlKHYpKTsgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoTGVuZ3RoIHYpCi0gICAgewot
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgU0VU
X1ZBUihtX2JveCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRFZmZlY3RpdmVEaXNwbGF5KHYpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5hbERpc3Bs
YXkoRURpc3BsYXkgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldE9yaWdpbmFsRGlzcGxheSh2
KTsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRQb3NpdGlvbih2KTsgfQorICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsg
bV9ub25Jbmhlcml0ZWRGbGFncy5zZXRGbG9hdGluZyh2KTsgfQogCi0gICAgdm9pZCBzZXRMb2dp
Y2FsSGVpZ2h0KExlbmd0aCB2KQotICAgIHsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZNb3Zl
KHYpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1fd2lk
dGgsIFdURk1vdmUodikpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgc2V0TGVmdChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LmxlZnQoKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNF
VF9WQVIobV9zdXJyb3VuZERhdGEsIG9mZnNldC5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIG9mZnNldC50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Qm90dG9t
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBvZmZzZXQuYm90dG9t
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KIAotICAgIHZvaWQgc2V0TWluV2lkdGgoTGVuZ3RoIHYp
IHsgU0VUX1ZBUihtX2JveCwgbV9taW5XaWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNl
dE1heFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWF4V2lkdGgsIFdURk1vdmUo
dikpOyB9Ci0gICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwg
bV9taW5IZWlnaHQsIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXhIZWlnaHQoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhIZWlnaHQsIFdURk1vdmUodikpOyB9CisgICAgdm9p
ZCBzZXRXaWR0aChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fd2lkdGgs
IFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEhlaWdodChMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX2JveERhdGEsIG1faGVpZ2h0LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisKKyAg
ICB2b2lkIHNldExvZ2ljYWxXaWR0aChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRMb2dpY2FsSGVp
Z2h0KExlbmd0aCYmKTsKKworICAgIHZvaWQgc2V0TWluV2lkdGgoTGVuZ3RoJiYgbGVuZ3RoKSB7
IFNFVF9WQVIobV9ib3hEYXRhLCBtX21pbldpZHRoLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXhXaWR0aChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1f
bWF4V2lkdGgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1pbkhlaWdodChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWluSGVpZ2h0LCBXVEZNb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXhIZWlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV9ib3hEYXRhLCBtX21heEhlaWdodCwgV1RGTW92ZShsZW5ndGgpKTsgfQogCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4g
ZGFzaGJvYXJkUmVnaW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2Rhc2hib2FyZFJlZ2lvbnM7IH0KLSAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbnMoVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiByZWdpb25zKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZGFzaGJvYXJkUmVnaW9ucywgcmVnaW9ucyk7IH0KLQotICAgIHZvaWQgc2V0RGFz
aGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBMZW5ndGggdCwgTGVu
Z3RoIHIsIExlbmd0aCBiLCBMZW5ndGggbCwgYm9vbCBhcHBlbmQpCi0gICAgewotICAgICAgICBT
dHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247Ci0gICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVs
OwotICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpID0gV1RGTW92ZSh0KTsKLSAgICAgICAgcmVn
aW9uLm9mZnNldC5yaWdodCgpID0gV1RGTW92ZShyKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5i
b3R0b20oKSA9IFdURk1vdmUoYik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RG
TW92ZShsKTsKLSAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwotICAgICAgICBpZiAoIWFwcGVu
ZCkKLSAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2Fy
ZFJlZ2lvbnMuY2xlYXIoKTsKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fZGFzaGJvYXJkUmVnaW9ucy5hcHBlbmQocmVnaW9uKTsKLSAgICB9CisgICAgY29uc3QgVmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgZGFzaGJvYXJkUmVnaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRhc2hib2FyZFJlZ2lvbnM7IH0KKyAgICB2b2lk
IHNldERhc2hib2FyZFJlZ2lvbnMoY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYg
cmVnaW9ucykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRhc2hib2FyZFJlZ2lv
bnMsIHJlZ2lvbnMpOyB9CisgICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb24oaW50IHR5cGUsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExlbmd0aCYm
IGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCwgYm9vbCBhcHBlbmQpOwogI2VuZGlmCiAKICAgICB2b2lk
IHJlc2V0Qm9yZGVyKCkgeyByZXNldEJvcmRlckltYWdlKCk7IHJlc2V0Qm9yZGVyVG9wKCk7IHJl
c2V0Qm9yZGVyUmlnaHQoKTsgcmVzZXRCb3JkZXJCb3R0b20oKTsgcmVzZXRCb3JkZXJMZWZ0KCk7
IHJlc2V0Qm9yZGVyUmFkaXVzKCk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wKCkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AsIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCBy
ZXNldEJvcmRlclJpZ2h0KCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodCwgQm9y
ZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tKCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9ib3R0b20sIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCByZXNl
dEJvcmRlckxlZnQoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQsIEJvcmRlclZh
bHVlKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckltYWdlKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV9pbWFnZSwgTmluZVBpZWNlSW1hZ2UoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9y
ZGVyVG9wKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AsIEJvcmRlclZh
bHVlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclJpZ2h0KCkgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV9yaWdodCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0
Qm9yZGVyQm90dG9tKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20s
IEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckxlZnQoKSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xlZnQsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9p
ZCByZXNldEJvcmRlckltYWdlKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9p
bWFnZSwgTmluZVBpZWNlSW1hZ2UoKSk7IH0KICAgICB2b2lkIHJlc2V0Qm9yZGVyUmFkaXVzKCkg
eyByZXNldEJvcmRlclRvcExlZnRSYWRpdXMoKTsgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygp
OyByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKTsgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlclRvcExlZnRSYWRpdXMoKSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX3RvcExlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KLSAg
ICB2b2lkIHJlc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX3RvcFJpZ2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9pZCByZXNl
dEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2Jv
dHRvbUxlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJp
Z2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcExl
ZnRSYWRpdXMoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcExlZnQsIGlu
aXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wUmlnaHRSYWRp
dXMoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcFJpZ2h0LCBpbml0aWFs
Qm9yZGVyUmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbUxlZnQsIGluaXRpYWxC
b3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBpbml0aWFs
Qm9yZGVyUmFkaXVzKCkpOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9jb2xvciwgdik7IH0KKyAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZERhdGEsIGNvbG9yLCB2KTsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3hQb3Np
dGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV95
UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXpl
KEVGaWxsU2l6ZVR5cGUgYikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1f
c2l6ZVR5cGUsIGIpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZUxlbmd0aChMZW5ndGhT
aXplIHNpemUpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3NpemVMZW5n
dGgsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQubV94
UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRZUG9z
aXRpb24oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dy
b3VuZC5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0QmFja2dy
b3VuZFNpemUoRUZpbGxTaXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFj
a2dyb3VuZC5tX3NpemVUeXBlLCBiKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemVMZW5n
dGgoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3Jv
dW5kLm1fc2l6ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KICAgICAKLSAgICB2b2lkIHNldEJv
cmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2ltYWdlLCBiKTsgfQorICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBp
ZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1faW1hZ2UsIGIp
OyB9CiAgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNvdXJjZShSZWZQdHI8U3R5bGVJbWFnZT4mJik7
Ci0gICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5ndGhCb3gpOwotICAgIHZvaWQgc2V0
Qm9yZGVySW1hZ2VXaWR0aChMZW5ndGhCb3gpOwotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRz
ZXQoTGVuZ3RoQm94KTsKLQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhMZW5ndGhT
aXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgV1RGTW92ZShz
aXplKSk7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKExlbmd0aFNpemUgc2l6
ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BSaWdodCwgV1RGTW92ZShzaXplKSk7
IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIFdURk1vdmUoc2l6ZSkpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9
Ci0KLSAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplIHMpCi0gICAgewotICAgICAg
ICBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKHMpOwotICAgICAgICBzZXRCb3JkZXJUb3BSaWdodFJh
ZGl1cyhzKTsKLSAgICAgICAgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhzKTsKLSAgICAgICAg
c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMocyk7Ci0gICAgfQotICAgIHZvaWQgc2V0Qm9yZGVy
UmFkaXVzKGNvbnN0IEludFNpemUmIHMpCi0gICAgewotICAgICAgICBzZXRCb3JkZXJSYWRpdXMo
TGVuZ3RoU2l6ZShMZW5ndGgocy53aWR0aCgpLCBGaXhlZCksIExlbmd0aChzLmhlaWdodCgpLCBG
aXhlZCkpKTsKLSAgICB9Ci0gICAgCisgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5n
dGhCb3gmJik7CisgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCYmKTsKKyAg
ICB2b2lkIHNldEJvcmRlckltYWdlT3V0c2V0KExlbmd0aEJveCYmKTsKKworICAgIHZvaWQgc2V0
Qm9yZGVyVG9wTGVmdFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV90b3BMZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0
Qm9yZGVyVG9wUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJv
dW5kRGF0YSwgYm9yZGVyLm1fdG9wUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBz
ZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9z
dXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbUxlZnQsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAg
dm9pZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b21SaWdodCwgV1RGTW92ZShzaXplKSk7
IH0KKworICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUmJik7CisgICAgdm9pZCBz
ZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYpOworCiAgICAgUm91bmRlZFJlY3QgZ2V0Um91
bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1
ZSkgY29uc3Q7CiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0
IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRy
dWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKIAogICAgIFJv
dW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3Jk
ZXJSZWN0LCBMYXlvdXRVbml0IHRvcFdpZHRoLCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLAogICAg
ICAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5pdCByaWdodFdpZHRoLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
ID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aChmbG9hdCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdik7IH0KLSAgICB2b2lk
IHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBi
b3JkZXIubV9sZWZ0Lm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIu
bV9sZWZ0LCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRXaWR0aChmbG9hdCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodENvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVy
Lm1fcmlnaHQsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BXaWR0aChmbG9hdCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0
Qm9yZGVyVG9wU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wLm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX3RvcCwg
dik7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3Jk
ZXJCb3R0b21TdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9ib3R0b20ubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbUNvbG9yKGNv
bnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1f
Ym90dG9tLCB2KTsgfQotCi0gICAgdm9pZCBzZXRPdXRsaW5lV2lkdGgoZmxvYXQgdikgeyBTRVRf
VkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRP
dXRsaW5lU3R5bGVJc0F1dG8oT3V0bGluZUlzQXV0byBpc0F1dG8pIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fb3V0bGluZS5tX2lzQXV0bywgaXNBdXRvKTsgfQotICAgIHZvaWQgc2V0T3V0bGlu
ZVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUu
bV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldE91dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikg
eyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUsIHYpOyB9Ci0K
LSAgICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Mu
c2V0T3ZlcmZsb3dYKHYpOyB9Ci0gICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IHYpIHsg
bm9uaW5oZXJpdGVkX2ZsYWdzLnNldE92ZXJmbG93WSh2KTsgfQotICAgIHZvaWQgc2V0VmlzaWJp
bGl0eShFVmlzaWJpbGl0eSB2KSB7IGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IHY7IH0K
LSAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxpZ24gdikgeyBub25pbmhlcml0
ZWRfZmxhZ3Muc2V0VmVydGljYWxBbGlnbih2KTsgfQotICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZB
UihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0KLSAgICB2b2lk
IHNldEhhc0NsaXAoYm9vbCBiID0gdHJ1ZSkgeyBTRVRfVkFSKHZpc3VhbCwgaGFzQ2xpcCwgYik7
IH0KLSAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQo
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5yaWdodCgpLCBXVEZNb3ZlKGxl
bmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2
aXN1YWwsIGNsaXAudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBC
b3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmln
aHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KTsKLSAgICB2b2lkIHNldENsaXAoTGVuZ3Ro
Qm94IGJveCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcCwgV1RGTW92ZShib3gpKTsgfQotCi0gICAg
dm9pZCBzZXRVbmljb2RlQmlkaShFVW5pY29kZUJpZGkgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Mu
c2V0VW5pY29kZUJpZGkoYik7IH0KLQotICAgIHZvaWQgc2V0Q2xlYXIoRUNsZWFyIHYpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldENsZWFyKHYpOyB9Ci0gICAgdm9pZCBzZXRUYWJsZUxheW91dChF
VGFibGVMYXlvdXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VGFibGVMYXlvdXQodik7IH0K
KyAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxl
ZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIu
bV9sZWZ0Lm1fc3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vycm91bmREYXRhLCBib3JkZXIu
bV9sZWZ0LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRXaWR0aChmbG9hdCB2KSB7IFNF
VF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpOyB9CisgICAg
dm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3Jk
ZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1
cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BX
aWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcC5tX3dp
ZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLm1fc3R5bGUsIHYpOyB9CisgICAg
dm9pZCBzZXRCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVf
Q09MT1IobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcCwgdik7IH0KKyAgICB2b2lkIHNldEJv
cmRlckJvdHRvbVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVy
Lm1fYm90dG9tLm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShF
Qm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20u
bV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90
dG9tLCB2KTsgfQorCisgICAgdm9pZCBzZXRPdXRsaW5lV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldE91
dGxpbmVTdHlsZUlzQXV0byhPdXRsaW5lSXNBdXRvIGlzQXV0bykgeyBTRVRfVkFSKG1fYmFja2dy
b3VuZERhdGEsIG91dGxpbmUubV9pc0F1dG8sIGlzQXV0byk7IH0KKyAgICB2b2lkIHNldE91dGxp
bmVTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIG91dGxp
bmUubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldE91dGxpbmVDb2xvcihjb25zdCBDb2xvciYg
dikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZSwgdik7
IH0KKworICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyB2KSB7IG1fbm9uSW5oZXJpdGVk
RmxhZ3Muc2V0T3ZlcmZsb3dYKHYpOyB9CisgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93
IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRPdmVyZmxvd1kodik7IH0KKyAgICB2b2lkIHNl
dFZpc2liaWxpdHkoRVZpc2liaWxpdHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkg
PSB2OyB9CisgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHYpIHsgbV9u
b25Jbmhlcml0ZWRGbGFncy5zZXRWZXJ0aWNhbEFsaWduKHYpOyB9CisgICAgdm9pZCBzZXRWZXJ0
aWNhbEFsaWduTGVuZ3RoKExlbmd0aCYmIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdU
SCk7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUobGVuZ3RoKSk7
IH0KKworICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIobV92aXN1
YWxEYXRhLCBoYXNDbGlwLCBiKTsgfQorICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
dmlzdWFsRGF0YSwgY2xpcC5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBz
ZXRDbGlwVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC50
b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAuYm90dG9tKCksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXAoTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdo
dCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KTsKKyAgICB2b2lkIHNldENsaXAoTGVu
Z3RoQm94JiYgYm94KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLCBXVEZNb3ZlKGJveCkp
OyB9CisKKyAgICB2b2lkIHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSBiKSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3Muc2V0VW5pY29kZUJpZGkoYik7IH0KKworICAgIHZvaWQgc2V0Q2xlYXIoRUNs
ZWFyIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRDbGVhcih2KTsgfQorICAgIHZvaWQgc2V0
VGFibGVMYXlvdXQoRVRhYmxlTGF5b3V0IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRUYWJs
ZUxheW91dCh2KTsgfQogCiAgICAgYm9vbCBzZXRGb250RGVzY3JpcHRpb24oY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYpOworCiAgICAgLy8gT25seSB1c2VkIGZvciBibGVuZGluZyBmb250
IHNpemVzIHdoZW4gYW5pbWF0aW5nLCBmb3IgTWF0aE1MIGFub255bW91cyBibG9ja3MsIGFuZCBm
b3IgdGV4dCBhdXRvc2l6aW5nLgogICAgIHZvaWQgc2V0Rm9udFNpemUoZmxvYXQpOworCiAjaWYg
RU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICB2b2lkIHNldEZvbnRWYXJpYXRpb25TZXR0aW5n
cyhGb250VmFyaWF0aW9uU2V0dGluZ3MpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldENvbG9yKGNv
bnN0IENvbG9yJik7Ci0gICAgdm9pZCBzZXRUZXh0SW5kZW50KExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0jaWYg
RU5BQkxFKENTUzNfVEVYVCkKLSAgICB2b2lkIHNldFRleHRJbmRlbnRMaW5lKFRleHRJbmRlbnRM
aW5lIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0SW5kZW50TGluZSwgdik7
IH0KLSAgICB2b2lkIHNldFRleHRJbmRlbnRUeXBlKFRleHRJbmRlbnRUeXBlIHYpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0SW5kZW50VHlwZSwgdik7IH0KLSNlbmRpZgotICAg
IHZvaWQgc2V0VGV4dEFsaWduKEVUZXh0QWxpZ24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRf
YWxpZ24gPSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYp
IHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSA9IHY7IH0KLSAgICB2b2lkIGFkZFRv
VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBpbmhlcml0ZWRfZmxh
Z3MuX3RleHRfZGVjb3JhdGlvbnMgfD0gdjsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3Jh
dGlvbnMgPSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2
KSB7IFNFVF9WQVIodmlzdWFsLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRl
eHRJbmRlbnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aW5kZW50LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRB
bGlnbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduID0gdjsgfQorICAgIHZvaWQgc2V0
VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRy
YW5zZm9ybSA9IHY7IH0KKyAgICB2b2lkIGFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4
dERlY29yYXRpb24gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyB8PSB2OyB9
CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7
IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gdjsgfQorICAgIHZvaWQgc2V0VGV4
dERlY29yYXRpb24oVGV4dERlY29yYXRpb24gdikgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgdGV4
dERlY29yYXRpb24sIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHRE
ZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRE
ZWNvcmF0aW9uU3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAoVGV4
dERlY29yYXRpb25Ta2lwIHNraXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RGVjb3JhdGlvblNraXAsIHNraXApOyB9CisgICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRp
b24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYpOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4
dERpcmVjdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gdjsgfQorICAgIHZv
aWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbihib29sIHYpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKHYpOyB9CisgICAgdm9pZCBzZXRMaW5l
SGVpZ2h0KExlbmd0aCYmKTsKKyAgICBib29sIHNldFpvb20oZmxvYXQpOworICAgIHZvaWQgc2V0
Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KKyAgICBib29s
IHNldEVmZmVjdGl2ZVpvb20oZmxvYXQpOworICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20g
dikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRab29tLCB2KTsgfQorCiAjaWYg
RU5BQkxFKENTUzNfVEVYVCkKLSAgICB2b2lkIHNldFRleHRBbGlnbkxhc3QoVGV4dEFsaWduTGFz
dCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dEFsaWduTGFzdCwgdik7IH0K
LSAgICB2b2lkIHNldFRleHRKdXN0aWZ5KFRleHRKdXN0aWZ5IHYpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgbV90ZXh0SnVzdGlmeSwgdik7IH0KKyAgICB2b2lkIHNldFRleHRJbmRlbnRM
aW5lKFRleHRJbmRlbnRMaW5lIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
SW5kZW50TGluZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHRJbmRlbnRUeXBlKFRleHRJbmRlbnRU
eXBlIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0SW5kZW50VHlwZSwgdik7
IH0KKyAgICB2b2lkIHNldFRleHRBbGlnbkxhc3QoVGV4dEFsaWduTGFzdCB2KSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEFsaWduTGFzdCwgdik7IH0KKyAgICB2b2lkIHNldFRl
eHRKdXN0aWZ5KFRleHRKdXN0aWZ5IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0
ZXh0SnVzdGlmeSwgdik7IH0KICNlbmRpZgotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHls
ZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV90ZXh0RGVjb3JhdGlvblN0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25T
a2lwKFRleHREZWNvcmF0aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IG1fdGV4dERlY29yYXRpb25Ta2lwLCBza2lwKTsgfQotICAgIHZvaWQgc2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKFRleHRVbmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uLCB2KTsgfQotICAgIHZvaWQgc2V0RGlyZWN0
aW9uKFRleHREaXJlY3Rpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbiA9IHY7IH0K
LSAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2KSB7IG5vbmluaGVy
aXRlZF9mbGFncy5zZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKHYpOyB9CisKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHZvaWQgc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5n
dGggdik7CisgICAgdm9pZCBzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKICNlbmRp
ZgotICAgIHZvaWQgc2V0TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCk7Ci0g
ICAgYm9vbCBzZXRab29tKGZsb2F0KTsKLSAgICB2b2lkIHNldFpvb21XaXRob3V0UmV0dXJuVmFs
dWUoZmxvYXQgZikgeyBzZXRab29tKGYpOyB9Ci0gICAgYm9vbCBzZXRFZmZlY3RpdmVab29tKGZs
b2F0KTsKLSAgICB2b2lkIHNldFRleHRab29tKFRleHRab29tIHYpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgbV90ZXh0Wm9vbSwgdik7IH0KLSAgICAKKwogI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb25FbnVtIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZU9yaWVudGF0
aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYpKTsgfQorICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uRW51bSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2KSk7IH0KICNlbmRpZgogCi0gICAg
dm9pZCBzZXRJbWFnZVJlbmRlcmluZyhFSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBtX2ltYWdlUmVuZGVyaW5nLCB2KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VS
ZW5kZXJpbmcoRUltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBpbWFnZVJlbmRlcmluZywgdik7IH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKLSAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvblNvdXJjZShJbWFnZVJlc29sdXRpb25Tb3Vy
Y2UgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJj
ZSwgdik7IH0KLSAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvblNuYXAoSW1hZ2VSZXNvbHV0aW9u
U25hcCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZXNvbHV0aW9uU25h
cCwgdik7IH0KLSAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZXNvbHV0aW9uLCBmKTsgfQorICAgIHZvaWQgc2V0
SW1hZ2VSZXNvbHV0aW9uU291cmNlKEltYWdlUmVzb2x1dGlvblNvdXJjZSB2KSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZXNvbHV0aW9uU291cmNlLCB2KTsgfQorICAgIHZv
aWQgc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChJbWFnZVJlc29sdXRpb25TbmFwIHYpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRpb25TbmFwLCB2KTsgfQorICAgIHZv
aWQgc2V0SW1hZ2VSZXNvbHV0aW9uKGZsb2F0IGYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBpbWFnZVJlc29sdXRpb24sIGYpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0V2hpdGVT
cGFjZShFV2hpdGVTcGFjZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UgPSB2OyB9
CisgICAgdm9pZCBzZXRXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHYpIHsgbV9pbmhlcml0ZWRGbGFn
cy53aGl0ZVNwYWNlID0gdjsgfQogCi0gICAgdm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgpOwor
ICAgIHZvaWQgc2V0V29yZFNwYWNpbmcoTGVuZ3RoJiYpOwogICAgIHZvaWQgc2V0TGV0dGVyU3Bh
Y2luZyhmbG9hdCk7CiAKLSAgICB2b2lkIGNsZWFyQmFja2dyb3VuZExheWVycygpIHsgbV9iYWNr
Z3JvdW5kLmFjY2VzcygpLT5tX2JhY2tncm91bmQgPSBGaWxsTGF5ZXIoQmFja2dyb3VuZEZpbGxM
YXllcik7IH0KLSAgICB2b2lkIGluaGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKGNvbnN0IEZpbGxMYXll
ciYgcGFyZW50KSB7IG1fYmFja2dyb3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kID0gcGFyZW50
OyB9CisgICAgdm9pZCBjbGVhckJhY2tncm91bmRMYXllcnMoKSB7IG1fYmFja2dyb3VuZERhdGEu
YWNjZXNzKCkuYmFja2dyb3VuZCA9IEZpbGxMYXllcihCYWNrZ3JvdW5kRmlsbExheWVyKTsgfQor
ICAgIHZvaWQgaW5oZXJpdEJhY2tncm91bmRMYXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQp
IHsgbV9iYWNrZ3JvdW5kRGF0YS5hY2Nlc3MoKS5iYWNrZ3JvdW5kID0gcGFyZW50OyB9CiAKLSAg
ICB2b2lkIGFkanVzdEJhY2tncm91bmRMYXllcnMoKQotICAgIHsKLSAgICAgICAgaWYgKGJhY2tn
cm91bmRMYXllcnMoKS0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5
ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7Ci0gICAgICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5
ZXJzKCkuZmlsbFVuc2V0UHJvcGVydGllcygpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQg
YWRqdXN0QmFja2dyb3VuZExheWVycygpOwogCi0gICAgdm9pZCBjbGVhck1hc2tMYXllcnMoKSB7
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2sgPSBGaWxsTGF5ZXIoTWFza0Zp
bGxMYXllcik7IH0KLSAgICB2b2lkIGluaGVyaXRNYXNrTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYg
cGFyZW50KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2sgPSBwYXJlbnQ7
IH0KKyAgICB2b2lkIGNsZWFyTWFza0xheWVycygpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5tYXNrID0gRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpOyB9CisgICAgdm9pZCBpbmhl
cml0TWFza0xheWVycyhjb25zdCBGaWxsTGF5ZXImIHBhcmVudCkgeyBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLm1hc2sgPSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgYWRqdXN0TWFza0xh
eWVycygpCi0gICAgewotICAgICAgICBpZiAobWFza0xheWVycygpLT5uZXh0KCkpIHsKLSAgICAg
ICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAgICAg
IGVuc3VyZU1hc2tMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgdm9pZCBhZGp1c3RNYXNrTGF5ZXJzKCk7CiAKLSAgICB2b2lkIHNldE1hc2tJbWFn
ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX21hc2suc2V0SW1hZ2UoV1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1hc2tJbWFnZShS
ZWZQdHI8U3R5bGVJbWFnZT4mJiB2KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
bWFzay5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQogCi0gICAgdm9pZCBzZXRNYXNrQm94SW1hZ2Uo
Y29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9tYXNrQm94SW1hZ2UsIGIpOyB9Ci0gICAgdm9pZCBzZXRNYXNrQm94SW1hZ2VTb3VyY2UoUmVm
UHRyPFN0eWxlSW1hZ2U+JiYgdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9t
YXNrQm94SW1hZ2Uuc2V0SW1hZ2UoV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1hc2tYUG9z
aXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21h
c2subV94UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hc2tZUG9z
aXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21h
c2subV95UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hc2tTaXpl
KExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2su
bV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0TWFza0JveEltYWdl
KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbWFza0JveEltYWdlLCBiKTsgfQorICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFJl
ZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5t
YXNrQm94SW1hZ2Uuc2V0SW1hZ2UoV1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1hc2tYUG9z
aXRpb24oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bWFzay5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFza1lQ
b3NpdGlvbihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBtYXNrLm1feVBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXNr
U2l6ZShMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
YXNrLm1fc2l6ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KIAotICAgIHZvaWQgc2V0Qm9yZGVy
Q29sbGFwc2UoRUJvcmRlckNvbGxhcHNlIGNvbGxhcHNlKSB7IGluaGVyaXRlZF9mbGFncy5fYm9y
ZGVyX2NvbGxhcHNlID0gY29sbGFwc2U7IH0KKyAgICB2b2lkIHNldEJvcmRlckNvbGxhcHNlKEVC
b3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNl
ID0gY29sbGFwc2U7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKGZsb2F0
KTsKICAgICB2b2lkIHNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCk7Ci0gICAgdm9pZCBz
ZXRFbXB0eUNlbGxzKEVFbXB0eUNlbGwgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxz
ID0gdjsgfQotICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoRUNhcHRpb25TaWRlIHYpIHsgaW5oZXJp
dGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgPSB2OyB9CisgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVF
bXB0eUNlbGwgdikgeyBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSB2OyB9CisgICAgdm9p
ZCBzZXRDYXB0aW9uU2lkZShFQ2FwdGlvblNpZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmNhcHRp
b25TaWRlID0gdjsgfQogCi0gICAgdm9pZCBzZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9U
eXBlIGFzcGVjdFJhdGlvVHlwZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2Fz
cGVjdFJhdGlvVHlwZSwgYXNwZWN0UmF0aW9UeXBlKTsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0
aW9EZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
YXNwZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0KLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVt
ZXJhdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RS
YXRpb051bWVyYXRvciwgdik7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RS
YXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgYXNwZWN0UmF0aW9UeXBlLCBhc3BlY3RSYXRpb1R5cGUpOyB9CisgICAgdm9pZCBzZXRBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCB2KTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0
aW9OdW1lcmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFz
cGVjdFJhdGlvTnVtZXJhdG9yLCB2KTsgfQogCi0gICAgdm9pZCBzZXRMaXN0U3R5bGVUeXBlKEVM
aXN0U3R5bGVUeXBlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgPSB2OyB9
CisgICAgdm9pZCBzZXRMaXN0U3R5bGVUeXBlKEVMaXN0U3R5bGVUeXBlIHYpIHsgbV9pbmhlcml0
ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gdjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlSW1hZ2Uo
UmVmUHRyPFN0eWxlSW1hZ2U+JiYpOwotICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxp
c3RTdHlsZVBvc2l0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9u
ID0gdjsgfQotCi0gICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFy
Z2luLCBMZW5ndGhCb3goRml4ZWQpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBtYXJnaW4uYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dE1hcmdpbkxlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubGVm
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5SaWdodChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5TdGFydChMZW5ndGgpOwotICAgIHZvaWQgc2V0TWFy
Z2luRW5kKExlbmd0aCk7Ci0KLSAgICB2b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgcGFkZGluZywgTGVuZ3RoQm94KEF1dG8pKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0Jv
eChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcsIFdURk1vdmUoYm94
KSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBwYWRkaW5nLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQ
YWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5i
b3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShs
ZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgcGFkZGluZy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0KLSAg
ICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5
bGUgPSBjOyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRp
b24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gdjsgfQorCisgICAg
dm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLCBMZW5n
dGhCb3goRml4ZWQpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkg
eyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KKyAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X3N1cnJvdW5kRGF0YSwgbWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBtYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJn
aW5SaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2lu
LnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExl
bmd0aCYmKTsKKyAgICB2b2lkIHNldE1hcmdpbkVuZChMZW5ndGgmJik7CisKKyAgICB2b2lkIHJl
c2V0UGFkZGluZygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZywgTGVuZ3RoQm94
KEF1dG8pKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0JveChMZW5ndGhCb3gmJiBib3gpIHsgU0VU
X1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZywgV1RGTW92ZShib3gpKTsgfQorICAgIHZvaWQg
c2V0UGFkZGluZ1RvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
cGFkZGluZy50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0Jv
dHRvbShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy5i
b3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcubGVmdCgpLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShs
ZW5ndGgpKTsgfQorCisgICAgdm9pZCBzZXRDdXJzb3IoRUN1cnNvciBjKSB7IG1faW5oZXJpdGVk
RmxhZ3MuY3Vyc29yID0gYzsgfQogICAgIHZvaWQgYWRkQ3Vyc29yKFJlZlB0cjxTdHlsZUltYWdl
PiYmLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwogICAgIHZvaWQgc2V0
Q3Vyc29yTGlzdChSZWZQdHI8Q3Vyc29yTGlzdD4mJik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxp
c3QoKTsKIAogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICB2b2lkIHNldEN1cnNv
clZpc2liaWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IGluaGVyaXRlZF9mbGFncy5tX2N1cnNv
clZpc2liaWxpdHkgPSBjOyB9CisgICAgdm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNvclZp
c2liaWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBjOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgc2V0SW5zaWRlTGluayhFSW5zaWRlTGluayBpbnNpZGVMaW5rKSB7
IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IGluc2lkZUxpbms7IH0KLSAgICB2b2lkIHNl
dElzTGluayhib29sIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldElzTGluayhiKTsgfQorICAg
IHZvaWQgc2V0SW5zaWRlTGluayhFSW5zaWRlTGluayBpbnNpZGVMaW5rKSB7IG1faW5oZXJpdGVk
RmxhZ3MuaW5zaWRlTGluayA9IGluc2lkZUxpbms7IH0KKyAgICB2b2lkIHNldElzTGluayhib29s
IGIpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRJc0xpbmsoYik7IH0KIAotICAgIHZvaWQgc2V0
SW5zaWRlRGVmYXVsdEJ1dHRvbihib29sIGluc2lkZURlZmF1bHRCdXR0b24pIHsgaW5oZXJpdGVk
X2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uID0gaW5zaWRlRGVmYXVsdEJ1dHRvbjsgfQorICAg
IHZvaWQgc2V0SW5zaWRlRGVmYXVsdEJ1dHRvbihib29sIGluc2lkZURlZmF1bHRCdXR0b24pIHsg
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uID0gaW5zaWRlRGVmYXVsdEJ1dHRv
bjsgfQogCi0gICAgUHJpbnRDb2xvckFkanVzdCBwcmludENvbG9yQWRqdXN0KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJpbnRDb2xvckFkanVzdD4oaW5oZXJpdGVkX2ZsYWdzLm1fcHJp
bnRDb2xvckFkanVzdCk7IH0KLSAgICB2b2lkIHNldFByaW50Q29sb3JBZGp1c3QoUHJpbnRDb2xv
ckFkanVzdCB2YWx1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gdmFs
dWU7IH0KKyAgICBQcmludENvbG9yQWRqdXN0IHByaW50Q29sb3JBZGp1c3QoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxQcmludENvbG9yQWRqdXN0PihtX2luaGVyaXRlZEZsYWdzLnByaW50
Q29sb3JBZGp1c3QpOyB9CisgICAgdm9pZCBzZXRQcmludENvbG9yQWRqdXN0KFByaW50Q29sb3JB
ZGp1c3QgdmFsdWUpIHsgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0gdmFsdWU7
IH0KIAotICAgIGJvb2wgaGFzQXV0b1pJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oYXNB
dXRvWkluZGV4KCk7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9aSW5kZXgoKSB7IFNFVF9WQVIobV9i
b3gsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCAwKTsg
fQotICAgIGludCB6SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+ekluZGV4KCk7IH0KLSAg
ICB2b2lkIHNldFpJbmRleChpbnQgdikgeyBTRVRfVkFSKG1fYm94LCBtX2hhc0F1dG9aSW5kZXgs
IGZhbHNlKTsgU0VUX1ZBUihtX2JveCwgbV96SW5kZXgsIHYpOyB9CisgICAgYm9vbCBoYXNBdXRv
WkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCk7IH0KKyAg
ICB2b2lkIHNldEhhc0F1dG9aSW5kZXgoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2hhc0F1dG9a
SW5kZXgsIHRydWUpOyBTRVRfVkFSKG1fYm94RGF0YSwgbV96SW5kZXgsIDApOyB9CisgICAgaW50
IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+ekluZGV4KCk7IH0KKyAgICB2b2lk
IHNldFpJbmRleChpbnQgdikgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9oYXNBdXRvWkluZGV4LCBm
YWxzZSk7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3pJbmRleCwgdik7IH0KIAotICAgIHZvaWQgc2V0
SGFzQXV0b1dpZG93cygpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvV2lk
b3dzLCB0cnVlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dzLCBpbml0aWFsV2lk
b3dzKCkpOyB9Ci0gICAgdm9pZCBzZXRXaWRvd3Moc2hvcnQgdykgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBtX2hhc0F1dG9XaWRvd3MsIGZhbHNlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgd2lkb3dzLCB3KTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b1dpZG93cygpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvV2lkb3dzLCB0cnVlKTsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIGluaXRpYWxXaWRvd3MoKSk7IH0KKyAgICB2b2lkIHNl
dFdpZG93cyhzaG9ydCB3KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFzQXV0b1dp
ZG93cywgZmFsc2UpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgdyk7IH0K
IAotICAgIHZvaWQgc2V0SGFzQXV0b09ycGhhbnMoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIG1faGFzQXV0b09ycGhhbnMsIHRydWUpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBv
cnBoYW5zLCBpbml0aWFsT3JwaGFucygpKTsgfQotICAgIHZvaWQgc2V0T3JwaGFucyhzaG9ydCBv
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b09ycGhhbnMsIGZhbHNlKTsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFucywgbyk7IH0KKyAgICB2b2lkIHNldEhh
c0F1dG9PcnBoYW5zKCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9PcnBo
YW5zLCB0cnVlKTsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBpbml0aWFs
T3JwaGFucygpKTsgfQorICAgIHZvaWQgc2V0T3JwaGFucyhzaG9ydCBvKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaGFzQXV0b09ycGhhbnMsIGZhbHNlKTsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQogCiAgICAgLy8gQ1NTMyBTZXR0ZXJzCi0gICAg
dm9pZCBzZXRPdXRsaW5lT2Zmc2V0KGZsb2F0IHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1f
b3V0bGluZS5tX29mZnNldCwgdik7IH0KKyAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoZmxvYXQg
dikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUubV9vZmZzZXQsIHYpOyB9CiAg
ICAgdm9pZCBzZXRUZXh0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiwgYm9vbCBh
ZGQgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGMp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKTsgfQotICAg
IHZvaWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgdGV4dFN0cm9rZVdpZHRoLCB3KTsgfQotICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihj
b25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9y
LCBjKTsgfQotICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRv
PGZsb2F0PihmLCAwLCAxKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcGFjaXR5
LCB2KTsgfQotICAgIHZvaWQgc2V0QXBwZWFyYW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXBwZWFyYW5jZSwgYSk7IH0KKyAgICB2b2lkIHNldFRl
eHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRleHRTdHJva2VDb2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRleHRTdHJva2VXaWR0aChm
bG9hdCB3KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZVdpZHRoLCB3
KTsgfQorICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRP
cGFjaXR5KGZsb2F0IGYpIHsgZmxvYXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9wYWNpdHksIHYpOyB9CisgICAgdm9pZCBzZXRB
cHBlYXJhbmNlKENvbnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBhcHBlYXJhbmNlLCBhKTsgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgYm94LWFsaWdu
IHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtZmxleGJveC0yMDA5MDcyMy8j
YWxpZ25tZW50Ci0gICAgdm9pZCBzZXRCb3hBbGlnbihFQm94QWxpZ25tZW50IGEpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBh
bGlnbiwgYSk7IH0KKyAgICB2b2lkIHNldEJveEFsaWduKEVCb3hBbGlnbm1lbnQgYSkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gs
IGFsaWduLCBhKTsgfQorICAgIHZvaWQgc2V0Qm94RGlyZWN0aW9uKEVCb3hEaXJlY3Rpb24gZCkg
eyBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiA9IGQ7IH0KKyAgICB2b2lkIHNldEJveEZs
ZXgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXBy
ZWNhdGVkRmxleGlibGVCb3gsIGZsZXgsIGYpOyB9CisgICAgdm9pZCBzZXRCb3hGbGV4R3JvdXAo
dW5zaWduZWQgZ3JvdXApIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
ZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBmbGV4R3JvdXAsIGdyb3VwKTsgfQorICAgIHZvaWQgc2V0
Qm94TGluZXMoRUJveExpbmVzIGxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgbGluZXMsIGxpbmVzKTsgfQorICAgIHZv
aWQgc2V0Qm94T3JkaW5hbEdyb3VwKHVuc2lnbmVkIGdyb3VwKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JkaW5hbEdyb3Vw
LCBncm91cCk7IH0KKyAgICB2b2lkIHNldEJveE9yaWVudChFQm94T3JpZW50IG8pIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBv
cmllbnQsIG8pOyB9CisgICAgdm9pZCBzZXRCb3hQYWNrKEVCb3hQYWNrIHApIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBwYWNr
LCBwKTsgfQorICAgIHZvaWQgc2V0Qm94U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRh
PiwgYm9vbCBhZGQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRCb3hSZWZsZWN0KFJlZlB0cjxTdHls
ZVJlZmxlY3Rpb24+JiYpOworICAgIHZvaWQgc2V0Qm94U2l6aW5nKEVCb3hTaXppbmcgcykgeyBT
RVRfVkFSKG1fYm94RGF0YSwgbV9ib3hTaXppbmcsIHMpOyB9CisgICAgdm9pZCBzZXRGbGV4R3Jv
dyhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhp
YmxlQm94LCBmbGV4R3JvdywgZik7IH0KKyAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJsZUJveCwgZmxl
eFNocmluaywgZik7IH0KKyAgICB2b2lkIHNldEZsZXhCYXNpcyhMZW5ndGgmJiBsZW5ndGgpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gsIGZsZXhC
YXNpcywgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0T3JkZXIoaW50IG8pIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvcmRlciwgbyk7IH0KKyAgICB2b2lkIHNldEFs
aWduQ29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYWxpZ25Db250ZW50LCBkYXRhKTsgfQorICAgIHZv
aWQgc2V0QWxpZ25JdGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYWxpZ25JdGVtcywgZGF0YSk7IH0KKyAgICB2
b2lkIHNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbGlnbkl0ZW1zLnNldFBvc2l0aW9uKHBvc2l0aW9u
KTsgfQorICAgIHZvaWQgc2V0QWxpZ25TZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEm
IGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnblNlbGYsIGRhdGEp
OyB9CisgICAgdm9pZCBzZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24p
IHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbGlnblNlbGYuc2V0UG9zaXRpb24o
cG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRGbGV4RGlyZWN0aW9uKEVGbGV4RGlyZWN0aW9uIGRp
cmVjdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJs
ZUJveCwgZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsgfQorICAgIHZvaWQgc2V0RmxleFdyYXAo
RUZsZXhXcmFwIHcpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxl
eGlibGVCb3gsIGZsZXhXcmFwLCB3KTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoY29u
c3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGp1c3RpZnlDb250ZW50LCBkYXRhKTsgfQorICAgIHZvaWQgc2V0SnVzdGlm
eUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5qdXN0aWZ5Q29udGVudC5zZXRQb3NpdGlvbihwb3NpdGlvbik7
IH0KKyAgICB2b2lkIHNldEp1c3RpZnlJdGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRh
JiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwganVzdGlmeUl0ZW1zLCBk
YXRhKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeVNlbGYoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50
RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGp1c3RpZnlTZWxm
LCBkYXRhKTsgfQorCiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKLSAgICB2
b2lkIHNldEJveERlY29yYXRpb25CcmVhayhFQm94RGVjb3JhdGlvbkJyZWFrIGIpIHsgU0VUX1ZB
UihtX2JveCwgbV9ib3hEZWNvcmF0aW9uQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRCb3hEZWNv
cmF0aW9uQnJlYWsoRUJveERlY29yYXRpb25CcmVhayBiKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBt
X2JveERlY29yYXRpb25CcmVhaywgYik7IH0KICNlbmRpZgotICAgIHZvaWQgc2V0Qm94RGlyZWN0
aW9uKEVCb3hEaXJlY3Rpb24gZCkgeyBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBk
OyB9Ci0gICAgdm9pZCBzZXRCb3hGbGV4KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBmbGV4LCBmKTsgfQotICAg
IHZvaWQgc2V0Qm94RmxleEdyb3VwKHVuc2lnbmVkIGludCBmZykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXhfZ3JvdXAs
IGZnKTsgfQotICAgIHZvaWQgc2V0Qm94TGluZXMoRUJveExpbmVzIGwpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBsaW5lcywg
bCk7IH0KLSAgICB2b2lkIHNldEJveE9yZGluYWxHcm91cCh1bnNpZ25lZCBpbnQgb2cpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94
LCBvcmRpbmFsX2dyb3VwLCBvZyk7IH0KLSAgICB2b2lkIHNldEJveE9yaWVudChFQm94T3JpZW50
IG8pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZs
ZXhpYmxlQm94LCBvcmllbnQsIG8pOyB9Ci0gICAgdm9pZCBzZXRCb3hQYWNrKEVCb3hQYWNrIHAp
IHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhp
YmxlQm94LCBwYWNrLCBwKTsgfQotICAgIHZvaWQgc2V0Qm94U2hhZG93KHN0ZDo6dW5pcXVlX3B0
cjxTaGFkb3dEYXRhPiwgYm9vbCBhZGQgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRCb3hSZWZsZWN0
KFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+JiYgcmVmbGVjdCkgeyBpZiAocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYm94UmVmbGVjdCAhPSByZWZsZWN0KSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9ib3hSZWZsZWN0ID0gV1RGTW92ZShyZWZsZWN0KTsgfQotICAgIHZvaWQgc2V0Qm94
U2l6aW5nKEVCb3hTaXppbmcgcykgeyBTRVRfVkFSKG1fYm94LCBtX2JveFNpemluZywgcyk7IH0K
LSAgICB2b2lkIHNldEZsZXhHcm93KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleEdyb3csIGYpOyB9Ci0gICAgdm9pZCBz
ZXRGbGV4U2hyaW5rKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fZmxleGlibGVCb3gsIG1fZmxleFNocmluaywgZik7IH0KLSAgICB2b2lkIHNldEZsZXhC
YXNpcyhMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZv
aWQgc2V0T3JkZXIoaW50IG8pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcmRl
ciwgbyk7IH0KLSAgICB2b2lkIHNldEFsaWduQ29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGln
bm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25D
b250ZW50LCBkYXRhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50UG9zaXRpb24oQ29udGVu
dFBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Fs
aWduQ29udGVudC5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWduQ29u
dGVudE92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduQ29udGVudC5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0K
LSAgICB2b2lkIHNldEFsaWduQ29udGVudERpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9u
VHlwZSBkaXN0cmlidXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxp
Z25Db250ZW50LnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOyB9Ci0gICAgdm9pZCBzZXRB
bGlnbkl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkl0ZW1zLCBkYXRhKTsgfQotICAgIHZvaWQgc2V0
QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkl0ZW1zLnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQot
ICAgIHZvaWQgc2V0QWxpZ25JdGVtc092ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93
KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0T3ZlcmZs
b3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGYoY29uc3QgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWdu
U2VsZiwgZGF0YSk7IH0KLSAgICB2b2lkIHNldEFsaWduU2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlv
biBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnblNlbGYu
c2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGZPdmVyZmxvdyhP
dmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9hbGlnblNlbGYuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9pZCBzZXRGbGV4
RGlyZWN0aW9uKEVGbGV4RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4RGlyZWN0aW9uLCBkaXJlY3Rp
b24pOyB9Ci0gICAgdm9pZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4V3JhcCwgdyk7IH0K
LSAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5Q29udGVu
dCwgZGF0YSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBv
c2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3Rp
ZnlDb250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNv
bnRlbnRPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5Q29udGVudC5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7
IH0KLSAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmli
dXRpb25UeXBlIGRpc3RyaWJ1dGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9qdXN0aWZ5Q29udGVudC5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsgfQotICAgIHZv
aWQgc2V0SnVzdGlmeUl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5SXRlbXMsIGRhdGEpOyB9Ci0g
ICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldFBvc2l0aW9u
KHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dB
bGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVz
dGlmeUl0ZW1zLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUl0
ZW1zUG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlvblR5cGUgcG9zaXRpb25UeXBlKSB7IHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRQb3NpdGlvblR5cGUocG9z
aXRpb25UeXBlKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGYoY29uc3QgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3Rp
ZnlTZWxmLCBkYXRhKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGZQb3NpdGlvbihJdGVtUG9z
aXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlm
eVNlbGYuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZk92
ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2p1c3RpZnlTZWxmLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorCiAjaWYg
RU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICB2b2lkIHNldEdyaWRBdXRvQ29sdW1ucyhjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b0NvbHVtbnMsIHRyYWNrU2l6
ZUxpc3QpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1Jvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFj
a1NpemU+JiB0cmFja1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9Sb3dzLCB0cmFja1NpemVMaXN0KTsgfQotICAgIHZvaWQg
c2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZENvbHVtbnMs
IGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
Z3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0
Q29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVhdENvbHVt
bnMsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3MoY29uc3QgVmVj
dG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzLCBsZW5ndGhzKTsgfQotICAg
IHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoY29uc3QgdW5zaWdu
ZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZ3JpZCwgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2lu
dCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KGNvbnN0
IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9u
UG9pbnQpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGNvbnN0IEF1
dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlLCBhdXRvUmVwZWF0VHlw
ZSk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c1R5cGUoY29uc3QgQXV0b1JlcGVh
dFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Um93c1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQotICAg
IHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2dyaWQsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsg
fQotICAgIHZvaWQgc2V0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAm
IG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2dyaWQsIG1fbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAg
IHZvaWQgc2V0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxp
bmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZ3JpZCwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dM
aW5lcyk7IH0KLSAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25z
dCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29s
dW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0b1JlcGVh
dE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dM
aW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1
dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9p
ZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE9yZGVyZWRO
YW1lZEdyaWRDb2x1bW5MaW5lcywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAg
IHZvaWQgc2V0QXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVk
TmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2b2lkIHNl
dE5hbWVkR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSkgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVkR3JpZEFy
ZWEsIG5hbWVkR3JpZEFyZWEpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93Q291bnQo
c2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2dyaWQsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KLSAgICB2b2lkIHNl
dE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQsIGNvbHVtbkNvdW50KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93KEdyaWRBdXRv
RmxvdyBmbG93KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fZ3JpZEF1dG9GbG93LCBmbG93KTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5TdGFy
dChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtblN0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtblN0YXJ0LCBj
b2x1bW5TdGFydFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5FbmQoY29u
c3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkSXRlbSwgbV9ncmlkQ29sdW1uRW5kLCBjb2x1bW5FbmRQ
b3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEdyaWRJdGVtUm93U3RhcnQoY29uc3QgR3JpZFBvc2l0
aW9uJiByb3dTdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRSb3dTdGFydCwgcm93U3RhcnRQb3NpdGlvbik7IH0KLSAg
ICB2b2lkIHNldEdyaWRJdGVtUm93RW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93RW5kUG9zaXRp
b24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1f
Z3JpZFJvd0VuZCwgcm93RW5kUG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1uR2Fw
KGNvbnN0IExlbmd0aCYgdikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkLCBtX2dyaWRDb2x1bW5HYXAsIHYpOyB9Ci0gICAgdm9pZCBzZXRHcmlkUm93R2FwKGNv
bnN0IExlbmd0aCYgdikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX2dyaWRSb3dHYXAsIHYpOyB9Ci0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9V
VCkgKi8KLSAgICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBpbmNyZW1lbnQsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcnF1ZWVTcGVlZChpbnQgZikgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBzcGVlZCwgZik7IH0K
LSAgICB2b2lkIHNldE1hcnF1ZWVEaXJlY3Rpb24oRU1hcnF1ZWVEaXJlY3Rpb24gZCkgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBkaXJlY3Rpb24sIGQp
OyB9Ci0gICAgdm9pZCBzZXRNYXJxdWVlQmVoYXZpb3IoRU1hcnF1ZWVCZWhhdmlvciBiKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGJlaGF2aW9yLCBi
KTsgfQotICAgIHZvaWQgc2V0TWFycXVlZUxvb3BDb3VudChpbnQgaSkgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBsb29wcywgaSk7IH0KLSAgICB2b2lk
IHNldFVzZXJNb2RpZnkoRVVzZXJNb2RpZnkgdSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB1c2VyTW9kaWZ5LCB1KTsgfQotICAgIHZvaWQgc2V0VXNlckRyYWcoRVVzZXJEcmFnIGQpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgdXNlckRyYWcsIGQpOyB9Ci0gICAgdm9pZCBz
ZXRVc2VyU2VsZWN0KEVVc2VyU2VsZWN0IHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dXNlclNlbGVjdCwgcyk7IH0KLSAgICB2b2lkIHNldFRleHRPdmVyZmxvdyhUZXh0T3ZlcmZsb3cg
b3ZlcmZsb3cpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dE92ZXJmbG93LCBv
dmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKEVNYXJnaW5Db2xs
YXBzZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkJlZm9yZUNvbGxh
cHNlLCBjKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29sbGFw
c2UgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5BZnRlckNvbGxhcHNl
LCBjKTsgfQotICAgIHZvaWQgc2V0V29yZEJyZWFrKEVXb3JkQnJlYWsgYikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCB3b3JkQnJlYWssIGIpOyB9Ci0gICAgdm9pZCBzZXRPdmVyZmxvd1dy
YXAoRU92ZXJmbG93V3JhcCBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93
V3JhcCwgYik7IH0KLSAgICB2b2lkIHNldE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIG5ic3BNb2RlLCBiKTsgfQotICAgIHZvaWQgc2V0TGluZUJyZWFr
KExpbmVCcmVhayBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGxpbmVCcmVhaywgYik7
IH0KLSAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIGh5cGhlbnMsIGgpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3Jl
KHNob3J0IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGlt
aXRCZWZvcmUsIGxpbWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEFmdGVyKHNo
b3J0IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRB
ZnRlciwgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMoc2hvcnQg
bGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdExpbmVz
LCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywg
aCk7IH0KLSAgICB2b2lkIHNldEJvcmRlckZpdChFQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ib3JkZXJGaXQsIGIpOyB9Ci0gICAgdm9pZCBzZXRSZXNpemUo
RVJlc2l6ZSByKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVzaXplLCByKTsg
fQotICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXhpcywgYXhpcyk7IH0KLSAg
ICB2b2lkIHNldENvbHVtblByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9u
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3By
b2dyZXNzaW9uLCBwcm9ncmVzc2lvbik7IH0KLSAgICB2b2lkIHNldENvbHVtbldpZHRoKGZsb2F0
IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1f
YXV0b1dpZHRoLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX3dpZHRoLCBmKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbldpZHRo
KCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9h
dXRvV2lkdGgsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9t
dWx0aUNvbCwgbV93aWR0aCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtbkNvdW50KHVuc2lnbmVk
IHNob3J0IGMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlD
b2wsIG1fYXV0b0NvdW50LCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX211bHRpQ29sLCBtX2NvdW50LCBjKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVt
bkNvdW50KCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNv
bCwgbV9hdXRvQ291bnQsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9tdWx0aUNvbCwgbV9jb3VudCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtbkZpbGwoQ29s
dW1uRmlsbCBjb2x1bW5GaWxsKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX211bHRpQ29sLCBtX2ZpbGwsIGNvbHVtbkZpbGwpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5H
YXAoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0
aUNvbCwgbV9ub3JtYWxHYXAsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fbXVsdGlDb2wsIG1fZ2FwLCBmKTsgfQotICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29s
dW1uR2FwKCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNv
bCwgbV9ub3JtYWxHYXAsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9tdWx0aUNvbCwgbV9nYXAsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5SdWxlQ29sb3Io
Y29uc3QgQ29sb3ImIGMpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3J1bGUsIGMpOyB9Ci0gICAgdm9pZCBzZXRDb2x1
bW5SdWxlU3R5bGUoRUJvcmRlclN0eWxlIGIpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fcnVsZS5tX3N0eWxlLCBiKTsgfQotICAgIHZvaWQgc2V0
Q29sdW1uUnVsZVdpZHRoKHVuc2lnbmVkIHNob3J0IHcpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fcnVsZS5tX3dpZHRoLCB3KTsgfQotICAgIHZv
aWQgcmVzZXRDb2x1bW5SdWxlKCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9tdWx0aUNvbCwgbV9ydWxlLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgc2V0Q29s
dW1uU3BhbihDb2x1bW5TcGFuIGNvbHVtblNwYW4pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fY29sdW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KLSAg
ICB2b2lkIGluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbShjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sID0gcGFyZW50
LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbDsgfQotICAgIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1fb3BlcmF0aW9ucywgb3BzKTsgfQotICAg
IHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV94LCBXVEZNb3ZlKGxlbmd0aCkp
OyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3ksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblooZmxvYXQgZikgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1feiwgZik7IH0K
LSAgICB2b2lkIHNldFNwZWFrKEVTcGVhayBzKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHNwZWFrLCBzKTsgfQotICAgIHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RleHRDb21iaW5lLCB2KTsgfQotICAgIHZv
aWQgc2V0VGV4dERlY29yYXRpb25Db2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3RleHREZWNvcmF0aW9uQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RW1waGFzaXNDb2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNp
c0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJr
KFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RW1waGFzaXNNYXJrLCBtYXJrKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFy
ayhjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaywgbWFyayk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNp
c1Bvc2l0aW9uKFRleHRFbXBoYXNpc1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KKyAgICB2b2lk
IHNldEdyaWRBdXRvQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6
ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3Jp
ZEF1dG9Db2x1bW5zLCB0cmFja1NpemVMaXN0KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9Sb3dz
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b1Jvd3MsIHRyYWNrU2l6
ZUxpc3QpOyB9CisgICAgdm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
Z3JpZCwgZ3JpZENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93cyhjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBz
ZXRHcmlkQXV0b1JlcGVhdENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5n
dGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRB
dXRvUmVwZWF0Q29sdW1ucywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0
Um93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9SZXBlYXRSb3dzLCBsZW5n
dGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCwgaW5z
ZXJ0aW9uUG9pbnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Q
b2ludChjb25zdCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50LCBp
bnNlcnRpb25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUo
Y29uc3QgQXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdENvbHVtbnNUeXBlLCBhdXRvUmVw
ZWF0VHlwZSk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c1R5cGUoY29uc3QgQXV0
b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdFJvd3NUeXBlLCBhdXRvUmVwZWF0VHlwZSk7IH0K
KyAgICB2b2lkIHNldE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFw
JiBuYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBncmlkLCBuYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMp
OyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01h
cCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZ3JpZCwgbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAg
IHZvaWQgc2V0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
cywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0T3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGdyaWQsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KTsgfQorICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5h
bWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5hbWVk
R3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcykg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0
TmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9pZCBzZXRB
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFy
ZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYSkgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBuYW1lZEdyaWRBcmVhLCBuYW1lZEdyaWRB
cmVhKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KHNpemVfdCByb3dDb3Vu
dCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBuYW1lZEdy
aWRBcmVhUm93Q291bnQsIHJvd0NvdW50KTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYUNv
bHVtbkNvdW50KHNpemVfdCBjb2x1bW5Db3VudCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkLCBuYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQsIGNvbHVtbkNvdW50
KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93KEdyaWRBdXRvRmxvdyBmbG93KSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRvRmxvdywgZmxv
dyk7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uU3RhcnQoY29uc3QgR3JpZFBvc2l0aW9u
JiBjb2x1bW5TdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGdyaWRJdGVtLCBncmlkQ29sdW1uU3RhcnQsIGNvbHVtblN0YXJ0UG9zaXRpb24pOyB9
CisgICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtbkVuZChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVt
bkVuZFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdy
aWRJdGVtLCBncmlkQ29sdW1uRW5kLCBjb2x1bW5FbmRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNl
dEdyaWRJdGVtUm93U3RhcnQoY29uc3QgR3JpZFBvc2l0aW9uJiByb3dTdGFydFBvc2l0aW9uKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWRJdGVtLCBncmlkUm93
U3RhcnQsIHJvd1N0YXJ0UG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlkSXRlbVJvd0VuZChj
b25zdCBHcmlkUG9zaXRpb24mIHJvd0VuZFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWRJdGVtLCBncmlkUm93RW5kLCByb3dFbmRQb3NpdGlvbik7
IH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5HYXAoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRDb2x1bW5HYXAsIFdURk1v
dmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEdyaWRSb3dHYXAoTGVuZ3RoJiYgbGVuZ3RoKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRSb3dHYXAs
IFdURk1vdmUobGVuZ3RoKSk7IH0KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQor
CisgICAgdm9pZCBzZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBpbmNyZW1lbnQsIFdURk1v
dmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcnF1ZWVTcGVlZChpbnQgZikgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBzcGVlZCwgZik7IH0KKyAg
ICB2b2lkIHNldE1hcnF1ZWVEaXJlY3Rpb24oRU1hcnF1ZWVEaXJlY3Rpb24gZCkgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBkaXJlY3Rpb24sIGQpOyB9
CisgICAgdm9pZCBzZXRNYXJxdWVlQmVoYXZpb3IoRU1hcnF1ZWVCZWhhdmlvciBiKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGJlaGF2aW9yLCBiKTsg
fQorICAgIHZvaWQgc2V0TWFycXVlZUxvb3BDb3VudChpbnQgaSkgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBsb29wcywgaSk7IH0KKyAgICB2b2lkIHNl
dFVzZXJNb2RpZnkoRVVzZXJNb2RpZnkgdSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHVzZXJNb2RpZnksIHUpOyB9CisgICAgdm9pZCBzZXRVc2VyRHJhZyhFVXNlckRyYWcgZCkgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHVzZXJEcmFnLCBkKTsgfQorICAgIHZvaWQg
c2V0VXNlclNlbGVjdChFVXNlclNlbGVjdCBzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgdXNlclNlbGVjdCwgcyk7IH0KKyAgICB2b2lkIHNldFRleHRPdmVyZmxvdyhUZXh0T3ZlcmZs
b3cgb3ZlcmZsb3cpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0T3ZlcmZs
b3csIG92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UoRU1hcmdp
bkNvbGxhcHNlIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5CZWZv
cmVDb2xsYXBzZSwgYyk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UoRU1hcmdp
bkNvbGxhcHNlIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5BZnRl
ckNvbGxhcHNlLCBjKTsgfQorICAgIHZvaWQgc2V0V29yZEJyZWFrKEVXb3JkQnJlYWsgYikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHdvcmRCcmVhaywgYik7IH0KKyAgICB2b2lkIHNl
dE92ZXJmbG93V3JhcChFT3ZlcmZsb3dXcmFwIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBvdmVyZmxvd1dyYXAsIGIpOyB9CisgICAgdm9pZCBzZXROQlNQTW9kZShFTkJTUE1vZGUg
YikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG5ic3BNb2RlLCBiKTsgfQorICAgIHZv
aWQgc2V0TGluZUJyZWFrKExpbmVCcmVhayBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgbGluZUJyZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5zLCBoKTsgfQorICAgIHZvaWQgc2V0SHlw
aGVuYXRpb25MaW1pdEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0KTsgfQorICAgIHZvaWQgc2V0SHlw
aGVuYXRpb25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KKyAgICB2b2lkIHNldEh5cGhl
bmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGltaXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5h
dGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KKyAgICB2b2lkIHNldEJvcmRlckZpdChF
Qm9yZGVyRml0IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3JkZXJGaXQs
IGIpOyB9CisgICAgdm9pZCBzZXRSZXNpemUoRVJlc2l6ZSByKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgcmVzaXplLCByKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1
bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVs
dGlDb2wsIGF4aXMsIGF4aXMpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5Qcm9ncmVzc2lvbihDb2x1
bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgcHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTsgfQorICAgIHZv
aWQgc2V0Q29sdW1uV2lkdGgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b1dpZHRoLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCB3aWR0aCwgZik7IH0KKyAgICB2b2lkIHNl
dEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCB3aWR0aCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVt
bkNvdW50KHVuc2lnbmVkIHNob3J0IGMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9Db3VudCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY291bnQsIGMpOyB9CisgICAgdm9pZCBzZXRI
YXNBdXRvQ29sdW1uQ291bnQoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBhdXRvQ291bnQsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY291bnQsIDApOyB9CisgICAgdm9pZCBzZXRDb2x1bW5G
aWxsKENvbHVtbkZpbGwgY29sdW1uRmlsbCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgZmlsbCwgY29sdW1uRmlsbCk7IH0KKyAgICB2b2lkIHNldENv
bHVtbkdhcChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG11bHRpQ29sLCBub3JtYWxHYXAsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGdhcCwgZik7IH0KKyAgICB2b2lkIHNldEhhc05vcm1hbENv
bHVtbkdhcCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlD
b2wsIG5vcm1hbEdhcCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBnYXAsIDApOyB9CisgICAgdm9pZCBzZXRDb2x1bW5SdWxlQ29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkubXVsdGlDb2wsIHJ1bGUsIGMpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5SdWxl
U3R5bGUoRUJvcmRlclN0eWxlIGIpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIHJ1bGUubV9zdHlsZSwgYik7IH0KKyAgICB2b2lkIHNldENvbHVtblJ1
bGVXaWR0aCh1bnNpZ25lZCBzaG9ydCB3KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG11bHRpQ29sLCBydWxlLm1fd2lkdGgsIHcpOyB9CisgICAgdm9pZCByZXNldENv
bHVtblJ1bGUoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBydWxlLCBCb3JkZXJWYWx1ZSgpKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uU3BhbihDb2x1
bW5TcGFuIGNvbHVtblNwYW4pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIGNvbHVtblNwYW4sIGNvbHVtblNwYW4pOyB9CisgICAgdm9pZCBpbmhlcml0
Q29sdW1uUHJvcGVydGllc0Zyb20oY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudCkgeyBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm11bHRpQ29sID0gcGFyZW50Lm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm11bHRpQ29sOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHRyYW5zZm9ybSwgb3BlcmF0aW9ucywgb3BzKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3Jt
T3JpZ2luWChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdHJhbnNmb3JtLCB4LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRU
cmFuc2Zvcm1PcmlnaW5ZKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm0sIHksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldFRyYW5zZm9ybU9yaWdpblooZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm0sIHosIGYpOyB9CisgICAgdm9pZCBzZXRTcGVhayhF
U3BlYWsgcykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHNwZWFrLCBzKTsgfQorICAg
IHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHRleHRDb21iaW5lLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRp
b25Db2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHRleHREZWNvcmF0aW9uQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDb2xv
cihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc0NvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFz
aXNGaWxsIGZpbGwpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNG
aWxsLCBmaWxsKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNN
YXJrIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJr
LCBtYXJrKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFz
aXNDdXN0b21NYXJrLCBtYXJrKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24o
VGV4dEVtcGhhc2lzUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0RW1waGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAgICAgYm9vbCBzZXRUZXh0
T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKIAotICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9i
amVjdEZpdCBmaXQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vYmplY3RGaXQs
IGZpdCk7IH0KLSAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKGNvbnN0IExlbmd0aFBvaW50JiBw
b3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29iamVjdFBvc2l0aW9u
LCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldE9iamVjdEZpdChPYmplY3RGaXQgZml0KSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2JqZWN0Rml0LCBmaXQpOyB9CisgICAgdm9p
ZCBzZXRPYmplY3RQb3NpdGlvbihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgb2JqZWN0UG9zaXRpb24sIFdURk1vdmUocG9zaXRpb24pKTsg
fQorCisgICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcnVieVBvc2l0aW9uLCBwb3NpdGlvbik7IH0KIAot
ICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCBtX3J1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CisgICAgdm9p
ZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogCi0g
ICAgdm9pZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZpbHRlciwgbV9vcGVyYXRpb25zLCBvcHMp
OyB9CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICB2b2lkIHNldEJhY2tkcm9wRmls
dGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9iYWNrZHJvcEZpbHRlciwgbV9vcGVyYXRpb25zLCBvcHMpOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZHJvcEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYmFja2Ryb3BGaWx0ZXIsIG9w
ZXJhdGlvbnMsIG9wcyk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRUYWJTaXplKHVuc2lnbmVk
IHNpemUpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90YWJTaXplLCBzaXplKTsgfQor
ICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KIAotICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJl
YWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9icmVha0JlZm9yZSwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrQWZ0ZXIo
QnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9icmVha0FmdGVyLCBicmVha0JlaGF2aW9yKTsgfQotICAgIHZvaWQgc2V0QnJlYWtJbnNp
ZGUoQnJlYWtJbnNpZGUgYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2JyZWFrSW5zaWRlLCBicmVha0JlaGF2aW9yKTsgfQorICAgIHZvaWQgc2V0QnJlYWtC
ZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBicmVha0JlZm9yZSwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJy
ZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBicmVha0JlaGF2aW9yKTsgfQorICAgIHZvaWQgc2V0
QnJlYWtJbnNpZGUoQnJlYWtJbnNpZGUgYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGJyZWFrSW5zaWRlLCBicmVha0JlaGF2aW9yKTsgfQogICAgIAotICAg
IHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVhdGlv
bikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhbmdpbmdQdW5jdHVhdGlvbiwgcHVu
Y3R1YXRpb24pOyB9CisgICAgdm9pZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1bmN0
dWF0aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFuZ2lu
Z1B1bmN0dWF0aW9uLCBwdW5jdHVhdGlvbik7IH0KIAogICAgIC8vIEVuZCBDU1MzIFNldHRlcnMK
IAotICAgIHZvaWQgc2V0TGluZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVHcmlkLCBsaW5lR3JpZCk7IH0KLSAgICB2
b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fbGluZVNuYXAsIGxpbmVTbmFwKTsgfQotICAgIHZvaWQgc2V0TGluZUFsaWduKExp
bmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQWxp
Z24sIGxpbmVBbGlnbik7IH0KKyAgICB2b2lkIHNldExpbmVHcmlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGluZUdyaWQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lR3JpZCwgbGlu
ZUdyaWQpOyB9CisgICAgdm9pZCBzZXRMaW5lU25hcChMaW5lU25hcCBsaW5lU25hcCkgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVTbmFwLCBsaW5lU25hcCk7IH0KKyAgICB2b2lk
IHNldExpbmVBbGlnbihMaW5lQWxpZ24gbGluZUFsaWduKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgbGluZUFsaWduLCBsaW5lQWxpZ24pOyB9CiAKLSAgICB2b2lkIHNldEZsb3dUaHJl
YWQoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZmxvd1RocmVhZCwgZmxvd1RocmVhZCk7IH0KLSAgICB2b2lkIHNldFJlZ2lv
blRocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRocmVhZCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvblRocmVhZCwgcmVnaW9uVGhyZWFkKTsgfQotICAgIHZv
aWQgc2V0UmVnaW9uRnJhZ21lbnQoUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZWdpb25GcmFnbWVudCwgcmVnaW9uRnJhZ21l
bnQpOyB9CisgICAgdm9pZCBzZXRGbG93VGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1Ro
cmVhZCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsb3dUaHJlYWQsIGZsb3dU
aHJlYWQpOyB9CisgICAgdm9pZCBzZXRSZWdpb25UaHJlYWQoY29uc3QgQXRvbWljU3RyaW5nJiBy
ZWdpb25UaHJlYWQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZWdpb25UaHJl
YWQsIHJlZ2lvblRocmVhZCk7IH0KKyAgICB2b2lkIHNldFJlZ2lvbkZyYWdtZW50KFJlZ2lvbkZy
YWdtZW50IHJlZ2lvbkZyYWdtZW50KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
cmVnaW9uRnJhZ21lbnQsIHJlZ2lvbkZyYWdtZW50KTsgfQogCi0gICAgLy8gQXBwbGUtc3BlY2lm
aWMgcHJvcGVydHkgc2V0dGVycwotICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhFUG9pbnRlckV2
ZW50cyBwKSB7IGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IHA7IH0KKyAgICB2b2lk
IHNldFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMgcCkgeyBtX2luaGVyaXRlZEZsYWdzLnBv
aW50ZXJFdmVudHMgPSBwOyB9CiAKLSAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygpCi0gICAgewot
ICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyVHJhbnNpdGlvbnMoKQotICAgIHsKLSAgICAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBudWxscHRy
OwotICAgIH0KKyAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygpOworICAgIHZvaWQgY2xlYXJUcmFu
c2l0aW9ucygpOwogCi0gICAgdm9pZCBpbmhlcml0QW5pbWF0aW9ucyhjb25zdCBBbmltYXRpb25M
aXN0KiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9u
cyA9IHBhcmVudCA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBu
dWxscHRyOyB9Ci0gICAgdm9pZCBpbmhlcml0VHJhbnNpdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlz
dCogcGFyZW50KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25z
ID0gcGFyZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigqcGFyZW50KSA6IG51
bGxwdHI7IH0KICAgICB2b2lkIGFkanVzdEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIGFkanVzdFRy
YW5zaXRpb25zKCk7CiAKLSAgICB2b2lkIHNldFRyYW5zZm9ybVN0eWxlM0QoRVRyYW5zZm9ybVN0
eWxlM0QgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybVN0eWxl
M0QsIGIpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoRUJhY2tmYWNlVmlzaWJp
bGl0eSBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYmFja2ZhY2VWaXNpYmls
aXR5LCBiKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlLCBwKTsgfQotICAgIHZvaWQgc2V0UGVy
c3BlY3RpdmVPcmlnaW5YKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldFBlcnNwZWN0aXZlT3JpZ2luWShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmVPcmlnaW5ZLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0g
ICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZSwgV1RGTW92ZShzaXplKSk7IH0KLSAgICB2b2lkIHNldFBh
Z2VTaXplVHlwZShQYWdlU2l6ZVR5cGUgdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3BhZ2VTaXplVHlwZSwgdCk7IH0KLSAgICB2b2lkIHJlc2V0UGFnZVNpemVUeXBlKCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BhZ2VTaXplVHlwZSwgUEFHRV9TSVpFX0FV
VE8pOyB9Ci0KLSAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluIGMpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29udGFpbiwgYyk7IH0KLSAgICB2
b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybVN0eWxlM0Qo
RVRyYW5zZm9ybVN0eWxlM0QgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRy
YW5zZm9ybVN0eWxlM0QsIGIpOyB9CisgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoRUJh
Y2tmYWNlVmlzaWJpbGl0eSBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYmFj
a2ZhY2VWaXNpYmlsaXR5LCBiKTsgfQorICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBlcnNwZWN0aXZlLCBwKTsgfQorICAg
IHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5YKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHBlcnNwZWN0aXZlT3JpZ2luWCwgV1RGTW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZKExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGFnZVNpemUsIFdURk1vdmUoc2l6ZSkpOyB9
CisgICAgdm9pZCBzZXRQYWdlU2l6ZVR5cGUoUGFnZVNpemVUeXBlIHQpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBwYWdlU2l6ZVR5cGUsIHQpOyB9CisgICAgdm9pZCByZXNldFBh
Z2VTaXplVHlwZSgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwYWdlU2l6ZVR5
cGUsIFBBR0VfU0laRV9BVVRPKTsgfQorCisgICAgdm9pZCBzZXRMaW5lQm94Q29udGFpbihMaW5l
Qm94Q29udGFpbiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZUJveENvbnRh
aW4sIGMpOyB9CisgICAgdm9pZCBzZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KICAgICAKLSAgICB2
b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2luaXRpYWxMZXR0ZXIsIHNpemUpOyB9CisgICAgdm9pZCBzZXRJ
bml0aWFsTGV0dGVyKGNvbnN0IEludFNpemUmIHNpemUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBpbml0aWFsTGV0dGVyLCBzaXplKTsgfQogICAgIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgdm9pZCBzZXRUb3VjaEFjdGlvbihUb3VjaEFjdGlvbiB0b3VjaEFjdGlv
bikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RvdWNoQWN0aW9uLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odG91Y2hBY3Rpb24pKTsgfQorICAgIHZvaWQgc2V0VG91Y2hBY3Rpb24o
VG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCB0b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvdWNoQWN0aW9uKSk7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAvLyBTY3JvbGwgc25hcCBw
b3J0IHN0eWxlLgogICAgIHZvaWQgc2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5
cGUmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdUb3AoY29uc3QgTGVuZ3RoJik7Ci0gICAg
dm9pZCBzZXRTY3JvbGxQYWRkaW5nQm90dG9tKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0
U2Nyb2xsUGFkZGluZ0xlZnQoY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxQYWRk
aW5nUmlnaHQoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nVG9wKExl
bmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdCb3R0b20oTGVuZ3RoJiYpOworICAg
IHZvaWQgc2V0U2Nyb2xsUGFkZGluZ0xlZnQoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xs
UGFkZGluZ1JpZ2h0KExlbmd0aCYmKTsKIAotICAgIC8vIFNjcm9sbCBzbmFwIGFyZWEgc3R5bGUu
CiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwQWxpZ24oY29uc3QgU2Nyb2xsU25hcEFsaWduJik7Ci0g
ICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQg
c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNj
cm9sbFNuYXBNYXJnaW5MZWZ0KGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsU25h
cE1hcmdpblJpZ2h0KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdp
blRvcChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luQm90dG9tKExlbmd0
aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5MZWZ0KExlbmd0aCYmKTsKKyAgICB2
b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5SaWdodChMZW5ndGgmJik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBD
b2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwg
Yyk7IH0KKyAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIHNldFRvdWNoQ2FsbG91dEVuYWJsZWQo
Ym9vbCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRvdWNoQ2FsbG91dEVuYWJsZWQs
IHYpOyB9CisgICAgdm9pZCBzZXRUb3VjaENhbGxvdXRFbmFibGVkKGJvb2wgdikgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHRvdWNoQ2FsbG91dEVuYWJsZWQsIHYpOyB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgdm9pZCBz
ZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCB2KTsgfQorICAgIHZvaWQgc2V0VXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCB2KTsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHZvaWQgc2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVB
ZGp1c3RtZW50IGFuQWRqdXN0bWVudCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
U2l6ZUFkanVzdCwgYW5BZGp1c3RtZW50KTsgfQorICAgIHZvaWQgc2V0VGV4dFNpemVBZGp1c3Qo
VGV4dFNpemVBZGp1c3RtZW50IGFkanVzdG1lbnQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0U2l6ZUFkanVzdCwgYWRqdXN0bWVudCk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBz
ZXRUZXh0U2VjdXJpdHkoRVRleHRTZWN1cml0eSBhVGV4dFNlY3VyaXR5KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIHRleHRTZWN1cml0eSwgYVRleHRTZWN1cml0eSk7IH0KKyAgICB2b2lk
IHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IHNlY3VyaXR5KSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBzZWN1cml0eSk7IH0KIAogI2lmIEVOQUJMRShD
U1NfVFJBSUxJTkdfV09SRCkKLSAgICB2b2lkIHNldFRyYWlsaW5nV29yZChUcmFpbGluZ1dvcmQg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0cmFpbGluZ1dvcmQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lkIHNldFRyYWlsaW5nV29yZChUcmFpbGluZ1dvcmQg
dikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRyYWlsaW5nV29yZCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHYpKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAg
IHZvaWQgc2V0QXBwbGVQYXlCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxlIHYpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBsZVBheUJ1dHRvblN0eWxlLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odikpOyB9Ci0gICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBw
bGVQYXlCdXR0b25UeXBlIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBs
ZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lkIHNl
dEFwcGxlUGF5QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSBzdHlsZSkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uU3R5bGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdHlsZSkpOyB9CisgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBw
bGVQYXlCdXR0b25UeXBlIHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBh
cHBsZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRp
ZgogCi0gICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlKCkgY29uc3QgeyByZXR1cm4g
Km1fc3ZnU3R5bGU7IH0KLSAgICBTVkdSZW5kZXJTdHlsZSYgYWNjZXNzU1ZHU3R5bGUoKSB7IHJl
dHVybiAqbV9zdmdTdHlsZS5hY2Nlc3MoKTsgfQorICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBz
dmdTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnU3R5bGU7IH0KKyAgICBTVkdSZW5kZXJTdHls
ZSYgYWNjZXNzU1ZHU3R5bGUoKSB7IHJldHVybiBtX3N2Z1N0eWxlLmFjY2VzcygpOyB9CiAKICAg
ICBjb25zdCBTVkdQYWludFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLmZpbGxQYWludFR5cGUoKTsgfQogICAgIENvbG9yIGZpbGxQYWludENvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRDb2xvcigpOyB9Ci0gICAgdm9pZCBzZXRG
aWxsUGFpbnRDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZpbGxQ
YWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBjLCAiIik7IH0KKyAgICB2b2lkIHNldEZpbGxQ
YWludENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZpbGxQ
YWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBjb2xvciwgZW1wdHlTdHJpbmcoKSk7IH0KICAg
ICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmlsbE9wYWNp
dHkoKTsgfQogICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHls
ZSgpLnNldEZpbGxPcGFjaXR5KGYpOyB9CiAKICAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9r
ZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlUGFpbnRUeXBlKCk7
IH0KICAgICBDb2xvciBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5zdHJva2VQYWludENvbG9yKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VQYWludChTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SLCBjLCAiIik7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFpbnQoU1ZHX1BB
SU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxvYXQgc3Ry
b2tlT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlT3BhY2l0eSgpOyB9
CiAgICAgdm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5z
ZXRTdHJva2VPcGFjaXR5KGYpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlV2lkdGgoKTsgfQotICAgIHZvaWQgc2V0U3Ry
b2tlV2lkdGgoTGVuZ3RoIHcpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VXaWR0aCh3KTsg
fQorICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoTGVuZ3RoJiYgdykgeyBhY2Nlc3NTVkdTdHlsZSgp
LnNldFN0cm9rZVdpZHRoKFdURk1vdmUodykpOyB9CiAgICAgVmVjdG9yPFNWR0xlbmd0aFZhbHVl
PiBzdHJva2VEYXNoQXJyYXkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZURhc2hB
cnJheSgpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VEYXNoQXJyYXkoVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiBhcnJheSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZURhc2hBcnJheShhcnJheSk7
IH0KICAgICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBz
dmdTdHlsZSgpLnN0cm9rZURhc2hPZmZzZXQoKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9m
ZnNldChMZW5ndGggZCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZURhc2hPZmZzZXQoZCk7
IH0KKyAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoTGVuZ3RoJiYgZCkgeyBhY2Nlc3NTVkdT
dHlsZSgpLnNldFN0cm9rZURhc2hPZmZzZXQoV1RGTW92ZShkKSk7IH0KICAgICBmbG9hdCBzdHJv
a2VNaXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VNaXRlckxpbWl0
KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQgZikgeyBhY2Nlc3NTVkdT
dHlsZSgpLnNldFN0cm9rZU1pdGVyTGltaXQoZik7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgY3go
KSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmN4KCk7IH0KLSAgICB2b2lkIHNldEN4KExlbmd0
aCBjeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN4KGN4KTsgfQorICAgIHZvaWQgc2V0Q3goTGVu
Z3RoJiYgY3gpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRDeChXVEZNb3ZlKGN4KSk7IH0KICAgICBj
b25zdCBMZW5ndGgmIGN5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5jeSgpOyB9Ci0gICAg
dm9pZCBzZXRDeShMZW5ndGggY3kpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRDeShjeSk7IH0KKyAg
ICB2b2lkIHNldEN5KExlbmd0aCYmIGN5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3koV1RGTW92
ZShjeSkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5yKCk7IH0KLSAgICB2b2lkIHNldFIoTGVuZ3RoIHIpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRS
KHIpOyB9CisgICAgdm9pZCBzZXRSKExlbmd0aCYmIHIpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRS
KFdURk1vdmUocikpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0IHsgcmV0dXJuIHN2
Z1N0eWxlKCkucngoKTsgfQotICAgIHZvaWQgc2V0UngoTGVuZ3RoIHJ4KSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0UngocngpOyB9CisgICAgdm9pZCBzZXRSeChMZW5ndGgmJiByeCkgeyBhY2Nlc3NT
VkdTdHlsZSgpLnNldFJ4KFdURk1vdmUocngpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgcnkoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnJ5KCk7IH0KLSAgICB2b2lkIHNldFJ5KExlbmd0aCBy
eSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFJ5KHJ5KTsgfQorICAgIHZvaWQgc2V0UnkoTGVuZ3Ro
JiYgcnkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRSeShXVEZNb3ZlKHJ5KSk7IH0KICAgICBjb25z
dCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLngoKTsgfQotICAgIHZvaWQg
c2V0WChMZW5ndGggeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFgoeCk7IH0KKyAgICB2b2lkIHNl
dFgoTGVuZ3RoJiYgeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFgoV1RGTW92ZSh4KSk7IH0KICAg
ICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnkoKTsgfQotICAg
IHZvaWQgc2V0WShMZW5ndGggeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFkoeSk7IH0KKyAgICB2
b2lkIHNldFkoTGVuZ3RoJiYgeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFkoV1RGTW92ZSh5KSk7
IH0KIAogICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCku
Zmxvb2RPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCBmKSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0Rmxvb2RPcGFjaXR5KGYpOyB9CkBAIC0xODA3LDQwICsxMjk1LDI1
IEBAIHB1YmxpYzoKICAgICBTVkdMZW5ndGhWYWx1ZSBrZXJuaW5nKCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS5rZXJuaW5nKCk7IH0KICAgICB2b2lkIHNldEtlcm5pbmcoU1ZHTGVuZ3RoVmFs
dWUgaykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEtlcm5pbmcoayk7IH0KIAotICAgIHZvaWQgc2V0
U2hhcGVPdXRzaWRlKFJlZlB0cjxTaGFwZVZhbHVlPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
aWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0c2lkZSA9PSB2YWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
c2hhcGVPdXRzaWRlID0gV1RGTW92ZSh2YWx1ZSk7Ci0gICAgfQotICAgIFNoYXBlVmFsdWUqIHNo
YXBlT3V0c2lkZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBl
T3V0c2lkZS5nZXQoKTsgfQotCi0gICAgc3RhdGljIFNoYXBlVmFsdWUqIGluaXRpYWxTaGFwZU91
dHNpZGUoKSB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNo
YXBlVmFsdWU+JiYpOworICAgIFNoYXBlVmFsdWUqIHNoYXBlT3V0c2lkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZS5nZXQoKTsgfQorICAgIHN0
YXRpYyBTaGFwZVZhbHVlKiBpbml0aWFsU2hhcGVPdXRzaWRlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogCi0gICAgY29uc3QgTGVuZ3RoJiBzaGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luOyB9Ci0gICAgdm9pZCBzZXRTaGFwZU1hcmdp
bihMZW5ndGggc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9z
aGFwZU1hcmdpbiwgV1RGTW92ZShzaGFwZU1hcmdpbikpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBz
aGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBl
TWFyZ2luOyB9CisgICAgdm9pZCBzZXRTaGFwZU1hcmdpbihMZW5ndGgmJiBzaGFwZU1hcmdpbikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlTWFyZ2luLCBXVEZNb3ZlKHNo
YXBlTWFyZ2luKSk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsg
cmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KIAotICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hv
bGQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZUltYWdlVGhy
ZXNob2xkOyB9Ci0gICAgdm9pZCBzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0IHNoYXBlSW1h
Z2VUaHJlc2hvbGQpIAotICAgIHsgCi0gICAgICAgIGZsb2F0IGNsYW1wZWRTaGFwZUltYWdlVGhy
ZXNob2xkID0gY2xhbXBUbzxmbG9hdD4oc2hhcGVJbWFnZVRocmVzaG9sZCwgMCwgMSk7Ci0gICAg
ICAgIFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVJbWFnZVRocmVzaG9sZCwg
Y2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQpOyAKLSAgICB9CisgICAgZmxvYXQgc2hhcGVJbWFn
ZVRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBl
SW1hZ2VUaHJlc2hvbGQ7IH0KKyAgICB2b2lkIHNldFNoYXBlSW1hZ2VUaHJlc2hvbGQoZmxvYXQp
OwogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZCgpIHsgcmV0dXJu
IDA7IH0KIAotICAgIHZvaWQgc2V0Q2xpcFBhdGgoUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiYm
IG9wZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9j
bGlwUGF0aCAhPSBvcGVyYXRpb24pCi0gICAgICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9jbGlwUGF0aCA9IFdURk1vdmUob3BlcmF0aW9uKTsKLSAgICB9Ci0gICAgQ2xp
cFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fY2xpcFBhdGguZ2V0KCk7IH0KLQorICAgIHZvaWQgc2V0Q2xpcFBhdGgoUmVmUHRy
PENsaXBQYXRoT3BlcmF0aW9uPiYmKTsKKyAgICBDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBhdGgo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aC5nZXQoKTsg
fQogICAgIHN0YXRpYyBDbGlwUGF0aE9wZXJhdGlvbiogaW5pdGlhbENsaXBQYXRoKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogCiAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudERhdGEoKTsgfQotICAgIGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvbnRlbnQuZ2V0KCk7IH0KLSAgICBi
b29sIGNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHRoaXMpLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Y29udGVudERhdGFFcXVpdmFsZW50KCpjb25zdF9jYXN0PFJlbmRlclN0eWxl
Kj4ob3RoZXJTdHlsZSktPnJhcmVOb25Jbmhlcml0ZWREYXRhKTsgfQorICAgIGNvbnN0IENvbnRl
bnREYXRhKiBjb250ZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvbnRlbnQuZ2V0KCk7IH0KKyAgICBib29sIGNvbnRlbnREYXRhRXF1aXZhbGVudChjb25z
dCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5k
ZXJTdHlsZSo+KHRoaXMpLT5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50RGF0YUVxdWl2
YWxlbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihvdGhlclN0eWxlKS0+bV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSk7IH0KICAgICB2b2lkIGNsZWFyQ29udGVudCgpOwogICAgIHZvaWQgc2V0Q29u
dGVudChjb25zdCBTdHJpbmcmLCBib29sIGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRl
bnQoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIGJvb2wgYWRkID0gZmFsc2UpOwpAQCAtMTg0OCwyNiAr
MTMyMSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50KFF1b3RlVHlwZSwgYm9vbCBh
ZGQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRDb250ZW50QWx0VGV4dChjb25zdCBTdHJpbmcmKTsK
ICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRBbHRUZXh0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNB
dHRyQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2hhc0F0
dHJDb250ZW50OyB9CisgICAgYm9vbCBoYXNBdHRyQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0F0dHJDb250ZW50OyB9CiAgICAgdm9pZCBzZXRIYXNB
dHRyQ29udGVudCgpOwogCiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogY291bnRlckRp
cmVjdGl2ZXMoKSBjb25zdDsKICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBhY2Nlc3NDb3VudGVy
RGlyZWN0aXZlcygpOwogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzIGdldENvdW50ZXJEaXJl
Y3RpdmVzKGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKLSAgICBRdW90
ZXNEYXRhKiBxdW90ZXMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVz
LmdldCgpOyB9CisgICAgUXVvdGVzRGF0YSogcXVvdGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+cXVvdGVzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRRdW90ZXMoUmVmUHRy
PFF1b3Rlc0RhdGE+JiYpOwogCi0gICAgV2lsbENoYW5nZURhdGEqIHdpbGxDaGFuZ2UoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLmdldCgpOyB9Cisg
ICAgV2lsbENoYW5nZURhdGEqIHdpbGxDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLmdldCgpOyB9CiAgICAgdm9pZCBzZXRXaWxsQ2hhbmdl
KFJlZlB0cjxXaWxsQ2hhbmdlRGF0YT4mJik7CiAKLSAgICBib29sIHdpbGxDaGFuZ2VDcmVhdGVz
U3RhY2tpbmdDb250ZXh0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghd2lsbENoYW5nZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdp
bGxDaGFuZ2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCk7Ci0gICAgfQorICAgIGJvb2wg
d2lsbENoYW5nZUNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKSBjb25zdDsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaHlwaGVuU3RyaW5nKCkgY29uc3Q7CiAKQEAgLTE4ODIsNDYgKzEzNDksMzIg
QEAgcHVibGljOgogICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlJiwg
dW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CiAgICAg
Ym9vbCBkaWZmUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmLCBib29sIGlz
Q29tcG9zaXRlZCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGlzcGxheVJlcGxhY2VkVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KCkpOyB9CiAgICAgYm9v
bCBpc0Rpc3BsYXlJbmxpbmVUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5SW5saW5lVHlw
ZShkaXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSBj
b25zdCB7IHJldHVybiBpc0Rpc3BsYXlJbmxpbmVUeXBlKG9yaWdpbmFsRGlzcGxheSgpKTsgfQog
ICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goKSBjb25zdCB7IHJldHVybiBpc0Rp
c3BsYXlGbGV4aWJsZU9yR3JpZEJveChkaXNwbGF5KCkpOyB9Ci0gICAgYm9vbCBpc0Rpc3BsYXlG
bGV4aWJsZUJveCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlQm94KGRpc3BsYXko
KSk7IH0KLSAgICBib29sIGlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGRpc3BsYXkoKSA9PSBCTE9DSyB8fCBkaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NL
Ci0gICAgICAgICAgICB8fCBkaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5KCkgPT0g
VEFCTEVfQ0FQVElPTgotICAgICAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRFTTsKLSAg
ICB9Ci0KLSAgICBib29sIHNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHYpCi0gICAgewotICAg
ICAgICBpZiAodiA9PSB3cml0aW5nTW9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGJvb2wgaXNEaXNwbGF5UmVnaW9uVHlwZSgpIGNvbnN0OwogCi0gICAgICAgIGluaGVyaXRl
ZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gdjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQor
ICAgIGJvb2wgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUpOwogCi0gICAgYm9vbCBoYXNFeHBs
aWNpdGx5U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mu
aGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKCk7IH0KLSAgICB2b2lkIHNldEhhc0V4cGxpY2l0
bHlTZXRXcml0aW5nTW9kZShib29sIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxp
Y2l0bHlTZXRXcml0aW5nTW9kZSh2KTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseVNldFdyaXRp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGUoKTsgfQorICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdN
b2RlKGJvb2wgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXRXcml0
aW5nTW9kZSh2KTsgfQogCiAgICAgLy8gQSB1bmlxdWUgc3R5bGUgaXMgb25lIHRoYXQgaGFzIG1h
dGNoZXMgc29tZXRoaW5nIHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KLSAgICBi
b29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc1VuaXF1ZSgp
OyB9Ci0gICAgdm9pZCBzZXRVbmlxdWUoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRJc1VuaXF1
ZSgpOyB9CisgICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZs
YWdzLmlzVW5pcXVlKCk7IH0KKyAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRJc1VuaXF1ZSgpOyB9CiAKLSAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuZW1wdHlTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRFbXB0
eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEVtcHR5
U3RhdGUoYik7IH0KLSAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5maXJzdENoaWxkU3RhdGUoKTsgfQotICAgIHZvaWQgc2V0Rmlyc3RD
aGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEZpcnN0Q2hp
bGRTdGF0ZSh0cnVlKTsgfQotICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVy
biBub25pbmhlcml0ZWRfZmxhZ3MubGFzdENoaWxkU3RhdGUoKTsgfQotICAgIHZvaWQgc2V0TGFz
dENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0TGFzdENo
aWxkU3RhdGUodHJ1ZSk7IH0KKyAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZEZsYWdzLmVtcHR5U3RhdGUoKTsgfQorICAgIHZvaWQgc2V0RW1wdHlTdGF0
ZShib29sIGIpIHsgc2V0VW5pcXVlKCk7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0RW1wdHlTdGF0
ZShiKTsgfQorICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9ub25J
bmhlcml0ZWRGbGFncy5maXJzdENoaWxkU3RhdGUoKTsgfQorICAgIHZvaWQgc2V0Rmlyc3RDaGls
ZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRGaXJzdENoaWxk
U3RhdGUodHJ1ZSk7IH0KKyAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9ub25Jbmhlcml0ZWRGbGFncy5sYXN0Q2hpbGRTdGF0ZSgpOyB9CisgICAgdm9pZCBzZXRMYXN0
Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0TGFzdENo
aWxkU3RhdGUodHJ1ZSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHZpc2l0ZWREZXBl
bmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAgICAgYm9vbCBiYWNrZ3JvdW5k
Q29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdWaXNpdGVkKGNvbnN0IENvbG9yJiBjb2xvcikgY29u
c3QgeyByZXR1cm4gY29sb3IgPT0gYmFja2dyb3VuZENvbG9yKCk7IH0KIAotICAgIHZvaWQgc2V0
SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5z
ZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyh0cnVlKTsgfQotICAgIGJvb2wgaGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MuaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsgfQorICAgIHZvaWQg
c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3Muc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXModHJ1ZSk7IH0KKyAgICBib29s
IGhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9ub25J
bmhlcml0ZWRGbGFncy5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOyB9CiAgICAg
CiAgICAgLy8gSW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwogICAgIHN0YXRp
YyBFT3ZlcmZsb3cgaW5pdGlhbE92ZXJmbG93WCgpIHsgcmV0dXJuIE9WSVNJQkxFOyB9CkBAIC0x
OTQwLDE1ICsxMzkzLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRUJvcmRlclN0eWxlIGluaXRp
YWxCb3JkZXJTdHlsZSgpIHsgcmV0dXJuIEJOT05FOyB9CiAgICAgc3RhdGljIE91dGxpbmVJc0F1
dG8gaW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bygpIHsgcmV0dXJuIEFVVE9fT0ZGOyB9CiAgICAg
c3RhdGljIE5pbmVQaWVjZUltYWdlIGluaXRpYWxOaW5lUGllY2VJbWFnZSgpIHsgcmV0dXJuIE5p
bmVQaWVjZUltYWdlKCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFk
aXVzKCkgeyByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4
ZWQpKTsgfQorICAgIHN0YXRpYyBMZW5ndGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJl
dHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07IH0KICAgICBzdGF0aWMgRUNhcHRp
b25TaWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0dXJuIENBUFRPUDsgfQogICAgIHN0YXRp
YyBDb2x1bW5BeGlzIGluaXRpYWxDb2x1bW5BeGlzKCkgeyByZXR1cm4gQXV0b0NvbHVtbkF4aXM7
IH0KICAgICBzdGF0aWMgQ29sdW1uUHJvZ3Jlc3Npb24gaW5pdGlhbENvbHVtblByb2dyZXNzaW9u
KCkgeyByZXR1cm4gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb247IH0KICAgICBzdGF0aWMgVGV4dERp
cmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CiAgICAgc3RhdGljIFdy
aXRpbmdNb2RlIGluaXRpYWxXcml0aW5nTW9kZSgpIHsgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGlu
Z01vZGU7IH0KICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyBy
ZXR1cm4gVGV4dENvbWJpbmVOb25lOyB9Ci0gICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0
aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjoKLSAgICBNaXhl
ZDsgfQorICAgIHN0YXRpYyBUZXh0T3JpZW50YXRpb24gaW5pdGlhbFRleHRPcmllbnRhdGlvbigp
IHsgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6TWl4ZWQ7IH0KICAgICBzdGF0aWMgT2JqZWN0Rml0
IGluaXRpYWxPYmplY3RGaXQoKSB7IHJldHVybiBPYmplY3RGaXRGaWxsOyB9CiAgICAgc3RhdGlj
IExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50
KExlbmd0aCg1MC4wZiwgUGVyY2VudCksIExlbmd0aCg1MC4wZiwgUGVyY2VudCkpOyB9CiAgICAg
c3RhdGljIEVFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBTSE9XOyB9CkBA
IC0xOTYwLDkgKzE0MTIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxIb3Jp
em9udGFsQm9yZGVyU3BhY2luZygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgRUN1
cnNvciBpbml0aWFsQ3Vyc29yKCkgeyByZXR1cm4gQ3Vyc29yQXV0bzsgfQotI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKLSAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFsQ3Vy
c29yVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOyB9Ci0jZW5kaWYK
ICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OmJsYWNrOyB9
CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxMaXN0U3R5bGVJbWFnZSgpIHsgcmV0dXJu
IDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEJvcmRlcldpZHRoKCkgeyByZXR1cm4gMzsg
fQpAQCAtMTk3OSwyMiArMTQyOCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsVGV4dEluZGVudCgpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxaZXJvTGVuZ3RoKCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQogICAgIHN0
YXRpYyBMZW5ndGggaW5pdGlhbE9uZUxlbmd0aCgpIHsgcmV0dXJuIExlbmd0aCgxLCBGaXhlZCk7
IH0KLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHN0YXRpYyBUZXh0SW5kZW50TGluZSBpbml0
aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVybiBUZXh0SW5kZW50Rmlyc3RMaW5lOyB9Ci0gICAg
c3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRpYWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRl
eHRJbmRlbnROb3JtYWw7IH0KLSNlbmRpZgogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsV2lkb3dz
KCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsT3JwaGFucygpIHsgcmV0
dXJuIDI7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4g
TGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9Ci0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
LSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4g
TGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9Ci0jZW5kaWYKICAgICBzdGF0aWMgRVRleHRBbGln
biBpbml0aWFsVGV4dEFsaWduKCkgeyByZXR1cm4gVEFTVEFSVDsgfQogICAgIHN0YXRpYyBUZXh0
RGVjb3JhdGlvbiBpbml0aWFsVGV4dERlY29yYXRpb24oKSB7IHJldHVybiBUZXh0RGVjb3JhdGlv
bk5vbmU7IH0KLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHN0YXRpYyBUZXh0QWxpZ25MYXN0
IGluaXRpYWxUZXh0QWxpZ25MYXN0KCkgeyByZXR1cm4gVGV4dEFsaWduTGFzdEF1dG87IH0KLSAg
ICBzdGF0aWMgVGV4dEp1c3RpZnkgaW5pdGlhbFRleHRKdXN0aWZ5KCkgeyByZXR1cm4gVGV4dEp1
c3RpZnlBdXRvOyB9Ci0jZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgc3RhdGljIFRleHREZWNvcmF0
aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVjb3Jh
dGlvblN0eWxlU29saWQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25Ta2lwIGluaXRpYWxU
ZXh0RGVjb3JhdGlvblNraXAoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblNraXBBdXRvOyB9CiAg
ICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0
aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0bzsgfQpAQCAtMjAwOSw4ICsx
NDQ3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBFQm94T3JpZW50IGluaXRpYWxCb3hPcmllbnQo
KSB7IHJldHVybiBIT1JJWk9OVEFMOyB9CiAgICAgc3RhdGljIEVCb3hQYWNrIGluaXRpYWxCb3hQ
YWNrKCkgeyByZXR1cm4gU3RhcnQ7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEJveEZsZXgo
KSB7IHJldHVybiAwLjBmOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBpbml0aWFsQm94Rmxl
eEdyb3VwKCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5pdGlhbEJv
eE9yZGluYWxHcm91cCgpIHsgcmV0dXJuIDE7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlh
bEJveEZsZXhHcm91cCgpIHsgcmV0dXJuIDE7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlh
bEJveE9yZGluYWxHcm91cCgpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgRUJveFNpemluZyBp
bml0aWFsQm94U2l6aW5nKCkgeyByZXR1cm4gQ09OVEVOVF9CT1g7IH0KICAgICBzdGF0aWMgU3R5
bGVSZWZsZWN0aW9uKiBpbml0aWFsQm94UmVmbGVjdCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbEZsZXhHcm93KCkgeyByZXR1cm4gMDsgfQpAQCAtMjA4Myw2ICsxNTIx
LDIyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUXVvdGVzRGF0YSogaW5pdGlhbFF1b3RlcygpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFs
Q29udGVudEFsdFRleHQoKSB7IHJldHVybiBlbXB0eUF0b207IH0KIAorI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCisgICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgp
IHsgcmV0dXJuIFRleHRJbmRlbnRGaXJzdExpbmU7IH0KKyAgICBzdGF0aWMgVGV4dEluZGVudFR5
cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudE5vcm1hbDsgfQor
ICAgIHN0YXRpYyBUZXh0QWxpZ25MYXN0IGluaXRpYWxUZXh0QWxpZ25MYXN0KCkgeyByZXR1cm4g
VGV4dEFsaWduTGFzdEF1dG87IH0KKyAgICBzdGF0aWMgVGV4dEp1c3RpZnkgaW5pdGlhbFRleHRK
dXN0aWZ5KCkgeyByZXR1cm4gVGV4dEp1c3RpZnlBdXRvOyB9CisjZW5kaWYKKworI2lmIEVOQUJM
RShDVVJTT1JfVklTSUJJTElUWSkKKyAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFs
Q3Vyc29yVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOyB9CisjZW5k
aWYKKworI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjBmLCBQZXJjZW50
KTsgfQorICAgIHN0YXRpYyBUZXh0U2l6ZUFkanVzdG1lbnQgaW5pdGlhbFRleHRTaXplQWRqdXN0
KCkgeyByZXR1cm4gVGV4dFNpemVBZGp1c3RtZW50KCk7IH0KKyNlbmRpZgorCiAgICAgc3RhdGlj
IGJvb2wgaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpOwogCiAgICAgc3RhdGljIFdpbGxDaGFuZ2VE
YXRhKiBpbml0aWFsV2lsbENoYW5nZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTIxMzgsNyAr
MTU5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRl
bUNvbHVtbkVuZCgpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9CiAgICAgc3RhdGljIEdyaWRQ
b3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigp
OyB9CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Sb3dFbmQoKSB7IHJl
dHVybiBHcmlkUG9zaXRpb24oKTsgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
ICovCisjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKIAogICAgIHN0YXRpYyB1bnNp
Z25lZCBpbml0aWFsVGFiU2l6ZSgpIHsgcmV0dXJuIDg7IH0KIApAQCAtMjE1MCw0MSArMTYwNCwz
MjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxSZWdp
b25UaHJlYWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQogICAgIHN0YXRpYyBSZWdpb25GcmFnbWVu
dCBpbml0aWFsUmVnaW9uRnJhZ21lbnQoKSB7IHJldHVybiBBdXRvUmVnaW9uRnJhZ21lbnQ7IH0K
IAotICAgIC8vIEtlZXAgdGhlc2UgYXQgdGhlIGVuZC4KICAgICBzdGF0aWMgSW50U2l6ZSBpbml0
aWFsSW5pdGlhbExldHRlcigpIHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHN0YXRpYyBMaW5l
Q2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkgeyByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsg
fQogICAgIHN0YXRpYyBFVGV4dFNlY3VyaXR5IGluaXRpYWxUZXh0U2VjdXJpdHkoKSB7IHJldHVy
biBUU05PTkU7IH0KLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHN0YXRpYyBUZXh0
U2l6ZUFkanVzdG1lbnQgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4gVGV4dFNpemVB
ZGp1c3RtZW50KCk7IH0KLSNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlm
CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGFw
SGlnaGxpZ2h0Q29sb3IoKTsKICNlbmRpZgorCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJG
TE9XX1NDUk9MTElORykKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVXNlVG91Y2hPdmVyZmxvd1Nj
cm9sbGluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKKwogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKICNlbmRpZgorCiAg
ICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxGaWx0ZXIoKSB7IHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KKwog
I2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGluaXRpYWxCYWNrZHJvcEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZp
bHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2VuZGlmCisKICNpZiBFTkFCTEUo
Q1NTX0NPTVBPU0lUSU5HKQogICAgIHN0YXRpYyBCbGVuZE1vZGUgaW5pdGlhbEJsZW5kTW9kZSgp
IHsgcmV0dXJuIEJsZW5kTW9kZU5vcm1hbDsgfQogICAgIHN0YXRpYyBJc29sYXRpb24gaW5pdGlh
bElzb2xhdGlvbigpIHsgcmV0dXJuIElzb2xhdGlvbkF1dG87IH0KICNlbmRpZgogCi0gICAgYm9v
bCBpc1BsYWNlaG9sZGVyU3R5bGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9pc1BsYWNlaG9sZGVyU3R5bGU7IH0KLSAgICB2b2lkIHNldElzUGxhY2Vob2xkZXJTdHls
ZSgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9pc1BsYWNlaG9sZGVyU3R5bGUs
IHRydWUpOyB9CisgICAgYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pc1BsYWNlaG9sZGVyU3R5bGU7IH0KKyAgICB2b2lkIHNl
dElzUGxhY2Vob2xkZXJTdHlsZSgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBp
c1BsYWNlaG9sZGVyU3R5bGUsIHRydWUpOyB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG5vbmlu
aGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlbmRl
clN0eWxlLCBub25pbmhlcml0ZWRfZmxhZ3MpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0Nv
bG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rQmFja2dyb3VuZENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3Jk
ZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdik7IH0KKyAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xv
ciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVy
VG9wQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yLCB2KTsgfQorICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVt
cGhhc2lzQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlu
a1RleHRGaWxsQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VD
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQorCisgICAgdm9pZCBpbmhlcml0VW5pY29kZUJp
ZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5z
ZXRVbmljb2RlQmlkaShwYXJlbnQtPm1fbm9uSW5oZXJpdGVkRmxhZ3MudW5pY29kZUJpZGkoKSk7
IH0KKyAgICB2b2lkIGdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5p
dCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0
JiBsZWZ0KSBjb25zdDsKKyAgICB2b2lkIGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoY29uc3Qg
U2hhZG93RGF0YSosIExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdDsK
KyAgICB2b2lkIGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlv
dXRVbml0JiB0b3AsIExheW91dFVuaXQmIGJvdHRvbSkgY29uc3Q7CisgICAgdm9pZCBnZXRTaGFk
b3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIGxv
Z2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0OworICAgIHZvaWQgZ2V0
U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQm
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0OworCisgICAgc3Rh
dGljIENvbG9yIGludmFsaWRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICBjb25zdCBD
b2xvciYgYm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5sZWZ0KCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJSaWdodENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5yaWdodCgpLmNvbG9yKCk7
IH0KKyAgICBjb25zdCBDb2xvciYgYm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcCgpLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgYm9y
ZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJv
dHRvbSgpLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+Y29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYg
Y29sb3IoKSBjb25zdDsKKyAgICBjb25zdCBDb2xvciYgY29sdW1uUnVsZUNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuY29sb3IoKTsg
fQorICAgIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmREYXRhLT5vdXRsaW5lLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dEVtcGhh
c2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB0ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQorICAgIGNvbnN0IENvbG9y
JiB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U3Ryb2tlQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtDb2xvcigpIGNv
bnN0OworICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlu
a0JvcmRlclRvcENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtP
dXRsaW5lQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+dmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dERlY29yYXRp
b25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNv
cmF0aW9uQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlv
bkNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtUZXh0RGVjb3JhdGlvbkNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT52aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0
ZWRMaW5rVGV4dEZpbGxDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRT
dHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRM
aW5rVGV4dFN0cm9rZUNvbG9yOyB9CisKKyAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdG9wQ29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBm
bG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5mbG9vZENvbG9yKCk7IH0KKyAg
ICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCku
bGlnaHRpbmdDb2xvcigpOyB9CiAKIHByaXZhdGU6CisgICAgc3RydWN0IE5vbkluaGVyaXRlZEZs
YWdzIHsKKyAgICAgICAgTm9uSW5oZXJpdGVkRmxhZ3MoKTsKKworICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzID09IG90aGVyLm1fZmxhZ3M7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5v
bkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mbGFncyAhPSBvdGhlci5t
X2ZsYWdzOyB9CisKKyAgICAgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBOb25J
bmhlcml0ZWRGbGFncyYpOworCisgICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1goKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93TWFzaywgb3Zl
cmZsb3dYT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IG92
ZXJmbG93WCkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1gsIG92ZXJmbG93TWFzaywgb3ZlcmZsb3dY
T2Zmc2V0KTsgfQorCisgICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93TWFzaywgb3ZlcmZsb3dZ
T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IG92ZXJmbG93
WSkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1ksIG92ZXJmbG93TWFzaywgb3ZlcmZsb3dZT2Zmc2V0
KTsgfQorCisgICAgICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVDbGVhcj4oZ2V0VmFsdWUoY2xlYXJNYXNrLCBjbGVhck9mZnNldCkpOyB9CisgICAgICAgIHZv
aWQgc2V0Q2xlYXIoRUNsZWFyIGNsZWFyKSB7IHVwZGF0ZVZhbHVlKGNsZWFyLCBjbGVhck1hc2ss
IGNsZWFyT2Zmc2V0KTsgfQorCisgICAgICAgIEVEaXNwbGF5IGVmZmVjdGl2ZURpc3BsYXkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4oZ2V0VmFsdWUoZGlzcGxheU1hc2ss
IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldEVmZmVjdGl2ZURp
c3BsYXkoRURpc3BsYXkgZWZmZWN0aXZlRGlzcGxheSkgeyB1cGRhdGVWYWx1ZShlZmZlY3RpdmVE
aXNwbGF5LCBkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCk7IH0KKworICAgICAg
ICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9zaXRp
b24+KGdldFZhbHVlKHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpKTsgfQorICAgICAgICB2
b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiBwb3NpdGlvbikgeyB1cGRhdGVWYWx1ZShwb3NpdGlv
biwgcG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCk7IH0KKworICAgICAgICBFRGlzcGxheSBv
cmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4oZ2V0
VmFsdWUoZGlzcGxheU1hc2ssIG9yaWdpbmFsRGlzcGxheU9mZnNldCkpOyB9CisgICAgICAgIHZv
aWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSkgeyB1cGRhdGVW
YWx1ZShvcmlnaW5hbERpc3BsYXksIGRpc3BsYXlNYXNrLCBvcmlnaW5hbERpc3BsYXlPZmZzZXQp
OyB9CisKKyAgICAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVVuaWNvZGVCaWRpPihnZXRWYWx1ZSh1bmljb2RlQmlkaU1hc2ssIHVuaWNv
ZGVCaWRpT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRVbmljb2RlQmlkaShFVW5pY29kZUJp
ZGkgdW5pY29kZUJpZGkpIHsgdXBkYXRlVmFsdWUodW5pY29kZUJpZGksIHVuaWNvZGVCaWRpTWFz
aywgdW5pY29kZUJpZGlPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNWaWV3cG9ydFVuaXRz
KCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0KTsgfQor
ICAgICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29s
ZWFuKHZhbHVlLCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0KTsgfQorCisgICAgICAgIEVWZXJ0aWNh
bEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVmVydGlj
YWxBbGlnbj4oZ2V0VmFsdWUodmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQp
KTsgfQorICAgICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxpZ24gdmVydGlj
YWxBbGlnbikgeyB1cGRhdGVWYWx1ZSh2ZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWduTWFzaywg
dmVydGljYWxBbGlnbk9mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihleHBsaWNpdEluaGVy
aXRhbmNlT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQ
cm9wZXJ0aWVzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZXhwbGljaXRJbmhl
cml0YW5jZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBmbG9hdGluZygpICE9IE5vRmxvYXQ7IH0KKyAgICAgICAgRUZsb2F0IGZsb2F0aW5nKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsb2F0PihnZXRWYWx1ZShmbG9hdGluZ01hc2ss
IGZsb2F0aW5nT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRGbG9hdGluZyhFRmxvYXQgZmxv
YXRpbmcpIHsgdXBkYXRlVmFsdWUoZmxvYXRpbmcsIGZsb2F0aW5nTWFzaywgZmxvYXRpbmdPZmZz
ZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdCB7
IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIGdldFZhbHVlKHBzZXVkb0JpdHNNYXNrLCBw
c2V1ZG9CaXRzT2Zmc2V0KTsgfQorICAgICAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCk7CisgICAg
ICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0KTsKKworICAgICAgICBFVGFi
bGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGFibGVM
YXlvdXQ+KGdldFZhbHVlKHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZzZXQpKTsg
fQorICAgICAgICB2b2lkIHNldFRhYmxlTGF5b3V0KEVUYWJsZUxheW91dCB0YWJsZUxheW91dCkg
eyB1cGRhdGVWYWx1ZSh0YWJsZUxheW91dCwgdGFibGVMYXlvdXRCaXRNYXNrLCB0YWJsZUxheW91
dE9mZnNldCk7IH0KKworICAgICAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4oZ2V0VmFsdWUoc3R5bGVUeXBlTWFzaywgc3R5bGVUeXBl
T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBl
KSB7IHVwZGF0ZVZhbHVlKHN0eWxlVHlwZSwgc3R5bGVUeXBlTWFzaywgc3R5bGVUeXBlT2Zmc2V0
KTsgfQorCisgICAgICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGlzVW5pcXVlT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldElzVW5pcXVlKCkgeyB1cGRhdGVC
b29sZWFuKHRydWUsIGlzVW5pcXVlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgZW1wdHlTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZW1wdHlTdGF0ZU9mZnNldCk7ICB9CisgICAg
ICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUs
IGVtcHR5U3RhdGVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBj
b25zdCB7IHJldHVybiBnZXRCb29sZWFuKGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9CisgICAg
ICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2
YWx1ZSwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgbGFzdENoaWxk
U3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGxhc3RDaGlsZFN0YXRlT2Zmc2V0KTsg
IH0KKyAgICAgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJv
b2xlYW4odmFsdWUsIGxhc3RDaGlsZFN0YXRlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgYWZm
ZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5SG92ZXJP
ZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyKGJvb2wgdmFsdWUpIHsg
dXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0KTsgfQorCisgICAgICAg
IGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0
ZWRCeUFjdGl2ZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKGJv
b2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCk7
IH0KKworICAgICAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9v
bGVhbihhZmZlY3RlZEJ5RHJhZ09mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5
RHJhZyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlEcmFnT2Zm
c2V0KTsgfQorCisgICAgICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVh
bihpc0xpbmtPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgdmFsdWUpIHsg
dXBkYXRlQm9vbGVhbih2YWx1ZSwgaXNMaW5rT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFz
RXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbk9mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0V4cGxpY2l0
bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlT
ZXRXcml0aW5nTW9kZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxp
Y2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCk7IH0KKworICAgICAgICBzdGF0aWMgcHRyZGlmZl90
IGZsYWdzTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vbkluaGVyaXRl
ZEZsYWdzLCBtX2ZsYWdzKTsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzYWZmZWN0
ZWRCeUFjdGl2ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNl
dDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzYWZmZWN0ZWRCeUhvdmVyKCkgeyBy
ZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0KKyAgICAgICAgc3Rh
dGljIHVpbnQ2NF90IGZsYWdQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIHsgcmV0dXJuIG9u
ZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsgfQorICAgICAgICBz
dGF0aWMgdWludDY0X3Qgc2V0Rmlyc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnRmly
c3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQorICAgICAgICBzdGF0aWMgdWludDY0
X3Qgc2V0TGFzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdMYXN0Q2hpbGRTdGF0ZSgp
IHwgZmxhZ0lzVW5pcXVlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdXBkYXRl
Qm9vbGVhbihib29sLCB1aW50NjRfdCBvZmZzZXQpOworICAgICAgICBib29sIGdldEJvb2xlYW4o
dWludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKyAgICAgICAgdm9pZCB1cGRhdGVWYWx1ZSh1aW50OF90
IG5ld1ZhbHVlLCB1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zm
c2V0KTsKKyAgICAgICAgdW5zaWduZWQgZ2V0VmFsdWUodWludDY0X3QgcG9zaXRpb25JbmRlcGVu
ZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkgY29uc3Q7CisKKyAgICAgICAgc3RhdGljIHVpbnQ2
NF90IGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgaXNVbmlxdWVPZmZzZXQ7
IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdGaXJzdENoaWxkU3RhdGUoKSB7IHJldHVy
biBvbmVCaXRNYXNrIDw8IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMg
dWludDY0X3QgZmxhZ0xhc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBsYXN0
Q2hpbGRTdGF0ZU9mZnNldDsgfQorCisgICAgICAgIC8vIFRvIHR5cGUgdGhlIGJpdCBtYXNrIHBy
b3Blcmx5IG9uIDY0Yml0cy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG9uZUJpdE1h
c2sgPSAweDE7CisKKyAgICAgICAgLy8gQnl0ZSAxLgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgb3ZlcmZsb3dCaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRf
dCBvdmVyZmxvd01hc2sgPSAob25lQml0TWFzayA8PCBvdmVyZmxvd0JpdENvdW50KSAtIDE7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1hPZmZzZXQgPSAwOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dZT2Zmc2V0ID0gb3ZlcmZsb3dYT2Zmc2V0
ICsgb3ZlcmZsb3dCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsZWFy
Qml0Q291bnQgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgY2xlYXJNYXNrID0g
KG9uZUJpdE1hc2sgPDwgY2xlYXJCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2xlYXJPZmZzZXQgPSBvdmVyZmxvd1lPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50
OworCisgICAgICAgIC8vIEJ5dGUgMi4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRp
c3BsYXlCaXRDb3VudCA9IDU7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkaXNwbGF5
TWFzayA9IChvbmVCaXRNYXNrIDw8IGRpc3BsYXlCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZWZmZWN0aXZlRGlzcGxheU9mZnNldCA9IGNsZWFyT2Zmc2V0ICsg
Y2xlYXJCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uQml0
Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcG9zaXRpb25NYXNrID0g
KG9uZUJpdE1hc2sgPDwgcG9zaXRpb25CaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ICsgZGlz
cGxheUJpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgMy4KKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG9yaWdpbmFsRGlzcGxheU9mZnNldCA9IHBvc2l0aW9uT2Zmc2V0ICsgcG9zaXRp
b25CaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRpQml0
Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdW5pY29kZUJpZGlNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgdW5pY29kZUJpZGlCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgdW5pY29kZUJpZGlPZmZzZXQgPSBvcmlnaW5hbERpc3BsYXlPZmZz
ZXQgKyBkaXNwbGF5Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA0LgorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdCaXRDb3VudCA9IDI7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1aW50NjRfdCBmbG9hdGluZ01hc2sgPSAob25lQml0TWFzayA8PCBmbG9hdGluZ0JpdENv
dW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ09mZnNldCA9
IHVuaWNvZGVCaWRpT2Zmc2V0ICsgdW5pY29kZUJpZGlCaXRDb3VudDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25CaXRjb3VudCA9IDE7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zm
c2V0ID0gZmxvYXRpbmdPZmZzZXQgKyBmbG9hdGluZ0JpdENvdW50OworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlQml0Y291bnQgPSAxOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2Rl
T2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCArIGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25CaXRjb3VudDsKKworICAgICAgICAvLyBCeXRlIDUuCisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlQml0Q291bnQgPSAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCA9IGhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCArIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9k
ZUJpdGNvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVMYXlvdXRCaXRD
b3VudCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB0YWJsZUxheW91dEJpdE1h
c2sgPSBvbmVCaXRNYXNrOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVMYXlv
dXRPZmZzZXQgPSBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0ICsgZXhwbGljaXRJbmhlcml0YW5j
ZUJpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbkJp
dENvdW50ID0gNDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25Q
YWRkaW5nID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25B
bmRQYWRkaW5nQml0Q291bnQgPSB2ZXJ0aWNhbEFsaWduQml0Q291bnQgKyB2ZXJ0aWNhbEFsaWdu
UGFkZGluZzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHZlcnRpY2FsQWxpZ25NYXNr
ID0gKG9uZUJpdE1hc2sgPDwgdmVydGljYWxBbGlnbkJpdENvdW50KSAtIDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gdGFibGVMYXlvdXRPZmZz
ZXQgKyB0YWJsZUxheW91dEJpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNi4KKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNCaXRDb3VudCA9IDc7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1aW50NjRfdCBwc2V1ZG9CaXRzTWFzayA9IChvbmVCaXRNYXNrIDw8IHBzZXVk
b0JpdHNCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRv
Qml0c09mZnNldCA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyB2ZXJ0aWNhbEFsaWduQml0Q291bnQ7
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3Vu
dCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBoYXNWaWV3cG9ydFVuaXRzQml0
TWFzayA9IChvbmVCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCkgLSAxOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3BvcnRVbml0c09mZnNldCA9IHBzZXVk
b0JpdHNPZmZzZXQgKyBwc2V1ZG9CaXRzQml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA3Lgor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQml0Q291bnQgPSA2OworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlUGFkZGluZyA9IDI7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQgPSBzdHls
ZVR5cGVCaXRDb3VudCArIHN0eWxlVHlwZVBhZGRpbmc7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBzdHlsZVR5cGVNYXNrID0gKG9uZUJpdE1hc2sgPDwgc3R5bGVUeXBlQW5kUGFkZGlu
Z0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVP
ZmZzZXQgPSBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgKyBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0
OworCisgICAgICAgIC8vIEJ5dGUgOC4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlz
VW5pcXVlT2Zmc2V0ID0gc3R5bGVUeXBlT2Zmc2V0ICsgc3R5bGVUeXBlQW5kUGFkZGluZ0JpdENv
dW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZW1wdHlTdGF0ZU9mZnNldCA9IGlz
VW5pcXVlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZpcnN0Q2hp
bGRTdGF0ZU9mZnNldCA9IGVtcHR5U3RhdGVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbGFzdENoaWxkU3RhdGVPZmZzZXQgPSBmaXJzdENoaWxkU3RhdGVPZmZzZXQg
KyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0
ID0gbGFzdENoaWxkU3RhdGVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCA9IGFmZmVjdGVkQnlIb3Zlck9mZnNldCArIDE7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5RHJhZ09mZnNldCA9IGFmZmVj
dGVkQnlBY3RpdmVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaXNM
aW5rT2Zmc2V0ID0gYWZmZWN0ZWRCeURyYWdPZmZzZXQgKyAxOworCisgICAgICAgIC8vIDYwIGJp
dHMgYXJlIGFzc2lnbmVkLiBUaGVyZSBhcmUgNCBiaXRzIGF2YWlsYWJsZSBjdXJyZW50bHkgdXNl
ZCBhcyBwYWRkaW5nIHRvIGltcHJvdmUgY29kZSBnZW5lcmF0aW9uLgorICAgICAgICAvLyBJZiB5
b3UgYWRkIG1vcmUgc3R5bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRl
IFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpLgorICAgICAgICB1aW50NjRfdCBt
X2ZsYWdzIHsgMCB9OworICAgIH07CisKKyAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgeworICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICB1bnNpZ25lZCBlbXB0eUNlbGxz
IDogMTsgLy8gRUVtcHR5Q2VsbAorICAgICAgICB1bnNpZ25lZCBjYXB0aW9uU2lkZSA6IDI7IC8v
IEVDYXB0aW9uU2lkZQorICAgICAgICB1bnNpZ25lZCBsaXN0U3R5bGVUeXBlIDogNzsgLy8gRUxp
c3RTdHlsZVR5cGUKKyAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlUG9zaXRpb24gOiAxOyAvLyBF
TGlzdFN0eWxlUG9zaXRpb24KKyAgICAgICAgdW5zaWduZWQgdmlzaWJpbGl0eSA6IDI7IC8vIEVW
aXNpYmlsaXR5CisgICAgICAgIHVuc2lnbmVkIHRleHRBbGlnbiA6IDQ7IC8vIEVUZXh0QWxpZ24K
KyAgICAgICAgdW5zaWduZWQgdGV4dFRyYW5zZm9ybSA6IDI7IC8vIEVUZXh0VHJhbnNmb3JtCisg
ICAgICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9ucyA6IFRleHREZWNvcmF0aW9uQml0czsKKyAg
ICAgICAgdW5zaWduZWQgY3Vyc29yIDogNjsgLy8gRUN1cnNvcgorI2lmIEVOQUJMRShDVVJTT1Jf
VklTSUJJTElUWSkKKyAgICAgICAgdW5zaWduZWQgY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1
cnNvclZpc2liaWxpdHkKKyNlbmRpZgorICAgICAgICB1bnNpZ25lZCBkaXJlY3Rpb24gOiAxOyAv
LyBUZXh0RGlyZWN0aW9uCisgICAgICAgIHVuc2lnbmVkIHdoaXRlU3BhY2UgOiAzOyAvLyBFV2hp
dGVTcGFjZQorICAgICAgICAvLyAzMiBiaXRzCisgICAgICAgIHVuc2lnbmVkIGJvcmRlckNvbGxh
cHNlIDogMTsgLy8gRUJvcmRlckNvbGxhcHNlCisgICAgICAgIHVuc2lnbmVkIGJveERpcmVjdGlv
biA6IDE7IC8vIEVCb3hEaXJlY3Rpb24gKENTUzMgYm94X2RpcmVjdGlvbiBwcm9wZXJ0eSwgZmxl
eGlibGUgYm94IGxheW91dCBtb2R1bGUpCisKKyAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVk
CisgICAgICAgIHVuc2lnbmVkIHJ0bE9yZGVyaW5nIDogMTsgLy8gT3JkZXIKKyAgICAgICAgdW5z
aWduZWQgcHJpbnRDb2xvckFkanVzdCA6IFByaW50Q29sb3JBZGp1c3RCaXRzOworICAgICAgICB1
bnNpZ25lZCBwb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKKyAgICAgICAgdW5z
aWduZWQgaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCisgICAgICAgIHVuc2lnbmVkIGlu
c2lkZURlZmF1bHRCdXR0b24gOiAxOworICAgICAgICAvLyA0NCBiaXRzCisKKyAgICAgICAgLy8g
Q1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQK
KyAgICAgICAgdW5zaWduZWQgd3JpdGluZ01vZGUgOiAyOyAvLyBXcml0aW5nTW9kZQorICAgICAg
ICAvLyA0NiBiaXRzCisgICAgfTsKKworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCB0
byBpbXBsZW1lbnQgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICAgIFJlbmRlclN0eWxlKFJlbmRl
clN0eWxlJiwgUmVuZGVyU3R5bGUmJik7CisKKyAgICBFRGlzcGxheSBvcmlnaW5hbERpc3BsYXko
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpOyB9
CisKKyAgICBib29sIGhhc0F1dG9MZWZ0QW5kUmlnaHQoKSBjb25zdCB7IHJldHVybiBsZWZ0KCku
aXNBdXRvKCkgJiYgcmlnaHQoKS5pc0F1dG8oKTsgfQorICAgIGJvb2wgaGFzQXV0b1RvcEFuZEJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgpLmlzQXV0bygpICYmIGJvdHRvbSgpLmlzQXV0bygp
OyB9CisKKyAgICB2b2lkIHNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiwg
Ym9vbCBhZGQpOworCisgICAgTGF5b3V0Qm94RXh0ZW50IGdldFNoYWRvd0luc2V0RXh0ZW50KGNv
bnN0IFNoYWRvd0RhdGEqKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheVJlcGxh
Y2VkVHlwZShFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5SW5saW5lVHlwZShF
RGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVCb3goRURpc3BsYXkp
OworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkpOworICAgIHN0YXRp
YyBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVEaXNwbGF5KTsKKworICAgIENvbG9y
IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soaW50IGNvbG9yUHJvcGVydHksIGJvb2wgdmlzaXRlZExp
bmspIGNvbnN0OworCiAgICAgYm9vbCBjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0
IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cykgY29uc3Q7CiAgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNv
bnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dGllcykgY29uc3Q7CkBAIC0yMTkzLDEwMiArMTkzMSwxNDMgQEAgcHJpdmF0ZToKICAgICBib29s
IGNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0IFJlbmRl
clN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3Q7CiAgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVy
U3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25z
dDsKIAotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7
IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlu
a0JvcmRlclJpZ2h0Q29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCB2KTsgfQotICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua091dGxpbmVDb2xvciwgdik7IH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3Zpc2l0ZWRMaW5r
Q29sdW1uUnVsZUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RGVjb3Jh
dGlvbkNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0Vmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2KTsgfQotICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQot
Ci0gICAgdm9pZCBpbmhlcml0VW5pY29kZUJpZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnQpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFVuaWNvZGVCaWRpKHBhcmVudC0+bm9uaW5oZXJp
dGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCkpOyB9Ci0gICAgdm9pZCBnZXRTaGFkb3dFeHRlbnQoY29u
c3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91
dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3Q7Ci0gICAgTGF5b3V0Qm94RXh0
ZW50IGdldFNoYWRvd0luc2V0RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqKSBjb25zdDsKLSAgICB2
b2lkIGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVu
aXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdDsKLSAgICB2b2lkIGdldFNoYWRvd1Zl
cnRpY2FsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVu
aXQmIGJvdHRvbSkgY29uc3Q7Ci0gICAgdm9pZCBnZXRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRl
bnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsTGVmdCwgTGF5
b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvdywg
bG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCkgOiBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFk
b3csIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpOwotICAgIH0KLSAgICB2b2lkIGdldFNoYWRv
d0Jsb2NrRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5p
dCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZ2V0U2hhZG93VmVydGlj
YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKSA6IGdldFNoYWRvd0hv
cml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsKLSAgICB9
CisgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCisgICAgRGF0YVJlZjxTdHlsZUJveERh
dGE+IG1fYm94RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlVmlzdWFsRGF0YT4gbV92aXN1YWxEYXRh
OworICAgIERhdGFSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gbV9iYWNrZ3JvdW5kRGF0YTsKKyAg
ICBEYXRhUmVmPFN0eWxlU3Vycm91bmREYXRhPiBtX3N1cnJvdW5kRGF0YTsKKyAgICBEYXRhUmVm
PFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE+IG1fcmFyZU5vbkluaGVyaXRlZERhdGE7CisgICAg
Tm9uSW5oZXJpdGVkRmxhZ3MgbV9ub25Jbmhlcml0ZWRGbGFnczsKIAotICAgIGJvb2wgaXNEaXNw
bGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfQk9YIHx8
IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAg
ICAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRAotI2VuZGlmCi0gICAgICAgICAgICB8
fCBkaXNwbGF5ID09IElOTElORV9UQUJMRTsKLSAgICB9CisgICAgLy8gaW5oZXJpdGVkIGF0dHJp
YnV0ZXMKKyAgICBEYXRhUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IG1fcmFyZUluaGVyaXRl
ZERhdGE7CisgICAgRGF0YVJlZjxTdHlsZUluaGVyaXRlZERhdGE+IG1faW5oZXJpdGVkRGF0YTsK
KyAgICBJbmhlcml0ZWRGbGFncyBtX2luaGVyaXRlZEZsYWdzOwogCi0gICAgYm9vbCBpc0Rpc3Bs
YXlJbmxpbmVUeXBlKEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gZGlzcGxheSA9PSBJTkxJTkUgfHwgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKGRpc3BsYXkpOwot
ICAgIH0KKyAgICAvLyBsaXN0IG9mIGFzc29jaWF0ZWQgcHNldWRvIHN0eWxlcworICAgIHN0ZDo6
dW5pcXVlX3B0cjxQc2V1ZG9TdHlsZUNhY2hlPiBtX2NhY2hlZFBzZXVkb1N0eWxlczsKIAotICAg
IGJvb2wgaXNEaXNwbGF5RmxleGlibGVCb3goRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxF
WDsKLSAgICB9CisgICAgRGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9zdmdTdHlsZTsKIAotICAg
IGJvb2wgaXNEaXNwbGF5R3JpZEJveChFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSNp
ZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICByZXR1cm4gZGlzcGxheSA9PSBHUklE
IHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQ7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
ZGlzcGxheSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8
IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3Vu
IHsgZmFsc2UgfTsKICNlbmRpZgotICAgIH0KK307CiAKLSAgICBib29sIGlzRGlzcGxheUZsZXhp
YmxlT3JHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gaXNEaXNwbGF5RmxleGlibGVCb3goZGlzcGxheSkgfHwgaXNEaXNwbGF5R3JpZEJveChkaXNw
bGF5KTsKLSAgICB9CitpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKK2Zsb2F0IGFkanVzdEZsb2F0Rm9yQWJzb2x1dGVab29tKGZsb2F0LCBjb25zdCBS
ZW5kZXJTdHlsZSYpOworTGF5b3V0VW5pdCBhZGp1c3RMYXlvdXRVbml0Rm9yQWJzb2x1dGVab29t
KExheW91dFVuaXQsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICAvLyBDb2xvciBhY2Nlc3Nv
cnMgYXJlIGFsbCBwcml2YXRlIHRvIG1ha2Ugc3VyZSBjYWxsZXJzIHVzZSB2aXNpdGVkRGVwZW5k
ZW50Q29sb3IgaW5zdGVhZCB0byBhY2Nlc3MgdGhlbS4KLSAgICBzdGF0aWMgQ29sb3IgaW52YWxp
ZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBib3JkZXJMZWZ0
Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5jb2xvcigpOyB9
Ci0gICAgY29uc3QgQ29sb3ImIGJvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLnJpZ2h0KCkuY29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBib3JkZXJU
b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wKCkuY29sb3IoKTsg
fQotICAgIGNvbnN0IENvbG9yJiBib3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIuYm90dG9tKCkuY29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmNvbG9yKCk7IH0KLSAg
ICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdDsKLSAgICBjb25zdCBDb2xvciYgY29sdW1uUnVs
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wt
Pm1fcnVsZS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBD
b2xvciYgdGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dEZpbGxDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yOyB9Ci0gICAg
Y29uc3QgQ29sb3ImIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtD
b2xvcigpIGNvbnN0OwotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQmFj
a2dyb3VuZENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJSaWdo
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVy
Qm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNp
dGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
Qm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlz
aXRlZExpbmtPdXRsaW5lQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0
aUNvbC0+bV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB0
ZXh0RGVjb3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdGV4dERlY29yYXRpb25Db2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1Rl
eHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT52aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT52aXNpdGVkTGlua1RleHRGaWxsQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExp
bmtUZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0U3Ryb2tlQ29sb3I7IH0KK0VCb3JkZXJTdHlsZSBjb2xsYXBzZWRCb3JkZXJT
dHlsZShFQm9yZGVyU3R5bGUpOwogCi0gICAgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhp
bnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7Citib29sIHBzZXVkb0Vs
ZW1lbnRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKik7CiAKLSAgICBjb25zdCBD
b2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdG9wQ29sb3IoKTsg
fQotICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5mbG9vZENvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOyB9CitpbmxpbmUgUmVuZGVyU3R5
bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpOb25Jbmhlcml0ZWRGbGFncygpCit7CisgICAgLy8gQWxs
IHRoZXNlIGluaXRpYWwgdmFsdWVzIG5lZWQgdG8gYmUgemVybyBzbyB0aGF0IHplcm8taW5pdGlh
bGl6aW5nIG1fZmxhZ3MgaXMgY29ycmVjdC4KKyAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1go
KSk7CisgICAgQVNTRVJUKCFpbml0aWFsT3ZlcmZsb3dZKCkpOworICAgIEFTU0VSVCghaW5pdGlh
bENsZWFyKCkpOworICAgIEFTU0VSVCghaW5pdGlhbERpc3BsYXkoKSk7CisgICAgQVNTRVJUKCFp
bml0aWFsVW5pY29kZUJpZGkoKSk7CisgICAgQVNTRVJUKCFpbml0aWFsUG9zaXRpb24oKSk7Cisg
ICAgQVNTRVJUKCFpbml0aWFsVmVydGljYWxBbGlnbigpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxG
bG9hdGluZygpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxUYWJsZUxheW91dCgpKTsKK30KIAotICAg
IHZvaWQgYXBwZW5kQ29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+KTsKLX07Citp
bmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmNvcHlOb25Jbmhlcml0
ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikKK3sKKyAgICAvLyBPbmx5IGEg
c3Vic2V0IGlzIGNvcGllZCBiZWNhdXNlIE5vbkluaGVyaXRlZEZsYWdzIGNvbnRhaW5zIGEgYnVu
Y2ggb2Ygc3R1ZmYgb3RoZXIgdGhhbiByZWFsIHN0eWxlIGRhdGEuCisgICAgdWludDY0X3Qgbm9u
SW5oZXJpdGVkTWFzayA9IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1hPZmZzZXQKKyAgICAgICAg
fCBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dZT2Zmc2V0CisgICAgICAgIHwgY2xlYXJNYXNrIDw8
IGNsZWFyT2Zmc2V0CisgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgZWZmZWN0aXZlRGlzcGxheU9m
ZnNldAorICAgICAgICB8IHBvc2l0aW9uTWFzayA8PCBwb3NpdGlvbk9mZnNldAorICAgICAgICB8
IGRpc3BsYXlNYXNrIDw8IG9yaWdpbmFsRGlzcGxheU9mZnNldAorICAgICAgICB8IHVuaWNvZGVC
aWRpTWFzayA8PCB1bmljb2RlQmlkaU9mZnNldAorICAgICAgICB8IHZlcnRpY2FsQWxpZ25NYXNr
IDw8IHZlcnRpY2FsQWxpZ25PZmZzZXQKKyAgICAgICAgfCBmbG9hdGluZ01hc2sgPDwgZmxvYXRp
bmdPZmZzZXQKKyAgICAgICAgfCBvbmVCaXRNYXNrIDw8IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZz
ZXQKKyAgICAgICAgfCB0YWJsZUxheW91dEJpdE1hc2sgPDwgdGFibGVMYXlvdXRPZmZzZXQKKyAg
ICAgICAgfCBoYXNWaWV3cG9ydFVuaXRzQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0
OworCisgICAgbV9mbGFncyA9IChtX2ZsYWdzICYgfm5vbkluaGVyaXRlZE1hc2spIHwgKG90aGVy
Lm1fZmxhZ3MgJiBub25Jbmhlcml0ZWRNYXNrKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNv
bnN0Cit7CisgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKKyAgICBBU1NFUlQocHNldWRv
IDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOworICAgIHJldHVybiAob25lQml0TWFzayA8PCAo
cHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pKSAmIG1fZmxhZ3M7Cit9CisKK2lubGluZSB2
b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGUoUHNl
dWRvSWQgcHNldWRvKQoreworICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7CisgICAgQVNT
RVJUKHBzZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKKyAgICBtX2ZsYWdzIHw9IG9u
ZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsKK30KKworaW5saW5l
IHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZXMo
UHNldWRvSWRTZXQgcHNldWRvSWRTZXQpCit7CisgICAgQVNTRVJUKHBzZXVkb0lkU2V0KTsKKyAg
ICB1aW50NjRfdCByYXdQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0LmRhdGEoKTsKKyAgICBBU1NF
UlQoKHJhd1BzZXVkb0lkU2V0ICYgUFVCTElDX1BTRVVET0lEX01BU0spID09IHJhd1BzZXVkb0lk
U2V0KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHBzZXVkb0JpdHNPZmZzZXQgPj0gMSwgIihwc2V1ZG9C
aXRzT2Zmc2V0IC0gMSkgc2hvdWxkIGJlIHZhbGlkLiIpOworICAgIG1fZmxhZ3MgfD0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyYXdQc2V1ZG9JZFNldCkgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAx
KSk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6dXBk
YXRlQm9vbGVhbihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZzZXQpCit7CisgICAgaWYgKGlzU2V0
KQorICAgICAgICBtX2ZsYWdzIHw9IChvbmVCaXRNYXNrIDw8IG9mZnNldCk7CisgICAgZWxzZQor
ICAgICAgICBtX2ZsYWdzICY9IH4ob25lQml0TWFzayA8PCBvZmZzZXQpOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmdldEJvb2xlYW4odWludDY0X3Qg
b2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtX2ZsYWdzICYgKG9uZUJpdE1hc2sgPDwgb2Zm
c2V0KTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjp1
cGRhdGVWYWx1ZSh1aW50OF90IG5ld1ZhbHVlLCB1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50
TWFzaywgdWludDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCghKG5ld1ZhbHVlICYgfnBvc2l0
aW9uSW5kZXBlbmRlbnRNYXNrKSk7CisgICAgdWludDY0X3QgcG9zaXRpb25EZXBlbmRlbnRNYXNr
ID0gcG9zaXRpb25JbmRlcGVuZGVudE1hc2sgPDwgb2Zmc2V0OworICAgIG1fZmxhZ3MgPSAobV9m
bGFncyAmIH5wb3NpdGlvbkRlcGVuZGVudE1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihu
ZXdWYWx1ZSkgPDwgb2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OkluaGVy
aXRlZEZsYWdzOjpvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gZW1wdHlDZWxscyA9PSBvdGhlci5lbXB0eUNlbGxzCisgICAgICAgICYm
IGNhcHRpb25TaWRlID09IG90aGVyLmNhcHRpb25TaWRlCisgICAgICAgICYmIGxpc3RTdHlsZVR5
cGUgPT0gb3RoZXIubGlzdFN0eWxlVHlwZQorICAgICAgICAmJiBsaXN0U3R5bGVQb3NpdGlvbiA9
PSBvdGhlci5saXN0U3R5bGVQb3NpdGlvbgorICAgICAgICAmJiB2aXNpYmlsaXR5ID09IG90aGVy
LnZpc2liaWxpdHkKKyAgICAgICAgJiYgdGV4dEFsaWduID09IG90aGVyLnRleHRBbGlnbgorICAg
ICAgICAmJiB0ZXh0VHJhbnNmb3JtID09IG90aGVyLnRleHRUcmFuc2Zvcm0KKyAgICAgICAgJiYg
dGV4dERlY29yYXRpb25zID09IG90aGVyLnRleHREZWNvcmF0aW9ucworICAgICAgICAmJiBjdXJz
b3IgPT0gb3RoZXIuY3Vyc29yCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgICAg
ICAmJiBjdXJzb3JWaXNpYmlsaXR5ID09IG90aGVyLmN1cnNvclZpc2liaWxpdHkKKyNlbmRpZgor
ICAgICAgICAmJiBkaXJlY3Rpb24gPT0gb3RoZXIuZGlyZWN0aW9uCisgICAgICAgICYmIHdoaXRl
U3BhY2UgPT0gb3RoZXIud2hpdGVTcGFjZQorICAgICAgICAmJiBib3JkZXJDb2xsYXBzZSA9PSBv
dGhlci5ib3JkZXJDb2xsYXBzZQorICAgICAgICAmJiBib3hEaXJlY3Rpb24gPT0gb3RoZXIuYm94
RGlyZWN0aW9uCisgICAgICAgICYmIHJ0bE9yZGVyaW5nID09IG90aGVyLnJ0bE9yZGVyaW5nCisg
ICAgICAgICYmIHByaW50Q29sb3JBZGp1c3QgPT0gb3RoZXIucHJpbnRDb2xvckFkanVzdAorICAg
ICAgICAmJiBwb2ludGVyRXZlbnRzID09IG90aGVyLnBvaW50ZXJFdmVudHMKKyAgICAgICAgJiYg
aW5zaWRlTGluayA9PSBvdGhlci5pbnNpZGVMaW5rCisgICAgICAgICYmIGluc2lkZURlZmF1bHRC
dXR0b24gPT0gb3RoZXIuaW5zaWRlRGVmYXVsdEJ1dHRvbgorICAgICAgICAmJiB3cml0aW5nTW9k
ZSA9PSBvdGhlci53cml0aW5nTW9kZTsKK30KKworaW5saW5lIHVuc2lnbmVkIFJlbmRlclN0eWxl
OjpOb25Jbmhlcml0ZWRGbGFnczo6Z2V0VmFsdWUodWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVu
dE1hc2ssIHVpbnQ2NF90IG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KChtX2ZsYWdzID4+IG9mZnNldCkgJiBwb3NpdGlvbkluZGVwZW5kZW50TWFzayk7
Cit9CiAKIGlubGluZSBpbnQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCB2YWx1ZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogewpAQCAtMjMyNSw1MCArMjEwNCwyNTYgQEAgaW5saW5lIEVC
b3JkZXJTdHlsZSBjb2xsYXBzZWRCb3JkZXJTdHlsZShFQm9yZGVyU3R5bGUgc3R5bGUpCiAgICAg
cmV0dXJuIHN0eWxlOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0Wm9vbShmbG9h
dCBmKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0JhY2tncm91bmQoKSBjb25zdAorewor
ICAgIHJldHVybiB2aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLmlzVmlzaWJsZSgpIHx8ICBoYXNCYWNrZ3JvdW5kSW1hZ2UoKTsKK30KKworaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OmF1dG9XcmFwKEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UpCiB7Ci0gICAg
c2V0RWZmZWN0aXZlWm9vbShlZmZlY3RpdmVab29tKCkgKiBmKTsKLSAgICBpZiAoY29tcGFyZUVx
dWFsKHZpc3VhbC0+bV96b29tLCBmKSkKKyAgICAvLyBOb3dyYXAgYW5kIHByZSBkb24ndCBhdXRv
bWF0aWNhbGx5IHdyYXAuCisgICAgcmV0dXJuIHdoaXRlU3BhY2UgIT0gTk9XUkFQICYmIHdoaXRl
U3BhY2UgIT0gUFJFOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6cHJlc2VydmVOZXds
aW5lKEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UpCit7CisgICAgLy8gTm9ybWFsIGFuZCBub3dyYXAg
ZG8gbm90IHByZXNlcnZlIG5ld2xpbmVzLgorICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PUk1B
TCAmJiB3aGl0ZVNwYWNlICE9IE5PV1JBUDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6
OmNvbGxhcHNlV2hpdGVTcGFjZShFV2hpdGVTcGFjZSB3cykKK3sKKyAgICAvLyBQcmUgYW5kIHBy
ZXdyYXAgZG8gbm90IGNvbGxhcHNlIHdoaXRlc3BhY2UuCisgICAgcmV0dXJuIHdzICE9IFBSRSAm
JiB3cyAhPSBQUkVfV1JBUDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29sbGFw
c2libGVXaGl0ZVNwYWNlKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNo
YXJhY3RlcikgeworICAgIGNhc2UgJyAnOgorICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgcmV0dXJu
IGNvbGxhcHNlV2hpdGVTcGFjZSgpOworICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgcmV0dXJuICFw
cmVzZXJ2ZU5ld2xpbmUoKTsKKyAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgdmlzdWFsLmFjY2VzcygpLT5tX3pvb20gPSBmOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6OmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHdoaXRlU3BhY2UoKSA9PSBQUkVfV1JBUCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5lQnJlYWtB
ZnRlcldoaXRlU3BhY2U7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gd29yZEJyZWFrKCkgPT0gQnJlYWtXb3JkQnJlYWsgfHwg
b3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dyYXA7Cit9CisKK2lubGluZSBib29sIFJl
bmRlclN0eWxlOjpoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3QKK3sKKyAgICBhdXRvIGF4aXMg
PSBjb2x1bW5BeGlzKCk7CisgICAgcmV0dXJuIGF4aXMgPT0gQXV0b0NvbHVtbkF4aXMgfHwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhpcyA9PSBIb3Jpem9udGFsQ29sdW1uQXhpcyk7
Cit9CisKK2lubGluZSBJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmll
bnRhdGlvbigpIGNvbnN0Cit7CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPmltYWdlT3JpZW50YXRpb24pOworI2Vsc2UKKyAgICByZXR1cm4gRGVmYXVsdEltYWdl
T3JpZW50YXRpb247CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldExv
Z2ljYWxXaWR0aChMZW5ndGgmJiBsb2dpY2FsV2lkdGgpCit7CisgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHNldFdpZHRoKFdURk1vdmUobG9naWNhbFdpZHRoKSk7
CisgICAgZWxzZQorICAgICAgICBzZXRIZWlnaHQoV1RGTW92ZShsb2dpY2FsV2lkdGgpKTsKK30K
KworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoJiYgbG9n
aWNhbEhlaWdodCkKK3sKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAg
ICAgc2V0SGVpZ2h0KFdURk1vdmUobG9naWNhbEhlaWdodCkpOworICAgIGVsc2UKKyAgICAgICAg
c2V0V2lkdGgoV1RGTW92ZShsb2dpY2FsSGVpZ2h0KSk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRl
clN0eWxlOjpzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpCit7CisgICAgYXV0byB0
b3BMZWZ0ID0gc2l6ZTsKKyAgICBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKFdURk1vdmUodG9wTGVm
dCkpOworICAgIGF1dG8gdG9wUmlnaHQgPSBzaXplOworICAgIHNldEJvcmRlclRvcFJpZ2h0UmFk
aXVzKFdURk1vdmUodG9wUmlnaHQpKTsKKyAgICBhdXRvIGJvdHRvbUxlZnQgPSBzaXplOworICAg
IHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoV1RGTW92ZShib3R0b21MZWZ0KSk7CisgICAgc2V0
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoV1RGTW92ZShzaXplKSk7Cit9CisKK2lubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpzZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSB7IHsgc2l6ZS53aWR0aCgpLCBGaXhlZCB9LCB7
IHNpemUuaGVpZ2h0KCksIEZpeGVkIH0gfSk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxl
OjpzZXRab29tKGZsb2F0IHpvb21MZXZlbCkKK3sKKyAgICBzZXRFZmZlY3RpdmVab29tKGVmZmVj
dGl2ZVpvb20oKSAqIHpvb21MZXZlbCk7CisgICAgaWYgKGNvbXBhcmVFcXVhbChtX3Zpc3VhbERh
dGEtPnpvb20sIHpvb21MZXZlbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Zpc3Vh
bERhdGEuYWNjZXNzKCkuem9vbSA9IHpvb21MZXZlbDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldEVmZmVjdGl2ZVpvb20oZmxvYXQgZikKK2lubGlu
ZSBib29sIFJlbmRlclN0eWxlOjpzZXRFZmZlY3RpdmVab29tKGZsb2F0IHpvb21MZXZlbCkKIHsK
LSAgICBpZiAoY29tcGFyZUVxdWFsKHJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpvb20s
IGYpKQorICAgIGlmIChjb21wYXJlRXF1YWwobV9yYXJlSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZl
Wm9vbSwgem9vbUxldmVsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2VmZmVjdGl2ZVpvb20gPSBmOworICAgIG1fcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuZWZmZWN0aXZlWm9vbSA9IHpvb21MZXZlbDsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFRleHRPcmllbnRhdGlvbihUZXh0
T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKQogewotICAgIGlmIChjb21wYXJlRXF1YWwocmFy
ZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dGV4dE9yaWVudGF0aW9uKSkpCisgICAgaWYgKGNvbXBhcmVFcXVhbChtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRp
b24pKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNj
ZXNzKCkudGV4dE9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHRPcmllbnRh
dGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjph
ZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCkKK3sKKyAgICBpZiAoYmFja2dyb3VuZExheWVycygpLm5l
eHQoKSkgeworICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJz
KCk7CisgICAgICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVz
KCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0TWFza0xheWVy
cygpCit7CisgICAgaWYgKG1hc2tMYXllcnMoKS5uZXh0KCkpIHsKKyAgICAgICAgZW5zdXJlTWFz
a0xheWVycygpLmN1bGxFbXB0eUxheWVycygpOworICAgICAgICBlbnN1cmVNYXNrTGF5ZXJzKCku
ZmlsbFVuc2V0UHJvcGVydGllcygpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5
bGU6OmNsZWFyQW5pbWF0aW9ucygpCit7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5hbmltYXRpb25zID0gbnVsbHB0cjsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6
OmNsZWFyVHJhbnNpdGlvbnMoKQoreworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkudHJhbnNpdGlvbnMgPSBudWxscHRyOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2hhcGVPdXRzaWRlKFJlZlB0cjxTaGFwZVZhbHVlPiYmIHZhbHVlKQoreworICAgIGlmICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUgPT0gdmFsdWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnNoYXBlT3V0c2lkZSA9
IFdURk1vdmUodmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2hhcGVJ
bWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKQoreworICAgIGZsb2F0IGNs
YW1wZWRTaGFwZUltYWdlVGhyZXNob2xkID0gY2xhbXBUbzxmbG9hdD4oc2hhcGVJbWFnZVRocmVz
aG9sZCwgMCwgMSk7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzaGFwZUlt
YWdlVGhyZXNob2xkLCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCk7Cit9CiAKLSAgICByYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90ZXh0T3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGV4dE9yaWVudGF0aW9uKTsKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRD
bGlwUGF0aChSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYgb3BlcmF0aW9uKQoreworICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvcGVyYXRpb24pCisgICAgICAg
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY2xpcFBhdGggPSBXVEZNb3ZlKG9wZXJh
dGlvbik7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjp3aWxsQ2hhbmdlQ3JlYXRlc1N0
YWNraW5nQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxDaGFuZ2UoKSAmJiB3aWxs
Q2hhbmdlKCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpOworfQorCitpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVnaW9uVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRp
c3BsYXkoKSA9PSBCTE9DSyB8fCBkaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLCisgICAgICAgIHx8
IGRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMIHx8IGRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OCisg
ICAgICAgIHx8IGRpc3BsYXkoKSA9PSBMSVNUX0lURU07Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjpzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KQoreworICAgIGlmICh2ID09IHdy
aXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
LndyaXRpbmdNb2RlID0gdjsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OmdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dpY2FsUmln
aHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRT
aGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCkg
OiBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmln
aHQpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93QmxvY2tEaXJlY3Rp
b25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdAoreworICAgIHJldHVybiBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBsb2dp
Y2FsVG9wLCBsb2dpY2FsQm90dG9tKSA6IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93
LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6OmlzRGlzcGxheVJlcGxhY2VkVHlwZShFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVy
biBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09IElOTElORV9CT1ggfHwgZGlz
cGxheSA9PSBJTkxJTkVfRkxFWAorI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisgICAgICAg
IHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQKKyNlbmRpZgorICAgICAgICB8fCBkaXNwbGF5ID09
IElOTElORV9UQUJMRTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUlu
bGluZVR5cGUoRURpc3BsYXkgZGlzcGxheSkKK3sKKyAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJ
TkUgfHwgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKGRpc3BsYXkpOworfQorCitpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3goRURpc3BsYXkgZGlzcGxheSkKK3sKKyAg
ICByZXR1cm4gZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVg7Cit9CisK
K2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRpc3Bs
YXkpCit7CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICByZXR1cm4gZGlzcGxheSA9
PSBHUklEIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShkaXNwbGF5KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkp
Cit7CisgICAgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlQm94KGRpc3BsYXkpIHx8IGlzRGlzcGxh
eUdyaWRCb3goZGlzcGxheSk7Cit9CisKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNBbnlQ
dWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdAogewotICAgIHJldHVybiBub25pbmhlcml0ZWRfZmxh
Z3MuaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCk7CisgICAgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRl
clN0eWxlOjpoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pOworICAgIHJldHVy
biBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1BzZXVkb1N0eWxlKHBzZXVkbyk7CiB9CiAKIGlubGlu
ZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pCiB7
Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc1BzZXVkb1N0eWxlKHBzZXVkbyk7CisgICAg
bV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNQc2V1ZG9TdHlsZShwc2V1ZG8pOwogfQogCiBpbmxp
bmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0IHBzZXVk
b0lkU2V0KQogewotICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNQc2V1ZG9TdHlsZXMocHNl
dWRvSWRTZXQpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzUHNldWRvU3R5bGVzKHBz
ZXVkb0lkU2V0KTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFJlZmxlY3Qo
UmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4mJiByZWZsZWN0KQoreworICAgIFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgYm94UmVmbGVjdCwgV1RGTW92ZShyZWZsZWN0KSk7CiB9CiAKIGlu
bGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwCmluZGV4IDZjMDJlNTA4YWYxYWEzOGIyMmMyZjIzOTlmZGQ1MjQ3YWUzNDFjOWYu
LmU0NjhmODlkODExM2M4OGQ2MGU1NDEyYTBhYmYwYzJmYmI5ZTAxNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcApAQCAtNDksNDYg
KzQ5LDQ2IEBAIFJlZjxTVkdSZW5kZXJTdHlsZT4gU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1
bHRTdHlsZSgpCiB9CiAKIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZSgpCi0gICAgOiBm
aWxsKGRlZmF1bHRTVkdTdHlsZSgpLmZpbGwpCi0gICAgLCBzdHJva2UoZGVmYXVsdFNWR1N0eWxl
KCkuc3Ryb2tlKQotICAgICwgdGV4dChkZWZhdWx0U1ZHU3R5bGUoKS50ZXh0KQotICAgICwgaW5o
ZXJpdGVkUmVzb3VyY2VzKGRlZmF1bHRTVkdTdHlsZSgpLmluaGVyaXRlZFJlc291cmNlcykKLSAg
ICAsIHN0b3BzKGRlZmF1bHRTVkdTdHlsZSgpLnN0b3BzKQotICAgICwgbWlzYyhkZWZhdWx0U1ZH
U3R5bGUoKS5taXNjKQotICAgICwgc2hhZG93U1ZHKGRlZmF1bHRTVkdTdHlsZSgpLnNoYWRvd1NW
RykKLSAgICAsIGxheW91dChkZWZhdWx0U1ZHU3R5bGUoKS5sYXlvdXQpCi0gICAgLCByZXNvdXJj
ZXMoZGVmYXVsdFNWR1N0eWxlKCkucmVzb3VyY2VzKQorICAgIDogbV9maWxsRGF0YShkZWZhdWx0
U1ZHU3R5bGUoKS5tX2ZpbGxEYXRhKQorICAgICwgbV9zdHJva2VEYXRhKGRlZmF1bHRTVkdTdHls
ZSgpLm1fc3Ryb2tlRGF0YSkKKyAgICAsIG1fdGV4dERhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV90
ZXh0RGF0YSkKKyAgICAsIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKGRlZmF1bHRTVkdTdHlsZSgp
Lm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKQorICAgICwgbV9zdG9wRGF0YShkZWZhdWx0U1ZHU3R5
bGUoKS5tX3N0b3BEYXRhKQorICAgICwgbV9taXNjRGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX21p
c2NEYXRhKQorICAgICwgbV9zaGFkb3dEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fc2hhZG93RGF0
YSkKKyAgICAsIG1fbGF5b3V0RGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX2xheW91dERhdGEpCisg
ICAgLCBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX25vbklu
aGVyaXRlZFJlc291cmNlRGF0YSkKIHsKICAgICBzZXRCaXREZWZhdWx0cygpOwogfQogCiBTVkdS
ZW5kZXJTdHlsZTo6U1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5cGUpCi0gICAgOiBmaWxs
KFN0eWxlRmlsbERhdGE6OmNyZWF0ZSgpKQotICAgICwgc3Ryb2tlKFN0eWxlU3Ryb2tlRGF0YTo6
Y3JlYXRlKCkpCi0gICAgLCB0ZXh0KFN0eWxlVGV4dERhdGE6OmNyZWF0ZSgpKQotICAgICwgaW5o
ZXJpdGVkUmVzb3VyY2VzKFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpjcmVhdGUoKSkKLSAg
ICAsIHN0b3BzKFN0eWxlU3RvcERhdGE6OmNyZWF0ZSgpKQotICAgICwgbWlzYyhTdHlsZU1pc2NE
YXRhOjpjcmVhdGUoKSkKLSAgICAsIHNoYWRvd1NWRyhTdHlsZVNoYWRvd1NWR0RhdGE6OmNyZWF0
ZSgpKQotICAgICwgbGF5b3V0KFN0eWxlTGF5b3V0RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCByZXNv
dXJjZXMoU3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQorICAgIDogbV9maWxsRGF0YShTdHls
ZUZpbGxEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fc3Ryb2tlRGF0YShTdHlsZVN0cm9rZURhdGE6
OmNyZWF0ZSgpKQorICAgICwgbV90ZXh0RGF0YShTdHlsZVRleHREYXRhOjpjcmVhdGUoKSkKKyAg
ICAsIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpj
cmVhdGUoKSkKKyAgICAsIG1fc3RvcERhdGEoU3R5bGVTdG9wRGF0YTo6Y3JlYXRlKCkpCisgICAg
LCBtX21pc2NEYXRhKFN0eWxlTWlzY0RhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zaGFkb3dEYXRh
KFN0eWxlU2hhZG93U1ZHRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX2xheW91dERhdGEoU3R5bGVM
YXlvdXREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKFN0
eWxlUmVzb3VyY2VEYXRhOjpjcmVhdGUoKSkKIHsKICAgICBzZXRCaXREZWZhdWx0cygpOwogfQog
CiBpbmxpbmUgU1ZHUmVuZGVyU3R5bGU6OlNWR1JlbmRlclN0eWxlKGNvbnN0IFNWR1JlbmRlclN0
eWxlJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+KCkKLSAgICAsIHN2
Z19pbmhlcml0ZWRfZmxhZ3Mob3RoZXIuc3ZnX2luaGVyaXRlZF9mbGFncykKLSAgICAsIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3Mob3RoZXIuc3ZnX25vbmluaGVyaXRlZF9mbGFncykKLSAgICAsIGZp
bGwob3RoZXIuZmlsbCkKLSAgICAsIHN0cm9rZShvdGhlci5zdHJva2UpCi0gICAgLCB0ZXh0KG90
aGVyLnRleHQpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMob3RoZXIuaW5oZXJpdGVkUmVzb3Vy
Y2VzKQotICAgICwgc3RvcHMob3RoZXIuc3RvcHMpCi0gICAgLCBtaXNjKG90aGVyLm1pc2MpCi0g
ICAgLCBzaGFkb3dTVkcob3RoZXIuc2hhZG93U1ZHKQotICAgICwgbGF5b3V0KG90aGVyLmxheW91
dCkKLSAgICAsIHJlc291cmNlcyhvdGhlci5yZXNvdXJjZXMpCisgICAgLCBtX2luaGVyaXRlZEZs
YWdzKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpCisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MpCisgICAgLCBtX2ZpbGxEYXRhKG90aGVyLm1fZmlsbERh
dGEpCisgICAgLCBtX3N0cm9rZURhdGEob3RoZXIubV9zdHJva2VEYXRhKQorICAgICwgbV90ZXh0
RGF0YShvdGhlci5tX3RleHREYXRhKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEob3Ro
ZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEpCisgICAgLCBtX3N0b3BEYXRhKG90aGVyLm1fc3Rv
cERhdGEpCisgICAgLCBtX21pc2NEYXRhKG90aGVyLm1fbWlzY0RhdGEpCisgICAgLCBtX3NoYWRv
d0RhdGEob3RoZXIubV9zaGFkb3dEYXRhKQorICAgICwgbV9sYXlvdXREYXRhKG90aGVyLm1fbGF5
b3V0RGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKG90aGVyLm1fbm9uSW5o
ZXJpdGVkUmVzb3VyY2VEYXRhKQogewogfQogCkBAIC0xMDMsNDkgKzEwMyw0NiBAQCBTVkdSZW5k
ZXJTdHlsZTo6flNWR1JlbmRlclN0eWxlKCkKIAogYm9vbCBTVkdSZW5kZXJTdHlsZTo6b3BlcmF0
b3I9PShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZp
bGwgPT0gb3RoZXIuZmlsbAotICAgICAgICAmJiBzdHJva2UgPT0gb3RoZXIuc3Ryb2tlCi0gICAg
ICAgICYmIHRleHQgPT0gb3RoZXIudGV4dAotICAgICAgICAmJiBzdG9wcyA9PSBvdGhlci5zdG9w
cwotICAgICAgICAmJiBtaXNjID09IG90aGVyLm1pc2MKLSAgICAgICAgJiYgc2hhZG93U1ZHID09
IG90aGVyLnNoYWRvd1NWRwotICAgICAgICAmJiBsYXlvdXQgPT0gb3RoZXIubGF5b3V0Ci0gICAg
ICAgICYmIGluaGVyaXRlZFJlc291cmNlcyA9PSBvdGhlci5pbmhlcml0ZWRSZXNvdXJjZXMKLSAg
ICAgICAgJiYgcmVzb3VyY2VzID09IG90aGVyLnJlc291cmNlcwotICAgICAgICAmJiBzdmdfaW5o
ZXJpdGVkX2ZsYWdzID09IG90aGVyLnN2Z19pbmhlcml0ZWRfZmxhZ3MKLSAgICAgICAgJiYgc3Zn
X25vbmluaGVyaXRlZF9mbGFncyA9PSBvdGhlci5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzOworICAg
IHJldHVybiBtX2ZpbGxEYXRhID09IG90aGVyLm1fZmlsbERhdGEKKyAgICAgICAgJiYgbV9zdHJv
a2VEYXRhID09IG90aGVyLm1fc3Ryb2tlRGF0YQorICAgICAgICAmJiBtX3RleHREYXRhID09IG90
aGVyLm1fdGV4dERhdGEKKyAgICAgICAgJiYgbV9zdG9wRGF0YSA9PSBvdGhlci5tX3N0b3BEYXRh
CisgICAgICAgICYmIG1fbWlzY0RhdGEgPT0gb3RoZXIubV9taXNjRGF0YQorICAgICAgICAmJiBt
X3NoYWRvd0RhdGEgPT0gb3RoZXIubV9zaGFkb3dEYXRhCisgICAgICAgICYmIG1fbGF5b3V0RGF0
YSA9PSBvdGhlci5tX2xheW91dERhdGEKKyAgICAgICAgJiYgbV9pbmhlcml0ZWRSZXNvdXJjZURh
dGEgPT0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEKKyAgICAgICAgJiYgbV9ub25Jbmhl
cml0ZWRSZXNvdXJjZURhdGEgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEKKyAg
ICAgICAgJiYgbV9pbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzCisgICAg
ICAgICYmIG1fbm9uSW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFnczsK
IH0KIAotYm9vbCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVu
ZGVyU3R5bGUqIG90aGVyKSBjb25zdAorYm9vbCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90
RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBm
aWxsICE9IG90aGVyLT5maWxsCi0gICAgICAgIHx8IHN0cm9rZSAhPSBvdGhlci0+c3Ryb2tlCi0g
ICAgICAgIHx8IHRleHQgIT0gb3RoZXItPnRleHQKLSAgICAgICAgfHwgaW5oZXJpdGVkUmVzb3Vy
Y2VzICE9IG90aGVyLT5pbmhlcml0ZWRSZXNvdXJjZXMKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRl
ZF9mbGFncyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFnczsKKyAgICByZXR1cm4gbV9maWxs
RGF0YSAhPSBvdGhlci5tX2ZpbGxEYXRhCisgICAgICAgIHx8IG1fc3Ryb2tlRGF0YSAhPSBvdGhl
ci5tX3N0cm9rZURhdGEKKyAgICAgICAgfHwgbV90ZXh0RGF0YSAhPSBvdGhlci5tX3RleHREYXRh
CisgICAgICAgIHx8IG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVyLm1faW5oZXJpdGVk
UmVzb3VyY2VEYXRhCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MgIT0gb3RoZXIubV9pbmhl
cml0ZWRGbGFnczsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdEZyb20oY29uc3Qg
U1ZHUmVuZGVyU3R5bGUqIHN2Z0luaGVyaXRQYXJlbnQpCit2b2lkIFNWR1JlbmRlclN0eWxlOjpp
bmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpCiB7Ci0gICAgaWYgKCFzdmdJ
bmhlcml0UGFyZW50KQotICAgICAgICByZXR1cm47CisgICAgbV9maWxsRGF0YSA9IG90aGVyLm1f
ZmlsbERhdGE7CisgICAgbV9zdHJva2VEYXRhID0gb3RoZXIubV9zdHJva2VEYXRhOworICAgIG1f
dGV4dERhdGEgPSBvdGhlci5tX3RleHREYXRhOworICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRh
ID0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGE7CiAKLSAgICBmaWxsID0gc3ZnSW5oZXJp
dFBhcmVudC0+ZmlsbDsKLSAgICBzdHJva2UgPSBzdmdJbmhlcml0UGFyZW50LT5zdHJva2U7Ci0g
ICAgdGV4dCA9IHN2Z0luaGVyaXRQYXJlbnQtPnRleHQ7Ci0gICAgaW5oZXJpdGVkUmVzb3VyY2Vz
ID0gc3ZnSW5oZXJpdFBhcmVudC0+aW5oZXJpdGVkUmVzb3VyY2VzOwotCi0gICAgc3ZnX2luaGVy
aXRlZF9mbGFncyA9IHN2Z0luaGVyaXRQYXJlbnQtPnN2Z19pbmhlcml0ZWRfZmxhZ3M7CisgICAg
bV9pbmhlcml0ZWRGbGFncyA9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3M7CiB9CiAKLXZvaWQgU1ZH
UmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBv
dGhlcikKK3ZvaWQgU1ZHUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBvdGhlcikKIHsKLSAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzID0gb3Ro
ZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3M7Ci0gICAgc3RvcHMgPSBvdGhlci0+c3RvcHM7Ci0g
ICAgbWlzYyA9IG90aGVyLT5taXNjOwotICAgIHNoYWRvd1NWRyA9IG90aGVyLT5zaGFkb3dTVkc7
Ci0gICAgbGF5b3V0ID0gb3RoZXItPmxheW91dDsKLSAgICByZXNvdXJjZXMgPSBvdGhlci0+cmVz
b3VyY2VzOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MgPSBvdGhlci5tX25vbkluaGVyaXRlZEZs
YWdzOworICAgIG1fc3RvcERhdGEgPSBvdGhlci5tX3N0b3BEYXRhOworICAgIG1fbWlzY0RhdGEg
PSBvdGhlci5tX21pc2NEYXRhOworICAgIG1fc2hhZG93RGF0YSA9IG90aGVyLm1fc2hhZG93RGF0
YTsKKyAgICBtX2xheW91dERhdGEgPSBvdGhlci5tX2xheW91dERhdGE7CisgICAgbV9ub25Jbmhl
cml0ZWRSZXNvdXJjZURhdGEgPSBvdGhlci5tX25vbkluaGVyaXRlZFJlc291cmNlRGF0YTsKIH0K
IAogVmVjdG9yPFBhaW50VHlwZSwgMz4gU1ZHUmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWlu
dE9yZGVyKCkgY29uc3QKQEAgLTE4OCwxMDQgKzE4NSwxMDQgQEAgVmVjdG9yPFBhaW50VHlwZSwg
Mz4gU1ZHUmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWludE9yZGVyKCkgY29uc3QKICAgICBy
ZXR1cm4gcGFpbnRPcmRlcjsKIH0KIAotU3R5bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpk
aWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKK1N0eWxlRGlmZmVyZW5jZSBT
VkdSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgLy8gTk9URTogQWxsIGNvbXBhcmlzaW9ucyB0aGF0IG1heSByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0IGhhdmUgdG8gZ28gYmVmb3JlIHRob3NlIHdobyByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlUmVwYWludAogCiAgICAgLy8gSWYga2VybmluZyBjaGFuZ2VzLCB3ZSBuZWVkIGEgcmVs
YXlvdXQsIHRvIGZvcmNlIFNWR0NoYXJhY3RlckRhdGEgdG8gYmUgcmVjYWxjdWxhdGVkIGluIHRo
ZSBTVkdSb290SW5saW5lQm94LgotICAgIGlmICh0ZXh0ICE9IG90aGVyLT50ZXh0KQorICAgIGlm
IChtX3RleHREYXRhICE9IG90aGVyLm1fdGV4dERhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURp
ZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBJZiByZXNvdXJjZXMgY2hhbmdlLCB3ZSBuZWVkIGEg
cmVsYXlvdXQsIGFzIHRoZSBwcmVzZW5jZSBvZiByZXNvdXJjZXMgaW5mbHVlbmNlcyB0aGUgcmVw
YWludCByZWN0LgotICAgIGlmIChyZXNvdXJjZXMgIT0gb3RoZXItPnJlc291cmNlcykKKyAgICBp
ZiAobV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRSZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAv
LyBJZiBtYXJrZXJzIGNoYW5nZSwgd2UgbmVlZCBhIHJlbGF5b3V0LCBhcyBtYXJrZXIgYm91bmRh
cmllcyBhcmUgY2FjaGVkIGluIFJlbmRlclNWR1BhdGguCi0gICAgaWYgKGluaGVyaXRlZFJlc291
cmNlcyAhPSBvdGhlci0+aW5oZXJpdGVkUmVzb3VyY2VzKQorICAgIGlmIChtX2luaGVyaXRlZFJl
c291cmNlRGF0YSAhPSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIEFsbCB0ZXh0IHJlbGF0ZWQgcHJv
cGVydGllcyBpbmZsdWVuY2UgbGF5b3V0LgotICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0QW5jaG9yICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl90ZXh0QW5jaG9yCi0gICAg
ICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsICE9
IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAot
ICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwg
IT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbAot
ICAgICAgICB8fCBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5lICE9
IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5lCi0gICAg
ICAgIHx8IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZSAhPSBvdGhl
ci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lCi0gICAgICAgIHx8
IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCAhPSBvdGhlci0+c3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0KQorICAgIGlmIChtX2luaGVyaXRlZEZs
YWdzLnRleHRBbmNob3IgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yCisgICAg
ICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgIT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAorICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbAorICAgICAgICB8fCBtX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lICE9IG90aGVyLm1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUKKyAgICAgICAgfHwgbV9ub25J
bmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lICE9IG90aGVyLm1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZQorICAgICAgICB8fCBtX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQgIT0gb3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gVGV4dCByZWxhdGVkIHByb3BlcnRpZXMgaW5mbHVlbmNl
IGxheW91dC4KLSAgICBib29sIG1pc2NOb3RFcXVhbCA9IG1pc2MgIT0gb3RoZXItPm1pc2M7Ci0g
ICAgaWYgKG1pc2NOb3RFcXVhbCAmJiBtaXNjLT5iYXNlbGluZVNoaWZ0VmFsdWUgIT0gb3RoZXIt
Pm1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZSkKKyAgICBib29sIG1pc2NOb3RFcXVhbCA9IG1fbWlz
Y0RhdGEgIT0gb3RoZXIubV9taXNjRGF0YTsKKyAgICBpZiAobWlzY05vdEVxdWFsICYmIG1fbWlz
Y0RhdGEtPmJhc2VsaW5lU2hpZnRWYWx1ZSAhPSBvdGhlci5tX21pc2NEYXRhLT5iYXNlbGluZVNo
aWZ0VmFsdWUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIGFmZmVjdCB0aGUgY2FjaGVkIHN0cm9rZSBib3VuZGluZyBib3gg
cmVjdHMuCi0gICAgaWYgKHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlICE9IG90aGVyLT5z
dmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZQotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2Zs
YWdzLl9qb2luU3R5bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSkK
KyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZSAhPSBvdGhlci5tX2luaGVyaXRlZEZs
YWdzLmNhcFN0eWxlCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlICE9IG90
aGVyLm1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gU2hhZG93IGNoYW5nZXMgcmVxdWlyZSByZWxheW91dHMs
IGFzIHRoZXkgYWZmZWN0IHRoZSByZXBhaW50IHJlY3RzLgotICAgIGlmIChzaGFkb3dTVkcgIT0g
b3RoZXItPnNoYWRvd1NWRykKKyAgICBpZiAobV9zaGFkb3dEYXRhICE9IG90aGVyLm1fc2hhZG93
RGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFRo
ZSB4IG9yIHkgcHJvcGVydGllcyByZXF1aXJlIHJlbGF5b3V0LgotICAgIGlmIChsYXlvdXQgIT0g
b3RoZXItPmxheW91dCkKKyAgICBpZiAobV9sYXlvdXREYXRhICE9IG90aGVyLm1fbGF5b3V0RGF0
YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsgCiAKICAgICAvLyBTb21l
IHN0cm9rZSBwcm9wZXJ0aWVzLCByZXF1aXJlcyByZWxheW91dHMsIGFzIHRoZSBjYWNoZWQgc3Ry
b2tlIGJvdW5kYXJpZXMgbmVlZCB0byBiZSByZWNhbGN1bGF0ZWQuCi0gICAgaWYgKHN0cm9rZSAh
PSBvdGhlci0+c3Ryb2tlKSB7Ci0gICAgICAgIGlmIChzdHJva2UtPndpZHRoICE9IG90aGVyLT5z
dHJva2UtPndpZHRoCi0gICAgICAgICAgICB8fCBzdHJva2UtPnBhaW50VHlwZSAhPSBvdGhlci0+
c3Ryb2tlLT5wYWludFR5cGUKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+cGFpbnRDb2xvciAhPSBv
dGhlci0+c3Ryb2tlLT5wYWludENvbG9yCi0gICAgICAgICAgICB8fCBzdHJva2UtPnBhaW50VXJp
ICE9IG90aGVyLT5zdHJva2UtPnBhaW50VXJpCi0gICAgICAgICAgICB8fCBzdHJva2UtPm1pdGVy
TGltaXQgIT0gb3RoZXItPnN0cm9rZS0+bWl0ZXJMaW1pdAotICAgICAgICAgICAgfHwgc3Ryb2tl
LT5kYXNoQXJyYXkgIT0gb3RoZXItPnN0cm9rZS0+ZGFzaEFycmF5Ci0gICAgICAgICAgICB8fCBz
dHJva2UtPmRhc2hPZmZzZXQgIT0gb3RoZXItPnN0cm9rZS0+ZGFzaE9mZnNldAotICAgICAgICAg
ICAgfHwgc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IgIT0gb3RoZXItPnN0cm9rZS0+dmlz
aXRlZExpbmtQYWludENvbG9yCi0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFp
bnRVcmkgIT0gb3RoZXItPnN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVyaQotICAgICAgICAgICAg
fHwgc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VHlwZSAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVk
TGlua1BhaW50VHlwZSkKKyAgICBpZiAobV9zdHJva2VEYXRhICE9IG90aGVyLm1fc3Ryb2tlRGF0
YSkgeworICAgICAgICBpZiAobV9zdHJva2VEYXRhLT53aWR0aCAhPSBvdGhlci5tX3N0cm9rZURh
dGEtPndpZHRoCisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50VHlwZSAhPSBvdGhl
ci5tX3N0cm9rZURhdGEtPnBhaW50VHlwZQorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT5w
YWludENvbG9yICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRDb2xvcgorICAgICAgICAgICAg
fHwgbV9zdHJva2VEYXRhLT5wYWludFVyaSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnBhaW50VXJp
CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPm1pdGVyTGltaXQgIT0gb3RoZXIubV9zdHJv
a2VEYXRhLT5taXRlckxpbWl0CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPmRhc2hBcnJh
eSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPmRhc2hBcnJheQorICAgICAgICAgICAgfHwgbV9zdHJv
a2VEYXRhLT5kYXNoT2Zmc2V0ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+ZGFzaE9mZnNldAorICAg
ICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3IgIT0gb3RoZXIu
bV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3IKKyAgICAgICAgICAgIHx8IG1fc3Ry
b2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0
ZWRMaW5rUGFpbnRVcmkKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQ
YWludFR5cGUgIT0gb3RoZXIubV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSkKICAg
ICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAgICAgLy8gT25s
eSB0aGUgc3Ryb2tlLW9wYWNpdHkgY2FzZSByZW1haW5zLCB3aGVyZSB3ZSBvbmx5IG5lZWQgYSBy
ZXBhaW50LgotICAgICAgICBBU1NFUlQoc3Ryb2tlLT5vcGFjaXR5ICE9IG90aGVyLT5zdHJva2Ut
Pm9wYWNpdHkpOworICAgICAgICBBU1NFUlQobV9zdHJva2VEYXRhLT5vcGFjaXR5ICE9IG90aGVy
Lm1fc3Ryb2tlRGF0YS0+b3BhY2l0eSk7CiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50OwogICAgIH0KIAogICAgIC8vIHZlY3Rvci1lZmZlY3QgY2hhbmdlcyByZXF1aXJlIGEg
cmUtbGF5b3V0LgotICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVj
dCAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZlY3QpCisgICAg
aWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0ICE9IG90aGVyLm1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0KQogICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gTk9URTogQWxsIGNvbXBhcmlzaW9ucyBi
ZWxvdyBtYXkgb25seSByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludAogCiAgICAgLy8gUGFp
bnRpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzIG9ubHkgbmVlZCByZXBhaW50cy4gCiAgICAgaWYgKG1p
c2NOb3RFcXVhbCkgewotICAgICAgICBpZiAobWlzYy0+Zmxvb2RDb2xvciAhPSBvdGhlci0+bWlz
Yy0+Zmxvb2RDb2xvcgotICAgICAgICAgICAgfHwgbWlzYy0+Zmxvb2RPcGFjaXR5ICE9IG90aGVy
LT5taXNjLT5mbG9vZE9wYWNpdHkKLSAgICAgICAgICAgIHx8IG1pc2MtPmxpZ2h0aW5nQ29sb3Ig
IT0gb3RoZXItPm1pc2MtPmxpZ2h0aW5nQ29sb3IpCisgICAgICAgIGlmIChtX21pc2NEYXRhLT5m
bG9vZENvbG9yICE9IG90aGVyLm1fbWlzY0RhdGEtPmZsb29kQ29sb3IKKyAgICAgICAgICAgIHx8
IG1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eSAhPSBvdGhlci5tX21pc2NEYXRhLT5mbG9vZE9wYWNp
dHkKKyAgICAgICAgICAgIHx8IG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3IgIT0gb3RoZXIubV9t
aXNjRGF0YS0+bGlnaHRpbmdDb2xvcikKICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50OwogICAgIH0KIAotICAgIC8vIElmIGZpbGwgY2hhbmdlcywgd2UganVzdCBuZWVk
IHRvIHJlcGFpbnQuIEZpbGwgYm91bmRhcmllcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgdGhpcywg
b25seSBieSB0aGUgUGF0aCwgdGhhdCBSZW5kZXJTVkdQYXRoIGNvbnRhaW5zLgotICAgIGlmIChm
aWxsLT5wYWludFR5cGUgIT0gb3RoZXItPmZpbGwtPnBhaW50VHlwZSB8fCBmaWxsLT5wYWludENv
bG9yICE9IG90aGVyLT5maWxsLT5wYWludENvbG9yCi0gICAgICAgIHx8IGZpbGwtPnBhaW50VXJp
ICE9IG90aGVyLT5maWxsLT5wYWludFVyaSB8fCBmaWxsLT5vcGFjaXR5ICE9IG90aGVyLT5maWxs
LT5vcGFjaXR5KQorICAgIC8vIElmIGZpbGwgZGF0YSBjaGFuZ2VzLCB3ZSBqdXN0IG5lZWQgdG8g
cmVwYWludC4gRmlsbCBib3VuZGFyaWVzIGFyZSBub3QgaW5mbHVlbmNlZCBieSB0aGlzLCBvbmx5
IGJ5IHRoZSBQYXRoLCB0aGF0IFJlbmRlclNWR1BhdGggY29udGFpbnMuCisgICAgaWYgKG1fZmls
bERhdGEtPnBhaW50VHlwZSAhPSBvdGhlci5tX2ZpbGxEYXRhLT5wYWludFR5cGUgfHwgbV9maWxs
RGF0YS0+cGFpbnRDb2xvciAhPSBvdGhlci5tX2ZpbGxEYXRhLT5wYWludENvbG9yCisgICAgICAg
IHx8IG1fZmlsbERhdGEtPnBhaW50VXJpICE9IG90aGVyLm1fZmlsbERhdGEtPnBhaW50VXJpIHx8
IG1fZmlsbERhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9maWxsRGF0YS0+b3BhY2l0eSkKICAgICAg
ICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKICAgICAvLyBJZiBncmFkaWVudCBz
dG9wcyBjaGFuZ2UsIHdlIGp1c3QgbmVlZCB0byByZXBhaW50LiBTdHlsZSB1cGRhdGVzIGFyZSBh
bHJlYWR5IGhhbmRsZWQgdGhyb3VnaCBSZW5kZXJTVkdHcmFkaWVudFNUb3AuCi0gICAgaWYgKHN0
b3BzICE9IG90aGVyLT5zdG9wcykKKyAgICBpZiAobV9zdG9wRGF0YSAhPSBvdGhlci5tX3N0b3BE
YXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIAogICAgIC8vIENo
YW5nZXMgb2YgdGhlc2UgZmxhZ3Mgb25seSBjYXVzZSByZXBhaW50cy4KLSAgICBpZiAoc3ZnX2lu
aGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmcgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2NvbG9yUmVuZGVyaW5nCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBl
UmVuZGVyaW5nICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZwot
ICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZSAhPSBvdGhlci0+c3ZnX2lu
aGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5f
ZmlsbFJ1bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlCi0gICAgICAg
IHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbiAhPSBvdGhlci0+c3Zn
X2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uCi0gICAgICAgIHx8IHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgIT0gb3RoZXItPnN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpCisgICAgaWYgKG1faW5oZXJp
dGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5jb2xvclJl
bmRlcmluZworICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nICE9IG90
aGVyLm1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcKKyAgICAgICAgfHwgbV9pbmhlcml0
ZWRGbGFncy5jbGlwUnVsZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlCisgICAg
ICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFn
cy5maWxsUnVsZQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlv
biAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbgorICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgIT0gb3RoZXIubV9p
bmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKQogICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIAotICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuYnVmZmVyZWRSZW5kZXJpbmcgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5i
dWZmZXJlZFJlbmRlcmluZykKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5i
dWZmZXJlZFJlbmRlcmluZyAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1
ZmZlcmVkUmVuZGVyaW5nKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsK
IAotICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgIT0gb3RoZXItPnN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRG
bGFncy5mbGFnQml0cy5tYXNrVHlwZSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLm1hc2tUeXBlKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIAog
ICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VFcXVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5kZXggMzkxOTc1YTU4Yjk1MGU3ZDY3NGI2
OGE3YmZhNjUzYTdmNzg3NDE2Zi4uNjY5YTJjMDk4M2UyYTJiMjRkY2FmZTg1NzMxN2I5MjRiMTQ0
ODFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYgQXBwbGUgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJp
Z2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogCkBAIC0yMyw3ICsyMyw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NT
VmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMuaCIKICNpbmNsdWRlICJQYXRoLmgiCkBAIC0zMiwyNSArMzEsMjEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBJbnRSZWN0OwotY2xhc3MgUmVu
ZGVyT2JqZWN0OwotCi1jbGFzcyBTVkdSZW5kZXJTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNW
R1JlbmRlclN0eWxlPiB7ICAgIAorY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxTVkdSZW5kZXJTdHlsZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVy
U3R5bGU+IGNyZWF0ZURlZmF1bHRTdHlsZSgpOwogICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVyU3R5
bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUmVuZGVyU3R5bGUpOyB9CiAg
ICAgUmVmPFNWR1JlbmRlclN0eWxlPiBjb3B5KCkgY29uc3Q7CiAgICAgflNWR1JlbmRlclN0eWxl
KCk7CiAKLSAgICBib29sIGluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlKikg
Y29uc3Q7Ci0gICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSopOwotICAg
IHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqKTsKKyAgICBi
b29sIGluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7CisgICAg
dm9pZCBpbmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSYpOworICAgIHZvaWQgY29weU5v
bkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmKTsKIAotICAgIFN0eWxlRGlmZmVy
ZW5jZSBkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlKikgY29uc3Q7CisgICAgU3R5bGVEaWZmZXJl
bmNlIGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTVkdSZW5kZXJTdHlsZSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3Ig
YWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEVBbGlnbm1lbnRCYXNlbGluZSBpbml0aWFs
QWxpZ25tZW50QmFzZWxpbmUoKSB7IHJldHVybiBBQl9BVVRPOyB9CkBAIC04NCw3ICs3OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEZsb29kT3BhY2l0eSgpIHsgcmV0dXJu
IDE7IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbEZsb29kQ29sb3IoKSB7IHJldHVybiBDb2xv
cigwLCAwLCAwKTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsTGlnaHRpbmdDb2xvcigpIHsg
cmV0dXJuIENvbG9yKDI1NSwgMjU1LCAyNTUpOyB9Ci0gICAgc3RhdGljIFNoYWRvd0RhdGEqIGlu
aXRpYWxTaGFkb3coKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFNoYWRvd0RhdGEqIGluaXRp
YWxTaGFkb3coKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFs
Q2xpcHBlclJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5n
IGluaXRpYWxNYXNrZXJSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGlj
IFN0cmluZyBpbml0aWFsTWFya2VyU3RhcnRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9
CkBAIC05MiwyODcgKzg3LDEyMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFs
TWFya2VyRW5kUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBFTWFz
a1R5cGUgaW5pdGlhbE1hc2tUeXBlKCkgeyByZXR1cm4gTVRfTFVNSU5BTkNFOyB9CiAgICAgc3Rh
dGljIFBhaW50T3JkZXIgaW5pdGlhbFBhaW50T3JkZXIoKSB7IHJldHVybiBQYWludE9yZGVyTm9y
bWFsOyB9Ci0KLSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEJhc2VsaW5lU2hpZnRW
YWx1ZSgpCi0gICAgewotICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgICAgIGxl
bmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOwotICAgICAg
ICByZXR1cm4gbGVuZ3RoOwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0
aWFsS2VybmluZygpCi0gICAgewotICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAg
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOwot
ICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUg
aW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpOworICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBp
bml0aWFsS2VybmluZygpOwogCiAgICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0ZXJzCi0gICAg
dm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShFQWxpZ25tZW50QmFzZWxpbmUgdmFsKSB7IHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50QmFzZWxpbmUgPSB2YWw7IH0KLSAgICB2b2lk
IHNldERvbWluYW50QmFzZWxpbmUoRURvbWluYW50QmFzZWxpbmUgdmFsKSB7IHN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0QmFz
ZWxpbmVTaGlmdChFQmFzZWxpbmVTaGlmdCB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
Ll9iYXNlbGluZVNoaWZ0ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRWZWN0b3JFZmZlY3QoRVZlY3Rv
ckVmZmVjdCB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZlY3QgPSB2
YWw7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkUmVuZGVyaW5nKEVCdWZmZXJlZFJlbmRlcmluZyB2
YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nID0gdmFsOyB9
Ci0gICAgdm9pZCBzZXRDYXBTdHlsZShMaW5lQ2FwIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdz
Ll9jYXBTdHlsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q2xpcFJ1bGUoV2luZFJ1bGUgdmFsKSB7
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDb2xv
ckludGVycG9sYXRpb24oRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9m
bGFncy5fY29sb3JJbnRlcnBvbGF0aW9uID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzKEVDb2xvckludGVycG9sYXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPSB2YWw7IH0KLSAgICB2b2lkIHNldENv
bG9yUmVuZGVyaW5nKEVDb2xvclJlbmRlcmluZyB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5f
Y29sb3JSZW5kZXJpbmcgPSB2YWw7IH0KLSAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIHZh
bCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxsUnVsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0
Sm9pblN0eWxlKExpbmVKb2luIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUg
PSB2YWw7IH0KLSAgICB2b2lkIHNldFNoYXBlUmVuZGVyaW5nKEVTaGFwZVJlbmRlcmluZyB2YWwp
IHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgPSB2YWw7IH0KLSAgICB2b2lk
IHNldFRleHRBbmNob3IoRVRleHRBbmNob3IgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3Rl
eHRBbmNob3IgPSB2YWw7IH0KLSAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
KEVHbHlwaE9yaWVudGF0aW9uIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvblZl
cnRpY2FsKEVHbHlwaE9yaWVudGF0aW9uIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlw
aE9yaWVudGF0aW9uVmVydGljYWwgPSB2YWw7IH0KLSAgICB2b2lkIHNldE1hc2tUeXBlKEVNYXNr
VHlwZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlID0gdmFsOyB9Ci0g
ICAgdm9pZCBzZXRQYWludE9yZGVyKFBhaW50T3JkZXIgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxh
Z3MucGFpbnRPcmRlciA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q3goY29uc3QgTGVuZ3RoJiBvYmop
Ci0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPmN4ID09IG9iaikpCi0gICAgICAgICAgICBs
YXlvdXQuYWNjZXNzKCktPmN4ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldEN5KGNvbnN0IExl
bmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT5jeSA9PSBvYmopKQotICAg
ICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5jeSA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRS
KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT5yID09IG9i
aikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnIgPSBvYmo7Ci0gICAgfQotICAgIHZv
aWQgc2V0UngoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQt
PnJ4ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnJ4ID0gb2JqOwotICAg
IH0KLSAgICB2b2lkIHNldFJ5KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYg
KCEobGF5b3V0LT5yeSA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5yeSA9
IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRYKGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAg
ICAgICAgaWYgKCEobGF5b3V0LT54ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNz
KCktPnggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0WShjb25zdCBMZW5ndGgmIG9iaikKLSAg
ICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+eSA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0
LmFjY2VzcygpLT55ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxv
YXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoZmlsbC0+b3BhY2l0eSA9PSBvYmopKQotICAg
ICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+b3BhY2l0eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldEZpbGxQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBs
eVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKQotICAgIHsKLSAgICAgICAgaWYgKGFwcGx5VG9S
ZWd1bGFyU3R5bGUpIHsKLSAgICAgICAgICAgIGlmICghKGZpbGwtPnBhaW50VHlwZSA9PSB0eXBl
KSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5wYWludFR5cGUgPSB0eXBlOwotICAg
ICAgICAgICAgaWYgKCEoZmlsbC0+cGFpbnRDb2xvciA9PSBjb2xvcikpCi0gICAgICAgICAgICAg
ICAgZmlsbC5hY2Nlc3MoKS0+cGFpbnRDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEo
ZmlsbC0+cGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5w
YWludFVyaSA9IHVyaTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5r
U3R5bGUpIHsKLSAgICAgICAgICAgIGlmICghKGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09
IHR5cGUpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRU
eXBlID0gdHlwZTsKLSAgICAgICAgICAgIGlmICghKGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRDb2xv
ciA9PSBjb2xvcikpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQ
YWludENvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT52aXNpdGVkTGlua1Bh
aW50VXJpID09IHVyaSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+dmlzaXRlZExp
bmtQYWludFVyaSA9IHVyaTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tl
T3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPm9wYWNpdHkg
PT0gb2JqKSkKLSAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+b3BhY2l0eSA9IG9iajsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZVBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUg
PSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCi0gICAgewotICAg
ICAgICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEoc3Ryb2tl
LT5wYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5w
YWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT5wYWludENvbG9yID09
IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnBhaW50Q29sb3IgPSBj
b2xvcjsKLSAgICAgICAgICAgIGlmICghKHN0cm9rZS0+cGFpbnRVcmkgPT0gdXJpKSkKLSAgICAg
ICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnBhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEo
c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VHlwZSA9PSB0eXBlKSkKLSAgICAgICAgICAgICAgICBz
dHJva2UuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID0gdHlwZTsKLSAgICAgICAgICAg
IGlmICghKHN0cm9rZS0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKLSAgICAgICAg
ICAgICAgICBzdHJva2UuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOwot
ICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJpID09IHVyaSkpCi0g
ICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VXJpID0gdXJp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VEYXNoQXJyYXkoY29uc3Qg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3Ryb2tl
LT5kYXNoQXJyYXkgPT0gb2JqKSkKLSAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+ZGFzaEFy
cmF5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBv
YmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPm1pdGVyTGltaXQgPT0gb2JqKSkKLSAg
ICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+bWl0ZXJMaW1pdCA9IG9iajsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEoc3Ryb2tlLT53aWR0aCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2Vzcygp
LT53aWR0aCA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoY29u
c3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPmRhc2hPZmZzZXQg
PT0gb2JqKSkKLSAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+ZGFzaE9mZnNldCA9IG9iajsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldEtlcm5pbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG9iaikK
LSAgICB7Ci0gICAgICAgIGlmICghKHRleHQtPmtlcm5pbmcgPT0gb2JqKSkKLSAgICAgICAgICAg
IHRleHQuYWNjZXNzKCktPmtlcm5pbmcgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdG9w
T3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdG9wcy0+b3BhY2l0eSA9
PSBvYmopKQotICAgICAgICAgICAgc3RvcHMuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIG9iaikKLSAgICB7Ci0gICAg
ICAgIGlmICghKHN0b3BzLT5jb2xvciA9PSBvYmopKQotICAgICAgICAgICAgc3RvcHMuYWNjZXNz
KCktPmNvbG9yID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0
IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKG1pc2MtPmZsb29kT3BhY2l0eSA9PSBvYmopKQot
ICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+Zmxvb2RPcGFjaXR5ID0gb2JqOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEobWlzYy0+Zmxvb2RDb2xvciA9PSBvYmopKQotICAgICAgICAgICAgbWlzYy5hY2Nlc3Mo
KS0+Zmxvb2RDb2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3Io
Y29uc3QgQ29sb3ImIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKG1pc2MtPmxpZ2h0aW5nQ29s
b3IgPT0gb2JqKSkKLSAgICAgICAgICAgIG1pc2MuYWNjZXNzKCktPmxpZ2h0aW5nQ29sb3IgPSBv
Ymo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKG1pc2MtPmJhc2VsaW5lU2hpZnRW
YWx1ZSA9PSBvYmopKQotICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+YmFzZWxpbmVTaGlmdFZh
bHVlID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBvYmopIHsgc2hhZG93U1ZHLmFjY2VzcygpLT5zaGFkb3cgPSBXVEZNb3ZlKG9i
aik7IH0KKyAgICB2b2lkIHNldEFsaWdubWVudEJhc2VsaW5lKEVBbGlnbm1lbnRCYXNlbGluZSB2
YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IHZh
bDsgfQorICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNlbGluZSB2YWwp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lID0gdmFsOyB9
CisgICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBtX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQgPSB2YWw7IH0KKyAgICB2b2lkIHNl
dFZlY3RvckVmZmVjdChFVmVjdG9yRWZmZWN0IHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZs
YWdCaXRzLnZlY3RvckVmZmVjdCA9IHZhbDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJp
bmcoRUJ1ZmZlcmVkUmVuZGVyaW5nIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRz
LmJ1ZmZlcmVkUmVuZGVyaW5nID0gdmFsOyB9CisgICAgdm9pZCBzZXRDYXBTdHlsZShMaW5lQ2Fw
IHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNhcFN0eWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRD
bGlwUnVsZShXaW5kUnVsZSB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZSA9IHZhbDsg
fQorICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBvbGF0aW9uKEVDb2xvckludGVycG9sYXRpb24gdmFs
KSB7IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uID0gdmFsOyB9CisgICAgdm9p
ZCBzZXRDb2xvckludGVycG9sYXRpb25GaWx0ZXJzKEVDb2xvckludGVycG9sYXRpb24gdmFsKSB7
IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IHZhbDsgfQorICAg
IHZvaWQgc2V0Q29sb3JSZW5kZXJpbmcoRUNvbG9yUmVuZGVyaW5nIHZhbCkgeyBtX2luaGVyaXRl
ZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gdmFsOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5k
UnVsZSB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSA9IHZhbDsgfQorICAgIHZvaWQg
c2V0Sm9pblN0eWxlKExpbmVKb2luIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSA9
IHZhbDsgfQorICAgIHZvaWQgc2V0U2hhcGVSZW5kZXJpbmcoRVNoYXBlUmVuZGVyaW5nIHZhbCkg
eyBtX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nID0gdmFsOyB9CisgICAgdm9pZCBzZXRU
ZXh0QW5jaG9yKEVUZXh0QW5jaG9yIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3Ig
PSB2YWw7IH0KKyAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKEVHbHlwaE9y
aWVudGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsID0gdmFsOyB9CisgICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoRUdseXBo
T3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsID0gdmFsOyB9CisgICAgdm9pZCBzZXRNYXNrVHlwZShFTWFza1R5cGUgdmFsKSB7IG1fbm9u
SW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldFBh
aW50T3JkZXIoUGFpbnRPcmRlciB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5wYWludE9yZGVyID0g
dmFsOyB9CisgICAgdm9pZCBzZXRDeChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldEN5KGNv
bnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0Uihjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNl
dFJ4KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0UnkoY29uc3QgTGVuZ3RoJik7CisgICAg
dm9pZCBzZXRYKGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0WShjb25zdCBMZW5ndGgmKTsK
KyAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldEZpbGxQYWludChT
VkdQYWludFR5cGUsIGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlU
b1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxz
ZSk7CisgICAgdm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldFN0cm9r
ZVBhaW50KFNWR1BhaW50VHlwZSwgY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9v
bCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHls
ZSA9IGZhbHNlKTsKKworICAgIHZvaWQgc2V0U3Ryb2tlRGFzaEFycmF5KGNvbnN0IFZlY3RvcjxT
VkdMZW5ndGhWYWx1ZT4mKTsKKyAgICB2b2lkIHNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQpOwor
ICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRTdHJv
a2VEYXNoT2Zmc2V0KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0S2VybmluZyhjb25zdCBT
VkdMZW5ndGhWYWx1ZSYpOworICAgIHZvaWQgc2V0U3RvcE9wYWNpdHkoZmxvYXQpOworICAgIHZv
aWQgc2V0U3RvcENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHko
ZmxvYXQpOworICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQg
c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlm
dFZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CisKKyAgICB2b2lkIHNldFNoYWRvdyhzdGQ6
OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4mJiBkYXRhKSB7IG1fc2hhZG93RGF0YS5hY2Nlc3MoKS5z
aGFkb3cgPSBXVEZNb3ZlKGRhdGEpOyB9CiAKICAgICAvLyBTZXR0ZXJzIGZvciBub24taW5oZXJp
dGVkIHJlc291cmNlcwotICAgIHZvaWQgc2V0Q2xpcHBlclJlc291cmNlKGNvbnN0IFN0cmluZyYg
b2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEocmVzb3VyY2VzLT5jbGlwcGVyID09IG9iaikpCi0g
ICAgICAgICAgICByZXNvdXJjZXMuYWNjZXNzKCktPmNsaXBwZXIgPSBvYmo7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRNYXNrZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAg
ICAgIGlmICghKHJlc291cmNlcy0+bWFza2VyID09IG9iaikpCi0gICAgICAgICAgICByZXNvdXJj
ZXMuYWNjZXNzKCktPm1hc2tlciA9IG9iajsKLSAgICB9CisgICAgdm9pZCBzZXRDbGlwcGVyUmVz
b3VyY2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRNYXNrZXJSZXNvdXJjZShjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFNldHRlcnMgZm9yIGluaGVyaXRlZCByZXNvdXJjZXMKLSAgICB2
b2lkIHNldE1hcmtlclN0YXJ0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAg
ICAgICBpZiAoIShpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlclN0YXJ0ID09IG9iaikpCi0gICAg
ICAgICAgICBpbmhlcml0ZWRSZXNvdXJjZXMuYWNjZXNzKCktPm1hcmtlclN0YXJ0ID0gb2JqOwot
ICAgIH0KLQotICAgIHZvaWQgc2V0TWFya2VyTWlkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmop
Ci0gICAgewotICAgICAgICBpZiAoIShpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlck1pZCA9PSBv
YmopKQotICAgICAgICAgICAgaW5oZXJpdGVkUmVzb3VyY2VzLmFjY2VzcygpLT5tYXJrZXJNaWQg
PSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRNYXJrZXJFbmRSZXNvdXJjZShjb25zdCBTdHJp
bmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+bWFya2Vy
RW5kID09IG9iaikpCi0gICAgICAgICAgICBpbmhlcml0ZWRSZXNvdXJjZXMuYWNjZXNzKCktPm1h
cmtlckVuZCA9IG9iajsKLSAgICB9CisgICAgdm9pZCBzZXRNYXJrZXJTdGFydFJlc291cmNlKGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0TWFya2VyTWlkUmVzb3VyY2UoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBzZXRNYXJrZXJFbmRSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIFJlYWQgYWNjZXNzb3JzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKLSAgICBFQWxpZ25tZW50
QmFzZWxpbmUgYWxpZ25tZW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRUFsaWdubWVudEJh
c2VsaW5lKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5lOyB9Ci0g
ICAgRURvbWluYW50QmFzZWxpbmUgZG9taW5hbnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChF
RG9taW5hbnRCYXNlbGluZSkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2Vs
aW5lOyB9Ci0gICAgRUJhc2VsaW5lU2hpZnQgYmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJu
IChFQmFzZWxpbmVTaGlmdCkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0
OyB9Ci0gICAgRVZlY3RvckVmZmVjdCB2ZWN0b3JFZmZlY3QoKSBjb25zdCB7IHJldHVybiAoRVZl
Y3RvckVmZmVjdCkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZlY3Q7IH0KLSAg
ICBFQnVmZmVyZWRSZW5kZXJpbmcgYnVmZmVyZWRSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAo
RUJ1ZmZlcmVkUmVuZGVyaW5nKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5k
ZXJpbmc7IH0KLSAgICBMaW5lQ2FwIGNhcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVDYXAp
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlOyB9Ci0gICAgV2luZFJ1bGUgY2xpcFJ1bGUo
KSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxl
OyB9Ci0gICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb24oKSBjb25zdCB7
IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJ
bnRlcnBvbGF0aW9uOyB9Ci0gICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvckludGVycG9sYXRpb24pIHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM7IH0KLSAgICBFQ29sb3JSZW5k
ZXJpbmcgY29sb3JSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRUNvbG9yUmVuZGVyaW5nKSBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZzsgfQotICAgIFdpbmRSdWxlIGZpbGxS
dWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxs
UnVsZTsgfQotICAgIExpbmVKb2luIGpvaW5TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lSm9p
bikgc3ZnX2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlOyB9Ci0gICAgRVNoYXBlUmVuZGVyaW5n
IHNoYXBlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVTaGFwZVJlbmRlcmluZykgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmc7IH0KLSAgICBFVGV4dEFuY2hvciB0ZXh0QW5j
aG9yKCkgY29uc3QgeyByZXR1cm4gKEVUZXh0QW5jaG9yKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0QW5jaG9yOyB9Ci0gICAgRUdseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWwoKSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRpb24pIHN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOyB9Ci0gICAgRUdseXBoT3JpZW50YXRp
b24gZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVu
dGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWw7IH0K
LSAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPm9wYWNpdHk7IH0K
LSAgICBjb25zdCBTVkdQYWludFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBm
aWxsLT5wYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgZmlsbFBhaW50Q29sb3IoKSBjb25z
dCB7IHJldHVybiBmaWxsLT5wYWludENvbG9yOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmaWxsUGFp
bnRVcmkoKSBjb25zdCB7IHJldHVybiBmaWxsLT5wYWludFVyaTsgfSAgICAKLSAgICBmbG9hdCBz
dHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5vcGFjaXR5OyB9Ci0gICAgY29u
c3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBzdHJva2Ut
PnBhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiBzdHJva2VQYWludENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gc3Ryb2tlLT5wYWludENvbG9yOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJva2VQ
YWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRVcmk7IH0KLSAgICBWZWN0b3I8
U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+
ZGFzaEFycmF5OyB9Ci0gICAgZmxvYXQgc3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJu
IHN0cm9rZS0+bWl0ZXJMaW1pdDsgfQotICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBj
b25zdCB7IHJldHVybiBzdHJva2UtPndpZHRoOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBzdHJva2VE
YXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5kYXNoT2Zmc2V0OyB9Ci0gICAgU1ZH
TGVuZ3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHQtPmtlcm5pbmc7IH0KLSAg
ICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0b3BzLT5vcGFjaXR5OyB9Ci0g
ICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0b3BzLT5jb2xvcjsg
fQotICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmZsb29kT3Bh
Y2l0eTsgfQotICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbWlz
Yy0+Zmxvb2RDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbWlzYy0+bGlnaHRpbmdDb2xvcjsgfQotICAgIFNWR0xlbmd0aFZhbHVlIGJhc2Vs
aW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZTsg
fQotICAgIFNoYWRvd0RhdGEqIHNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd1NWRy0+c2hh
ZG93LmdldCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91
dC0+Y3g7IH0KLSAgICBjb25zdCBMZW5ndGgmIGN5KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5j
eTsgfQotICAgIGNvbnN0IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+cjsgfQot
ICAgIGNvbnN0IExlbmd0aCYgcngoKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPnJ4OyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiByeSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+cnk7IH0KLSAgICBjb25z
dCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPng7IH0KLSAgICBjb25zdCBMZW5n
dGgmIHkoKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPnk7IH0KLSAgICBTdHJpbmcgY2xpcHBlclJl
c291cmNlKCkgY29uc3QgeyByZXR1cm4gcmVzb3VyY2VzLT5jbGlwcGVyOyB9Ci0gICAgU3RyaW5n
IG1hc2tlclJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gcmVzb3VyY2VzLT5tYXNrZXI7IH0KLSAg
ICBTdHJpbmcgbWFya2VyU3RhcnRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJl
c291cmNlcy0+bWFya2VyU3RhcnQ7IH0KLSAgICBTdHJpbmcgbWFya2VyTWlkUmVzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlck1pZDsgfQotICAgIFN0cmlu
ZyBtYXJrZXJFbmRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJlc291cmNlcy0+
bWFya2VyRW5kOyB9Ci0gICAgRU1hc2tUeXBlIG1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gKEVN
YXNrVHlwZSkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlOyB9Ci0gICAgUGFpbnRP
cmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4gKFBhaW50T3JkZXIpIHN2Z19pbmhlcml0
ZWRfZmxhZ3MucGFpbnRPcmRlcjsgfQorICAgIEVBbGlnbm1lbnRCYXNlbGluZSBhbGlnbm1lbnRC
YXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChFQWxpZ25tZW50QmFzZWxpbmUpIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmU7IH0KKyAgICBFRG9taW5hbnRCYXNl
bGluZSBkb21pbmFudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVEb21pbmFudEJhc2VsaW5l
KSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmU7IH0KKyAgICBF
QmFzZWxpbmVTaGlmdCBiYXNlbGluZVNoaWZ0KCkgY29uc3QgeyByZXR1cm4gKEVCYXNlbGluZVNo
aWZ0KSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQ7IH0KKyAgICBF
VmVjdG9yRWZmZWN0IHZlY3RvckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIChFVmVjdG9yRWZmZWN0
KSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdDsgfQorICAgIEVCdWZm
ZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFQnVmZmVy
ZWRSZW5kZXJpbmcpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJp
bmc7IH0KKyAgICBMaW5lQ2FwIGNhcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVDYXApIG1f
aW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGU7IH0KKyAgICBXaW5kUnVsZSBjbGlwUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIChXaW5kUnVsZSkgbV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZTsgfQorICAgIEVD
b2xvckludGVycG9sYXRpb24gY29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gKEVD
b2xvckludGVycG9sYXRpb24pIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uOyB9
CisgICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgY29u
c3QgeyByZXR1cm4gKEVDb2xvckludGVycG9sYXRpb24pIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVyczsgfQorICAgIEVDb2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmlu
ZygpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JSZW5kZXJpbmcpIG1faW5oZXJpdGVkRmxhZ3MuY29s
b3JSZW5kZXJpbmc7IH0KKyAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIChX
aW5kUnVsZSkgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZTsgfQorICAgIExpbmVKb2luIGpvaW5T
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lSm9pbikgbV9pbmhlcml0ZWRGbGFncy5qb2luU3R5
bGU7IH0KKyAgICBFU2hhcGVSZW5kZXJpbmcgc2hhcGVSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVy
biAoRVNoYXBlUmVuZGVyaW5nKSBtX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nOyB9Cisg
ICAgRVRleHRBbmNob3IgdGV4dEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIChFVGV4dEFuY2hvcikg
bV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yOyB9CisgICAgRUdseXBoT3JpZW50YXRpb24gZ2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRp
b24pIG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw7IH0KKyAgICBF
R2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7IHJldHVy
biAoRUdseXBoT3JpZW50YXRpb24pIG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZl
cnRpY2FsOyB9CisgICAgZmxvYXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxE
YXRhLT5vcGFjaXR5OyB9CisgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+cGFpbnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3Im
IGZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+cGFpbnRDb2xvcjsg
fQorICAgIGNvbnN0IFN0cmluZyYgZmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9maWxs
RGF0YS0+cGFpbnRVcmk7IH0gICAgCisgICAgZmxvYXQgc3Ryb2tlT3BhY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Ryb2tlRGF0YS0+b3BhY2l0eTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYg
c3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludFR5cGU7
IH0KKyAgICBjb25zdCBDb2xvciYgc3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3Ryb2tlRGF0YS0+cGFpbnRDb2xvcjsgfQorICAgIGNvbnN0IFN0cmluZyYgc3Ryb2tlUGFpbnRV
cmkoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnBhaW50VXJpOyB9CisgICAgVmVjdG9y
PFNWR0xlbmd0aFZhbHVlPiBzdHJva2VEYXNoQXJyYXkoKSBjb25zdCB7IHJldHVybiBtX3N0cm9r
ZURhdGEtPmRhc2hBcnJheTsgfQorICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7
IHJldHVybiBtX3N0cm9rZURhdGEtPm1pdGVyTGltaXQ7IH0KKyAgICBjb25zdCBMZW5ndGgmIHN0
cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT53aWR0aDsgfQorICAgIGNv
bnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0
YS0+ZGFzaE9mZnNldDsgfQorICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmcoKSBjb25zdCB7IHJl
dHVybiBtX3RleHREYXRhLT5rZXJuaW5nOyB9CisgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX3N0b3BEYXRhLT5vcGFjaXR5OyB9CisgICAgY29uc3QgQ29sb3ImIHN0b3BD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcERhdGEtPmNvbG9yOyB9CisgICAgZmxvYXQgZmxv
b2RPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5OyB9Cisg
ICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX21pc2NEYXRhLT5m
bG9vZENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX21pc2NEYXRhLT5saWdodGluZ0NvbG9yOyB9CisgICAgU1ZHTGVuZ3RoVmFsdWUgYmFz
ZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9taXNjRGF0YS0+YmFzZWxpbmVTaGlm
dFZhbHVlOyB9CisgICAgU2hhZG93RGF0YSogc2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dEYXRhLT5zaGFkb3cuZ2V0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXREYXRhLT5jeDsgfQorICAgIGNvbnN0IExlbmd0aCYgY3koKSBjb25zdCB7
IHJldHVybiBtX2xheW91dERhdGEtPmN5OyB9CisgICAgY29uc3QgTGVuZ3RoJiByKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXREYXRhLT5yOyB9CisgICAgY29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+cng7IH0KKyAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT5yeTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+eDsgfQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+eTsgfQorICAgIGNvbnN0IFN0cmluZyYgY2xpcHBl
clJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPmNs
aXBwZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hc2tlclJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hc2tlcjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgbWFya2VyU3RhcnRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhLT5tYXJrZXJTdGFydDsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFya2VyTWlkUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyTWlkOyB9
CisgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJFbmRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJFbmQ7IH0KKyAgICBFTWFza1R5cGUgbWFza1R5
cGUoKSBjb25zdCB7IHJldHVybiAoRU1hc2tUeXBlKSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLm1hc2tUeXBlOyB9CisgICAgUGFpbnRPcmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1
cm4gKFBhaW50T3JkZXIpIG1faW5oZXJpdGVkRmxhZ3MucGFpbnRPcmRlcjsgfQogICAgIFZlY3Rv
cjxQYWludFR5cGUsIDM+IHBhaW50VHlwZXNGb3JQYWludE9yZGVyKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0
ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1Bh
aW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkg
Y29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludFVyaTsgfQotICAgIGNvbnN0IFNW
R1BhaW50VHlwZSYgdmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBz
dHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRM
aW5rU3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQ
YWludENvbG9yOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VXJp
KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJpOyB9CisgICAgY29u
c3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQorICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkTGlua0ZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+dmlz
aXRlZExpbmtQYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua0ZpbGxQ
YWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7
IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQorICAg
IGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgdmlzaXRlZExpbmtTdHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0
YS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQogCiAgICAgLy8gY29udmVuaWVuY2UKICAgICBib29s
IGhhc0NsaXBwZXIoKSBjb25zdCB7IHJldHVybiAhY2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgp
OyB9CkBAIC0zODMsMTA3ICsyMTMsMzExIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ZpbGwoKSBj
b25zdCB7IHJldHVybiBmaWxsUGFpbnRUeXBlKCkgIT0gU1ZHX1BBSU5UVFlQRV9OT05FOyB9CiAg
ICAgYm9vbCBpc29sYXRlc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gaGFzTWFza2VyKCkgfHwg
c2hhZG93KCk7IH0KIAotcHJvdGVjdGVkOgotICAgIC8vIGluaGVyaXQKK3ByaXZhdGU6CisgICAg
U1ZHUmVuZGVyU3R5bGUoKTsKKyAgICBTVkdSZW5kZXJTdHlsZShjb25zdCBTVkdSZW5kZXJTdHls
ZSYpOworCisgICAgZW51bSBDcmVhdGVEZWZhdWx0VHlwZSB7IENyZWF0ZURlZmF1bHQgfTsKKyAg
ICBTVkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0VHlwZSk7IC8vIFVzZWQgdG8gY3JlYXRlIHRo
ZSBkZWZhdWx0IHN0eWxlLgorCisgICAgdm9pZCBzZXRCaXREZWZhdWx0cygpOworCiAgICAgc3Ry
dWN0IEluaGVyaXRlZEZsYWdzIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVy
aXRlZEZsYWdzJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChf
Y29sb3JSZW5kZXJpbmcgPT0gb3RoZXIuX2NvbG9yUmVuZGVyaW5nKQotICAgICAgICAgICAgICAg
ICYmIChfc2hhcGVSZW5kZXJpbmcgPT0gb3RoZXIuX3NoYXBlUmVuZGVyaW5nKQotICAgICAgICAg
ICAgICAgICYmIChfY2xpcFJ1bGUgPT0gb3RoZXIuX2NsaXBSdWxlKQotICAgICAgICAgICAgICAg
ICYmIChfZmlsbFJ1bGUgPT0gb3RoZXIuX2ZpbGxSdWxlKQotICAgICAgICAgICAgICAgICYmIChf
Y2FwU3R5bGUgPT0gb3RoZXIuX2NhcFN0eWxlKQotICAgICAgICAgICAgICAgICYmIChfam9pblN0
eWxlID09IG90aGVyLl9qb2luU3R5bGUpCi0gICAgICAgICAgICAgICAgJiYgKF90ZXh0QW5jaG9y
ID09IG90aGVyLl90ZXh0QW5jaG9yKQotICAgICAgICAgICAgICAgICYmIChfY29sb3JJbnRlcnBv
bGF0aW9uID09IG90aGVyLl9jb2xvckludGVycG9sYXRpb24pCi0gICAgICAgICAgICAgICAgJiYg
KF9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID09IG90aGVyLl9jb2xvckludGVycG9sYXRpb25G
aWx0ZXJzKQotICAgICAgICAgICAgICAgICYmIChfZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwg
PT0gb3RoZXIuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKQotICAgICAgICAgICAgICAgICYm
IChfZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID09IG90aGVyLl9nbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwpCi0gICAgICAgICAgICAgICAgJiYgKHBhaW50T3JkZXIgPT0gb3RoZXIucGFpbnRPcmRl
cik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVk
RmxhZ3MmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBfY29sb3JSZW5kZXJp
bmcgOiAyOyAvLyBFQ29sb3JSZW5kZXJpbmcKLSAgICAgICAgdW5zaWduZWQgX3NoYXBlUmVuZGVy
aW5nIDogMjsgLy8gRVNoYXBlUmVuZGVyaW5nIAotICAgICAgICB1bnNpZ25lZCBfY2xpcFJ1bGUg
OiAxOyAvLyBXaW5kUnVsZQotICAgICAgICB1bnNpZ25lZCBfZmlsbFJ1bGUgOiAxOyAvLyBXaW5k
UnVsZQotICAgICAgICB1bnNpZ25lZCBfY2FwU3R5bGUgOiAyOyAvLyBMaW5lQ2FwCi0gICAgICAg
IHVuc2lnbmVkIF9qb2luU3R5bGUgOiAyOyAvLyBMaW5lSm9pbgotICAgICAgICB1bnNpZ25lZCBf
dGV4dEFuY2hvciA6IDI7IC8vIEVUZXh0QW5jaG9yCi0gICAgICAgIHVuc2lnbmVkIF9jb2xvcklu
dGVycG9sYXRpb24gOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCi0gICAgICAgIHVuc2lnbmVk
IF9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDogMjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlvbgot
ICAgICAgICB1bnNpZ25lZCBfZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgOiAzOyAvLyBFR2x5
cGhPcmllbnRhdGlvbgotICAgICAgICB1bnNpZ25lZCBfZ2x5cGhPcmllbnRhdGlvblZlcnRpY2Fs
IDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJ
bmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
CisKKyAgICAgICAgdW5zaWduZWQgY29sb3JSZW5kZXJpbmcgOiAyOyAvLyBFQ29sb3JSZW5kZXJp
bmcKKyAgICAgICAgdW5zaWduZWQgc2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJp
bmcKKyAgICAgICAgdW5zaWduZWQgY2xpcFJ1bGUgOiAxOyAvLyBXaW5kUnVsZQorICAgICAgICB1
bnNpZ25lZCBmaWxsUnVsZSA6IDE7IC8vIFdpbmRSdWxlCisgICAgICAgIHVuc2lnbmVkIGNhcFN0
eWxlIDogMjsgLy8gTGluZUNhcAorICAgICAgICB1bnNpZ25lZCBqb2luU3R5bGUgOiAyOyAvLyBM
aW5lSm9pbgorICAgICAgICB1bnNpZ25lZCB0ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IK
KyAgICAgICAgdW5zaWduZWQgY29sb3JJbnRlcnBvbGF0aW9uIDogMjsgLy8gRUNvbG9ySW50ZXJw
b2xhdGlvbgorICAgICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDogMjsg
Ly8gRUNvbG9ySW50ZXJwb2xhdGlvbgorICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCiAgICAgICAg
IHVuc2lnbmVkIHBhaW50T3JkZXIgOiAzOyAvLyBQYWludE9yZGVyCi0gICAgfSBzdmdfaW5oZXJp
dGVkX2ZsYWdzOworICAgIH07CiAKLSAgICAvLyBkb24ndCBpbmhlcml0CiAgICAgc3RydWN0IE5v
bkluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgLy8gMzIgYml0IG5vbi1pbmhlcml0ZWQsIGRvbid0
IGFkZCB0byB0aGUgc3RydWN0LCBvciB0aGUgb3BlcmF0b3Igd2lsbCBicmVhay4KLSAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzICZvdGhlcikgY29uc3QgeyBy
ZXR1cm4gX25pZmxhZ3MgPT0gb3RoZXIuX25pZmxhZ3M7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzICZvdGhlcikgY29uc3QgeyByZXR1cm4gX25pZmxh
Z3MgIT0gb3RoZXIuX25pZmxhZ3M7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5v
bkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gZmxhZ3MgPT0gb3RoZXIuZmxh
Z3M7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gZmxhZ3MgIT0gb3RoZXIuZmxhZ3M7IH0KIAogICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9h
bGlnbm1lbnRCYXNlbGluZSA6IDQ7IC8vIEVBbGlnbm1lbnRCYXNlbGluZSAKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBfZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5l
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgX2Jhc2VsaW5lU2hpZnQgOiAyOyAvLyBFQmFzZWxp
bmVTaGlmdAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF92ZWN0b3JFZmZlY3Q6IDE7IC8vIEVW
ZWN0b3JFZmZlY3QKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnRCYXNlbGluZSA6
IDQ7IC8vIEVBbGlnbm1lbnRCYXNlbGluZQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWlu
YW50QmFzZWxpbmUgOiA0OyAvLyBFRG9taW5hbnRCYXNlbGluZQorICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGJhc2VsaW5lU2hpZnQgOiAyOyAvLyBFQmFzZWxpbmVTaGlmdAorICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHZlY3RvckVmZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAogICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ1ZmZlcmVkUmVuZGVyaW5nOiAyOyAvLyBFQnVmZmVyZWRSZW5kZXJp
bmcKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXNrVHlwZTogMTsgLy8gRU1hc2tUeXBlCiAg
ICAgICAgICAgICAgICAgLy8gMTggYml0cyB1bnVzZWQKLSAgICAgICAgICAgIH0gZjsKLSAgICAg
ICAgICAgIHVpbnQzMl90IF9uaWZsYWdzOworICAgICAgICAgICAgfSBmbGFnQml0czsKKyAgICAg
ICAgICAgIHVpbnQzMl90IGZsYWdzOwogICAgICAgICB9OwotICAgIH0gc3ZnX25vbmluaGVyaXRl
ZF9mbGFnczsKKyAgICB9OworCisgICAgSW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsK
KyAgICBOb25Jbmhlcml0ZWRGbGFncyBtX25vbkluaGVyaXRlZEZsYWdzOwogCiAgICAgLy8gaW5o
ZXJpdGVkIGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlRmlsbERhdGE+IGZpbGw7Ci0gICAg
RGF0YVJlZjxTdHlsZVN0cm9rZURhdGE+IHN0cm9rZTsKLSAgICBEYXRhUmVmPFN0eWxlVGV4dERh
dGE+IHRleHQ7Ci0gICAgRGF0YVJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gaW5oZXJp
dGVkUmVzb3VyY2VzOworICAgIERhdGFSZWY8U3R5bGVGaWxsRGF0YT4gbV9maWxsRGF0YTsKKyAg
ICBEYXRhUmVmPFN0eWxlU3Ryb2tlRGF0YT4gbV9zdHJva2VEYXRhOworICAgIERhdGFSZWY8U3R5
bGVUZXh0RGF0YT4gbV90ZXh0RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhPiBtX2luaGVyaXRlZFJlc291cmNlRGF0YTsKIAogICAgIC8vIG5vbi1pbmhlcml0ZWQg
YXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVTdG9wRGF0YT4gc3RvcHM7Ci0gICAgRGF0YVJl
ZjxTdHlsZU1pc2NEYXRhPiBtaXNjOwotICAgIERhdGFSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBz
aGFkb3dTVkc7Ci0gICAgRGF0YVJlZjxTdHlsZUxheW91dERhdGE+IGxheW91dDsKLSAgICBEYXRh
UmVmPFN0eWxlUmVzb3VyY2VEYXRhPiByZXNvdXJjZXM7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBD
cmVhdGVEZWZhdWx0VHlwZSB7IENyZWF0ZURlZmF1bHQgfTsKLSAgICAgICAgCi0gICAgU1ZHUmVu
ZGVyU3R5bGUoKTsKLSAgICBTVkdSZW5kZXJTdHlsZShjb25zdCBTVkdSZW5kZXJTdHlsZSYpOwot
ICAgIFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRUeXBlKTsgLy8gVXNlZCB0byBjcmVhdGUg
dGhlIGRlZmF1bHQgc3R5bGUuCisgICAgRGF0YVJlZjxTdHlsZVN0b3BEYXRhPiBtX3N0b3BEYXRh
OworICAgIERhdGFSZWY8U3R5bGVNaXNjRGF0YT4gbV9taXNjRGF0YTsKKyAgICBEYXRhUmVmPFN0
eWxlU2hhZG93U1ZHRGF0YT4gbV9zaGFkb3dEYXRhOworICAgIERhdGFSZWY8U3R5bGVMYXlvdXRE
YXRhPiBtX2xheW91dERhdGE7CisgICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0YT4gbV9ub25J
bmhlcml0ZWRSZXNvdXJjZURhdGE7Cit9OwogCi0gICAgdm9pZCBzZXRCaXREZWZhdWx0cygpCi0g
ICAgewotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZSA9IGluaXRpYWxDbGlw
UnVsZSgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyA9IGlu
aXRpYWxDb2xvclJlbmRlcmluZygpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxs
UnVsZSA9IGluaXRpYWxGaWxsUnVsZSgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9z
aGFwZVJlbmRlcmluZyA9IGluaXRpYWxTaGFwZVJlbmRlcmluZygpOwotICAgICAgICBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0QW5jaG9yID0gaW5pdGlhbFRleHRBbmNob3IoKTsKLSAgICAgICAg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGUgPSBpbml0aWFsQ2FwU3R5bGUoKTsKLSAgICAg
ICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlID0gaW5pdGlhbEpvaW5TdHlsZSgpOwot
ICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSBpbml0aWFs
Q29sb3JJbnRlcnBvbGF0aW9uKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMgPSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygp
OwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpOwotICAgICAgICBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPSBpbml0aWFsR2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MucGFpbnRPcmRl
ciA9IGluaXRpYWxQYWludE9yZGVyKCk7Ci0KLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFn
cy5fbmlmbGFncyA9IDA7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25t
ZW50QmFzZWxpbmUgPSBpbml0aWFsQWxpZ25tZW50QmFzZWxpbmUoKTsKLSAgICAgICAgc3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERvbWluYW50QmFz
ZWxpbmUoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0
ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFn
cy5mLl92ZWN0b3JFZmZlY3QgPSBpbml0aWFsVmVjdG9yRWZmZWN0KCk7Ci0gICAgICAgIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyA9IGluaXRpYWxCdWZmZXJlZFJl
bmRlcmluZygpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgPSBp
bml0aWFsTWFza1R5cGUoKTsKK2lubGluZSBTVkdMZW5ndGhWYWx1ZSBTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpCit7CisgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3Ro
OworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAp
OworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSBTVkdMZW5ndGhWYWx1ZSBTVkdSZW5k
ZXJTdHlsZTo6aW5pdGlhbEtlcm5pbmcoKQoreworICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsK
KyAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCAwKTsK
KyAgICByZXR1cm4gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0
Q3goY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT5jeCA9
PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkuY3ggPSBsZW5ndGg7Cit9
CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeShjb25zdCBMZW5ndGgmIGxlbmd0
aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPmN5ID09IGxlbmd0aCkpCisgICAgICAgIG1f
bGF5b3V0RGF0YS5hY2Nlc3MoKS5jeSA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVu
ZGVyU3R5bGU6OnNldFIoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlv
dXREYXRhLT5yID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5yID0g
bGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0UngoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT5yeCA9PSBsZW5ndGgpKQor
ICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkucnggPSBsZW5ndGg7Cit9CisKK2lubGluZSB2
b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRSeShjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBp
ZiAoIShtX2xheW91dERhdGEtPnJ5ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5h
Y2Nlc3MoKS5yeSA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNl
dFgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT54ID09
IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS54ID0gbGVuZ3RoOworfQor
CitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0WShjb25zdCBMZW5ndGgmIGxlbmd0aCkK
K3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnkgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlv
dXREYXRhLmFjY2VzcygpLnkgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0
eWxlOjpzZXRGaWxsT3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAgIGlmICghKG1fZmlsbERh
dGEtPm9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkub3Bh
Y2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRGaWxs
UGFpbnQoU1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5n
JiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtT
dHlsZSkKK3sKKyAgICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgeworICAgICAgICBpZiAoISht
X2ZpbGxEYXRhLT5wYWludFR5cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFj
Y2VzcygpLnBhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnBhaW50
Q29sb3IgPT0gY29sb3IpKQorICAgICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5wYWludENv
bG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnBhaW50VXJpID09IHVyaSkp
CisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnBhaW50VXJpID0gdXJpOwogICAgIH0K
LX07CisgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7CisgICAgICAgIGlmICghKG1f
ZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAgbV9m
aWxsRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlm
ICghKG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAg
ICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOwor
ICAgICAgICBpZiAoIShtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpID09IHVyaSkpCisg
ICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7
CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlT3BhY2l0
eShmbG9hdCBvcGFjaXR5KQoreworICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+b3BhY2l0eSA9PSBv
cGFjaXR5KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLm9wYWNpdHkgPSBvcGFjaXR5
OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlUGFpbnQoU1ZHUGFp
bnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wg
YXBwbHlUb1JlZ3VsYXJTdHlsZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkKK3sKKyAg
ICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgeworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEt
PnBhaW50VHlwZSA9PSB0eXBlKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5w
YWludFR5cGUgPSB0eXBlOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnBhaW50Q29sb3Ig
PT0gY29sb3IpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnBhaW50Q29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT5wYWludFVyaSA9PSB1cmkpKQor
ICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnBhaW50VXJpID0gdXJpOworICAgIH0K
KyAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpIHsKKyAgICAgICAgaWYgKCEobV9zdHJv
a2VEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSA9PSB0eXBlKSkKKyAgICAgICAgICAgIG1fc3Ry
b2tlRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlm
ICghKG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKKyAgICAg
ICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xv
cjsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpID09IHVy
aSkpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFVy
aSA9IHVyaTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdHJv
a2VEYXNoQXJyYXkoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgYXJyYXkpCit7CisgICAg
aWYgKCEobV9zdHJva2VEYXRhLT5kYXNoQXJyYXkgPT0gYXJyYXkpKQorICAgICAgICBtX3N0cm9r
ZURhdGEuYWNjZXNzKCkuZGFzaEFycmF5ID0gYXJyYXk7Cit9CisKK2lubGluZSB2b2lkIFNWR1Jl
bmRlclN0eWxlOjpzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQoreworICAgIGlmICgh
KG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdCA9PSBsaW1pdCkpCisgICAgICAgIG1fc3Ryb2tlRGF0
YS5hY2Nlc3MoKS5taXRlckxpbWl0ID0gbGltaXQ7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRl
clN0eWxlOjpzZXRTdHJva2VXaWR0aChjb25zdCBMZW5ndGgmIHdpZHRoKQoreworICAgIGlmICgh
KG1fc3Ryb2tlRGF0YS0+d2lkdGggPT0gd2lkdGgpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNj
ZXNzKCkud2lkdGggPSB3aWR0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNl
dFN0cm9rZURhc2hPZmZzZXQoY29uc3QgTGVuZ3RoJiBvZmZzZXQpCit7CisgICAgaWYgKCEobV9z
dHJva2VEYXRhLT5kYXNoT2Zmc2V0ID09IG9mZnNldCkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5h
Y2Nlc3MoKS5kYXNoT2Zmc2V0ID0gb2Zmc2V0OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0S2VybmluZyhjb25zdCBTVkdMZW5ndGhWYWx1ZSYga2VybmluZykKK3sKKyAgICBp
ZiAoIShtX3RleHREYXRhLT5rZXJuaW5nID09IGtlcm5pbmcpKQorICAgICAgICBtX3RleHREYXRh
LmFjY2VzcygpLmtlcm5pbmcgPSBrZXJuaW5nOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0U3RvcE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIShtX3N0b3BE
YXRhLT5vcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX3N0b3BEYXRhLmFjY2VzcygpLm9w
YWNpdHkgPSBvcGFjaXR5OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Rv
cENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX3N0b3BEYXRhLT5jb2xv
ciA9PSBjb2xvcikpCisgICAgICAgIG1fc3RvcERhdGEuYWNjZXNzKCkuY29sb3IgPSBjb2xvcjsK
K30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZsb29kT3BhY2l0eShmbG9hdCBv
cGFjaXR5KQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eSA9PSBvcGFjaXR5
KSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5mbG9vZE9wYWNpdHkgPSBvcGFjaXR5Owor
fQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Rmxvb2RDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+Zmxvb2RDb2xvciA9PSBjb2xvcikp
CisgICAgICAgIG1fbWlzY0RhdGEuYWNjZXNzKCkuZmxvb2RDb2xvciA9IGNvbG9yOworfQorCitp
bmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+bGlnaHRpbmdDb2xvciA9PSBjb2xvcikp
CisgICAgICAgIG1fbWlzY0RhdGEuYWNjZXNzKCkubGlnaHRpbmdDb2xvciA9IGNvbG9yOworfQor
CitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0QmFzZWxpbmVTaGlmdFZhbHVlKGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBzaGlmdFZhbHVlKQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmJh
c2VsaW5lU2hpZnRWYWx1ZSA9PSBzaGlmdFZhbHVlKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nl
c3MoKS5iYXNlbGluZVNoaWZ0VmFsdWUgPSBzaGlmdFZhbHVlOworfQorCitpbmxpbmUgdm9pZCBT
VkdSZW5kZXJTdHlsZTo6c2V0Q2xpcHBlclJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2Up
Cit7CisgICAgaWYgKCEobV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPmNsaXBwZXIgPT0gcmVz
b3VyY2UpKQorICAgICAgICBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS5hY2Nlc3MoKS5jbGlw
cGVyID0gcmVzb3VyY2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXNr
ZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1fbm9uSW5o
ZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXNrZXIgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX25vbklu
aGVyaXRlZFJlc291cmNlRGF0YS5hY2Nlc3MoKS5tYXNrZXIgPSByZXNvdXJjZTsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hcmtlclN0YXJ0UmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFy
a2VyU3RhcnQgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX2luaGVyaXRlZFJlc291cmNlRGF0YS5h
Y2Nlc3MoKS5tYXJrZXJTdGFydCA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5k
ZXJTdHlsZTo6c2V0TWFya2VyTWlkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sK
KyAgICBpZiAoIShtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyTWlkID09IHJlc291cmNl
KSkKKyAgICAgICAgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkubWFya2VyTWlkID0g
cmVzb3VyY2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJFbmRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVk
UmVzb3VyY2VEYXRhLT5tYXJrZXJFbmQgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX2luaGVyaXRl
ZFJlc291cmNlRGF0YS5hY2Nlc3MoKS5tYXJrZXJFbmQgPSByZXNvdXJjZTsKK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEJpdERlZmF1bHRzKCkKK3sKKyAgICBtX2luaGVyaXRl
ZEZsYWdzLmNsaXBSdWxlID0gaW5pdGlhbENsaXBSdWxlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvclJlbmRlcmluZyA9IGluaXRpYWxDb2xvclJlbmRlcmluZygpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MuZmlsbFJ1bGUgPSBpbml0aWFsRmlsbFJ1bGUoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLnNoYXBlUmVuZGVyaW5nID0gaW5pdGlhbFNoYXBlUmVuZGVyaW5nKCk7CisgICAgbV9pbmhl
cml0ZWRGbGFncy50ZXh0QW5jaG9yID0gaW5pdGlhbFRleHRBbmNob3IoKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLmNhcFN0eWxlID0gaW5pdGlhbENhcFN0eWxlKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5qb2luU3R5bGUgPSBpbml0aWFsSm9pblN0eWxlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvckludGVycG9sYXRpb24gPSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uKCk7CisgICAg
bV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID0gaW5pdGlhbENvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50
YXRpb25Ib3Jpem9udGFsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCk7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPSBpbml0aWFsR2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5wYWludE9yZGVy
ID0gaW5pdGlhbFBhaW50T3JkZXIoKTsKKworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ3Mg
PSAwOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUg
PSBpbml0aWFsQWxpZ25tZW50QmFzZWxpbmUoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZs
YWdCaXRzLmRvbWluYW50QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpOworICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCA9IGluaXRpYWxCYXNl
bGluZVNoaWZ0KCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZl
Y3QgPSBpbml0aWFsVmVjdG9yRWZmZWN0KCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy5idWZmZXJlZFJlbmRlcmluZyA9IGluaXRpYWxCdWZmZXJlZFJlbmRlcmluZygpOworICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUgPSBpbml0aWFsTWFza1R5cGUo
KTsKK30KKworaW5saW5lIGJvb2wgU1ZHUmVuZGVyU3R5bGU6OkluaGVyaXRlZEZsYWdzOjpvcGVy
YXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
Y29sb3JSZW5kZXJpbmcgPT0gb3RoZXIuY29sb3JSZW5kZXJpbmcKKyAgICAgICAgJiYgc2hhcGVS
ZW5kZXJpbmcgPT0gb3RoZXIuc2hhcGVSZW5kZXJpbmcKKyAgICAgICAgJiYgY2xpcFJ1bGUgPT0g
b3RoZXIuY2xpcFJ1bGUKKyAgICAgICAgJiYgZmlsbFJ1bGUgPT0gb3RoZXIuZmlsbFJ1bGUKKyAg
ICAgICAgJiYgY2FwU3R5bGUgPT0gb3RoZXIuY2FwU3R5bGUKKyAgICAgICAgJiYgam9pblN0eWxl
ID09IG90aGVyLmpvaW5TdHlsZQorICAgICAgICAmJiB0ZXh0QW5jaG9yID09IG90aGVyLnRleHRB
bmNob3IKKyAgICAgICAgJiYgY29sb3JJbnRlcnBvbGF0aW9uID09IG90aGVyLmNvbG9ySW50ZXJw
b2xhdGlvbgorICAgICAgICAmJiBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzID09IG90aGVyLmNv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMKKyAgICAgICAgJiYgZ2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWwgPT0gb3RoZXIuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwKKyAgICAgICAgJiYgZ2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsID09IG90aGVyLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbAor
ICAgICAgICAmJiBwYWludE9yZGVyID09IG90aGVyLnBhaW50T3JkZXI7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TaGFwZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1
ZS5oCmluZGV4IDZkNzY3YWUyMzczN2RiNmY3ODNmMjI0OWU0OTBlYzkwNmEzM2I4ZTguLmI3NDlh
MjZjMGNhNWFjZmM2MmVmMmYzZWNiYmVkM2U0OTU3OGY3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFNoYXBlVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFwZVZh
bHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmUHRy
PEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQorICAgIHN0YXRpYyBSZWY8
U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNz
c0JveCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoV1RG
TW92ZShzaGFwZSksIGNzc0JveCkpOwogICAgIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZVZhbHVlKGJveFNoYXBlKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmUHRyPFN0eWxlSW1hZ2U+
JiYgaW1hZ2UpCisgICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPFN0eWxlSW1h
Z2U+JiYgaW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZVZh
bHVlKFdURk1vdmUoaW1hZ2UpKSk7CiAgICAgfQpAQCAtNzIsMTQgKzcyLDE0IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2hhcGVWYWx1ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBz
aGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCisgICAgU2hhcGVWYWx1ZShSZWY8QmFzaWNTaGFwZT4m
JiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OlNoYXBl
KQogICAgICAgICAsIG1fc2hhcGUoV1RGTW92ZShzaGFwZSkpCiAgICAgICAgICwgbV9jc3NCb3go
Y3NzQm94KQogICAgIHsKICAgICB9CiAKLSAgICBleHBsaWNpdCBTaGFwZVZhbHVlKFJlZlB0cjxT
dHlsZUltYWdlPiYmIGltYWdlKQorICAgIGV4cGxpY2l0IFNoYXBlVmFsdWUoUmVmPFN0eWxlSW1h
Z2U+JiYgaW1hZ2UpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkltYWdlKQogICAgICAgICAsIG1f
aW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCmluZGV4IDFiYTM2YzRhOGQw
ZDNiZWMzMWY0MzJhMDZmZmYzYzgzZjJhZGU0YmEuLmFlMzgzNWM3OWJiYThkMDk2YjEzYjcwZGQ1
NmU5NWY0ODFmMTc3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsMTYgKzI4LDE2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dy
b3VuZERhdGEoKQotICAgIDogbV9iYWNrZ3JvdW5kKEJhY2tncm91bmRGaWxsTGF5ZXIpCi0gICAg
LCBtX2NvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCisgICAgOiBi
YWNrZ3JvdW5kKEJhY2tncm91bmRGaWxsTGF5ZXIpCisgICAgLCBjb2xvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhY2tncm91bmRDb2xvcigpKQogewogfQogCi1pbmxpbmUgU3R5bGVCYWNrZ3JvdW5k
RGF0YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKQor
aW5saW5lIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5
bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3Vu
ZERhdGE+KCkKLSAgICAsIG1fYmFja2dyb3VuZChvLm1fYmFja2dyb3VuZCkKLSAgICAsIG1fY29s
b3Ioby5tX2NvbG9yKQotICAgICwgbV9vdXRsaW5lKG8ubV9vdXRsaW5lKQorICAgICwgYmFja2dy
b3VuZChvdGhlci5iYWNrZ3JvdW5kKQorICAgICwgY29sb3Iob3RoZXIuY29sb3IpCisgICAgLCBv
dXRsaW5lKG90aGVyLm91dGxpbmUpCiB7CiB9CiAKQEAgLTQ2LDE4ICs0NiwxOCBAQCBSZWY8U3R5
bGVCYWNrZ3JvdW5kRGF0YT4gU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29weSgpIGNvbnN0CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSgqdGhpcykpOwogfQogCi1i
b29sIFN0eWxlQmFja2dyb3VuZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5k
RGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6b3BlcmF0b3I9PShjb25z
dCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iYWNr
Z3JvdW5kID09IG8ubV9iYWNrZ3JvdW5kICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fb3V0
bGluZSA9PSBvLm1fb3V0bGluZTsKKyAgICByZXR1cm4gYmFja2dyb3VuZCA9PSBvdGhlci5iYWNr
Z3JvdW5kICYmIGNvbG9yID09IG90aGVyLmNvbG9yICYmIG91dGxpbmUgPT0gb3RoZXIub3V0bGlu
ZTsKIH0KIAogYm9vbCBTdHlsZUJhY2tncm91bmREYXRhOjppc0VxdWl2YWxlbnRGb3JQYWludGlu
Zyhjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9i
YWNrZ3JvdW5kICE9IG90aGVyLm1fYmFja2dyb3VuZCB8fCBtX2NvbG9yICE9IG90aGVyLm1fY29s
b3IpCisgICAgaWYgKGJhY2tncm91bmQgIT0gb3RoZXIuYmFja2dyb3VuZCB8fCBjb2xvciAhPSBv
dGhlci5jb2xvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9vdXRsaW5lLmlz
VmlzaWJsZSgpICYmICFvdGhlci5tX291dGxpbmUuaXNWaXNpYmxlKCkpCisgICAgaWYgKCFvdXRs
aW5lLmlzVmlzaWJsZSgpICYmICFvdGhlci5vdXRsaW5lLmlzVmlzaWJsZSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9vdXRsaW5lID09IG90aGVyLm1fb3V0bGluZTsKKyAg
ICByZXR1cm4gb3V0bGluZSA9PSBvdGhlci5vdXRsaW5lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVC
YWNrZ3JvdW5kRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFj
a2dyb3VuZERhdGEuaAppbmRleCAxNDQ3NzdhYTBlYjk1YzI1YTRhZmQxMjNkNDhkYmM1N2IzNmRi
ZDczLi45Yjk1ZWUwY2FiOTkxZDZmZGZiMGI1NmRlZGExYzgwYWVlODk0NDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3Jh
aGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzYs
MjkgKzM2LDE5IEBAIGNsYXNzIFN0eWxlQmFja2dyb3VuZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZUJhY2tncm91bmREYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUJh
Y2tncm91bmREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQmFja2dy
b3VuZERhdGEpOyB9CiAgICAgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsK
LSAgICB+U3R5bGVCYWNrZ3JvdW5kRGF0YSgpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUJh
Y2tncm91bmREYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQmFj
a2dyb3VuZERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiAgICAgYm9vbCBpc0VxdWl2YWxlbnRGb3JQYWludGluZyhjb25zdCBTdHlsZUJhY2tncm91bmRE
YXRhJikgY29uc3Q7CiAKLSAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmQ7IH0KLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yOyB9Ci0gICAgY29uc3QgT3V0bGluZVZhbHVlJiBvdXRsaW5lKCkgY29u
c3QgeyByZXR1cm4gbV9vdXRsaW5lOyB9CisgICAgRmlsbExheWVyIGJhY2tncm91bmQ7CisgICAg
Q29sb3IgY29sb3I7CisgICAgT3V0bGluZVZhbHVlIG91dGxpbmU7CiAKIHByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwotCiAgICAgU3R5bGVCYWNrZ3JvdW5kRGF0YSgpOwot
ICAgIFN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYpOyAKLQot
ICAgIEZpbGxMYXllciBtX2JhY2tncm91bmQ7Ci0gICAgQ29sb3IgbV9jb2xvcjsKLSAgICBPdXRs
aW5lVmFsdWUgbV9vdXRsaW5lOworICAgIFN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVC
YWNrZ3JvdW5kRGF0YSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGY3MDY5MWJjNmExNTMzNTc0YWUxZmIxNWQyNzJhMjExM2Y3MzVhZGMuLjY5MjM5NWIxZTM1MGYx
Y2EwZDNmZDkzYjFkNWU1NGQxNmJmYjVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgQ2Fj
aGVkSW1hZ2UqIFN0eWxlQ2FjaGVkSW1hZ2U6OmNhY2hlZEltYWdlKCkgY29uc3QKIAogUmVmPENT
U1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8Q1NTVmFsdWUmPihtX2Nzc1ZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gbV9j
c3NWYWx1ZS5jb3B5UmVmKCk7CiB9CiAKIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6Y2FuUmVuZGVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEuaAppbmRleCBjNmZmYTc1Njk1OTZjM2U5NGIxY2QzYmMzMjYzN2MwMTIzMmQz
MGY4Li44OGYxODMxYzRkNTFjYjczOTY5NTA5YzljMjU1NTMyYTJiMDI3ZDI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGEuaApAQCAtMzUsNTAgKzM1LDQxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhKTsgfQogICAgIFJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4g
Y29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEoKnRoaXMpKTsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YSYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fY29u
dGFpbnNWYXJpYWJsZXMgIT0gby5tX2NvbnRhaW5zVmFyaWFibGVzKQorICAgICAgICBpZiAoY29u
dGFpbnNWYXJpYWJsZXMgIT0gb3RoZXIuY29udGFpbnNWYXJpYWJsZXMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZXMuc2l6ZSgpICE9IG8u
bV92YWx1ZXMuc2l6ZSgpKQorCisgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICE9IG90aGVyLnZh
bHVlcy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKFdURjo6S2V5VmFsdWVQYWlyPEF0b21pY1N0cmluZywgUmVmUHRyPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+PiBlbnRyeSA6IG1fdmFsdWVzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gb3RoZXIgPSBvLm1fdmFsdWVzLmdldChlbnRyeS5rZXkpOwot
ICAgICAgICAgICAgaWYgKCFvdGhlciB8fCAhZW50cnkudmFsdWUtPmVxdWFscygqb3RoZXIpKQor
CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsKKyAgICAgICAgICAgIGF1dG8g
b3RoZXJFbnRyeSA9IG90aGVyLnZhbHVlcy5maW5kKGVudHJ5LmtleSk7CisgICAgICAgICAgICBp
ZiAob3RoZXJFbnRyeSA9PSBvdGhlci52YWx1ZXMuZW5kKCkgfHwgIWVudHJ5LnZhbHVlLT5lcXVh
bHMoKm90aGVyRW50cnktPnZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEgJm8pIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gbyk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAg
IAotICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYgdmFsdWUpCisgICAgdm9p
ZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCiAgICAgewotICAgICAgICBtX3ZhbHVlcy5z
ZXQobmFtZSwgdmFsdWUpOwogICAgICAgICBpZiAodmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkp
Ci0gICAgICAgICAgICBtX2NvbnRhaW5zVmFyaWFibGVzID0gdHJ1ZTsKKyAgICAgICAgICAgIGNv
bnRhaW5zVmFyaWFibGVzID0gdHJ1ZTsKKyAgICAgICAgdmFsdWVzLnNldChuYW1lLCBXVEZNb3Zl
KHZhbHVlKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGdl
dEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlcy5nZXQobmFtZSk7IH0KLSAgICBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiB2
YWx1ZXMoKSB7IHJldHVybiBtX3ZhbHVlczsgfQotICAgIAotICAgIGJvb2wgaGFzQ3VzdG9tUHJv
cGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5j
b250YWlucyhuYW1lKTsgfQotICAgIAotICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRhaW5zVmFyaWFibGVzOyB9Ci0gICAgdm9pZCBzZXRDb250YWluc1Zh
cmlhYmxlcyhib29sIGNvbnRhaW5zVmFyaWFibGVzKSB7IG1fY29udGFpbnNWYXJpYWJsZXMgPSBj
b250YWluc1ZhcmlhYmxlczsgfQotCi0gICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCBtX3ZhbHVl
czsKLSAgICBib29sIG1fY29udGFpbnNWYXJpYWJsZXMgeyBmYWxzZSB9OworICAgIEN1c3RvbVBy
b3BlcnR5VmFsdWVNYXAgdmFsdWVzOworICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMgeyBmYWxz
ZSB9OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCkK
LSAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpCi0gICAgeyB9
CisgICAgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGEoY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKQogICAg
ICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkKLSAgICAgICAgLCBt
X3ZhbHVlcyhDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwKG90aGVyLm1fdmFsdWVzKSkKLSAgICAgICAg
LCBtX2NvbnRhaW5zVmFyaWFibGVzKG90aGVyLm1fY29udGFpbnNWYXJpYWJsZXMpCisgICAgICAg
ICwgdmFsdWVzKG90aGVyLnZhbHVlcykKKyAgICAgICAgLCBjb250YWluc1ZhcmlhYmxlcyhvdGhl
ci5jb250YWluc1ZhcmlhYmxlcykKICAgICB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxl
Qm94RGF0YS5jcHAKaW5kZXggMzJmNzgwNWViY2Y2NTYwYWFkNDY5ZWZhZmM1YWVkMzJjYzk2YTVm
Zi4uMWZhZmEyZDg4OTZkNzEzMjM4MjkyNjE1ZjVjZDQwZGVjZGU1Njk3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YS5jcHAKQEAgLTI4LDggKzI4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YSgpCiAgICAgOiBmbGV4KFJlbmRlclN0eWxlOjppbml0aWFsQm94RmxleCgp
KQotICAgICwgZmxleF9ncm91cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEZsZXhHcm91cCgpKQot
ICAgICwgb3JkaW5hbF9ncm91cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yZGluYWxHcm91cCgp
KQorICAgICwgZmxleEdyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94RmxleEdyb3VwKCkpCisg
ICAgLCBvcmRpbmFsR3JvdXAoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRpbmFsR3JvdXAoKSkK
ICAgICAsIGFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsQm94QWxpZ24oKSkKICAgICAsIHBhY2so
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3hQYWNrKCkpCiAgICAgLCBvcmllbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3hPcmllbnQoKSkKQEAgLTM3LDE1ICszNywxNSBAQCBTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSgpCiB7CiB9CiAK
LWlubGluZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pCitp
bmxpbmUgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEoY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikK
ICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPigpCi0gICAg
LCBmbGV4KG8uZmxleCkKLSAgICAsIGZsZXhfZ3JvdXAoby5mbGV4X2dyb3VwKQotICAgICwgb3Jk
aW5hbF9ncm91cChvLm9yZGluYWxfZ3JvdXApCi0gICAgLCBhbGlnbihvLmFsaWduKQotICAgICwg
cGFjayhvLnBhY2spCi0gICAgLCBvcmllbnQoby5vcmllbnQpCi0gICAgLCBsaW5lcyhvLmxpbmVz
KQorICAgICwgZmxleChvdGhlci5mbGV4KQorICAgICwgZmxleEdyb3VwKG90aGVyLmZsZXhHcm91
cCkKKyAgICAsIG9yZGluYWxHcm91cChvdGhlci5vcmRpbmFsR3JvdXApCisgICAgLCBhbGlnbihv
dGhlci5hbGlnbikKKyAgICAsIHBhY2sob3RoZXIucGFjaykKKyAgICAsIG9yaWVudChvdGhlci5v
cmllbnQpCisgICAgLCBsaW5lcyhvdGhlci5saW5lcykKIHsKIH0KIApAQCAtNTQsMTEgKzU0LDEx
IEBAIFJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3Ro
ZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZsZXggPT0gby5mbGV4ICYmIGZsZXhfZ3JvdXAgPT0g
by5mbGV4X2dyb3VwICYmCi0gICAgICAgICAgIG9yZGluYWxfZ3JvdXAgPT0gby5vcmRpbmFsX2dy
b3VwICYmIGFsaWduID09IG8uYWxpZ24gJiYKLSAgICAgICAgICAgcGFjayA9PSBvLnBhY2sgJiYg
b3JpZW50ID09IG8ub3JpZW50ICYmIGxpbmVzID09IG8ubGluZXM7CisgICAgcmV0dXJuIGZsZXgg
PT0gb3RoZXIuZmxleCAmJiBmbGV4R3JvdXAgPT0gb3RoZXIuZmxleEdyb3VwCisgICAgICAgICYm
IG9yZGluYWxHcm91cCA9PSBvdGhlci5vcmRpbmFsR3JvdXAgJiYgYWxpZ24gPT0gb3RoZXIuYWxp
Z24KKyAgICAgICAgJiYgcGFjayA9PSBvdGhlci5wYWNrICYmIG9yaWVudCA9PSBvdGhlci5vcmll
bnQgJiYgbGluZXMgPT0gb3RoZXIubGluZXM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAppbmRleCA3ZjAwMGJiZWJmN2NmZGFlNGQ2ZGE5
OTc3YjI0MGM4NWZjMjRjZjMwLi4zMzBjZjY0NzM0ZGNhNzVkYjVmODllZTc2NmNiNGRjOTE3MWFl
YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCkBAIC0zNSwxNCArMzUsMTQgQEAg
cHVibGljOgogICAgIFJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBj
b25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKICAgICB9CiAKICAgICBmbG9hdCBmbGV4OwotICAgIHVuc2lnbmVkIGludCBmbGV4X2dyb3Vw
OwotICAgIHVuc2lnbmVkIGludCBvcmRpbmFsX2dyb3VwOworICAgIHVuc2lnbmVkIGZsZXhHcm91
cDsKKyAgICB1bnNpZ25lZCBvcmRpbmFsR3JvdXA7CiAKICAgICB1bnNpZ25lZCBhbGlnbiA6IDM7
IC8vIEVCb3hBbGlnbm1lbnQKICAgICB1bnNpZ25lZCBwYWNrOiAyOyAvLyBFQm94UGFjawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcApp
bmRleCBiMGQzYmUxMTAxNWU0NzlmZmFjMGFhMTUwMTUwZmY3ZDE4NWMyMGMyLi4yMGRiYzA4ZTY2
MjczODZkYWUzMzQ1YTNmNTJlZmZhMjViMmIzOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcApAQCAtMjYsMTkgKzI2LDE1IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3R5bGVGaWx0ZXJEYXRhLmgiCiAKLSNp
bmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoKQot
ICAgIDogbV9vcGVyYXRpb25zKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5
bGVGaWx0ZXJEYXRhKGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykKK2lubGluZSBTdHlsZUZpbHRl
ckRhdGE6OlN0eWxlRmlsdGVyRGF0YShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG90aGVyKQogICAg
IDogUmVmQ291bnRlZDxTdHlsZUZpbHRlckRhdGE+KCkKLSAgICAsIG1fb3BlcmF0aW9ucyhvLm1f
b3BlcmF0aW9ucykKKyAgICAsIG9wZXJhdGlvbnMob3RoZXIub3BlcmF0aW9ucykKIHsKIH0KIApA
QCAtNDcsOSArNDMsOSBAQCBSZWY8U3R5bGVGaWx0ZXJEYXRhPiBTdHlsZUZpbHRlckRhdGE6OmNv
cHkoKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsdGVyRGF0YSgqdGhp
cykpOwogfQogCi1ib29sIFN0eWxlRmlsdGVyRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZp
bHRlckRhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlRmlsdGVyRGF0YTo6b3BlcmF0b3I9PShjb25z
dCBTdHlsZUZpbHRlckRhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX29wZXJhdGlv
bnMgPT0gby5tX29wZXJhdGlvbnM7CisgICAgcmV0dXJuIG9wZXJhdGlvbnMgPT0gb3RoZXIub3Bl
cmF0aW9uczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCmluZGV4IGM5NmUzMWVlMDNjZWVk
NDhiNTFkNDJhMzE1N2FhYThmZTkyMWM1M2QuLmE4YmE4MzFlMmMyNTVkN2U4MmJlODNmYTU1OTMy
OGMxMmY0YWZjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZpbHRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGaWx0ZXJEYXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zIG1fb3BlcmF0aW9u
czsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAKIHByaXZhdGU6CiAgICAgU3R5
bGVGaWx0ZXJEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcAppbmRleCA5OWU1NWViN2U2NDY5ZDlkNjU0NTVm
NjllMWMyZDI4YTI5N2NiYjc1Li5hODIxODQ0NWExNzY3MjFlYjlhYmRkMmZjMjhlODRlZjQ5ZjMw
ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4
aWJsZUJveERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUZsZXhpYmxlQm94RGF0YS5jcHAKQEAgLTMxLDIxICszMSwyMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTdHlsZUZsZXhpYmxlQm94RGF0YTo6U3R5bGVGbGV4aWJsZUJveERhdGEoKQotICAg
IDogbV9mbGV4R3JvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhHcm93KCkpCi0gICAgLCBtX2Zs
ZXhTaHJpbmsoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4U2hyaW5rKCkpCi0gICAgLCBtX2ZsZXhC
YXNpcyhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhCYXNpcygpKQotICAgICwgbV9mbGV4RGlyZWN0
aW9uKFJlbmRlclN0eWxlOjppbml0aWFsRmxleERpcmVjdGlvbigpKQotICAgICwgbV9mbGV4V3Jh
cChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhXcmFwKCkpCisgICAgOiBmbGV4R3JvdyhSZW5kZXJT
dHlsZTo6aW5pdGlhbEZsZXhHcm93KCkpCisgICAgLCBmbGV4U2hyaW5rKFJlbmRlclN0eWxlOjpp
bml0aWFsRmxleFNocmluaygpKQorICAgICwgZmxleEJhc2lzKFJlbmRlclN0eWxlOjppbml0aWFs
RmxleEJhc2lzKCkpCisgICAgLCBmbGV4RGlyZWN0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsRmxl
eERpcmVjdGlvbigpKQorICAgICwgZmxleFdyYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4V3Jh
cCgpKQogewogfQogCi1pbmxpbmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVC
b3hEYXRhKGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKQoraW5saW5lIFN0eWxlRmxleGli
bGVCb3hEYXRhOjpTdHlsZUZsZXhpYmxlQm94RGF0YShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0
YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlRmxleGlibGVCb3hEYXRhPigpCi0gICAg
LCBtX2ZsZXhHcm93KG8ubV9mbGV4R3JvdykKLSAgICAsIG1fZmxleFNocmluayhvLm1fZmxleFNo
cmluaykKLSAgICAsIG1fZmxleEJhc2lzKG8ubV9mbGV4QmFzaXMpCi0gICAgLCBtX2ZsZXhEaXJl
Y3Rpb24oby5tX2ZsZXhEaXJlY3Rpb24pCi0gICAgLCBtX2ZsZXhXcmFwKG8ubV9mbGV4V3JhcCkK
KyAgICAsIGZsZXhHcm93KG90aGVyLmZsZXhHcm93KQorICAgICwgZmxleFNocmluayhvdGhlci5m
bGV4U2hyaW5rKQorICAgICwgZmxleEJhc2lzKG90aGVyLmZsZXhCYXNpcykKKyAgICAsIGZsZXhE
aXJlY3Rpb24ob3RoZXIuZmxleERpcmVjdGlvbikKKyAgICAsIGZsZXhXcmFwKG90aGVyLmZsZXhX
cmFwKQogewogfQogCkBAIC01NCwxMCArNTQsMTAgQEAgUmVmPFN0eWxlRmxleGlibGVCb3hEYXRh
PiBTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVGbGV4aWJsZUJveERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZUZsZXhp
YmxlQm94RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykgY29u
c3QKK2Jvb2wgU3R5bGVGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVGbGV4
aWJsZUJveERhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX2ZsZXhHcm93ID09IG8u
bV9mbGV4R3JvdyAmJiBtX2ZsZXhTaHJpbmsgPT0gby5tX2ZsZXhTaHJpbmsgJiYgbV9mbGV4QmFz
aXMgPT0gby5tX2ZsZXhCYXNpcwotICAgICAgICAmJiBtX2ZsZXhEaXJlY3Rpb24gPT0gby5tX2Zs
ZXhEaXJlY3Rpb24gJiYgbV9mbGV4V3JhcCA9PSBvLm1fZmxleFdyYXA7CisgICAgcmV0dXJuIGZs
ZXhHcm93ID09IG90aGVyLmZsZXhHcm93ICYmIGZsZXhTaHJpbmsgPT0gb3RoZXIuZmxleFNocmlu
ayAmJiBmbGV4QmFzaXMgPT0gb3RoZXIuZmxleEJhc2lzCisgICAgICAgICYmIGZsZXhEaXJlY3Rp
b24gPT0gb3RoZXIuZmxleERpcmVjdGlvbiAmJiBmbGV4V3JhcCA9PSBvdGhlci5mbGV4V3JhcDsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmxleGlibGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVG
bGV4aWJsZUJveERhdGEuaAppbmRleCAzMjM4Yjg2ZjJmYjUwMGRkZjRhODAyZWEzOTAyYjA4YTYx
NzBkODY5Li5mNTRkODU5MDRiOTRiNGVhZjczNzI0MDcxNzFiZmZkM2JmZTM1ZjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERh
dGEuaApAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7CiAgICAgfQogCi0gICAgZmxvYXQgbV9mbGV4R3JvdzsKLSAgICBmbG9hdCBtX2ZsZXhT
aHJpbms7Ci0gICAgTGVuZ3RoIG1fZmxleEJhc2lzOworICAgIGZsb2F0IGZsZXhHcm93OworICAg
IGZsb2F0IGZsZXhTaHJpbms7CisgICAgTGVuZ3RoIGZsZXhCYXNpczsKIAotICAgIHVuc2lnbmVk
IG1fZmxleERpcmVjdGlvbiA6IDI7IC8vIEVGbGV4RGlyZWN0aW9uCi0gICAgdW5zaWduZWQgbV9m
bGV4V3JhcCA6IDI7IC8vIEVGbGV4V3JhcAorICAgIHVuc2lnbmVkIGZsZXhEaXJlY3Rpb24gOiAy
OyAvLyBFRmxleERpcmVjdGlvbgorICAgIHVuc2lnbmVkIGZsZXhXcmFwIDogMjsgLy8gRUZsZXhX
cmFwCiAKIHByaXZhdGU6CiAgICAgU3R5bGVGbGV4aWJsZUJveERhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCAyYzg0YjJmNTY3ZjA3YTE5NThjNzBlNjZiNmYzZjRmYzdkNjhmZTIyLi5iMDA2Mzc4MTRl
YTNiNGI3MTYwMTc5MDNkZmNkZGZlMjRiYTMwYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUmVmPENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU+JiYgdmFsdWUpCiAKIFJlZjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0
ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdF9jYXN0PENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpOworICAgIHJl
dHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUuY29weVJlZigpOwogfQogCiBib29sIFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U6OmlzUGVuZGluZygpIGNvbnN0CkBAIC01Niw3ICs1Niw3IEBAIEZsb2F0U2l6
ZSBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGZsb2F0IG11CiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKICAgICBpZiAobV9maXhl
ZFNpemUpIHsKLSAgICAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZSA9IGNvbnN0X2Nhc3Q8Q1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSkuZml4ZWRTaXpl
KCpyZW5kZXJlcik7CisgICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBtX2ltYWdlR2VuZXJh
dG9yVmFsdWUtPmZpeGVkU2l6ZSgqcmVuZGVyZXIpOwogICAgICAgICBpZiAobXVsdGlwbGllciA9
PSAxLjBmKQogICAgICAgICAgICAgcmV0dXJuIGZpeGVkU2l6ZTsKIApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyKQogUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAg
IEFTU0VSVChyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSkuaW1hZ2UoKnJlbmRlcmVyLCBz
aXplKTsKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5pbWFnZSgqcmVuZGVyZXIs
IHNpemUpOwogfQogCiBib29sIFN0eWxlR2VuZXJhdGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZShj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAppbmRleCA1NDgwNjA0NDAzMGE2YTlk
YzgwZWQ3NGIyNDg3ZjgzN2Q1OGYzNDM1Li5jMTQxZWY3ZWFhYjdjNDk1YTI4YWU0ZDg2MzNlOTgz
MzNmMzMxNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZERhdGEuY3BwCkBAIC0zMyw1OSArMzMsNTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YSgpCi0gICAgOiBtX2dyaWRDb2x1bW5zKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMoKSkKLSAgICAsIG1fZ3JpZFJvd3MoUmVuZGVyU3R5
bGU6OmluaXRpYWxHcmlkUm93cygpKQotICAgICwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX25hbWVkR3Jp
ZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKLSAgICAs
IG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJl
ZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5l
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwg
bV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1l
ZEdyaWRDb2x1bW5MaW5lcygpKQotICAgICwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9hdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJl
ZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMo
KSkKLSAgICAsIG1fZ3JpZEF1dG9GbG93KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9GbG93
KCkpCi0gICAgLCBtX2dyaWRBdXRvUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUm93
cygpKQotICAgICwgbV9ncmlkQXV0b0NvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0
b0NvbHVtbnMoKSkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYShSZW5kZXJTdHlsZTo6aW5pdGlhbE5h
bWVkR3JpZEFyZWEoKSkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRlclN0eWxl
Ojppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCi0gICAgLCBtX25hbWVkR3JpZEFyZWFDb2x1
bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQotICAgICwg
bV9ncmlkQ29sdW1uR2FwKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbkdhcCgpKQotICAg
ICwgbV9ncmlkUm93R2FwKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZFJvd0dhcCgpKQotICAgICwg
bV9ncmlkQXV0b1JlcGVhdENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVh
dFRyYWNrcygpKQotICAgICwgbV9ncmlkQXV0b1JlcGVhdFJvd3MoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b1JlcGVhdFRyYWNrcygpKQotICAgICwgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2Vy
dGlvblBvaW50KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2lu
dCgpKQotICAgICwgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KFJlbmRlclN0eWxlOjpp
bml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpKQotICAgICwgbV9hdXRvUmVwZWF0
Q29sdW1uc1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKLSAg
ICAsIG1fYXV0b1JlcGVhdFJvd3NUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBl
YXRUeXBlKCkpCisgICAgOiBncmlkQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1
bW5zKCkpCisgICAgLCBncmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dzKCkpCisg
ICAgLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZENv
bHVtbkxpbmVzKCkpCisgICAgLCBuYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlh
bE5hbWVkR3JpZFJvd0xpbmVzKCkpCisgICAgLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAs
IG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcygpKQorICAgICwgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKFJl
bmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAsIGF1dG9SZXBl
YXROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZFJvd0xpbmVz
KCkpCisgICAgLCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0
eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCisgICAgLCBhdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzKCkpCisgICAgLCBncmlkQXV0b0Zsb3coUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b0Zsb3coKSkKKyAgICAsIGdyaWRBdXRvUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlh
bEdyaWRBdXRvUm93cygpKQorICAgICwgZ3JpZEF1dG9Db2x1bW5zKFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEF1dG9Db2x1bW5zKCkpCisgICAgLCBuYW1lZEdyaWRBcmVhKFJlbmRlclN0eWxlOjpp
bml0aWFsTmFtZWRHcmlkQXJlYSgpKQorICAgICwgbmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCisgICAgLCBuYW1lZEdyaWRBcmVh
Q29sdW1uQ291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKKyAg
ICAsIGdyaWRDb2x1bW5HYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1uR2FwKCkpCisg
ICAgLCBncmlkUm93R2FwKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZFJvd0dhcCgpKQorICAgICwg
Z3JpZEF1dG9SZXBlYXRDb2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRU
cmFja3MoKSkKKyAgICAsIGdyaWRBdXRvUmVwZWF0Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvUmVwZWF0VHJhY2tzKCkpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBv
aW50KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpKQor
ICAgICwgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAsIGF1dG9SZXBlYXRDb2x1bW5zVHlw
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpKQorICAgICwgYXV0b1Jl
cGVhdFJvd3NUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkpCiB7
CiB9CiAKIGlubGluZSBTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3Jp
ZERhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlR3JpZERhdGE+KCkKLSAgICAsIG1fZ3Jp
ZENvbHVtbnMoby5tX2dyaWRDb2x1bW5zKQotICAgICwgbV9ncmlkUm93cyhvLm1fZ3JpZFJvd3Mp
Ci0gICAgLCBtX25hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9uYW1lZEdyaWRDb2x1bW5MaW5lcykK
LSAgICAsIG1fbmFtZWRHcmlkUm93TGluZXMoby5tX25hbWVkR3JpZFJvd0xpbmVzKQotICAgICwg
bV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcykKLSAgICAsIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8ubV9vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1f
YXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXMoby5tX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1fYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1fYXV0b1JlcGVhdE9yZGVyZWRO
YW1lZEdyaWRDb2x1bW5MaW5lcykKLSAgICAsIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcyhvLm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1f
Z3JpZEF1dG9GbG93KG8ubV9ncmlkQXV0b0Zsb3cpCi0gICAgLCBtX2dyaWRBdXRvUm93cyhvLm1f
Z3JpZEF1dG9Sb3dzKQotICAgICwgbV9ncmlkQXV0b0NvbHVtbnMoby5tX2dyaWRBdXRvQ29sdW1u
cykKLSAgICAsIG1fbmFtZWRHcmlkQXJlYShvLm1fbmFtZWRHcmlkQXJlYSkKLSAgICAsIG1fbmFt
ZWRHcmlkQXJlYVJvd0NvdW50KG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQpCi0gICAgLCBtX25h
bWVkR3JpZEFyZWFDb2x1bW5Db3VudChvLm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KQotICAg
ICwgbV9ncmlkQ29sdW1uR2FwKG8ubV9ncmlkQ29sdW1uR2FwKQotICAgICwgbV9ncmlkUm93R2Fw
KG8ubV9ncmlkUm93R2FwKQotICAgICwgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMoby5tX2dyaWRB
dXRvUmVwZWF0Q29sdW1ucykKLSAgICAsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzKG8ubV9ncmlkQXV0
b1JlcGVhdFJvd3MpCi0gICAgLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoby5t
X2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQoby5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQpCi0gICAgLCBt
X2F1dG9SZXBlYXRDb2x1bW5zVHlwZShvLm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKQotICAgICwg
bV9hdXRvUmVwZWF0Um93c1R5cGUoby5tX2F1dG9SZXBlYXRSb3dzVHlwZSkKKyAgICAsIGdyaWRD
b2x1bW5zKG8uZ3JpZENvbHVtbnMpCisgICAgLCBncmlkUm93cyhvLmdyaWRSb3dzKQorICAgICwg
bmFtZWRHcmlkQ29sdW1uTGluZXMoby5uYW1lZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIG5hbWVk
R3JpZFJvd0xpbmVzKG8ubmFtZWRHcmlkUm93TGluZXMpCisgICAgLCBvcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMoby5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpCisgICAgLCBvcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoby5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpCisgICAgLCBhdXRv
UmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoby5hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXMpCisgICAgLCBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoby5hdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXMpCisgICAgLCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KG8uYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKQorICAgICwgZ3JpZEF1dG9GbG93KG8uZ3JpZEF1dG9GbG93KQorICAgICwgZ3JpZEF1
dG9Sb3dzKG8uZ3JpZEF1dG9Sb3dzKQorICAgICwgZ3JpZEF1dG9Db2x1bW5zKG8uZ3JpZEF1dG9D
b2x1bW5zKQorICAgICwgbmFtZWRHcmlkQXJlYShvLm5hbWVkR3JpZEFyZWEpCisgICAgLCBuYW1l
ZEdyaWRBcmVhUm93Q291bnQoby5uYW1lZEdyaWRBcmVhUm93Q291bnQpCisgICAgLCBuYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoby5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQpCisgICAgLCBncmlk
Q29sdW1uR2FwKG8uZ3JpZENvbHVtbkdhcCkKKyAgICAsIGdyaWRSb3dHYXAoby5ncmlkUm93R2Fw
KQorICAgICwgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKG8uZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQor
ICAgICwgZ3JpZEF1dG9SZXBlYXRSb3dzKG8uZ3JpZEF1dG9SZXBlYXRSb3dzKQorICAgICwgYXV0
b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChvLmF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9u
UG9pbnQpCisgICAgLCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KG8uYXV0b1JlcGVhdFJv
d3NJbnNlcnRpb25Qb2ludCkKKyAgICAsIGF1dG9SZXBlYXRDb2x1bW5zVHlwZShvLmF1dG9SZXBl
YXRDb2x1bW5zVHlwZSkKKyAgICAsIGF1dG9SZXBlYXRSb3dzVHlwZShvLmF1dG9SZXBlYXRSb3dz
VHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdy
aWREYXRhLmgKaW5kZXggMTQ0ZWZhYjhiYzhmYWM3ZmM3YzU3ZjM0MzNkMzJjY2JhYWE4OTg0Yy4u
YjExZjMwYTVjNmY0NGU2YzcyNDM4YzljZmZiOTNjZGYxMmRjMWYxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC00OCwxOCArNDgsMTgg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBj
b25zdAogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGNvbXBhcmluZyB0d28gaGFzaGVzIGRvZXNu
J3QgbG9vayBncmVhdCBmb3IgcGVyZm9ybWFuY2UuIFNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQg
Z29pbmcgZm9yd2FyZC4KLSAgICAgICAgcmV0dXJuIG1fZ3JpZENvbHVtbnMgPT0gby5tX2dyaWRD
b2x1bW5zICYmIG1fZ3JpZFJvd3MgPT0gby5tX2dyaWRSb3dzCi0gICAgICAgICAgICAmJiBtX2dy
aWRBdXRvRmxvdyA9PSBvLm1fZ3JpZEF1dG9GbG93ICYmIG1fZ3JpZEF1dG9Sb3dzID09IG8ubV9n
cmlkQXV0b1Jvd3MgJiYgbV9ncmlkQXV0b0NvbHVtbnMgPT0gby5tX2dyaWRBdXRvQ29sdW1ucwot
ICAgICAgICAgICAgJiYgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fbmFtZWRHcmlkQ29s
dW1uTGluZXMgJiYgbV9uYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fbmFtZWRHcmlkUm93TGluZXMK
LSAgICAgICAgICAgICYmIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9h
dXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMgJiYgbV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93
TGluZXMgPT0gby5tX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcwotICAgICAgICAgICAgJiYg
bV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9hdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcwotICAg
ICAgICAgICAgJiYgbV9uYW1lZEdyaWRBcmVhID09IG8ubV9uYW1lZEdyaWRBcmVhICYmIG1fbmFt
ZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJlYQotICAgICAgICAgICAgJiYgbV9uYW1lZEdy
aWRBcmVhUm93Q291bnQgPT0gby5tX25hbWVkR3JpZEFyZWFSb3dDb3VudCAmJiBtX25hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCA9PSBvLm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50Ci0gICAgICAg
ICAgICAmJiBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fb3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzICYmIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9vcmRlcmVk
TmFtZWRHcmlkQ29sdW1uTGluZXMKLSAgICAgICAgICAgICYmIG1fZ3JpZENvbHVtbkdhcCA9PSBv
Lm1fZ3JpZENvbHVtbkdhcCAmJiBtX2dyaWRSb3dHYXAgPT0gby5tX2dyaWRSb3dHYXAKLSAgICAg
ICAgICAgICYmIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zID09IG8ubV9ncmlkQXV0b1JlcGVhdENv
bHVtbnMgJiYgbV9ncmlkQXV0b1JlcGVhdFJvd3MgPT0gby5tX2dyaWRBdXRvUmVwZWF0Um93cwot
ICAgICAgICAgICAgJiYgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50ID09IG8ubV9h
dXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50ICYmIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRp
b25Qb2ludCA9PSBvLm1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludAotICAgICAgICAgICAg
JiYgbV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSAm
JiBtX2F1dG9SZXBlYXRSb3dzVHlwZSA9PSBvLm1fYXV0b1JlcGVhdFJvd3NUeXBlOworICAgICAg
ICByZXR1cm4gZ3JpZENvbHVtbnMgPT0gby5ncmlkQ29sdW1ucyAmJiBncmlkUm93cyA9PSBvLmdy
aWRSb3dzCisgICAgICAgICAgICAmJiBncmlkQXV0b0Zsb3cgPT0gby5ncmlkQXV0b0Zsb3cgJiYg
Z3JpZEF1dG9Sb3dzID09IG8uZ3JpZEF1dG9Sb3dzICYmIGdyaWRBdXRvQ29sdW1ucyA9PSBvLmdy
aWRBdXRvQ29sdW1ucworICAgICAgICAgICAgJiYgbmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5u
YW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBuYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm5hbWVkR3JpZFJv
d0xpbmVzCisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMgPT0g
by5hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMgJiYgYXV0b1JlcGVhdE5hbWVkR3JpZFJv
d0xpbmVzID09IG8uYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzCisgICAgICAgICAgICAmJiBh
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8uYXV0b1JlcGVhdE9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzID09IG8uYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcworICAgICAgICAgICAg
JiYgbmFtZWRHcmlkQXJlYSA9PSBvLm5hbWVkR3JpZEFyZWEgJiYgbmFtZWRHcmlkQXJlYSA9PSBv
Lm5hbWVkR3JpZEFyZWEKKyAgICAgICAgICAgICYmIG5hbWVkR3JpZEFyZWFSb3dDb3VudCA9PSBv
Lm5hbWVkR3JpZEFyZWFSb3dDb3VudCAmJiBuYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQgPT0gby5u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQKKyAgICAgICAgICAgICYmIG9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcyA9PSBvLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyAmJiBvcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMgPT0gby5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMKKyAgICAgICAgICAg
ICYmIGdyaWRDb2x1bW5HYXAgPT0gby5ncmlkQ29sdW1uR2FwICYmIGdyaWRSb3dHYXAgPT0gby5n
cmlkUm93R2FwCisgICAgICAgICAgICAmJiBncmlkQXV0b1JlcGVhdENvbHVtbnMgPT0gby5ncmlk
QXV0b1JlcGVhdENvbHVtbnMgJiYgZ3JpZEF1dG9SZXBlYXRSb3dzID09IG8uZ3JpZEF1dG9SZXBl
YXRSb3dzCisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50ID09
IG8uYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCAmJiBhdXRvUmVwZWF0Um93c0luc2Vy
dGlvblBvaW50ID09IG8uYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludAorICAgICAgICAgICAg
JiYgYXV0b1JlcGVhdENvbHVtbnNUeXBlID09IG8uYXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIGF1
dG9SZXBlYXRSb3dzVHlwZSA9PSBvLmF1dG9SZXBlYXRSb3dzVHlwZTsKICAgICB9CiAKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVHcmlkRGF0YSYgbykgY29uc3QKQEAgLTY3LDQzICs2
Nyw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBVcGRhdGUgdGhlIG5hbWluZyBvZiB0aGUgZm9sbG93aW5nIHZhcmlhYmxl
cy4KLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQ29sdW1uczsKLSAgICBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4gbV9ncmlkUm93czsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3Jp
ZENvbHVtbnM7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRSb3dzOwogCi0gICAgTmFt
ZWRHcmlkTGluZXNNYXAgbV9uYW1lZEdyaWRDb2x1bW5MaW5lczsKLSAgICBOYW1lZEdyaWRMaW5l
c01hcCBtX25hbWVkR3JpZFJvd0xpbmVzOworICAgIE5hbWVkR3JpZExpbmVzTWFwIG5hbWVkR3Jp
ZENvbHVtbkxpbmVzOworICAgIE5hbWVkR3JpZExpbmVzTWFwIG5hbWVkR3JpZFJvd0xpbmVzOwog
Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxp
bmVzOwotICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX29yZGVyZWROYW1lZEdyaWRSb3dM
aW5lczsKKyAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBvcmRlcmVkTmFtZWRHcmlkUm93
TGluZXM7CiAKLSAgICBOYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1
bW5MaW5lczsKLSAgICBOYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dM
aW5lczsKLSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9hdXRvUmVwZWF0T3JkZXJlZE5h
bWVkR3JpZENvbHVtbkxpbmVzOwotICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgYXV0
b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzOworICAgIE5hbWVkR3JpZExpbmVzTWFwIGF1dG9S
ZXBlYXROYW1lZEdyaWRSb3dMaW5lczsKKyAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsKKyAgICBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKIAotICAgIHVuc2ln
bmVkIG1fZ3JpZEF1dG9GbG93IDogR3JpZEF1dG9GbG93Qml0czsKKyAgICB1bnNpZ25lZCBncmlk
QXV0b0Zsb3cgOiBHcmlkQXV0b0Zsb3dCaXRzOwogCi0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+
IG1fZ3JpZEF1dG9Sb3dzOwotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRBdXRvQ29s
dW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1dG9Sb3dzOworICAgIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiBncmlkQXV0b0NvbHVtbnM7CiAKLSAgICBOYW1lZEdyaWRBcmVhTWFw
IG1fbmFtZWRHcmlkQXJlYTsKLSAgICAvLyBCZWNhdXNlIG1fbmFtZWRHcmlkQXJlYSBkb2Vzbid0
IHN0b3JlIHRoZSB1bm5hbWVkIGdyaWQgYXJlYXMsIHdlIG5lZWQgdG8ga2VlcCB0cmFjaworICAg
IE5hbWVkR3JpZEFyZWFNYXAgbmFtZWRHcmlkQXJlYTsKKyAgICAvLyBCZWNhdXNlIG5hbWVkR3Jp
ZEFyZWEgZG9lc24ndCBzdG9yZSB0aGUgdW5uYW1lZCBncmlkIGFyZWFzLCB3ZSBuZWVkIHRvIGtl
ZXAgdHJhY2sKICAgICAvLyBvZiB0aGUgZXhwbGljaXQgZ3JpZCBzaXplIGRlZmluZWQgYnkgYm90
aCBuYW1lZCBhbmQgdW5uYW1lZCBncmlkIGFyZWFzLgotICAgIHVuc2lnbmVkIG1fbmFtZWRHcmlk
QXJlYVJvd0NvdW50OwotICAgIHVuc2lnbmVkIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50Owor
ICAgIHVuc2lnbmVkIG5hbWVkR3JpZEFyZWFSb3dDb3VudDsKKyAgICB1bnNpZ25lZCBuYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQ7CiAKLSAgICBMZW5ndGggbV9ncmlkQ29sdW1uR2FwOwotICAgIExl
bmd0aCBtX2dyaWRSb3dHYXA7CisgICAgTGVuZ3RoIGdyaWRDb2x1bW5HYXA7CisgICAgTGVuZ3Ro
IGdyaWRSb3dHYXA7CiAKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b1JlcGVh
dENvbHVtbnM7Ci0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fZ3JpZEF1dG9SZXBlYXRSb3dz
OworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQXV0b1JlcGVhdENvbHVtbnM7CisgICAg
VmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvUmVwZWF0Um93czsKIAotICAgIHVuc2lnbmVk
IG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludDsKLSAgICB1bnNpZ25lZCBtX2F1dG9S
ZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7CisgICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnNJ
bnNlcnRpb25Qb2ludDsKKyAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
OwogCi0gICAgQXV0b1JlcGVhdFR5cGUgbV9hdXRvUmVwZWF0Q29sdW1uc1R5cGU7Ci0gICAgQXV0
b1JlcGVhdFR5cGUgbV9hdXRvUmVwZWF0Um93c1R5cGU7CisgICAgQXV0b1JlcGVhdFR5cGUgYXV0
b1JlcGVhdENvbHVtbnNUeXBlOworICAgIEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRSb3dzVHlw
ZTsKIAogcHJpdmF0ZToKICAgICBTdHlsZUdyaWREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcAppbmRleCAxMDJiZTkw
OGQ3NmNkZDZmZmExNzJkNGEyYTJhMjI2ZGU1YjNiNWNkLi5jMmRiOGU3NDgyNWIyMDFlNDE3NDQ3
MWRmZDIxNDU2NjM2NzQ3ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU3R5bGVHcmlkSXRlbURhdGEuaCIKIApAQCAtMzcsMTkgKzM4LDE5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0eWxlR3JpZEl0ZW1EYXRhOjpTdHlsZUdyaWRJdGVtRGF0YSgpCi0g
ICAgOiBtX2dyaWRDb2x1bW5TdGFydChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtQ29sdW1u
U3RhcnQoKSkKLSAgICAsIG1fZ3JpZENvbHVtbkVuZChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJ
dGVtQ29sdW1uRW5kKCkpCi0gICAgLCBtX2dyaWRSb3dTdGFydChSZW5kZXJTdHlsZTo6aW5pdGlh
bEdyaWRJdGVtUm93U3RhcnQoKSkKLSAgICAsIG1fZ3JpZFJvd0VuZChSZW5kZXJTdHlsZTo6aW5p
dGlhbEdyaWRJdGVtUm93RW5kKCkpCisgICAgOiBncmlkQ29sdW1uU3RhcnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkSXRlbUNvbHVtblN0YXJ0KCkpCisgICAgLCBncmlkQ29sdW1uRW5kKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEl0ZW1Db2x1bW5FbmQoKSkKKyAgICAsIGdyaWRSb3dTdGFydChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtUm93U3RhcnQoKSkKKyAgICAsIGdyaWRSb3dFbmQo
UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbVJvd0VuZCgpKQogewogfQogCiBpbmxpbmUgU3R5
bGVHcmlkSXRlbURhdGE6OlN0eWxlR3JpZEl0ZW1EYXRhKGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRh
JiBvKQogICAgIDogUmVmQ291bnRlZDxTdHlsZUdyaWRJdGVtRGF0YT4oKQotICAgICwgbV9ncmlk
Q29sdW1uU3RhcnQoby5tX2dyaWRDb2x1bW5TdGFydCkKLSAgICAsIG1fZ3JpZENvbHVtbkVuZChv
Lm1fZ3JpZENvbHVtbkVuZCkKLSAgICAsIG1fZ3JpZFJvd1N0YXJ0KG8ubV9ncmlkUm93U3RhcnQp
Ci0gICAgLCBtX2dyaWRSb3dFbmQoby5tX2dyaWRSb3dFbmQpCisgICAgLCBncmlkQ29sdW1uU3Rh
cnQoby5ncmlkQ29sdW1uU3RhcnQpCisgICAgLCBncmlkQ29sdW1uRW5kKG8uZ3JpZENvbHVtbkVu
ZCkKKyAgICAsIGdyaWRSb3dTdGFydChvLmdyaWRSb3dTdGFydCkKKyAgICAsIGdyaWRSb3dFbmQo
by5ncmlkUm93RW5kKQogewogfQogCkBAIC02MCw0ICs2MSw0IEBAIFJlZjxTdHlsZUdyaWRJdGVt
RGF0YT4gU3R5bGVHcmlkSXRlbURhdGE6OmNvcHkoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5o
CmluZGV4IDhiMjhkOTRiNDFiMjliMDAyMTRjZGM2NGViZjE2MTc0MDdhZTBkZDYuLjgwYzg0ZmM3
MzFlMmZjYmZmZGZmNTA4M2UyM2NjMjBhMTRlODRiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCkBAIC00NSw4ICs0NSw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYg
bykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2dyaWRDb2x1bW5TdGFydCA9PSBvLm1f
Z3JpZENvbHVtblN0YXJ0ICYmIG1fZ3JpZENvbHVtbkVuZCA9PSBvLm1fZ3JpZENvbHVtbkVuZAot
ICAgICAgICAgICAgJiYgbV9ncmlkUm93U3RhcnQgPT0gby5tX2dyaWRSb3dTdGFydCAmJiBtX2dy
aWRSb3dFbmQgPT0gby5tX2dyaWRSb3dFbmQ7CisgICAgICAgIHJldHVybiBncmlkQ29sdW1uU3Rh
cnQgPT0gby5ncmlkQ29sdW1uU3RhcnQgJiYgZ3JpZENvbHVtbkVuZCA9PSBvLmdyaWRDb2x1bW5F
bmQKKyAgICAgICAgICAgICYmIGdyaWRSb3dTdGFydCA9PSBvLmdyaWRSb3dTdGFydCAmJiBncmlk
Um93RW5kID09IG8uZ3JpZFJvd0VuZDsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVHcmlkSXRlbURhdGEmIG8pIGNvbnN0CkBAIC01NCwxMCArNTQsMTAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICBHcmlkUG9zaXRp
b24gbV9ncmlkQ29sdW1uU3RhcnQ7Ci0gICAgR3JpZFBvc2l0aW9uIG1fZ3JpZENvbHVtbkVuZDsK
LSAgICBHcmlkUG9zaXRpb24gbV9ncmlkUm93U3RhcnQ7Ci0gICAgR3JpZFBvc2l0aW9uIG1fZ3Jp
ZFJvd0VuZDsKKyAgICBHcmlkUG9zaXRpb24gZ3JpZENvbHVtblN0YXJ0OworICAgIEdyaWRQb3Np
dGlvbiBncmlkQ29sdW1uRW5kOworICAgIEdyaWRQb3NpdGlvbiBncmlkUm93U3RhcnQ7CisgICAg
R3JpZFBvc2l0aW9uIGdyaWRSb3dFbmQ7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVHcmlkSXRlbURh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUlu
aGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5o
ZXJpdGVkRGF0YS5jcHAKaW5kZXggNjMzOWY2ZGRlYjE3Yzk3NWExNzg4YWIxYzhkYTQzMjZlZjFl
ODU5MS4uYTVlMzU3ZWU5MzEyM2YxMmQ3NDI2ZjA3MzAwNjc1YTEyMWZhYjU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5j
cHAKQEAgLTI3LDkgKzI3LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVJbmhlcml0
ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQotICAgIDogaG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpCi0gICAg
LCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9y
ZGVyU3BhY2luZygpKQotICAgICwgbGluZV9oZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5l
SGVpZ2h0KCkpCisgICAgOiBob3Jpem9udGFsQm9yZGVyU3BhY2luZyhSZW5kZXJTdHlsZTo6aW5p
dGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpCisgICAgLCB2ZXJ0aWNhbEJvcmRlclNwYWNp
bmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSkKKyAgICAsIGxp
bmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpCiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKICAgICAsIHNwZWNpZmllZExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaW5lSGVpZ2h0KCkpCiAjZW5kaWYKQEAgLTM4LDE1ICszOCwxMSBAQCBTdHlsZUluaGVy
aXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiB7CiB9CiAKLVN0eWxlSW5oZXJpdGVkRGF0
YTo6flN0eWxlSW5oZXJpdGVkRGF0YSgpCi17Ci19Ci0KIGlubGluZSBTdHlsZUluaGVyaXRlZERh
dGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pCiAgICAg
OiBSZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKQotICAgICwgaG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyhvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcpCi0gICAgLCB2ZXJ0aWNhbF9i
b3JkZXJfc3BhY2luZyhvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKQotICAgICwgbGluZV9oZWln
aHQoby5saW5lX2hlaWdodCkKKyAgICAsIGhvcml6b250YWxCb3JkZXJTcGFjaW5nKG8uaG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcpCisgICAgLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoby52ZXJ0aWNh
bEJvcmRlclNwYWNpbmcpCisgICAgLCBsaW5lSGVpZ2h0KG8ubGluZUhlaWdodCkKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQogICAgICwgc3BlY2lmaWVkTGluZUhlaWdodChvLnNwZWNpZmll
ZExpbmVIZWlnaHQpCiAjZW5kaWYKQEAgLTYzLDE1ICs1OSwxNSBAQCBSZWY8U3R5bGVJbmhlcml0
ZWREYXRhPiBTdHlsZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAogCiBib29sIFN0eWxlSW5o
ZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9oZWlnaHQKKyAgICByZXR1cm4g
bGluZUhlaWdodCA9PSBvLmxpbmVIZWlnaHQKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQog
ICAgICAgICAmJiBzcGVjaWZpZWRMaW5lSGVpZ2h0ID09IG8uc3BlY2lmaWVkTGluZUhlaWdodAog
I2VuZGlmCiAgICAgICAgICYmIGZvbnRDYXNjYWRlID09IG8uZm9udENhc2NhZGUKICAgICAgICAg
JiYgY29sb3IgPT0gby5jb2xvcgogICAgICAgICAmJiB2aXNpdGVkTGlua0NvbG9yID09IG8udmlz
aXRlZExpbmtDb2xvcgotICAgICAgICAmJiBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG8u
aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICAmJiB2ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZyA9PSBvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOworICAgICAgICAmJiBob3Jpem9udGFs
Qm9yZGVyU3BhY2luZyA9PSBvLmhvcml6b250YWxCb3JkZXJTcGFjaW5nCisgICAgICAgICYmIHZl
cnRpY2FsQm9yZGVyU3BhY2luZyA9PSBvLnZlcnRpY2FsQm9yZGVyU3BhY2luZzsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCmluZGV4IDI5YmZjYjQ0M2EwZGUwODA5ZjQ0ZWNhNGRm
MTNkYzIyNmY3MmE4MjguLmQ2NTU1ODM1YWM4ZTA5MzA1MDYwNTVkZmM4YjE5YTI4ODkyODAxNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRl
ZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0
ZWREYXRhLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMjcsOSArMjcsNiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRm9udENh
c2NhZGUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMjAgKzM0LDE0IEBAIGNsYXNzIFN0eWxlSW5oZXJpdGVk
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkRGF0YSk7IH0KICAgICBSZWY8U3R5bGVJbmhlcml0ZWRE
YXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgflN0eWxlSW5oZXJpdGVkRGF0YSgpOwogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAKLSAgICBmbG9hdCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nOwotICAgIGZs
b2F0IHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOworICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJT
cGFjaW5nOworICAgIGZsb2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZzsKIAotICAgIC8vIGNvdWxk
IGJlIHBhY2tlZCBpbiBhIHNob3J0IGJ1dCBkb2Vzbid0Ci0gICAgLy8gbWFrZSBhIGRpZmZlcmVu
Y2UgY3VycmVudGx5IGJlY2F1c2Ugb2YgcGFkZGluZwotICAgIExlbmd0aCBsaW5lX2hlaWdodDsK
KyAgICBMZW5ndGggbGluZUhlaWdodDsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAg
IExlbmd0aCBzcGVjaWZpZWRMaW5lSGVpZ2h0OwogI2VuZGlmCkBAIC02Miw2ICs1Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU3R5bGVJbmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVJbmhl
cml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYpOworICAgIHZvaWQgb3BlcmF0b3I9
KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYpID0gZGVsZXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTXVsdGlDb2xEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU11bHRpQ29sRGF0YS5jcHAKaW5kZXggNWM5MGUyMGExODBkMmFhZDZhNGY5NzkwZDBkNGFiZTc1
NGY3NjQ3NC4uYjdlNzk0Zjg0YjM5N2NmZDhiNmE0OWFhZmUxZjdmYjk4Yjc3OTIxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI3LDMzICsyNywzMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
dHlsZU11bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoKQotICAgIDogbV93aWR0aCgwKQot
ICAgICwgbV9jb3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpCi0gICAgLCBt
X2dhcCgwKQotICAgICwgbV9hdXRvV2lkdGgodHJ1ZSkKLSAgICAsIG1fYXV0b0NvdW50KHRydWUp
Ci0gICAgLCBtX25vcm1hbEdhcCh0cnVlKQotICAgICwgbV9maWxsKFJlbmRlclN0eWxlOjppbml0
aWFsQ29sdW1uRmlsbCgpKQotICAgICwgbV9jb2x1bW5TcGFuKGZhbHNlKQotICAgICwgbV9heGlz
KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQotICAgICwgbV9wcm9ncmVzc2lvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKCkpCisgICAgOiBjb3VudChSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpCisgICAgLCBhdXRvV2lkdGgodHJ1ZSkKKyAg
ICAsIGF1dG9Db3VudCh0cnVlKQorICAgICwgbm9ybWFsR2FwKHRydWUpCisgICAgLCBmaWxsKFJl
bmRlclN0eWxlOjppbml0aWFsQ29sdW1uRmlsbCgpKQorICAgICwgY29sdW1uU3BhbihmYWxzZSkK
KyAgICAsIGF4aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpCisgICAgLCBwcm9n
cmVzc2lvbihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKCkpCiB7CiB9CiAK
LWlubGluZSBTdHlsZU11bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVN
dWx0aUNvbERhdGEmIG8pCitpbmxpbmUgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xE
YXRhKGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5
bGVNdWx0aUNvbERhdGE+KCkKLSAgICAsIG1fd2lkdGgoby5tX3dpZHRoKQotICAgICwgbV9jb3Vu
dChvLm1fY291bnQpCi0gICAgLCBtX2dhcChvLm1fZ2FwKQotICAgICwgbV9ydWxlKG8ubV9ydWxl
KQotICAgICwgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihvLm1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IpCi0gICAgLCBtX2F1dG9XaWR0aChvLm1fYXV0b1dpZHRoKQotICAgICwgbV9h
dXRvQ291bnQoby5tX2F1dG9Db3VudCkKLSAgICAsIG1fbm9ybWFsR2FwKG8ubV9ub3JtYWxHYXAp
Ci0gICAgLCBtX2ZpbGwoby5tX2ZpbGwpCi0gICAgLCBtX2NvbHVtblNwYW4oby5tX2NvbHVtblNw
YW4pCi0gICAgLCBtX2F4aXMoby5tX2F4aXMpCi0gICAgLCBtX3Byb2dyZXNzaW9uKG8ubV9wcm9n
cmVzc2lvbikKKyAgICAsIHdpZHRoKG90aGVyLndpZHRoKQorICAgICwgY291bnQob3RoZXIuY291
bnQpCisgICAgLCBnYXAob3RoZXIuZ2FwKQorICAgICwgcnVsZShvdGhlci5ydWxlKQorICAgICwg
dmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3Iob3RoZXIudmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3IpCisgICAgLCBhdXRvV2lkdGgob3RoZXIuYXV0b1dpZHRoKQorICAgICwgYXV0b0NvdW50KG90
aGVyLmF1dG9Db3VudCkKKyAgICAsIG5vcm1hbEdhcChvdGhlci5ub3JtYWxHYXApCisgICAgLCBm
aWxsKG90aGVyLmZpbGwpCisgICAgLCBjb2x1bW5TcGFuKG90aGVyLmNvbHVtblNwYW4pCisgICAg
LCBheGlzKG90aGVyLmF4aXMpCisgICAgLCBwcm9ncmVzc2lvbihvdGhlci5wcm9ncmVzc2lvbikK
IHsKIH0KIApAQCAtNjIsMTMgKzYwLDEzIEBAIFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gU3R5bGVN
dWx0aUNvbERhdGE6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
TXVsdGlDb2xEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVNdWx0aUNvbERhdGE6Om9wZXJh
dG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlTXVsdGlD
b2xEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvdGhlcikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9jb3VudCA9PSBvLm1fY291
bnQgJiYgbV9nYXAgPT0gby5tX2dhcAotICAgICAgICAmJiBtX3J1bGUgPT0gby5tX3J1bGUgJiYg
bV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3IKLSAgICAgICAgJiYgbV9hdXRvV2lkdGggPT0gby5tX2F1dG9XaWR0aCAmJiBtX2F1dG9D
b3VudCA9PSBvLm1fYXV0b0NvdW50ICYmIG1fbm9ybWFsR2FwID09IG8ubV9ub3JtYWxHYXAKLSAg
ICAgICAgJiYgbV9maWxsID09IG8ubV9maWxsICYmIG1fY29sdW1uU3BhbiA9PSBvLm1fY29sdW1u
U3BhbgotICAgICAgICAmJiBtX2F4aXMgPT0gby5tX2F4aXMgJiYgbV9wcm9ncmVzc2lvbiA9PSBv
Lm1fcHJvZ3Jlc3Npb247CisgICAgcmV0dXJuIHdpZHRoID09IG90aGVyLndpZHRoICYmIGNvdW50
ID09IG90aGVyLmNvdW50ICYmIGdhcCA9PSBvdGhlci5nYXAKKyAgICAgICAgJiYgcnVsZSA9PSBv
dGhlci5ydWxlICYmIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID09IG90aGVyLnZpc2l0ZWRM
aW5rQ29sdW1uUnVsZUNvbG9yCisgICAgICAgICYmIGF1dG9XaWR0aCA9PSBvdGhlci5hdXRvV2lk
dGggJiYgYXV0b0NvdW50ID09IG90aGVyLmF1dG9Db3VudCAmJiBub3JtYWxHYXAgPT0gb3RoZXIu
bm9ybWFsR2FwCisgICAgICAgICYmIGZpbGwgPT0gb3RoZXIuZmlsbCAmJiBjb2x1bW5TcGFuID09
IG90aGVyLmNvbHVtblNwYW4KKyAgICAgICAgJiYgYXhpcyA9PSBvdGhlci5heGlzICYmIHByb2dy
ZXNzaW9uID09IG90aGVyLnByb2dyZXNzaW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNv
bERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0
YS5oCmluZGV4IDI5MzRmOTg1NTY3ZTdkMTExMzNhNGM2ZGU1M2ZlMWE1OGQ0NTMyNzAuLjViZGY4
MWQ1MTdiOTBkMTk2OGNkMjJkMzc2MTc3YzI3YmJkNjkzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdy
YWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM4LDMyICszOCwyOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSk7IH0KICAgICBSZWY8U3R5bGVNdWx0
aUNvbERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVNdWx0aUNvbERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZU11bHRpQ29sRGF0YSAmbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERh
dGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgdW5zaWdu
ZWQgc2hvcnQgcnVsZVdpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3J1bGUuc3R5
bGUoKSA9PSBCTk9ORSB8fCBtX3J1bGUuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICBpZiAo
cnVsZS5zdHlsZSgpID09IEJOT05FIHx8IHJ1bGUuc3R5bGUoKSA9PSBCSElEREVOKQogICAgICAg
ICAgICAgcmV0dXJuIDA7IAotICAgICAgICByZXR1cm4gbV9ydWxlLndpZHRoKCk7CisgICAgICAg
IHJldHVybiBydWxlLndpZHRoKCk7CiAgICAgfQogCi0gICAgZmxvYXQgbV93aWR0aDsKLSAgICB1
bnNpZ25lZCBzaG9ydCBtX2NvdW50OwotICAgIGZsb2F0IG1fZ2FwOwotICAgIEJvcmRlclZhbHVl
IG1fcnVsZTsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOworICAgIGZs
b2F0IHdpZHRoIHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IGNvdW50OworICAgIGZsb2F0IGdh
cCB7IDAgfTsKKyAgICBCb3JkZXJWYWx1ZSBydWxlOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQ29s
dW1uUnVsZUNvbG9yOwogCi0gICAgYm9vbCBtX2F1dG9XaWR0aCA6IDE7Ci0gICAgYm9vbCBtX2F1
dG9Db3VudCA6IDE7Ci0gICAgYm9vbCBtX25vcm1hbEdhcCA6IDE7Ci0gICAgdW5zaWduZWQgbV9m
aWxsIDogMTsgLy8gQ29sdW1uRmlsbAotICAgIHVuc2lnbmVkIG1fY29sdW1uU3BhbiA6IDE7Ci0g
ICAgdW5zaWduZWQgbV9heGlzIDogMjsgLy8gQ29sdW1uQXhpcwotICAgIHVuc2lnbmVkIG1fcHJv
Z3Jlc3Npb24gOiAyOyAvLyBDb2x1bW5Qcm9ncmVzc2lvbgorICAgIGJvb2wgYXV0b1dpZHRoIDog
MTsKKyAgICBib29sIGF1dG9Db3VudCA6IDE7CisgICAgYm9vbCBub3JtYWxHYXAgOiAxOworICAg
IHVuc2lnbmVkIGZpbGwgOiAxOyAvLyBDb2x1bW5GaWxsCisgICAgdW5zaWduZWQgY29sdW1uU3Bh
biA6IDE7CisgICAgdW5zaWduZWQgYXhpcyA6IDI7IC8vIENvbHVtbkF4aXMKKyAgICB1bnNpZ25l
ZCBwcm9ncmVzc2lvbiA6IDI7IC8vIENvbHVtblByb2dyZXNzaW9uCiAKIHByaXZhdGU6CiAgICAg
U3R5bGVNdWx0aUNvbERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCBmYTI5YWYwZGNlNzE2
MGI5NThhMzU3Y2RkMjg4Nzc4MWFiOTdmZGY3Li5mYzYwNWQ0OGZjYzg1OTA1ODM5MGRmMzk4MmI1
YmRiMDU5ODhiNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVj
dCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxHcmVhdGVyCiAgICAgdm9pZCogcmVmUHRyc1syXTsKICAgICBMZW5ndGggbGVu
Z3Roc1syXTsKICAgICBmbG9hdCBzZWNvbmRGbG9hdDsKLSAgICB1bnNpZ25lZCBtX2JpdGZpZWxk
c1s0XTsKKyAgICB1bnNpZ25lZCBiaXRmaWVsZHNbNF07CiAgICAgc2hvcnQgcGFnZWRNZWRpYVNo
b3J0c1syXTsKICAgICB1bnNpZ25lZCB1bnNpZ25lZHNbMV07CiAgICAgc2hvcnQgaHlwaGVuYXRp
b25TaG9ydHNbM107CkBAIC03MywxMiArNzMsMTIgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBsaXN0U3R5bGVJbWFnZShSZW5kZXJTdHls
ZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlKCkpCiAgICAgLCB0ZXh0U3Ryb2tlV2lkdGgoUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0U3Ryb2tlV2lkdGgoKSkKICAgICAsIGluZGVudChSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRJbmRlbnQoKSkKLSAgICAsIG1fZWZmZWN0aXZlWm9vbShSZW5kZXJTdHls
ZTo6aW5pdGlhbFpvb20oKSkKLSAgICAsIG1fY3VzdG9tUHJvcGVydGllcyhTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBlZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKQorICAgICwgY3VzdG9tUHJvcGVydGllcyhTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YTo6Y3JlYXRlKCkpCiAgICAgLCB3aWRvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3Mo
KSkKICAgICAsIG9ycGhhbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5zKCkpCi0gICAgLCBt
X2hhc0F1dG9XaWRvd3ModHJ1ZSkKLSAgICAsIG1faGFzQXV0b09ycGhhbnModHJ1ZSkKKyAgICAs
IGhhc0F1dG9XaWRvd3ModHJ1ZSkKKyAgICAsIGhhc0F1dG9PcnBoYW5zKHRydWUpCiAgICAgLCB0
ZXh0U2VjdXJpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0U2VjdXJpdHkoKSkKICAgICAsIHVz
ZXJNb2RpZnkoUkVBRF9PTkxZKQogICAgICwgd29yZEJyZWFrKFJlbmRlclN0eWxlOjppbml0aWFs
V29yZEJyZWFrKCkpCkBAIC05MSw1MCArOTEsNTAgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAgICAgLCB0ZXh0RW1waGFzaXNGaWxsKFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQpCiAgICAgLCB0ZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtO
b25lKQogICAgICwgdGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVy
IHwgVGV4dEVtcGhhc2lzUG9zaXRpb25SaWdodCkKLSAgICAsIG1fdGV4dE9yaWVudGF0aW9uKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0T3JpZW50YXRpb246Ok1peGVkKSkKKyAgICAsIHRleHRP
cmllbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dE9yaWVudGF0aW9uOjpNaXhlZCkp
CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEluZGVudExpbmUoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0SW5kZW50TGluZSgpKQotICAgICwgbV90ZXh0SW5kZW50VHlwZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRUeXBlKCkpCisgICAgLCB0ZXh0SW5kZW50TGluZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCisgICAgLCB0ZXh0SW5kZW50VHlw
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRUeXBlKCkpCiAjZW5kaWYKLSAgICAsIG1f
bGluZUJveENvbnRhaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQm94Q29udGFpbigpKQorICAg
ICwgbGluZUJveENvbnRhaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQm94Q29udGFpbigpKQog
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2ltYWdlT3JpZW50YXRp
b24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkpCisgICAgLCBpbWFnZU9y
aWVudGF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpKQogI2VuZGlm
Ci0gICAgLCBtX2ltYWdlUmVuZGVyaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJp
bmcoKSkKLSAgICAsIG1fbGluZVNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCgpKQot
ICAgICwgbV9saW5lQWxpZ24oUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQWxpZ24oKSkKKyAgICAs
IGltYWdlUmVuZGVyaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSkKKyAg
ICAsIGxpbmVTbmFwKFJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkKKyAgICAsIGxpbmVB
bGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigpKQogI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
KFJlbmRlclN0eWxlOjppbml0aWFsVXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpKQogI2VuZGlm
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgICwgbV9pbWFnZVJlc29sdXRp
b25Tb3VyY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKSkKLSAg
ICAsIG1faW1hZ2VSZXNvbHV0aW9uU25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1
dGlvblNuYXAoKSkKKyAgICAsIGltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5p
dGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU25hcChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKSkKICNlbmRpZgogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCi0gICAgLCBtX3RleHRBbGlnbkxhc3QoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0QWxpZ25MYXN0KCkpCi0gICAgLCBtX3RleHRKdXN0aWZ5KFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dEp1c3RpZnkoKSkKLSNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICAsIG1fdGV4dERlY29y
YXRpb25Ta2lwKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25Ta2lwKCkpCi0gICAg
LCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRVbmRlcmxp
bmVQb3NpdGlvbigpKQotICAgICwgbV9ydWJ5UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxS
dWJ5UG9zaXRpb24oKSkKLSAgICAsIG1fdGV4dFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
Wm9vbSgpKQorICAgICwgdGV4dEFsaWduTGFzdChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGln
bkxhc3QoKSkKKyAgICAsIHRleHRKdXN0aWZ5KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEp1c3Rp
ZnkoKSkKKyNlbmRpZgorICAgICwgdGV4dERlY29yYXRpb25Ta2lwKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dERlY29yYXRpb25Ta2lwKCkpCisgICAgLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSkKKyAgICAsIHJ1YnlQb3Np
dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQorICAgICwgdGV4dFpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAs
IHRvdWNoQ2FsbG91dEVuYWJsZWQoUmVuZGVyU3R5bGU6OmluaXRpYWxUb3VjaENhbGxvdXRFbmFi
bGVkKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgLCB0cmFp
bGluZ1dvcmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVHJhaWxp
bmdXb3JkKCkpKQogI2VuZGlmCi0gICAgLCBtX2hhbmdpbmdQdW5jdHVhdGlvbihSZW5kZXJTdHls
ZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpKQorICAgICwgaGFuZ2luZ1B1bmN0dWF0aW9u
KFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCkpCiAgICAgLCBoeXBoZW5h
dGlvbkxpbWl0QmVmb3JlKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKC0xKQogICAg
ICwgaHlwaGVuYXRpb25MaW1pdExpbmVzKC0xKQotICAgICwgbV9saW5lR3JpZChSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVHcmlkKCkpCi0gICAgLCBtX3RhYlNpemUoUmVuZGVyU3R5bGU6OmluaXRp
YWxUYWJTaXplKCkpCisgICAgLCBsaW5lR3JpZChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlk
KCkpCisgICAgLCB0YWJTaXplKFJlbmRlclN0eWxlOjppbml0aWFsVGFiU2l6ZSgpKQogI2lmIEVO
QUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLCB0ZXh0U2l6ZUFkanVzdChSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHRTaXplQWRqdXN0KCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbElt
YWdlUmVzb2x1dGlvbigpKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uKFJlbmRlclN0eWxlOjppbml0
aWFsSW1hZ2VSZXNvbHV0aW9uKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRD
b2xvcigpKQpAQCAtMTU1LDEyICsxNTUsMTIgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAg
ICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRh
Pigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0
YSkKICAgICAsIGluZGVudChvLmluZGVudCkKLSAgICAsIG1fZWZmZWN0aXZlWm9vbShvLm1fZWZm
ZWN0aXZlWm9vbSkKLSAgICAsIG1fY3VzdG9tUHJvcGVydGllcyhvLm1fY3VzdG9tUHJvcGVydGll
cykKKyAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQorICAgICwgY3VzdG9tUHJv
cGVydGllcyhvLmN1c3RvbVByb3BlcnRpZXMpCiAgICAgLCB3aWRvd3Moby53aWRvd3MpCiAgICAg
LCBvcnBoYW5zKG8ub3JwaGFucykKLSAgICAsIG1faGFzQXV0b1dpZG93cyhvLm1faGFzQXV0b1dp
ZG93cykKLSAgICAsIG1faGFzQXV0b09ycGhhbnMoby5tX2hhc0F1dG9PcnBoYW5zKQorICAgICwg
aGFzQXV0b1dpZG93cyhvLmhhc0F1dG9XaWRvd3MpCisgICAgLCBoYXNBdXRvT3JwaGFucyhvLmhh
c0F1dG9PcnBoYW5zKQogICAgICwgdGV4dFNlY3VyaXR5KG8udGV4dFNlY3VyaXR5KQogICAgICwg
dXNlck1vZGlmeShvLnVzZXJNb2RpZnkpCiAgICAgLCB3b3JkQnJlYWsoby53b3JkQnJlYWspCkBA
IC0xNzMsNTIgKzE3Myw1MiBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdGV4dEVt
cGhhc2lzRmlsbChvLnRleHRFbXBoYXNpc0ZpbGwpCiAgICAgLCB0ZXh0RW1waGFzaXNNYXJrKG8u
dGV4dEVtcGhhc2lzTWFyaykKICAgICAsIHRleHRFbXBoYXNpc1Bvc2l0aW9uKG8udGV4dEVtcGhh
c2lzUG9zaXRpb24pCi0gICAgLCBtX3RleHRPcmllbnRhdGlvbihvLm1fdGV4dE9yaWVudGF0aW9u
KQorICAgICwgdGV4dE9yaWVudGF0aW9uKG8udGV4dE9yaWVudGF0aW9uKQogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCi0gICAgLCBtX3RleHRJbmRlbnRMaW5lKG8ubV90ZXh0SW5kZW50TGluZSkKLSAg
ICAsIG1fdGV4dEluZGVudFR5cGUoby5tX3RleHRJbmRlbnRUeXBlKQorICAgICwgdGV4dEluZGVu
dExpbmUoby50ZXh0SW5kZW50TGluZSkKKyAgICAsIHRleHRJbmRlbnRUeXBlKG8udGV4dEluZGVu
dFR5cGUpCiAjZW5kaWYKLSAgICAsIG1fbGluZUJveENvbnRhaW4oby5tX2xpbmVCb3hDb250YWlu
KQorICAgICwgbGluZUJveENvbnRhaW4oby5saW5lQm94Q29udGFpbikKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQotICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKG8ubV9pbWFnZU9y
aWVudGF0aW9uKQorICAgICwgaW1hZ2VPcmllbnRhdGlvbihvLmltYWdlT3JpZW50YXRpb24pCiAj
ZW5kaWYKLSAgICAsIG1faW1hZ2VSZW5kZXJpbmcoby5tX2ltYWdlUmVuZGVyaW5nKQotICAgICwg
bV9saW5lU25hcChvLm1fbGluZVNuYXApCi0gICAgLCBtX2xpbmVBbGlnbihvLm1fbGluZUFsaWdu
KQorICAgICwgaW1hZ2VSZW5kZXJpbmcoby5pbWFnZVJlbmRlcmluZykKKyAgICAsIGxpbmVTbmFw
KG8ubGluZVNuYXApCisgICAgLCBsaW5lQWxpZ24oby5saW5lQWxpZ24pCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAsIHVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmcoby51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKQogI2VuZGlmCiAjaWYgRU5BQkxFKENT
U19JTUFHRV9SRVNPTFVUSU9OKQotICAgICwgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2Uoby5tX2lt
YWdlUmVzb2x1dGlvblNvdXJjZSkKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU25hcChvLm1faW1h
Z2VSZXNvbHV0aW9uU25hcCkKKyAgICAsIGltYWdlUmVzb2x1dGlvblNvdXJjZShvLmltYWdlUmVz
b2x1dGlvblNvdXJjZSkKKyAgICAsIGltYWdlUmVzb2x1dGlvblNuYXAoby5pbWFnZVJlc29sdXRp
b25TbmFwKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEFsaWdu
TGFzdChvLm1fdGV4dEFsaWduTGFzdCkKLSAgICAsIG1fdGV4dEp1c3RpZnkoby5tX3RleHRKdXN0
aWZ5KQotI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICwgbV90ZXh0RGVjb3JhdGlvblNraXAoby5t
X3RleHREZWNvcmF0aW9uU2tpcCkKLSAgICAsIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uKG8ubV90
ZXh0VW5kZXJsaW5lUG9zaXRpb24pCi0gICAgLCBtX3J1YnlQb3NpdGlvbihvLm1fcnVieVBvc2l0
aW9uKQotICAgICwgbV90ZXh0Wm9vbShvLm1fdGV4dFpvb20pCisgICAgLCB0ZXh0QWxpZ25MYXN0
KG8udGV4dEFsaWduTGFzdCkKKyAgICAsIHRleHRKdXN0aWZ5KG8udGV4dEp1c3RpZnkpCisjZW5k
aWYKKyAgICAsIHRleHREZWNvcmF0aW9uU2tpcChvLnRleHREZWNvcmF0aW9uU2tpcCkKKyAgICAs
IHRleHRVbmRlcmxpbmVQb3NpdGlvbihvLnRleHRVbmRlcmxpbmVQb3NpdGlvbikKKyAgICAsIHJ1
YnlQb3NpdGlvbihvLnJ1YnlQb3NpdGlvbikKKyAgICAsIHRleHRab29tKG8udGV4dFpvb20pCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxlZChvLnRvdWNoQ2FsbG91
dEVuYWJsZWQpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgLCB0
cmFpbGluZ1dvcmQoby50cmFpbGluZ1dvcmQpCiAjZW5kaWYKLSAgICAsIG1faGFuZ2luZ1B1bmN0
dWF0aW9uKG8ubV9oYW5naW5nUHVuY3R1YXRpb24pCisgICAgLCBoYW5naW5nUHVuY3R1YXRpb24o
by5oYW5naW5nUHVuY3R1YXRpb24pCiAgICAgLCBoeXBoZW5hdGlvblN0cmluZyhvLmh5cGhlbmF0
aW9uU3RyaW5nKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZShvLmh5cGhlbmF0aW9uTGlt
aXRCZWZvcmUpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoby5oeXBoZW5hdGlvbkxpbWl0
QWZ0ZXIpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoby5oeXBoZW5hdGlvbkxpbWl0TGlu
ZXMpCiAgICAgLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFy
aykKLSAgICAsIG1fbGluZUdyaWQoby5tX2xpbmVHcmlkKQotICAgICwgbV90YWJTaXplKG8ubV90
YWJTaXplKQorICAgICwgbGluZUdyaWQoby5saW5lR3JpZCkKKyAgICAsIHRhYlNpemUoby50YWJT
aXplKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLCB0ZXh0U2l6ZUFkanVzdChv
LnRleHRTaXplQWRqdXN0KQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9O
KQotICAgICwgbV9pbWFnZVJlc29sdXRpb24oby5tX2ltYWdlUmVzb2x1dGlvbikKKyAgICAsIGlt
YWdlUmVzb2x1dGlvbihvLmltYWdlUmVzb2x1dGlvbikKICNlbmRpZgogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hsaWdodENvbG9yKQpA
QCAtMjUwLDExICsyNTAsMTEgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRv
cj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEodGV4dFNoYWRvdywgby50ZXh0U2hhZG93KQogICAgICAgICAm
JiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGN1cnNvckRhdGEsIG8uY3Vyc29yRGF0YSkKICAgICAg
ICAgJiYgaW5kZW50ID09IG8uaW5kZW50Ci0gICAgICAgICYmIG1fZWZmZWN0aXZlWm9vbSA9PSBv
Lm1fZWZmZWN0aXZlWm9vbQorICAgICAgICAmJiBlZmZlY3RpdmVab29tID09IG8uZWZmZWN0aXZl
Wm9vbQogICAgICAgICAmJiB3aWRvd3MgPT0gby53aWRvd3MKICAgICAgICAgJiYgb3JwaGFucyA9
PSBvLm9ycGhhbnMKLSAgICAgICAgJiYgbV9oYXNBdXRvV2lkb3dzID09IG8ubV9oYXNBdXRvV2lk
b3dzCi0gICAgICAgICYmIG1faGFzQXV0b09ycGhhbnMgPT0gby5tX2hhc0F1dG9PcnBoYW5zCisg
ICAgICAgICYmIGhhc0F1dG9XaWRvd3MgPT0gby5oYXNBdXRvV2lkb3dzCisgICAgICAgICYmIGhh
c0F1dG9PcnBoYW5zID09IG8uaGFzQXV0b09ycGhhbnMKICAgICAgICAgJiYgdGV4dFNlY3VyaXR5
ID09IG8udGV4dFNlY3VyaXR5CiAgICAgICAgICYmIHVzZXJNb2RpZnkgPT0gby51c2VyTW9kaWZ5
CiAgICAgICAgICYmIHdvcmRCcmVhayA9PSBvLndvcmRCcmVhawpAQCAtMjc2LDQ0ICsyNzYsNDQg
QEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAgICYmIHRleHRFbXBoYXNpc0ZpbGwgPT0g
by50ZXh0RW1waGFzaXNGaWxsCiAgICAgICAgICYmIHRleHRFbXBoYXNpc01hcmsgPT0gby50ZXh0
RW1waGFzaXNNYXJrCiAgICAgICAgICYmIHRleHRFbXBoYXNpc1Bvc2l0aW9uID09IG8udGV4dEVt
cGhhc2lzUG9zaXRpb24KLSAgICAgICAgJiYgbV90ZXh0T3JpZW50YXRpb24gPT0gby5tX3RleHRP
cmllbnRhdGlvbgorICAgICAgICAmJiB0ZXh0T3JpZW50YXRpb24gPT0gby50ZXh0T3JpZW50YXRp
b24KICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAmJiBtX3RleHRJbmRlbnRMaW5lID09
IG8ubV90ZXh0SW5kZW50TGluZQotICAgICAgICAmJiBtX3RleHRJbmRlbnRUeXBlID09IG8ubV90
ZXh0SW5kZW50VHlwZQorICAgICAgICAmJiB0ZXh0SW5kZW50TGluZSA9PSBvLnRleHRJbmRlbnRM
aW5lCisgICAgICAgICYmIHRleHRJbmRlbnRUeXBlID09IG8udGV4dEluZGVudFR5cGUKICNlbmRp
ZgotICAgICAgICAmJiBtX2xpbmVCb3hDb250YWluID09IG8ubV9saW5lQm94Q29udGFpbgorICAg
ICAgICAmJiBsaW5lQm94Q29udGFpbiA9PSBvLmxpbmVCb3hDb250YWluCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgICAgICAmJiB0b3VjaENhbGxvdXRFbmFibGVkID09IG8udG91Y2hDYWxsb3V0RW5h
YmxlZAogI2VuZGlmCiAgICAgICAgICYmIGh5cGhlbmF0aW9uU3RyaW5nID09IG8uaHlwaGVuYXRp
b25TdHJpbmcKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyayA9PSBvLnRleHRFbXBo
YXNpc0N1c3RvbU1hcmsKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShxdW90ZXMs
IG8ucXVvdGVzKQotICAgICAgICAmJiBtX3RhYlNpemUgPT0gby5tX3RhYlNpemUKLSAgICAgICAg
JiYgbV9saW5lR3JpZCA9PSBvLm1fbGluZUdyaWQKKyAgICAgICAgJiYgdGFiU2l6ZSA9PSBvLnRh
YlNpemUKKyAgICAgICAgJiYgbGluZUdyaWQgPT0gby5saW5lR3JpZAogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAgICYmIG1faW1hZ2VPcmllbnRhdGlvbiA9PSBvLm1f
aW1hZ2VPcmllbnRhdGlvbgorICAgICAgICAmJiBpbWFnZU9yaWVudGF0aW9uID09IG8uaW1hZ2VP
cmllbnRhdGlvbgogI2VuZGlmCi0gICAgICAgICYmIG1faW1hZ2VSZW5kZXJpbmcgPT0gby5tX2lt
YWdlUmVuZGVyaW5nCisgICAgICAgICYmIGltYWdlUmVuZGVyaW5nID09IG8uaW1hZ2VSZW5kZXJp
bmcKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgICAgICYmIG1faW1hZ2VS
ZXNvbHV0aW9uU291cmNlID09IG8ubV9pbWFnZVJlc29sdXRpb25Tb3VyY2UKLSAgICAgICAgJiYg
bV9pbWFnZVJlc29sdXRpb25TbmFwID09IG8ubV9pbWFnZVJlc29sdXRpb25TbmFwCi0gICAgICAg
ICYmIG1faW1hZ2VSZXNvbHV0aW9uID09IG8ubV9pbWFnZVJlc29sdXRpb24KKyAgICAgICAgJiYg
aW1hZ2VSZXNvbHV0aW9uU291cmNlID09IG8uaW1hZ2VSZXNvbHV0aW9uU291cmNlCisgICAgICAg
ICYmIGltYWdlUmVzb2x1dGlvblNuYXAgPT0gby5pbWFnZVJlc29sdXRpb25TbmFwCisgICAgICAg
ICYmIGltYWdlUmVzb2x1dGlvbiA9PSBvLmltYWdlUmVzb2x1dGlvbgogI2VuZGlmCiAjaWYgRU5B
QkxFKENTUzNfVEVYVCkKLSAgICAgICAgJiYgbV90ZXh0QWxpZ25MYXN0ID09IG8ubV90ZXh0QWxp
Z25MYXN0Ci0gICAgICAgICYmIG1fdGV4dEp1c3RpZnkgPT0gby5tX3RleHRKdXN0aWZ5CisgICAg
ICAgICYmIHRleHRBbGlnbkxhc3QgPT0gby50ZXh0QWxpZ25MYXN0CisgICAgICAgICYmIHRleHRK
dXN0aWZ5ID09IG8udGV4dEp1c3RpZnkKICNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICAgICAgJiYg
bV90ZXh0RGVjb3JhdGlvblNraXAgPT0gby5tX3RleHREZWNvcmF0aW9uU2tpcAotICAgICAgICAm
JiBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbiA9PSBvLm1fdGV4dFVuZGVybGluZVBvc2l0aW9uCi0g
ICAgICAgICYmIG1fcnVieVBvc2l0aW9uID09IG8ubV9ydWJ5UG9zaXRpb24KLSAgICAgICAgJiYg
bV90ZXh0Wm9vbSA9PSBvLm1fdGV4dFpvb20KLSAgICAgICAgJiYgbV9saW5lU25hcCA9PSBvLm1f
bGluZVNuYXAKLSAgICAgICAgJiYgbV9saW5lQWxpZ24gPT0gby5tX2xpbmVBbGlnbgorICAgICAg
ICAmJiB0ZXh0RGVjb3JhdGlvblNraXAgPT0gby50ZXh0RGVjb3JhdGlvblNraXAKKyAgICAgICAg
JiYgdGV4dFVuZGVybGluZVBvc2l0aW9uID09IG8udGV4dFVuZGVybGluZVBvc2l0aW9uCisgICAg
ICAgICYmIHJ1YnlQb3NpdGlvbiA9PSBvLnJ1YnlQb3NpdGlvbgorICAgICAgICAmJiB0ZXh0Wm9v
bSA9PSBvLnRleHRab29tCisgICAgICAgICYmIGxpbmVTbmFwID09IG8ubGluZVNuYXAKKyAgICAg
ICAgJiYgbGluZUFsaWduID09IG8ubGluZUFsaWduCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19X
T1JEKQogICAgICAgICAmJiB0cmFpbGluZ1dvcmQgPT0gby50cmFpbGluZ1dvcmQKICNlbmRpZgot
ICAgICAgICAmJiBtX2hhbmdpbmdQdW5jdHVhdGlvbiA9PSBvLm1faGFuZ2luZ1B1bmN0dWF0aW9u
Ci0gICAgICAgICYmIG1fY3VzdG9tUHJvcGVydGllcyA9PSBvLm1fY3VzdG9tUHJvcGVydGllcwor
ICAgICAgICAmJiBoYW5naW5nUHVuY3R1YXRpb24gPT0gby5oYW5naW5nUHVuY3R1YXRpb24KKyAg
ICAgICAgJiYgY3VzdG9tUHJvcGVydGllcyA9PSBvLmN1c3RvbVByb3BlcnRpZXMKICAgICAgICAg
JiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShsaXN0U3R5bGVJbWFnZSwgby5saXN0U3R5bGVJbWFn
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IDEyYjdlMzlhM2FhOWM0ZWI3Zjg4MmJmYWM2MDlj
N2YyOTIwOTg3ZDcuLjJmZjI3Yzk4NTBmM2EwNjA4MDNjNGEwNDU0YjY4N2E3NTg1M2NmNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaApAQCAtNzIsMTcgKzcyLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBSZWZQ
dHI8Q3Vyc29yTGlzdD4gY3Vyc29yRGF0YTsKICAgICBMZW5ndGggaW5kZW50OwotICAgIGZsb2F0
IG1fZWZmZWN0aXZlWm9vbTsKKyAgICBmbG9hdCBlZmZlY3RpdmVab29tOwogICAgIAogICAgIExl
bmd0aCB3b3JkU3BhY2luZzsKIAotICAgIERhdGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+
IG1fY3VzdG9tUHJvcGVydGllczsKKyAgICBEYXRhUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
PiBjdXN0b21Qcm9wZXJ0aWVzOwogCiAgICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVydGllcy4KICAg
ICBzaG9ydCB3aWRvd3M7CiAgICAgc2hvcnQgb3JwaGFuczsKLSAgICB1bnNpZ25lZCBtX2hhc0F1
dG9XaWRvd3MgOiAxOwotICAgIHVuc2lnbmVkIG1faGFzQXV0b09ycGhhbnMgOiAxOworICAgIHVu
c2lnbmVkIGhhc0F1dG9XaWRvd3MgOiAxOworICAgIHVuc2lnbmVkIGhhc0F1dG9PcnBoYW5zIDog
MTsKICAgICAKICAgICB1bnNpZ25lZCB0ZXh0U2VjdXJpdHkgOiAyOyAvLyBFVGV4dFNlY3VyaXR5
CiAgICAgdW5zaWduZWQgdXNlck1vZGlmeSA6IDI7IC8vIEVVc2VyTW9kaWZ5IChlZGl0aW5nKQpA
QCAtOTcsMzQgKzk3LDM0IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNGaWxs
IDogMTsgLy8gVGV4dEVtcGhhc2lzRmlsbAogICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc01hcmsg
OiAzOyAvLyBUZXh0RW1waGFzaXNNYXJrCiAgICAgdW5zaWduZWQgdGV4dEVtcGhhc2lzUG9zaXRp
b24gOiA0OyAvLyBUZXh0RW1waGFzaXNQb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fdGV4dE9yaWVu
dGF0aW9uIDogMjsgLy8gVGV4dE9yaWVudGF0aW9uCisgICAgdW5zaWduZWQgdGV4dE9yaWVudGF0
aW9uIDogMjsgLy8gVGV4dE9yaWVudGF0aW9uCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICB1
bnNpZ25lZCBtX3RleHRJbmRlbnRMaW5lIDogMTsgLy8gVGV4dEluZGVudExpbmUKLSAgICB1bnNp
Z25lZCBtX3RleHRJbmRlbnRUeXBlIDogMTsgLy8gVGV4dEluZGVudFR5cGUKKyAgICB1bnNpZ25l
ZCB0ZXh0SW5kZW50TGluZSA6IDE7IC8vIFRleHRJbmRlbnRMaW5lCisgICAgdW5zaWduZWQgdGV4
dEluZGVudFR5cGUgOiAxOyAvLyBUZXh0SW5kZW50VHlwZQogI2VuZGlmCi0gICAgdW5zaWduZWQg
bV9saW5lQm94Q29udGFpbjogNzsgLy8gTGluZUJveENvbnRhaW4KKyAgICB1bnNpZ25lZCBsaW5l
Qm94Q29udGFpbjogNzsgLy8gTGluZUJveENvbnRhaW4KICAgICAvLyBDU1MgSW1hZ2UgVmFsdWVz
IExldmVsIDMKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHVuc2lnbmVk
IG1faW1hZ2VPcmllbnRhdGlvbiA6IDQ7IC8vIEltYWdlT3JpZW50YXRpb25FbnVtCisgICAgdW5z
aWduZWQgaW1hZ2VPcmllbnRhdGlvbiA6IDQ7IC8vIEltYWdlT3JpZW50YXRpb25FbnVtCiAjZW5k
aWYKLSAgICB1bnNpZ25lZCBtX2ltYWdlUmVuZGVyaW5nIDogMzsgLy8gRUltYWdlUmVuZGVyaW5n
Ci0gICAgdW5zaWduZWQgbV9saW5lU25hcCA6IDI7IC8vIExpbmVTbmFwCi0gICAgdW5zaWduZWQg
bV9saW5lQWxpZ24gOiAxOyAvLyBMaW5lQWxpZ24KKyAgICB1bnNpZ25lZCBpbWFnZVJlbmRlcmlu
ZyA6IDM7IC8vIEVJbWFnZVJlbmRlcmluZworICAgIHVuc2lnbmVkIGxpbmVTbmFwIDogMjsgLy8g
TGluZVNuYXAKKyAgICB1bnNpZ25lZCBsaW5lQWxpZ24gOiAxOyAvLyBMaW5lQWxpZ24KICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHVuc2lnbmVkIHVzZVRv
dWNoT3ZlcmZsb3dTY3JvbGxpbmc6IDE7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCi0gICAgdW5zaWduZWQgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgOiAxOyAvLyBJ
bWFnZVJlc29sdXRpb25Tb3VyY2UKLSAgICB1bnNpZ25lZCBtX2ltYWdlUmVzb2x1dGlvblNuYXAg
OiAxOyAvLyBJbWFnZVJlc29sdXRpb25TbmFwCisgICAgdW5zaWduZWQgaW1hZ2VSZXNvbHV0aW9u
U291cmNlIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU291cmNlCisgICAgdW5zaWduZWQgaW1hZ2VS
ZXNvbHV0aW9uU25hcCA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNuYXAKICNlbmRpZgogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCi0gICAgdW5zaWduZWQgbV90ZXh0QWxpZ25MYXN0IDogMzsgLy8gVGV4
dEFsaWduTGFzdAotICAgIHVuc2lnbmVkIG1fdGV4dEp1c3RpZnkgOiAyOyAvLyBUZXh0SnVzdGlm
eQotI2VuZGlmIC8vIENTUzNfVEVYVAotICAgIHVuc2lnbmVkIG1fdGV4dERlY29yYXRpb25Ta2lw
IDogNTsgLy8gVGV4dERlY29yYXRpb25Ta2lwCi0gICAgdW5zaWduZWQgbV90ZXh0VW5kZXJsaW5l
UG9zaXRpb24gOiAzOyAvLyBUZXh0VW5kZXJsaW5lUG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX3J1
YnlQb3NpdGlvbiA6IDI7IC8vIFJ1YnlQb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fdGV4dFpvb206
IDE7IC8vIFRleHRab29tCisgICAgdW5zaWduZWQgdGV4dEFsaWduTGFzdCA6IDM7IC8vIFRleHRB
bGlnbkxhc3QKKyAgICB1bnNpZ25lZCB0ZXh0SnVzdGlmeSA6IDI7IC8vIFRleHRKdXN0aWZ5Cisj
ZW5kaWYKKyAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvblNraXAgOiA1OyAvLyBUZXh0RGVjb3Jh
dGlvblNraXAKKyAgICB1bnNpZ25lZCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24gOiAzOyAvLyBUZXh0
VW5kZXJsaW5lUG9zaXRpb24KKyAgICB1bnNpZ25lZCBydWJ5UG9zaXRpb24gOiAyOyAvLyBSdWJ5
UG9zaXRpb24KKyAgICB1bnNpZ25lZCB0ZXh0Wm9vbTogMTsgLy8gVGV4dFpvb20KIAogI2lmIFBM
QVRGT1JNKElPUykKICAgICB1bnNpZ25lZCB0b3VjaENhbGxvdXRFbmFibGVkIDogMTsKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdHJhaWxpbmdXb3JkIDogMTsKICNl
bmRpZgogCi0gICAgdW5zaWduZWQgbV9oYW5naW5nUHVuY3R1YXRpb24gOiA0OworICAgIHVuc2ln
bmVkIGhhbmdpbmdQdW5jdHVhdGlvbiA6IDQ7CiAKICAgICBBdG9taWNTdHJpbmcgaHlwaGVuYXRp
b25TdHJpbmc7CiAgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEJlZm9yZTsKQEAgLTE0NCwxNSAr
MTQ0LDE1IEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJpbmcgdGV4dEVtcGhhc2lzQ3VzdG9tTWFy
azsKICAgICBSZWZQdHI8UXVvdGVzRGF0YT4gcXVvdGVzOwogCi0gICAgQXRvbWljU3RyaW5nIG1f
bGluZUdyaWQ7Ci0gICAgdW5zaWduZWQgbV90YWJTaXplOworICAgIEF0b21pY1N0cmluZyBsaW5l
R3JpZDsKKyAgICB1bnNpZ25lZCB0YWJTaXplOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKICAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVBZGp1c3Q7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICBmbG9hdCBtX2ltYWdlUmVzb2x1dGlv
bjsKKyAgICBmbG9hdCBpbWFnZVJlc29sdXRpb247CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNGE3ZjdlNjg3MDE5OGNjMDlm
MjQ2YjA2ZDc0YzE5OWJjODE1Mjc4Ny4uNjUxNDIwMDk5Zjk3ODAwNTJhYmUwZTQyNjE0YmQwZDQz
N2E0ZmZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywxNzQgKzM3
LDE3NCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKLSAgICA6IG1fb3BhY2l0eShSZW5kZXJTdHls
ZTo6aW5pdGlhbE9wYWNpdHkoKSkKLSAgICAsIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSkKLSAgICAsIG1fYXNwZWN0
UmF0aW9OdW1lcmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigp
KQotICAgICwgbV9wZXJzcGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlKCkp
Ci0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWChSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0
aXZlT3JpZ2luWCgpKQotICAgICwgbV9wZXJzcGVjdGl2ZU9yaWdpblkoUmVuZGVyU3R5bGU6Omlu
aXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkoKSkKKyAgICA6IG9wYWNpdHkoUmVuZGVyU3R5bGU6Omlu
aXRpYWxPcGFjaXR5KCkpCisgICAgLCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxl
Ojppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKQorICAgICwgYXNwZWN0UmF0aW9OdW1l
cmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKQorICAgICwg
cGVyc3BlY3RpdmUoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZSgpKQorICAgICwgcGVy
c3BlY3RpdmVPcmlnaW5YKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkp
CisgICAgLCBwZXJzcGVjdGl2ZU9yaWdpblkoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2
ZU9yaWdpblkoKSkKICAgICAsIGxpbmVDbGFtcChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVDbGFt
cCgpKQotICAgICwgbV9pbml0aWFsTGV0dGVyKFJlbmRlclN0eWxlOjppbml0aWFsSW5pdGlhbExl
dHRlcigpKQotICAgICwgbV9kZXByZWNhdGVkRmxleGlibGVCb3goU3R5bGVEZXByZWNhdGVkRmxl
eGlibGVCb3hEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fZmxleGlibGVCb3goU3R5bGVGbGV4aWJs
ZUJveERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9tYXJxdWVlKFN0eWxlTWFycXVlZURhdGE6OmNy
ZWF0ZSgpKQotICAgICwgbV9tdWx0aUNvbChTdHlsZU11bHRpQ29sRGF0YTo6Y3JlYXRlKCkpCi0g
ICAgLCBtX3RyYW5zZm9ybShTdHlsZVRyYW5zZm9ybURhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9m
aWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGluaXRpYWxMZXR0ZXIoUmVu
ZGVyU3R5bGU6OmluaXRpYWxJbml0aWFsTGV0dGVyKCkpCisgICAgLCBkZXByZWNhdGVkRmxleGli
bGVCb3goU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGZs
ZXhpYmxlQm94KFN0eWxlRmxleGlibGVCb3hEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1hcnF1ZWUo
U3R5bGVNYXJxdWVlRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtdWx0aUNvbChTdHlsZU11bHRpQ29s
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCB0cmFuc2Zvcm0oU3R5bGVUcmFuc2Zvcm1EYXRhOjpjcmVh
dGUoKSkKKyAgICAsIGZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0ZSgpKQogI2lmIEVOQUJM
RShGSUxURVJTX0xFVkVMXzIpCi0gICAgLCBtX2JhY2tkcm9wRmlsdGVyKFN0eWxlRmlsdGVyRGF0
YTo6Y3JlYXRlKCkpCisgICAgLCBiYWNrZHJvcEZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0
ZSgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAsIG1fZ3JpZChT
dHlsZUdyaWREYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fZ3JpZEl0ZW0oU3R5bGVHcmlkSXRlbURh
dGE6OmNyZWF0ZSgpKQorICAgICwgZ3JpZChTdHlsZUdyaWREYXRhOjpjcmVhdGUoKSkKKyAgICAs
IGdyaWRJdGVtKFN0eWxlR3JpZEl0ZW1EYXRhOjpjcmVhdGUoKSkKICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0gICAgLCBtX3Njcm9sbFNuYXBQb3J0KFN0eWxlU2Nyb2xsU25h
cFBvcnQ6OmNyZWF0ZSgpKQotICAgICwgbV9zY3JvbGxTbmFwQXJlYShTdHlsZVNjcm9sbFNuYXBB
cmVhOjpjcmVhdGUoKSkKKyAgICAsIHNjcm9sbFNuYXBQb3J0KFN0eWxlU2Nyb2xsU25hcFBvcnQ6
OmNyZWF0ZSgpKQorICAgICwgc2Nyb2xsU25hcEFyZWEoU3R5bGVTY3JvbGxTbmFwQXJlYTo6Y3Jl
YXRlKCkpCiAjZW5kaWYKLSAgICAsIG1fd2lsbENoYW5nZShSZW5kZXJTdHlsZTo6aW5pdGlhbFdp
bGxDaGFuZ2UoKSkKLSAgICAsIG1fbWFzayhGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcikpCi0gICAg
LCBtX29iamVjdFBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsT2JqZWN0UG9zaXRpb24oKSkK
LSAgICAsIG1fc2hhcGVPdXRzaWRlKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVPdXRzaWRlKCkp
Ci0gICAgLCBtX3NoYXBlTWFyZ2luKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVNYXJnaW4oKSkK
LSAgICAsIG1fc2hhcGVJbWFnZVRocmVzaG9sZChSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlSW1h
Z2VUaHJlc2hvbGQoKSkKLSAgICAsIG1fY2xpcFBhdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxDbGlw
UGF0aCgpKQotICAgICwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhY2tncm91bmRDb2xvcigpKQotICAgICwgbV9vcmRlcihSZW5kZXJTdHlsZTo6aW5p
dGlhbE9yZGVyKCkpCi0gICAgLCBtX2Zsb3dUaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93
VGhyZWFkKCkpCi0gICAgLCBtX3JlZ2lvblRocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lv
blRocmVhZCgpKQotICAgICwgbV9hbGlnbkNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb250
ZW50QWxpZ25tZW50KCkpCi0gICAgLCBtX2FsaWduSXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxE
ZWZhdWx0QWxpZ25tZW50KCkpCi0gICAgLCBtX2FsaWduU2VsZihSZW5kZXJTdHlsZTo6aW5pdGlh
bFNlbGZBbGlnbm1lbnQoKSkKLSAgICAsIG1fanVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxDb250ZW50QWxpZ25tZW50KCkpCi0gICAgLCBtX2p1c3RpZnlJdGVtcyhSZW5kZXJTdHls
ZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKLSAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5
bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCB3aWxsQ2hhbmdlKFJlbmRlclN0eWxl
Ojppbml0aWFsV2lsbENoYW5nZSgpKQorICAgICwgbWFzayhGaWxsTGF5ZXIoTWFza0ZpbGxMYXll
cikpCisgICAgLCBvYmplY3RQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0
aW9uKCkpCisgICAgLCBzaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZU91dHNp
ZGUoKSkKKyAgICAsIHNoYXBlTWFyZ2luKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVNYXJnaW4o
KSkKKyAgICAsIHNoYXBlSW1hZ2VUaHJlc2hvbGQoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZUlt
YWdlVGhyZXNob2xkKCkpCisgICAgLCBjbGlwUGF0aChSZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQ
YXRoKCkpCisgICAgLCB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihSZW5kZXJTdHlsZTo6aW5p
dGlhbEJhY2tncm91bmRDb2xvcigpKQorICAgICwgb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxP
cmRlcigpKQorICAgICwgZmxvd1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQo
KSkKKyAgICAsIHJlZ2lvblRocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZCgp
KQorICAgICwgYWxpZ25Db250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFsaWdubWVu
dCgpKQorICAgICwgYWxpZ25JdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbERlZmF1bHRBbGlnbm1l
bnQoKSkKKyAgICAsIGFsaWduU2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQo
KSkKKyAgICAsIGp1c3RpZnlDb250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFsaWdu
bWVudCgpKQorICAgICwganVzdGlmeUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdu
bWVudCgpKQorICAgICwganVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25t
ZW50KCkpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIG1fdG91Y2hBY3Rpb24oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVG91Y2hBY3Rpb24oKSkpCisg
ICAgLCB0b3VjaEFjdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRp
YWxUb3VjaEFjdGlvbigpKSkKICNlbmRpZgotICAgICwgbV9yZWdpb25GcmFnbWVudChSZW5kZXJT
dHlsZTo6aW5pdGlhbFJlZ2lvbkZyYWdtZW50KCkpCi0gICAgLCBtX3BhZ2VTaXplVHlwZShQQUdF
X1NJWkVfQVVUTykKLSAgICAsIG1fdHJhbnNmb3JtU3R5bGUzRChSZW5kZXJTdHlsZTo6aW5pdGlh
bFRyYW5zZm9ybVN0eWxlM0QoKSkKLSAgICAsIG1fYmFja2ZhY2VWaXNpYmlsaXR5KFJlbmRlclN0
eWxlOjppbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KCkpCisgICAgLCByZWdpb25GcmFnbWVudChS
ZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbkZyYWdtZW50KCkpCisgICAgLCBwYWdlU2l6ZVR5cGUo
UEFHRV9TSVpFX0FVVE8pCisgICAgLCB0cmFuc2Zvcm1TdHlsZTNEKFJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNmb3JtU3R5bGUzRCgpKQorICAgICwgYmFja2ZhY2VWaXNpYmlsaXR5KFJlbmRlclN0
eWxlOjppbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgLCB1c2VyRHJhZyhSZW5kZXJT
dHlsZTo6aW5pdGlhbFVzZXJEcmFnKCkpCiAgICAgLCB0ZXh0T3ZlcmZsb3coUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0T3ZlcmZsb3coKSkKICAgICAsIG1hcmdpbkJlZm9yZUNvbGxhcHNlKE1DT0xM
QVBTRSkKICAgICAsIG1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKQotICAgICwgbV9hcHBl
YXJhbmNlKFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKQotICAgICwgbV9ib3JkZXJG
aXQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQoKSkKLSAgICAsIG1fdGV4dENvbWJpbmUo
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgpKQotICAgICwgbV90ZXh0RGVjb3JhdGlv
blN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpKQotICAgICwg
bV9hc3BlY3RSYXRpb1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb1R5cGUoKSkK
KyAgICAsIGFwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlKCkpCisgICAg
LCBib3JkZXJGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQoKSkKKyAgICAsIHRleHRD
b21iaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dENvbWJpbmUoKSkKKyAgICAsIHRleHREZWNv
cmF0aW9uU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkpCisg
ICAgLCBhc3BlY3RSYXRpb1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb1R5cGUo
KSkKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICwgbV9lZmZlY3RpdmVCbGVuZE1v
ZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKLSAgICAsIG1faXNvbGF0aW9uKFJl
bmRlclN0eWxlOjppbml0aWFsSXNvbGF0aW9uKCkpCisgICAgLCBlZmZlY3RpdmVCbGVuZE1vZGUo
UmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKKyAgICAsIGlzb2xhdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbElzb2xhdGlvbigpKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
LSAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVy
U3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1dHRvblN0eWxlKCkpKQotICAgICwgbV9hcHBsZVBheUJ1
dHRvblR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBwbGVQ
YXlCdXR0b25UeXBlKCkpKQorICAgICwgYXBwbGVQYXlCdXR0b25TdHlsZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1dHRvblN0eWxlKCkpKQorICAg
ICwgYXBwbGVQYXlCdXR0b25UeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6
aW5pdGlhbEFwcGxlUGF5QnV0dG9uVHlwZSgpKSkKICNlbmRpZgotICAgICwgbV9vYmplY3RGaXQo
UmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RGaXQoKSkKLSAgICAsIG1fYnJlYWtCZWZvcmUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4oKSkKLSAgICAsIG1fYnJlYWtBZnRlcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJyZWFrQmV0d2VlbigpKQotICAgICwgbV9icmVha0luc2lkZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJyZWFrSW5zaWRlKCkpCi0gICAgLCBtX3Jlc2l6ZShSZW5kZXJTdHls
ZTo6aW5pdGlhbFJlc2l6ZSgpKQotICAgICwgbV9oYXNBdHRyQ29udGVudChmYWxzZSkKLSAgICAs
IG1faXNQbGFjZWhvbGRlclN0eWxlKGZhbHNlKQorICAgICwgb2JqZWN0Rml0KFJlbmRlclN0eWxl
Ojppbml0aWFsT2JqZWN0Rml0KCkpCisgICAgLCBicmVha0JlZm9yZShSZW5kZXJTdHlsZTo6aW5p
dGlhbEJyZWFrQmV0d2VlbigpKQorICAgICwgYnJlYWtBZnRlcihSZW5kZXJTdHlsZTo6aW5pdGlh
bEJyZWFrQmV0d2VlbigpKQorICAgICwgYnJlYWtJbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxC
cmVha0luc2lkZSgpKQorICAgICwgcmVzaXplKFJlbmRlclN0eWxlOjppbml0aWFsUmVzaXplKCkp
CisgICAgLCBoYXNBdHRyQ29udGVudChmYWxzZSkKKyAgICAsIGlzUGxhY2Vob2xkZXJTdHlsZShm
YWxzZSkKIHsKLSAgICBtX21hc2tCb3hJbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKKyAgICBtYXNr
Qm94SW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7CiB9CiAKIGlubGluZSBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE+KCkKLSAgICAsIG1fb3BhY2l0eShvLm1fb3BhY2l0eSkKLSAgICAsIG1fYXNwZWN0UmF0aW9E
ZW5vbWluYXRvcihvLm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcikKLSAgICAsIG1fYXNwZWN0UmF0
aW9OdW1lcmF0b3Ioby5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yKQotICAgICwgbV9wZXJzcGVjdGl2
ZShvLm1fcGVyc3BlY3RpdmUpCi0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWChvLm1fcGVyc3Bl
Y3RpdmVPcmlnaW5YKQotICAgICwgbV9wZXJzcGVjdGl2ZU9yaWdpblkoby5tX3BlcnNwZWN0aXZl
T3JpZ2luWSkKKyAgICAsIG9wYWNpdHkoby5vcGFjaXR5KQorICAgICwgYXNwZWN0UmF0aW9EZW5v
bWluYXRvcihvLmFzcGVjdFJhdGlvRGVub21pbmF0b3IpCisgICAgLCBhc3BlY3RSYXRpb051bWVy
YXRvcihvLmFzcGVjdFJhdGlvTnVtZXJhdG9yKQorICAgICwgcGVyc3BlY3RpdmUoby5wZXJzcGVj
dGl2ZSkKKyAgICAsIHBlcnNwZWN0aXZlT3JpZ2luWChvLnBlcnNwZWN0aXZlT3JpZ2luWCkKKyAg
ICAsIHBlcnNwZWN0aXZlT3JpZ2luWShvLnBlcnNwZWN0aXZlT3JpZ2luWSkKICAgICAsIGxpbmVD
bGFtcChvLmxpbmVDbGFtcCkKLSAgICAsIG1faW5pdGlhbExldHRlcihvLm1faW5pdGlhbExldHRl
cikKLSAgICAsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94KG8ubV9kZXByZWNhdGVkRmxleGlibGVC
b3gpCi0gICAgLCBtX2ZsZXhpYmxlQm94KG8ubV9mbGV4aWJsZUJveCkKLSAgICAsIG1fbWFycXVl
ZShvLm1fbWFycXVlZSkKLSAgICAsIG1fbXVsdGlDb2woby5tX211bHRpQ29sKQotICAgICwgbV90
cmFuc2Zvcm0oby5tX3RyYW5zZm9ybSkKLSAgICAsIG1fZmlsdGVyKG8ubV9maWx0ZXIpCisgICAg
LCBpbml0aWFsTGV0dGVyKG8uaW5pdGlhbExldHRlcikKKyAgICAsIGRlcHJlY2F0ZWRGbGV4aWJs
ZUJveChvLmRlcHJlY2F0ZWRGbGV4aWJsZUJveCkKKyAgICAsIGZsZXhpYmxlQm94KG8uZmxleGli
bGVCb3gpCisgICAgLCBtYXJxdWVlKG8ubWFycXVlZSkKKyAgICAsIG11bHRpQ29sKG8ubXVsdGlD
b2wpCisgICAgLCB0cmFuc2Zvcm0oby50cmFuc2Zvcm0pCisgICAgLCBmaWx0ZXIoby5maWx0ZXIp
CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAsIG1fYmFja2Ryb3BGaWx0ZXIoby5t
X2JhY2tkcm9wRmlsdGVyKQorICAgICwgYmFja2Ryb3BGaWx0ZXIoby5iYWNrZHJvcEZpbHRlcikK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgLCBtX2dyaWQoby5tX2dy
aWQpCi0gICAgLCBtX2dyaWRJdGVtKG8ubV9ncmlkSXRlbSkKKyAgICAsIGdyaWQoby5ncmlkKQor
ICAgICwgZ3JpZEl0ZW0oby5ncmlkSXRlbSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgLCBtX3Njcm9sbFNuYXBQb3J0KG8ubV9zY3JvbGxTbmFwUG9ydCkKLSAgICAs
IG1fc2Nyb2xsU25hcEFyZWEoby5tX3Njcm9sbFNuYXBBcmVhKQorICAgICwgc2Nyb2xsU25hcFBv
cnQoby5zY3JvbGxTbmFwUG9ydCkKKyAgICAsIHNjcm9sbFNuYXBBcmVhKG8uc2Nyb2xsU25hcEFy
ZWEpCiAjZW5kaWYKLSAgICAsIG1fY29udGVudChvLm1fY29udGVudCA/IG8ubV9jb250ZW50LT5j
bG9uZSgpIDogbnVsbHB0cikKLSAgICAsIG1fY291bnRlckRpcmVjdGl2ZXMoby5tX2NvdW50ZXJE
aXJlY3RpdmVzID8gY2xvbmUoKm8ubV9jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQotICAg
ICwgbV9hbHRUZXh0KG8ubV9hbHRUZXh0KQotICAgICwgbV9ib3hTaGFkb3coby5tX2JveFNoYWRv
dyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9ib3hTaGFkb3cpIDogbnVsbHB0
cikKLSAgICAsIG1fd2lsbENoYW5nZShvLm1fd2lsbENoYW5nZSkKLSAgICAsIG1fYm94UmVmbGVj
dChvLm1fYm94UmVmbGVjdCkKLSAgICAsIG1fYW5pbWF0aW9ucyhvLm1fYW5pbWF0aW9ucyA/IHN0
ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8ubV9hbmltYXRpb25zKSA6IG51bGxwdHIp
Ci0gICAgLCBtX3RyYW5zaXRpb25zKG8ubV90cmFuc2l0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8
QW5pbWF0aW9uTGlzdD4oKm8ubV90cmFuc2l0aW9ucykgOiBudWxscHRyKQotICAgICwgbV9tYXNr
KG8ubV9tYXNrKQotICAgICwgbV9tYXNrQm94SW1hZ2Uoby5tX21hc2tCb3hJbWFnZSkKLSAgICAs
IG1fcGFnZVNpemUoby5tX3BhZ2VTaXplKQotICAgICwgbV9vYmplY3RQb3NpdGlvbihvLm1fb2Jq
ZWN0UG9zaXRpb24pCi0gICAgLCBtX3NoYXBlT3V0c2lkZShvLm1fc2hhcGVPdXRzaWRlKQotICAg
ICwgbV9zaGFwZU1hcmdpbihvLm1fc2hhcGVNYXJnaW4pCi0gICAgLCBtX3NoYXBlSW1hZ2VUaHJl
c2hvbGQoby5tX3NoYXBlSW1hZ2VUaHJlc2hvbGQpCi0gICAgLCBtX2NsaXBQYXRoKG8ubV9jbGlw
UGF0aCkKLSAgICAsIG1fdGV4dERlY29yYXRpb25Db2xvcihvLm1fdGV4dERlY29yYXRpb25Db2xv
cikKLSAgICAsIG1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKG8ubV92aXNpdGVkTGlu
a1RleHREZWNvcmF0aW9uQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9y
KG8ubV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtPdXRs
aW5lQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKQotICAgICwgbV92aXNpdGVkTGlu
a0JvcmRlckxlZnRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IpCi0gICAgLCBt
X3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENv
bG9yKQotICAgICwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKG8ubV92aXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yKQotICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8ubV92
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKQotICAgICwgbV9vcmRlcihvLm1fb3JkZXIpCi0g
ICAgLCBtX2Zsb3dUaHJlYWQoby5tX2Zsb3dUaHJlYWQpCi0gICAgLCBtX3JlZ2lvblRocmVhZChv
Lm1fcmVnaW9uVGhyZWFkKQotICAgICwgbV9hbGlnbkNvbnRlbnQoby5tX2FsaWduQ29udGVudCkK
LSAgICAsIG1fYWxpZ25JdGVtcyhvLm1fYWxpZ25JdGVtcykKLSAgICAsIG1fYWxpZ25TZWxmKG8u
bV9hbGlnblNlbGYpCi0gICAgLCBtX2p1c3RpZnlDb250ZW50KG8ubV9qdXN0aWZ5Q29udGVudCkK
LSAgICAsIG1fanVzdGlmeUl0ZW1zKG8ubV9qdXN0aWZ5SXRlbXMpCi0gICAgLCBtX2p1c3RpZnlT
ZWxmKG8ubV9qdXN0aWZ5U2VsZikKKyAgICAsIGNvbnRlbnQoby5jb250ZW50ID8gby5jb250ZW50
LT5jbG9uZSgpIDogbnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRp
cmVjdGl2ZXMgPyBjbG9uZSgqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQorICAgICwg
YWx0VGV4dChvLmFsdFRleHQpCisgICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQorICAgICwgd2ls
bENoYW5nZShvLndpbGxDaGFuZ2UpCisgICAgLCBib3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKKyAg
ICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25M
aXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCisgICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5z
aXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykg
OiBudWxscHRyKQorICAgICwgbWFzayhvLm1hc2spCisgICAgLCBtYXNrQm94SW1hZ2Uoby5tYXNr
Qm94SW1hZ2UpCisgICAgLCBwYWdlU2l6ZShvLnBhZ2VTaXplKQorICAgICwgb2JqZWN0UG9zaXRp
b24oby5vYmplY3RQb3NpdGlvbikKKyAgICAsIHNoYXBlT3V0c2lkZShvLnNoYXBlT3V0c2lkZSkK
KyAgICAsIHNoYXBlTWFyZ2luKG8uc2hhcGVNYXJnaW4pCisgICAgLCBzaGFwZUltYWdlVGhyZXNo
b2xkKG8uc2hhcGVJbWFnZVRocmVzaG9sZCkKKyAgICAsIGNsaXBQYXRoKG8uY2xpcFBhdGgpCisg
ICAgLCB0ZXh0RGVjb3JhdGlvbkNvbG9yKG8udGV4dERlY29yYXRpb25Db2xvcikKKyAgICAsIHZp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcihvLnZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25D
b2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKG8udmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua091dGxpbmVDb2xvcihvLnZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yKQorICAgICwgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3Ioby52aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihv
LnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3Ioby52aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKQorICAgICwgdmlzaXRlZExpbmtCb3Jk
ZXJCb3R0b21Db2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCisgICAgLCBvcmRl
cihvLm9yZGVyKQorICAgICwgZmxvd1RocmVhZChvLmZsb3dUaHJlYWQpCisgICAgLCByZWdpb25U
aHJlYWQoby5yZWdpb25UaHJlYWQpCisgICAgLCBhbGlnbkNvbnRlbnQoby5hbGlnbkNvbnRlbnQp
CisgICAgLCBhbGlnbkl0ZW1zKG8uYWxpZ25JdGVtcykKKyAgICAsIGFsaWduU2VsZihvLmFsaWdu
U2VsZikKKyAgICAsIGp1c3RpZnlDb250ZW50KG8uanVzdGlmeUNvbnRlbnQpCisgICAgLCBqdXN0
aWZ5SXRlbXMoby5qdXN0aWZ5SXRlbXMpCisgICAgLCBqdXN0aWZ5U2VsZihvLmp1c3RpZnlTZWxm
KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgLCBtX3RvdWNoQWN0aW9uKG8ubV90b3Vj
aEFjdGlvbikKKyAgICAsIHRvdWNoQWN0aW9uKG8udG91Y2hBY3Rpb24pCiAjZW5kaWYKLSAgICAs
IG1fcmVnaW9uRnJhZ21lbnQoby5tX3JlZ2lvbkZyYWdtZW50KQotICAgICwgbV9wYWdlU2l6ZVR5
cGUoby5tX3BhZ2VTaXplVHlwZSkKLSAgICAsIG1fdHJhbnNmb3JtU3R5bGUzRChvLm1fdHJhbnNm
b3JtU3R5bGUzRCkKLSAgICAsIG1fYmFja2ZhY2VWaXNpYmlsaXR5KG8ubV9iYWNrZmFjZVZpc2li
aWxpdHkpCisgICAgLCByZWdpb25GcmFnbWVudChvLnJlZ2lvbkZyYWdtZW50KQorICAgICwgcGFn
ZVNpemVUeXBlKG8ucGFnZVNpemVUeXBlKQorICAgICwgdHJhbnNmb3JtU3R5bGUzRChvLnRyYW5z
Zm9ybVN0eWxlM0QpCisgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkoby5iYWNrZmFjZVZpc2liaWxp
dHkpCiAgICAgLCB1c2VyRHJhZyhvLnVzZXJEcmFnKQogICAgICwgdGV4dE92ZXJmbG93KG8udGV4
dE92ZXJmbG93KQogICAgICwgbWFyZ2luQmVmb3JlQ29sbGFwc2Uoby5tYXJnaW5CZWZvcmVDb2xs
YXBzZSkKICAgICAsIG1hcmdpbkFmdGVyQ29sbGFwc2Uoby5tYXJnaW5BZnRlckNvbGxhcHNlKQot
ICAgICwgbV9hcHBlYXJhbmNlKG8ubV9hcHBlYXJhbmNlKQotICAgICwgbV9ib3JkZXJGaXQoby5t
X2JvcmRlckZpdCkKLSAgICAsIG1fdGV4dENvbWJpbmUoby5tX3RleHRDb21iaW5lKQotICAgICwg
bV90ZXh0RGVjb3JhdGlvblN0eWxlKG8ubV90ZXh0RGVjb3JhdGlvblN0eWxlKQotICAgICwgbV9h
c3BlY3RSYXRpb1R5cGUoby5tX2FzcGVjdFJhdGlvVHlwZSkKKyAgICAsIGFwcGVhcmFuY2Uoby5h
cHBlYXJhbmNlKQorICAgICwgYm9yZGVyRml0KG8uYm9yZGVyRml0KQorICAgICwgdGV4dENvbWJp
bmUoby50ZXh0Q29tYmluZSkKKyAgICAsIHRleHREZWNvcmF0aW9uU3R5bGUoby50ZXh0RGVjb3Jh
dGlvblN0eWxlKQorICAgICwgYXNwZWN0UmF0aW9UeXBlKG8uYXNwZWN0UmF0aW9UeXBlKQogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShvLm1f
ZWZmZWN0aXZlQmxlbmRNb2RlKQotICAgICwgbV9pc29sYXRpb24oby5tX2lzb2xhdGlvbikKKyAg
ICAsIGVmZmVjdGl2ZUJsZW5kTW9kZShvLmVmZmVjdGl2ZUJsZW5kTW9kZSkKKyAgICAsIGlzb2xh
dGlvbihvLmlzb2xhdGlvbikKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBt
X2FwcGxlUGF5QnV0dG9uU3R5bGUoby5tX2FwcGxlUGF5QnV0dG9uU3R5bGUpCi0gICAgLCBtX2Fw
cGxlUGF5QnV0dG9uVHlwZShvLm1fYXBwbGVQYXlCdXR0b25UeXBlKQorICAgICwgYXBwbGVQYXlC
dXR0b25TdHlsZShvLmFwcGxlUGF5QnV0dG9uU3R5bGUpCisgICAgLCBhcHBsZVBheUJ1dHRvblR5
cGUoby5hcHBsZVBheUJ1dHRvblR5cGUpCiAjZW5kaWYKLSAgICAsIG1fb2JqZWN0Rml0KG8ubV9v
YmplY3RGaXQpCi0gICAgLCBtX2JyZWFrQmVmb3JlKG8ubV9icmVha0JlZm9yZSkKLSAgICAsIG1f
YnJlYWtBZnRlcihvLm1fYnJlYWtBZnRlcikKLSAgICAsIG1fYnJlYWtJbnNpZGUoby5tX2JyZWFr
SW5zaWRlKQotICAgICwgbV9yZXNpemUoby5tX3Jlc2l6ZSkKLSAgICAsIG1faGFzQXR0ckNvbnRl
bnQoby5tX2hhc0F0dHJDb250ZW50KQotICAgICwgbV9pc1BsYWNlaG9sZGVyU3R5bGUoby5tX2lz
UGxhY2Vob2xkZXJTdHlsZSkKKyAgICAsIG9iamVjdEZpdChvLm9iamVjdEZpdCkKKyAgICAsIGJy
ZWFrQmVmb3JlKG8uYnJlYWtCZWZvcmUpCisgICAgLCBicmVha0FmdGVyKG8uYnJlYWtBZnRlcikK
KyAgICAsIGJyZWFrSW5zaWRlKG8uYnJlYWtJbnNpZGUpCisgICAgLCByZXNpemUoby5yZXNpemUp
CisgICAgLCBoYXNBdHRyQ29udGVudChvLmhhc0F0dHJDb250ZW50KQorICAgICwgaXNQbGFjZWhv
bGRlclN0eWxlKG8uaXNQbGFjZWhvbGRlclN0eWxlKQogewogfQogCkBAIC0yMTksMTIzICsyMTks
MTIzIEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6On5TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhKCkKIAogYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3Bh
Y2l0eSA9PSBvLm1fb3BhY2l0eQotICAgICAgICAmJiBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3Ig
PT0gby5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3IKLSAgICAgICAgJiYgbV9hc3BlY3RSYXRpb051
bWVyYXRvciA9PSBvLm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IKLSAgICAgICAgJiYgbV9wZXJzcGVj
dGl2ZSA9PSBvLm1fcGVyc3BlY3RpdmUKLSAgICAgICAgJiYgbV9wZXJzcGVjdGl2ZU9yaWdpblgg
PT0gby5tX3BlcnNwZWN0aXZlT3JpZ2luWAotICAgICAgICAmJiBtX3BlcnNwZWN0aXZlT3JpZ2lu
WSA9PSBvLm1fcGVyc3BlY3RpdmVPcmlnaW5ZCisgICAgcmV0dXJuIG9wYWNpdHkgPT0gby5vcGFj
aXR5CisgICAgICAgICYmIGFzcGVjdFJhdGlvRGVub21pbmF0b3IgPT0gby5hc3BlY3RSYXRpb0Rl
bm9taW5hdG9yCisgICAgICAgICYmIGFzcGVjdFJhdGlvTnVtZXJhdG9yID09IG8uYXNwZWN0UmF0
aW9OdW1lcmF0b3IKKyAgICAgICAgJiYgcGVyc3BlY3RpdmUgPT0gby5wZXJzcGVjdGl2ZQorICAg
ICAgICAmJiBwZXJzcGVjdGl2ZU9yaWdpblggPT0gby5wZXJzcGVjdGl2ZU9yaWdpblgKKyAgICAg
ICAgJiYgcGVyc3BlY3RpdmVPcmlnaW5ZID09IG8ucGVyc3BlY3RpdmVPcmlnaW5ZCiAgICAgICAg
ICYmIGxpbmVDbGFtcCA9PSBvLmxpbmVDbGFtcAotICAgICAgICAmJiBtX2luaXRpYWxMZXR0ZXIg
PT0gby5tX2luaXRpYWxMZXR0ZXIKKyAgICAgICAgJiYgaW5pdGlhbExldHRlciA9PSBvLmluaXRp
YWxMZXR0ZXIKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgICYmIG1fZGFz
aGJvYXJkUmVnaW9ucyA9PSBvLm1fZGFzaGJvYXJkUmVnaW9ucworICAgICAgICAmJiBkYXNoYm9h
cmRSZWdpb25zID09IG8uZGFzaGJvYXJkUmVnaW9ucwogI2VuZGlmCi0gICAgICAgICYmIG1fZGVw
cmVjYXRlZEZsZXhpYmxlQm94ID09IG8ubV9kZXByZWNhdGVkRmxleGlibGVCb3gKLSAgICAgICAg
JiYgbV9mbGV4aWJsZUJveCA9PSBvLm1fZmxleGlibGVCb3gKLSAgICAgICAgJiYgbV9tYXJxdWVl
ID09IG8ubV9tYXJxdWVlCi0gICAgICAgICYmIG1fbXVsdGlDb2wgPT0gby5tX211bHRpQ29sCi0g
ICAgICAgICYmIG1fdHJhbnNmb3JtID09IG8ubV90cmFuc2Zvcm0KLSAgICAgICAgJiYgbV9maWx0
ZXIgPT0gby5tX2ZpbHRlcgorICAgICAgICAmJiBkZXByZWNhdGVkRmxleGlibGVCb3ggPT0gby5k
ZXByZWNhdGVkRmxleGlibGVCb3gKKyAgICAgICAgJiYgZmxleGlibGVCb3ggPT0gby5mbGV4aWJs
ZUJveAorICAgICAgICAmJiBtYXJxdWVlID09IG8ubWFycXVlZQorICAgICAgICAmJiBtdWx0aUNv
bCA9PSBvLm11bHRpQ29sCisgICAgICAgICYmIHRyYW5zZm9ybSA9PSBvLnRyYW5zZm9ybQorICAg
ICAgICAmJiBmaWx0ZXIgPT0gby5maWx0ZXIKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQot
ICAgICAgICAmJiBtX2JhY2tkcm9wRmlsdGVyID09IG8ubV9iYWNrZHJvcEZpbHRlcgorICAgICAg
ICAmJiBiYWNrZHJvcEZpbHRlciA9PSBvLmJhY2tkcm9wRmlsdGVyCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICAmJiBtX2dyaWQgPT0gby5tX2dyaWQKLSAgICAg
ICAgJiYgbV9ncmlkSXRlbSA9PSBvLm1fZ3JpZEl0ZW0KKyAgICAgICAgJiYgZ3JpZCA9PSBvLmdy
aWQKKyAgICAgICAgJiYgZ3JpZEl0ZW0gPT0gby5ncmlkSXRlbQogI2VuZGlmCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICAgICAgJiYgbV9zY3JvbGxTbmFwUG9ydCA9PSBvLm1fc2Ny
b2xsU25hcFBvcnQKLSAgICAgICAgJiYgbV9zY3JvbGxTbmFwQXJlYSA9PSBvLm1fc2Nyb2xsU25h
cEFyZWEKKyAgICAgICAgJiYgc2Nyb2xsU25hcFBvcnQgPT0gby5zY3JvbGxTbmFwUG9ydAorICAg
ICAgICAmJiBzY3JvbGxTbmFwQXJlYSA9PSBvLnNjcm9sbFNuYXBBcmVhCiAjZW5kaWYKICAgICAg
ICAgJiYgY29udGVudERhdGFFcXVpdmFsZW50KG8pCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9F
cXVhbERhdGEobV9jb3VudGVyRGlyZWN0aXZlcywgby5tX2NvdW50ZXJEaXJlY3RpdmVzKQotICAg
ICAgICAmJiBtX2FsdFRleHQgPT0gby5tX2FsdFRleHQKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShtX2JveFNoYWRvdywgby5tX2JveFNoYWRvdykKLSAgICAgICAgJiYgYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShtX3dpbGxDaGFuZ2UsIG8ubV93aWxsQ2hhbmdlKQotICAgICAgICAm
JiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fYm94UmVmbGVjdCwgby5tX2JveFJlZmxlY3QpCi0g
ICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9hbmltYXRpb25zLCBvLm1fYW5pbWF0
aW9ucykKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3RyYW5zaXRpb25zLCBv
Lm1fdHJhbnNpdGlvbnMpCi0gICAgICAgICYmIG1fbWFzayA9PSBvLm1fbWFzawotICAgICAgICAm
JiBtX21hc2tCb3hJbWFnZSA9PSBvLm1fbWFza0JveEltYWdlCi0gICAgICAgICYmIG1fcGFnZVNp
emUgPT0gby5tX3BhZ2VTaXplCi0gICAgICAgICYmIG1fb2JqZWN0UG9zaXRpb24gPT0gby5tX29i
amVjdFBvc2l0aW9uCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9zaGFwZU91
dHNpZGUsIG8ubV9zaGFwZU91dHNpZGUpCi0gICAgICAgICYmIG1fc2hhcGVNYXJnaW4gPT0gby5t
X3NoYXBlTWFyZ2luCi0gICAgICAgICYmIG1fc2hhcGVJbWFnZVRocmVzaG9sZCA9PSBvLm1fc2hh
cGVJbWFnZVRocmVzaG9sZAotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fY2xp
cFBhdGgsIG8ubV9jbGlwUGF0aCkKLSAgICAgICAgJiYgbV90ZXh0RGVjb3JhdGlvbkNvbG9yID09
IG8ubV90ZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtUZXh0RGVj
b3JhdGlvbkNvbG9yID09IG8ubV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAg
ICAgJiYgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua091dGxpbmVDb2xvciA9PSBvLm1f
dmlzaXRlZExpbmtPdXRsaW5lQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IKLSAgICAgICAgJiYgbV92
aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRD
b2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby5tX3Zpc2l0
ZWRMaW5rQm9yZGVyVG9wQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlckJvdHRv
bUNvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yCi0gICAgICAgICYmIG1f
b3JkZXIgPT0gby5tX29yZGVyCi0gICAgICAgICYmIG1fZmxvd1RocmVhZCA9PSBvLm1fZmxvd1Ro
cmVhZAotICAgICAgICAmJiBtX2FsaWduQ29udGVudCA9PSBvLm1fYWxpZ25Db250ZW50Ci0gICAg
ICAgICYmIG1fYWxpZ25JdGVtcyA9PSBvLm1fYWxpZ25JdGVtcwotICAgICAgICAmJiBtX2FsaWdu
U2VsZiA9PSBvLm1fYWxpZ25TZWxmCi0gICAgICAgICYmIG1fanVzdGlmeUNvbnRlbnQgPT0gby5t
X2p1c3RpZnlDb250ZW50Ci0gICAgICAgICYmIG1fanVzdGlmeUl0ZW1zID09IG8ubV9qdXN0aWZ5
SXRlbXMKLSAgICAgICAgJiYgbV9qdXN0aWZ5U2VsZiA9PSBvLm1fanVzdGlmeVNlbGYKLSAgICAg
ICAgJiYgbV9yZWdpb25UaHJlYWQgPT0gby5tX3JlZ2lvblRocmVhZAotICAgICAgICAmJiBtX3Jl
Z2lvbkZyYWdtZW50ID09IG8ubV9yZWdpb25GcmFnbWVudAotICAgICAgICAmJiBtX3BhZ2VTaXpl
VHlwZSA9PSBvLm1fcGFnZVNpemVUeXBlCi0gICAgICAgICYmIG1fdHJhbnNmb3JtU3R5bGUzRCA9
PSBvLm1fdHJhbnNmb3JtU3R5bGUzRAotICAgICAgICAmJiBtX2JhY2tmYWNlVmlzaWJpbGl0eSA9
PSBvLm1fYmFja2ZhY2VWaXNpYmlsaXR5CisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERh
dGEoY291bnRlckRpcmVjdGl2ZXMsIG8uY291bnRlckRpcmVjdGl2ZXMpCisgICAgICAgICYmIGFs
dFRleHQgPT0gby5hbHRUZXh0CisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoYm94
U2hhZG93LCBvLmJveFNoYWRvdykKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSh3
aWxsQ2hhbmdlLCBvLndpbGxDaGFuZ2UpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERh
dGEoYm94UmVmbGVjdCwgby5ib3hSZWZsZWN0KQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1
YWxEYXRhKGFuaW1hdGlvbnMsIG8uYW5pbWF0aW9ucykKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YSh0cmFuc2l0aW9ucywgby50cmFuc2l0aW9ucykKKyAgICAgICAgJiYgbWFzayA9
PSBvLm1hc2sKKyAgICAgICAgJiYgbWFza0JveEltYWdlID09IG8ubWFza0JveEltYWdlCisgICAg
ICAgICYmIHBhZ2VTaXplID09IG8ucGFnZVNpemUKKyAgICAgICAgJiYgb2JqZWN0UG9zaXRpb24g
PT0gby5vYmplY3RQb3NpdGlvbgorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHNo
YXBlT3V0c2lkZSwgby5zaGFwZU91dHNpZGUpCisgICAgICAgICYmIHNoYXBlTWFyZ2luID09IG8u
c2hhcGVNYXJnaW4KKyAgICAgICAgJiYgc2hhcGVJbWFnZVRocmVzaG9sZCA9PSBvLnNoYXBlSW1h
Z2VUaHJlc2hvbGQKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShjbGlwUGF0aCwg
by5jbGlwUGF0aCkKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25Db2xvciA9PSBvLnRleHREZWNv
cmF0aW9uQ29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yID09
IG8udmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yID09IG8udmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAg
JiYgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPT0gby52aXNpdGVkTGlua091dGxpbmVDb2xvcgor
ICAgICAgICAmJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA9PSBvLnZpc2l0ZWRMaW5rQm9y
ZGVyTGVmdENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA9PSBv
LnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua0JvcmRl
clRvcENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcgorICAgICAgICAmJiB2aXNp
dGVkTGlua0JvcmRlckJvdHRvbUNvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
cgorICAgICAgICAmJiBvcmRlciA9PSBvLm9yZGVyCisgICAgICAgICYmIGZsb3dUaHJlYWQgPT0g
by5mbG93VGhyZWFkCisgICAgICAgICYmIGFsaWduQ29udGVudCA9PSBvLmFsaWduQ29udGVudAor
ICAgICAgICAmJiBhbGlnbkl0ZW1zID09IG8uYWxpZ25JdGVtcworICAgICAgICAmJiBhbGlnblNl
bGYgPT0gby5hbGlnblNlbGYKKyAgICAgICAgJiYganVzdGlmeUNvbnRlbnQgPT0gby5qdXN0aWZ5
Q29udGVudAorICAgICAgICAmJiBqdXN0aWZ5SXRlbXMgPT0gby5qdXN0aWZ5SXRlbXMKKyAgICAg
ICAgJiYganVzdGlmeVNlbGYgPT0gby5qdXN0aWZ5U2VsZgorICAgICAgICAmJiByZWdpb25UaHJl
YWQgPT0gby5yZWdpb25UaHJlYWQKKyAgICAgICAgJiYgcmVnaW9uRnJhZ21lbnQgPT0gby5yZWdp
b25GcmFnbWVudAorICAgICAgICAmJiBwYWdlU2l6ZVR5cGUgPT0gby5wYWdlU2l6ZVR5cGUKKyAg
ICAgICAgJiYgdHJhbnNmb3JtU3R5bGUzRCA9PSBvLnRyYW5zZm9ybVN0eWxlM0QKKyAgICAgICAg
JiYgYmFja2ZhY2VWaXNpYmlsaXR5ID09IG8uYmFja2ZhY2VWaXNpYmlsaXR5CiAgICAgICAgICYm
IHVzZXJEcmFnID09IG8udXNlckRyYWcKICAgICAgICAgJiYgdGV4dE92ZXJmbG93ID09IG8udGV4
dE92ZXJmbG93CiAgICAgICAgICYmIG1hcmdpbkJlZm9yZUNvbGxhcHNlID09IG8ubWFyZ2luQmVm
b3JlQ29sbGFwc2UKICAgICAgICAgJiYgbWFyZ2luQWZ0ZXJDb2xsYXBzZSA9PSBvLm1hcmdpbkFm
dGVyQ29sbGFwc2UKLSAgICAgICAgJiYgbV9hcHBlYXJhbmNlID09IG8ubV9hcHBlYXJhbmNlCi0g
ICAgICAgICYmIG1fYm9yZGVyRml0ID09IG8ubV9ib3JkZXJGaXQKLSAgICAgICAgJiYgbV90ZXh0
Q29tYmluZSA9PSBvLm1fdGV4dENvbWJpbmUKLSAgICAgICAgJiYgbV90ZXh0RGVjb3JhdGlvblN0
eWxlID09IG8ubV90ZXh0RGVjb3JhdGlvblN0eWxlCisgICAgICAgICYmIGFwcGVhcmFuY2UgPT0g
by5hcHBlYXJhbmNlCisgICAgICAgICYmIGJvcmRlckZpdCA9PSBvLmJvcmRlckZpdAorICAgICAg
ICAmJiB0ZXh0Q29tYmluZSA9PSBvLnRleHRDb21iaW5lCisgICAgICAgICYmIHRleHREZWNvcmF0
aW9uU3R5bGUgPT0gby50ZXh0RGVjb3JhdGlvblN0eWxlCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLSAgICAgICAgJiYgbV90b3VjaEFjdGlvbiA9PSBvLm1fdG91Y2hBY3Rpb24KKyAgICAgICAg
JiYgdG91Y2hBY3Rpb24gPT0gby50b3VjaEFjdGlvbgogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKLSAgICAgICAgJiYgbV9lZmZlY3RpdmVCbGVuZE1vZGUgPT0gby5tX2VmZmVj
dGl2ZUJsZW5kTW9kZQotICAgICAgICAmJiBtX2lzb2xhdGlvbiA9PSBvLm1faXNvbGF0aW9uCisg
ICAgICAgICYmIGVmZmVjdGl2ZUJsZW5kTW9kZSA9PSBvLmVmZmVjdGl2ZUJsZW5kTW9kZQorICAg
ICAgICAmJiBpc29sYXRpb24gPT0gby5pc29sYXRpb24KICNlbmRpZgogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCi0gICAgICAgICYmIG1fYXBwbGVQYXlCdXR0b25TdHlsZSA9PSBvLm1fYXBwbGVQYXlC
dXR0b25TdHlsZQotICAgICAgICAmJiBtX2FwcGxlUGF5QnV0dG9uVHlwZSA9PSBvLm1fYXBwbGVQ
YXlCdXR0b25UeXBlCisgICAgICAgICYmIGFwcGxlUGF5QnV0dG9uU3R5bGUgPT0gby5hcHBsZVBh
eUJ1dHRvblN0eWxlCisgICAgICAgICYmIGFwcGxlUGF5QnV0dG9uVHlwZSA9PSBvLmFwcGxlUGF5
QnV0dG9uVHlwZQogI2VuZGlmCi0gICAgICAgICYmIG1fYXNwZWN0UmF0aW9UeXBlID09IG8ubV9h
c3BlY3RSYXRpb1R5cGUKLSAgICAgICAgJiYgbV9vYmplY3RGaXQgPT0gby5tX29iamVjdEZpdAot
ICAgICAgICAmJiBtX2JyZWFrQWZ0ZXIgPT0gby5tX2JyZWFrQWZ0ZXIKLSAgICAgICAgJiYgbV9i
cmVha0JlZm9yZSA9PSBvLm1fYnJlYWtCZWZvcmUKLSAgICAgICAgJiYgbV9icmVha0luc2lkZSA9
PSBvLm1fYnJlYWtJbnNpZGUKLSAgICAgICAgJiYgbV9yZXNpemUgPT0gby5tX3Jlc2l6ZQotICAg
ICAgICAmJiBtX2hhc0F0dHJDb250ZW50ID09IG8ubV9oYXNBdHRyQ29udGVudAotICAgICAgICAm
JiBtX2lzUGxhY2Vob2xkZXJTdHlsZSA9PSBvLm1faXNQbGFjZWhvbGRlclN0eWxlOworICAgICAg
ICAmJiBhc3BlY3RSYXRpb1R5cGUgPT0gby5hc3BlY3RSYXRpb1R5cGUKKyAgICAgICAgJiYgb2Jq
ZWN0Rml0ID09IG8ub2JqZWN0Rml0CisgICAgICAgICYmIGJyZWFrQWZ0ZXIgPT0gby5icmVha0Fm
dGVyCisgICAgICAgICYmIGJyZWFrQmVmb3JlID09IG8uYnJlYWtCZWZvcmUKKyAgICAgICAgJiYg
YnJlYWtJbnNpZGUgPT0gby5icmVha0luc2lkZQorICAgICAgICAmJiByZXNpemUgPT0gby5yZXNp
emUKKyAgICAgICAgJiYgaGFzQXR0ckNvbnRlbnQgPT0gby5oYXNBdHRyQ29udGVudAorICAgICAg
ICAmJiBpc1BsYWNlaG9sZGVyU3R5bGUgPT0gby5pc1BsYWNlaG9sZGVyU3R5bGU7CiB9CiAKLWJv
b2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICBDb250ZW50RGF0YSogYSA9IG1fY29udGVu
dC5nZXQoKTsKLSAgICBDb250ZW50RGF0YSogYiA9IG8ubV9jb250ZW50LmdldCgpOwotCisgICAg
YXV0byogYSA9IGNvbnRlbnQuZ2V0KCk7CisgICAgYXV0byogYiA9IG90aGVyLmNvbnRlbnQuZ2V0
KCk7CiAgICAgd2hpbGUgKGEgJiYgYiAmJiAqYSA9PSAqYikgewogICAgICAgICBhID0gYS0+bmV4
dCgpOwogICAgICAgICBiID0gYi0+bmV4dCgpOwogICAgIH0KLQogICAgIHJldHVybiAhYSAmJiAh
YjsKIH0KIAogYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpoYXNGaWx0ZXJzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9maWx0ZXIuZ2V0KCkgJiYgIW1fZmlsdGVyLT5tX29wZXJhdGlv
bnMuaXNFbXB0eSgpOworICAgIHJldHVybiAhZmlsdGVyLT5vcGVyYXRpb25zLmlzRW1wdHkoKTsK
IH0KIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCisKIGJvb2wgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6aGFzQmFja2Ryb3BGaWx0ZXJzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9i
YWNrZHJvcEZpbHRlci5nZXQoKSAmJiAhbV9iYWNrZHJvcEZpbHRlci0+bV9vcGVyYXRpb25zLmlz
RW1wdHkoKTsKKyAgICByZXR1cm4gIWJhY2tkcm9wRmlsdGVyLT5vcGVyYXRpb25zLmlzRW1wdHko
KTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oCmluZGV4IDA0YzA5YmFkZmZmODk5ZjM3NGEzNDg2NWVhZWNhZjU5M2FiNTllMGUuLmJmOWJh
MjA3NDUwYzVkYWJjNDk2Nzc3ZWIxZDM2ZjU3YjliOTg2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBH
cmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00
NCwzNCArNDQsMjcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uTGlz
dDsKK2NsYXNzIENvbnRlbnREYXRhOwogY2xhc3MgU2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YTsKIGNsYXNzIFN0eWxlRmlsdGVyRGF0YTsKIGNsYXNzIFN0
eWxlRmxleGlibGVCb3hEYXRhOwotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiBjbGFzcyBT
dHlsZUdyaWREYXRhOwogY2xhc3MgU3R5bGVHcmlkSXRlbURhdGE7Ci0jZW5kaWYKIGNsYXNzIFN0
eWxlTWFycXVlZURhdGE7CiBjbGFzcyBTdHlsZU11bHRpQ29sRGF0YTsKIGNsYXNzIFN0eWxlUmVm
bGVjdGlvbjsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7Ci1jbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7
CiBjbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOwotI2VuZGlmCitjbGFzcyBTdHlsZVNjcm9sbFNu
YXBQb3J0OworY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwogCi1jbGFzcyBDb250ZW50RGF0YTsK
IHN0cnVjdCBMZW5ndGhTaXplOwotCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogc3Ry
dWN0IFN0eWxlRGFzaGJvYXJkUmVnaW9uOwotI2VuZGlmCiAKIC8vIFBhZ2Ugc2l6ZSB0eXBlLgot
Ly8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6bV9wYWdlU2l6ZSBpcyBtZWFuaW5nZnVsIG9u
bHkgd2hlbiAKLS8vIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om1fcGFnZVNpemVUeXBlIGlz
IFBBR0VfU0laRV9SRVNPTFZFRC4KKy8vIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnBhZ2VT
aXplIGlzIG1lYW5pbmdmdWwgb25seSB3aGVuCisvLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpwYWdlU2l6ZVR5cGUgaXMgUEFHRV9TSVpFX1JFU09MVkVELgogZW51bSBQYWdlU2l6ZVR5cGUg
ewogICAgIFBBR0VfU0laRV9BVVRPLCAvLyBzaXplOiBhdXRvCiAgICAgUEFHRV9TSVpFX0FVVE9f
TEFORFNDQVBFLCAvLyBzaXplOiBsYW5kc2NhcGUKQEAgLTg5LDE0NCArODIsMTQ3IEBAIHB1Ymxp
YzoKICAgICB+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAgIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAKICAgICBib29sIGNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhJikgY29uc3Q7CiAKICAgICBib29sIGhhc0ZpbHRlcnMoKSBjb25zdDsK
KwogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAgYm9vbCBoYXNCYWNrZHJvcEZpbHRl
cnMoKSBjb25zdDsKICNlbmRpZgotICAgIGJvb2wgaGFzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3BhY2l0eSA8IDE7IH0KIAotICAgIGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnMgfHwgbV90cmFuc2l0aW9uczsgfQorICAgIGJv
b2wgaGFzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG9wYWNpdHkgPCAxOyB9CiAKLSAgICBmbG9h
dCBtX29wYWNpdHk7CisgICAgYm9vbCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIGFuaW1hdGlvbnMgfHwgdHJhbnNpdGlvbnM7IH0KIAotICAgIGZsb2F0IG1fYXNw
ZWN0UmF0aW9EZW5vbWluYXRvcjsKLSAgICBmbG9hdCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yOwor
ICAgIGZsb2F0IG9wYWNpdHk7CiAKLSAgICBmbG9hdCBtX3BlcnNwZWN0aXZlOwotICAgIExlbmd0
aCBtX3BlcnNwZWN0aXZlT3JpZ2luWDsKLSAgICBMZW5ndGggbV9wZXJzcGVjdGl2ZU9yaWdpblk7
CisgICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5vbWluYXRvcjsKKyAgICBmbG9hdCBhc3BlY3RSYXRp
b051bWVyYXRvcjsKKworICAgIGZsb2F0IHBlcnNwZWN0aXZlOworICAgIExlbmd0aCBwZXJzcGVj
dGl2ZU9yaWdpblg7CisgICAgTGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWTsKIAogICAgIExpbmVD
bGFtcFZhbHVlIGxpbmVDbGFtcDsgLy8gQW4gQXBwbGUgZXh0ZW5zaW9uLgogICAgIAotICAgIElu
dFNpemUgbV9pbml0aWFsTGV0dGVyOworICAgIEludFNpemUgaW5pdGlhbExldHRlcjsKIAogI2lm
IEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdp
b24+IG1fZGFzaGJvYXJkUmVnaW9uczsKKyAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
IGRhc2hib2FyZFJlZ2lvbnM7CiAjZW5kaWYKIAotICAgIERhdGFSZWY8U3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhPiBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveDsgLy8gRmxleGlibGUgYm94
IHByb3BlcnRpZXMKLSAgICBEYXRhUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBtX2ZsZXhpYmxl
Qm94OwotICAgIERhdGFSZWY8U3R5bGVNYXJxdWVlRGF0YT4gbV9tYXJxdWVlOyAvLyBNYXJxdWVl
IHByb3BlcnRpZXMKLSAgICBEYXRhUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBtX211bHRpQ29sOyAv
LyAgQ1NTMyBtdWx0aWNvbCBwcm9wZXJ0aWVzCi0gICAgRGF0YVJlZjxTdHlsZVRyYW5zZm9ybURh
dGE+IG1fdHJhbnNmb3JtOyAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyAocm90YXRlLCBzY2FsZSwg
c2tldywgZXRjLikKLSAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gbV9maWx0ZXI7IC8vIEZp
bHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQorICAgIERhdGFSZWY8U3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBkZXByZWNhdGVkRmxleGlibGVCb3g7IC8vIEZs
ZXhpYmxlIGJveCBwcm9wZXJ0aWVzCisgICAgRGF0YVJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4g
ZmxleGlibGVCb3g7CisgICAgRGF0YVJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBtYXJxdWVlOyAvLyBN
YXJxdWVlIHByb3BlcnRpZXMKKyAgICBEYXRhUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBtdWx0aUNv
bDsgLy8gIENTUzMgbXVsdGljb2wgcHJvcGVydGllcworICAgIERhdGFSZWY8U3R5bGVUcmFuc2Zv
cm1EYXRhPiB0cmFuc2Zvcm07IC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIChyb3RhdGUsIHNjYWxl
LCBza2V3LCBldGMuKQorICAgIERhdGFSZWY8U3R5bGVGaWx0ZXJEYXRhPiBmaWx0ZXI7IC8vIEZp
bHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQorCiAjaWYgRU5BQkxFKEZJ
TFRFUlNfTEVWRUxfMikKLSAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gbV9iYWNrZHJvcEZp
bHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCisgICAg
RGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IGJhY2tkcm9wRmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0
aW9ucyAodXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19H
UklEX0xBWU9VVCkKLSAgICBEYXRhUmVmPFN0eWxlR3JpZERhdGE+IG1fZ3JpZDsKLSAgICBEYXRh
UmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBtX2dyaWRJdGVtOworICAgIERhdGFSZWY8U3R5bGVHcmlk
RGF0YT4gZ3JpZDsKKyAgICBEYXRhUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBncmlkSXRlbTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBEYXRhUmVmPFN0eWxlU2Ny
b2xsU25hcFBvcnQ+IG1fc2Nyb2xsU25hcFBvcnQ7Ci0gICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNu
YXBBcmVhPiBtX3Njcm9sbFNuYXBBcmVhOworICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwUG9y
dD4gc2Nyb2xsU25hcFBvcnQ7CisgICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBBcmVhPiBzY3Jv
bGxTbmFwQXJlYTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBt
X2NvbnRlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+IG1fY291
bnRlckRpcmVjdGl2ZXM7Ci0gICAgU3RyaW5nIG1fYWx0VGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudERhdGE+IGNvbnRlbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJEaXJl
Y3RpdmVNYXA+IGNvdW50ZXJEaXJlY3RpdmVzOworICAgIFN0cmluZyBhbHRUZXh0OwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG1fYm94U2hhZG93OyAvLyBGb3IgYm94LXNoYWRv
dyBkZWNvcmF0aW9ucy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYm94U2hhZG93
OyAvLyBGb3IgYm94LXNoYWRvdyBkZWNvcmF0aW9ucy4KIAotICAgIFJlZlB0cjxXaWxsQ2hhbmdl
RGF0YT4gbV93aWxsQ2hhbmdlOyAvLyBOdWxsIGluZGljYXRlcyAnYXV0bycuCisgICAgUmVmUHRy
PFdpbGxDaGFuZ2VEYXRhPiB3aWxsQ2hhbmdlOyAvLyBOdWxsIGluZGljYXRlcyAnYXV0bycuCiAg
ICAgCi0gICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gbV9ib3hSZWZsZWN0OworICAgIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IGJveFJlZmxlY3Q7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5p
bWF0aW9uTGlzdD4gbV9hbmltYXRpb25zOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25M
aXN0PiBtX3RyYW5zaXRpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25MaXN0PiBh
bmltYXRpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25MaXN0PiB0cmFuc2l0aW9u
czsKIAotICAgIEZpbGxMYXllciBtX21hc2s7Ci0gICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94
SW1hZ2U7CisgICAgRmlsbExheWVyIG1hc2s7CisgICAgTmluZVBpZWNlSW1hZ2UgbWFza0JveElt
YWdlOwogCi0gICAgTGVuZ3RoU2l6ZSBtX3BhZ2VTaXplOwotICAgIExlbmd0aFBvaW50IG1fb2Jq
ZWN0UG9zaXRpb247CisgICAgTGVuZ3RoU2l6ZSBwYWdlU2l6ZTsKKyAgICBMZW5ndGhQb2ludCBv
YmplY3RQb3NpdGlvbjsKIAotICAgIFJlZlB0cjxTaGFwZVZhbHVlPiBtX3NoYXBlT3V0c2lkZTsK
LSAgICBMZW5ndGggbV9zaGFwZU1hcmdpbjsKLSAgICBmbG9hdCBtX3NoYXBlSW1hZ2VUaHJlc2hv
bGQ7CisgICAgUmVmUHRyPFNoYXBlVmFsdWU+IHNoYXBlT3V0c2lkZTsKKyAgICBMZW5ndGggc2hh
cGVNYXJnaW47CisgICAgZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZDsKIAotICAgIFJlZlB0cjxD
bGlwUGF0aE9wZXJhdGlvbj4gbV9jbGlwUGF0aDsKKyAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRp
b24+IGNsaXBQYXRoOwogCi0gICAgQ29sb3IgbV90ZXh0RGVjb3JhdGlvbkNvbG9yOwotICAgIENv
bG9yIG1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRl
ZExpbmtCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua091dGxpbmVDb2xv
cjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOwotICAgIENvbG9yIG1f
dmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3Jk
ZXJUb3BDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7Cisg
ICAgQ29sb3IgdGV4dERlY29yYXRpb25Db2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua1RleHRE
ZWNvcmF0aW9uQ29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgQ29sb3IgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yOwor
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcjsKIAotICAgIGludCBtX29yZGVyOworICAgIGludCBvcmRlcjsK
IAotICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fcmVn
aW9uVGhyZWFkOworICAgIEF0b21pY1N0cmluZyBmbG93VGhyZWFkOworICAgIEF0b21pY1N0cmlu
ZyByZWdpb25UaHJlYWQ7CiAKLSAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIG1fYWxpZ25D
b250ZW50OwotICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9hbGlnbkl0ZW1zOwotICAgIFN0
eWxlU2VsZkFsaWdubWVudERhdGEgbV9hbGlnblNlbGY7Ci0gICAgU3R5bGVDb250ZW50QWxpZ25t
ZW50RGF0YSBtX2p1c3RpZnlDb250ZW50OwotICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9q
dXN0aWZ5SXRlbXM7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlTZWxmOwor
ICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgYWxpZ25Db250ZW50OworICAgIFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEgYWxpZ25JdGVtczsKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGFs
aWduU2VsZjsKKyAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGp1c3RpZnlDb250ZW50Owor
ICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEganVzdGlmeUl0ZW1zOworICAgIFN0eWxlU2VsZkFs
aWdubWVudERhdGEganVzdGlmeVNlbGY7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAg
IHVuc2lnbmVkIG1fdG91Y2hBY3Rpb24gOiAxOyAvLyBUb3VjaEFjdGlvbgorICAgIHVuc2lnbmVk
IHRvdWNoQWN0aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KICNlbmRpZgogCi0gICAgdW5zaWduZWQg
bV9yZWdpb25GcmFnbWVudCA6IDE7IC8vIFJlZ2lvbkZyYWdtZW50CisgICAgdW5zaWduZWQgcmVn
aW9uRnJhZ21lbnQgOiAxOyAvLyBSZWdpb25GcmFnbWVudAogCi0gICAgdW5zaWduZWQgbV9wYWdl
U2l6ZVR5cGUgOiAyOyAvLyBQYWdlU2l6ZVR5cGUKLSAgICB1bnNpZ25lZCBtX3RyYW5zZm9ybVN0
eWxlM0QgOiAxOyAvLyBFVHJhbnNmb3JtU3R5bGUzRAotICAgIHVuc2lnbmVkIG1fYmFja2ZhY2VW
aXNpYmlsaXR5IDogMTsgLy8gRUJhY2tmYWNlVmlzaWJpbGl0eQorICAgIHVuc2lnbmVkIHBhZ2VT
aXplVHlwZSA6IDI7IC8vIFBhZ2VTaXplVHlwZQorICAgIHVuc2lnbmVkIHRyYW5zZm9ybVN0eWxl
M0QgOiAxOyAvLyBFVHJhbnNmb3JtU3R5bGUzRAorICAgIHVuc2lnbmVkIGJhY2tmYWNlVmlzaWJp
bGl0eSA6IDE7IC8vIEVCYWNrZmFjZVZpc2liaWxpdHkKIAogCiAgICAgdW5zaWduZWQgdXNlckRy
YWcgOiAyOyAvLyBFVXNlckRyYWcKICAgICB1bnNpZ25lZCB0ZXh0T3ZlcmZsb3cgOiAxOyAvLyBX
aGV0aGVyIG9yIG5vdCBsaW5lcyB0aGF0IHNwaWxsIG91dCBzaG91bGQgYmUgdHJ1bmNhdGVkIHdp
dGggIi4uLiIKICAgICB1bnNpZ25lZCBtYXJnaW5CZWZvcmVDb2xsYXBzZSA6IDI7IC8vIEVNYXJn
aW5Db2xsYXBzZQogICAgIHVuc2lnbmVkIG1hcmdpbkFmdGVyQ29sbGFwc2UgOiAyOyAvLyBFTWFy
Z2luQ29sbGFwc2UKLSAgICB1bnNpZ25lZCBtX2FwcGVhcmFuY2UgOiA2OyAvLyBFQXBwZWFyYW5j
ZQotICAgIHVuc2lnbmVkIG1fYm9yZGVyRml0IDogMTsgLy8gRUJvcmRlckZpdAotICAgIHVuc2ln
bmVkIG1fdGV4dENvbWJpbmUgOiAxOyAvLyBDU1MzIHRleHQtY29tYmluZSBwcm9wZXJ0aWVzCisg
ICAgdW5zaWduZWQgYXBwZWFyYW5jZSA6IDY7IC8vIEVBcHBlYXJhbmNlCisgICAgdW5zaWduZWQg
Ym9yZGVyRml0IDogMTsgLy8gRUJvcmRlckZpdAorICAgIHVuc2lnbmVkIHRleHRDb21iaW5lIDog
MTsgLy8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcwogCi0gICAgdW5zaWduZWQgbV90ZXh0
RGVjb3JhdGlvblN0eWxlIDogMzsgLy8gVGV4dERlY29yYXRpb25TdHlsZQorICAgIHVuc2lnbmVk
IHRleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0RGVjb3JhdGlvblN0eWxlCiAKLSAgICB1
bnNpZ25lZCBtX2FzcGVjdFJhdGlvVHlwZSA6IDI7CisgICAgdW5zaWduZWQgYXNwZWN0UmF0aW9U
eXBlIDogMjsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgdW5zaWduZWQgbV9l
ZmZlY3RpdmVCbGVuZE1vZGU6IDU7IC8vIEVCbGVuZE1vZGUKLSAgICB1bnNpZ25lZCBtX2lzb2xh
dGlvbiA6IDE7IC8vIElzb2xhdGlvbgorICAgIHVuc2lnbmVkIGVmZmVjdGl2ZUJsZW5kTW9kZTog
NTsgLy8gRUJsZW5kTW9kZQorICAgIHVuc2lnbmVkIGlzb2xhdGlvbiA6IDE7IC8vIElzb2xhdGlv
bgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIHVuc2lnbmVkIG1fYXBwbGVQ
YXlCdXR0b25TdHlsZSA6IDI7Ci0gICAgdW5zaWduZWQgbV9hcHBsZVBheUJ1dHRvblR5cGUgOiAz
OworICAgIHVuc2lnbmVkIGFwcGxlUGF5QnV0dG9uU3R5bGUgOiAyOworICAgIHVuc2lnbmVkIGFw
cGxlUGF5QnV0dG9uVHlwZSA6IDM7CiAjZW5kaWYKIAotICAgIHVuc2lnbmVkIG1fb2JqZWN0Rml0
IDogMzsgLy8gT2JqZWN0Rml0CisgICAgdW5zaWduZWQgb2JqZWN0Rml0IDogMzsgLy8gT2JqZWN0
Rml0CiAgICAgCi0gICAgdW5zaWduZWQgbV9icmVha0JlZm9yZSA6IDQ7IC8vIEJyZWFrQmV0d2Vl
bgotICAgIHVuc2lnbmVkIG1fYnJlYWtBZnRlciA6IDQ7Ci0gICAgdW5zaWduZWQgbV9icmVha0lu
c2lkZSA6IDM7IC8vIEJyZWFrSW5zaWRlCi0gICAgdW5zaWduZWQgbV9yZXNpemUgOiAyOyAvLyBF
UmVzaXplCisgICAgdW5zaWduZWQgYnJlYWtCZWZvcmUgOiA0OyAvLyBCcmVha0JldHdlZW4KKyAg
ICB1bnNpZ25lZCBicmVha0FmdGVyIDogNDsKKyAgICB1bnNpZ25lZCBicmVha0luc2lkZSA6IDM7
IC8vIEJyZWFrSW5zaWRlCisgICAgdW5zaWduZWQgcmVzaXplIDogMjsgLy8gRVJlc2l6ZQogCi0g
ICAgdW5zaWduZWQgbV9oYXNBdHRyQ29udGVudCA6IDE7CisgICAgdW5zaWduZWQgaGFzQXR0ckNv
bnRlbnQgOiAxOwogCi0gICAgdW5zaWduZWQgbV9pc1BsYWNlaG9sZGVyU3R5bGUgOiAxOworICAg
IHVuc2lnbmVkIGlzUGxhY2Vob2xkZXJTdHlsZSA6IDE7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcAppbmRleCBlYWYzMTBiNjNkNjFhZDFjYzEw
NDhiMGM2ODJhY2ZlZDUyZDlhZmE2Li5lYWY3YTZhNDM3ZTkzNjExNjgzYmU2YTFhOWU0M2JhMDA4
MGEzOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVU
cmFuc2Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMjcsMTkgKzI3LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFN0eWxlVHJhbnNmb3JtRGF0YTo6U3R5bGVUcmFuc2Zvcm1EYXRhKCkKLSAgICA6IG1f
b3BlcmF0aW9ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybSgpKQotICAgICwgbV94KFJl
bmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpKQotICAgICwgbV95KFJlbmRlclN0
eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpKQotICAgICwgbV96KFJlbmRlclN0eWxlOjpp
bml0aWFsVHJhbnNmb3JtT3JpZ2luWigpKQorICAgIDogb3BlcmF0aW9ucyhSZW5kZXJTdHlsZTo6
aW5pdGlhbFRyYW5zZm9ybSgpKQorICAgICwgeChSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9y
bU9yaWdpblgoKSkKKyAgICAsIHkoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5Z
KCkpCisgICAgLCB6KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWigpKQogewog
fQogCi1pbmxpbmUgU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoY29uc3Qg
U3R5bGVUcmFuc2Zvcm1EYXRhJiBvKQoraW5saW5lIFN0eWxlVHJhbnNmb3JtRGF0YTo6U3R5bGVU
cmFuc2Zvcm1EYXRhKGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZD
b3VudGVkPFN0eWxlVHJhbnNmb3JtRGF0YT4oKQotICAgICwgbV9vcGVyYXRpb25zKG8ubV9vcGVy
YXRpb25zKQotICAgICwgbV94KG8ubV94KQotICAgICwgbV95KG8ubV95KQotICAgICwgbV96KG8u
bV96KQorICAgICwgb3BlcmF0aW9ucyhvdGhlci5vcGVyYXRpb25zKQorICAgICwgeChvdGhlci54
KQorICAgICwgeShvdGhlci55KQorICAgICwgeihvdGhlci56KQogewogfQogCkBAIC00OCw5ICs0
OCw5IEBAIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IFN0eWxlVHJhbnNmb3JtRGF0YTo6Y29weSgp
IGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUcmFuc2Zvcm1EYXRhKCp0aGlz
KSk7CiB9CiAKLWJvb2wgU3R5bGVUcmFuc2Zvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
VHJhbnNmb3JtRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVUcmFuc2Zvcm1EYXRhOjpvcGVyYXRv
cj09KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1feCA9PSBvLm1feCAmJiBtX3kgPT0gby5tX3kgJiYgbV96ID09IG8ubV96ICYmIG1fb3BlcmF0
aW9ucyA9PSBvLm1fb3BlcmF0aW9uczsKKyAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0g
b3RoZXIueSAmJiB6ID09IG90aGVyLnogJiYgb3BlcmF0aW9ucyA9PSBvdGhlci5vcGVyYXRpb25z
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKaW5kZXggMmVhMDc5NWI2YWVkYzE1
MDM0ZjdiZjI4ZjNkOGZhMzYyMmVlZDhjYS4uNmI0NmEzNTZiNDFmYzFiNjEyM2U4MmM0N2QyMTA2
MDNhYWFjOTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVRyYW5zZm9ybURhdGEuaApAQCAtMzYsMTggKzM2LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVRyYW5zZm9ybURhdGEpOyB9CiAgICAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gY29w
eSgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0
YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0
YSYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRh
JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYg
b3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc1Ry
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KKyAgICBib29s
IGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdGlvbnMuc2l6ZSgpOyB9CiAKLSAg
ICBUcmFuc2Zvcm1PcGVyYXRpb25zIG1fb3BlcmF0aW9uczsKLSAgICBMZW5ndGggbV94OwotICAg
IExlbmd0aCBtX3k7Ci0gICAgZmxvYXQgbV96OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3Bl
cmF0aW9uczsKKyAgICBMZW5ndGggeDsKKyAgICBMZW5ndGggeTsKKyAgICBmbG9hdCB6OwogCiBw
cml2YXRlOgogICAgIFN0eWxlVHJhbnNmb3JtRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAppbmRleCAyNTZjMTU0OTVmYTZl
MDBjN2FjYzBiMWRkYjdiNzBmZmM4MjIwYjJlLi4xMGZkNTg4OGY3ZjdiNjc4NzU0NGRkMTFlYjhm
N2VlYWRiMDE4MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YSgpCiAgICAgOiBoYXNDbGlwKGZhbHNl
KQogICAgICwgdGV4dERlY29yYXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlv
bigpKQotICAgICwgbV96b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgem9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKIHsKIH0KIApAQCAtMzcsMTIgKzM3LDEyIEBA
IFN0eWxlVmlzdWFsRGF0YTo6flN0eWxlVmlzdWFsRGF0YSgpCiB7CiB9CiAKLWlubGluZSBTdHls
ZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG8pCitp
bmxpbmUgU3R5bGVWaXN1YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoY29uc3QgU3R5bGVWaXN1YWxE
YXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVWaXN1YWxEYXRhPigpCi0gICAgLCBj
bGlwKG8uY2xpcCkKLSAgICAsIGhhc0NsaXAoby5oYXNDbGlwKQotICAgICwgdGV4dERlY29yYXRp
b24oby50ZXh0RGVjb3JhdGlvbikKLSAgICAsIG1fem9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpv
b20oKSkKKyAgICAsIGNsaXAob3RoZXIuY2xpcCkKKyAgICAsIGhhc0NsaXAob3RoZXIuaGFzQ2xp
cCkKKyAgICAsIHRleHREZWNvcmF0aW9uKG90aGVyLnRleHREZWNvcmF0aW9uKQorICAgICwgem9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCmluZGV4IGE2ZjY4ZWZkMDUwYTdk
YTA4ZTY1NTcwMTY1NTAwMGFhMDhhZGZiNDIuLmQ0MThhY2I1MGEyNGY4YTNiMjE4ZGRlMThjMzNl
MWFhODhhOGNiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVZpc3VhbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVWaXN1YWxEYXRhLmgKQEAgLTM3LDE5ICszNywxOSBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxl
VmlzdWFsRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZVZpc3VhbERhdGEoKTsKIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG8pIGNvbnN0CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gY2xpcCA9PSBvLmNsaXAKLSAgICAgICAgICAgICYmIGhhc0NsaXAgPT0g
by5oYXNDbGlwCi0gICAgICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbiA9PSBvLnRleHREZWNvcmF0
aW9uCi0gICAgICAgICAgICAmJiBtX3pvb20gPT0gby5tX3pvb207CisgICAgICAgIHJldHVybiBj
bGlwID09IG90aGVyLmNsaXAKKyAgICAgICAgICAgICYmIGhhc0NsaXAgPT0gb3RoZXIuaGFzQ2xp
cAorICAgICAgICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gb3RoZXIudGV4dERlY29yYXRpb24K
KyAgICAgICAgICAgICYmIHpvb20gPT0gb3RoZXIuem9vbTsKICAgICB9Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgTGVuZ3RoQm94IGNs
aXA7CiAgICAgYm9vbCBoYXNDbGlwIDogMTsKICAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbiA6
IFRleHREZWNvcmF0aW9uQml0czsgLy8gVGV4dCBkZWNvcmF0aW9ucyBkZWZpbmVkICpvbmx5KiBi
eSB0aGlzIGVsZW1lbnQuCi0gICAgZmxvYXQgbV96b29tOworICAgIGZsb2F0IHpvb207CiAKIHBy
aXZhdGU6CiAgICAgU3R5bGVWaXN1YWxEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcAppbmRleCBmNzQ5MzM5MDM0MjA5NWNlMzE3NDFjY2Qy
YzAwM2EzZjJiNjQ3MjcyLi4xMDMxOWY4MjNlZDAzMTRiMmViMzgyNTg5MGJlYzM1NzA3MDMxNWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgbG9hZFBlbmRpbmdJbWFnZShEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGMKIAogdm9pZCBsb2FkUGVu
ZGluZ1Jlc291cmNlcyhSZW5kZXJTdHlsZSYgc3R5bGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1dG8qIGJhY2tncm91bmRMYXllciA9
IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgYmFja2dyb3VuZExheWVyOyBiYWNrZ3JvdW5kTGF5
ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkKKyAgICBmb3IgKGF1dG8qIGJhY2tncm91bmRM
YXllciA9ICZzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFja2dy
b3VuZExheWVyID0gYmFja2dyb3VuZExheWVyLT5uZXh0KCkpCiAgICAgICAgIGxvYWRQZW5kaW5n
SW1hZ2UoZG9jdW1lbnQsIGJhY2tncm91bmRMYXllci0+aW1hZ2UoKSwgZWxlbWVudCk7CiAKICAg
ICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVudERh
dGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewpAQCAtODQsNyArODQsNyBA
QCB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKFJlbmRlclN0eWxlJiBzdHlsZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBFbGVtZW50KgogICAgIGlmIChhdXRvKiByZWZsZWN0aW9uID0gc3R5
bGUuYm94UmVmbGVjdCgpKQogICAgICAgICBsb2FkUGVuZGluZ0ltYWdlKGRvY3VtZW50LCByZWZs
ZWN0aW9uLT5tYXNrKCkuaW1hZ2UoKSwgZWxlbWVudCk7CiAKLSAgICBmb3IgKGF1dG8qIG1hc2tM
YXllciA9IHN0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkKKyAgICBmb3IgKGF1dG8qIG1hc2tMYXllciA9ICZzdHlsZS5tYXNrTGF5ZXJz
KCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpCiAgICAgICAgIGxv
YWRQZW5kaW5nSW1hZ2UoZG9jdW1lbnQsIG1hc2tMYXllci0+aW1hZ2UoKSwgZWxlbWVudCk7CiAK
ICAgICBpZiAoc3R5bGUuc2hhcGVPdXRzaWRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGZlMjhm
ZDRlYTVlNTA3ZWI4NmI4M2U3MWFkNjgwOWYzMDY2OTM4NzQuLjRlOWIyZTI3MmQyZDM5ZGFhODBk
YTBjY2E0M2RkMmZhMDk4OWMxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xODQ5LDcgKzE4NDks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50
KQogICAgIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRo
aXMpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQoKnRoaXMp
OwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwYzVmZGEwMWYwOGE5MDVkMTZjOTNj
NGI3MzgyYjY0MmQ4MmVmNWFhLi5jOTExNTUyMGYyYzg5NTIzOWU0MTQyY2E4NjdhN2Y2ZDRmNjA2
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zNDcwLDggKzM0NzAs
OCBAQCAtICh2b2lkKV9hZGRTY3JvbGxlckRhc2hib2FyZFJlZ2lvbnNGb3JGcmFtZVZpZXc6KEZy
YW1lVmlldyopZnJhbWVWaWV3IGRhc2hib2FyZAogICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0g
W1traXQoJmZyYW1lVmlldy0+ZnJhbWUoKSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiB3aWRnZXQ6IGZyYW1lVmlldy0+Y2hpbGRyZW4oKSkgewotICAg
ICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgewotICAgICAgICAgICAgW3NlbGYgX2Fk
ZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzpkb3duY2FzdDxGcmFtZVZpZXc+
KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25zXTsKKyAgICAgICAgaWYgKGlz
PEZyYW1lVmlldz4od2lkZ2V0KSkgeworICAgICAgICAgICAgW3NlbGYgX2FkZFNjcm9sbGVyRGFz
aGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzomZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQuZ2V0
KCkpIGRhc2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA5YTg3MzU4YjA4NTQzNTE4ZDgwNDY2MzFiNTE5MzAzZTBhMzFj
NGE3Li5kZjFhNTdiYTQ5NGNiMDcyMzIxYTY3MmI5OTAyYzA4M2JhOGUzYTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAg
LTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBlckFuaW1hdGlv
bj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0dQogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFuaW1hdGlvbk9iamVjdC0+ZmlsbE1vZGUoKSk7CiAgICAg
ZW5jb2RlciA8PCBhbmltYXRpb25PYmplY3QtPmR1cmF0aW9uKCk7CiAgICAgZW5jb2RlciA8PCBh
bmltYXRpb25PYmplY3QtPml0ZXJhdGlvbkNvdW50KCk7Ci0gICAgZW5jb2RlVGltaW5nRnVuY3Rp
b24oZW5jb2RlciwgYW5pbWF0aW9uT2JqZWN0LT50aW1pbmdGdW5jdGlvbigpLmdldCgpKTsKKyAg
ICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCBhbmltYXRpb25PYmplY3QtPnRpbWluZ0Z1
bmN0aW9uKCkpOwogCiAgICAgY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIGtleWZyYW1lcyA9IGFu
aW1hdGlvbi5rZXlmcmFtZXMoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oa2V5ZnJhbWVzLnBy
b3BlcnR5KCkpOwpAQCAtNTI3LDcgKzUyNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHR1cmVNYXBwCiAg
ICAgYW5pbWF0aW9uT2JqZWN0LT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgYW5pbWF0aW9u
T2JqZWN0LT5zZXRJdGVyYXRpb25Db3VudChpdGVyYXRpb25Db3VudCk7CiAgICAgaWYgKHRpbWlu
Z0Z1bmN0aW9uKQotICAgICAgICBhbmltYXRpb25PYmplY3QtPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYW5pbWF0aW9uT2JqZWN0LT5zZXRUaW1pbmdGdW5jdGlv
bihXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9uKSk7CiAKICAgICBBbmltYXRlZFByb3BlcnR5SUQgcHJv
cGVydHk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocHJvcGVydHkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tCmluZGV4IGJhZTk2YjZhMmNkZGY5YmIyYzgwOTExZjc2YTZmNDQ4YWNkZGYy
NGIuLjg1MDlhZTY1MDI0ZDRlZTU5MmVkMTI1YTEyMTIxNDBmMDdmY2UzMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdp
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0
ZWRQREZQbHVnaW4ubW0KQEAgLTY2Niw3ICs2NjYsNyBAQCBSZWY8U2Nyb2xsYmFyPiBQREZQbHVn
aW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAg
ICAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihw
YWdlLT50ZXN0VHJpZ2dlcigpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBwbHVnaW5WaWV3KCkt
PmZyYW1lKCktPnZpZXcoKS0+YWRkQ2hpbGQod2lkZ2V0LnB0cigpKTsKKyAgICBwbHVnaW5WaWV3
KCktPmZyYW1lKCktPnZpZXcoKS0+YWRkQ2hpbGQod2lkZ2V0KTsKICAgICByZXR1cm4gd2lkZ2V0
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298551</attachid>
            <date>2017-01-10 20:46:14 -0800</date>
            <delta_ts>2017-01-10 22:05:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170110204435.patch</filename>
            <type>text/plain</type>
            <size>947370</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li4yMDVmYjdiNDRlZjQyOTFj
YTZlMDQ2YzhlZTI0MTc4MTQ1YzYyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUg
cGlwZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDI2NTZjZGU4Y2M0NmYxMGMwMzgyZDMxMTI1YWI1NTY3NzkwMWRjZi4u
MzQwOWMyY2VjZDkxOTIwNWQ5ZjNmYTg2M2M2NTY2ZjQ4OTljYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2Vk
IHRoZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5v
bi1jb25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29u
c3QgVD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGlu
dGVudGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZl
cmVuY2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2Ug
UmVmUHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAg
aXMgdG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nh
c3QganVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9z
ZSBhbmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0w
NiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbR1RLXSBTaG91bGQgc3VwcG9ydCBrZXkgYW5kIGNvZGUgcHJvcGVydGll
cyBvbiBrZXlib2FyZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWM4MjJiNTkzMzViNWIzYzJiODFi
MzgyMTc2MTA4YjZhNTY0OTc2Li5lYzAwZDZmYTk5OGQ1ZjU3NjcyOGJlMDlhN2U5NWIyNzFlYjg0
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIyIEBACisyMDE3LTAxLTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1v
cmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg6IFR3ZWFrcywgbXNhZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0xlbmd0aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
IFVwZGF0ZWQgbWFueSBwcm9wZXJ0aWVzCisgICAgICAgIHNpbmNlIHRoZSBsYXllciBwcm9wZXJ0
aWVzIG5vdyByZXR1cm4gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycy4KKworICAgICAg
ICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjppbWFnZSk6IFJlbW92
ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6
Oml0ZW0pOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdCk6IFVwZGF0ZWQgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBSZW1vdmVk
IG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBVcGRhdGVk
IGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlOjp2YXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemVGb3JMZW5ndGhTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFNpemVGb3JMZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZCBz
aXplRm9yTGVuZ3RoU2l6ZS4KKworICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRPcmRlcik6IEN1dCBkb3duIG9u
IGNyZWF0aW9uIG9mIHVudXNlZCBvYmplY3RzLgorICAgICAgICBXZSBub3cgY3JlYXRlIG9ubHkg
d2hhdCB3ZSBhY3R1YWxseSB1c2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMpOiBVcGRhdGVkIGZvcgorICAgICAgICBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOiBQYXNz
IHJlZmVyZW5jZXMKKyAgICAgICAgd2hlbiBjcmVhdGluZyBTaGFwZVZhbHVlLgorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZElu
aGVyaXRlZFZhbHVlKTogQWRkZWQuIFRoaXMgc2V0IG9mIG92ZXJsb2FkZWQKKyAgICAgICAgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byB1c2UgbW92ZSBzZW1hbnRpY3MgZm9yIHNvbWUgdHlwZXMsIGJ1
dCBjb3B5CisgICAgICAgIHRoZW0gd2hlbiBpbmhlcml0aW5nLiBEb2luZyBpdCB3aXRoIHNwZWNp
YWwgY2FzZXMgaGVyZSBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGlzIHdpdGhvdXQg
YWRkaW5nIG92ZXJsb2FkcyBzb21lb25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8KKyAgICAgICAgY2Fs
bCBvdXRzaWRlIHRoZSBzdHlsZSBidWlsZGVyLCBhbmQgd2l0aG91dCBhZGRpbmcgc3BlY2lhbCBj
YXNlcyB0bworICAgICAgICB0aGUgSlNPTiBmaWxlIGZvciBlYWNoIHByb3BlcnR5LgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJk
UmVnaW9uKToKKyAgICAgICAgQWRkIFdURk1vdmUgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBydmFs
dWUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5l
SGVpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXApOiBEaXR0by4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQpOiBVc2UKKyAgICAgICAgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgY3VzdG9tIHByb3Bl
cnR5IGRhdGEgaW4gUmVuZGVyU3R5bGUuCisKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6IFVz
ZSBhdXRvIHF1aXRlIGEgYml0IG1vcmUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBV
cGRhdGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxheWVycyB0byBleHBlY3QgcmVmZXJlbmNlcy4gQWRk
ZWQgYSBXVEZNb3ZlCisgICAgICAgIHNvIHdlIGNhbiBnZXQgbW92ZSBzZW1hbnRpY3MgZm9yIGNv
bnZlcnRlZCB2YWx1ZXMgdGhhdCBjb21lIG91dCBpbgorICAgICAgICBhbiBvcHRpb25hbC4gQWRk
ZWQgY2FsbCB0byBmb3J3YXJkSW5oZXJpdGVkVmFsdWUgKHNlZSBhYm92ZSkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTogVXNlIGF1dG8gYW5kIHVwZGF0ZQorICAgICAgICBzaW5jZSBM
ZW5ndGhTaXplIGlzIGEgc3RydWN0LgorCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCk6
IFVzZSBhdXRvLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGl2ZU5vZGVMaXN0Ojpvd25lck5vZGUpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpzb3VyY2UpOiBSZW1vdmVkIHVubmVlZGVkIHN0YXRpY19j
YXN0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNl
dFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6IFR3ZWFrZWQgZm9ybWF0dGlu
Zy4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Om93
bmVyRG9jdW1lbnQpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0
UnVubmVyKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSk6IERpdHRvLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFj
a0l0ZW06Om5vZGUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
ZXRKYXZhU2NyaXB0UGF1c2VkKTogQ3V0IGRvd24gb24gdGhlIG51bWJlcgorICAgICAgICBvZiBk
aWZmZXJlbnQgZnVuY3Rpb25zIGhlcmUuIEFsc28gdXNlIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBw
b2ludGVyLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6IFVzZSBhdXRvLiBMZXQgdGhlIGlzPD4gZnVu
Y3Rpb24gZG8gbnVsbAorICAgICAgICBjaGVja2luZyBmb3IgdXMuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6ZnJhbWVGb3JXaWRnZXQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QpOiBVc2UgQ2hyb21lIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgSG9zdFdpbmRvdy4gSG9zdFdpbmRvdyBpcyBhbiBhYnN0cmFjdGlvbiBmb3Ig
dGhlIHBsYXRmb3JtIGxheWVyLCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gZ29vZCByZWFzb24g
dG8gdXNlIGl0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlQW5p
bWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldCk6IFVwZGF0ZWQgdG8gdXNlIHJlZmVyZW5jZQorICAgICAgICB3
aGVuIGNhbGxpbmcgUmVuZGVyV2lkZ2V0OjpmaW5kLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogVXNlIENocm9tZSBpbnN0ZWFkIG9mIEhvc3RX
aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvc3RXaW5kb3cpOiBVc2UgZWFy
bHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlCisgICAgICAgIGNsYXNz
IGZ1bmN0aW9uLCB3aGljaCB3YXMgZW1wdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93
CisgICAgICAgIGNvbnRhaW5zIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucyk6IFVzZSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6IFVz
ZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBSZW1vdmUgbm93LXVubmVlZGVkIGNvbnN0X2Nh
c3QuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cGx1Z2luVmlld3MpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5z
CisgICAgICAgIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0
eSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
OjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvCisg
ICAgICAgIHRoZSB0eXBlcyBpbiBhbmltYXRpb24gZnVuY3Rpb24gbWVtYmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUpOiBEaXR0by4KKworICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFwcGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIp
OiBVcGRhdGVkIHNpbmNlIHdlIG5vdworICAgICAgICB1c2UgcnZhbHVlIHJlZmVyZW5jZXMgYW5k
IG1vdmUgc2VtYW50aWNzIHdoZW4gc2V0dGluZyBsZW5ndGggcHJvcGVydGllcy4KKworICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25z
Rm9yRnJhbWUpOiBUd2Vha2VkIHRvCisgICAgICAgIHVzZSBhdXRvLCBwYXNzIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOiBSZXR1cm4gUmVmUHRyIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOiBBZGRl
ZCBhIGNvbnN0cnVjdG9yIHRoYXQgbW92ZXMgdGhlIGxlbmd0aHMgaW4sIHJhdGhlcgorICAgICAg
ICB0aGFuIGFsd2F5cyBjb3B5aW5nIHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oOiBU
dXJuZWQgTGVuZ3RoU2l6ZSBpbnRvIGEgc3RydWN0IGFuZCByZW1vdmVkIGFsbCB0aGUKKyAgICAg
ICAgZ2V0dGVyIGFuZCBzZXR0ZXIgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuIFVudXNlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUpOiBSZXR1cm4gUmVmIHJh
dGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOiBUYWtl
CisgICAgICAgIGEgcmVmZXJlbmNlLiBJbml0aWFsaXplIGRhdGEgbWVtYmVycyBpbiBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQ
YXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGRDaGlsZCk6IFRha2Ug
YSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwpOiBVcGRhdGVkIGZvciBjaGFuZ2Ug
dG8gYWRkQ2hpbGQKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgpOiBEZWxldGVkLiBUaGlzIHdhcyBuZXZlciBjYWxsZWQsCisgICAgICAgIHNvIG1h
ZGUgaXQgcHVyZSB2aXJ0dWFsLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6ZnJhbWVS
ZWN0c0NoYW5nZWQpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IERlbGV0ZWQuIFRoaXMgd2FzIGVtcHR5IHNv
IG1hZGUgaXQgcHVyZQorICAgICAgICB2aXJ0dWFsIGFuZCBjaGFuZ2VkIEZyYW1lVmlldyB0byBu
b3QgY2FsbCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzaG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpoaWRlKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBDaGFuZ2VkIHRoZSBjaGlsZHJl
biBzZXQgdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIENoYW5nZWQg
ZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBvdmVycmlkZGVuIHRvIGVpdGhlciBiZSBmaW5hbCBv
ciBub24tdmlydHVhbCwKKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVy
IGNhbGxlZCB0byBiZSBwdXJlIHZpcnR1YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSk6IFVwZGF0ZWQg
Zm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oOiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgor
ICAgICAgICByYXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRp
bWluZ0Z1bmN0aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5k
IFJlZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rp
b24gYW5kCisgICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50
IGNoZWNrIGluIEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25MaXN0OjpBbmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJl
ZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250
YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNz
aWdubWVudAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlcjo6Y2xvbmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAg
ICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9u
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9y
ZQorICAgICAgICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGlu
ZyB0byBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
Zyk6IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlk
ZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUg
b2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6IFNpbXBsaWZpZWQsIHJlbW92aW5nIHVu
bmVjZXNzYXJ5IGZsb2F0aW5nIHBvaW50IG1hdGguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpGaWx0ZXJPcGVyYXRpb25zKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBn
ZW5lcmF0ZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0
b3I9KTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGlzLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6IFN0cmVhbWxpbmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogUmVtb3Zl
ZCBpbmNsdWRlZCBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6IFR3ZWFrZWQgZm9ybWF0dGluZy4gUmVtb3ZlZCBuZXN0aW5n
CisgICAgICAgIGZyb20gI2lmIHNpbmNlIG91ciBmb3JtYXR0aW5nIG1ha2VzIGl0IGhhcmQgdG8g
c2VlIG5lc3RpbmcuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGUgdGhlIGRlZmF1
bHQgbW92ZSBhbmQgY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbmVtbnQgb3BlcmF0b3JzIGV4
Y2VwdAorICAgICAgICBpbiB0aGUgVVNFKEZSRUVUWVBFKSBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKTogVXBkYXRlZCBzaW5jZSBjbG9uZSBub3cgcmV0dXJu
cyBhIFJlZgorICAgICAgICByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0aW9uVmFsdWUpOiBEZWxldGVkLiBMZXQg
dGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpdGhv
dXQgZGVmaW5pbmcgaXQgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6IFVzZSBhIG1vZGVybiBmb3IK
KyAgICAgICAgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSwgYW5kIHVuY2hlY2tlZCBhcHBl
bmQuIEFsc28gdGVsbCB0aGUgY29tcGlsZXIgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIG1vdmUg
Y29uc3RydWN0b3IsIHNpbmNlIHRoZSBzcGVjaWFsIHdvcmsgaXMgb25seSBuZWVkZWQgZm9yIHRo
ZQorICAgICAgICBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQW5p
bWF0aW9uVmFsdWU6OkZpbHRlckFuaW1hdGlvblZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6S2V5ZnJhbWVWYWx1ZUxpc3QpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhT
aHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKTogVXBkYXRlZAorICAgICAgICBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgRG9uJ3QgYm90aGVyIHNldHRpbmcgbV9jbGllbnQgc2luY2Ugd2Ug
bmV2ZXIgdXNlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBDbGVhbiB1cCBjb2RlIGEgYml0CisgICAgICAgIGJ5IHVz
aW5nIGF1dG8gYSBsb3QgbW9yZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6IEFkZGVkIGluY2x1ZGUKKyAgICAg
ICAgdGhhdCBpcyBub3cgbmVlZGVkIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2Ug
Y2xhc3MuIFRpZGllZCB0aGUgY2xhc3MKKyAgICAgICAgdXAgYSBiaXQsIG1hcmtpbmcgaXQgZmlu
YWwsIG1ha2luZyBldmVyeXRoaW5nIHByaXZhdGUsIHRha2luZyBhIHJlZmVyZW5jZSwgYW5kCisg
ICAgICAgIHJlbW92aW5nIGFuIHVudXNlZCBkYXRhIG1lbWJlciwgbV9jbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOiBQYXNzIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwgbm93
IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1ZGUg
ZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgorICAg
ICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVy
QW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAo
LVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2VkIGFy
Z3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaXplRnJvbU5TQ29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5naHRTaXplIHN0cnVjdC4K
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6cmFkaW9TaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJv
bFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5pbXVtQ29udHJv
bFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEZvY3VzKTogVXBkYXRlZCB0byBwYXNzIGEgcmVm
ZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcDogUmVtb3ZlZC4gVW51c2VkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90
aW9uQ2xpZW50TW9jay5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6
IFJldHVybiBhIFJlZiBpbnN0ZWFkIG9mIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaGFyZWRDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRDdXJzb3JC
eU5hbWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KTog
UmVtb3ZlZCBhIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6IFVwZGF0
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4gQWxzbworICAgICAgICB1c2VkIGEgdmVjdG9yIHRvIGl0
ZXJhdGUgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIgaW5zdGVhZCBvZiByZWN1cnNp
b24uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6IFRh
a2UgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1h
c2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKTogVXNlIGF1dG8gYSBi
aXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0
ZW50KTogVXNlIHJlZmVyZW5jZSBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFza0NsaXBSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZpbGxMYXllcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJzVXNlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKTogVXNlIHJlZmVyZW5j
ZSBmb3IKKyAgICAgICAgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdl
b21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KTogVXNl
IHJlZmVyZW5jZXMgZm9yIHRoZSBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKTogVXNlIFJlbmRlclN0eWxlOjpyZXBsYWNlIHRvIHJl
cGxhY2UgdGhlCisgICAgICAgIG9sZCBzdHlsZSB3aXRoIHRoZSBuZXcgc3R5bGUsIGFuZCBnZXQg
dGhlIG9sZCBvbmUgb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJz
LgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxsTGF5ZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFVwZGF0ZWQgZm9y
IHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25PZmZzZXQpOgorICAgICAgICBSZWZhY3RvciBzbyB3ZSBkb24ndCBuZWVkIHNvIG1hbnkg
ZnVuY3Rpb25zIGluIFJlbmRlclN0eWxlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFsc28gZGlkIGEgZmV3IG90aGVy
IHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVU
aWxlZEltYWdlKTogVXBkYXRlZCBzaW5jZSBsYXllcnMgYXJlIHJlZmVyZW5jZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJh
Y2tncm91bmRJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKTogVXBkYXRlZCB0byB1c2UKKyAgICAg
ICAgcmVmZXJlbmNlcyBmb3IgbGF5ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6IFVz
ZSBXVEZNb3ZlIHRvIHBhc3MgYSBMZW5ndGhCb3guCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6aXNDb250cm9sU3R5bGVkKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3Ry
dWN0LAorICAgICAgICBtb3JlIFdURk1vdmUsIGNoYW5nZSBzaW5jZSBsYXllcnMgYXJlIGZlcmVu
Y2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cyk6IFVzZSBtb3ZlCisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9v
cCBpbnN0ZWFkIG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1Bh
cmVudFNvb24pOiBUYWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFs
dWU6OnJlc2V0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2
YWx1ZSByZWZlcmVuY2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUp
OiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVt
b3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5j
ZSBtYXRoTUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlT
dHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNo
b3VsZE1vdmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0
aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9y
ZGVyRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVy
UmFkaXVzKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1i
ZXIgbmFtZXMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxp
emVyIGxpc3RzIHNvIHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJl
cXVpcmluZyBleHBsaWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJl
cGxhY2UpOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisg
ICAgICAgIGNhbiBiZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2
YWx1ZSBvdXQgd2l0aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBh
Ym91dCBub3QgYmVpbmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVp
bmcKKyAgICAgICAgbW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3Rk
OjpleGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQm
KTogQWRkZWQgb3BlcmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVu
Y2VzIHdpdGhvdXQgYW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vz
cyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0
ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1
bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFy
ZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAg
ICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9y
PT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xh
c3MKKyAgICAgICAgZm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlv
biBpbiB0aGlzCisgICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBl
bGltaW5hdGUgdGhlIHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFy
ZCBkYXRhIG1lbWJlciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVy
TmFtZSBpbiBhCisgICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGlj
bHkgYWNjZXNzaWJsZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJu
IG1vcmUgcmVmZXJlbmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJu
IGZvciBsb29wcy4KKyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24g
YnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0
aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFk
ZGVkIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ug
b3BlcmF0aW9uLCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0
ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFk
ZGVkLiBDYWxscyB0aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0
IGVxdWFsaXR5CisgICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1h
bCBlZmZpY2llbmN5IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
RGFzaGJvYXJkUmVnaW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNl
dCBvZiBmdW5jdGlvbnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFsc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25J
dGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3Rp
ZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25U
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2Vs
ZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0
aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVt
c092ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRB
bGlnblNlbGZPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNP
dmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3Bw
OiBTaW1pbGFyIGNoYW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpj
cmVhdGUpOiBUYWtlIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlVmFsdWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVz
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRv
OyBtYWtlIHRoZW0gcHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8t
bG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6
IFRha2UgYW4gcnZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3Rv
bVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjb250YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBk
YXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zv
cm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUg
c2luY2UgbGF5ZXJzIGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEpTU291cmNl
Q29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUKQEAgLTM3MCw3
ICs5ODksNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdz
IG9mIHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRo
ZSBzZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVj
ZSBDUFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2NzI4OTUyOWViYWU0YzYzZGEuLjY2NjY0
ZTdhMzhhYmU3ZGIxN2MwZjhjMmI1NDU4MjM2MjkzNTQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldp
ZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2lu
Y2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgor
CiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVjdG9yIiwgInBsYXRmb3JtL3NxbCIsIGFu
ZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDk0MDQ2M2FhYzM5MWIzMDI2NmNiMDY5
ZGQwYWRmODE5Zjg3Yjg0Li4zN2Q5OTA3NjhhYmE5YTcyYmQ4Y2U5OGFlZThhMDdmNWRmZWI1NzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMDkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBv
ZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmVuY29kZSk6IFVwZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAg
ICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVu
Y3Rpb24KKyAgICAgICAgc2V0dGVycyBub3cgdGFrZXMgYW4gcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOiBVcGRhdGVkIHNp
bmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4KKwogMjAxNy0wMS0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyb3AgVk5vZGVUcmFj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhkYjRiZjAzZjZkZGVhN2U2
ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNlMmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Jj4o
bV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRlcy4KICAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3MWE3MjM3NGU3MTEyM2Uy
OTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZiMWI1M2Y2MTdjM2RiZWIy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQcml2YXRlTmFtZSYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1ib2xJbXBsJiB1aWQoKSBj
b25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZhMDk2ZTgxNjAzYzA4ZTU2
YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBhOWM5YzY3ZTJmM2U3NWM3
MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
cHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZjxUPiByZXBsYWNl
KFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4uMzA4ODFkM2JlMjgxZDAx
YzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNzcs
NyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBwbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMGJiNDZlYmU0OTJlOTAx
ZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZhNjFhZjUxYTZiMGU4Mzc4
YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3ZGQxYTMuLjY3NDZmNGVm
NGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25DbwogCiBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1V
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2JlNDIzYWI1OGNmMS4uYjVj
YjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnRl
eHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYyLDIxIEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
cGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAgICAgUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJl
ZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggZjkw
Zjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2MWJjYWRiMGMzYmM5YjMw
MDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBUKiBwKSB7IHJl
dHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
JiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQmPihwKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBSZWZQdHI8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNi
NzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0ODIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01XcmFwcGVkOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwogCi0gICAgSW1wbGVtZW50
YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50
YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNz
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNET01XcmFw
cGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IGIzZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjAwY2NhY2Q5NjRk
ZTVlZWUzNzBjZWFjYzBlOWRmMjE0MWI0NzgwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTQsMTAgKzU0LDkgQEAgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkKIHsKICAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgIGxvYWRl
ci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jvb3RNb2R1bGUoSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBpbXBvcnRlck1vZHVsZUtl
eS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggMDg4NjRmYTFhNjhlNDFh
YzdlZGNkZmRlN2RiNGFhZDBiMWY0MGUxNS4uNWYyMjVmNzRhYmI1NTI5MGFjZjExNjkyYzY2Y2Zi
ODNiN2JiMzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cApAQCAtMTQ0LDE4ICsxNDQsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBM
ZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCk7Ci0g
ICAgcmV0dXJuIExlbmd0aFNpemUoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQo
KSkpOworICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIHJldHVybiB7
IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29udmVydFRv
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwogfQogCiBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlKQogewotICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgIExlbmd0aCBvZmZzZXQgPSBMZW5ndGgoMCwgRml4ZWQpOwotCiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7CisgICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2Vu
dGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE2Niw2ICsxNjQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRp
bmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKIAorICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29y
ZCkgewogICAgIGNhc2UgQ1NTVmFsdWVUb3A6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzguLmU4NGQ1OTk3NzFl
ZjU3ZjVmOTZlZWRhOGUyM2FjMGM2MGRmMGY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBTZW5jaGEsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTYwNiwxMSArNjA2LDEwIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94KQogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxS
ZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0
UnVsZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7Ci0KKyAgICBhdXRvIGhvcml6b250YWxSZXBl
YXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVs
ZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2ZXJ0aWNhbFJlcGVhdDsKICAgICBpZiAoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSA9PSBpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkKLSAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVw
ZWF0OworICAgICAgICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigp
OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkp
OwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1v
dmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CkBAIC02ODgs
MjAgKzY4NywyMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29u
c3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgIHJldHVybiBDU1NSZWZs
ZWN0VmFsdWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7
CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3Np
dGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9u
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAobGF5
ZXItPmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgeworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5k
WE9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKTsKLSAgICAgICAgcG9zaXRpb25MaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLT5iYWNr
Z3JvdW5kWE9yaWdpbigpKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLmJhY2tncm91bmRYT3JpZ2luKCkpKTsKICAgICB9
Ci0gICAgcG9zaXRpb25MaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGxheWVyLT54UG9zaXRpb24oKSwgc3R5bGUpKTsKLSAgICBpZiAobGF5ZXItPmlzQmFj
a2dyb3VuZFlPcmlnaW5TZXQoKSkgeworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKGxheWVyLnhQb3NpdGlvbigpLCBzdHlsZSkpOworICAgIGlmIChsYXll
ci5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFja2dyb3Vu
ZFlPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpKSk7CiAgICAgfQotICAg
IHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChsYXllci0+eVBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uTGlzdDsK
KyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci55
UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTc2NSwzOSArNzY0LDM4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7Ci0gICAgbGlzdC5nZXQoKS5hcHBl
bmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVzLmhlaWdodCgpLCBzdHlsZSkp
OworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMu
d2lkdGgsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy5oZWlnaHQsIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJh
ZGl1cy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7Ci0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOworICAgIGlmIChyYWRpdXMud2lkdGggPT0gcmFk
aXVzLmhlaWdodCkKKyAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVl
KHJhZGl1cy53aWR0aCwgc3R5bGUpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3Jk
ZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkud2lkdGgoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQgPSBz
aG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7Ci0gICAg
Ym9vbCBzaG93SG9yaXpvbnRhbFRvcFJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoOworICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21SaWdo
dCA9IHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgpOworICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLndpZHRoKTsKIAotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCA9
IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tUmln
aHQgPSBzaG93VmVydGljYWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7
Ci0gICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRl
clRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21M
ZWZ0ID0gc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodDsKKyAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7Cisg
ICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8
IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCAhPSBzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRS
YWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJh
ZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOworICAgIGF1dG8gdG9wTGVmdFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcFJp
Z2h0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIGJvdHRvbVJpZ2h0UmFkaXVzID0gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsK
KyAgICBhdXRvIGJvdHRvbUxlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgYXV0byBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcExlZnRSYWRp
dXMtPml0ZW0oMCkpOwogICAgIGlmIChzaG93SG9yaXpvbnRhbFRvcFJpZ2h0KQogICAgICAgICBo
b3Jpem9udGFsUmFkaWktPmFwcGVuZCgqdG9wUmlnaHRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODA2
LDkgKzgwNCw5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9y
dGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKHNob3dIb3Jpem9u
dGFsQm90dG9tTGVmdCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKmJvdHRvbUxl
ZnRSYWRpdXMtPml0ZW0oMCkpOwogCi0gICAgbGlzdC5nZXQoKS5hcHBlbmQoaG9yaXpvbnRhbFJh
ZGlpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKGhvcml6b250
YWxSYWRpaSkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmVydGljYWxSYWRpaUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2ZXJ0aWNh
bFJhZGlpTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2
ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDEpKTsKICAgICBp
ZiAoc2hvd1ZlcnRpY2FsVG9wUmlnaHQpCiAgICAgICAgIHZlcnRpY2FsUmFkaWlMaXN0LT5hcHBl
bmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDEpKTsKQEAgLTgxNyw4ICs4MTUsOCBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93VmVydGljYWxCb3R0b21MZWZ0KQogICAgICAg
ICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDEpKTsK
IAotICAgIGlmICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpsaXN0LmdldCgpLml0ZW0oMCkpKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmVy
dGljYWxSYWRpaUxpc3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaWYgKCF2ZXJ0aWNhbFJhZGlp
TGlzdC0+ZXF1YWxzKGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QtPml0ZW0oMCkpKSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmVydGljYWxSYWRpaUxpc3QpKTsKIAogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtODg3LDcgKzg4NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNv
bXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZChtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKQEAgLTkzNCw3ICs5MzIsNyBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmls
dGVyT3BlcmF0aW9uLnR5cGUoKSkgewpAQCAtOTk2LDcgKzk5NCw3IEBAIFJlZjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFIKICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tTaXplcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNv
bGxlY3RvciwgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChz
cGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJh
Y2tTaXplc1tpXSwgc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25JbmRleCA9
IHRyYWNrU2l6ZXMuc2l6ZSgpOwogICAgIH0KQEAgLTExODcsMTMgKzExODUsMTMgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb24uaXNTcGFuKCkpIHsKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBv
c2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNwYW4pKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogI2VuZGlmCkBAIC0xMjA3LDE0ICsxMjA1LDE0IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uKQogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmlt
TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVHJh
bnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTI0Miw3ICsxMjQwLDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3Jv
bGxTbmFwQWxpZ24mIGFsaWcKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0
YSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghd2lsbENoYW5nZURhdGEgfHwg
IXdpbGxDaGFuZ2VEYXRhLT5udW1GZWF0dXJlcygpKQpAQCAtMTI1MywxMyArMTI1MSwxMyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxs
Q2hhbmdlRGF0YSogd2lsbENoYW5nZQogICAgICAgICBXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZVBy
b3BlcnR5UGFpciBmZWF0dXJlID0gd2lsbENoYW5nZURhdGEtPmZlYXR1cmVBdChpKTsKICAgICAg
ICAgc3dpdGNoIChmZWF0dXJlLmZpcnN0KSB7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6
OlNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6Q29udGVudHM6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudHMpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpQcm9wZXJ0eToKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmVhdHVyZS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGZlYXR1cmUuc2Vjb25kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWxs
Q2hhbmdlRGF0YTo6SW52YWxpZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ1NiwzOSArMTQ1NCwzOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVh
c3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAg
ICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVy
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfQogICAgIHJl
dHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlv
blZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkg
eworICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdG
dW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5j
dGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZh
bGlkOwogICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
KSB7CkBAIC0xNTExLDU5ICsxNTA5LDYwIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAg
ICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJP
ZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpz
dGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVz
cygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAg
ICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkg
PT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSA9PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVMaW5lYXIpOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRp
b25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9u
KGkpLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1
bmN0aW9uKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0
aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3
aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1h
dGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKnRyaWdnZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChz
Y3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwg
c3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6
Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdn
ZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAg
ICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9u
VHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRy
aWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblRyaWdnZXJWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCku
Z2V0KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJp
Z2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0K
KwogI2VuZGlmCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCkBAIC0xNzAwLDcgKzE2OTksNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4
dERlY29yYXRpb24pCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSkpOwogICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAKICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQpAQCAtMTc1OCw3ICsxNzU3LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0
RW1waGFzaXNQb3NpdGlvbgogICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb25VbmRlcikpKTsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpKSk7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcikpOwog
ICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIp
CkBAIC0xNzY3LDE2ICsxNzY2LDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
ZWZ0KSk7CiAgICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRp
b25SaWdodCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSaWdodCkpOwotCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25U
b0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24pCiB7CiAgICAg
YXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24p
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRmlyc3QpKTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgQWxsb3dFbmRI
YW5naW5nUHVuY3R1YXRpb24pCkBAIC0xNzg3LDcgKzE3ODUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5n
aW5nUHVuYwogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1
ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQpAQCAtMTgwMyw4ICsx
ODAxLDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxS
ZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXRZKTsKIAogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0Lmdl
dCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CisgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh4UmVwZWF0KSk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAKQEAgLTE4MjcsNDAgKzE4MjUsNDAgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3Qg
UmVuZGVyU3QKICAgICBpZiAoZmlsbFNpemUudHlwZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q292ZXIpOwogCi0gICAgaWYgKGZpbGxTaXplLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUu
d2lkdGgoKSwgc3R5bGUpOworICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodC5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS53aWR0aCwgc3R5bGUpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS5oZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUuaGVp
Z2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdHls
ZS5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAg
ICAgCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERh
dGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVy
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmlt
YWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1h
Z2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAg
ICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICB9Ci0gICAgaWYgKHN0eWxlLT5oYXNG
bG93RnJvbSgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewotICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG1hcCA9IHN0eWxlLT5jb3VudGVy
RGlyZWN0aXZlcygpOworICAgIGF1dG8qIG1hcCA9IHN0eWxlLmNvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCkBAIC0xODgzLDE0ICsxODgx
LDIxIEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlMaXN0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUNvdW50KCk7ICsr
aSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUtPmZvbnRD
YXNjYWRlKCkuZmFtaWx5QXQoaSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5
bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRGYW1pbHlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmIChzdHlsZS5mb250Q2FzY2Fk
ZSgpLmZhbWlseUNvdW50KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmFtaWx5KHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5QXQoMCkpOworICAgIHJldHVybiBmb250RmFtaWx5TGlz
dEZyb21TdHlsZShzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
bmVIZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIExlbmd0
aCBsZW5ndGggPSBzdHlsZS5saW5lSGVpZ2h0KCk7CkBAIC0xOTExLDIwMyArMTkxNiwyMDMgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q29tbW9uTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9Db21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgeworICAgIHN3aXRj
aCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpObzoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkp
IHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250
ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9Db250ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVh
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50UG9z
aXRpb246Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudFBvc2l0
aW9uOjpTdWJzY3JpcHQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVN1YikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246OlN1cGVyc2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBz
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6UGV0aXRlOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGV0
aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxs
UGV0aXRlOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VW5pY2FzZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmlj
YXNlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuaWNhc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OlRpdGxpbmc6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlVGl0bGluZ0NhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUxpbmluZ051bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVtcykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1i
ZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
c3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTcGFjaW5nKCkp
IHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3Bh
Y2luZygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9y
dGlvbmFsTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1bGFyTnVtYmVyczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVUYWJ1bGFyTnVtcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxG
cmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFs
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmlj
T3JkaW5hbCgpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlT3JkaW5hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNsYXNoZWRaZXJvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVI
aXN0b3JpY2FsRm9ybXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgeworICAg
IHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM3OCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVK
aXM3OCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzODM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSmlzODMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkw
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXMwNCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXMwNCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNpbXBsaWZpZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRy
YWRpdGlvbmFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZh
cmlhbnRFYXN0QXNpYW5XaWR0aCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5XaWR0aDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6OkZ1bGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVQcm9wb3J0aW9uYWxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdo
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWUxMDApOwogICAgIGNhc2UgRm9udFdlaWdodDIwMDoKQEAgLTIxMzgsMTkgKzIxNDMs
MTkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
eW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdHlsZSkpOwogICAgIGlmIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KQot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlaWdodCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVX
ZWlnaHQpKTsKICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygp
ICYgRm9udFN5bnRoZXNpc1NtYWxsQ2FwcykKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFs
bENhcHMpKTsKLSAgICByZXR1cm4gUmVmPENTU1ZhbHVlPihsaXN0LmdldCgpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxlbmd0aEdl
dHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxPYmplY3Q6
OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1wbGF0ZTxS
ZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1dGVkQ1NT
VmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgTGVuZ3RoIHVuem9vbXpl
ZExlbmd0aCA9IChzdHlsZS4qbGVuZ3RoR2V0dGVyKSgpOwogICAgIGlmICghaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgfHwgdW56b29temVkTGVuZ3RoLmlzRml4ZWQoKSkKQEAgLTIxNTksMTEgKzIx
NjQsOSBAQCBpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJn
aW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiB0ZW1wbGF0ZTxSZW5kZXJTdHls
ZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXI+Ci1pbmxpbmUgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHBhZGRpbmdPck1hcmdpbklzUmVuZGVyZXJEZXBlbmRl
bnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICEoc3R5bGUgJiYgKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0eWxlICYmIHJlbmRlcmVyLT5pc0Jv
eCgpICYmICEoc3R5bGUtPipsZW5ndGhHZXR0ZXIpKCkuaXNGaXhlZCgpOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQpAQCAtMjQ0
NSwxMSArMjQ0OCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9z
aXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoY29uc3QgU3R5bGVTZQogICAgIGF1dG8mIGNzc1Zh
bHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEucG9zaXRp
b25UeXBlKCkgPT0gTGVnYWN5UG9zaXRpb24pCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOwotICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRp
b24oKSkpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTGVnYWN5KSk7CisgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRpb24oKSkpOwogICAgIGlmIChkYXRhLnBvc2l0aW9u
KCkgPj0gSXRlbVBvc2l0aW9uQ2VudGVyICYmIGRhdGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0Fs
aWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCku
bGVuZ3RoKCkgPD0gMik7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8
PSAyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDU4LDIxICsyNDYxLDIxIEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbldpdGhPdmVyZmxvd0FsaWduCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSAhPSBDb250ZW50
RGlzdHJpYnV0aW9uRGVmYXVsdCkKLSAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOworICAgICAgICByZXN1bHQt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOwog
ICAgIGlmIChkYXRhLmRpc3RyaWJ1dGlvbigpID09IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0
IHx8IGRhdGEucG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwpIHsKICAgICAgICAg
Ym9vbCBncmlkRW5hYmxlZCA9IGZhbHNlOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgICAgIGdyaWRFbmFibGVkID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRhdGEu
cG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwgfHwgZ3JpZEVuYWJsZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRh
LnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKG5v
cm1hbEJlaGF2aW9yVmFsdWVJRCkpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKICAg
ICB9CiAgICAgaWYgKChkYXRhLnBvc2l0aW9uKCkgPj0gQ29udGVudFBvc2l0aW9uQ2VudGVyIHx8
IGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpICYmIGRh
dGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3Vs
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkp
OwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkubGVuZ3RoKCkgPiAwKTsKLSAgICBBU1NFUlQocmVz
dWx0LmdldCgpLmxlbmd0aCgpIDw9IDMpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+
bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8PSAzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk0LDEwICsyNDk3LDEwIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3BlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7
CiAgICAgYXV0byogc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSgqc3R5bGVk
RWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3RvbSwgb3du
ZWRTdHlsZSk7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQocHJvcGVydHlOYW1lKTsK
IH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VGV4dChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTI1NjAsODggKzI1NjMsNjkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
Q29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAg
ICAgICAgaWYgKCFsYXllcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllcnMtPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMtPmltYWdlKCktPmNzc1ZhbHVlKCk7Ci0K
KyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2UgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChsYXllcnMuaW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy5p
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KSB7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyckxheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3VyckxheWVyLT5pbWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy0+c2l6ZSgpLCAqc3R5bGUpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXll
cnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NTVmFsdWUobGF5
ZXJzLnNpemUoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3Vyckxh
eWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXll
ci0+c2l6ZSgpLCAqc3R5bGUpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxheWVy
cy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUobGF5ZXJzLnJlcGVhdFgoKSwgbGF5ZXJzLnJlcGVhdFkoKSk7CisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGN1cnJMYXllci0+cmVwZWF0WCgpLCBjdXJyTGF5ZXItPnJl
cGVhdFkoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU291cmNlVHlwZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBzdHlsZS0+bWFza0xheWVycygpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLT5tYXNrU291cmNl
VHlwZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+bWFza0xh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLm1hc2tTb3VyY2VUeXBlKCkp
OworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoY3VyckxheWVyLT5tYXNrU291cmNl
VHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUtPm1hc2tMYXll
cnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVy
cy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUobGF5ZXJzLT5jb21wb3NpdGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlm
ICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGxheWVycy5jb21wb3NpdGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5hdHRhY2htZW50KCkpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVudCgpKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKQEAgLTI2NDksNjUgKzI2MzMsNTkgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRPcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IEZpbGxMYXllciogbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBi
b29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwotICAgICAgICAgICAgaWYgKCFsYXllcnMt
Pm5leHQoKSkgewotICAgICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGxheWVy
cy0+Y2xpcCgpIDogbGF5ZXJzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBj
dXJyTGF5ZXItPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoYm94KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAo
KSA6IGxheWVycy5vcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShp
c0NsaXAgPyBjdXJyTGF5ZXItPmNsaXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0g
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVy
dHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3VyckxheWVyLCAqc3R5
bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+eFBvc2l0aW9uKCkpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy54UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICAgICAgY29uc3QgRmlsbExh
eWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+eVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAg
ICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRpb24oKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbGxhcHNl
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU2VwYXJhdGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygp
LCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZzoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpOwpAQCAtMjgyMiw3ICsyODAwLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwotICAgICAgICAg
ICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBh
dXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKICAgICAgICAgICAgIGlmIChjdXJzb3Jz
ICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKQEAgLTI4ODEsNTkgKzI4NTks
NTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTRm9u
dFZhbHVlPiBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZShzdHlsZSk7CisgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29tcHV0ZWRGb250LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0
eWxlKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250OwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5
bGUpOwotICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZhbWlseSwgcmV0
dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5PVEU6IEdl
Y2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgQ1NTUHJpbWl0aXZl
VmFsdWUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0LT5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+aXRlbSgwKTsKLSAg
ICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+ZmFtaWx5ID0gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21T
dHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CiAgICAgICAg
ICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM6CiAgICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNp
c0Zyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVT
ZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwog
ICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzOiB7CiAgICAgICAg
ICAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzID0gc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7CiAgICAgICAgICAgICBp
ZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiB2
YXJpYXRpb25TZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udFZh
cmlhdGlvblZhbHVlOjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9GbG93OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgQVNTRVJUKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJv
dygpIHx8IHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSkKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVJvdykpOwpAQCAtMjk0Myw3ICsyOTE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNw
ZWNzIG1lbnRpb24gdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNl
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI5Nzks
MTMgKzI5NTEsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZENvbHVtblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRSb3dTaG9ydGhhbmQo
KSk7Ci0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgogICAgICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5HYXAo
KSwgKnN0eWxlKTsKQEAgLTMxMjAsMTAgKzMwOTAsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueCgpLCAqc3R5bGUpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmpl
Y3RQb3NpdGlvbigpLnkoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CkBAIC0zMjI0LDMxICszMTk0LDMwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6CisgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogewogICAgICAgICAgICAgLy8g
SWYgQ1NTM19URVhUIGlzIGRpc2FibGVkIG9yIHRleHQtaW5kZW50IGhhcyBvbmx5IG9uZSB2YWx1
ZSg8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiksCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZS4KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dGV4dEluZGVudCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJ
bmRlbnQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgKnN0eWxlKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgLy8gSWYgQ1NTM19URVhUIGlzIGVuYWJs
ZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVhY2gtbGluZSBvciAtd2Via2l0LWhhbmdp
bmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1
ZUxpc3QuCiAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5n
aW5nKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQodGV4dEluZGVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodGV4dEluZGVudCkpOwogICAgICAgICAgICAgICAg
IGlmIChzdHlsZS0+dGV4dEluZGVudExpbmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlV2Via2l0RWFjaExpbmUpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5
bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlV2Via2l0SGFuZ2luZykpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dEluZGVudDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKHRleHRJbmRlbnQpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
U2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN0eWxlLT50ZXh0U2hh
ZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CkBAIC0zMzIxLDggKzMyOTAsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPndpZHRoKCksICpzdHlsZSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaWxsQ2hhbmdlOgotICAgICAgICAgICAgcmV0dXJuIGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxlLT53aWxsQ2hhbmdlKCkpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICByZXR1cm4gd2lsbENoYW5nZVByb3BlcnR5VmFsdWUoc3R5bGUt
PndpbGxDaGFuZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT53b3JkQnJlYWso
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKQEAgLTMzOTQsOSArMzM2
Miw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWxh
eVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRGlyZWN0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAg
ICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+
c2l6ZSgpOyArK2kpIHsKQEAgLTM0MTcsMTIgKzMzODUsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShzdHls
ZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxl
LT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1v
ZGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmlt
YXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7
CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkg
ewpAQCAtMzQ0MywxMCArMzQxMSwxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQ6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsr
aSkgewpAQCAtMzQ1OCwyMCArMzQyNiwyMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0
aW9uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6IHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5
bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0LT5hbmltYXRpb24oaSku
bmFtZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlv
bnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgewpAQCAtMzQ4MywxMyArMzQ1MSwxMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAg
IHJldHVybiB0aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVHJpZ2dlcjoKLSAgICAgICAgICAgIHJldHVybiBnZXRBbmltYXRpb25Ucmln
Z2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biBhbmltYXRpb25UcmlnZ2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKICNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmFwcGVhcmFuY2UoKSk7
CkBAIC0zNTMxLDggKzM0OTksOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAg
ICAgLy8gTm90IGEgcmVhbCBzdHlsZSBwcm9wZXJ0eSAtLSB1c2VkIGJ5IHRoZSBlZGl0aW5nIGVu
Z2luZSAtLSBzbyBoYXMgbm8gY29tcHV0ZWQgdmFsdWUuCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXI6IHsKLSAgICAgICAgICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExldHRlckRyb3Ao
KSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJvcCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNpemUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExl
dHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJv
cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIHNp
emUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6
Y3JlYXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUoc2l6ZSkpKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CkBAIC0zNTUyLDcg
KzM1MjAsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmUo
KSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luOiB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAgICAgICAgICAgICAgaWYgKGlz
PFJlbmRlckJveD4oKnJlbmRlcmVyKSkKQEAgLTM1NjYsNyArMzUzNCw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCAqc3R5bGUpKTsK
IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDog
Q1NTVmFsdWVMb2dpY2FsKTsKQEAgLTM1ODUsMTMgKzM1NTMsMTMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyU2VsZWN0
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAg
ICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksICpzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAg
ICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRS
YWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCAqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpz
dHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGlwOiB7CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKTsKQEAgLTM2MDcsNyArMzU3NSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0
ZWRUcmFuc2Zvcm0ocmVuZGVyZXIsICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW46IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveDsKICAgICAg
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQpAQCAtMzYyMyw0MiArMzU5
MSw0MSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGlmIChzdHls
ZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksICpz
dHlsZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNmb3JtU3R5bGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQ
cmVzZXJ2ZTNEKSA/IENTU1ZhbHVlUHJlc2VydmUzZCA6IENTU1ZhbHVlRmxhdCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZGVs
YXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9u
UHJvcGVydHk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VHJhbnNpdGlvblByb3BlcnR5VmFsdWUo
c3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9w
ZXJ0eVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXRUaW1pbmdG
dW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB0
aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCk7Ci0gICAgICAgICAgICBpZiAoYW5pbUxp
c3QpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9uc0xp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8gdHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3Qt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uID0gYW5pbUxpc3QtPmFuaW1hdGlv
bihpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb24g
PSBhbmltTGlzdC0+YW5pbWF0aW9uKGkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbWF0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9u
LmR1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltYXRpb24udGlt
aW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShhbmltYXRpb24uZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKGxpc3QucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKFdURk1vdmUo
bGlzdCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNp
dGlvbnNMaXN0OworICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHRyYW5zaXRpb25zTGlz
dCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAg
ICAgICAvLyB0cmFuc2l0aW9uLXByb3BlcnR5IGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFs
bCkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxEdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsK
LSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZl
bnRzOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+
cG9pbnRlckV2ZW50cygpKTsKQEAgLTM2NzksMzMgKzM2NDYsMjkgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOgog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUoc3R5bGUtPmxpbmVC
b3hDb250YWluKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWx0OgotICAgICAgICAgICAg
cmV0dXJuIGFsdFRleHRUb0NTU1ZhbHVlKHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBhbHRU
ZXh0VG9DU1NWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoK
LSAgICAgICAgICAgIHJldHVybiBjb250ZW50VG9DU1NWYWx1ZShzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFs
dWUoc3R5bGUsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1Zh
bHVlKCpzdHlsZSwgcHJvcGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVy
UmVzZXQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoc3R5bGUsIHByb3Bl
cnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKCpzdHlsZSwgcHJv
cGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDbGlwUGF0aDogewotICAg
ICAgICAgICAgQ2xpcFBhdGhPcGVyYXRpb24qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgp
OworICAgICAgICAgICAgYXV0byogb3BlcmF0aW9uID0gc3R5bGUtPmNsaXBQYXRoKCk7CiAgICAg
ICAgICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgaWYg
KGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVy
YXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS51cmwoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKGlzPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgc2hhcGVPcGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRv
d25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoKnN0eWxlLCBzaGFwZU9wZXJhdGlv
bi5iYXNpY1NoYXBlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc2hhcGVPcGVyYXRpb24ucmVm
ZXJlbmNlQm94KCkgIT0gQm94TWlzc2luZykKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3go
KSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJveE9wZXJh
dGlvbiA9IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveE9wZXJh
dGlvbi5yZWZlcmVuY2VCb3goKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGxpc3Q7CisgICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRp
b24pKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnJlZmVyZW5jZUJv
eCgpKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJ
bnRvOgpAQCAtMzczOCwyMCArMzcwMSwxOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aXNvbGF0aW9u
KCkpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2Rl
OiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5ibGVuZE1vZGUo
KSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxM
YXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRM
YXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy5ibGVuZE1vZGUoKSk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXll
cjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmJsZW5kTW9kZSgpKSk7
Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxh
eW91dCk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIGlmICgh
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPih2YWx1ZSwgcHJvcGVydHlWYWx1ZShwcm9wZXJ0
eSwgRG9Ob3RVcGRhdGVMYXlvdXQpKSkKQEAgLTM3NjgsNyArMzcyOSw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJbWFnZSgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSgqc3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIGJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKQEAgLTM5OTgsNyArMzk1OSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAog
ewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQpOworICAgIGF1dG8gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQp
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgYmUgbnVsbCBpbnN0ZWFkLCBhcyBpdCBpcyBpbiBTdHlsZVByb3BlcnRp
ZXM6OmdldFByb3BlcnR5VmFsdWU/CiAgICAgcmV0dXJuIHZhbHVlLT5jc3NUZXh0KCk7CkBAIC00
MDYzLDIyICs0MDI0LDIxIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICAgICAgbGlz
dC0+YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4gbGlz
dDsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtp
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKwogICAgIC8vIEFzc3Vt
ZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gcHJvcGVydHlWYWx1ZShz
aG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlPiByaWdodFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21W
YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSwgRG9Ob3RVcGRh
dGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gcHJvcGVydHlWYWx1
ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0
byB0b3BWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9O
b3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gcmlnaHRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gYm90
dG9tVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0sIERvTm90
VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIGxlZnRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogCiAgICAgLy8gQWxsIDQg
cHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdo
dFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQpAQCAtNDA5NiwxNyArNDA1Niwx
NSBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIGlmIChzaG93TGVmdCkKICAgICAgICAg
bGlzdC0+YXBwZW5kKGxlZnRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIHJldHVybiBs
aXN0OworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9y
dGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9y
dGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgICAgIGxpc3Qt
PmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisgICAg
ICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0s
IERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gV1RGTW92
ZShsaXN0KTsKIH0KIAogUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCkBAIC00MTE0LDggKzQwNzIsNyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25z
dCBDUwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShzZXRbaV0p
OwotICAgICAgICBpZiAodmFsdWUpCisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJvcGVydHlW
YWx1ZShzZXRbaV0pKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ld
LCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwpAQCAtNDEzOCw3
ICs0MDk1LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY28KICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gdmFsdWUtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdy
YXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAppbmRleCBjOGI2MTU1MGI2YmE3ZTYyYzNiNzMzZDQ1YWEwODU0MWEwODU1MDhhLi4zYzdjMjk5
NTYwYTgxZjE3YWQ2ODdhNWMzYzhiMjk2MzkzNDc5ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlJiwgRmxvYXRTaXplLCBHZW5lcmF0ZWRJbWFnZSYpOwotICAgIEdl
bmVyYXRlZEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJhdGVk
SW1hZ2UmPihtX2ltYWdlLmdldCgpKTsgfQorICAgIEdlbmVyYXRlZEltYWdlJiBpbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KICAgICB2b2lkIHB1bnRFdmljdGlvblRpbWVyKCkgeyBt
X2V2aWN0aW9uVGltZXIucmVzdGFydCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggMDY0MmI4NzhjZTkzNTIzY2ZlMGFjZDk2MWU5MTc1
NGFlYmUwZWEwYS4uMDllN2FkMzEwNjUxZDFhMDg3ZjJkYjdkM2Y4NDRiNzMxODMzMjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjExLDEyICsyMTEsMTAg
QEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0g
bV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKS5zaXplKCkpOwotICAgIFJlZlB0cjxDU1NLZXlm
cmFtZVJ1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKKyAgICBh
dXRvJiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKICAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJ1bGUgPSBhZG9wdFJlZihuZXcgQ1NTS2V5ZnJhbWVSdWxlKGNvbnN0X2Nh
c3Q8U3R5bGVSdWxlS2V5ZnJhbWUmPihtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2luZGV4
XS5nZXQoKSksIGNvbnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRoaXMpKSk7Ci0KKyAgICAg
ICAgcnVsZSA9IGFkb3B0UmVmKCpuZXcgQ1NTS2V5ZnJhbWVSdWxlKG1fa2V5ZnJhbWVzUnVsZS0+
a2V5ZnJhbWVzKClbaW5kZXhdLCBjb25zdF9jYXN0PENTU0tleWZyYW1lc1J1bGUqPih0aGlzKSkp
OwogICAgIHJldHVybiBydWxlLmdldCgpOyAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKaW5kZXggMjBjNTZlNjZiZTRmNTNiN2FlNmRhN2UyMzY1OTk0ODlmZWU2
YTJjZi4uNDgyZmQzZGE4MmNhMmM2MDMzMTIzYTY2NGVkMTFiNDkyODMzZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3QKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1BB
SVI7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7Ci0gICAgbV92YWx1ZS5wYWlyID0g
JlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCgpLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCgpLCBzdHlsZSkpLmxlYWtSZWYoKTsKKyAgICBtX3ZhbHVlLnBhaXIg
PSAmUGFpcjo6Y3JlYXRlKGNyZWF0ZShsZW5ndGhTaXplLndpZHRoLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCwgc3R5bGUpKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmluaXQoUmVmPENvdW50ZXI+JiYgY291bnRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVJ1bGUuaAppbmRleCA4MTBiOWE0NTRkNjU3NmU4YWU3OGU0ZjVlYmNmZjBiMDEyYjczZjIwLi43
MWYzNTUwNTU2YzY4NWY4ZjVmMDUxNWRhMDAzMmE4OTkxNjdhNzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZSgpOwogCiAgICAgLy8gRklYTUU6IE5vdCBDU1NP
TS4gUmVtb3ZlLgotICAgIFN0eWxlUnVsZSYgc3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxTdHlsZVJ1bGUmPihtX3N0eWxlUnVsZS5nZXQoKSk7IH0KKyAgICBTdHlsZVJ1bGUm
IHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgQ1NTU3R5bGVSdWxlKFN0eWxlUnVsZSYsIENTU1N0eWxlU2hlZXQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCAyYTI3ZGRiMDA5NGU0ODZkMGUwNDQ1NmZi
NTM1ZWFkMmU1NjgzOGQ2Li44NWM0NGEyZjNhOWI0OWZkMTE2ZmFlZTFjMzk2MmE3YWQzZmRlMmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC0xODgsMTIgKzE4OCwxMSBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgRmlsbExheWVyJiBsYXllciwgYwogc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRUb0xl
bmd0aFNpemUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhLCBMZW5ndGhTaXplJiBzaXplKQogewog
ICAgIGlmIChhdXRvKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKLSAgICAg
ICAgc2l6ZS5zZXRXaWR0aChwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLSAgICAgICAgc2l6ZS5zZXRIZWlnaHQocGFpci0+c2Vj
b25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwor
ICAgICAgICBzaXplLndpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNv
bnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgc2l6ZS5oZWlnaHQgPSBwYWlyLT5z
ZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgc2l6ZS5zZXRXaWR0aChwcmltaXRpdmVWYWx1ZS5jb252ZXJ0
VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLQotICAgIHJldHVybiAh
c2l6ZS53aWR0aCgpLmlzVW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0KCkuaXNVbmRlZmluZWQo
KTsKKyAgICAgICAgc2l6ZS53aWR0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxB
bnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgcmV0dXJuICFzaXplLndpZHRoLmlz
VW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0LmlzVW5kZWZpbmVkKCk7CiB9CiAKIHZvaWQgQ1NT
VG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5
ZXImIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApp
bmRleCBjOWZiNzMzNTk4NWI4YmM3YmU2ODY3YjhmNzFjZjIxMzE2MjU2YTNhLi5jMjg5Zjc4NDBh
YTY4Yzk4MTdlYmY0MWQ1NTI3NjZmYTIxNzYxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
QEAgLTI1OCwxMyArMjU4LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0
dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpCiAKIFN0cmluZyBGb250
RmFjZTo6ZmFtaWx5KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9i
YWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+ZmFtaWxpZXMoKS0+Y3Nz
VGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKIHsKLSAgICBjb25z
dF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoICht
X2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRTdHlsZU1hc2spIHsKICAgICBjYXNlIEZvbnRT
dHlsZU5vcm1hbE1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBGb250RmFj
ZTo6c3R5bGUoKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3
aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250V2VpZ2h0TWFzaykgewogICAgIGNh
c2UgRm9udFdlaWdodDEwME1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cmluZyBGb250
RmFjZTo6c3RyZXRjaCgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkg
Y29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZh
bHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTMyMCwxMyAr
MzIwLDEzIEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIAogU3RyaW5n
IEZvbnRGYWNlOjp2YXJpYW50KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNl
Jj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5n
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbXB1dGVGb250VmFyaWFudCht
X2JhY2tpbmctPnZhcmlhbnRTZXR0aW5ncygpKS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9u
dEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250
RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFj
a2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJl
U2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vcm1hbCIp
OwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4
IGIyMWRkNWQ1NjM3MzlmZmJkZDFkODlkODFlNWU0NDMwYWFlNmUxNTMuLjY4ZmZmZGViOWU0MmM3
MTYyM2Q4N2E1NzVjYTBkYzVjNzBhYWY3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5j
dGlvbnMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgi
CiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5j
bHVkZSAiTGVuZ3RoU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw2ICs1OSwx
MSBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSkKICAgICByZXR1cm4gMDsKIH0KIAorTGF5b3V0U2l6ZSBzaXpl
Rm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGgsIGNvbnN0IExheW91dFNpemUm
IG1heGltdW1WYWx1ZSkKK3sKKyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGgud2lk
dGgsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoLmhlaWdodCwg
bWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworfQorCiAvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBs
YXlvdXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2Fu
IGJlIHJlbW92ZWQuIFNlZSBidWcgNzExNDMuCiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSkKIHsKQEAgLTExMyw3
ICsxMTksNyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBmbG9hdCBtYXhpbXVtVmFsdWUpCiAKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXpl
KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
IHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53
aWR0aCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUu
aGVpZ2h0KCksIGJveFNpemUuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGxlbmd0aFNpemUud2lkdGgsIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JM
ZW5ndGgobGVuZ3RoU2l6ZS5oZWlnaHQsIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAppbmRleCA5
ZDIyNGQ5MTEyN2U1ZjgzYWFiMTA0ODkyZGU2ODA0NjQxMThkZDZhLi4xYzRlMDUwZGE2MDRhNDNh
NTY4M2FhZmQyZWVkNDM2YTQ1MzEzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUmlrIENh
YmFuaWVyIChjYWJhbmllckBhZG9iZS5jb20pCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdo
dCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtMjksOCArMjksOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFNpemU7
Ci1jbGFzcyBMYXlvdXRVbml0OworY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFJlbmRlclZpZXc7
CisKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIApAQCAtMzgsNiArMzksNyBA
QCBpbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQg
bWF4aW11bVZhbHVlKTsKIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSk7CiBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBXRUJDT1JFX0VYUE9SVCBM
YXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlKTsKK0xheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYs
IGNvbnN0IExheW91dFNpemUmIG1heGltdW1WYWx1ZSk7CiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIFdFQkNPUkVfRVhQ
T1JUIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11
bVZhbHVlKTsKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNp
emUmLCBjb25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNTM4MzQyN2Q5MmFiZmYxOTdl
N2ZhZGQ2ODc0Nzc3ZDdhODU0OWQ1Yy4uZDc2OWE1YTU4NmM4MTEyNzE4N2U3NTQ0MzJjOWYyYzVm
OGM3NzFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTMxLDM0ICszMiwzNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHBhaW50T3JkZXIo
UGFpbnRPcmRlciBwYWludE9yZGVyKQogewotICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IHBhaW50T3Jk
ZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIFJlZjxD
U1NWYWx1ZT4gZmlsbCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlRmlsbCk7Ci0gICAgUmVmPENTU1ZhbHVlPiBzdHJva2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSk7Ci0gICAgUmVmPENTU1ZhbHVlPiBtYXJr
ZXJzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJz
KTsKKyAgICBpZiAocGFpbnRPcmRlciA9PSBQYWludE9yZGVyTm9ybWFsKQorICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwog
CisgICAgYXV0byBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBzd2l0Y2ggKHBhaW50T3JkZXIpIHsKICAgICBjYXNlIFBhaW50T3JkZXJO
b3JtYWw6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsOgotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURk1vdmUoZmlsbCkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRmlsbCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsTWFya2VyczoKLSAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKLSAgICAgICAgcGFpbnRPcmRlckxp
c3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUZpbGwpKTsK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
YWludE9yZGVyU3Ryb2tlOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUo
c3Ryb2tlKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQYWludE9yZGVyU3Ryb2tlTWFya2VyczoKLSAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZChXVEZNb3ZlKHN0cm9rZSkpOwotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KFdURk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKSk7CisgICAgICAg
IHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRl
ck1hcmtlcnM6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJz
KSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUGFpbnRPcmRlck1hcmtlcnNTdHJva2U6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBl
bmQoV1RGTW92ZShtYXJrZXJzKSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RG
TW92ZShzdHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKKyAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZVN0cm9rZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFdURk1v
dmUocGFpbnRPcmRlckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCmluZGV4IGU0Yzc5NDNmODA4MjU1ZTI5MTZhNjcxZTRmNTk1M2M3ZGFmZDIxNzEuLmQ0
OTUwYTA2OWM5YTNmZjMwZWE2MWY1ZDE4YjRhMWZjOWFjMWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI5NCwyMSArMjk0LDE5IEBAIGlubGlu
ZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NT
VG9MZW5ndGhDb252ZXJzaW9uCiAKIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJhZGl1cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1
ZS5wYWlyVmFsdWUoKTsKKyAgICBhdXRvKiBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9
LCB7IDAsIEZpeGVkIH0gfTsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVy
c2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOwotICAgIExlbmd0aCByYWRpdXNXaWR0aCA9IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252
ZXJzaW9uRGF0YSwgKnBhaXItPmZpcnN0KCkpOwotICAgIExlbmd0aCByYWRpdXNIZWlnaHQgPSBj
b252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5zZWNvbmQoKSk7Cisg
ICAgTGVuZ3RoU2l6ZSByYWRpdXMgeyBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRh
dGEsICpwYWlyLT5maXJzdCgpKSwgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRh
LCAqcGFpci0+c2Vjb25kKCkpIH07CiAKLSAgICBBU1NFUlQoIXJhZGl1c1dpZHRoLmlzTmVnYXRp
dmUoKSk7Ci0gICAgQVNTRVJUKCFyYWRpdXNIZWlnaHQuaXNOZWdhdGl2ZSgpKTsKLSAgICBpZiAo
cmFkaXVzV2lkdGguaXNaZXJvKCkgfHwgcmFkaXVzSGVpZ2h0LmlzWmVybygpKQotICAgICAgICBy
ZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAg
ICBBU1NFUlQoIXJhZGl1cy53aWR0aC5pc05lZ2F0aXZlKCkpOworICAgIEFTU0VSVCghcmFkaXVz
LmhlaWdodC5pc05lZ2F0aXZlKCkpOworICAgIGlmIChyYWRpdXMud2lkdGguaXNaZXJvKCkgfHwg
cmFkaXVzLmhlaWdodC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIHJldHVybiBMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRp
dXNIZWlnaHQpOworICAgIHJldHVybiByYWRpdXM7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCkBAIC03NjYsNyArNzY0LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVl
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIK
ICAgICB9CiAKICAgICBpZiAoaXNJbWFnZVNoYXBlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFNo
YXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFs
dWUpLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlOwog
ICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKQEAgLTc4Niw3ICs3ODQs
NyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlcgogICAgIH0KIAogICAgIGlmIChzaGFwZSkKLSAg
ICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKHNoYXBlKSwgcmVmZXJlbmNl
Qm94KTsKKyAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzaGFwZS5yZWxlYXNlTm9u
TnVsbCgpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNz
aW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGZmZDlkNDliYWE2OTM3
MzRjNjFkNWE1OTdmZmE0MDU3NWY3MjI3ZS4uZmJmYmQ4MjJmYWZkZGQ2YmMwNmUzZTZkZGNhMmFm
MGRiMjlmYjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYg
KzU4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWwjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImKTsgXAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpCiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShUJiYgdmFsdWUpIHsgcmV0dXJu
IHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KK2lubGluZSBMZW5ndGggZm9yd2FyZEluaGVyaXRl
ZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBj
b3B5OyB9CitpbmxpbmUgTGVuZ3RoU2l6ZSBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3QgTGVu
Z3RoU2l6ZSYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBjb3B5OyB9Citpbmxp
bmUgTGVuZ3RoQm94IGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5ndGhCb3gmIHZhbHVl
KSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQorCiAvLyBOb3RlIHRoYXQgd2Ug
YXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgog
Y2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tIHsKIHB1YmxpYzoKQEAgLTMwMSw2ICszMDYsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzbwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorCiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhKQogewogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSA6IExlbmd0aChV
bmRlZmluZWQpOwpAQCAtMzE4LDcgKzMyNCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAg
ICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhc2hib2FyZFJlZ2lvbiog
Zmlyc3QgPSByZWdpb247CisgICAgYXV0byogZmlyc3QgPSByZWdpb247CiAgICAgd2hpbGUgKHJl
Z2lvbikgewogICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+
dG9wKCksIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCku
Y29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252
ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKQEAg
LTMzNSwxNyArMzQxLDIwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAgICAgICAgICAgICBs
ZWZ0ID0gTGVuZ3RoKCk7CiAKICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFz
aGJvYXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdp
b246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQp
LCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CiAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpS
ZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdp
b24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rhbmds
ZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3Zl
KGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CisKICAgICAgICAgcmVn
aW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7CiAgICAgfQogCiAgICAgc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CiB9CisKICNlbmRpZiAvLyBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCisKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VS
ZXNvbHV0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2Uoc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UoKSk7CkBAIC0zNzgsMTggKzM4NywyMyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRp
b24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
SW1hZ2VSZXNvbHV0aW9uU25hcChzbmFwKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dEltYWdlUmVzb2x1dGlvbihyZXNvbHV0aW9uKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
SU1BR0VfUkVTT0xVVElPTikKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOworCisgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGVuZ3RoIHdpZHRoOwogICAgIExlbmd0aCBo
ZWlnaHQ7CiAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwot
ICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogICAgIHN3
aXRjaCAodmFsdWVMaXN0Lmxlbmd0aCgpKSB7CkBAIC00NTMsMTIgKzQ2NywxMiBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFBhZ2VTaXplKHsgV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSB9KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRUZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0g
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+dGV4dEluZGVudCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRJbmRlbnQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5k
ZW50KCkgfSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRJbmRlbnRMaW5lKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dElu
ZGVudExpbmUoKSk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlw
ZShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJbmRlbnRUeXBlKCkpOwpAQCAtNDk2
LDcgKzUxMCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKGxlbmd0aE9yUGVy
Y2VudGFnZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChsZW5ndGhPclBlcmNlbnRhZ2VWYWx1ZSk7
CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KFdURk1vdmUobGVuZ3Ro
T3JQZXJjZW50YWdlVmFsdWUpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudExpbmUodGV4dEluZGVudExpbmVWYWx1ZSk7CiAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlwZSh0ZXh0SW5kZW50VHlw
ZVZhbHVlKTsKQEAgLTYxMSw4ICs2MjUsOCBAQCBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVS
X0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBXaWR0aCkKIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+bGluZUhlaWdodCgpKTsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExpbmVIZWlnaHQoc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0TGluZUhlaWdodChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmxp
bmVIZWlnaHQoKSB9KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExp
bmVIZWlnaHQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCkgfSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsTGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQpAQCAtNjI4
LDggKzY0Miw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxp
bmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKCFsaW5lSGVpZ2h0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExpbmVI
ZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFNwZWNpZmllZExpbmVIZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgbGluZUhlaWdodC52YWx1ZSgpIH0p
OworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChXVEZN
b3ZlKGxpbmVIZWlnaHQudmFsdWUoKSkpOwogfQogCiAjZW5kaWYKQEAgLTY2NSwyMSArNjc5LDIx
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIGF1dG8qIHBhcmVudFN0eWxlID0gc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpOwogICAgIGlmICghcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkK
ICAgICAgICAgcmV0dXJuIGFwcGx5SW5pdGlhbENsaXAoc3R5bGVSZXNvbHZlcik7Ci0gICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKHBhcmVudFN0eWxlLT5jbGlwVG9wKCksIHBhcmVu
dFN0eWxlLT5jbGlwUmlnaHQoKSwgcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKSwgcGFyZW50U3R5
bGUtPmNsaXBMZWZ0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChMZW5n
dGggeyBwYXJlbnRTdHlsZS0+Y2xpcFRvcCgpIH0sIExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlw
UmlnaHQoKSB9LAorICAgICAgICBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpIH0s
IExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlwTGVmdCgpIH0pOwogICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ2xpcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwotCi0gICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVW
YWx1ZS5yZWN0VmFsdWUoKSkgeworICAgIGlmIChhdXRvKiByZWN0ID0gcHJpbWl0aXZlVmFsdWUu
cmVjdFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2
ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7Ci0gICAgICAgIExlbmd0aCB0
b3AgPSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIExlbmd0aCByaWdodCA9IHJlY3QtPnJpZ2h0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4o
Y29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggYm90dG9tID0gcmVjdC0+Ym90dG9tKCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggbGVm
dCA9IHJlY3QtPmxlZnQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQpOworICAgICAgICBhdXRvIHRvcCA9IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9MZW5ndGg8
Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNp
b24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYXV0byByaWdodCA9IHJlY3QtPnJpZ2h0KCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBhdXRvIGJvdHRv
bSA9IHJlY3QtPmJvdHRvbSgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lv
biB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
KyAgICAgICAgYXV0byBsZWZ0ID0gcmVjdC0+bGVmdCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNv
bnZlcnNpb25EYXRhKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKFdU
Rk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0
KSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0byk7CkBAIC03MzUsMTIgKzc0OSwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
cwogICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CiAKLXRl
bXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgordGVtcGxhdGU8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0
eT4KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dW
YWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAgICAgIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwpA
QCAtNzYxLDggKzc3NSw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlU
ZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBj
b2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVl
LmNvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5
bGUsIGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3cpCisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0
byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coV1RGTW92ZShz
aGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlz
IG5vdCB0aGUgZmlyc3QgZW50cnkKQEAgLTExNTYsMjIgKzExNzAsMjIgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIEMKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwor
ICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHls
ZSgpOwogICAgIHN2Z1N0eWxlLnNldEZpbGxQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZp
bGxQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRDb2xvcigpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludFVyaSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1Zp
c2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0RmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZH
U3R5bGUoKTsKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnUGFyZW50U3R5bGUgPSBzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUg
PSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3Zn
UGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CiAg
ICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLmZpbGxQYWludFR5cGUoKSwg
c3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50
VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxl
UmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIAogfQogCiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYg
c3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZh
bHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7Cisg
ICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxl
KCk7CisgICAgY29uc3QgYXV0byogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUo
KSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBT
dHJpbmcgdXJsOwogICAgIGlmICh2YWx1ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0
IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAt
MTE4MywxMCArMTE5NywxMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgQ29sb3IgY29sb3I7Ci0gICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSA9
IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CisgICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SOwogICAgIGlmIChsb2NhbFZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgIHBh
aW50VHlwZSA9IFNWR19QQUlOVFRZUEVfVVJJOwotICAgICAgICB1cmwgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4obG9jYWxWYWx1ZSktPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIHVybCA9
IGxvY2FsVmFsdWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChsb2NhbFZhbHVlLT5p
c1ZhbHVlSUQoKSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9OT05FIDogU1ZH
X1BBSU5UVFlQRV9VUklfTk9ORTsKICAgICBlbHNlIGlmIChsb2NhbFZhbHVlLT5pc1ZhbHVlSUQo
KSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpIHsKQEAg
LTEyMDcsMTUgKzEyMjEsMTUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIAogaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTdHJva2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHls
ZSgpOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NT
VkdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHN2Z1Bh
cmVudFN0eWxlLnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludENv
bG9yKCksIHN2Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUq
IGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgY29uc3QgYXV0byogbG9j
YWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBTdHJpbmcgdXJsOwogICAgIGlmICh2YWx1
ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTIyNyw3ICsxMjQxLDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIEMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIENvbG9yIGNvbG9y
OwotICAgIFNWR1BhaW50VHlwZSBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOwor
ICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjsKICAgICBpZiAobG9j
YWxWYWx1ZS0+aXNVUkkoKSkgewogICAgICAgICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VS
STsKICAgICAgICAgdXJsID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGxvY2FsVmFsdWUp
LT5zdHJpbmdWYWx1ZSgpOwpAQCAtMTI1OCw3ICsxMjcyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGUKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
U3ZnU2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHN2Z1N0eWxlLnNldFNoYWRv
dyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwMDQ2OWVl
N2ZhMDkxNjY4ZjYzODY2YWVjYjQ1NGIwMzM0MTI4NTc1Li4zNDk3YjJhNzA3ZDRlNTQyNjkzNmIy
ZDFmODZmNTJlZWMzOWE4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xNjgsNyArMTY4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNhY2hl
Qm9yZGVyQW5kQmFja2dyb3VuZCgpCiAgICAgbV9oYXNVQUFwcGVhcmFuY2UgPSBtX3N0eWxlLT5o
YXNBcHBlYXJhbmNlKCk7CiAgICAgaWYgKG1faGFzVUFBcHBlYXJhbmNlKSB7CiAgICAgICAgIG1f
Ym9yZGVyRGF0YSA9IG1fc3R5bGUtPmJvcmRlcigpOwotICAgICAgICBtX2JhY2tncm91bmREYXRh
ID0gKm1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5kRGF0
YSA9IG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBtX3N0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiB9CkBAIC0xMzI4LDcgKzEz
MjgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgICAgICAvLyBXZSBjYW4gYnVpbGQg
dXAgdGhlIHN0eWxlIGJ5IGNvcHlpbmcgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4g
ZWFybGllciBzdHlsZSBvYmplY3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgZXhhY3QKICAgICAgICAg
Ly8gc3R5bGUgZGVjbGFyYXRpb25zLiBXZSB0aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5o
ZXJpdGVkIHByb3BlcnRpZXMsIGlmIGFueSwgYXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24g
dGhlIAogICAgICAgICAvLyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMg
bWVtb3J5IGJ5IHJldXNpbmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KLSAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS5n
ZXQoKSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKCpjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlKTsKICAgICAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCktPmlu
aGVyaXRlZERhdGFTaGFyZWQoY2FjaGVJdGVtLT5wYXJlbnRSZW5kZXJTdHlsZS5nZXQoKSkgJiYg
IWlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSkgewogICAgICAgICAgICAgRUluc2lkZUxpbmsg
bGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRlbnRpY2FsIGluaGVyaXRlZCBw
cm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0aGVuIHRoZQpAQCAtMTY2MSwx
NyArMTY2MSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgIGlmIChpc0luaGVyaXQg
JiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKICAgICAKLSAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKLSAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlVG9BcHBseSk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjdXN0b21WYWwgPSBzdGF0ZS5wYXJlbnRT
dHlsZSgpLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCkpOwot
ICAgICAgICAgICAgaWYgKCFjdXN0b21WYWwpCi0gICAgICAgICAgICAgICAgY3VzdG9tVmFsID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgp
LCBjdXN0b21WYWwpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5h
bWUoKSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShj
dXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eSk7CisgICAgaWYgKGN1c3RvbVBy
b3BlcnR5VmFsdWUpIHsKKyAgICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUt
Pm5hbWUoKTsKKyAgICAgICAgYXV0byogdmFsdWUgPSBpc0luaXRpYWwgPyBudWxscHRyIDogaXNJ
bmhlcml0ID8gc3RhdGUucGFyZW50U3R5bGUoKS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1l
KSA6IGN1c3RvbVByb3BlcnR5VmFsdWU7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUgPyBtYWtlUmVmKCp2YWx1ZSkgOiBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggODUxOTg1NTU3YzMzMzg1YzY4MzQxNDM5ZGFmNGU1
NjY5YzMzYzc3Zi4uZTYxN2MzOGU3OWYyMzUxZmNhODdhOGJkYjI2NDEwNDA3MTNiYWYzNyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNjE0LDggKzYxNCw4IEBAIHN1YiBnZW5lcmF0ZUFuaW1h
dGlvblByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgbXkgJGluZGVudCA9IHNoaWZ0Owog
CiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiQW5pbWF0aW9uTGlzdCYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVu
c3VyZUFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlz
dCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5z
aXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiYXV0byYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVuc3VyZUFu
aW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiYXV0byogcGFyZW50TGlzdCA9IHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic2l6ZV90IGkgPSAwLCBw
YXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFy
ZW50TGlzdC0+YW5pbWF0aW9uKGkpLiIgLiBnZXRUZXN0RnVuY3Rpb24oJG5hbWUpIC4gIigpOyAr
K2kpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmIChsaXN0LnNp
emUoKSA8PSBpKVxuIjsKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdWIgZ2VuZXJhdGVBbmltYXRpb25Q
cm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgIGxpc3QuYW5pbWF0aW9uKGkpLnNldEFuaW1hdGlvbk1vZGUocGFyZW50TGlzdC0+YW5p
bWF0aW9uKGkpLmFuaW1hdGlvbk1vZGUoKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIn1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICJcbiI7Ci0gICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIi8vIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJv
cGVydHkgc2V0LlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKCA7IGkg
PCBsaXN0LnNpemUoKTsgKytpKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgbGlzdC5hbmltYXRpb24oaSkuIiAuIGdldENsZWFyRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xu
IjsKIApAQCAtNjc0LDExICs2NzQsMTEgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJ
bml0aWFsVmFsdWVTZXR0ZXIgewogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiLy8gQ2hlY2sgZm9yIChzaW5nbGUtbGF5ZXIpIG5vLW9w
IGJlZm9yZSBjbGVhcmluZyBhbnl0aGluZy5cbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiY29uc3QgRmlsbExheWVyJiBsYXllcnMgPSAqc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4i
IC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJhdXRvJiBsYXllcnMgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gImlmICghbGF5ZXJzLm5leHQoKSAmJiAoIWxheWVycy4iIC4gJHRlc3RGdW5jdGlv
biAuICIoKSB8fCBsYXllcnMuIiAuICRnZXR0ZXIgLiAiKCkgPT0gJGluaXRpYWwpKVxuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIq
IGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVu
Y3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJh
dXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3Nv
ckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiY2hpbGQtPiIgLiAkc2V0dGVyIC4gIigiIC4gJGluaXRpYWwgLiAiKTtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChjaGlsZCA9IGNoaWxkLT5uZXh0KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBjaGlsZC0+IiAuICRjbGVhckZ1bmN0aW9uIC4gIigpO1xuIjsKQEAgLTY5NywxMiAr
Njk3LDEyIEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVy
IHsKIAogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIi8vIENoZWNrIGZvciBuby1vcCBiZWZvcmUgY29weWluZyBhbnl0aGluZy5cbiI7Ci0g
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiaWYgKCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSAqc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKKyAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4iKCkgPT0gc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
IlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJhdXRvKiBjaGlsZCA9ICZzdHls
ZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3NvckZ1bmN0aW9uKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2
aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
Zm9yIChhdXRvKiBwYXJlbnQgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRM
YXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1
bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKKyAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAm
JiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQo
KSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkg
e1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hp
bGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJU
eXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CkBAIC03MjQsNyArNzI0LDcg
QEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgIG15ICRDU1NQ
cm9wZXJ0eUlkID0gIkNTU1Byb3BlcnR5IiAuICRuYW1lVG9JZHskbmFtZX07CiAKICAgbXkgJHNl
dHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5
ZXIqIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29y
RnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJhdXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nl
c3NvckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpICYmICFpczxD
U1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3Jl
YXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBn
ZW5lcmF0ZUluaGVyaXRWYWx1ZVNldHRlciB7CiAgIH0KICAgaWYgKCEkZGlkQ2FsbFNldFZhbHVl
KSB7CiAgICAgbXkgJGluaGVyaXRlZFZhbHVlID0gJHBhcmVudFN0eWxlIC4gIi0+IiAuICgkaXNT
VkcgPyAic3ZnU3R5bGUoKS4iIDogIiIpIC4gICRnZXR0ZXIgLiAiKCkiOwotICAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICIgLiBnZW5lcmF0ZVNldFZhbHVlU3RhdGVtZW50KCRu
YW1lLCAkaW5oZXJpdGVkVmFsdWUpIC4gIjtcbiI7CisgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5hbWUsICJmb3J3YXJk
SW5oZXJpdGVkVmFsdWUoIiAuICRpbmhlcml0ZWRWYWx1ZSAuICIpIikgLiAiO1xuIjsKICAgfQog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIn1cbiI7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gIlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJP
cHRpb25zeyRuYW1lfXsiY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKSI7CiAg
IH0gZWxzaWYgKGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1l
fXsiY29uZGl0aW9uYWwtY29udmVydGVyIn0pKSB7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29u
ZGl0aW9uYWwtY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTtcbiI7Ci0gICAg
JGNvbnZlcnRlZFZhbHVlID0gImNvbnZlcnRlZFZhbHVlLnZhbHVlKCkiOworICAgICRjb252ZXJ0
ZWRWYWx1ZSA9ICJXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlLnZhbHVlKCkpIjsKICAgfSBlbHNlIHsK
ICAgICAkY29udmVydGVkVmFsdWUgPSAiZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGU0MTJlYjVhZTVhMGE3OGRjODUy
YzQwZjNhYWM3MGI0YTZkYWY3NzIuLmNkNzE1NDQxZTdkOWNhNTZjNGY3MmUzMWY4Y2VhNTdmZjA2
MzM3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgYm9v
bCBEb2N1bWVudDo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KQogdm9pZCBEb2N1bWVu
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFn
ZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRv
bSwgaW50JiBtYXJnaW5MZWZ0KQogewogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTY29wZSgpLnJlc29sdmVy
KCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CisgICAgYXV0byBzdHlsZSA9IHN0eWxlU2NvcGUo
KS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOwogCiAgICAgaW50IHdpZHRoID0g
cGFnZVNpemUud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0KCk7CkBA
IC0yMDg4LDExICsyMDg4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0lu
UGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgICAgICAg
ICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUEFH
RV9TSVpFX1JFU09MVkVEOiB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdl
U2l6ZSgpOwotICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7Ci0gICAgICAg
IEFTU0VSVChzaXplLmhlaWdodCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gdmFsdWVG
b3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwKTsKLSAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGF1dG8mIHNpemUgPSBzdHlsZS0+cGFnZVNp
emUoKTsKKyAgICAgICAgQVNTRVJUKHNpemUud2lkdGguaXNGaXhlZCgpKTsKKyAgICAgICAgQVNT
RVJUKHNpemUuaGVpZ2h0LmlzRml4ZWQoKSk7CisgICAgICAgIHdpZHRoID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS53aWR0aCwgMCk7CisgICAgICAgIGhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHNpemUu
aGVpZ2h0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFBhdGguY3BwCmluZGV4IGMyYmRkMDU2Nzc4NjdhMDI5YzUxYWZhM2U3Y2Y5NzM3ZWU3
OTZlYmUuLjc3NzEyODFhYjk0N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFBhdGguY3BwCkBAIC0yNTgsMjMgKzI1OCwyMSBAQCBib29sIEV2ZW50UGF0aDo6
aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiBW
ZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1Rhcmdl
dChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIFZlY3RvcjxFdmVudFRh
cmdldCo+IHBhdGg7Ci0gICAgY29uc3QgTm9kZSogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nhc3Q8RXZl
bnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOworICAgIGF1dG8qIHRhcmdldE5vZGUgPSBjb25z
dF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKICAgICBpZiAoIXRhcmdldE5v
ZGUpIHsKLSAgICAgICAgY29uc3QgRE9NV2luZG93KiBkb21XaW5kb3cgPSBjb25zdF9jYXN0PEV2
ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOworICAgICAgICBhdXRvKiBkb21XaW5k
b3cgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOwogICAg
ICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICAgICB0
YXJnZXROb2RlID0gZG9tV2luZG93LT5kb2N1bWVudCgpOwogICAgICAgICBBU1NFUlQodGFyZ2V0
Tm9kZSk7CiAgICAgfQotCiAgICAgZm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRoKSB7Ci0gICAg
ICAgIGlmIChOb2RlKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgpLT50b05v
ZGUoKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRU
YXJnZXQoKS0+dG9Ob2RlKCkpIHsKICAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9kZS0+aXNDbG9z
ZWRTaGFkb3dIaWRkZW4oKm5vZGVJblBhdGgpKQogICAgICAgICAgICAgICAgIHBhdGguYXBwZW5k
KGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
cGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICB9Ci0KICAgICByZXR1
cm4gcGF0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGEyZTk2MTFkNmM1
NDg4ODYxNDZiYmE5MWExMDVkODA5MWI4Y2ZhYWUuLmRlZTY0NmMzN2QxNWFkNDQzM2MwMzFiNWUz
YTVhYzQxZTYxNDI5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25z
dCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZh
bGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9Ci0gICAgQ29udGFpbmVyTm9kZSYgb3du
ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9vd25l
ck5vZGUuZ2V0KCkpOyB9CisgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vd25lck5vZGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFhdHRyTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJOYW1lKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKaW5kZXggY2MxYTZhNGEwNjY2OGY2MDRiY2JkZDQzYzRlYjYyYzdhNzI2
NmU2Mi4uNWJhMzdjZjgwNmViZGNlZmEzMmEzNjVkZTljNmRjYjYzYjRlYTIwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBFdmVudFRhcmdldCog
TWVzc2FnZUV2ZW50Ojpzb3VyY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAgICAgIFtdKGNv
bnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBj
b25zdF9jYXN0PEV2ZW50VGFyZ2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPih3
aW5kb3cuZ2V0KCkpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYg
bWVzc2FnZVBvcnQpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50VGFy
Z2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPihtZXNzYWdlUG9ydC5nZXQoKSkp
OyB9CisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVu
dFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxET01XaW5kb3cqPih3aW5kb3cuZ2V0KCkpOyB9
LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYgbWVzc2FnZVBvcnQpIC0+
IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PE1lc3NhZ2VQb3J0Kj4obWVzc2FnZVBv
cnQuZ2V0KCkpOyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGUyZmJiY2Y4MWEx
M2NmZDA0MDVlMTIwMzkxZTUyYjNkZTVkM2UyODkuLjNjNzEyMGVhYTRmOGEzMGI5ZjQ2YjhiNWFh
OTk2ZDdmODYxN2U4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQzMCwxMSArNDMwLDEwIEBAIHN0
YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVP
clN0cmluZ1ZlY3Rvcihjb25zdCBWCiAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQ7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CiAgICAgICAgIFdURjo6
c3dpdGNoT24odmFyaWFudCwKLSAgICAgICAgICAgIFsmXShjb25zdCBSZWZQdHI8Tm9kZT4mIG5v
ZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5nZXQoKSkpOyB9LAotICAg
ICAgICAgICAgW10oY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxOb2RlPiYgbm9kZSkgeyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdl
dCgpKSk7IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgICAgICk7
CiAgICAgfQotCiAgICAgcmV0dXJuIG5vZGVTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXggODAz
ZjhmZTIzZjczNzBiY2NjZDJhNzVmNzAzOTE1NzNmZWFkM2E3ZC4uYjlhMDIyZDUwZDEzNjhkOTM1
M2YwMmNiNTAyMzNlNzkwMWRkMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IGNyZWF0ZShEb2N1
bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5SYW5nZSgpOwogCi0gICAgRG9jdW1lbnQmIG93bmVyRG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9vd25lckRvY3VtZW50
LmdldCgpKTsgfQorICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9vd25lckRvY3VtZW50OyB9CiAKICAgICBOb2RlJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsg
QVNTRVJUKG1fc3RhcnQuY29udGFpbmVyKCkpOyByZXR1cm4gKm1fc3RhcnQuY29udGFpbmVyKCk7
IH0KICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQub2Zm
c2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgK
aW5kZXggMTBiMmFkOTQzY2MzYjkwMzMxZGM3YWI2OGQ1NWZjZjk0OTJmZTA4Mi4uMmE1OGEzZmEw
YmMxZDllNTRiNmExYzM0NTFhOTcyOWE2MzcyYTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihXVEZNb3Zl
KGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIH0KIAotICAgIEV2ZW50TGlzdGVuZXImIGNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudExpc3RlbmVyJj4obV9jYWxsYmFj
ay5nZXQoKSk7IH0KKyAgICBFdmVudExpc3RlbmVyJiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2s7IH0KICAgICBib29sIHVzZUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUNhcHR1cmU7IH0KICAgICBib29sIGlzUGFzc2l2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYXNz
aXZlOyB9CiAgICAgYm9vbCBpc09uY2UoKSBjb25zdCB7IHJldHVybiBtX2lzT25jZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAwNDFlNmQxMzMxZjQ0MjNjMTVjOTg3Njlm
OWEyMjc0Y2VkMGFkMGZmLi4xZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFlZjBjOWMyOGRjNWZjNGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTY3Jp
cHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogICAgIH0KICAgICBmb3IgKGF1dG8mIHBlbmRpbmdT
Y3JpcHQgOiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKICAgICAgICAgaWYgKHBlbmRpbmdTY3Jp
cHQtPndhdGNoaW5nRm9yTG9hZCgpKQotICAgICAgICAgICAgY29uc3RfY2FzdDxQZW5kaW5nU2Ny
aXB0Jj4ocGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKKyAgICAgICAgICAgIHBl
bmRpbmdTY3JpcHQtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaAppbmRleCA2ZmFhZDQwNzUwNTA0NTBkZDNiOTA5YmVkYWMwMDMwMGNjOWUyYTg2Li40
ODAxMjZiNjUxNmI3ZTc5NTM4YjYyOWZiODZhZWMwMmM5MTcyZjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIENvbGxlY3Rpb25U
eXBlIEhUTUxDb2xsZWN0aW9uOjp0eXBlKCkgY29uc3QKIAogaW5saW5lIENvbnRhaW5lck5vZGUm
IEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9kZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fb3du
ZXJOb2RlOwogfQogCiBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpkb2N1bWVudCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXgg
ZWYyMDZmNmMxZTFhNTYxNDc1MDk2ZTIyYWI3OTdkMzIyYzliZTEwZi4uOTg1MzE5ODMxYjE1MzI5
YmJhOTRmY2ZhOTA1NDRlOGNmMzdjZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTdGFja0l0ZW0uaApAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBSZWY8SFRNTFN0YWNr
SXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQog
CiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTFN0YWNrSXRlbTo6bm9kZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fbm9kZS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fbm9kZS5nZXQoKTsKIH0KIAogaW5saW5lIEVsZW1lbnQmIEhUTUxTdGFja0l0ZW06
OmVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzYWMyODcwNzczYjgzNDBhZTVlM2I0Yjk2NzI5MmFk
Y2QyYjA5MzExLi5jMmU1MTRjYjdjNzIxMWJjMzdjMjQzMjhiZDQwMmY0OWU2ODQ0OGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTMzLDU4ICsxMzMsNDQgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wKIHsKICAgICBz
ZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHBhdXNlZCk7CiAKLSAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChwYWdl
LCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlw
dFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2Us
IHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOwotCi0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJh
bWUsIHBhdXNlZCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5k
Q2xpZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCkpIHsKLSAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlUGF1c2VkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlVW5wYXVzZWQoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMo
KSkgeworICAgICAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7CisKKyAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKCpmcmFtZSwgcGF1c2VkKTsKKworICAgICAgICBpZiAoYXV0byogZnJvbnRlbmRDbGllbnQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkg
eworICAgICAgICAgICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVBhdXNlZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBi
b29sIHBhdXNlZCkKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1
c2VkKEZyYW1lJiBmcmFtZSwgYm9vbCBwYXVzZWQpCiB7Ci0gICAgQVNTRVJUX0FSRyhmcmFtZSwg
ZnJhbWUpOwotCi0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgIGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmcmFtZS0+c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CisgICAgZnJhbWUuc2NyaXB0KCku
c2V0UGF1c2VkKHBhdXNlZCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAocGF1c2VkKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7Ci0gICAg
ICAgIGRvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6Okph
dmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVz
ZWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmpl
Y3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKLSAgICAgICAg
ZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwor
ICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6
SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogCi0gICAgc2V0SmF2YVNj
cmlwdFBhdXNlZChmcmFtZS0+dmlldygpLCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqIHZpZXcsIGJvb2wgcGF1
c2VkKQotewotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oKmNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGRvd25jYXN0
PFBsdWdpblZpZXdCYXNlPigqY2hpbGQpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1c2VkKTsKKyAg
ICBpZiAoYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oY2hpbGQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGNoaWxkLmdldCgpKS5zZXRKYXZhU2NyaXB0UGF1
c2VkKHBhdXNlZCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAzYjQ5NzkxZWUyOWU1YzUw
ZjBhM2M4YWMxYzQxNmRhNWE3Yzc3YmQxLi43ZjU4YzZjOGIwNDhiZjNkYzI3N2FiOWRmNjVmZWEy
NDY4MjJiN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZyYW1lOwotY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VHcm91
cDsKIApAQCAtNTYsOSArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWRJbnRlcm5hbCgpOwogCiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0
IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQo
UGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUq
LCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyos
IGJvb2wgcGF1c2VkKTsKKyAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUmLCBib29s
IHBhdXNlZCk7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNGU4Mjc1NDVlMmMwOGU0ZDNlZmEyMjRhNjNk
ZmQ1ZWIzNTcwYTljYi4uMjk1Yjk0YTFhNTU1YjJhMjhlNzUwMzZjNmIxZDAyNTcwNzI5OTdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC03NDEs
NyArNzQxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9u
YWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQKICAgICAgICAgRnJhbWUqIGNoaWxk
RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFT
U0VSVChjaGlsZEZyYW1lKTsKIAotICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5
KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihj
aGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjaGlsZEl0ZW0sIGZy
b21DaGlsZEl0ZW0pOwogICAgIH0KIH0KIApAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5
SXRlbSogZnJvbUl0CiAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0
ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQo
ZnJvbUNoaWxkSXRlbSk7CiAgICAgICAgIGlmIChGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUu
dHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKSkKLSAgICAgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVt
Jj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgICAgICBj
aGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY2hpbGRJdGVt
LCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggMGJiMjg4ZWFlZmNmODA4MWIxZjBjZjQxZGM1NmE5YTE4NzdjZmU3ZS4uZDVhNTEwNjAxNzRh
ODcwNmY4OTlkNTI4ODRhZDZiYjRjZjY3MDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcy
MywzMSArNzIzLDI3IEBAIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25z
dAogCiBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OworICAg
IGF1dG8qIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAgIGlmICghb3duZXJFbGVt
ZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiBvYmplY3QgPSBvd25lckVs
ZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRvIGRpc2Fzc29j
aWF0ZSBpdHNlbGYgZnJvbSBmcmFtZXMKICAgICAvLyB0aGF0IGl0IGhhcyBzdGFydGVkIGJ1dCBj
YW5jZWxlZCwgdGhlbiB0aGlzIGNhbiB0dXJuIGludG8gYW4gQVNTRVJUCi0gICAgLy8gc2luY2Ug
bV9vd25lckVsZW1lbnQgd291bGQgYmUgMCB3aGVuIHRoZSBsb2FkIGlzIGNhbmNlbGVkLgorICAg
IC8vIHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIG51bGxwdHIgd2hlbiB0aGUgbG9hZCBp
cyBjYW5jZWxlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1ODUKLSAgICBpZiAoIWlzPFJlbmRlcldpZGdldD4oKm9iamVjdCkpCisgICAgaWYgKCFp
czxSZW5kZXJXaWRnZXQ+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG9iamVjdCk7CiB9CiAKLUZyYW1lKiBGcmFtZTo6
ZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCitGcmFtZSogRnJhbWU6OmZyYW1l
Rm9yV2lkZ2V0KGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVF9BUkcod2lkZ2V0
LCB3aWRnZXQpOwotCi0gICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBSZW5kZXJXaWRn
ZXQ6OmZpbmQod2lkZ2V0KSkKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6
OmZpbmQod2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5mcmFtZU93bmVyRWxlbWVu
dCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKIAogICAgIC8vIEFzc3VtZSBhbGwgd2lkZ2V0cyBhcmUg
ZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0LgogICAgIC8vIEZJ
WE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0IGZvciBzY3JvbGwgYmFycyEKLSAgICBy
ZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKKyAgICByZXR1cm4g
JmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpOwogfQogCiB2b2lkIEZyYW1lOjpj
bGVhclRpbWVycyhGcmFtZVZpZXcgKnZpZXcsIERvY3VtZW50ICpkb2N1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAppbmRleCA2ODM0MTEwN2Q5ODFjNGEzMmFiZWI5YzUxMDkzYzg3YTgxZGY4NjU1Li45YThm
NzNjY2I1OGQ3N2VkZDQ5MTk2YTU3ZmZkYmFmMTM4YTFlYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBA
IC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXll
clRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdl
dCYpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGlu
Z3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDc3MDc1ZmQ1NzliZmNiMzlm
NjZmNmQ5MzY2OWRlZDUwNzZhMDM3NDUuLmIyOTEyMzYzZjIxZGQ4MGQ2YmUwMTBkMDhhY2EyN2Fl
OTJmNzViMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMsNyArMyw3IEBACiAg
KiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KICAq
ICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9y
Zz4KICAqICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA2LDE4ICs1MDYsMTcgQEAgYm9vbCBG
cmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKLSAg
ICAgICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKSkKLSAgICAgICAgICAg
IHdpbmRvdy0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CisgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgcmVwYWludFJl
Y3QgPSByZWN0OwotICAgIHJlcGFpbnRSZWN0Lm1vdmUocmVuZGVyZXItPmJvcmRlckxlZnQoKSAr
IHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAotICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIt
PmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CisgICAgcmVwYWludFJlY3Qu
bW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksIHJl
bmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgIHJlbmRl
cmVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsKIH0KIApAQCAtNTQ0LDE0ICs1NDMs
MTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0
KQogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCiBib29sIEZyYW1l
Vmlldzo6c2NoZWR1bGVBbmltYXRpb24oKQogewotICAgIGlmIChIb3N0V2luZG93KiB3aW5kb3cg
PSBob3N0V2luZG93KCkpIHsKLSAgICAgICAgd2luZG93LT5zY2hlZHVsZUFuaW1hdGlvbigpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIHJldHVy
biB0cnVlOwogfQorCiAjZW5kaWYKIAogdm9pZCBGcmFtZVZpZXc6OnNldE1hcmdpbldpZHRoKExh
eW91dFVuaXQgdykKQEAgLTEwNTYsMjIgKzEwNTcsMjIgQEAgR3JhcGhpY3NMYXllciogRnJhbWVW
aWV3OjpncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQgcGxhdGZv
cm0KIHsKICAgICAvLyBUbyBmaW5kIHRoZSBXaWRnZXQgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHBs
YXRmb3JtV2lkZ2V0IHdlIGhhdmUgdG8gZG8gYSBsaW5lYXIKICAgICAvLyBzZWFyY2ggb2Ygb3Vy
IGNoaWxkIHdpZGdldHMuCi0gICAgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CisgICAg
Y29uc3QgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiB3aWRn
ZXQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmICh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkg
IT0gcGxhdGZvcm1XaWRnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm91bmRX
aWRnZXQgPSB3aWRnZXQuZ2V0KCk7CisgICAgICAgIGZvdW5kV2lkZ2V0ID0gd2lkZ2V0LnB0cigp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoIWZvdW5kV2lkZ2V0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdl
dDo6ZmluZChmb3VuZFdpZGdldCk7CisgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCpmb3VuZFdpZGdldCk7CiAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVuZGVyTGF5ZXIqIHdpZGdldExheWVyID0gcmVuZGVy
V2lkZ2V0LT5sYXllcigpOworICAgIGF1dG8qIHdpZGdldExheWVyID0gcmVuZGVyV2lkZ2V0LT5s
YXllcigpOwogICAgIGlmICghd2lkZ2V0TGF5ZXIgfHwgIXdpZGdldExheWVyLT5pc0NvbXBvc2l0
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxODAsMTEgKzIxODEsMTEgQEAg
Ym9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6
c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBp
ZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgfHwgbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICAgICAgZnJhbWUoKS5wYWdlKCkt
PmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IGJvb2wgaXNDb21wb3NpdGVk
Q29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICBib29sIGlzQ29t
cG9zaXRlZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAKICAgICAv
LyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RU
b1Njcm9sbAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKQEAgLTIyMjAsNyArMjIyMSw3IEBA
IGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgfQogCiAgICAgLy8gMSkgc2Nyb2xsCi0gICAg
aG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3Qp
OworICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RU
b1Njcm9sbCwgY2xpcFJlY3QpOwogCiAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVk
IG9iamVjdHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAogICAgIGZvciAoYXV0byYgdXBkYXRl
UmVjdCA6IHJlZ2lvblRvVXBkYXRlLnJlY3RzKCkpIHsKQEAgLTIyMzUsNyArMjIzNiw3IEBAIGJv
b2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9s
bERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNsaXBzUmVwYWlu
dHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7Ci0g
ICAgICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRl
UmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5pbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyh1cGRhdGVSZWN0KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI2NDIsOSArMjY0MywxMCBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9u
VXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbikKIAogSG9zdFdpbmRvdyogRnJh
bWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiBu
dWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7CiB9
CiAKIHZvaWQgRnJhbWVWaWV3OjphZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByKQpAQCAtMjc4NCwxMCArMjc4NiwxMiBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0VGlsZWRC
YWNraW5nU2Nyb2xsYWJpbGl0eSgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIHZvaWQgRnJh
bWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkKIHsKICAgICBhZGp1c3RUaWxl
ZEJhY2tpbmdTY3JvbGxhYmlsaXR5KCk7CiB9CisKICNlbmRpZgogCiBzdGF0aWMgTGF5ZXJGbHVz
aFRocm90dGxlU3RhdGU6OkZsYWdzIGRldGVybWluZUxheWVyRmx1c2hUaHJvdHRsZVN0YXRlKFBh
Z2UmIHBhZ2UpCkBAIC00MDgyLDggKzQwODYsNiBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Ny
b2xsQ29ybmVyKCkKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3Zl
KCpjb3JuZXJTdHlsZSkpOwogICAgICAgICBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKGNvcm5lclJl
Y3QpOwogICAgIH0KLQotICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpOwogfQog
CiB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQpAQCAtNDE1NywxNSArNDE1OSwxNCBAQCBD
b2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIGJvb2wgRnJh
bWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHdp
ZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkp
IHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmhhc0N1c3Rv
bVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSkg
eworICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKS5oYXND
dXN0b21TY3JvbGxiYXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkgewotICAgICAgICAgICAgaWYgKGRv
d25jYXN0PFNjcm9sbGJhcj4oKndpZGdldCkuaXNDdXN0b21TY3JvbGxiYXIoKSkKKyAgICAgICAg
fSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlm
IChkb3duY2FzdDxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkuaXNDdXN0b21TY3JvbGxiYXIoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNDE3MywxMSArNDE3NCwxMCBAQCBGcmFtZVZpZXcqIEZyYW1l
Vmlldzo6cGFyZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXBhcmVudCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFt
ZSgpLnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCku
dHJlZSgpLnBhcmVudCgpOworICAgIGlmICghcGFyZW50RnJhbWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygpOwogfQogCiBib29sIEZyYW1l
Vmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKQEAgLTUxODMs
OCArNTE4Myw4IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKQogICAg
IC8vIHNjcmlwdHMgaW4gcmVzcG9uc2UgdG8gTlBQX1NldFdpbmRvdywgZm9yIGV4YW1wbGUpLCBz
byB3ZSBuZWVkIHRvIGtlZXAgdGhlIFdpZGdldHMKICAgICAvLyBhbGl2ZSBkdXJpbmcgZW51bWVy
YXRpb24uCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBjb2xsZWN0QW5kUHJvdGVjdFdpZGdldHMo
bV93aWRnZXRzSW5SZW5kZXJUcmVlKSkgewotICAgICAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5k
ZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0LmdldCgpKSkgewotICAgICAgICAg
ICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRlcldpZGdldC0+dXBkYXRlV2lkZ2V0UG9z
aXRpb24oKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0OjpmaW5k
KCp3aWRnZXQpKSB7CisgICAgICAgICAgICBhdXRvIGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVy
ZXItPnVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oaWdu
b3JlV2lkZ2V0U3RhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
aW5kZXggMjNhN2ZkMWI0NGY2ZWU5MDQyMGIyMDUwODkzYzc4M2FhZTg1MDNiNi4uNzExYjc0YjQ2
N2IzNzU4ODRhMzU3OGE0MDJhNGU0NGM0NjIzMzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICAgIChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlz
ICh3ZWlzQGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKLSAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA5LCAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzQsMTYgKzc0
LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCi0gICAgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3coKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzZXRGcmFtZVJlY3Qo
Y29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQotICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICBib29sIHNj
aGVkdWxlQW5pbWF0aW9uKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIEZyYW1lJiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RnJhbWUmPihtX2ZyYW1lLmdldCgpKTsgfQorICAgIEZy
YW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIApAQCAtOTUsMTUgKzk1LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE1hcmdpbldpZHRoKExheW91dFVuaXQpOwogICAgIHZvaWQg
c2V0TWFyZ2luSGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKTsKIAotICAgIFJlZjxTY3JvbGxiYXI+IGNy
ZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgUmVmPFNj
cm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAot
ICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBzZXRD
b250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNTaXplKCkgZmluYWw7CiAKICAg
ICB2b2lkIGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25zdDsKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllckZvclBs
YXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNj
aGVkdWxlTGF5ZXJGbHVzaEFsbG93aW5nVGhyb3R0bGluZygpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIGFueSBTY3JvbGxhYmxlQXJlYSBjYW4gaGF2ZSBhIG5v
ZGUgaW4gdGggU2Nyb2xsaW5nVHJlZSwgdGhpcyBzaG91bGQKICAgICAvLyBiZWNvbWUgYSB2aXJ0
dWFsIGZ1bmN0aW9uIG9uIFNjcm9sbGFibGVBcmVhLgpAQCAtMjI1LDIxICsyMjUsMjEgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhJbnRTaXplKTsKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKSBjb25zdDsKICAgICAKLSAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7
CiAKLSAgICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rml4ZWRWaXNp
YmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgZmluYWw7CisgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9z
aXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBUaGUg
c2Nyb2xsT3JpZ2luLCBzY3JvbGxQb3NpdGlvbiwgbWluaW11bVNjcm9sbFBvc2l0aW9uIGFuZCBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24gYXJlIGFsbCBhZmZlY3RlZCBieSBmcmFtZSBzY2FsZSwKICAg
ICAvLyBidXQgbGF5b3V0Vmlld3BvcnQgY29tcHV0YXRpb25zIHJlcXVpcmUgdW5zY2FsZWQgc2Ny
b2xsIHBvc2l0aW9ucy4KQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCBy
ZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yOwpAQCAtMzc5LDkgKzM3OSw5IEBAIHB1YmxpYzoKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGNvcm5lclJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3ND
b250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6
b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFsOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgZmluYWw7Cisg
ICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OwogCkBAIC00MzYsMTAgKzQzNiwxMCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvUmVu
ZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAg
ICAvLyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2
aWEgcmVuZGVyZXJzLCBpbiBvcmRlciB0byB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50Lgot
ICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qg
ZmluYWw7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNG
cmFtZVZpZXdTY3JvbGxDb3JuZXIoY29uc3QgUmVuZGVyU2Nyb2xsYmFyUGFydCYgc2Nyb2xsQ29y
bmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9PSAmc2Nyb2xsQ29ybmVyOyB9CiAK
QEAgLTQ1MSwyMCArNDUxLDIwIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNjcm9sbGFiaWxp
dHkgeyBTY3JvbGxhYmxlLCBTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNTY3JvbGxhYmxlKFNjcm9sbGFiaWxpdHkgZGVmaW5pdGlvbk9mU2Ny
b2xsYWJsZSA9IFNjcm9sbGFiaWxpdHk6OlNjcm9sbGFibGUpOwogCi0gICAgYm9vbCBpc1Njcm9s
bGFibGVPclJ1YmJlcmJhbmRhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxl
T3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Njcm9sbGFi
bGVPclJ1YmJlcmJhbmRhYmxlKCkgZmluYWw7CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZUFuY2VzdG9yKCkgZmluYWw7CiAKICAgICBlbnVtIFNjcm9sbGJhck1vZGVzQ2Fs
Y3VsYXRpb25TdHJhdGVneSB7IFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5LCBBbnlSdWxlIH07CiAg
ICAgdm9pZCBjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNjcm9sbGJhck1vZGVzQ2FsY3VsYXRpb25TdHJh
dGVneSA9IEFueVJ1bGUpOwogCi0gICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkU2V0Q3Vyc29yKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
bWV0aG9kIG9uY2UgcGx1Z2luIGxvYWRpbmcgaXMgZGVjb3VwbGVkIGZyb20gbGF5b3V0LgogICAg
IHZvaWQgZmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKLSAgICBib29sIHNob3Vs
ZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xs
YmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlk
ZTsKIAogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CkBAIC00ODMs
NyArNDgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSopIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxh
YmxlQXJlYXMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQogCi0g
ICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCYpIGZpbmFsOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBv
cnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9u
IE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNj
cm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCkBAIC01MDEsNyArNTAxLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogICAgIAotICAgIGJvb2wgaW5Q
cm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luUHJvZ3JhbW1h
dGljU2Nyb2xsOyB9CisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7IH0KICAgICB2b2lkIHNldEluUHJvZ3Jh
bW1hdGljU2Nyb2xsKGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsKSB7IG1faW5Qcm9ncmFtbWF0aWNT
Y3JvbGwgPSBwcm9ncmFtbWF0aWNTY3JvbGw7IH0KIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCkBAIC01MDksOCArNTA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5pdGlh
bFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1faW5pdGlhbFZpZXdwb3J0U2l6
ZSA9IHNpemU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFu
Y2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9y
bWFuY2VUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYShib29sKSBjb25zdDsKQEAgLTUyMywyMCArNTIzLDIwIEBAIHB1YmxpYzoKIAog
ICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRp
b24oKSBjb25zdDsKIAotICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2hlYWRlckhlaWdodDsgfQorICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SGVhZGVySGVpZ2h0KGludCk7Ci0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHRvcENv
bnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0VHlwZTo6V2Vi
Q29yZUNvbnRlbnRJbnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxv
YXQgdG9wQ29udGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRU
eXBlOjpXZWJDb3JlQ29udGVudEluc2V0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHRvcENvbnRl
bnRJbnNldERpZENoYW5nZShmbG9hdCBuZXdUb3BDb250ZW50SW5zZXQpOwogCiAgICAgdm9pZCB0
b3BDb250ZW50RGlyZWN0aW9uRGlkQ2hhbmdlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxTdGFydExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
aWxsU3RhcnRMaXZlUmVzaXplKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxs
RW5kTGl2ZVJlc2l6ZSgpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFi
bGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZh
aWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CiAKICAgICB2b2lkIGFkanVzdFRpbGVkQmFj
a2luZ1Njcm9sbGFiaWxpdHkoKTsKIApAQCAtNTc0LDI5ICs1NzQsMjkgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbFNu
YXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
cygpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGll
cygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRD
b250ZW50KGZsb2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSkgb3ZlcnJpZGU7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChm
bG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKIAotICAgIHZvaWQgc2hvdygp
IG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBv
dmVycmlkZTsKKyAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlcGFpbnRTbG93UmVw
YWludE9iamVjdHMoKTsKIAotICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0ZsaXBw
ZWREb2N1bWVudCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1l
VmlldyhGcmFtZSYpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlu
UHJlTGF5b3V0U3R5bGVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlID09IElu
UHJlTGF5b3V0U3R5bGVVcGRhdGU7IH0KIAotICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiAg
ICAgYm9vbCB1c2VTbG93UmVwYWludHMoYm9vbCBjb25zaWRlck92ZXJsYXAgPSB0cnVlKSBjb25z
dDsKQEAgLTYyOCw5ICs2MjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXBkYXRlQ29t
cG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIGNvbnN0OwogICAgIGJvb2wgZmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNvbnN0IEZyYW1lJiByb290RnJhbWVGb3JGbHVzaCk7
CiAKLSAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRl
bnRTaXplQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQ
bGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNj
cm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbE9mZnNldENo
YW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQs
IGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25Ub1Zp
ZXdwb3J0KCk7CkBAIC02NTEsMzkgKzY1MSwzOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJGbHVzaFRocm90dGxpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkanVzdFRp
bGVkQmFja2luZ0NvdmVyYWdlKCk7CiAKLSAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xs
YmFyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpIGZpbmFs
OwogCi0gICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgLy8gU2Ny
b2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY3JvbGxUbyhj
b25zdCBTY3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9s
bGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRSZWN0
IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBTY3JvbGxQ
b3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRp
bmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Ny
b2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JW
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
Rm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCi0gICAgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbnRlbnRzUmVzaXplZCgpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5v
YnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBib29sIHVz
ZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzQXN5
bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5p
bWF0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1l
c3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzQ29tcG9z
aXRlZFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc0FzeW5jU2Nyb2xsaW5n
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGUgc2Nyb2xsYmFyIG5vdGlmaWNhdGlv
bnMgdG8gdXBkYXRlIHRoZSBBWE9iamVjdCBjYWNoZS4KLSAgICB2b2lkIGRpZEFkZFNjcm9sbGJh
cihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmll
bnRhdGlvbikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhcios
IFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIEludFNpemUgc2l6ZUZvclJlc2l6
ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgpOwpAQCAt
NjkzLDcgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxlQXJlYVNl
dCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0Vmlld3BvcnQoKTsKIAotICAgIHZvaWQgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCBlbmFibGVTcGVjdWxhdGl2ZVRpbGluZ0lmTmVlZGVkKCk7CiAgICAgdm9pZCBzcGVjdWxh
dGl2ZVRpbGluZ0VuYWJsZVRpbWVyRmlyZWQoKTsKQEAgLTcwOCw3ICs3MDgsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENvcm5lcigpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVy
KCkgZmluYWw7CiAKICAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA5MzMxYjMwMjkwN2U3OWI3YzExYjVlYzA4NDZiYWZkNWMzZmVj
NDk3Li42YzQ3NjVmMGNiYzQ1MjQyODJlMDdjNjE4NjY0ZTc2YTAyNTMxMWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTEzMzMsMTggKzEzMzMsMTUgQEAgdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGlu
Z1N0YXRlQ2hhbmdlZCgpCiBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFnZTo6cGx1Z2lu
Vmlld3MoKQogewogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiB2aWV3czsKLQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LT52aWV3KCk7CisgICAgICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFz
ZT4oKndpZGdldCkpCi0gICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBsdWdp
blZpZXdCYXNlPigqd2lkZ2V0KSk7CisgICAgICAgICAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+
KHdpZGdldC5nZXQoKSkpCisgICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBs
dWdpblZpZXdCYXNlPih3aWRnZXQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiB2aWV3czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDQ0
MzA1NDY3NTU3MWJiOTBkNzQwMWYyYmIxMTIzYWNlOWFmY2UxMTAuLjY3Y2UzMTcwN2NiMjE3YjNi
MDE0ZjE2OWE5MjRmNGM4YzVmZDljODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAKQEAgLTI4NiwxNiArMjg2LDE5IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWRE
ZXN0aW5hdGlvbnMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAKIFN0cmlu
ZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCkpOworCisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CiAgICAgcHJpbnRDb250ZXh0
LmJlZ2luKDgwMCk7IC8vIEFueSB3aWR0aCBpcyBPSyBoZXJlLgotICAgIGRvY3VtZW50LT51cGRh
dGVMYXlvdXQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZG9j
dW1lbnQtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsK
KyAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKKyAgICBhdXRvIHN0eWxlID0gZG9jdW1lbnQu
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOwogCiAgICAg
Ly8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KICAg
ICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVmdCIpKSB7CiAgICAgICAgIGlm
IChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygiYXV0byIpOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7ICJhdXRvIiB9Owog
ICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPm1hcmdpbkxlZnQoKS52YWx1ZSgp
KTsKICAgICB9CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibGluZS1oZWlnaHQiKSkK
QEAgLTMwNSw5ICszMDgsOSBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJh
bWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYQogICAgIGlmICghc3Ry
Y21wKHByb3BlcnR5TmFtZSwgImZvbnQtZmFtaWx5IikpCiAgICAgICAgIHJldHVybiBzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuZmlyc3RGYW1pbHkoKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0
eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFn
ZVNpemUoKS53aWR0aCgpLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5bGUtPnBh
Z2VTaXplKCkuaGVpZ2h0KCkudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cihzdHlsZS0+cGFnZVNpemUoKS53aWR0aC52YWx1ZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVy
KHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodC52YWx1ZSgpKTsKIAotICAgIHJldHVybiBTdHJpbmco
InBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAiKSArIHByb3BlcnR5TmFtZTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIs
IHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxl
KEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDFjNDdlM2RmYzRkZGQxYmQ0NWMzMjU3
ZjdiNGVkMzBkZWI4ZjlhNjguLjc2ZTgwYzA3OGYxYzY2YmRhZDZiODAxZjg5MzdkYmQwMDFiZmNj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9u
RXZlbnRzSWZOZWVkZWQoKQogICAgICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAmJiBt
X2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewogICAg
ICAgICAgICAgaWYgKG1fb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0g
bV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS5zY3JvbGxQb3NpdGlv
bigpOwotICAgICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdn
ZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdn
ZXIoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25j
YXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAg
ICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgICAgICB9CkBAIC01NzcsNyAr
NTc3LDcgQEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCkKICAgICAg
ICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigp
KSB7CiAgICAgICAgICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPSBtX29iamVjdC0+dmlldygpLmZyYW1lVmlldygpLnNjcm9s
bFBvc2l0aW9uRm9yRml4ZWRQb3NpdGlvbigpLnkoKS50b0Zsb2F0KCk7Ci0gICAgICAgICAgICAg
ICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9s
bEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9u
VHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPj0gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFsdWUo
KSAmJiAoIXNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSB8fCBjdXJyZW50U2Nyb2xsUG9zaXRp
b24gPD0gc2Nyb2xsVHJpZ2dlci5lbmRWYWx1ZSgpLnZhbHVlKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTY1Myw3ICs2NTMsNyBAQCBkb3VibGUg
QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MoZG91YmxlIHNjYWxlLCBkb3VibGUgb2Zmc2V0LCBjb25z
dCBUaW1pbmdGdW5jdGlvbgogICAgIH0KIAogICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAg
ICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7
CisgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCk7
CiAKICAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9uOiB7CkBAIC03NDMsNyArNzQzLDcgQEAgZG91
YmxlIEFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAm
JiBtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewot
ICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOwor
ICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAoc2Nyb2xsVHJpZ2dl
ci5oYXNFbmRWYWx1ZSgpICYmIG1fb2JqZWN0KSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQg
PSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICBmbG9hdCBzdGFydFZhbHVlID0gc2Nyb2xsVHJpZ2dlci5zdGFy
dFZhbHVlKCkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAyZDg5NDA0NTIwNDhhMjhmNDExMGE1
NTIwMzVmZjFjNzFmZDg4ZDU1Li45ZjZiOTE3YzZlYzFjNmZlYmJhNjk0MGExNjcwNWJkYmQ1YWM3
NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCkBAIC05MCw4ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3Ro
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25z
dCBMCiAKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8s
IGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZEZ1bmMoYW5p
bSwgZnJvbS53aWR0aCgpLCB0by53aWR0aCgpLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgpLCBwcm9ncmVz
cykpOworICAgIHJldHVybiB7IGJsZW5kRnVuYyhhbmltLCBmcm9tLndpZHRoLCB0by53aWR0aCwg
cHJvZ3Jlc3MpLCBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgcHJvZ3Jl
c3MpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgU2hhZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRvd1N0eWxlIGZyb20sIFNoYWRvd1N0eWxlIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCkBAIC00OTIsNyArNDkxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBj
bGFzcyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0dGVy
PGNvbnN0IFQmPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
TGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYgKFJlbmRl
clN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCkp
CisgICAgTGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYg
KFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRl
cikoVCYmKSkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29uc3QgVCY+KHByb3As
IGdldHRlcikKICAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCiAgICAgewpAQCAtNTA0LDcgKzUw
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIChSZW5kZXJTdHls
ZTo6Km1fc2V0dGVyKShUKTsKKyAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShUJiYp
OwogfTsKIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyQ2xpcFBhdGggOiBwdWJsaWMgUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjxDbGlwUGF0aE9wZXJhdGlvbj4gewpAQCAtMTA0OSw3ICsxMDQ4LDcg
QEAgcHVibGljOgogY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmlt
YXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEZpbGxMYXllciogKFJlbmRlclN0eWxlOjoqTGF5
ZXJzR2V0dGVyKSgpIGNvbnN0OworICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyJiAoUmVuZGVy
U3R5bGU6OipMYXllcnNHZXR0ZXIpKCkgY29uc3Q7CiAgICAgdHlwZWRlZiBGaWxsTGF5ZXImIChS
ZW5kZXJTdHlsZTo6KkxheWVyc0FjY2Vzc29yKSgpOwogCiAgICAgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIExheWVyc0dldHRlciBnZXR0ZXIsIExheWVyc0Fj
Y2Vzc29yIGFjY2Vzc29yKQpAQCAtMTA4Niw4ICsxMDg1LDggQEAgcHVibGljOgogICAgICAgICBp
ZiAoIWEgfHwgIWIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgY29uc3Qg
RmlsbExheWVyKiBmcm9tTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIHRvTGF5ZXIgPSAoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAg
ICBhdXRvKiBmcm9tTGF5ZXIgPSAmKGEtPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0
byogdG9MYXllciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOwogCiAgICAgICAgIHdoaWxlIChm
cm9tTGF5ZXIgJiYgdG9MYXllcikgewogICAgICAgICAgICAgaWYgKCFtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlci0+ZXF1YWxzKGZyb21MYXllciwgdG9MYXllcikpCkBAIC0xMTAyLDkgKzExMDEs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0s
IFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHls
ZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29u
c3QgRmlsbExheWVyKiBhTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGJMYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAg
IEZpbGxMYXllciogZHN0TGF5ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CisgICAg
ICAgIGF1dG8qIGFMYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRv
KiBiTGF5ZXIgPSAmKGItPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0byogZHN0TGF5
ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICAgICAgd2hpbGUgKGFMYXll
ciAmJiBiTGF5ZXIgJiYgZHN0TGF5ZXIpIHsKICAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyLT5ibGVuZChhbmltLCBkc3RMYXllciwgYUxheWVyLCBiTGF5ZXIsIHByb2dyZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcAppbmRleCBlZDk2YWIxNTM4ODJiNTlkYzk5Y2JkZjVhYzk4NjRkYjBmMDA1
YTA0Li4yMmJkZTQ2OGEwNmFiNDZjMGJhMGU4ODhiOWI3MzVkMTQ1MTJjMGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC05OSwyOCArOTksMjggQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmEKIAogRXZlbnRU
cmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZlbnRUcmFja2lu
Z1JlZ2lvbnNGb3JGcmFtZShjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0CiB7Ci0gICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIGF1dG8qIHJl
bmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlclZpZXcg
fHwgcmVuZGVyVmlldy0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm4g
RXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIC8vIE9uIGlPUywgd2UgdXNlIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uIHRvIHJlcHJlc2Vu
dCB0aGUgcmVnaW9uIGNvdmVyZWQgYnkgZWxlbWVudHMgd2l0aCB0b3VjaCBldmVudCBoYW5kbGVy
cy4KICAgICBBU1NFUlQoZnJhbWUuaXNNYWluRnJhbWUoKSk7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXZlbnRUcmFja2lu
Z1JlZ2lvbnMoKTsKICAgICByZXR1cm4gZG9jdW1lbnQtPmV2ZW50VHJhY2tpbmdSZWdpb25zKCk7
CiAjZWxzZQotICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcgPSBmcmFt
ZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNr
aW5nUmVnaW9ucygpOwogCisgICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOworCiAg
ICAgLy8gRklYTUU6IHNob3VsZCBBU1NFUlQoIWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgaGVy
ZSwgYnV0IG5lZWQgdG8gZml4IERlYnVnUGFnZU92ZXJsYXlzCiAgICAgLy8gdG8gbm90IGFzayBm
b3IgcmVnaW9ucyBhdCBiYWQgdGltZXMuCiAKLSAgICBpZiAoY29uc3QgRnJhbWVWaWV3OjpTY3Jv
bGxhYmxlQXJlYVNldCogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJl
YXMoKSkgeworICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9s
bGFibGVBcmVhcygpKSB7CiAgICAgICAgIGZvciAoYXV0byYgc2Nyb2xsYWJsZUFyZWEgOiAqc2Ny
b2xsYWJsZUFyZWFzKSB7CiAgICAgICAgICAgICAvLyBDb21wb3NpdGVkIHNjcm9sbGFibGUgYXJl
YXMgY2FuIGJlIHNjcm9sbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgICAgICBpZiAo
c2Nyb2xsYWJsZUFyZWEtPnVzZXNBc3luY1Njcm9sbGluZygpKQpAQCAtMTM2LDE4ICsxMzYsMjEg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IGZyYW1lVmlldy0+d2lkZ2V0c0luUmVuZGVyVHJlZSgpKSB7Ci0gICAgICAgIFJlbmRlcldp
ZGdldCogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldCk7Ci0gICAgICAg
IGlmICghcmVuZGVyV2lkZ2V0IHx8ICFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCisgICAg
ICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgCi0gICAgICAgIGlmIChkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCku
d2FudHNXaGVlbEV2ZW50cygpKQotICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24u
dW5pdGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
aWYgKCFkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkud2FudHNXaGVlbEV2ZW50cygp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJl
bmRlcldpZGdldDo6ZmluZCgqd2lkZ2V0KTsKKyAgICAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5p
dGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICB9CiAgICAg
Ci0gICAgLy8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZy
YW1lIGFzIGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQg
aGVyZS4KICAgICBFdmVudFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5nUmVnaW9uczsKKwor
ICAgIC8vIEZJWE1FOiBpZiB3ZSd2ZSBhbHJlYWR5IGFjY291bnRlZCBmb3IgdGhpcyBzdWJmcmFt
ZSBhcyBhIHNjcm9sbGFibGUgYXJlYSwgd2UgY2FuIGF2b2lkIHJlY3Vyc2luZyBpbnRvIGl0IGhl
cmUuCiAgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgp
OyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgRnJhbWVWaWV3KiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOworICAg
ICAgICBhdXRvKiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAo
IXN1YmZyYW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNjAsNyArMTYzLDcg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMu
dW5pdGUoc3ViZnJhbWVSZWdpb24pOwogICAgIH0KIAotICAgIERvY3VtZW50OjpSZWdpb25GaXhl
ZFBhaXIgd2hlZWxIYW5kbGVyUmVnaW9uID0gZnJhbWUuZG9jdW1lbnQoKS0+YWJzb2x1dGVSZWdp
b25Gb3JFdmVudFRhcmdldHMoZnJhbWUuZG9jdW1lbnQoKS0+d2hlZWxFdmVudFRhcmdldHMoKSk7
CisgICAgYXV0byB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0
ZVJlZ2lvbkZvckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0
cygpKTsKICAgICBib29sIHdoZWVsSGFuZGxlckluRml4ZWRDb250ZW50ID0gd2hlZWxIYW5kbGVy
UmVnaW9uLnNlY29uZDsKICAgICBpZiAod2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIHBvc2l0aW9uOnN0aWNreSBoZXJlIHRvby4K
QEAgLTE3Miw2ICsxNzUsNyBAQCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogCiAgICAgLy8gRklY
TUU6IElmIHRoaXMgaXMgbm90IHRoZSBtYWluIGZyYW1lLCB3ZSBjb3VsZCBjbGlwIHRoZSByZWdp
b24gdG8gdGhlIGZyYW1lJ3MgYm91bmRzLgogICAgIGV2ZW50VHJhY2tpbmdSZWdpb25zLnVuaXRl
U3luY2hyb25vdXNSZWdpb24oZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIG5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKTsKKwogICAgIHJldHVybiBldmVudFRyYWNraW5nUmVnaW9uczsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggOWU3MGU5ZDM2Yjk5NWVk
Y2JlYTI5MjU0MzY3MzY2YzQ5MThhM2JjMS4uYjExMTY0ZjA4NTVkYmRmMjVmNmIxYzY4NmY3MTZi
NDY3MjMyYzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBLZXllZENvZGluZ19oCi0jZGVmaW5lIEtleWVkQ29kaW5nX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTU2
LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQg
dmFsdWUpCkBAIC0yMTEsNSArMjEwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkQ29kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoQm94LmgKaW5kZXggZTdhOTc4YTljOGMwNTI4ZDI5Y2EwZTBkMzdjYzlmNGM3ZWQ3NzEwNy4u
M2UwZjIxODRlNjg2ZDBlZGMwY2VhMzliMzQ1OGU3NGY2YzZlYTc1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoQm94LmgKQEAgLTE5LDggKzE5LDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgTGVuZ3RoQm94X2gKLSNkZWZpbmUgTGVuZ3RoQm94
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiV3JpdGlu
Z01vZGUuaCIKQEAgLTMxLDEyICszMCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBCb3hFeHRlbnQgewogcHVibGljOgogICAgIEJveEV4dGVudCgp
Ci0gICAgICAgIDogbV9zaWRlcyh7eyBUKDApLCBUKDApLCBUKDApLCBUKDApIH19KQorICAgICAg
ICA6IG1fc2lkZXMoeyB7IHsgMCB9LCB7IDAgfSwgeyAwIH0sIHsgMCB9IH0gfSkKICAgICB7CiAg
ICAgfQogCiAgICAgQm94RXh0ZW50KGNvbnN0IFQmIHRvcCwgY29uc3QgVCYgcmlnaHQsIGNvbnN0
IFQmIGJvdHRvbSwgY29uc3QgVCYgbGVmdCkKLSAgICAgICAgOiBtX3NpZGVzKHt7IHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdCB9fSkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQgfSB9KQorICAgIHsKKyAgICB9CisKKyAgICBCb3hFeHRlbnQoVCYmIHRvcCwg
VCYmIHJpZ2h0LCBUJiYgYm90dG9tLCBUJiYgbGVmdCkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyBz
dGQ6OmZvcndhcmQ8VD4odG9wKSwgc3RkOjpmb3J3YXJkPFQ+KHJpZ2h0KSwgc3RkOjpmb3J3YXJk
PFQ+KGJvdHRvbSksIHN0ZDo6Zm9yd2FyZDxUPihsZWZ0KSB9IH0pCiAgICAgewogICAgIH0KIApA
QCAtMTM5LDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTGVuZ3RoQm94
KGNvbnN0IExlbmd0aCYgdG9wLCBjb25zdCBMZW5ndGgmIHJpZ2h0LCBjb25zdCBMZW5ndGgmIGJv
dHRvbSwgY29uc3QgTGVuZ3RoJiBsZWZ0KQotICAgICAgICA6IEJveEV4dGVudCh0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQpCisgICAgTGVuZ3RoQm94KExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmln
aHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCkKKyAgICAgICAgOiBCb3hFeHRlbnQg
eyBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUo
bGVmdCkgfQogICAgIHsKICAgICB9CiAKQEAgLTE1MCwxMSArMTU0LDkgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLXR5cGVkZWYgQm94RXh0ZW50PExheW91dFVuaXQ+IExheW91dEJveEV4dGVudDsK
LXR5cGVkZWYgQm94RXh0ZW50PGZsb2F0PiBGbG9hdEJveEV4dGVudDsKK3VzaW5nIExheW91dEJv
eEV4dGVudCA9IEJveEV4dGVudDxMYXlvdXRVbml0PjsKK3VzaW5nIEZsb2F0Qm94RXh0ZW50ID0g
Qm94RXh0ZW50PGZsb2F0PjsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgTGVuZ3RoQm94Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IExlbmd0aEJveF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuY3BwCmluZGV4IDE2
ODM5Y2NiYThmMDExOTVmN2U0MmU2ZmMxZmZlZTcyMTU5YWYxZmIuLjdmMzUwZTc3Mzg2M2QxNmM1
MzA3MWEyYzRhYzBmYjY5NmM4MWZkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFNpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNp
emUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExlbmd0aFNpemUmIHNpemUpCiB7Ci0gICAgcmV0
dXJuIHRzIDw8IHNpemUud2lkdGgoKSA8PCAiICIgPDwgc2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1
cm4gdHMgPDwgc2l6ZS53aWR0aCA8PCAiICIgPDwgc2l6ZS5oZWlnaHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRleCBkNzEz
ZTE4OTJjNWE1YzRiM2NjMDVmMzg5MzJmMmI2MTU2MWJmMTc4Li42MDUyM2VlYzZjYjMyZDEwMWJk
MWQyNDQxNDA0NWNhNjYzNDRlOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5o
CkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgsNDggKzE3
LDI3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIExl
bmd0aFNpemVfaAotI2RlZmluZSBMZW5ndGhTaXplX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IExlbmd0aFNpemUg
ewotcHVibGljOgotICAgIExlbmd0aFNpemUoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTGVu
Z3RoU2l6ZShMZW5ndGggd2lkdGgsIExlbmd0aCBoZWlnaHQpCi0gICAgICAgIDogbV93aWR0aChX
VEZNb3ZlKHdpZHRoKSkKLSAgICAgICAgLCBtX2hlaWdodChXVEZNb3ZlKGhlaWdodCkpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhTaXplJiBvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1faGVpZ2h0
ID09IG8ubV9oZWlnaHQ7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRXaWR0aChMZW5ndGggd2lkdGgp
IHsgbV93aWR0aCA9IFdURk1vdmUod2lkdGgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLQotICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBXVEZNb3ZlKGhlaWdodCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0KLXByaXZhdGU6Ci0gICAgTGVu
Z3RoIG1fd2lkdGg7Ci0gICAgTGVuZ3RoIG1faGVpZ2h0OworICAgIExlbmd0aCB3aWR0aDsKKyAg
ICBMZW5ndGggaGVpZ2h0OwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGhTaXplJiBhLCBjb25zdCBMZW5ndGhTaXplJiBiKQoreworICAgIHJldHVybiBhLndpZHRoID09
IGIud2lkdGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQ7Cit9CisKIGlubGluZSBMZW5ndGhTaXpl
IGJsZW5kKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFNpemUoYmxlbmQoZnJvbS53aWR0aCgp
LCB0by53aWR0aCgpLCBwcm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgp
LCBwcm9ncmVzcykpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ud2lkdGgsIHRvLndpZHRoLCBw
cm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0LCB0by5oZWlnaHQsIHByb2dyZXNzKSB9OwogfQog
CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhTaXplJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIExlbmd0aFNpemVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzQwMDE0YWQ1YTk5NTM1OWFmN2I2OTljNTI4
ZGQzODAzMjA5NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0jZGVm
aW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotY2xhc3MgU3BlZWNoU3ludGhlc2lzOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7Ci0gICAgCi1jbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXM+IGNyZWF0ZShTcGVlY2hTeW50aGVzaXMqKTsKLSAgICAKLSAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZVZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7
Ci0gICAgdm9pZCBwbGF0Zm9ybVNwZWFrKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwotICAg
IAotcHJpdmF0ZToKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hTeW50aGVzaXMq
KTsKLQotICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7Ci19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKaW5kZXggMWYyMDdmNDQzNjY5OWI0ZDFjODQ1ZDcwY2NjNzI5ZDM2ZTkwYmJhMi4u
MTBhODMwZTM5YzdiN2ZlZDg5MzhlYzBiNTQwMDBlZTg0N2NlMGM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDE2ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqIGNsaWVudCkKK1JlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CiB9CiAg
ICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdm9sdW1lKDEuMGYpCi0gICAg
LCBtX3JhdGUoMS4wZikKLSAgICAsIG1fcGl0Y2goMS4wZikKK2lubGluZSBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KCZjbGllbnQpCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCBhODY5YmI4
NzI4NGRjNTllMDdlZTY0MjMzNmVhZDE4Y2E5YzVkODg0Li5lMDg3NzViMjVlZjQwMGU2NmJkYzJl
OGRjNDVjODJiNmYxMGM4Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMjEgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZV9oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gSW1wbGVtZW50IG1ldGhv
ZHMgYXMgbmVlZGVkLgotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQmKTsKKwogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dDsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0g
dGV4dDsgfQogICAgIApAQCAtNzQsMjAgKzY2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENs
aWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KSB7IG1f
Y2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Q2xpZW50Kik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmKTsKIAogICAgIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90
ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IG1fdm9pY2U7Ci0gICAgZmxvYXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9yYXRl
OwotICAgIGZsb2F0IG1fcGl0Y2g7Ci0gICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGZsb2F0
IG1fdm9sdW1lIHsgMSB9OworICAgIGZsb2F0IG1fcmF0ZSB7IDEgfTsKKyAgICBmbG9hdCBtX3Bp
dGNoIHsgMSB9OworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHAKaW5kZXggNTgwZjE5ZDE2NzhkZTk1ZWZlNmM5NzIwMDU5ZDBlYjYyYjNkMDFiOC4uMjQz
NzZjZGU5MjMwOGY2NjAzMDdhM2NkMzVkNmRmYjcxZDU1MmZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwx
NyArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQorUmVmPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFt
ZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBs
b2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgpCitS
ZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSk7CiB9Ci0gICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpCisKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJKQogICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgLCBtX2xhbmcobGFuZykKQEAgLTQ5LDEyICs0OSw2IEBAIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5n
JiB2b2ljZVVSCiB7CiB9CiAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UoKQotICAgIDogbV9sb2NhbFNlcnZpY2UoZmFsc2UpCi0gICAg
LCBtX2RlZmF1bHQoZmFsc2UpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDM0M2I5ZTdi
YWNmMTVlNDk5MzIwOGY1NTgxNGZjZTM3Zjc0NTFkOWQuLjAxNThiMzQ5ODRkZjU2MWVjYTdlYmZl
NzQzMGZlODgzZjlhMTkwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTggQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKLSNkZWZp
bmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpOworICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gY3JlYXRlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyBy
ZXR1cm4gbV92b2ljZVVSSTsgfQogICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID0gdm9pY2VVUkk7IH0KQEAgLTU2LDE3ICs1MywxNSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25z
dCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFu
ZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKLSAgICBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlKCk7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpID0g
ZGVmYXVsdDsKIAogICAgIFN0cmluZyBtX3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgU3RyaW5nIG1fbGFuZzsKLSAgICBib29sIG1fbG9jYWxTZXJ2aWNlOwotICAgIGJvb2wgbV9k
ZWZhdWx0OworICAgIGJvb2wgbV9sb2NhbFNlcnZpY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9k
ZWZhdWx0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IGNiZmZlNmUxYzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVmMWFkY2IuLmI4OWQ1NjYxMTNmNWNj
N2ZkZTVlNGVlNGI1OGE4YzI5YTliNjQ2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsMTQgKzYyLDE0IEBAIFNjcm9sbFZp
ZXc6On5TY3JvbGxWaWV3KCkKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChQYXNz
UmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQpIAordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRn
ZXQmIGNoaWxkKQogewotICAgIFdpZGdldCogY2hpbGQgPSBwcnBDaGlsZC5nZXQoKTsKLSAgICBB
U1NFUlQoY2hpbGQgIT0gdGhpcyAmJiAhY2hpbGQtPnBhcmVudCgpKTsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYWRkKHBycENoaWxkKTsKLSAgICBpZiAoY2hp
bGQtPnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoY2hpbGQpOwor
ICAgIEFTU0VSVCgmY2hpbGQgIT0gdGhpcyk7CisgICAgQVNTRVJUKCFjaGlsZC5wYXJlbnQoKSk7
CisgICAgY2hpbGQuc2V0UGFyZW50KHRoaXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsK
KyAgICBpZiAoY2hpbGQucGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1BZGRDaGls
ZCgmY2hpbGQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hp
bGQpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50
ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciwgU2Nyb2xsYmFyCiAKICAgICBpZiAo
aGFzQmFyICYmICFzY3JvbGxiYXIpIHsKICAgICAgICAgc2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xs
YmFyKG9yaWVudGF0aW9uKTsKLSAgICAgICAgYWRkQ2hpbGQoc2Nyb2xsYmFyLmdldCgpKTsKKyAg
ICAgICAgYWRkQ2hpbGQoKnNjcm9sbGJhcik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcihzY3Jv
bGxiYXIuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAgc2Nyb2xsYmFyLT5zdHlsZUNoYW5n
ZWQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaXplQWZmZWN0ZWQpCkBAIC04MjksMTIgKzgyOSw2
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEpCiAgICAgd2luZG93LT5pbnZhbGlkYXRlUm9vdFZpZXcoSW50UmVjdCgpKTsKIH0KIAot
Ym9vbCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQotewotICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9T
Y3JvbGwsIGNsaXBSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3
OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJl
Y3QpOwpAQCAtMTAzOCwxNyArMTAzMiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHND
aGFuZ2VkKCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwot
Ci0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hp
bGRyZW4uZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRl
cmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3Vy
cmVudCkKLSAgICAgICAgKCpjdXJyZW50KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmZyYW1lUmVjdHNDaGFu
Z2VkKCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6Y2xpcFJlY3RDaGFuZ2VkKCkKIHsKLSAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5l
bmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBj
dXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQot
ICAgICAgICAoKmN1cnJlbnQpLT5jbGlwUmVjdENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNo
aWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmNsaXBSZWN0Q2hhbmdlZCgpOwogfQog
CiBzdGF0aWMgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMTE1MCwxMCArMTE0MSw2IEBAIHZv
aWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlIG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlCiAgICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQotewotfQotCiB2b2lkIFNj
cm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5w
YWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKQEAgLTEzOTIsOSAr
MTM3OSw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUp
CiAgICAgaWYgKCFpc1NlbGZWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2No
aWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldFBhcmVu
dFZpc2libGUodmlzaWJsZSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisg
ICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogfQogCiB2b2lkIFNjcm9s
bFZpZXc6OnNob3coKQpAQCAtMTQwMiw5ICsxMzg4LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93
KCkKICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0
cnVlKTsKICAgICAgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNo
U2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9j
aGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCkt
PnNldFBhcmVudFZpc2libGUodHJ1ZSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
bV9jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh0cnVl
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQxNSw5ICsxNDAwLDggQEAgdm9pZCBTY3JvbGxW
aWV3OjpoaWRlKCkKIHsKICAgICBpZiAoaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChp
c1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46
Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZh
bHNlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAg
ICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAg
ICAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCmluZGV4IGRiNTcwZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMu
LjZiMzFmOTgyZjQyOGIwOGFhYjU1OTY1ODVmZGZjNzExYWY0ZTdmYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
U2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgotCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
KwogT0JKQ19DTEFTUyBXQUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwogCkBAIC00
Niw2ICs0Niw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKICNpZm5kZWYgTlNWaWV3CiAjZGVmaW5l
IE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkIF9fT0JKQ19fCkBAIC02NCwxMCArNjUsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbFZpZXcoKTsKIAogICAgIC8vIFNjcm9sbGFibGVB
cmVhIGZ1bmN0aW9ucy4KLSAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZz
ZXQoY29uc3QgU2Nyb2xsT2Zmc2V0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbENvcm5l
clZpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jv
bGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JikgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbENv
cm5lclZpc2libGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwpAQCAt
ODUsMTQgKzg2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJl
Y3QoKSBjb25zdCA9IDA7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlv
biBhbmQgaW5zcGVjdGlvbi4KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiYgY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7CisgICAgY29uc3QgSGFz
aFNldDxSZWY8V2lkZ2V0Pj4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoV2lkZ2V0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpOwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3
IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBs
YXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRv
IG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQo
KTsgfQotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2Ny
b2xsVmlld1Njcm9sbGJhcihjb25zdCBXaWRnZXQqIGNoaWxkKSBjb25zdCB7IHJldHVybiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgPT0gY2hpbGQgfHwgdmVydGljYWxTY3JvbGxiYXIoKSA9PSBjaGls
ZDsgfQogCiAgICAgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwpAQCAtMTIxLDcgKzEy
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBmaW5hbDsKIAogICAgIC8v
IEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRo
YXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tp
bmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWlu
dHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE2Nyw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gSW4gdGhlIHNpdHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Ny
b2xsaW5nIChpZS4gd2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRv
IHVzZQogICAgIC8vIHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0
aGUgbWFpbmZyYW1lLCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBq
dXN0IGJlZm9yZSByZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBo
YXBwZW4gd2hlbiBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBz
Y2FsZSBvciBwb3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICBJbnRTaXplIHZpc2li
bGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQorICAgIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0g
dmlzaWJsZUNvbnRlbnRSZWN0OyB9CkBAIC0yMTcsMTMgKzIxOCwxMyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1l
bnQgY29udGFpbmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBp
bmRpdmlkdWFsIHdpZHRoIGFuZCBoZWlnaHQKICAgICAvLyB2YWx1ZXMpLgotICAgIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBh
dCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOyAvLyBB
bHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0
KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUo
KS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXpl
KGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1
cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBp
bmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CisgICAgU2Nyb2xsUG9zaXRpb24g
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3Qo
TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQogCiAgICAgU2Nyb2xs
UG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIFRoZSBt
YXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KIApAQCAtMjU4LDcgKzI1OSw3
IEBAIHB1YmxpYzoKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgdmVyeSB0b3Agb2YgdGhlIHZpZXcu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gZG9jdW1lbnRTY3JvbGxQb3NpdGlv
blJlbGF0aXZlVG9WaWV3T3JpZ2luKCkgY29uc3Q7CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1v
dW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNo
ZWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBTY3JvbGxQb3NpdGlv
biBjYWNoZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9z
aXRpb247IH0KQEAgLTMxMywxMyArMzE0LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Zmc2Ny
ZWVuKCkgY29uc3Q7CiAKICAgICAvLyBDYWxsZWQgd2hlbiBvdXIgZnJhbWUgcmVjdCBjaGFuZ2Vz
IChvciB0aGUgcmVjdC9zY3JvbGwgcG9zaXRpb24gb2YgYW4gYW5jZXN0b3IgY2hhbmdlcykuCi0g
ICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0
c0NoYW5nZWQoKSBmaW5hbDsKICAgICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRl
IG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAg
ICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlIHRvIG5vdGlmeSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBjaGFu
Z2UuCi0gICAgdm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBS
ZWN0Q2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8g
aGl0IHRlc3Qgc2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxl
cnMgKGxpa2UgV2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJ
bnRQb2ludCYgd2luZG93UG9pbnQpOwpAQCAtMzQzLDEzICszNDQsMTMgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIFdpZGdldCBvdmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29u
dGVudHMgb2YgdGhlIHZpZXcgYXMgd2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVu
c3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8g
ZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvdygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgZmluYWw7CiAgICAgCiAgICAgLy8g
UGFuIHNjcm9sbGluZy4KICAgICBzdGF0aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVzID0g
MTU7CkBAIC0zNTcsMjEgKzM1OCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQYW5TY3Jv
bGxJY29uKCk7CiAgICAgdm9pZCBwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0Jik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBv
aW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsK
LSAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOworICAgIGJvb2wgc2Ny
b2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1Zp
ZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWlu
aW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7Cisg
ICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Ny
b2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAotICAgIGJvb2wgaXNTY3Jv
bGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoY29uc3QgU2Ny
b2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KTsKIAog
cHJvdGVjdGVkOgpAQCAtMzg0LDI2ICszODMsMjYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBh
dmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgPSAwOwogCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGNyZWF0ZS9kZXN0cm95IHNjcm9sbGJhcnMuCiAg
ICAgLy8gVGhleSByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Nyb2xsYmFyIHdhcyBhZGRlZCBvciByZW1v
dmVkLgotICAgIGJvb2wgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250
ZW50U2l6ZUFmZmVjdGVkID0gMCk7Ci0gICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihi
b29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gMCk7CisgICAgYm9vbCBzZXRIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRy
KTsKKyAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRT
aXplQWZmZWN0ZWQgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxD
b3JuZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCkgPSAw
OworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIGZp
bmFsOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMu
Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KSA9IDA7CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGlu
dmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Ns
b3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxP
cmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBk
YXRlUG9zaXRpb25TeW5jaHJvbm91c2x5KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJhbWVW
aWV3IHRvIGNoZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHZpcnR1
YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENhbGxl
ZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJhcnMgdG8gYWNjdXJhdGVseSByZWZsZWN0IHRoZSBzdGF0
ZSBvZiB0aGUgdmlldy4KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9z
aXRpb24mIGRlc2lyZWRQb3NpdGlvbik7CkBAIC00MTEsMjcgKzQxMCwyOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgZmxvYXQgcGxhdGZvcm1Ub3BDb250ZW50SW5zZXQoKSBjb25zdDsKICAgICB2b2lkIHBs
YXRmb3JtU2V0VG9wQ29udGVudEluc2V0KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKKyAgICB2b2lk
IGhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNo
YW5nZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Ny
b2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9m
ZnNldCYsIGNvbnN0IFNjcm9sbE9mZnNldCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxP
ZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNv
bnN0IFNjcm9sbE9mZnNldCYpID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgLy8gU2l6ZSBhdmFpbGFibGUgZm9yIHZpZXcgY29udGVudHMsIGV4Y2x1ZGluZyBjb250
ZW50IGluc2V0cy4gTm90IGFmZmVjdGVkIGJ5IHpvb21pbmcuCiAgICAgSW50U2l6ZSBzaXplRm9y
VW5vYnNjdXJlZENvbnRlbnQoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0g
RXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVD
b250ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHZpc2libGVD
b250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywg
VmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAg
dm9pZCBjb21wbGV0ZVVwZGF0ZXNBZnRlclNjcm9sbFRvKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKTsKIAogICAgIGJvb2wgc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJh
cj4mLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQpOwogCisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBTY3JvbGxi
YXJNb2RlIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGU7CkBAIC00NDIsNyArNDQzLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9oaWJpdHNTY3JvbGxpbmc7CiAKLSAgICBIYXNoU2V0PFJl
ZlB0cjxXaWRnZXQ+PiBtX2NoaWxkcmVuOworICAgIEhhc2hTZXQ8UmVmPFdpZGdldD4+IG1fY2hp
bGRyZW47CiAKICAgICAvLyBUaGlzIGJvb2wgaXMgdW51c2VkIG9uIE1hYyBPUyBiZWNhdXNlIHdl
IGRpcmVjdGx5IGFzayB0aGUgcGxhdGZvcm0gd2lkZ2V0CiAgICAgLy8gd2hldGhlciBpdCBpcyBz
YWZlIHRvIGJsaXQgb24gc2Nyb2xsLgpAQCAtNDgzLDkgKzQ4NCw5IEBAIHByaXZhdGU6CiAKICAg
ICBJbnRSZWN0IHJlY3RUb0NvcHlPblNjcm9sbCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMuICBGcmFtZVZp
ZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZhbGlkYXRpb25zLgotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSB7
IH0KKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZp
ZXcgY2hhbmdlcy4gRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQg
aW52YWxpZGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXll
cnNBZnRlclNjcm9sbGluZygpID0gMDsKIAogICAgIHZvaWQgcGxhdGZvcm1BZGRDaGlsZChXaWRn
ZXQqKTsKICAgICB2b2lkIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuaAppbmRleCA1OTExOTc4YWVlYzE4ZjA4M2ZkYmY4NWYxYWYzZWQyNDE3OTAxMTY1
Li4zMTRhOGRmNzU5MDk5MTUzOTI3NWFhZDRhMzlkZDliNmM4ZWE2ZTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1
cm4gem9vbWVkU2l6ZTsgfQogICAgIAogICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBm
b3IgYSBjb250cm9sIGluIHpvb21lZCBjb29yZGluYXRlcy4gIAotICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
ZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7IH0KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWlu
aW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8q
em9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9
IH07IH0KICAgICAKICAgICAvLyBBbGxvd3MgdGhlIHRoZW1lIHRvIG1vZGlmeSB0aGUgZXhpc3Rp
bmcgcGFkZGluZy9ib3JkZXIuCiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmco
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRC
b3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IDlhMGRmMTcwMDhmMjE3NGJkMTdmYjM2MTY4Mzc0
OTVhNDNjMThhN2MuLjhmNWFkOTM2MjczMTFiZTIzMjYxZjE0NzhjYzQ2ZWJlYWQzY2VmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERl
bm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjIsMjEgKzIy
LDE2IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uX2gKLSNkZWZpbmUgQW5pbWF0aW9u
X2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKLQot
I2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotI2luY2x1ZGUgIkFuaW1hdGlvblRy
aWdnZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNs
dWRlICJUaW1pbmdGdW5jdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQorI2luY2x1ZGUgIkFuaW1hdGlv
blRyaWdnZXIuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDIwICs1
NywyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBGbGFncyB0aGlzIHRvIGJlIHRoZSBzcGVjaWFsICJu
b25lIiBhbmltYXRpb24gKGFuaW1hdGlvbi1uYW1lOiBub25lKQogICAgIGJvb2wgaXNOb25lQW5p
bWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc05vbmU7IH0KKwogICAgIC8vIFdlIGNhbiBtYWtl
IHBsYWNlaG9sZGVyIEFuaW1hdGlvbiBvYmplY3RzIHRvIGtlZXAgdGhlIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0cwogICAgIC8vIG9mIHByb3BlcnRpZXMgaW4gc3luYy4gaXNWYWxpZEFuaW1hdGlvbiBt
ZWFucyB0aGlzIGlzIG5vdCBhIHBsYWNlaG9sZGVyLgogICAgIGJvb2wgaXNWYWxpZEFuaW1hdGlv
bigpIGNvbnN0IHsgcmV0dXJuICFtX2lzTm9uZSAmJiAhbV9uYW1lLmlzRW1wdHkoKTsgfQogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoIW1fZGlyZWN0
aW9uU2V0ICYmICFtX2R1cmF0aW9uU2V0ICYmICFtX2ZpbGxNb2RlU2V0Ci0gICAgICAgICAgICAg
ICAgJiYgIW1fbmFtZVNldCAmJiAhbV9wbGF5U3RhdGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRT
ZXQKLSAgICAgICAgICAgICAgICAmJiAhbV9kZWxheVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNl
dCAmJiAhbV9wcm9wZXJ0eVNldAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQot
ICAgICAgICAgICAgICAgICYmICFtX3RyaWdnZXJTZXQpOwotI2Vsc2UKLSAgICAgICAgICAgICAg
ICApOworICAgICAgICBpZiAobV90cmlnZ2VyU2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCisgICAgICAgIHJldHVybiAhbV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRpb25T
ZXQgJiYgIW1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxh
eVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CisgICAgICAgICAgICAmJiAhbV9kZWxh
eVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9wZXJ0eVNldDsKICAgICB9CiAK
ICAgICBib29sIGlzRW1wdHlPclplcm9EdXJhdGlvbigpIGNvbnN0CkBAIC0xMTQsMTEgKzEwOSw3
IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7
IH0KIAotICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7Ci0gICAgICAgIEFuaW1hdGVBbGwsCi0gICAg
ICAgIEFuaW1hdGVOb25lLAotICAgICAgICBBbmltYXRlU2luZ2xlUHJvcGVydHkKLSAgICB9Owor
ICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1hdGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRl
U2luZ2xlUHJvcGVydHkgfTsKIAogICAgIGVudW0gQW5pbWF0aW9uRGlyZWN0aW9uIHsKICAgICAg
ICAgQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTM5LDEwICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIFN0eWxlOjpTY29wZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lU3R5bGVTY29wZU9yZGluYWw7IH0KICAgICBFQW5pbVBsYXlTdGF0ZSBw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBsYXlTdGF0ZT4obV9w
bGF5U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KKyAgICBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgUGFzc1Jl
ZlB0cjxBbmltYXRpb25UcmlnZ2VyPiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
OyB9CisgICAgQW5pbWF0aW9uVHJpZ2dlciogdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJp
Z2dlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1f
ZGVsYXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQpAQCAtMTU4LDEwICsxNDksMTAgQEAgcHVi
bGljOgogICAgIH0KICAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7IG1f
cGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYm
IGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgbV90aW1p
bmdGdW5jdGlvblNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbk1vZGUoQW5pbWF0
aW9uTW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKLSAgICB2b2lkIHNldFRyaWdnZXIoUGFzc1JlZlB0cjxBbmltYXRpb25Ucmln
Z2VyPiB0KSB7IG1fdHJpZ2dlciA9IHQ7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KKyAgICB2b2lk
IHNldFRyaWdnZXIoUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+JiYgdHJpZ2dlcikgeyBtX3RyaWdn
ZXIgPSBXVEZNb3ZlKHRyaWdnZXIpOyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9uKGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KQEAg
LTE5NywyMiArMTg4LDIyIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9maWxsTW9kZSA6IDI7
CiAKIAotICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlICAgICA6IDI7CisgICAgdW5zaWduZWQgbV9w
bGF5U3RhdGUgOiAyOwogCi0gICAgYm9vbCBtX2RlbGF5U2V0ICAgICAgICAgIDogMTsKLSAgICBi
b29sIG1fZGlyZWN0aW9uU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9kdXJhdGlvblNldCAgICAg
ICA6IDE7Ci0gICAgYm9vbCBtX2ZpbGxNb2RlU2V0ICAgICAgIDogMTsKKyAgICBib29sIG1fZGVs
YXlTZXQgOiAxOworICAgIGJvb2wgbV9kaXJlY3Rpb25TZXQgOiAxOworICAgIGJvb2wgbV9kdXJh
dGlvblNldCA6IDE7CisgICAgYm9vbCBtX2ZpbGxNb2RlU2V0IDogMTsKICAgICBib29sIG1faXRl
cmF0aW9uQ291bnRTZXQgOiAxOwotICAgIGJvb2wgbV9uYW1lU2V0ICAgICAgICAgICA6IDE7Ci0g
ICAgYm9vbCBtX3BsYXlTdGF0ZVNldCAgICAgIDogMTsKLSAgICBib29sIG1fcHJvcGVydHlTZXQg
ICAgICAgOiAxOworICAgIGJvb2wgbV9uYW1lU2V0IDogMTsKKyAgICBib29sIG1fcGxheVN0YXRl
U2V0IDogMTsKKyAgICBib29sIG1fcHJvcGVydHlTZXQgOiAxOwogICAgIGJvb2wgbV90aW1pbmdG
dW5jdGlvblNldCA6IDE7CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
Ym9vbCBtX3RyaWdnZXJTZXQgICAgICAgIDogMTsKKyAgICBib29sIG1fdHJpZ2dlclNldCA6IDE7
CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc05vbmUgICAgICAgICAgICA6IDE7CisgICAgYm9vbCBt
X2lzTm9uZSA6IDE7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEZWxheSgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMywxMiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBpbml0aWFsTmFtZSgpOwogICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBp
bml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgICBz
dGF0aWMgQ1NTUHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHkoKSB7IHJldHVybiBDU1NQcm9wZXJ0
eUludmFsaWQ7IH0KLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4g
aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsVGlt
aW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25z
dCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4g
QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxBbmltYXRp
b25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRpb25UcmlnZ2Vy
OjpjcmVhdGUoKTsgfQogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBbmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCmluZGV4IDYyNWQ3OTAxNWEwNzQwNmEyOTk4ODAxM2E2
NTIwNmI1MDg0MjcxZWEuLjBhMzIwMjI1NDU5YjFmZDA2NjI2NWVmMmNkN2E1OWRlNzIyNTcyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZp
bmUgRklMTF9VTlNFVF9QUk9QRVJUWSh0ZXN0LCBwcm9wR2V0LCBwcm9wU2V0KSBcCiBmb3IgKGkg
PSAwOyBpIDwgc2l6ZSgpICYmIGFuaW1hdGlvbihpKS50ZXN0KCk7ICsraSkgeyB9IFwKLWlmIChp
IDwgc2l6ZSgpICYmIGkgIT0gMCkgeyBcCitpZiAoaSkgeyBcCiAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGkgPCBzaXplKCk7ICsraSwgKytqKSBcCiAgICAgICAgIGFuaW1hdGlvbihpKS5wcm9wU2V0
KGFuaW1hdGlvbihqKS5wcm9wR2V0KCkpOyBcCiB9CiAKIEFuaW1hdGlvbkxpc3Q6OkFuaW1hdGlv
bkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvdGhlci5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChB
bmltYXRpb246OmNyZWF0ZShvdGhlci5hbmltYXRpb24oaSkpKTsKKyAgICBtX2FuaW1hdGlvbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5zaXplKCkpOworICAgIGZvciAoYXV0byYgYW5p
bWF0aW9uIDogb3RoZXIubV9hbmltYXRpb25zKQorICAgICAgICBtX2FuaW1hdGlvbnMudW5jaGVj
a2VkQXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSkpOwogfQogCiB2b2lk
IEFuaW1hdGlvbkxpc3Q6OmZpbGxVbnNldFByb3BlcnRpZXMoKQpAQCAtNTUsOSArNTYsMTAgQEAg
Ym9vbCBBbmltYXRpb25MaXN0OjpvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVy
KSBjb25zdAogewogICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChhbmltYXRp
b24oaSkgIT0gb3RoZXIuYW5pbWF0aW9uKGkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgKaW5kZXggYzg0Y2I5YjFkMTUxNjNkMDc2ODkz
NzQ2MTc0MDZkODQ5NDBkYWFmZS4uZWE3YzliNzhhMTk1MGYxNWU5NGZhYWJhYTk1MWI0ODE1NTJm
N2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCkBAIC0yMiw4ICsyMiw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9u
TGlzdF9oCi0jZGVmaW5lIEFuaW1hdGlvbkxpc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw2ICszNSw3IEBA
IGNsYXNzIEFuaW1hdGlvbkxpc3QgewogcHVibGljOgogICAgIEFuaW1hdGlvbkxpc3QoKSB7IH0K
ICAgICBBbmltYXRpb25MaXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsKKyAgICBBbmltYXRpb25M
aXN0KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9w
ZXJ0aWVzKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmKSBjb25z
dDsKQEAgLTQ5LDIyICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6
ZV90IG4pIHsgbV9hbmltYXRpb25zLnJlc2l6ZShuKTsgfQogICAgIHZvaWQgcmVtb3ZlKHNpemVf
dCBpKSB7IG1fYW5pbWF0aW9ucy5yZW1vdmUoaSk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGlv
bik7Ci0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKLSAgICB9Ci0gICAg
Ci0gICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuICptX2FuaW1hdGlv
bnNbaV07IH0KLSAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gKm1fYW5pbWF0aW9uc1tpXTsgfQorICAgIHZvaWQgYXBwZW5kKFJlZjxBbmltYXRp
b24+JiYgYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24p
KTsgfQorCisgICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuIG1fYW5p
bWF0aW9uc1tpXS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0uZ2V0KCk7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsK
KyAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oQW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKKyAgICBWZWN0
b3I8UmVmPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIH07ICAgIAogCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFuaW1hdGlvbkxpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKaW5kZXggZmNh
NDVjMTBkMjEwNGYwNWVkZWJiNzg4MDAxNGEyNjNhNjViMWUxMS4uNWVhMDFiMjBiMjYyN2I4ZDk3
YmEzNWYzZTJkN2NiZTRhNTUyOTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCkBAIC0yMywyOSArMjMsMjQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25UcmlnZ2VyX2gKLSNkZWZpbmUg
QW5pbWF0aW9uVHJpZ2dlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFU
SU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBbmltYXRpb25UcmlnZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVHJpZ2dlcj4g
ewogcHVibGljOgotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGNs
b25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7
Ci0gICAgICAgIEF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
clR5cGUKLSAgICB9OworICAgIHZpcnR1YWwgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVHJpZ2dlcigpIHsgfQogCisgICAg
ZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7IEF1dG9BbmltYXRpb25UcmlnZ2VyVHlw
ZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5cGUgfTsKICAgICBBbmltYXRpb25UcmlnZ2VyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGlzQXV0b0FuaW1h
dGlvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQW5pbWF0aW9uVHJpZ2dlclR5
cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZTsgfQpAQCAtNjIsMTYgKzU3LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICBBbmltYXRpb25UcmlnZ2VyVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBBdXRv
QW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIEF1dG9B
bmltYXRpb25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBSZWY8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgfkF1dG9BbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG90aGVyLmlzQXV0b0FuaW1hdGlvblRyaWdnZXIoKTsKICAgICB9CkBAIC04Miwy
MiArNzUsMjAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmlt
YXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRy
aWdnZXI+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogfTsKIAotY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0
aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCisgICAgc3RhdGljIFJlZjxTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3RoIHN0YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmICghb3RoZXIuaXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1hdGlv
blRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRWYWx1ZSwgbV9lbmRWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRW
YWx1ZSwgbV9lbmRWYWx1ZSkpOwogICAgIH0KIAogICAgIExlbmd0aCBtX3N0YXJ0VmFsdWU7CkBA
IC0xNTQsNSArMTQ1LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dF
UihBdXRvQW5pbWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHIKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciwgaXNTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyKTsKIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBBbmltYXRpb25Ucmln
Z2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKaW5kZXggZjVlNjYxNmE5N2NkNTNjNmJjYWUxMzVkZDM2Y2M0N2MyZmI3YzhjYy4u
ZmNhYTNjM2ZmZGI2ZGViMmFiZWViYzhkMDIwYTBkMzlkYTMyZjc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTIyLDU0
ICsyMiw1MCBAQAogICoKICAqLwogCi0jaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKLSNkZWZpbmUg
VGltaW5nRnVuY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBU
ZXh0U3RyZWFtOworCiBjbGFzcyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRp
bWluZ0Z1bmN0aW9uPiB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBSZWY8VGltaW5nRnVuY3Rpb24+
IGNsb25lKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsK
LSAgICAgICAgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rp
b24sIFNwcmluZ0Z1bmN0aW9uCi0gICAgfTsKLSAgICAKICAgICB2aXJ0dWFsIH5UaW1pbmdGdW5j
dGlvbigpIHsgfQogCisgICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgeyBMaW5lYXJGdW5jdGlv
biwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbiwgU3ByaW5nRnVuY3Rpb24gfTsK
ICAgICBUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIAorCiAgICAgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IExpbmVhckZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3ViaWNCZXppZXJGdW5jdGlvbjsg
fQogICAgIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFN0ZXBzRnVuY3Rpb247IH0KICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KLSAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3Qg
PSAwOworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBUaW1p
bmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKKyAgICBleHBsaWNpdCBUaW1pbmdG
dW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQotICAgIAorCitwcml2YXRlOgogICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSBt
X3R5cGU7CiB9OwogCiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBU
aW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGluZWFyVGlt
aW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxMaW5lYXJUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGlt
aW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdG
dW5jdGlvbik7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkxpbmVhclRpbWluZ0Z1bmN0aW9u
KCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzTGluZWFy
VGltaW5nRnVuY3Rpb24oKTsKICAgICB9CkBAIC04MCw2MSArNzYsNTQgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKICAg
ICB9CiB9OwogCiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGlj
IFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uUHJlc2V0
IHsKLSAgICAgICAgRWFzZSwKLSAgICAgICAgRWFzZUluLAotICAgICAgICBFYXNlT3V0LAotICAg
ICAgICBFYXNlSW5PdXQsCi0gICAgICAgIEN1c3RvbQotICAgIH07CisgICAgZW51bSBUaW1pbmdG
dW5jdGlvblByZXNldCB7IEVhc2UsIEVhc2VJbiwgRWFzZU91dCwgRWFzZUluT3V0LCBDdXN0b20g
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAg
IHN0YXRpYyBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGRvdWJsZSB4MSwg
ZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihDdXN0b20sIHgxLCB5MSwgeDIs
IHkyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5MikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJl
ZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQorICAgIHN0YXRpYyBSZWY8Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAocHJlc2V0KSB7CiAgICAgICAgIGNhc2UgRWFzZToKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24pOwogICAgICAgICBjYXNlIEVhc2VJbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAx
LjApKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFz
ZU91dDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VPdXQsIDAuMCwg
MC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlSW5PdXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICBjYXNlIEN1c3RvbToKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5DdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBm
aW5hbAogICAgIHsKLSAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsK
LSAgICAgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ICE9IEN1c3RvbSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldCA9PSBjdGYtPm1fdGltaW5n
RnVuY3Rpb25QcmVzZXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtX3gxID09
IGN0Zi0+bV94MSAmJiBtX3kxID09IGN0Zi0+bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBt
X3kyID09IGN0Zi0+bV95MjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghb3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyQ3ViaWMgPSBzdGF0aWNfY2FzdDxj
b25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAgICAgICBpZiAobV90
aW1pbmdGdW5jdGlvblByZXNldCAhPSBvdGhlckN1YmljLm1fdGltaW5nRnVuY3Rpb25QcmVzZXQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9u
UHJlc2V0ICE9IEN1c3RvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gbV94MSA9PSBvdGhlckN1YmljLm1feDEgJiYgbV95MSA9PSBvdGhlckN1YmljLm1feTEgJiYg
bV94MiA9PSBvdGhlckN1YmljLm1feDIgJiYgbV95MiA9PSBvdGhlckN1YmljLm1feTI7CiAgICAg
fQogCiAgICAgZG91YmxlIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQpAQCAtMTQ5LDIxICsx
MzgsMjEgQEAgcHVibGljOgogICAgICAgICBtX3gyID0geDI7CiAgICAgICAgIG1feTIgPSB5MjsK
ICAgICB9Ci0gICAgCisKICAgICBUaW1pbmdGdW5jdGlvblByZXNldCB0aW1pbmdGdW5jdGlvblBy
ZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQ7IH0KICAgICB2b2lk
IHNldFRpbWluZ0Z1bmN0aW9uUHJlc2V0KFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkgeyBt
X3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID0gcHJlc2V0OyB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGRlZmF1bHRUaW1pbmdGdW5jdGlvbigpCisKKyAg
ICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZGVmYXVsdFRpbWluZ0Z1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKiBkdGYgPSBjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBkdGY7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBmdW5jdGlvbiA9
IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQo
KSBjb25zdAorICAgIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNl
ZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKDEuMCAtIG1feDIsIDEuMCAt
IG1feTIsIDEuMCAtIG1feDEsIDEuMCAtIG1feTEpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uUHJl
c2V0IHByZXNldCA9IEVhc2UsIGRvdWJsZSB4MSA9IDAuMjUsIGRvdWJsZSB5MSA9IDAuMSwgZG91
YmxlIHgyID0gMC4yNSwgZG91YmxlIHkyID0gMS4wKQogICAgICAgICA6IFRpbWluZ0Z1bmN0aW9u
KEN1YmljQmV6aWVyRnVuY3Rpb24pCkBAIC0xNzUsOSArMTY0LDkgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KG1fdGltaW5nRnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihtX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CiAgICAgfQogCiAgICAg
ZG91YmxlIG1feDE7CkBAIC0xODksMjUgKzE3OCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoK
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUo
aW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdG
dW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0
U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihzdGVwcywgc3RlcEF0U3RhcnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rl
cHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBz
VGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+
U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlm
IChvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgY29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5j
dGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3Rl
cHMgJiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1fc3RlcEF0U3RhcnQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3RlcHNUaW1pbmdGdW5j
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlclN0
ZXBzID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXJTdGVwcy5tX3N0ZXBzICYmIG1fc3RlcEF0U3Rh
cnQgPT0gb3RoZXJTdGVwcy5tX3N0ZXBBdFN0YXJ0OwogICAgIH0KICAgICAKICAgICBpbnQgbnVt
YmVyT2ZTdGVwcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcHM7IH0KQEAgLTIxNSw3ICsyMDAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
QXRTdGFydDsgfQogICAgIHZvaWQgc2V0U3RlcEF0U3RhcnQoYm9vbCBzdGVwQXRTdGFydCkgeyBt
X3N0ZXBBdFN0YXJ0ID0gc3RlcEF0U3RhcnQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBTdGVw
c1RpbWluZ0Z1bmN0aW9uKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBU
aW1pbmdGdW5jdGlvbihTdGVwc0Z1bmN0aW9uKQpAQCAtMjI0LDkgKzIwOSw5IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0ZXBzVGltaW5nRnVuY3Rpb24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOwogICAgIH0KICAg
ICAKICAgICBpbnQgbV9zdGVwczsKQEAgLTI0NywxMyArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSgwLCAwLCAwLCAwKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsK
LSAgICAgICAgaWYgKG90aGVyLmlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAg
ICAgY29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mIG90aGVyU3RyaW5nID0gKnN0YXRpY19jYXN0
PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVy
biBtX21hc3MgPT0gb3RoZXJTdHJpbmcubV9tYXNzICYmIG1fc3RpZmZuZXNzID09IG90aGVyU3Ry
aW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlclN0cmluZy5tX2RhbXBpbmcgJiYg
bV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTdHJpbmcubV9pbml0aWFsVmVsb2NpdHk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3ByaW5n
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0
byYgb3RoZXJTcHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlclNwcmluZy5tX21hc3MgJiYg
bV9zdGlmZm5lc3MgPT0gb3RoZXJTcHJpbmcubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90
aGVyU3ByaW5nLm1fZGFtcGluZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlclNwcmluZy5t
X2luaXRpYWxWZWxvY2l0eTsKICAgICB9CiAKICAgICBkb3VibGUgbWFzcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWFzczsgfQpAQCAtMjc5LDkgKzI2Myw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0
aWZmbmVzcywgbV9kYW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3RpZmZuZXNzLCBt
X2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CiAgICAgfQogCiAgICAgZG91YmxlIG1fbWFz
czsKQEAgLTI5MCw5ICsyNzQsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2luaXRpYWxWZWxv
Y2l0eTsKIH07CiAKLWNsYXNzIFRleHRTdHJlYW07CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUaW1pbmdGdW5jdGlvbiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA0ZjliNWY1NWNjODQzZjRhYjg3
ZGUzNTU0MzlmODZkOTc4NmQxNmVhLi5kMThkYmRkOTQ0MjQ2NWQzM2U3ZTlkMGU3ZGNmODRlNmUw
M2MwNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQogCiAgICAgQXVkaW9DaGFubmVsKiBjaGFu
bmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7
IH0KLSAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5u
ZWxdLmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNo
YW5uZWwpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBB
dWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWVjNTNkOGEw
MTI3ZmMxOWJhNThiYTZkNGRmMmM5ZDE5YTk3NTZiZi4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFk
ZTExODJhNGUxZTUwZTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQwLDEyICsxNDAsMTEgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKKyAgICBhdXRvIGRhdGEgPSBh
ZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jv
b3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmYzU4ZmI2NWRm
ZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAzLi44MmI2YjYxNTY4NzdlMDQzY2M2MWQ4MzZi
YWE5MmE0YjJjNDcxMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5jb2RlckNGX2gKLSNkZWZpbmUgS2V5ZWRFbmNv
ZGVyQ0ZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDI1ICszNiwyNSBAQCBwdWJsaWM6CiAgICAgS2V5
ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAotICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2
YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0
cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9i
amVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5h
bDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlF
bGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZv
aWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFy
cmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7Cisg
ICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG1fcm9vdERpY3Rpb25hcnk7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5jb2RlckNG
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCmluZGV4IGIzOGQyY2FmZTdiNjkwM2Rk
NDRmYTZjMzZjZTM0MDFlOGU3M2I1NmIuLjc3ODIwMTc0MTI3YWU1ZGEzNWE2MWJhNGE4NmFkMGZi
ZTM0ZjMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtMjMsMTMgKzIz
LDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmxfaAotI2RlZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRl
IDxzcGVha19saWIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNSAr
NzQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCmluZGV4IGQ0OTIxMzY0MzA5OWMyYmE3NDVlYmZkNjk3ZWIxNTFhM2Zl
NTNmZjEuLjgxY2JlZDUzZDExNWU0NGYxMzRjMTIyNmQ2MzQ2MmM1OThlNDQ5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJp
YW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVp
bGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IDJkN2IxYzM0ZjcxOWIyNDg2NzcyNjIyNWUxM2I5Nzc0MmQyY2IzYmMuLmY5MWI0
ZGRiMzMxNWY2NmVjNGUwYzE5ZmQyNzA2NzNiNmM0NzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVu
Y29kZXJHbGliX2gKLSNkZWZpbmUgS2V5ZWRFbmNvZGVyR2xpYl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzksMjUgKzM4
LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVuY29kZXJHbGliKCk7CiAgICAgfktleWVkRW5jb2Rl
ckdsaWIoKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7
CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25z
dCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQg
ZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAg
ICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1aWxkZXI7CiAgICAgVmVjdG9yPEdWYXJpYW50
QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVyU3RhY2s7CkBAIC02Niw1ICs2NSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVu
Y29kZXJHbGliX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKaW5kZXggZDA1NmViZmUyMmFhZTgxNTk0ZTg4YmE0YjJlNzgyMTUzOWRiNzk3YS4uYWY0OGIw
YjkyNDJjNTk3MDBlZWViMzYyY2FiNmUwM2U1YWY2ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTI3LDE1ICsyNywxMyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRDYWNoZV9oCi0jZGVmaW5lIEZvbnRDYWNoZV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMjkwLDUgKzI4OCwzIEBAIGlubGluZSB2b2lkIEZvbnRD
YWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKQogI2VuZGlmCiAKIH0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggOTMwM2E5MDViMDk3MTNhMmQ1Y2NiMjM5YjJkOTc3NWRlODExYWE1Ni4u
YWQzODJmNDE1YTNiNTEwZWZlNDEzYmVmN2E5ZGFjZjFkZjljMzg4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIw
MTMtMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1l
bCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBD
ZW50ZXIgVVNBLCBJbmMuCkBAIC0yMiwxMCArMjIsMTUgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBG
b250UGxhdGZvcm1EYXRhX2gKLSNkZWZpbmUgRm9udFBsYXRmb3JtRGF0YV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CisKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJDT01QdHIuaCIKQEAgLTQ0LDI1
ICs0OSwxOCBAQAogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TRm9udDsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NU
Rm9udCogQ1RGb250UmVmOwotCiAjZW5kaWYKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmpl
Y3QuaD4KIHR5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOwpAQCAtNzAsNyArNjgsNiBAQCBp
bnRlcmZhY2UgSURXcml0ZUZvbnQ7CiBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogI2VuZGlm
CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CkBAIC04
MiwxMCArNzksNyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSgpOwotI2lmICFVU0UoRlJFRVRZUEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OwotI2VuZGlmCi0gICAgRm9udFBsYXRm
b3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKKwogICAgIEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkp
OwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gQXV0b1RleHRS
ZW5kZXJpbmcpOwogCkBAIC0xMDMsMjcgKzk3LDM2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7
CisjZW5kaWYKIAotI2lmIFVTRShDRykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykKICAg
ICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIENHRm9udFJlZiwgZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJ
KTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoRElSRUNUMkQpCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBJRFdy
aXRlRm9udCosIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgRm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVT
RShDQUlSTykKKyAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2Zv
bnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYK
IAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9m
YWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljT2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVm
YXVsdDsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShGb250UGxhdGZvcm1EYXRh
JiYpID0gZGVmYXVsdDsKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBt
X2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91
c2VHREk7IH0KLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBDVEZvbnRSZWYgZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIENURm9udFJlZiByZWdpc3RlcmVkRm9udCgpIGNvbnN0OyAv
LyBSZXR1cm5zIG51bGxwdHIgaWZmIHRoZSBmb250IGlzIG5vdCByZWdpc3RlcmVkLCBzdWNoIGFz
IHdlYiBmb250cyAob3RoZXJ3aXNlIHJldHVybnMgZm9udCgpKS4KIApAQCAtMTg5LDEyICsxOTIs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBVU0UoRlJFRVRZUEUpCi0gICAgRm9u
dFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSNlbHNl
Ci0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwbGF0Zm9ybUlz
RXF1YWwob3RoZXIpCkBAIC0yMzIsMTIgKzIyOSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0Owor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ0dGbG9hdCBjdEZvbnRTaXplKCkgY29uc3Q7CiAj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZP
TlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgorCiAjaWYgVVNF
KEZSRUVUWVBFKQogICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7
CiAjZW5kaWYKQEAgLTI1MywxMyArMjUzLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSAmJiAo
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMCkpCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9j
Z0ZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SURXcml0ZUZv
bnQ+IG1fZHdGb250OwogICAgIENPTVB0cjxJRFdyaXRlRm9udEZhY2U+IG1fZHdGb250RmFjZTsK
ICNlbmRpZgorCiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90
PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8
RmNQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgbXV0YWJsZSBGY1VuaXF1ZVB0cjxGY0ZvbnRTZXQ+
IG1fZmFsbGJhY2tzOwpAQCAtMjg1LDE1ICsyODgsMTggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2lzRW1vamkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFVT
RShGUkVFVFlQRSkKICAgICBib29sIG1fZml4ZWRXaWR0aCB7IGZhbHNlIH07CiAjZW5kaWYKIH07
CiAKICNpZiBVU0UoQVBQS0lUKQorCiAvLyBOU0ZvbnRzIGFuZCBDVEZvbnRSZWZzIGFyZSB0b2xs
LWZyZWUtYnJpZGdlZC4KIGlubGluZSBDVEZvbnRSZWYgdG9DVEZvbnQoTlNGb250ICpmb250KQog
ewpAQCAtMzA0LDkgKzMxMCwxMSBAQCBpbmxpbmUgTlNGb250ICp0b05TRm9udChDVEZvbnRSZWYg
Zm9udCkKIHsKICAgICByZXR1cm4gKE5TRm9udCAqKWZvbnQ7CiB9CisKICNlbmRpZgogCiAjaWYg
VVNFKENHKQorCiBjbGFzcyBTY29wZWRUZXh0TWF0cml4IHsKIHB1YmxpYzoKICAgICBTY29wZWRU
ZXh0TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtIG5ld01hdHJpeCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCkBAIC0zMzAsOCArMzM4LDcgQEAgcHJpdmF0ZToKICAgICBDR0NvbnRleHRSZWYgbV9jb250
ZXh0OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdGV4dE1hdHJpeDsKIH07CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApp
bmRleCBkOTE5ZmZkYmU1NGZjMjU5YTYxZjE1MWFkZTc3MDViNzNkODM2MDBjLi5mZTM3ZDI1MzRi
ZmMxMDcxMmI2NDAxMjFlMmY1YmQyMzI0YmFlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgR3JhcGhpY3NMYXllcl9oCi0jZGVmaW5lIEdy
YXBoaWNzTGF5ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNp
bmNsdWRlICJDb2xvci5oIgpAQCAtODAsMTEgKzc5LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIEFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBtX2tl
eVRpbWUob3RoZXIubV9rZXlUaW1lKQotICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIu
bV90aW1pbmdGdW5jdGlvbiA/IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkgOiBudWxs
cHRyKQorICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/
IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4geyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgp
IH0gOiBudWxscHRyKQogICAgIHsKICAgICB9CiAKKyAgICBBbmltYXRpb25WYWx1ZShBbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQW5pbWF0aW9uVmFsdWUmKSA9IGRlbGV0ZTsKKwogICAgIGRvdWJsZSBtX2tleVRpbWU7CiAg
ICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOwogfTsKQEAgLTEwNCwx
MiArMTA3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCi0gICAgRmxvYXRBbmltYXRpb25WYWx1
ZShjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJiBvdGhlcikKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShvdGhlcikKLSAgICAgICAgLCBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCi0gICAgewotICAg
IH0KLQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2
YXRlOgpAQCAtMTM0LDEwICsxMzEsMTMgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0t
PmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgp
KTsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTE2MiwxMCAr
MTYyLDEzIEBAIHB1YmxpYzoKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5pbWF0aW9uVmFsdWUob3RoZXIpCiAg
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fdmFsdWUub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkuYXBw
ZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92
YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlLm9w
ZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG90aGVy
Lm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCku
dW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiAgICAgfQogCisgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoRmlsdGVyQW5pbWF0aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CiAKIHByaXZhdGU6CkBAIC0xODUsMTMgKzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgICAgICA6IG1fcHJv
cGVydHkob3RoZXIucHJvcGVydHkoKSkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIubV92YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiBvdGhlci5tX3ZhbHVlcykKKyAgICAgICAgICAgIG1fdmFsdWVzLnVuY2hl
Y2tlZEFwcGVuZCh2YWx1ZS0+Y2xvbmUoKSk7CiAgICAgfQogCi0gICAgfktleWZyYW1lVmFsdWVM
aXN0KCkKLSAgICB7Ci0gICAgfQorICAgIEtleWZyYW1lVmFsdWVMaXN0KEtleWZyYW1lVmFsdWVM
aXN0JiYpID0gZGVmYXVsdDsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKQEAgLTIwMCw2ICsyMDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICBLZXlmcmFtZVZhbHVl
TGlzdCYgb3BlcmF0b3I9KEtleWZyYW1lVmFsdWVMaXN0JiYpID0gZGVmYXVsdDsKKwogICAgIHZv
aWQgc3dhcChLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3
YXAobV9wcm9wZXJ0eSwgb3RoZXIubV9wcm9wZXJ0eSk7CkBAIC0yMTAsMTAgKzIxNCwxMCBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUo
KTsgfQogICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1
cm4gKm1fdmFsdWVzLmF0KGkpOyB9Ci0gICAgCisKICAgICAvLyBJbnNlcnQsIHNvcnRlZCBieSBr
ZXlUaW1lLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBBbmltYXRpb25WYWx1ZT4pOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBBbmltYXRpb25WYWx1ZT4+IG1fdmFsdWVzOwogICAgIEFuaW1h
dGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OwpAQCAtMjI1LDcgKzIyOSw2IEBAIHByb3RlY3RlZDoK
IGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
TGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIGVudW0gY2xh
c3MgVHlwZSB7CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgUGFnZVRpbGVkQmFja2luZywKQEAg
LTI0MSw3ICsyNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShU
eXBlKSB7IH0KIAotICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOworICAgIHVz
aW5nIFBsYXRmb3JtTGF5ZXJJRCA9IHVpbnQ2NF90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
cklEIHByaW1hcnlMYXllcklEKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTY4Myw1
ICs2ODYsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAvLyBPdXRzaWRlIHRoZSBX
ZWJDb3JlIG5hbWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gdGhlIGRlYnVnZ2Vy
Lgogdm9pZCBzaG93R3JhcGhpY3NMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogbGF5ZXIpOwogI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCA4MjQ1ZDRlNmRhNzM1Mzg4MmVhOWNlMjdhNTM3MjVlMWNmZTgxNmRlLi44NTQ2YzcxMmY2NGEx
NzA2ZDYyMGIzNTIzNDY0YmVmNTViZDhjYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0yMywyMSArMjMsMTggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNl
c3Npb25faAotI2RlZmluZSBDRE1TZXNzaW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Q0RNU2Vz
c2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRp
b25VUkwpID0gMDsKIAogICAgIGVudW0gewpAQCAtNjQsNyArNjEsNiBAQCBlbnVtIENETVNlc3Np
b25UeXBlIHsKIAogY2xhc3MgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbigp
IHsgfQogICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KIAogICAgIHZpcnR1YWwgQ0RNU2Vz
c2lvblR5cGUgdHlwZSgpIHsgcmV0dXJuIENETVNlc3Npb25UeXBlVW5rbm93bjsgfQpAQCAtNzks
NSArNzUsMyBAQCBwdWJsaWM6CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKLQotI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCBiMTc2MzI0N2MxMDJm
NjkwYTg0N2EyNjhiOTkwNjI5N2ViYjc0ZTQzLi45MTRhMGEyNzdmMmE0Njc4MzY1ZTMyMzI3ZDAy
NjlhMjBiZjhjZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtNDg2LDE0ICs0ODYsMTUgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQ
b2x5Z29uJgogICAgIHJldHVybiBGbG9hdFJlY3QodG9wTGVmdC52YWx1ZSgpLCBib3R0b21SaWdo
dC52YWx1ZSgpKTsKIH0KIAotUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBw
ZWRSZWN0c0Zvck91dGxpbmUoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBC
b3JkZXJEYXRhJiBib3JkZXJEYXRhLCBmbG9hdCBvdXRsaW5lT2Zmc2V0LCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
Rm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IEJvcmRlckRh
dGEmIGJvcmRlckRhdGEsCisgICAgZmxvYXQgb3V0bGluZU9mZnNldCwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikKIHsKICAgICBBU1NFUlQoYm9yZGVyRGF0YS5oYXNCb3JkZXJSYWRpdXMoKSk7Ci0gICAgRmxv
YXRTaXplIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lk
dGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcExlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKLSAg
ICBGbG9hdFNpemUgdG9wUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BSaWdo
dCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BSaWdodCgpLmhlaWdodCgpLnZhbHVl
KCkpOwotICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJE
YXRhLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgRmxvYXRTaXplIGJvdHRvbUxlZnRSYWRpdXMgPSBG
bG9hdFNpemUoYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJE
YXRhLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKKworICAgIEZsb2F0U2l6ZSB0b3BM
ZWZ0UmFkaXVzIHsgYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0
YS50b3BMZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgdG9wUmlnaHRSYWRp
dXMgeyBib3JkZXJEYXRhLnRvcFJpZ2h0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BS
aWdodCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVz
IHsgYm9yZGVyRGF0YS5ib3R0b21SaWdodCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEuYm90
dG9tUmlnaHQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0UmFk
aXVzIHsgYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS5i
b3R0b21MZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKIAogICAgIGF1dG8gcm91bmRlZFJlY3QgPSBb
dG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBvdXRsaW5lT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcl0gKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGQ3NTQ2ZTI2ODcxM2Y4ZDQ1Y2Q1Y2Y4Zjk0NmFlYWQ1
ZjQ0OWRlMjAuLjg2MTg1ZmMyYmMxODJlOTJlZTkwYmMyNmUxZDU4MWZkYmQ5ODExN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBA
IC00NCwxNiArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiogcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KikKICAgICA6IG1f
cGFyZW50KHBhcmVudCkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc2Vzc2lvbklk
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKIHsKIH0KIAotUmVmUHRyPFVpbnQ4QXJyYXk+
IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK1JlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgVU5V
U0VEX1BBUkFNKGluaXREYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25VUkwpOwpA
QCAtNzAsMzUgKzY4LDMwIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVz
dEZvcktleVVSSShrZXlVUkkpOworICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LnRha2VSZXF1ZXN0
Rm9yS2V5VVJJKGtleVVSSSk7CiAgICAgaWYgKCFtX3JlcXVlc3QpIHsKICAgICAgICAgZXJyb3JD
b2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNlcnRpZmlj
YXRlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlm
aWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRl
RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlLT5i
YXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CiAKLSAgICBDU3RyaW5n
IGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7CisgICAgYXV0byBhc3NldFN0ciA9IGtleUlELnV0Zjgo
KTsKKyAgICBhdXRvIGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhhc3NldElELmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYXNzZXRTdHIu
ZGF0YSgpKSwgYXNzZXRTdHIubGVuZ3RoKCkpOwogCiAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0g
bnVsbHB0cjsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlSZXF1ZXN0ID0gYWRvcHRDRihB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRhLmdldCgpLCBh
c3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOworICAgIGF1dG8ga2V5UmVxdWVzdCA9
IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0
YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKIAogICAgIGlmICgh
a2V5UmVxdWVzdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5m
bzsKICAgICAgICAgaWYgKGNmRXJyb3IpIHsKLSAgICAgICAgICAgIHVzZXJJbmZvID0gYWRvcHRD
RihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKLQotICAgICAgICAgICAgaWYgKHVzZXJJ
bmZvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYgdW5kZXJseWluZ0Vycm9yID0g
KENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9y
VW5kZXJseWluZ0Vycm9yS2V5KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHVzZXJJbmZvID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKSkgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvIHVuZGVybHlpbmdFcnJvciA9IChDRkVycm9yUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvclVuZGVybHlpbmdFcnJvcktleSkpCiAgICAgICAgICAg
ICAgICAgICAgIHN5c3RlbUNvZGUgPSBDRkVycm9yR2V0Q29kZSh1bmRlcmx5aW5nRXJyb3IpOwog
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBDRlJlbGVhc2UoY2ZFcnJvcik7CiAgICAgICAg
IH0KLQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNiw4ICs5OSw4IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKLSAgICByZXR1cm4g
VWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3QuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoa2V5UmVxdWVzdC5nZXQoKSkpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RG
TW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICNlbmRpZgogfQogCkBAIC0xMTcsNyArMTEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewotICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
YXV0byBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3Mo
KSksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVsbHB0ciwg
a2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CkBAIC0xMjUsNyArMTE4LDYgQEAgYm9vbCBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYgbmV4dE0KICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBz
eXN0ZW1Db2RlID0gMDsKICAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCmluZGV4IDY1MjRkMWRmMGIzMTBiNmZmZTk0NjVjNTQzODZhZGRiZjhhNGQ5ZmUuLjEy
YTZhNzkzMWVlZWFmNDAxNWZmYjU2NjBlM2Y3MDE3MDU1Y2FlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTIzLDExICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKQEAgLTM3LDI2ICszNywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCi1jbGFzcyBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CitjbGFzcyBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YoKSB7IH0KLQotICAgIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQotICAgIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0K
LSAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIGJvb2wgdXBkYXRlKFVpbnQ4
QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogbV9wYXJlbnQ7Ci0gICAgQ0RN
U2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIENE
TVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYg
cGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRDbGll
bnQoQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBmaW5hbCB7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQg
cmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWlu
dDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YmIG1fcGFyZW50OworICAgIGNvbnN0IFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0Owog
fTsKIAogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25DRl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBkMWEwNjNlMGZiNTg3Y2ZjMGQ1YTAxYjQxNTY3YTBiN2I2
ZGMwMmU1Li40OWQzNTA5MjIxNWM2ODE4NjJiMzExYjk2OGEwZjBlOTU3ODIzNjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAKQEAgLTExMjIsNiArMTEyMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAogfQog
CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKwogUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0YWtlUmVxdWVzdEZv
cktleVVSSShjb25zdCBTdHJpbmcmIGtleVVSSSkKIHsKICAgICBpZiAoIW1fYXZmV3JhcHBlcikK
QEAgLTExMzUsMTMgKzExMzYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnMKICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
Pih0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CisKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCAsIENETVNlc3Npb25DbGllbnQqKQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENETVNlc3Npb25DbGllbnQqKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQorCiAjZW5kaWYKIAogbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
YXNzZXRFcnJvckNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZGYwM2NjYjYxMjkwMTllMGM4ODQyNmQ3
ODBhYWVkZTUyNmUyMGIyOS4uYmJjMDVkNTA3ZjQyNTY2NzlmYjdkN2JjZjcyMGQ4NTI2YzFhYzM3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKLSNk
ZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIApAQCAtNjYsNSArNjYsMyBAQCBw
cm90ZWN0ZWQ6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYmE0OTYzNTk3ZGFkZjBlMmZjYzUyOGZjODFjYzMy
MTVlOGNkMmJlZS4uZmE0NDQ0YjFlY2ZhYTJjMGU2MjkwNzgwODVmZmE2ZmMyYjI5NmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCkBAIC05MjQsOCArOTI0LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkK
IAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIC8vIElmIHRoZXJlIGlz
IGEgdHJpZ2dlciB0aGF0IGRlcGVuZHMgb24gdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgY2Fubm90
IGFjY2VsZXJhdGUgdGhlIGFuaW1hdGlvbi4KLSAgICBpZiAoYW5pbS0+dHJpZ2dlcigpLT5pc1Nj
cm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewotICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
JiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0t
PnRyaWdnZXIoKS5nZXQoKSk7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KGFu
aW0tPnRyaWdnZXIoKSkpIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAo
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTI4MDUsNyArMjgwNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVB
bmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAg
aW50IGFuaW1hdGlvbkluZGV4ID0gMDsKICAgICAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb247Ci0gICAgCisKICAgICBpZiAoaXNLZXlmcmFtZSkgewogICAgICAg
ICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVy
dHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOwogICAgICAgICB2
YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FB
bmltYXRpb24uZ2V0KCkpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHUKICAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2
ZSk7CiAgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2
YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDI0LDEzICszMDI0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9u
KiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShm
aWxsTW9kZSk7CiB9CiAKLWNvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1W
YWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQorY29uc3QgVGltaW5nRnVuY3Rpb24mIEdyYXBo
aWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCiB7CiAgICAgaWYgKGFu
aW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAqYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7
CiAgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICByZXR1cm4gYW5p
bS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotICAgIAorICAgICAgICByZXR1cm4gKmFuaW0udGlt
aW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVm
YXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTMwNTQsOSArMzA1Myw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlm
cmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAg
ICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0
aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9u
LgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKLSAgICBp
ZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24o
dGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICph
bmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDg2LDEz
ICszMDgzLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlU
aW1lcyk7CiAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModmFsdWVzKTsKICAgICBrZXlmcmFt
ZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFmb3J3YXJkcyk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSw4ICszMTAyLDggQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAg
ICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGF1dG8mIHN0
YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZh
bHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBhdXRvJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsK
IAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKQEAgLTMxNDksMTAgKzMxNDYsOSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZv
ciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUg
c3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2lu
ZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcg
ZnVuY3Rpb24uCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24p
OwotICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3
YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMp
OwogCi0gICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9y
bU9wVHlwZSk7CisgICAgYXV0byB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVG
b3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKICAgICBpZiAodmFsdWVGdW5j
dGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24pCiAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKIApAQCAtMzIwNCw3ICsz
MjAwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9u
cy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZh
bHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
Zm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9u
KSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMp
OwpAQCAtMzI2MCw3ICszMjU2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKIAogICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzI4OCw3
ICszMjg0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCBkMjQ5N2MzMWRhYWIzYjRmYWQ5NTk1NGQ3NTNlMDZhMzJhNWY1
ZDY2Li4yMjNiMTVmZjBmZWM2MTMwNTJmOGY0MzQyOTZlNWRkZjBiMTBjMGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FB
bmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCBlMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUx
MTAzOWRmOWJlNDAwNzEwLi5kYzJiZTFiODc1YjRiZTdhZGVmZDY3MmFiYTgxYjZkZDA3ZTk2M2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDkgKzM1LDMzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBJbnRTaXplIG91dHNldFNpemVGb3JCbHVyKGZsb2F0
IHN0ZERldmlhdGlvbikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1
cjo6Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBz
dGREZXZpYXRpb24pKTsKKyAgICBhdXRvIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBzdGREZXZp
YXRpb24pKTsKIAotICAgIEludFNpemUgb3V0c2V0OwogICAgIC8vIFdlIHRha2UgdGhlIGhhbGYg
a2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJlY2F1c2Ugd2UgcnVuIGJv
eCBibHVyIHRocmVlIHRpbWVzLgotICAgIG91dHNldC5zZXRXaWR0aCgzICoga2VybmVsU2l6ZS53
aWR0aCgpICogMC41Zik7Ci0gICAgb3V0c2V0LnNldEhlaWdodCgzICoga2VybmVsU2l6ZS5oZWln
aHQoKSAqIDAuNWYpOwotCi0gICAgcmV0dXJuIG91dHNldDsKLX0KLQotRmlsdGVyT3BlcmF0aW9u
czo6RmlsdGVyT3BlcmF0aW9ucygpCi17Ci19Ci0KLUZpbHRlck9wZXJhdGlvbnMmIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikKLXsKLSAg
ICBtX29wZXJhdGlvbnMgPSBvdGhlci5tX29wZXJhdGlvbnM7Ci0gICAgcmV0dXJuICp0aGlzOwor
ICAgIHJldHVybiB7CisgICAgICAgIDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLAorICAgICAg
ICAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIKKyAgICB9OwogfQogCi1ib29sIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK2Jv
b2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
dGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0
aW9ucy5zaXplKCkpCisgICAgc2l6ZV90IHNpemUgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOworICAg
IGlmIChzaXplICE9IG90aGVyLm1fb3BlcmF0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHVuc2lnbmVkIHMgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzOyBpKyspIHsKLSAgICAgICAgaWYgKCptX29wZXJhdGlvbnNb
aV0gIT0gKm8ubV9vcGVyYXRpb25zW2ldKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmICgqbV9vcGVyYXRpb25zW2ldICE9ICpvdGhlci5tX29wZXJh
dGlvbnNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAogewotICAgIHNpemVfdCBudW1PcGVyYXRp
b25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICAvLyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1
bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlzdHMgZG9uJ3QgbWF0Y2gKLSAgICBpZiAo
bnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25zKCkuc2l6ZSgpKQorICAgIHNpemVfdCBz
aXplID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICBpZiAoc2l6ZSAhPSBvdGhlci5vcGVyYXRp
b25zKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgdHlw
ZXMgb2YgZWFjaCBmdW5jdGlvbiBhcmUgbm90IHRoZSBzYW1lLCB0aGUgbGlzdHMgZG9uJ3QgbWF0
Y2gKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJhdGlvbnM7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghb3BlcmF0
aW9ucygpW2ldLT5pc1NhbWVUeXBlKCpvdGhlci5vcGVyYXRpb25zKClbaV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg2LDggKzcwLDggQEAgYm9vbCBGaWx0ZXJPcGVy
YXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNv
bnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QK
IHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAobV9vcGVyYXRpb25zLmF0KGkpLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMp
IHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVG
RVJFTkNFKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk1LDkgKzc5LDkgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VG
aWx0ZXIoKSBjb25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25z
dAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBl
ID0gbV9vcGVyYXRpb25zLmF0KGkpLmdldCgpLT50eXBlKCk7Ci0gICAgICAgIGlmIChvcGVyYXRp
b25UeXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCBvcGVyYXRpb25UeXBlID09IEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29w
ZXJhdGlvbnMpIHsKKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAg
ICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCB0eXBlID09IEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDExICs5MCwxMCBAQCBib29sIEZpbHRlck9wZXJhdGlv
bnM6Omhhc091dHNldHMoKSBjb25zdAogRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpv
dXRzZXRzKCkgY29uc3QKIHsKICAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICptX29wZXJhdGlvbnMu
YXQoaSk7Ci0gICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgeworICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7CisgICAgICAgIHN3aXRjaCAob3Bl
cmF0aW9uLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
LSAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAg
ICAgYXV0byYgYmx1ck9wZXJhdGlvbiA9IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpv
cGVyYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7CiAgICAg
ICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0
U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOwpA
QCAtMTE4LDE0ICsxMDEsMTQgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRz
ZXRzKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgY29uc3QgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBhdXRv
JiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRT
aXplRm9yQmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAg
ICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygKKyAgICAgICAgICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cyB7CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAt
IGRyb3BTaGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBv
dXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAgICAg
ICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVyYXRp
b24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLndpZHRoKCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSkKLSAgICAgICAgICAgICk7CisgICAgICAgICAgICB9
OwogICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTM4LDI0ICsxMjEsMjYgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9vcGVyYXRpb25z
W2ldLT5hZmZlY3RzT3BhY2l0eSgpKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVy
YXRpb25zKSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPmFmZmVjdHNPcGFjaXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGlmIChtX29wZXJhdGlvbnNbaV0tPm1vdmVzUGl4ZWxzKCkpCisgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+bW92ZXNQ
aXhlbHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVy
cy5hdChpKTsKKyAgICAgICAgYXV0byBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwogICAgICAgICBp
ZiAoZmlsdGVyKQogICAgICAgICAgICAgdHMgPDwgKmZpbHRlcjsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaAppbmRleCBjZjJjNWI5YjYyNWNiNjY5YzhjNzE0ZTdkM2ZiYTdjMDgz
YTFkZDExLi40ODZmNjg2ZmFhNjk0M2E0NmIyYjhiMWFiNmMwYzdkYzE4ZGQ2Nzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEZpbHRlck9wZXJhdGlvbnNfaAotI2RlZmluZSBGaWx0ZXJPcGVyYXRpb25zX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSW50
UmVjdEV4dGVudC5oIgpAQCAtMzMsMzMgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdHlwZWRlZiBJbnRSZWN0RXh0ZW50IEZpbHRlck91dHNldHM7Cit1c2luZyBGaWx0ZXJPdXRz
ZXRzID0gSW50UmVjdEV4dGVudDsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVy
T3BlcmF0aW9ucygpOwotICAgIEZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0b3I9KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX29wZXJhdGlvbnMuY2xlYXIo
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0K
LSAgICAKICAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkg
eyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+PiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fb3BlcmF0aW9ucy5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuaXNFbXB0
eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6
ZSgpOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChp
bmRleCkuZ2V0KCkgOiAwOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3Bl
cmF0aW9uc1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICBib29sIG9wZXJhdGlvbnNN
YXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKQEAgLTcwLDYgKzU4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKICAg
ICBib29sIGhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3Rv
cjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9vcGVyYXRpb25zOwogfTsKQEAgLTc3LDUgKzY2
LDMgQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5jcHAKaW5kZXggMGJlZGQwYTU3NGMyNDk5ZTVlM2FjZTkyN2I1NDExZjk0MjAx
YTg1MC4uOWNjMWRmNmFkM2JlNTcyOWQzYjJhODE3OTNlNWE1NzA0YWUxZWRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMTI4LDE5ICsxMjgsMTYgQEAgc3RhdGlj
IGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVw
QXRTdGFydCwgZG91YmxlIHQKICAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0
ZXBzOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1
cmF0aW9uKQorc3RhdGljIGlubGluZSBmbG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJh
dGlvbikKIHsKLSAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gcHJvZ3Jl
c3M7Ci0KLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlv
bik7Ci0gICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLCBj
dGYtPnkxKCksIGN0Zi0+eDIoKSwgY3RmLT55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOworICAg
IGlmICh0aW1pbmdGdW5jdGlvbi5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAg
ICAgICBhdXRvJiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi54MSgpLCBjdGYueTEoKSwgY3RmLngyKCksIGN0Zi55MigpLCBwcm9ncmVzcywg
ZHVyYXRpb24pOwogICAgIH0KIAotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
LSAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwg
c3RmLT5zdGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKKyAgICBpZiAodGltaW5nRnVu
Y3Rpb24uaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byYgc3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYubnVtYmVyT2ZTdGVwcygpLCBzdGYu
c3RlcEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHBy
b2dyZXNzOwpAQCAtMTk0LDEzICsxOTEsMTIgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGYKICAg
ICByZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmlt
YXRpb25WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVy
biBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotCisgICAgaWYgKGFuaW1hdGlvblZhbHVl
LnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiAqYW5pbWF0aW9uVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiAqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0yNTcs
NyArMjUzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgp
ID09IDIpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0g
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgbV9hbmlt
YXRpb24uZ2V0KCkpOworICAgICAgICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksICptX2FuaW1hdGlvbik7CiAg
ICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rp
b24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBh
cHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEp
LCBub3JtYWxpemVkVmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjY2LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVk
VmFsdWUgLSBmcm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkp
OwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAg
ICAgYXV0byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sICptX2FuaW1hdGlvbik7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5v
cm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRl
eCA1ODRmZGFiZDkyNDdmYTU4ZDliMGYwZjA0NjhkNDI2MGE2NmQyMDVhLi5lZmJlODBmYWUwM2M0
Y2EyODg0ZGMyZmI5MmExNzdmZmFhYzAyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAt
NjAsNyArNjAsNyBAQCBAaW50ZXJmYWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09i
amVjdDxBVlNwZWVjaFN5bnRoZXNpemVyRGVsZWdhdGU+CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgKilpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKilzeW50aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0
dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAtODcs
NyArODcsNyBAQCAtIChmbG9hdCltYXBTcGVlY2hSYXRlVG9QbGF0Zm9ybVJhdGU6KGZsb2F0KXJh
dGUKICAgICByZXR1cm4gcmF0ZTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0ZXJhbmNl
CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBj
YWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0
c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAg
LSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pdXQKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9sdW1lOnV0dGVy
YW5jZS0+dm9sdW1lKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0
ZXJhbmNlLT5waXRjaCgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07Ci0g
ICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0
dGVyYW5jZSk7CiAKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5j
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4OWQyYWVlMDNl
MjI0NWMuLjJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTE1NSwxMCArMTU1LDEwIEBAIHN0
YXRpYyBMZW5ndGhTaXplIHNpemVGcm9tTlNDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIG5zQ29u
dHJvbFNpemUsIGNvbnN0IExlbmd0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikKICAgICAg
ICAgY29udHJvbFNpemUgPSBJbnRTaXplKGNvbnRyb2xTaXplLndpZHRoKCkgKiB6b29tRmFjdG9y
LCBjb250cm9sU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwogICAgIExlbmd0aFNpemUgcmVz
dWx0ID0gem9vbWVkU2l6ZTsKLSAgICBpZiAoem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRX
aWR0aChMZW5ndGgoY29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBpZiAoem9vbWVk
U2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgp
ID4gMCkKLSAgICAgICAgcmVzdWx0LnNldEhlaWdodChMZW5ndGgoY29udHJvbFNpemUuaGVpZ2h0
KCksIEZpeGVkKSk7CisgICAgaWYgKHpvb21lZFNpemUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8o
KSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmVzdWx0LndpZHRoID0geyBj
b250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCB9OworICAgIGlmICh6b29tZWRTaXplLmhlaWdodC5p
c0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgpID4gMCkKKyAgICAgICAg
cmVzdWx0LmhlaWdodCA9IHsgY29udHJvbFNpemUuaGVpZ2h0KCksIEZpeGVkIH07CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIGNo
ZWNrYm94TWFyZ2lucyhOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNp
emUgY2hlY2tib3hTaXplKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBh
bmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8u
Ci0gICAgaWYgKCF6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9v
bWVkU2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6
ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJp
bnNpY09yQXV0bygpKQogICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0
aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250
cm9sLgpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIHJhZGlvTWFyZ2lucyhO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNpemUgcmFkaW9TaXplKGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9h
dCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3Ro
IHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCF6b29tZWRT
aXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQoKS5p
c0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNp
Y09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAg
ICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRl
dGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgpAQCAtNzEzLDkgKzcx
Myw5IEBAIExlbmd0aFNpemUgVGhlbWVNYWM6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zCiAgICAgICAgICAgICByZXR1cm4gcmFkaW9T
aXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgogICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBz
cGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KLSAgICAgICAgICAgIHJldHVybiBzaXpl
RnJvbUZvbnQoZm9udCwgTGVuZ3RoU2l6ZSh6b29tZWRTaXplLndpZHRoKCksIExlbmd0aCgpKSwg
em9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21G
b250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNp
emVzKCkpOwogICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICBp
ZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXpl
LmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgICAgICBpZiAoIXpvb21lZFNp
emUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRy
aW5zaWNPckF1dG8oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKICAgICAg
ICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRyb2xTaXplRm9y
Rm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzI2LDE3ICs3MjYsMTcgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6
Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnMKIExlbmd0aFNpemUgVGhlbWVNYWM6Om1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAg
ICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICBjYXNlIElu
bmVyU3BpbkJ1dHRvblBhcnQ6ewotICAgICAgICAgICAgSW50U2l6ZSBiYXNlID0gc3RlcHBlclNp
emVzKClbTlNDb250cm9sU2l6ZU1pbmldOwotICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUo
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4oYmFzZS53aWR0aCgpICogem9vbUZhY3RvciksIEZpeGVk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+
KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUo
cGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgorICAg
IGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3Ip
LCBGaXhlZCB9IH07CisgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OiB7CisgICAgICAgIGF1
dG8mIGJhc2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07CisgICAgICAgIHJl
dHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4
ZWQgfSwKKyAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9v
bUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA0MzE1
Y2NjNTdhNWQxNWZjZGI1NjU5YzcxZjFiZmQ5ZmRlMjgyMTNjLi5lZDMwYWIwMzI3MDFjZGUzZDJh
NmRjNjkxNzgyZjczMmUxNWViYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wgZm9j
dXNlZCkKICAgICBpZiAoIWZvY3VzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBm
cmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKKyAgICBGcmFtZSogZnJhbWUgPSBG
cmFtZTo6ZnJhbWVGb3JXaWRnZXQoKnRoaXMpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmFk
NDM5N2EwNGMwNTU2MWM3YzFkNjA2N2FkZWM1MTU5ZjIzNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50TW9jay5oIgotCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURldmljZU1vdGlvbkNsaWVudE1vY2s6OkRldmljZU1vdGlvbkNs
aWVudE1vY2soKQotICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKCp0aGlzLCAm
RGV2aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCkKLSAgICAsIG1faXNVcGRhdGluZyhm
YWxzZSkKLXsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nv
bnRyb2xsZXIpOwotICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgQVNTRVJUKG1f
Y29udHJvbGxlcik7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRh
dGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IGZhbHNl
OwotICAgIG1fdGltZXIuc3RvcCgpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6
OnNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IG1vdGlvbikKLXsKLSAgICBt
X21vdGlvbiA9IG1vdGlvbjsKLSAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIERldmlj
ZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoKQotewotICAgIG1fdGltZXIuc3RvcCgpOwot
ICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1fbW90aW9uLmdldCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2M2MjY4MjhlYTRmMzk0MWRlNWJjZTAxNTM1ODhkMWIwNGNhZTk5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERldmljZU1vdGlvbkNsaWVudE1vY2tf
aAotI2RlZmluZSBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJU
aW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGV2aWNlTW90aW9uQ29udHJv
bGxlcjsKLQotLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIERldmljZU1vdGlvbkNsaWVudCB1
c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KLS8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMg
c2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCi0vLyBj
bGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgotY2xhc3MgRGV2aWNlTW90aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewotcHVibGljOgotICAgIERldmlj
ZU1vdGlvbkNsaWVudE1vY2soKTsKLQotICAgIC8vIERldmljZU1vdGlvbkNsaWVudAotICAgIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKLSAgICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9tb3Rpb24uZ2V0KCk7IH0KLSAgICAvLyBtb2NrIGlzIG93bmVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yaywgd2hpY2ggc2hvdWxkIGhhbmRsZSBkZWxldGlvbgotICAgIHZv
aWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotCi0gICAg
dm9pZCBzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPik7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCB0aW1lckZpcmVkKCk7Ci0KLSAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4g
bV9tb3Rpb247Ci0gICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFRpbWVyIG1fdGltZXI7Ci0gICAgYm9vbCBtX2lzVXBkYXRpbmc7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAKaW5kZXggMzg4MTFmYzEwODE4OGNm
ZTI2ZTE4MGYwMGY5ZjUwZmQ2MTVkYjdkMy4uN2E5OTMxMzZiYTJjM2EwNWQyZDMxOTZhNTU2Nzcx
OGEwMGRhZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNv
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAK
QEAgLTQwLDEwICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIFJlZlB0
cjxTaGFyZWRDdXJzb3I+IGltcGw7Ci0KICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0g
ZGV0ZXJtaW5lSG90U3BvdChpbWcsIGhvdFNwb3QpOwogICAgIHN0YXRpYyBib29sIGRvQWxwaGEg
PSB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NYUDsKICAgICBCaXRtYXBJbmZvIGN1cnNvcklt
YWdlID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoaW1nLT53aWR0aCgpLCBpbWctPmhlaWdo
dCgpKSk7CkBAIC01Miw4ICs1MCw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
Y3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgYXV0
byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwog
ICAgIGlmIChkb0FscGhhKSB7CiAgICAgICAgIGF1dG8gaEN1cnNvciA9IGFkb3B0R0RJT2JqZWN0
KDo6Q3JlYXRlRElCU2VjdGlvbihkYywgJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgbnVs
bHB0ciwgMCwgMCkpOwotICAgICAgICBpZiAoIWhDdXJzb3IpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBpbWctPmdldEhCSVRNQVAoaEN1cnNvci5nZXQoKSk7IAogICAg
ICAgICBIQklUTUFQIGhPbGRCaXRtYXAgPSAoSEJJVE1BUClTZWxlY3RPYmplY3Qod29ya2luZ0RD
LmdldCgpLCBoQ3Vyc29yLmdldCgpKTsKQEAgLTcxLDE1ICs2NywxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpaS5oYm1NYXNrID0gaE1hc2suZ2V0KCk7CiAgICAgICAgIGlp
LmhibUNvbG9yID0gaEN1cnNvci5nZXQoKTsKIAotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29y
OjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3QoJmlpKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRDdXJzb3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgYmxlbmRlZCBjdXJz
b3JzLCBzbyB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGNyZWF0ZSB0aGUgbWFzayBtYW51YWxseQog
ICAgICAgICBhdXRvIGFuZE1hc2tEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKGRjKSk7CiAgICAgICAgIGF1dG8geG9yTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMoZGMpKTsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmpl
Y3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBu
dWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAg
ICAgICAgIEJJVE1BUCBjdXJzb3I7CkBAIC0xMDgsMTggKzEwMiwxNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpY29uLnlIb3RzcG90ID0gZWZmZWN0aXZlSG90U3BvdC55KCk7
CiAgICAgICAgIGljb24uaGJtTWFzayA9IGFuZE1hc2suZ2V0KCk7CiAgICAgICAgIGljb24uaGJt
Q29sb3IgPSB4b3JNYXNrLmdldCgpOwotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29yOjpjcmVh
dGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
bG9hZFNoYXJlZEN1cnNvcihISU5TVEFOQ0UgaEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFt
ZSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBo
SW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1lKQogewogICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZSg6OkxvYWRDdXJzb3JXKGhJbnN0YW5jZSwgbHBDdXJzb3JOYW1lKSk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5TmFtZShjaGFyKiBu
YW1lLCBpbnQgeCwgaW50IHkpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5
TmFtZShjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgSW50UG9pbnQgaG90U3BvdCh4
LCB5KTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnNvckltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCAwMDA4N2QyM2Y2MjY4NjVmOTc2YTc2Mjg2MWY2NzQzOWEw
Y2NiYmQzLi5mNTlmMTVmNmI0ZTA3MWYwMzk5OTcwMzMzZTFkYmQ5MWY4YzFjNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAg
LTM2NCw3ICszNjQsNyBAQCBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRl
U291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dAogCiBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxhc3QoKS5nZXQoKSkuYXNJbWFnZUJ1ZmZl
cigpOworICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpLT5hc0ltYWdlQnVmZmVyKCk7CiB9CiAK
IHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgZWZmZWN0UmVjdCkKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCiAK
IEludFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dFJlY3QoKSBjb25zdAogewotICAg
IGF1dG8mIGxhc3RFZmZlY3QgPSBjb25zdF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5s
YXN0KCkuZ2V0KCkpOworICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpOwogICAgIGlmICghbGFzdEVmZmVjdC5oYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA2M2I3M2M1YzUzMjQyMzM5
YzZkMzYwMWQ2YTJjNjVhZWQzYWY1YTAzLi5jMmIyMjE2YTZhOThmNzU2NGFlODk5OGUwMjI4ZDdm
NjAzYzU4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1
YWxpdHkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1JbnRlcnBvbGF0aW9uUXVhbGl0
eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdl
JiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitJbnRl
cnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNp
emUmIHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwg
dGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaCBx
dWFsaXR5LgogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRv
Y3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYjFmYjMwYTA5Y2MzYTJmNTRh
ZDhhYjQ3NThmYmI1YjEwNzkyZTVkYy4uNWEwMGY5ZWNlMGFhODk1MWEyZTZkODBlYWZmNDFlNmJi
ZWM0M2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApA
QCAtMTIzMSwxMiArMTIzMSwxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgfQogfQog
Ci12b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBpZiAoIWZpbGxMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXll
ci0+bmV4dCgpLCByZWN0LCBvcCk7Ci0gICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIG9wKTsKKyAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5
ZXJzOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKQorICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBsYXllcnMu
cmV2ZXJzZSgpOworICAgIGZvciAoYXV0byogbGF5ZXIgOiBsYXllcnMpCisgICAgICAgIHBhaW50
RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllciwgcmVjdCwgb3ApOwogfQogCiBib29s
IElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBG
aWxsTGF5ZXImIGxhc3RCYWNrZ3JvdW5kTGF5ZXIpIGNvbnN0CkBAIC0xMjQ4LDE3ICsxMjUwLDE3
IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tnCiAgICAgcmV0dXJuICghaGFzRmlsbEltYWdlICYm
ICFyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3go
KSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgpOwogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
aWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7Ci0gICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgpOwot
ICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKCZyZW5kZXJlcigp
LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBhdXRvKiBpbWFnZSA9
IGZpbGxMYXllci5pbWFnZSgpOworICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1hZ2UgJiYgaW1h
Z2UtPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgaWYgKCghaGFzRmlsbEltYWdlICYmICFyZW5kZXJlcigpLnN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwg
IXBhcmVudCgpKQotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFp
bnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJl
Y3Quc2l6ZSgpLCBvcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChwYWludEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUs
IHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9C
UkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gRENMT05FKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOwot
ICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBv
cCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Qu
c2l6ZSgpLCBvcCk7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC0xMjkwLDcgKzEyOTIs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgYwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgp
LCBoZWlnaHQoKSkpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlw
V2lkdGgsIHN0cmlwSGVpZ2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXpl
KCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUo
KSwgb3ApOwogICAgIH0KIH0KIApAQCAtMTQ0Niw3ICsxNDQ4LDcgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyA9IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnM7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSB7Ci0gICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJlbmRlcmVy
KCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCktPmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUo
KS5tYXNrTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgaWYgKChtYXNrQm94SW1hZ2UgJiYgcmVu
ZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0
eWxlKCkubWFza0xheWVycygpLm5leHQoKSkKICAgICAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURl
c3RpbmF0aW9uSW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRl
eCA4MzkwNWJkYzRlN2E3ZWIwN2Y5MzdlNDJhMDBjZDYyNDU5YzA0NWI5Li41NzJiMDI1NjFiMWQ5
MWY2YWViMGM0OGQxYmVlMjYzMmIzNTZlZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29u
c3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBiNGE3YmEwMjM3OTcxZjE3YWEyYzA3OTVjMzBlYzIyOTc3MDk5YTNj
Li44YTk2Yzg0OTdmYjM0NmQ0OTIzZmUwMmVkMWViNzA0ODMxYjdiZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTI3MCwxMCArMTI3MCw5IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogICAgIGlmICghcm9vdEJhY2tncm91bmRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgQ29sb3IgYmdDb2xvciA9IHJvb3RCYWNrZ3Jv
dW5kUmVuZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLQotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3Is
IGJnTGF5ZXIsIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKKyAgICBhdXRvJiBz
dHlsZSA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXItPnN0eWxlKCk7CisgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgY29sb3IsIHN0eWxlLmJhY2tncm91bmRM
YXllcnMoKSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCiBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtMTQxNCwxMiArMTQxMywx
MyBAQCBib29sIFJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoIXN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpIHx8IHN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKKyAgICBhdXRvJiBsYXllcnMgPSBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoIWxheWVycy5pbWFnZSgpIHx8IGxheWVy
cy5uZXh0KCkpIHsKICAgICAgICAgcGFpbnRlZEV4dGVudCA9ICBiYWNrZ3JvdW5kUmVjdDsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
Z2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0LCBiYWNrZ3JvdW5kUmVjdCk7Cisg
ICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxw
dHIsIGxheWVycywgcGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KTsKICAgICBwYWludGVkRXh0
ZW50ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKICAgICByZXR1cm4gIWdlb21ldHJ5Lmhhc05vbkxv
Y2FsR2VvbWV0cnkoKTsKIH0KQEAgLTE0NDksNyArMTQ0OSw3IEBAIGJvb2wgUmVuZGVyQm94Ojpi
YWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxS
ZWN0KSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBGSVhNRTogVGhlIGJh
Y2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgotICAgIGlm
IChzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgpKQorICAgIGlmIChzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKS5uZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMYXlv
dXRSZWN0IGJhY2tncm91bmRSZWN0OwogICAgIHN3aXRjaCAoc3R5bGUoKS5iYWNrZ3JvdW5kQ2xp
cCgpKSB7CkBAIC0xNTM5LDE5ICsxNTM5LDE5IEBAIGJvb2wgUmVuZGVyQm94Ojpjb21wdXRlQmFj
a2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAK
IGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7Ci0gICAgaWYgKCFmaWxsTGF5ZXIgfHwgZmlsbExheWVyLT5jbGlwKCkgIT0gQm9yZGVyRmls
bEJveCkKKyAgICBhdXRvJiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsK
KyAgICBpZiAoZmlsbExheWVyLmNsaXAoKSAhPSBCb3JkZXJGaWxsQm94KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDbGlwcGVkIHdpdGggbG9jYWwgc2Nyb2xsaW5nCi0gICAgaWYg
KGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXllci0+YXR0YWNobWVudCgpID09IExvY2FsQmFj
a2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXll
ci5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGZpbGxMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYm
IGZpbGxMYXllci0+aGFzUmVwZWF0WFkoKSAmJiBmaWxsTGF5ZXItPmltYWdlKCktPmNhblJlbmRl
cih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCisgICAgaWYgKGZpbGxMYXllci5oYXNP
cGFxdWVJbWFnZSgqdGhpcykgJiYgZmlsbExheWVyLmhhc1JlcGVhdFhZKCkgJiYgZmlsbExheWVy
LmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgYW5k
IG5vIGltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZS4K
LSAgICBpZiAoIWZpbGxMYXllci0+bmV4dCgpICYmICFmaWxsTGF5ZXItPmhhc0ltYWdlKCkpIHsK
KyAgICBpZiAoIWZpbGxMYXllci5uZXh0KCkgJiYgIWZpbGxMYXllci5oYXNJbWFnZSgpKSB7CiAg
ICAgICAgIENvbG9yIGJnQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiZ0NvbG9yLmlzT3BhcXVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1OTAsMTUgKzE1OTAsMTIgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcGEKICAgICAKICAgICBpZiAoIWNvbXBvc2l0ZWRNYXNrIHx8IGZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycykgewogICAgICAgICBwdXNoVHJhbnNwYXJlbmN5TGF5ZXIgPSB0
cnVlOwotICAgICAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCk7Ci0gICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0
eWxlKCkubWFza0xheWVycygpOwogCiAgICAgICAgIC8vIERvbid0IHJlbmRlciBhIG1hc2tlZCBl
bGVtZW50IHVudGlsIGFsbCB0aGUgbWFzayBpbWFnZXMgaGF2ZSBsb2FkZWQsIHRvIHByZXZlbnQg
YSBmbGFzaCBvZiB1bm1hc2tlZCBjb250ZW50LgotICAgICAgICBpZiAobWFza0JveEltYWdlKQor
ICAgICAgICBpZiAoYXV0byogbWFza0JveEltYWdlID0gc3R5bGUoKS5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKQogICAgICAgICAgICAgYWxsTWFza0ltYWdlc0xvYWRlZCAmPSBtYXNrQm94SW1hZ2Ut
PmlzTG9hZGVkKCk7CiAKLSAgICAgICAgaWYgKG1hc2tMYXllcnMpCi0gICAgICAgICAgICBhbGxN
YXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOworICAgICAg
ICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IHN0eWxlKCkubWFza0xheWVycygpLmltYWdlc0FyZUxv
YWRlZCgpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CkBAIC0xNjI3LDcxICsxNjI0LDY5IEBAIExheW91
dFJlY3QgUmVuZGVyQm94OjptYXNrQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIExheW91dFJlY3QgYm9yZGVy
Qm94ID0gYm9yZGVyQm94UmVjdCgpOwotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5
ZXIgPSBzdHlsZSgpLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkgeworICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0eWxlKCkubWFza0xh
eWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgIGlmIChtYXNrTGF5ZXItPmltYWdlKCkpIHsKICAgICAgICAgICAgIC8vIE1hc2tzIHNob3Vs
ZCBuZXZlciBoYXZlIGZpeGVkIGF0dGFjaG1lbnQsIHNvIGl0J3MgT0sgZm9yIHBhaW50Q29udGFp
bmVyIHRvIGJlIG51bGwuCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9t
ZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5
ZXIsIHBhaW50T2Zmc2V0LCBib3JkZXJCb3gpOwotICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGdl
b21ldHJ5LmRlc3RSZWN0KCkpOworICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5ZXIsIHBhaW50T2Zmc2V0LCBi
b3JkZXJCb3gpLmRlc3RSZWN0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAgICBWZWN0b3I8Y29uc3QgRmlsbExh
eWVyKiwgOD4gbGF5ZXJzOwotICAgIGNvbnN0IEZpbGxMYXllciogY3VyTGF5ZXIgPSBmaWxsTGF5
ZXI7CiAgICAgYm9vbCBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSBmYWxz
ZTsKLSAgICB3aGlsZSAoY3VyTGF5ZXIpIHsKLSAgICAgICAgbGF5ZXJzLmFwcGVuZChjdXJMYXll
cik7CisKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPm5leHQoKSkgeworICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKworICAgICAg
ICBpZiAobGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgICAg
IHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7CisKICAgICAgICAg
Ly8gU3RvcCB0cmF2ZXJzYWwgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCi0g
ICAgICAgIC8vIEZJWE1FIDogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xsb3dpbmcg
b2NjbHVzaW9uIGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgCisgICAgICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24g
Y3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZQogICAgICAgICAvLyBvbiBsYXllcnMg
d2l0aCBubyByZXBlYXQgYnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxh
eW91dCByZWN0LgogICAgICAgICAvLyBUZXN0aW5nIHRoYXQgaGVyZSB3b3VsZCBpbXBseSBkdXBs
aWNhdGluZyBhIGxvdCBvZiBjYWxjdWxhdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5IGRvbmUgaW4K
ICAgICAgICAgLy8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQu
IEEgbW9yZSBlZmZpY2llbnQgc29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQogICAgICAgICAvLyB0
aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29t
cHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVyZQogICAgICAgICAvLyBhbmQgcGFzcyBpdCBkb3du
LgogCi0gICAgICAgIGlmICghc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGVOb3JtYWwpCi0gICAgICAgICAgICBz
aG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSB0cnVlOwotCiAgICAgICAgIC8v
IFRoZSBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzIGNvbmRpdGlvbiBtdXN0IGJlIGV2YWx1YXRlZCBm
aXJzdCB0byBhdm9pZCBzaG9ydC1jaXJjdWl0aW5nLgotICAgICAgICBpZiAoY3VyTGF5ZXItPmNs
aXBPY2NsdWRlc05leHRMYXllcnMoY3VyTGF5ZXIgPT0gZmlsbExheWVyKSAmJiBjdXJMYXllci0+
aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGN1ckxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGN1ckxheWVyLT5oYXNSZXBlYXRYWSgpICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIGlmIChs
YXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXll
ci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxh
eWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwogICAgIH0KIAotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgQmFzZUJhY2tn
cm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
OworICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGF1dG8gYmFz
ZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxk
RHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7Ci0gICAgICAgIHBhaW50RmlsbExheWVy
KHBhaW50SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CisgICAgICAgIHBh
aW50RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllcnMubGFzdCgpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5
KTsKICAgICAgICAgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwog
ICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVy
ID0gbGF5ZXJzLnJlbmQoKTsKLSAgICBmb3IgKFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IGxheWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7
ICsraXQpCi0gICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgKml0LCByZWN0LCBi
bGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwor
ICAgIGF1dG8gdG9wTGF5ZXIgPSBsYXllcnMucmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGxh
eWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7ICsraXQpCisgICAgICAgIHBhaW50RmlsbExh
eWVyKHBhaW50SW5mbywgY29sb3IsICoqaXQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0Jh
Y2tncm91bmRJblNlcGFyYXRlQnVmZmVyKQogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExh
eWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJh
c2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG51bGxwdHIsIExheW91dFNpemUo
KSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogfQogCi1zdGF0aWMg
Ym9vbCBsYXllcnNVc2VJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
ciogbGF5ZXJzKQorc3RhdGljIGJvb2wgbGF5ZXJzVXNlSW1hZ2UoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycykKIHsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1ckxheWVyOyBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGN1ckxheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGN1ckxheWVy
LT5pbWFnZSgpLT5kYXRhKCkpCisgICAgZm9yIChhdXRvKiBsYXllciA9ICZsYXllcnM7IGxheWVy
OyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpICYm
IGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3MjUsMTMgKzE3MjAsMTMg
QEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEludFJlY3QqKQogICAgICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChCYWNrZ3JvdW5k
SW1hZ2VDaGFuZ2VkKTsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9v
bCBkcmF3aW5nQmFja2dyb3VuZCkKK2Jvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0Zv
ckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpCiB7CiAgICAgTGF5b3V0UmVjdCByZW5kZXJlclJlY3Q7CiAg
ICAgUmVuZGVyQm94KiBsYXllclJlbmRlcmVyID0gbnVsbHB0cjsKIAotICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5
ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0g
Y3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVy
KHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChs
YXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBsYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGxheWVy
LT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CiAg
ICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoaXMgaW1hZ2UgaXMgYmVpbmcgdXNlZCwg
Y29tcHV0ZSB0aGUgcmVuZGVyZXIgYW5kIHRoZSByZWN0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4K
ICAgICAgICAgICAgIGJvb2wgZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kID0gZHJhd2luZ0JhY2tncm91
bmQgJiYgKGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSB8fCAoaXNCb2R5KCkgJiYgIWRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkpOwog
ICAgICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKSB7CkBAIC0xNzUxLDcgKzE3NDYsNyBAQCBi
b29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIg
aW1hZ2UsIGNvbnN0IEZpbGxMYXllcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBwYXNzIGFic29sdXRlIHBv
c2l0aW9uIHRvIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5IChmb3IgcGl4ZWwgc25h
cHBpbmcpCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGxh
eWVyUmVuZGVyZXItPmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpj
dXJMYXllciwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXJSZWN0KTsKKyAgICAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gbGF5ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKmxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5k
ZXJlclJlY3QpOwogICAgICAgICAgICAgaWYgKGdlb21ldHJ5Lmhhc05vbkxvY2FsR2VvbWV0cnko
KSkgewogICAgICAgICAgICAgICAgIC8vIFJhdGhlciB0aGFuIGluY3VyIHRoZSBjb3N0cyBvZiBj
b21wdXRpbmcgdGhlIHBhaW50Q29udGFpbmVyIGZvciByZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNr
Z3JvdW5kcwogICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCB0aGUgcmlnaHQgZGVz
dFJlY3QsIGp1c3QgcmVwYWludCB0aGUgZW50aXJlIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IGQwZmE3YjJhNTc2Mjc5ZGEwMTVmNjI4NTdhNGJiNGMzODdi
NzgxMmQuLjAxMjRhZGFiYzM4YTVmNjQ4MmFjNjllYjgxOTlhMTc4ZjM1YTVlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYyNyw4ICs2MjcsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7
CiAgICAgCi0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBD
b2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRy
KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwor
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOwog
CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYpOwogCkBAIC02NjYsOCArNjY2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gUmV0
dXJucyB0cnVlIGlmIHdlIGRpZCBhIGZ1bGwgcmVwYWludAotICAgIGJvb2wgcmVwYWludExheWVy
UmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5
ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ug
ZGlkIGEgZnVsbCByZXBhaW50LgorICAgIGJvb2wgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShX
cmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNr
Z3JvdW5kKTsKIAogICAgIGJvb2wgc2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRD
YWxjdWxhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBl
bmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3Q7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVjNjU5YjcyY2E5ZDA3N2Zi
NjcyYTY3MjI1YTNjNTIzZGUxYTAxNjguLjFmNGQwYzVmYzlkNWE1YWFlYzk3ZGFhZjc5NmE2NTkz
YWFiYmRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZpbGxMYXllciogYmdMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBiZ0xheWVy
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAgLTYzNSwxMiAr
NjM1LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgYm9vbCBpbmNsdWRlUmlnaHRF
ZGdlID0gYm94ID8gYm94LT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpIDogdHJ1ZTsKIAogICAg
IGJvb2wgaGFzUm91bmRlZEJvcmRlciA9IHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgKGlu
Y2x1ZGVMZWZ0RWRnZSB8fCBpbmNsdWRlUmlnaHRFZGdlKTsKLSAgICBib29sIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiBiZ0xheWVyLT5hdHRhY2htZW50
KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKLSAgICBib29sIGlzQm9yZGVyRmlsbCA9
IGJnTGF5ZXItPmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OworICAgIGJvb2wgY2xpcHBlZFdpdGhM
b2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5ZXIuYXR0YWNobWVudCgp
ID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQ7CisgICAgYm9vbCBpc0JvcmRlckZpbGwgPSBi
Z0xheWVyLmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OwogICAgIGJvb2wgaXNSb290ID0gdGhpcy0+
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpOwogCiAgICAgQ29sb3IgYmdDb2xvciA9IGNvbG9y
OwotICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOworICAgIFN0eWxl
SW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLmltYWdlKCk7CiAgICAgYm9vbCBzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYgYmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hp
dGUgPSBmYWxzZTsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgIC8vIHdoaWxlIHJlbmRlcmluZy4pCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUp
IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVs
b3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2VkCi0gICAgICAgIGJvb2wgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNW
aXNpYmxlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdM
YXllci5uZXh0KCkgJiYgYmdDb2xvci5pc1Zpc2libGUoKTsKICAgICAgICAgaWYgKHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlIHx8IHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yKSB7CiAgICAg
ICAgICAgICBiZ0NvbG9yID0gQ29sb3I6OndoaXRlOwogICAgICAgICAgICAgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgIH0KIAogICAgIGJvb2wgYmFzZUJnQ29sb3JPbmx5ID0gKGJhc2VCZ0Nv
bG9yVXNhZ2UgPT0gQmFzZUJhY2tncm91bmRDb2xvck9ubHkpOwotICAgIGlmIChiYXNlQmdDb2xv
ck9ubHkgJiYgKCFpc1Jvb3QgfHwgYmdMYXllci0+bmV4dCgpIHx8IGJnQ29sb3IuaXNPcGFxdWUo
KSkpCisgICAgaWYgKGJhc2VCZ0NvbG9yT25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLm5leHQo
KSB8fCBiZ0NvbG9yLmlzT3BhcXVlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNv
bG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWaXNpYmxlKCk7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8g
RmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xvciBiYWNrZ3JvdW5kcy4KLSAgICBpZiAo
IWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRCYWNr
Z3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICBp
ZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLm5leHQoKSkgewogICAg
ICAgICBpZiAoIWNvbG9yVmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzA5LDEw
ICs3MDksMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gaXNCb3JkZXJGaWxsID8gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KHJlY3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNs
dWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCi0gICAgICAgIGlmIChiZ0xh
eWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKKyAgICAgICAgaWYgKGJnTGF5ZXIuY2xp
cCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgICAgICBib3JkZXIgPSBzdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLAogICAgICAgICAgICAgICAgIHBh
ZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20o
KSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJS
aWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwotICAgICAgICB9IGVs
c2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKKyAgICAgICAgfSBlbHNl
IGlmIChiZ0xheWVyLmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKICAgICAgICAgICAgIGJvcmRl
ciA9IHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTc0MCwxMCArNzQwLDEw
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtYXNrSW1hZ2U7CiAgICAgSW50UmVjdCBtYXNrUmVjdDsKIAotICAgIGlmIChiZ0xheWVy
LT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdMYXllci0+Y2xpcCgpID09IENvbnRlbnRG
aWxsQm94KSB7CisgICAgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJn
TGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCiAgICAgICAgIGlmICghY2xp
cFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdM
YXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94OworICAgICAgICAgICAgYm9vbCBpbmNsdWRl
UGFkZGluZyA9IGJnTGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94OwogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCA9IExheW91dFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QueCgpICsg
YkxlZnQgKyAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCA6IExheW91dFVuaXQoKSksCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QueSgpICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBh
ZGRpbmcgPyBwYWRkaW5nVG9wKCkgOiBMYXlvdXRVbml0KCkpLAogICAgICAgICAgICAgICAgIHNj
cm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFkZGlu
ZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKQEAgLTc1MSw3ICs3NTEsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYmFja2dyb3VuZENsaXBTdGF0ZVNh
dmVyLnNhdmUoKTsKICAgICAgICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAg
IH0gZWxzZSBpZiAoYmdMYXllci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNl
ZCB0byBjbGlwIGJhY2tncm91bmQgZHJhd2luZy4KICAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91
dCBob3cgYmlnIHRoZSBtYXNrIGhhcyB0byBiZS4gIEl0IHNob3VsZCBiZSBubyBiaWdnZXIgdGhh
biB3aGF0IHdlIG5lZWQKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcmVuZGVyLCBzbyB3ZSBzaG91
bGQgaW50ZXJzZWN0IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGJvcmRlciBib3ggb2YgdGhlIGJh
Y2tncm91bmQuCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICBib29sIGlzT3BhcXVlUm9vdCA9IGZhbHNlOwogICAgIGlmIChpc1Jvb3QpIHsKICAgICAgICAg
aXNPcGFxdWVSb290ID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIWJn
Q29sb3IuaXNPcGFxdWUoKSkgeworICAgICAgICBpZiAoIWJnTGF5ZXIubmV4dCgpICYmICFiZ0Nv
bG9yLmlzT3BhcXVlKCkpIHsKICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChv
d25lckVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aGFzVGFn
TmFtZShmcmFtZVRhZykpIHsKQEAgLTc5OCwxMiArNzk4LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvCiAgICAgfQogCiAgICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGgg
YWxsIGltYWdlcywgY3VsbGVkIGlmIGJhY2tncm91bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCi0gICAg
Ly8gRklYTUU6IEluIHRoZSBiZ0xheWVyLT5oYXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3Vs
ZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QKKyAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXIu
aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0
CiAgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJz
IHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCi0gICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKKyAg
ICBpZiAoIWJnTGF5ZXIubmV4dCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Qoc2Nyb2xsZWRQYWludFJlY3QpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZChyZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlLCBib3gpOwotICAgICAgICBpZiAo
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kIHx8ICFzaG91bGRQYWludEJhY2tn
cm91bmRJbWFnZSB8fCAhYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVy
LT5oYXNSZXBlYXRYWSgpKSB7CisgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRU
b0JhY2tncm91bmQgfHwgIXNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLmhh
c09wYXF1ZUltYWdlKCp0aGlzKSB8fCAhYmdMYXllci5oYXNSZXBlYXRYWSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGFpbnRJbmZvLnJlY3QpOwogCkBAIC04
MjQsMTAgKzgyNCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBpZiAo
YmFzZUNvbG9yLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xv
ck9ubHkgJiYgYmdDb2xvci5pc1Zpc2libGUoKSkKICAgICAgICAgICAgICAgICAgICAgYmFzZUNv
bG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3IpOwotCiAgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIENvbXBvc2l0
ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IHNo
b3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwpAQCAtODM2LDE5ICs4MzUsMTkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KIAogICAgIC8vIG5vIHByb2dyZXNzaXZlIGxvYWRpbmcgb2Yg
dGhlIGJhY2tncm91bmQgaW1hZ2UKICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBzaG91bGRQ
YWludEJhY2tncm91bmRJbWFnZSkgewotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBn
ZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWlu
dENvbnRhaW5lciwgKmJnTGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3Qs
IGJhY2tncm91bmRPYmplY3QpOworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCBiZ0xheWVyLCBy
ZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFpbnRSZWN0LCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAg
ICAgICAgZ2VvbWV0cnkuY2xpcChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFJlY3QpKTsKICAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8g
YmFja2dyb3VuZE9iamVjdCA6IHRoaXMsIGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewotICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGNvbnRleHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKKyAgICAgICAgICAgIGF1dG8gY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGUoKSA6IG9wOworICAgICAgICAgICAgY29udGV4
dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CiAKLSAgICAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRp
b24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIs
IGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVs
YXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xh
eWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5
ZXIuY2xpcCgpID09IFRleHRGaWxsQm94KSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKFdURk1vdmUobWFza0ltYWdlKSwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
fQpAQCAtOTYxLDggKzk2MCw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNh
bGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllCiAgICAgICAgIGNh
c2UgU2l6ZUxlbmd0aDogewogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0
aW9uaW5nQXJlYVNpemU7CiAKLSAgICAgICAgICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExh
eWVyLnNpemUoKS5zaXplLndpZHRoKCk7Ci0gICAgICAgICAgICBMZW5ndGggbGF5ZXJIZWlnaHQg
PSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCk7CisgICAgICAgICAgICBMZW5ndGggbGF5
ZXJXaWR0aCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aDsKKyAgICAgICAgICAgIExlbmd0
aCBsYXllckhlaWdodCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQ7CiAKICAgICAgICAg
ICAgIGlmIChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0aWxlU2l6ZS5z
ZXRXaWR0aChsYXllcldpZHRoLnZhbHVlKCkpOwpAQCAtOTg2LDcgKzk4NSw3IEBAIExheW91dFNp
emUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllCiAgICAgICAgICAgICAgICAgLy8gSWYgYm90aCB3aWR0aCBhbmQgaGVp
Z2h0IGFyZSBhdXRvLCB1c2UgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUuCiAgICAgICAgICAg
ICAgICAgdGlsZVNpemUgPSBpbWFnZUludHJpbnNpY1NpemU7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgdGlsZVNpemUuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwog
ICAgICAgICAgICAgcmV0dXJuIHRpbGVTaXplOwogICAgICAgICB9CkBAIC0xMTcxLDcgKzExNzAs
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9z
aXRpb24gPSByZXNvbHZlRWRnZVJlbGF0aXZlTGVuZ3RoKGZpbGxMYXllci54UG9zaXRpb24oKSwg
ZmlsbExheWVyLmJhY2tncm91bmRYT3JpZ2luKCksIGF2YWlsYWJsZVdpZHRoLCBwb3NpdGlvbmlu
Z0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYgKGJhY2tncm91bmRSZXBlYXRYID09IFJvdW5k
RmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgPiAwICYmIHRpbGVTaXplLndpZHRo
KCkgPiAwKSB7CiAgICAgICAgIGludCBudW1UaWxlcyA9IHN0ZDo6bWF4KDEsIHJvdW5kVG9JbnQo
cG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC8gdGlsZVNpemUud2lkdGgoKSkpOwotICAgICAg
ICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodCgpLmlzQXV0bygpICYmIGJhY2tncm91
bmRSZXBlYXRZICE9IFJvdW5kRmlsbCkKKyAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS5oZWlnaHQuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFkgIT0gUm91bmRGaWxsKQogICAg
ICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHRpbGVTaXplLmhlaWdodCgpICogcG9zaXRpb25p
bmdBcmVhU2l6ZS53aWR0aCgpIC8gKG51bVRpbGVzICogdGlsZVNpemUud2lkdGgoKSkpOwogCiAg
ICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAvIG51
bVRpbGVzKTsKQEAgLTExODEsNyArMTE4MCw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZFlQb3NpdGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5n
dGgoZmlsbExheWVyLnlQb3NpdGlvbigpLCBmaWxsTGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4oKSwg
YXZhaWxhYmxlSGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYg
KGJhY2tncm91bmRSZXBlYXRZID09IFJvdW5kRmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLmhl
aWdodCgpID4gMCAmJiB0aWxlU2l6ZS5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgaW50IG51bVRp
bGVzID0gc3RkOjptYXgoMSwgcm91bmRUb0ludChwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgp
IC8gdGlsZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS53aWR0aCgpLmlzQXV0bygpICYmIGJhY2tncm91bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKKyAg
ICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aC5pc0F1dG8oKSAmJiBiYWNrZ3Jv
dW5kUmVwZWF0WCAhPSBSb3VuZEZpbGwpCiAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aCh0
aWxlU2l6ZS53aWR0aCgpICogcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIChudW1UaWxl
cyAqIHRpbGVTaXplLmhlaWdodCgpKSk7CiAKICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHBv
c2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLyBudW1UaWxlcyk7CkBAIC0xMjUwLDcgKzEyNDks
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgRmxvYXRTaXplJiBwaGFzZSwgRmxvYXRTaXplJiB0aWxlU2l6ZSkgY29u
c3QKIHsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdChkZXN0UmVjdCk7Ci0gICAgQmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eShwYWludENvbnRhaW5lciwgKnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludE9mZnNl
dCwgcGFpbnRSZWN0KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkocGFpbnRDb250YWluZXIsIHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBw
YWludE9mZnNldCwgcGFpbnRSZWN0KTsKICAgICBwaGFzZSA9IGdlb21ldHJ5LnBoYXNlKCk7CiAg
ICAgdGlsZVNpemUgPSBnZW9tZXRyeS50aWxlU2l6ZSgpOwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0
cnkuZGVzdFJlY3QoKTsKQEAgLTIxNzAsOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQ
b2luCiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uc3QgRmlsbExheWVyKiBsYXN0QmFja2dyb3VuZExheWVyID0gc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG5leHQg
PSBsYXN0QmFja2dyb3VuZExheWVyLT5uZXh0KCk7IG5leHQ7IG5leHQgPSBsYXN0QmFja2dyb3Vu
ZExheWVyLT5uZXh0KCkpCisgICAgYXV0byogbGFzdEJhY2tncm91bmRMYXllciA9ICZzdHlsZSgp
LmJhY2tncm91bmRMYXllcnMoKTsKKyAgICB3aGlsZSAoYXV0byogbmV4dCA9IGxhc3RCYWNrZ3Jv
dW5kTGF5ZXItPm5leHQoKSkKICAgICAgICAgbGFzdEJhY2tncm91bmRMYXllciA9IG5leHQ7CiAK
ICAgICBpZiAobGFzdEJhY2tncm91bmRMYXllci0+Y2xpcCgpICE9IEJvcmRlckZpbGxCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDc4ZjUyZWM2MGU4NGUzMjc0MWM3YzQzMDhmYTJkYzY3Yjg3MGU1MTEuLjkzZWMyY2U4YTgxMDQ4
NTczNDAyMDQwZmE0Mjk3MzViZjI5OWM5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFn
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5
b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VC
YWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRT
aXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxl
bWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRv
d1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQ
YWludFBvc3Rpb24sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBu
dWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGUyN2I0MWFiMTBlYThhNWJmZTJlNjMyNzI4NWI1YThmMjFmMWJmMmQuLmY4NDdm
ZmRlOGZlNWQyNmQ1M2M2MWQ5NTQ3NTk0Yjg4NGE2YzRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNSwyMiArMTM1LDE4IEBAIFJlbmRlckVs
ZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsCiBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAg
aWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVy
ID0gYmdMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dy
b3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBiZ0xheWVy
ID0gJm1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXll
ci0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gYmdM
YXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBt
YXNrTGF5ZXIgPSBtX3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBt
YXNrTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tJbWFn
ZSA9IG1hc2tMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAm
bV9zdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxl
LmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIGJvcmRlckltYWdlID0g
bV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBib3JkZXJJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1h
Z2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChhdXRvKiBt
YXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAg
ICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLQogICAgICAgICBpZiAoYXV0byBz
aGFwZVZhbHVlID0gbV9zdHlsZS5zaGFwZU91dHNpZGUoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gc2hhcGVJbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgc2hh
cGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtMzAzLDggKzI5OSw4IEBAIFN0eWxlRGlm
ZmVyZW5jZSBSZW5kZXJFbGVtZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIHVuc2lnCiAgICAgfQogICAgIAogICAgIGlmICgoY29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXIpICYmIGhhc0xheWVyKCkp
IHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCk7Ci0gICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygpKQorICAgICAgICBhdXRvJiBsYXllciA9
ICpkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKTsKKyAgICAg
ICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSB8fCBsYXllci5wYWludHNXaXRoRmlsdGVycygp
KQogICAgICAgICAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYsIFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnRMYXllcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRpZmYgPSBzdGQ6Om1heChkaWZm
LCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKTsKQEAgLTM0MSwyMSArMzM3LDIwIEBA
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYpCiAgICAgcmV0dXJuIGRpZmYgPT0gU3R5bGVEaWZmZXJl
bmNlUmVwYWludCB8fCAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50SWZUZXh0T3JCb3Jk
ZXJPck91dGxpbmUgJiYgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZE9yQm9yZGVy
T3JPdXRsaW5lKCkpOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMo
Y29uc3QgRmlsbExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciogbmV3TGF5ZXJzKQor
dm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciogb2xk
TGF5ZXJzLCBjb25zdCBGaWxsTGF5ZXImIG5ld0xheWVycykKIHsKLSAgICAvLyBPcHRpbWl6ZSB0
aGUgY29tbW9uIGNhc2UKLSAgICBpZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5
ZXJzLCBuZXdMYXllcnMpKQorICAgIC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZS4KKyAgICBp
ZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5ZXJzLCAmbmV3TGF5ZXJzKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdvIHRocm91Z2ggdGhlIG5ldyBsYXllcnMgYW5k
IGFkZENsaWVudHMgZmlyc3QsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRzIG9mIGFuIGlt
YWdlLgotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTmV3ID0gbmV3TGF5ZXJzOyBjdXJy
TmV3OyBjdXJyTmV3ID0gY3Vyck5ldy0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyTmV3LT5p
bWFnZSgpKQotICAgICAgICAgICAgY3Vyck5ldy0+aW1hZ2UoKS0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgIC8vIEFkZCBiZWZvcmUgcmVtb3ZpbmcsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRz
IG9mIGFuIGltYWdlIHRoYXQgaXMgaW4gYm90aCBzZXRzLgorICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbmV3TGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGxheWVyLT5pbWFnZSgpLT5hZGRDbGllbnQo
dGhpcyk7CiAgICAgfQotCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJPbGQgPSBvbGRM
YXllcnM7IGN1cnJPbGQ7IGN1cnJPbGQgPSBjdXJyT2xkLT5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGN1cnJPbGQtPmltYWdlKCkpCi0gICAgICAgICAgICBjdXJyT2xkLT5pbWFnZSgpLT5yZW1vdmVD
bGllbnQodGhpcyk7CisgICAgZm9yIChhdXRvKiBsYXllciA9IG9sZExheWVyczsgbGF5ZXI7IGxh
eWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkpCisgICAg
ICAgICAgICBsYXllci0+aW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIH0KIApA
QCAtNDA5LDggKzQwNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpCiAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKHN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwogCiAgICAg
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlKTsKLSAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92
ZShtX3N0eWxlKTsKLSAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7CisgICAgYXV0byBvbGRT
dHlsZSA9IG1fc3R5bGUucmVwbGFjZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYm9vbCBkZXRhY2hl
ZEZyb21QYXJlbnQgPSAhcGFyZW50KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaW52YWxpZGF0
ZSB0aGUgY29udGFpbmluZyBibG9jayBjYWNoZSBmb3IgZmxvd3Mgd2hlbiB0aGUgY29udGlhbmlu
ZyBibG9jayBjb250ZXh0IGNoYW5nZXMKQEAgLTgwNyw3ICs4MDEsNyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihTdHlsZVByb3BhZ2F0aW9u
VHlwZSBwcm9wYQogICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlz
cGxheSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAg
ICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgmc3R5bGUo
KSk7CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KHN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLmNvbHVtblNw
YW4oKSkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOwogICAgICAgICB9CkBAIC05OTksOCArOTkzLDggQEAgc3RhdGljIGlubGluZSBib29sIGFy
ZUN1cnNvcnNFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICB1cGRhdGVGaWxsSW1hZ2Vz
KG9sZFN0eWxlID8gb2xkU3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5
bGUuYmFja2dyb3VuZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8g
b2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRl
RmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwg
bV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2Uo
KS5pbWFnZSgpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
KTsKICAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlT3V0c2lk
ZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CkBAIC0xMjMxLDQxICsxMjI1
LDM5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpM
YXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0
KCkpOwotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUg
KGNoaWxkKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xh
eW91dCgpKQogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgbXVz
dFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
aWxsTGF5ZXImIGxheWVyKQogewogICAgIC8vIE5vYm9keSB3aWxsIHVzZSBtdWx0aXBsZSBsYXll
cnMgd2l0aG91dCB3YW50aW5nIGZhbmN5IHBvc2l0aW9uaW5nLgotICAgIGlmIChsYXllci0+bmV4
dCgpKQorICAgIGlmIChsYXllci5uZXh0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGhhdmUgYSB2YWxpZCBpbWFnZS4KLSAgICBTdHlsZUltYWdlKiBpbWFn
ZSA9IGxheWVyLT5pbWFnZSgpOworICAgIGF1dG8qIGltYWdlID0gbGF5ZXIuaW1hZ2UoKTsKICAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlciwgcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWxheWVyLT54UG9zaXRpb24oKS5pc1plcm8oKSB8fCAhbGF5ZXItPnlQb3NpdGlvbigpLmlzWmVy
bygpKQorICAgIGlmICghbGF5ZXIueFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLnlQb3Np
dGlvbigpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVGaWxsU2l6ZVR5
cGUgc2l6ZVR5cGUgPSBsYXllci0+c2l6ZVR5cGUoKTsKKyAgICBhdXRvIHNpemVUeXBlID0gbGF5
ZXIuc2l6ZVR5cGUoKTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBDb250YWluIHx8IHNpemVUeXBl
ID09IENvdmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBT
aXplTGVuZ3RoKSB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IGxheWVyLT5zaXplTGVuZ3Ro
KCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwg
c2l6ZS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKKyAgICAgICAgYXV0byBzaXpl
ID0gbGF5ZXIuc2l6ZUxlbmd0aCgpOworICAgICAgICBpZiAoc2l6ZS53aWR0aC5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKSB8fCBzaXplLmhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRo
ZXIgYW4gaW50cmluc2ljIHdpZHRoIG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBp
cyBkZXRlcm1pbmVkIGFzIGZvciAnY29udGFpbicuCi0gICAgICAgIGlmICgoc2l6ZS53aWR0aCgp
LmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRl
ZEltYWdlKCkpCisgICAgICAgIGlmICgoc2l6ZS53aWR0aC5pc0F1dG8oKSB8fCBzaXplLmhlaWdo
dC5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVkSW1hZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoaW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzY1LDE0ICsxMzU3LDE0IEBAIGJvb2wgUmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4
dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFVuaXQgYm9yZGVy
UmlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMp
LmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJv
eD4oKnRoaXMpLndpZHRoKCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWlu
SW5zZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5yaWdodCgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwg
b2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0LCBzdGQ6Om1heDxMYXlvdXRVbml0Pih2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lk
dGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKSwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBib3Jk
ZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5p
dD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVuaXQgbWluSW5z
ZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4
dGVudC5yaWdodCgpLCBzdGQ6Om1pbihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRo
KCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4KGJvcmRlclJp
Z2h0LCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgsIGJveFdpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21S
aWdodFJhZGl1cygpLndpZHRoLCBib3hXaWR0aCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNv
cmF0aW9uc1dpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQm94LndpZHRoKCks
IG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRoLAogICAgICAgICAgICAg
bmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGRlY29yYXRpb25zV2lkdGgs
CiAgICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LmhlaWdodCgpLCBvbGRPdXRsaW5l
Qm94LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbjxMYXlv
dXRVbml0PihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKKyAgICAgICAgTGF5
b3V0VW5pdCByaWdodCA9IHN0ZDo6bWluKG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhY
KCkpOwogICAgICAgICBpZiAocmlnaHRSZWN0LngoKSA8IHJpZ2h0KSB7CiAgICAgICAgICAgICBy
aWdodFJlY3Quc2V0V2lkdGgoc3RkOjptaW4ocmlnaHRSZWN0LndpZHRoKCksIHJpZ2h0IC0gcmln
aHRSZWN0LngoKSkpOwogICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHJpZ2h0UmVjdCk7CkBAIC0xMzg1LDEwICsxMzc3LDEwIEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuYm9y
ZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91dFVu
aXQgYm94SGVpZ2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKS5oZWlnaHQoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLmhlaWdodCgp
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQg
PSBzdGQ6Om1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgp
LCBib3hIZWlnaHQpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpKSk7Ci0gICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20p
OworICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjpt
aW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbihuZXdC
b3VuZHMuaGVpZ2h0KCksIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckhlaWdodCA9IHN0ZDo6bWF4KGJvcmRlckJvdHRvbSwgc3RkOjptYXgodmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQp
LAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSkpOworICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRp
b25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zm
c2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIHN0ZDo6
bWF4KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0
b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgc3RkOjptaW4obmV3T3V0bGlu
ZUJveC5tYXhZKCksIG9sZE91dGxpbmVCb3gubWF4WSgpKSAtIGRlY29yYXRpb25zSGVpZ2h0LAog
ICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94
LndpZHRoKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
MjgwMzc0NDE1ZGM2MTI3ZDM1OGU2ZmU0NDMyZGY3YzhiYmZiZWI5Ny4uYzZmOTcwMThkZGI2OTI2
MTdlM2VmZDVmNGVlMTliZTRlMmUwNjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlKSBjb25zdDsKICAgICBi
b29sIGhhc0ltbWVkaWF0ZU5vbldoaXRlc3BhY2VUZXh0Q2hpbGRPckJvcmRlck9yT3V0bGluZSgp
IGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IEZpbGxMYXllciopOworICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5
ZXIqLCBjb25zdCBGaWxsTGF5ZXImKTsKICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2Uq
LCBTdHlsZUltYWdlKik7CiAgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCAzM2JmZjBlNDFkMDAzMmE3NTU3ZjA0ZDUzZjc1YWNkMTEzZWI2ZWYwLi43
ODYzODAxOTA5OTE1NjlmNzY1NTI0NGU5MDRlNTM4MjJjYzA3MDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNzIwLDcgKzI3MjAsNyBAQCBDb250ZW50QWxp
Z25tZW50RGF0YSBSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0
aW9uT2Zmc2V0KEdyaQogICAgIGlmIChjb250ZW50QWxpZ25tZW50LmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRBbGlnbm1lbnQ7CiAKLSAgICBhdXRvIG92ZXJmbG93ID0gaXNSb3dB
eGlzID8gc3R5bGUoKS5qdXN0aWZ5Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgOiBzdHlsZSgp
LmFsaWduQ29udGVudE92ZXJmbG93QWxpZ25tZW50KCk7CisgICAgYXV0byBvdmVyZmxvdyA9IChp
c1Jvd0F4aXMgPyBzdHlsZSgpLmp1c3RpZnlDb250ZW50KCkgOiBzdHlsZSgpLmFsaWduQ29udGVu
dCgpKS5vdmVyZmxvdygpOwogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPD0gMCAmJiBvdmVy
ZmxvdyA9PSBPdmVyZmxvd0FsaWdubWVudFNhZmUpCiAgICAgICAgIHJldHVybiB7MCwgMH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA1MWQ0NGJmNTY2
OTY3Y2FhZGFmOTc0MjAyOTgyY2I5MThiZmU4NTEuLmFjZWVkN2Q1OTBkZTI1Y2M0Mzk5ODc4NDgz
Yjg5ODc3YWYyOTU2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzE0MywxNyArMzE0MywxOCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyRm9yU2Nyb2xsYmFyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogUmVmPFNj
cm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7Ci0gICAgUmVu
ZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJl
cigpKTsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gYWN0dWFsUmVuZGVyZXIt
PmlzQm94KCkgJiYgYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKTsKKyAgICBBU1NFUlQocmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSkpOworICAg
IGF1dG8mIGFjdHVhbFJlbmRlcmVyID0gKnJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkp
OworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVh
bFJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0
eWxlKQotICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9s
bGJhcigqdGhpcywgb3JpZW50YXRpb24sIGFjdHVhbFJlbmRlcmVyLT5lbGVtZW50KCkpOworICAg
ICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhp
cywgb3JpZW50YXRpb24sIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLmVsZW1l
bnQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CiAgICAg
ICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIo
KSk7CiAgICAgfQotICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdp
ZGdldC5nZXQoKSk7CisgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQo
KndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGM4
YzQwYzVjZjAzMDQzYjkwNWVkOWE0YzFmZmY5OWRlOTMxNTAzZjQuLjNlYzdmZGQ4MDU3YzkwNzRh
MDIzNGM3NzBhZjQ3OTRhN2Q5M2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNzI2LDMwICsxNzI2LDI3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogCiBzdGF0aWMgYm9vbCBjYW5DcmVhdGVUaWxlZEltYWdlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciA9IHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKTsKLSAgICBpZiAoZmlsbExheWVyLT5uZXh0KCkpCisgICAgYXV0byYgZmls
bExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOworICAgIGlmIChmaWxsTGF5ZXIubmV4
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWZpbGxMYXllci0+aW1hZ2Vz
QXJlTG9hZGVkKCkpCisgICAgaWYgKCFmaWxsTGF5ZXIuaW1hZ2VzQXJlTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSAhPSBT
Y3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoZmlsbExheWVyLmF0dGFjaG1lbnQo
KSAhPSBTY3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotCiAgICAgLy8gRklYTUU6IEFsbG93IGNvbG9yK2ltYWdlIGNv
bXBvc2l0aW5nIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCiAgICAgLy8gRm9yIG5vdyBiYWlsaW5nIG91
dC4KLSAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpCisgICAgaWYgKHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBmaWxsTGF5
ZXItPmltYWdlKCk7Ci0KICAgICAvLyBGSVhNRTogc3VwcG9ydCBncmFkaWVudHMgd2l0aCBpc0dl
bmVyYXRlZEltYWdlLgorICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsK
ICAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1h
Z2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTE4MDksMjUgKzE4MDYsMjQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRJbWFnZShib29sIGlzU2ltcGxlQ28KICAg
ICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0KKyAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIWlzU2ltcGxlQ29udGFp
bmVyIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGJhY2tncm91bmRCb3hGb3JTaW1wbGVDb250YWluZXJQ
YWludGluZygpOworICAgIGF1dG8gZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9yU2ltcGxlQ29u
dGFpbmVyUGFpbnRpbmcoKTsKICAgICBGbG9hdFNpemUgcGhhc2U7CiAgICAgRmxvYXRTaXplIHRp
bGVTaXplOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlLmJhY2tncm91bmRMYXll
cnMoKS0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAvLyBGSVhNRTogYWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KKyAgICAvLyBGSVhNRTogQWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KICAgICBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpLmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKCZyZW5kZXJl
cigpLCBMYXlvdXRQb2ludCgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKKwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFzZSk7CiAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChkZXN0UmVjdCkpOwotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlLmdldCgpKTsKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCku
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKICAgICBkaWRVcGRhdGVDb250ZW50
c1JlY3QgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKaW5kZXggMjJlZTk4MTEwNzdmZmQ4MDhiZmJhMTM5NDA5YjZjOTYwZjYzNGZhZi4uY2Rm
ODA2MGJjYjVlZDhhOGY0ZjkzN2E3ZTQ5N2UxNDY3ZDZlYmI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIFJlZjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAg
IH0KLSAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICB2
aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQoKndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAppbmRleCBkMzlmNjQ2OTU4N2M3NDQyZjM3MjQ0NzNiNjg1ODA4YTk3ZmE2N2Zi
Li5kMmMwMmVmOWQ2MGUwNmM2ODY2NzIzZTQ3NDA3MzdhZDhjMGMzODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAvLyBVc2UgbWFyZ2lu
OmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0IHNhZmUgY2VudGVyaW5n
LCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MsIHRyZWF0IGl0IHRoZSBz
YW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIC8vIEJ1dCB3ZSBvbmx5IGRvIHRo
YXQgZm9yIHRoZSBjYXNlcyB3aGVyZSBodG1sLmNzcyB3b3VsZCBvdGhlcndpc2UgdXNlIGNlbnRl
ci4KLSAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25D
ZW50ZXIpIHsKKyAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zKCkucG9zaXRpb24oKSA9PSBJdGVt
UG9zaXRpb25DZW50ZXIpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3Ro
KCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpbkJvdHRvbShMZW5ndGgoKSk7CiAgICAg
ICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uRmxleFN0YXJ0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMS4uM2U3MDMyMGQ2OTUyMjhj
MmRhNmQ3NmEwZDFlYmYyMTQ2YTA5M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyNzYsOSArMTI3Niw5IEBAIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5CiAgICAgICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkp
OwogCiAgICAgQ29sb3IgYyA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBjb25zdCBGaWxsTGF5
ZXIqIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMo
KTsKKyAgICBhdXRvJiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CiAKLSAgICBpZiAoYmdMYXllci0+aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQo
KSkgeworICAgIGlmIChiZ0xheWVyLmhhc0ltYWdlKCkgfHwgYy5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBw
YWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBv
bmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAgICBib29sIHNob3VsZENsaXAg
PSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNrZ3JvdW5kT2JqZWN0ID09IHRo
aXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYgdGFibGVFbHQtPmNvbGxhcHNl
Qm9yZGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXgg
ZmE1OTlhNzE4NzJiNDk4YTU0NjMyZWQzZGVjZmU2NmU2ZjMxMWMxZS4uYzMxYTlhYTZjZjJiMDY5
ODIyYjZmZjUwNjdiZmZhYzUzN2ZmMmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAog
ICAgICAgICAvLyBQYWRkaW5nCiAgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gbV90aGVt
ZS0+Y29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFkZGlu
Z0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFkZGluZ0JveCAh
PSBzdHlsZS5wYWRkaW5nQm94KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KHBh
ZGRpbmdCb3gpOworICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBhZGRp
bmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCiAgICAgICAgIGlmIChtX3RoZW1lLT5j
b250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQpAQCAtMTU1LDE5ICsxNTUsMTkgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAg
ICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4K
ICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtl
IG1pbi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgotICAgICAgICBMZW5ndGhTaXplIGNv
bnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgTGVuZ3RoU2l6ZShzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSksIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKSk7Ci0gICAgICAgIGlmIChjb250cm9sU2l6ZS53aWR0aCgpICE9IHN0eWxlLndp
ZHRoKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChjb250cm9sU2l6ZS53aWR0aCgpKTsK
LSAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCgpICE9IHN0eWxlLmhlaWdodCgpKQotICAg
ICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGNvbnRyb2xTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICAKKyAgICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRy
b2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUu
aGVpZ2h0KCkgfSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xT
aXplLndpZHRoICE9IHN0eWxlLndpZHRoKCkpCisgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChX
VEZNb3ZlKGNvbnRyb2xTaXplLndpZHRoKSk7CisgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWln
aHQgIT0gc3R5bGUuaGVpZ2h0KCkpCisgICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92
ZShjb250cm9sU2l6ZS5oZWlnaHQpKTsKKwogICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVp
Z2h0CiAgICAgICAgIExlbmd0aFNpemUgbWluQ29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVt
Q29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKLSAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUubWluV2lk
dGgoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKG1pbkNvbnRyb2xTaXplLndpZHRo
KCkpOwotICAgICAgICBpZiAobWluQ29udHJvbFNpemUuaGVpZ2h0KCkgIT0gc3R5bGUubWluSGVp
Z2h0KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQobWluQ29udHJvbFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lk
dGggIT0gc3R5bGUubWluV2lkdGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdU
Rk1vdmUobWluQ29udHJvbFNpemUud2lkdGgpKTsKKyAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXpl
LmhlaWdodCAhPSBzdHlsZS5taW5IZWlnaHQoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbkhl
aWdodChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOworCiAgICAgICAgIC8vIEZvbnQK
ICAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwg
c3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAg
ICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9u
dCwgYWxzbyBvdmVycmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBo
ZWlnaHQuCkBAIC03MDksOSArNzA5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5
bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm8KICAgICBj
YXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgY2FzZSBUZXh0QXJlYVBhcnQ6CiAgICAgICAgIC8vIFRl
c3QgdGhlIHN0eWxlIHRvIHNlZSBpZiB0aGUgVUEgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIG1hdGNo
LgotICAgICAgICByZXR1cm4gKHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgotICAgICAgICAgICAg
fHwgKnN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICB8
fCAhc3R5bGUuYmFja2dyb3VuZENvbG9yRXF1YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChiYWNr
Z3JvdW5kQ29sb3IpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgor
ICAgICAgICAgICAgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQKKyAg
ICAgICAgICAgIHx8ICFzdHlsZS5iYWNrZ3JvdW5kQ29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdW
aXNpdGVkKGJhY2tncm91bmRDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpp
bmRleCAxMDBhNWQxNGUxNmZiYmRiNDNkYzgxYWY5YzQ4YTljY2JhY2Q5ODRjLi4xOTFhZmE3YzNm
ZDA2YmMxMGNkZDFhNjk4YWUwMGQ5NmUwOWE1NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zNTcsMTAgKzM1Nyw5IEBAIHZvaWQgUmVuZGVyVGhl
bWVJT1M6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uCiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYg
IXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMZW5ndGgg
bGVuZ3RoID0gTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oY2VpbGYoc3RkOjptYXgoc3R5bGUuZm9u
dFNpemUoKSwgMTApKSksIEZpeGVkKTsKLSAgICAKLSAgICBzdHlsZS5zZXRXaWR0aChsZW5ndGgp
OwotICAgIHN0eWxlLnNldEhlaWdodChsZW5ndGgpOworICAgIGludCBzaXplID0gc3RkOjptYXgo
c3R5bGUuZm9udFNpemUoKSwgMTApOworICAgIHN0eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4ZWQg
fSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQgfSk7CiB9CiAKIHN0YXRpYyBD
R1BvaW50IHNob3J0ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgp
CkBAIC00NDgsMTAgKzQ0NywxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjppc0NvbnRyb2xTdHls
ZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJgogewogICAgIC8v
IEJ1dHRvbnMgYW5kIE1lbnVsaXN0QnV0dG9ucyBhcmUgc3R5bGVkIGlmIHRoZXkgY29udGFpbiBh
IGJhY2tncm91bmQgaW1hZ2UuCiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBQdXNoQnV0
dG9uUGFydCB8fCBzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KQotICAg
ICAgICByZXR1cm4gIXN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcikuYWxwaGEoKSB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmhhc0ltYWdl
KCk7CisgICAgICAgIHJldHVybiAhc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKS5pc1Zpc2libGUoKSB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJz
KCkuaGFzSW1hZ2UoKTsKIAogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEZpZWxk
UGFydCB8fCBzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEFyZWFQYXJ0KQotICAgICAgICByZXR1
cm4gKnN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kOworICAgICAgICByZXR1
cm4gc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQ7CiAKICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBi
YWNrZ3JvdW5kQ29sb3IpOwogfQpAQCAtNDYxLDEwICs0NjAsMTAgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdAogICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFz
dHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGVuZ3RoIGxl
bmd0aCA9IExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKHN0ZDo6bWF4KHN0eWxlLmZvbnRT
aXplKCksIDEwKSkpLCBGaXhlZCk7Ci0gICAgc3R5bGUuc2V0V2lkdGgobGVuZ3RoKTsKLSAgICBz
dHlsZS5zZXRIZWlnaHQobGVuZ3RoKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoSW50U2l6
ZShsZW5ndGgudmFsdWUoKSAvIDIuMGYsIGxlbmd0aC52YWx1ZSgpIC8gMi4wZikpOworICAgIGlu
dCBzaXplID0gc3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwgMTApOworICAgIHN0eWxlLnNldFdp
ZHRoKHsgc2l6ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQg
fSk7CisgICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgc2l6ZSAvIDIsIHNpemUgLyAyIH0pOwog
fQogCiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQpAQCAtNTM4LDEzICs1MzcsMTEgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpw
b3B1cEludGVybmFsUGFkZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnMKIAog
dm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUm
IHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHsKLSAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgpID09
IE5vQ29udHJvbFBhcnQgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpLT5oYXNJbWFnZSgpKQor
ICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTm9Db250cm9sUGFydCB8fCBzdHlsZS5iYWNr
Z3JvdW5kTGF5ZXJzKCkuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBw
ZWFyYW5jZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+Ci0gICAgTGVu
Z3RoIHJhZGl1c1dpZHRoKHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4oYm94LndpZHRoKCksIGJv
eC5oZWlnaHQoKSkgLyAyLjApLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHJhZGl1c0hlaWdodChzdGF0
aWNfY2FzdDxpbnQ+KGJveC5oZWlnaHQoKSAvIDIuMCksIEZpeGVkKTsKLSAgICBzdHlsZS5zZXRC
b3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KSk7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0
aGUgYXBwZWFyYW5jZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+Lgor
ICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5o
ZWlnaHQoKSkgLyAyLCBGaXhlZCB9LCB7IGJveC5oZWlnaHQoKSAvIDIsIEZpeGVkIH0gfSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpAQCAtNjU1LDExICs2NTIsMTEgQEAg
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRp
dXM7CiAKICAgICAgICAgaWYgKGlzUlRMKSB7Ci0gICAgICAgICAgICB0b3BSaWdodFJhZGl1cyA9
IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndp
ZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0
KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICBib3R0b21SaWdodFJh
ZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCks
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCks
IHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAg
ICB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJU
b3BSaWdodFJhZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdo
dCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICAgICAgICAg
IGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJS
aWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9y
ZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCBy
ZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBz
dHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcExlZnRSYWRpdXMgPSBG
bG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRo
LCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyVG9wV2lkdGgoKSk7CisgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxv
YXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0
aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0
aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAt
IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAs
CkBAIC02OTIsMTEgKzY4OSwxMSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZs
b2F0U2l6ZSBib3R0b21SaWdodFJhZGl1czsKIAogICAgICAgICBpZiAoaXNSVEwpIHsKLSAgICAg
ICAgICAgIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9y
ZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhl
aWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAg
ICAgICAgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgo
KSk7CisgICAgICAgICAgICB0b3BMZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFk
aXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwor
ICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChz
dHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHls
ZS5ib3JkZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxv
YXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgo
KSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5n
dGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVz
ID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVj
dC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRv
cFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJp
Z2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCBy
ZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90
dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0
V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5o
ZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCkBAIC03NTgsMTAgKzc1NSw5IEBAIHZvaWQgUmVuZGVy
VGhlbWVJT1M6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3Is
IFJlbmRlclN0eWxlCiB7CiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUo
c2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90
IGJlIHJlbHlpbmcgb24gYm9yZGVyIHJhZGl1cyBmb3IgdGhlIGFwcGVhcmFuY2Ugb2Ygb3VyIGNv
bnRyb2xzIDxyZGFyOi8vcHJvYmxlbS83Njc1NDkzPgotICAgIExlbmd0aCByYWRpdXNXaWR0aChz
dGF0aWNfY2FzdDxpbnQ+KGtUcmFja1JhZGl1cyksIEZpeGVkKTsKLSAgICBMZW5ndGggcmFkaXVz
SGVpZ2h0KHN0YXRpY19jYXN0PGludD4oa1RyYWNrUmFkaXVzKSwgRml4ZWQpOwotICAgIHN0eWxl
LnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpKTsK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSByZWx5aW5nIG9uIGJvcmRlciByYWRpdXMg
Zm9yIHRoZSBhcHBlYXJhbmNlIG9mIG91ciBjb250cm9scyA8cmRhcjovL3Byb2JsZW0vNzY3NTQ5
Mz4uCisgICAgaW50IHJhZGl1cyA9IHN0YXRpY19jYXN0PGludD4oa1RyYWNrUmFkaXVzKTsKKyAg
ICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoeyB7IHJhZGl1cywgRml4ZWQgfSwgeyByYWRpdXMsIEZp
eGVkIH0gfSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQpAQCAtODQ4LDE0ICs4NDQsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCop
IGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRW5mb3JjZSAiYm9yZGVyLXJhZGl1czogNTAl
Ii4KLSAgICBMZW5ndGggbGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsKLSAgICBzdHlsZS5zZXRCb3Jk
ZXJSYWRpdXMoTGVuZ3RoU2l6ZShsZW5ndGgsIGxlbmd0aCkpOworICAgIHN0eWxlLnNldEJvcmRl
clJhZGl1cyh7IHsgNTAsIFBlcmNlbnQgfSwgeyA1MCwgUGVyY2VudCB9IH0pOwogCiAgICAgLy8g
RW5mb3JjZSBhIDE2eDE2IHNpemUgaWYgbm8gc2l6ZSBpcyBwcm92aWRlZC4KICAgICBpZiAoc3R5
bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpIHx8IHN0eWxlLmhlaWdodCgpLmlzQXV0bygp
KSB7Ci0gICAgICAgIExlbmd0aCBsZW5ndGggPSBMZW5ndGgoa0RlZmF1bHRTbGlkZXJUaHVtYlNp
emUsIEZpeGVkKTsKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgobGVuZ3RoKTsKLSAgICAgICAgc3R5
bGUuc2V0SGVpZ2h0KGxlbmd0aCk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKHsga0RlZmF1bHRT
bGlkZXJUaHVtYlNpemUsIEZpeGVkIH0pOworICAgICAgICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVm
YXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDM3Mzk1ZTQzNjY2N2EyMTVhYWI2ZTc2
MzA1OGQ0N2NiODI2ZDc0MGQuLjYyM2E2Yzc5NGI5NjEwZTMyYTliMzZjYjU2OTg3YzJmMDY1YzQy
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC01Miwy
OSArNTIsMjcgQEAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0
VG9QYXJlbnRNYXAmIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMKIAogdm9pZCBXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cygpCiB7Ci0gICAgV2lkZ2V0VG9Q
YXJlbnRNYXAgbWFwOwotICAgIHdpZGdldE5ld1BhcmVudE1hcCgpLnN3YXAobWFwKTsKLSAgICBX
aWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAoV2lk
Z2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmtleS5nZXQoKTsKLSAgICAgICAgU2Ny
b2xsVmlldyogY3VycmVudFBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgRnJhbWVW
aWV3KiBuZXdQYXJlbnQgPSBpdC0+dmFsdWU7CisgICAgYXV0byBtYXAgPSBXVEZNb3ZlKHdpZGdl
dE5ld1BhcmVudE1hcCgpKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSB7CisgICAgICAg
IGF1dG8mIGNoaWxkID0gKmVudHJ5LmtleTsKKyAgICAgICAgYXV0byogY3VycmVudFBhcmVudCA9
IGNoaWxkLnBhcmVudCgpOworICAgICAgICBhdXRvKiBuZXdQYXJlbnQgPSBlbnRyeS52YWx1ZTsK
ICAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50KSB7CiAgICAgICAgICAgICBp
ZiAoY3VycmVudFBhcmVudCkKLSAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVD
aGlsZCgqY2hpbGQpOworICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxk
KGNoaWxkKTsKICAgICAgICAgICAgIGlmIChuZXdQYXJlbnQpCiAgICAgICAgICAgICAgICAgbmV3
UGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2
b2lkIG1vdmVXaWRnZXRUb1BhcmVudFNvb24oV2lkZ2V0KiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJl
bnQpCitzdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCYgY2hpbGQsIEZy
YW1lVmlldyogcGFyZW50KQogewogICAgIGlmICghV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZTo6aXNTdXNwZW5kZWQoKSkgewogICAgICAgICBpZiAocGFyZW50KQogICAgICAg
ICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNoaWxkLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgICAgICBjaGlsZC5yZW1vdmVGcm9t
UGFyZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc1N1c3BlbnNpb25TY29wZTo6c2NoZWR1bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7
CkBAIC0xNjcsNyArMTY1LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQdHI8
V2lkZ2V0PiYmIHdpZGdldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2lkZ2V0KSB7
Ci0gICAgICAgIG1vdmVXaWRnZXRUb1BhcmVudFNvb24obV93aWRnZXQuZ2V0KCksIDApOworICAg
ICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKCptX3dpZGdldCwgbnVsbHB0cik7CiAgICAgICAg
IHZpZXcoKS5mcmFtZVZpZXcoKS53aWxsUmVtb3ZlV2lkZ2V0RnJvbVJlbmRlclRyZWUoKm1fd2lk
Z2V0KTsKICAgICAgICAgd2lkZ2V0UmVuZGVyZXJNYXAoKS5yZW1vdmUobV93aWRnZXQuZ2V0KCkp
OwogICAgICAgICBtX3dpZGdldCA9IG51bGxwdHI7CkBAIC0xOTMsNyArMTkxLDcgQEAgdm9pZCBS
ZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmIHdpZGdldCkKICAgICAgICAg
ICAgICAgICByZXBhaW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbW92
ZVdpZGdldFRvUGFyZW50U29vbihtX3dpZGdldC5nZXQoKSwgJnZpZXcoKS5mcmFtZVZpZXcoKSk7
CisgICAgICAgIG1vdmVXaWRnZXRUb1BhcmVudFNvb24oKm1fd2lkZ2V0LCAmdmlldygpLmZyYW1l
VmlldygpKTsKICAgICB9CiB9CiAKQEAgLTMzOCw5ICszMzYsOSBAQCB2b2lkIFJlbmRlcldpZGdl
dDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgIG1fd2lk
Z2V0LT5zZXRJc1NlbGVjdGVkKGlzU2VsZWN0ZWQoKSk7CiB9CiAKLVJlbmRlcldpZGdldCogUmVu
ZGVyV2lkZ2V0OjpmaW5kKGNvbnN0IFdpZGdldCogd2lkZ2V0KQorUmVuZGVyV2lkZ2V0KiBSZW5k
ZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIHdpZGdl
dFJlbmRlcmVyTWFwKCkuZ2V0KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldFJlbmRlcmVyTWFw
KCkuZ2V0KCZ3aWRnZXQpOwogfQogCiBib29sIFJlbmRlcldpZGdldDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4IDZlMDExZDczOWU1M2M2ZGE5YjExYTdkYTg2ZDhl
ZGNlYzNlNDQ5N2IuLmM2YTliYzVmOTM1YzMzOTQ4MDg3MmExMWYzNjA3OTgwZWI0YmEzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAgLTQ0LDE0ICs0NCwxMyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVy
biBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsgfQotICAgIHN0YXRpYyB2b2lk
IHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdpZGdldCogd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7
IHdpZGdldE5ld1BhcmVudE1hcCgpLnNldCh3aWRnZXQsIGZyYW1lKTsgfQorICAgIHN0YXRpYyB2
b2lkIHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdpZGdldCYgd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1l
KSB7IHdpZGdldE5ld1BhcmVudE1hcCgpLnNldCgmd2lkZ2V0LCBmcmFtZSk7IH0KIAogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+IFdpZGdl
dFRvUGFyZW50TWFwOworICAgIHVzaW5nIFdpZGdldFRvUGFyZW50TWFwID0gSGFzaE1hcDxSZWZQ
dHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj47CiAgICAgc3RhdGljIFdpZGdldFRvUGFyZW50TWFwJiB3
aWRnZXROZXdQYXJlbnRNYXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVdpZGdl
dHMoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJh
cmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsKIH07CiAgICAgCkBAIC02NCw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkZ2V0LmdldCgpOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJik7CiAK
LSAgICBzdGF0aWMgUmVuZGVyV2lkZ2V0KiBmaW5kKGNvbnN0IFdpZGdldCopOworICAgIHN0YXRp
YyBSZW5kZXJXaWRnZXQqIGZpbmQoY29uc3QgV2lkZ2V0Jik7CiAKICAgICBlbnVtIGNsYXNzIENo
aWxkV2lkZ2V0U3RhdGUgeyBWYWxpZCwgRGVzdHJveWVkIH07CiAgICAgQ2hpbGRXaWRnZXRTdGF0
ZSB1cGRhdGVXaWRnZXRQb3NpdGlvbigpIFdBUk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCmluZGV4IDFhNTlmNjU1NzQ4OWQwNzdm
NGJiZGJmMjhhOGRmYjhiNDZlN2EyNGMuLmFhZjcxY2I3OWZjMTYwOGZkYjBmNGE3ODNiOTZjOGEx
MWQ0YmIxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Np
emluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIGF1dG8gVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4
dE5vZGVTaXplcygpIC0+IFN0aWxsSGFzTm9kZXMKIAogICAgICAgICAvLyBSZXNpemUgdGhlIGxp
bmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCiAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFy
ZW50UmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0TGVuZ3RoID0g
cGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOworICAgICAgICBhdXRvJiBsaW5lSGVp
Z2h0TGVuZ3RoID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOwogCiAgICAgICAg
IGludCBzcGVjaWZpZWRMaW5lSGVpZ2h0OwogICAgICAgICBpZiAobGluZUhlaWdodExlbmd0aC5p
c1BlcmNlbnQoKSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBhdXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6
OmFkanVzdFRleHROb2RlU2l6ZXMoKSAtPiBTdGlsbEhhc05vZGVzCiAKICAgICAgICAgYXV0byBu
ZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwog
ICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aChsaW5lSGVpZ2h0LCBG
aXhlZCkpOwotICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxp
bmVIZWlnaHRMZW5ndGgpOworICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5l
SGVpZ2h0KExlbmd0aCB7IGxpbmVIZWlnaHRMZW5ndGggfSk7CiAgICAgICAgIG5ld1BhcmVudFN0
eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0
b3IoKSk7CiAgICAgICAgIHBhcmVudFJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVu
dFN0eWxlKSk7CkBAIC0xODgsMTIgKzE4OCwxMiBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6
OnJlc2V0KCkKICAgICAgICAgICAgIHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnBh
cmVudCgpOwogCiAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0
eWxlKCk7Ci0gICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWlnaHQgPSBwYXJlbnRTdHlsZS5z
cGVjaWZpZWRMaW5lSGVpZ2h0KCk7CisgICAgICAgIGF1dG8mIG9yaWdpbmFsTGluZUhlaWdodCA9
IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKICAgICAgICAgaWYgKG9yaWdpbmFs
TGluZUhlaWdodCA9PSBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdp
dGhTdGF0ZShwYXJlbnRTdHlsZSk7Ci0gICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWln
aHQob3JpZ2luYWxMaW5lSGVpZ2h0KTsKKyAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhl
aWdodChMZW5ndGggeyBvcmlnaW5hbExpbmVIZWlnaHQgfSk7CiAgICAgICAgIG5ld1BhcmVudFN0
eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJl
bnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0
b3IoKSk7CiAgICAgICAgIHBhcmVudFJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVu
dFN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhNTFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5
bGUuY3BwCmluZGV4IGNhNDZjMmViY2QwMmZkZTM0ZTVlNmMwYmYwYmQ4YjcyYTA0YTJlMDQuLjYx
NjJhY2JiOTNmNzNlYjVmOTk1NzNiZDE1ZGMxYzYzM2QxMTMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCkBAIC00OSwxNCArNDksMTEg
QEAgUmVmPE1hdGhNTFN0eWxlPiBNYXRoTUxTdHlsZTo6Y3JlYXRlKCkKIAogY29uc3QgTWF0aE1M
U3R5bGUqIE1hdGhNTFN0eWxlOjpnZXRNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQogewotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1h
a2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3Jk
ZXIgdG8gc2ltcGxpZnkgdGhpcz8KLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihy
ZW5kZXJlcikpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+
KHJlbmRlcmVyKS0+bWF0aE1MU3R5bGUoKTsKLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJs
b2NrPihyZW5kZXJlcikpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1M
QmxvY2s+KHJlbmRlcmVyKS0+bWF0aE1MU3R5bGUoKTsKLSAgICB9Ci0KKyAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1M
QmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1M
VGFibGU+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRoTUxU
YWJsZT4oKnJlbmRlcmVyKS5tYXRoTUxTdHlsZSgpOworICAgIGlmIChpczxSZW5kZXJNYXRoTUxC
bG9jaz4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTEJs
b2NrPigqcmVuZGVyZXIpLm1hdGhNTFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTY1LDkgKzYyLDkgQEAgdm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJl
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGZvciAoYXV0byogY2hpbGQgPSByZW5kZXJl
cjsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblByZU9yZGVyKHJlbmRlcmVyKSkgewogICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZy
b20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KICAgICAgICAg
aWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihjaGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxS
ZW5kZXJNYXRoTUxUYWJsZT4oY2hpbGQpLT5tYXRoTUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5
bGUoY2hpbGQpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpjaGls
ZCkubWF0aE1MU3R5bGUoKS5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOwogICAgICAgICBlbHNl
IGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4oY2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8
UmVuZGVyTWF0aE1MQmxvY2s+KGNoaWxkKS0+bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhNTFN0
eWxlKGNoaWxkKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqY2hp
bGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaAppbmRleCBiYjE0MmEyNTQyMGEzYTZiY2UxNGMxNTRiZGU5MzIzMzYzNDM0ZTEyLi42MWEx
MmNhNDg3ZjNhNWJiYzU1NGRlZTBjODNhZjY0NWE2MjFkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlck1hdGhNTEJsb2NrKCk7CiAKLSAgICBNYXRoTUxT
dHlsZSogbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxl
Kj4oJm1fbWF0aE1MU3R5bGUuZ2V0KCkpOyB9CisgICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRoTUxTdHlsZTsgfQogCiAgICAgYm9vbCBpc0NoaWxkQWxs
b3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJy
aWRlOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIH0KIAogCi0gICAgTWF0aE1M
U3R5bGUqIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxTdHls
ZSo+KCZtX21hdGhNTFN0eWxlLmdldCgpKTsgfQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE1MU3R5bGU7IH0KIAogcHJpdmF0ZToKICAgICBib29s
IGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uY3BwCmluZGV4IDM1ZTQ0MTQ1ZjdmODYyYzA4YmQwNGUyMTdlZDVmZDBkZTYzMGMxMDgu
LmEyMGJkMTIyZDg4Y2UwZjA4ZDc0NTc3ZWU3OTg1YTAzYTU5ODkwMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpGcmFjdGlvblBhcmFt
ZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZyYWN0aW9uUGFyYW1ldGVyCiAgICAgLy8gV2Ug
dHJ5IGFuZCByZWFkIGNvbnN0YW50cyB0byBkcmF3IHRoZSBmcmFjdGlvbiBmcm9tIHRoZSBPcGVu
VHlwZSBNQVRIIGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25zdCBh
dXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwog
ICAgIGNvbnN0IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlG
b250KCkubWF0aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5kaXNw
bGF5U3R5bGUoKTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHls
ZSgpOwogICAgIGlmIChtYXRoRGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLm51bWVyYXRvckdh
cE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBP
cGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51bURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBl
TWF0aERhdGE6OkZyYWN0aW9uTnVtZXJhdG9yR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy5k
ZW5vbWluYXRvckdhcE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQs
IGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbkRlbm9tRGlzcGxheVN0eWxlR2Fw
TWluIDogT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25EZW5vbWluYXRvckdhcE1pbik7CkBAIC0x
MTYsNyArMTE2LDcgQEAgUmVuZGVyTWF0aE1MRnJhY3Rpb246OlN0YWNrUGFyYW1ldGVycyBSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6c3RhY2tQYXJhbWV0ZXJzKCkKICAgICAvLyBXZSB0cnkgYW5kIHJl
YWQgY29uc3RhbnRzIHRvIGRyYXcgdGhlIHN0YWNrIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5k
IHVzZSBmYWxsYmFjayB2YWx1ZXMgb3RoZXJ3aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlG
b250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0
byogbWF0aERhdGEgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0
YSgpOwotICAgIGJvb2wgZGlzcGxheSA9IG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOwor
ICAgIGJvb2wgZGlzcGxheSA9IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYg
KG1hdGhEYXRhKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuZ2FwTWluID0gbWF0aERhdGEtPmdldE1h
dGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNr
RGlzcGxheVN0eWxlR2FwTWluIDogT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tHYXBNaW4pOwogICAg
ICAgICBwYXJhbWV0ZXJzLnRvcFNoaWZ0VXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHBy
aW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tUb3BEaXNwbGF5U3R5
bGVTaGlmdFVwIDogT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tUb3BTaGlmdFVwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
aAppbmRleCBlMjEyZTliZjczNGFkMjU1ZjA2ZTY5MGVjMjVlMTc4NWE5Mjk5ZTA1Li4wMmZkNDRl
NTU0NGU5ZjcyMjEyNjczZTkxNmRkNjViODE0M2JhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC00OCw4
ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U3RyZXRjaFNpemUoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFn
KSBjb25zdDsKLSAgICBib29sIGlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0
Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9w
KSAmJiBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsgfQotICAgIGJvb2wgc2hvdWxkTW92
ZUxpbWl0cygpIGNvbnN0IHsgcmV0dXJuIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnk6Ok1vdmFibGVMaW1pdHMpICYmICFtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUo
KTsgfQorICAgIGJvb2wgaXNMYXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJl
dHVybiAhaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkp
ICYmIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYm
IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7IH0KKyAgICBib29sIHNob3VsZE1vdmVMaW1p
dHMoKSBjb25zdCB7IHJldHVybiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjpNb3ZhYmxlTGltaXRzKSAmJiAhbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBpdGFs
aWNDb3JyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRoT3BlcmF0b3IuaXRhbGljQ29ycmVj
dGlvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IDFhNjZlYzg3ZTZkOTM0M2JmNWNhNTU5Yjk3ODBhOTAy
ZjdmMTRlMjIuLjNkNzU3YTdhODU2YWNiNjFmMGU2ZjgyM2Q5NmE5OTg5NTI5NWE0ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1l
dGVycyBSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgIGNvbnN0IGF1
dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAg
ICAgaWYgKGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250
KCkubWF0aERhdGEoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBtYXRo
RGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRp
Y2FsUnVsZVRoaWNrbmVzcyk7Ci0gICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBtYXRo
RGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5
U3R5bGUoKSA/IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdh
cCA6IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CisgICAgICAgIHBhcmFt
ZXRlcnMudmVydGljYWxHYXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250
LCBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNh
bERpc3BsYXlTdHlsZVZlcnRpY2FsR2FwIDogT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFZlcnRp
Y2FsR2FwKTsKICAgICAgICAgcGFyYW1ldGVycy5leHRyYUFzY2VuZGVyID0gbWF0aERhdGEtPmdl
dE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEV4dHJh
QXNjZW5kZXIpOwogICAgICAgICBpZiAobV9raW5kID09IFJvb3RXaXRoSW5kZXgpCiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLmRlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCA9IG1hdGhEYXRhLT5nZXRN
YXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEZWdyZWVC
b3R0b21SYWlzZVBlcmNlbnQpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6
OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMo
KQogICAgICAgICAvLyBSYWRpY2FsRXh0cmFBc2NlbmRlcjogU3VnZ2VzdGVkIHZhbHVlIGlzIFJh
ZGljYWxSdWxlVGhpY2tuZXNzLgogICAgICAgICAvLyBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQ
ZXJjZW50OiBTdWdnZXN0ZWQgdmFsdWUgaXMgNjAlLgogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVU
aGlja25lc3MgPSBydWxlVGhpY2tuZXNzRmFsbGJhY2soKTsKLSAgICAgICAgaWYgKG1hdGhNTFN0
eWxlKCktPmRpc3BsYXlTdHlsZSgpKQorICAgICAgICBpZiAobWF0aE1MU3R5bGUoKS5kaXNwbGF5
U3R5bGUoKSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJz
LnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNDsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IDUgKiBwYXJh
bWV0ZXJzLnJ1bGVUaGlja25lc3MgLyA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA1NTViZDY4ZDY1MWI1Zjhh
ZjA1MWYwMTVkM2VhZmM3N2UwNjhmMzkxLi5hNWM0YzFjMGQwYzVkOWFlNjBmZTExMjA4NGY2ODRh
NjcxOWFmODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKQogCiAgICAgY29uc3QgYXV0byYgdG9r
ZW5FbGVtZW50ID0gZWxlbWVudCgpOwogICAgIGlmIChhdXRvIGNvZGVQb2ludCA9IE1hdGhNTFRv
a2VuRWxlbWVudDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KGVsZW1lbnQoKS50ZXh0Q29udGVu
dCgpKSkgewotICAgICAgICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9
IG1hdGhNTFN0eWxlKCktPm1hdGhWYXJpYW50KCk7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6Ok1h
dGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS5tYXRoVmFyaWFudCgpOwogICAg
ICAgICBpZiAobWF0aHZhcmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vbmUp
CiAgICAgICAgICAgICBtYXRodmFyaWFudCA9IHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhN
TE5hbWVzOjptaVRhZykgPyBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6SXRhbGljIDogTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vcm1hbDsKICAgICAgICAgVUNoYXIzMiB0cmFuc2Zv
cm1lZENvZGVQb2ludCA9IG1hdGhWYXJpYW50KGNvZGVQb2ludC52YWx1ZSgpLCBtYXRodmFyaWFu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApp
bmRleCAyOTBjNmQ4NWQwZWUzMmQ1MDYzNzM1MjZiOTA2YjQ4NmZkODMzNTkwLi4wNmIzZTA5MGVh
OTdiYWVkMTUwMTE3NDkxMTc3MjJiZTFmNzI5YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTM4Nyw4ICszODcsOCBAQCBib29sIEJh
c2ljU2hhcGVJbnNldDo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QK
IAogc3RhdGljIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNp
emUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiB7Ci0gICAgcmV0
dXJuIEZsb2F0U2l6ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUud2lkdGgoKSwgYm91
bmRpbmdCb3gud2lkdGgoKSksCi0gICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6
ZS5oZWlnaHQoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUud2lkdGgsIGJvdW5kaW5nQm94LndpZHRoKCkpLAorICAg
ICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUuaGVpZ2h0LCBib3VuZGluZ0JveC5o
ZWlnaHQoKSkgfTsKIH0KIAogY29uc3QgUGF0aCYgQmFzaWNTaGFwZUluc2V0OjpwYXRoKGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuaAppbmRleCAyOTRmYjgyYTA0ZWRmNGNhMjkxYjgyYzgzZDE5ZWQwYzA2ZjIw
YTFkLi4wNmJjYzk5ZjhiMGYxOWRjYTRiZDI3MjY1MWRhYzMyYmI3ZGQ1NWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTM0LDEwICszNCwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCb3JkZXJEYXRhIHsKIGZyaWVuZCBjbGFzcyBS
ZW5kZXJTdHlsZTsKIHB1YmxpYzoKLSAgICBCb3JkZXJEYXRhKCkgOiBtX3RvcExlZnQoTGVuZ3Ro
KDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX3RvcFJp
Z2h0KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAgICAg
ICwgbV9ib3R0b21MZWZ0KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAg
ICAgICAgICAgICAgICwgbV9ib3R0b21SaWdodChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwg
Rml4ZWQpKQorICAgIEJvcmRlckRhdGEoKQorICAgICAgICA6IG1fdG9wTGVmdCB7IHsgMCwgRml4
ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAgICAgLCBtX3RvcFJpZ2h0IHsgeyAwLCBGaXhlZCB9
LCB7IDAsIEZpeGVkIH0gfQorICAgICAgICAsIG1fYm90dG9tTGVmdCB7IHsgMCwgRml4ZWQgfSwg
eyAwLCBGaXhlZCB9IH0KKyAgICAgICAgLCBtX2JvdHRvbVJpZ2h0IHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfQogICAgIHsKICAgICB9CiAgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdApA
QCAtNTksMTUgKzYwLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGhhc0JvcmRlclJhZGl1
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpLmlzWmVybygp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV90b3BSaWdodC53aWR0
aCgpLmlzWmVybygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV9i
b3R0b21MZWZ0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gIW1fdG9w
TGVmdC53aWR0aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fdG9wUmlnaHQud2lkdGguaXNa
ZXJvKCkKKyAgICAgICAgICAgIHx8ICFtX2JvdHRvbUxlZnQud2lkdGguaXNaZXJvKCkKKyAgICAg
ICAgICAgIHx8ICFtX2JvdHRvbVJpZ2h0LndpZHRoLmlzWmVybygpOwogICAgIH0KICAgICAKICAg
ICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKaW5kZXggMGJkMGQ3MDYxMWFjMWMxZjBjNDMxMzBi
NDAzMWJiZGQyNGVmYzM5Zi4uYzZjMDIyNGJjZGI4YTg3ZTVlNWMyMzEwOWE1ZTFkZmVjOTdhNGM3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3Bw
CkBAIC0zOCw4ICszOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gQ29udGVudERh
dGE6OmNsb25lKCkgY29uc3QKICAgICBhdXRvIHJlc3VsdCA9IGNsb25lSW50ZXJuYWwoKTsKICAg
ICBhdXRvKiBsYXN0TmV3RGF0YSA9IHJlc3VsdC5nZXQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRl
bnREYXRhID0gbmV4dCgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+
bmV4dCgpKSB7Ci0gICAgICAgIGF1dG8gbmV3RGF0YSA9IGNvbnRlbnREYXRhLT5jbG9uZUludGVy
bmFsKCk7Ci0gICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0KFdURk1vdmUobmV3RGF0YSkpOwor
ICAgICAgICBsYXN0TmV3RGF0YS0+c2V0TmV4dChjb250ZW50RGF0YS0+Y2xvbmVJbnRlcm5hbCgp
KTsKICAgICAgICAgbGFzdE5ld0RhdGEgPSBsYXN0TmV3RGF0YS0+bmV4dCgpOwogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaAppbmRleCAxNmQ2NTU3NjBkZTc1MmNmMTYyYTM2ZTUwY2IwMzU2NzZkN2RkMjkyLi45
ZTk3YzAyMzVjM2RmZWQ1ZGM4NDk1ZmJmN2E2OTYwMTA0NmI4ZTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250
ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPih0ZXh0KCkpOyB9
CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7
IH0KIAogICAgIFN0cmluZyBtX3RleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9EYXRhUmVmLmgKaW5kZXggM2Y5M2E1N2VmNTgyNjFkZmFhMmNlZmRmNmRhOWIyYTliMzlmMjM5
Yy4uZjU0MmQ2YzJhMTZmY2Y3OGIxNjZlYTI5ZWVkMGZkOGI0Y2YwZjI2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0xLDggKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAg
IChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAg
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA1LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMzAgKzI2LDY1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWYgewogcHVibGljOgotICAgIERh
dGFSZWYoUmVmPFQ+JiYgZGF0YSkgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgRGF0
YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikgOiBtX2RhdGEoY29uc3RfY2FzdDxUJj4ob3RoZXIu
bV9kYXRhLmdldCgpKSkgeyB9Ci0gICAgRGF0YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYm
IG90aGVyKSB7IG1fZGF0YSA9IGNvbnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSk7IHJl
dHVybiAqdGhpczsgfQorICAgIERhdGFSZWYoUmVmPFQ+JiYgZGF0YSkKKyAgICAgICAgOiBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkKKyAgICB7CisgICAgfQogCi0gICAgY29uc3QgVCogZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLnB0cigpOyB9CisgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBv
dGhlcikKKyAgICAgICAgOiBtX2RhdGEob3RoZXIubV9kYXRhLmNvcHlSZWYoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgRGF0YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKQorICAg
IHsKKyAgICAgICAgbV9kYXRhID0gb3RoZXIubV9kYXRhLmNvcHlSZWYoKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KIAotICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0
dXJuICpnZXQoKTsgfQotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQorICAgIERhdGFSZWYoRGF0YVJlZiYmKSA9IGRlZmF1bHQ7CisgICAgRGF0YVJlZiYg
b3BlcmF0b3I9KERhdGFSZWYmJikgPSBkZWZhdWx0OworCisgICAgRGF0YVJlZiByZXBsYWNlKERh
dGFSZWYmJiBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGEucmVwbGFjZShXVEZN
b3ZlKG90aGVyLm1fZGF0YSkpOworICAgIH0KKworICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQogCi0gICAgVCogYWNjZXNz
KCkKKyAgICBjb25zdCBUJiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0
YTsKKyAgICB9CisKKyAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CisgICAgfQorCisgICAgVCYg
YWNjZXNzKCkKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhLT5oYXNPbmVSZWYoKSkKICAgICAg
ICAgICAgIG1fZGF0YSA9IG1fZGF0YS0+Y29weSgpOwotICAgICAgICByZXR1cm4gbV9kYXRhLnB0
cigpOworICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBEYXRhUmVmPFQ+JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBE
YXRhUmVmJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkg
PT0gby5tX2RhdGEucHRyKCkgfHwgbV9kYXRhLmdldCgpID09IG8ubV9kYXRhLmdldCgpOworICAg
ICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG90aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEu
Z2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOwogICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgbykgY29uc3QKKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBEYXRhUmVmJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEu
cHRyKCkgIT0gby5tX2RhdGEucHRyKCkgJiYgbV9kYXRhLmdldCgpICE9IG8ubV9kYXRhLmdldCgp
OworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAppbmRl
eCA3NjUyMzgwNWEyNWM5NDI2YWZlMDNjMzM5MWMwZTc4OTk4YTUxZDI2Li45NzI5OGFiNDQ3OWE3
ZWEyN2RlOWZiZTM4MmUyYjc0NzBiNmY0MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcApAQCAtMjksMTQgKzI5LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0
aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSoga2V5ZnJhbWVTdHlsZSA9IHN0eWxlKCk7CisgICAgYXV0byoga2V5ZnJhbWVTdHlsZSA9
IHN0eWxlKCk7CiAgICAgaWYgKCFrZXlmcmFtZVN0eWxlIHx8ICFrZXlmcmFtZVN0eWxlLT5hbmlt
YXRpb25zKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCktPnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uID0ga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9u
cygpLT5hbmltYXRpb24oaSk7CiAgICAgICAgIGlmIChuYW1lID09IGFuaW1hdGlvbi5uYW1lKCkp
Ci0gICAgICAgICAgICByZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NCw3ICs0NCw2IEBAIFRpbWluZ0Z1bmN0aW9uKiBLZXlm
cmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiAKIEtleWZyYW1lTGlzdDo6fktleWZyYW1lTGlzdCgpCiB7Ci0gICAgY2xlYXIoKTsKIH0KIAog
dm9pZCBLZXlmcmFtZUxpc3Q6OmNsZWFyKCkKQEAgLTU4LDE1ICs1NywxMiBAQCBib29sIEtleWZy
YW1lTGlzdDo6b3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0CiAgICAgaWYg
KG1fa2V5ZnJhbWVzLnNpemUoKSAhPSBvLm1fa2V5ZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBp
dDIgPSBvLm1fa2V5ZnJhbWVzLmJlZ2luKCk7Ci0gICAgZm9yIChWZWN0b3I8S2V5ZnJhbWVWYWx1
ZT46OmNvbnN0X2l0ZXJhdG9yIGl0MSA9IG1fa2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tl
eWZyYW1lcy5lbmQoKTsgKytpdDEpIHsKKyAgICBhdXRvIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVn
aW4oKTsKKyAgICBmb3IgKGF1dG8gaXQxID0gbV9rZXlmcmFtZXMuYmVnaW4oKTsgaXQxICE9IG1f
a2V5ZnJhbWVzLmVuZCgpOyArK2l0MSwgKytpdDIpIHsKICAgICAgICAgaWYgKGl0MS0+a2V5KCkg
IT0gaXQyLT5rZXkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlMSA9ICppdDEtPnN0eWxlKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZTIgPSAqaXQyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUxICE9IHN0
eWxlMikKKyAgICAgICAgaWYgKCppdDEtPnN0eWxlKCkgIT0gKml0Mi0+c3R5bGUoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgKytpdDI7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmNwcAppbmRleCBjZTg0YjE2MGYxOTczOWRkOTZiNDgxYjA0OWY2ZmZjMDNmNWJlMDc2Li5l
OGM5MjMyYzE2ZTU3OWZmMTZmZjQzNzU2NWU5ZGUyNjg4MGMwMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTYwLDIwICs2
MCwyMiBAQCBMYXlvdXRVbml0IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2UoTGVuZ3RoIGxl
bmd0aCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VQogCiBMYXlvdXRCb3hFeHRlbnQgTmluZVBp
ZWNlSW1hZ2U6OmNvbXB1dGVTbGljZXMoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgY29uc3QgTGVu
Z3RoQm94JiBsZW5ndGhzLCBpbnQgc2NhbGVGYWN0b3IpCiB7Ci0gICAgTGF5b3V0VW5pdCB0b3Ag
ICAgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChs
ZW5ndGhzLnRvcCgpLCAgICBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlv
dXRVbml0IHJpZ2h0ICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUud2lkdGgoKSwgIHZhbHVl
Rm9yTGVuZ3RoKGxlbmd0aHMucmlnaHQoKSwgIHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9y
OwotICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW48TGF5b3V0VW5pdD4oc2l6ZS5oZWln
aHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSkpICog
c2NhbGVGYWN0b3I7Ci0gICAgTGF5b3V0VW5pdCBsZWZ0ICAgPSBzdGQ6Om1pbjxMYXlvdXRVbml0
PihzaXplLndpZHRoKCksICB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLmxlZnQoKSwgICBzaXplLndp
ZHRoKCkpKSAgKiBzY2FsZUZhY3RvcjsKLSAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KHRvcCwg
cmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc3RkOjptaW4oc2l6
ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy50b3AoKSwgc2l6ZS5oZWlnaHQoKSkp
ICogc2NhbGVGYWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNpemUud2lkdGgoKSwgdmFsdWVGb3JM
ZW5ndGgobGVuZ3Rocy5yaWdodCgpLCBzaXplLndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvciwKKyAg
ICAgICAgc3RkOjptaW4oc2l6ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5ib3R0
b20oKSwgc2l6ZS5oZWlnaHQoKSkpICogc2NhbGVGYWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNp
emUud2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5sZWZ0KCksIHNpemUud2lkdGgoKSkp
ICAqIHNjYWxlRmFjdG9yCisgICAgfTsKIH0KIAogTGF5b3V0Qm94RXh0ZW50IE5pbmVQaWVjZUlt
YWdlOjpjb21wdXRlU2xpY2VzKGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IExlbmd0aEJv
eCYgbGVuZ3RocywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIHdpZHRocywgY29uc3QgTGF5b3V0Qm94
RXh0ZW50JiBzbGljZXMpCiB7Ci0gICAgTGF5b3V0VW5pdCB0b3AgICAgPSBjb21wdXRlU2xpY2Uo
bGVuZ3Rocy50b3AoKSwgICAgd2lkdGhzLnRvcCgpLCAgICBzbGljZXMudG9wKCksICAgIHNpemUu
aGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgcmlnaHQgID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMu
cmlnaHQoKSwgIHdpZHRocy5yaWdodCgpLCAgc2xpY2VzLnJpZ2h0KCksICBzaXplLndpZHRoKCkp
OwotICAgIExheW91dFVuaXQgYm90dG9tID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMuYm90dG9tKCks
IHdpZHRocy5ib3R0b20oKSwgc2xpY2VzLmJvdHRvbSgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBM
YXlvdXRVbml0IGxlZnQgICA9IGNvbXB1dGVTbGljZShsZW5ndGhzLmxlZnQoKSwgICB3aWR0aHMu
bGVmdCgpLCAgIHNsaWNlcy5sZWZ0KCksICAgc2l6ZS53aWR0aCgpKTsKLSAgICByZXR1cm4gTGF5
b3V0Qm94RXh0ZW50KHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMudG9wKCksIHdpZHRocy50b3AoKSwgc2xpY2VzLnRv
cCgpLCBzaXplLmhlaWdodCgpKSwKKyAgICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMucmlnaHQo
KSwgd2lkdGhzLnJpZ2h0KCksIHNsaWNlcy5yaWdodCgpLCBzaXplLndpZHRoKCkpLAorICAgICAg
ICBjb21wdXRlU2xpY2UobGVuZ3Rocy5ib3R0b20oKSwgd2lkdGhzLmJvdHRvbSgpLCBzbGljZXMu
Ym90dG9tKCksIHNpemUuaGVpZ2h0KCkpLAorICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy5s
ZWZ0KCksIHdpZHRocy5sZWZ0KCksIHNsaWNlcy5sZWZ0KCksIHNpemUud2lkdGgoKSkKKyAgICB9
OwogfQogCiB2b2lkIE5pbmVQaWVjZUltYWdlOjpzY2FsZVNsaWNlc0lmTmVlZGVkKGNvbnN0IExh
eW91dFNpemUmIHNpemUsIExheW91dEJveEV4dGVudCYgc2xpY2VzLCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmgKaW5kZXggZmFhYmJmZDVhODZlODEwMGZkODkxYjBhMDA3NTYzNDM1ZmY0MWE0Yy4uMmI1
ZmU2NTU0ZTc2MzFlMTJmNDM4ZjFmOGVlMzBmZDcxODk4OGQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKQEAgLTEwOCw1MyArMTA4LDUz
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEt
PmltYWdlOyB9CiAgICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEt
PmltYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBp
bWFnZSkgeyBtX2RhdGEuYWNjZXNzKCktPmltYWdlID0gV1RGTW92ZShpbWFnZSk7IH0KKyAgICB2
b2lkIHNldEltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3Mo
KS5pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOyB9CiAKICAgICBjb25zdCBMZW5ndGhCb3gmIGltYWdl
U2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5pbWFnZVNsaWNlczsgfQotICAgIHZvaWQg
c2V0SW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBtX2RhdGEuYWNjZXNzKCktPmltYWdl
U2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CisgICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5n
dGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNlcyA9IFdURk1vdmUoc2xp
Y2VzKTsgfQogCiAgICAgYm9vbCBmaWxsKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5maWxsOyB9
Ci0gICAgdm9pZCBzZXRGaWxsKGJvb2wgZmlsbCkgeyBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSBm
aWxsOyB9CisgICAgdm9pZCBzZXRGaWxsKGJvb2wgZmlsbCkgeyBtX2RhdGEuYWNjZXNzKCkuZmls
bCA9IGZpbGw7IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVyU2xpY2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLT5ib3JkZXJTbGljZXM7IH0KLSAgICB2b2lkIHNldEJvcmRlclNsaWNl
cyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gV1RG
TW92ZShzbGljZXMpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJTbGljZXMoTGVuZ3RoQm94IHNsaWNl
cykgeyBtX2RhdGEuYWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CiAK
ICAgICBjb25zdCBMZW5ndGhCb3gmIG91dHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+b3V0
c2V0OyB9Ci0gICAgdm9pZCBzZXRPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNj
ZXNzKCktPm91dHNldCA9IFdURk1vdmUob3V0c2V0KTsgfQorICAgIHZvaWQgc2V0T3V0c2V0KExl
bmd0aEJveCBvdXRzZXQpIHsgbV9kYXRhLmFjY2VzcygpLm91dHNldCA9IFdURk1vdmUob3V0c2V0
KTsgfQogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVOaW5lUGllY2VJbWFnZVJ1bGU+KG1fZGF0YS0+aG9yaXpvbnRh
bFJ1bGUpOyB9Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxl
IHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLT5ob3Jpem9udGFsUnVsZSA9IHJ1bGU7IH0KKyAgICB2
b2lkIHNldEhvcml6b250YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEu
YWNjZXNzKCkuaG9yaXpvbnRhbFJ1bGUgPSBydWxlOyB9CiAgICAgCiAgICAgRU5pbmVQaWVjZUlt
YWdlUnVsZSB2ZXJ0aWNhbFJ1bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTmluZVBp
ZWNlSW1hZ2VSdWxlPihtX2RhdGEtPnZlcnRpY2FsUnVsZSk7IH0KLSAgICB2b2lkIHNldFZlcnRp
Y2FsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLT52ZXJ0
aWNhbFJ1bGUgPSBydWxlOyB9CisgICAgdm9pZCBzZXRWZXJ0aWNhbFJ1bGUoRU5pbmVQaWVjZUlt
YWdlUnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nlc3MoKS52ZXJ0aWNhbFJ1bGUgPSBydWxlOyB9CiAK
ICAgICB2b2lkIGNvcHlJbWFnZVNsaWNlc0Zyb20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVy
KQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IG90aGVyLm1f
ZGF0YS0+aW1hZ2VTbGljZXM7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IG90aGVy
Lm1fZGF0YS0+ZmlsbDsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmltYWdlU2xpY2VzID0gb3Ro
ZXIubV9kYXRhLT5pbWFnZVNsaWNlczsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSBv
dGhlci5tX2RhdGEtPmZpbGw7CiAgICAgfQogCiAgICAgdm9pZCBjb3B5Qm9yZGVyU2xpY2VzRnJv
bShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNj
ZXNzKCktPmJvcmRlclNsaWNlcyA9IG90aGVyLm1fZGF0YS0+Ym9yZGVyU2xpY2VzOworICAgICAg
ICBtX2RhdGEuYWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gb3RoZXIubV9kYXRhLT5ib3JkZXJTbGlj
ZXM7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29weU91dHNldEZyb20oY29uc3QgTmluZVBpZWNl
SW1hZ2UmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5vdXRzZXQgPSBv
dGhlci5tX2RhdGEtPm91dHNldDsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLm91dHNldCA9IG90
aGVyLm1fZGF0YS0+b3V0c2V0OwogICAgIH0KIAogICAgIHZvaWQgY29weVJlcGVhdEZyb20oY29u
c3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2Vzcygp
LT5ob3Jpem9udGFsUnVsZSA9IG90aGVyLm1fZGF0YS0+aG9yaXpvbnRhbFJ1bGU7Ci0gICAgICAg
IG1fZGF0YS5hY2Nlc3MoKS0+dmVydGljYWxSdWxlID0gb3RoZXIubV9kYXRhLT52ZXJ0aWNhbFJ1
bGU7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5ob3Jpem9udGFsUnVsZSA9IG90aGVyLm1fZGF0
YS0+aG9yaXpvbnRhbFJ1bGU7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS52ZXJ0aWNhbFJ1bGUg
PSBvdGhlci5tX2RhdGEtPnZlcnRpY2FsUnVsZTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hc2tE
ZWZhdWx0cygpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0g
TGVuZ3RoQm94KDApOwotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSB0cnVlOwotICAg
ICAgICBtX2RhdGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IExlbmd0aEJveCgpOworICAgICAg
ICBtX2RhdGEuYWNjZXNzKCkuaW1hZ2VTbGljZXMgPSBMZW5ndGhCb3goMCk7CisgICAgICAgIG1f
ZGF0YS5hY2Nlc3MoKS5maWxsID0gdHJ1ZTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmJvcmRl
clNsaWNlcyA9IExlbmd0aEJveCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGNv
bXB1dGVPdXRzZXQoY29uc3QgTGVuZ3RoJiBvdXRzZXRTaWRlLCBMYXlvdXRVbml0IGJvcmRlclNp
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCA5YzQ3MTI1ZWE3NDBmOTY3MDYwNmZlZmFiYjk1ZmY4ZTc2Y2JkMjFjLi44ZmU4MmUxNjVi
NzNjMmEzYWI3Nzg2MDEwZGY0NWQ3Y2UyZjQ4ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTcxLDExICs3MSwxMSBAQCBzdHJ1Y3QgU2Ft
ZVNpemVBc1JlbmRlclN0eWxlIHsKICAgICB2b2lkKiBkYXRhUmVmU3ZnU3R5bGU7CiAgICAgc3Ry
dWN0IEluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgdW5zaWduZWQgbV9iaXRmaWVsZHNbMl07Ci0g
ICAgfSBpbmhlcml0ZWRfZmxhZ3M7CisgICAgfSBtX2luaGVyaXRlZEZsYWdzOwogCiAgICAgc3Ry
dWN0IE5vbkluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgdWludDY0X3QgbV9mbGFnczsKLSAgICB9
IG5vbmluaGVyaXRlZF9mbGFnczsKKyAgICB9IG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAjaWYgIUFT
U0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIGRl
bGV0aW9uQ2hlY2s7CiAjZW5kaWYKQEAgLTg1LDcgKzg1LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlbmRlclN0eWxlKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgUmVuZGVy
U3R5bGUKIAogUmVuZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewotICAg
IHN0YXRpYyBSZW5kZXJTdHlsZSYgc3R5bGUgPSAqbmV3IFJlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRTdHlsZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbmRlclN0eWxlPiBzdHlsZSB7
IENyZWF0ZURlZmF1bHRTdHlsZSB9OwogICAgIHJldHVybiBzdHlsZTsKIH0KIApAQCAtMTI4LDUz
ICsxMjgsNjggQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGlu
Z0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYKIH0KIAogUmVuZGVyU3R5bGU6OlJl
bmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZVRhZykKLSAgICA6IG1fYm94KFN0eWxlQm94RGF0
YTo6Y3JlYXRlKCkpCi0gICAgLCB2aXN1YWwoU3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKLSAg
ICAsIG1fYmFja2dyb3VuZChTdHlsZUJhY2tncm91bmREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHN1
cnJvdW5kKFN0eWxlU3Vycm91bmREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHJhcmVOb25Jbmhlcml0
ZWREYXRhKFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQotICAgICwgcmFyZUlu
aGVyaXRlZERhdGEoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhl
cml0ZWQoU3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICA6IG1fYm94RGF0YShTdHls
ZUJveERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV92aXN1YWxEYXRhKFN0eWxlVmlzdWFsRGF0YTo6
Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKFN0eWxlQmFja2dyb3VuZERhdGE6OmNy
ZWF0ZSgpKQorICAgICwgbV9zdXJyb3VuZERhdGEoU3R5bGVTdXJyb3VuZERhdGE6OmNyZWF0ZSgp
KQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpjcmVhdGUoKSkKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEoU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRh
OjpjcmVhdGUoKSkKICAgICAsIG1fc3ZnU3R5bGUoU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQog
ewotICAgIGluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgPSBpbml0aWFsRW1wdHlDZWxscygp
OwotICAgIGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID0gaW5pdGlhbENhcHRpb25TaWRl
KCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgPSBpbml0aWFsTGlzdFN0
eWxlVHlwZSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IGlu
aXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0
eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWdu
ID0gaW5pdGlhbFRleHRBbGlnbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zv
cm0gPSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9k
ZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFn
cy5fY3Vyc29yX3N0eWxlID0gaW5pdGlhbEN1cnNvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
ZW1wdHlDZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5j
YXB0aW9uU2lkZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOworICAg
IG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7CisgICAg
bV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7CisgICAgbV9p
bmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3JhdGlv
bigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gaW5pdGlhbEN1cnNvcigpOwogI2lm
IEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JW
aXNpYmlsaXR5ID0gaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmN1cnNvclZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpOwogI2VuZGlm
Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSA9IGluaXRpYWxXaGl0ZVNwYWNlKCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgPSBpbml0aWFsQm9yZGVyQ29sbGFw
c2UoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRl
cmluZygpOwotICAgIGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9IGluaXRpYWxCb3hE
aXJlY3Rpb24oKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gaW5p
dGlhbFByaW50Q29sb3JBZGp1c3QoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVu
dHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygpOwotICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRl
TGluayA9IE5vdEluc2lkZUxpbms7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0
QnV0dG9uID0gZmFsc2U7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSBpbml0
aWFsV3JpdGluZ01vZGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IGluaXRp
YWxEaXJlY3Rpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBpbml0aWFs
V2hpdGVTcGFjZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBpbml0
aWFsQm9yZGVyQ29sbGFwc2UoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0g
aW5pdGlhbFJUTE9yZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24g
PSBpbml0aWFsQm94RGlyZWN0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9y
QWRqdXN0ID0gaW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
LnBvaW50ZXJFdmVudHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygpOworICAgIG1faW5oZXJpdGVk
RmxhZ3MuaW5zaWRlTGluayA9IE5vdEluc2lkZUxpbms7CisgICAgbV9pbmhlcml0ZWRGbGFncy5p
bnNpZGVEZWZhdWx0QnV0dG9uID0gZmFsc2U7CisgICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5n
TW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgpOwogCiAgICAgc3RhdGljX2Fzc2VydCgoc2l6ZW9m
KEluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIkluaGVyaXRlZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2YoTm9uSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiTm9u
SW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3JvdyIpOwogfQogCi1SZW5kZXJTdHlsZTo6UmVuZGVy
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKLSAgICA6IG1fYm94KG90
aGVyLm1fYm94KQotICAgICwgdmlzdWFsKG90aGVyLnZpc3VhbCkKLSAgICAsIG1fYmFja2dyb3Vu
ZChvdGhlci5tX2JhY2tncm91bmQpCi0gICAgLCBzdXJyb3VuZChvdGhlci5zdXJyb3VuZCkKLSAg
ICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhKQotICAg
ICwgcmFyZUluaGVyaXRlZERhdGEob3RoZXIucmFyZUluaGVyaXRlZERhdGEpCi0gICAgLCBpbmhl
cml0ZWQob3RoZXIuaW5oZXJpdGVkKQoraW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQorICAgIDogbV9ib3hEYXRhKG90aGVy
Lm1fYm94RGF0YSkKKyAgICAsIG1fdmlzdWFsRGF0YShvdGhlci5tX3Zpc3VhbERhdGEpCisgICAg
LCBtX2JhY2tncm91bmREYXRhKG90aGVyLm1fYmFja2dyb3VuZERhdGEpCisgICAgLCBtX3N1cnJv
dW5kRGF0YShvdGhlci5tX3N1cnJvdW5kRGF0YSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxh
Z3Mob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncykKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEo
b3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkKKyAgICAsIG1faW5oZXJpdGVkRGF0YShvdGhlci5t
X2luaGVyaXRlZERhdGEpCisgICAgLCBtX2luaGVyaXRlZEZsYWdzKG90aGVyLm1faW5oZXJpdGVk
RmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCi0gICAgLCBpbmhlcml0
ZWRfZmxhZ3Mob3RoZXIuaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgbm9uaW5oZXJpdGVkX2ZsYWdz
KG90aGVyLm5vbmluaGVyaXRlZF9mbGFncykKK3sKK30KKworaW5saW5lIFJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUmJiBiKQorICAgIDogbV9ib3hE
YXRhKGEubV9ib3hEYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fYm94RGF0YSkpKQorICAgICwgbV92
aXN1YWxEYXRhKGEubV92aXN1YWxEYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fdmlzdWFsRGF0YSkp
KQorICAgICwgbV9iYWNrZ3JvdW5kRGF0YShhLm1fYmFja2dyb3VuZERhdGEucmVwbGFjZShXVEZN
b3ZlKGIubV9iYWNrZ3JvdW5kRGF0YSkpKQorICAgICwgbV9zdXJyb3VuZERhdGEoYS5tX3N1cnJv
dW5kRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX3N1cnJvdW5kRGF0YSkpKQorICAgICwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YShhLm1fcmFyZU5vbkluaGVyaXRlZERhdGEucmVwbGFjZShXVEZNb3Zl
KGIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YSkpKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhz
dGQ6OmV4Y2hhbmdlKGEubV9ub25Jbmhlcml0ZWRGbGFncywgYi5tX25vbkluaGVyaXRlZEZsYWdz
KSkKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEoYS5tX3JhcmVJbmhlcml0ZWREYXRhLnJlcGxh
Y2UoV1RGTW92ZShiLm1fcmFyZUluaGVyaXRlZERhdGEpKSkKKyAgICAsIG1faW5oZXJpdGVkRGF0
YShhLm1faW5oZXJpdGVkRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX2luaGVyaXRlZERhdGEpKSkK
KyAgICAsIG1faW5oZXJpdGVkRmxhZ3Moc3RkOjpleGNoYW5nZShhLm1faW5oZXJpdGVkRmxhZ3Ms
IGIubV9pbmhlcml0ZWRGbGFncykpCisgICAgLCBtX2NhY2hlZFBzZXVkb1N0eWxlcyhzdGQ6OmV4
Y2hhbmdlKGEubV9jYWNoZWRQc2V1ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2NhY2hlZFBzZXVkb1N0
eWxlcykpKQorICAgICwgbV9zdmdTdHlsZShhLm1fc3ZnU3R5bGUucmVwbGFjZShXVEZNb3ZlKGIu
bV9zdmdTdHlsZSkpKQogewogfQogCkBAIC0xODYsNiArMjAxLDExIEBAIFJlbmRlclN0eWxlOjp+
UmVuZGVyU3R5bGUoKQogI2VuZGlmCiB9CiAKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpyZXBs
YWNlKFJlbmRlclN0eWxlJiYgbmV3U3R5bGUpCit7CisgICAgcmV0dXJuIFJlbmRlclN0eWxlIHsg
KnRoaXMsIFdURk1vdmUobmV3U3R5bGUpIH07Cit9CisKIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ1NT
R3JpZExheW91dEVuYWJsZWQoKQogewogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCkBAIC0y
MTIsNyArMjMyLDcgQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBSZW5kZXJTdHlsZTo6cmVzb2x2
ZWRBbGlnblNlbGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFMKIHsKICAgICAvLyBUaGUgYXV0
byBrZXl3b3JkIGNvbXB1dGVzIHRvIHRoZSBwYXJlbnQncyBhbGlnbi1pdGVtcyBjb21wdXRlZCB2
YWx1ZS4KICAgICAvLyBXZSB3aWxsIHJldHVybiB0aGUgYmVoYXZpb3VyIG9mICdub3JtYWwnIHZh
bHVlIGlmIG5lZWRlZCwgd2hpY2ggaXMgc3BlY2lmaWMgb2YgZWFjaCBsYXlvdXQgbW9kZWwuCi0g
ICAgaWYgKGFsaWduU2VsZlBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAo
YWxpZ25TZWxmKCkucG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1
cm4gcGFyZW50U3R5bGUucmVzb2x2ZWRBbGlnbkl0ZW1zKG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsK
ICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGFsaWduU2VsZigpLCBub3JtYWxWYWx1
ZUJlaGF2aW91cik7CiB9CkBAIC0yMjIsOSArMjQyLDggQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIG5vcm1hbFZh
bHUKICAgICAvLyBGSVhNRToganVzdGlmeS1pdGVtcyAnYXV0bycgdmFsdWUgaXMgYWxsb3dlZCBv
bmx5IHRvIHByb3ZpZGUgdGhlICdsZWdhY3knIGtleXdvcmQncyBiZWhhdmlvciwgd2hpY2ggaXQn
cyBzdGlsbCBub3QgaW1wbGVtZW50ZWQgZm9yIGxheW91dC4KICAgICAvLyAiSWYgdGhlIGluaGVy
aXRlZCB2YWx1ZSBvZiBqdXN0aWZ5LWl0ZW1zIGluY2x1ZGVzIHRoZSBsZWdhY3kga2V5d29yZCwg
YXV0byBjb21wdXRlcyB0byB0aGUgaW5oZXJpdGVkIHZhbHVlLiIKICAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLWFsaWduLyNqdXN0aWZ5LWl0ZW1zLXByb3BlcnR5Ci0gICAgaWYg
KGp1c3RpZnlJdGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoanVz
dGlmeUl0ZW1zKCkucG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1
cm4geyBub3JtYWxWYWx1ZUJlaGF2aW91ciwgT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0IH07Ci0K
ICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGp1c3RpZnlJdGVtcygpLCBub3JtYWxW
YWx1ZUJlaGF2aW91cik7CiB9CiAKQEAgLTIzMiw3ICsyNTEsNyBAQCBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlTZWxmKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbgogewogICAgIC8vIFRoZSBhdXRvIGtleXdvcmQgY29tcHV0ZXMgdG8gdGhlIHBhcmVu
dCdzIGp1c3RpZnktaXRlbXMgY29tcHV0ZWQgdmFsdWUuCiAgICAgLy8gV2Ugd2lsbCByZXR1cm4g
dGhlIGJlaGF2aW91ciBvZiAnbm9ybWFsJyB2YWx1ZSBpZiBuZWVkZWQsIHdoaWNoIGlzIHNwZWNp
ZmljIG9mIGVhY2ggbGF5b3V0IG1vZGVsLgotICAgIGlmIChqdXN0aWZ5U2VsZlBvc2l0aW9uKCkg
PT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoanVzdGlmeVNlbGYoKS5wb3NpdGlvbigpID09
IEl0ZW1Qb3NpdGlvbkF1dG8pCiAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS5yZXNvbHZlZEp1
c3RpZnlJdGVtcyhub3JtYWxWYWx1ZUJlaGF2aW91cik7CiAgICAgcmV0dXJuIHJlc29sdmVkU2Vs
ZkFsaWdubWVudChqdXN0aWZ5U2VsZigpLCBub3JtYWxWYWx1ZUJlaGF2aW91cik7CiB9CkBAIC0y
NjksNDMgKzI4OCw0MiBAQCBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBSZW5kZXJTdHlsZTo6cmVz
b2x2ZWRBbGlnbkNvbnRlbnREaXN0cmlidXRpb24oY29uc3QgU3R5bAogCiB2b2lkIFJlbmRlclN0
eWxlOjppbmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdFBhcmVudCkKIHsKLSAg
ICByYXJlSW5oZXJpdGVkRGF0YSA9IGluaGVyaXRQYXJlbnQucmFyZUluaGVyaXRlZERhdGE7Ci0g
ICAgaW5oZXJpdGVkID0gaW5oZXJpdFBhcmVudC5pbmhlcml0ZWQ7Ci0gICAgaW5oZXJpdGVkX2Zs
YWdzID0gaW5oZXJpdFBhcmVudC5pbmhlcml0ZWRfZmxhZ3M7CisgICAgbV9yYXJlSW5oZXJpdGVk
RGF0YSA9IGluaGVyaXRQYXJlbnQubV9yYXJlSW5oZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRl
ZERhdGEgPSBpbmhlcml0UGFyZW50Lm1faW5oZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzID0gaW5oZXJpdFBhcmVudC5tX2luaGVyaXRlZEZsYWdzOwogCiAgICAgaWYgKG1fc3ZnU3R5
bGUgIT0gaW5oZXJpdFBhcmVudC5tX3N2Z1N0eWxlKQotICAgICAgICBtX3N2Z1N0eWxlLmFjY2Vz
cygpLT5pbmhlcml0RnJvbShpbmhlcml0UGFyZW50Lm1fc3ZnU3R5bGUuZ2V0KCkpOworICAgICAg
ICBtX3N2Z1N0eWxlLmFjY2VzcygpLmluaGVyaXRGcm9tKGluaGVyaXRQYXJlbnQubV9zdmdTdHls
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlcikKK3ZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0
ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikKIHsKLSAgICBtX2JveCA9IG90aGVyLT5t
X2JveDsKLSAgICB2aXN1YWwgPSBvdGhlci0+dmlzdWFsOwotICAgIG1fYmFja2dyb3VuZCA9IG90
aGVyLT5tX2JhY2tncm91bmQ7Ci0gICAgc3Vycm91bmQgPSBvdGhlci0+c3Vycm91bmQ7Ci0gICAg
cmFyZU5vbkluaGVyaXRlZERhdGEgPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGE7Ci0gICAg
bm9uaW5oZXJpdGVkX2ZsYWdzLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLT5ub25pbmhlcml0
ZWRfZmxhZ3MpOworICAgIG1fYm94RGF0YSA9IG90aGVyLm1fYm94RGF0YTsKKyAgICBtX3Zpc3Vh
bERhdGEgPSBvdGhlci5tX3Zpc3VhbERhdGE7CisgICAgbV9iYWNrZ3JvdW5kRGF0YSA9IG90aGVy
Lm1fYmFja2dyb3VuZERhdGE7CisgICAgbV9zdXJyb3VuZERhdGEgPSBvdGhlci5tX3N1cnJvdW5k
RGF0YTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MpOwogCi0gICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXIt
Pm1fc3ZnU3R5bGUpCi0gICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCktPmNvcHlOb25Jbmhlcml0
ZWRGcm9tKG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpKTsKKyAgICBpZiAobV9zdmdTdHlsZSAhPSBv
dGhlci5tX3N2Z1N0eWxlKQorICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLmNvcHlOb25Jbmhl
cml0ZWRGcm9tKG90aGVyLm1fc3ZnU3R5bGUuZ2V0KCkpOwogCiAgICAgQVNTRVJUKHpvb20oKSA9
PSBpbml0aWFsWm9vbSgpKTsKIH0KIAotYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25z
dCBSZW5kZXJTdHlsZSYgbykgY29uc3QKK2Jvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29u
c3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewogICAgIC8vIGNvbXBhcmUgZXZlcnl0aGlu
ZyBleGNlcHQgdGhlIHBzZXVkb1N0eWxlIHBvaW50ZXIKLSAgICByZXR1cm4gaW5oZXJpdGVkX2Zs
YWdzID09IG8uaW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncyA9
PSBvLm5vbmluaGVyaXRlZF9mbGFncwotICAgICAgICAmJiBtX2JveCA9PSBvLm1fYm94Ci0gICAg
ICAgICYmIHZpc3VhbCA9PSBvLnZpc3VhbAotICAgICAgICAmJiBtX2JhY2tncm91bmQgPT0gby5t
X2JhY2tncm91bmQKLSAgICAgICAgJiYgc3Vycm91bmQgPT0gby5zdXJyb3VuZAotICAgICAgICAm
JiByYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvLnJhcmVOb25Jbmhlcml0ZWREYXRhCi0gICAgICAg
ICYmIHJhcmVJbmhlcml0ZWREYXRhID09IG8ucmFyZUluaGVyaXRlZERhdGEKLSAgICAgICAgJiYg
aW5oZXJpdGVkID09IG8uaW5oZXJpdGVkCi0gICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gby5tX3N2
Z1N0eWxlCi0gICAgICAgICAgICA7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncworICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzID09IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ib3hEYXRhID09IG90aGVyLm1f
Ym94RGF0YQorICAgICAgICAmJiBtX3Zpc3VhbERhdGEgPT0gb3RoZXIubV92aXN1YWxEYXRhCisg
ICAgICAgICYmIG1fYmFja2dyb3VuZERhdGEgPT0gb3RoZXIubV9iYWNrZ3JvdW5kRGF0YQorICAg
ICAgICAmJiBtX3N1cnJvdW5kRGF0YSA9PSBvdGhlci5tX3N1cnJvdW5kRGF0YQorICAgICAgICAm
JiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEK
KyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEK
KyAgICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCiBib29sIFJl
bmRlclN0eWxlOjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC0zMTMsOCArMzMxLDcg
QEAgYm9vbCBSZW5kZXJTdHlsZTo6aGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25zdAogICAgIGlm
ICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQ
c2V1ZG9TdHlsZXMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9T
dHlsZSA9IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hdChpKS5nZXQoKTsKKyAgICBmb3IgKGF1dG8m
IHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1
ZG9TdHlsZS0+dW5pcXVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MzAsMTAgKzM0Nyw5IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6Z2V0Q2FjaGVkUHNldWRv
U3R5bGUoUHNldWRvSWQgcGlkKSBjb25zdAogICAgIGlmIChzdHlsZVR5cGUoKSAhPSBOT1BTRVVE
TykgCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmVuZGVyU3R5
bGUqIHBzZXVkb1N0eWxlID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmF0KGkpLmdldCgpOworICAg
IGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKICAgICAg
ICAgaWYgKHBzZXVkb1N0eWxlLT5zdHlsZVR5cGUoKSA9PSBwaWQpCi0gICAgICAgICAgICByZXR1
cm4gcHNldWRvU3R5bGU7CisgICAgICAgICAgICByZXR1cm4gcHNldWRvU3R5bGUuZ2V0KCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNzEsMTAgKzM4NywxMCBAQCB2b2lkIFJl
bmRlclN0eWxlOjpyZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwaWQpCiAKIGJvb2wg
UmVuZGVyU3R5bGU6OmluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikg
Y29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MKLSAgICAgICAgICAgfHwgaW5oZXJpdGVkICE9IG90aGVyLT5pbmhlcml0ZWQKLSAgICAg
ICAgICAgfHwgbV9zdmdTdHlsZS0+aW5oZXJpdGVkTm90RXF1YWwob3RoZXItPm1fc3ZnU3R5bGUu
Z2V0KCkpCi0gICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhICE9IG90aGVyLT5yYXJlSW5o
ZXJpdGVkRGF0YTsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWRGbGFncyAhPSBvdGhlci0+bV9pbmhl
cml0ZWRGbGFncworICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEgIT0gb3RoZXItPm1faW5oZXJp
dGVkRGF0YQorICAgICAgICB8fCBtX3N2Z1N0eWxlLT5pbmhlcml0ZWROb3RFcXVhbChvdGhlci0+
bV9zdmdTdHlsZSkKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YSAhPSBvdGhlci0+bV9y
YXJlSW5oZXJpdGVkRGF0YTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0z
OTAsNDYgKzQwNiw0NiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVGb250SGFzaChj
b25zdCBGb250Q2FzY2FkZSYgZm9udCkKIHVuc2lnbmVkIFJlbmRlclN0eWxlOjpoYXNoRm9yVGV4
dEF1dG9zaXppbmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOb3QgYSB2ZXJ5IHNtYXJ0IGhh
c2guIENvdWxkIGJlIGltcHJvdmVkIHVwb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTEzMT4uCi0gICAgdW5zaWduZWQgaGFzaCA9IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FwcGVhcmFuY2U7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2U7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZTsKLSAgICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5saW5lQ2xhbXAudmFsdWUoKTsKLSAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVy
Zmxvd1dyYXA7Ci0gICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGU7Ci0gICAg
aGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrOwotICAgIGhhc2ggXj0gV1RGOjpG
bG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodC52YWx1
ZSgpKTsKLSAgICBoYXNoIF49IGNvbXB1dGVGb250SGFzaChpbmhlcml0ZWQtPmZvbnRDYXNjYWRl
KTsKLSAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPmhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcpOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8Zmxv
YXQ+OjpoYXNoKGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpOwotICAgIGhhc2gg
Xj0gaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uOwotICAgIGhhc2ggXj0gaW5oZXJpdGVk
X2ZsYWdzLm1fcnRsT3JkZXJpbmc7Ci0gICAgaGFzaCBePSBub25pbmhlcml0ZWRfZmxhZ3MucG9z
aXRpb24oKTsKLSAgICBoYXNoIF49IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpOwotICAg
IGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsKLSAgICBoYXNoIF49
IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHk7CisgICAgdW5zaWduZWQgaGFzaCA9IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGVhcmFuY2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZTsKKyAgICBoYXNoIF49IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7CisgICAgaGFzaCBePSBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAudmFsdWUoKTsKKyAgICBoYXNoIF49IG1fcmFyZUlu
aGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcDsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERh
dGEtPm5ic3BNb2RlOworICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFr
OworICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVkRGF0
YS0+c3BlY2lmaWVkTGluZUhlaWdodC52YWx1ZSgpKTsKKyAgICBoYXNoIF49IGNvbXB1dGVGb250
SGFzaChtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlKTsKKyAgICBoYXNoIF49IFdURjo6Rmxv
YXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVyaXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFj
aW5nKTsKKyAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVyaXRl
ZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2luZyk7CisgICAgaGFzaCBePSBtX2luaGVyaXRlZEZs
YWdzLmJveERpcmVjdGlvbjsKKyAgICBoYXNoIF49IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJp
bmc7CisgICAgaGFzaCBePSBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCk7CisgICAgaGFz
aCBePSBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCk7CisgICAgaGFzaCBePSBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3c7CisgICAgaGFzaCBePSBtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2VjdXJpdHk7CiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKIGJvb2wgUmVuZGVy
U3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBj
b25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlID09
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UKLSAgICAgICAgJiYgcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlID09IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQotICAgICAgICAmJiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bGluZUNsYW1wID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAg
ICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ID09IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0
YS0+b3ZlcmZsb3dXcmFwID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAK
LSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlID09IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT5uYnNwTW9kZQotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJy
ZWFrID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKLSAgICAgICAgJiYgcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNlY3VyaXR5Ci0gICAgICAgICYmIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCA9
PSBvdGhlci5pbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQKLSAgICAgICAgJiYgaW5oZXJp
dGVkLT5mb250Q2FzY2FkZS5lcXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLmluaGVyaXRlZC0+
Zm9udENhc2NhZGUpCi0gICAgICAgICYmIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyA9PSBvdGhlci5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcKLSAgICAg
ICAgJiYgaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci5pbmhlcml0
ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgICYmIGluaGVyaXRlZF9mbGFncy5f
Ym94X2RpcmVjdGlvbiA9PSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KLSAg
ICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLm1fcnRsT3JkZXJpbmcKLSAgICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0
aW9uKCkgPT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgJiYg
bm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkgPT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdz
LmZsb2F0aW5nKCkKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxv
dyA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OworICAgIHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlID09IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFwcGVhcmFuY2UKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFyZ2luQmVmb3JlQ29sbGFwc2UKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFyZ2luQWZ0ZXJDb2xsYXBzZSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJn
aW5BZnRlckNvbGxhcHNlCisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVD
bGFtcCA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKKyAgICAgICAg
JiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgPT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0
YS0+b3ZlcmZsb3dXcmFwID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3Jh
cAorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSA9PSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRh
LT5saW5lQnJlYWsgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAg
ICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSA9PSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT5z
cGVjaWZpZWRMaW5lSGVpZ2h0ID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGlu
ZUhlaWdodAorICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmVxdWFsRm9y
VGV4dEF1dG9TaXppbmcob3RoZXIubV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZSkKKyAgICAg
ICAgJiYgbV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZyA9PSBvdGhlci5t
X2luaGVyaXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nCisgICAgICAgICYmIG1faW5o
ZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nID09IG90aGVyLm1faW5oZXJpdGVkRGF0
YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nCisgICAgICAgICYmIG1faW5oZXJpdGVkRmxhZ3MuYm94
RGlyZWN0aW9uID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAgICAg
ICYmIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFn
cy5ydGxPcmRlcmluZworICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCkg
PT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpCisgICAgICAgICYmIG1fbm9u
SW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKSA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZs
b2F0aW5nKCkKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93
ID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC00MzcsMTAgKzQ1MywxMCBAQCBib29s
IFJlbmRlclN0eWxlOjplcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlcikgY29uc3QKIGJvb2wgUmVuZGVyU3R5bGU6OmluaGVyaXRlZERhdGFTaGFyZWQoY29uc3Qg
UmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMgYSBmYXN0IGNoZWNr
IHRoYXQgb25seSBsb29rcyBpZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBzaGFyZWQuCi0gICAg
cmV0dXJuIGluaGVyaXRlZF9mbGFncyA9PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAg
ICYmIGluaGVyaXRlZC5nZXQoKSA9PSBvdGhlci0+aW5oZXJpdGVkLmdldCgpCisgICAgcmV0dXJu
IG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXItPm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYg
bV9pbmhlcml0ZWREYXRhLmdldCgpID09IG90aGVyLT5tX2luaGVyaXRlZERhdGEuZ2V0KCkKICAg
ICAgICAgJiYgbV9zdmdTdHlsZS5nZXQoKSA9PSBvdGhlci0+bV9zdmdTdHlsZS5nZXQoKQotICAg
ICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSA9PSBvdGhlci0+cmFyZUluaGVyaXRlZERh
dGEuZ2V0KCk7CisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3RoZXIt
Pm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIHBvc2l0aW9uQ2hh
bmdlSXNNb3ZlbWVudE9ubHkoY29uc3QgTGVuZ3RoQm94JiBhLCBjb25zdCBMZW5ndGhCb3gmIGIs
IGNvbnN0IExlbmd0aCYgd2lkdGgpCkBAIC00NzIsMTcgKzQ4OCwxNyBAQCBzdGF0aWMgYm9vbCBw
b3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KGNvbnN0IExlbmd0aEJveCYgYSwgY29uc3QgTGVu
Z3RoQm94JiBiLAogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3Vh
bE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0
KCkKLSAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYm94U2hhZG93LCBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cp
KQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEuZ2V0KCkKKyAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94U2hhZG93LCBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ib3hTaGFkb3cpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJl
SW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKQotICAg
ICAgICAmJiAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNo
YWRvdywgb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cpKQorICAgIGlmIChtX3Jh
cmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkK
KyAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNoYWRvdywgb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdykpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0
aW9ucyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAg
fHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci52aXN1YWwtPnRleHREZWNvcmF0aW9u
Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSkgewor
ICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVy
aXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucworICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHRE
ZWNvcmF0aW9uICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKSB7CiAgICAgICAgIC8v
IFVuZGVybGluZXMgYXJlIGFsd2F5cyBkcmF3biBvdXRzaWRlIG9mIHRoZWlyIHRleHRib3ggYm91
bmRzIHdoZW4gdGV4dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVyOwogICAgICAgICAvLyBpcyBz
cGVjaWZpZWQuIFdlIGNhbiB0YWtlIGFuIGVhcmx5IG91dCBoZXJlLgogICAgICAgICBpZiAodGV4
dFVuZGVybGluZVBvc2l0aW9uKCkgPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIKQEAgLTQ5
OCwxNjggKzUxNCwxNjggQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVjdHNW
aXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGMKIAogYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNp
Z25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGlm
IChtX2JveC0+d2lkdGgoKSAhPSBvdGhlci5tX2JveC0+d2lkdGgoKQotICAgICAgICB8fCBtX2Jv
eC0+bWluV2lkdGgoKSAhPSBvdGhlci5tX2JveC0+bWluV2lkdGgoKQotICAgICAgICB8fCBtX2Jv
eC0+bWF4V2lkdGgoKSAhPSBvdGhlci5tX2JveC0+bWF4V2lkdGgoKQotICAgICAgICB8fCBtX2Jv
eC0+aGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gtPmhlaWdodCgpCi0gICAgICAgIHx8IG1fYm94LT5t
aW5IZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+bWluSGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gt
Pm1heEhlaWdodCgpICE9IG90aGVyLm1fYm94LT5tYXhIZWlnaHQoKSkKKyAgICBpZiAobV9ib3hE
YXRhLT53aWR0aCgpICE9IG90aGVyLm1fYm94RGF0YS0+d2lkdGgoKQorICAgICAgICB8fCBtX2Jv
eERhdGEtPm1pbldpZHRoKCkgIT0gb3RoZXIubV9ib3hEYXRhLT5taW5XaWR0aCgpCisgICAgICAg
IHx8IG1fYm94RGF0YS0+bWF4V2lkdGgoKSAhPSBvdGhlci5tX2JveERhdGEtPm1heFdpZHRoKCkK
KyAgICAgICAgfHwgbV9ib3hEYXRhLT5oZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPmhlaWdo
dCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+bWluSGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRh
LT5taW5IZWlnaHQoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1heEhlaWdodCgpICE9IG90aGVy
Lm1fYm94RGF0YS0+bWF4SGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KG1fYm94LT52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIubV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8
fCBub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigpICE9IG90aGVyLm5vbmluaGVyaXRl
ZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkpCisgICAgaWYgKG1fYm94RGF0YS0+dmVydGljYWxBbGln
bigpICE9IG90aGVyLm1fYm94RGF0YS0+dmVydGljYWxBbGlnbigpIHx8IG1fbm9uSW5oZXJpdGVk
RmxhZ3MudmVydGljYWxBbGlnbigpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGlj
YWxBbGlnbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2JveC0+Ym94U2l6
aW5nKCkgIT0gb3RoZXIubV9ib3gtPmJveFNpemluZygpKQorICAgIGlmIChtX2JveERhdGEtPmJv
eFNpemluZygpICE9IG90aGVyLm1fYm94RGF0YS0+Ym94U2l6aW5nKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5tYXJnaW4gIT0gb3RoZXIuc3Vycm91bmQtPm1h
cmdpbikKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPm1hcmdpbiAhPSBvdGhlci5tX3N1cnJvdW5k
RGF0YS0+bWFyZ2luKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJyb3VuZC0+
cGFkZGluZyAhPSBvdGhlci5zdXJyb3VuZC0+cGFkZGluZykKKyAgICBpZiAobV9zdXJyb3VuZERh
dGEtPnBhZGRpbmcgIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPnBhZGRpbmcpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgYW4gb3B0aW1pemVkIGZv
cm0gb2YgbGF5b3V0IHRoYXQganVzdCByZWNvbXB1dGVzIHZpc3VhbCBvdmVyZmxvdy4KICAgICBp
ZiAoY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FwcGVhcmFuY2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5j
ZQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxh
cHNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQot
ICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2Ug
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKLSAgICAg
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1faW5pdGlhbExldHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9p
bml0aWFsTGV0dGVyCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92
ZXJmbG93ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCisgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5nZXQoKSkgeworICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBw
ZWFyYW5jZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlCisgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQorICAg
ICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCisgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5pbml0aWFsTGV0dGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmluaXRpYWxMZXR0ZXIKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHRPdmVyZmxvdyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZs
b3cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fcmVnaW9uRnJhZ21lbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcmVnaW9uRnJhZ21lbnQpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5y
ZWdpb25GcmFnbWVudCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFn
bWVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9zaGFwZU1hcmdpbikKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBl
TWFyZ2luICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kZXByZWNhdGVkRmxleGlibGVCb3gpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3ggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94ICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94KQorICAgICAgICBpZiAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3ggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZmxleGlibGVCb3gpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fb3JkZXIKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWdu
Q29udGVudCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcwotICAgICAgICAgICAgfHwgcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduU2VsZgotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeUNvbnRlbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRl
bnQKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtcyAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMKLSAgICAgICAgICAg
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmICE9IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3JkZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXIKKyAg
ICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduQ29udGVudCAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkNvbnRlbnQKKyAgICAgICAgICAgIHx8IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YWxpZ25JdGVtcworICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YWxpZ25TZWxmICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZgor
ICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQKKyAgICAgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVtcyAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5SXRlbXMKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmp1c3RpZnlTZWxmICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pmp1c3RpZnlTZWxmKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKCFh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3Qs
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QpKQorICAgICAgICBpZiAo
IWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVj
dCwgb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVs
dGlDb2wgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wpCisgICAgICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbCAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tdWx0aUNvbCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0gIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtKSB7Ci0gICAgICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpKQorICAgICAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRyYW5zZm9ybSkgeworICAgICAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmICgqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNm
b3JtICE9ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0pIHsKKyAgICAg
ICAgICAgIGlmICgqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtICE9ICpvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsKICAgICAgICAgICAgICAgICBjaGFu
Z2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5
VHJhbnNmb3JtOwogICAgICAgICAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5n
IGZvciBhbm90aGVyIGNoYW5nZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkCi0gICAgICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbSAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkSXRlbSkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmdyaWQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZAorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0gIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Z3JpZEl0ZW0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAvLyBJZiByZWdpb25zIGNo
YW5nZSwgdHJpZ2dlciBhIHJlbGF5b3V0IHRvIHJlLWNhbGMgcmVnaW9ucy4KLSAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rhc2hib2FyZFJlZ2lvbnMgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9ucykKKyAgICAgICAgaWYgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmRhc2hib2FyZFJlZ2lvbnMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+ZGFzaGJvYXJkUmVnaW9ucykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAKLSAgICAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3dpbGxDaGFuZ2UsIG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxD
aGFuZ2UpKSB7CisgICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53
aWxsQ2hhbmdlKSkgewogICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eVdpbGxDaGFuZ2U7CiAgICAgICAgICAgICAv
LyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmlu
ZGVudCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CisgICAgaWYgKG1fcmFyZUlu
aGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSkgewor
ICAgICAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPmluZGVudAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0QWxpZ25MYXN0ICE9IG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT5tX3RleHRBbGlnbkxhc3QKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5tX3RleHRKdXN0aWZ5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZQorICAgICAgICAgICAgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0QWxpZ25MYXN0CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0SnVzdGlmeSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeQor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUKICNlbmRpZgotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVab29tCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0Wm9vbSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbQor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlWm9vbSAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tCisgICAgICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9vbSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50
ZXh0Wm9vbQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaXplQWRqdXN0CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
U2l6ZUFkanVzdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAog
I2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm92ZXJm
bG93V3JhcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQotICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPmxpbmVCcmVhayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFr
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT5oeXBoZW5zICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zCi0g
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZQotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlciAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCi0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+bV9ydWJ5UG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBv
c2l0aW9uCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFy
ayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyawotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbgotICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsgIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
bV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3Rh
YlNpemUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZQotICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW4gIT0gb3RoZXIucmFyZUluaGVy
aXRlZERhdGEtPm1fbGluZUJveENvbnRhaW4KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2xpbmVHcmlkICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkCisg
ICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZs
b3dXcmFwCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSAhPSBv
dGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxp
bmVCcmVhaworICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5
ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQorICAgICAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5zCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5h
dGlvbkxpbWl0QmVmb3JlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9u
TGltaXRCZWZvcmUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0
aW9uTGltaXRBZnRlciAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9u
U3RyaW5nICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisg
ICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9zaXRpb24gIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc01hcmsKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRFbXBoYXNpc1Bvc2l0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc1Bvc2l0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
RW1waGFzaXNDdXN0b21NYXJrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc0N1c3RvbU1hcmsKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRP
cmllbnRhdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24K
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemUgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+bGluZUJveENvbnRhaW4gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJv
eENvbnRhaW4KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFH
RV9PUklFTlRBVElPTikKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdl
T3JpZW50YXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlv
bgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbiAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPm1faW1hZ2VSZXNvbHV0aW9uU291cmNlCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+bV9pbWFnZVJlc29sdXRpb25TbmFwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5t
X2ltYWdlUmVzb2x1dGlvblNuYXAKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5t
X2ltYWdlUmVzb2x1dGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29s
dXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlv
blNvdXJjZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25Tb3Vy
Y2UKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNu
YXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcAorICAg
ICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uICE9IG90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvbgogI2VuZGlmCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV9saW5lU25hcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGlu
ZUFsaWduICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbgotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbgorICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+bGluZVNuYXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
bGluZVNuYXAKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVBbGlnbiAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24KKyAgICAgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRpb24KICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZVRv
dWNoT3ZlcmZsb3dTY3JvbGxpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmcKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZwogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmxpc3RT
dHlsZUltYWdlKSAvLyBGSVhNRTogbmVlZHMgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSgpPworICAg
ICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UpIC8vIEZJWE1FOiBuZWVkcyBhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKCk/CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICBpZiAodGV4dFN0cm9rZVdpZHRoKCkgIT0gb3RoZXIudGV4dFN0cm9rZVdpZHRoKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hl
aWdodCAhPSBvdGhlci5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0CisgICAgaWYgKG1faW5oZXJpdGVk
RGF0YS0+bGluZUhlaWdodCAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQKICNp
ZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICAgICB8fCBpbmhlcml0ZWQtPnNwZWNpZmll
ZExpbmVIZWlnaHQgIT0gb3RoZXIuaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAg
ICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5tX2lu
aGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQKICNlbmRpZgotICAgICAgICB8fCBpbmhl
cml0ZWQtPmZvbnRDYXNjYWRlICE9IG90aGVyLmluaGVyaXRlZC0+Zm9udENhc2NhZGUKLSAgICAg
ICAgfHwgaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLmluaGVy
aXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8fCBpbmhlcml0ZWQtPnZl
cnRpY2FsX2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVy
X3NwYWNpbmcKLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uICE9IG90
aGVyLmluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbgotICAgICAgICB8fCBpbmhlcml0ZWRf
ZmxhZ3MubV9ydGxPcmRlcmluZyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmlu
ZwotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKSAhPSBvdGhlci5ub25p
bmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mu
ZmxvYXRpbmcoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQotICAgICAg
ICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkgIT0gb3RoZXIubm9uaW5o
ZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQorICAgICAgICB8fCBtX2luaGVyaXRlZERh
dGEtPmZvbnRDYXNjYWRlICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUKKyAg
ICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZyAhPSBvdGhl
ci5tX2luaGVyaXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nCisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nICE9IG90aGVyLm1faW5oZXJpdGVk
RGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Mu
Ym94RGlyZWN0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAg
ICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRG
bGFncy5ydGxPcmRlcmluZworICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9u
KCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpCisgICAgICAgIHx8IG1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
LmZsb2F0aW5nKCkKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3Bs
YXkoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogCi0gICAgaWYgKChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0
aXZlRGlzcGxheSgpKSA+PSBUQUJMRSkgewotICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9i
b3JkZXJfY29sbGFwc2UgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UK
LSAgICAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgIT0gb3RoZXIuaW5o
ZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscwotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdz
Ll9jYXB0aW9uX3NpZGUgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUKLSAg
ICAgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91dCgpICE9IG90aGVyLm5v
bmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91dCgpKQorICAgIGlmICgobV9ub25Jbmhlcml0ZWRG
bGFncy5lZmZlY3RpdmVEaXNwbGF5KCkpID49IFRBQkxFKSB7CisgICAgICAgIGlmIChtX2luaGVy
aXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm9yZGVy
Q29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyAhPSBv
dGhlci5tX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMKKyAgICAgICAgICAgIHx8IG1faW5oZXJp
dGVkRmxhZ3MuY2FwdGlvblNpZGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lk
ZQorICAgICAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy50YWJsZUxheW91dCgpICE9IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgIC8vIEluIHRoZSBjb2xsYXBzaW5nIGJvcmRlciBtb2RlbCwgJ2hp
ZGRlbicgc3VwcHJlc3NlcyBvdGhlciBib3JkZXJzLCB3aGlsZSAnbm9uZScKICAgICAgICAgLy8g
ZG9lcyBub3QsIHNvIHRoZXNlIHN0eWxlIGRpZmZlcmVuY2VzIGNhbiBiZSB3aWR0aCBkaWZmZXJl
bmNlcy4KLSAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlCisgICAg
ICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlCiAgICAgICAgICAgICAmJiAo
KGJvcmRlclRvcFN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09
IEJOT05FKQogICAgICAgICAgICAgICAgIHx8IChib3JkZXJUb3BTdHlsZSgpID09IEJOT05FICYm
IG90aGVyLmJvcmRlclRvcFN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAgICAgICB8fCAo
Ym9yZGVyQm90dG9tU3R5bGUoKSA9PSBCSElEREVOICYmIG90aGVyLmJvcmRlckJvdHRvbVN0eWxl
KCkgPT0gQk5PTkUpCkBAIC02NzEsMzcgKzY4NywzNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFu
Z2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFu
ZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKG5vbmluaGVyaXRl
ZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkgPT0gTElTVF9JVEVNKSB7Ci0gICAgICAgIGlmIChp
bmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfdHlwZQotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0
eWxlX3Bvc2l0aW9uICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlv
bikKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkgPT0gTElT
VF9JVEVNKSB7CisgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlCisgICAgICAgICAgICB8fCBtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlUG9zaXRpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduICE9IG90aGVyLmluaGVyaXRlZF9mbGFn
cy5fdGV4dF9hbGlnbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3Jt
ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0KLSAgICAgICAgfHwgaW5o
ZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rp
b24KLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSAhPSBvdGhlci5pbmhl
cml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5j
bGVhcigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpCi0gICAgICAgIHx8IG5v
bmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFn
cy51bmljb2RlQmlkaSgpKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiAhPSBv
dGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbgorICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzLnRleHRUcmFuc2Zvcm0gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3Jt
CisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuZGlyZWN0aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFj
ZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UKKyAgICAgICAgfHwgbV9ub25J
bmhlcml0ZWRGbGFncy5jbGVhcigpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIo
KQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCkgIT0gb3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncy51bmljb2RlQmlkaSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIENoZWNrIGJsb2NrIGZsb3cgZGlyZWN0aW9uLgotICAgIGlmIChpbmhlcml0ZWRf
ZmxhZ3MubV93cml0aW5nTW9kZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9k
ZSkKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSAhPSBvdGhlci5tX2luaGVy
aXRlZEZsYWdzLndyaXRpbmdNb2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENo
ZWNrIHRleHQgY29tYmluZSBtb2RlLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0Q29tYmluZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSkK
KyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dENvbWJpbmUgIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dENvbWJpbmUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gQ2hlY2sgYnJlYWtzLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9i
cmVha0JlZm9yZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0JlZm9yZQot
ICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQWZ0ZXIKLSAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fYnJlYWtJbnNpZGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YnJlYWtJbnNpZGUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3Jl
ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlCisgICAgICAgIHx8
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQWZ0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YnJlYWtBZnRlcgorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5icmVha0luc2lkZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0luc2lk
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBPdmVyZmxvdyByZXR1cm5zIGEgbGF5
b3V0IGhpbnQuCi0gICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1goKSAhPSBvdGhl
ci5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVk
X2ZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1ko
KSkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5tX25v
bkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WCgpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3ZlcmZsb3dZKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiBvdXIgYm9yZGVyIHdpZHRocyBjaGFu
Z2UsIHRoZW4gd2UgbmVlZCB0byBsYXlvdXQuICBPdGhlciBjaGFuZ2VzIHRvIGJvcmRlcnMKQEAg
LTcxMywxMyArNzI5LDEzIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0
KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gSWYgdGhlIGNvdW50ZXIgZGlyZWN0aXZlcyBjaGFuZ2UsIHRyaWdn
ZXIgYSByZWxheW91dCB0byByZS1jYWxjdWxhdGUgY291bnRlciB2YWx1ZXMgYW5kIHJlYnVpbGQg
dGhlIGNvdW50ZXIgbm9kZSB0cmVlLgotICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcywgb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2ZXMpKQorICAgIGlmICghYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZlcywgb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmICgodmlzaWJpbGl0eSgpID09IENPTExBUFNFKSAhPSAob3Ro
ZXIudmlzaWJpbGl0eSgpID09IENPTExBUFNFKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNP
cGFjaXR5KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBs
aWZpZWRMYXlvdXQgaGVyZSwgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAg
ICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNv
cnJlY3RseSBvbiBSZW5kZXJJbmxpbmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgLy8gdG8gYWRk
IGEgc2VsZk5lZWRzU2ltcGxpZmllZExheW91dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25m
dXNlZCBhbmQgdGFpbnQgZXZlcnkgbGluZSkuCkBAIC03MjgsMTkgKzc0NCwxOSBAQCBib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIs
IHVuc2lnbmVkJiBjaGFuZwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+aGFzRmlsdGVycygpKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5o
YXNGaWx0ZXJzKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0g
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNCYWNrZHJvcEZpbHRlcnMoKSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ryb3BGaWx0ZXJzKCkpCisgICAgaWYgKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0JhY2tkcm9wRmlsdGVycygpICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmhhc0JhY2tkcm9wRmlsdGVycygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgogCi0gICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVJbmhl
cml0ZWREYXRhLT5xdW90ZXMsIG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMpKQorICAg
IGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMs
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKHBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYg
KHN1cnJvdW5kLT5vZmZzZXQgIT0gb3RoZXIuc3Vycm91bmQtPm9mZnNldCkgeworICAgICAgICBp
ZiAobV9zdXJyb3VuZERhdGEtPm9mZnNldCAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byB1c2UgU2ltcGxpZmll
ZExheW91dCBmb3IgcmVsYXRpdmUgcG9zaXRpb25pbmcsIGJ1dCB3ZSBjYW4ndCBxdWl0ZSBkbyB0
aGF0IHlldC4KICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNpbXBsaWZpZWRM
YXlvdXQgY2FuIG9wZXJhdGUgY29ycmVjdGx5IG9uIFJlbmRlcklubGluZXMgKHdlIHdpbGwgbmVl
ZAogICAgICAgICAgICAgLy8gdG8gYWRkIGEgc2VsZk5lZWRzU2ltcGxpZmllZExheW91dCBiaXQg
aW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNlZCBhbmQgdGFpbnQgZXZlcnkgbGluZSkuCkBAIC03
NDgsNyArNzY0LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29u
c3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJl
IGEgcG9zaXRpb25lZCBsYXllciBpcyBtb3ZpbmcgYnV0IG5vdCBjaGFuZ2luZyBzaXplLgotICAg
ICAgICAgICAgaWYgKCFwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZz
ZXQsIG90aGVyLnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgICAg
IGlmICghcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0
LCBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBtX2JveERhdGEtPndpZHRoKCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzc2LDkgKzc5
Miw5IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9u
bHkoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1CiAgICAgaWYgKHBvc2l0aW9uKCkgPT0gU3Rh
dGljUG9zaXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdXJyb3VuZC0+
b2Zmc2V0ICE9IG90aGVyLnN1cnJvdW5kLT5vZmZzZXQpIHsKKyAgICBpZiAobV9zdXJyb3VuZERh
dGEtPm9mZnNldCAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0KSB7CiAgICAgICAgIC8v
IE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5n
IGJ1dCBub3QgY2hhbmdpbmcgc2l6ZS4KLSAgICAgICAgaWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1
dGVQb3NpdGlvbiAmJiBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZz
ZXQsIG90aGVyLnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgaWYg
KHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBwb3NpdGlvbkNoYW5nZUlzTW92ZW1l
bnRPbmx5KG1fc3Vycm91bmREYXRhLT5vZmZzZXQsIG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZz
ZXQsIG1fYm94RGF0YS0+d2lkdGgoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCkBAIC03ODgsNDAgKzgwNCw0MCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdQogYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBj
b25zdAogewogICAgIC8vIFN0eWxlUmVzb2x2ZXIgaGFzIGVuc3VyZWQgdGhhdCB6SW5kZXggaXMg
bm9uLWF1dG8gb25seSBpZiBpdCdzIGFwcGxpY2FibGUuCi0gICAgaWYgKG1fYm94LT56SW5kZXgo
KSAhPSBvdGhlci5tX2JveC0+ekluZGV4KCkgfHwgbV9ib3gtPmhhc0F1dG9aSW5kZXgoKSAhPSBv
dGhlci5tX2JveC0+aGFzQXV0b1pJbmRleCgpKQorICAgIGlmIChtX2JveERhdGEtPnpJbmRleCgp
ICE9IG90aGVyLm1fYm94RGF0YS0+ekluZGV4KCkgfHwgbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4
KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgaWYgKHBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAg
aWYgKHZpc3VhbC0+Y2xpcCAhPSBvdGhlci52aXN1YWwtPmNsaXAgfHwgdmlzdWFsLT5oYXNDbGlw
ICE9IG90aGVyLnZpc3VhbC0+aGFzQ2xpcCkgeworICAgICAgICBpZiAobV92aXN1YWxEYXRhLT5j
bGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+Y2xpcCB8fCBtX3Zpc3VhbERhdGEtPmhhc0NsaXAg
IT0gb3RoZXIubV92aXN1YWxEYXRhLT5oYXNDbGlwKSB7CiAgICAgICAgICAgICBjaGFuZ2VkQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xpcFJl
Y3Q7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAogI2lmIEVO
QUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Vm
ZmVjdGl2ZUJsZW5kTW9kZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3Rp
dmVCbGVuZE1vZGUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJs
ZW5kTW9kZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1v
ZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fb3BhY2l0eSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFj
aXR5KSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSkgewogICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5T3BhY2l0eTsK
ICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdl
LgogICAgIH0KIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIgIT0gb3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyKSB7CisgICAgaWYgKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0
ZXIpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVw
IGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJT
X0xFVkVMXzIpCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVy
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyKSB7CisgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyKSB7CiAgICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXI7
CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5n
ZS4KICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNr
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sKLSAgICAgICAgfHwgcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX21hc2tCb3hJbWFnZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFz
ayAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrCisgICAgICAgIHx8IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXNrQm94SW1hZ2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODI5LDI2ICs4NDUsMjYgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYKIAog
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3QKIHsKLSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fdmlzaWJpbGl0eQotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9wcmlu
dENvbG9yQWRqdXN0ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QK
LSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVyLmluaGVyaXRl
ZF9mbGFncy5faW5zaWRlTGluawotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURl
ZmF1bHRCdXR0b24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9u
Ci0gICAgICAgIHx8IHN1cnJvdW5kLT5ib3JkZXIgIT0gb3RoZXIuc3Vycm91bmQtPmJvcmRlcgot
ICAgICAgICB8fCAhbV9iYWNrZ3JvdW5kLT5pc0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIu
bV9iYWNrZ3JvdW5kKQotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQotICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNl
bGVjdAotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3Jk
ZXJGaXQKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdAotICAgICAgICB8fCByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9vYmplY3RQb3NpdGlvbgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9p
bWFnZVJlbmRlcmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmlu
ZykKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MudmlzaWJpbGl0eQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29s
b3JBZGp1c3QgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0CisgICAg
ICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayAhPSBvdGhlci5tX2luaGVyaXRlZEZs
YWdzLmluc2lkZUxpbmsKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0
QnV0dG9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbgorICAg
ICAgICB8fCBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5i
b3JkZXIKKyAgICAgICAgfHwgIW1fYmFja2dyb3VuZERhdGEtPmlzRXF1aXZhbGVudEZvclBhaW50
aW5nKCpvdGhlci5tX2JhY2tncm91bmREYXRhKQorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT51c2VyTW9kaWZ5ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkK
KyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnVzZXJEcmFnICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFn
CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZpdCAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b2JqZWN0Rml0ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9i
amVjdEZpdAorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlv
biAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlvbgorICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlICE9IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0c2lkZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2hhcGVPdXRzaWRlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNo
YXBlT3V0c2lkZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogdGhpcyBz
aG91bGQgcHJvYmFibHkgYmUgbW92ZWQgdG8gY2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoKS4K
LSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGggIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGgpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Y2xpcFBhdGggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGgp
IHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0eUNsaXBQYXRoOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAg
bG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQpAQCAtODU4LDE2ICs4NzQsMTYgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlciwgdW5zaWduZWQmIGNoYW4KIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
LCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXIu
aW5oZXJpdGVkLT5jb2xvcgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3Jh
dGlvbnMgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zCi0gICAgICAg
IHx8IHZpc3VhbC0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIudmlzdWFsLT50ZXh0RGVjb3JhdGlv
bgotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxl
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUKLSAg
ICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Db2xvciAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU2tpcCAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXAKLSAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPnRleHRGaWxsQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRG
aWxsQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvciAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCi0gICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvciAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc0ZpbGwgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0Zp
bGwpCisgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+Y29sb3IgIT0gb3RoZXIubV9pbmhlcml0ZWRE
YXRhLT5jb2xvcgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAh
PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucworICAgICAgICB8fCBtX3Zp
c3VhbERhdGEtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29y
YXRpb24KKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25T
dHlsZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxl
CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3Ig
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvcgorICAg
ICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXAgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwCisgICAgICAgIHx8IG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEZpbGxDb2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ry
b2tlQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCisg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yICE9IG90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIHx8IG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzRmlsbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gZmFsc2U7CkBAIC04NzUsMTIgKzg5MSwxMiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VS
ZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZShjb25zdCBSZW5kZXJTdHlsZQog
CiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7
Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEICE9
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAg
ICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZmFjZVZpc2liaWxpdHkKLSAgICAgICAgICAg
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlICE9IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdl
dCgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICAgICAgfHwgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+cGVyc3BlY3RpdmUKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBl
cnNwZWN0aXZlT3JpZ2luWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVj
dGl2ZU9yaWdpblgKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNw
ZWN0aXZlT3JpZ2luWSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2
ZU9yaWdpblkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTk0NCwxNjgg
Kzk2MCwxNTAgQEAgYm9vbCBSZW5kZXJTdHlsZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBpc0NvbXAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBM
ZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVu
Z3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0
KQogewotICAgIFN0eWxlVmlzdWFsRGF0YSogZGF0YSA9IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBk
YXRhLT5jbGlwLnRvcCgpID0gdG9wOwotICAgIGRhdGEtPmNsaXAucmlnaHQoKSA9IHJpZ2h0Owot
ICAgIGRhdGEtPmNsaXAuYm90dG9tKCkgPSBib3R0b207Ci0gICAgZGF0YS0+Y2xpcC5sZWZ0KCkg
PSBsZWZ0OworICAgIGF1dG8mIGRhdGEgPSBtX3Zpc3VhbERhdGEuYWNjZXNzKCk7CisgICAgZGF0
YS5jbGlwLnRvcCgpID0gV1RGTW92ZSh0b3ApOworICAgIGRhdGEuY2xpcC5yaWdodCgpID0gV1RG
TW92ZShyaWdodCk7CisgICAgZGF0YS5jbGlwLmJvdHRvbSgpID0gV1RGTW92ZShib3R0b20pOwor
ICAgIGRhdGEuY2xpcC5sZWZ0KCkgPSBXVEZNb3ZlKGxlZnQpOwogfQogCiB2b2lkIFJlbmRlclN0
eWxlOjphZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBob3RTcG90KQogewotICAgIGlmICghcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNv
ckRhdGEpCi0gICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0g
Q3Vyc29yTGlzdDo6Y3JlYXRlKCk7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1
cnNvckRhdGEtPmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7Cisg
ICAgYXV0byYgY3Vyc29yRGF0YSA9IG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29y
RGF0YTsKKyAgICBpZiAoIWN1cnNvckRhdGEpCisgICAgICAgIGN1cnNvckRhdGEgPSBDdXJzb3JM
aXN0OjpjcmVhdGUoKTsKKyAgICBjdXJzb3JEYXRhLT5hcHBlbmQoQ3Vyc29yRGF0YShXVEZNb3Zl
KGltYWdlKSwgaG90U3BvdCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0
KFJlZlB0cjxDdXJzb3JMaXN0PiYmIGxpc3QpCiB7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPmN1cnNvckRhdGEgPSBXVEZNb3ZlKGxpc3QpOworICAgIG1fcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCkuY3Vyc29yRGF0YSA9IFdURk1vdmUobGlzdCk7CiB9CiAKIHZvaWQgUmVuZGVy
U3R5bGU6OnNldFF1b3RlcyhSZWZQdHI8UXVvdGVzRGF0YT4mJiBxKQogewotICAgIGlmIChyYXJl
SW5oZXJpdGVkRGF0YS0+cXVvdGVzID09IHEgfHwgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMg
JiYgcSAmJiAqcmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyA9PSAqcSkpCisgICAgaWYgKG1fcmFy
ZUluaGVyaXRlZERhdGEtPnF1b3RlcyA9PSBxIHx8IChtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90
ZXMgJiYgcSAmJiAqbV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09ICpxKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPnF1b3RlcyA9IFdURk1v
dmUocSk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5xdW90ZXMgPSBXVEZNb3Zl
KHEpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRXaWxsQ2hhbmdlKFJlZlB0cjxXaWxsQ2hh
bmdlRGF0YT4mJiB3aWxsQ2hhbmdlRGF0YSkKIHsKLSAgICBpZiAoYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLmdldCgpLCB3aWxsQ2hhbmdl
RGF0YS5nZXQoKSkpCisgICAgaWYgKGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+d2lsbENoYW5nZS5nZXQoKSwgd2lsbENoYW5nZURhdGEuZ2V0KCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV93aWxs
Q2hhbmdlID0gV1RGTW92ZSh3aWxsQ2hhbmdlRGF0YSk7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS53aWxsQ2hhbmdlID0gV1RGTW92ZSh3aWxsQ2hhbmdlRGF0YSk7CiB9CiAK
IHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCgpCiB7Ci0gICAgaWYgKHJhcmVJbmhl
cml0ZWREYXRhLT5jdXJzb3JEYXRhKQotICAgICAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+Y3Vyc29yRGF0YSA9IG51bGxwdHI7CisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPmN1
cnNvckRhdGEpCisgICAgICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0
YSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ29udGVudCgpCiB7Ci0g
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQgPSBudWxscHRyOworICAgIGlmIChtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50KQorICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLmNvbnRlbnQgPSBudWxscHRyOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjph
cHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudERhdGEpCitz
dGF0aWMgaW5saW5lIENvbnRlbnREYXRhJiBsYXN0Q29udGVudChDb250ZW50RGF0YSYgZmlyc3RD
b250ZW50KQogewotICAgIGF1dG8mIGNvbnRlbnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9jb250ZW50OwotICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVudCA9IGNvbnRlbnQu
Z2V0KCk7Ci0gICAgd2hpbGUgKGxhc3RDb250ZW50ICYmIGxhc3RDb250ZW50LT5uZXh0KCkpCi0g
ICAgICAgIGxhc3RDb250ZW50ID0gbGFzdENvbnRlbnQtPm5leHQoKTsKKyAgICBhdXRvKiBsYXN0
Q29udGVudCA9ICZmaXJzdENvbnRlbnQ7CisgICAgZm9yIChhdXRvKiBjb250ZW50ID0gJmZpcnN0
Q29udGVudDsgY29udGVudDsgY29udGVudCA9IGNvbnRlbnQtPm5leHQoKSkKKyAgICAgICAgbGFz
dENvbnRlbnQgPSBjb250ZW50OworICAgIHJldHVybiAqbGFzdENvbnRlbnQ7Cit9CiAKLSAgICBp
ZiAobGFzdENvbnRlbnQpCi0gICAgICAgIGxhc3RDb250ZW50LT5zZXROZXh0KFdURk1vdmUoY29u
dGVudERhdGEpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRlbnQgPSBXVEZNb3ZlKGNvbnRlbnRE
YXRhKTsKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjb250ZW50RGF0YSwgYm9vbCBhZGQpCit7CisgICAgYXV0byYgZGF0YSA9IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQp
CisgICAgICAgIGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpLnNldE5leHQoV1RGTW92ZShjb250
ZW50RGF0YSkpOworICAgIGVsc2UgeworICAgICAgICBkYXRhLmNvbnRlbnQgPSBXVEZNb3ZlKGNv
bnRlbnREYXRhKTsKKyAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKKyAgICAg
ICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQorICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRB
bHRUZXh0KGFsdFRleHQpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVu
dChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIGFw
cGVuZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNv
bnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBpZiAoIXJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkpCi0gICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dCk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOwog
fQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGFkZCkKIHsKLSAgICBhdXRvJiBjb250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fY29udGVudDsKLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIENvbnRlbnREYXRhKiBs
YXN0Q29udGVudCA9IGNvbnRlbnQuZ2V0KCk7Ci0gICAgICAgIHdoaWxlIChsYXN0Q29udGVudCAm
JiBsYXN0Q29udGVudC0+bmV4dCgpKQotICAgICAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29u
dGVudC0+bmV4dCgpOwotCi0gICAgICAgIGlmIChsYXN0Q29udGVudCkgewotICAgICAgICAgICAg
Ly8gV2UgYXR0ZW1wdCB0byBtZXJnZSB3aXRoIHRoZSBsYXN0IENvbnRlbnREYXRhIGlmIHBvc3Np
YmxlLgotICAgICAgICAgICAgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmxhc3RDb250ZW50KSkg
ewotICAgICAgICAgICAgICAgIFRleHRDb250ZW50RGF0YSYgdGV4dENvbnRlbnQgPSBkb3duY2Fz
dDxUZXh0Q29udGVudERhdGE+KCpsYXN0Q29udGVudCk7Ci0gICAgICAgICAgICAgICAgdGV4dENv
bnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgbGFzdENvbnRlbnQtPnNldE5leHQoc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwotCi0gICAgICAgICAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgbGFzdENvbnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fYWx0VGV4dCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgYXV0byYgZGF0YSA9IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRl
bnQpIHsKKyAgICAgICAgYXV0byYgbGFzdCA9IGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpOwor
ICAgICAgICBpZiAoIWlzPFRleHRDb250ZW50RGF0YT4obGFzdCkpCisgICAgICAgICAgICBsYXN0
LnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPihsYXN0KTsKKyAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4
dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJp
bmcpOworICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OworICAgICAgICBpZiAo
IWFsdFRleHQuaXNOdWxsKCkpCisgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQo
YWx0VGV4dCk7CiAgICAgfQotCi0gICAgY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
bnRlbnREYXRhPihzdHJpbmcpOwotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fYWx0VGV4dC5pc051bGwoKSkKLSAgICAgICAgY29udGVudC0+c2V0QWx0VGV4dChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0KTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIs
IGJvb2wgYWRkKQogewogICAgIGlmICghY291bnRlcikKICAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpOworICAgIHNl
dENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291
bnRlcikpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlw
ZSBxdW90ZSwgYm9vbCBhZGQpCiB7Ci0gICAgaWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250
ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Nv
bnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKTsKKyAgICBz
ZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQp
OwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dChjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0
ID0gc3RyaW5nOwotICAgIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9jb250ZW50KQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250
ZW50LT5zZXRBbHRUZXh0KHN0cmluZyk7CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCk7CisgICAgZGF0YS5hbHRUZXh0ID0gc3RyaW5nOworICAgIGlmIChk
YXRhLmNvbnRlbnQpCisgICAgICAgIGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChzdHJpbmcpOwog
fQogCiBjb25zdCBTdHJpbmcmIFJlbmRlclN0eWxlOjpjb250ZW50QWx0VGV4dCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsdFRleHQ7CisgICAgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OnNldEhhc0F0dHJDb250ZW50KCkKIHsKICAgICBzZXRVbmlxdWUoKTsKLSAgICBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2hhc0F0dHJDb250ZW50LCB0cnVlKTsKKyAgICBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGhhc0F0dHJDb250ZW50LCB0cnVlKTsKIH0KIAotLy8g
RklYTUU6IHVzZSBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkuCiBzdGF0aWMgaW5saW5lIGJv
b2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRpb25zLCBSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zv
cm1PcmlnaW4gYXBwbHlPcmlnaW4pCiB7Ci0gICAgLy8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0
cyB0aGUgdHJhbnNmb3JtIHdpdGggdHJhbnNsYXRlIG9wZXJhdGlvbnMuCi0gICAgLy8gT3B0aW1p
emUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBvbmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9u
LCBzaW5jZSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50Ci0gICAgLy8gaW4gdGhh
dCBjYXNlLgorICAgIC8vIFRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5IGJyYWNrZXRzIHRo
ZSB0cmFuc2Zvcm0gd2l0aCB0cmFuc2xhdGUgb3BlcmF0aW9ucy4KKyAgICAvLyBXaGVuIHRoZSBv
bmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9uLCB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBp
cnJlbGV2YW50LgorCiAgICAgaWYgKGFwcGx5T3JpZ2luICE9IFJlbmRlclN0eWxlOjpJbmNsdWRl
VHJhbnNmb3JtT3JpZ2luKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8m
IG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMpIHsKLSAgICAgICAgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKLSAgICAgICAg
aWYgKHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWAorICAgICAgICAvLyBG
SVhNRTogVXNlIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKS4KKyAgICAgICAgYXV0byB0eXBl
ID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAgICAgIGlmICh0eXBlICE9IFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFCisgICAgICAgICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFXzNECisgICAgICAgICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFX1gKICAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWQotICAgICAgICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURSAKLSAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWgotICAgICAgICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURV8zRCkKKyAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTExNCw3
ICsxMTEyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29u
c3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24KIAogdm9pZCBSZW5kZXJTdHlsZTo6
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCwgQXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pIGNv
bnN0CiB7Ci0gICAgYXV0byYgb3BlcmF0aW9ucyA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Ry
YW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKKyAgICBhdXRvJiBvcGVyYXRpb25z
ID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlv
bnMoKTsKICAgICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9y
aWdpbihvcGVyYXRpb25zLCBhcHBseU9yaWdpbik7CiAKICAgICBmbG9hdCBvZmZzZXRYID0gdHJh
bnNmb3JtT3JpZ2luWCgpLmlzUGVyY2VudCgpID8gYm91bmRpbmdCb3gueCgpIDogMDsKQEAgLTEx
NTEsNzggKzExNDksOTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVu
aXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQKIHsKICAgICBBU1NFUlQo
IXNoYWRvd0RhdGEgfHwgKCFzaGFkb3dEYXRhLT5zcHJlYWQoKSAmJiBzaGFkb3dEYXRhLT5zdHls
ZSgpID09IE5vcm1hbCkpOwogCi0gICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSogcmFyZURhdGEg
PSByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFy
ZUluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURh
dGEtPnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgICAgICByYXJlRGF0YS50
ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShyYXJlRGF0YS0+dGV4dFNoYWRvdykp
OwotICAgIHJhcmVEYXRhLT50ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBz
aGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEudGV4dFNoYWRvdykpOworICAgIHJh
cmVEYXRhLnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOwogfQogCiB2b2lkIFJlbmRl
clN0eWxlOjpzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0Rh
dGEsIGJvb2wgYWRkKQogewotICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEqIHJhcmVEYXRh
ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgYXV0byYgcmFyZURhdGEgPSBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOwogICAgIGlmICghYWRkKSB7Ci0gICAgICAg
IHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CisgICAgICAgIHJh
cmVEYXRhLmJveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEtPm1fYm94
U2hhZG93KSk7Ci0gICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRh
KTsKKyAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEuYm94U2hhZG93KSk7
CisgICAgcmFyZURhdGEuYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKIH0KIAogc3Rh
dGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9y
ZGVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQogewotICAgIHJldHVybiBSb3VuZGVkUmVjdDo6
UmFkaWkoCi0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQo
KS53aWR0aCgpLCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9y
ZGVyLnRvcExlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRT
aXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgo
KSksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQo
KSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJv
cmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZh
bHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkp
KSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQo
KS53aWR0aCgpLCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9y
ZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSk7CisgICAgcmV0dXJu
IHsKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLnRvcExlZnQoKSwgc2l6ZSksCisg
ICAgICAgIHNpemVGb3JMZW5ndGhTaXplKGJvcmRlci50b3BSaWdodCgpLCBzaXplKSwKKyAgICAg
ICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKSwgc2l6ZSksCisgICAgICAg
IHNpemVGb3JMZW5ndGhTaXplKGJvcmRlci5ib3R0b21SaWdodCgpLCBzaXplKQorICAgIH07CiB9
CiAKLVN0eWxlSW1hZ2UqIFJlbmRlclN0eWxlOjpsaXN0U3R5bGVJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5nZXQoKTsgfQorU3R5bGVJbWFn
ZSogUmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UuZ2V0KCk7IH0KKwogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikKIHsKLSAgICBpZiAocmFy
ZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCi0gICAgICAgIHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5saXN0U3R5bGVJbWFnZSA9IFdURk1vdmUodik7CisgICAgaWYgKG1f
cmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCisgICAgICAgIG1fcmFyZUlu
aGVyaXRlZERhdGEuYWNjZXNzKCkubGlzdFN0eWxlSW1hZ2UgPSBXVEZNb3ZlKHYpOwogfQogCiBj
b25zdCBDb2xvciYgUmVuZGVyU3R5bGU6OmNvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5o
ZXJpdGVkLT5jb2xvcjsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5jb2xvcjsKIH0KIAog
Y29uc3QgQ29sb3ImIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9yKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOworICAgIHJldHVybiBtX2luaGVy
aXRlZERhdGEtPnZpc2l0ZWRMaW5rQ29sb3I7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bG9yKGNvbnN0IENvbG9yJiB2KQogewotICAgIFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdik7
CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIGNvbG9yLCB2KTsKIH0KIAogdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYgdikKIHsKLSAgICBTRVRf
VkFSKGluaGVyaXRlZCwgdmlzaXRlZExpbmtDb2xvciwgdik7CisgICAgU0VUX1ZBUihtX2luaGVy
aXRlZERhdGEsIHZpc2l0ZWRMaW5rQ29sb3IsIHYpOworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6
aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRl
ZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nOwogfQogCi1mbG9hdCBSZW5kZXJTdHlsZTo6
aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmc7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRl
clNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFj
aW5nOyB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9h
dCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nLCB2KTsg
fQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpIHsg
U0VUX1ZBUihpbmhlcml0ZWQsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nLCB2KTsgfQorZmxvYXQg
UmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nOworfQorCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAgIFNFVF9W
QVIobV9pbmhlcml0ZWREYXRhLCBob3Jpem9udGFsQm9yZGVyU3BhY2luZywgdik7Cit9CisKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAg
IFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHYpOworfQog
CiBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlv
dXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CiB7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJl
Y3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJv
dW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBi
b3JkZXJSZWN0LnNpemUoKSk7CisgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNh
bGNSYWRpaUZvcihtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLCBib3JkZXJSZWN0LnNpemUoKSk7CiAg
ICAgICAgIHJhZGlpLnNjYWxlKGNhbGNCb3JkZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihib3Jk
ZXJSZWN0LCByYWRpaSkpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2Vz
KHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpAQCAtMTIzMiw0MSArMTI0MywzMyBA
QCBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlv
dXRSZWN0JiBib3JkZXJSZWN0LCBib29sCiBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QK
IHsKICAgICBib29sIGhvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0g
ICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCByaWdodFdp
ZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlclJp
Z2h0V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9IChob3Jpem9udGFsIHx8
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgoKSA6IDA7Ci0gICAgTGF5
b3V0VW5pdCBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwotCisgICAgYXV0byBsZWZ0V2lkdGggPSAo
IWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgo
KSA6IDA7CisgICAgYXV0byByaWdodFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0V2lkdGgoKSA6IDA7CisgICAgYXV0byB0b3BXaWR0
aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lk
dGgoKSA6IDA7CisgICAgYXV0byBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwogICAgIHJldHVybiBn
ZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRo
LCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKIH0KIAogUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBMYXlvdXRVbml0
IHRvcFdpZHRoLCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLAogICAgIExheW91dFVuaXQgbGVmdFdp
ZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IGlu
bmVyUmVjdChib3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwgCi0gICAgICAgICAgICAgICBib3Jk
ZXJSZWN0LnkoKSArIHRvcFdpZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgo
KSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAotICAgICAgICAgICAgICAgYm9yZGVyUmVjdC5o
ZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwotCi0gICAgUm91bmRlZFJlY3Qgcm91
bmRlZFJlY3QoaW5uZXJSZWN0KTsKLQorICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0IHsgeyBi
b3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwgYm9yZGVyUmVjdC55KCkgKyB0b3BXaWR0aCwKKyAg
ICAgICAgYm9yZGVyUmVjdC53aWR0aCgpIC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgYm9yZGVy
UmVjdC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGggfSB9OwogICAgIGlmIChoYXNC
b3JkZXJSYWRpdXMoKSkgewotICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBnZXRS
b3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CisgICAgICAgIGF1dG8gcmFkaWkg
PSBnZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CiAgICAgICAgIHJhZGlp
LnNocmluayh0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7CiAg
ICAgICAgIHJvdW5kZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKICAgICB9CiAgICAgcmV0dXJuIHJvdW5kZWRSZWN0OwogfQogCi1zdGF0aWMgYm9v
bCBhbGxMYXllcnNBcmVGaXhlZChjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wg
YWxsTGF5ZXJzQXJlRml4ZWQoY29uc3QgRmlsbExheWVyJiBsYXllcnMpCiB7Ci0gICAgYm9vbCBh
bGxGaXhlZCA9IHRydWU7Ci0gICAgCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXll
ciA9IGxheWVyOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQotICAg
ICAgICBhbGxGaXhlZCAmPSAoY3VyckxheWVyLT5pbWFnZSgpICYmIGN1cnJMYXllci0+YXR0YWNo
bWVudCgpID09IEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotCi0gICAgcmV0dXJuIGxheWVy
ICYmIGFsbEZpeGVkOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmbGF5ZXJzOyBsYXllcjsgbGF5
ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmICghKGxheWVyLT5pbWFnZSgpICYmIGxh
eWVyLT5hdHRhY2htZW50KCkgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJl
bmRlclN0eWxlOjpoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpIGNvbnN0CkBAIC0xMjc2LDEy
ICsxMjc5LDEyIEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5k
KCkgY29uc3QKIAogY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogUmVuZGVyU3R5bGU6OmNvdW50
ZXJEaXJlY3RpdmVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fY291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmNvdW50ZXJEaXJlY3RpdmVzLmdldCgpOwogfQogCiBDb3VudGVyRGlyZWN0aXZlTWFw
JiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewotICAgIGF1dG8mIG1h
cCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvdW50ZXJEaXJlY3RpdmVzOwor
ICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRp
cmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKQEAgLTEyOTgsNyArMTMw
MSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSk7CiAKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nID0gcmFyZUluaGVyaXRlZERhdGEuZ2V0
KCktPmh5cGhlbmF0aW9uU3RyaW5nOworICAgIGF1dG8mIGh5cGhlbmF0aW9uU3RyaW5nID0gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7CiAgICAgaWYgKCFoeXBoZW5hdGlv
blN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGh5cGhlbmF0aW9uU3RyaW5nOwogCkBA
IC0xMzUwLDYgKzEzNTMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0
RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKKwogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6
OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gZW1wdHlMaXN0OwpAQCAtMTM2MCwzMCArMTM2
NCwyMyBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6
bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+PiBub25lTGlzdDsKICAgICBzdGF0aWMgYm9vbCBub25l
TGlzdEluaXRpYWxpemVkID0gZmFsc2U7Ci0KICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQp
IHsKLSAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24u
bGFiZWwgPSBlbXB0eVN0cmluZygpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExl
bmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKLSAgICAg
ICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zm
c2V0LmxlZnQoKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpOb25lOwotICAgICAgICBub25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsK
KyAgICAgICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKFN0eWxlRGFzaGJvYXJkUmVnaW9uIHsgZW1w
dHlTdHJpbmcoKSwgeyB9LCBTdHlsZURhc2hib2FyZFJlZ2lvbjo6Tm9uZSB9KTsKICAgICAgICAg
bm9uZUxpc3RJbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsK
IH0KKwogI2VuZGlmCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogewot
ICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9hbmltYXRpb25zLmdldCgpOworICAgIGF1dG8qIGFuaW1hdGlvbkxpc3QgPSBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOwogICAgIGlmICghYW5pbWF0aW9uTGlzdCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHJpZCBvZiBlbXB0eSBhbmltYXRpb25zIGFu
ZCBhbnl0aGluZyBiZXlvbmQgdGhlbQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0
aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGFu
aW1hdGlvbkxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0
aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYW5pbWF0aW9u
TGlzdC0+cmVzaXplKGkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDAxLDEyICsxMzk4LDEy
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogCiB2b2lkIFJlbmRlclN0
eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiB7Ci0gICAgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlv
bkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsKKyAgICBh
dXRvKiB0cmFuc2l0aW9uTGlzdCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25z
LmdldCgpOwogICAgIGlmICghdHJhbnNpdGlvbkxpc3QpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEdldCByaWQgb2YgZW1wdHkgdHJhbnNpdGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVt
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kp
IHsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKHRyYW5zaXRpb25MaXN0LT5hbmltYXRpb24o
aSkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0cmFuc2l0aW9uTGlzdC0+cmVzaXplKGkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDIxLDEwICsxNDE4LDEwIEBAIHZvaWQgUmVuZGVyU3R5
bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKICAgICAvLyBSZXBlYXQgcGF0dGVybnMgaW50byBsYXll
cnMgdGhhdCBkb24ndCBoYXZlIHNvbWUgcHJvcGVydGllcyBzZXQuCiAgICAgdHJhbnNpdGlvbkxp
c3QtPmZpbGxVbnNldFByb3BlcnRpZXMoKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUg
bm8gZHVwbGljYXRlIHByb3BlcnRpZXMuIFRoaXMgaXMgYW4gTyhuXjIpIGFsZ29yaXRobQotICAg
IC8vIGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBiZSB2ZXJ5IHNob3J0LCBzbyBpdCBpcyBwcm9iYWJs
eSBvaworICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIHByb3BlcnRpZXMu
CisgICAgLy8gVGhpcyBpcyBhbiBPKG5eMikgYWxnb3JpdGhtIGJ1dCB0aGUgbGlzdHMgdGVuZCB0
byBiZSBzaG9ydCwgc28gaXQgaXMgcHJvYmFibHkgT0suCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aiA9IGkrMTsgaiA8IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7ICsraikgeworICAgICAgICBmb3Ig
KHNpemVfdCBqID0gaSArIDE7IGogPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2opIHsKICAg
ICAgICAgICAgIGlmICh0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLnByb3BlcnR5KCkgPT0g
dHJhbnNpdGlvbkxpc3QtPmFuaW1hdGlvbihqKS5wcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gdG9zcyBpCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkxpc3QtPnJlbW92ZShpKTsK
QEAgLTE0MzYsNjIgKzE0MzMsMTA3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRp
b25zKCkKIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMoKQog
ewotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucykK
LSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FuaW1hdGlvbnM7CisgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmFuaW1hdGlvbnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAg
ICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnM7CiB9CiAKIEFuaW1h
dGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucygpCiB7Ci0gICAgaWYgKCFy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucykKLSAgICAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCk7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90cmFuc2l0aW9uczsKKyAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
dHJhbnNpdGlvbnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJh
bnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgcmV0dXJu
ICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIAogY29uc3QgQW5pbWF0
aW9uKiBSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJv
cGVydHkpIGNvbnN0CiB7Ci0gICAgaWYgKHRyYW5zaXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9ucygpLT5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uJiBwID0gdHJhbnNpdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwotICAg
ICAgICAgICAgaWYgKHAuYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8
fCBwLnByb3BlcnR5KCkgPT0gcHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnA7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBhdXRvKiB0cmFuc2l0aW9ucyA9IHRoaXMt
PnRyYW5zaXRpb25zKCk7CisgICAgaWYgKCF0cmFuc2l0aW9ucykKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0cmFuc2l0aW9ucy0+c2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8mIGFuaW1hdGlvbiA9IHRyYW5zaXRpb25z
LT5hbmltYXRpb24oaSk7CisgICAgICAgIGlmIChhbmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09
IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBhbmltYXRpb24ucHJvcGVydHkoKSA9PSBwcm9wZXJ0
eSkKKyAgICAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uOwogICAgIH0KLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgRm9udENhc2NhZGUmIFJlbmRlclN0eWxl
Ojpmb250Q2FzY2FkZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGU7IH0K
LWNvbnN0IEZvbnRNZXRyaWNzJiBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzKCk7IH0KLWNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclN0eWxlOjpmb250RGVzY3JpcHRpb24oKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpOyB9Ci1mbG9h
dCBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBmb250RGVz
Y3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpjb21wdXRl
ZEZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXpl
KCk7IH0KLWludCBSZW5kZXJTdHlsZTo6Zm9udFNpemUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0
ZWQtPmZvbnRDYXNjYWRlLnBpeGVsU2l6ZSgpOyB9Citjb25zdCBGb250Q2FzY2FkZSYgUmVuZGVy
U3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRh
LT5mb250Q2FzY2FkZTsKK30KIAotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNp
bmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7IH0KLWZs
b2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCk7IH0KK2NvbnN0IEZvbnRNZXRyaWNzJiBSZW5k
ZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERh
dGEtPmZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzKCk7Cit9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OnNl
dEZvbnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiB2KQorY29uc3Qg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkg
IT0gdikgewotICAgICAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRDYXNjYWRlID0gRm9udENh
c2NhZGUodiwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCksIGluaGVyaXRl
ZC0+Zm9udENhc2NhZGUud29yZFNwYWNpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENh
c2NhZGUuZm9udERlc2NyaXB0aW9uKCk7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZp
ZWRGb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNp
ZmllZFNpemUoKTsKK30KKworZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKK30K
KworaW50IFJlbmRlclN0eWxlOjpmb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5o
ZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUucGl4ZWxTaXplKCk7Cit9CisKK2NvbnN0IExlbmd0aCYg
UmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJT
cGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2Fk
ZS5sZXR0ZXJTcGFjaW5nKCk7CiB9CiAKK2Jvb2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNjcmlw
dGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBp
ZiAobV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSA9PSBkZXNj
cmlwdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGNhc2NhZGUgPSBtX2lu
aGVyaXRlZERhdGEuYWNjZXNzKCkuZm9udENhc2NhZGU7CisgICAgY2FzY2FkZSA9IHsgZGVzY3Jp
cHRpb24sIGNhc2NhZGUubGV0dGVyU3BhY2luZygpLCBjYXNjYWRlLndvcmRTcGFjaW5nKCkgfTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lm
aWVkTGluZUhlaWdodCgpIGNvbnN0Cit7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLWNv
bnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQ7IH0KLXZvaWQgUmVuZGVyU3R5bGU6
OnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHNw
ZWNpZmllZExpbmVIZWlnaHQsIHYpOyB9CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+c3Bl
Y2lmaWVkTGluZUhlaWdodDsKICNlbHNlCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVj
aWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsg
fQorICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7CiAjZW5kaWYKK30KIAot
TGVuZ3RoIFJlbmRlclN0eWxlOjpsaW5lSGVpZ2h0KCkgY29uc3QKKyNpZiBFTkFCTEUoVEVYVF9B
VVRPU0laSU5HKQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExl
bmd0aCYmIGhlaWdodCkKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsKKyAg
ICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwgc3BlY2lmaWVkTGluZUhlaWdodCwgV1RGTW92ZSho
ZWlnaHQpKTsKK30KKworI2VuZGlmCisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OmxpbmVI
ZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7
Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQor
eworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCBsaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdo
dCkpOwogfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVk
TGluZUhlaWdodCkgeyBTRVRfVkFSKGluaGVyaXRlZCwgbGluZV9oZWlnaHQsIHNwZWNpZmllZExp
bmVIZWlnaHQpOyB9CiAKIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29u
c3QKIHsKQEAgLTE1MDcsNyArMTU0OSw3IEBAIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5l
SGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KGxoLnZhbHVlKCkpOwogfQog
Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGggdmFsdWUpCit2b2lkIFJl
bmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGgmJiB2YWx1ZSkKIHsKICAgICBmbG9hdCBm
b250V29yZFNwYWNpbmc7CiAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKQEAgLTE1MjgsMTEg
KzE1NzAsMTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcoTGVuZ3RoIHZhbHVl
KQogICAgICAgICBmb250V29yZFNwYWNpbmcgPSAwOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgaW5oZXJpdGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZS5zZXRXb3JkU3BhY2luZyhmb250V29y
ZFNwYWNpbmcpOwotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT53b3JkU3BhY2luZyA9
IFdURk1vdmUodmFsdWUpOworICAgIG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2Fk
ZS5zZXRXb3JkU3BhY2luZyhmb250V29yZFNwYWNpbmcpOworICAgIG1fcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCkud29yZFNwYWNpbmcgPSBXVEZNb3ZlKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IGluaGVyaXRlZC5hY2Nlc3MoKS0+
Zm9udENhc2NhZGUuc2V0TGV0dGVyU3BhY2luZyh2KTsgfQordm9pZCBSZW5kZXJTdHlsZTo6c2V0
TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2Fz
Y2FkZS5zZXRMZXR0ZXJTcGFjaW5nKHYpOyB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRT
aXplKGZsb2F0IHNpemUpCiB7CkBAIC0xNTY2LDcgKzE2MDgsNyBAQCB2b2lkIFJlbmRlclN0eWxl
OjpzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZhcmlhdGlvblNldHRpbmdzIHNldHRpbmdz
KQogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQgJnRvcCwgTGF5b3V0VW5pdCAmcmlnaHQsIExh
eW91dFVuaXQgJmJvdHRvbSwgTGF5b3V0VW5pdCAmbGVmdCkgY29uc3QKK3ZvaWQgUmVuZGVyU3R5
bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQm
IHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYg
bGVmdCkgY29uc3QKIHsKICAgICB0b3AgPSAwOwogICAgIHJpZ2h0ID0gMDsKQEAgLTE4MTAsNTMg
KzE4NTIsNTMgQEAgZmxvYXQgUmVuZGVyU3R5bGU6OmJvcmRlckVuZFdpZHRoKCkgY29uc3QKICAg
ICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6
IGJvcmRlclRvcFdpZHRoKCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpblN0YXJ0
KExlbmd0aCBtYXJnaW4pCit2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5TdGFydChMZW5ndGgm
JiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpbkxl
ZnQobWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKKyAgICAg
ICAgICAgIHNldE1hcmdpblJpZ2h0KFdURk1vdmUobWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdp
blRvcChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2luKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAg
ICAgICAgICAgc2V0TWFyZ2luQm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgfQogfQogCi12
b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldE1hcmdpbkVuZChMZW5ndGgmJiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkKLSAgICAgICAgICAgIHNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRN
YXJnaW5SaWdodChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXRNYXJnaW5MZWZ0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5MZWZ0KFdURk1vdmUo
bWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAg
c2V0TWFyZ2luQm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNldE1hcmdpblRvcChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1v
dmUobWFyZ2luKSk7CiAgICAgfQogfQogCiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0
ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QKIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrIG1hcmsgPSBz
dGF0aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJrPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhh
c2lzTWFyayk7CisgICAgYXV0byBtYXJrID0gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzTWFyaz4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayk7CiAgICAgaWYgKG1hcmsgIT0g
VGV4dEVtcGhhc2lzTWFya0F1dG8pCiAgICAgICAgIHJldHVybiBtYXJrOwotCiAgICAgaWYgKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJr
RG90OwotCiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorCiBDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdo
dENvbG9yKCkKIHsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7
CiB9CisKICNlbmRpZgogCiBMYXlvdXRCb3hFeHRlbnQgUmVuZGVyU3R5bGU6OmltYWdlT3V0c2V0
cyhjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpIGNvbnN0CkBAIC0xODg5LDMwICsxOTMxLDMw
IEBAIHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IFJl
bmRlclN0eWxlOjpmb250QW5kR2x5cGhPcmllCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckltYWdlU291cmNlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKQogewotICAgIGlmIChzdXJy
b3VuZC0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2UoKSA9PSBpbWFnZS5nZXQoKSkKKyAgICBpZiAobV9z
dXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLmltYWdlKCkgPT0gaW1hZ2UuZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1h
Z2UoV1RGTW92ZShpbWFnZSkpOworICAgIG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5t
X2ltYWdlLnNldEltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6
OnNldEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vy
cm91bmQtPmJvcmRlci5tX2ltYWdlLmltYWdlU2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmICht
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2VTbGljZXMoKSA9PSBzbGljZXMpCiAg
ICAgICAgIHJldHVybjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0
SW1hZ2VTbGljZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIu
bV9pbWFnZS5zZXRJbWFnZVNsaWNlcyhXVEZNb3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRl
clN0eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCBzbGljZXMpCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBp
ZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKKyAg
ICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNs
aWNlcykKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9p
bWFnZS5zZXRCb3JkZXJTbGljZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3Mo
KS5ib3JkZXIubV9pbWFnZS5zZXRCb3JkZXJTbGljZXMoV1RGTW92ZShzbGljZXMpKTsKIH0KIAot
dm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlT3V0c2V0KExlbmd0aEJveCYmIG91dHNl
dCkKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNl
dCkKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91
dHNldCkKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9p
bWFnZS5zZXRPdXRzZXQob3V0c2V0KTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3Jk
ZXIubV9pbWFnZS5zZXRPdXRzZXQoV1RGTW92ZShvdXRzZXQpKTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246
Ok1vZGUmIHBhZ2luYXRpb25Nb2RlKQpAQCAtMTk1OCw2ICsyMDAwLDcgQEAgdm9pZCBSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246
Ok1vZGUmIHBhZ2kKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisKIFNjcm9sbFNu
YXBUeXBlIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQogewogICAgIHJldHVy
biB7IH07CkBAIC0xOTcwLDIyICsyMDEzLDIyIEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHls
ZTo6aW5pdGlhbFNjcm9sbFNuYXBBbGlnbigpCiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEm
IFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwQXJlYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJlYTsKKyAgICByZXR1cm4gKm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhOwogfQogCiBjb25zdCBTdHlsZVNjcm9sbFNu
YXBQb3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25zdAogewotICAgIHJldHVy
biAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcFBvcnQ7CisgICAgcmV0dXJuICpt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydDsKIH0KIAogY29uc3QgU2Nyb2xs
U25hcFR5cGUmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT50eXBlOworICAgIHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+dHlwZTsKIH0KIAog
Y29uc3QgTGVuZ3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT5zY3JvbGxQ
YWRkaW5nOworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9y
dC0+c2Nyb2xsUGFkZGluZzsKIH0KIAogY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
UGFkZGluZ1RvcCgpIGNvbnN0CkBAIC0yMDEwLDEyICsyMDUzLDEyIEBAIGNvbnN0IExlbmd0aCYg
UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdSaWdodCgpIGNvbnN0CiAKIGNvbnN0IFNjcm9sbFNu
YXBBbGlnbiYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBbGlnbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7Cisg
ICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5hbGlnbm1l
bnQ7CiB9CiAKIGNvbnN0IExlbmd0aEJveCYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW4o
KSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFw
QXJlYS0+c2Nyb2xsU25hcE1hcmdpbjsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+c2Nyb2xsU25hcEFyZWEtPnNjcm9sbFNuYXBNYXJnaW47CiB9CiAKIGNvbnN0IExlbmd0aCYg
UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW5Ub3AoKSBjb25zdApAQCAtMjA0MCw3OSArMjA4
Myw3NCBAQCBjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwTWFyZ2luUmlnaHQo
KSBjb25zdAogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3Jv
bGxTbmFwVHlwZSYgdHlwZSkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+dHlwZSA9IHR5cGU7CisgICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHR5cGUsIHR5cGUpOwog
fQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJiBs
ZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25h
cFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0VG9wKGxlbmd0aCk7CisgICAgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBh
ZGRpbmcudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNjcm9sbFBhZGRpbmdCb3R0b20oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0
eWxlOjpzZXRTY3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Ny
b2xsUGFkZGluZy5zZXRCb3R0b20obGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy5ib3R0b20oKSwg
V1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGlu
Z0xlZnQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQ
YWRkaW5nTGVmdChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0TGVm
dChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNj
cm9sbFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0K
IAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExlbmd0aCYm
IGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxT
bmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRSaWdodChsZW5ndGgpOworICAgIFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3Jv
bGxQYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkK
IHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5h
Y2Nlc3MoKS0+YWxpZ25tZW50ID0gYWxpZ25tZW50OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBhbGlnbm1lbnQsIGFsaWdubWVudCk7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKExl
bmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9z
Y3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRUb3AobGVuZ3RoKTsK
KyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJl
YSwgc2Nyb2xsU25hcE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShjb25zdCBMZW5ndGgmIGxlbmd0
aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYg
bGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNu
YXBBcmVhLmFjY2VzcygpLT5zY3JvbGxTbmFwTWFyZ2luLnNldEJvdHRvbShsZW5ndGgpOworICAg
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBz
Y3JvbGxTbmFwTWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5MZWZ0KExlbmd0aCYmIGxlbmd0
aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJl
YS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNu
YXBNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJl
bmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewot
ICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2Vz
cygpLT5zY3JvbGxTbmFwTWFyZ2luLnNldFJpZ2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJn
aW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgUmVuZGVy
U3R5bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdAogewogICAgIGlmICghaGFzRmls
dGVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlck9wZXJhdGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1f
b3BlcmF0aW9uczsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkgIT0gMSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVy
YXRpb24gPSAqZmlsdGVyT3BlcmF0aW9ucy5hdCgwKTsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9u
LnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgZmlsdGVyT3BlcmF0aW9ucyA9IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlci0+b3BlcmF0aW9uczsKKyAgICByZXR1cm4gZmls
dGVyT3BlcmF0aW9ucy5zaXplKCkgPT0gMSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBl
KCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKIHsKLSAgICBpZiAoIXJhcmVJbmhl
cml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzKCkpCisgICAg
aWYgKCFtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1Zhcmlh
YmxlcykKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byYgY3VzdG9tUHJvcGVydHlE
YXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2Vz
cygpOworCiAgICAgLy8gT3VyIGZpcnN0IHBhc3MgY2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZh
bGlkaXR5IGFuZCByZXBsYWNlcyBhbnkgcHJvcGVydGllcyB0aGF0IGJlY2FtZQogICAgIC8vIGlu
dmFsaWQgd2l0aCBlbXB0eSB2YWx1ZXMuCi0gICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IHJh
cmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnZh
bHVlcygpOworICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBjdXN0b21Qcm9wZXJ0eURhdGEu
dmFsdWVzOwogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsKICAg
ICBmb3IgKGF1dG8gZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmICghZW50
cnkudmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkpCkBAIC0yMTQyLDI1ICsyMTgwLDI1IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKICAgICBm
b3IgKGF1dG8mIHJlc29sdmVkVmFsdWUgOiByZXNvbHZlZFZhbHVlcykKICAgICAgICAgY3VzdG9t
UHJvcGVydGllcy5zZXQocmVzb2x2ZWRWYWx1ZS0+bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlS
ZWYoKSk7CiAKLSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0
aWVzLmFjY2VzcygpLT5zZXRDb250YWluc1ZhcmlhYmxlcyhmYWxzZSk7CisgICAgY3VzdG9tUHJv
cGVydHlEYXRhLmNvbnRhaW5zVmFyaWFibGVzID0gZmFsc2U7CiB9CiAKIGZsb2F0IFJlbmRlclN0
eWxlOjpvdXRsaW5lV2lkdGgoKSBjb25zdAogewotICAgIGlmIChtX2JhY2tncm91bmQtPm91dGxp
bmUoKS5zdHlsZSgpID09IEJOT05FKQorICAgIGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5l
LnN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChvdXRsaW5lU3R5
bGVJc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1fYmFja2dyb3VuZC0+b3V0bGlu
ZSgpLndpZHRoKCksIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCkpOwotICAg
IHJldHVybiBtX2JhY2tncm91bmQtPm91dGxpbmUoKS53aWR0aCgpOworICAgICAgICByZXR1cm4g
c3RkOjptYXgobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS53aWR0aCgpLCBSZW5kZXJUaGVtZTo6
cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpKTsKKyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+
b3V0bGluZS53aWR0aCgpOwogfQogCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGluZU9mZnNldCgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5P
TkUpCisgICAgaWYgKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCTk9ORSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAg
ICByZXR1cm4gKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLm9mZnNldCgpICsgUmVuZGVyVGhlbWU6
OnBsYXRmb3JtRm9jdXNSaW5nT2Zmc2V0KG91dGxpbmVXaWR0aCgpKSk7Ci0gICAgcmV0dXJuIG1f
YmFja2dyb3VuZC0+b3V0bGluZSgpLm9mZnNldCgpOworICAgICAgICByZXR1cm4gKG1fYmFja2dy
b3VuZERhdGEtPm91dGxpbmUub2Zmc2V0KCkgKyBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1Jp
bmdPZmZzZXQob3V0bGluZVdpZHRoKCkpKTsKKyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+
b3V0bGluZS5vZmZzZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6c2hvdWxkUGxhY2VCbG9j
a0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CkBAIC0yMTY4LDQgKzIyMDYsMTUgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVm
dCgpIGNvbnN0CiAgICAgcmV0dXJuICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
Kwordm9pZCBSZW5kZXJTdHlsZTo6c2V0RGFzaGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0
b20sIExlbmd0aCYmIGxlZnQsIGJvb2wgYXBwZW5kKQoreworICAgIGlmICghYXBwZW5kKQorICAg
ICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmRhc2hib2FyZFJlZ2lvbnMuY2xl
YXIoKTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmRhc2hib2FyZFJlZ2lv
bnMuYXBwZW5kKHsgbGFiZWwsIHsgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92
ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpIH0sIHR5cGUgfSk7Cit9CisKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCmluZGV4IGMyOGFmMWFlMDQ2MGYyZjNjNzI4YTg2MGU5ZjkwMjlmNjRhYzAwNmQu
Ljk5YzE1NDdiMzgyNGYzZmFhNTQ1ZTYwZWEzMWZmMjc0NGQ4MWFiMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0yLDcgKzIsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgpAQCAtODIsMTkgKzgyLDIwIEBACiAjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3Rt
ZW50LmgiCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgY29tcGFyZUVxdWFsKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIHsgcmV0dXJuIHQgPT0g
c3RhdGljX2Nhc3Q8Y29uc3QgVCY+KHUpOyB9Ci0KLSNkZWZpbmUgU0VUX1ZBUihncm91cCwgdmFy
aWFibGUsIHZhbHVlKSBcCi0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2
YWx1ZSkpIFwKLSAgICAgICAgZ3JvdXAuYWNjZXNzKCktPnZhcmlhYmxlID0gdmFsdWUKKyNkZWZp
bmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwKKyAgICAgICAgaWYgKCFj
b21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKKyAgICAgICAgICAgIGdyb3Vw
LmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKKyAgICB9IHdoaWxlICgwKQogCi0jZGVmaW5l
IFNFVF9ORVNURURfVkFSKGdyb3VwLCBwYXJlbnRWYXJpYWJsZSwgdmFyaWFibGUsIHZhbHVlKSBc
Ci0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnBhcmVudFZhcmlhYmxlLT52YXJpYWJsZSwg
dmFsdWUpKSBcCi0gICAgICAgIGdyb3VwLmFjY2VzcygpLT5wYXJlbnRWYXJpYWJsZS5hY2Nlc3Mo
KS0+dmFyaWFibGUgPSB2YWx1ZQorI2RlZmluZSBTRVRfTkVTVEVEX1ZBUihncm91cCwgcGFyZW50
VmFyaWFibGUsIHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCisgICAgICAgIGlmICghY29tcGFyZUVx
dWFsKGdyb3VwLT5wYXJlbnRWYXJpYWJsZS0+dmFyaWFibGUsIHZhbHVlKSkgXAorICAgICAgICAg
ICAgZ3JvdXAuYWNjZXNzKCkucGFyZW50VmFyaWFibGUuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1
ZTsgXAorICAgIH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdy
b3VwLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFy
aWFibGUuY29sb3IoKSwgdmFsdWUpKSBcCi0gICAgICAgIGdyb3VwLmFjY2VzcygpLT52YXJpYWJs
ZS5zZXRDb2xvcih2YWx1ZSkKKyNkZWZpbmUgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdyb3VwLCB2
YXJpYWJsZSwgdmFsdWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+
dmFyaWFibGUuY29sb3IoKSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52
YXJpYWJsZS5zZXRDb2xvcih2YWx1ZSk7IFwKKyAgICB9IHdoaWxlICgwKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTExMSwzODYgKzExMiwzNSBAQCBjbGFzcyBTaGFkb3dEYXRhOwogY2xh
c3MgU3R5bGVJbWFnZTsKIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlUmVz
b2x2ZXI7CitjbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOworY2xhc3MgU3R5bGVTY3JvbGxTbmFw
UG9ydDsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7Ci1jbGFzcyBTdHlsZVNjcm9sbFNu
YXBBcmVhOwotc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsK
LSNlbmRpZgorc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCA0PiBQc2V1ZG9TdHlsZUNhY2hlOwordXNpbmcgUHNldWRv
U3R5bGVDYWNoZSA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCA0PjsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29tcGFyZUVxdWFs
KGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIHsgcmV0dXJuIHQgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VCY+KHUpOyB9CiAKIGNsYXNzIFJlbmRlclN0eWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICAKLSAgICBmcmllbmQgY2xhc3MgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFu
aW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgotICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0
eWxlQ29tbWFuZDsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8u
Ci0gICAgZnJpZW5kIGNsYXNzIEVkaXRpbmdTdHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSBy
ZXZlYWwgdW52aXNpdGVkIGluZm8uCi0gICAgZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I7IC8vIElnbm9yZXMgdmlzaXRlZCBzdHlsZXMsIHNvIG5lZWRzIHRvIGJlIGFibGUgdG8g
c2VlIHVudmlzaXRlZCBpbmZvLgotICAgIGZyaWVuZCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJNYXli
ZUludmFsaWRDb2xvcjsgLy8gVXNlZCBieSBDU1MgYW5pbWF0aW9ucy4gV2UgY2FuJ3QgYWxsb3cg
dGhlbSB0byBhbmltYXRlIGJhc2VkIG9mZiB2aXNpdGVkIGNvbG9ycy4KLSAgICBmcmllbmQgY2xh
c3MgUmVuZGVyU1ZHUmVzb3VyY2U7IC8vIEZJWE1FOiBOZWVkcyB0byBhbHRlciB0aGUgdmlzaXRl
ZCBzdGF0ZSBieSBoYW5kLiBTaG91bGQgY2xlYW4gdGhlIFNWRyBjb2RlIHVwIGFuZCBtb3ZlIGl0
IGludG8gUmVuZGVyU3R5bGUgcGVyaGFwcy4KLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVHJlZUFz
VGV4dDsgLy8gRklYTUU6IE9ubHkgbmVlZGVkIHNvIHRoZSByZW5kZXIgdHJlZSBjYW4ga2VlcCBs
eWluZyBhbmQgZHVtcCB0aGUgd3JvbmcgY29sb3JzLiAgUmViYXNlbGluaW5nIHdvdWxkIGFsbG93
IHRoaXMgdG8gYmUgeWFua2VkLgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI7IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWls
ZGVyQ3VzdG9tOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0
eWxlQnVpbGRlckZ1bmN0aW9uczsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgotICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZVJlc29sdmVyOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCi0KLXB1Ymxp
YzoKLSAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBOb25Jbmhlcml0ZWRG
bGFncygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBzaG91
bGQgYWxsIGJlIHplcm8uCi0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1goKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIWluaXRpYWxDbGVhcigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbERpc3Bs
YXkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxVbmljb2RlQmlkaSgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVCghaW5pdGlhbFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFp
bml0aWFsVmVydGljYWxBbGlnbigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0
aW5nKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsVGFibGVMYXlvdXQoKSk7Ci0KLSAg
ICAgICAgICAgIG1fZmxhZ3MgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFnczsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICAgICAgdm9pZCBjb3B5Tm9u
SW5oZXJpdGVkRnJvbShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIC8vIE9ubHkgYSBzdWJzZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJp
dGVkRmxhZ3MgY29udGFpbnMgYSBidW5jaCBvZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUg
ZGF0YS4KLSAgICAgICAgICAgIHVpbnQ2NF90IG5vbkluaGVyaXRlZE1hc2sgPSBvdmVyZmxvd01h
c2sgPDwgb3ZlcmZsb3dYT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBvdmVyZmxvd01hc2sgPDwg
b3ZlcmZsb3dZT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBjbGVhck1hc2sgPDwgY2xlYXJPZmZz
ZXQKLSAgICAgICAgICAgICAgICB8IGRpc3BsYXlNYXNrIDw8IGVmZmVjdGl2ZURpc3BsYXlPZmZz
ZXQKLSAgICAgICAgICAgICAgICB8IHBvc2l0aW9uTWFzayA8PCBwb3NpdGlvbk9mZnNldAotICAg
ICAgICAgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0Ci0gICAg
ICAgICAgICAgICAgfCB1bmljb2RlQmlkaU1hc2sgPDwgdW5pY29kZUJpZGlPZmZzZXQKLSAgICAg
ICAgICAgICAgICB8IHZlcnRpY2FsQWxpZ25NYXNrIDw8IHZlcnRpY2FsQWxpZ25PZmZzZXQKLSAg
ICAgICAgICAgICAgICB8IGZsb2F0aW5nTWFzayA8PCBmbG9hdGluZ09mZnNldAotICAgICAgICAg
ICAgICAgIHwgb25lQml0TWFzayA8PCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0Ci0gICAgICAg
ICAgICAgICAgfCB0YWJsZUxheW91dEJpdE1hc2sgPDwgdGFibGVMYXlvdXRPZmZzZXQKLSAgICAg
ICAgICAgICAgICB8IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNP
ZmZzZXQ7Ci0KLSAgICAgICAgICAgIG1fZmxhZ3MgPSAobV9mbGFncyAmIH5ub25Jbmhlcml0ZWRN
YXNrKSB8IChvdGhlci5tX2ZsYWdzICYgbm9uSW5oZXJpdGVkTWFzayk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCkpOyB9Ci0g
ICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyBvdmVyZmxvd1gpIHsgdXBkYXRlVmFs
dWUob3ZlcmZsb3dYLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCk7IH0KLQotICAgICAg
ICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJm
bG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCkpOyB9Ci0gICAgICAg
IHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyBvdmVyZmxvd1kpIHsgdXBkYXRlVmFsdWUob3Zl
cmZsb3dZLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCk7IH0KLQotICAgICAgICBFQ2xl
YXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2xlYXI+KGdldFZhbHVlKGNs
ZWFyTWFzaywgY2xlYXJPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldENsZWFyKEVDbGVhciBj
bGVhcikgeyB1cGRhdGVWYWx1ZShjbGVhciwgY2xlYXJNYXNrLCBjbGVhck9mZnNldCk7IH0KLQot
ICAgICAgICBFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zm
c2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRFZmZlY3RpdmVEaXNwbGF5KEVEaXNwbGF5IGVmZmVj
dGl2ZURpc3BsYXkpIHsgdXBkYXRlVmFsdWUoZWZmZWN0aXZlRGlzcGxheSwgZGlzcGxheU1hc2ss
IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpOyB9Ci0KLSAgICAgICAgRVBvc2l0aW9uIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihnZXRWYWx1ZShwb3NpdGlv
bk1hc2ssIHBvc2l0aW9uT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9z
aXRpb24gcG9zaXRpb24pIHsgdXBkYXRlVmFsdWUocG9zaXRpb24sIHBvc2l0aW9uTWFzaywgcG9z
aXRpb25PZmZzZXQpOyB9Ci0KLSAgICAgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBv
cmlnaW5hbERpc3BsYXlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxh
eShFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkpIHsgdXBkYXRlVmFsdWUob3JpZ2luYWxEaXNwbGF5
LCBkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KTsgfQotCi0gICAgICAgIEVVbmlj
b2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVbmljb2Rl
QmlkaT4oZ2V0VmFsdWUodW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCkpOyB9Ci0g
ICAgICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKSB7IHVw
ZGF0ZVZhbHVlKHVuaWNvZGVCaWRpLCB1bmljb2RlQmlkaU1hc2ssIHVuaWNvZGVCaWRpT2Zmc2V0
KTsgfQotCi0gICAgICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIGdl
dEJvb2xlYW4oaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNW
aWV3cG9ydFVuaXRzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzVmlld3Bv
cnRVbml0c09mZnNldCk7IH0KLQotICAgICAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWdu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxpZ24+KGdldFZhbHVlKHZl
cnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBz
ZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24pIHsgdXBkYXRlVmFs
dWUodmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQp
OyB9Ci0KLSAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KLSAg
ICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyhib29sIHZhbHVl
KSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9Ci0K
LSAgICAgICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gZmxvYXRpbmcoKSAhPSBO
b0Zsb2F0OyB9Ci0gICAgICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVGbG9hdD4oZ2V0VmFsdWUoZmxvYXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCkpOyB9
Ci0gICAgICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IGZsb2F0aW5nKSB7IHVwZGF0ZVZhbHVl
KGZsb2F0aW5nLCBmbG9hdGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KTsgfQotCi0gICAgICAgIGJv
b2wgaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gUFVCTElDX1BTRVVE
T0lEX01BU0sgJiBnZXRWYWx1ZShwc2V1ZG9CaXRzTWFzaywgcHNldWRvQml0c09mZnNldCk7IH0K
LSAgICAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgICAgICAg
ICBBU1NFUlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOwotICAgICAgICAgICAg
cmV0dXJuIChvbmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYg
bV9mbGFnczsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVk
b0lkIHBzZXVkbykKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNF
VURPKTsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9J
RCk7Ci0gICAgICAgICAgICBtX2ZsYWdzIHw9IG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZz
ZXQgLSAxICsgcHNldWRvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0
eWxlcyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKHBzZXVkb0lkU2V0KTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0g
cHNldWRvSWRTZXQuZGF0YSgpOwotICAgICAgICAgICAgQVNTRVJUKChyYXdQc2V1ZG9JZFNldCAm
IFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9PSByYXdQc2V1ZG9JZFNldCk7Ci0gICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHBzZXVkb0JpdHNPZmZzZXQgPj0gMSwgIihwc2V1ZG9CaXRzT2Zmc2V0IC0g
MSkgc2hvdWxkIGJlIHZhbGlkLiIpOwotICAgICAgICAgICAgbV9mbGFncyB8PSAoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhd1BzZXVkb0lkU2V0KSA8PCAocHNldWRvQml0c09mZnNldCAtIDEpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVUYWJsZUxheW91dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRN
YXNrLCB0YWJsZUxheW91dE9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQo
RVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KSB7IHVwZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJs
ZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KTsgfQotCi0gICAgICAgIFBzZXVkb0lk
IHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1
ZShzdHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFN0
eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgdXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHls
ZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1VuaXF1ZSgp
IGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNVbmlxdWVPZmZzZXQpOyB9Ci0gICAgICAgIHZv
aWQgc2V0SXNVbmlxdWUoKSB7IHVwZGF0ZUJvb2xlYW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9
Ci0KLSAgICAgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihl
bXB0eVN0YXRlT2Zmc2V0KTsgIH0KLSAgICAgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFs
dWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZW1wdHlTdGF0ZU9mZnNldCk7IH0KLQotICAgICAg
ICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RD
aGlsZFN0YXRlT2Zmc2V0KTsgIH0KLSAgICAgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9v
bCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9
Ci0KLSAgICAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xl
YW4obGFzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQotICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0
YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZz
ZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBn
ZXRCb29sZWFuKGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZl
Y3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5
SG92ZXJPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQotICAgICAgICB2
b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVl
LCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeURy
YWcoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQot
ICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVh
bih2YWx1ZSwgYWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc0xpbmso
KSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGlzTGlua09mZnNldCk7IH0KLSAgICAgICAgdm9p
ZCBzZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZz
ZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQot
ICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQot
Ci0gICAgICAgIGJvb2wgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBk
YXRlQm9vbGVhbih2YWx1ZSwgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQot
Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoTm9uSW5oZXJpdGVkRmxhZ3MsIG1fZmxhZ3MpOyB9Ci0gICAgICAgIHN0
YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3RlZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFz
ayA8PCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBm
bGFnSXNhZmZlY3RlZEJ5SG92ZXIoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlI
b3Zlck9mZnNldDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBz
ZXVkb0lkIHBzZXVkbykgeyByZXR1cm4gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAt
IDEgKyBwc2V1ZG8pOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3Rh
dGVGbGFncygpIHsgcmV0dXJuIGZsYWdGaXJzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgp
OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyBy
ZXR1cm4gZmxhZ0xhc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQotICAgIHByaXZh
dGU6Ci0gICAgICAgIHZvaWQgdXBkYXRlQm9vbGVhbihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZz
ZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc1NldCkKLSAgICAgICAgICAgICAgICBt
X2ZsYWdzIHw9IChvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbV9mbGFncyAmPSB+KG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2ZsYWdzICYgKG9uZUJpdE1hc2sgPDwgb2Zmc2V0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdWYWx1
ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEobmV3VmFsdWUgJiB+cG9zaXRpb25JbmRlcGVu
ZGVudE1hc2spKTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHBvc2l0aW9uRGVwZW5kZW50TWFzayA9
IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrIDw8IG9mZnNldDsKLSAgICAgICAgICAgIG1fZmxhZ3Mg
PSAobV9mbGFncyAmIH5wb3NpdGlvbkRlcGVuZGVudE1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihuZXdWYWx1ZSkgPDwgb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVk
IGdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZz
ZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKG1fZmxhZ3MgPj4gb2Zmc2V0KSAmIHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNVbmlxdWUoKSB7IHJldHVy
biBvbmVCaXRNYXNrIDw8IGlzVW5pcXVlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRf
dCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBmaXJzdENoaWxk
U3RhdGVPZmZzZXQ7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdMYXN0Q2hpbGRTdGF0
ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgbGFzdENoaWxkU3RhdGVPZmZzZXQ7IH0KLQotICAg
ICAgICAvLyBUbyB0eXBlIHRoZSBiaXQgbWFzayBwcm9wZXJseSBvbiA2NGJpdHMuCi0gICAgICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBvbmVCaXRNYXNrID0gMHgxOwotCi0gICAgICAgIC8vIEJ5
dGUgMS4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93Qml0Q291bnQgPSAz
OwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb3ZlcmZsb3dNYXNrID0gKG9uZUJpdE1h
c2sgPDwgb3ZlcmZsb3dCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgb3ZlcmZsb3dYT2Zmc2V0ID0gMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92
ZXJmbG93WU9mZnNldCA9IG92ZXJmbG93WE9mZnNldCArIG92ZXJmbG93Qml0Q291bnQ7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhckJpdENvdW50ID0gMjsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IGNsZWFyTWFzayA9IChvbmVCaXRNYXNrIDw8IGNsZWFyQml0Q291
bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsZWFyT2Zmc2V0ID0gb3Zl
cmZsb3dZT2Zmc2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDIuCi0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaXNwbGF5Qml0Q291bnQgPSA1OwotICAgICAg
ICBzdGF0aWMgY29uc3QgdWludDY0X3QgZGlzcGxheU1hc2sgPSAob25lQml0TWFzayA8PCBkaXNw
bGF5Qml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2
ZURpc3BsYXlPZmZzZXQgPSBjbGVhck9mZnNldCArIGNsZWFyQml0Q291bnQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbkJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IHBvc2l0aW9uTWFzayA9IChvbmVCaXRNYXNrIDw8IHBvc2l0aW9uQml0
Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uT2Zmc2V0
ID0gZWZmZWN0aXZlRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKLQotICAgICAgICAv
LyBCeXRlIDMuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXlP
ZmZzZXQgPSBwb3NpdGlvbk9mZnNldCArIHBvc2l0aW9uQml0Q291bnQ7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaUJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IHVuaWNvZGVCaWRpTWFzayA9IChvbmVCaXRNYXNrIDw8IHVuaWNvZGVC
aWRpQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVC
aWRpT2Zmc2V0ID0gb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ICsgZGlzcGxheUJpdENvdW50OwotCi0g
ICAgICAgIC8vIEJ5dGUgNC4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5n
Qml0Q291bnQgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxvYXRpbmdNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgZmxvYXRpbmdCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZmxvYXRpbmdPZmZzZXQgPSB1bmljb2RlQmlkaU9mZnNldCArIHVuaWNv
ZGVCaWRpQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uQml0Y291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCA9IGZsb2F0aW5nT2Zmc2V0ICsgZmxv
YXRpbmdCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0
bHlTZXRXcml0aW5nTW9kZUJpdGNvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCA9IGhhc0V4cGxpY2l0bHlTZXRE
aXJlY3Rpb25PZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQ7Ci0KLSAg
ICAgICAgLy8gQnl0ZSA1LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJ
bmhlcml0YW5jZUJpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4
cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZz
ZXQgKyBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3VudDsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0gb25lQml0TWFzazsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zmc2V0ID0gZXhwbGljaXRJbmhlcml0
YW5jZU9mZnNldCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudDsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3VudCA9IDQ7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGluZyA9IDI7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFkZGluZ0JpdENvdW50ID0gdmVydGlj
YWxBbGlnbkJpdENvdW50ICsgdmVydGljYWxBbGlnblBhZGRpbmc7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCB1aW50NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChvbmVCaXRNYXNrIDw8IHZlcnRpY2Fs
QWxpZ25CaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGlj
YWxBbGlnbk9mZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsgdGFibGVMYXlvdXRCaXRDb3VudDsK
LQotICAgICAgICAvLyBCeXRlIDYuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1
ZG9CaXRzQml0Q291bnQgPSA3OwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcHNldWRv
Qml0c01hc2sgPSAob25lQml0TWFzayA8PCBwc2V1ZG9CaXRzQml0Q291bnQpIC0gMTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNPZmZzZXQgPSB2ZXJ0aWNhbEFsaWdu
T2Zmc2V0ICsgdmVydGljYWxBbGlnbkJpdENvdW50OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgdWludDY0X3QgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPSAob25lQml0TWFzayA8PCBoYXNW
aWV3cG9ydFVuaXRzQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQgPSBwc2V1ZG9CaXRzT2Zmc2V0ICsgcHNldWRvQml0c0Jp
dENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNy4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHN0eWxlVHlwZUJpdENvdW50ID0gNjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHN0eWxlVHlwZVBhZGRpbmcgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5
bGVUeXBlQW5kUGFkZGluZ0JpdENvdW50ID0gc3R5bGVUeXBlQml0Q291bnQgKyBzdHlsZVR5cGVQ
YWRkaW5nOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc3R5bGVUeXBlTWFzayA9IChv
bmVCaXRNYXNrIDw8IHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudCkgLSAxOwotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlT2Zmc2V0ID0gaGFzVmlld3BvcnRVbml0c0Jp
dENvdW50ICsgaGFzVmlld3BvcnRVbml0c09mZnNldDsKLQotICAgICAgICAvLyBCeXRlIDguCi0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1ZU9mZnNldCA9IHN0eWxlVHlwZU9m
ZnNldCArIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1ZU9mZnNldCArIDE7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3RhdGVPZmZzZXQgPSBlbXB0eVN0YXRl
T2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxhc3RDaGlsZFN0YXRl
T2Zmc2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxhc3RDaGlsZFN0YXRlT2Zmc2V0ICsg
MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQg
PSBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgYWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ICsgMTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09mZnNldCA9IGFmZmVjdGVkQnlEcmFn
T2Zmc2V0ICsgMTsKLQotICAgICAgICAvLyA2MCBiaXRzIGFyZSBhc3NpZ25lZC4gVGhlcmUgYXJl
IDQgYml0cyBhdmFpbGFibGUgY3VycmVudGx5IHVzZWQgYXMgcGFkZGluZyB0byBpbXByb3ZlIGNv
ZGUgZ2VuZXJhdGlvbi4KLSAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVy
ZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVy
aXRlZEZyb20oKS4KLSAgICAgICAgdWludDY0X3QgbV9mbGFnczsKLSAgICB9OwotCi1wcm90ZWN0
ZWQ6Ci0KLSAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxl
Qm94RGF0YT4gbV9ib3g7Ci0gICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+IHZpc3VhbDsKLSAg
ICBEYXRhUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IG1fYmFja2dyb3VuZDsKLSAgICBEYXRhUmVm
PFN0eWxlU3Vycm91bmREYXRhPiBzdXJyb3VuZDsKLSAgICBEYXRhUmVmPFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE+IHJhcmVOb25Jbmhlcml0ZWREYXRhOwotCi0gICAgLy8gaW5oZXJpdGVkIGF0
dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IHJhcmVJbmhlcml0
ZWREYXRhOwotICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBpbmhlcml0ZWQ7Ci0KLSAg
ICAvLyBsaXN0IG9mIGFzc29jaWF0ZWQgcHNldWRvIHN0eWxlcwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQc2V1ZG9TdHlsZUNhY2hlPiBtX2NhY2hlZFBzZXVkb1N0eWxlczsKLQotICAgIERhdGFSZWY8
U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7Ci0KLS8vICFTVEFSVCBTWU5DITogS2VlcCB0aGlz
IGluIHN5bmMgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3RvciBpbiBSZW5kZXJTdHlsZS5jcHAgYW5k
IGltcGxpY2l0bHlJbmhlcml0ZWQoKSBpbiBTdHlsZVJlc29sdmVyLmNwcAotCi0gICAgLy8gaW5o
ZXJpdAotICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAoX2VtcHR5X2NlbGxzID09IG90aGVyLl9lbXB0eV9jZWxscykKLSAgICAgICAg
ICAgICAgICAmJiAoX2NhcHRpb25fc2lkZSA9PSBvdGhlci5fY2FwdGlvbl9zaWRlKQotICAgICAg
ICAgICAgICAgICYmIChfbGlzdF9zdHlsZV90eXBlID09IG90aGVyLl9saXN0X3N0eWxlX3R5cGUp
Ci0gICAgICAgICAgICAgICAgJiYgKF9saXN0X3N0eWxlX3Bvc2l0aW9uID09IG90aGVyLl9saXN0
X3N0eWxlX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgICYmIChfdmlzaWJpbGl0eSA9PSBvdGhl
ci5fdmlzaWJpbGl0eSkKLSAgICAgICAgICAgICAgICAmJiAoX3RleHRfYWxpZ24gPT0gb3RoZXIu
X3RleHRfYWxpZ24pCi0gICAgICAgICAgICAgICAgJiYgKF90ZXh0X3RyYW5zZm9ybSA9PSBvdGhl
ci5fdGV4dF90cmFuc2Zvcm0pCi0gICAgICAgICAgICAgICAgJiYgKF90ZXh0X2RlY29yYXRpb25z
ID09IG90aGVyLl90ZXh0X2RlY29yYXRpb25zKQotICAgICAgICAgICAgICAgICYmIChfY3Vyc29y
X3N0eWxlID09IG90aGVyLl9jdXJzb3Jfc3R5bGUpCi0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklM
SVRZKQotICAgICAgICAgICAgICAgICYmIChtX2N1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIubV9j
dXJzb3JWaXNpYmlsaXR5KQotI2VuZGlmCi0gICAgICAgICAgICAgICAgJiYgKF9kaXJlY3Rpb24g
PT0gb3RoZXIuX2RpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAmJiAoX3doaXRlX3NwYWNlID09
IG90aGVyLl93aGl0ZV9zcGFjZSkKLSAgICAgICAgICAgICAgICAmJiAoX2JvcmRlcl9jb2xsYXBz
ZSA9PSBvdGhlci5fYm9yZGVyX2NvbGxhcHNlKQotICAgICAgICAgICAgICAgICYmIChfYm94X2Rp
cmVjdGlvbiA9PSBvdGhlci5fYm94X2RpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAmJiAobV9y
dGxPcmRlcmluZyA9PSBvdGhlci5tX3J0bE9yZGVyaW5nKQotICAgICAgICAgICAgICAgICYmICht
X3ByaW50Q29sb3JBZGp1c3QgPT0gb3RoZXIubV9wcmludENvbG9yQWRqdXN0KQotICAgICAgICAg
ICAgICAgICYmIChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykKLSAgICAg
ICAgICAgICAgICAmJiAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmspCi0gICAgICAg
ICAgICAgICAgJiYgKF9pbnNpZGVEZWZhdWx0QnV0dG9uID09IG90aGVyLl9pbnNpZGVEZWZhdWx0
QnV0dG9uKQotICAgICAgICAgICAgICAgICYmIChtX3dyaXRpbmdNb2RlID09IG90aGVyLm1fd3Jp
dGluZ01vZGUpOwotICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElu
aGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
LQotICAgICAgICB1bnNpZ25lZCBfZW1wdHlfY2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCi0gICAg
ICAgIHVuc2lnbmVkIF9jYXB0aW9uX3NpZGUgOiAyOyAvLyBFQ2FwdGlvblNpZGUKLSAgICAgICAg
dW5zaWduZWQgX2xpc3Rfc3R5bGVfdHlwZSA6IDc7IC8vIEVMaXN0U3R5bGVUeXBlCi0gICAgICAg
IHVuc2lnbmVkIF9saXN0X3N0eWxlX3Bvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9u
Ci0gICAgICAgIHVuc2lnbmVkIF92aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkKLSAgICAg
ICAgdW5zaWduZWQgX3RleHRfYWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCi0gICAgICAgIHVuc2ln
bmVkIF90ZXh0X3RyYW5zZm9ybSA6IDI7IC8vIEVUZXh0VHJhbnNmb3JtCi0gICAgICAgIHVuc2ln
bmVkIF90ZXh0X2RlY29yYXRpb25zIDogVGV4dERlY29yYXRpb25CaXRzOwotICAgICAgICB1bnNp
Z25lZCBfY3Vyc29yX3N0eWxlIDogNjsgLy8gRUN1cnNvcgotI2lmIEVOQUJMRShDVVJTT1JfVklT
SUJJTElUWSkKLSAgICAgICAgdW5zaWduZWQgbV9jdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vy
c29yVmlzaWJpbGl0eQotI2VuZGlmCi0gICAgICAgIHVuc2lnbmVkIF9kaXJlY3Rpb24gOiAxOyAv
LyBUZXh0RGlyZWN0aW9uCi0gICAgICAgIHVuc2lnbmVkIF93aGl0ZV9zcGFjZSA6IDM7IC8vIEVX
aGl0ZVNwYWNlCi0gICAgICAgIC8vIDMyIGJpdHMKLSAgICAgICAgdW5zaWduZWQgX2JvcmRlcl9j
b2xsYXBzZSA6IDE7IC8vIEVCb3JkZXJDb2xsYXBzZQotICAgICAgICB1bnNpZ25lZCBfYm94X2Rp
cmVjdGlvbiA6IDE7IC8vIEVCb3hEaXJlY3Rpb24gKENTUzMgYm94X2RpcmVjdGlvbiBwcm9wZXJ0
eSwgZmxleGlibGUgYm94IGxheW91dCBtb2R1bGUpCi0KLSAgICAgICAgLy8gbm9uIENTUzIgaW5o
ZXJpdGVkCi0gICAgICAgIHVuc2lnbmVkIG1fcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgotICAg
ICAgICB1bnNpZ25lZCBtX3ByaW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsK
LSAgICAgICAgdW5zaWduZWQgX3BvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cwot
ICAgICAgICB1bnNpZ25lZCBfaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCi0gICAgICAg
IHVuc2lnbmVkIF9pbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKLSAgICAgICAgLy8gNDQgYml0cwot
Ci0gICAgICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3Jp
dGluZyBzdXBwb3J0Ci0gICAgICAgIHVuc2lnbmVkIG1fd3JpdGluZ01vZGUgOiAyOyAvLyBXcml0
aW5nTW9kZQotICAgICAgICAvLyA0NiBiaXRzCi0gICAgfSBpbmhlcml0ZWRfZmxhZ3M7Ci0KLS8v
IGRvbid0IGluaGVyaXQKLSAgICBOb25Jbmhlcml0ZWRGbGFncyBub25pbmhlcml0ZWRfZmxhZ3M7
Ci0KLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQot
ICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKLSNlbmRpZgotCi0vLyAhRU5E
IFNZTkMhCiBwcml2YXRlOgorICAgIGVudW0gQ2xvbmVUYWcgeyBDbG9uZSB9OwogICAgIGVudW0g
Q3JlYXRlRGVmYXVsdFN0eWxlVGFnIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07Ci0gICAgUmVuZGVy
U3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFnKTsKLQotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYg
ZGVmYXVsdFN0eWxlKCk7CiAKIHB1YmxpYzoKICAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYm
KSA9IGRlZmF1bHQ7CiAgICAgUmVuZGVyU3R5bGUmIG9wZXJhdG9yPShSZW5kZXJTdHlsZSYmKSA9
IGRlZmF1bHQ7CisgICAgflJlbmRlclN0eWxlKCk7CiAKLSAgICAvLyBUaGlzIGlzIG5vdCBhIHRy
dWUgY29weSBjb25zdHJ1Y3Rvci4gSXQgZG9lc24ndCBjb3B5IHBzZXVkbyBzdHlsZSBjYWNoZXMg
Zm9yIGV4YW1wbGUuCi0gICAgZW51bSBDbG9uZVRhZyB7IENsb25lIH07CisgICAgUmVuZGVyU3R5
bGUgcmVwbGFjZShSZW5kZXJTdHlsZSYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICBleHBs
aWNpdCBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcpOwogICAgIFJlbmRlclN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiwgQ2xvbmVUYWcpOwogCi0gICAgflJlbmRlclN0eWxlKCk7Cisg
ICAgc3RhdGljIFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKTsKIAogICAgIHN0YXRpYyBSZW5k
ZXJTdHlsZSBjcmVhdGUoKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBjcmVhdGVQdHIoKTsKQEAgLTUwNSw2ICsxNTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGVs
ZXRpb25IYXNCZWd1bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRpb25IYXNCZWd1bjsgfQogI2Vu
ZGlmCiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5k
ZXJTdHlsZSYgaW5oZXJpdFBhcmVudCk7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShj
b25zdCBSZW5kZXJTdHlsZSYpOworCiAgICAgQ29udGVudFBvc2l0aW9uIHJlc29sdmVkSnVzdGlm
eUNvbnRlbnRQb3NpdGlvbihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxW
YWx1ZUJlaGF2aW9yKSBjb25zdDsKICAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSByZXNvbHZl
ZEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0OwogICAgIENvbnRlbnRQb3NpdGlvbiByZXNv
bHZlZEFsaWduQ29udGVudFBvc2l0aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEm
IG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0OwpAQCAtNTE0LDExICsxNzAsOCBAQCBwdWJsaWM6
CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSByZXNvbHZlZEp1c3RpZnlJdGVtcyhJdGVtUG9z
aXRpb24gbm9ybWFsVmFsdWVCZWhhdmlvdXIpIGNvbnN0OwogICAgIFN0eWxlU2VsZkFsaWdubWVu
dERhdGEgcmVzb2x2ZWRKdXN0aWZ5U2VsZihjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IEl0ZW1Qb3NpdGlvbiBub3JtYWxWYWx1ZUJlaGF2aW91cikgY29uc3Q7CiAKLSAgICB2b2lkIGlu
aGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0UGFyZW50KTsKLSAgICB2b2lkIGNv
cHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKik7Ci0KLSAgICBQc2V1ZG9JZCBz
dHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Muc3R5bGVUeXBlKCk7
IH0KLSAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbm9uaW5oZXJp
dGVkX2ZsYWdzLnNldFN0eWxlVHlwZShzdHlsZVR5cGUpOyB9CisgICAgUHNldWRvSWQgc3R5bGVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUoKTsgfQor
ICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLnNldFN0eWxlVHlwZShzdHlsZVR5cGUpOyB9CiAKICAgICBSZW5kZXJTdHlsZSogZ2V0
Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQpIGNvbnN0OwogICAgIFJlbmRlclN0eWxlKiBhZGRD
YWNoZWRQc2V1ZG9TdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKQEAgLTUyNiwx
MTYgKzE3OSw5MyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNo
ZWRQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQo
KTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiB2YWx1ZSkgeyBy
YXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHZhbHVlKTsgfQotICAgIFJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVy
dGllcy0+Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lKTsgfQotICAgIGJvb2wgaGFzQ3VzdG9t
UHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5oYXNDdXN0b21Qcm9wZXJ0eShuYW1lKTsg
fQotICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5tX3Zh
bHVlczsgfQorICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVz
LT52YWx1ZXM7IH0KKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2Vzcygp
LnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKLSAgICB2
b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBu
b25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsg
fQotICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRl
ZF9mbGFncy5oYXNWaWV3cG9ydFVuaXRzKCk7IH0KKyAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5p
dHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNl
dEhhc1ZpZXdwb3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KKyAgICBib29sIGhhc1ZpZXdw
b3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0
VW5pdHMoKTsgfQogCi0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KLSAgICBib29sIGFmZmVjdGVk
QnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFj
dGl2ZSgpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5SG92
ZXIoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlIb3Zlcigp
OyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFn
KCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9
CiAKLSAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNl
dEFmZmVjdGVkQnlIb3Zlcih0cnVlKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgp
IHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KLSAgICB2
b2lkIHNldEFmZmVjdGVkQnlEcmFnKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRC
eURyYWcodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVj
dGVkQnlBY3RpdmUoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZmZWN0ZWRCeUFjdGl2ZSh0
cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3Muc2V0QWZmZWN0ZWRCeURyYWcodHJ1ZSk7IH0KIAogICAgIHZvaWQgc2V0Q29sdW1uU3R5bGVz
RnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmKTsKICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdDsKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNv
bnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+bWFyZ2luLmlzWmVybygpOyB9Ci0gICAgYm9vbCBoYXNC
b3JkZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9Ci0g
ICAgYm9vbCBoYXNCb3JkZXJGaWxsKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5o
YXNGaWxsKCk7IH0KKyAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZEZsYWdzLmlzRmxvYXRpbmcoKTsgfQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3Qg
eyByZXR1cm4gIW1fc3Vycm91bmREYXRhLT5tYXJnaW4uaXNaZXJvKCk7IH0KKyAgICBib29sIGhh
c0JvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzQm9yZGVy
KCk7IH0KKyAgICBib29sIGhhc0JvcmRlckZpbGwoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQogICAgIGJvb2wgaGFzVmlzaWJsZUJvcmRlckRlY29y
YXRpb24oKSBjb25zdCB7IHJldHVybiBoYXNWaXNpYmxlQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmls
bCgpOyB9Ci0gICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5oYXNWaXNpYmxlQm9yZGVyKCk7IH0KLSAgICBib29sIGhhc1BhZGRpbmcoKSBj
b25zdCB7IHJldHVybiAhc3Vycm91bmQtPnBhZGRpbmcuaXNaZXJvKCk7IH0KLSAgICBib29sIGhh
c09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+b2Zmc2V0LmlzWmVybygpOyB9Cisg
ICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PmJvcmRlci5oYXNWaXNpYmxlQm9yZGVyKCk7IH0KKyAgICBib29sIGhhc1BhZGRpbmcoKSBjb25z
dCB7IHJldHVybiAhbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuaXNaZXJvKCk7IH0KKyAgICBib29s
IGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmlzWmVy
bygpOyB9CiAgICAgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1h
cmdpbkJlZm9yZSgpLmhhc1F1aXJrKCk7IH0KICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVpcmso
KSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpLmhhc1F1aXJrKCk7IH0KIAotICAgIGJvb2wg
aGFzQmFja2dyb3VuZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3Jv
dW5kKCkuaGFzSW1hZ2UoKTsgfQotICAgIGJvb2wgaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5oYXNGaXhlZEltYWdlKCk7
IH0KLSAgICAKKyAgICBib29sIGhhc0JhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuaGFzSW1hZ2UoKTsgfQorICAgIGJvb2wgaGFzRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNr
Z3JvdW5kLmhhc0ZpeGVkSW1hZ2UoKTsgfQorCiAgICAgYm9vbCBoYXNFbnRpcmVseUZpeGVkQmFj
a2dyb3VuZCgpIGNvbnN0OwotICAgIAorCiAgICAgYm9vbCBoYXNBcHBlYXJhbmNlKCkgY29uc3Qg
eyByZXR1cm4gYXBwZWFyYW5jZSgpICE9IE5vQ29udHJvbFBhcnQ7IH0KIAotICAgIGJvb2wgaGFz
QmFja2dyb3VuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBDb2xvciBjb2xvciA9IHZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGlmIChj
b2xvci5pc1Zpc2libGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1
cm4gaGFzQmFja2dyb3VuZEltYWdlKCk7Ci0gICAgfQorICAgIGJvb2wgaGFzQmFja2dyb3VuZCgp
IGNvbnN0OwogICAgIAogICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmKSBjb25zdDsKLSAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFi
b3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOwotICAgIH0KLSAgICBMYXlvdXRCb3hFeHRl
bnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbWFn
ZU91dHNldHMoYm9yZGVySW1hZ2UoKSk7Ci0gICAgfQorICAgIGJvb2wgaGFzQm9yZGVySW1hZ2VP
dXRzZXRzKCkgY29uc3QgeyByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3Jk
ZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygpOyB9CisgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRl
ckltYWdlT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgp
KTsgfQogCi0gICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGltYWdlT3V0c2V0cyhtYXNrQm94SW1hZ2UoKSk7Ci0gICAg
fQorICAgIExheW91dEJveEV4dGVudCBtYXNrQm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1
cm4gaW1hZ2VPdXRzZXRzKG1hc2tCb3hJbWFnZSgpKTsgfQogCiAgICAgYm9vbCBoYXNGaWx0ZXJP
dXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0
cygpOyB9CiAgICAgRmlsdGVyT3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4g
aGFzRmlsdGVyKCkgPyBmaWx0ZXIoKS5vdXRzZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KIAot
ICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+
KGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nKTsgfQotICAgIHZvaWQgc2V0UlRMT3JkZXJp
bmcoT3JkZXIgbykgeyBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IG87IH0KKyAgICBP
cmRlciBydGxPcmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2lu
aGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nKTsgfQorICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3Jk
ZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IG9yZGVyaW5nOyB9
CiAKICAgICBib29sIGlzU3R5bGVBdmFpbGFibGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55
UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1
ZG9JZCBwc2V1ZG8pIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQg
cHNldWRvKTsKKyAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKKyAgICB2
b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKICAgICB2b2lkIHNldEhhc1BzZXVkb1N0
eWxlcyhQc2V1ZG9JZFNldCk7CiAgICAgYm9vbCBoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0
OwogCiAgICAgLy8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNw
bGF5KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXko
KTsgfQotICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5vcmlnaW5hbERpc3BsYXkoKTsgfQorICAgIEVEaXNwbGF5IGRpc3BsYXko
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsg
fQogCi0gICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9m
ZnNldC5sZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPm9mZnNldC5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBi
b3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJvdHRvbSgpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNl
dC5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm9mZnNldC5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LnRvcCgpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmJv
dHRvbSgpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIHBvc2l0aW9uZWQgb2JqZWN0IGVkZ2Vz
IHRoYXQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBtb2RlLgotICAgIGNvbnN0IExlbmd0aCYg
bG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnN0YXJ0KHdyaXRp
bmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+b2Zmc2V0LmVuZCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYmVmb3Jl
KHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+b2Zmc2V0LnN0YXJ0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmVuZCh3cml0
aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPm9mZnNldC5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgLy8gV2hldGhlciBvciBu
b3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNv
bXB1dGVkCi0gICAgLy8gdG8gZGV0ZXJtaW5lIGl0cyBwb3NpdGlvbi4KLSAgICBib29sIGhhc0F1
dG9MZWZ0QW5kUmlnaHQoKSBjb25zdCB7IHJldHVybiBsZWZ0KCkuaXNBdXRvKCkgJiYgcmlnaHQo
KS5pc0F1dG8oKTsgfQotICAgIGJvb2wgaGFzQXV0b1RvcEFuZEJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIHRvcCgpLmlzQXV0bygpICYmIGJvdHRvbSgpLmlzQXV0bygpOyB9CisgICAgLy8gV2hldGhl
ciBvciBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRv
IGJlIGNvbXB1dGVkICB0byBkZXRlcm1pbmUgaXRzIHBvc2l0aW9uLgogICAgIGJvb2wgaGFzU3Rh
dGljSW5saW5lUG9zaXRpb24oYm9vbCBob3Jpem9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9u
dGFsID8gaGFzQXV0b0xlZnRBbmRSaWdodCgpIDogaGFzQXV0b1RvcEFuZEJvdHRvbSgpOyB9CiAg
ICAgYm9vbCBoYXNTdGF0aWNCbG9ja1Bvc2l0aW9uKGJvb2wgaG9yaXpvbnRhbCkgY29uc3QgeyBy
ZXR1cm4gaG9yaXpvbnRhbCA/IGhhc0F1dG9Ub3BBbmRCb3R0b20oKSA6IGhhc0F1dG9MZWZ0QW5k
UmlnaHQoKTsgfQogCi0gICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCk7IH0KKyAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCk7IH0KICAgICBib29s
IGhhc091dE9mRmxvd1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBBYnNv
bHV0ZVBvc2l0aW9uIHx8IHBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsgfQogICAgIGJvb2wg
aGFzSW5GbG93UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBwb3NpdGlvbigpID09IFJlbGF0aXZl
UG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBTdGlja3lQb3NpdGlvbjsgfQogICAgIGJvb2wgaGFz
Vmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uIHx8IHBvc2l0aW9uKCkgPT0gU3RpY2t5UG9zaXRpb247IH0KLSAgICBF
RmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRp
bmcoKTsgfQotCi0gICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94
LT53aWR0aCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2JveC0+aGVpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1pbldpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3gtPm1pbldpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1heFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3gtPm1heFdpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1p
bkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5taW5IZWlnaHQoKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1heEhlaWdodCgpOyB9
CisgICAgRUZsb2F0IGZsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFn
cy5mbG9hdGluZygpOyB9CisKKyAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9ib3hEYXRhLT53aWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2JveERhdGEtPmhlaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtaW5X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWluV2lkdGgoKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgbWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPm1heFdpZHRoKCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIG1pbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0
YS0+bWluSGVpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1heEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fYm94RGF0YS0+bWF4SGVpZ2h0KCk7IH0KICAgICAKICAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyB3aWR0aCgpIDogaGVpZ2h0KCk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0KCkgOiB3
aWR0aCgpOyB9CkBAIC02NDQsNDIgKzI3NCw0MiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3Ro
JiBsb2dpY2FsTWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IG1pbkhlaWdodCgpIDogbWluV2lkdGgoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9n
aWNhbE1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBtYXhIZWlnaHQoKSA6IG1heFdpZHRoKCk7IH0KIAotICAgIGNvbnN0IEJvcmRlckRhdGEmIGJv
cmRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXI7IH0KLSAgICBjb25zdCBCb3Jk
ZXJWYWx1ZSYgYm9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVm
dCgpOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJv
cmRlclRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wKCk7IH0KLSAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5ib3R0b20oKTsgfQorICAgIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXI7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1
ZSYgYm9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVm
dCgpOyB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5yaWdodCgpOyB9CisgICAgY29uc3QgQm9yZGVyVmFs
dWUmIGJvcmRlclRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9w
KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20oKTsgfQogCiAgICAgY29uc3QgQm9yZGVy
VmFsdWUmIGJvcmRlckJlZm9yZSgpIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3Jk
ZXJBZnRlcigpIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJTdGFydCgpIGNv
bnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJFbmQoKSBjb25zdDsKIAotICAgIGNv
bnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuaW1hZ2UoKTsgfQotICAgIFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLmltYWdlKCk7IH0KLSAgICBj
b25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5pbWFnZSgpLmltYWdlU2xpY2VzKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gm
IGJvcmRlckltYWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdl
KCkuYm9yZGVyU2xpY2VzKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlT3V0
c2V0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLm91dHNldCgpOyB9
Ci0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXpl
JiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
dG9wUmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQotICAg
IGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXJS
YWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygp
OyB9Ci0KLSAgICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlckxl
ZnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7
IH0KLSAgICBib29sIGJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5sZWZ0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgZmxvYXQgYm9yZGVy
UmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyUmlnaHRX
aWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5bGUoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVy
UmlnaHRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdo
dCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9Ci0gICAgRUJvcmRl
clN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50
b3AoKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBm
bG9hdCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
Ym9yZGVyQm90dG9tV2lkdGgoKTsgfQotICAgIEVCb3JkZXJTdHlsZSBib3JkZXJCb3R0b21TdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQot
ICAgIGJvb2wgYm9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuYm90dG9tKCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgRmxvYXRCb3hFeHRl
bnQgYm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlcldp
ZHRoKCk7IH0KKyAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgYm9yZGVySW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmltYWdlKCk7IH0KKyAgICBTdHlsZUltYWdl
KiBib3JkZXJJbWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIuaW1hZ2UoKS5pbWFnZSgpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVNs
aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5pbWFn
ZVNsaWNlcygpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmJvcmRlclNsaWNlcygp
OyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZU91dHNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5vdXRzZXQoKTsgfQorCisgICAgY29u
c3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5ib3JkZXIudG9wTGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9y
ZGVyVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVy
LnRvcFJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b21MZWZ0KCk7
IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tUmlnaHQoKTsgfQorICAgIGJv
b2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRl
ci5oYXNCb3JkZXJSYWRpdXMoKTsgfQorCisgICAgZmxvYXQgYm9yZGVyTGVmdFdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQor
ICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9CisgICAgYm9vbCBib3JkZXJMZWZ0SXNU
cmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgp
LmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZsb2F0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQorICAg
IEVCb3JkZXJTdHlsZSBib3JkZXJSaWdodFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPmJvcmRlci5yaWdodCgpLnN0eWxlKCk7IH0KKyAgICBib29sIGJvcmRlclJpZ2h0SXNU
cmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQo
KS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBmbG9hdCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQorICAgIEVC
b3JkZXJTdHlsZSBib3JkZXJUb3BTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5ib3JkZXIudG9wKCkuc3R5bGUoKTsgfQorICAgIGJvb2wgYm9yZGVyVG9wSXNUcmFuc3BhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCkuaXNUcmFuc3Bh
cmVudCgpOyB9CisgICAgZmxvYXQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KKyAgICBFQm9yZGVy
U3R5bGUgYm9yZGVyQm90dG9tU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLmJvdHRvbSgpLnN0eWxlKCk7IH0KKyAgICBib29sIGJvcmRlckJvdHRvbUlzVHJhbnNw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbSgpLmlz
VHJhbnNwYXJlbnQoKTsgfQorICAgIEZsb2F0Qm94RXh0ZW50IGJvcmRlcldpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3JkZXJXaWR0aCgpOyB9CiAKICAgICBm
bG9hdCBib3JkZXJCZWZvcmVXaWR0aCgpIGNvbnN0OwogICAgIGZsb2F0IGJvcmRlckFmdGVyV2lk
dGgoKSBjb25zdDsKQEAgLTY4OSwyOCArMzE5LDI4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBvdXRs
aW5lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PigwLCBvdXRsaW5lV2lkdGgo
KSArIG91dGxpbmVPZmZzZXQoKSk7IH0KICAgICBmbG9hdCBvdXRsaW5lV2lkdGgoKSBjb25zdDsK
ICAgICBib29sIGhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBvdXRsaW5lU3R5bGUoKSA+IEJI
SURERU4gJiYgb3V0bGluZVdpZHRoKCkgPiAwOyB9Ci0gICAgRUJvcmRlclN0eWxlIG91dGxpbmVT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCk7IH0K
LSAgICBPdXRsaW5lSXNBdXRvIG91dGxpbmVTdHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+KG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLmlzQXV0bygp
KTsgfQorICAgIEVCb3JkZXJTdHlsZSBvdXRsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCk7IH0KKyAgICBPdXRsaW5lSXNBdXRvIG91dGxp
bmVTdHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+
KG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuaXNBdXRvKCkpOyB9CiAgICAgYm9vbCBoYXNPdXRs
aW5lSW5WaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc091dGxpbmUoKSAmJiBvdXRs
aW5lU2l6ZSgpID4gMDsgfQogICAgIAotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1goKSBjb25zdCB7
IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCk7IH0KLSAgICBFT3ZlcmZsb3cg
b3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgp
OyB9CisgICAgRU92ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3Mub3ZlcmZsb3dYKCk7IH0KKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3Qg
eyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKTsgfQogCi0gICAgRVZpc2li
aWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5
Pihpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkpOyB9Ci0gICAgRVZlcnRpY2FsQWxpZ24gdmVy
dGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFs
aWduKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2JveC0+dmVydGljYWxBbGlnbigpOyB9CisgICAgRVZpc2liaWxpdHkgdmlzaWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRl
ZEZsYWdzLnZpc2liaWxpdHkpOyB9CisgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigp
IGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbigpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiB2ZXJ0aWNhbEFsaWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9i
b3hEYXRhLT52ZXJ0aWNhbEFsaWduKCk7IH0KIAotICAgIGNvbnN0IExlbmd0aCYgY2xpcExlZnQo
KSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBjbGlwUmlnaHQoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAucmlnaHQoKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgY2xpcFRvcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC50b3Ao
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHZpc3Vh
bC0+Y2xpcC5ib3R0b20oKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgY2xpcCgpIGNvbnN0IHsg
cmV0dXJuIHZpc3VhbC0+Y2xpcDsgfQotICAgIGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0dXJu
IHZpc3VhbC0+aGFzQ2xpcDsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcExlZnQoKSBjb25zdCB7
IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAubGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBj
bGlwUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAucmlnaHQoKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgY2xpcFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+
Y2xpcC50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aEJveCYg
Y2xpcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcDsgfQorICAgIGJvb2wgaGFz
Q2xpcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+aGFzQ2xpcDsgfQogCi0gICAgRVVu
aWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
LnVuaWNvZGVCaWRpKCk7IH0KKyAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCk7IH0KIAotICAgIEVDbGVh
ciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpOyB9Ci0g
ICAgRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLnRhYmxlTGF5b3V0KCk7IH0KKyAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVy
biBtX25vbkluaGVyaXRlZEZsYWdzLmNsZWFyKCk7IH0KKyAgICBFVGFibGVMYXlvdXQgdGFibGVM
YXlvdXQoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLnRhYmxlTGF5b3V0KCk7
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmlj
cygpIGNvbnN0OwpAQCAtNzE4LDI3NyArMzQ4LDIxMiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc3Bl
Y2lmaWVkRm9udFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29u
c3Q7CiAgICAgaW50IGZvbnRTaXplKCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPEZvbnRPcmllbnRh
dGlvbiwgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4gZm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsK
KwogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdz
IGZvbnRWYXJpYXRpb25TZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigp
LnZhcmlhdGlvblNldHRpbmdzKCk7IH0KICNlbmRpZgotICAgIHN0ZDo6cGFpcjxGb250T3JpZW50
YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7
CiAKLSAgICBjb25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+aW5kZW50OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50OyB9CisgICAgRVRleHRBbGln
biB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX2lu
aGVyaXRlZEZsYWdzLnRleHRBbGlnbik7IH0KKyAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KG1faW5oZXJp
dGVkRmxhZ3MudGV4dFRyYW5zZm9ybSk7IH0KKyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9u
PihtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0KKyAgICBUZXh0RGVjb3JhdGlv
biB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0
aW9uPihtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uKTsgfQorICAgIFRleHREZWNvcmF0aW9u
U3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHREZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9u
U3R5bGUpOyB9CisgICAgVGV4dERlY29yYXRpb25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU2tpcD4obV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwKTsgfQorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlv
biB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
VW5kZXJsaW5lUG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3Np
dGlvbik7IH0KKwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgVGV4dEluZGVudExpbmUgdGV4
dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGluZT4o
cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudExpbmUpOyB9Ci0gICAgVGV4dEluZGVudFR5
cGUgdGV4dEluZGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50
VHlwZT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudFR5cGUpOyB9CisgICAgVGV4dElu
ZGVudExpbmUgdGV4dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
SW5kZW50TGluZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUpOyB9CisgICAg
VGV4dEluZGVudFR5cGUgdGV4dEluZGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0SW5kZW50VHlwZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudFR5cGUpOyB9
CisgICAgVGV4dEFsaWduTGFzdCB0ZXh0QWxpZ25MYXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dEFsaWduTGFzdD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdCk7
IH0KKyAgICBUZXh0SnVzdGlmeSB0ZXh0SnVzdGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRKdXN0aWZ5PihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeSk7IH0KICNl
bmRpZgotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVRleHRBbGlnbj4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduKTsgfQotICAgIEVUZXh0
VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4
dFRyYW5zZm9ybT4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSk7IH0KLSAgICBUZXh0
RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHREZWNvcmF0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMp
OyB9Ci0gICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4odmlzdWFsLT50ZXh0RGVjb3JhdGlvbik7IH0KLSNp
ZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIFRleHRBbGlnbkxhc3QgdGV4dEFsaWduTGFzdCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbkxhc3Q+KHJhcmVJbmhlcml0ZWREYXRh
LT5tX3RleHRBbGlnbkxhc3QpOyB9Ci0gICAgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SnVzdGlmeT4ocmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEp1c3RpZnkpOyB9Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgVGV4dERlY29yYXRpb25T
dHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dERlY29yYXRpb25TdHlsZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25T
dHlsZSk7IH0KLSAgICBUZXh0RGVjb3JhdGlvblNraXAgdGV4dERlY29yYXRpb25Ta2lwKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25Ta2lwPihyYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXApOyB9Ci0gICAgVGV4dFVuZGVybGluZVBvc2l0aW9u
IHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRV
bmRlcmxpbmVQb3NpdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFVuZGVybGluZVBvc2l0
aW9uKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiB3b3JkU3BhY2luZygpIGNvbnN0OwogICAgIGZs
b2F0IGxldHRlclNwYWNpbmcoKSBjb25zdDsKIAotICAgIGZsb2F0IHpvb20oKSBjb25zdCB7IHJl
dHVybiB2aXN1YWwtPm1fem9vbTsgfQotICAgIGZsb2F0IGVmZmVjdGl2ZVpvb20oKSBjb25zdCB7
IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVab29tOyB9CisgICAgZmxvYXQg
em9vbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+em9vbTsgfQorICAgIGZsb2F0IGVm
ZmVjdGl2ZVpvb20oKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3Rp
dmVab29tOyB9CiAgICAgCi0gICAgVGV4dFpvb20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0Wm9vbT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFpvb20pOyB9Cisg
ICAgVGV4dFpvb20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Wm9v
bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpvb20pOyB9CiAKLSAgICBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KGlu
aGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uKTsgfQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4obV9pbmhlcml0ZWRG
bGFncy5kaXJlY3Rpb24pOyB9CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gZGlyZWN0aW9uKCkgPT0gTFRSOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5
U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb24oKTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseVNldERpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldERp
cmVjdGlvbigpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHNwZWNpZmllZExpbmVIZWlnaHQoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBMZW5ndGggbGluZUhlaWdodCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IExlbmd0aCYgbGluZUhlaWdodCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIGludCBjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdDsKIAotICAgIEVXaGl0
ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFj
ZT4oaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBhdXRv
V3JhcChFV2hpdGVTcGFjZSB3cykKLSAgICB7Ci0gICAgICAgIC8vIE5vd3JhcCBhbmQgcHJlIGRv
bid0IGF1dG9tYXRpY2FsbHkgd3JhcC4KLSAgICAgICAgcmV0dXJuIHdzICE9IE5PV1JBUCAmJiB3
cyAhPSBQUkU7Ci0gICAgfQorICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4obV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNl
KTsgfQorICAgIHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlKTsKKyAgICBib29sIGF1
dG9XcmFwKCkgY29uc3QgeyByZXR1cm4gYXV0b1dyYXAod2hpdGVTcGFjZSgpKTsgfQorICAgIHN0
YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBwcmVzZXJ2
ZU5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBwcmVzZXJ2ZU5ld2xpbmUod2hpdGVTcGFjZSgpKTsg
fQorICAgIHN0YXRpYyBib29sIGNvbGxhcHNlV2hpdGVTcGFjZShFV2hpdGVTcGFjZSk7CisgICAg
Ym9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBjb2xsYXBzZVdoaXRlU3Bh
Y2Uod2hpdGVTcGFjZSgpKTsgfQorICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNo
YXIpIGNvbnN0OworICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3Q7Cisg
ICAgYm9vbCBicmVha1dvcmRzKCkgY29uc3Q7CisKKyAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5k
UmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX2JhY2tn
cm91bmREYXRhLT5iYWNrZ3JvdW5kLnJlcGVhdFgoKSk7IH0KKyAgICBFRmlsbFJlcGVhdCBiYWNr
Z3JvdW5kUmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0Piht
X2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnJlcGVhdFkoKSk7IH0KKyAgICBDb21wb3NpdGVP
cGVyYXRvciBiYWNrZ3JvdW5kQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29tcG9zaXRlT3BlcmF0b3I+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuY29tcG9zaXRl
KCkpOyB9CisgICAgRUZpbGxBdHRhY2htZW50IGJhY2tncm91bmRBdHRhY2htZW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxBdHRhY2htZW50PihtX2JhY2tncm91bmREYXRhLT5i
YWNrZ3JvdW5kLmF0dGFjaG1lbnQoKSk7IH0KKyAgICBFRmlsbEJveCBiYWNrZ3JvdW5kQ2xpcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX2JhY2tncm91bmREYXRhLT5i
YWNrZ3JvdW5kLmNsaXAoKSk7IH0KKyAgICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tn
cm91bmQub3JpZ2luKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC54UG9zaXRpb24o
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQueVBvc2l0aW9uKCk7IH0KKyAgICBFRmls
bFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZERhdGEtPmJhY2tncm91bmQuc2l6ZVR5cGUoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJh
Y2tncm91bmRTaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFj
a2dyb3VuZC5zaXplTGVuZ3RoKCk7IH0KKyAgICBGaWxsTGF5ZXImIGVuc3VyZUJhY2tncm91bmRM
YXllcnMoKSB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLmFjY2VzcygpLmJhY2tncm91bmQ7IH0K
KyAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmRMYXllcnMoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kOyB9CisKKyAgICBTdHlsZUltYWdlKiBtYXNrSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLmltYWdlKCk7
IH0KKyAgICBFRmlsbFJlcGVhdCBtYXNrUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsUmVwZWF0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFgoKSk7
IH0KKyAgICBFRmlsbFJlcGVhdCBtYXNrUmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsUmVwZWF0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFkoKSk7
IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBtYXNrQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1h
c2suY29tcG9zaXRlKCkpOyB9CisgICAgRUZpbGxCb3ggbWFza0NsaXAoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5jbGlw
KCkpOyB9CisgICAgRUZpbGxCb3ggbWFza09yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGaWxsQm94PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLm9yaWdpbigpKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgbWFza1hQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hc2sueFBvc2l0aW9uKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1h
c2tZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNr
LnlQb3NpdGlvbigpOyB9CisgICAgRUZpbGxTaXplVHlwZSBtYXNrU2l6ZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnNpemVUeXBlKCk7IH0KKyAgICBj
b25zdCBMZW5ndGhTaXplJiBtYXNrU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hc2suc2l6ZUxlbmd0aCgpOyB9CisgICAgRmlsbExheWVyJiBlbnN1
cmVNYXNrTGF5ZXJzKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5t
YXNrOyB9CisgICAgY29uc3QgRmlsbExheWVyJiBtYXNrTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzazsgfQorICAgIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXNrQm94SW1hZ2U7IH0KKyAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UuaW1hZ2UoKTsg
fQorCisgICAgRUJvcmRlckNvbGxhcHNlIGJvcmRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUJvcmRlckNvbGxhcHNlPihtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxh
cHNlKTsgfQorICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CisgICAg
ZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CisgICAgRUVtcHR5Q2VsbCBlbXB0
eUNlbGxzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUVtcHR5Q2VsbD4obV9pbmhlcml0
ZWRGbGFncy5lbXB0eUNlbGxzKTsgfQorICAgIEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lkZT4obV9pbmhlcml0ZWRGbGFncy5j
YXB0aW9uU2lkZSk7IH0KIAotICAgIGJvb2wgYXV0b1dyYXAoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGF1dG9XcmFwKHdoaXRlU3BhY2UoKSk7Ci0gICAgfQorICAgIEVMaXN0U3R5bGVU
eXBlIGxpc3RTdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxl
VHlwZT4obV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlKTsgfQorICAgIFN0eWxlSW1hZ2Uq
IGxpc3RTdHlsZUltYWdlKCkgY29uc3Q7CisgICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHls
ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9u
PihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKTsgfQorCisgICAgY29uc3QgTGVu
Z3RoJiBtYXJnaW5Ub3AoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnRv
cCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5Cb3R0b20oKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJvdHRvbSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJn
aW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5sZWZ0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPm1hcmdpbi5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJlZm9yZSh3cml0aW5nTW9k
ZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+bWFyZ2luLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBtYXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJn
aW4uc3RhcnQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmVuZCh3
cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0
YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5tYXJnaW4uc3RhcnQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3Ro
ZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmRVc2lu
Zyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPm1hcmdpbi5lbmQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+
ZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmVVc2luZyhjb25z
dCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
Pm1hcmdpbi5iZWZvcmUob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIG1hcmdpbkFmdGVyVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3Jp
dGluZ01vZGUoKSk7IH0KKworICAgIGNvbnN0IExlbmd0aEJveCYgcGFkZGluZ0JveCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nOyB9CisgICAgY29uc3QgTGVuZ3RoJiBw
YWRkaW5nVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcudG9wKCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+cGFkZGluZy5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGlu
Z0xlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5sZWZ0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5wYWRkaW5nLnJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCZWZv
cmUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5iZWZvcmUod3JpdGlu
Z01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdBZnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+cGFkZGluZy5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFk
ZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisKKyAgICBFQ3Vyc29yIGN1
cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KG1faW5oZXJpdGVkRmxh
Z3MuY3Vyc29yKTsgfQogCi0gICAgc3RhdGljIGJvb2wgcHJlc2VydmVOZXdsaW5lKEVXaGl0ZVNw
YWNlIHdzKQotICAgIHsKLSAgICAgICAgLy8gTm9ybWFsIGFuZCBub3dyYXAgZG8gbm90IHByZXNl
cnZlIG5ld2xpbmVzLgotICAgICAgICByZXR1cm4gd3MgIT0gTk9STUFMICYmIHdzICE9IE5PV1JB
UDsKLSAgICB9CisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgIEN1cnNvclZpc2li
aWxpdHkgY3Vyc29yVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNv
clZpc2liaWxpdHk+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSk7IH0KKyNlbmRp
ZgogCi0gICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHByZXNlcnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOwotICAgIH0KKyAgICBDdXJzb3JMaXN0
KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0
YS5nZXQoKTsgfQogCi0gICAgc3RhdGljIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNw
YWNlIHdzKQotICAgIHsKLSAgICAgICAgLy8gUHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBz
ZSB3aGl0ZXNwYWNlLgotICAgICAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQ
OwotICAgIH0KKyAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUluc2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAg
ICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5r
KCk7IH0KIAotICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVTcGFjZSgpKTsKLSAgICB9CisgICAg
Ym9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRGbGFn
cy5pbnNpZGVEZWZhdWx0QnV0dG9uOyB9CiAKLSAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNw
YWNlKFVDaGFyIGMpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAg
ICAgIGNhc2UgJyAnOgotICAgICAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICAgICAgICAgIHJl
dHVybiBjb2xsYXBzZVdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGNhc2UgJ1xuJzoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIXByZXNlcnZlTmV3bGluZSgpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+d2lkb3dzOyB9CisgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPm9ycGhhbnM7IH0KKyAgICBib29sIGhhc0F1
dG9XaWRvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oYXNBdXRvV2lk
b3dzOyB9CisgICAgYm9vbCBoYXNBdXRvT3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPmhhc0F1dG9PcnBoYW5zOyB9CiAKLSAgICBib29sIGJyZWFrT25seUFmdGVy
V2hpdGVTcGFjZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09
IFBSRV9XUkFQIHx8IGxpbmVCcmVhaygpID09IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZTsKLSAg
ICB9CisgICAgQnJlYWtJbnNpZGUgYnJlYWtJbnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCcmVha0luc2lkZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUpOyB9
CisgICAgQnJlYWtCZXR3ZWVuIGJyZWFrQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QnJlYWtCZXR3ZWVuPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0JlZm9yZSk7IH0K
KyAgICBCcmVha0JldHdlZW4gYnJlYWtBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEJyZWFrQmV0d2Vlbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtBZnRlcik7IH0KIAot
ICAgIGJvb2wgYnJlYWtXb3JkcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gd29yZEJy
ZWFrKCkgPT0gQnJlYWtXb3JkQnJlYWsgfHwgb3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxv
d1dyYXA7Ci0gICAgfQotCi0gICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3Jv
dW5kKCkucmVwZWF0WCgpKTsgfQotICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZC0+YmFj
a2dyb3VuZCgpLnJlcGVhdFkoKSk7IH0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBiYWNrZ3JvdW5k
Q29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+
KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLmNvbXBvc2l0ZSgpKTsgfQotICAgIEVGaWxsQXR0
YWNobWVudCBiYWNrZ3JvdW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVGaWxsQXR0YWNobWVudD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkuYXR0YWNobWVudCgp
KTsgfQotICAgIEVGaWxsQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLmNsaXAoKSk7IH0KLSAg
ICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLm9yaWdpbigpKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgYmFja2dyb3VuZFhQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZC0+YmFja2dyb3VuZCgpLnhQb3NpdGlvbigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNr
Z3JvdW5kWVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5k
KCkueVBvc2l0aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnNpemVUeXBlKCk7IH0K
LSAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNrZ3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxM
YXllciYgZW5zdXJlQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuIG1fYmFja2dyb3VuZC5hY2Nl
c3MoKS0+bV9iYWNrZ3JvdW5kOyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5
ZXJzKCkgY29uc3QgeyByZXR1cm4gJihtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKSk7IH0KLQot
ICAgIFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX21hc2suaW1hZ2UoKTsgfQotICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRYKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX21hc2sucmVwZWF0WCgpKTsgfQotICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRZKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX21hc2sucmVwZWF0WSgpKTsgfQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1hc2tDb21w
b3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5jb21wb3NpdGUoKSk7IH0KLSAgICBFRmlsbEJveCBt
YXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9tYXNrLmNsaXAoKSk7IH0KLSAgICBFRmlsbEJveCBtYXNrT3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX21hc2sub3JpZ2luKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay54UG9zaXRpb24oKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgbWFza1lQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX21hc2sueVBvc2l0aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBl
IG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2suc2l6ZVR5cGUoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5zaXplTGVuZ3RoKCk7
IH0KLSAgICBGaWxsTGF5ZXImIGVuc3VyZU1hc2tMYXllcnMoKSB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrOyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBtYXNr
TGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrKTsg
fQotICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2U7IH0KLSAgICBTdHlsZUltYWdl
KiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tYXNrQm94SW1hZ2UuaW1hZ2UoKTsgfQotIAotICAgIEVCb3JkZXJDb2xsYXBzZSBib3Jk
ZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJDb2xsYXBzZT4o
aW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UpOyB9Ci0gICAgZmxvYXQgaG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSBjb25zdDsKLSAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmco
KSBjb25zdDsKLSAgICBFRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFRW1wdHlDZWxsPihpbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzKTsgfQotICAg
IEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVD
YXB0aW9uU2lkZT4oaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUpOyB9Ci0KLSAgICBFTGlz
dFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxp
c3RTdHlsZVR5cGU+KGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlKTsgfQotICAgIFN0
eWxlSW1hZ2UqIGxpc3RTdHlsZUltYWdlKCkgY29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9u
IGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHls
ZVBvc2l0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24pOyB9Ci0KLSAg
ICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJn
aW4udG9wKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5tYXJnaW4uYm90dG9tKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdp
bkxlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmxlZnQoKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2lu
LnJpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5tYXJnaW4uYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBtYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0
ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rp
b24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5tYXJnaW4uZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHls
ZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5zdGFydChvdGhlclN0eWxlLT53cml0
aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhl
clN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZVVz
aW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+bWFyZ2luLmJlZm9yZShvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5n
TW9kZSgpKTsgfQotCi0gICAgY29uc3QgTGVuZ3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPnBhZGRpbmc7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3Ao
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy50b3AoKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgcGFkZGluZ0JvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJv
dHRvbSgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5wYWRkaW5nLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1Jp
Z2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcucmlnaHQoKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgcGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRk
aW5nLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0Fm
dGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUo
KSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5wYWRkaW5nLnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRk
aW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLQotICAgIEVDdXJzb3IgY3Vy
c29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdz
Ll9jdXJzb3Jfc3R5bGUpOyB9Ci0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIEN1
cnNvclZpc2liaWxpdHkgY3Vyc29yVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEN1cnNvclZpc2liaWxpdHk+KGluaGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkp
OyB9Ci0jZW5kaWYKLQotICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YS5nZXQoKTsgfQotCi0gICAgRUluc2lkZUxpbmsg
aW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPihpbmhl
cml0ZWRfZmxhZ3MuX2luc2lkZUxpbmspOyB9Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNMaW5rKCk7IH0KLQotICAgIGJvb2wgaW5zaWRlRGVm
YXVsdEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVs
dEJ1dHRvbjsgfQotCi0gICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVy
aXRlZERhdGEtPndpZG93czsgfQotICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+b3JwaGFuczsgfQotICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhc0F1dG9XaWRvd3M7IH0KLSAgICBi
b29sIGhhc0F1dG9PcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1f
aGFzQXV0b09ycGhhbnM7IH0KLQotICAgIC8vIENTUzMgR2V0dGVyIE1ldGhvZHMKLSAgICBCcmVh
a0luc2lkZSBicmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5z
aWRlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSk7IH0KLSAgICBCcmVha0Jl
dHdlZW4gYnJlYWtCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdl
ZW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlKTsgfQotICAgIEJyZWFrQmV0
d2VlbiBicmVha0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVu
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyKTsgfQotICAgIAotICAgIEhhbmdp
bmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxIYW5naW5nUHVuY3R1YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5j
dHVhdGlvbik7IH0KKyAgICBIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZ2luZ1B1bmN0dWF0aW9uPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRpb24pOyB9CiAKICAgICBmbG9hdCBvdXRsaW5lT2Zm
c2V0KCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LmdldCgpOyB9Ci0gICAgdm9pZCBn
ZXRUZXh0U2hhZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExh
eW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRl
bnQodGV4dFNoYWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOyB9Ci0gICAgdm9pZCBn
ZXRUZXh0U2hhZG93SG9yaXpvbnRhbEV4dGVudChMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0
JiByaWdodCkgY29uc3QgeyBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHRleHRTaGFkb3coKSwg
bGVmdCwgcmlnaHQpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQoTGF5
b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBib3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93VmVydGlj
YWxFeHRlbnQodGV4dFNoYWRvdygpLCB0b3AsIGJvdHRvbSk7IH0KKyAgICBjb25zdCBTaGFkb3dE
YXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNoYWRvdy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4
dGVudChMYXlvdXRVbml0JiBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBj
b25zdCB7IGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2lj
YWxMZWZ0LCBsb2dpY2FsUmlnaHQpOyB9CiAgICAgdm9pZCBnZXRUZXh0U2hhZG93QmxvY2tEaXJl
Y3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJv
dHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCks
IGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKLSAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lk
dGgoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZVdpZHRoOyB9
Ci0gICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX29wYWNpdHk7IH0KLSAgICBDb250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29udHJvbFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVh
cmFuY2UpOyB9Ci0gICAgQXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEFzcGVjdFJhdGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYXNwZWN0UmF0aW9UeXBlKTsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyBy
ZXR1cm4gYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSAvIGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKTsg
fQotICAgIGZsb2F0IGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOyB9Ci0gICAgZmxvYXQg
YXNwZWN0UmF0aW9OdW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9hc3BlY3RSYXRpb051bWVyYXRvcjsgfQotICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94QWxpZ25tZW50PihyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmFsaWduKTsgfQotICAgIEVCb3hEaXJl
Y3Rpb24gYm94RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveERpcmVj
dGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uKTsgfQotICAgIGZsb2F0IGJveEZs
ZXgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxl
eGlibGVCb3gtPmZsZXg7IH0KLSAgICB1bnNpZ25lZCBpbnQgYm94RmxleEdyb3VwKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5m
bGV4X2dyb3VwOyB9Ci0gICAgRUJveExpbmVzIGJveExpbmVzKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUJveExpbmVzPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxl
eGlibGVCb3gtPmxpbmVzKTsgfQotICAgIHVuc2lnbmVkIGludCBib3hPcmRpbmFsR3JvdXAoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVC
b3gtPm9yZGluYWxfZ3JvdXA7IH0KLSAgICBFQm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmllbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rl
cHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JpZW50KTsgfQotICAgIEVCb3hQYWNrIGJveFBhY2soKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQotCi0gICAgaW50IG9yZGVyKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXI7IH0KLSAgICBmbG9hdCBm
bGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxl
Qm94LT5tX2ZsZXhHcm93OyB9Ci0gICAgZmxvYXQgZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhTaHJpbms7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIGZsZXhCYXNpcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhCYXNpczsgfQotICAgIGNvbnN0IFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEmIGFsaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudDsgfQotICAgIENvbnRlbnRQb3NpdGlvbiBhbGln
bkNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FsaWduQ29udGVudC5wb3NpdGlvbigpOyB9Ci0gICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUg
YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWxpZ25Db250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGln
bm1lbnQgYWxpZ25Db250ZW50T3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWduSXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGFsaWdu
SXRlbXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fs
aWduSXRlbXMucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduSXRlbXNP
dmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FsaWduSXRlbXMub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERh
dGEmIGFsaWduU2VsZigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fs
aWduU2VsZjsgfQotICAgIEl0ZW1Qb3NpdGlvbiBhbGlnblNlbGZQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZi5wb3NpdGlvbigpOyB9Ci0g
ICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYub3ZlcmZsb3coKTsgfQot
ICAgIEVGbGV4RGlyZWN0aW9uIGZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFRmxleERpcmVjdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gt
Pm1fZmxleERpcmVjdGlvbik7IH0KKyAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KKyAgICBmbG9h
dCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0
eTsgfQorICAgIENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb250cm9sUGFydD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSk7IH0K
KyAgICBBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXNwZWN0UmF0aW9UeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hc3BlY3RS
YXRpb1R5cGUpOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvRGVub21pbmF0b3I7IH0K
KyAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvTnVtZXJhdG9yOyB9CisgICAgRUJveEFsaWdubWVu
dCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hBbGlnbm1lbnQ+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24pOyB9Cisg
ICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQm94RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbik7IH0KKyAgICBm
bG9hdCBib3hGbGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVw
cmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9CisgICAgdW5zaWduZWQgYm94RmxleEdyb3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxl
Qm94LT5mbGV4R3JvdXA7IH0KKyAgICBFQm94TGluZXMgYm94TGluZXMoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFQm94TGluZXM+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0
ZWRGbGV4aWJsZUJveC0+bGluZXMpOyB9CisgICAgdW5zaWduZWQgYm94T3JkaW5hbEdyb3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxl
Qm94LT5vcmRpbmFsR3JvdXA7IH0KKyAgICBFQm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmllbnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRl
cHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JpZW50KTsgfQorICAgIEVCb3hQYWNrIGJveFBhY2soKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQorCisgICAgaW50IG9yZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXI7IH0KKyAgICBmbG9hdCBm
bGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxl
Qm94LT5mbGV4R3JvdzsgfQorICAgIGZsb2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleFNocmluazsgfQorICAgIGNv
bnN0IExlbmd0aCYgZmxleEJhc2lzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+ZmxleGlibGVCb3gtPmZsZXhCYXNpczsgfQorICAgIGNvbnN0IFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEmIGFsaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmFsaWduQ29udGVudDsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERh
dGEmIGFsaWduSXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
bGlnbkl0ZW1zOyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxm
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmOyB9Cisg
ICAgRUZsZXhEaXJlY3Rpb24gZmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGbGV4RGlyZWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+
ZmxleERpcmVjdGlvbik7IH0KICAgICBib29sIGlzQ29sdW1uRmxleERpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1uIHx8IGZsZXhEaXJlY3Rpb24o
KSA9PSBGbG93Q29sdW1uUmV2ZXJzZTsgfQogICAgIGJvb2wgaXNSZXZlcnNlRmxleERpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Um93UmV2ZXJzZSB8fCBm
bGV4RGlyZWN0aW9uKCkgPT0gRmxvd0NvbHVtblJldmVyc2U7IH0KLSAgICBFRmxleFdyYXAgZmxl
eFdyYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleFdyYXA+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhXcmFwKTsgfQotICAgIGNvbnN0IFN0eWxl
Q29udGVudEFsaWdubWVudERhdGEmIGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQ7IH0KLSAgICBDb250ZW50UG9zaXRp
b24ganVzdGlmeUNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50LnBvc2l0aW9uKCk7IH0KLSAgICBDb250ZW50RGlzdHJp
YnV0aW9uVHlwZSBqdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0g
ICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlmeUNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50Lm92ZXJm
bG93KCk7IH0KLSAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXM7IH0K
LSAgICBJdGVtUG9zaXRpb24ganVzdGlmeUl0ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMucG9zaXRpb24oKTsgfQotICAgIE92
ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zLm92ZXJmbG93KCk7IH0K
LSAgICBJdGVtUG9zaXRpb25UeXBlIGp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtcy5wb3NpdGlvblR5cGUo
KTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGY7IH0KLSAgICBJ
dGVtUG9zaXRpb24ganVzdGlmeVNlbGZQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0Fs
aWdubWVudCBqdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYub3ZlcmZsb3coKTsgfQorICAgIEVGbGV4
V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhXcmFwKTsgfQorICAgIGNvbnN0
IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQ7IH0KKyAgICBjb25zdCBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5SXRlbXM7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZB
bGlnbm1lbnREYXRhJiBqdXN0aWZ5U2VsZigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmp1c3RpZnlTZWxmOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQot
ICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZENvbHVtbnMoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9Ci0gICAg
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KLSAgICBjb25zdCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zOyB9
Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdFJvd3MoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvUmVw
ZWF0Um93czsgfQotICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBv
aW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRv
UmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OyB9Ci0gICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBl
YXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBBdXRvUmVw
ZWF0VHlwZSBncmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9Ci0gICAg
QXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzVHlwZTsgfQotICAg
IGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29sdW1uTGlu
ZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZFJv
d0xpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE9yZGVy
ZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRHcmlkUm93
TGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3Jp
ZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdy
aWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGlu
ZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7IH0K
LSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBO
YW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhOyB9Ci0gICAgc2l6ZV90IG5hbWVk
R3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50OyB9Ci0gICAgc2l6ZV90IG5hbWVkR3JpZEFy
ZWFDb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWQtPm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9Ci0gICAgR3JpZEF1dG9GbG93IGdyaWRB
dXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0Zsb3cpOyB9Ci0gICAgYm9vbCBpc0dy
aWRBdXRvRmxvd0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25S
b3cpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIElu
dGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxv
d0FsZ29yaXRobVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2Up
OyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkgY29uc3QgeyByZXR1
cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJu
YWxBdXRvRmxvd0FsZ29yaXRobURlbnNlKTsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgZ3JpZEF1dG9Db2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0NvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9Sb3dzOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkQ29s
dW1uR2FwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9n
cmlkQ29sdW1uR2FwOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkUm93R2FwKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93R2FwOyB9Ci0KLQot
ICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW5TdGFydDsg
fQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5FbmQoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uRW5kOyB9
Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZFJvd1N0YXJ0OyB9Ci0g
ICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3dFbmQ7IH0KLSNlbmRpZiAv
KiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwotCi0gICAgY29uc3QgU2hhZG93RGF0YSogYm94
U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93
LmdldCgpOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRDb2x1bW5z
OyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRSb3dzOyB9CisgICAgY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdENvbHVtbnMoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b1JlcGVhdENvbHVt
bnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Um93
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRv
UmVwZWF0Um93czsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlv
blBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0
b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludDsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVw
ZWF0Um93c0luc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Z3JpZC0+YXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsgfQorICAgIEF1dG9SZXBl
YXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSBjb25zdCAgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9CisgICAgQXV0
b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Um93c1R5cGU7IH0KKyAgICBjb25z
dCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQor
ICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm5hbWVkR3JpZFJvd0xpbmVzOyB9
CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5v
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAg
IGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0
TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0
b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3Qg
T3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1l
ZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+
bmFtZWRHcmlkQXJlYTsgfQorICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhUm93Q291bnQoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRBcmVhUm93
Q291bnQ7IH0KKyAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50OyB9CisgICAgR3JpZEF1dG9GbG93IGdyaWRBdXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3Jp
ZEF1dG9GbG93KTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSBjb25z
dCB7IHJldHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYg
SW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdyk7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93
RGlyZWN0aW9uQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9
CisgICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJu
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1
dG9GbG93QWxnb3JpdGhtU3BhcnNlKTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dBbGdvcml0
aG1EZW5zZSgpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5n
cmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UpOyB9CisgICAgY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b0NvbHVtbnMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0NvbHVtbnM7IH0KKyAgICBj
b25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvUm93czsgfQorICAgIGNvbnN0
IExlbmd0aCYgZ3JpZENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmdyaWQtPmdyaWRDb2x1bW5HYXA7IH0KKyAgICBjb25zdCBMZW5ndGgmIGdyaWRSb3dH
YXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkUm93
R2FwOyB9CisKKyAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJdGVtQ29sdW1uU3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZENvbHVt
blN0YXJ0OyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbUNvbHVtbkVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtLT5ncmlkQ29sdW1u
RW5kOyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0tPmdyaWRSb3dTdGFydDsg
fQorICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Sb3dFbmQoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZFJvd0VuZDsgfQorI2VuZGlm
IC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hT
aGFkb3coKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hTaGFkb3cu
Z2V0KCk7IH0KICAgICB2b2lkIGdldEJveFNoYWRvd0V4dGVudChMYXlvdXRVbml0JiB0b3AsIExh
eW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNv
bnN0IHsgZ2V0U2hhZG93RXh0ZW50KGJveFNoYWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQpOyB9CiAgICAgTGF5b3V0Qm94RXh0ZW50IGdldEJveFNoYWRvd0luc2V0RXh0ZW50KCkgY29u
c3QgeyByZXR1cm4gZ2V0U2hhZG93SW5zZXRFeHRlbnQoYm94U2hhZG93KCkpOyB9CiAgICAgdm9p
ZCBnZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0ZW50KExheW91dFVuaXQmIGxlZnQsIExheW91dFVu
aXQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoYm94U2hhZG93KCks
IGxlZnQsIHJpZ2h0KTsgfQpAQCAtOTk3LDEzNiArNTYyLDEzMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRCb3hTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Jsb2NrRGlyZWN0
aW9uRXh0ZW50KGJveFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAj
aWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKLSAgICBFQm94RGVjb3JhdGlvbkJy
ZWFrIGJveERlY29yYXRpb25CcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5ib3hEZWNvcmF0
aW9uQnJlYWsoKTsgfQorICAgIEVCb3hEZWNvcmF0aW9uQnJlYWsgYm94RGVjb3JhdGlvbkJyZWFr
KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5ib3hEZWNvcmF0aW9uQnJlYWsoKTsgfQogI2Vu
ZGlmCi0gICAgU3R5bGVSZWZsZWN0aW9uKiBib3hSZWZsZWN0KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYm94UmVmbGVjdC5nZXQoKTsgfQotICAgIEVCb3hTaXppbmcg
Ym94U2l6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPmJveFNpemluZygpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoJiBtYXJxdWVlSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFycXVlZS0+aW5jcmVtZW50OyB9Ci0gICAgaW50IG1hcnF1ZWVTcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPnNwZWVkOyB9
Ci0gICAgaW50IG1hcnF1ZWVMb29wQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXJxdWVlLT5sb29wczsgfQotICAgIEVNYXJxdWVlQmVoYXZpb3IgbWFycXVl
ZUJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVCZWhhdmlvcj4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+YmVoYXZpb3IpOyB9Ci0gICAgRU1hcnF1
ZWVEaXJlY3Rpb24gbWFycXVlZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVNYXJxdWVlRGlyZWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5kaXJl
Y3Rpb24pOyB9Ci0gICAgRVVzZXJNb2RpZnkgdXNlck1vZGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVVc2VyTW9kaWZ5PihyYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSk7IH0K
LSAgICBFVXNlckRyYWcgdXNlckRyYWcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNl
ckRyYWc+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyk7IH0KLSAgICBFVXNlclNlbGVj
dCB1c2VyU2VsZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KHJh
cmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0KTsgfQotICAgIFRleHRPdmVyZmxvdyB0ZXh0T3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3ZlcmZsb3c+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpOyB9Ci0gICAgRU1hcmdpbkNvbGxhcHNlIG1hcmdp
bkJlZm9yZUNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxh
cHNlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UpOyB9Ci0gICAg
RU1hcmdpbkNvbGxhcHNlIG1hcmdpbkFmdGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRl
ckNvbGxhcHNlKTsgfQotICAgIEVXb3JkQnJlYWsgd29yZEJyZWFrKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVdvcmRCcmVhaz4ocmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayk7IH0K
LSAgICBFT3ZlcmZsb3dXcmFwIG92ZXJmbG93V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVPdmVyZmxvd1dyYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9Ci0g
ICAgRU5CU1BNb2RlIG5ic3BNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BN
b2RlPihyYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUpOyB9Ci0gICAgTGluZUJyZWFrIGxpbmVC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVCcmVhaz4ocmFyZUluaGVyaXRl
ZERhdGEtPmxpbmVCcmVhayk7IH0KLSAgICBIeXBoZW5zIGh5cGhlbnMoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxIeXBoZW5zPihyYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7IH0KLSAg
ICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVy
aXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmU7IH0KLSAgICBzaG9ydCBoeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRp
b25MaW1pdEFmdGVyOyB9Ci0gICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7IH0KKworICAgIFN0eWxlUmVmbGVj
dGlvbiogYm94UmVmbGVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmJveFJlZmxlY3QuZ2V0KCk7IH0KKyAgICBFQm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsg
cmV0dXJuIG1fYm94RGF0YS0+Ym94U2l6aW5nKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcnF1
ZWVJbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJx
dWVlLT5pbmNyZW1lbnQ7IH0KKyAgICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+c3BlZWQ7IH0KKyAgICBpbnQgbWFycXVl
ZUxvb3BDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1
ZWUtPmxvb3BzOyB9CisgICAgRU1hcnF1ZWVCZWhhdmlvciBtYXJxdWVlQmVoYXZpb3IoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFycXVlZUJlaGF2aW9yPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJxdWVlLT5iZWhhdmlvcik7IH0KKyAgICBFTWFycXVlZURpcmVjdGlvbiBtYXJx
dWVlRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVEaXJlY3Rp
b24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmRpcmVjdGlvbik7IH0KKyAgICBF
VXNlck1vZGlmeSB1c2VyTW9kaWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJN
b2RpZnk+KG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkpOyB9CisgICAgRVVzZXJEcmFn
IHVzZXJEcmFnKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJEcmFnPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyk7IH0KKyAgICBFVXNlclNlbGVjdCB1c2VyU2VsZWN0
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnVzZXJTZWxlY3QpOyB9CisgICAgVGV4dE92ZXJmbG93IHRleHRPdmVyZmxvdygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPdmVyZmxvdz4obV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dE92ZXJmbG93KTsgfQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5CZWZvcmVD
b2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UpOyB9CisgICAgRU1hcmdp
bkNvbGxhcHNlIG1hcmdpbkFmdGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFTWFyZ2luQ29sbGFwc2U+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29s
bGFwc2UpOyB9CisgICAgRVdvcmRCcmVhayB3b3JkQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFV29yZEJyZWFrPihtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWspOyB9Cisg
ICAgRU92ZXJmbG93V3JhcCBvdmVyZmxvd1dyYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFT3ZlcmZsb3dXcmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9Cisg
ICAgRU5CU1BNb2RlIG5ic3BNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BN
b2RlPihtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSk7IH0KKyAgICBMaW5lQnJlYWsgbGlu
ZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUJyZWFrPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5saW5lQnJlYWspOyB9CisgICAgSHlwaGVucyBoeXBoZW5zKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SHlwaGVucz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7
IH0KKyAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZTsgfQorICAgIHNob3J0IGh5
cGhlbmF0aW9uTGltaXRBZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uTGltaXRBZnRlcjsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5l
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRM
aW5lczsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0
aW9uKCkubG9jYWxlKCk7IH0KLSAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRl
ckZpdCk7IH0KLSAgICBFUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVSZXNpemU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Jlc2l6ZSk7IH0KLSAgICBDb2x1bW5B
eGlzIGNvbHVtbkF4aXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5BeGlzPihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9heGlzKTsgfQotICAgIGJvb2wgaGFz
SW5saW5lQ29sdW1uQXhpcygpIGNvbnN0IHsKLSAgICAgICAgQ29sdW1uQXhpcyBheGlzID0gY29s
dW1uQXhpcygpOwotICAgICAgICByZXR1cm4gYXhpcyA9PSBBdXRvQ29sdW1uQXhpcyB8fCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID09IChheGlzID09IEhvcml6b250YWxDb2x1bW5BeGlzKTsK
LSAgICB9Ci0gICAgQ29sdW1uUHJvZ3Jlc3Npb24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5Qcm9ncmVzc2lvbj4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fbXVsdGlDb2wtPm1fcHJvZ3Jlc3Npb24pOyB9Ci0gICAgZmxvYXQgY29sdW1uV2lkdGgo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV93aWR0
aDsgfQotICAgIGJvb2wgaGFzQXV0b0NvbHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fYXV0b1dpZHRoOyB9Ci0gICAgdW5zaWduZWQg
c2hvcnQgY29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9tdWx0aUNvbC0+bV9jb3VudDsgfQotICAgIGJvb2wgaGFzQXV0b0NvbHVtbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fYXV0b0NvdW50
OyB9CisgICAgRUJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CisgICAg
RVJlc2l6ZSByZXNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUmVzaXplPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUpOyB9CisgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlz
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9CisgICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlz
KCkgY29uc3Q7CisgICAgQ29sdW1uUHJvZ3Jlc3Npb24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5Qcm9ncmVzc2lvbj4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bXVsdGlDb2wtPnByb2dyZXNzaW9uKTsgfQorICAgIGZsb2F0IGNvbHVtbldpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPndpZHRo
OyB9CisgICAgYm9vbCBoYXNBdXRvQ29sdW1uV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+YXV0b1dpZHRoOyB9CisgICAgdW5zaWduZWQgc2hv
cnQgY29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
dWx0aUNvbC0+Y291bnQ7IH0KKyAgICBib29sIGhhc0F1dG9Db2x1bW5Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5hdXRvQ291bnQ7IH0KICAg
ICBib29sIHNwZWNpZmllc0NvbHVtbnMoKSBjb25zdCB7IHJldHVybiAhaGFzQXV0b0NvbHVtbkNv
dW50KCkgfHwgIWhhc0F1dG9Db2x1bW5XaWR0aCgpIHx8ICFoYXNJbmxpbmVDb2x1bW5BeGlzKCk7
IH0KLSAgICBDb2x1bW5GaWxsIGNvbHVtbkZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDb2x1bW5GaWxsPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9maWxsKTsg
fQotICAgIGZsb2F0IGNvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX211bHRpQ29sLT5tX2dhcDsgfQotICAgIGJvb2wgaGFzTm9ybWFsQ29sdW1uR2FwKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fbm9ybWFs
R2FwOyB9Ci0gICAgRUJvcmRlclN0eWxlIGNvbHVtblJ1bGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuc3R5bGUoKTsgfQotICAg
IHVuc2lnbmVkIHNob3J0IGNvbHVtblJ1bGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5ydWxlV2lkdGgoKTsgfQotICAgIGJvb2wgY29sdW1u
UnVsZUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9tdWx0aUNvbC0+bV9ydWxlLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIENvbHVtblNwYW4gY29s
dW1uU3BhbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblNwYW4+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2NvbHVtblNwYW4pOyB9Ci0KLSAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IExlbmd0
aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybS0+bV94OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5Z
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3k7
IH0KLSAgICBmbG9hdCB0cmFuc2Zvcm1PcmlnaW5aKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3o7IH0KLSAgICBib29sIGhhc1RyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9Ci0KLSAgICBUZXh0RW1waGFzaXNGaWxs
IHRleHRFbXBoYXNpc0ZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFz
aXNGaWxsPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCk7IH0KKyAgICBDb2x1
bW5GaWxsIGNvbHVtbkZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5GaWxs
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+ZmlsbCk7IH0KKyAgICBmbG9hdCBj
b2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNv
bC0+Z2FwOyB9CisgICAgYm9vbCBoYXNOb3JtYWxDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+bm9ybWFsR2FwOyB9CisgICAgRUJvcmRl
clN0eWxlIGNvbHVtblJ1bGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm11bHRpQ29sLT5ydWxlLnN0eWxlKCk7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBjb2x1
bW5SdWxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0
aUNvbC0+cnVsZVdpZHRoKCk7IH0KKyAgICBib29sIGNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuaXNU
cmFuc3BhcmVudCgpOyB9CisgICAgQ29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29sdW1uU3Bhbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlD
b2wtPmNvbHVtblNwYW4pOyB9CisKKyAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0t
Pm9wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPng7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPnk7IH0KKyAgICBmbG9hdCB0cmFuc2Zvcm1PcmlnaW5a
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT56OyB9
CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0K
KworICAgIFRleHRFbXBoYXNpc0ZpbGwgdGV4dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc0ZpbGw+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc0ZpbGwpOyB9CiAgICAgVGV4dEVtcGhhc2lzTWFyayB0ZXh0RW1waGFzaXNNYXJrKCkg
Y29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcms7
IH0KLSAgICBUZXh0RW1waGFzaXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPihyYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24pOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0
ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyazsgfQorICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRl
eHRFbXBoYXNpc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhh
c2lzUG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uKTsg
fQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0
OwogCi0gICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJ1YnlQb3NpdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uKTsg
fQorICAgIFJ1YnlQb3NpdGlvbiBydWJ5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxSdWJ5UG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnJ1YnlQb3NpdGlvbik7IH0K
IAotICAgIFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0T3JpZW50YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmll
bnRhdGlvbik7IH0KKyAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0T3JpZW50YXRpb24pOyB9CiAKLSAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9v
YmplY3RGaXQpOyB9Ci0gICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbjsgfQorICAgIE9iamVj
dEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KKyAgICBMZW5ndGhQb2ludCBvYmpl
Y3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVj
dFBvc2l0aW9uOyB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgdHJhbnNmb3JtIHJlbGF0
ZWQgcHJvcGVydHkgKGN1cnJlbnRseSB0cmFuc2Zvcm0sIHRyYW5zZm9ybVN0eWxlM0Qgb3IgcGVy
c3BlY3RpdmUpCi0gICAgLy8gaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHRyYW5zZm9ybWluZworICAg
IC8vIGluZGljYXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zvcm1pbmcuCiAgICAgYm9vbCBoYXNUcmFu
c2Zvcm1SZWxhdGVkUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm0oKSB8fCBw
cmVzZXJ2ZXMzRCgpIHx8IGhhc1BlcnNwZWN0aXZlKCk7IH0KIAogICAgIGVudW0gQXBwbHlUcmFu
c2Zvcm1PcmlnaW4geyBJbmNsdWRlVHJhbnNmb3JtT3JpZ2luLCBFeGNsdWRlVHJhbnNmb3JtT3Jp
Z2luIH07CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIEFwcGx5VHJhbnNmb3JtT3JpZ2luID0gSW5jbHVk
ZVRyYW5zZm9ybU9yaWdpbikgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0o
ZmxvYXQpOwogCi0gICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay5oYXNJbWFnZSgpIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CisgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5oYXNJbWFnZSgpIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CiAKLSAgICBUZXh0Q29tYmlu
ZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSk7IH0KKyAgICBUZXh0Q29tYmluZSB0
ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21i
aW5lKCkgY29uc3QgeyByZXR1cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZU5vbmU7IH0K
IAotICAgIHVuc2lnbmVkIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+bV90YWJTaXplOyB9CisgICAgdW5zaWduZWQgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMK
IAotICAgIGJvb2wgaGFzRmxvd0ludG8oKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZmxvd1RocmVhZC5pc051bGwoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Zmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dU
aHJlYWQ7IH0KLSAgICBib29sIGhhc0Zsb3dGcm9tKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVhZC5pc051bGwoKTsgfQotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcmVnaW9uVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fcmVnaW9uVGhyZWFkOyB9Ci0gICAgUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWdpb25GcmFnbWVudD4ocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fcmVnaW9uRnJhZ21lbnQpOyB9CisgICAgYm9vbCBoYXNGbG93SW50bygpIGNv
bnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbG93VGhyZWFkLmlzTnVsbCgp
OyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmxvd1RocmVhZDsgfQorICAgIGJvb2wgaGFzRmxvd0Zy
b20oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uVGhyZWFk
LmlzTnVsbCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25UaHJlYWQ7IH0KKyAgICBS
ZWdpb25GcmFnbWVudCByZWdpb25GcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFJlZ2lvbkZyYWdtZW50PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCk7
IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdyaWQoKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lR3JpZDsgfQotICAgIExpbmVTbmFwIGxpbmVTbmFwKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNuYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5t
X2xpbmVTbmFwKTsgfQotICAgIExpbmVBbGlnbiBsaW5lQWxpZ24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxMaW5lQWxpZ24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbik7IH0K
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUdyaWQ7IH0KKyAgICBMaW5lU25hcCBsaW5lU25hcCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVTbmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5l
U25hcCk7IH0KKyAgICBMaW5lQWxpZ24gbGluZUFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8TGluZUFsaWduPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24pOyB9CiAKLSAg
ICAvLyBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0eSBnZXR0ZXIgbWV0aG9kcwotICAgIEVQb2ludGVy
RXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRl
ckV2ZW50cz4oaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzKTsgfQotICAgIGNvbnN0IEFu
aW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9hbmltYXRpb25zLmdldCgpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdHJh
bnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0
aW9ucy5nZXQoKTsgfQorICAgIEVQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4obV9pbmhlcml0ZWRGbGFncy5wb2lu
dGVyRXZlbnRzKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOyB9Cisg
ICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9ucy5nZXQoKTsgfQogCi0gICAgQW5pbWF0aW9u
TGlzdCogYW5pbWF0aW9ucygpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1h
dGlvbnMuZ2V0KCk7IH0KLSAgICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLmdldCgpOyB9CisgICAgQW5pbWF0
aW9uTGlzdCogYW5pbWF0aW9ucygpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFu
aW1hdGlvbnMuZ2V0KCk7IH0KKyAgICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOyB9CiAgICAgCi0g
ICAgYm9vbCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpOyB9CisgICAgYm9v
bCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCk7IH0KIAogICAgIEFuaW1h
dGlvbkxpc3QmIGVuc3VyZUFuaW1hdGlvbnMoKTsKICAgICBBbmltYXRpb25MaXN0JiBlbnN1cmVU
cmFuc2l0aW9ucygpOwogCi0gICAgYm9vbCBoYXNBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucyAmJiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9hbmltYXRpb25zLT5zaXplKCkgPiAwOyB9Ci0gICAgYm9vbCBoYXNUcmFuc2l0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zICYmIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLT5zaXplKCkgPiAwOyB9CisgICAgYm9v
bCBoYXNBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
YW5pbWF0aW9ucyAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLT5zaXplKCkg
PiAwOyB9CisgICAgYm9vbCBoYXNUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zaXRpb25zLT5zaXplKCkgPiAwOyB9CiAKLSAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGZvdW5k
IEFuaW1hdGlvbiAoaW5jbHVkaW5nICdhbGwnIHRyYW5zaXRpb25zKQorICAgIC8vIFJldHVybiB0
aGUgZmlyc3QgZm91bmQgQW5pbWF0aW9uIChpbmNsdWRpbmcgJ2FsbCcgdHJhbnNpdGlvbnMpLgog
ICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQp
IGNvbnN0OwogCi0gICAgRVRyYW5zZm9ybVN0eWxlM0QgdHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUcmFuc2Zvcm1TdHlsZTNEPihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEKTsgfQotICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEID09IFRy
YW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEOyB9CisgICAgRVRyYW5zZm9ybVN0eWxlM0QgdHJhbnNm
b3JtU3R5bGUzRCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUcmFuc2Zvcm1TdHlsZTNE
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHlsZTNEKTsgfQorICAgIGJvb2wg
cHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2Zvcm1TdHlsZTNEID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEOyB9CiAKLSAgICBFQmFj
a2ZhY2VWaXNpYmlsaXR5IGJhY2tmYWNlVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVCYWNrZmFjZVZpc2liaWxpdHk+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tm
YWNlVmlzaWJpbGl0eSk7IH0KLSAgICBmbG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlOyB9Ci0gICAgYm9vbCBoYXNQZXJz
cGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0
aXZlID4gMDsgfQotICAgIGNvbnN0IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5YKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YOyB9Ci0g
ICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblk7IH0KLSAgICBjb25zdCBMZW5n
dGhTaXplJiBwYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3BhZ2VTaXplOyB9Ci0gICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFBhZ2VTaXplVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFn
ZVNpemVUeXBlKTsgfQorICAgIEVCYWNrZmFjZVZpc2liaWxpdHkgYmFja2ZhY2VWaXNpYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tmYWNlVmlzaWJpbGl0eT4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VWaXNpYmlsaXR5KTsgfQorICAgIGZsb2F0IHBlcnNw
ZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3Rp
dmU7IH0KKyAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUgPiAwOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwZXJz
cGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5w
ZXJzcGVjdGl2ZU9yaWdpblg7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2lu
WSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3Jp
Z2luWTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGFnZVNpemU7IH0KKyAgICBQYWdlU2l6ZVR5cGUgcGFn
ZVNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBlPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wYWdlU2l6ZVR5cGUpOyB9CiAgICAgCi0gICAgTGluZUJveENv
bnRhaW4gbGluZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
bV9saW5lQm94Q29udGFpbjsgfQotICAgIGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9Ci0gICAg
Y29uc3QgSW50U2l6ZSYgaW5pdGlhbExldHRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXI7IH0KKyAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94
Q29udGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250
YWluOyB9CisgICAgY29uc3QgTGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcDsgfQorICAgIGNvbnN0IEludFNp
emUmIGluaXRpYWxMZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5pbml0aWFsTGV0dGVyOyB9CiAgICAgaW50IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyBy
ZXR1cm4gaW5pdGlhbExldHRlcigpLndpZHRoKCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRvdWNoQWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90b3VjaEFjdGlvbik7IH0KKyAgICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRvdWNoQWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
b3VjaEFjdGlvbik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAg
LTExNTAsNjkgKzcxMiw2MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCi0gICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJl
SW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyAgICBDb2xvciB0YXBIaWdobGln
aHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdo
dENvbG9yOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIHRvdWNoQ2Fs
bG91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dG91Y2hDYWxs
b3V0RW5hYmxlZDsgfQorICAgIGJvb2wgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRvdWNoQ2FsbG91dEVuYWJsZWQ7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICBib29sIHVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzsgfQorICAgIGJvb2wgdXNlVG91Y2hPdmVyZmxv
d1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmc7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKLSAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJldHVy
biByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KKyAgICBUZXh0U2l6ZUFkanVz
dG1lbnQgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U2l6ZUFkanVzdDsgfQogI2VuZGlmCiAKLSAgICBFVGV4dFNlY3VyaXR5IHRleHRTZWN1
cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0U2VjdXJpdHk+KHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CisgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJp
dHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CiAKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRpbmdNb2RlPihpbmhlcml0ZWRfZmxh
Z3MubV93cml0aW5nTW9kZSk7IH0KKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRpbmdNb2RlPihtX2luaGVyaXRlZEZsYWdzLndyaXRp
bmdNb2RlKTsgfQogICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBXZWJDb3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQog
ICAgIGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgYm9vbCBpc0ZsaXBw
ZWRMaW5lc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkTGlu
ZXNXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9k
ZSh3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmll
bnRhdGlvbigpIGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04p
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4ocmFyZUlu
aGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbik7Ci0jZWxzZQotICAgICAgICByZXR1cm4g
RGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci0jZW5kaWYKLSAgICB9CisgICAgSW1hZ2VPcmllbnRh
dGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OwogCi0gICAgRUltYWdlUmVuZGVyaW5n
IGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUltYWdlUmVuZGVy
aW5nPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyk7IH0KKyAgICBFSW1hZ2VS
ZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW1h
Z2VSZW5kZXJpbmc+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIEltYWdlUmVzb2x1dGlvblNvdXJj
ZSBpbWFnZVJlc29sdXRpb25Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFn
ZVJlc29sdXRpb25Tb3VyY2U+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNv
dXJjZSk7IH0KLSAgICBJbWFnZVJlc29sdXRpb25TbmFwIGltYWdlUmVzb2x1dGlvblNuYXAoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25TbmFwPihyYXJlSW5oZXJp
dGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25TbmFwKTsgfQotICAgIGZsb2F0IGltYWdlUmVzb2x1
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlv
bjsgfQorICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbWFnZVJlc29sdXRpb25Tb3VyY2UoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25Tb3VyY2U+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZSk7IH0KKyAgICBJbWFnZVJlc29sdXRp
b25TbmFwIGltYWdlUmVzb2x1dGlvblNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJ
bWFnZVJlc29sdXRpb25TbmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25T
bmFwKTsgfQorICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvbjsgfQogI2VuZGlmCiAgICAgCi0gICAgRVNw
ZWFrIHNwZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVNwZWFrPihyYXJlSW5oZXJp
dGVkRGF0YS0+c3BlYWspOyB9CisgICAgRVNwZWFrIHNwZWFrKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RVNwZWFrPihtX3JhcmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KIAotICAgIEZp
bHRlck9wZXJhdGlvbnMmIG11dGFibGVGaWx0ZXIoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9maWx0ZXIuYWNjZXNzKCktPm1fb3BlcmF0aW9uczsgfQotICAgIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zOyB9Ci0gICAgYm9vbCBoYXNGaWx0ZXIo
KSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIEZpbHRlck9wZXJhdGlvbnMmIG11
dGFibGVGaWx0ZXIoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmZp
bHRlci5hY2Nlc3MoKS5vcGVyYXRpb25zOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5v
cGVyYXRpb25zOyB9CisgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5
KCk7IH0KICAgICBib29sIGhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdDsKIAogI2lmIEVO
QUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUJhY2tk
cm9wRmlsdGVyKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYmFj
a2Ryb3BGaWx0ZXIuYWNjZXNzKCktPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYmFja2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9uczsgfQotICAgIGJvb2wgaGFzQmFj
a2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFj
a2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CisgICAg
RmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUJhY2tkcm9wRmlsdGVyKCkgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5iYWNrZHJvcEZpbHRlci5hY2Nlc3MoKS5vcGVyYXRp
b25zOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2Ryb3BGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlci0+b3BlcmF0
aW9uczsgfQorICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXItPm9wZXJhdGlvbnMub3BlcmF0aW9u
cygpLmlzRW1wdHkoKTsgfQogI2Vsc2UKICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElO
RykKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
QmxlbmRNb2RlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpOyB9
Ci0gICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIGJsZW5kTW9kZSkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZSwgYmxlbmRNb2RlKTsgfQot
ICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRN
b2RlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5k
TW9kZU5vcm1hbDsgfQorICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJs
ZW5kTW9kZSk7IH0KKyAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGVmZmVjdGl2ZUJsZW5kTW9kZSwgbW9kZSk7IH0K
KyAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5k
TW9kZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKSAhPSBCbGVu
ZE1vZGVOb3JtYWw7IH0KIAotICAgIElzb2xhdGlvbiBpc29sYXRpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxJc29sYXRpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzb2xhdGlv
bik7IH0KLSAgICB2b2lkIHNldElzb2xhdGlvbihJc29sYXRpb24gaXNvbGF0aW9uKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faXNvbGF0aW9uLCBpc29sYXRpb24pOyB9Ci0gICAg
Ym9vbCBoYXNJc29sYXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9pc29sYXRpb24gIT0gSXNvbGF0aW9uQXV0bzsgfQorICAgIElzb2xhdGlvbiBpc29sYXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRpb24+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmlzb2xhdGlvbik7IH0KKyAgICB2b2lkIHNldElzb2xhdGlvbihJc29sYXRpb24gaXNv
bGF0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaXNvbGF0aW9uLCBpc29s
YXRpb24pOyB9CisgICAgYm9vbCBoYXNJc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5pc29sYXRpb24gIT0gSXNvbGF0aW9uQXV0bzsgfQogI2Vsc2UKICAg
ICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9
CiAgICAgYm9vbCBoYXNCbGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTIy
NCw1NzMgKzc3OSw1MDYgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUGxhY2VCbG9ja0RpcmVj
dGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19X
T1JEKQotICAgIFRyYWlsaW5nV29yZCB0cmFpbGluZ1dvcmQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUcmFpbGluZ1dvcmQ+KHJhcmVJbmhlcml0ZWREYXRhLT50cmFpbGluZ1dvcmQpOyB9
CisgICAgVHJhaWxpbmdXb3JkIHRyYWlsaW5nV29yZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRyYWlsaW5nV29yZD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dHJhaWxpbmdXb3JkKTsgfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUg
YXBwbGVQYXlCdXR0b25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5
QnV0dG9uU3R5bGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGxlUGF5QnV0dG9uU3R5bGUp
OyB9Ci0gICAgQXBwbGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYXBwbGVQYXlCdXR0b25UeXBlKTsgfQorICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBw
bGVQYXlCdXR0b25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0
dG9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9uU3R5bGUpOyB9
CisgICAgQXBwbGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YXBwbGVQYXlCdXR0b25UeXBlKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGNoZWNrVmFyaWFi
bGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCk7CiAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwog
Ci0gICAgdm9pZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNl
dEVmZmVjdGl2ZURpc3BsYXkodik7IH0KLSAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlz
cGxheSB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRPcmlnaW5hbERpc3BsYXkodik7IH0KLSAg
ICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQ
b3NpdGlvbih2KTsgfQotICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsgbm9uaW5oZXJp
dGVkX2ZsYWdzLnNldEZsb2F0aW5nKHYpOyB9Ci0KLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmxlZnQoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2
b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgp
LCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIG9mZnNldC50b3AoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldEJvdHRvbShM
ZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQuYm90dG9tKCksIFdURk1vdmUodikp
OyB9Ci0KLSAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lk
dGgsIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZB
UihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxX
aWR0aChMZW5ndGggdikKLSAgICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYpKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBX
VEZNb3ZlKHYpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXkoRURpc3Bs
YXkgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEVmZmVjdGl2ZURpc3BsYXkodik7IH0KKyAg
ICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3Muc2V0T3JpZ2luYWxEaXNwbGF5KHYpOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRp
b24gdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CisgICAgdm9pZCBz
ZXRGbG9hdGluZyhFRmxvYXQgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEZsb2F0aW5nKHYp
OyB9CiAKLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoIHYpCi0gICAgewotICAgICAg
ICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgU0VUX1ZBUiht
X2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBvZmZzZXQubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRSaWdo
dChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LnJpZ2h0
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRvcChMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIG9mZnNldC5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogCi0gICAgdm9p
ZCBzZXRNaW5XaWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21pbldpZHRoLCBXVEZN
b3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0TWF4V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2Jv
eCwgbV9tYXhXaWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1pbkhlaWdodChMZW5n
dGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21pbkhlaWdodCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2
b2lkIHNldE1heEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heEhlaWdodCwg
V1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldFdpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
VkFSKG1fYm94RGF0YSwgbV93aWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
SGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9oZWlnaHQsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKExlbmd0aCYmKTsK
KyAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoJiYpOworCisgICAgdm9pZCBzZXRNaW5X
aWR0aChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWluV2lkdGgsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1heFdpZHRoKExlbmd0aCYmIGxlbmd0aCkg
eyBTRVRfVkFSKG1fYm94RGF0YSwgbV9tYXhXaWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0TWluSGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwg
bV9taW5IZWlnaHQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1heEhlaWdodChM
ZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWF4SGVpZ2h0LCBXVEZNb3Zl
KGxlbmd0aCkpOyB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQotICAgIHZvaWQgc2V0
RGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lvbnMpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kYXNoYm9hcmRSZWdpb25zLCByZWdpb25z
KTsgfQotCi0gICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIExlbmd0aCB0LCBMZW5ndGggciwgTGVuZ3RoIGIsIExlbmd0aCBsLCBib29sIGFw
cGVuZCkKLSAgICB7Ci0gICAgICAgIFN0eWxlRGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKLSAgICAg
ICAgcmVnaW9uLmxhYmVsID0gbGFiZWw7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgPSBX
VEZNb3ZlKHQpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBXVEZNb3ZlKHIpOwot
ICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gV1RGTW92ZShiKTsKLSAgICAgICAgcmVn
aW9uLm9mZnNldC5sZWZ0KCkgPSBXVEZNb3ZlKGwpOwotICAgICAgICByZWdpb24udHlwZSA9IHR5
cGU7Ci0gICAgICAgIGlmICghYXBwZW5kKQotICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOwotICAgICAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kYXNoYm9hcmRSZWdpb25zLmFwcGVuZChyZWdpb24p
OwotICAgIH0KKyAgICBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBkYXNoYm9h
cmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJv
YXJkUmVnaW9uczsgfQorICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9ucyhjb25zdCBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+JiByZWdpb25zKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZGFzaGJvYXJkUmVnaW9ucywgcmVnaW9ucyk7IH0KKyAgICB2b2lkIHNldERhc2hi
b2FyZFJlZ2lvbihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoJiYgdG9wLCBM
ZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0LCBib29sIGFwcGVu
ZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVzZXRCb3JkZXIoKSB7IHJlc2V0Qm9yZGVySW1hZ2Uo
KTsgcmVzZXRCb3JkZXJUb3AoKTsgcmVzZXRCb3JkZXJSaWdodCgpOyByZXNldEJvcmRlckJvdHRv
bSgpOyByZXNldEJvcmRlckxlZnQoKTsgcmVzZXRCb3JkZXJSYWRpdXMoKTsgfQotICAgIHZvaWQg
cmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcCwgQm9yZGVy
VmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyUmlnaHQoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3Jk
ZXJCb3R0b20oKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbSwgQm9yZGVyVmFs
dWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyTGVmdCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
Ym9yZGVyLm1fbGVmdCwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVySW1h
Z2UoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2ltYWdlLCBOaW5lUGllY2VJbWFnZSgp
KTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyUmln
aHQoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1
ZSgpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b20oKSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2JvdHRvbSwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0
Qm9yZGVyTGVmdCgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdCwgQm9y
ZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVySW1hZ2UoKSB7IFNFVF9WQVIobV9z
dXJyb3VuZERhdGEsIGJvcmRlci5tX2ltYWdlLCBOaW5lUGllY2VJbWFnZSgpKTsgfQogICAgIHZv
aWQgcmVzZXRCb3JkZXJSYWRpdXMoKSB7IHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpOyByZXNl
dEJvcmRlclRvcFJpZ2h0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpOyBy
ZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9w
TGVmdFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlh
bEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRp
dXMoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsg
fQotICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAg
ICB2b2lkIHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQg
cmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9y
ZGVyLm1fdG9wUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVy
Lm1fYm90dG9tTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRC
b3JkZXJCb3R0b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVy
Lm1fYm90dG9tUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KIAotICAgIHZvaWQgc2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBt
X2NvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgY29sb3IsIHYpOyB9CiAKLSAgICB2b2lkIHNl
dEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fYmFja2dyb3VuZC5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0QmFja2dyb3VuZFNpemUoRUZpbGxTaXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNr
Z3JvdW5kLCBtX2JhY2tncm91bmQubV9zaXplVHlwZSwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tn
cm91bmRTaXplTGVuZ3RoKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwg
bV9iYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNl
dEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3Jv
dW5kRGF0YSwgYmFja2dyb3VuZC5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlvbihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5kLm1feVBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZShFRmlsbFNpemVUeXBlIGIpIHsgU0VUX1ZB
UihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5kLm1fc2l6ZVR5cGUsIGIpOyB9CisgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kU2l6ZUxlbmd0aChMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1f
YmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQubV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsg
fQogICAgIAotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1faW1hZ2UsIGIpOyB9CisgICAgdm9pZCBzZXRC
b3JkZXJJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBib3JkZXIubV9pbWFnZSwgYik7IH0KICAgICB2b2lkIHNldEJvcmRlckltYWdlU291cmNl
KFJlZlB0cjxTdHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldEJvcmRlckltYWdlU2xpY2VzKExl
bmd0aEJveCk7Ci0gICAgdm9pZCBzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCk7Ci0gICAg
dm9pZCBzZXRCb3JkZXJJbWFnZU91dHNldChMZW5ndGhCb3gpOwotCi0gICAgdm9pZCBzZXRCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3Jk
ZXIubV90b3BMZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmln
aHRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3Rv
cFJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tTGVmdFJh
ZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9t
TGVmdCwgV1RGTW92ZShzaXplKSk7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21S
aWdodCwgV1RGTW92ZShzaXplKSk7IH0KLQotICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKExlbmd0
aFNpemUgcykKLSAgICB7Ci0gICAgICAgIHNldEJvcmRlclRvcExlZnRSYWRpdXMocyk7Ci0gICAg
ICAgIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKHMpOwotICAgICAgICBzZXRCb3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKHMpOwotICAgICAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhzKTsKLSAg
ICB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykKLSAgICB7Ci0g
ICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVk
KSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwotICAgIH0KLSAgICAKKyAgICB2b2lkIHNl
dEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJveCYmKTsKKyAgICB2b2lkIHNldEJvcmRlckltYWdl
V2lkdGgoTGVuZ3RoQm94JiYpOworICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3Ro
Qm94JiYpOworCisgICAgdm9pZCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKExlbmd0aFNpemUmJiBz
aXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcExlZnQsIFdURk1vdmUo
c2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXplJiYg
c2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BSaWdodCwgV1RGTW92
ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6
ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tTGVmdCwg
V1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKExl
bmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRv
bVJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQorCisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVu
Z3RoU2l6ZSYmKTsKKyAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJik7CisK
ICAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJv
cmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKICAgICBSb3VuZGVkUmVjdCBnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpIGNvbnN0OwogCiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91
dFVuaXQgYm90dG9tV2lkdGgsCiAgICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRV
bml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Qm9y
ZGVyTGVmdFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5t
X3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdik7IH0KLSAgICB2
b2lkIHNldEJvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVf
Q09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2xlZnQsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJS
aWdodFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV93
aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdik7IH0KLSAgICB2
b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVF
X0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRl
clRvcFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fd2lk
dGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBT
RVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNl
dEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihz
dXJyb3VuZCwgYm9yZGVyLm1fdG9wLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lk
dGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwg
dik7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQg
c2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NP
TE9SKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20sIHYpOyB9Ci0KLSAgICB2b2lkIHNldE91dGxp
bmVXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV93aWR0
aCwgdik7IH0KLSAgICB2b2lkIHNldE91dGxpbmVTdHlsZUlzQXV0byhPdXRsaW5lSXNBdXRvIGlz
QXV0bykgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8p
OyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUiht
X2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGlu
ZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91
bmQsIG1fb3V0bGluZSwgdik7IH0KLQotICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyB2
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRPdmVyZmxvd1godik7IH0KLSAgICB2b2lkIHNldE92
ZXJmbG93WShFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0T3ZlcmZsb3dZKHYp
OyB9Ci0gICAgdm9pZCBzZXRWaXNpYmlsaXR5KEVWaXNpYmlsaXR5IHYpIHsgaW5oZXJpdGVkX2Zs
YWdzLl92aXNpYmlsaXR5ID0gdjsgfQotICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGlj
YWxBbGlnbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRWZXJ0aWNhbEFsaWduKHYpOyB9Ci0g
ICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGlj
YWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUo
bGVuZ3RoKSk7IH0KLQotICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9W
QVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0K
LSAgICB2b2lkIHNldENsaXBSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBj
bGlwLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBUb3AoTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC50b3AoKSwgV1RGTW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlz
dWFsLCBjbGlwLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlw
KExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwot
ICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBX
VEZNb3ZlKGJveCkpOyB9Ci0KLSAgICB2b2lkIHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSBi
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRVbmljb2RlQmlkaShiKTsgfQotCi0gICAgdm9pZCBz
ZXRDbGVhcihFQ2xlYXIgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0Q2xlYXIodik7IH0KLSAg
ICB2b2lkIHNldFRhYmxlTGF5b3V0KEVUYWJsZUxheW91dCB2KSB7IG5vbmluaGVyaXRlZF9mbGFn
cy5zZXRUYWJsZUxheW91dCh2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFdpZHRoKGZsb2F0
IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2KTsg
fQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNl
dEJvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Io
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xlZnQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJS
aWdodFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmln
aHQubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0
eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwg
dik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9yaWdodCwgdik7IH0K
KyAgICB2b2lkIHNldEJvcmRlclRvcFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5k
RGF0YSwgYm9yZGVyLm1fdG9wLm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BT
dHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90
b3AubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9w
LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwgdik7IH0KKyAgICB2b2lk
IHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVy
Qm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vy
cm91bmREYXRhLCBib3JkZXIubV9ib3R0b20sIHYpOyB9CisKKyAgICB2b2lkIHNldE91dGxpbmVX
aWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX3dpZHRo
LCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNB
dXRvKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX2lzQXV0bywgaXNBdXRv
KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIo
bV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0T3V0
bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tn
cm91bmREYXRhLCBvdXRsaW5lLCB2KTsgfQorCisgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJm
bG93IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRPdmVyZmxvd1godik7IH0KKyAgICB2b2lk
IHNldE92ZXJmbG93WShFT3ZlcmZsb3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldE92ZXJm
bG93WSh2KTsgfQorICAgIHZvaWQgc2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IG1faW5o
ZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHY7IH0KKyAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24o
RVZlcnRpY2FsQWxpZ24gdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFZlcnRpY2FsQWxpZ24o
dik7IH0KKyAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ25MZW5ndGgoTGVuZ3RoJiYgbGVuZ3RoKSB7
IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fdmVydGljYWxB
bGlnbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorCisgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9
IHRydWUpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGhhc0NsaXAsIGIpOyB9CisgICAgdm9pZCBz
ZXRDbGlwTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAu
bGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3Ro
JiYgbGVuZ3RoKSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLnJpZ2h0KCksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV92aXN1YWxEYXRhLCBjbGlwLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9p
ZCBzZXRDbGlwQm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwg
Y2xpcC5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcChMZW5n
dGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQp
OworICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3gmJiBib3gpIHsgU0VUX1ZBUihtX3Zpc3VhbERh
dGEsIGNsaXAsIFdURk1vdmUoYm94KSk7IH0KKworICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVu
aWNvZGVCaWRpIGIpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRVbmljb2RlQmlkaShiKTsgfQor
CisgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldENs
ZWFyKHYpOyB9CisgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLnNldFRhYmxlTGF5b3V0KHYpOyB9CiAKICAgICBib29sIHNldEZvbnRE
ZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJik7CisKICAgICAvLyBPbmx5
IHVzZWQgZm9yIGJsZW5kaW5nIGZvbnQgc2l6ZXMgd2hlbiBhbmltYXRpbmcsIGZvciBNYXRoTUwg
YW5vbnltb3VzIGJsb2NrcywgYW5kIGZvciB0ZXh0IGF1dG9zaXppbmcuCiAgICAgdm9pZCBzZXRG
b250U2l6ZShmbG9hdCk7CisKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIHZvaWQg
c2V0Rm9udFZhcmlhdGlvblNldHRpbmdzKEZvbnRWYXJpYXRpb25TZXR0aW5ncyk7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIHNldFRleHRJbmRl
bnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4
dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX3RleHRJbmRlbnRMaW5lLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dEluZGVudFR5cGUoVGV4
dEluZGVudFR5cGUgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRJbmRlbnRU
eXBlLCB2KTsgfQotI2VuZGlmCi0gICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiA9IHY7IH0KLSAgICB2b2lkIHNldFRleHRUcmFu
c2Zvcm0oRVRleHRUcmFuc2Zvcm0gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3Jt
ID0gdjsgfQotICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3Jh
dGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9Ci0gICAg
dm9pZCBzZXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVy
aXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyA9IHY7IH0KLSAgICB2b2lkIHNldFRleHREZWNv
cmF0aW9uKFRleHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUih2aXN1YWwsIHRleHREZWNvcmF0aW9u
LCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldFRleHRBbGlnbihFVGV4dEFsaWduIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxp
Z24gPSB2OyB9CisgICAgdm9pZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsg
bV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gdjsgfQorICAgIHZvaWQgYWRkVG9UZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dERlY29yYXRpb25zIHw9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMg
PSB2OyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2KSB7IFNF
VF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KKyAgICB2b2lkIHNl
dFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KKyAgICB2b2lk
IHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KKyAg
ICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5k
aXJlY3Rpb24gPSB2OyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJv
b2wgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24o
dik7IH0KKyAgICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoJiYpOworICAgIGJvb2wgc2V0Wm9v
bShmbG9hdCk7CisgICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsg
c2V0Wm9vbShmKTsgfQorICAgIGJvb2wgc2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7CisgICAgdm9p
ZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFpvb20sIHYpOyB9CisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4
dEFsaWduTGFzdChUZXh0QWxpZ25MYXN0IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bV90ZXh0QWxpZ25MYXN0LCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dEp1c3RpZnkoVGV4dEp1c3Rp
ZnkgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRKdXN0aWZ5LCB2KTsgfQor
ICAgIHZvaWQgc2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRJbmRlbnRMaW5lLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4
dEluZGVudFR5cGUoVGV4dEluZGVudFR5cGUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRleHRJbmRlbnRUeXBlLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEFsaWduTGFzdChUZXh0
QWxpZ25MYXN0IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0QWxpZ25MYXN0
LCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEp1c3RpZnkoVGV4dEp1c3RpZnkgdikgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRKdXN0aWZ5LCB2KTsgfQogI2VuZGlmCi0gICAgdm9p
ZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RleHREZWNvcmF0aW9uU3R5bGUsIHYpOyB9Ci0gICAg
dm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAoVGV4dERlY29yYXRpb25Ta2lwIHNraXApIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0RGVjb3JhdGlvblNraXAsIHNraXApOyB9Ci0g
ICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYp
OyB9Ci0gICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IGluaGVyaXRlZF9m
bGFncy5fZGlyZWN0aW9uID0gdjsgfQotICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVj
dGlvbihib29sIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXREaXJl
Y3Rpb24odik7IH0KKwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRT
cGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB2KTsKKyAgICB2b2lkIHNldFNwZWNpZmllZExpbmVI
ZWlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCi0gICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCBz
cGVjaWZpZWRMaW5lSGVpZ2h0KTsKLSAgICBib29sIHNldFpvb20oZmxvYXQpOwotICAgIHZvaWQg
c2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KLSAgICBi
b29sIHNldEVmZmVjdGl2ZVpvb20oZmxvYXQpOwotICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpv
b20gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRab29tLCB2KTsgfQotICAg
IAorCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB2b2lkIHNldEltYWdl
T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCBtX2ltYWdlT3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CisgICAg
dm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+
KHYpKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5nKEVJbWFnZVJlbmRl
cmluZyB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZW5kZXJpbmcsIHYp
OyB9CisgICAgdm9pZCBzZXRJbWFnZVJlbmRlcmluZyhFSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVuZGVyaW5nLCB2KTsgfQogCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU291
cmNlKEltYWdlUmVzb2x1dGlvblNvdXJjZSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IG1faW1hZ2VSZXNvbHV0aW9uU291cmNlLCB2KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0
aW9uU25hcChJbWFnZVJlc29sdXRpb25TbmFwIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgbV9pbWFnZVJlc29sdXRpb25TbmFwLCB2KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0
aW9uKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRp
b24sIGYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25Tb3VyY2UoSW1hZ2VSZXNvbHV0
aW9uU291cmNlIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRp
b25Tb3VyY2UsIHYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25TbmFwKEltYWdlUmVz
b2x1dGlvblNuYXAgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1
dGlvblNuYXAsIHYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvbiwgZik7IH0KICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHYpIHsgaW5oZXJpdGVkX2Zs
YWdzLl93aGl0ZV9zcGFjZSA9IHY7IH0KKyAgICB2b2lkIHNldFdoaXRlU3BhY2UoRVdoaXRlU3Bh
Y2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSB2OyB9CiAKLSAgICB2b2lkIHNl
dFdvcmRTcGFjaW5nKExlbmd0aCk7CisgICAgdm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgmJik7
CiAgICAgdm9pZCBzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0KTsKIAotICAgIHZvaWQgY2xlYXJCYWNr
Z3JvdW5kTGF5ZXJzKCkgeyBtX2JhY2tncm91bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZCA9IEZp
bGxMYXllcihCYWNrZ3JvdW5kRmlsbExheWVyKTsgfQotICAgIHZvaWQgaW5oZXJpdEJhY2tncm91
bmRMYXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgbV9iYWNrZ3JvdW5kLmFjY2Vzcygp
LT5tX2JhY2tncm91bmQgPSBwYXJlbnQ7IH0KKyAgICB2b2lkIGNsZWFyQmFja2dyb3VuZExheWVy
cygpIHsgbV9iYWNrZ3JvdW5kRGF0YS5hY2Nlc3MoKS5iYWNrZ3JvdW5kID0gRmlsbExheWVyKEJh
Y2tncm91bmRGaWxsTGF5ZXIpOyB9CisgICAgdm9pZCBpbmhlcml0QmFja2dyb3VuZExheWVycyhj
b25zdCBGaWxsTGF5ZXImIHBhcmVudCkgeyBtX2JhY2tncm91bmREYXRhLmFjY2VzcygpLmJhY2tn
cm91bmQgPSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgYWRqdXN0QmFja2dyb3VuZExheWVycygpCi0g
ICAgewotICAgICAgICBpZiAoYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKLSAgICAgICAg
ICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAg
ICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgdm9pZCBhZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCk7CiAKLSAgICB2
b2lkIGNsZWFyTWFza0xheWVycygpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
bWFzayA9IEZpbGxMYXllcihNYXNrRmlsbExheWVyKTsgfQotICAgIHZvaWQgaW5oZXJpdE1hc2tM
YXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fbWFzayA9IHBhcmVudDsgfQorICAgIHZvaWQgY2xlYXJNYXNrTGF5ZXJzKCkgeyBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2sgPSBGaWxsTGF5ZXIoTWFza0ZpbGxM
YXllcik7IH0KKyAgICB2b2lkIGluaGVyaXRNYXNrTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFy
ZW50KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFzayA9IHBhcmVudDsgfQog
Ci0gICAgdm9pZCBhZGp1c3RNYXNrTGF5ZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmIChtYXNrTGF5
ZXJzKCktPm5leHQoKSkgewotICAgICAgICAgICAgZW5zdXJlTWFza0xheWVycygpLmN1bGxFbXB0
eUxheWVycygpOwotICAgICAgICAgICAgZW5zdXJlTWFza0xheWVycygpLmZpbGxVbnNldFByb3Bl
cnRpZXMoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGFkanVzdE1hc2tMYXllcnMoKTsK
IAotICAgIHZvaWQgc2V0TWFza0ltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFzay5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQor
ICAgIHZvaWQgc2V0TWFza0ltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNrLnNldEltYWdlKFdURk1vdmUodikpOyB9CiAKLSAg
ICB2b2lkIHNldE1hc2tCb3hJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2tCb3hJbWFnZSwgYik7IH0KLSAgICB2b2lkIHNl
dE1hc2tCb3hJbWFnZVNvdXJjZShSZWZQdHI8U3R5bGVJbWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2tCb3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsg
fQotICAgIHZvaWQgc2V0TWFza1hQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsg
fQotICAgIHZvaWQgc2V0TWFza1lQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsg
fQotICAgIHZvaWQgc2V0TWFza1NpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9Cisg
ICAgdm9pZCBzZXRNYXNrQm94SW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXNrQm94SW1hZ2UsIGIpOyB9CisgICAgdm9pZCBz
ZXRNYXNrQm94SW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikgeyBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2tCb3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsg
fQorICAgIHZvaWQgc2V0TWFza1hQb3NpdGlvbihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXNrLm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CisgICAgdm9pZCBzZXRNYXNrWVBvc2l0aW9uKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2subV95UG9zaXRpb24sIFdURk1vdmUobGVuZ3Ro
KSk7IH0KKyAgICB2b2lkIHNldE1hc2tTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2subV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsg
fQogCi0gICAgdm9pZCBzZXRCb3JkZXJDb2xsYXBzZShFQm9yZGVyQ29sbGFwc2UgY29sbGFwc2Up
IHsgaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgPSBjb2xsYXBzZTsgfQorICAgIHZv
aWQgc2V0Qm9yZGVyQ29sbGFwc2UoRUJvcmRlckNvbGxhcHNlIGNvbGxhcHNlKSB7IG1faW5oZXJp
dGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBjb2xsYXBzZTsgfQogICAgIHZvaWQgc2V0SG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwogICAgIHZvaWQgc2V0VmVydGljYWxCb3JkZXJTcGFj
aW5nKGZsb2F0KTsKLSAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IGluaGVy
aXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgPSB2OyB9Ci0gICAgdm9pZCBzZXRDYXB0aW9uU2lkZShF
Q2FwdGlvblNpZGUgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSA9IHY7IH0KKyAg
ICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1w
dHlDZWxscyA9IHY7IH0KKyAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7
IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgPSB2OyB9CiAKLSAgICB2b2lkIHNldEFzcGVj
dFJhdGlvVHlwZShBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9UeXBlLCBhc3BlY3RSYXRpb1R5cGUpOyB9
Ci0gICAgdm9pZCBzZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCB2KTsgfQotICAg
IHZvaWQgc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yLCB2KTsgfQorICAgIHZvaWQgc2V0
QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRpb1R5cGUsIGFzcGVjdFJhdGlvVHlw
ZSk7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoZmxvYXQgdikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHYpOyB9
CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAKLSAgICB2
b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBpbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfdHlwZSA9IHY7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RT
dHlsZVR5cGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSB2OyB9CiAgICAg
dm9pZCBzZXRMaXN0U3R5bGVJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJik7Ci0gICAgdm9pZCBz
ZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxh
Z3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gPSB2OyB9Ci0KLSAgICB2b2lkIHJlc2V0TWFyZ2luKCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9p
ZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4u
dG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShs
ZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2lu
LnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExl
bmd0aCk7Ci0gICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKLQotICAgIHZvaWQgcmVzZXRQ
YWRkaW5nKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9
Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgcGFkZGluZywgV1RGTW92ZShib3gpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1RvcChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcudG9wKCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAg
dm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBh
ZGRpbmcubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nUmln
aHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnJpZ2h0KCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLQotICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhl
cml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVBv
c2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxl
UG9zaXRpb24gPSB2OyB9CisKKyAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKG1fc3Vy
cm91bmREYXRhLCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9CisgICAgdm9pZCBzZXRNYXJn
aW5Ub3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi50
b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0
aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4uYm90dG9tKCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFS
KG1fc3Vycm91bmREYXRhLCBtYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0TWFyZ2luRW5kKExl
bmd0aCYmKTsKKworICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm94
KExlbmd0aEJveCYmIGJveCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLCBXVEZN
b3ZlKGJveCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
c3Vycm91bmREYXRhLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5k
RGF0YSwgcGFkZGluZy5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBh
ZGRpbmdSaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFk
ZGluZy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisKKyAgICB2b2lkIHNldEN1cnNvcihF
Q3Vyc29yIGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBjOyB9CiAgICAgdm9pZCBhZGRD
dXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIGNvbnN0IEludFBvaW50JiBob3RTcG90ID0gSW50
UG9pbnQoKSk7CiAgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFJlZlB0cjxDdXJzb3JMaXN0PiYmKTsK
ICAgICB2b2lkIGNsZWFyQ3Vyc29yTGlzdCgpOwogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklM
SVRZKQotICAgIHZvaWQgc2V0Q3Vyc29yVmlzaWJpbGl0eShDdXJzb3JWaXNpYmlsaXR5IGMpIHsg
aW5oZXJpdGVkX2ZsYWdzLm1fY3Vyc29yVmlzaWJpbGl0eSA9IGM7IH0KKyAgICB2b2lkIHNldEN1
cnNvclZpc2liaWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vy
c29yVmlzaWJpbGl0eSA9IGM7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJ
bnNpZGVMaW5rIGluc2lkZUxpbmspIHsgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5z
aWRlTGluazsgfQotICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxh
Z3Muc2V0SXNMaW5rKGIpOyB9CisgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGlu
c2lkZUxpbmspIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQor
ICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldElzTGlu
ayhiKTsgfQogCi0gICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVm
YXVsdEJ1dHRvbikgeyBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gPSBpbnNp
ZGVEZWZhdWx0QnV0dG9uOyB9CisgICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wg
aW5zaWRlRGVmYXVsdEJ1dHRvbikgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0
b24gPSBpbnNpZGVEZWZhdWx0QnV0dG9uOyB9CiAKLSAgICBQcmludENvbG9yQWRqdXN0IHByaW50
Q29sb3JBZGp1c3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmludENvbG9yQWRqdXN0
Pihpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0KTsgfQotICAgIHZvaWQgc2V0UHJp
bnRDb2xvckFkanVzdChQcmludENvbG9yQWRqdXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5t
X3ByaW50Q29sb3JBZGp1c3QgPSB2YWx1ZTsgfQorICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRD
b2xvckFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+
KG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCk7IH0KKyAgICB2b2lkIHNldFByaW50
Q29sb3JBZGp1c3QoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkgeyBtX2luaGVyaXRlZEZsYWdzLnBy
aW50Q29sb3JBZGp1c3QgPSB2YWx1ZTsgfQogCi0gICAgYm9vbCBoYXNBdXRvWkluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9ib3gtPmhhc0F1dG9aSW5kZXgoKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0
b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveCwgbV9oYXNBdXRvWkluZGV4LCB0cnVlKTsgU0VUX1ZB
UihtX2JveCwgbV96SW5kZXgsIDApOyB9Ci0gICAgaW50IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fYm94LT56SW5kZXgoKTsgfQotICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIo
bV9ib3gsIG1faGFzQXV0b1pJbmRleCwgZmFsc2UpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwg
dik7IH0KKyAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEt
Pmhhc0F1dG9aSW5kZXgoKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgpIHsgU0VUX1ZB
UihtX2JveERhdGEsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3hEYXRhLCBt
X3pJbmRleCwgMCk7IH0KKyAgICBpbnQgekluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRh
LT56SW5kZXgoKTsgfQorICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3hE
YXRhLCBtX2hhc0F1dG9aSW5kZXgsIGZhbHNlKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fekluZGV4
LCB2KTsgfQogCi0gICAgdm9pZCBzZXRIYXNBdXRvV2lkb3dzKCkgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBtX2hhc0F1dG9XaWRvd3MsIHRydWUpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCB3aWRvd3MsIGluaXRpYWxXaWRvd3MoKSk7IH0KLSAgICB2b2lkIHNldFdpZG93cyhzaG9y
dCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywgZmFsc2Up
OyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIHcpOyB9CisgICAgdm9pZCBzZXRI
YXNBdXRvV2lkb3dzKCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9XaWRv
d3MsIHRydWUpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdp
ZG93cygpKTsgfQorICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBoYXNBdXRvV2lkb3dzLCBmYWxzZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgd2lkb3dzLCB3KTsgfQogCi0gICAgdm9pZCBzZXRIYXNBdXRvT3JwaGFucygpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3JwaGFucywgdHJ1ZSk7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIGluaXRpYWxPcnBoYW5zKCkpOyB9Ci0gICAg
dm9pZCBzZXRPcnBoYW5zKHNob3J0IG8pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9o
YXNBdXRvT3JwaGFucywgZmFsc2UpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5z
LCBvKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b09ycGhhbnMoKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgaGFzQXV0b09ycGhhbnMsIHRydWUpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIG9ycGhhbnMsIGluaXRpYWxPcnBoYW5zKCkpOyB9CisgICAgdm9pZCBzZXRPcnBoYW5z
KHNob3J0IG8pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvT3JwaGFucywg
ZmFsc2UpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIG8pOyB9CiAKICAg
ICAvLyBDU1MzIFNldHRlcnMKLSAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoZmxvYXQgdikgeyBT
RVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQorICAgIHZvaWQg
c2V0T3V0bGluZU9mZnNldChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0
bGluZS5tX29mZnNldCwgdik7IH0KICAgICB2b2lkIHNldFRleHRTaGFkb3coc3RkOjp1bmlxdWVf
cHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFRleHRTdHJv
a2VDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
U3Ryb2tlQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQgdykg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9Ci0gICAg
dm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0
IGYpIHsgZmxvYXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX29wYWNpdHksIHYpOyB9Ci0gICAgdm9pZCBzZXRBcHBlYXJhbmNlKENv
bnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBlYXJhbmNl
LCBhKTsgfQorICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKTsgfQorICAgIHZv
aWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9CisgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNv
bnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xv
ciwgYyk7IH0KKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBU
bzxmbG9hdD4oZiwgMCwgMSk7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0
eSwgdik7IH0KKyAgICB2b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFwcGVhcmFuY2UsIGEpOyB9CiAgICAgLy8gRm9yIHZh
bGlkIHZhbHVlcyBvZiBib3gtYWxpZ24gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0Qt
Y3NzMy1mbGV4Ym94LTIwMDkwNzIzLyNhbGlnbm1lbnQKLSAgICB2b2lkIHNldEJveEFsaWduKEVC
b3hBbGlnbm1lbnQgYSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9k
ZXByZWNhdGVkRmxleGlibGVCb3gsIGFsaWduLCBhKTsgfQorICAgIHZvaWQgc2V0Qm94QWxpZ24o
RUJveEFsaWdubWVudCBhKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgYWxpZ24sIGEpOyB9CisgICAgdm9pZCBzZXRCb3hEaXJl
Y3Rpb24oRUJveERpcmVjdGlvbiBkKSB7IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0g
ZDsgfQorICAgIHZvaWQgc2V0Qm94RmxleChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleCwgZik7IH0KKyAg
ICB2b2lkIHNldEJveEZsZXhHcm91cCh1bnNpZ25lZCBncm91cCkgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXhHcm91cCwg
Z3JvdXApOyB9CisgICAgdm9pZCBzZXRCb3hMaW5lcyhFQm94TGluZXMgbGluZXMpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBs
aW5lcywgbGluZXMpOyB9CisgICAgdm9pZCBzZXRCb3hPcmRpbmFsR3JvdXAodW5zaWduZWQgZ3Jv
dXApIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZs
ZXhpYmxlQm94LCBvcmRpbmFsR3JvdXAsIGdyb3VwKTsgfQorICAgIHZvaWQgc2V0Qm94T3JpZW50
KEVCb3hPcmllbnQgbykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBk
ZXByZWNhdGVkRmxleGlibGVCb3gsIG9yaWVudCwgbyk7IH0KKyAgICB2b2lkIHNldEJveFBhY2so
RUJveFBhY2sgcCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXBy
ZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHApOyB9CisgICAgdm9pZCBzZXRCb3hTaGFkb3coc3Rk
Ojp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKKyAgICB2b2lkIHNl
dEJveFJlZmxlY3QoUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4mJik7CisgICAgdm9pZCBzZXRCb3hT
aXppbmcoRUJveFNpemluZyBzKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2JveFNpemluZywgcyk7
IH0KKyAgICB2b2lkIHNldEZsZXhHcm93KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gsIGZsZXhHcm93LCBmKTsgfQorICAgIHZvaWQg
c2V0RmxleFNocmluayhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4U2hyaW5rLCBmKTsgfQorICAgIHZvaWQgc2V0RmxleEJh
c2lzKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBmbGV4aWJsZUJveCwgZmxleEJhc2lzLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9p
ZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9yZGVy
LCBvKTsgfQorICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdu
bWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkNv
bnRlbnQsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRBbGlnbkl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFs
aWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGln
bkl0ZW1zLCBkYXRhKTsgfQorICAgIHZvaWQgc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3Np
dGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduSXRl
bXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRBbGlnblNlbGYoY29uc3Qg
U3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGFsaWduU2VsZiwgZGF0YSk7IH0KKyAgICB2b2lkIHNldEFsaWduU2VsZlBvc2l0aW9u
KEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmFsaWduU2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhEaXJl
Y3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9
CisgICAgdm9pZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJsZUJveCwgZmxleFdyYXAsIHcpOyB9CisgICAgdm9p
ZCBzZXRKdXN0aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRh
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwganVzdGlmeUNvbnRlbnQsIGRhdGEp
OyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbiBw
b3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmp1c3RpZnlDb250ZW50
LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zKGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBqdXN0aWZ5SXRlbXMsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihj
b25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwganVzdGlmeVNlbGYsIGRhdGEpOyB9CisKICNpZiBFTkFCTEUoQ1NTX0JPWF9E
RUNPUkFUSU9OX0JSRUFLKQotICAgIHZvaWQgc2V0Qm94RGVjb3JhdGlvbkJyZWFrKEVCb3hEZWNv
cmF0aW9uQnJlYWsgYikgeyBTRVRfVkFSKG1fYm94LCBtX2JveERlY29yYXRpb25CcmVhaywgYik7
IH0KKyAgICB2b2lkIHNldEJveERlY29yYXRpb25CcmVhayhFQm94RGVjb3JhdGlvbkJyZWFrIGIp
IHsgU0VUX1ZBUihtX2JveERhdGEsIG1fYm94RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQogI2VuZGlm
Ci0gICAgdm9pZCBzZXRCb3hEaXJlY3Rpb24oRUJveERpcmVjdGlvbiBkKSB7IGluaGVyaXRlZF9m
bGFncy5fYm94X2RpcmVjdGlvbiA9IGQ7IH0KLSAgICB2b2lkIHNldEJveEZsZXgoZmxvYXQgZikg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGli
bGVCb3gsIGZsZXgsIGYpOyB9Ci0gICAgdm9pZCBzZXRCb3hGbGV4R3JvdXAodW5zaWduZWQgaW50
IGZnKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRG
bGV4aWJsZUJveCwgZmxleF9ncm91cCwgZmcpOyB9Ci0gICAgdm9pZCBzZXRCb3hMaW5lcyhFQm94
TGluZXMgbCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNh
dGVkRmxleGlibGVCb3gsIGxpbmVzLCBsKTsgfQotICAgIHZvaWQgc2V0Qm94T3JkaW5hbEdyb3Vw
KHVuc2lnbmVkIGludCBvZykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9kZXByZWNhdGVkRmxleGlibGVCb3gsIG9yZGluYWxfZ3JvdXAsIG9nKTsgfQotICAgIHZvaWQg
c2V0Qm94T3JpZW50KEVCb3hPcmllbnQgbykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIG9yaWVudCwgbyk7IH0KLSAgICB2b2lk
IHNldEJveFBhY2soRUJveFBhY2sgcCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHApOyB9Ci0gICAgdm9pZCBzZXRC
b3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsK
LSAgICB2b2lkIHNldEJveFJlZmxlY3QoUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4mJiByZWZsZWN0
KSB7IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0ICE9IHJlZmxlY3QpIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2JveFJlZmxlY3QgPSBXVEZNb3ZlKHJlZmxl
Y3QpOyB9Ci0gICAgdm9pZCBzZXRCb3hTaXppbmcoRUJveFNpemluZyBzKSB7IFNFVF9WQVIobV9i
b3gsIG1fYm94U2l6aW5nLCBzKTsgfQotICAgIHZvaWQgc2V0RmxleEdyb3coZmxvYXQgZikgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4
R3JvdywgZik7IH0KLSAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4U2hyaW5rLCBm
KTsgfQotICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleEJhc2lzLCBXVEZN
b3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX29yZGVyLCBvKTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50
KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9hbGlnbkNvbnRlbnQsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGln
bkNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsg
fQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3Zl
cmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNl
dE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50RGlzdHJpYnV0
aW9uKENvbnRlbnREaXN0cmlidXRpb25UeXBlIGRpc3RyaWJ1dGlvbikgeyByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkNvbnRlbnQuc2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1
dGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWduSXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50
RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXMs
IGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBv
c2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0
UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkl0ZW1zT3ZlcmZsb3coT3Zl
cmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fYWxpZ25JdGVtcy5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEFsaWdu
U2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fYWxpZ25TZWxmLCBkYXRhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25T
ZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2FsaWduU2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lk
IHNldEFsaWduU2VsZk92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduU2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxv
dyk7IH0KLSAgICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9u
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBt
X2ZsZXhEaXJlY3Rpb24sIGRpcmVjdGlvbik7IH0KLSAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4
V3JhcCB3KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxl
Qm94LCBtX2ZsZXhXcmFwLCB3KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoY29uc3Qg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2p1c3RpZnlDb250ZW50LCBkYXRhKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNv
bnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUNvbnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9
Ci0gICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudE92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92
ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50
LnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvblR5cGUgZGlzdHJpYnV0aW9uKSB7IHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50LnNldERpc3RyaWJ1dGlvbihk
aXN0cmlidXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxm
QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1
c3RpZnlJdGVtcywgZGF0YSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKEl0
ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9q
dXN0aWZ5SXRlbXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5
SXRlbXNPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9
Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZSBw
b3NpdGlvblR5cGUpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0
ZW1zLnNldFBvc2l0aW9uVHlwZShwb3NpdGlvblR5cGUpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5
U2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fanVzdGlmeVNlbGYsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRKdXN0
aWZ5U2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5U2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAg
ICB2b2lkIHNldEp1c3RpZnlTZWxmT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cp
IHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeVNlbGYuc2V0T3ZlcmZs
b3cob3ZlcmZsb3cpOyB9CisKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIHZvaWQg
c2V0R3JpZEF1dG9Db2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXpl
TGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dy
aWRBdXRvQ29sdW1ucywgdHJhY2tTaXplTGlzdCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUm93
cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1Jvd3MsIHRyYWNr
U2l6ZUxpc3QpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZ3JpZCwgbV9ncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dz
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQotICAg
IHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRB
dXRvUmVwZWF0Um93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVh
dFJvd3MsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNJbnNl
cnRpb25Qb2ludChjb25zdCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0
aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRS
b3dzSW5zZXJ0aW9uUG9pbnQoY29uc3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Um93c0lu
c2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2ludCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVw
ZWF0Q29sdW1uc1R5cGUoY29uc3QgQXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Q29s
dW1uc1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRS
b3dzVHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRSb3dzVHlwZSwg
YXV0b1JlcGVhdFR5cGUpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25z
dCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcywg
bmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRSb3dMaW5lcyhj
b25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRSb3dMaW5lcywgbmFt
ZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9v
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7
IH0KLSAgICB2b2lkIHNldE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5l
cywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5h
bWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1
bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBt
X2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9
Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlk
TGluZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdy
aWRSb3dMaW5lcyk7IH0KLSAgICB2b2lkIHNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlk
Q29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3Jp
ZCwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKTsgfQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVh
TWFwJiBuYW1lZEdyaWRBcmVhKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYSwgbmFtZWRHcmlkQXJlYSk7IH0KLSAgICB2b2lkIHNl
dE5hbWVkR3JpZEFyZWFSb3dDb3VudChzaXplX3Qgcm93Q291bnQpIHsgU0VUX05FU1RFRF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQsIHJv
d0NvdW50KTsgfQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KHNpemVfdCBj
b2x1bW5Db3VudCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9Ci0gICAgdm9pZCBz
ZXRHcmlkQXV0b0Zsb3coR3JpZEF1dG9GbG93IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b0Zsb3csIGZsb3cpOyB9Ci0gICAgdm9p
ZCBzZXRHcmlkSXRlbUNvbHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uU3RhcnRQ
b3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkSXRl
bSwgbV9ncmlkQ29sdW1uU3RhcnQsIGNvbHVtblN0YXJ0UG9zaXRpb24pOyB9Ci0gICAgdm9pZCBz
ZXRHcmlkSXRlbUNvbHVtbkVuZChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtbkVuZFBvc2l0aW9u
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dy
aWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1S
b3dTdGFydChjb25zdCBHcmlkUG9zaXRpb24mIHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZFJvd1N0YXJ0LCBy
b3dTdGFydFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dFbmQoY29uc3QgR3Jp
ZFBvc2l0aW9uJiByb3dFbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9ncmlkSXRlbSwgbV9ncmlkUm93RW5kLCByb3dFbmRQb3NpdGlvbik7IH0KLSAg
ICB2b2lkIHNldEdyaWRDb2x1bW5HYXAoY29uc3QgTGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZENvbHVtbkdhcCwgdik7IH0KLSAg
ICB2b2lkIHNldEdyaWRSb3dHYXAoY29uc3QgTGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZFJvd0dhcCwgdik7IH0KLSNlbmRpZiAv
KiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwotICAgIHZvaWQgc2V0TWFycXVlZUluY3JlbWVu
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X21hcnF1ZWUsIGluY3JlbWVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFy
cXVlZVNwZWVkKGludCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X21hcnF1ZWUsIHNwZWVkLCBmKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFy
cXVlZURpcmVjdGlvbiBkKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X21hcnF1ZWUsIGRpcmVjdGlvbiwgZCk7IH0KLSAgICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihF
TWFycXVlZUJlaGF2aW9yIGIpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9Ci0gICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50
KGludCBpKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUs
IGxvb3BzLCBpKTsgfQotICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZXJNb2RpZnksIHUpOyB9Ci0gICAgdm9pZCBzZXRV
c2VyRHJhZyhFVXNlckRyYWcgZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2Vy
RHJhZywgZCk7IH0KLSAgICB2b2lkIHNldFVzZXJTZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBzKTsgfQotICAgIHZvaWQgc2V0VGV4
dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCB0ZXh0T3ZlcmZsb3csIG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQmVm
b3JlQ29sbGFwc2UoRU1hcmdpbkNvbGxhcHNlIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbWFyZ2luQmVmb3JlQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRl
ckNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdv
cmRCcmVhayBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdvcmRCcmVhaywgYik7IH0K
LSAgICB2b2lkIHNldE92ZXJmbG93V3JhcChFT3ZlcmZsb3dXcmFwIGIpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgb3ZlcmZsb3dXcmFwLCBiKTsgfQotICAgIHZvaWQgc2V0TkJTUE1vZGUo
RU5CU1BNb2RlIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9
Ci0gICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbGluZUJyZWFrLCBiKTsgfQotICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCk7IH0KLSAgICB2b2lkIHNl
dEh5cGhlbmF0aW9uTGltaXRCZWZvcmUoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRI
eXBoZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhl
bmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBoeXBoZW5hdGlvbkxpbWl0TGluZXMsIGxpbWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRp
b25TdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3Jk
ZXJGaXQgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JvcmRlckZpdCwgYik7
IH0KLSAgICB2b2lkIHNldFJlc2l6ZShFUmVzaXplIHIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9yZXNpemUsIHIpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4
aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNv
bCwgbV9heGlzLCBheGlzKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1u
UHJvZ3Jlc3Npb24gcHJvZ3Jlc3Npb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fbXVsdGlDb2wsIG1fcHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTsgfQotICAgIHZv
aWQgc2V0Q29sdW1uV2lkdGgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fd2lkdGgsIGYpOyB9Ci0gICAgdm9p
ZCBzZXRIYXNBdXRvQ29sdW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1dG9XaWR0aCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3dpZHRoLCAwKTsgfQotICAgIHZvaWQg
c2V0Q29sdW1uQ291bnQodW5zaWduZWQgc2hvcnQgYykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fY291bnQsIGMpOyB9Ci0g
ICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uQ291bnQoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2NvdW50LCAwKTsgfQotICAg
IHZvaWQgc2V0Q29sdW1uRmlsbChDb2x1bW5GaWxsIGNvbHVtbkZpbGwpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fZmlsbCwgY29sdW1uRmlsbCk7
IH0KLSAgICB2b2lkIHNldENvbHVtbkdhcChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX25vcm1hbEdhcCwgZmFsc2UpOyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9nYXAsIGYpOyB9Ci0g
ICAgdm9pZCBzZXRIYXNOb3JtYWxDb2x1bW5HYXAoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX25vcm1hbEdhcCwgdHJ1ZSk7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2dhcCwgMCk7IH0KLSAgICB2
b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVf
Q09MT1IocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwg
Yyk7IH0KLSAgICB2b2lkIHNldENvbHVtblJ1bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxlLm1fc3R5
bGUsIGIpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgodW5zaWduZWQgc2hvcnQgdykg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxl
Lm1fd2lkdGgsIHcpOyB9Ci0gICAgdm9pZCByZXNldENvbHVtblJ1bGUoKSB7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3J1bGUsIEJvcmRlclZhbHVl
KCkpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5TcGFuKENvbHVtblNwYW4gY29sdW1uU3BhbikgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9jb2x1bW5T
cGFuLCBjb2x1bW5TcGFuKTsgfQotICAgIHZvaWQgaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fbXVsdGlDb2wgPSBwYXJlbnQtPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29s
OyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3Bz
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV9v
cGVyYXRpb25zLCBvcHMpOyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3Jt
LCBtX3gsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblko
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90
cmFuc2Zvcm0sIG1feSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3Jt
T3JpZ2luWihmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X3RyYW5zZm9ybSwgbV96LCBmKTsgfQotICAgIHZvaWQgc2V0U3BlYWsoRVNwZWFrIHMpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0Q29t
YmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4
dENvbWJpbmUsIHYpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4dERlY29yYXRpb25D
b2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBj
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0NvbG9yLCBjKTsgfQot
ICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsIGZpbGwpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgZmlsbCk7IH0KLSAgICB2
b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQot
ICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb24gcG9z
aXRpb24pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzUG9zaXRpb24s
IHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9Db2x1bW5zKGNvbnN0IFZlY3RvcjxH
cmlkVHJhY2tTaXplPiYgdHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b0NvbHVtbnMsIHRyYWNrU2l6ZUxpc3QpOyB9Cisg
ICAgdm9pZCBzZXRHcmlkQXV0b1Jvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFj
a1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQs
IGdyaWRBdXRvUm93cywgdHJhY2tTaXplTGlzdCk7IH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5z
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KKyAg
ICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3Rocykg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkUm93cywg
bGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1ucyhjb25zdCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAg
IHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
bGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBn
cmlkQXV0b1JlcGVhdFJvd3MsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVh
dENvbHVtbnNJbnNlcnRpb25Qb2ludChjb25zdCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Q29s
dW1uc0luc2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRB
dXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50
KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBl
YXRSb3dzSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsgfQorICAgIHZvaWQgc2V0R3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zVHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlw
ZSkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVw
ZWF0Q29sdW1uc1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9S
ZXBlYXRSb3dzVHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Um93c1R5
cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMo
Y29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZENvbHVtbkxpbmVz
LCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVz
KGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBuYW1lZEdyaWRSb3dMaW5lcywgbmFt
ZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgb3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9
CisgICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBv
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRH
cmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxp
bmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAg
dm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNN
YXAmIG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGdyaWQsIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGlu
ZXMpOyB9CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxp
bmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMo
Y29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMp
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQor
ICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdy
aWRBcmVhKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5h
bWVkR3JpZEFyZWEsIG5hbWVkR3JpZEFyZWEpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVh
Um93Q291bnQoc2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CisgICAg
dm9pZCBzZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFD
b2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b0Zsb3coR3Jp
ZEF1dG9GbG93IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
Z3JpZCwgZ3JpZEF1dG9GbG93LCBmbG93KTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5T
dGFydChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtblN0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRDb2x1bW5TdGFydCwg
Y29sdW1uU3RhcnRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uRW5kKGNv
bnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uRW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBv
c2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dTdGFydChjb25zdCBHcmlkUG9zaXRp
b24mIHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZ3JpZEl0ZW0sIGdyaWRSb3dTdGFydCwgcm93U3RhcnRQb3NpdGlvbik7IH0KKyAgICB2
b2lkIHNldEdyaWRJdGVtUm93RW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93RW5kUG9zaXRpb24p
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRS
b3dFbmQsIHJvd0VuZFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZENvbHVtbkdhcChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZCwgZ3JpZENvbHVtbkdhcCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0R3JpZFJv
d0dhcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZ3JpZCwgZ3JpZFJvd0dhcCwgV1RGTW92ZShsZW5ndGgpKTsgfQorI2VuZGlmIC8vIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCisKKyAgICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1h
cnF1ZWUsIGluY3JlbWVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFycXVl
ZVNwZWVkKGludCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1h
cnF1ZWUsIHNwZWVkLCBmKTsgfQorICAgIHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVl
ZURpcmVjdGlvbiBkKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1h
cnF1ZWUsIGRpcmVjdGlvbiwgZCk7IH0KKyAgICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihFTWFy
cXVlZUJlaGF2aW9yIGIpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9CisgICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50KGlu
dCBpKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGxv
b3BzLCBpKTsgfQorICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdXNlck1vZGlmeSwgdSk7IH0KKyAgICB2b2lkIHNldFVz
ZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdXNl
ckRyYWcsIGQpOyB9CisgICAgdm9pZCBzZXRVc2VyU2VsZWN0KEVVc2VyU2VsZWN0IHMpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBzKTsgfQorICAgIHZvaWQgc2V0
VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHRleHRPdmVyZmxvdywgb3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRNYXJn
aW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG1hcmdpbkJlZm9yZUNvbGxhcHNlLCBjKTsgfQorICAgIHZvaWQgc2V0TWFy
Z2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMpOyB9CisgICAgdm9pZCBzZXRXb3Jk
QnJlYWsoRVdvcmRCcmVhayBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgd29yZEJy
ZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVPdmVyZmxvd1dyYXAgYikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3JhcCwgYik7IH0KKyAgICB2b2lk
IHNldE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
bmJzcE1vZGUsIGIpOyB9CisgICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRI
eXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbnMs
IGgpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKHNob3J0IGxpbWl0KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGlt
aXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsIGxpbWl0
KTsgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0IGxpbWl0KSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdExpbmVzLCBsaW1pdCk7
IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaCkg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsgfQor
ICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGJvcmRlckZpdCwgYik7IH0KKyAgICB2b2lkIHNldFJlc2l6ZShFUmVzaXpl
IHIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZXNpemUsIHIpOyB9CisgICAg
dm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgYXhpcyk7IH0KKyAgICB2b2lkIHNl
dENvbHVtblByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwg
cHJvZ3Jlc3Npb24pOyB9CisgICAgdm9pZCBzZXRDb2x1bW5XaWR0aChmbG9hdCBmKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBhdXRvV2lkdGgsIGZh
bHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdp
ZHRoLCBmKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbldpZHRoKCkgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b1dpZHRoLCB0cnVlKTsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdpZHRoLCAw
KTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQ291bnQodW5zaWduZWQgc2hvcnQgYykgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b0NvdW50LCBmYWxz
ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBjb3Vu
dCwgYyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5Db3VudCgpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9Db3VudCwgdHJ1ZSk7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBjb3VudCwgMCk7
IH0KKyAgICB2b2lkIHNldENvbHVtbkZpbGwoQ29sdW1uRmlsbCBjb2x1bW5GaWxsKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBmaWxsLCBjb2x1bW5G
aWxsKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIG5vcm1hbEdhcCwgZmFsc2UpOyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgZ2FwLCBmKTsgfQor
ICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29sdW1uR2FwKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgbm9ybWFsR2FwLCB0cnVlKTsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGdhcCwgMCk7IH0KKyAgICB2b2lk
IHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09M
T1IobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tdWx0aUNvbCwgcnVsZSwgYyk7IH0K
KyAgICB2b2lkIHNldENvbHVtblJ1bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgcnVsZS5tX3N0eWxlLCBiKTsg
fQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVdpZHRoKHVuc2lnbmVkIHNob3J0IHcpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHJ1bGUubV93aWR0aCwg
dyk7IH0KKyAgICB2b2lkIHJlc2V0Q29sdW1uUnVsZSgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHJ1bGUsIEJvcmRlclZhbHVlKCkpOyB9CisgICAg
dm9pZCBzZXRDb2x1bW5TcGFuKENvbHVtblNwYW4gY29sdW1uU3BhbikgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY29sdW1uU3BhbiwgY29sdW1uU3Bh
bik7IH0KKyAgICB2b2lkIGluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubXVsdGlDb2wg
PSBwYXJlbnQubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2w7IH0KKyAgICB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdHJhbnNmb3JtLCBvcGVyYXRpb25zLCBvcHMpOyB9
CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm0sIHgsIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoJiYgbGVuZ3RoKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeSwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeiwgZik7
IH0KKyAgICB2b2lkIHNldFNwZWFrKEVTcGVhayBzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgc3BlYWssIHMpOyB9CisgICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dENvbWJpbmUsIHYpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KKyAgICB2
b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1w
aGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9CisgICAgdm9pZCBz
ZXRUZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlv
bik7IH0KICAgICBib29sIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24pOwogCi0g
ICAgdm9pZCBzZXRPYmplY3RGaXQoT2JqZWN0Rml0IGZpdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX29iamVjdEZpdCwgZml0KTsgfQotICAgIHZvaWQgc2V0T2JqZWN0UG9zaXRp
b24oY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fb2JqZWN0UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0T2JqZWN0
Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmpl
Y3RGaXQsIGZpdCk7IH0KKyAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50JiYg
cG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3NpdGlv
biwgV1RGTW92ZShwb3NpdGlvbikpOyB9CisKKyAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5
UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9z
aXRpb24sIHBvc2l0aW9uKTsgfQogCi0gICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0
aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fcnVieVBvc2l0aW9u
LCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBvcHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmlsdGVyLCBv
cGVyYXRpb25zLCBvcHMpOyB9CiAKLSAgICB2b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmls
dGVyLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQot
ICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tkcm9wRmlsdGVyLCBt
X29wZXJhdGlvbnMsIG9wcyk7IH0KKyAgICB2b2lkIHNldEJhY2tkcm9wRmlsdGVyKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBiYWNrZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHNldFRhYlNpemUodW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX3RhYlNpemUsIHNpemUpOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKHVuc2lnbmVkIHNpemUp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YWJTaXplLCBzaXplKTsgfQogCi0gICAg
dm9pZCBzZXRCcmVha0JlZm9yZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JyZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQot
ICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9
Ci0gICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3Ip
OyB9CisgICAgdm9pZCBzZXRCcmVha0JlZm9yZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQmVmb3JlLCBicmVha0JlaGF2
aW9yKTsgfQorICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlv
cikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIGJyZWFrQmVo
YXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2
aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIGJyZWFr
QmVoYXZpb3IpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2lu
Z1B1bmN0dWF0aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1f
aGFuZ2luZ1B1bmN0dWF0aW9uLCBwdW5jdHVhdGlvbik7IH0KKyAgICB2b2lkIHNldEhhbmdpbmdQ
dW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBoYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQogCiAg
ICAgLy8gRW5kIENTUzMgU2V0dGVycwogCi0gICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9t
aWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUdy
aWQsIGxpbmVHcmlkKTsgfQotICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXAp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lU25hcCwgbGluZVNuYXApOyB9Ci0g
ICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBtX2xpbmVBbGlnbiwgbGluZUFsaWduKTsgfQorICAgIHZvaWQgc2V0TGlu
ZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIGxpbmVHcmlkLCBsaW5lR3JpZCk7IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExp
bmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAs
IGxpbmVTbmFwKTsgfQorICAgIHZvaWQgc2V0TGluZUFsaWduKExpbmVBbGlnbiBsaW5lQWxpZ24p
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQWxpZ24sIGxpbmVBbGlnbik7IH0K
IAotICAgIHZvaWQgc2V0Rmxvd1RocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbG93VGhyZWFkLCBmbG93VGhyZWFk
KTsgfQotICAgIHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9u
VGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uVGhyZWFkLCBy
ZWdpb25UaHJlYWQpOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25GcmFnbWVudChSZWdpb25GcmFnbWVu
dCByZWdpb25GcmFnbWVudCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lv
bkZyYWdtZW50LCByZWdpb25GcmFnbWVudCk7IH0KKyAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29u
c3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZmxvd1RocmVhZCwgZmxvd1RocmVhZCk7IH0KKyAgICB2b2lkIHNldFJlZ2lvblRocmVh
ZChjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lvblRocmVhZCkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHJlZ2lvblRocmVhZCwgcmVnaW9uVGhyZWFkKTsgfQorICAgIHZvaWQgc2V0
UmVnaW9uRnJhZ21lbnQoUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZWdpb25GcmFnbWVudCwgcmVnaW9uRnJhZ21lbnQpOyB9
CiAKLSAgICAvLyBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0eSBzZXR0ZXJzCi0gICAgdm9pZCBzZXRQ
b2ludGVyRXZlbnRzKEVQb2ludGVyRXZlbnRzIHApIHsgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVy
RXZlbnRzID0gcDsgfQorICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhFUG9pbnRlckV2ZW50cyBw
KSB7IG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHA7IH0KIAotICAgIHZvaWQgY2xl
YXJBbmltYXRpb25zKCkKLSAgICB7Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2FuaW1hdGlvbnMgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJUcmFu
c2l0aW9ucygpCi0gICAgewotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV90cmFuc2l0aW9ucyA9IG51bGxwdHI7Ci0gICAgfQorICAgIHZvaWQgY2xlYXJBbmltYXRpb25z
KCk7CisgICAgdm9pZCBjbGVhclRyYW5zaXRpb25zKCk7CiAKLSAgICB2b2lkIGluaGVyaXRBbmlt
YXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0gcGFyZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmlt
YXRpb25MaXN0PigqcGFyZW50KSA6IG51bGxwdHI7IH0KLSAgICB2b2lkIGluaGVyaXRUcmFuc2l0
aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBwYXJlbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgYWRqdXN0QW5pbWF0aW9u
cygpOwogICAgIHZvaWQgYWRqdXN0VHJhbnNpdGlvbnMoKTsKIAotICAgIHZvaWQgc2V0VHJhbnNm
b3JtU3R5bGUzRChFVHJhbnNmb3JtU3R5bGUzRCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdHJhbnNmb3JtU3R5bGUzRCwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tmYWNlVmlz
aWJpbGl0eShFQmFja2ZhY2VWaXNpYmlsaXR5IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9iYWNrZmFjZVZpc2liaWxpdHksIGIpOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVjdGl2
ZShmbG9hdCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmUs
IHApOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWCwgV1RGTW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZKExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblks
IFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6
ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BhZ2VTaXplLCBXVEZNb3ZlKHNp
emUpKTsgfQotICAgIHZvaWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBlLCB0KTsgfQotICAgIHZvaWQg
cmVzZXRQYWdlU2l6ZVR5cGUoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFn
ZVNpemVUeXBlLCBQQUdFX1NJWkVfQVVUTyk7IH0KLQotICAgIHZvaWQgc2V0TGluZUJveENvbnRh
aW4oTGluZUJveENvbnRhaW4gYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVC
b3hDb250YWluLCBjKTsgfQotICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQorICAgIHZv
aWQgc2V0VHJhbnNmb3JtU3R5bGUzRChFVHJhbnNmb3JtU3R5bGUzRCBiKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgdHJhbnNmb3JtU3R5bGUzRCwgYik7IH0KKyAgICB2b2lkIHNl
dEJhY2tmYWNlVmlzaWJpbGl0eShFQmFja2ZhY2VWaXNpYmlsaXR5IGIpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBiYWNrZmFjZVZpc2liaWxpdHksIGIpOyB9CisgICAgdm9pZCBz
ZXRQZXJzcGVjdGl2ZShmbG9hdCBwKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
cGVyc3BlY3RpdmUsIHApOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3Ro
JiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmVP
cmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdp
blkoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVy
c3BlY3RpdmVPcmlnaW5ZLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWdlU2l6
ZShMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwYWdl
U2l6ZSwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldFBhZ2VTaXplVHlwZShQYWdlU2l6
ZVR5cGUgdCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBhZ2VTaXplVHlwZSwg
dCk7IH0KKyAgICB2b2lkIHJlc2V0UGFnZVNpemVUeXBlKCkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHBhZ2VTaXplVHlwZSwgUEFHRV9TSVpFX0FVVE8pOyB9CisKKyAgICB2b2lk
IHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhl
cml0ZWREYXRhLCBsaW5lQm94Q29udGFpbiwgYyk7IH0KKyAgICB2b2lkIHNldExpbmVDbGFtcChM
aW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNs
YW1wLCBjKTsgfQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXpl
JiBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwg
c2l6ZSk7IH0KKyAgICB2b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGluaXRpYWxMZXR0ZXIsIHNpemUpOyB9
CiAgICAgCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRvdWNoQWN0aW9u
KFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fdG91Y2hBY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9Cisg
ICAgdm9pZCBzZXRUb3VjaEFjdGlvbihUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbikgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRvdWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odG91Y2hBY3Rpb24pKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIC8vIFNjcm9sbCBzbmFwIHBvcnQgc3R5bGUuCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFw
VHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1Rv
cChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdCb3R0b20oY29uc3Qg
TGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nTGVmdChjb25zdCBMZW5ndGgmKTsK
LSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdSaWdodChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lk
IHNldFNjcm9sbFBhZGRpbmdUb3AoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGlu
Z0JvdHRvbShMZW5ndGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nTGVmdChMZW5ndGgm
Jik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3RoJiYpOwogCi0gICAgLy8g
U2Nyb2xsIHNuYXAgYXJlYSBzdHlsZS4KICAgICB2b2lkIHNldFNjcm9sbFNuYXBBbGlnbihjb25z
dCBTY3JvbGxTbmFwQWxpZ24mKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29u
c3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luQm90dG9tKGNvbnN0IExl
bmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQoY29uc3QgTGVuZ3RoJik7
Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoY29uc3QgTGVuZ3RoJik7CisgICAg
dm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9s
bFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdp
bkxlZnQoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpblJpZ2h0KExlbmd0
aCYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRh
cEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29s
b3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdo
bGlnaHRDb2xvciwgYyk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQg
c2V0VG91Y2hDYWxsb3V0RW5hYmxlZChib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdG91Y2hDYWxsb3V0RW5hYmxlZCwgdik7IH0KKyAgICB2b2lkIHNldFRvdWNoQ2FsbG91dEVu
YWJsZWQoYm9vbCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdG91Y2hDYWxsb3V0
RW5hYmxlZCwgdik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykKLSAgICB2b2lkIHNldFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcs
IHYpOyB9CisgICAgdm9pZCBzZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYp
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRU
ZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQgYW5BZGp1c3RtZW50KSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRleHRTaXplQWRqdXN0LCBhbkFkanVzdG1lbnQpOyB9CisgICAg
dm9pZCBzZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQgYWRqdXN0bWVudCkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRTaXplQWRqdXN0LCBhZGp1c3RtZW50KTsg
fQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0
U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4
dFNlY3VyaXR5KTsgfQorICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgc2Vj
dXJpdHkpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIHNlY3Vy
aXR5KTsgfQogCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQotICAgIHZvaWQgc2V0VHJh
aWxpbmdXb3JkKFRyYWlsaW5nV29yZCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRy
YWlsaW5nV29yZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0VHJh
aWxpbmdXb3JkKFRyYWlsaW5nV29yZCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dHJhaWxpbmdXb3JkLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBUFBMRV9QQVkpCi0gICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblN0eWxlKEFwcGxl
UGF5QnV0dG9uU3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FwcGxl
UGF5QnV0dG9uU3R5bGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KLSAgICB2b2lkIHNl
dEFwcGxlUGF5QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2FwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRv
blN0eWxlIHN0eWxlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlC
dXR0b25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0eWxlKSk7IH0KKyAgICB2b2lkIHNl
dEFwcGxlUGF5QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHR5cGUpKTsgfQogI2VuZGlmCiAKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3Zn
U3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9zdmdTdHlsZTsgfQotICAgIFNWR1JlbmRlclN0eWxl
JiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJuICptX3N2Z1N0eWxlLmFjY2VzcygpOyB9CisgICAg
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdTdHls
ZTsgfQorICAgIFNWR1JlbmRlclN0eWxlJiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJuIG1fc3Zn
U3R5bGUuYWNjZXNzKCk7IH0KIAogICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmlsbFBhaW50VHlwZSgpOyB9CiAgICAgQ29s
b3IgZmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWludENv
bG9yKCk7IH0KLSAgICB2b2lkIHNldEZpbGxQYWludENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0RmlsbFBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIi
KTsgfQorICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0RmlsbFBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGNvbG9y
LCBlbXB0eVN0cmluZygpKTsgfQogICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS5maWxsT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsT3BhY2l0eShm
bG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0RmlsbE9wYWNpdHkoZik7IH0KIAogICAgIGNv
bnN0IFNWR1BhaW50VHlwZSYgc3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5zdHJva2VQYWludFR5cGUoKTsgfQogICAgIENvbG9yIHN0cm9rZVBhaW50Q29sb3IoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQg
c2V0U3Ryb2tlUGFpbnRDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNl
dFN0cm9rZVBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQorICAgIHZvaWQg
c2V0U3Ryb2tlUGFpbnRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRTdHJva2VQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBjb2xvciwgZW1wdHlTdHJp
bmcoKSk7IH0KICAgICBmbG9hdCBzdHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5zdHJva2VPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQg
ZikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZU9wYWNpdHkoZik7IH0KICAgICBjb25zdCBM
ZW5ndGgmIHN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VXaWR0
aCgpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VXaWR0aChMZW5ndGggdykgeyBhY2Nlc3NTVkdTdHls
ZSgpLnNldFN0cm9rZVdpZHRoKHcpOyB9CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChMZW5ndGgm
JiB3KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlV2lkdGgoV1RGTW92ZSh3KSk7IH0KICAg
ICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJu
IHN2Z1N0eWxlKCkuc3Ryb2tlRGFzaEFycmF5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZURhc2hB
cnJheShWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGFycmF5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0
U3Ryb2tlRGFzaEFycmF5KGFycmF5KTsgfQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlRGFzaE9mZnNldCgpOyB9Ci0g
ICAgdm9pZCBzZXRTdHJva2VEYXNoT2Zmc2V0KExlbmd0aCBkKSB7IGFjY2Vzc1NWR1N0eWxlKCku
c2V0U3Ryb2tlRGFzaE9mZnNldChkKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChM
ZW5ndGgmJiBkKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlRGFzaE9mZnNldChXVEZNb3Zl
KGQpKTsgfQogICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLnN0cm9rZU1pdGVyTGltaXQoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1p
dChmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlTWl0ZXJMaW1pdChmKTsgfQog
CiAgICAgY29uc3QgTGVuZ3RoJiBjeCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3goKTsg
fQotICAgIHZvaWQgc2V0Q3goTGVuZ3RoIGN4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3goY3gp
OyB9CisgICAgdm9pZCBzZXRDeChMZW5ndGgmJiBjeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN4
KFdURk1vdmUoY3gpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgY3koKSBjb25zdCB7IHJldHVybiBz
dmdTdHlsZSgpLmN5KCk7IH0KLSAgICB2b2lkIHNldEN5KExlbmd0aCBjeSkgeyBhY2Nlc3NTVkdT
dHlsZSgpLnNldEN5KGN5KTsgfQorICAgIHZvaWQgc2V0Q3koTGVuZ3RoJiYgY3kpIHsgYWNjZXNz
U1ZHU3R5bGUoKS5zZXRDeShXVEZNb3ZlKGN5KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHIoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnIoKTsgfQotICAgIHZvaWQgc2V0UihMZW5ndGggcikg
eyBhY2Nlc3NTVkdTdHlsZSgpLnNldFIocik7IH0KKyAgICB2b2lkIHNldFIoTGVuZ3RoJiYgcikg
eyBhY2Nlc3NTVkdTdHlsZSgpLnNldFIoV1RGTW92ZShyKSk7IH0KICAgICBjb25zdCBMZW5ndGgm
IHJ4KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5yeCgpOyB9Ci0gICAgdm9pZCBzZXRSeChM
ZW5ndGggcngpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRSeChyeCk7IH0KKyAgICB2b2lkIHNldFJ4
KExlbmd0aCYmIHJ4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UngoV1RGTW92ZShyeCkpOyB9CiAg
ICAgY29uc3QgTGVuZ3RoJiByeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkucnkoKTsgfQot
ICAgIHZvaWQgc2V0UnkoTGVuZ3RoIHJ5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UnkocnkpOyB9
CisgICAgdm9pZCBzZXRSeShMZW5ndGgmJiByeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFJ5KFdU
Rk1vdmUocnkpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCkueCgpOyB9Ci0gICAgdm9pZCBzZXRYKExlbmd0aCB4KSB7IGFjY2Vzc1NWR1N0eWxlKCku
c2V0WCh4KTsgfQorICAgIHZvaWQgc2V0WChMZW5ndGgmJiB4KSB7IGFjY2Vzc1NWR1N0eWxlKCku
c2V0WChXVEZNb3ZlKHgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJu
IHN2Z1N0eWxlKCkueSgpOyB9Ci0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0WSh5KTsgfQorICAgIHZvaWQgc2V0WShMZW5ndGgmJiB5KSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0WShXVEZNb3ZlKHkpKTsgfQogCiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0Rmxv
b2RPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGbG9vZE9wYWNpdHkoZik7
IH0KQEAgLTE4MDcsNDAgKzEyOTUsMjUgQEAgcHVibGljOgogICAgIFNWR0xlbmd0aFZhbHVlIGtl
cm5pbmcoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmtlcm5pbmcoKTsgfQogICAgIHZvaWQg
c2V0S2VybmluZyhTVkdMZW5ndGhWYWx1ZSBrKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0S2Vybmlu
ZyhrKTsgfQogCi0gICAgdm9pZCBzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYg
dmFsdWUpCi0gICAgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVP
dXRzaWRlID09IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zaGFwZU91dHNpZGUgPSBXVEZNb3ZlKHZhbHVlKTsKLSAg
ICB9Ci0gICAgU2hhcGVWYWx1ZSogc2hhcGVPdXRzaWRlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlLmdldCgpOyB9Ci0KLSAgICBzdGF0aWMgU2hh
cGVWYWx1ZSogaW5pdGlhbFNoYXBlT3V0c2lkZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNl
dFNoYXBlT3V0c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJik7CisgICAgU2hhcGVWYWx1ZSogc2hh
cGVPdXRzaWRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVP
dXRzaWRlLmdldCgpOyB9CisgICAgc3RhdGljIFNoYXBlVmFsdWUqIGluaXRpYWxTaGFwZU91dHNp
ZGUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIHNoYXBlTWFyZ2lu
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW47IH0K
LSAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExlbmd0aCBzaGFwZU1hcmdpbikgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlTWFyZ2luLCBXVEZNb3ZlKHNoYXBlTWFyZ2luKSk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHNoYXBlTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVNYXJnaW47IH0KKyAgICB2b2lkIHNldFNoYXBlTWFyZ2lu
KExlbmd0aCYmIHNoYXBlTWFyZ2luKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
c2hhcGVNYXJnaW4sIFdURk1vdmUoc2hhcGVNYXJnaW4pKTsgfQogICAgIHN0YXRpYyBMZW5ndGgg
aW5pdGlhbFNoYXBlTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQogCi0gICAg
ZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3NoYXBlSW1hZ2VUaHJlc2hvbGQ7IH0KLSAgICB2b2lkIHNldFNoYXBlSW1hZ2VU
aHJlc2hvbGQoZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCkgCi0gICAgeyAKLSAgICAgICAgZmxv
YXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRvPGZsb2F0PihzaGFwZUltYWdl
VGhyZXNob2xkLCAwLCAxKTsKLSAgICAgICAgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9zaGFwZUltYWdlVGhyZXNob2xkLCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCk7IAotICAg
IH0KKyAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVJbWFnZVRocmVzaG9sZDsgfQorICAgIHZvaWQgc2V0U2hh
cGVJbWFnZVRocmVzaG9sZChmbG9hdCk7CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxTaGFwZUlt
YWdlVGhyZXNob2xkKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdm9pZCBzZXRDbGlwUGF0aChSZWZQ
dHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYgb3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IG9wZXJhdGlvbikKLSAgICAgICAgICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NsaXBQYXRoID0gV1RGTW92ZShvcGVy
YXRpb24pOwotICAgIH0KLSAgICBDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBhdGgoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aC5nZXQoKTsgfQotCisgICAg
dm9pZCBzZXRDbGlwUGF0aChSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYpOworICAgIENsaXBQ
YXRoT3BlcmF0aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmNsaXBQYXRoLmdldCgpOyB9CiAgICAgc3RhdGljIENsaXBQYXRoT3BlcmF0aW9uKiBp
bml0aWFsQ2xpcFBhdGgoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGhhc0NvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBjb250ZW50RGF0YSgpOyB9Ci0gICAgY29uc3QgQ29udGVudERh
dGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y29udGVudC5nZXQoKTsgfQotICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0
eWxlKj4odGhpcyktPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50RGF0YUVxdWl2YWxlbnQo
KmNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihvdGhlclN0eWxlKS0+cmFyZU5vbkluaGVyaXRlZERh
dGEpOyB9CisgICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y29udGVudC5nZXQoKTsgfQorICAgIGJvb2wgY29u
dGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4odGhpcyktPm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmNvbnRlbnREYXRhRXF1aXZhbGVudCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90
aGVyU3R5bGUpLT5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKTsgfQogICAgIHZvaWQgY2xlYXJDb250
ZW50KCk7CiAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkID0gZmFs
c2UpOwogICAgIHZvaWQgc2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiwgYm9vbCBhZGQg
PSBmYWxzZSk7CkBAIC0xODQ4LDI2ICsxMzIxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENv
bnRlbnQoUXVvdGVUeXBlLCBib29sIGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRlbnRB
bHRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGVudEFsdFRleHQo
KSBjb25zdDsKLSAgICBib29sIGhhc0F0dHJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1faGFzQXR0ckNvbnRlbnQ7IH0KKyAgICBib29sIGhhc0F0dHJDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQXR0ckNvbnRl
bnQ7IH0KICAgICB2b2lkIHNldEhhc0F0dHJDb250ZW50KCk7CiAKICAgICBjb25zdCBDb3VudGVy
RGlyZWN0aXZlTWFwKiBjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0OwogICAgIENvdW50ZXJEaXJl
Y3RpdmVNYXAmIGFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgY29uc3QgQ291bnRlckRp
cmVjdGl2ZXMgZ2V0Q291bnRlckRpcmVjdGl2ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlm
aWVyKSBjb25zdDsKIAotICAgIFF1b3Rlc0RhdGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KKyAgICBRdW90ZXNEYXRhKiBxdW90ZXMo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldFF1b3RlcyhSZWZQdHI8UXVvdGVzRGF0YT4mJik7CiAKLSAgICBXaWxsQ2hhbmdl
RGF0YSogd2lsbENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3dpbGxDaGFuZ2UuZ2V0KCk7IH0KKyAgICBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFdpbGxDaGFuZ2UoUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiYmKTsKIAotICAg
IGJvb2wgd2lsbENoYW5nZUNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKCF3aWxsQ2hhbmdlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gd2lsbENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRl
eHQoKTsKLSAgICB9CisgICAgYm9vbCB3aWxsQ2hhbmdlQ3JlYXRlc1N0YWNraW5nQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5TdHJpbmcoKSBjb25zdDsK
IApAQCAtMTg4Miw0NiArMTM0OSwzMiBAQCBwdWJsaWM6CiAgICAgU3R5bGVEaWZmZXJlbmNlIGRp
ZmYoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25z
dCBSZW5kZXJTdHlsZSYsIGJvb2wgaXNDb21wb3NpdGVkKSBjb25zdDsKIAotICAgIGJvb2wgaXNE
aXNwbGF5UmVwbGFjZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5UmVwbGFjZWRUeXBl
KGRpc3BsYXkoKSk7IH0KICAgICBib29sIGlzRGlzcGxheUlubGluZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBpc0Rpc3BsYXlJbmxpbmVUeXBlKGRpc3BsYXkoKSk7IH0KICAgICBib29sIGlzT3JpZ2lu
YWxEaXNwbGF5SW5saW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUlubGluZVR5cGUo
b3JpZ2luYWxEaXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJv
eCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KGRpc3BsYXkoKSk7
IH0KLSAgICBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNw
bGF5RmxleGlibGVCb3goZGlzcGxheSgpKTsgfQotICAgIGJvb2wgaXNEaXNwbGF5UmVnaW9uVHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRp
c3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sKLSAgICAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBUQUJM
RV9DRUxMIHx8IGRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OCi0gICAgICAgICAgICB8fCBkaXNw
bGF5KCkgPT0gTElTVF9JVEVNOwotICAgIH0KLQotICAgIGJvb2wgc2V0V3JpdGluZ01vZGUoV3Jp
dGluZ01vZGUgdikKLSAgICB7Ci0gICAgICAgIGlmICh2ID09IHdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBpc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29u
c3Q7CiAKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSB2OwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgYm9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9k
ZSk7CiAKLSAgICBib29sIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKTsgfQot
ICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdikgeyBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9CisgICAgYm9v
bCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpOyB9CisgICAgdm9pZCBzZXRI
YXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9CiAKICAgICAvLyBBIHVuaXF1ZSBz
dHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhpbmcgdGhhdCBtYWtlcyBpdCBpbXBv
c3NpYmxlIHRvIHNoYXJlLgotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmlzVW5pcXVlKCk7IH0KLSAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldElzVW5pcXVlKCk7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNVbmlxdWUoKTsgfQorICAgIHZvaWQgc2V0VW5p
cXVlKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldElzVW5pcXVlKCk7IH0KIAotICAgIGJvb2wg
ZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRl
KCk7IH0KLSAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0RW1wdHlTdGF0ZShiKTsgfQotICAgIGJvb2wgZmlyc3RDaGlsZFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgp
OyB9Ci0gICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0Rmlyc3RDaGlsZFN0YXRlKHRydWUpOyB9Ci0gICAgYm9vbCBsYXN0Q2hp
bGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0
ZSgpOyB9Ci0gICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJvb2wgZW1wdHlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZW1wdHlTdGF0ZSgpOyB9
CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhl
cml0ZWRGbGFncy5zZXRFbXB0eVN0YXRlKGIpOyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9
CisgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVy
aXRlZEZsYWdzLnNldEZpcnN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJvb2wgbGFzdENoaWxk
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmxhc3RDaGlsZFN0YXRl
KCk7IH0KKyAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbV9ub25J
bmhlcml0ZWRGbGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25z
dDsKICAgICBib29sIGJhY2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zpc2l0ZWQo
Y29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdCB7IHJldHVybiBjb2xvciA9PSBiYWNrZ3JvdW5kQ29s
b3IoKTsgfQogCi0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygp
IHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVz
KHRydWUpOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpOyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGll
cygpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVy
dGllcyh0cnVlKTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlJbmhlcml0
ZWRQcm9wZXJ0aWVzKCk7IH0KICAgICAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRo
ZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEVPdmVyZmxvdyBpbml0aWFsT3ZlcmZsb3dYKCkgeyBy
ZXR1cm4gT1ZJU0lCTEU7IH0KQEAgLTE5NDAsMTUgKzEzOTMsMTQgQEAgcHVibGljOgogICAgIHN0
YXRpYyBFQm9yZGVyU3R5bGUgaW5pdGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4gQk5PTkU7IH0K
ICAgICBzdGF0aWMgT3V0bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKCkgeyBy
ZXR1cm4gQVVUT19PRkY7IH0KICAgICBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgaW5pdGlhbE5pbmVQ
aWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBpZWNlSW1hZ2UoKTsgfQotICAgIHN0YXRpYyBMZW5n
dGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgw
LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOyB9CisgICAgc3RhdGljIExlbmd0aFNpemUgaW5p
dGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0g
fTsgfQogICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRpb25TaWRlKCkgeyByZXR1
cm4gQ0FQVE9QOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7
IHJldHVybiBBdXRvQ29sdW1uQXhpczsgfQogICAgIHN0YXRpYyBDb2x1bW5Qcm9ncmVzc2lvbiBp
bml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lv
bjsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVy
biBMVFI7IH0KICAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdyaXRpbmdNb2RlKCkgeyBy
ZXR1cm4gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBp
bml0aWFsVGV4dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZU5vbmU7IH0KLSAgICBzdGF0
aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0
T3JpZW50YXRpb246OgotICAgIE1peGVkOyB9CisgICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBp
bml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsg
fQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVj
dEZpdEZpbGw7IH0KICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9u
KCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSwgTGVuZ3RoKDUw
LjBmLCBQZXJjZW50KSk7IH0KICAgICBzdGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxs
cygpIHsgcmV0dXJuIFNIT1c7IH0KQEAgLTE5NjAsOSArMTQxMiw2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgZmxvYXQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsg
fQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1
cm4gMDsgfQogICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDdXJz
b3JBdXRvOyB9Ci0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIHN0YXRpYyBDdXJz
b3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlz
aWJpbGl0eUF1dG87IH0KLSNlbmRpZgogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7
IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExp
c3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm9y
ZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CkBAIC0xOTc5LDIyICsxNDI4LDExIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUZXh0SW5kZW50KCkgeyByZXR1cm4gTGVuZ3RoKEZp
eGVkKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFplcm9MZW5ndGgoKSB7IHJldHVybiBM
ZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsT25lTGVuZ3RoKCkgeyBy
ZXR1cm4gTGVuZ3RoKDEsIEZpeGVkKTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgc3Rh
dGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJ
bmRlbnRGaXJzdExpbmU7IH0KLSAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJ
bmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudE5vcm1hbDsgfQotI2VuZGlmCiAgICAgc3Rh
dGljIHNob3J0IGluaXRpYWxXaWRvd3MoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0
IGluaXRpYWxPcnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNwZWNpZmll
ZExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNlbmRp
ZgogICAgIHN0YXRpYyBFVGV4dEFsaWduIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUQVNU
QVJUOyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigp
IHsgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0g
ICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBU
ZXh0QWxpZ25MYXN0QXV0bzsgfQotICAgIHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1
c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KLSNlbmRpZiAvLyBDU1MzX1RFWFQK
ICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHls
ZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0
RGVjb3JhdGlvblNraXAgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRleHRE
ZWNvcmF0aW9uU2tpcEF1dG87IH0KICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGlu
aXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRp
b25BdXRvOyB9CkBAIC0yMDA5LDggKzE0NDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3hP
cmllbnQgaW5pdGlhbEJveE9yaWVudCgpIHsgcmV0dXJuIEhPUklaT05UQUw7IH0KICAgICBzdGF0
aWMgRUJveFBhY2sgaW5pdGlhbEJveFBhY2soKSB7IHJldHVybiBTdGFydDsgfQogICAgIHN0YXRp
YyBmbG9hdCBpbml0aWFsQm94RmxleCgpIHsgcmV0dXJuIDAuMGY7IH0KLSAgICBzdGF0aWMgdW5z
aWduZWQgaW50IGluaXRpYWxCb3hGbGV4R3JvdXAoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGlj
IHVuc2lnbmVkIGludCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAg
IHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94RmxleEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAg
IHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQog
ICAgIHN0YXRpYyBFQm94U2l6aW5nIGluaXRpYWxCb3hTaXppbmcoKSB7IHJldHVybiBDT05URU5U
X0JPWDsgfQogICAgIHN0YXRpYyBTdHlsZVJlZmxlY3Rpb24qIGluaXRpYWxCb3hSZWZsZWN0KCkg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxleEdyb3coKSB7IHJldHVy
biAwOyB9CkBAIC0yMDgzLDYgKzE1MjEsMjIgQEAgcHVibGljOgogICAgIHN0YXRpYyBRdW90ZXNE
YXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVtcHR5QXRv
bTsgfQogCisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBzdGF0aWMgVGV4dEluZGVudExpbmUg
aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQor
ICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVy
biBUZXh0SW5kZW50Tm9ybWFsOyB9CisgICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRl
eHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQorICAgIHN0YXRpYyBU
ZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87
IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgIHN0YXRpYyBD
dXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29y
VmlzaWJpbGl0eUF1dG87IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
KyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4g
TGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVu
dCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsg
fQorI2VuZGlmCisKICAgICBzdGF0aWMgYm9vbCBpc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAK
ICAgICBzdGF0aWMgV2lsbENoYW5nZURhdGEqIGluaXRpYWxXaWxsQ2hhbmdlKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQpAQCAtMjEzOCw3ICsxNTkyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHcmlk
UG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29sdW1uRW5kKCkgeyByZXR1cm4gR3JpZFBvc2l0aW9u
KCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRlbVJvd1N0YXJ0KCkg
eyByZXR1cm4gR3JpZFBvc2l0aW9uKCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRp
YWxHcmlkSXRlbVJvd0VuZCgpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9Ci0jZW5kaWYgLyog
RU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsg
fQogCkBAIC0yMTUwLDQxICsxNjA0LDMyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhbFJlZ2lvblRocmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CiAg
ICAgc3RhdGljIFJlZ2lvbkZyYWdtZW50IGluaXRpYWxSZWdpb25GcmFnbWVudCgpIHsgcmV0dXJu
IEF1dG9SZWdpb25GcmFnbWVudDsgfQogCi0gICAgLy8gS2VlcCB0aGVzZSBhdCB0aGUgZW5kLgog
ICAgIHN0YXRpYyBJbnRTaXplIGluaXRpYWxJbml0aWFsTGV0dGVyKCkgeyByZXR1cm4gSW50U2l6
ZSgpOyB9CiAgICAgc3RhdGljIExpbmVDbGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJl
dHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5pdGlh
bFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQotI2lmIEVOQUJMRShURVhUX0FVVE9T
SVpJTkcpCi0gICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVBZGp1
c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsgfQotI2VuZGlmCisKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSB7
IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
c3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpOwogI2VuZGlmCisKICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgorCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAg
IHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJk
UmVnaW9ucygpOwogI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
aW5pdGlhbEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZpbHRlck9wZXJhdGlvbnM+
IG9wczsgcmV0dXJuIG9wczsgfQorCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICBz
dGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEJhY2tkcm9wRmlsdGVyKCkgeyBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmlsdGVyT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9
CiAjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgc3RhdGljIEJsZW5k
TW9kZSBpbml0aWFsQmxlbmRNb2RlKCkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CiAgICAg
c3RhdGljIElzb2xhdGlvbiBpbml0aWFsSXNvbGF0aW9uKCkgeyByZXR1cm4gSXNvbGF0aW9uQXV0
bzsgfQogI2VuZGlmCiAKLSAgICBib29sIGlzUGxhY2Vob2xkZXJTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzUGxhY2Vob2xkZXJTdHlsZTsgfQotICAgIHZv
aWQgc2V0SXNQbGFjZWhvbGRlclN0eWxlKCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2lzUGxhY2Vob2xkZXJTdHlsZSwgdHJ1ZSk7IH0KKyAgICBib29sIGlzUGxhY2Vob2xkZXJT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlzUGxhY2Vob2xk
ZXJTdHlsZTsgfQorICAgIHZvaWQgc2V0SXNQbGFjZWhvbGRlclN0eWxlKCkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGlzUGxhY2Vob2xkZXJTdHlsZSwgdHJ1ZSk7IH0KIAotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgbm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoUmVuZGVyU3R5bGUsIG5vbmluaGVyaXRlZF9mbGFncyk7IH0KKyAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9CisgICAg
dm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2
KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgdmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVk
TGlua1RleHREZWNvcmF0aW9uQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1Rl
eHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KKyAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHYpOyB9CisKKyAg
ICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkg
eyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFVuaWNvZGVCaWRpKHBhcmVudC0+bV9ub25Jbmhlcml0
ZWRGbGFncy51bmljb2RlQmlkaSgpKTsgfQorICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0
IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRV
bml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93
SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5
b3V0VW5pdCYgcmlnaHQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQo
Y29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBj
b25zdDsKKyAgICB2b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFk
b3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdo
dCkgY29uc3Q7CisgICAgdm9pZCBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBT
aGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJv
dHRvbSkgY29uc3Q7CisKKyAgICBzdGF0aWMgQ29sb3IgaW52YWxpZENvbG9yKCkgeyByZXR1cm4g
Q29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmxlZnQoKS5jb2xvcigpOyB9CisgICAgY29uc3Qg
Q29sb3ImIGJvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLnJpZ2h0KCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJUb3BDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCkuY29sb3IoKTsg
fQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tKCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5jb2xv
cjsgfQorICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OworICAgIGNvbnN0IENvbG9yJiBj
b2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
dWx0aUNvbC0+cnVsZS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuY29sb3IoKTsgfQorICAg
IGNvbnN0IENvbG9yJiB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRG
aWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcjsgfQorICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkTGlua0NvbG9yKCkgY29uc3Q7CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExp
bmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVk
TGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT52aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlz
aXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KKyAgICBjb25zdCBDb2xv
ciYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KKyAgICBjb25zdCBDb2xv
ciYgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT52aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm11bHRpQ29sLT52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQorICAgIGNv
bnN0IENvbG9yJiB0ZXh0RGVjb3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3I7IH0KKyAgICBjb25z
dCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KKyAgICBj
b25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0RmlsbENvbG9yOyB9CisgICAgY29uc3Qg
Q29sb3ImIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3I7IH0KKworICAgIGNvbnN0
IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xvcigp
OyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLmZsb29kQ29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7IH0KIAogcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgeworICAgICAgICBOb25Jbmhlcml0ZWRGbGFncygp
OworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFnczsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzICE9IG90aGVyLm1fZmxhZ3M7IH0KKworICAgICAgICB2b2lkIGNvcHlOb25J
bmhlcml0ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJik7CisKKyAgICAgICAgRU92ZXJm
bG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0
VmFsdWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNl
dE92ZXJmbG93WChFT3ZlcmZsb3cgb3ZlcmZsb3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WCwg
b3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpOyB9CisKKyAgICAgICAgRU92ZXJmbG93IG92
ZXJmbG93WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUo
b3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92ZXJm
bG93WShFT3ZlcmZsb3cgb3ZlcmZsb3dZKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3ZlcmZs
b3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpOyB9CisKKyAgICAgICAgRUNsZWFyIGNsZWFyKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNsZWFy
T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBkYXRl
VmFsdWUoY2xlYXIsIGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpOyB9CisKKyAgICAgICAgRURpc3Bs
YXkgZWZmZWN0aXZlRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5
PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9CisgICAg
ICAgIHZvaWQgc2V0RWZmZWN0aXZlRGlzcGxheShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KSB7
IHVwZGF0ZVZhbHVlKGVmZmVjdGl2ZURpc3BsYXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNw
bGF5T2Zmc2V0KTsgfQorCisgICAgICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVQb3NpdGlvbj4oZ2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3NpdGlv
bk9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0aW9u
KSB7IHVwZGF0ZVZhbHVlKHBvc2l0aW9uLCBwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KTsg
fQorCisgICAgICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5
T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgb3Jp
Z2luYWxEaXNwbGF5KSB7IHVwZGF0ZVZhbHVlKG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1hc2ss
IG9yaWdpbmFsRGlzcGxheU9mZnNldCk7IH0KKworICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29k
ZUJpZGkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZhbHVl
KHVuaWNvZGVCaWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNl
dFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1bmlj
b2RlQmlkaSwgdW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCk7IH0KKworICAgICAg
ICBib29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc1Zp
ZXdwb3J0VW5pdHNPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhi
b29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQp
OyB9CisKKyAgICAgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVWZXJ0aWNhbEFsaWduPihnZXRWYWx1ZSh2ZXJ0aWNhbEFsaWduTWFz
aywgdmVydGljYWxBbGlnbk9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bihFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKSB7IHVwZGF0ZVZhbHVlKHZlcnRpY2FsQWxp
Z24sIHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KTsgfQorCisgICAgICAg
IGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBn
ZXRCb29sZWFuKGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0
SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29s
ZWFuKHZhbHVlLCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wg
aXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZsb2F0aW5nKCkgIT0gTm9GbG9hdDsgfQorICAg
ICAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxvYXQ+
KGdldFZhbHVlKGZsb2F0aW5nTWFzaywgZmxvYXRpbmdPZmZzZXQpKTsgfQorICAgICAgICB2b2lk
IHNldEZsb2F0aW5nKEVGbG9hdCBmbG9hdGluZykgeyB1cGRhdGVWYWx1ZShmbG9hdGluZywgZmxv
YXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0FueVB1Ymxp
Y1BzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgZ2V0
VmFsdWUocHNldWRvQml0c01hc2ssIHBzZXVkb0JpdHNPZmZzZXQpOyB9CisgICAgICAgIGJvb2wg
aGFzUHNldWRvU3R5bGUoUHNldWRvSWQpIGNvbnN0OworICAgICAgICB2b2lkIHNldEhhc1BzZXVk
b1N0eWxlKFBzZXVkb0lkKTsKKyAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRv
SWRTZXQpOworCisgICAgICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVUYWJsZUxheW91dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRNYXNr
LCB0YWJsZUxheW91dE9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRh
YmxlTGF5b3V0IHRhYmxlTGF5b3V0KSB7IHVwZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJsZUxh
eW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KTsgfQorCisgICAgICAgIFBzZXVkb0lkIHN0
eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1ZShz
dHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldFN0eWxl
VHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgdXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHlsZVR5
cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc1VuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNVbmlxdWVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQg
c2V0SXNVbmlxdWUoKSB7IHVwZGF0ZUJvb2xlYW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9CisK
KyAgICAgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihlbXB0
eVN0YXRlT2Zmc2V0KTsgIH0KKyAgICAgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUp
IHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZW1wdHlTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBi
b29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RDaGls
ZFN0YXRlT2Zmc2V0KTsgIH0KKyAgICAgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9vbCB2
YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9CisK
KyAgICAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
bGFzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRl
KGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZzZXQp
OyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBnZXRC
b29sZWFuKGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRBZmZlY3Rl
ZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5SG92
ZXJPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQorICAgICAgICB2b2lk
IHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBh
ZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWco
KSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQorICAg
ICAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2
YWx1ZSwgYWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc0xpbmsoKSBj
b25zdCB7IHJldHVybiBnZXRCb29sZWFuKGlzTGlua09mZnNldCk7IH0KKyAgICAgICAgdm9pZCBz
ZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZzZXQp
OyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorICAg
ICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1cGRh
dGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorCisg
ICAgICAgIGJvb2wgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
Z2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9CisgICAgICAg
IHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBkYXRl
Qm9vbGVhbih2YWx1ZSwgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQorCisg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoTm9uSW5oZXJpdGVkRmxhZ3MsIG1fZmxhZ3MpOyB9CisgICAgICAgIHN0YXRp
YyB1aW50NjRfdCBmbGFnSXNhZmZlY3RlZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFzayA8
PCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFn
SXNhZmZlY3RlZEJ5SG92ZXIoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlIb3Zl
ck9mZnNldDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBzZXVk
b0lkIHBzZXVkbykgeyByZXR1cm4gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEg
KyBwc2V1ZG8pOyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVG
bGFncygpIHsgcmV0dXJuIGZsYWdGaXJzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9
CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1
cm4gZmxhZ0xhc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgdm9pZCB1cGRhdGVCb29sZWFuKGJvb2wsIHVpbnQ2NF90IG9mZnNldCk7Cisg
ICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0OworICAgICAgICB2
b2lkIHVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBl
bmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpOworICAgICAgICB1bnNpZ25lZCBnZXRWYWx1ZSh1
aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdDsK
KworICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gb25lQml0
TWFzayA8PCBpc1VuaXF1ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0Zp
cnN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zm
c2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJl
dHVybiBvbmVCaXRNYXNrIDw8IGxhc3RDaGlsZFN0YXRlT2Zmc2V0OyB9CisKKyAgICAgICAgLy8g
VG8gdHlwZSB0aGUgYml0IG1hc2sgcHJvcGVybHkgb24gNjRiaXRzLgorICAgICAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3Qgb25lQml0TWFzayA9IDB4MTsKKworICAgICAgICAvLyBCeXRlIDEuCisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd0JpdENvdW50ID0gMzsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG92ZXJmbG93TWFzayA9IChvbmVCaXRNYXNrIDw8IG92
ZXJmbG93Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJm
bG93WE9mZnNldCA9IDA7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1lP
ZmZzZXQgPSBvdmVyZmxvd1hPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50OworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2xlYXJCaXRDb3VudCA9IDI7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBjbGVhck1hc2sgPSAob25lQml0TWFzayA8PCBjbGVhckJpdENvdW50KSAtIDE7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhck9mZnNldCA9IG92ZXJmbG93WU9m
ZnNldCArIG92ZXJmbG93Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSAyLgorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZGlzcGxheUJpdENvdW50ID0gNTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IGRpc3BsYXlNYXNrID0gKG9uZUJpdE1hc2sgPDwgZGlzcGxheUJpdENv
dW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5
T2Zmc2V0ID0gY2xlYXJPZmZzZXQgKyBjbGVhckJpdENvdW50OworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgcG9zaXRpb25CaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBwb3NpdGlvbk1hc2sgPSAob25lQml0TWFzayA8PCBwb3NpdGlvbkJpdENvdW50KSAt
IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IGVmZmVj
dGl2ZURpc3BsYXlPZmZzZXQgKyBkaXNwbGF5Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSAz
LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ID0g
cG9zaXRpb25PZmZzZXQgKyBwb3NpdGlvbkJpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdW5pY29kZUJpZGlCaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCB1bmljb2RlQmlkaU1hc2sgPSAob25lQml0TWFzayA8PCB1bmljb2RlQmlkaUJpdENv
dW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaU9mZnNl
dCA9IG9yaWdpbmFsRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKKworICAgICAgICAv
LyBCeXRlIDQuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ0JpdENvdW50
ID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsb2F0aW5nTWFzayA9IChvbmVC
aXRNYXNrIDw8IGZsb2F0aW5nQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGZsb2F0aW5nT2Zmc2V0ID0gdW5pY29kZUJpZGlPZmZzZXQgKyB1bmljb2RlQmlkaUJp
dENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERp
cmVjdGlvbkJpdGNvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4
cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQgPSBmbG9hdGluZ09mZnNldCArIGZsb2F0aW5nQml0
Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGVCaXRjb3VudCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9u
T2Zmc2V0ICsgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50OworCisgICAgICAgIC8v
IEJ5dGUgNS4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFu
Y2VCaXRDb3VudCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdElu
aGVyaXRhbmNlT2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0ICsgaGFz
RXhwbGljaXRseVNldFdyaXRpbmdNb2RlQml0Y291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB0YWJsZUxheW91dEJpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IHRhYmxlTGF5b3V0Qml0TWFzayA9IG9uZUJpdE1hc2s7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB0YWJsZUxheW91dE9mZnNldCA9IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZz
ZXQgKyBleHBsaWNpdEluaGVyaXRhbmNlQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQml0Q291bnQgPSA0OworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdmVydGljYWxBbGlnblBhZGRpbmcgPSAyOworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdmVydGljYWxBbGlnbkFuZFBhZGRpbmdCaXRDb3VudCA9IHZlcnRpY2FsQWxpZ25C
aXRDb3VudCArIHZlcnRpY2FsQWxpZ25QYWRkaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgdmVydGljYWxBbGlnbk1hc2sgPSAob25lQml0TWFzayA8PCB2ZXJ0aWNhbEFsaWduQml0
Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25P
ZmZzZXQgPSB0YWJsZUxheW91dE9mZnNldCArIHRhYmxlTGF5b3V0Qml0Q291bnQ7CisKKyAgICAg
ICAgLy8gQnl0ZSA2LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0Jp
dENvdW50ID0gNzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBzZXVkb0JpdHNNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgcHNldWRvQml0c0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzT2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCAr
IHZlcnRpY2FsQWxpZ25CaXRDb3VudDsKKworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aGFzVmlld3BvcnRVbml0c0JpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2
NF90IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrID0gKG9uZUJpdE1hc2sgPDwgaGFzVmlld3BvcnRV
bml0c0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3
cG9ydFVuaXRzT2Zmc2V0ID0gcHNldWRvQml0c09mZnNldCArIHBzZXVkb0JpdHNCaXRDb3VudDsK
KworICAgICAgICAvLyBCeXRlIDcuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHls
ZVR5cGVCaXRDb3VudCA9IDY7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5
cGVQYWRkaW5nID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUFu
ZFBhZGRpbmdCaXRDb3VudCA9IHN0eWxlVHlwZUJpdENvdW50ICsgc3R5bGVUeXBlUGFkZGluZzsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHN0eWxlVHlwZU1hc2sgPSAob25lQml0TWFz
ayA8PCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHN0eWxlVHlwZU9mZnNldCA9IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCAr
IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7CisKKyAgICAgICAgLy8gQnl0ZSA4LgorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaXNVbmlxdWVPZmZzZXQgPSBzdHlsZVR5cGVPZmZzZXQgKyBz
dHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBlbXB0eVN0YXRlT2Zmc2V0ID0gaXNVbmlxdWVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZW1wdHlTdGF0ZU9mZnNldCAr
IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCA9
IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgPSBsYXN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ID0gYWZmZWN0
ZWRCeUhvdmVyT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVj
dGVkQnlEcmFnT2Zmc2V0ID0gYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCArIDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpc0xpbmtPZmZzZXQgPSBhZmZlY3RlZEJ5RHJhZ09mZnNldCAr
IDE7CisKKyAgICAgICAgLy8gNjAgYml0cyBhcmUgYXNzaWduZWQuIFRoZXJlIGFyZSA0IGJpdHMg
YXZhaWxhYmxlIGN1cnJlbnRseSB1c2VkIGFzIHBhZGRpbmcgdG8gaW1wcm92ZSBjb2RlIGdlbmVy
YXRpb24uCisgICAgICAgIC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3
aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9t
KCkuCisgICAgICAgIHVpbnQ2NF90IG1fZmxhZ3MgeyAwIH07CisgICAgfTsKKworICAgIHN0cnVj
dCBJbmhlcml0ZWRGbGFncyB7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0
ZWRGbGFncyYpIGNvbnN0OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVk
RmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAg
ICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCisgICAgICAgIHVuc2ln
bmVkIGNhcHRpb25TaWRlIDogMjsgLy8gRUNhcHRpb25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxp
c3RTdHlsZVR5cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlwZQorICAgICAgICB1bnNpZ25lZCBsaXN0
U3R5bGVQb3NpdGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQb3NpdGlvbgorICAgICAgICB1bnNpZ25l
ZCB2aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkKKyAgICAgICAgdW5zaWduZWQgdGV4dEFs
aWduIDogNDsgLy8gRVRleHRBbGlnbgorICAgICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDog
MjsgLy8gRVRleHRUcmFuc2Zvcm0KKyAgICAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25zIDog
VGV4dERlY29yYXRpb25CaXRzOworICAgICAgICB1bnNpZ25lZCBjdXJzb3IgOiA2OyAvLyBFQ3Vy
c29yCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgICAgICB1bnNpZ25lZCBjdXJz
b3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0eQorI2VuZGlmCisgICAgICAgIHVu
c2lnbmVkIGRpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KKyAgICAgICAgdW5zaWduZWQg
d2hpdGVTcGFjZSA6IDM7IC8vIEVXaGl0ZVNwYWNlCisgICAgICAgIC8vIDMyIGJpdHMKKyAgICAg
ICAgdW5zaWduZWQgYm9yZGVyQ29sbGFwc2UgOiAxOyAvLyBFQm9yZGVyQ29sbGFwc2UKKyAgICAg
ICAgdW5zaWduZWQgYm94RGlyZWN0aW9uIDogMTsgLy8gRUJveERpcmVjdGlvbiAoQ1NTMyBib3hf
ZGlyZWN0aW9uIHByb3BlcnR5LCBmbGV4aWJsZSBib3ggbGF5b3V0IG1vZHVsZSkKKworICAgICAg
ICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKKyAgICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAx
OyAvLyBPcmRlcgorICAgICAgICB1bnNpZ25lZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xv
ckFkanVzdEJpdHM7CisgICAgICAgIHVuc2lnbmVkIHBvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9p
bnRlckV2ZW50cworICAgICAgICB1bnNpZ25lZCBpbnNpZGVMaW5rIDogMjsgLy8gRUluc2lkZUxp
bmsKKyAgICAgICAgdW5zaWduZWQgaW5zaWRlRGVmYXVsdEJ1dHRvbiA6IDE7CisgICAgICAgIC8v
IDQ0IGJpdHMKKworICAgICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZl
cnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAgICAgICB1bnNpZ25lZCB3cml0aW5nTW9kZSA6IDI7
IC8vIFdyaXRpbmdNb2RlCisgICAgICAgIC8vIDQ2IGJpdHMKKyAgICB9OworCisgICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgcmVwbGFjZSBvcGVyYXRpb24u
CisgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSYmKTsKKworICAgIEVE
aXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3JpZ2luYWxEaXNwbGF5KCk7IH0KKworICAgIGJvb2wgaGFzQXV0b0xlZnRBbmRSaWdodCgp
IGNvbnN0IHsgcmV0dXJuIGxlZnQoKS5pc0F1dG8oKSAmJiByaWdodCgpLmlzQXV0bygpOyB9Cisg
ICAgYm9vbCBoYXNBdXRvVG9wQW5kQm90dG9tKCkgY29uc3QgeyByZXR1cm4gdG9wKCkuaXNBdXRv
KCkgJiYgYm90dG9tKCkuaXNBdXRvKCk7IH0KKworICAgIHZvaWQgc2V0Q29udGVudChzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudERhdGE+LCBib29sIGFkZCk7CisKKyAgICBMYXlvdXRCb3hFeHRlbnQg
Z2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSopIGNvbnN0OworCisgICAgc3Rh
dGljIGJvb2wgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9v
bCBpc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3Bs
YXlGbGV4aWJsZUJveChFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5R3JpZEJv
eChFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3go
RURpc3BsYXkpOworCisgICAgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQ
cm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7CisKICAgICBib29sIGNoYW5nZUFmZmVj
dHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgY2hh
bmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVz
UG9zaXRpb25lZExheW91dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKQEAgLTIxOTMsMTAyICsxOTMxLDE0
MyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3Jk
ZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVjb21w
b3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9y
KGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRM
aW5rQmFja2dyb3VuZENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rQm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdik7IH0KLSAgICB2b2lk
IHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCB2
KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYg
dikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3Is
IHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVtcGhh
c2lzQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtU
ZXh0U3Ryb2tlQ29sb3IsIHYpOyB9Ci0KLSAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20o
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VW5pY29k
ZUJpZGkocGFyZW50LT5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSk7IH0KLSAgICB2
b2lkIGdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBM
YXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBj
b25zdDsKLSAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hh
ZG93RGF0YSopIGNvbnN0OwotICAgIHZvaWQgZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25z
dCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0
OwotICAgIHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExh
eW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBjb25zdDsKLSAgICB2b2lkIGdldFNo
YWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91
dFVuaXQmIGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd0hv
cml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdldFNo
YWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7Ci0g
ICAgfQotICAgIHZvaWQgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93
RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2Fs
Qm90dG9tKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2lj
YWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3As
IGxvZ2ljYWxCb3R0b20pOwotICAgIH0KKyAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMK
KyAgICBEYXRhUmVmPFN0eWxlQm94RGF0YT4gbV9ib3hEYXRhOworICAgIERhdGFSZWY8U3R5bGVW
aXN1YWxEYXRhPiBtX3Zpc3VhbERhdGE7CisgICAgRGF0YVJlZjxTdHlsZUJhY2tncm91bmREYXRh
PiBtX2JhY2tncm91bmREYXRhOworICAgIERhdGFSZWY8U3R5bGVTdXJyb3VuZERhdGE+IG1fc3Vy
cm91bmREYXRhOworICAgIERhdGFSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YTsKKyAgICBOb25Jbmhlcml0ZWRGbGFncyBtX25vbkluaGVyaXRlZEZs
YWdzOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxheSkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBk
aXNwbGF5ID09IElOTElORV9CT1ggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWAotI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgICAgICB8fCBkaXNwbGF5ID09IElOTElORV9HUklE
Ci0jZW5kaWYKLSAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOwotICAgIH0K
KyAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcworICAgIERhdGFSZWY8U3R5bGVSYXJlSW5oZXJp
dGVkRGF0YT4gbV9yYXJlSW5oZXJpdGVkRGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVk
RGF0YT4gbV9pbmhlcml0ZWREYXRhOworICAgIEluaGVyaXRlZEZsYWdzIG1faW5oZXJpdGVkRmxh
Z3M7CiAKLSAgICBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRURpc3BsYXkgZGlzcGxheSkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlS
ZXBsYWNlZFR5cGUoZGlzcGxheSk7Ci0gICAgfQorICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBw
c2V1ZG8gc3R5bGVzCisgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2Fj
aGVkUHNldWRvU3R5bGVzOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxh
eSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8
fCBkaXNwbGF5ID09IElOTElORV9GTEVYOwotICAgIH0KKyAgICBEYXRhUmVmPFNWR1JlbmRlclN0
eWxlPiBtX3N2Z1N0eWxlOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRp
c3BsYXkpIGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAg
IHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKLSNlbHNl
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkaXNwbGF5KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisgICAg
Ym9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwogI2VuZGlmCi0gICAgfQorfTsKIAot
ICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8
fCBpc0Rpc3BsYXlHcmlkQm94KGRpc3BsYXkpOwotICAgIH0KK2ludCBhZGp1c3RGb3JBYnNvbHV0
ZVpvb20oaW50LCBjb25zdCBSZW5kZXJTdHlsZSYpOworZmxvYXQgYWRqdXN0RmxvYXRGb3JBYnNv
bHV0ZVpvb20oZmxvYXQsIGNvbnN0IFJlbmRlclN0eWxlJik7CitMYXlvdXRVbml0IGFkanVzdExh
eW91dFVuaXRGb3JBYnNvbHV0ZVpvb20oTGF5b3V0VW5pdCwgY29uc3QgUmVuZGVyU3R5bGUmKTsK
IAotICAgIC8vIENvbG9yIGFjY2Vzc29ycyBhcmUgYWxsIHByaXZhdGUgdG8gbWFrZSBzdXJlIGNh
bGxlcnMgdXNlIHZpc2l0ZWREZXBlbmRlbnRDb2xvciBpbnN0ZWFkIHRvIGFjY2VzcyB0aGVtLgot
ICAgIHN0YXRpYyBDb2xvciBpbnZhbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAg
Y29uc3QgQ29sb3ImIGJvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIubGVmdCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9Ci0g
ICAgY29uc3QgQ29sb3ImIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci50b3AoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGJvcmRlckJvdHRvbUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5jb2xvcigpOyB9
Ci0gICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZC0+Y29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OwotICAg
IGNvbnN0IENvbG9yJiBjb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9ydWxlLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xv
ciYgb3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCku
Y29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0
IENvbG9yJiB0ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnRleHRGaWxsQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dFN0cm9rZUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcjsgfQotICAgIGNv
bnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbG9yKCkgY29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIHZp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYg
dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7IH0KLSAgICBjb25zdCBD
b2xvciYgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KLSAgICBj
b25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KLSAgICBj
b25zdCBDb2xvciYgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQotICAgIGNvbnN0
IENvbG9yJiB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
OyB9Ci0gICAgY29uc3QgQ29sb3ImIHRleHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgY29u
c3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsg
fQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7
IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsgfQotICAg
IGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcjsgfQorRUJvcmRl
clN0eWxlIGNvbGxhcHNlZEJvcmRlclN0eWxlKEVCb3JkZXJTdHlsZSk7CiAKLSAgICBDb2xvciBj
b2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5r
KSBjb25zdDsKK2Jvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUqKTsKIAotICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBz
dmdTdHlsZSgpLnN0b3BDb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29kQ29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9y
KCk7IH0KK2lubGluZSBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Ok5vbkluaGVyaXRl
ZEZsYWdzKCkKK3sKKyAgICAvLyBBbGwgdGhlc2UgaW5pdGlhbCB2YWx1ZXMgbmVlZCB0byBiZSB6
ZXJvIHNvIHRoYXQgemVyby1pbml0aWFsaXppbmcgbV9mbGFncyBpcyBjb3JyZWN0LgorICAgIEFT
U0VSVCghaW5pdGlhbE92ZXJmbG93WCgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1ko
KSk7CisgICAgQVNTRVJUKCFpbml0aWFsQ2xlYXIoKSk7CisgICAgQVNTRVJUKCFpbml0aWFsRGlz
cGxheSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxVbmljb2RlQmlkaSgpKTsKKyAgICBBU1NFUlQo
IWluaXRpYWxQb3NpdGlvbigpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkp
OworICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0aW5nKCkpOworICAgIEFTU0VSVCghaW5pdGlhbFRh
YmxlTGF5b3V0KCkpOworfQogCi0gICAgdm9pZCBhcHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RGF0YT4pOwotfTsKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0
ZWRGbGFnczo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90
aGVyKQoreworICAgIC8vIE9ubHkgYSBzdWJzZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJp
dGVkRmxhZ3MgY29udGFpbnMgYSBidW5jaCBvZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUg
ZGF0YS4KKyAgICB1aW50NjRfdCBub25Jbmhlcml0ZWRNYXNrID0gb3ZlcmZsb3dNYXNrIDw8IG92
ZXJmbG93WE9mZnNldAorICAgICAgICB8IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1lPZmZzZXQK
KyAgICAgICAgfCBjbGVhck1hc2sgPDwgY2xlYXJPZmZzZXQKKyAgICAgICAgfCBkaXNwbGF5TWFz
ayA8PCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0CisgICAgICAgIHwgcG9zaXRpb25NYXNrIDw8IHBv
c2l0aW9uT2Zmc2V0CisgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgb3JpZ2luYWxEaXNwbGF5T2Zm
c2V0CisgICAgICAgIHwgdW5pY29kZUJpZGlNYXNrIDw8IHVuaWNvZGVCaWRpT2Zmc2V0CisgICAg
ICAgIHwgdmVydGljYWxBbGlnbk1hc2sgPDwgdmVydGljYWxBbGlnbk9mZnNldAorICAgICAgICB8
IGZsb2F0aW5nTWFzayA8PCBmbG9hdGluZ09mZnNldAorICAgICAgICB8IG9uZUJpdE1hc2sgPDwg
ZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldAorICAgICAgICB8IHRhYmxlTGF5b3V0Qml0TWFzayA8
PCB0YWJsZUxheW91dE9mZnNldAorICAgICAgICB8IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrIDw8
IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7CisKKyAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9u
SW5oZXJpdGVkTWFzaykgfCAob3RoZXIubV9mbGFncyAmIG5vbkluaGVyaXRlZE1hc2spOworfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QKK3sKKyAgICBBU1NFUlQocHNldWRvID4gTk9QU0VV
RE8pOworICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7CisgICAg
cmV0dXJuIChvbmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYg
bV9mbGFnczsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdz
OjpzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pCit7CisgICAgQVNTRVJUKHBzZXVk
byA+IE5PUFNFVURPKTsKKyAgICBBU1NFUlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURP
SUQpOworICAgIG1fZmxhZ3MgfD0gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEg
KyBwc2V1ZG8pOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxh
Z3M6OnNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNldCkKK3sKKyAgICBB
U1NFUlQocHNldWRvSWRTZXQpOworICAgIHVpbnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0gcHNldWRv
SWRTZXQuZGF0YSgpOworICAgIEFTU0VSVCgocmF3UHNldWRvSWRTZXQgJiBQVUJMSUNfUFNFVURP
SURfTUFTSykgPT0gcmF3UHNldWRvSWRTZXQpOworICAgIHN0YXRpY19hc3NlcnQocHNldWRvQml0
c09mZnNldCA+PSAxLCAiKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSBzaG91bGQgYmUgdmFsaWQuIik7
CisgICAgbV9mbGFncyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhd1BzZXVkb0lkU2V0KSA8
PCAocHNldWRvQml0c09mZnNldCAtIDEpKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6
Ok5vbkluaGVyaXRlZEZsYWdzOjp1cGRhdGVCb29sZWFuKGJvb2wgaXNTZXQsIHVpbnQ2NF90IG9m
ZnNldCkKK3sKKyAgICBpZiAoaXNTZXQpCisgICAgICAgIG1fZmxhZ3MgfD0gKG9uZUJpdE1hc2sg
PDwgb2Zmc2V0KTsKKyAgICBlbHNlCisgICAgICAgIG1fZmxhZ3MgJj0gfihvbmVCaXRNYXNrIDw8
IG9mZnNldCk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFn
czo6Z2V0Qm9vbGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmxh
Z3MgJiAob25lQml0TWFzayA8PCBvZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2
NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNT
RVJUKCEobmV3VmFsdWUgJiB+cG9zaXRpb25JbmRlcGVuZGVudE1hc2spKTsKKyAgICB1aW50NjRf
dCBwb3NpdGlvbkRlcGVuZGVudE1hc2sgPSBwb3NpdGlvbkluZGVwZW5kZW50TWFzayA8PCBvZmZz
ZXQ7CisgICAgbV9mbGFncyA9IChtX2ZsYWdzICYgfnBvc2l0aW9uRGVwZW5kZW50TWFzaykgfCAo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKSA8PCBvZmZzZXQpOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJp
dGVkRmxhZ3MmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBlbXB0eUNlbGxzID09IG90aGVy
LmVtcHR5Q2VsbHMKKyAgICAgICAgJiYgY2FwdGlvblNpZGUgPT0gb3RoZXIuY2FwdGlvblNpZGUK
KyAgICAgICAgJiYgbGlzdFN0eWxlVHlwZSA9PSBvdGhlci5saXN0U3R5bGVUeXBlCisgICAgICAg
ICYmIGxpc3RTdHlsZVBvc2l0aW9uID09IG90aGVyLmxpc3RTdHlsZVBvc2l0aW9uCisgICAgICAg
ICYmIHZpc2liaWxpdHkgPT0gb3RoZXIudmlzaWJpbGl0eQorICAgICAgICAmJiB0ZXh0QWxpZ24g
PT0gb3RoZXIudGV4dEFsaWduCisgICAgICAgICYmIHRleHRUcmFuc2Zvcm0gPT0gb3RoZXIudGV4
dFRyYW5zZm9ybQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbnMgPT0gb3RoZXIudGV4dERlY29y
YXRpb25zCisgICAgICAgICYmIGN1cnNvciA9PSBvdGhlci5jdXJzb3IKKyNpZiBFTkFCTEUoQ1VS
U09SX1ZJU0lCSUxJVFkpCisgICAgICAgICYmIGN1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIuY3Vy
c29yVmlzaWJpbGl0eQorI2VuZGlmCisgICAgICAgICYmIGRpcmVjdGlvbiA9PSBvdGhlci5kaXJl
Y3Rpb24KKyAgICAgICAgJiYgd2hpdGVTcGFjZSA9PSBvdGhlci53aGl0ZVNwYWNlCisgICAgICAg
ICYmIGJvcmRlckNvbGxhcHNlID09IG90aGVyLmJvcmRlckNvbGxhcHNlCisgICAgICAgICYmIGJv
eERpcmVjdGlvbiA9PSBvdGhlci5ib3hEaXJlY3Rpb24KKyAgICAgICAgJiYgcnRsT3JkZXJpbmcg
PT0gb3RoZXIucnRsT3JkZXJpbmcKKyAgICAgICAgJiYgcHJpbnRDb2xvckFkanVzdCA9PSBvdGhl
ci5wcmludENvbG9yQWRqdXN0CisgICAgICAgICYmIHBvaW50ZXJFdmVudHMgPT0gb3RoZXIucG9p
bnRlckV2ZW50cworICAgICAgICAmJiBpbnNpZGVMaW5rID09IG90aGVyLmluc2lkZUxpbmsKKyAg
ICAgICAgJiYgaW5zaWRlRGVmYXVsdEJ1dHRvbiA9PSBvdGhlci5pbnNpZGVEZWZhdWx0QnV0dG9u
CisgICAgICAgICYmIHdyaXRpbmdNb2RlID09IG90aGVyLndyaXRpbmdNb2RlOworfQorCitpbmxp
bmUgdW5zaWduZWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpnZXRWYWx1ZSh1aW50
NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdAorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKG1fZmxhZ3MgPj4gb2Zmc2V0KSAmIHBv
c2l0aW9uSW5kZXBlbmRlbnRNYXNrKTsKK30KIAogaW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0
ZVpvb20oaW50IHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CkBAIC0yMzI1LDUw
ICsyMTA0LDI1NiBAQCBpbmxpbmUgRUJvcmRlclN0eWxlIGNvbGxhcHNlZEJvcmRlclN0eWxlKEVC
b3JkZXJTdHlsZSBzdHlsZSkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLWlubGluZSBib29sIFJl
bmRlclN0eWxlOjpzZXRab29tKGZsb2F0IGYpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFz
QmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJ
bWFnZSgpOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3Bh
Y2Ugd2hpdGVTcGFjZSkKIHsKLSAgICBzZXRFZmZlY3RpdmVab29tKGVmZmVjdGl2ZVpvb20oKSAq
IGYpOwotICAgIGlmIChjb21wYXJlRXF1YWwodmlzdWFsLT5tX3pvb20sIGYpKQorICAgIC8vIE5v
d3JhcCBhbmQgcHJlIGRvbid0IGF1dG9tYXRpY2FsbHkgd3JhcC4KKyAgICByZXR1cm4gd2hpdGVT
cGFjZSAhPSBOT1dSQVAgJiYgd2hpdGVTcGFjZSAhPSBQUkU7Cit9CisKK2lubGluZSBib29sIFJl
bmRlclN0eWxlOjpwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK3sKKyAg
ICAvLyBOb3JtYWwgYW5kIG5vd3JhcCBkbyBub3QgcHJlc2VydmUgbmV3bGluZXMuCisgICAgcmV0
dXJuIHdoaXRlU3BhY2UgIT0gTk9STUFMICYmIHdoaXRlU3BhY2UgIT0gTk9XUkFQOworfQorCitp
bmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdz
KQoreworICAgIC8vIFByZSBhbmQgcHJld3JhcCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4K
KyAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOworfQorCitpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgY2hhcmFjdGVyKSBj
b25zdAoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgY2FzZSAnICc6CisgICAgY2Fz
ZSAnXHQnOgorICAgICAgICByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNlKCk7CisgICAgY2FzZSAn
XG4nOgorICAgICAgICByZXR1cm4gIXByZXNlcnZlTmV3bGluZSgpOworICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2aXN1YWwuYWNjZXNzKCktPm1fem9vbSA9IGY7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNw
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFBSRV9XUkFQIHx8IGxp
bmVCcmVhaygpID09IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZTsKK30KKworaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6OmJyZWFrV29yZHMoKSBjb25zdAoreworICAgIHJldHVybiB3b3JkQnJlYWso
KSA9PSBCcmVha1dvcmRCcmVhayB8fCBvdmVyZmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93V3Jh
cDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMoKSBj
b25zdAoreworICAgIGF1dG8gYXhpcyA9IGNvbHVtbkF4aXMoKTsKKyAgICByZXR1cm4gYXhpcyA9
PSBBdXRvQ29sdW1uQXhpcyB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IChheGlzID09
IEhvcml6b250YWxDb2x1bW5BeGlzKTsKK30KKworaW5saW5lIEltYWdlT3JpZW50YXRpb25FbnVt
IFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0
aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbik7CisjZWxzZQor
ICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCBSZW5kZXJTdHlsZTo6c2V0TG9naWNhbFdpZHRoKExlbmd0aCYmIGxvZ2ljYWxXaWR0aCkK
K3sKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgc2V0V2lkdGgo
V1RGTW92ZShsb2dpY2FsV2lkdGgpKTsKKyAgICBlbHNlCisgICAgICAgIHNldEhlaWdodChXVEZN
b3ZlKGxvZ2ljYWxXaWR0aCkpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TG9n
aWNhbEhlaWdodChMZW5ndGgmJiBsb2dpY2FsSGVpZ2h0KQoreworICAgIGlmIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBzZXRIZWlnaHQoV1RGTW92ZShsb2dpY2FsSGVpZ2h0
KSk7CisgICAgZWxzZQorICAgICAgICBzZXRXaWR0aChXVEZNb3ZlKGxvZ2ljYWxIZWlnaHQpKTsK
K30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXpl
JiYgc2l6ZSkKK3sKKyAgICBhdXRvIHRvcExlZnQgPSBzaXplOworICAgIHNldEJvcmRlclRvcExl
ZnRSYWRpdXMoV1RGTW92ZSh0b3BMZWZ0KSk7CisgICAgYXV0byB0b3BSaWdodCA9IHNpemU7Cisg
ICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoV1RGTW92ZSh0b3BSaWdodCkpOworICAgIGF1dG8g
Ym90dG9tTGVmdCA9IHNpemU7CisgICAgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhXVEZNb3Zl
KGJvdHRvbUxlZnQpKTsKKyAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhXVEZNb3ZlKHNp
emUpKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhjb25z
dCBJbnRTaXplJiBzaXplKQoreworICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplIHsgeyBz
aXplLndpZHRoKCksIEZpeGVkIH0sIHsgc2l6ZS5oZWlnaHQoKSwgRml4ZWQgfSB9KTsKK30KKwor
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFpvb20oZmxvYXQgem9vbUxldmVsKQoreworICAg
IHNldEVmZmVjdGl2ZVpvb20oZWZmZWN0aXZlWm9vbSgpICogem9vbUxldmVsKTsKKyAgICBpZiAo
Y29tcGFyZUVxdWFsKG1fdmlzdWFsRGF0YS0+em9vbSwgem9vbUxldmVsKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fdmlzdWFsRGF0YS5hY2Nlc3MoKS56b29tID0gem9vbUxldmVsOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0RWZmZWN0
aXZlWm9vbShmbG9hdCBmKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldEVmZmVjdGl2ZVpv
b20oZmxvYXQgem9vbUxldmVsKQogewotICAgIGlmIChjb21wYXJlRXF1YWwocmFyZUluaGVyaXRl
ZERhdGEtPm1fZWZmZWN0aXZlWm9vbSwgZikpCisgICAgaWYgKGNvbXBhcmVFcXVhbChtX3JhcmVJ
bmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tLCB6b29tTGV2ZWwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZWZmZWN0aXZlWm9vbSA9
IGY7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5lZmZlY3RpdmVab29tID0gem9v
bUxldmVsOwogICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
c2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pCiB7Ci0g
ICAgaWYgKGNvbXBhcmVFcXVhbChyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pKSkKKyAgICBpZiAoY29tcGFy
ZUVxdWFsKG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRleHRPcmllbnRhdGlvbikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50ZXh0T3JpZW50YXRpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odGV4dE9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5s
aW5lIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEJhY2tncm91bmRMYXllcnMoKQoreworICAgIGlm
IChiYWNrZ3JvdW5kTGF5ZXJzKCkubmV4dCgpKSB7CisgICAgICAgIGVuc3VyZUJhY2tncm91bmRM
YXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVy
cygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFJlbmRl
clN0eWxlOjphZGp1c3RNYXNrTGF5ZXJzKCkKK3sKKyAgICBpZiAobWFza0xheWVycygpLm5leHQo
KSkgeworICAgICAgICBlbnN1cmVNYXNrTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7CisgICAg
ICAgIGVuc3VyZU1hc2tMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7CisgICAgfQorfQor
CitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJBbmltYXRpb25zKCkKK3sKKyAgICBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBudWxscHRyOworfQorCitp
bmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJUcmFuc2l0aW9ucygpCit7CisgICAgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG51bGxwdHI7Cit9CisKK2lu
bGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+
JiYgdmFsdWUpCit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lk
ZSA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkuc2hhcGVPdXRzaWRlID0gV1RGTW92ZSh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0IHNoYXBlSW1hZ2VUaHJl
c2hvbGQpCit7CisgICAgZmxvYXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRv
PGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xkLCAwLCAxKTsKKyAgICBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdlVGhy
ZXNob2xkKTsKK30KIAotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RleHRPcmll
bnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pOworaW5saW5l
IHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4m
JiBvcGVyYXRpb24pCit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRo
ICE9IG9wZXJhdGlvbikKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5j
bGlwUGF0aCA9IFdURk1vdmUob3BlcmF0aW9uKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6OndpbGxDaGFuZ2VDcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2lsbENoYW5nZSgpICYmIHdpbGxDaGFuZ2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0
KCk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9PSBJ
TkxJTkVfQkxPQ0sKKyAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxh
eSgpID09IFRBQkxFX0NBUFRJT04KKyAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRFTTsK
K30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2Rl
IHYpCit7CisgICAgaWYgKHYgPT0gd3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUgPSB2OwogICAgIHJldHVybiB0cnVl
OwogfQogCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5saW5lRGlyZWN0aW9u
RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQs
IExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dp
Y2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywg
bG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxl
OjpnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cs
IExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0
Cit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0
aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93
SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOworfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5
IGRpc3BsYXkpCit7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3Bs
YXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYCisjaWYgRU5BQkxFKENT
U19HUklEX0xBWU9VVCkKKyAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRAorI2VuZGlm
CisgICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOworfQorCitpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZShFRGlzcGxheSBkaXNwbGF5KQoreworICAg
IHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxh
eSk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZUJveChF
RGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVybiBkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxh
eSA9PSBJTkxJTkVfRkxFWDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxh
eUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK3sKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQorICAgIHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXkpOworICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVPckdy
aWRCb3goRURpc3BsYXkgZGlzcGxheSkKK3sKKyAgICByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVC
b3goZGlzcGxheSkgfHwgaXNEaXNwbGF5R3JpZEJveChkaXNwbGF5KTsKK30KKwogaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsKKyAg
ICByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsK
IH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBz
ZXVkbykgY29uc3QKIHsKLSAgICByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1BzZXVkb1N0
eWxlKHBzZXVkbyk7CisgICAgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzUHNldWRvU3R5
bGUocHNldWRvKTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkIHBzZXVkbykKIHsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzUHNl
dWRvU3R5bGUocHNldWRvKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1BzZXVkb1N0
eWxlKHBzZXVkbyk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9T
dHlsZXMoUHNldWRvSWRTZXQgcHNldWRvSWRTZXQpCiB7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldEhhc1BzZXVkb1N0eWxlcyhwc2V1ZG9JZFNldCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zZXRIYXNQc2V1ZG9TdHlsZXMocHNldWRvSWRTZXQpOworfQorCitpbmxpbmUgdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Qm94UmVmbGVjdChSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiYmIHJlZmxlY3Qp
Cit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3hSZWZsZWN0LCBXVEZN
b3ZlKHJlZmxlY3QpKTsKIH0KIAogaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKaW5kZXggNmMwMmU1MDhhZjFhYTM4YjIy
YzJmMjM5OWZkZDUyNDdhZTM0MWM5Zi4uZTQ2OGY4OWQ4MTEzYzg4ZDYwZTU0MTJhMGFiZjBjMmZi
YjllMDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGUuY3BwCkBAIC00OSw0NiArNDksNDYgQEAgUmVmPFNWR1JlbmRlclN0eWxlPiBTVkdS
ZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkKIH0KIAogU1ZHUmVuZGVyU3R5bGU6OlNW
R1JlbmRlclN0eWxlKCkKLSAgICA6IGZpbGwoZGVmYXVsdFNWR1N0eWxlKCkuZmlsbCkKLSAgICAs
IHN0cm9rZShkZWZhdWx0U1ZHU3R5bGUoKS5zdHJva2UpCi0gICAgLCB0ZXh0KGRlZmF1bHRTVkdT
dHlsZSgpLnRleHQpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoZGVmYXVsdFNWR1N0eWxlKCku
aW5oZXJpdGVkUmVzb3VyY2VzKQotICAgICwgc3RvcHMoZGVmYXVsdFNWR1N0eWxlKCkuc3RvcHMp
Ci0gICAgLCBtaXNjKGRlZmF1bHRTVkdTdHlsZSgpLm1pc2MpCi0gICAgLCBzaGFkb3dTVkcoZGVm
YXVsdFNWR1N0eWxlKCkuc2hhZG93U1ZHKQotICAgICwgbGF5b3V0KGRlZmF1bHRTVkdTdHlsZSgp
LmxheW91dCkKLSAgICAsIHJlc291cmNlcyhkZWZhdWx0U1ZHU3R5bGUoKS5yZXNvdXJjZXMpCisg
ICAgOiBtX2ZpbGxEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fZmlsbERhdGEpCisgICAgLCBtX3N0
cm9rZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9zdHJva2VEYXRhKQorICAgICwgbV90ZXh0RGF0
YShkZWZhdWx0U1ZHU3R5bGUoKS5tX3RleHREYXRhKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJj
ZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEpCisgICAgLCBt
X3N0b3BEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fc3RvcERhdGEpCisgICAgLCBtX21pc2NEYXRh
KGRlZmF1bHRTVkdTdHlsZSgpLm1fbWlzY0RhdGEpCisgICAgLCBtX3NoYWRvd0RhdGEoZGVmYXVs
dFNWR1N0eWxlKCkubV9zaGFkb3dEYXRhKQorICAgICwgbV9sYXlvdXREYXRhKGRlZmF1bHRTVkdT
dHlsZSgpLm1fbGF5b3V0RGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGRl
ZmF1bHRTVkdTdHlsZSgpLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKQogewogICAgIHNldEJp
dERlZmF1bHRzKCk7CiB9CiAKIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShDcmVhdGVE
ZWZhdWx0VHlwZSkKLSAgICA6IGZpbGwoU3R5bGVGaWxsRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBz
dHJva2UoU3R5bGVTdHJva2VEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHRleHQoU3R5bGVUZXh0RGF0
YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoU3R5bGVJbmhlcml0ZWRSZXNv
dXJjZURhdGE6OmNyZWF0ZSgpKQotICAgICwgc3RvcHMoU3R5bGVTdG9wRGF0YTo6Y3JlYXRlKCkp
Ci0gICAgLCBtaXNjKFN0eWxlTWlzY0RhdGE6OmNyZWF0ZSgpKQotICAgICwgc2hhZG93U1ZHKFN0
eWxlU2hhZG93U1ZHRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBsYXlvdXQoU3R5bGVMYXlvdXREYXRh
OjpjcmVhdGUoKSkKLSAgICAsIHJlc291cmNlcyhTdHlsZVJlc291cmNlRGF0YTo6Y3JlYXRlKCkp
CisgICAgOiBtX2ZpbGxEYXRhKFN0eWxlRmlsbERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdHJv
a2VEYXRhKFN0eWxlU3Ryb2tlRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3RleHREYXRhKFN0eWxl
VGV4dERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVJ
bmhlcml0ZWRSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdG9wRGF0YShTdHlsZVN0
b3BEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fbWlzY0RhdGEoU3R5bGVNaXNjRGF0YTo6Y3JlYXRl
KCkpCisgICAgLCBtX3NoYWRvd0RhdGEoU3R5bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUoKSkKKyAg
ICAsIG1fbGF5b3V0RGF0YShTdHlsZUxheW91dERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9ub25J
bmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQogewogICAg
IHNldEJpdERlZmF1bHRzKCk7CiB9CiAKIGlubGluZSBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVuZGVy
U3R5bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTVkdS
ZW5kZXJTdHlsZT4oKQotICAgICwgc3ZnX2luaGVyaXRlZF9mbGFncyhvdGhlci5zdmdfaW5oZXJp
dGVkX2ZsYWdzKQotICAgICwgc3ZnX25vbmluaGVyaXRlZF9mbGFncyhvdGhlci5zdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzKQotICAgICwgZmlsbChvdGhlci5maWxsKQotICAgICwgc3Ryb2tlKG90aGVy
LnN0cm9rZSkKLSAgICAsIHRleHQob3RoZXIudGV4dCkKLSAgICAsIGluaGVyaXRlZFJlc291cmNl
cyhvdGhlci5pbmhlcml0ZWRSZXNvdXJjZXMpCi0gICAgLCBzdG9wcyhvdGhlci5zdG9wcykKLSAg
ICAsIG1pc2Mob3RoZXIubWlzYykKLSAgICAsIHNoYWRvd1NWRyhvdGhlci5zaGFkb3dTVkcpCi0g
ICAgLCBsYXlvdXQob3RoZXIubGF5b3V0KQotICAgICwgcmVzb3VyY2VzKG90aGVyLnJlc291cmNl
cykKKyAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKKyAgICAs
IG1fbm9uSW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncykKKyAgICAsIG1f
ZmlsbERhdGEob3RoZXIubV9maWxsRGF0YSkKKyAgICAsIG1fc3Ryb2tlRGF0YShvdGhlci5tX3N0
cm9rZURhdGEpCisgICAgLCBtX3RleHREYXRhKG90aGVyLm1fdGV4dERhdGEpCisgICAgLCBtX2lu
aGVyaXRlZFJlc291cmNlRGF0YShvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YSkKKyAgICAs
IG1fc3RvcERhdGEob3RoZXIubV9zdG9wRGF0YSkKKyAgICAsIG1fbWlzY0RhdGEob3RoZXIubV9t
aXNjRGF0YSkKKyAgICAsIG1fc2hhZG93RGF0YShvdGhlci5tX3NoYWRvd0RhdGEpCisgICAgLCBt
X2xheW91dERhdGEob3RoZXIubV9sYXlvdXREYXRhKQorICAgICwgbV9ub25Jbmhlcml0ZWRSZXNv
dXJjZURhdGEob3RoZXIubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEpCiB7CiB9CiAKQEAgLTEw
Myw0OSArMTAzLDQ2IEBAIFNWR1JlbmRlclN0eWxlOjp+U1ZHUmVuZGVyU3R5bGUoKQogCiBib29s
IFNWR1JlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikg
Y29uc3QKIHsKLSAgICByZXR1cm4gZmlsbCA9PSBvdGhlci5maWxsCi0gICAgICAgICYmIHN0cm9r
ZSA9PSBvdGhlci5zdHJva2UKLSAgICAgICAgJiYgdGV4dCA9PSBvdGhlci50ZXh0Ci0gICAgICAg
ICYmIHN0b3BzID09IG90aGVyLnN0b3BzCi0gICAgICAgICYmIG1pc2MgPT0gb3RoZXIubWlzYwot
ICAgICAgICAmJiBzaGFkb3dTVkcgPT0gb3RoZXIuc2hhZG93U1ZHCi0gICAgICAgICYmIGxheW91
dCA9PSBvdGhlci5sYXlvdXQKLSAgICAgICAgJiYgaW5oZXJpdGVkUmVzb3VyY2VzID09IG90aGVy
LmluaGVyaXRlZFJlc291cmNlcwotICAgICAgICAmJiByZXNvdXJjZXMgPT0gb3RoZXIucmVzb3Vy
Y2VzCi0gICAgICAgICYmIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX2luaGVyaXRl
ZF9mbGFncwotICAgICAgICAmJiBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzID09IG90aGVyLnN2Z19u
b25pbmhlcml0ZWRfZmxhZ3M7CisgICAgcmV0dXJuIG1fZmlsbERhdGEgPT0gb3RoZXIubV9maWxs
RGF0YQorICAgICAgICAmJiBtX3N0cm9rZURhdGEgPT0gb3RoZXIubV9zdHJva2VEYXRhCisgICAg
ICAgICYmIG1fdGV4dERhdGEgPT0gb3RoZXIubV90ZXh0RGF0YQorICAgICAgICAmJiBtX3N0b3BE
YXRhID09IG90aGVyLm1fc3RvcERhdGEKKyAgICAgICAgJiYgbV9taXNjRGF0YSA9PSBvdGhlci5t
X21pc2NEYXRhCisgICAgICAgICYmIG1fc2hhZG93RGF0YSA9PSBvdGhlci5tX3NoYWRvd0RhdGEK
KyAgICAgICAgJiYgbV9sYXlvdXREYXRhID09IG90aGVyLm1fbGF5b3V0RGF0YQorICAgICAgICAm
JiBtX2luaGVyaXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0
YQorICAgICAgICAmJiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX25vbklu
aGVyaXRlZFJlc291cmNlRGF0YQorICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzID09IG90aGVy
Lm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncyA9PSBvdGhl
ci5tX25vbkluaGVyaXRlZEZsYWdzOwogfQogCi1ib29sIFNWR1JlbmRlclN0eWxlOjppbmhlcml0
ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0Citib29sIFNWR1Jl
bmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbGwgIT0gb3RoZXItPmZpbGwKLSAgICAgICAgfHwgc3Ry
b2tlICE9IG90aGVyLT5zdHJva2UKLSAgICAgICAgfHwgdGV4dCAhPSBvdGhlci0+dGV4dAotICAg
ICAgICB8fCBpbmhlcml0ZWRSZXNvdXJjZXMgIT0gb3RoZXItPmluaGVyaXRlZFJlc291cmNlcwot
ICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2Zs
YWdzOworICAgIHJldHVybiBtX2ZpbGxEYXRhICE9IG90aGVyLm1fZmlsbERhdGEKKyAgICAgICAg
fHwgbV9zdHJva2VEYXRhICE9IG90aGVyLm1fc3Ryb2tlRGF0YQorICAgICAgICB8fCBtX3RleHRE
YXRhICE9IG90aGVyLm1fdGV4dERhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRSZXNvdXJjZURh
dGEgIT0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0
ZWRGbGFncyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzOwogfQogCi12b2lkIFNWR1JlbmRlclN0
eWxlOjppbmhlcml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnSW5oZXJpdFBhcmVudCkK
K3ZvaWQgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBv
dGhlcikKIHsKLSAgICBpZiAoIXN2Z0luaGVyaXRQYXJlbnQpCi0gICAgICAgIHJldHVybjsKKyAg
ICBtX2ZpbGxEYXRhID0gb3RoZXIubV9maWxsRGF0YTsKKyAgICBtX3N0cm9rZURhdGEgPSBvdGhl
ci5tX3N0cm9rZURhdGE7CisgICAgbV90ZXh0RGF0YSA9IG90aGVyLm1fdGV4dERhdGE7CisgICAg
bV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgPSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YTsK
IAotICAgIGZpbGwgPSBzdmdJbmhlcml0UGFyZW50LT5maWxsOwotICAgIHN0cm9rZSA9IHN2Z0lu
aGVyaXRQYXJlbnQtPnN0cm9rZTsKLSAgICB0ZXh0ID0gc3ZnSW5oZXJpdFBhcmVudC0+dGV4dDsK
LSAgICBpbmhlcml0ZWRSZXNvdXJjZXMgPSBzdmdJbmhlcml0UGFyZW50LT5pbmhlcml0ZWRSZXNv
dXJjZXM7Ci0KLSAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzID0gc3ZnSW5oZXJpdFBhcmVudC0+c3Zn
X2luaGVyaXRlZF9mbGFnczsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gb3RoZXIubV9pbmhlcml0
ZWRGbGFnczsKIH0KIAotdm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20o
Y29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKQordm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5v
bkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogewotICAgIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MgPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFnczsKLSAgICBz
dG9wcyA9IG90aGVyLT5zdG9wczsKLSAgICBtaXNjID0gb3RoZXItPm1pc2M7Ci0gICAgc2hhZG93
U1ZHID0gb3RoZXItPnNoYWRvd1NWRzsKLSAgICBsYXlvdXQgPSBvdGhlci0+bGF5b3V0OwotICAg
IHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJjZXM7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncyA9
IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3M7CisgICAgbV9zdG9wRGF0YSA9IG90aGVyLm1fc3Rv
cERhdGE7CisgICAgbV9taXNjRGF0YSA9IG90aGVyLm1fbWlzY0RhdGE7CisgICAgbV9zaGFkb3dE
YXRhID0gb3RoZXIubV9zaGFkb3dEYXRhOworICAgIG1fbGF5b3V0RGF0YSA9IG90aGVyLm1fbGF5
b3V0RGF0YTsKKyAgICBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9IG90aGVyLm1fbm9uSW5o
ZXJpdGVkUmVzb3VyY2VEYXRhOwogfQogCiBWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJT
dHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdApAQCAtMTg4LDEwNCArMTg1LDEw
NCBAQCBWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBh
aW50T3JkZXIoKSBjb25zdAogICAgIHJldHVybiBwYWludE9yZGVyOwogfQogCi1TdHlsZURpZmZl
cmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKSBj
b25zdAorU3R5bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFNWR1JlbmRl
clN0eWxlJiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBBbGwgY29tcGFyaXNpb25zIHRo
YXQgbWF5IHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQgaGF2ZSB0byBnbyBiZWZvcmUgdGhv
c2Ugd2hvIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50CiAKICAgICAvLyBJZiBrZXJuaW5n
IGNoYW5nZXMsIHdlIG5lZWQgYSByZWxheW91dCwgdG8gZm9yY2UgU1ZHQ2hhcmFjdGVyRGF0YSB0
byBiZSByZWNhbGN1bGF0ZWQgaW4gdGhlIFNWR1Jvb3RJbmxpbmVCb3guCi0gICAgaWYgKHRleHQg
IT0gb3RoZXItPnRleHQpCisgICAgaWYgKG1fdGV4dERhdGEgIT0gb3RoZXIubV90ZXh0RGF0YSkK
ICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElmIHJlc291
cmNlcyBjaGFuZ2UsIHdlIG5lZWQgYSByZWxheW91dCwgYXMgdGhlIHByZXNlbmNlIG9mIHJlc291
cmNlcyBpbmZsdWVuY2VzIHRoZSByZXBhaW50IHJlY3QuCi0gICAgaWYgKHJlc291cmNlcyAhPSBv
dGhlci0+cmVzb3VyY2VzKQorICAgIGlmIChtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSAhPSBv
dGhlci5tX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlm
ZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElmIG1hcmtlcnMgY2hhbmdlLCB3ZSBuZWVkIGEgcmVs
YXlvdXQsIGFzIG1hcmtlciBib3VuZGFyaWVzIGFyZSBjYWNoZWQgaW4gUmVuZGVyU1ZHUGF0aC4K
LSAgICBpZiAoaW5oZXJpdGVkUmVzb3VyY2VzICE9IG90aGVyLT5pbmhlcml0ZWRSZXNvdXJjZXMp
CisgICAgaWYgKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVyLm1faW5oZXJpdGVkUmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAg
Ly8gQWxsIHRleHQgcmVsYXRlZCBwcm9wZXJ0aWVzIGluZmx1ZW5jZSBsYXlvdXQuCi0gICAgaWYg
KHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX3RleHRBbmNob3IKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhP
cmllbnRhdGlvbkhvcml6b250YWwgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBo
T3JpZW50YXRpb25Ib3Jpem9udGFsCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsCi0gICAgICAgIHx8IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5fYWxpZ25tZW50QmFzZWxpbmUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5f
YWxpZ25tZW50QmFzZWxpbmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9k
b21pbmFudEJhc2VsaW5lICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWlu
YW50QmFzZWxpbmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGlu
ZVNoaWZ0ICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQp
CisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciAhPSBvdGhlci5tX2luaGVyaXRl
ZEZsYWdzLnRleHRBbmNob3IKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlv
blZlcnRpY2FsICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFz
ZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNl
bGluZQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFz
ZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2Vs
aW5lCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlm
dCAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQpCiAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBUZXh0IHJlbGF0
ZWQgcHJvcGVydGllcyBpbmZsdWVuY2UgbGF5b3V0LgotICAgIGJvb2wgbWlzY05vdEVxdWFsID0g
bWlzYyAhPSBvdGhlci0+bWlzYzsKLSAgICBpZiAobWlzY05vdEVxdWFsICYmIG1pc2MtPmJhc2Vs
aW5lU2hpZnRWYWx1ZSAhPSBvdGhlci0+bWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlKQorICAgIGJv
b2wgbWlzY05vdEVxdWFsID0gbV9taXNjRGF0YSAhPSBvdGhlci5tX21pc2NEYXRhOworICAgIGlm
IChtaXNjTm90RXF1YWwgJiYgbV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlICE9IG90aGVy
Lm1fbWlzY0RhdGEtPmJhc2VsaW5lU2hpZnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlm
ZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYWZmZWN0IHRoZSBjYWNo
ZWQgc3Ryb2tlIGJvdW5kaW5nIGJveCByZWN0cy4KLSAgICBpZiAoc3ZnX2luaGVyaXRlZF9mbGFn
cy5fY2FwU3R5bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlCi0gICAg
ICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSAhPSBvdGhlci0+c3ZnX2luaGVy
aXRlZF9mbGFncy5fam9pblN0eWxlKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmNhcFN0eWxl
ICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUKKyAgICAgICAgfHwgbV9pbmhlcml0
ZWRGbGFncy5qb2luU3R5bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5qb2luU3R5bGUpCiAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBTaGFkb3cgY2hh
bmdlcyByZXF1aXJlIHJlbGF5b3V0cywgYXMgdGhleSBhZmZlY3QgdGhlIHJlcGFpbnQgcmVjdHMu
Ci0gICAgaWYgKHNoYWRvd1NWRyAhPSBvdGhlci0+c2hhZG93U1ZHKQorICAgIGlmIChtX3NoYWRv
d0RhdGEgIT0gb3RoZXIubV9zaGFkb3dEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJl
bmNlTGF5b3V0OwogCiAgICAgLy8gVGhlIHggb3IgeSBwcm9wZXJ0aWVzIHJlcXVpcmUgcmVsYXlv
dXQuCi0gICAgaWYgKGxheW91dCAhPSBvdGhlci0+bGF5b3V0KQorICAgIGlmIChtX2xheW91dERh
dGEgIT0gb3RoZXIubV9sYXlvdXREYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNl
TGF5b3V0OyAKIAogICAgIC8vIFNvbWUgc3Ryb2tlIHByb3BlcnRpZXMsIHJlcXVpcmVzIHJlbGF5
b3V0cywgYXMgdGhlIGNhY2hlZCBzdHJva2UgYm91bmRhcmllcyBuZWVkIHRvIGJlIHJlY2FsY3Vs
YXRlZC4KLSAgICBpZiAoc3Ryb2tlICE9IG90aGVyLT5zdHJva2UpIHsKLSAgICAgICAgaWYgKHN0
cm9rZS0+d2lkdGggIT0gb3RoZXItPnN0cm9rZS0+d2lkdGgKLSAgICAgICAgICAgIHx8IHN0cm9r
ZS0+cGFpbnRUeXBlICE9IG90aGVyLT5zdHJva2UtPnBhaW50VHlwZQotICAgICAgICAgICAgfHwg
c3Ryb2tlLT5wYWludENvbG9yICE9IG90aGVyLT5zdHJva2UtPnBhaW50Q29sb3IKLSAgICAgICAg
ICAgIHx8IHN0cm9rZS0+cGFpbnRVcmkgIT0gb3RoZXItPnN0cm9rZS0+cGFpbnRVcmkKLSAgICAg
ICAgICAgIHx8IHN0cm9rZS0+bWl0ZXJMaW1pdCAhPSBvdGhlci0+c3Ryb2tlLT5taXRlckxpbWl0
Ci0gICAgICAgICAgICB8fCBzdHJva2UtPmRhc2hBcnJheSAhPSBvdGhlci0+c3Ryb2tlLT5kYXNo
QXJyYXkKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+ZGFzaE9mZnNldCAhPSBvdGhlci0+c3Ryb2tl
LT5kYXNoT2Zmc2V0Ci0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xv
ciAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IKLSAgICAgICAgICAgIHx8
IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVyaSAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVkTGlu
a1BhaW50VXJpCi0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlICE9
IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKQorICAgIGlmIChtX3N0cm9rZURh
dGEgIT0gb3RoZXIubV9zdHJva2VEYXRhKSB7CisgICAgICAgIGlmIChtX3N0cm9rZURhdGEtPndp
ZHRoICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+d2lkdGgKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tl
RGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlCisgICAgICAg
ICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50Q29sb3IgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5w
YWludENvbG9yCisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50VXJpICE9IG90aGVy
Lm1fc3Ryb2tlRGF0YS0+cGFpbnRVcmkKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+bWl0
ZXJMaW1pdCAhPSBvdGhlci5tX3N0cm9rZURhdGEtPm1pdGVyTGltaXQKKyAgICAgICAgICAgIHx8
IG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5
CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgIT0gb3RoZXIubV9zdHJv
a2VEYXRhLT5kYXNoT2Zmc2V0CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnZpc2l0ZWRM
aW5rUGFpbnRDb2xvciAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xv
cgorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpICE9IG90
aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaQorICAgICAgICAgICAgfHwgbV9z
dHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZp
c2l0ZWRMaW5rUGFpbnRUeXBlKQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxh
eW91dDsKIAogICAgICAgICAvLyBPbmx5IHRoZSBzdHJva2Utb3BhY2l0eSBjYXNlIHJlbWFpbnMs
IHdoZXJlIHdlIG9ubHkgbmVlZCBhIHJlcGFpbnQuCi0gICAgICAgIEFTU0VSVChzdHJva2UtPm9w
YWNpdHkgIT0gb3RoZXItPnN0cm9rZS0+b3BhY2l0eSk7CisgICAgICAgIEFTU0VSVChtX3N0cm9r
ZURhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5vcGFjaXR5KTsKICAgICAgICAg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCiAgICAgLy8gdmVjdG9yLWVm
ZmVjdCBjaGFuZ2VzIHJlcXVpcmUgYSByZS1sYXlvdXQuCi0gICAgaWYgKHN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuX3ZlY3RvckVmZmVjdCkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52
ZWN0b3JFZmZlY3QgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JF
ZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBO
T1RFOiBBbGwgY29tcGFyaXNpb25zIGJlbG93IG1heSBvbmx5IHJldHVybiBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50CiAKICAgICAvLyBQYWludGluZyByZWxhdGVkIHByb3BlcnRpZXMgb25seSBuZWVk
IHJlcGFpbnRzLiAKICAgICBpZiAobWlzY05vdEVxdWFsKSB7Ci0gICAgICAgIGlmIChtaXNjLT5m
bG9vZENvbG9yICE9IG90aGVyLT5taXNjLT5mbG9vZENvbG9yCi0gICAgICAgICAgICB8fCBtaXNj
LT5mbG9vZE9wYWNpdHkgIT0gb3RoZXItPm1pc2MtPmZsb29kT3BhY2l0eQotICAgICAgICAgICAg
fHwgbWlzYy0+bGlnaHRpbmdDb2xvciAhPSBvdGhlci0+bWlzYy0+bGlnaHRpbmdDb2xvcikKKyAg
ICAgICAgaWYgKG1fbWlzY0RhdGEtPmZsb29kQ29sb3IgIT0gb3RoZXIubV9taXNjRGF0YS0+Zmxv
b2RDb2xvcgorICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5ICE9IG90aGVy
Lm1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eQorICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+bGln
aHRpbmdDb2xvciAhPSBvdGhlci5tX21pc2NEYXRhLT5saWdodGluZ0NvbG9yKQogICAgICAgICAg
ICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCi0gICAgLy8gSWYgZmls
bCBjaGFuZ2VzLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYWludC4gRmlsbCBib3VuZGFyaWVzIGFyZSBu
b3QgaW5mbHVlbmNlZCBieSB0aGlzLCBvbmx5IGJ5IHRoZSBQYXRoLCB0aGF0IFJlbmRlclNWR1Bh
dGggY29udGFpbnMuCi0gICAgaWYgKGZpbGwtPnBhaW50VHlwZSAhPSBvdGhlci0+ZmlsbC0+cGFp
bnRUeXBlIHx8IGZpbGwtPnBhaW50Q29sb3IgIT0gb3RoZXItPmZpbGwtPnBhaW50Q29sb3IKLSAg
ICAgICAgfHwgZmlsbC0+cGFpbnRVcmkgIT0gb3RoZXItPmZpbGwtPnBhaW50VXJpIHx8IGZpbGwt
Pm9wYWNpdHkgIT0gb3RoZXItPmZpbGwtPm9wYWNpdHkpCisgICAgLy8gSWYgZmlsbCBkYXRhIGNo
YW5nZXMsIHdlIGp1c3QgbmVlZCB0byByZXBhaW50LiBGaWxsIGJvdW5kYXJpZXMgYXJlIG5vdCBp
bmZsdWVuY2VkIGJ5IHRoaXMsIG9ubHkgYnkgdGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZHUGF0aCBj
b250YWlucy4KKyAgICBpZiAobV9maWxsRGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1fZmlsbERh
dGEtPnBhaW50VHlwZSB8fCBtX2ZpbGxEYXRhLT5wYWludENvbG9yICE9IG90aGVyLm1fZmlsbERh
dGEtPnBhaW50Q29sb3IKKyAgICAgICAgfHwgbV9maWxsRGF0YS0+cGFpbnRVcmkgIT0gb3RoZXIu
bV9maWxsRGF0YS0+cGFpbnRVcmkgfHwgbV9maWxsRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX2Zp
bGxEYXRhLT5vcGFjaXR5KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsK
IAogICAgIC8vIElmIGdyYWRpZW50IHN0b3BzIGNoYW5nZSwgd2UganVzdCBuZWVkIHRvIHJlcGFp
bnQuIFN0eWxlIHVwZGF0ZXMgYXJlIGFscmVhZHkgaGFuZGxlZCB0aHJvdWdoIFJlbmRlclNWR0dy
YWRpZW50U1RvcC4KLSAgICBpZiAoc3RvcHMgIT0gb3RoZXItPnN0b3BzKQorICAgIGlmIChtX3N0
b3BEYXRhICE9IG90aGVyLm1fc3RvcERhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50OwogCiAgICAgLy8gQ2hhbmdlcyBvZiB0aGVzZSBmbGFncyBvbmx5IGNhdXNlIHJl
cGFpbnRzLgotICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyAhPSBv
dGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmcKLSAgICAgICAgfHwgc3Zn
X2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX3NoYXBlUmVuZGVyaW5nCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2Ns
aXBSdWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZQotICAgICAgICB8
fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxsUnVsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9m
bGFncy5fZmlsbFJ1bGUKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRl
cnBvbGF0aW9uICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRp
b24KLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycykKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZyAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxh
Z3Muc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmlu
ZworICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuY2xpcFJ1bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSAh
PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlCisgICAgICAgIHx8IG1faW5oZXJpdGVk
RmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY29sb3JJ
bnRlcnBvbGF0aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVycyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0gICAgaWYg
KHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyAhPSBvdGhlci0+c3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nKQorICAgIGlmIChtX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLm1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcpCiAgICAgICAgIHJldHVybiBT
dHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5tYXNrVHlwZSAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlKQor
ICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlICE9IG90aGVyLm1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUpCiAgICAgICAgIHJldHVybiBTdHls
ZURpZmZlcmVuY2VSZXBhaW50OwogCiAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUVxdWFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRl
eCAzOTE5NzVhNThiOTUwZTdkNjc0YjY4YTdiZmE2NTNhN2Y3ODc0MTZmLi42NjlhMmMwOTgzZTJh
MmIyNGRjYWZlODU3MzE3YjkyNGIxNDQ4MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAg
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTMyLDI1
ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNs
YXNzIEludFJlY3Q7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7Ci0KLWNsYXNzIFNWR1JlbmRlclN0eWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+IHsgICAgCitjbGFzcyBTVkdSZW5k
ZXJTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1JlbmRlclN0eWxlPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7CiAgICAg
c3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdSZW5kZXJTdHlsZSk7IH0KICAgICBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNvcHkoKSBjb25z
dDsKICAgICB+U1ZHUmVuZGVyU3R5bGUoKTsKIAotICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwo
Y29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0
IFNWR1JlbmRlclN0eWxlKik7Ci0gICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBT
VkdSZW5kZXJTdHlsZSopOworICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVu
ZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0
eWxlJik7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHls
ZSYpOwogCi0gICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBj
b25zdDsKKyAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRl
clN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAg
IC8vIEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgRUFs
aWdubWVudEJhc2VsaW5lIGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFCX0FV
VE87IH0KQEAgLTg0LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFs
Rmxvb2RPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxv
b2RDb2xvcigpIHsgcmV0dXJuIENvbG9yKDAsIDAsIDApOyB9CiAgICAgc3RhdGljIENvbG9yIGlu
aXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDI1NSk7IH0KLSAg
ICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIDA7IH0KKyAgICBz
dGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICBzdGF0aWMgU3RyaW5nIGluaXRpYWxDbGlwcGVyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hc2tlclJlc291cmNlKCkgeyByZXR1cm4g
U3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJTdGFydFJlc291cmNl
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTkyLDI4NyArODcsMTIyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgc3RhdGljIEVNYXNrVHlwZSBpbml0aWFsTWFza1R5cGUoKSB7IHJldHVybiBN
VF9MVU1JTkFOQ0U7IH0KICAgICBzdGF0aWMgUGFpbnRPcmRlciBpbml0aWFsUGFpbnRPcmRlcigp
IHsgcmV0dXJuIFBhaW50T3JkZXJOb3JtYWw7IH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZh
bHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkKLSAgICB7Ci0gICAgICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMo
TGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAg
IHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7CisgICAg
c3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCk7CiAKICAgICAvLyBTVkcgQ1NT
IFByb3BlcnR5IHNldHRlcnMKLSAgICB2b2lkIHNldEFsaWdubWVudEJhc2VsaW5lKEVBbGlnbm1l
bnRCYXNlbGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNl
bGluZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNl
bGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0g
dmFsOyB9Ci0gICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBz
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSB2YWw7IH0KLSAgICB2b2lk
IHNldFZlY3RvckVmZmVjdChFVmVjdG9yRWZmZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzLmYuX3ZlY3RvckVmZmVjdCA9IHZhbDsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJp
bmcoRUJ1ZmZlcmVkUmVuZGVyaW5nIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVm
ZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KLSAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFs
KSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRD
bGlwUnVsZShXaW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2
YWw7IH0KLSAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9u
IHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0K
LSAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJwb2xhdGlv
biB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9
IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JSZW5kZXJpbmcoRUNvbG9yUmVuZGVyaW5nIHZhbCkg
eyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQg
c2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxl
ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0U2hhcGVSZW5kZXJp
bmcoRVNoYXBlUmVuZGVyaW5nIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRl
cmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwpIHsg
c3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvciA9IHZhbDsgfQotICAgIHZvaWQgc2V0R2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gdmFsOyB9Ci0gICAgdm9p
ZCBzZXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQotICAg
IHZvaWQgc2V0TWFza1R5cGUoRU1hc2tUeXBlIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYubWFza1R5cGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFBhaW50T3JkZXIoUGFpbnRPcmRlciB2
YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0gdmFsOyB9Ci0gICAgdm9pZCBz
ZXRDeChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+Y3gg
PT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+Y3ggPSBvYmo7Ci0gICAgfQot
ICAgIHZvaWQgc2V0Q3koY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShs
YXlvdXQtPmN5ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPmN5ID0gb2Jq
OwotICAgIH0KLSAgICB2b2lkIHNldFIoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAg
ICBpZiAoIShsYXlvdXQtPnIgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+
ciA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRSeChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7
Ci0gICAgICAgIGlmICghKGxheW91dC0+cnggPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5h
Y2Nlc3MoKS0+cnggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0UnkoY29uc3QgTGVuZ3RoJiBv
YmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnJ5ID09IG9iaikpCi0gICAgICAgICAg
ICBsYXlvdXQuYWNjZXNzKCktPnJ5ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFgoY29uc3Qg
TGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnggPT0gb2JqKSkKLSAg
ICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+eCA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRZ
KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT55ID09IG9i
aikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnkgPSBvYmo7Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAoIShmaWxs
LT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5vcGFjaXR5ID0g
b2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFy
U3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCi0gICAg
ewotICAgICAgICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEo
ZmlsbC0+cGFpbnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCkt
PnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludENvbG9yID09
IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5wYWludENvbG9yID0gY29s
b3I7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludFVyaSA9PSB1cmkpKQotICAgICAgICAg
ICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEoZmlsbC0+
dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nl
c3MoKS0+dmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoZmls
bC0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBmaWxs
LmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIGlm
ICghKGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBm
aWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAg
IGlmICghKHN0cm9rZS0+b3BhY2l0eSA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2Vz
cygpLT5vcGFjaXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZH
UGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJv
b2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5
bGUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7Ci0g
ICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50VHlwZSA9PSB0eXBlKSkKLSAgICAgICAgICAg
ICAgICBzdHJva2UuYWNjZXNzKCktPnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAo
IShzdHJva2UtPnBhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5h
Y2Nlc3MoKS0+cGFpbnRDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT5w
YWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRV
cmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxl
KSB7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5
cGUpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFR5
cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29s
b3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExp
bmtQYWludENvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRM
aW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnZp
c2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNl
dFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBvYmopCi0gICAg
ewotICAgICAgICBpZiAoIShzdHJva2UtPmRhc2hBcnJheSA9PSBvYmopKQotICAgICAgICAgICAg
c3Ryb2tlLmFjY2VzcygpLT5kYXNoQXJyYXkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRT
dHJva2VNaXRlckxpbWl0KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+
bWl0ZXJMaW1pdCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5taXRlckxp
bWl0ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3Ro
JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPndpZHRoID09IG9iaikpCi0gICAg
ICAgICAgICBzdHJva2UuYWNjZXNzKCktPndpZHRoID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQg
c2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlm
ICghKHN0cm9rZS0+ZGFzaE9mZnNldCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2Vz
cygpLT5kYXNoT2Zmc2V0ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0S2VybmluZyhjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEodGV4dC0+a2Vybmlu
ZyA9PSBvYmopKQotICAgICAgICAgICAgdGV4dC5hY2Nlc3MoKS0+a2VybmluZyA9IG9iajsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldFN0b3BPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAg
IGlmICghKHN0b3BzLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBzdG9wcy5hY2Nlc3Mo
KS0+b3BhY2l0eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBD
b2xvciYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RvcHMtPmNvbG9yID09IG9iaikpCi0g
ICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+Y29sb3IgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+
Zmxvb2RPcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZE9w
YWNpdHkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9y
JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5mbG9vZENvbG9yID09IG9iaikpCi0g
ICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZENvbG9yID0gb2JqOwotICAgIH0KLQotICAg
IHZvaWQgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEobWlzYy0+bGlnaHRpbmdDb2xvciA9PSBvYmopKQotICAgICAgICAgICAgbWlzYy5hY2Nl
c3MoKS0+bGlnaHRpbmdDb2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJhc2VsaW5l
U2hpZnRWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYg
KCEobWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFj
Y2VzcygpLT5iYXNlbGluZVNoaWZ0VmFsdWUgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRT
aGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG9iaikgeyBzaGFkb3dTVkcuYWNjZXNz
KCktPnNoYWRvdyA9IFdURk1vdmUob2JqKTsgfQorICAgIHZvaWQgc2V0QWxpZ25tZW50QmFzZWxp
bmUoRUFsaWdubWVudEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRz
LmFsaWdubWVudEJhc2VsaW5lID0gdmFsOyB9CisgICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5l
KEVEb21pbmFudEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRv
bWluYW50QmFzZWxpbmUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnQoRUJhc2Vs
aW5lU2hpZnQgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlm
dCA9IHZhbDsgfQorICAgIHZvaWQgc2V0VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3QgdmFsKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0ID0gdmFsOyB9CisgICAg
dm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhFQnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IG1fbm9u
SW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2
b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUg
PSB2YWw7IH0KKyAgICB2b2lkIHNldENsaXBSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRl
ZEZsYWdzLmNsaXBSdWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24o
RUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9s
YXRpb24gPSB2YWw7IH0KKyAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNv
bG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRp
b25GaWx0ZXJzID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvclJlbmRlcmluZyhFQ29sb3JSZW5k
ZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcgPSB2YWw7IH0KKyAg
ICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmZpbGxS
dWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IG1faW5o
ZXJpdGVkRmxhZ3Muam9pblN0eWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRTaGFwZVJlbmRlcmlu
ZyhFU2hhcGVSZW5kZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcg
PSB2YWw7IH0KKyAgICB2b2lkIHNldFRleHRBbmNob3IoRVRleHRBbmNob3IgdmFsKSB7IG1faW5o
ZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IHZhbDsgfQorICAgIHZvaWQgc2V0R2x5cGhPcmllbnRh
dGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3Mu
Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldEdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFn
cy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldE1hc2tUeXBl
KEVNYXNrVHlwZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9
IHZhbDsgfQorICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIHZhbCkgeyBtX2luaGVy
aXRlZEZsYWdzLnBhaW50T3JkZXIgPSB2YWw7IH0KKyAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0
aCYpOworICAgIHZvaWQgc2V0Q3koY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRSKGNvbnN0
IExlbmd0aCYpOworICAgIHZvaWQgc2V0UngoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRS
eShjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFgoY29uc3QgTGVuZ3RoJik7CisgICAgdm9p
ZCBzZXRZKGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxvYXQpOwor
ICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSwgY29uc3QgQ29sb3ImLCBjb25zdCBT
dHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBseVRv
VmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxv
YXQpOworICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBDb2xvciYs
IGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBib29s
IGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpOworCisgICAgdm9pZCBzZXRTdHJva2VE
YXNoQXJyYXkoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYpOworICAgIHZvaWQgc2V0U3Ry
b2tlTWl0ZXJMaW1pdChmbG9hdCk7CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChjb25zdCBMZW5n
dGgmKTsKKyAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoY29uc3QgTGVuZ3RoJik7CisgICAg
dm9pZCBzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CisgICAgdm9pZCBzZXRTdG9w
T3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAg
ICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNv
bnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7Cisg
ICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKKwor
ICAgIHZvaWQgc2V0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiYmIGRhdGEpIHsg
bV9zaGFkb3dEYXRhLmFjY2VzcygpLnNoYWRvdyA9IFdURk1vdmUoZGF0YSk7IH0KIAogICAgIC8v
IFNldHRlcnMgZm9yIG5vbi1pbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgdm9pZCBzZXRDbGlwcGVy
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShyZXNvdXJj
ZXMtPmNsaXBwZXIgPT0gb2JqKSkKLSAgICAgICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+Y2xp
cHBlciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0
cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEocmVzb3VyY2VzLT5tYXNrZXIgPT0gb2Jq
KSkKLSAgICAgICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+bWFza2VyID0gb2JqOwotICAgIH0K
KyAgICB2b2lkIHNldENsaXBwZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNl
dE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gU2V0dGVycyBmb3IgaW5o
ZXJpdGVkIHJlc291cmNlcwotICAgIHZvaWQgc2V0TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBT
dHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+bWFy
a2VyU3RhcnQgPT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5hY2Nlc3Mo
KS0+bWFya2VyU3RhcnQgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRNYXJrZXJNaWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJl
c291cmNlcy0+bWFya2VyTWlkID09IG9iaikpCi0gICAgICAgICAgICBpbmhlcml0ZWRSZXNvdXJj
ZXMuYWNjZXNzKCktPm1hcmtlck1pZCA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hcmtl
ckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoaW5o
ZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQgPT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRl
ZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2VyRW5kID0gb2JqOwotICAgIH0KKyAgICB2b2lkIHNl
dE1hcmtlclN0YXJ0UmVzb3VyY2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRNYXJrZXJN
aWRSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hcmtlckVuZFJlc291cmNl
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUmVhZCBhY2Nlc3NvcnMgZm9yIGFsbCB0aGUgcHJv
cGVydGllcwotICAgIEVBbGlnbm1lbnRCYXNlbGluZSBhbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0
IHsgcmV0dXJuIChFQWxpZ25tZW50QmFzZWxpbmUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5f
YWxpZ25tZW50QmFzZWxpbmU7IH0KLSAgICBFRG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJhc2Vs
aW5lKCkgY29uc3QgeyByZXR1cm4gKEVEb21pbmFudEJhc2VsaW5lKSBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmU7IH0KLSAgICBFQmFzZWxpbmVTaGlmdCBiYXNlbGlu
ZVNoaWZ0KCkgY29uc3QgeyByZXR1cm4gKEVCYXNlbGluZVNoaWZ0KSBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQ7IH0KLSAgICBFVmVjdG9yRWZmZWN0IHZlY3RvckVmZmVj
dCgpIGNvbnN0IHsgcmV0dXJuIChFVmVjdG9yRWZmZWN0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuX3ZlY3RvckVmZmVjdDsgfQotICAgIEVCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRl
cmluZygpIGNvbnN0IHsgcmV0dXJuIChFQnVmZmVyZWRSZW5kZXJpbmcpIHN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZzsgfQotICAgIExpbmVDYXAgY2FwU3R5bGUoKSBj
b25zdCB7IHJldHVybiAoTGluZUNhcCkgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGU7IH0K
LSAgICBXaW5kUnVsZSBjbGlwUnVsZSgpIGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fY2xpcFJ1bGU7IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9y
SW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBzdmdf
aW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb247IH0KLSAgICBFQ29sb3JJbnRlcnBv
bGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9y
SW50ZXJwb2xhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVyczsgfQotICAgIEVDb2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmluZygpIGNvbnN0IHsgcmV0
dXJuIChFQ29sb3JSZW5kZXJpbmcpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5n
OyB9Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlOyB9Ci0gICAgTGluZUpvaW4gam9pblN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGU7
IH0KLSAgICBFU2hhcGVSZW5kZXJpbmcgc2hhcGVSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAo
RVNoYXBlUmVuZGVyaW5nKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZzsgfQot
ICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3Ip
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3I7IH0KLSAgICBFR2x5cGhPcmllbnRhdGlv
biBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmll
bnRhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw7
IH0KLSAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25z
dCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBo
T3JpZW50YXRpb25WZXJ0aWNhbDsgfQotICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gZmlsbC0+b3BhY2l0eTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9y
JiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50
VXJpOyB9ICAgIAotICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdHJv
a2UtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIHN0
cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50Q29sb3I7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5w
YWludFVyaTsgfQotICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkg
Y29uc3QgeyByZXR1cm4gc3Ryb2tlLT5kYXNoQXJyYXk7IH0KLSAgICBmbG9hdCBzdHJva2VNaXRl
ckxpbWl0KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5taXRlckxpbWl0OyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBzdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+d2lkdGg7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHJva2Ut
PmRhc2hPZmZzZXQ7IH0KLSAgICBTVkdMZW5ndGhWYWx1ZSBrZXJuaW5nKCkgY29uc3QgeyByZXR1
cm4gdGV4dC0+a2VybmluZzsgfQotICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gc3RvcHMtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gc3RvcHMtPmNvbG9yOyB9Ci0gICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbWlzYy0+Zmxvb2RPcGFjaXR5OyB9Ci0gICAgY29uc3QgQ29sb3ImIGZsb29kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3Im
IGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9Ci0g
ICAgU1ZHTGVuZ3RoVmFsdWUgYmFzZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbWlz
Yy0+YmFzZWxpbmVTaGlmdFZhbHVlOyB9Ci0gICAgU2hhZG93RGF0YSogc2hhZG93KCkgY29uc3Qg
eyByZXR1cm4gc2hhZG93U1ZHLT5zaGFkb3cuZ2V0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGN4
KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5jeDsgfQotICAgIGNvbnN0IExlbmd0aCYgY3koKSBj
b25zdCB7IHJldHVybiBsYXlvdXQtPmN5OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByKCkgY29uc3Qg
eyByZXR1cm4gbGF5b3V0LT5yOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0IHsgcmV0
dXJuIGxheW91dC0+cng7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0LT5yeTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91
dC0+eDsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+eTsg
fQotICAgIFN0cmluZyBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMt
PmNsaXBwZXI7IH0KLSAgICBTdHJpbmcgbWFza2VyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBy
ZXNvdXJjZXMtPm1hc2tlcjsgfQotICAgIFN0cmluZyBtYXJrZXJTdGFydFJlc291cmNlKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJTdGFydDsgfQotICAgIFN0cmlu
ZyBtYXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJlc291cmNlcy0+
bWFya2VyTWlkOyB9Ci0gICAgU3RyaW5nIG1hcmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQ7IH0KLSAgICBFTWFza1R5cGUgbWFza1R5
cGUoKSBjb25zdCB7IHJldHVybiAoRU1hc2tUeXBlKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
bWFza1R5cGU7IH0KLSAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAo
UGFpbnRPcmRlcikgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyOyB9CisgICAgRUFsaWdu
bWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVBbGlnbm1l
bnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGlu
ZTsgfQorICAgIEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUoKSBjb25zdCB7IHJl
dHVybiAoRURvbWluYW50QmFzZWxpbmUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9t
aW5hbnRCYXNlbGluZTsgfQorICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQoKSBjb25z
dCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
YmFzZWxpbmVTaGlmdDsgfQorICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3Qg
eyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVj
dG9yRWZmZWN0OyB9CisgICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5nKCkg
Y29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgbV9ub25Jbmhlcml0ZWRGbGFncy5m
bGFnQml0cy5idWZmZXJlZFJlbmRlcmluZzsgfQorICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25z
dCB7IHJldHVybiAoTGluZUNhcCkgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZTsgfQorICAgIFdp
bmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZs
YWdzLmNsaXBSdWxlOyB9CisgICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRp
b24oKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvckludGVycG9sYXRpb247IH0KKyAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikg
bV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9CisgICAgRUNvbG9y
UmVuZGVyaW5nIGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmlu
ZykgbV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZzsgfQorICAgIFdpbmRSdWxlIGZpbGxS
dWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxl
OyB9CisgICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBt
X2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZTsgfQorICAgIEVTaGFwZVJlbmRlcmluZyBzaGFwZVJl
bmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFU2hhcGVSZW5kZXJpbmcpIG1faW5oZXJpdGVkRmxh
Z3Muc2hhcGVSZW5kZXJpbmc7IH0KKyAgICBFVGV4dEFuY2hvciB0ZXh0QW5jaG9yKCkgY29uc3Qg
eyByZXR1cm4gKEVUZXh0QW5jaG9yKSBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3I7IH0KKyAg
ICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsg
cmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbDsgfQorICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRG
bGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWw7IH0KKyAgICBmbG9hdCBmaWxsT3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25zdCBTVkdQYWlu
dFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFR5
cGU7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGxEYXRhLT5wYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiBmaWxsUGFpbnRVcmko
KSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFVyaTsgfSAgICAKKyAgICBmbG9hdCBz
dHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5vcGFjaXR5OyB9Cisg
ICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3N0cm9rZURhdGEtPnBhaW50VHlwZTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VQYWludENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludENvbG9yOyB9CisgICAgY29u
c3QgU3RyaW5nJiBzdHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+
cGFpbnRVcmk7IH0KKyAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5OyB9CisgICAgZmxvYXQgc3Ry
b2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdDsg
fQorICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0cm9r
ZURhdGEtPndpZHRoOyB9CisgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5kYXNoT2Zmc2V0OyB9CisgICAgU1ZHTGVuZ3RoVmFs
dWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERhdGEtPmtlcm5pbmc7IH0KKyAgICBm
bG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcERhdGEtPm9wYWNpdHk7IH0K
KyAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wRGF0YS0+
Y29sb3I7IH0KKyAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX21pc2NE
YXRhLT5mbG9vZE9wYWNpdHk7IH0KKyAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmZsb29kQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3I7IH0K
KyAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X21pc2NEYXRhLT5iYXNlbGluZVNoaWZ0VmFsdWU7IH0KKyAgICBTaGFkb3dEYXRhKiBzaGFkb3co
KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0RhdGEtPnNoYWRvdy5nZXQoKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgY3goKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPmN4OyB9CisgICAgY29u
c3QgTGVuZ3RoJiBjeSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+Y3k7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnI7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT5yeDsgfQorICAg
IGNvbnN0IExlbmd0aCYgcnkoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnJ5OyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT54OyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT55OyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZFJlc291cmNlRGF0YS0+Y2xpcHBlcjsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFza2Vy
UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+bWFz
a2VyOyB9CisgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJTdGFydFJlc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlclN0YXJ0OyB9CisgICAgY29uc3Qg
U3RyaW5nJiBtYXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkUmVz
b3VyY2VEYXRhLT5tYXJrZXJNaWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlckVuZFJlc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZDsg
fQorICAgIEVNYXNrVHlwZSBtYXNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIChFTWFza1R5cGUpIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGU7IH0KKyAgICBQYWludE9yZGVyIHBh
aW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgbV9pbmhlcml0ZWRGbGFncy5w
YWludE9yZGVyOyB9CiAgICAgVmVjdG9yPFBhaW50VHlwZSwgMz4gcGFpbnRUeXBlc0ZvclBhaW50
T3JkZXIoKSBjb25zdDsKIAotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtGaWxs
UGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0K
LSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgdmlz
aXRlZExpbmtGaWxsUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1Bh
aW50VXJpOyB9Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAg
ICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtTdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1
cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIHZp
c2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRM
aW5rUGFpbnRVcmk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBh
aW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBl
OyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0
YS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRl
ZExpbmtTdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0
ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rU3Ryb2tlUGFp
bnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENv
bG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VXJpKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpOyB9CiAKICAgICAv
LyBjb252ZW5pZW5jZQogICAgIGJvb2wgaGFzQ2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuICFjbGlw
cGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KQEAgLTM4MywxMDcgKzIxMywzMTEgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBT
VkdfUEFJTlRUWVBFX05PTkU7IH0KICAgICBib29sIGlzb2xhdGVzQmxlbmRpbmcoKSBjb25zdCB7
IHJldHVybiBoYXNNYXNrZXIoKSB8fCBzaGFkb3coKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgLy8g
aW5oZXJpdAorcHJpdmF0ZToKKyAgICBTVkdSZW5kZXJTdHlsZSgpOworICAgIFNWR1JlbmRlclN0
eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7CisKKyAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBl
IHsgQ3JlYXRlRGVmYXVsdCB9OworICAgIFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRUeXBl
KTsgLy8gVXNlZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgc3R5bGUuCisKKyAgICB2b2lkIHNldEJp
dERlZmF1bHRzKCk7CisKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKF9jb2xvclJlbmRlcmluZyA9PSBvdGhlci5fY29sb3JSZW5k
ZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYgKF9zaGFwZVJlbmRlcmluZyA9PSBvdGhlci5fc2hh
cGVSZW5kZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYgKF9jbGlwUnVsZSA9PSBvdGhlci5fY2xp
cFJ1bGUpCi0gICAgICAgICAgICAgICAgJiYgKF9maWxsUnVsZSA9PSBvdGhlci5fZmlsbFJ1bGUp
Ci0gICAgICAgICAgICAgICAgJiYgKF9jYXBTdHlsZSA9PSBvdGhlci5fY2FwU3R5bGUpCi0gICAg
ICAgICAgICAgICAgJiYgKF9qb2luU3R5bGUgPT0gb3RoZXIuX2pvaW5TdHlsZSkKLSAgICAgICAg
ICAgICAgICAmJiAoX3RleHRBbmNob3IgPT0gb3RoZXIuX3RleHRBbmNob3IpCi0gICAgICAgICAg
ICAgICAgJiYgKF9jb2xvckludGVycG9sYXRpb24gPT0gb3RoZXIuX2NvbG9ySW50ZXJwb2xhdGlv
bikKLSAgICAgICAgICAgICAgICAmJiAoX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPT0gb3Ro
ZXIuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpCi0gICAgICAgICAgICAgICAgJiYgKF9nbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250
YWwpCi0gICAgICAgICAgICAgICAgJiYgKF9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3Ro
ZXIuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkKLSAgICAgICAgICAgICAgICAmJiAocGFpbnRP
cmRlciA9PSBvdGhlci5wYWludE9yZGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHVuc2lnbmVkIF9jb2xvclJlbmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZwotICAgICAg
ICB1bnNpZ25lZCBfc2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcgCi0gICAg
ICAgIHVuc2lnbmVkIF9jbGlwUnVsZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVk
IF9maWxsUnVsZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVkIF9jYXBTdHlsZSA6
IDI7IC8vIExpbmVDYXAKLSAgICAgICAgdW5zaWduZWQgX2pvaW5TdHlsZSA6IDI7IC8vIExpbmVK
b2luCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IKLSAg
ICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIEVDb2xvckludGVycG9s
YXRpb24KLSAgICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAv
LyBFQ29sb3JJbnRlcnBvbGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9n
bHlwaE9yaWVudGF0aW9uVmVydGljYWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgorICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICB1bnNpZ25lZCBjb2xvclJlbmRlcmlu
ZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBzaGFwZVJlbmRlcmlu
ZyA6IDI7IC8vIEVTaGFwZVJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBjbGlwUnVsZSA6IDE7
IC8vIFdpbmRSdWxlCisgICAgICAgIHVuc2lnbmVkIGZpbGxSdWxlIDogMTsgLy8gV2luZFJ1bGUK
KyAgICAgICAgdW5zaWduZWQgY2FwU3R5bGUgOiAyOyAvLyBMaW5lQ2FwCisgICAgICAgIHVuc2ln
bmVkIGpvaW5TdHlsZSA6IDI7IC8vIExpbmVKb2luCisgICAgICAgIHVuc2lnbmVkIHRleHRBbmNo
b3IgOiAyOyAvLyBFVGV4dEFuY2hvcgorICAgICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRp
b24gOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVu
c2lnbmVkIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsgLy8gRUdseXBoT3JpZW50YXRp
b24KKyAgICAgICAgdW5zaWduZWQgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIDogMzsgLy8gRUds
eXBoT3JpZW50YXRpb24KICAgICAgICAgdW5zaWduZWQgcGFpbnRPcmRlciA6IDM7IC8vIFBhaW50
T3JkZXIKLSAgICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7CisgICAgfTsKIAotICAgIC8vIGRvbid0
IGluaGVyaXQKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICAvLyAzMiBi
aXQgbm9uLWluaGVyaXRlZCwgZG9uJ3QgYWRkIHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRv
ciB3aWxsIGJyZWFrLgotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVk
RmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyA9PSBvdGhlci5fbmlmbGFnczsg
fQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MgJm90aGVy
KSBjb25zdCB7IHJldHVybiBfbmlmbGFncyAhPSBvdGhlci5fbmlmbGFnczsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBmbGFncyA9PSBvdGhlci5mbGFnczsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFncyAhPSBvdGhl
ci5mbGFnczsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgX2FsaWdubWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVu
dEJhc2VsaW5lIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9kb21pbmFudEJhc2VsaW5lIDog
NDsgLy8gRURvbWluYW50QmFzZWxpbmUKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBfYmFzZWxp
bmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
X3ZlY3RvckVmZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAorICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGFsaWdubWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lCisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2Vs
aW5lCisgICAgICAgICAgICAgICAgdW5zaWduZWQgYmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNl
bGluZVNoaWZ0CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yRWZmZWN0OiAxOyAvLyBF
VmVjdG9yRWZmZWN0CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyZWRSZW5kZXJpbmc6
IDI7IC8vIEVCdWZmZXJlZFJlbmRlcmluZwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hc2tU
eXBlOiAxOyAvLyBFTWFza1R5cGUKICAgICAgICAgICAgICAgICAvLyAxOCBiaXRzIHVudXNlZAot
ICAgICAgICAgICAgfSBmOwotICAgICAgICAgICAgdWludDMyX3QgX25pZmxhZ3M7CisgICAgICAg
ICAgICB9IGZsYWdCaXRzOworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7CiAgICAgICAgIH07
Ci0gICAgfSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH07CisKKyAgICBJbmhlcml0ZWRG
bGFncyBtX2luaGVyaXRlZEZsYWdzOworICAgIE5vbkluaGVyaXRlZEZsYWdzIG1fbm9uSW5oZXJp
dGVkRmxhZ3M7CiAKICAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5
bGVGaWxsRGF0YT4gZmlsbDsKLSAgICBEYXRhUmVmPFN0eWxlU3Ryb2tlRGF0YT4gc3Ryb2tlOwot
ICAgIERhdGFSZWY8U3R5bGVUZXh0RGF0YT4gdGV4dDsKLSAgICBEYXRhUmVmPFN0eWxlSW5oZXJp
dGVkUmVzb3VyY2VEYXRhPiBpbmhlcml0ZWRSZXNvdXJjZXM7CisgICAgRGF0YVJlZjxTdHlsZUZp
bGxEYXRhPiBtX2ZpbGxEYXRhOworICAgIERhdGFSZWY8U3R5bGVTdHJva2VEYXRhPiBtX3N0cm9r
ZURhdGE7CisgICAgRGF0YVJlZjxTdHlsZVRleHREYXRhPiBtX3RleHREYXRhOworICAgIERhdGFS
ZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhOwog
CiAgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZVN0b3BE
YXRhPiBzdG9wczsKLSAgICBEYXRhUmVmPFN0eWxlTWlzY0RhdGE+IG1pc2M7Ci0gICAgRGF0YVJl
ZjxTdHlsZVNoYWRvd1NWR0RhdGE+IHNoYWRvd1NWRzsKLSAgICBEYXRhUmVmPFN0eWxlTGF5b3V0
RGF0YT4gbGF5b3V0OwotICAgIERhdGFSZWY8U3R5bGVSZXNvdXJjZURhdGE+IHJlc291cmNlczsK
LQotcHJpdmF0ZToKLSAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBlIHsgQ3JlYXRlRGVmYXVsdCB9
OwotICAgICAgICAKLSAgICBTVkdSZW5kZXJTdHlsZSgpOwotICAgIFNWR1JlbmRlclN0eWxlKGNv
bnN0IFNWR1JlbmRlclN0eWxlJik7Ci0gICAgU1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5
cGUpOyAvLyBVc2VkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KKyAgICBEYXRhUmVmPFN0
eWxlU3RvcERhdGE+IG1fc3RvcERhdGE7CisgICAgRGF0YVJlZjxTdHlsZU1pc2NEYXRhPiBtX21p
c2NEYXRhOworICAgIERhdGFSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBtX3NoYWRvd0RhdGE7Cisg
ICAgRGF0YVJlZjxTdHlsZUxheW91dERhdGE+IG1fbGF5b3V0RGF0YTsKKyAgICBEYXRhUmVmPFN0
eWxlUmVzb3VyY2VEYXRhPiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YTsKK307CiAKLSAgICB2
b2lkIHNldEJpdERlZmF1bHRzKCkKLSAgICB7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2NsaXBSdWxlID0gaW5pdGlhbENsaXBSdWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2NvbG9yUmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlID0gaW5pdGlhbEZpbGxSdWxlKCk7Ci0gICAgICAg
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nID0gaW5pdGlhbFNoYXBlUmVuZGVy
aW5nKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgPSBpbml0aWFs
VGV4dEFuY2hvcigpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZSA9IGlu
aXRpYWxDYXBTdHlsZSgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUg
PSBpbml0aWFsSm9pblN0eWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9y
SW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb24oKTsKLSAgICAgICAgc3Zn
X2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0
aWNhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKLSAgICAgICAgc3ZnX2lu
aGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0gaW5pdGlhbFBhaW50T3JkZXIoKTsKLQotICAgICAg
ICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLl9uaWZsYWdzID0gMDsKLSAgICAgICAgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNl
bGluZSgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxp
bmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOwotICAgICAg
ICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JF
ZmZlY3QoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVy
aW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MuZi5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworaW5saW5lIFNWR0xlbmd0
aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkKK3sKKyAg
ICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7CisgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworaW5saW5l
IFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2VybmluZygpCit7CisgICAg
U1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KExlbmd0aFR5cGVOdW1iZXIsIDApOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSB2
b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBp
ZiAoIShtX2xheW91dERhdGEtPmN4ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5h
Y2Nlc3MoKS5jeCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNl
dEN5KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+Y3kg
PT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLmN5ID0gbGVuZ3RoOwor
fQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Uihjb25zdCBMZW5ndGgmIGxlbmd0
aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnIgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9s
YXlvdXREYXRhLmFjY2VzcygpLnIgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRl
clN0eWxlOjpzZXRSeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91
dERhdGEtPnJ4ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5yeCA9
IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFJ5KGNvbnN0IExl
bmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+cnkgPT0gbGVuZ3RoKSkK
KyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnJ5ID0gbGVuZ3RoOworfQorCitpbmxpbmUg
dm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0WChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBp
ZiAoIShtX2xheW91dERhdGEtPnggPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFj
Y2VzcygpLnggPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRZ
KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+eSA9PSBs
ZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkueSA9IGxlbmd0aDsKK30KKwor
aW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
Cit7CisgICAgaWYgKCEobV9maWxsRGF0YS0+b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAgICAgICAg
bV9maWxsRGF0YS5hY2Nlc3MoKS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBi
b29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0
eWxlKSB7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnBhaW50VHlwZSA9PSB0eXBlKSkKKyAg
ICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAg
aWYgKCEobV9maWxsRGF0YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX2Zp
bGxEYXRhLmFjY2VzcygpLnBhaW50Q29sb3IgPSBjb2xvcjsKKyAgICAgICAgaWYgKCEobV9maWxs
RGF0YS0+cGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCku
cGFpbnRVcmkgPSB1cmk7CiAgICAgfQotfTsKKyAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5
bGUpIHsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0g
dHlwZSkpCisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRU
eXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludENv
bG9yID09IGNvbG9yKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExp
bmtQYWludENvbG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnZpc2l0ZWRM
aW5rUGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlz
aXRlZExpbmtQYWludFVyaSA9IHVyaTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRl
clN0eWxlOjpzZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9z
dHJva2VEYXRhLT5vcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNj
ZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxl
OjpzZXRTdHJva2VQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBib29sIGFwcGx5VG9W
aXNpdGVkTGlua1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7CisgICAg
ICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAg
bV9zdHJva2VEYXRhLmFjY2VzcygpLnBhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlmICghKG1f
c3Ryb2tlRGF0YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX3N0cm9rZURh
dGEuYWNjZXNzKCkucGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURh
dGEtPnBhaW50VXJpID09IHVyaSkpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCku
cGFpbnRVcmkgPSB1cmk7CisgICAgfQorICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkg
eworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5
cGUpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRU
eXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50
Q29sb3IgPT0gY29sb3IpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0
ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZp
c2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nl
c3MoKS52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOworICAgIH0KK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3Ro
VmFsdWU+JiBhcnJheSkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hBcnJheSA9PSBh
cnJheSkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5kYXNoQXJyYXkgPSBhcnJheTsK
K30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZU1pdGVyTGltaXQoZmxv
YXQgbGltaXQpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT5taXRlckxpbWl0ID09IGxpbWl0
KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLm1pdGVyTGltaXQgPSBsaW1pdDsKK30K
KworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0
aCYgd2lkdGgpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT53aWR0aCA9PSB3aWR0aCkpCisg
ICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS53aWR0aCA9IHdpZHRoOworfQorCitpbmxpbmUg
dm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9m
ZnNldCkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgPT0gb2Zmc2V0KSkK
KyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLmRhc2hPZmZzZXQgPSBvZmZzZXQ7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiBrZXJuaW5nKQoreworICAgIGlmICghKG1fdGV4dERhdGEtPmtlcm5pbmcgPT0ga2Vybmlu
ZykpCisgICAgICAgIG1fdGV4dERhdGEuYWNjZXNzKCkua2VybmluZyA9IGtlcm5pbmc7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wT3BhY2l0eShmbG9hdCBvcGFjaXR5
KQoreworICAgIGlmICghKG1fc3RvcERhdGEtPm9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAg
IG1fc3RvcERhdGEuYWNjZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lk
IFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IGlmICghKG1fc3RvcERhdGEtPmNvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9zdG9wRGF0YS5h
Y2Nlc3MoKS5jb2xvciA9IGNvbG9yOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6
c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+
Zmxvb2RPcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmZs
b29kT3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpz
ZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRh
LT5mbG9vZENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5mbG9v
ZENvbG9yID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRMaWdo
dGluZ0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5s
aWdodGluZ0NvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5saWdo
dGluZ0NvbG9yID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRC
YXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHNoaWZ0VmFsdWUpCit7Cisg
ICAgaWYgKCEobV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlID09IHNoaWZ0VmFsdWUpKQor
ICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmJhc2VsaW5lU2hpZnRWYWx1ZSA9IHNoaWZ0VmFs
dWU7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDbGlwcGVyUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX25vbkluaGVyaXRlZFJlc291
cmNlRGF0YS0+Y2xpcHBlciA9PSByZXNvdXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJpdGVkUmVz
b3VyY2VEYXRhLmFjY2VzcygpLmNsaXBwZXIgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2Up
Cit7CisgICAgaWYgKCEobV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hc2tlciA9PSByZXNv
dXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hc2tl
ciA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TWFya2Vy
U3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1faW5o
ZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJTdGFydCA9PSByZXNvdXJjZSkpCisgICAgICAgIG1f
aW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlclN0YXJ0ID0gcmVzb3VyY2U7Cit9
CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRh
LT5tYXJrZXJNaWQgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX2luaGVyaXRlZFJlc291cmNlRGF0
YS5hY2Nlc3MoKS5tYXJrZXJNaWQgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVu
ZGVyU3R5bGU6OnNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7
CisgICAgaWYgKCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZCA9PSByZXNvdXJj
ZSkpCisgICAgICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlckVuZCA9
IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVs
dHMoKQoreworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBpbml0aWFsQ2xpcFJ1bGUo
KTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVu
ZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSA9IGluaXRpYWxGaWxsUnVs
ZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSBpbml0aWFsU2hhcGVS
ZW5kZXJpbmcoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3IgPSBpbml0aWFsVGV4
dEFuY2hvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgPSBpbml0aWFsQ2FwU3R5
bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSA9IGluaXRpYWxKb2luU3R5bGUo
KTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xv
ckludGVycG9sYXRpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnMgPSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpOworICAgIG1faW5o
ZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSBpbml0aWFsR2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRp
b25WZXJ0aWNhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLnBhaW50T3JkZXIgPSBpbml0aWFsUGFpbnRPcmRlcigpOworCisgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFncyA9IDA7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOworICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxE
b21pbmFudEJhc2VsaW5lKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNl
bGluZVNoaWZ0ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKKyAgICBtX25vbkluaGVyaXRlZEZs
YWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKKyAgICBt
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1
ZmZlcmVkUmVuZGVyaW5nKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNr
VHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworfQorCitpbmxpbmUgYm9vbCBTVkdSZW5kZXJTdHls
ZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVy
KSBjb25zdAoreworICAgIHJldHVybiBjb2xvclJlbmRlcmluZyA9PSBvdGhlci5jb2xvclJlbmRl
cmluZworICAgICAgICAmJiBzaGFwZVJlbmRlcmluZyA9PSBvdGhlci5zaGFwZVJlbmRlcmluZwor
ICAgICAgICAmJiBjbGlwUnVsZSA9PSBvdGhlci5jbGlwUnVsZQorICAgICAgICAmJiBmaWxsUnVs
ZSA9PSBvdGhlci5maWxsUnVsZQorICAgICAgICAmJiBjYXBTdHlsZSA9PSBvdGhlci5jYXBTdHls
ZQorICAgICAgICAmJiBqb2luU3R5bGUgPT0gb3RoZXIuam9pblN0eWxlCisgICAgICAgICYmIHRl
eHRBbmNob3IgPT0gb3RoZXIudGV4dEFuY2hvcgorICAgICAgICAmJiBjb2xvckludGVycG9sYXRp
b24gPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgICYmIGNvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMgPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycworICAgICAgICAm
JiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5nbHlwaE9yaWVudGF0aW9uSG9y
aXpvbnRhbAorICAgICAgICAmJiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3RoZXIuZ2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsCisgICAgICAgICYmIHBhaW50T3JkZXIgPT0gb3RoZXIucGFp
bnRPcmRlcjsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4M2YyMjQ5
ZTQ5MGVjOTA2YTMzYjhlOC4uYjc0OWEyNmMwY2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5NTc4Zjdj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFNoYXBlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNo
YXBlVmFsdWU+IGNyZWF0ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBj
c3NCb3gpCisgICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+
JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcGVWYWx1ZShXVEZNb3ZlKHNoYXBlKSwgY3NzQm94KSk7CiAgICAgfQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBl
VmFsdWUoYm94U2hhcGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNy
ZWF0ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFs
dWU+IGNyZWF0ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoV1RGTW92ZShpbWFnZSkpKTsKICAgICB9CkBAIC03
MiwxNCArNzIsMTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaGFwZVZhbHVl
KFJlZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBTaGFw
ZVZhbHVlKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICAg
ICAgOiBtX3R5cGUoVHlwZTo6U2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEZNb3ZlKHNoYXBl
KSkKICAgICAgICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxp
Y2l0IFNoYXBlVmFsdWUoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhwbGljaXQg
U2hhcGVWYWx1ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICAgICAgOiBtX3R5cGUoVHlw
ZTo6SW1hZ2UpCiAgICAgICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0
YS5jcHAKaW5kZXggMWJhMzZjNGE4ZDBkM2JlYzMxZjQzMmEwNmZmZjNjODNmMmFkZTRiYS4uYWUz
ODM1Yzc5YmJhOGQwOTZiMTNiNzBkZDU2ZTk1ZjQ4MWYxNzc1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yOCwxNiArMjgsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVCYWNr
Z3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YSgpCi0gICAgOiBtX2JhY2tncm91bmQoQmFj
a2dyb3VuZEZpbGxMYXllcikKLSAgICAsIG1fY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNr
Z3JvdW5kQ29sb3IoKSkKKyAgICA6IGJhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKKyAg
ICAsIGNvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCiB7CiB9CiAK
LWlubGluZSBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0
eWxlQmFja2dyb3VuZERhdGEmIG8pCitpbmxpbmUgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVC
YWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikKICAgICA6IFJl
ZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4oKQotICAgICwgbV9iYWNrZ3JvdW5kKG8ubV9i
YWNrZ3JvdW5kKQotICAgICwgbV9jb2xvcihvLm1fY29sb3IpCi0gICAgLCBtX291dGxpbmUoby5t
X291dGxpbmUpCisgICAgLCBiYWNrZ3JvdW5kKG90aGVyLmJhY2tncm91bmQpCisgICAgLCBjb2xv
cihvdGhlci5jb2xvcikKKyAgICAsIG91dGxpbmUob3RoZXIub3V0bGluZSkKIHsKIH0KIApAQCAt
NDYsMTggKzQ2LDE4IEBAIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBTdHlsZUJhY2tncm91bmRE
YXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91
bmREYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUJhY2tncm91
bmREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25z
dAogewotICAgIHJldHVybiBtX2JhY2tncm91bmQgPT0gby5tX2JhY2tncm91bmQgJiYgbV9jb2xv
ciA9PSBvLm1fY29sb3IgJiYgbV9vdXRsaW5lID09IG8ubV9vdXRsaW5lOworICAgIHJldHVybiBi
YWNrZ3JvdW5kID09IG90aGVyLmJhY2tncm91bmQgJiYgY29sb3IgPT0gb3RoZXIuY29sb3IgJiYg
b3V0bGluZSA9PSBvdGhlci5vdXRsaW5lOwogfQogCiBib29sIFN0eWxlQmFja2dyb3VuZERhdGE6
OmlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVy
KSBjb25zdAogewotICAgIGlmIChtX2JhY2tncm91bmQgIT0gb3RoZXIubV9iYWNrZ3JvdW5kIHx8
IG1fY29sb3IgIT0gb3RoZXIubV9jb2xvcikKKyAgICBpZiAoYmFja2dyb3VuZCAhPSBvdGhlci5i
YWNrZ3JvdW5kIHx8IGNvbG9yICE9IG90aGVyLmNvbG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFtX291dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm1fb3V0bGluZS5pc1Zp
c2libGUoKSkKKyAgICBpZiAoIW91dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm91dGxpbmUu
aXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX291dGxpbmUg
PT0gb3RoZXIubV9vdXRsaW5lOworICAgIHJldHVybiBvdXRsaW5lID09IG90aGVyLm91dGxpbmU7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCmluZGV4IDE0NDc3N2FhMGViOTVj
MjVhNGFmZDEyM2Q0OGRiYzU3YjM2ZGJkNzMuLjliOTVlZTBjYWI5OTFkNmZkZmIwYjU2ZGVkYTFj
ODBhZWU4OTQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNv
bSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwyOSArMzYsMTkgQEAgY2xhc3MgU3R5bGVCYWNrZ3JvdW5k
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KICAgICBSZWY8U3R5bGVCYWNrZ3Jv
dW5kRGF0YT4gY29weSgpIGNvbnN0OwotICAgIH5TdHlsZUJhY2tncm91bmREYXRhKCkgeyB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBib29sIGlzRXF1aXZhbGVudEZvclBhaW50aW5n
KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKIAotICAgIGNvbnN0IEZpbGxMYXll
ciYgYmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZDsgfQotICAgIGNvbnN0
IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KLSAgICBjb25zdCBPdXRs
aW5lVmFsdWUmIG91dGxpbmUoKSBjb25zdCB7IHJldHVybiBtX291dGxpbmU7IH0KKyAgICBGaWxs
TGF5ZXIgYmFja2dyb3VuZDsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBPdXRsaW5lVmFsdWUgb3V0
bGluZTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7Ci0KICAgICBT
dHlsZUJhY2tncm91bmREYXRhKCk7Ci0gICAgU3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHls
ZUJhY2tncm91bmREYXRhJik7IAotCi0gICAgRmlsbExheWVyIG1fYmFja2dyb3VuZDsKLSAgICBD
b2xvciBtX2NvbG9yOwotICAgIE91dGxpbmVWYWx1ZSBtX291dGxpbmU7CisgICAgU3R5bGVCYWNr
Z3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggZjcwNjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3MmEyMTEz
ZjczNWFkYy4uNjkyMzk1YjFlMzUwZjFjYTBkM2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBDYWNoZWRJbWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6Y2FjaGVk
SW1hZ2UoKSBjb25zdAogCiBSZWY8Q1NTVmFsdWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNzc1ZhbHVl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUu
Z2V0KCkpOworICAgIHJldHVybiBtX2Nzc1ZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHls
ZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZs
b2F0IG11bHRpcGxpZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCmluZGV4IGM2ZmZhNzU2OTU5NmMz
ZTk0YjFjZDNiYzMyNjM3YzAxMjMyZDMwZjguLjg4ZjE4MzFjNGQ1MWNiNzM5Njk1MDljOWMyNTU1
MzJhMmIwMjdkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBAIC0zNSw1MCArMzUsNDEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEpOyB9CiAgICAgUmVmPFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgqdGhpcykpOyB9CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvKSBjb25zdAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcyAhPSBvLm1fY29udGFpbnNWYXJp
YWJsZXMpCisgICAgICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhlci5jb250YWluc1Zh
cmlhYmxlcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChtX3ZhbHVlcy5zaXplKCkgIT0gby5tX3ZhbHVlcy5zaXplKCkpCisKKyAgICAgICAgaWYgKHZh
bHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoV1RGOjpLZXlWYWx1ZVBhaXI8QXRvbWljU3Ry
aW5nLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IGVudHJ5IDogbV92YWx1ZXMpIHsK
LSAgICAgICAgICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBvdGhlciA9IG8ubV92
YWx1ZXMuZ2V0KGVudHJ5LmtleSk7Ci0gICAgICAgICAgICBpZiAoIW90aGVyIHx8ICFlbnRyeS52
YWx1ZS0+ZXF1YWxzKCpvdGhlcikpCisKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZhbHVl
cykgeworICAgICAgICAgICAgYXV0byBvdGhlckVudHJ5ID0gb3RoZXIudmFsdWVzLmZpbmQoZW50
cnkua2V5KTsKKyAgICAgICAgICAgIGlmIChvdGhlckVudHJ5ID09IG90aGVyLnZhbHVlcy5lbmQo
KSB8fCAhZW50cnkudmFsdWUtPmVxdWFscygqb3RoZXJFbnRyeS0+dmFsdWUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSAmbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+JiB2YWx1ZSkKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7CiAgICAgICAgIGlmICh2YWx1
ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKLSAgICAgICAgICAgIG1fY29udGFpbnNWYXJpYWJsZXMg
PSB0cnVlOworICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOworICAgICAgICB2
YWx1ZXMuc2V0KG5hbWUsIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQotICAgIEN1
c3RvbVByb3BlcnR5VmFsdWVNYXAmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9Ci0gICAg
Ci0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWVzLmNvbnRhaW5zKG5hbWUpOyB9Ci0gICAgCi0gICAgYm9vbCBj
b250YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNWYXJpYWJsZXM7IH0K
LSAgICB2b2lkIHNldENvbnRhaW5zVmFyaWFibGVzKGJvb2wgY29udGFpbnNWYXJpYWJsZXMpIHsg
bV9jb250YWluc1ZhcmlhYmxlcyA9IGNvbnRhaW5zVmFyaWFibGVzOyB9Ci0KLSAgICBDdXN0b21Q
cm9wZXJ0eVZhbHVlTWFwIG1fdmFsdWVzOwotICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7
IGZhbHNlIH07CisgICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCB2YWx1ZXM7CisgICAgYm9vbCBj
b250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGEoKQotICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGE+KCkKLSAgICB7IH0KKyAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0g
ZGVmYXVsdDsKICAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YSYgb3RoZXIpCiAgICAgICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YT4oKQotICAgICAgICAsIG1fdmFsdWVzKEN1c3RvbVByb3BlcnR5VmFsdWVNYXAob3Ro
ZXIubV92YWx1ZXMpKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMob3RoZXIubV9jb250
YWluc1ZhcmlhYmxlcykKKyAgICAgICAgLCB2YWx1ZXMob3RoZXIudmFsdWVzKQorICAgICAgICAs
IGNvbnRhaW5zVmFyaWFibGVzKG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQogICAgIHsgfQogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAppbmRleCAzMmY3ODA1ZWJjZjY1NjBh
YWQ0NjllZmFmYzVhZWQzMmNjOTZhNWZmLi4xZmFmYTJkODg5NmQ3MTMyMzgyOTI2MTVmNWNkNDBk
ZWNkZTU2OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcApAQCAtMjgsOCAr
MjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKCkKICAgICA6IGZsZXgoUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3hGbGV4KCkpCi0gICAgLCBmbGV4X2dyb3VwKFJlbmRlclN0eWxlOjpp
bml0aWFsQm94RmxleEdyb3VwKCkpCi0gICAgLCBvcmRpbmFsX2dyb3VwKFJlbmRlclN0eWxlOjpp
bml0aWFsQm94T3JkaW5hbEdyb3VwKCkpCisgICAgLCBmbGV4R3JvdXAoUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hGbGV4R3JvdXAoKSkKKyAgICAsIG9yZGluYWxHcm91cChSZW5kZXJTdHlsZTo6aW5p
dGlhbEJveE9yZGluYWxHcm91cCgpKQogICAgICwgYWxpZ24oUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3hBbGlnbigpKQogICAgICwgcGFjayhSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFBhY2soKSkKICAg
ICAsIG9yaWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yaWVudCgpKQpAQCAtMzcsMTUgKzM3
LDE1IEBAIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxl
eGlibGVCb3hEYXRhKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKGNvbnN0IFN0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YSYgbykKK2lubGluZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YShjb25zdCBTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGE+KCkKLSAgICAsIGZsZXgoby5mbGV4KQotICAgICwgZmxleF9ncm91cChv
LmZsZXhfZ3JvdXApCi0gICAgLCBvcmRpbmFsX2dyb3VwKG8ub3JkaW5hbF9ncm91cCkKLSAgICAs
IGFsaWduKG8uYWxpZ24pCi0gICAgLCBwYWNrKG8ucGFjaykKLSAgICAsIG9yaWVudChvLm9yaWVu
dCkKLSAgICAsIGxpbmVzKG8ubGluZXMpCisgICAgLCBmbGV4KG90aGVyLmZsZXgpCisgICAgLCBm
bGV4R3JvdXAob3RoZXIuZmxleEdyb3VwKQorICAgICwgb3JkaW5hbEdyb3VwKG90aGVyLm9yZGlu
YWxHcm91cCkKKyAgICAsIGFsaWduKG90aGVyLmFsaWduKQorICAgICwgcGFjayhvdGhlci5wYWNr
KQorICAgICwgb3JpZW50KG90aGVyLm9yaWVudCkKKyAgICAsIGxpbmVzKG90aGVyLmxpbmVzKQog
ewogfQogCkBAIC01NCwxMSArNTQsMTEgQEAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YT4gU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoKnRoaXMp
KTsKIH0KIAotYm9vbCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmxleCA9PSBv
LmZsZXggJiYgZmxleF9ncm91cCA9PSBvLmZsZXhfZ3JvdXAgJiYKLSAgICAgICAgICAgb3JkaW5h
bF9ncm91cCA9PSBvLm9yZGluYWxfZ3JvdXAgJiYgYWxpZ24gPT0gby5hbGlnbiAmJgotICAgICAg
ICAgICBwYWNrID09IG8ucGFjayAmJiBvcmllbnQgPT0gby5vcmllbnQgJiYgbGluZXMgPT0gby5s
aW5lczsKKyAgICByZXR1cm4gZmxleCA9PSBvdGhlci5mbGV4ICYmIGZsZXhHcm91cCA9PSBvdGhl
ci5mbGV4R3JvdXAKKyAgICAgICAgJiYgb3JkaW5hbEdyb3VwID09IG90aGVyLm9yZGluYWxHcm91
cCAmJiBhbGlnbiA9PSBvdGhlci5hbGlnbgorICAgICAgICAmJiBwYWNrID09IG90aGVyLnBhY2sg
JiYgb3JpZW50ID09IG90aGVyLm9yaWVudCAmJiBsaW5lcyA9PSBvdGhlci5saW5lczsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCmluZGV4
IDdmMDAwYmJlYmY3Y2ZkYWU0ZDZkYTk5NzdiMjQwYzg1ZmMyNGNmMzAuLjMzMGNmNjQ3MzRkY2E3
NWRiNWY4OWVlNzY2Y2I0ZGM5MTcxYWVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRh
LmgKQEAgLTM1LDE0ICszNSwxNCBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAogICAgIGZsb2F0IGZsZXg7Ci0gICAg
dW5zaWduZWQgaW50IGZsZXhfZ3JvdXA7Ci0gICAgdW5zaWduZWQgaW50IG9yZGluYWxfZ3JvdXA7
CisgICAgdW5zaWduZWQgZmxleEdyb3VwOworICAgIHVuc2lnbmVkIG9yZGluYWxHcm91cDsKIAog
ICAgIHVuc2lnbmVkIGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVudAogICAgIHVuc2lnbmVkIHBh
Y2s6IDI7IC8vIEVCb3hQYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUZpbHRlckRhdGEuY3BwCmluZGV4IGIwZDNiZTExMDE1ZTQ3OWZmYWMwYWExNTAxNTBm
ZjdkMTg1YzIwYzIuLjIwZGJjMDhlNjYyNzM4NmRhZTMzNDVhM2Y1MmVmZmEyNWIyYjM5YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEu
Y3BwCkBAIC0yNiwxOSArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
dHlsZUZpbHRlckRhdGEuaCIKIAotI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUZpbHRlckRh
dGE6OlN0eWxlRmlsdGVyRGF0YSgpCi0gICAgOiBtX29wZXJhdGlvbnMoKQogewogfQogCi1pbmxp
bmUgU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoY29uc3QgU3R5bGVGaWx0ZXJEYXRh
JiBvKQoraW5saW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0IFN0eWxl
RmlsdGVyRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlRmlsdGVyRGF0YT4oKQot
ICAgICwgbV9vcGVyYXRpb25zKG8ubV9vcGVyYXRpb25zKQorICAgICwgb3BlcmF0aW9ucyhvdGhl
ci5vcGVyYXRpb25zKQogewogfQogCkBAIC00Nyw5ICs0Myw5IEBAIFJlZjxTdHlsZUZpbHRlckRh
dGE+IFN0eWxlRmlsdGVyRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVGaWx0ZXJEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVGaWx0ZXJEYXRhOjpv
cGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVGaWx0
ZXJEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9ucyA9PSBvLm1fb3BlcmF0aW9uczsKKyAgICByZXR1cm4g
b3BlcmF0aW9ucyA9PSBvdGhlci5vcGVyYXRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0
ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRh
LmgKaW5kZXggYzk2ZTMxZWUwM2NlZWQ0OGI1MWQ0MmEzMTU3YWFhOGZlOTIxYzUzZC4uYThiYTgz
MWUyYzI1NWQ3ZTgyYmU4M2ZhNTU5MzI4YzEyZjRhZmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAotICAgIEZpbHRl
ck9wZXJhdGlvbnMgbV9vcGVyYXRpb25zOworICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9u
czsKIAogcHJpdmF0ZToKICAgICBTdHlsZUZpbHRlckRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwCmluZGV4
IDk5ZTU1ZWI3ZTY0NjlkOWQ2NTQ1NWY2OWUxYzJkMjhhMjk3Y2JiNzUuLmE4MjE4NDQ1YTE3Njcy
MWViOWFiZGQyZmMyOGU4NGVmNDlmMzBlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcApAQCAtMzEsMjEgKzMx
LDIxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRmxleGlibGVCb3hEYXRhOjpTdHls
ZUZsZXhpYmxlQm94RGF0YSgpCi0gICAgOiBtX2ZsZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFs
RmxleEdyb3coKSkKLSAgICAsIG1fZmxleFNocmluayhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhT
aHJpbmsoKSkKLSAgICAsIG1fZmxleEJhc2lzKFJlbmRlclN0eWxlOjppbml0aWFsRmxleEJhc2lz
KCkpCi0gICAgLCBtX2ZsZXhEaXJlY3Rpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0
aW9uKCkpCi0gICAgLCBtX2ZsZXhXcmFwKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFdyYXAoKSkK
KyAgICA6IGZsZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEdyb3coKSkKKyAgICAsIGZs
ZXhTaHJpbmsoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4U2hyaW5rKCkpCisgICAgLCBmbGV4QmFz
aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4QmFzaXMoKSkKKyAgICAsIGZsZXhEaXJlY3Rpb24o
UmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uKCkpCisgICAgLCBmbGV4V3JhcChSZW5k
ZXJTdHlsZTo6aW5pdGlhbEZsZXhXcmFwKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZUZsZXhpYmxl
Qm94RGF0YTo6U3R5bGVGbGV4aWJsZUJveERhdGEoY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEm
IG8pCitpbmxpbmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hEYXRhKGNv
bnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVG
bGV4aWJsZUJveERhdGE+KCkKLSAgICAsIG1fZmxleEdyb3coby5tX2ZsZXhHcm93KQotICAgICwg
bV9mbGV4U2hyaW5rKG8ubV9mbGV4U2hyaW5rKQotICAgICwgbV9mbGV4QmFzaXMoby5tX2ZsZXhC
YXNpcykKLSAgICAsIG1fZmxleERpcmVjdGlvbihvLm1fZmxleERpcmVjdGlvbikKLSAgICAsIG1f
ZmxleFdyYXAoby5tX2ZsZXhXcmFwKQorICAgICwgZmxleEdyb3cob3RoZXIuZmxleEdyb3cpCisg
ICAgLCBmbGV4U2hyaW5rKG90aGVyLmZsZXhTaHJpbmspCisgICAgLCBmbGV4QmFzaXMob3RoZXIu
ZmxleEJhc2lzKQorICAgICwgZmxleERpcmVjdGlvbihvdGhlci5mbGV4RGlyZWN0aW9uKQorICAg
ICwgZmxleFdyYXAob3RoZXIuZmxleFdyYXApCiB7CiB9CiAKQEAgLTU0LDEwICs1NCwxMCBAQCBS
ZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29u
c3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSgqdGhpcykp
OwogfQogCi1ib29sIFN0eWxlRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
RmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUZsZXhpYmxlQm94RGF0YTo6b3Bl
cmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZmxleEdyb3cgPT0gby5tX2ZsZXhHcm93ICYmIG1fZmxleFNocmluayA9PSBvLm1f
ZmxleFNocmluayAmJiBtX2ZsZXhCYXNpcyA9PSBvLm1fZmxleEJhc2lzCi0gICAgICAgICYmIG1f
ZmxleERpcmVjdGlvbiA9PSBvLm1fZmxleERpcmVjdGlvbiAmJiBtX2ZsZXhXcmFwID09IG8ubV9m
bGV4V3JhcDsKKyAgICByZXR1cm4gZmxleEdyb3cgPT0gb3RoZXIuZmxleEdyb3cgJiYgZmxleFNo
cmluayA9PSBvdGhlci5mbGV4U2hyaW5rICYmIGZsZXhCYXNpcyA9PSBvdGhlci5mbGV4QmFzaXMK
KyAgICAgICAgJiYgZmxleERpcmVjdGlvbiA9PSBvdGhlci5mbGV4RGlyZWN0aW9uICYmIGZsZXhX
cmFwID09IG90aGVyLmZsZXhXcmFwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDMyMzhiODZmMmZi
NTAwZGRmNGE4MDJlYTM5MDJiMDhhNjE3MGQ4NjkuLmY1NGQ4NTkwNGI5NGI0ZWFmNzM3MjQwNzE3
MWJmZmQzYmZlMzVmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCkBAIC00MiwxMiArNDIsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICBmbG9hdCBtX2ZsZXhH
cm93OwotICAgIGZsb2F0IG1fZmxleFNocmluazsKLSAgICBMZW5ndGggbV9mbGV4QmFzaXM7Cisg
ICAgZmxvYXQgZmxleEdyb3c7CisgICAgZmxvYXQgZmxleFNocmluazsKKyAgICBMZW5ndGggZmxl
eEJhc2lzOwogCi0gICAgdW5zaWduZWQgbV9mbGV4RGlyZWN0aW9uIDogMjsgLy8gRUZsZXhEaXJl
Y3Rpb24KLSAgICB1bnNpZ25lZCBtX2ZsZXhXcmFwIDogMjsgLy8gRUZsZXhXcmFwCisgICAgdW5z
aWduZWQgZmxleERpcmVjdGlvbiA6IDI7IC8vIEVGbGV4RGlyZWN0aW9uCisgICAgdW5zaWduZWQg
ZmxleFdyYXAgOiAyOyAvLyBFRmxleFdyYXAKIAogcHJpdmF0ZToKICAgICBTdHlsZUZsZXhpYmxl
Qm94RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDJjODRiMmY1NjdmMDdhMTk1OGM3MGU2NmI2ZjNm
NGZjN2Q2OGZlMjIuLmIwMDYzNzgxNGVhM2I0YjcxNjAxNzkwM2RmY2RkZmUyNGJhMzBiZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVH
ZW5lcmF0ZWRJbWFnZShSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkKIAogUmVm
PENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5jb3B5UmVm
KCk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aXNQZW5kaW5nKCkgY29uc3QKQEAg
LTU2LDcgKzU2LDcgQEAgRmxvYXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXUKIHsKICAgICBBU1NFUlQocmVu
ZGVyZXIpOwogICAgIGlmIChtX2ZpeGVkU2l6ZSkgewotICAgICAgICBGbG9hdFNpemUgZml4ZWRT
aXplID0gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRv
clZhbHVlLmdldCgpKS5maXhlZFNpemUoKnJlbmRlcmVyKTsKKyAgICAgICAgRmxvYXRTaXplIGZp
eGVkU2l6ZSA9IG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+Zml4ZWRTaXplKCpyZW5kZXJlcik7CiAg
ICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEuMGYpCiAgICAgICAgICAgICByZXR1cm4gZml4ZWRT
aXplOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1v
dmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiBSZWZQdHI8SW1hZ2U+IFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNp
emUmIHNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKLSAgICByZXR1cm4gY29u
c3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdl
dCgpKS5pbWFnZSgqcmVuZGVyZXIsIHNpemUpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9y
VmFsdWUtPmltYWdlKCpyZW5kZXJlciwgc2l6ZSk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3Bw
CmluZGV4IDU0ODA2MDQ0MDMwYTZhOWRjODBlZDc0YjI0ODdmODM3ZDU4ZjM0MzUuLmMxNDFlZjdl
YWFiN2M0OTVhMjhhZTRkODYzM2U5ODMzM2YzMzE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKQEAgLTMzLDU5ICszMyw1OSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKCkKLSAg
ICA6IG1fZ3JpZENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1ucygpKQotICAg
ICwgbV9ncmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dzKCkpCi0gICAgLCBtX25h
bWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoKSkKLSAgICAsIG1fbmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1l
ZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1f
b3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVk
R3JpZFJvd0xpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX2F1dG9S
ZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZFJvd0xp
bmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1f
YXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9ncmlkQXV0b0Zsb3coUmVuZGVyU3R5
bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKSkKLSAgICAsIG1fZ3JpZEF1dG9Sb3dzKFJlbmRlclN0
eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCi0gICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29sdW1ucygpKQotICAgICwgbV9uYW1lZEdyaWRBcmVh
KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgpKQotICAgICwgbV9uYW1lZEdyaWRB
cmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKLSAg
ICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRH
cmlkQXJlYUNvdW50KCkpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQ29sdW1uR2FwKCkpCi0gICAgLCBtX2dyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkUm93R2FwKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyhSZW5kZXJTdHls
ZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0
Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBt
X2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlk
QXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0
aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50
KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvUmVwZWF0VHlwZSgpKQotICAgICwgbV9hdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5
bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKKyAgICA6IGdyaWRDb2x1bW5zKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMoKSkKKyAgICAsIGdyaWRSb3dzKFJlbmRlclN0eWxl
Ojppbml0aWFsR3JpZFJvd3MoKSkKKyAgICAsIG5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0
eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAsIG5hbWVkR3JpZFJvd0xp
bmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIG9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lcygpKQorICAgICwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0
eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpCisgICAgLCBhdXRvUmVwZWF0
TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5M
aW5lcygpKQorICAgICwgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjpp
bml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVy
U3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGdyaWRBdXRv
RmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpKQorICAgICwgZ3JpZEF1dG9S
b3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCisgICAgLCBncmlkQXV0b0Nv
bHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKKyAgICAsIG5hbWVk
R3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhKCkpCisgICAgLCBuYW1l
ZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQo
KSkKKyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5h
bWVkR3JpZEFyZWFDb3VudCgpKQorICAgICwgZ3JpZENvbHVtbkdhcChSZW5kZXJTdHlsZTo6aW5p
dGlhbEdyaWRDb2x1bW5HYXAoKSkKKyAgICAsIGdyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkUm93R2FwKCkpCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkQXV0b1JlcGVhdFRyYWNrcygpKQorICAgICwgZ3JpZEF1dG9SZXBlYXRSb3dz
KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFja3MoKSkKKyAgICAsIGF1dG9S
ZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1Jl
cGVhdEluc2VydGlvblBvaW50KCkpCisgICAgLCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpKQorICAg
ICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBl
YXRUeXBlKCkpCisgICAgLCBhdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxH
cmlkQXV0b1JlcGVhdFR5cGUoKSkKIHsKIH0KIAogaW5saW5lIFN0eWxlR3JpZERhdGE6OlN0eWxl
R3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVH
cmlkRGF0YT4oKQotICAgICwgbV9ncmlkQ29sdW1ucyhvLm1fZ3JpZENvbHVtbnMpCi0gICAgLCBt
X2dyaWRSb3dzKG8ubV9ncmlkUm93cykKLSAgICAsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMoby5t
X25hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9uYW1lZEdyaWRSb3dMaW5lcyhvLm1fbmFt
ZWRHcmlkUm93TGluZXMpCi0gICAgLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1f
b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkUm93
TGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1fYXV0b1JlcGVhdE5h
bWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMpCi0g
ICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLm1fYXV0b1JlcGVhdE5hbWVkR3Jp
ZFJvd0xpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9hdXRv
UmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVk
R3JpZFJvd0xpbmVzKQotICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKLSAg
ICAsIG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCi0gICAgLCBtX2dyaWRBdXRvQ29s
dW1ucyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQotICAgICwgbV9uYW1lZEdyaWRBcmVhKG8ubV9uYW1l
ZEdyaWRBcmVhKQotICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoby5tX25hbWVkR3JpZEFy
ZWFSb3dDb3VudCkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoby5tX2dyaWRDb2x1bW5H
YXApCi0gICAgLCBtX2dyaWRSb3dHYXAoby5tX2dyaWRSb3dHYXApCi0gICAgLCBtX2dyaWRBdXRv
UmVwZWF0Q29sdW1ucyhvLm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQotICAgICwgbV9ncmlkQXV0
b1JlcGVhdFJvd3Moby5tX2dyaWRBdXRvUmVwZWF0Um93cykKLSAgICAsIG1fYXV0b1JlcGVhdENv
bHVtbnNJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkK
LSAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdFJvd3NJ
bnNlcnRpb25Qb2ludCkKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9hdXRvUmVw
ZWF0Q29sdW1uc1R5cGUpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0b1JlcGVh
dFJvd3NUeXBlKQorICAgICwgZ3JpZENvbHVtbnMoby5ncmlkQ29sdW1ucykKKyAgICAsIGdyaWRS
b3dzKG8uZ3JpZFJvd3MpCisgICAgLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm5hbWVkR3JpZENv
bHVtbkxpbmVzKQorICAgICwgbmFtZWRHcmlkUm93TGluZXMoby5uYW1lZEdyaWRSb3dMaW5lcykK
KyAgICAsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm9yZGVyZWROYW1lZEdyaWRDb2x1
bW5MaW5lcykKKyAgICAsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLm9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLmF1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dM
aW5lcyhvLmF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzKQorICAgICwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLmF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpCisgICAgLCBncmlkQXV0b0Zsb3coby5ncmlk
QXV0b0Zsb3cpCisgICAgLCBncmlkQXV0b1Jvd3Moby5ncmlkQXV0b1Jvd3MpCisgICAgLCBncmlk
QXV0b0NvbHVtbnMoby5ncmlkQXV0b0NvbHVtbnMpCisgICAgLCBuYW1lZEdyaWRBcmVhKG8ubmFt
ZWRHcmlkQXJlYSkKKyAgICAsIG5hbWVkR3JpZEFyZWFSb3dDb3VudChvLm5hbWVkR3JpZEFyZWFS
b3dDb3VudCkKKyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChvLm5hbWVkR3JpZEFyZWFD
b2x1bW5Db3VudCkKKyAgICAsIGdyaWRDb2x1bW5HYXAoby5ncmlkQ29sdW1uR2FwKQorICAgICwg
Z3JpZFJvd0dhcChvLmdyaWRSb3dHYXApCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoby5n
cmlkQXV0b1JlcGVhdENvbHVtbnMpCisgICAgLCBncmlkQXV0b1JlcGVhdFJvd3Moby5ncmlkQXV0
b1JlcGVhdFJvd3MpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KG8uYXV0
b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkKKyAgICAsIGF1dG9SZXBlYXRSb3dzSW5zZXJ0
aW9uUG9pbnQoby5hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KQorICAgICwgYXV0b1JlcGVh
dENvbHVtbnNUeXBlKG8uYXV0b1JlcGVhdENvbHVtbnNUeXBlKQorICAgICwgYXV0b1JlcGVhdFJv
d3NUeXBlKG8uYXV0b1JlcGVhdFJvd3NUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCAxNDRlZmFiOGJjOGZhYzdmYzdj
NTdmMzQzM2QzMmNjYmFhYTg5ODRjLi5iMTFmMzBhNWM2ZjQ0ZTZjNzI0MzhjOWNmZmI5M2NkZjEy
ZGMxZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRE
YXRhLmgKQEAgLTQ4LDE4ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CiAgICAgewogICAgICAgICAvLyBGSVhNRTogY29t
cGFyaW5nIHR3byBoYXNoZXMgZG9lc24ndCBsb29rIGdyZWF0IGZvciBwZXJmb3JtYW5jZS4gU29t
ZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBnb2luZyBmb3J3YXJkLgotICAgICAgICByZXR1cm4gbV9n
cmlkQ29sdW1ucyA9PSBvLm1fZ3JpZENvbHVtbnMgJiYgbV9ncmlkUm93cyA9PSBvLm1fZ3JpZFJv
d3MKLSAgICAgICAgICAgICYmIG1fZ3JpZEF1dG9GbG93ID09IG8ubV9ncmlkQXV0b0Zsb3cgJiYg
bV9ncmlkQXV0b1Jvd3MgPT0gby5tX2dyaWRBdXRvUm93cyAmJiBtX2dyaWRBdXRvQ29sdW1ucyA9
PSBvLm1fZ3JpZEF1dG9Db2x1bW5zCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZENvbHVtbkxp
bmVzID09IG8ubV9uYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09
IG8ubV9uYW1lZEdyaWRSb3dMaW5lcwotICAgICAgICAgICAgJiYgbV9hdXRvUmVwZWF0TmFtZWRH
cmlkQ29sdW1uTGluZXMgPT0gby5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBt
X2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJv
d0xpbmVzCi0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMgPT0gby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgJiYgbV9h
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9hdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFyZWEgPT0gby5t
X25hbWVkR3JpZEFyZWEgJiYgbV9uYW1lZEdyaWRBcmVhID09IG8ubV9uYW1lZEdyaWRBcmVhCi0g
ICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFyZWFSb3dDb3VudCA9PSBvLm1fbmFtZWRHcmlkQXJl
YVJvd0NvdW50ICYmIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50ID09IG8ubV9uYW1lZEdyaWRB
cmVhQ29sdW1uQ291bnQKLSAgICAgICAgICAgICYmIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
ID09IG8ubV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgJiYgbV9vcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMgPT0gby5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcwotICAgICAgICAgICAg
JiYgbV9ncmlkQ29sdW1uR2FwID09IG8ubV9ncmlkQ29sdW1uR2FwICYmIG1fZ3JpZFJvd0dhcCA9
PSBvLm1fZ3JpZFJvd0dhcAotICAgICAgICAgICAgJiYgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMg
PT0gby5tX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBtX2dyaWRBdXRvUmVwZWF0Um93cyA9PSBv
Lm1fZ3JpZEF1dG9SZXBlYXRSb3dzCi0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5z
SW5zZXJ0aW9uUG9pbnQgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgJiYg
bV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50ID09IG8ubV9hdXRvUmVwZWF0Um93c0luc2Vy
dGlvblBvaW50Ci0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLm1f
YXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIG1fYXV0b1JlcGVhdFJvd3NUeXBlID09IG8ubV9hdXRv
UmVwZWF0Um93c1R5cGU7CisgICAgICAgIHJldHVybiBncmlkQ29sdW1ucyA9PSBvLmdyaWRDb2x1
bW5zICYmIGdyaWRSb3dzID09IG8uZ3JpZFJvd3MKKyAgICAgICAgICAgICYmIGdyaWRBdXRvRmxv
dyA9PSBvLmdyaWRBdXRvRmxvdyAmJiBncmlkQXV0b1Jvd3MgPT0gby5ncmlkQXV0b1Jvd3MgJiYg
Z3JpZEF1dG9Db2x1bW5zID09IG8uZ3JpZEF1dG9Db2x1bW5zCisgICAgICAgICAgICAmJiBuYW1l
ZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG5hbWVkR3JpZFJv
d0xpbmVzID09IG8ubmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRO
YW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAm
JiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0TmFtZWRHcmlkUm93
TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzCisgICAgICAgICAgICAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJl
YSAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJlYQorICAgICAgICAgICAgJiYgbmFt
ZWRHcmlkQXJlYVJvd0NvdW50ID09IG8ubmFtZWRHcmlkQXJlYVJvd0NvdW50ICYmIG5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCA9PSBvLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAorICAgICAgICAg
ICAgJiYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ub3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzICYmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm9yZGVyZWROYW1lZEdyaWRD
b2x1bW5MaW5lcworICAgICAgICAgICAgJiYgZ3JpZENvbHVtbkdhcCA9PSBvLmdyaWRDb2x1bW5H
YXAgJiYgZ3JpZFJvd0dhcCA9PSBvLmdyaWRSb3dHYXAKKyAgICAgICAgICAgICYmIGdyaWRBdXRv
UmVwZWF0Q29sdW1ucyA9PSBvLmdyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBncmlkQXV0b1JlcGVh
dFJvd3MgPT0gby5ncmlkQXV0b1JlcGVhdFJvd3MKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRD
b2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
ICYmIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Um93c0luc2Vy
dGlvblBvaW50CisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5hdXRv
UmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09IG8uYXV0b1JlcGVhdFJv
d3NUeXBlOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRh
JiBvKSBjb25zdApAQCAtNjcsNDMgKzY3LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgbmFtaW5nIG9m
IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzLgotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dy
aWRDb2x1bW5zOwotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRSb3dzOworICAgIFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQ29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6
ZT4gZ3JpZFJvd3M7CiAKLSAgICBOYW1lZEdyaWRMaW5lc01hcCBtX25hbWVkR3JpZENvbHVtbkxp
bmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fbmFtZWRHcmlkUm93TGluZXM7CisgICAgTmFt
ZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNN
YXAgbmFtZWRHcmlkUm93TGluZXM7CiAKLSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9v
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFw
IG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01h
cCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVz
TWFwIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKIAotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1f
YXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1f
YXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOwotICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01h
cCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5h
bWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKKyAg
ICBOYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAg
TmFtZWRHcmlkTGluZXNNYXAgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVy
ZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
OworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzOwogCi0gICAgdW5zaWduZWQgbV9ncmlkQXV0b0Zsb3cgOiBHcmlkQXV0b0Zsb3dC
aXRzOworICAgIHVuc2lnbmVkIGdyaWRBdXRvRmxvdyA6IEdyaWRBdXRvRmxvd0JpdHM7CiAKLSAg
ICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b1Jvd3M7Ci0gICAgVmVjdG9yPEdyaWRU
cmFja1NpemU+IG1fZ3JpZEF1dG9Db2x1bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBn
cmlkQXV0b1Jvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvQ29sdW1uczsK
IAotICAgIE5hbWVkR3JpZEFyZWFNYXAgbV9uYW1lZEdyaWRBcmVhOwotICAgIC8vIEJlY2F1c2Ug
bV9uYW1lZEdyaWRBcmVhIGRvZXNuJ3Qgc3RvcmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2Ug
bmVlZCB0byBrZWVwIHRyYWNrCisgICAgTmFtZWRHcmlkQXJlYU1hcCBuYW1lZEdyaWRBcmVhOwor
ICAgIC8vIEJlY2F1c2UgbmFtZWRHcmlkQXJlYSBkb2Vzbid0IHN0b3JlIHRoZSB1bm5hbWVkIGdy
aWQgYXJlYXMsIHdlIG5lZWQgdG8ga2VlcCB0cmFjawogICAgIC8vIG9mIHRoZSBleHBsaWNpdCBn
cmlkIHNpemUgZGVmaW5lZCBieSBib3RoIG5hbWVkIGFuZCB1bm5hbWVkIGdyaWQgYXJlYXMuCi0g
ICAgdW5zaWduZWQgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7Ci0gICAgdW5zaWduZWQgbV9uYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQ7CisgICAgdW5zaWduZWQgbmFtZWRHcmlkQXJlYVJvd0NvdW50
OworICAgIHVuc2lnbmVkIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKIAotICAgIExlbmd0aCBt
X2dyaWRDb2x1bW5HYXA7Ci0gICAgTGVuZ3RoIG1fZ3JpZFJvd0dhcDsKKyAgICBMZW5ndGggZ3Jp
ZENvbHVtbkdhcDsKKyAgICBMZW5ndGggZ3JpZFJvd0dhcDsKIAotICAgIFZlY3RvcjxHcmlkVHJh
Y2tTaXplPiBtX2dyaWRBdXRvUmVwZWF0Q29sdW1uczsKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6
ZT4gbV9ncmlkQXV0b1JlcGVhdFJvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRB
dXRvUmVwZWF0Q29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1dG9SZXBl
YXRSb3dzOwogCi0gICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
OwotICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsKKyAgICB1bnNp
Z25lZCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OworICAgIHVuc2lnbmVkIGF1dG9S
ZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7CiAKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBl
YXRDb2x1bW5zVHlwZTsKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRSb3dzVHlwZTsK
KyAgICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0Q29sdW1uc1R5cGU7CisgICAgQXV0b1JlcGVh
dFR5cGUgYXV0b1JlcGVhdFJvd3NUeXBlOwogCiBwcml2YXRlOgogICAgIFN0eWxlR3JpZERhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRl
bURhdGEuY3BwCmluZGV4IDEwMmJlOTA4ZDc2Y2RkNmZmYTE3MmQ0YTJhMmEyMjZkZTViM2I1Y2Qu
LmMyZGI4ZTc0ODI1YjIwMWU0MTc0NDcxZGZkMjE0NTY2MzY3NDdlZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCisKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZUdyaWRJdGVtRGF0YS5oIgogCkBAIC0z
NywxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVHcmlkSXRlbURhdGE6
OlN0eWxlR3JpZEl0ZW1EYXRhKCkKLSAgICA6IG1fZ3JpZENvbHVtblN0YXJ0KFJlbmRlclN0eWxl
Ojppbml0aWFsR3JpZEl0ZW1Db2x1bW5TdGFydCgpKQotICAgICwgbV9ncmlkQ29sdW1uRW5kKFJl
bmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Db2x1bW5FbmQoKSkKLSAgICAsIG1fZ3JpZFJvd1N0
YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpKQotICAgICwgbV9ncmlk
Um93RW5kKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dFbmQoKSkKKyAgICA6IGdyaWRD
b2x1bW5TdGFydChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtQ29sdW1uU3RhcnQoKSkKKyAg
ICAsIGdyaWRDb2x1bW5FbmQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbUNvbHVtbkVuZCgp
KQorICAgICwgZ3JpZFJvd1N0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFy
dCgpKQorICAgICwgZ3JpZFJvd0VuZChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtUm93RW5k
KCkpCiB7CiB9CiAKIGlubGluZSBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEo
Y29uc3QgU3R5bGVHcmlkSXRlbURhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlR3JpZEl0
ZW1EYXRhPigpCi0gICAgLCBtX2dyaWRDb2x1bW5TdGFydChvLm1fZ3JpZENvbHVtblN0YXJ0KQot
ICAgICwgbV9ncmlkQ29sdW1uRW5kKG8ubV9ncmlkQ29sdW1uRW5kKQotICAgICwgbV9ncmlkUm93
U3RhcnQoby5tX2dyaWRSb3dTdGFydCkKLSAgICAsIG1fZ3JpZFJvd0VuZChvLm1fZ3JpZFJvd0Vu
ZCkKKyAgICAsIGdyaWRDb2x1bW5TdGFydChvLmdyaWRDb2x1bW5TdGFydCkKKyAgICAsIGdyaWRD
b2x1bW5FbmQoby5ncmlkQ29sdW1uRW5kKQorICAgICwgZ3JpZFJvd1N0YXJ0KG8uZ3JpZFJvd1N0
YXJ0KQorICAgICwgZ3JpZFJvd0VuZChvLmdyaWRSb3dFbmQpCiB7CiB9CiAKQEAgLTYwLDQgKzYx
LDQgQEAgUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSgpIGNv
bnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJ
RF9MQVlPVVQpICovCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKaW5kZXggOGIyOGQ5NGI0MWIyOWIwMDIxNGNkYzY0ZWJm
MTYxNzQwN2FlMGRkNi4uODBjODRmYzczMWUyZmNiZmZkZmY1MDgzZTIzY2MyMGExNGU4NGI2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1E
YXRhLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
Z3JpZENvbHVtblN0YXJ0ID09IG8ubV9ncmlkQ29sdW1uU3RhcnQgJiYgbV9ncmlkQ29sdW1uRW5k
ID09IG8ubV9ncmlkQ29sdW1uRW5kCi0gICAgICAgICAgICAmJiBtX2dyaWRSb3dTdGFydCA9PSBv
Lm1fZ3JpZFJvd1N0YXJ0ICYmIG1fZ3JpZFJvd0VuZCA9PSBvLm1fZ3JpZFJvd0VuZDsKKyAgICAg
ICAgcmV0dXJuIGdyaWRDb2x1bW5TdGFydCA9PSBvLmdyaWRDb2x1bW5TdGFydCAmJiBncmlkQ29s
dW1uRW5kID09IG8uZ3JpZENvbHVtbkVuZAorICAgICAgICAgICAgJiYgZ3JpZFJvd1N0YXJ0ID09
IG8uZ3JpZFJvd1N0YXJ0ICYmIGdyaWRSb3dFbmQgPT0gby5ncmlkUm93RW5kOwogICAgIH0KIAog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykgY29uc3QKQEAg
LTU0LDEwICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwog
ICAgIH0KIAotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRDb2x1bW5TdGFydDsKLSAgICBHcmlkUG9z
aXRpb24gbV9ncmlkQ29sdW1uRW5kOwotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRSb3dTdGFydDsK
LSAgICBHcmlkUG9zaXRpb24gbV9ncmlkUm93RW5kOworICAgIEdyaWRQb3NpdGlvbiBncmlkQ29s
dW1uU3RhcnQ7CisgICAgR3JpZFBvc2l0aW9uIGdyaWRDb2x1bW5FbmQ7CisgICAgR3JpZFBvc2l0
aW9uIGdyaWRSb3dTdGFydDsKKyAgICBHcmlkUG9zaXRpb24gZ3JpZFJvd0VuZDsKIAogcHJpdmF0
ZToKICAgICBTdHlsZUdyaWRJdGVtRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAppbmRleCA2MzM5ZjZkZGViMTdj
OTc1YTE3ODhhYjFjOGRhNDMyNmVmMWU4NTkxLi5hNWUzNTdlZTkzMTIzZjEyZDc0MjZmMDczMDA2
NzVhMTIxZmFiNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcApAQCAtMjcsOSArMjcsOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCi0gICAg
OiBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSkKLSAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0
eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCi0gICAgLCBsaW5lX2hlaWdodChS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKKyAgICA6IGhvcml6b250YWxCb3JkZXJT
cGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSkKKyAg
ICAsIHZlcnRpY2FsQm9yZGVyU3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9y
ZGVyU3BhY2luZygpKQorICAgICwgbGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKSkKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICwgc3BlY2lmaWVkTGlu
ZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKICNlbmRpZgpAQCAtMzgs
MTUgKzM4LDExIEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKIHsK
IH0KIAotU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKCkKLXsKLX0KLQog
aW5saW5lIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
SW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPigp
Ci0gICAgLCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKG8uaG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZykKLSAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKG8udmVydGljYWxfYm9yZGVyX3Nw
YWNpbmcpCi0gICAgLCBsaW5lX2hlaWdodChvLmxpbmVfaGVpZ2h0KQorICAgICwgaG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoby5ob3Jpem9udGFsQm9yZGVyU3BhY2luZykKKyAgICAsIHZlcnRpY2Fs
Qm9yZGVyU3BhY2luZyhvLnZlcnRpY2FsQm9yZGVyU3BhY2luZykKKyAgICAsIGxpbmVIZWlnaHQo
by5saW5lSGVpZ2h0KQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLCBzcGVjaWZp
ZWRMaW5lSGVpZ2h0KG8uc3BlY2lmaWVkTGluZUhlaWdodCkKICNlbmRpZgpAQCAtNjMsMTUgKzU5
LDE1IEBAIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgp
IGNvbnN0CiAKIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
SW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsKLSAgICByZXR1cm4gbGluZV9oZWlnaHQgPT0gby5s
aW5lX2hlaWdodAorICAgIHJldHVybiBsaW5lSGVpZ2h0ID09IG8ubGluZUhlaWdodAogI2lmIEVO
QUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHNwZWNpZmllZExpbmVIZWlnaHQgPT0g
by5zcGVjaWZpZWRMaW5lSGVpZ2h0CiAjZW5kaWYKICAgICAgICAgJiYgZm9udENhc2NhZGUgPT0g
by5mb250Q2FzY2FkZQogICAgICAgICAmJiBjb2xvciA9PSBvLmNvbG9yCiAgICAgICAgICYmIHZp
c2l0ZWRMaW5rQ29sb3IgPT0gby52aXNpdGVkTGlua0NvbG9yCi0gICAgICAgICYmIGhvcml6b250
YWxfYm9yZGVyX3NwYWNpbmcgPT0gby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAg
ICYmIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmc7
CisgICAgICAgICYmIGhvcml6b250YWxCb3JkZXJTcGFjaW5nID09IG8uaG9yaXpvbnRhbEJvcmRl
clNwYWNpbmcKKyAgICAgICAgJiYgdmVydGljYWxCb3JkZXJTcGFjaW5nID09IG8udmVydGljYWxC
b3JkZXJTcGFjaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKaW5kZXggMjli
ZmNiNDQzYTBkZTA4MDlmNDRlY2E0ZGYxM2RjMjI2ZjcyYTgyOC4uZDY1NTU4MzVhYzhlMDkzMDUw
NjA1NWRmYzhiMTlhMjg4OTI4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNyw5ICsyNyw2IEBACiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyMCArMzQsMTQg
QEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVJbmhl
cml0ZWREYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQog
ICAgIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdDsKLSAgICB+U3R5bGVJbmhl
cml0ZWREYXRhKCk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWRE
YXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWRE
YXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgIGZsb2F0IGhvcml6b250YWxf
Ym9yZGVyX3NwYWNpbmc7Ci0gICAgZmxvYXQgdmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAg
ZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmc7CisgICAgZmxvYXQgdmVydGljYWxCb3JkZXJT
cGFjaW5nOwogCi0gICAgLy8gY291bGQgYmUgcGFja2VkIGluIGEgc2hvcnQgYnV0IGRvZXNuJ3QK
LSAgICAvLyBtYWtlIGEgZGlmZmVyZW5jZSBjdXJyZW50bHkgYmVjYXVzZSBvZiBwYWRkaW5nCi0g
ICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OworICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCiAgICAgTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQ7CiAjZW5k
aWYKQEAgLTYyLDYgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHlsZUluaGVyaXRl
ZERhdGEoKTsKICAgICBTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRh
Jik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJikgPSBkZWxl
dGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAppbmRleCA1YzkwZTIwYTE4
MGQyYWFkNmE0Zjk3OTBkMGQ0YWJlNzU0Zjc2NDc0Li5iN2U3OTRmODRiMzk3Y2ZkOGI2YTQ5YWFm
ZTFmN2ZiOThiNzc5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMzMgKzI3LDMxIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0
YSgpCi0gICAgOiBtX3dpZHRoKDApCi0gICAgLCBtX2NvdW50KFJlbmRlclN0eWxlOjppbml0aWFs
Q29sdW1uQ291bnQoKSkKLSAgICAsIG1fZ2FwKDApCi0gICAgLCBtX2F1dG9XaWR0aCh0cnVlKQot
ICAgICwgbV9hdXRvQ291bnQodHJ1ZSkKLSAgICAsIG1fbm9ybWFsR2FwKHRydWUpCi0gICAgLCBt
X2ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCi0gICAgLCBtX2NvbHVtblNw
YW4oZmFsc2UpCi0gICAgLCBtX2F4aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkp
Ci0gICAgLCBtX3Byb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Np
b24oKSkKKyAgICA6IGNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSkKKyAg
ICAsIGF1dG9XaWR0aCh0cnVlKQorICAgICwgYXV0b0NvdW50KHRydWUpCisgICAgLCBub3JtYWxH
YXAodHJ1ZSkKKyAgICAsIGZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCisg
ICAgLCBjb2x1bW5TcGFuKGZhbHNlKQorICAgICwgYXhpcyhSZW5kZXJTdHlsZTo6aW5pdGlhbENv
bHVtbkF4aXMoKSkKKyAgICAsIHByb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1u
UHJvZ3Jlc3Npb24oKSkKIHsKIH0KIAotaW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11
bHRpQ29sRGF0YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKK2lubGluZSBTdHlsZU11bHRp
Q29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG90aGVy
KQogICAgIDogUmVmQ291bnRlZDxTdHlsZU11bHRpQ29sRGF0YT4oKQotICAgICwgbV93aWR0aChv
Lm1fd2lkdGgpCi0gICAgLCBtX2NvdW50KG8ubV9jb3VudCkKLSAgICAsIG1fZ2FwKG8ubV9nYXAp
Ci0gICAgLCBtX3J1bGUoby5tX3J1bGUpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNv
bG9yKG8ubV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKLSAgICAsIG1fYXV0b1dpZHRoKG8u
bV9hdXRvV2lkdGgpCi0gICAgLCBtX2F1dG9Db3VudChvLm1fYXV0b0NvdW50KQotICAgICwgbV9u
b3JtYWxHYXAoby5tX25vcm1hbEdhcCkKLSAgICAsIG1fZmlsbChvLm1fZmlsbCkKLSAgICAsIG1f
Y29sdW1uU3BhbihvLm1fY29sdW1uU3BhbikKLSAgICAsIG1fYXhpcyhvLm1fYXhpcykKLSAgICAs
IG1fcHJvZ3Jlc3Npb24oby5tX3Byb2dyZXNzaW9uKQorICAgICwgd2lkdGgob3RoZXIud2lkdGgp
CisgICAgLCBjb3VudChvdGhlci5jb3VudCkKKyAgICAsIGdhcChvdGhlci5nYXApCisgICAgLCBy
dWxlKG90aGVyLnJ1bGUpCisgICAgLCB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihvdGhlci52
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKKyAgICAsIGF1dG9XaWR0aChvdGhlci5hdXRvV2lk
dGgpCisgICAgLCBhdXRvQ291bnQob3RoZXIuYXV0b0NvdW50KQorICAgICwgbm9ybWFsR2FwKG90
aGVyLm5vcm1hbEdhcCkKKyAgICAsIGZpbGwob3RoZXIuZmlsbCkKKyAgICAsIGNvbHVtblNwYW4o
b3RoZXIuY29sdW1uU3BhbikKKyAgICAsIGF4aXMob3RoZXIuYXhpcykKKyAgICAsIHByb2dyZXNz
aW9uKG90aGVyLnByb2dyZXNzaW9uKQogewogfQogCkBAIC02MiwxMyArNjAsMTMgQEAgUmVmPFN0
eWxlTXVsdGlDb2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBT
dHlsZU11bHRpQ29sRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykg
Y29uc3QKK2Jvb2wgU3R5bGVNdWx0aUNvbERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0
aUNvbERhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0
aCAmJiBtX2NvdW50ID09IG8ubV9jb3VudCAmJiBtX2dhcCA9PSBvLm1fZ2FwCi0gICAgICAgICYm
IG1fcnVsZSA9PSBvLm1fcnVsZSAmJiBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID09IG8u
bV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcgotICAgICAgICAmJiBtX2F1dG9XaWR0aCA9PSBv
Lm1fYXV0b1dpZHRoICYmIG1fYXV0b0NvdW50ID09IG8ubV9hdXRvQ291bnQgJiYgbV9ub3JtYWxH
YXAgPT0gby5tX25vcm1hbEdhcAotICAgICAgICAmJiBtX2ZpbGwgPT0gby5tX2ZpbGwgJiYgbV9j
b2x1bW5TcGFuID09IG8ubV9jb2x1bW5TcGFuCi0gICAgICAgICYmIG1fYXhpcyA9PSBvLm1fYXhp
cyAmJiBtX3Byb2dyZXNzaW9uID09IG8ubV9wcm9ncmVzc2lvbjsKKyAgICByZXR1cm4gd2lkdGgg
PT0gb3RoZXIud2lkdGggJiYgY291bnQgPT0gb3RoZXIuY291bnQgJiYgZ2FwID09IG90aGVyLmdh
cAorICAgICAgICAmJiBydWxlID09IG90aGVyLnJ1bGUgJiYgdmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3IgPT0gb3RoZXIudmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IKKyAgICAgICAgJiYgYXV0
b1dpZHRoID09IG90aGVyLmF1dG9XaWR0aCAmJiBhdXRvQ291bnQgPT0gb3RoZXIuYXV0b0NvdW50
ICYmIG5vcm1hbEdhcCA9PSBvdGhlci5ub3JtYWxHYXAKKyAgICAgICAgJiYgZmlsbCA9PSBvdGhl
ci5maWxsICYmIGNvbHVtblNwYW4gPT0gb3RoZXIuY29sdW1uU3BhbgorICAgICAgICAmJiBheGlz
ID09IG90aGVyLmF4aXMgJiYgcHJvZ3Jlc3Npb24gPT0gb3RoZXIucHJvZ3Jlc3Npb247CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXggMjkzNGY5ODU1NjdlN2QxMTEzM2E0YzZk
ZTUzZmUxYTU4ZDQ1MzI3MC4uNWJkZjgxZDUxN2I5MGQxOTY4Y2QyMmQzNzYxNzdjMjdiYmQ2OTNj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlD
b2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlD
b2xEYXRhLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMzgsMzIgKzM4LDI5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlTXVsdGlD
b2xEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlDb2xEYXRh
KTsgfQogICAgIFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gY29weSgpIGNvbnN0OwogICAgIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3Q7Ci0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhICZvKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBydWxlV2lkdGgoKSBjb25zdAogICAgIHsK
LSAgICAgICAgaWYgKG1fcnVsZS5zdHlsZSgpID09IEJOT05FIHx8IG1fcnVsZS5zdHlsZSgpID09
IEJISURERU4pCisgICAgICAgIGlmIChydWxlLnN0eWxlKCkgPT0gQk5PTkUgfHwgcnVsZS5zdHls
ZSgpID09IEJISURERU4pCiAgICAgICAgICAgICByZXR1cm4gMDsgCi0gICAgICAgIHJldHVybiBt
X3J1bGUud2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIHJ1bGUud2lkdGgoKTsKICAgICB9CiAKLSAg
ICBmbG9hdCBtX3dpZHRoOwotICAgIHVuc2lnbmVkIHNob3J0IG1fY291bnQ7Ci0gICAgZmxvYXQg
bV9nYXA7Ci0gICAgQm9yZGVyVmFsdWUgbV9ydWxlOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtD
b2x1bW5SdWxlQ29sb3I7CisgICAgZmxvYXQgd2lkdGggeyAwIH07CisgICAgdW5zaWduZWQgc2hv
cnQgY291bnQ7CisgICAgZmxvYXQgZ2FwIHsgMCB9OworICAgIEJvcmRlclZhbHVlIHJ1bGU7Cisg
ICAgQ29sb3IgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CiAKLSAgICBib29sIG1fYXV0b1dp
ZHRoIDogMTsKLSAgICBib29sIG1fYXV0b0NvdW50IDogMTsKLSAgICBib29sIG1fbm9ybWFsR2Fw
IDogMTsKLSAgICB1bnNpZ25lZCBtX2ZpbGwgOiAxOyAvLyBDb2x1bW5GaWxsCi0gICAgdW5zaWdu
ZWQgbV9jb2x1bW5TcGFuIDogMTsKLSAgICB1bnNpZ25lZCBtX2F4aXMgOiAyOyAvLyBDb2x1bW5B
eGlzCi0gICAgdW5zaWduZWQgbV9wcm9ncmVzc2lvbiA6IDI7IC8vIENvbHVtblByb2dyZXNzaW9u
CisgICAgYm9vbCBhdXRvV2lkdGggOiAxOworICAgIGJvb2wgYXV0b0NvdW50IDogMTsKKyAgICBi
b29sIG5vcm1hbEdhcCA6IDE7CisgICAgdW5zaWduZWQgZmlsbCA6IDE7IC8vIENvbHVtbkZpbGwK
KyAgICB1bnNpZ25lZCBjb2x1bW5TcGFuIDogMTsKKyAgICB1bnNpZ25lZCBheGlzIDogMjsgLy8g
Q29sdW1uQXhpcworICAgIHVuc2lnbmVkIHByb2dyZXNzaW9uIDogMjsgLy8gQ29sdW1uUHJvZ3Jl
c3Npb24KIAogcHJpdmF0ZToKICAgICBTdHlsZU11bHRpQ29sRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwCmluZGV4IGZhMjlhZjBkY2U3MTYwYjk1OGEzNTdjZGQyODg3NzgxYWI5N2ZkZjcuLmZjNjA1
ZDQ4ZmNjODU5MDU4MzkwZGYzOTgyYjViZGIwNTk4OGI1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQ
dHJzWzJdOwogICAgIExlbmd0aCBsZW5ndGhzWzJdOwogICAgIGZsb2F0IHNlY29uZEZsb2F0Owot
ICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzRdOworICAgIHVuc2lnbmVkIGJpdGZpZWxkc1s0XTsK
ICAgICBzaG9ydCBwYWdlZE1lZGlhU2hvcnRzWzJdOwogICAgIHVuc2lnbmVkIHVuc2lnbmVkc1sx
XTsKICAgICBzaG9ydCBoeXBoZW5hdGlvblNob3J0c1szXTsKQEAgLTczLDEyICs3MywxMiBAQCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICA6IGxp
c3RTdHlsZUltYWdlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSkKICAgICAs
IHRleHRTdHJva2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0aCgpKQog
ICAgICwgaW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQotICAgICwgbV9l
ZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQotICAgICwgbV9jdXN0b21Q
cm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGVmZmVj
dGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBjdXN0b21Qcm9wZXJ0
aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKICAgICAsIHdpZG93cyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKQogICAgICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5p
dGlhbE9ycGhhbnMoKSkKLSAgICAsIG1faGFzQXV0b1dpZG93cyh0cnVlKQotICAgICwgbV9oYXNB
dXRvT3JwaGFucyh0cnVlKQorICAgICwgaGFzQXV0b1dpZG93cyh0cnVlKQorICAgICwgaGFzQXV0
b09ycGhhbnModHJ1ZSkKICAgICAsIHRleHRTZWN1cml0eShSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRTZWN1cml0eSgpKQogICAgICwgdXNlck1vZGlmeShSRUFEX09OTFkpCiAgICAgLCB3b3JkQnJl
YWsoUmVuZGVyU3R5bGU6OmluaXRpYWxXb3JkQnJlYWsoKSkKQEAgLTkxLDUwICs5MSw1MCBAQCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICAsIHRl
eHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCkKICAgICAsIHRleHRFbXBoYXNp
c01hcmsoVGV4dEVtcGhhc2lzTWFya05vbmUpCiAgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihU
ZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KQotICAg
ICwgbV90ZXh0T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlv
bjo6TWl4ZWQpKQorICAgICwgdGV4dE9yaWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihU
ZXh0T3JpZW50YXRpb246Ok1peGVkKSkKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICwgbV90
ZXh0SW5kZW50TGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCi0gICAg
LCBtX3RleHRJbmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5cGUoKSkK
KyAgICAsIHRleHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudExpbmUo
KSkKKyAgICAsIHRleHRJbmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5
cGUoKSkKICNlbmRpZgotICAgICwgbV9saW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVCb3hDb250YWluKCkpCisgICAgLCBsaW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVCb3hDb250YWluKCkpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikK
LSAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50
YXRpb24oKSkKKyAgICAsIGltYWdlT3JpZW50YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFn
ZU9yaWVudGF0aW9uKCkpCiAjZW5kaWYKLSAgICAsIG1faW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5
bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKQotICAgICwgbV9saW5lU25hcChSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVTbmFwKCkpCi0gICAgLCBtX2xpbmVBbGlnbihSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVBbGlnbigpKQorICAgICwgaW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRp
YWxJbWFnZVJlbmRlcmluZygpKQorICAgICwgbGluZVNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxM
aW5lU25hcCgpKQorICAgICwgbGluZUFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWdu
KCkpCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAsIHVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VUb3VjaE92ZXJm
bG93U2Nyb2xsaW5nKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04p
Ci0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdl
UmVzb2x1dGlvblNvdXJjZSgpKQotICAgICwgbV9pbWFnZVJlc29sdXRpb25TbmFwKFJlbmRlclN0
eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQorICAgICwgaW1hZ2VSZXNvbHV0aW9u
U291cmNlKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCisgICAg
LCBpbWFnZVJlc29sdXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9u
U25hcCgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEFsaWdu
TGFzdChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QoKSkKLSAgICAsIG1fdGV4dEp1
c3RpZnkoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQotI2VuZGlmIC8vIENTUzNf
VEVYVAotICAgICwgbV90ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
RGVjb3JhdGlvblNraXAoKSkKLSAgICAsIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkpCi0gICAgLCBtX3J1YnlQb3NpdGlv
bihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQotICAgICwgbV90ZXh0Wm9vbShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCisgICAgLCB0ZXh0QWxpZ25MYXN0KFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dEFsaWduTGFzdCgpKQorICAgICwgdGV4dEp1c3RpZnkoUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQorI2VuZGlmCisgICAgLCB0ZXh0RGVjb3JhdGlv
blNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSkKKyAgICAsIHRl
eHRVbmRlcmxpbmVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRVbmRlcmxpbmVQb3Np
dGlvbigpKQorICAgICwgcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0
aW9uKCkpCisgICAgLCB0ZXh0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxlZChSZW5kZXJTdHlsZTo6
aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVFJB
SUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5nV29yZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVu
ZGVyU3R5bGU6OmluaXRpYWxUcmFpbGluZ1dvcmQoKSkpCiAjZW5kaWYKLSAgICAsIG1faGFuZ2lu
Z1B1bmN0dWF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCkpCisg
ICAgLCBoYW5naW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5nUHVuY3R1
YXRpb24oKSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEpCiAgICAgLCBoeXBoZW5h
dGlvbkxpbWl0QWZ0ZXIoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoLTEpCi0gICAg
LCBtX2xpbmVHcmlkKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkKLSAgICAsIG1fdGFi
U2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYlNpemUoKSkKKyAgICAsIGxpbmVHcmlkKFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkKKyAgICAsIHRhYlNpemUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUYWJTaXplKCkpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAsIHRleHRT
aXplQWRqdXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNpemVBZGp1c3QoKSkKICNlbmRpZgog
I2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9u
KFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uKCkpCisgICAgLCBpbWFnZVJlc29s
dXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24oKSkKICNlbmRpZgogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHls
ZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBpbmxp
bmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKICAgICAs
IGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQotICAgICwg
bV9lZmZlY3RpdmVab29tKG8ubV9lZmZlY3RpdmVab29tKQotICAgICwgbV9jdXN0b21Qcm9wZXJ0
aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQorICAgICwgZWZmZWN0aXZlWm9vbShvLmVmZmVjdGl2
ZVpvb20pCisgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKICAgICAs
IHdpZG93cyhvLndpZG93cykKICAgICAsIG9ycGhhbnMoby5vcnBoYW5zKQotICAgICwgbV9oYXNB
dXRvV2lkb3dzKG8ubV9oYXNBdXRvV2lkb3dzKQotICAgICwgbV9oYXNBdXRvT3JwaGFucyhvLm1f
aGFzQXV0b09ycGhhbnMpCisgICAgLCBoYXNBdXRvV2lkb3dzKG8uaGFzQXV0b1dpZG93cykKKyAg
ICAsIGhhc0F1dG9PcnBoYW5zKG8uaGFzQXV0b09ycGhhbnMpCiAgICAgLCB0ZXh0U2VjdXJpdHko
by50ZXh0U2VjdXJpdHkpCiAgICAgLCB1c2VyTW9kaWZ5KG8udXNlck1vZGlmeSkKICAgICAsIHdv
cmRCcmVhayhvLndvcmRCcmVhaykKQEAgLTE3Myw1MiArMTczLDUyIEBAIGlubGluZSBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUlu
aGVyaXRlZERhCiAgICAgLCB0ZXh0RW1waGFzaXNGaWxsKG8udGV4dEVtcGhhc2lzRmlsbCkKICAg
ICAsIHRleHRFbXBoYXNpc01hcmsoby50ZXh0RW1waGFzaXNNYXJrKQogICAgICwgdGV4dEVtcGhh
c2lzUG9zaXRpb24oby50ZXh0RW1waGFzaXNQb3NpdGlvbikKLSAgICAsIG1fdGV4dE9yaWVudGF0
aW9uKG8ubV90ZXh0T3JpZW50YXRpb24pCisgICAgLCB0ZXh0T3JpZW50YXRpb24oby50ZXh0T3Jp
ZW50YXRpb24pCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEluZGVudExpbmUo
by5tX3RleHRJbmRlbnRMaW5lKQotICAgICwgbV90ZXh0SW5kZW50VHlwZShvLm1fdGV4dEluZGVu
dFR5cGUpCisgICAgLCB0ZXh0SW5kZW50TGluZShvLnRleHRJbmRlbnRMaW5lKQorICAgICwgdGV4
dEluZGVudFR5cGUoby50ZXh0SW5kZW50VHlwZSkKICNlbmRpZgotICAgICwgbV9saW5lQm94Q29u
dGFpbihvLm1fbGluZUJveENvbnRhaW4pCisgICAgLCBsaW5lQm94Q29udGFpbihvLmxpbmVCb3hD
b250YWluKQogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2ltYWdl
T3JpZW50YXRpb24oby5tX2ltYWdlT3JpZW50YXRpb24pCisgICAgLCBpbWFnZU9yaWVudGF0aW9u
KG8uaW1hZ2VPcmllbnRhdGlvbikKICNlbmRpZgotICAgICwgbV9pbWFnZVJlbmRlcmluZyhvLm1f
aW1hZ2VSZW5kZXJpbmcpCi0gICAgLCBtX2xpbmVTbmFwKG8ubV9saW5lU25hcCkKLSAgICAsIG1f
bGluZUFsaWduKG8ubV9saW5lQWxpZ24pCisgICAgLCBpbWFnZVJlbmRlcmluZyhvLmltYWdlUmVu
ZGVyaW5nKQorICAgICwgbGluZVNuYXAoby5saW5lU25hcCkKKyAgICAsIGxpbmVBbGlnbihvLmxp
bmVBbGlnbikKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAg
ICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhvLnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcp
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdl
UmVzb2x1dGlvblNvdXJjZShvLm1faW1hZ2VSZXNvbHV0aW9uU291cmNlKQotICAgICwgbV9pbWFn
ZVJlc29sdXRpb25TbmFwKG8ubV9pbWFnZVJlc29sdXRpb25TbmFwKQorICAgICwgaW1hZ2VSZXNv
bHV0aW9uU291cmNlKG8uaW1hZ2VSZXNvbHV0aW9uU291cmNlKQorICAgICwgaW1hZ2VSZXNvbHV0
aW9uU25hcChvLmltYWdlUmVzb2x1dGlvblNuYXApCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19U
RVhUKQotICAgICwgbV90ZXh0QWxpZ25MYXN0KG8ubV90ZXh0QWxpZ25MYXN0KQotICAgICwgbV90
ZXh0SnVzdGlmeShvLm1fdGV4dEp1c3RpZnkpCi0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgLCBt
X3RleHREZWNvcmF0aW9uU2tpcChvLm1fdGV4dERlY29yYXRpb25Ta2lwKQotICAgICwgbV90ZXh0
VW5kZXJsaW5lUG9zaXRpb24oby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbikKLSAgICAsIG1fcnVi
eVBvc2l0aW9uKG8ubV9ydWJ5UG9zaXRpb24pCi0gICAgLCBtX3RleHRab29tKG8ubV90ZXh0Wm9v
bSkKKyAgICAsIHRleHRBbGlnbkxhc3Qoby50ZXh0QWxpZ25MYXN0KQorICAgICwgdGV4dEp1c3Rp
Znkoby50ZXh0SnVzdGlmeSkKKyNlbmRpZgorICAgICwgdGV4dERlY29yYXRpb25Ta2lwKG8udGV4
dERlY29yYXRpb25Ta2lwKQorICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKG8udGV4dFVuZGVy
bGluZVBvc2l0aW9uKQorICAgICwgcnVieVBvc2l0aW9uKG8ucnVieVBvc2l0aW9uKQorICAgICwg
dGV4dFpvb20oby50ZXh0Wm9vbSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCB0b3VjaENhbGxv
dXRFbmFibGVkKG8udG91Y2hDYWxsb3V0RW5hYmxlZCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
VFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5nV29yZChvLnRyYWlsaW5nV29yZCkKICNlbmRp
ZgotICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oby5tX2hhbmdpbmdQdW5jdHVhdGlvbikKKyAg
ICAsIGhhbmdpbmdQdW5jdHVhdGlvbihvLmhhbmdpbmdQdW5jdHVhdGlvbikKICAgICAsIGh5cGhl
bmF0aW9uU3RyaW5nKG8uaHlwaGVuYXRpb25TdHJpbmcpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0
QmVmb3JlKG8uaHlwaGVuYXRpb25MaW1pdEJlZm9yZSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRB
ZnRlcihvLmh5cGhlbmF0aW9uTGltaXRBZnRlcikKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5l
cyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykKICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmso
by50ZXh0RW1waGFzaXNDdXN0b21NYXJrKQotICAgICwgbV9saW5lR3JpZChvLm1fbGluZUdyaWQp
Ci0gICAgLCBtX3RhYlNpemUoby5tX3RhYlNpemUpCisgICAgLCBsaW5lR3JpZChvLmxpbmVHcmlk
KQorICAgICwgdGFiU2l6ZShvLnRhYlNpemUpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
ICAgICAsIHRleHRTaXplQWRqdXN0KG8udGV4dFNpemVBZGp1c3QpCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvbihvLm1faW1h
Z2VSZXNvbHV0aW9uKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uKG8uaW1hZ2VSZXNvbHV0aW9uKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdodENvbG9y
KG8udGFwSGlnaGxpZ2h0Q29sb3IpCkBAIC0yNTAsMTEgKzI1MCwxMSBAQCBib29sIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYg
bykgY29uc3QKICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSh0ZXh0U2hhZG93LCBv
LnRleHRTaGFkb3cpCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0
YSwgby5jdXJzb3JEYXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKLSAgICAgICAg
JiYgbV9lZmZlY3RpdmVab29tID09IG8ubV9lZmZlY3RpdmVab29tCisgICAgICAgICYmIGVmZmVj
dGl2ZVpvb20gPT0gby5lZmZlY3RpdmVab29tCiAgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93
cwogICAgICAgICAmJiBvcnBoYW5zID09IG8ub3JwaGFucwotICAgICAgICAmJiBtX2hhc0F1dG9X
aWRvd3MgPT0gby5tX2hhc0F1dG9XaWRvd3MKLSAgICAgICAgJiYgbV9oYXNBdXRvT3JwaGFucyA9
PSBvLm1faGFzQXV0b09ycGhhbnMKKyAgICAgICAgJiYgaGFzQXV0b1dpZG93cyA9PSBvLmhhc0F1
dG9XaWRvd3MKKyAgICAgICAgJiYgaGFzQXV0b09ycGhhbnMgPT0gby5oYXNBdXRvT3JwaGFucwog
ICAgICAgICAmJiB0ZXh0U2VjdXJpdHkgPT0gby50ZXh0U2VjdXJpdHkKICAgICAgICAgJiYgdXNl
ck1vZGlmeSA9PSBvLnVzZXJNb2RpZnkKICAgICAgICAgJiYgd29yZEJyZWFrID09IG8ud29yZEJy
ZWFrCkBAIC0yNzYsNDQgKzI3Niw0NCBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAg
JiYgdGV4dEVtcGhhc2lzRmlsbCA9PSBvLnRleHRFbXBoYXNpc0ZpbGwKICAgICAgICAgJiYgdGV4
dEVtcGhhc2lzTWFyayA9PSBvLnRleHRFbXBoYXNpc01hcmsKICAgICAgICAgJiYgdGV4dEVtcGhh
c2lzUG9zaXRpb24gPT0gby50ZXh0RW1waGFzaXNQb3NpdGlvbgotICAgICAgICAmJiBtX3RleHRP
cmllbnRhdGlvbiA9PSBvLm1fdGV4dE9yaWVudGF0aW9uCisgICAgICAgICYmIHRleHRPcmllbnRh
dGlvbiA9PSBvLnRleHRPcmllbnRhdGlvbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAg
ICYmIG1fdGV4dEluZGVudExpbmUgPT0gby5tX3RleHRJbmRlbnRMaW5lCi0gICAgICAgICYmIG1f
dGV4dEluZGVudFR5cGUgPT0gby5tX3RleHRJbmRlbnRUeXBlCisgICAgICAgICYmIHRleHRJbmRl
bnRMaW5lID09IG8udGV4dEluZGVudExpbmUKKyAgICAgICAgJiYgdGV4dEluZGVudFR5cGUgPT0g
by50ZXh0SW5kZW50VHlwZQogI2VuZGlmCi0gICAgICAgICYmIG1fbGluZUJveENvbnRhaW4gPT0g
by5tX2xpbmVCb3hDb250YWluCisgICAgICAgICYmIGxpbmVCb3hDb250YWluID09IG8ubGluZUJv
eENvbnRhaW4KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICYmIHRvdWNoQ2FsbG91dEVuYWJs
ZWQgPT0gby50b3VjaENhbGxvdXRFbmFibGVkCiAjZW5kaWYKICAgICAgICAgJiYgaHlwaGVuYXRp
b25TdHJpbmcgPT0gby5oeXBoZW5hdGlvblN0cmluZwogICAgICAgICAmJiB0ZXh0RW1waGFzaXND
dXN0b21NYXJrID09IG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFyawogICAgICAgICAmJiBhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKHF1b3Rlcywgby5xdW90ZXMpCi0gICAgICAgICYmIG1fdGFiU2l6ZSA9
PSBvLm1fdGFiU2l6ZQotICAgICAgICAmJiBtX2xpbmVHcmlkID09IG8ubV9saW5lR3JpZAorICAg
ICAgICAmJiB0YWJTaXplID09IG8udGFiU2l6ZQorICAgICAgICAmJiBsaW5lR3JpZCA9PSBvLmxp
bmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgJiYgbV9p
bWFnZU9yaWVudGF0aW9uID09IG8ubV9pbWFnZU9yaWVudGF0aW9uCisgICAgICAgICYmIGltYWdl
T3JpZW50YXRpb24gPT0gby5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKLSAgICAgICAgJiYgbV9p
bWFnZVJlbmRlcmluZyA9PSBvLm1faW1hZ2VSZW5kZXJpbmcKKyAgICAgICAgJiYgaW1hZ2VSZW5k
ZXJpbmcgPT0gby5pbWFnZVJlbmRlcmluZwogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKLSAgICAgICAgJiYgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5tX2ltYWdlUmVzb2x1
dGlvblNvdXJjZQotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1dGlvblNuYXAgPT0gby5tX2ltYWdl
UmVzb2x1dGlvblNuYXAKLSAgICAgICAgJiYgbV9pbWFnZVJlc29sdXRpb24gPT0gby5tX2ltYWdl
UmVzb2x1dGlvbgorICAgICAgICAmJiBpbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5pbWFnZVJl
c29sdXRpb25Tb3VyY2UKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uU25hcCA9PSBvLmltYWdl
UmVzb2x1dGlvblNuYXAKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uID09IG8uaW1hZ2VSZXNv
bHV0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAmJiBtX3RleHRB
bGlnbkxhc3QgPT0gby5tX3RleHRBbGlnbkxhc3QKLSAgICAgICAgJiYgbV90ZXh0SnVzdGlmeSA9
PSBvLm1fdGV4dEp1c3RpZnkKKyAgICAgICAgJiYgdGV4dEFsaWduTGFzdCA9PSBvLnRleHRBbGln
bkxhc3QKKyAgICAgICAgJiYgdGV4dEp1c3RpZnkgPT0gby50ZXh0SnVzdGlmeQogI2VuZGlmIC8v
IENTUzNfVEVYVAotICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU2tpcCA9PSBvLm1fdGV4dERl
Y29yYXRpb25Ta2lwCi0gICAgICAgICYmIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uID09IG8ubV90
ZXh0VW5kZXJsaW5lUG9zaXRpb24KLSAgICAgICAgJiYgbV9ydWJ5UG9zaXRpb24gPT0gby5tX3J1
YnlQb3NpdGlvbgotICAgICAgICAmJiBtX3RleHRab29tID09IG8ubV90ZXh0Wm9vbQotICAgICAg
ICAmJiBtX2xpbmVTbmFwID09IG8ubV9saW5lU25hcAotICAgICAgICAmJiBtX2xpbmVBbGlnbiA9
PSBvLm1fbGluZUFsaWduCisgICAgICAgICYmIHRleHREZWNvcmF0aW9uU2tpcCA9PSBvLnRleHRE
ZWNvcmF0aW9uU2tpcAorICAgICAgICAmJiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24gPT0gby50ZXh0
VW5kZXJsaW5lUG9zaXRpb24KKyAgICAgICAgJiYgcnVieVBvc2l0aW9uID09IG8ucnVieVBvc2l0
aW9uCisgICAgICAgICYmIHRleHRab29tID09IG8udGV4dFpvb20KKyAgICAgICAgJiYgbGluZVNu
YXAgPT0gby5saW5lU25hcAorICAgICAgICAmJiBsaW5lQWxpZ24gPT0gby5saW5lQWxpZ24KICNp
ZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgICYmIHRyYWlsaW5nV29yZCA9PSBv
LnRyYWlsaW5nV29yZAogI2VuZGlmCi0gICAgICAgICYmIG1faGFuZ2luZ1B1bmN0dWF0aW9uID09
IG8ubV9oYW5naW5nUHVuY3R1YXRpb24KLSAgICAgICAgJiYgbV9jdXN0b21Qcm9wZXJ0aWVzID09
IG8ubV9jdXN0b21Qcm9wZXJ0aWVzCisgICAgICAgICYmIGhhbmdpbmdQdW5jdHVhdGlvbiA9PSBv
LmhhbmdpbmdQdW5jdHVhdGlvbgorICAgICAgICAmJiBjdXN0b21Qcm9wZXJ0aWVzID09IG8uY3Vz
dG9tUHJvcGVydGllcwogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGxpc3RTdHls
ZUltYWdlLCBvLmxpc3RTdHlsZUltYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggMTJiN2Uz
OWEzYWE5YzRlYjdmODgyYmZhYzYwOWM3ZjI5MjA5ODdkNy4uMmZmMjdjOTg1MGYzYTA2MDgwM2M0
YTA0NTRiNjg3YTc1ODUzY2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC03MiwxNyArNzIsMTcgQEAg
cHVibGljOgogICAgIAogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExl
bmd0aCBpbmRlbnQ7Ci0gICAgZmxvYXQgbV9lZmZlY3RpdmVab29tOworICAgIGZsb2F0IGVmZmVj
dGl2ZVpvb207CiAgICAgCiAgICAgTGVuZ3RoIHdvcmRTcGFjaW5nOwogCi0gICAgRGF0YVJlZjxT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworICAgIERhdGFSZWY8
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGN1c3RvbVByb3BlcnRpZXM7CiAKICAgICAvLyBQYWdl
ZCBtZWRpYSBwcm9wZXJ0aWVzLgogICAgIHNob3J0IHdpZG93czsKICAgICBzaG9ydCBvcnBoYW5z
OwotICAgIHVuc2lnbmVkIG1faGFzQXV0b1dpZG93cyA6IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNB
dXRvT3JwaGFucyA6IDE7CisgICAgdW5zaWduZWQgaGFzQXV0b1dpZG93cyA6IDE7CisgICAgdW5z
aWduZWQgaGFzQXV0b09ycGhhbnMgOiAxOwogICAgIAogICAgIHVuc2lnbmVkIHRleHRTZWN1cml0
eSA6IDI7IC8vIEVUZXh0U2VjdXJpdHkKICAgICB1bnNpZ25lZCB1c2VyTW9kaWZ5IDogMjsgLy8g
RVVzZXJNb2RpZnkgKGVkaXRpbmcpCkBAIC05NywzNCArOTcsMzQgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIHRleHRFbXBoYXNpc0ZpbGwgOiAxOyAvLyBUZXh0RW1waGFzaXNGaWxsCiAgICAgdW5z
aWduZWQgdGV4dEVtcGhhc2lzTWFyayA6IDM7IC8vIFRleHRFbXBoYXNpc01hcmsKICAgICB1bnNp
Z25lZCB0ZXh0RW1waGFzaXNQb3NpdGlvbiA6IDQ7IC8vIFRleHRFbXBoYXNpc1Bvc2l0aW9uCi0g
ICAgdW5zaWduZWQgbV90ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24KKyAg
ICB1bnNpZ25lZCB0ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24KICNpZiBF
TkFCTEUoQ1NTM19URVhUKQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudExpbmUgOiAxOyAvLyBU
ZXh0SW5kZW50TGluZQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudFR5cGUgOiAxOyAvLyBUZXh0
SW5kZW50VHlwZQorICAgIHVuc2lnbmVkIHRleHRJbmRlbnRMaW5lIDogMTsgLy8gVGV4dEluZGVu
dExpbmUKKyAgICB1bnNpZ25lZCB0ZXh0SW5kZW50VHlwZSA6IDE7IC8vIFRleHRJbmRlbnRUeXBl
CiAjZW5kaWYKLSAgICB1bnNpZ25lZCBtX2xpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29u
dGFpbgorICAgIHVuc2lnbmVkIGxpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29udGFpbgog
ICAgIC8vIENTUyBJbWFnZSBWYWx1ZXMgTGV2ZWwgMwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCi0gICAgdW5zaWduZWQgbV9pbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VP
cmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1h
Z2VPcmllbnRhdGlvbkVudW0KICNlbmRpZgotICAgIHVuc2lnbmVkIG1faW1hZ2VSZW5kZXJpbmcg
OiAzOyAvLyBFSW1hZ2VSZW5kZXJpbmcKLSAgICB1bnNpZ25lZCBtX2xpbmVTbmFwIDogMjsgLy8g
TGluZVNuYXAKLSAgICB1bnNpZ25lZCBtX2xpbmVBbGlnbiA6IDE7IC8vIExpbmVBbGlnbgorICAg
IHVuc2lnbmVkIGltYWdlUmVuZGVyaW5nIDogMzsgLy8gRUltYWdlUmVuZGVyaW5nCisgICAgdW5z
aWduZWQgbGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAorICAgIHVuc2lnbmVkIGxpbmVBbGlnbiA6
IDE7IC8vIExpbmVBbGlnbgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJ
TkcpCiAgICAgdW5zaWduZWQgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzogMTsKICNlbmRpZgog
I2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICB1bnNpZ25lZCBtX2ltYWdlUmVz
b2x1dGlvblNvdXJjZSA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgIHVuc2lnbmVk
IG1faW1hZ2VSZXNvbHV0aW9uU25hcCA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNuYXAKKyAgICB1
bnNpZ25lZCBpbWFnZVJlc29sdXRpb25Tb3VyY2UgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25Tb3Vy
Y2UKKyAgICB1bnNpZ25lZCBpbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNvbHV0
aW9uU25hcAogI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICB1bnNpZ25lZCBtX3Rl
eHRBbGlnbkxhc3QgOiAzOyAvLyBUZXh0QWxpZ25MYXN0Ci0gICAgdW5zaWduZWQgbV90ZXh0SnVz
dGlmeSA6IDI7IC8vIFRleHRKdXN0aWZ5Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgdW5zaWdu
ZWQgbV90ZXh0RGVjb3JhdGlvblNraXAgOiA1OyAvLyBUZXh0RGVjb3JhdGlvblNraXAKLSAgICB1
bnNpZ25lZCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3Np
dGlvbgotICAgIHVuc2lnbmVkIG1fcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCi0g
ICAgdW5zaWduZWQgbV90ZXh0Wm9vbTogMTsgLy8gVGV4dFpvb20KKyAgICB1bnNpZ25lZCB0ZXh0
QWxpZ25MYXN0IDogMzsgLy8gVGV4dEFsaWduTGFzdAorICAgIHVuc2lnbmVkIHRleHRKdXN0aWZ5
IDogMjsgLy8gVGV4dEp1c3RpZnkKKyNlbmRpZgorICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9u
U2tpcCA6IDU7IC8vIFRleHREZWNvcmF0aW9uU2tpcAorICAgIHVuc2lnbmVkIHRleHRVbmRlcmxp
bmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3NpdGlvbgorICAgIHVuc2lnbmVkIHJ1
YnlQb3NpdGlvbiA6IDI7IC8vIFJ1YnlQb3NpdGlvbgorICAgIHVuc2lnbmVkIHRleHRab29tOiAx
OyAvLyBUZXh0Wm9vbQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVuc2lnbmVkIHRvdWNoQ2Fs
bG91dEVuYWJsZWQgOiAxOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCB0cmFpbGluZ1dvcmQgOiAxOwogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX2hhbmdpbmdQdW5j
dHVhdGlvbiA6IDQ7CisgICAgdW5zaWduZWQgaGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsKIAogICAg
IEF0b21pY1N0cmluZyBoeXBoZW5hdGlvblN0cmluZzsKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxp
bWl0QmVmb3JlOwpAQCAtMTQ0LDE1ICsxNDQsMTUgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmlu
ZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7
CiAKLSAgICBBdG9taWNTdHJpbmcgbV9saW5lR3JpZDsKLSAgICB1bnNpZ25lZCBtX3RhYlNpemU7
CisgICAgQXRvbWljU3RyaW5nIGxpbmVHcmlkOworICAgIHVuc2lnbmVkIHRhYlNpemU7CiAKICNp
ZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6
ZUFkanVzdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAg
IGZsb2F0IG1faW1hZ2VSZXNvbHV0aW9uOworICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbjsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApp
bmRleCA0YTdmN2U2ODcwMTk4Y2MwOWYyNDZiMDZkNzRjMTk5YmM4MTUyNzg3Li42NTE0MjAwOTlm
OTc4MDA1MmFiZTBlNDI2MTRiZDBkNDM3YTRmZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM3LDE3NCArMzcsMTc0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQotICAg
IDogbV9vcGFjaXR5KFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpKQotICAgICwgbV9hc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWlu
YXRvcigpKQotICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlh
bEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZlKFJlbmRlclN0eWxl
Ojppbml0aWFsUGVyc3BlY3RpdmUoKSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5YKFJlbmRl
clN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZl
T3JpZ2luWShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQorICAgIDog
b3BhY2l0eShSZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHkoKSkKKyAgICAsIGFzcGVjdFJhdGlv
RGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkp
CisgICAgLCBhc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJh
dGlvTnVtZXJhdG9yKCkpCisgICAgLCBwZXJzcGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBl
cnNwZWN0aXZlKCkpCisgICAgLCBwZXJzcGVjdGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRp
YWxQZXJzcGVjdGl2ZU9yaWdpblgoKSkKKyAgICAsIHBlcnNwZWN0aXZlT3JpZ2luWShSZW5kZXJT
dHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQogICAgICwgbGluZUNsYW1wKFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUNsYW1wKCkpCi0gICAgLCBtX2luaXRpYWxMZXR0ZXIoUmVuZGVy
U3R5bGU6OmluaXRpYWxJbml0aWFsTGV0dGVyKCkpCi0gICAgLCBtX2RlcHJlY2F0ZWRGbGV4aWJs
ZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9m
bGV4aWJsZUJveChTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX21hcnF1
ZWUoU3R5bGVNYXJxdWVlRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX211bHRpQ29sKFN0eWxlTXVs
dGlDb2xEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fdHJhbnNmb3JtKFN0eWxlVHJhbnNmb3JtRGF0
YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2ZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0ZSgpKQor
ICAgICwgaW5pdGlhbExldHRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0ZXIoKSkK
KyAgICAsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGE6OmNyZWF0ZSgpKQorICAgICwgZmxleGlibGVCb3goU3R5bGVGbGV4aWJsZUJveERhdGE6OmNy
ZWF0ZSgpKQorICAgICwgbWFycXVlZShTdHlsZU1hcnF1ZWVEYXRhOjpjcmVhdGUoKSkKKyAgICAs
IG11bHRpQ29sKFN0eWxlTXVsdGlDb2xEYXRhOjpjcmVhdGUoKSkKKyAgICAsIHRyYW5zZm9ybShT
dHlsZVRyYW5zZm9ybURhdGE6OmNyZWF0ZSgpKQorICAgICwgZmlsdGVyKFN0eWxlRmlsdGVyRGF0
YTo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAsIG1fYmFja2Ry
b3BGaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGJhY2tkcm9wRmlsdGVy
KFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRlKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURf
TEFZT1VUKQotICAgICwgbV9ncmlkKFN0eWxlR3JpZERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9n
cmlkSXRlbShTdHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBncmlkKFN0eWxlR3Jp
ZERhdGE6OmNyZWF0ZSgpKQorICAgICwgZ3JpZEl0ZW0oU3R5bGVHcmlkSXRlbURhdGE6OmNyZWF0
ZSgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xs
U25hcFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCi0gICAgLCBtX3Njcm9sbFNu
YXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQorICAgICwgc2Nyb2xsU25hcFBv
cnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCisgICAgLCBzY3JvbGxTbmFwQXJlYShT
dHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUoKSkKICNlbmRpZgotICAgICwgbV93aWxsQ2hhbmdl
KFJlbmRlclN0eWxlOjppbml0aWFsV2lsbENoYW5nZSgpKQotICAgICwgbV9tYXNrKEZpbGxMYXll
cihNYXNrRmlsbExheWVyKSkKLSAgICAsIG1fb2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5bGU6Omlu
aXRpYWxPYmplY3RQb3NpdGlvbigpKQotICAgICwgbV9zaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6
OmluaXRpYWxTaGFwZU91dHNpZGUoKSkKLSAgICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6
OmluaXRpYWxTaGFwZU1hcmdpbigpKQotICAgICwgbV9zaGFwZUltYWdlVGhyZXNob2xkKFJlbmRl
clN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZCgpKQotICAgICwgbV9jbGlwUGF0aChS
ZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCi0gICAgLCBt
X29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKLSAgICAsIG1fZmxvd1RocmVhZChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKLSAgICAsIG1fcmVnaW9uVGhyZWFkKFJl
bmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCi0gICAgLCBtX2FsaWduQ29udGVudChS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25JdGVt
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbERlZmF1bHRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25T
ZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5
Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1f
anVzdGlmeUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwg
bV9qdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKKyAgICAs
IHdpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCisgICAgLCBtYXNr
KEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkKKyAgICAsIG9iamVjdFBvc2l0aW9uKFJlbmRlclN0
eWxlOjppbml0aWFsT2JqZWN0UG9zaXRpb24oKSkKKyAgICAsIHNoYXBlT3V0c2lkZShSZW5kZXJT
dHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQorICAgICwgc2hhcGVNYXJnaW4oUmVuZGVyU3R5
bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQorICAgICwgc2hhcGVJbWFnZVRocmVzaG9sZChSZW5k
ZXJTdHlsZTo6aW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSkKKyAgICAsIGNsaXBQYXRoKFJl
bmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkKKyAgICAsIHZpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCisgICAgLCBvcmRl
cihSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyKCkpCisgICAgLCBmbG93VGhyZWFkKFJlbmRlclN0
eWxlOjppbml0aWFsRmxvd1RocmVhZCgpKQorICAgICwgcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxl
Ojppbml0aWFsUmVnaW9uVGhyZWFkKCkpCisgICAgLCBhbGlnbkNvbnRlbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCisgICAgLCBhbGlnbkl0ZW1zKFJlbmRlclN0eWxl
Ojppbml0aWFsRGVmYXVsdEFsaWdubWVudCgpKQorICAgICwgYWxpZ25TZWxmKFJlbmRlclN0eWxl
Ojppbml0aWFsU2VsZkFsaWdubWVudCgpKQorICAgICwganVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5SXRlbXMoUmVuZGVy
U3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5U2VsZihSZW5kZXJT
dHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgICwgbV90b3VjaEFjdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6Omlu
aXRpYWxUb3VjaEFjdGlvbigpKSkKKyAgICAsIHRvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQogI2VuZGlmCi0gICAgLCBt
X3JlZ2lvbkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKLSAg
ICAsIG1fcGFnZVNpemVUeXBlKFBBR0VfU0laRV9BVVRPKQotICAgICwgbV90cmFuc2Zvcm1TdHls
ZTNEKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpKQotICAgICwgbV9iYWNr
ZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkK
KyAgICAsIHJlZ2lvbkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQo
KSkKKyAgICAsIHBhZ2VTaXplVHlwZShQQUdFX1NJWkVfQVVUTykKKyAgICAsIHRyYW5zZm9ybVN0
eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkpCisgICAgLCBiYWNr
ZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkK
ICAgICAsIHVzZXJEcmFnKFJlbmRlclN0eWxlOjppbml0aWFsVXNlckRyYWcoKSkKICAgICAsIHRl
eHRPdmVyZmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRPdmVyZmxvdygpKQogICAgICwgbWFy
Z2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNFKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShN
Q09MTEFQU0UpCi0gICAgLCBtX2FwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJh
bmNlKCkpCi0gICAgLCBtX2JvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgp
KQotICAgICwgbV90ZXh0Q29tYmluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRDb21iaW5lKCkp
Ci0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVj
b3JhdGlvblN0eWxlKCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5p
dGlhbEFzcGVjdFJhdGlvVHlwZSgpKQorICAgICwgYXBwZWFyYW5jZShSZW5kZXJTdHlsZTo6aW5p
dGlhbEFwcGVhcmFuY2UoKSkKKyAgICAsIGJvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJv
cmRlckZpdCgpKQorICAgICwgdGV4dENvbWJpbmUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29t
YmluZSgpKQorICAgICwgdGV4dERlY29yYXRpb25TdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHREZWNvcmF0aW9uU3R5bGUoKSkKKyAgICAsIGFzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6
aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0g
ICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgp
KQotICAgICwgbV9pc29sYXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJc29sYXRpb24oKSkKKyAg
ICAsIGVmZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQor
ICAgICwgaXNvbGF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSXNvbGF0aW9uKCkpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9hcHBsZVBheUJ1dHRvblN0eWxlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9uU3R5bGUo
KSkpCi0gICAgLCBtX2FwcGxlUGF5QnV0dG9uVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVu
ZGVyU3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1dHRvblR5cGUoKSkpCisgICAgLCBhcHBsZVBheUJ1
dHRvblN0eWxlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxl
UGF5QnV0dG9uU3R5bGUoKSkpCisgICAgLCBhcHBsZVBheUJ1dHRvblR5cGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBwbGVQYXlCdXR0b25UeXBlKCkpKQogI2Vu
ZGlmCi0gICAgLCBtX29iamVjdEZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdEZpdCgpKQot
ICAgICwgbV9icmVha0JlZm9yZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFrQmV0d2VlbigpKQot
ICAgICwgbV9icmVha0FmdGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCi0g
ICAgLCBtX2JyZWFrSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtJbnNpZGUoKSkKLSAg
ICAsIG1fcmVzaXplKFJlbmRlclN0eWxlOjppbml0aWFsUmVzaXplKCkpCi0gICAgLCBtX2hhc0F0
dHJDb250ZW50KGZhbHNlKQotICAgICwgbV9pc1BsYWNlaG9sZGVyU3R5bGUoZmFsc2UpCisgICAg
LCBvYmplY3RGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RGaXQoKSkKKyAgICAsIGJyZWFr
QmVmb3JlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0Fm
dGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0luc2lk
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFrSW5zaWRlKCkpCisgICAgLCByZXNpemUoUmVuZGVy
U3R5bGU6OmluaXRpYWxSZXNpemUoKSkKKyAgICAsIGhhc0F0dHJDb250ZW50KGZhbHNlKQorICAg
ICwgaXNQbGFjZWhvbGRlclN0eWxlKGZhbHNlKQogewotICAgIG1fbWFza0JveEltYWdlLnNldE1h
c2tEZWZhdWx0cygpOworICAgIG1hc2tCb3hJbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKIH0KIAog
aW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4oKQotICAgICwgbV9vcGFjaXR5KG8ubV9vcGFjaXR5
KQotICAgICwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8ubV9hc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKQotICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihvLm1fYXNwZWN0UmF0aW9OdW1lcmF0
b3IpCi0gICAgLCBtX3BlcnNwZWN0aXZlKG8ubV9wZXJzcGVjdGl2ZSkKLSAgICAsIG1fcGVyc3Bl
Y3RpdmVPcmlnaW5YKG8ubV9wZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgLCBtX3BlcnNwZWN0aXZl
T3JpZ2luWShvLm1fcGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICwgb3BhY2l0eShvLm9wYWNpdHkp
CisgICAgLCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8uYXNwZWN0UmF0aW9EZW5vbWluYXRvcikK
KyAgICAsIGFzcGVjdFJhdGlvTnVtZXJhdG9yKG8uYXNwZWN0UmF0aW9OdW1lcmF0b3IpCisgICAg
LCBwZXJzcGVjdGl2ZShvLnBlcnNwZWN0aXZlKQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5YKG8u
cGVyc3BlY3RpdmVPcmlnaW5YKQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5ZKG8ucGVyc3BlY3Rp
dmVPcmlnaW5ZKQogICAgICwgbGluZUNsYW1wKG8ubGluZUNsYW1wKQotICAgICwgbV9pbml0aWFs
TGV0dGVyKG8ubV9pbml0aWFsTGV0dGVyKQotICAgICwgbV9kZXByZWNhdGVkRmxleGlibGVCb3go
by5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkKLSAgICAsIG1fZmxleGlibGVCb3goby5tX2ZsZXhp
YmxlQm94KQotICAgICwgbV9tYXJxdWVlKG8ubV9tYXJxdWVlKQotICAgICwgbV9tdWx0aUNvbChv
Lm1fbXVsdGlDb2wpCi0gICAgLCBtX3RyYW5zZm9ybShvLm1fdHJhbnNmb3JtKQotICAgICwgbV9m
aWx0ZXIoby5tX2ZpbHRlcikKKyAgICAsIGluaXRpYWxMZXR0ZXIoby5pbml0aWFsTGV0dGVyKQor
ICAgICwgZGVwcmVjYXRlZEZsZXhpYmxlQm94KG8uZGVwcmVjYXRlZEZsZXhpYmxlQm94KQorICAg
ICwgZmxleGlibGVCb3goby5mbGV4aWJsZUJveCkKKyAgICAsIG1hcnF1ZWUoby5tYXJxdWVlKQor
ICAgICwgbXVsdGlDb2woby5tdWx0aUNvbCkKKyAgICAsIHRyYW5zZm9ybShvLnRyYW5zZm9ybSkK
KyAgICAsIGZpbHRlcihvLmZpbHRlcikKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAg
ICwgbV9iYWNrZHJvcEZpbHRlcihvLm1fYmFja2Ryb3BGaWx0ZXIpCisgICAgLCBiYWNrZHJvcEZp
bHRlcihvLmJhY2tkcm9wRmlsdGVyKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKLSAgICAsIG1fZ3JpZChvLm1fZ3JpZCkKLSAgICAsIG1fZ3JpZEl0ZW0oby5tX2dyaWRJdGVt
KQorICAgICwgZ3JpZChvLmdyaWQpCisgICAgLCBncmlkSXRlbShvLmdyaWRJdGVtKQogI2VuZGlm
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xsU25hcFBvcnQoby5t
X3Njcm9sbFNuYXBQb3J0KQotICAgICwgbV9zY3JvbGxTbmFwQXJlYShvLm1fc2Nyb2xsU25hcEFy
ZWEpCisgICAgLCBzY3JvbGxTbmFwUG9ydChvLnNjcm9sbFNuYXBQb3J0KQorICAgICwgc2Nyb2xs
U25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgotICAgICwgbV9jb250ZW50KG8ubV9j
b250ZW50ID8gby5tX2NvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgbV9jb3VudGVy
RGlyZWN0aXZlcyhvLm1fY291bnRlckRpcmVjdGl2ZXMgPyBjbG9uZSgqby5tX2NvdW50ZXJEaXJl
Y3RpdmVzKSA6IG51bGxwdHIpCi0gICAgLCBtX2FsdFRleHQoby5tX2FsdFRleHQpCi0gICAgLCBt
X2JveFNoYWRvdyhvLm1fYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigq
by5tX2JveFNoYWRvdykgOiBudWxscHRyKQotICAgICwgbV93aWxsQ2hhbmdlKG8ubV93aWxsQ2hh
bmdlKQotICAgICwgbV9ib3hSZWZsZWN0KG8ubV9ib3hSZWZsZWN0KQotICAgICwgbV9hbmltYXRp
b25zKG8ubV9hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5t
X2FuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIG1fdHJhbnNpdGlvbnMoby5tX3RyYW5zaXRp
b25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5tX3RyYW5zaXRpb25zKSA6
IG51bGxwdHIpCi0gICAgLCBtX21hc2soby5tX21hc2spCi0gICAgLCBtX21hc2tCb3hJbWFnZShv
Lm1fbWFza0JveEltYWdlKQotICAgICwgbV9wYWdlU2l6ZShvLm1fcGFnZVNpemUpCi0gICAgLCBt
X29iamVjdFBvc2l0aW9uKG8ubV9vYmplY3RQb3NpdGlvbikKLSAgICAsIG1fc2hhcGVPdXRzaWRl
KG8ubV9zaGFwZU91dHNpZGUpCi0gICAgLCBtX3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1hcmdpbikK
LSAgICAsIG1fc2hhcGVJbWFnZVRocmVzaG9sZChvLm1fc2hhcGVJbWFnZVRocmVzaG9sZCkKLSAg
ICAsIG1fY2xpcFBhdGgoby5tX2NsaXBQYXRoKQotICAgICwgbV90ZXh0RGVjb3JhdGlvbkNvbG9y
KG8ubV90ZXh0RGVjb3JhdGlvbkNvbG9yKQotICAgICwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0
aW9uQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcikKLSAgICAsIG1fdmlz
aXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQot
ICAgICwgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1fdmlzaXRlZExpbmtPdXRsaW5lQ29s
b3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV92aXNpdGVkTGlua0Jv
cmRlckxlZnRDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV92
aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5r
Qm9yZGVyQm90dG9tQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCi0gICAg
LCBtX29yZGVyKG8ubV9vcmRlcikKLSAgICAsIG1fZmxvd1RocmVhZChvLm1fZmxvd1RocmVhZCkK
LSAgICAsIG1fcmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCi0gICAgLCBtX2FsaWduQ29u
dGVudChvLm1fYWxpZ25Db250ZW50KQotICAgICwgbV9hbGlnbkl0ZW1zKG8ubV9hbGlnbkl0ZW1z
KQotICAgICwgbV9hbGlnblNlbGYoby5tX2FsaWduU2VsZikKLSAgICAsIG1fanVzdGlmeUNvbnRl
bnQoby5tX2p1c3RpZnlDb250ZW50KQotICAgICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJ
dGVtcykKLSAgICAsIG1fanVzdGlmeVNlbGYoby5tX2p1c3RpZnlTZWxmKQorICAgICwgY29udGVu
dChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQorICAgICwgY291bnRl
ckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IGNsb25lKCpvLmNvdW50ZXJEaXJlY3Rp
dmVzKSA6IG51bGxwdHIpCisgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKKyAgICAsIGJveFNoYWRv
dyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93
KSA6IG51bGxwdHIpCisgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKKyAgICAsIGJveFJl
ZmxlY3Qoby5ib3hSZWZsZWN0KQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6
Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAg
ICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlv
bkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBtYXNrKG8ubWFzaykKKyAg
ICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKKyAgICAsIHBhZ2VTaXplKG8ucGFnZVNp
emUpCisgICAgLCBvYmplY3RQb3NpdGlvbihvLm9iamVjdFBvc2l0aW9uKQorICAgICwgc2hhcGVP
dXRzaWRlKG8uc2hhcGVPdXRzaWRlKQorICAgICwgc2hhcGVNYXJnaW4oby5zaGFwZU1hcmdpbikK
KyAgICAsIHNoYXBlSW1hZ2VUaHJlc2hvbGQoby5zaGFwZUltYWdlVGhyZXNob2xkKQorICAgICwg
Y2xpcFBhdGgoby5jbGlwUGF0aCkKKyAgICAsIHRleHREZWNvcmF0aW9uQ29sb3Ioby50ZXh0RGVj
b3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKG8udmlz
aXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3Ioby52aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yKG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua0Jv
cmRlckxlZnRDb2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQorICAgICwgdmlzaXRl
ZExpbmtCb3JkZXJSaWdodENvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQorICAg
ICwgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ip
CisgICAgLCB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcikKKyAgICAsIG9yZGVyKG8ub3JkZXIpCisgICAgLCBmbG93VGhyZWFkKG8uZmxv
d1RocmVhZCkKKyAgICAsIHJlZ2lvblRocmVhZChvLnJlZ2lvblRocmVhZCkKKyAgICAsIGFsaWdu
Q29udGVudChvLmFsaWduQ29udGVudCkKKyAgICAsIGFsaWduSXRlbXMoby5hbGlnbkl0ZW1zKQor
ICAgICwgYWxpZ25TZWxmKG8uYWxpZ25TZWxmKQorICAgICwganVzdGlmeUNvbnRlbnQoby5qdXN0
aWZ5Q29udGVudCkKKyAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKKyAgICAsIGp1
c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAs
IG1fdG91Y2hBY3Rpb24oby5tX3RvdWNoQWN0aW9uKQorICAgICwgdG91Y2hBY3Rpb24oby50b3Vj
aEFjdGlvbikKICNlbmRpZgotICAgICwgbV9yZWdpb25GcmFnbWVudChvLm1fcmVnaW9uRnJhZ21l
bnQpCi0gICAgLCBtX3BhZ2VTaXplVHlwZShvLm1fcGFnZVNpemVUeXBlKQotICAgICwgbV90cmFu
c2Zvcm1TdHlsZTNEKG8ubV90cmFuc2Zvcm1TdHlsZTNEKQotICAgICwgbV9iYWNrZmFjZVZpc2li
aWxpdHkoby5tX2JhY2tmYWNlVmlzaWJpbGl0eSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50KG8ucmVn
aW9uRnJhZ21lbnQpCisgICAgLCBwYWdlU2l6ZVR5cGUoby5wYWdlU2l6ZVR5cGUpCisgICAgLCB0
cmFuc2Zvcm1TdHlsZTNEKG8udHJhbnNmb3JtU3R5bGUzRCkKKyAgICAsIGJhY2tmYWNlVmlzaWJp
bGl0eShvLmJhY2tmYWNlVmlzaWJpbGl0eSkKICAgICAsIHVzZXJEcmFnKG8udXNlckRyYWcpCiAg
ICAgLCB0ZXh0T3ZlcmZsb3coby50ZXh0T3ZlcmZsb3cpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xs
YXBzZShvLm1hcmdpbkJlZm9yZUNvbGxhcHNlKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShv
Lm1hcmdpbkFmdGVyQ29sbGFwc2UpCi0gICAgLCBtX2FwcGVhcmFuY2Uoby5tX2FwcGVhcmFuY2Up
Ci0gICAgLCBtX2JvcmRlckZpdChvLm1fYm9yZGVyRml0KQotICAgICwgbV90ZXh0Q29tYmluZShv
Lm1fdGV4dENvbWJpbmUpCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5bGUoby5tX3RleHREZWNv
cmF0aW9uU3R5bGUpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShvLm1fYXNwZWN0UmF0aW9UeXBl
KQorICAgICwgYXBwZWFyYW5jZShvLmFwcGVhcmFuY2UpCisgICAgLCBib3JkZXJGaXQoby5ib3Jk
ZXJGaXQpCisgICAgLCB0ZXh0Q29tYmluZShvLnRleHRDb21iaW5lKQorICAgICwgdGV4dERlY29y
YXRpb25TdHlsZShvLnRleHREZWNvcmF0aW9uU3R5bGUpCisgICAgLCBhc3BlY3RSYXRpb1R5cGUo
by5hc3BlY3RSYXRpb1R5cGUpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICAsIG1f
ZWZmZWN0aXZlQmxlbmRNb2RlKG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUpCi0gICAgLCBtX2lzb2xh
dGlvbihvLm1faXNvbGF0aW9uKQorICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKG8uZWZmZWN0aXZl
QmxlbmRNb2RlKQorICAgICwgaXNvbGF0aW9uKG8uaXNvbGF0aW9uKQogI2VuZGlmCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShvLm1fYXBwbGVQYXlC
dXR0b25TdHlsZSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25UeXBlKG8ubV9hcHBsZVBheUJ1dHRv
blR5cGUpCisgICAgLCBhcHBsZVBheUJ1dHRvblN0eWxlKG8uYXBwbGVQYXlCdXR0b25TdHlsZSkK
KyAgICAsIGFwcGxlUGF5QnV0dG9uVHlwZShvLmFwcGxlUGF5QnV0dG9uVHlwZSkKICNlbmRpZgot
ICAgICwgbV9vYmplY3RGaXQoby5tX29iamVjdEZpdCkKLSAgICAsIG1fYnJlYWtCZWZvcmUoby5t
X2JyZWFrQmVmb3JlKQotICAgICwgbV9icmVha0FmdGVyKG8ubV9icmVha0FmdGVyKQotICAgICwg
bV9icmVha0luc2lkZShvLm1fYnJlYWtJbnNpZGUpCi0gICAgLCBtX3Jlc2l6ZShvLm1fcmVzaXpl
KQotICAgICwgbV9oYXNBdHRyQ29udGVudChvLm1faGFzQXR0ckNvbnRlbnQpCi0gICAgLCBtX2lz
UGxhY2Vob2xkZXJTdHlsZShvLm1faXNQbGFjZWhvbGRlclN0eWxlKQorICAgICwgb2JqZWN0Rml0
KG8ub2JqZWN0Rml0KQorICAgICwgYnJlYWtCZWZvcmUoby5icmVha0JlZm9yZSkKKyAgICAsIGJy
ZWFrQWZ0ZXIoby5icmVha0FmdGVyKQorICAgICwgYnJlYWtJbnNpZGUoby5icmVha0luc2lkZSkK
KyAgICAsIHJlc2l6ZShvLnJlc2l6ZSkKKyAgICAsIGhhc0F0dHJDb250ZW50KG8uaGFzQXR0ckNv
bnRlbnQpCisgICAgLCBpc1BsYWNlaG9sZGVyU3R5bGUoby5pc1BsYWNlaG9sZGVyU3R5bGUpCiB7
CiB9CiAKQEAgLTIxOSwxMjMgKzIxOSwxMjMgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
flN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9vcGFjaXR5ID09IG8ubV9vcGFjaXR5Ci0gICAgICAgICYmIG1f
YXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBvLm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcgotICAg
ICAgICAmJiBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yID09IG8ubV9hc3BlY3RSYXRpb051bWVyYXRv
cgotICAgICAgICAmJiBtX3BlcnNwZWN0aXZlID09IG8ubV9wZXJzcGVjdGl2ZQotICAgICAgICAm
JiBtX3BlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAg
ICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5ZID09IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkKKyAgICBy
ZXR1cm4gb3BhY2l0eSA9PSBvLm9wYWNpdHkKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9EZW5vbWlu
YXRvciA9PSBvLmFzcGVjdFJhdGlvRGVub21pbmF0b3IKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9O
dW1lcmF0b3IgPT0gby5hc3BlY3RSYXRpb051bWVyYXRvcgorICAgICAgICAmJiBwZXJzcGVjdGl2
ZSA9PSBvLnBlcnNwZWN0aXZlCisgICAgICAgICYmIHBlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLnBl
cnNwZWN0aXZlT3JpZ2luWAorICAgICAgICAmJiBwZXJzcGVjdGl2ZU9yaWdpblkgPT0gby5wZXJz
cGVjdGl2ZU9yaWdpblkKICAgICAgICAgJiYgbGluZUNsYW1wID09IG8ubGluZUNsYW1wCi0gICAg
ICAgICYmIG1faW5pdGlhbExldHRlciA9PSBvLm1faW5pdGlhbExldHRlcgorICAgICAgICAmJiBp
bml0aWFsTGV0dGVyID09IG8uaW5pdGlhbExldHRlcgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKLSAgICAgICAgJiYgbV9kYXNoYm9hcmRSZWdpb25zID09IG8ubV9kYXNoYm9hcmRSZWdp
b25zCisgICAgICAgICYmIGRhc2hib2FyZFJlZ2lvbnMgPT0gby5kYXNoYm9hcmRSZWdpb25zCiAj
ZW5kaWYKLSAgICAgICAgJiYgbV9kZXByZWNhdGVkRmxleGlibGVCb3ggPT0gby5tX2RlcHJlY2F0
ZWRGbGV4aWJsZUJveAotICAgICAgICAmJiBtX2ZsZXhpYmxlQm94ID09IG8ubV9mbGV4aWJsZUJv
eAotICAgICAgICAmJiBtX21hcnF1ZWUgPT0gby5tX21hcnF1ZWUKLSAgICAgICAgJiYgbV9tdWx0
aUNvbCA9PSBvLm1fbXVsdGlDb2wKLSAgICAgICAgJiYgbV90cmFuc2Zvcm0gPT0gby5tX3RyYW5z
Zm9ybQotICAgICAgICAmJiBtX2ZpbHRlciA9PSBvLm1fZmlsdGVyCisgICAgICAgICYmIGRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCA9PSBvLmRlcHJlY2F0ZWRGbGV4aWJsZUJveAorICAgICAgICAmJiBm
bGV4aWJsZUJveCA9PSBvLmZsZXhpYmxlQm94CisgICAgICAgICYmIG1hcnF1ZWUgPT0gby5tYXJx
dWVlCisgICAgICAgICYmIG11bHRpQ29sID09IG8ubXVsdGlDb2wKKyAgICAgICAgJiYgdHJhbnNm
b3JtID09IG8udHJhbnNmb3JtCisgICAgICAgICYmIGZpbHRlciA9PSBvLmZpbHRlcgogI2lmIEVO
QUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgICAgICYmIG1fYmFja2Ryb3BGaWx0ZXIgPT0gby5t
X2JhY2tkcm9wRmlsdGVyCisgICAgICAgICYmIGJhY2tkcm9wRmlsdGVyID09IG8uYmFja2Ryb3BG
aWx0ZXIKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgICYmIG1f
Z3JpZCA9PSBvLm1fZ3JpZAotICAgICAgICAmJiBtX2dyaWRJdGVtID09IG8ubV9ncmlkSXRlbQor
ICAgICAgICAmJiBncmlkID09IG8uZ3JpZAorICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJ
dGVtCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICAmJiBtX3Nj
cm9sbFNuYXBQb3J0ID09IG8ubV9zY3JvbGxTbmFwUG9ydAotICAgICAgICAmJiBtX3Njcm9sbFNu
YXBBcmVhID09IG8ubV9zY3JvbGxTbmFwQXJlYQorICAgICAgICAmJiBzY3JvbGxTbmFwUG9ydCA9
PSBvLnNjcm9sbFNuYXBQb3J0CisgICAgICAgICYmIHNjcm9sbFNuYXBBcmVhID09IG8uc2Nyb2xs
U25hcEFyZWEKICNlbmRpZgogICAgICAgICAmJiBjb250ZW50RGF0YUVxdWl2YWxlbnQobykKLSAg
ICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2NvdW50ZXJEaXJlY3RpdmVzLCBvLm1f
Y291bnRlckRpcmVjdGl2ZXMpCi0gICAgICAgICYmIG1fYWx0VGV4dCA9PSBvLm1fYWx0VGV4dAot
ICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fYm94U2hhZG93LCBvLm1fYm94U2hh
ZG93KQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fd2lsbENoYW5nZSwgby5t
X3dpbGxDaGFuZ2UpCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9ib3hSZWZs
ZWN0LCBvLm1fYm94UmVmbGVjdCkKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSht
X2FuaW1hdGlvbnMsIG8ubV9hbmltYXRpb25zKQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1
YWxEYXRhKG1fdHJhbnNpdGlvbnMsIG8ubV90cmFuc2l0aW9ucykKLSAgICAgICAgJiYgbV9tYXNr
ID09IG8ubV9tYXNrCi0gICAgICAgICYmIG1fbWFza0JveEltYWdlID09IG8ubV9tYXNrQm94SW1h
Z2UKLSAgICAgICAgJiYgbV9wYWdlU2l6ZSA9PSBvLm1fcGFnZVNpemUKLSAgICAgICAgJiYgbV9v
YmplY3RQb3NpdGlvbiA9PSBvLm1fb2JqZWN0UG9zaXRpb24KLSAgICAgICAgJiYgYXJlUG9pbnRp
bmdUb0VxdWFsRGF0YShtX3NoYXBlT3V0c2lkZSwgby5tX3NoYXBlT3V0c2lkZSkKLSAgICAgICAg
JiYgbV9zaGFwZU1hcmdpbiA9PSBvLm1fc2hhcGVNYXJnaW4KLSAgICAgICAgJiYgbV9zaGFwZUlt
YWdlVGhyZXNob2xkID09IG8ubV9zaGFwZUltYWdlVGhyZXNob2xkCi0gICAgICAgICYmIGFyZVBv
aW50aW5nVG9FcXVhbERhdGEobV9jbGlwUGF0aCwgby5tX2NsaXBQYXRoKQotICAgICAgICAmJiBt
X3RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5tX3RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAg
JiYgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rVGV4
dERlY29yYXRpb25Db2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9y
ID09IG8ubV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yID09IG8ubV92aXNpdGVkTGlua091dGxpbmVDb2xvcgotICAgICAgICAm
JiBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA9PSBvLm1f
dmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3Jk
ZXJUb3BDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcgotICAgICAgICAmJiBt
X3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IKLSAgICAgICAgJiYgbV9vcmRlciA9PSBvLm1fb3JkZXIKLSAgICAgICAgJiYgbV9m
bG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFkCi0gICAgICAgICYmIG1fYWxpZ25Db250ZW50ID09
IG8ubV9hbGlnbkNvbnRlbnQKLSAgICAgICAgJiYgbV9hbGlnbkl0ZW1zID09IG8ubV9hbGlnbkl0
ZW1zCi0gICAgICAgICYmIG1fYWxpZ25TZWxmID09IG8ubV9hbGlnblNlbGYKLSAgICAgICAgJiYg
bV9qdXN0aWZ5Q29udGVudCA9PSBvLm1fanVzdGlmeUNvbnRlbnQKLSAgICAgICAgJiYgbV9qdXN0
aWZ5SXRlbXMgPT0gby5tX2p1c3RpZnlJdGVtcwotICAgICAgICAmJiBtX2p1c3RpZnlTZWxmID09
IG8ubV9qdXN0aWZ5U2VsZgotICAgICAgICAmJiBtX3JlZ2lvblRocmVhZCA9PSBvLm1fcmVnaW9u
VGhyZWFkCi0gICAgICAgICYmIG1fcmVnaW9uRnJhZ21lbnQgPT0gby5tX3JlZ2lvbkZyYWdtZW50
Ci0gICAgICAgICYmIG1fcGFnZVNpemVUeXBlID09IG8ubV9wYWdlU2l6ZVR5cGUKLSAgICAgICAg
JiYgbV90cmFuc2Zvcm1TdHlsZTNEID09IG8ubV90cmFuc2Zvcm1TdHlsZTNECi0gICAgICAgICYm
IG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IG8ubV9iYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAg
JiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShjb3VudGVyRGlyZWN0aXZlcywgby5jb3VudGVyRGly
ZWN0aXZlcykKKyAgICAgICAgJiYgYWx0VGV4dCA9PSBvLmFsdFRleHQKKyAgICAgICAgJiYgYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShib3hTaGFkb3csIG8uYm94U2hhZG93KQorICAgICAgICAmJiBh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKHdpbGxDaGFuZ2UsIG8ud2lsbENoYW5nZSkKKyAgICAgICAg
JiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShib3hSZWZsZWN0LCBvLmJveFJlZmxlY3QpCisgICAg
ICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoYW5pbWF0aW9ucywgby5hbmltYXRpb25zKQor
ICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHRyYW5zaXRpb25zLCBvLnRyYW5zaXRp
b25zKQorICAgICAgICAmJiBtYXNrID09IG8ubWFzaworICAgICAgICAmJiBtYXNrQm94SW1hZ2Ug
PT0gby5tYXNrQm94SW1hZ2UKKyAgICAgICAgJiYgcGFnZVNpemUgPT0gby5wYWdlU2l6ZQorICAg
ICAgICAmJiBvYmplY3RQb3NpdGlvbiA9PSBvLm9iamVjdFBvc2l0aW9uCisgICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEoc2hhcGVPdXRzaWRlLCBvLnNoYXBlT3V0c2lkZSkKKyAgICAg
ICAgJiYgc2hhcGVNYXJnaW4gPT0gby5zaGFwZU1hcmdpbgorICAgICAgICAmJiBzaGFwZUltYWdl
VGhyZXNob2xkID09IG8uc2hhcGVJbWFnZVRocmVzaG9sZAorICAgICAgICAmJiBhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKGNsaXBQYXRoLCBvLmNsaXBQYXRoKQorICAgICAgICAmJiB0ZXh0RGVjb3Jh
dGlvbkNvbG9yID09IG8udGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlu
a1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IK
KyAgICAgICAgJiYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPT0gby52aXNpdGVkTGlua0Jh
Y2tncm91bmRDb2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua091dGxpbmVDb2xvciA9PSBvLnZp
c2l0ZWRMaW5rT3V0bGluZUNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yCisgICAg
ICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlclRv
cENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby52aXNp
dGVkTGlua0JvcmRlckJvdHRvbUNvbG9yCisgICAgICAgICYmIG9yZGVyID09IG8ub3JkZXIKKyAg
ICAgICAgJiYgZmxvd1RocmVhZCA9PSBvLmZsb3dUaHJlYWQKKyAgICAgICAgJiYgYWxpZ25Db250
ZW50ID09IG8uYWxpZ25Db250ZW50CisgICAgICAgICYmIGFsaWduSXRlbXMgPT0gby5hbGlnbkl0
ZW1zCisgICAgICAgICYmIGFsaWduU2VsZiA9PSBvLmFsaWduU2VsZgorICAgICAgICAmJiBqdXN0
aWZ5Q29udGVudCA9PSBvLmp1c3RpZnlDb250ZW50CisgICAgICAgICYmIGp1c3RpZnlJdGVtcyA9
PSBvLmp1c3RpZnlJdGVtcworICAgICAgICAmJiBqdXN0aWZ5U2VsZiA9PSBvLmp1c3RpZnlTZWxm
CisgICAgICAgICYmIHJlZ2lvblRocmVhZCA9PSBvLnJlZ2lvblRocmVhZAorICAgICAgICAmJiBy
ZWdpb25GcmFnbWVudCA9PSBvLnJlZ2lvbkZyYWdtZW50CisgICAgICAgICYmIHBhZ2VTaXplVHlw
ZSA9PSBvLnBhZ2VTaXplVHlwZQorICAgICAgICAmJiB0cmFuc2Zvcm1TdHlsZTNEID09IG8udHJh
bnNmb3JtU3R5bGUzRAorICAgICAgICAmJiBiYWNrZmFjZVZpc2liaWxpdHkgPT0gby5iYWNrZmFj
ZVZpc2liaWxpdHkKICAgICAgICAgJiYgdXNlckRyYWcgPT0gby51c2VyRHJhZwogICAgICAgICAm
JiB0ZXh0T3ZlcmZsb3cgPT0gby50ZXh0T3ZlcmZsb3cKICAgICAgICAgJiYgbWFyZ2luQmVmb3Jl
Q29sbGFwc2UgPT0gby5tYXJnaW5CZWZvcmVDb2xsYXBzZQogICAgICAgICAmJiBtYXJnaW5BZnRl
ckNvbGxhcHNlID09IG8ubWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAmJiBtX2FwcGVhcmFu
Y2UgPT0gby5tX2FwcGVhcmFuY2UKLSAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRl
ckZpdAotICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQotICAgICAg
ICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUKKyAg
ICAgICAgJiYgYXBwZWFyYW5jZSA9PSBvLmFwcGVhcmFuY2UKKyAgICAgICAgJiYgYm9yZGVyRml0
ID09IG8uYm9yZGVyRml0CisgICAgICAgICYmIHRleHRDb21iaW5lID09IG8udGV4dENvbWJpbmUK
KyAgICAgICAgJiYgdGV4dERlY29yYXRpb25TdHlsZSA9PSBvLnRleHREZWNvcmF0aW9uU3R5bGUK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICAmJiBtX3RvdWNoQWN0aW9uID09IG8u
bV90b3VjaEFjdGlvbgorICAgICAgICAmJiB0b3VjaEFjdGlvbiA9PSBvLnRvdWNoQWN0aW9uCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICAgICAmJiBtX2VmZmVjdGl2
ZUJsZW5kTW9kZSA9PSBvLm1fZWZmZWN0aXZlQmxlbmRNb2RlCi0gICAgICAgICYmIG1faXNvbGF0
aW9uID09IG8ubV9pc29sYXRpb24KKyAgICAgICAgJiYgZWZmZWN0aXZlQmxlbmRNb2RlID09IG8u
ZWZmZWN0aXZlQmxlbmRNb2RlCisgICAgICAgICYmIGlzb2xhdGlvbiA9PSBvLmlzb2xhdGlvbgog
I2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAgICAgJiYgbV9hcHBsZVBheUJ1dHRv
blN0eWxlID09IG8ubV9hcHBsZVBheUJ1dHRvblN0eWxlCi0gICAgICAgICYmIG1fYXBwbGVQYXlC
dXR0b25UeXBlID09IG8ubV9hcHBsZVBheUJ1dHRvblR5cGUKKyAgICAgICAgJiYgYXBwbGVQYXlC
dXR0b25TdHlsZSA9PSBvLmFwcGxlUGF5QnV0dG9uU3R5bGUKKyAgICAgICAgJiYgYXBwbGVQYXlC
dXR0b25UeXBlID09IG8uYXBwbGVQYXlCdXR0b25UeXBlCiAjZW5kaWYKLSAgICAgICAgJiYgbV9h
c3BlY3RSYXRpb1R5cGUgPT0gby5tX2FzcGVjdFJhdGlvVHlwZQotICAgICAgICAmJiBtX29iamVj
dEZpdCA9PSBvLm1fb2JqZWN0Rml0Ci0gICAgICAgICYmIG1fYnJlYWtBZnRlciA9PSBvLm1fYnJl
YWtBZnRlcgotICAgICAgICAmJiBtX2JyZWFrQmVmb3JlID09IG8ubV9icmVha0JlZm9yZQotICAg
ICAgICAmJiBtX2JyZWFrSW5zaWRlID09IG8ubV9icmVha0luc2lkZQotICAgICAgICAmJiBtX3Jl
c2l6ZSA9PSBvLm1fcmVzaXplCi0gICAgICAgICYmIG1faGFzQXR0ckNvbnRlbnQgPT0gby5tX2hh
c0F0dHJDb250ZW50Ci0gICAgICAgICYmIG1faXNQbGFjZWhvbGRlclN0eWxlID09IG8ubV9pc1Bs
YWNlaG9sZGVyU3R5bGU7CisgICAgICAgICYmIGFzcGVjdFJhdGlvVHlwZSA9PSBvLmFzcGVjdFJh
dGlvVHlwZQorICAgICAgICAmJiBvYmplY3RGaXQgPT0gby5vYmplY3RGaXQKKyAgICAgICAgJiYg
YnJlYWtBZnRlciA9PSBvLmJyZWFrQWZ0ZXIKKyAgICAgICAgJiYgYnJlYWtCZWZvcmUgPT0gby5i
cmVha0JlZm9yZQorICAgICAgICAmJiBicmVha0luc2lkZSA9PSBvLmJyZWFrSW5zaWRlCisgICAg
ICAgICYmIHJlc2l6ZSA9PSBvLnJlc2l6ZQorICAgICAgICAmJiBoYXNBdHRyQ29udGVudCA9PSBv
Lmhhc0F0dHJDb250ZW50CisgICAgICAgICYmIGlzUGxhY2Vob2xkZXJTdHlsZSA9PSBvLmlzUGxh
Y2Vob2xkZXJTdHlsZTsKIH0KIAotYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250
ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29u
c3QKK2Jvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50
KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdAogewotICAgIENv
bnRlbnREYXRhKiBhID0gbV9jb250ZW50LmdldCgpOwotICAgIENvbnRlbnREYXRhKiBiID0gby5t
X2NvbnRlbnQuZ2V0KCk7Ci0KKyAgICBhdXRvKiBhID0gY29udGVudC5nZXQoKTsKKyAgICBhdXRv
KiBiID0gb3RoZXIuY29udGVudC5nZXQoKTsKICAgICB3aGlsZSAoYSAmJiBiICYmICphID09ICpi
KSB7CiAgICAgICAgIGEgPSBhLT5uZXh0KCk7CiAgICAgICAgIGIgPSBiLT5uZXh0KCk7CiAgICAg
fQotCiAgICAgcmV0dXJuICFhICYmICFiOwogfQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6Omhhc0ZpbHRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpbHRlci5nZXQoKSAm
JiAhbV9maWx0ZXItPm1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFmaWx0ZXIt
Pm9wZXJhdGlvbnMuaXNFbXB0eSgpOwogfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikK
KwogYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpoYXNCYWNrZHJvcEZpbHRlcnMoKSBj
b25zdAogewotICAgIHJldHVybiBtX2JhY2tkcm9wRmlsdGVyLmdldCgpICYmICFtX2JhY2tkcm9w
RmlsdGVyLT5tX29wZXJhdGlvbnMuaXNFbXB0eSgpOworICAgIHJldHVybiAhYmFja2Ryb3BGaWx0
ZXItPm9wZXJhdGlvbnMuaXNFbXB0eSgpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggMDRjMDliYWRmZmY4OTlmMzc0YTM0ODY1
ZWFlY2FmNTkzYWI1OWUwZS4uYmY5YmEyMDc0NTBjNWRhYmM0OTY3NzdlYjFkMzZmNTdiOWI5ODZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwu
Y29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ0LDM0ICs0NCwyNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBbmltYXRpb25MaXN0OworY2xhc3MgQ29udGVudERhdGE7CiBjbGFzcyBTaGFk
b3dEYXRhOwogY2xhc3MgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOwogY2xhc3MgU3R5
bGVGaWx0ZXJEYXRhOwogY2xhc3MgU3R5bGVGbGV4aWJsZUJveERhdGE7Ci0jaWYgRU5BQkxFKENT
U19HUklEX0xBWU9VVCkKIGNsYXNzIFN0eWxlR3JpZERhdGE7CiBjbGFzcyBTdHlsZUdyaWRJdGVt
RGF0YTsKLSNlbmRpZgogY2xhc3MgU3R5bGVNYXJxdWVlRGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlD
b2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0aW9uOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNs
YXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xh
c3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci0jZW5k
aWYKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7CitjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7
CiAKLWNsYXNzIENvbnRlbnREYXRhOwogc3RydWN0IExlbmd0aFNpemU7Ci0KLSNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCiBzdHJ1Y3QgU3R5bGVEYXNoYm9hcmRSZWdpb247Ci0jZW5kaWYK
IAogLy8gUGFnZSBzaXplIHR5cGUuCi0vLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjptX3Bh
Z2VTaXplIGlzIG1lYW5pbmdmdWwgb25seSB3aGVuIAotLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6bV9wYWdlU2l6ZVR5cGUgaXMgUEFHRV9TSVpFX1JFU09MVkVELgorLy8gU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6cGFnZVNpemUgaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4KKy8vIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnBhZ2VTaXplVHlwZSBpcyBQQUdFX1NJWkVfUkVTT0xW
RUQuCiBlbnVtIFBhZ2VTaXplVHlwZSB7CiAgICAgUEFHRV9TSVpFX0FVVE8sIC8vIHNpemU6IGF1
dG8KICAgICBQQUdFX1NJWkVfQVVUT19MQU5EU0NBUEUsIC8vIHNpemU6IGxhbmRzY2FwZQpAQCAt
ODksMTQ0ICs4MiwxNDcgQEAgcHVibGljOgogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KCk7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgY29udGVudERhdGFFcXVp
dmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKIAogICAgIGJv
b2wgaGFzRmlsdGVycygpIGNvbnN0OworCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAg
ICBib29sIGhhc0JhY2tkcm9wRmlsdGVycygpIGNvbnN0OwogI2VuZGlmCi0gICAgYm9vbCBoYXNP
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5IDwgMTsgfQogCi0gICAgYm9vbCBoYXNB
bmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucyB8fCBt
X3RyYW5zaXRpb25zOyB9CisgICAgYm9vbCBoYXNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gb3Bh
Y2l0eSA8IDE7IH0KIAotICAgIGZsb2F0IG1fb3BhY2l0eTsKKyAgICBib29sIGhhc0FuaW1hdGlv
bnNPclRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9ucyB8fCB0cmFuc2l0aW9u
czsgfQogCi0gICAgZmxvYXQgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOwotICAgIGZsb2F0IG1f
YXNwZWN0UmF0aW9OdW1lcmF0b3I7CisgICAgZmxvYXQgb3BhY2l0eTsKIAotICAgIGZsb2F0IG1f
cGVyc3BlY3RpdmU7Ci0gICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5YOwotICAgIExlbmd0
aCBtX3BlcnNwZWN0aXZlT3JpZ2luWTsKKyAgICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9y
OworICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yOworCisgICAgZmxvYXQgcGVyc3BlY3Rp
dmU7CisgICAgTGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWDsKKyAgICBMZW5ndGggcGVyc3BlY3Rp
dmVPcmlnaW5ZOwogCiAgICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wOyAvLyBBbiBBcHBsZSBl
eHRlbnNpb24uCiAgICAgCi0gICAgSW50U2l6ZSBtX2luaXRpYWxMZXR0ZXI7CisgICAgSW50U2l6
ZSBpbml0aWFsTGV0dGVyOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIFZl
Y3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gbV9kYXNoYm9hcmRSZWdpb25zOworICAgIFZlY3Rv
cjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZGFzaGJvYXJkUmVnaW9uczsKICNlbmRpZgogCi0gICAg
RGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IG1fZGVwcmVjYXRlZEZsZXhp
YmxlQm94OyAvLyBGbGV4aWJsZSBib3ggcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVGbGV4
aWJsZUJveERhdGE+IG1fZmxleGlibGVCb3g7Ci0gICAgRGF0YVJlZjxTdHlsZU1hcnF1ZWVEYXRh
PiBtX21hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVNdWx0
aUNvbERhdGE+IG1fbXVsdGlDb2w7IC8vICBDU1MzIG11bHRpY29sIHByb3BlcnRpZXMKLSAgICBE
YXRhUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gbV90cmFuc2Zvcm07IC8vIFRyYW5zZm9ybSBwcm9w
ZXJ0aWVzIChyb3RhdGUsIHNjYWxlLCBza2V3LCBldGMuKQotICAgIERhdGFSZWY8U3R5bGVGaWx0
ZXJEYXRhPiBtX2ZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIs
IGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDsgLy8gRmxleGlibGUgYm94IHByb3BlcnRpZXMKKyAgICBEYXRhUmVm
PFN0eWxlRmxleGlibGVCb3hEYXRhPiBmbGV4aWJsZUJveDsKKyAgICBEYXRhUmVmPFN0eWxlTWFy
cXVlZURhdGE+IG1hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcworICAgIERhdGFSZWY8U3R5
bGVNdWx0aUNvbERhdGE+IG11bHRpQ29sOyAvLyAgQ1NTMyBtdWx0aWNvbCBwcm9wZXJ0aWVzCisg
ICAgRGF0YVJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IHRyYW5zZm9ybTsgLy8gVHJhbnNmb3JtIHBy
b3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNrZXcsIGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZUZp
bHRlckRhdGE+IGZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIs
IGV0Yy4pCisKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIERhdGFSZWY8U3R5bGVG
aWx0ZXJEYXRhPiBtX2JhY2tkcm9wRmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAodXJsLCBz
ZXBpYSwgYmx1ciwgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gYmFja2Ryb3BG
aWx0ZXI7IC8vIEZpbHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIERhdGFSZWY8U3R5bGVHcmlk
RGF0YT4gbV9ncmlkOwotICAgIERhdGFSZWY8U3R5bGVHcmlkSXRlbURhdGE+IG1fZ3JpZEl0ZW07
CisgICAgRGF0YVJlZjxTdHlsZUdyaWREYXRhPiBncmlkOworICAgIERhdGFSZWY8U3R5bGVHcmlk
SXRlbURhdGE+IGdyaWRJdGVtOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwUG9ydD4gbV9zY3JvbGxTbmFwUG9ydDsKLSAg
ICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IG1fc2Nyb2xsU25hcEFyZWE7CisgICAgRGF0
YVJlZjxTdHlsZVNjcm9sbFNuYXBQb3J0PiBzY3JvbGxTbmFwUG9ydDsKKyAgICBEYXRhUmVmPFN0
eWxlU2Nyb2xsU25hcEFyZWE+IHNjcm9sbFNuYXBBcmVhOwogI2VuZGlmCiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudERhdGE+IG1fY29udGVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291
bnRlckRpcmVjdGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKLSAgICBTdHJpbmcgbV9hbHRU
ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY291bnRlckRpcmVjdGl2ZXM7CisgICAg
U3RyaW5nIGFsdFRleHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9ib3hT
aGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaGFkb3dEYXRhPiBib3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgog
Ci0gICAgUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiBtX3dpbGxDaGFuZ2U7IC8vIE51bGwgaW5kaWNh
dGVzICdhdXRvJy4KKyAgICBSZWZQdHI8V2lsbENoYW5nZURhdGE+IHdpbGxDaGFuZ2U7IC8vIE51
bGwgaW5kaWNhdGVzICdhdXRvJy4KICAgICAKLSAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBt
X2JveFJlZmxlY3Q7CisgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gYm94UmVmbGVjdDsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25MaXN0PiBtX2FuaW1hdGlvbnM7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlvbnM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEFuaW1hdGlvbkxpc3Q+IGFuaW1hdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvbkxpc3Q+IHRyYW5zaXRpb25zOwogCi0gICAgRmlsbExheWVyIG1fbWFzazsKLSAgICBO
aW5lUGllY2VJbWFnZSBtX21hc2tCb3hJbWFnZTsKKyAgICBGaWxsTGF5ZXIgbWFzazsKKyAgICBO
aW5lUGllY2VJbWFnZSBtYXNrQm94SW1hZ2U7CiAKLSAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7
Ci0gICAgTGVuZ3RoUG9pbnQgbV9vYmplY3RQb3NpdGlvbjsKKyAgICBMZW5ndGhTaXplIHBhZ2VT
aXplOworICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uOwogCi0gICAgUmVmUHRyPFNoYXBl
VmFsdWU+IG1fc2hhcGVPdXRzaWRlOwotICAgIExlbmd0aCBtX3NoYXBlTWFyZ2luOwotICAgIGZs
b2F0IG1fc2hhcGVJbWFnZVRocmVzaG9sZDsKKyAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gc2hhcGVP
dXRzaWRlOworICAgIExlbmd0aCBzaGFwZU1hcmdpbjsKKyAgICBmbG9hdCBzaGFwZUltYWdlVGhy
ZXNob2xkOwogCi0gICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRoOworICAg
IFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY2xpcFBhdGg7CiAKLSAgICBDb2xvciBtX3RleHRE
ZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29s
b3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBt
X3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7Ci0gICAg
Q29sb3IgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBDb2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9yOworICAg
IENvbG9yIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsKKyAgICBDb2xvciB2aXNpdGVk
TGlua0JhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xvcjsK
KyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVk
TGlua0JvcmRlclJpZ2h0Q29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
cjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOwogCi0gICAgaW50IG1f
b3JkZXI7CisgICAgaW50IG9yZGVyOwogCi0gICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsK
LSAgICBBdG9taWNTdHJpbmcgbV9yZWdpb25UaHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIGZsb3dU
aHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIHJlZ2lvblRocmVhZDsKIAotICAgIFN0eWxlQ29udGVu
dEFsaWdubWVudERhdGEgbV9hbGlnbkNvbnRlbnQ7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBtX2FsaWduSXRlbXM7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduU2VsZjsK
LSAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIG1fanVzdGlmeUNvbnRlbnQ7Ci0gICAgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlJdGVtczsKLSAgICBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIG1fanVzdGlmeVNlbGY7CisgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGln
bkNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnbkl0ZW1zOworICAgIFN0
eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25TZWxmOworICAgIFN0eWxlQ29udGVudEFsaWdubWVu
dERhdGEganVzdGlmeUNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5
SXRlbXM7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5U2VsZjsKIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdW5zaWduZWQgbV90b3VjaEFjdGlvbiA6IDE7IC8vIFRv
dWNoQWN0aW9uCisgICAgdW5zaWduZWQgdG91Y2hBY3Rpb24gOiAxOyAvLyBUb3VjaEFjdGlvbgog
I2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX3JlZ2lvbkZyYWdtZW50IDogMTsgLy8gUmVnaW9uRnJh
Z21lbnQKKyAgICB1bnNpZ25lZCByZWdpb25GcmFnbWVudCA6IDE7IC8vIFJlZ2lvbkZyYWdtZW50
CiAKLSAgICB1bnNpZ25lZCBtX3BhZ2VTaXplVHlwZSA6IDI7IC8vIFBhZ2VTaXplVHlwZQotICAg
IHVuc2lnbmVkIG1fdHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECi0g
ICAgdW5zaWduZWQgbV9iYWNrZmFjZVZpc2liaWxpdHkgOiAxOyAvLyBFQmFja2ZhY2VWaXNpYmls
aXR5CisgICAgdW5zaWduZWQgcGFnZVNpemVUeXBlIDogMjsgLy8gUGFnZVNpemVUeXBlCisgICAg
dW5zaWduZWQgdHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECisgICAg
dW5zaWduZWQgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsgLy8gRUJhY2tmYWNlVmlzaWJpbGl0eQog
CiAKICAgICB1bnNpZ25lZCB1c2VyRHJhZyA6IDI7IC8vIEVVc2VyRHJhZwogICAgIHVuc2lnbmVk
IHRleHRPdmVyZmxvdyA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3BpbGwgb3V0
IHNob3VsZCBiZSB0cnVuY2F0ZWQgd2l0aCAiLi4uIgogICAgIHVuc2lnbmVkIG1hcmdpbkJlZm9y
ZUNvbGxhcHNlIDogMjsgLy8gRU1hcmdpbkNvbGxhcHNlCiAgICAgdW5zaWduZWQgbWFyZ2luQWZ0
ZXJDb2xsYXBzZSA6IDI7IC8vIEVNYXJnaW5Db2xsYXBzZQotICAgIHVuc2lnbmVkIG1fYXBwZWFy
YW5jZSA6IDY7IC8vIEVBcHBlYXJhbmNlCi0gICAgdW5zaWduZWQgbV9ib3JkZXJGaXQgOiAxOyAv
LyBFQm9yZGVyRml0Ci0gICAgdW5zaWduZWQgbV90ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4
dC1jb21iaW5lIHByb3BlcnRpZXMKKyAgICB1bnNpZ25lZCBhcHBlYXJhbmNlIDogNjsgLy8gRUFw
cGVhcmFuY2UKKyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0CisgICAg
dW5zaWduZWQgdGV4dENvbWJpbmUgOiAxOyAvLyBDU1MzIHRleHQtY29tYmluZSBwcm9wZXJ0aWVz
CiAKLSAgICB1bnNpZ25lZCBtX3RleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0RGVjb3Jh
dGlvblN0eWxlCisgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25TdHlsZSA6IDM7IC8vIFRleHRE
ZWNvcmF0aW9uU3R5bGUKIAotICAgIHVuc2lnbmVkIG1fYXNwZWN0UmF0aW9UeXBlIDogMjsKKyAg
ICB1bnNpZ25lZCBhc3BlY3RSYXRpb1R5cGUgOiAyOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKLSAgICB1bnNpZ25lZCBtX2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9k
ZQotICAgIHVuc2lnbmVkIG1faXNvbGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCisgICAgdW5zaWdu
ZWQgZWZmZWN0aXZlQmxlbmRNb2RlOiA1OyAvLyBFQmxlbmRNb2RlCisgICAgdW5zaWduZWQgaXNv
bGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
Ci0gICAgdW5zaWduZWQgbV9hcHBsZVBheUJ1dHRvblN0eWxlIDogMjsKLSAgICB1bnNpZ25lZCBt
X2FwcGxlUGF5QnV0dG9uVHlwZSA6IDM7CisgICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25TdHls
ZSA6IDI7CisgICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25UeXBlIDogMzsKICNlbmRpZgogCi0g
ICAgdW5zaWduZWQgbV9vYmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQKKyAgICB1bnNpZ25lZCBv
YmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQKICAgICAKLSAgICB1bnNpZ25lZCBtX2JyZWFrQmVm
b3JlIDogNDsgLy8gQnJlYWtCZXR3ZWVuCi0gICAgdW5zaWduZWQgbV9icmVha0FmdGVyIDogNDsK
LSAgICB1bnNpZ25lZCBtX2JyZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKLSAgICB1bnNp
Z25lZCBtX3Jlc2l6ZSA6IDI7IC8vIEVSZXNpemUKKyAgICB1bnNpZ25lZCBicmVha0JlZm9yZSA6
IDQ7IC8vIEJyZWFrQmV0d2VlbgorICAgIHVuc2lnbmVkIGJyZWFrQWZ0ZXIgOiA0OworICAgIHVu
c2lnbmVkIGJyZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKKyAgICB1bnNpZ25lZCByZXNp
emUgOiAyOyAvLyBFUmVzaXplCiAKLSAgICB1bnNpZ25lZCBtX2hhc0F0dHJDb250ZW50IDogMTsK
KyAgICB1bnNpZ25lZCBoYXNBdHRyQ29udGVudCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX2lzUGxh
Y2Vob2xkZXJTdHlsZSA6IDE7CisgICAgdW5zaWduZWQgaXNQbGFjZWhvbGRlclN0eWxlIDogMTsK
IAogcHJpdmF0ZToKICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCmlu
ZGV4IGVhZjMxMGI2M2Q2MWFkMWNjMTA0OGIwYzY4MmFjZmVkNTJkOWFmYTYuLmVhZjdhNmE0Mzdl
OTM2MTE2ODNiZTZhMWE5ZTQzYmEwMDgwYTM5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCkBAIC0yNywxOSArMjcs
MTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRy
YW5zZm9ybURhdGEoKQotICAgIDogbV9vcGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0aWFsVHJh
bnNmb3JtKCkpCi0gICAgLCBtX3goUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5Y
KCkpCi0gICAgLCBtX3koUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkpCi0g
ICAgLCBtX3ooUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aKCkpCisgICAgOiBv
cGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtKCkpCisgICAgLCB4KFJlbmRl
clN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpKQorICAgICwgeShSZW5kZXJTdHlsZTo6
aW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSkKKyAgICAsIHooUmVuZGVyU3R5bGU6OmluaXRpYWxU
cmFuc2Zvcm1PcmlnaW5aKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0
eWxlVHJhbnNmb3JtRGF0YShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pCitpbmxpbmUgU3R5
bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoY29uc3QgU3R5bGVUcmFuc2Zvcm1E
YXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVUcmFuc2Zvcm1EYXRhPigpCi0gICAg
LCBtX29wZXJhdGlvbnMoby5tX29wZXJhdGlvbnMpCi0gICAgLCBtX3goby5tX3gpCi0gICAgLCBt
X3koby5tX3kpCi0gICAgLCBtX3ooby5tX3opCisgICAgLCBvcGVyYXRpb25zKG90aGVyLm9wZXJh
dGlvbnMpCisgICAgLCB4KG90aGVyLngpCisgICAgLCB5KG90aGVyLnkpCisgICAgLCB6KG90aGVy
LnopCiB7CiB9CiAKQEAgLTQ4LDkgKzQ4LDkgQEAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gU3R5
bGVUcmFuc2Zvcm1EYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZVRyYW5zZm9ybURhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZVRyYW5zZm9ybURhdGE6
Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorYm9vbCBTdHls
ZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9PSBvLm1feSAmJiBt
X3ogPT0gby5tX3ogJiYgbV9vcGVyYXRpb25zID09IG8ubV9vcGVyYXRpb25zOworICAgIHJldHVy
biB4ID09IG90aGVyLnggJiYgeSA9PSBvdGhlci55ICYmIHogPT0gb3RoZXIueiAmJiBvcGVyYXRp
b25zID09IG90aGVyLm9wZXJhdGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEu
aAppbmRleCAyZWEwNzk1YjZhZWRjMTUwMzRmN2JmMjhmM2Q4ZmEzNjIyZWVkOGNhLi42YjQ2YTM1
NmI0MWZjMWI2MTIzZTgyYzQ3ZDIxMDYwM2FhYWM5MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCkBAIC0zNiwxOCArMzYs
MTggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSk7IH0KICAgICBSZWY8
U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVRyYW5zZm9ybURhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAg
fQogICAgIAotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRp
b25zLnNpemUoKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gb3Bl
cmF0aW9ucy5zaXplKCk7IH0KIAotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgbV9vcGVyYXRpb25z
OwotICAgIExlbmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1feTsKLSAgICBmbG9hdCBtX3o7CisgICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIExlbmd0aCB4OworICAgIExlbmd0
aCB5OworICAgIGZsb2F0IHo7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVUcmFuc2Zvcm1EYXRhKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEu
Y3BwCmluZGV4IDI1NmMxNTQ5NWZhNmUwMGM3YWNjMGIxZGRiN2I3MGZmYzgyMjBiMmUuLjEwZmQ1
ODg4ZjdmN2I2Nzg3NTQ0ZGQxMWViOGY3ZWVhZGIwMTgwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCkBAIC0yOSw3ICsyOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRh
KCkKICAgICA6IGhhc0NsaXAoZmFsc2UpCiAgICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkpCi0gICAgLCBtX3pvb20oUmVuZGVyU3R5bGU6Omlu
aXRpYWxab29tKCkpCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewog
fQogCkBAIC0zNywxMiArMzcsMTIgQEAgU3R5bGVWaXN1YWxEYXRhOjp+U3R5bGVWaXN1YWxEYXRh
KCkKIHsKIH0KIAotaW5saW5lIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0
IFN0eWxlVmlzdWFsRGF0YSYgbykKK2lubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFs
RGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHls
ZVZpc3VhbERhdGE+KCkKLSAgICAsIGNsaXAoby5jbGlwKQotICAgICwgaGFzQ2xpcChvLmhhc0Ns
aXApCi0gICAgLCB0ZXh0RGVjb3JhdGlvbihvLnRleHREZWNvcmF0aW9uKQotICAgICwgbV96b29t
KFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgY2xpcChvdGhlci5jbGlwKQorICAg
ICwgaGFzQ2xpcChvdGhlci5oYXNDbGlwKQorICAgICwgdGV4dERlY29yYXRpb24ob3RoZXIudGV4
dERlY29yYXRpb24pCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRh
LmgKaW5kZXggYTZmNjhlZmQwNTBhN2RhMDhlNjU1NzAxNjU1MDAwYWEwOGFkZmI0Mi4uZDQxOGFj
YjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtMzcsMTkgKzM3LDE5IEBA
IHB1YmxpYzoKICAgICBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0
eWxlVmlzdWFsRGF0YSgpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVmlzdWFs
RGF0YSYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVWaXN1YWxEYXRh
JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjbGlwID09IG8uY2xpcAotICAg
ICAgICAgICAgJiYgaGFzQ2xpcCA9PSBvLmhhc0NsaXAKLSAgICAgICAgICAgICYmIHRleHREZWNv
cmF0aW9uID09IG8udGV4dERlY29yYXRpb24KLSAgICAgICAgICAgICYmIG1fem9vbSA9PSBvLm1f
em9vbTsKKyAgICAgICAgcmV0dXJuIGNsaXAgPT0gb3RoZXIuY2xpcAorICAgICAgICAgICAgJiYg
aGFzQ2xpcCA9PSBvdGhlci5oYXNDbGlwCisgICAgICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbiA9
PSBvdGhlci50ZXh0RGVjb3JhdGlvbgorICAgICAgICAgICAgJiYgem9vbSA9PSBvdGhlci56b29t
OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsKICAgICBib29sIGhhc0NsaXAgOiAxOwogICAgIHVu
c2lnbmVkIHRleHREZWNvcmF0aW9uIDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29y
YXRpb25zIGRlZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KLSAgICBmbG9hdCBtX3pvb207
CisgICAgZmxvYXQgem9vbTsKIAogcHJpdmF0ZToKICAgICBTdHlsZVZpc3VhbERhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCmluZGV4IGY3
NDkzMzkwMzQyMDk1Y2UzMTc0MWNjZDJjMDAzYTNmMmI2NDcyNzIuLjEwMzE5ZjgyM2VkMDMxNGIy
ZWIzODI1ODkwYmVjMzU3MDcwMzE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVQZW5kaW5nUmVzb3VyY2VzLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBsb2Fk
UGVuZGluZ0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3R5bGVJbWFnZSogc3R5bGVJ
bWFnZSwgYwogCiB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKFJlbmRlclN0eWxlJiBzdHlsZSwg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIGZvciAo
YXV0byogYmFja2dyb3VuZExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiYWNrZ3Jv
dW5kTGF5ZXI7IGJhY2tncm91bmRMYXllciA9IGJhY2tncm91bmRMYXllci0+bmV4dCgpKQorICAg
IGZvciAoYXV0byogYmFja2dyb3VuZExheWVyID0gJnN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsg
YmFja2dyb3VuZExheWVyOyBiYWNrZ3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQo
KSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgYmFja2dyb3VuZExheWVyLT5p
bWFnZSgpLCBlbGVtZW50KTsKIAogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5j
b250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4
dCgpKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoUmVuZGVy
U3R5bGUmIHN0eWxlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAgICAgaWYg
KGF1dG8qIHJlZmxlY3Rpb24gPSBzdHlsZS5ib3hSZWZsZWN0KCkpCiAgICAgICAgIGxvYWRQZW5k
aW5nSW1hZ2UoZG9jdW1lbnQsIHJlZmxlY3Rpb24tPm1hc2soKS5pbWFnZSgpLCBlbGVtZW50KTsK
IAotICAgIGZvciAoYXV0byogbWFza0xheWVyID0gc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5
ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKQorICAgIGZvciAoYXV0byogbWFza0xh
eWVyID0gJnN0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgbWFza0xheWVy
LT5pbWFnZSgpLCBlbGVtZW50KTsKIAogICAgIGlmIChzdHlsZS5zaGFwZU91dHNpZGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggZmUyOGZkNGVhNWU1MDdlYjg2YjgzZTcxYWQ2ODA5ZjMwNjY5Mzg3
NC4uNGU5YjJlMjcyZDJkMzlkYWE4MGRhMGNjYTQzZGQyZmEwOTg5YzEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTE4NDksNyArMTg0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAgICAgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBG
cmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IEZyYW1l
OjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IDBjNWZkYTAxZjA4YTkwNWQxNmM5M2M0YjczODJiNjQyZDgyZWY1YWEuLmM5MTE1NTIwZjJjODk1
MjM5ZTQxNDJjYTg2N2E3ZjZkNGY2MDYyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTM0NzAsOCArMzQ3MCw4IEBAIC0gKHZvaWQpX2FkZFNjcm9sbGVyRGFzaGJvYXJk
UmVnaW9uc0ZvckZyYW1lVmlldzooRnJhbWVWaWV3KilmcmFtZVZpZXcgZGFzaGJvYXJkCiAgICAg
TlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW2tpdCgmZnJhbWVWaWV3LT5mcmFtZSgpKSBmcmFtZVZp
ZXddIGRvY3VtZW50Vmlld107CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdpZGdldDogZnJhbWVW
aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7
Ci0gICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVW
aWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdpb25zOnJl
Z2lvbnNdOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQpKSB7CisgICAgICAgICAg
ICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OiZkb3duY2Fz
dDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25zXTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDlhODczNThiMDg1NDM1
MThkODA0NjYzMWI1MTkzMDNlMGEzMWM0YTcuLmRmMWE1N2JhNDk0Y2IwNzIzMjFhNjcyYjk5MDJj
MDgzYmE4ZTNhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFRleHR1CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYW5pbWF0aW9uT2Jq
ZWN0LT5maWxsTW9kZSgpKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+ZHVyYXRp
b24oKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+aXRlcmF0aW9uQ291bnQoKTsK
LSAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCBhbmltYXRpb25PYmplY3QtPnRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCkpOworICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIGFu
aW1hdGlvbk9iamVjdC0+dGltaW5nRnVuY3Rpb24oKSk7CiAKICAgICBjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYga2V5ZnJhbWVzID0gYW5pbWF0aW9uLmtleWZyYW1lcygpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVydHkoKSk7CkBAIC01MjcsNyArNTI3LDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgVGV4dHVyZU1hcHAKICAgICBhbmltYXRpb25PYmplY3QtPnNldER1cmF0aW9uKGR1
cmF0aW9uKTsKICAgICBhbmltYXRpb25PYmplY3QtPnNldEl0ZXJhdGlvbkNvdW50KGl0ZXJhdGlv
bkNvdW50KTsKICAgICBpZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGFuaW1hdGlvbk9iamVj
dC0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhbmltYXRpb25P
YmplY3QtPnNldFRpbWluZ0Z1bmN0aW9uKFdURk1vdmUodGltaW5nRnVuY3Rpb24pKTsKIAogICAg
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShwcm9wZXJ0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggYmFlOTZiNmEyY2RkZjli
YjJjODA5MTFmNzZhNmY0NDhhY2RkZjI0Yi4uODUwOWFlNjUwMjRkNGVlNTkyZWQxMjVhMTIxMjE0
MGYwN2ZjZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtNjY2LDcgKzY2Niw3IEBA
IFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQogICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQu
cHRyKCkpOworICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRn
ZXQpOwogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298554</attachid>
            <date>2017-01-10 22:05:39 -0800</date>
            <delta_ts>2017-01-11 00:06:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170110220401.patch</filename>
            <type>text/plain</type>
            <size>952491</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li4yMDVmYjdiNDRlZjQyOTFj
YTZlMDQ2YzhlZTI0MTc4MTQ1YzYyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUg
cGlwZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDI2NTZjZGU4Y2M0NmYxMGMwMzgyZDMxMTI1YWI1NTY3NzkwMWRjZi4u
MzQwOWMyY2VjZDkxOTIwNWQ5ZjNmYTg2M2M2NTY2ZjQ4OTljYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2Vk
IHRoZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5v
bi1jb25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29u
c3QgVD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGlu
dGVudGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZl
cmVuY2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2Ug
UmVmUHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAg
aXMgdG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nh
c3QganVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9z
ZSBhbmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0w
NiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbR1RLXSBTaG91bGQgc3VwcG9ydCBrZXkgYW5kIGNvZGUgcHJvcGVydGll
cyBvbiBrZXlib2FyZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWM4MjJiNTkzMzViNWIzYzJiODFi
MzgyMTc2MTA4YjZhNTY0OTc2Li5lYzAwZDZmYTk5OGQ1ZjU3NjcyOGJlMDlhN2U5NWIyNzFlYjg0
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIyIEBACisyMDE3LTAxLTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1v
cmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg6IFR3ZWFrcywgbXNhZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0xlbmd0aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
IFVwZGF0ZWQgbWFueSBwcm9wZXJ0aWVzCisgICAgICAgIHNpbmNlIHRoZSBsYXllciBwcm9wZXJ0
aWVzIG5vdyByZXR1cm4gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycy4KKworICAgICAg
ICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjppbWFnZSk6IFJlbW92
ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6
Oml0ZW0pOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdCk6IFVwZGF0ZWQgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBSZW1vdmVk
IG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBVcGRhdGVk
IGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlOjp2YXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemVGb3JMZW5ndGhTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFNpemVGb3JMZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZCBz
aXplRm9yTGVuZ3RoU2l6ZS4KKworICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRPcmRlcik6IEN1dCBkb3duIG9u
IGNyZWF0aW9uIG9mIHVudXNlZCBvYmplY3RzLgorICAgICAgICBXZSBub3cgY3JlYXRlIG9ubHkg
d2hhdCB3ZSBhY3R1YWxseSB1c2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMpOiBVcGRhdGVkIGZvcgorICAgICAgICBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOiBQYXNz
IHJlZmVyZW5jZXMKKyAgICAgICAgd2hlbiBjcmVhdGluZyBTaGFwZVZhbHVlLgorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZElu
aGVyaXRlZFZhbHVlKTogQWRkZWQuIFRoaXMgc2V0IG9mIG92ZXJsb2FkZWQKKyAgICAgICAgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byB1c2UgbW92ZSBzZW1hbnRpY3MgZm9yIHNvbWUgdHlwZXMsIGJ1
dCBjb3B5CisgICAgICAgIHRoZW0gd2hlbiBpbmhlcml0aW5nLiBEb2luZyBpdCB3aXRoIHNwZWNp
YWwgY2FzZXMgaGVyZSBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGlzIHdpdGhvdXQg
YWRkaW5nIG92ZXJsb2FkcyBzb21lb25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8KKyAgICAgICAgY2Fs
bCBvdXRzaWRlIHRoZSBzdHlsZSBidWlsZGVyLCBhbmQgd2l0aG91dCBhZGRpbmcgc3BlY2lhbCBj
YXNlcyB0bworICAgICAgICB0aGUgSlNPTiBmaWxlIGZvciBlYWNoIHByb3BlcnR5LgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJk
UmVnaW9uKToKKyAgICAgICAgQWRkIFdURk1vdmUgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBydmFs
dWUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5l
SGVpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXApOiBEaXR0by4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQpOiBVc2UKKyAgICAgICAgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgY3VzdG9tIHByb3Bl
cnR5IGRhdGEgaW4gUmVuZGVyU3R5bGUuCisKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6IFVz
ZSBhdXRvIHF1aXRlIGEgYml0IG1vcmUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBV
cGRhdGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxheWVycyB0byBleHBlY3QgcmVmZXJlbmNlcy4gQWRk
ZWQgYSBXVEZNb3ZlCisgICAgICAgIHNvIHdlIGNhbiBnZXQgbW92ZSBzZW1hbnRpY3MgZm9yIGNv
bnZlcnRlZCB2YWx1ZXMgdGhhdCBjb21lIG91dCBpbgorICAgICAgICBhbiBvcHRpb25hbC4gQWRk
ZWQgY2FsbCB0byBmb3J3YXJkSW5oZXJpdGVkVmFsdWUgKHNlZSBhYm92ZSkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTogVXNlIGF1dG8gYW5kIHVwZGF0ZQorICAgICAgICBzaW5jZSBM
ZW5ndGhTaXplIGlzIGEgc3RydWN0LgorCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCk6
IFVzZSBhdXRvLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGl2ZU5vZGVMaXN0Ojpvd25lck5vZGUpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpzb3VyY2UpOiBSZW1vdmVkIHVubmVlZGVkIHN0YXRpY19j
YXN0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNl
dFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6IFR3ZWFrZWQgZm9ybWF0dGlu
Zy4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Om93
bmVyRG9jdW1lbnQpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0
UnVubmVyKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSk6IERpdHRvLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFj
a0l0ZW06Om5vZGUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
ZXRKYXZhU2NyaXB0UGF1c2VkKTogQ3V0IGRvd24gb24gdGhlIG51bWJlcgorICAgICAgICBvZiBk
aWZmZXJlbnQgZnVuY3Rpb25zIGhlcmUuIEFsc28gdXNlIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBw
b2ludGVyLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6IFVzZSBhdXRvLiBMZXQgdGhlIGlzPD4gZnVu
Y3Rpb24gZG8gbnVsbAorICAgICAgICBjaGVja2luZyBmb3IgdXMuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6ZnJhbWVGb3JXaWRnZXQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QpOiBVc2UgQ2hyb21lIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgSG9zdFdpbmRvdy4gSG9zdFdpbmRvdyBpcyBhbiBhYnN0cmFjdGlvbiBmb3Ig
dGhlIHBsYXRmb3JtIGxheWVyLCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gZ29vZCByZWFzb24g
dG8gdXNlIGl0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlQW5p
bWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldCk6IFVwZGF0ZWQgdG8gdXNlIHJlZmVyZW5jZQorICAgICAgICB3
aGVuIGNhbGxpbmcgUmVuZGVyV2lkZ2V0OjpmaW5kLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogVXNlIENocm9tZSBpbnN0ZWFkIG9mIEhvc3RX
aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvc3RXaW5kb3cpOiBVc2UgZWFy
bHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlCisgICAgICAgIGNsYXNz
IGZ1bmN0aW9uLCB3aGljaCB3YXMgZW1wdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93
CisgICAgICAgIGNvbnRhaW5zIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucyk6IFVzZSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6IFVz
ZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBSZW1vdmUgbm93LXVubmVlZGVkIGNvbnN0X2Nh
c3QuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cGx1Z2luVmlld3MpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5z
CisgICAgICAgIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0
eSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
OjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvCisg
ICAgICAgIHRoZSB0eXBlcyBpbiBhbmltYXRpb24gZnVuY3Rpb24gbWVtYmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUpOiBEaXR0by4KKworICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFwcGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIp
OiBVcGRhdGVkIHNpbmNlIHdlIG5vdworICAgICAgICB1c2UgcnZhbHVlIHJlZmVyZW5jZXMgYW5k
IG1vdmUgc2VtYW50aWNzIHdoZW4gc2V0dGluZyBsZW5ndGggcHJvcGVydGllcy4KKworICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25z
Rm9yRnJhbWUpOiBUd2Vha2VkIHRvCisgICAgICAgIHVzZSBhdXRvLCBwYXNzIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOiBSZXR1cm4gUmVmUHRyIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOiBBZGRl
ZCBhIGNvbnN0cnVjdG9yIHRoYXQgbW92ZXMgdGhlIGxlbmd0aHMgaW4sIHJhdGhlcgorICAgICAg
ICB0aGFuIGFsd2F5cyBjb3B5aW5nIHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oOiBU
dXJuZWQgTGVuZ3RoU2l6ZSBpbnRvIGEgc3RydWN0IGFuZCByZW1vdmVkIGFsbCB0aGUKKyAgICAg
ICAgZ2V0dGVyIGFuZCBzZXR0ZXIgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuIFVudXNlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUpOiBSZXR1cm4gUmVmIHJh
dGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOiBUYWtl
CisgICAgICAgIGEgcmVmZXJlbmNlLiBJbml0aWFsaXplIGRhdGEgbWVtYmVycyBpbiBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQ
YXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGRDaGlsZCk6IFRha2Ug
YSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwpOiBVcGRhdGVkIGZvciBjaGFuZ2Ug
dG8gYWRkQ2hpbGQKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgpOiBEZWxldGVkLiBUaGlzIHdhcyBuZXZlciBjYWxsZWQsCisgICAgICAgIHNvIG1h
ZGUgaXQgcHVyZSB2aXJ0dWFsLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6ZnJhbWVS
ZWN0c0NoYW5nZWQpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IERlbGV0ZWQuIFRoaXMgd2FzIGVtcHR5IHNv
IG1hZGUgaXQgcHVyZQorICAgICAgICB2aXJ0dWFsIGFuZCBjaGFuZ2VkIEZyYW1lVmlldyB0byBu
b3QgY2FsbCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzaG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpoaWRlKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBDaGFuZ2VkIHRoZSBjaGlsZHJl
biBzZXQgdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIENoYW5nZWQg
ZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBvdmVycmlkZGVuIHRvIGVpdGhlciBiZSBmaW5hbCBv
ciBub24tdmlydHVhbCwKKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVy
IGNhbGxlZCB0byBiZSBwdXJlIHZpcnR1YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSk6IFVwZGF0ZWQg
Zm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oOiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgor
ICAgICAgICByYXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRp
bWluZ0Z1bmN0aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5k
IFJlZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rp
b24gYW5kCisgICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50
IGNoZWNrIGluIEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25MaXN0OjpBbmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJl
ZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250
YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNz
aWdubWVudAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlcjo6Y2xvbmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAg
ICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9u
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9y
ZQorICAgICAgICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGlu
ZyB0byBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
Zyk6IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlk
ZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUg
b2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6IFNpbXBsaWZpZWQsIHJlbW92aW5nIHVu
bmVjZXNzYXJ5IGZsb2F0aW5nIHBvaW50IG1hdGguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpGaWx0ZXJPcGVyYXRpb25zKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBn
ZW5lcmF0ZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0
b3I9KTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGlzLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6IFN0cmVhbWxpbmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogUmVtb3Zl
ZCBpbmNsdWRlZCBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6IFR3ZWFrZWQgZm9ybWF0dGluZy4gUmVtb3ZlZCBuZXN0aW5n
CisgICAgICAgIGZyb20gI2lmIHNpbmNlIG91ciBmb3JtYXR0aW5nIG1ha2VzIGl0IGhhcmQgdG8g
c2VlIG5lc3RpbmcuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGUgdGhlIGRlZmF1
bHQgbW92ZSBhbmQgY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbmVtbnQgb3BlcmF0b3JzIGV4
Y2VwdAorICAgICAgICBpbiB0aGUgVVNFKEZSRUVUWVBFKSBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKTogVXBkYXRlZCBzaW5jZSBjbG9uZSBub3cgcmV0dXJu
cyBhIFJlZgorICAgICAgICByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0aW9uVmFsdWUpOiBEZWxldGVkLiBMZXQg
dGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpdGhv
dXQgZGVmaW5pbmcgaXQgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6IFVzZSBhIG1vZGVybiBmb3IK
KyAgICAgICAgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSwgYW5kIHVuY2hlY2tlZCBhcHBl
bmQuIEFsc28gdGVsbCB0aGUgY29tcGlsZXIgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIG1vdmUg
Y29uc3RydWN0b3IsIHNpbmNlIHRoZSBzcGVjaWFsIHdvcmsgaXMgb25seSBuZWVkZWQgZm9yIHRo
ZQorICAgICAgICBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQW5p
bWF0aW9uVmFsdWU6OkZpbHRlckFuaW1hdGlvblZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6S2V5ZnJhbWVWYWx1ZUxpc3QpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhT
aHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKTogVXBkYXRlZAorICAgICAgICBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgRG9uJ3QgYm90aGVyIHNldHRpbmcgbV9jbGllbnQgc2luY2Ugd2Ug
bmV2ZXIgdXNlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBDbGVhbiB1cCBjb2RlIGEgYml0CisgICAgICAgIGJ5IHVz
aW5nIGF1dG8gYSBsb3QgbW9yZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6IEFkZGVkIGluY2x1ZGUKKyAgICAg
ICAgdGhhdCBpcyBub3cgbmVlZGVkIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2Ug
Y2xhc3MuIFRpZGllZCB0aGUgY2xhc3MKKyAgICAgICAgdXAgYSBiaXQsIG1hcmtpbmcgaXQgZmlu
YWwsIG1ha2luZyBldmVyeXRoaW5nIHByaXZhdGUsIHRha2luZyBhIHJlZmVyZW5jZSwgYW5kCisg
ICAgICAgIHJlbW92aW5nIGFuIHVudXNlZCBkYXRhIG1lbWJlciwgbV9jbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOiBQYXNzIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwgbm93
IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1ZGUg
ZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgorICAg
ICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVy
QW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAo
LVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2VkIGFy
Z3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaXplRnJvbU5TQ29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5naHRTaXplIHN0cnVjdC4K
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6cmFkaW9TaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJv
bFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5pbXVtQ29udHJv
bFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEZvY3VzKTogVXBkYXRlZCB0byBwYXNzIGEgcmVm
ZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcDogUmVtb3ZlZC4gVW51c2VkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90
aW9uQ2xpZW50TW9jay5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6
IFJldHVybiBhIFJlZiBpbnN0ZWFkIG9mIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaGFyZWRDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRDdXJzb3JC
eU5hbWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KTog
UmVtb3ZlZCBhIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6IFVwZGF0
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4gQWxzbworICAgICAgICB1c2VkIGEgdmVjdG9yIHRvIGl0
ZXJhdGUgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIgaW5zdGVhZCBvZiByZWN1cnNp
b24uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6IFRh
a2UgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1h
c2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKTogVXNlIGF1dG8gYSBi
aXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0
ZW50KTogVXNlIHJlZmVyZW5jZSBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFza0NsaXBSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZpbGxMYXllcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJzVXNlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKTogVXNlIHJlZmVyZW5j
ZSBmb3IKKyAgICAgICAgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdl
b21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KTogVXNl
IHJlZmVyZW5jZXMgZm9yIHRoZSBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKTogVXNlIFJlbmRlclN0eWxlOjpyZXBsYWNlIHRvIHJl
cGxhY2UgdGhlCisgICAgICAgIG9sZCBzdHlsZSB3aXRoIHRoZSBuZXcgc3R5bGUsIGFuZCBnZXQg
dGhlIG9sZCBvbmUgb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJz
LgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxsTGF5ZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFVwZGF0ZWQgZm9y
IHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25PZmZzZXQpOgorICAgICAgICBSZWZhY3RvciBzbyB3ZSBkb24ndCBuZWVkIHNvIG1hbnkg
ZnVuY3Rpb25zIGluIFJlbmRlclN0eWxlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFsc28gZGlkIGEgZmV3IG90aGVy
IHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVU
aWxlZEltYWdlKTogVXBkYXRlZCBzaW5jZSBsYXllcnMgYXJlIHJlZmVyZW5jZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJh
Y2tncm91bmRJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKTogVXBkYXRlZCB0byB1c2UKKyAgICAg
ICAgcmVmZXJlbmNlcyBmb3IgbGF5ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6IFVz
ZSBXVEZNb3ZlIHRvIHBhc3MgYSBMZW5ndGhCb3guCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6aXNDb250cm9sU3R5bGVkKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3Ry
dWN0LAorICAgICAgICBtb3JlIFdURk1vdmUsIGNoYW5nZSBzaW5jZSBsYXllcnMgYXJlIGZlcmVu
Y2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cyk6IFVzZSBtb3ZlCisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9v
cCBpbnN0ZWFkIG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1Bh
cmVudFNvb24pOiBUYWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFs
dWU6OnJlc2V0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2
YWx1ZSByZWZlcmVuY2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUp
OiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVt
b3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5j
ZSBtYXRoTUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlT
dHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNo
b3VsZE1vdmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0
aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9y
ZGVyRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVy
UmFkaXVzKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1i
ZXIgbmFtZXMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxp
emVyIGxpc3RzIHNvIHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJl
cXVpcmluZyBleHBsaWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJl
cGxhY2UpOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisg
ICAgICAgIGNhbiBiZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2
YWx1ZSBvdXQgd2l0aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBh
Ym91dCBub3QgYmVpbmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVp
bmcKKyAgICAgICAgbW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3Rk
OjpleGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQm
KTogQWRkZWQgb3BlcmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVu
Y2VzIHdpdGhvdXQgYW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vz
cyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0
ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1
bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFy
ZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAg
ICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9y
PT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xh
c3MKKyAgICAgICAgZm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlv
biBpbiB0aGlzCisgICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBl
bGltaW5hdGUgdGhlIHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFy
ZCBkYXRhIG1lbWJlciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVy
TmFtZSBpbiBhCisgICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGlj
bHkgYWNjZXNzaWJsZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJu
IG1vcmUgcmVmZXJlbmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJu
IGZvciBsb29wcy4KKyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24g
YnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0
aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFk
ZGVkIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ug
b3BlcmF0aW9uLCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0
ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFk
ZGVkLiBDYWxscyB0aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0
IGVxdWFsaXR5CisgICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1h
bCBlZmZpY2llbmN5IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
RGFzaGJvYXJkUmVnaW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNl
dCBvZiBmdW5jdGlvbnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFsc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25J
dGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3Rp
ZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25U
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2Vs
ZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0
aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVt
c092ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRB
bGlnblNlbGZPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNP
dmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3Bw
OiBTaW1pbGFyIGNoYW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpj
cmVhdGUpOiBUYWtlIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlVmFsdWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVz
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRv
OyBtYWtlIHRoZW0gcHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8t
bG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6
IFRha2UgYW4gcnZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3Rv
bVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjb250YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBk
YXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zv
cm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUg
c2luY2UgbGF5ZXJzIGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEpTU291cmNl
Q29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUKQEAgLTM3MCw3
ICs5ODksNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdz
IG9mIHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRo
ZSBzZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVj
ZSBDUFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2NzI4OTUyOWViYWU0YzYzZGEuLjY2NjY0
ZTdhMzhhYmU3ZGIxN2MwZjhjMmI1NDU4MjM2MjkzNTQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldp
ZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2lu
Y2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgor
CiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVjdG9yIiwgInBsYXRmb3JtL3NxbCIsIGFu
ZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDk0MDQ2M2FhYzM5MWIzMDI2NmNiMDY5
ZGQwYWRmODE5Zjg3Yjg0Li4zN2Q5OTA3NjhhYmE5YTcyYmQ4Y2U5OGFlZThhMDdmNWRmZWI1NzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMDkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBv
ZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmVuY29kZSk6IFVwZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAg
ICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVu
Y3Rpb24KKyAgICAgICAgc2V0dGVycyBub3cgdGFrZXMgYW4gcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOiBVcGRhdGVkIHNp
bmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4KKwogMjAxNy0wMS0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyb3AgVk5vZGVUcmFj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhkYjRiZjAzZjZkZGVhN2U2
ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNlMmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Jj4o
bV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRlcy4KICAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3MWE3MjM3NGU3MTEyM2Uy
OTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZiMWI1M2Y2MTdjM2RiZWIy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQcml2YXRlTmFtZSYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1ib2xJbXBsJiB1aWQoKSBj
b25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZhMDk2ZTgxNjAzYzA4ZTU2
YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBhOWM5YzY3ZTJmM2U3NWM3
MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
cHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZjxUPiByZXBsYWNl
KFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4uMzA4ODFkM2JlMjgxZDAx
YzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNzcs
NyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBwbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMGJiNDZlYmU0OTJlOTAx
ZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZhNjFhZjUxYTZiMGU4Mzc4
YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3ZGQxYTMuLjY3NDZmNGVm
NGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25DbwogCiBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1V
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2JlNDIzYWI1OGNmMS4uYjVj
YjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnRl
eHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYyLDIxIEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
cGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAgICAgUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJl
ZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggZjkw
Zjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2MWJjYWRiMGMzYmM5YjMw
MDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBUKiBwKSB7IHJl
dHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
JiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQmPihwKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBSZWZQdHI8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNi
NzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0ODIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01XcmFwcGVkOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwogCi0gICAgSW1wbGVtZW50
YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50
YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNz
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNET01XcmFw
cGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IGIzZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjAwY2NhY2Q5NjRk
ZTVlZWUzNzBjZWFjYzBlOWRmMjE0MWI0NzgwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTQsMTAgKzU0LDkgQEAgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkKIHsKICAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgIGxvYWRl
ci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jvb3RNb2R1bGUoSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBpbXBvcnRlck1vZHVsZUtl
eS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggMDg4NjRmYTFhNjhlNDFh
YzdlZGNkZmRlN2RiNGFhZDBiMWY0MGUxNS4uNWYyMjVmNzRhYmI1NTI5MGFjZjExNjkyYzY2Y2Zi
ODNiN2JiMzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cApAQCAtMTQ0LDE4ICsxNDQsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBM
ZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCk7Ci0g
ICAgcmV0dXJuIExlbmd0aFNpemUoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQo
KSkpOworICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIHJldHVybiB7
IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29udmVydFRv
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwogfQogCiBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlKQogewotICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgIExlbmd0aCBvZmZzZXQgPSBMZW5ndGgoMCwgRml4ZWQpOwotCiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7CisgICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2Vu
dGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE2Niw2ICsxNjQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRp
bmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKIAorICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29y
ZCkgewogICAgIGNhc2UgQ1NTVmFsdWVUb3A6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzguLmU4NGQ1OTk3NzFl
ZjU3ZjVmOTZlZWRhOGUyM2FjMGM2MGRmMGY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBTZW5jaGEsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTYwNiwxMSArNjA2LDEwIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94KQogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxS
ZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0
UnVsZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7Ci0KKyAgICBhdXRvIGhvcml6b250YWxSZXBl
YXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVs
ZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2ZXJ0aWNhbFJlcGVhdDsKICAgICBpZiAoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSA9PSBpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkKLSAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVw
ZWF0OworICAgICAgICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigp
OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkp
OwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1v
dmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CkBAIC02ODgs
MjAgKzY4NywyMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29u
c3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgIHJldHVybiBDU1NSZWZs
ZWN0VmFsdWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7
CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3Np
dGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9u
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAobGF5
ZXItPmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgeworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5k
WE9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKTsKLSAgICAgICAgcG9zaXRpb25MaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLT5iYWNr
Z3JvdW5kWE9yaWdpbigpKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLmJhY2tncm91bmRYT3JpZ2luKCkpKTsKICAgICB9
Ci0gICAgcG9zaXRpb25MaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGxheWVyLT54UG9zaXRpb24oKSwgc3R5bGUpKTsKLSAgICBpZiAobGF5ZXItPmlzQmFj
a2dyb3VuZFlPcmlnaW5TZXQoKSkgeworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKGxheWVyLnhQb3NpdGlvbigpLCBzdHlsZSkpOworICAgIGlmIChsYXll
ci5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFja2dyb3Vu
ZFlPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpKSk7CiAgICAgfQotICAg
IHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChsYXllci0+eVBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uTGlzdDsK
KyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci55
UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTc2NSwzOSArNzY0LDM4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7Ci0gICAgbGlzdC5nZXQoKS5hcHBl
bmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVzLmhlaWdodCgpLCBzdHlsZSkp
OworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMu
d2lkdGgsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy5oZWlnaHQsIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJh
ZGl1cy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7Ci0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOworICAgIGlmIChyYWRpdXMud2lkdGggPT0gcmFk
aXVzLmhlaWdodCkKKyAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVl
KHJhZGl1cy53aWR0aCwgc3R5bGUpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3Jk
ZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkud2lkdGgoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQgPSBz
aG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7Ci0gICAg
Ym9vbCBzaG93SG9yaXpvbnRhbFRvcFJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoOworICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21SaWdo
dCA9IHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgpOworICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLndpZHRoKTsKIAotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCA9
IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tUmln
aHQgPSBzaG93VmVydGljYWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7
Ci0gICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRl
clRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21M
ZWZ0ID0gc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodDsKKyAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7Cisg
ICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8
IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCAhPSBzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRS
YWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJh
ZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOworICAgIGF1dG8gdG9wTGVmdFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcFJp
Z2h0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIGJvdHRvbVJpZ2h0UmFkaXVzID0gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsK
KyAgICBhdXRvIGJvdHRvbUxlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgYXV0byBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcExlZnRSYWRp
dXMtPml0ZW0oMCkpOwogICAgIGlmIChzaG93SG9yaXpvbnRhbFRvcFJpZ2h0KQogICAgICAgICBo
b3Jpem9udGFsUmFkaWktPmFwcGVuZCgqdG9wUmlnaHRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODA2
LDkgKzgwNCw5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9y
dGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKHNob3dIb3Jpem9u
dGFsQm90dG9tTGVmdCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKmJvdHRvbUxl
ZnRSYWRpdXMtPml0ZW0oMCkpOwogCi0gICAgbGlzdC5nZXQoKS5hcHBlbmQoaG9yaXpvbnRhbFJh
ZGlpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKGhvcml6b250
YWxSYWRpaSkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmVydGljYWxSYWRpaUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2ZXJ0aWNh
bFJhZGlpTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2
ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDEpKTsKICAgICBp
ZiAoc2hvd1ZlcnRpY2FsVG9wUmlnaHQpCiAgICAgICAgIHZlcnRpY2FsUmFkaWlMaXN0LT5hcHBl
bmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDEpKTsKQEAgLTgxNyw4ICs4MTUsOCBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93VmVydGljYWxCb3R0b21MZWZ0KQogICAgICAg
ICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDEpKTsK
IAotICAgIGlmICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpsaXN0LmdldCgpLml0ZW0oMCkpKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmVy
dGljYWxSYWRpaUxpc3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaWYgKCF2ZXJ0aWNhbFJhZGlp
TGlzdC0+ZXF1YWxzKGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QtPml0ZW0oMCkpKSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmVydGljYWxSYWRpaUxpc3QpKTsKIAogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtODg3LDcgKzg4NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNv
bXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZChtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKQEAgLTkzNCw3ICs5MzIsNyBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmls
dGVyT3BlcmF0aW9uLnR5cGUoKSkgewpAQCAtOTk2LDcgKzk5NCw3IEBAIFJlZjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFIKICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tTaXplcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNv
bGxlY3RvciwgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChz
cGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJh
Y2tTaXplc1tpXSwgc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25JbmRleCA9
IHRyYWNrU2l6ZXMuc2l6ZSgpOwogICAgIH0KQEAgLTExODcsMTMgKzExODUsMTMgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb24uaXNTcGFuKCkpIHsKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBv
c2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNwYW4pKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogI2VuZGlmCkBAIC0xMjA3LDE0ICsxMjA1LDE0IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uKQogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmlt
TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVHJh
bnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTI0Miw3ICsxMjQwLDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3Jv
bGxTbmFwQWxpZ24mIGFsaWcKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0
YSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghd2lsbENoYW5nZURhdGEgfHwg
IXdpbGxDaGFuZ2VEYXRhLT5udW1GZWF0dXJlcygpKQpAQCAtMTI1MywxMyArMTI1MSwxMyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxs
Q2hhbmdlRGF0YSogd2lsbENoYW5nZQogICAgICAgICBXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZVBy
b3BlcnR5UGFpciBmZWF0dXJlID0gd2lsbENoYW5nZURhdGEtPmZlYXR1cmVBdChpKTsKICAgICAg
ICAgc3dpdGNoIChmZWF0dXJlLmZpcnN0KSB7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6
OlNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6Q29udGVudHM6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudHMpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpQcm9wZXJ0eToKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmVhdHVyZS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGZlYXR1cmUuc2Vjb25kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWxs
Q2hhbmdlRGF0YTo6SW52YWxpZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ1NiwzOSArMTQ1NCwzOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVh
c3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAg
ICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVy
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfQogICAgIHJl
dHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlv
blZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkg
eworICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdG
dW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5j
dGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZh
bGlkOwogICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
KSB7CkBAIC0xNTExLDU5ICsxNTA5LDYwIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAg
ICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJP
ZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpz
dGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVz
cygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAg
ICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkg
PT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSA9PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVMaW5lYXIpOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRp
b25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9u
KGkpLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1
bmN0aW9uKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0
aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3
aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1h
dGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKnRyaWdnZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChz
Y3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwg
c3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6
Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdn
ZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAg
ICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9u
VHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRy
aWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblRyaWdnZXJWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCku
Z2V0KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJp
Z2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0K
KwogI2VuZGlmCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCkBAIC0xNzAwLDcgKzE2OTksNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4
dERlY29yYXRpb24pCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSkpOwogICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAKICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQpAQCAtMTc1OCw3ICsxNzU3LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0
RW1waGFzaXNQb3NpdGlvbgogICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb25VbmRlcikpKTsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpKSk7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcikpOwog
ICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIp
CkBAIC0xNzY3LDE2ICsxNzY2LDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
ZWZ0KSk7CiAgICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRp
b25SaWdodCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSaWdodCkpOwotCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25U
b0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24pCiB7CiAgICAg
YXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24p
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRmlyc3QpKTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgQWxsb3dFbmRI
YW5naW5nUHVuY3R1YXRpb24pCkBAIC0xNzg3LDcgKzE3ODUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5n
aW5nUHVuYwogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1
ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQpAQCAtMTgwMyw4ICsx
ODAxLDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxS
ZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXRZKTsKIAogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0Lmdl
dCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CisgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh4UmVwZWF0KSk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAKQEAgLTE4MjcsNDAgKzE4MjUsNDAgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3Qg
UmVuZGVyU3QKICAgICBpZiAoZmlsbFNpemUudHlwZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q292ZXIpOwogCi0gICAgaWYgKGZpbGxTaXplLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUu
d2lkdGgoKSwgc3R5bGUpOworICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodC5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS53aWR0aCwgc3R5bGUpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS5oZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUuaGVp
Z2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdHls
ZS5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAg
ICAgCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERh
dGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVy
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmlt
YWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1h
Z2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAg
ICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICB9Ci0gICAgaWYgKHN0eWxlLT5oYXNG
bG93RnJvbSgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewotICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG1hcCA9IHN0eWxlLT5jb3VudGVy
RGlyZWN0aXZlcygpOworICAgIGF1dG8qIG1hcCA9IHN0eWxlLmNvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCkBAIC0xODgzLDE0ICsxODgx
LDIxIEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlMaXN0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUNvdW50KCk7ICsr
aSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUtPmZvbnRD
YXNjYWRlKCkuZmFtaWx5QXQoaSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5
bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRGYW1pbHlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmIChzdHlsZS5mb250Q2FzY2Fk
ZSgpLmZhbWlseUNvdW50KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmFtaWx5KHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5QXQoMCkpOworICAgIHJldHVybiBmb250RmFtaWx5TGlz
dEZyb21TdHlsZShzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
bmVIZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIExlbmd0
aCBsZW5ndGggPSBzdHlsZS5saW5lSGVpZ2h0KCk7CkBAIC0xOTExLDIwMyArMTkxNiwyMDMgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q29tbW9uTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9Db21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgeworICAgIHN3aXRj
aCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpObzoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkp
IHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250
ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9Db250ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVh
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50UG9z
aXRpb246Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudFBvc2l0
aW9uOjpTdWJzY3JpcHQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVN1YikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246OlN1cGVyc2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBz
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6UGV0aXRlOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGV0
aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxs
UGV0aXRlOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VW5pY2FzZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmlj
YXNlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuaWNhc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OlRpdGxpbmc6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlVGl0bGluZ0NhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUxpbmluZ051bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVtcykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1i
ZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
c3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTcGFjaW5nKCkp
IHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3Bh
Y2luZygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9y
dGlvbmFsTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1bGFyTnVtYmVyczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVUYWJ1bGFyTnVtcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxG
cmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFs
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmlj
T3JkaW5hbCgpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlT3JkaW5hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNsYXNoZWRaZXJvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVI
aXN0b3JpY2FsRm9ybXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgeworICAg
IHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM3OCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVK
aXM3OCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzODM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSmlzODMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkw
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXMwNCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXMwNCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNpbXBsaWZpZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRy
YWRpdGlvbmFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZh
cmlhbnRFYXN0QXNpYW5XaWR0aCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5XaWR0aDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6OkZ1bGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVQcm9wb3J0aW9uYWxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdo
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWUxMDApOwogICAgIGNhc2UgRm9udFdlaWdodDIwMDoKQEAgLTIxMzgsMTkgKzIxNDMs
MTkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
eW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdHlsZSkpOwogICAgIGlmIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KQot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlaWdodCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVX
ZWlnaHQpKTsKICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygp
ICYgRm9udFN5bnRoZXNpc1NtYWxsQ2FwcykKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFs
bENhcHMpKTsKLSAgICByZXR1cm4gUmVmPENTU1ZhbHVlPihsaXN0LmdldCgpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxlbmd0aEdl
dHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxPYmplY3Q6
OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1wbGF0ZTxS
ZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1dGVkQ1NT
VmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgTGVuZ3RoIHVuem9vbXpl
ZExlbmd0aCA9IChzdHlsZS4qbGVuZ3RoR2V0dGVyKSgpOwogICAgIGlmICghaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgfHwgdW56b29temVkTGVuZ3RoLmlzRml4ZWQoKSkKQEAgLTIxNTksMTEgKzIx
NjQsOSBAQCBpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJn
aW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiB0ZW1wbGF0ZTxSZW5kZXJTdHls
ZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXI+Ci1pbmxpbmUgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHBhZGRpbmdPck1hcmdpbklzUmVuZGVyZXJEZXBlbmRl
bnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICEoc3R5bGUgJiYgKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0eWxlICYmIHJlbmRlcmVyLT5pc0Jv
eCgpICYmICEoc3R5bGUtPipsZW5ndGhHZXR0ZXIpKCkuaXNGaXhlZCgpOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQpAQCAtMjQ0
NSwxMSArMjQ0OCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9z
aXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoY29uc3QgU3R5bGVTZQogICAgIGF1dG8mIGNzc1Zh
bHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEucG9zaXRp
b25UeXBlKCkgPT0gTGVnYWN5UG9zaXRpb24pCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOwotICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRp
b24oKSkpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTGVnYWN5KSk7CisgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRpb24oKSkpOwogICAgIGlmIChkYXRhLnBvc2l0aW9u
KCkgPj0gSXRlbVBvc2l0aW9uQ2VudGVyICYmIGRhdGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0Fs
aWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCku
bGVuZ3RoKCkgPD0gMik7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8
PSAyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDU4LDIxICsyNDYxLDIxIEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbldpdGhPdmVyZmxvd0FsaWduCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSAhPSBDb250ZW50
RGlzdHJpYnV0aW9uRGVmYXVsdCkKLSAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOworICAgICAgICByZXN1bHQt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOwog
ICAgIGlmIChkYXRhLmRpc3RyaWJ1dGlvbigpID09IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0
IHx8IGRhdGEucG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwpIHsKICAgICAgICAg
Ym9vbCBncmlkRW5hYmxlZCA9IGZhbHNlOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgICAgIGdyaWRFbmFibGVkID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRhdGEu
cG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwgfHwgZ3JpZEVuYWJsZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRh
LnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKG5v
cm1hbEJlaGF2aW9yVmFsdWVJRCkpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKICAg
ICB9CiAgICAgaWYgKChkYXRhLnBvc2l0aW9uKCkgPj0gQ29udGVudFBvc2l0aW9uQ2VudGVyIHx8
IGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpICYmIGRh
dGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3Vs
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkp
OwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkubGVuZ3RoKCkgPiAwKTsKLSAgICBBU1NFUlQocmVz
dWx0LmdldCgpLmxlbmd0aCgpIDw9IDMpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+
bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8PSAzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk0LDEwICsyNDk3LDEwIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3BlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7
CiAgICAgYXV0byogc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSgqc3R5bGVk
RWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3RvbSwgb3du
ZWRTdHlsZSk7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQocHJvcGVydHlOYW1lKTsK
IH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VGV4dChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTI1NjAsODggKzI1NjMsNjkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
Q29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAg
ICAgICAgaWYgKCFsYXllcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllcnMtPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMtPmltYWdlKCktPmNzc1ZhbHVlKCk7Ci0K
KyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2UgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChsYXllcnMuaW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy5p
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KSB7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyckxheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3VyckxheWVyLT5pbWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy0+c2l6ZSgpLCAqc3R5bGUpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXll
cnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NTVmFsdWUobGF5
ZXJzLnNpemUoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3Vyckxh
eWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXll
ci0+c2l6ZSgpLCAqc3R5bGUpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxheWVy
cy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUobGF5ZXJzLnJlcGVhdFgoKSwgbGF5ZXJzLnJlcGVhdFkoKSk7CisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGN1cnJMYXllci0+cmVwZWF0WCgpLCBjdXJyTGF5ZXItPnJl
cGVhdFkoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU291cmNlVHlwZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBzdHlsZS0+bWFza0xheWVycygpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLT5tYXNrU291cmNl
VHlwZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+bWFza0xh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLm1hc2tTb3VyY2VUeXBlKCkp
OworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoY3VyckxheWVyLT5tYXNrU291cmNl
VHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUtPm1hc2tMYXll
cnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVy
cy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUobGF5ZXJzLT5jb21wb3NpdGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlm
ICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGxheWVycy5jb21wb3NpdGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5hdHRhY2htZW50KCkpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVudCgpKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKQEAgLTI2NDksNjUgKzI2MzMsNTkgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRPcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IEZpbGxMYXllciogbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBi
b29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwotICAgICAgICAgICAgaWYgKCFsYXllcnMt
Pm5leHQoKSkgewotICAgICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGxheWVy
cy0+Y2xpcCgpIDogbGF5ZXJzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBj
dXJyTGF5ZXItPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoYm94KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAo
KSA6IGxheWVycy5vcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShp
c0NsaXAgPyBjdXJyTGF5ZXItPmNsaXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0g
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVy
dHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3VyckxheWVyLCAqc3R5
bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+eFBvc2l0aW9uKCkpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy54UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICAgICAgY29uc3QgRmlsbExh
eWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+eVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAg
ICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRpb24oKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbGxhcHNl
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU2VwYXJhdGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygp
LCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZzoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpOwpAQCAtMjgyMiw3ICsyODAwLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwotICAgICAgICAg
ICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBh
dXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKICAgICAgICAgICAgIGlmIChjdXJzb3Jz
ICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKQEAgLTI4ODEsNTkgKzI4NTks
NTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTRm9u
dFZhbHVlPiBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZShzdHlsZSk7CisgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29tcHV0ZWRGb250LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0
eWxlKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250OwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5
bGUpOwotICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZhbWlseSwgcmV0
dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5PVEU6IEdl
Y2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgQ1NTUHJpbWl0aXZl
VmFsdWUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0LT5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+aXRlbSgwKTsKLSAg
ICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+ZmFtaWx5ID0gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21T
dHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CiAgICAgICAg
ICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM6CiAgICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNp
c0Zyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVT
ZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwog
ICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzOiB7CiAgICAgICAg
ICAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzID0gc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7CiAgICAgICAgICAgICBp
ZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiB2
YXJpYXRpb25TZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udFZh
cmlhdGlvblZhbHVlOjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9GbG93OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgQVNTRVJUKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJv
dygpIHx8IHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSkKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVJvdykpOwpAQCAtMjk0Myw3ICsyOTE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNw
ZWNzIG1lbnRpb24gdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNl
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI5Nzks
MTMgKzI5NTEsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZENvbHVtblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRSb3dTaG9ydGhhbmQo
KSk7Ci0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgogICAgICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5HYXAo
KSwgKnN0eWxlKTsKQEAgLTMxMjAsMTAgKzMwOTAsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueCgpLCAqc3R5bGUpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmpl
Y3RQb3NpdGlvbigpLnkoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CkBAIC0zMjI0LDMxICszMTk0LDMwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6CisgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogewogICAgICAgICAgICAgLy8g
SWYgQ1NTM19URVhUIGlzIGRpc2FibGVkIG9yIHRleHQtaW5kZW50IGhhcyBvbmx5IG9uZSB2YWx1
ZSg8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiksCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZS4KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dGV4dEluZGVudCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJ
bmRlbnQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgKnN0eWxlKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgLy8gSWYgQ1NTM19URVhUIGlzIGVuYWJs
ZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVhY2gtbGluZSBvciAtd2Via2l0LWhhbmdp
bmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1
ZUxpc3QuCiAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5n
aW5nKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQodGV4dEluZGVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodGV4dEluZGVudCkpOwogICAgICAgICAgICAgICAg
IGlmIChzdHlsZS0+dGV4dEluZGVudExpbmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlV2Via2l0RWFjaExpbmUpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5
bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlV2Via2l0SGFuZ2luZykpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dEluZGVudDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKHRleHRJbmRlbnQpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
U2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN0eWxlLT50ZXh0U2hh
ZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CkBAIC0zMzIxLDggKzMyOTAsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPndpZHRoKCksICpzdHlsZSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaWxsQ2hhbmdlOgotICAgICAgICAgICAgcmV0dXJuIGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxlLT53aWxsQ2hhbmdlKCkpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICByZXR1cm4gd2lsbENoYW5nZVByb3BlcnR5VmFsdWUoc3R5bGUt
PndpbGxDaGFuZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT53b3JkQnJlYWso
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKQEAgLTMzOTQsOSArMzM2
Miw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWxh
eVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRGlyZWN0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAg
ICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+
c2l6ZSgpOyArK2kpIHsKQEAgLTM0MTcsMTIgKzMzODUsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShzdHls
ZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxl
LT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1v
ZGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmlt
YXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7
CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkg
ewpAQCAtMzQ0MywxMCArMzQxMSwxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQ6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsr
aSkgewpAQCAtMzQ1OCwyMCArMzQyNiwyMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0
aW9uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6IHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5
bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0LT5hbmltYXRpb24oaSku
bmFtZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlv
bnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgewpAQCAtMzQ4MywxMyArMzQ1MSwxMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAg
IHJldHVybiB0aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVHJpZ2dlcjoKLSAgICAgICAgICAgIHJldHVybiBnZXRBbmltYXRpb25Ucmln
Z2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biBhbmltYXRpb25UcmlnZ2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKICNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmFwcGVhcmFuY2UoKSk7
CkBAIC0zNTMxLDggKzM0OTksOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAg
ICAgLy8gTm90IGEgcmVhbCBzdHlsZSBwcm9wZXJ0eSAtLSB1c2VkIGJ5IHRoZSBlZGl0aW5nIGVu
Z2luZSAtLSBzbyBoYXMgbm8gY29tcHV0ZWQgdmFsdWUuCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXI6IHsKLSAgICAgICAgICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExldHRlckRyb3Ao
KSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJvcCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNpemUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExl
dHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJv
cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIHNp
emUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6
Y3JlYXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUoc2l6ZSkpKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CkBAIC0zNTUyLDcg
KzM1MjAsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmUo
KSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luOiB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAgICAgICAgICAgICAgaWYgKGlz
PFJlbmRlckJveD4oKnJlbmRlcmVyKSkKQEAgLTM1NjYsNyArMzUzNCw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCAqc3R5bGUpKTsK
IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDog
Q1NTVmFsdWVMb2dpY2FsKTsKQEAgLTM1ODUsMTMgKzM1NTMsMTMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyU2VsZWN0
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAg
ICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksICpzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAg
ICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRS
YWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCAqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpz
dHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGlwOiB7CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKTsKQEAgLTM2MDcsNyArMzU3NSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0
ZWRUcmFuc2Zvcm0ocmVuZGVyZXIsICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW46IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveDsKICAgICAg
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQpAQCAtMzYyMyw0MiArMzU5
MSw0MSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGlmIChzdHls
ZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksICpz
dHlsZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNmb3JtU3R5bGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQ
cmVzZXJ2ZTNEKSA/IENTU1ZhbHVlUHJlc2VydmUzZCA6IENTU1ZhbHVlRmxhdCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZGVs
YXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9u
UHJvcGVydHk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VHJhbnNpdGlvblByb3BlcnR5VmFsdWUo
c3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9w
ZXJ0eVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXRUaW1pbmdG
dW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB0
aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCk7Ci0gICAgICAgICAgICBpZiAoYW5pbUxp
c3QpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9uc0xp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8gdHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3Qt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uID0gYW5pbUxpc3QtPmFuaW1hdGlv
bihpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb24g
PSBhbmltTGlzdC0+YW5pbWF0aW9uKGkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbWF0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9u
LmR1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltYXRpb24udGlt
aW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShhbmltYXRpb24uZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKGxpc3QucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKFdURk1vdmUo
bGlzdCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNp
dGlvbnNMaXN0OworICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHRyYW5zaXRpb25zTGlz
dCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAg
ICAgICAvLyB0cmFuc2l0aW9uLXByb3BlcnR5IGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFs
bCkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxEdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsK
LSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZl
bnRzOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+
cG9pbnRlckV2ZW50cygpKTsKQEAgLTM2NzksMzMgKzM2NDYsMjkgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOgog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUoc3R5bGUtPmxpbmVC
b3hDb250YWluKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWx0OgotICAgICAgICAgICAg
cmV0dXJuIGFsdFRleHRUb0NTU1ZhbHVlKHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBhbHRU
ZXh0VG9DU1NWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoK
LSAgICAgICAgICAgIHJldHVybiBjb250ZW50VG9DU1NWYWx1ZShzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFs
dWUoc3R5bGUsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1Zh
bHVlKCpzdHlsZSwgcHJvcGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVy
UmVzZXQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoc3R5bGUsIHByb3Bl
cnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKCpzdHlsZSwgcHJv
cGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDbGlwUGF0aDogewotICAg
ICAgICAgICAgQ2xpcFBhdGhPcGVyYXRpb24qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgp
OworICAgICAgICAgICAgYXV0byogb3BlcmF0aW9uID0gc3R5bGUtPmNsaXBQYXRoKCk7CiAgICAg
ICAgICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgaWYg
KGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVy
YXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS51cmwoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKGlzPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgc2hhcGVPcGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRv
d25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoKnN0eWxlLCBzaGFwZU9wZXJhdGlv
bi5iYXNpY1NoYXBlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc2hhcGVPcGVyYXRpb24ucmVm
ZXJlbmNlQm94KCkgIT0gQm94TWlzc2luZykKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3go
KSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJveE9wZXJh
dGlvbiA9IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveE9wZXJh
dGlvbi5yZWZlcmVuY2VCb3goKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGxpc3Q7CisgICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRp
b24pKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnJlZmVyZW5jZUJv
eCgpKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJ
bnRvOgpAQCAtMzczOCwyMCArMzcwMSwxOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aXNvbGF0aW9u
KCkpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2Rl
OiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5ibGVuZE1vZGUo
KSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxM
YXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRM
YXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy5ibGVuZE1vZGUoKSk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXll
cjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmJsZW5kTW9kZSgpKSk7
Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxh
eW91dCk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIGlmICgh
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPih2YWx1ZSwgcHJvcGVydHlWYWx1ZShwcm9wZXJ0
eSwgRG9Ob3RVcGRhdGVMYXlvdXQpKSkKQEAgLTM3NjgsNyArMzcyOSw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJbWFnZSgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSgqc3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIGJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKQEAgLTM5OTgsNyArMzk1OSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAog
ewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQpOworICAgIGF1dG8gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQp
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgYmUgbnVsbCBpbnN0ZWFkLCBhcyBpdCBpcyBpbiBTdHlsZVByb3BlcnRp
ZXM6OmdldFByb3BlcnR5VmFsdWU/CiAgICAgcmV0dXJuIHZhbHVlLT5jc3NUZXh0KCk7CkBAIC00
MDYzLDIyICs0MDI0LDIxIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICAgICAgbGlz
dC0+YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4gbGlz
dDsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtp
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKwogICAgIC8vIEFzc3Vt
ZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gcHJvcGVydHlWYWx1ZShz
aG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlPiByaWdodFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21W
YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSwgRG9Ob3RVcGRh
dGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gcHJvcGVydHlWYWx1
ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0
byB0b3BWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9O
b3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gcmlnaHRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gYm90
dG9tVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0sIERvTm90
VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIGxlZnRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogCiAgICAgLy8gQWxsIDQg
cHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdo
dFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQpAQCAtNDA5NiwxNyArNDA1Niwx
NSBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIGlmIChzaG93TGVmdCkKICAgICAgICAg
bGlzdC0+YXBwZW5kKGxlZnRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIHJldHVybiBs
aXN0OworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9y
dGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9y
dGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgICAgIGxpc3Qt
PmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisgICAg
ICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0s
IERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gV1RGTW92
ZShsaXN0KTsKIH0KIAogUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCkBAIC00MTE0LDggKzQwNzIsNyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25z
dCBDUwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShzZXRbaV0p
OwotICAgICAgICBpZiAodmFsdWUpCisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJvcGVydHlW
YWx1ZShzZXRbaV0pKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ld
LCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwpAQCAtNDEzOCw3
ICs0MDk1LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY28KICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gdmFsdWUtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdy
YXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAppbmRleCBjOGI2MTU1MGI2YmE3ZTYyYzNiNzMzZDQ1YWEwODU0MWEwODU1MDhhLi4zYzdjMjk5
NTYwYTgxZjE3YWQ2ODdhNWMzYzhiMjk2MzkzNDc5ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlJiwgRmxvYXRTaXplLCBHZW5lcmF0ZWRJbWFnZSYpOwotICAgIEdl
bmVyYXRlZEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJhdGVk
SW1hZ2UmPihtX2ltYWdlLmdldCgpKTsgfQorICAgIEdlbmVyYXRlZEltYWdlJiBpbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KICAgICB2b2lkIHB1bnRFdmljdGlvblRpbWVyKCkgeyBt
X2V2aWN0aW9uVGltZXIucmVzdGFydCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggMDY0MmI4NzhjZTkzNTIzY2ZlMGFjZDk2MWU5MTc1
NGFlYmUwZWEwYS4uMDllN2FkMzEwNjUxZDFhMDg3ZjJkYjdkM2Y4NDRiNzMxODMzMjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjExLDEyICsyMTEsMTAg
QEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0g
bV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKS5zaXplKCkpOwotICAgIFJlZlB0cjxDU1NLZXlm
cmFtZVJ1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKKyAgICBh
dXRvJiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKICAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJ1bGUgPSBhZG9wdFJlZihuZXcgQ1NTS2V5ZnJhbWVSdWxlKGNvbnN0X2Nh
c3Q8U3R5bGVSdWxlS2V5ZnJhbWUmPihtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2luZGV4
XS5nZXQoKSksIGNvbnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRoaXMpKSk7Ci0KKyAgICAg
ICAgcnVsZSA9IGFkb3B0UmVmKCpuZXcgQ1NTS2V5ZnJhbWVSdWxlKG1fa2V5ZnJhbWVzUnVsZS0+
a2V5ZnJhbWVzKClbaW5kZXhdLCBjb25zdF9jYXN0PENTU0tleWZyYW1lc1J1bGUqPih0aGlzKSkp
OwogICAgIHJldHVybiBydWxlLmdldCgpOyAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKaW5kZXggMjBjNTZlNjZiZTRmNTNiN2FlNmRhN2UyMzY1OTk0ODlmZWU2
YTJjZi4uNDgyZmQzZGE4MmNhMmM2MDMzMTIzYTY2NGVkMTFiNDkyODMzZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3QKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1BB
SVI7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7Ci0gICAgbV92YWx1ZS5wYWlyID0g
JlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCgpLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCgpLCBzdHlsZSkpLmxlYWtSZWYoKTsKKyAgICBtX3ZhbHVlLnBhaXIg
PSAmUGFpcjo6Y3JlYXRlKGNyZWF0ZShsZW5ndGhTaXplLndpZHRoLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCwgc3R5bGUpKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmluaXQoUmVmPENvdW50ZXI+JiYgY291bnRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVJ1bGUuaAppbmRleCA4MTBiOWE0NTRkNjU3NmU4YWU3OGU0ZjVlYmNmZjBiMDEyYjczZjIwLi43
MWYzNTUwNTU2YzY4NWY4ZjVmMDUxNWRhMDAzMmE4OTkxNjdhNzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZSgpOwogCiAgICAgLy8gRklYTUU6IE5vdCBDU1NP
TS4gUmVtb3ZlLgotICAgIFN0eWxlUnVsZSYgc3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxTdHlsZVJ1bGUmPihtX3N0eWxlUnVsZS5nZXQoKSk7IH0KKyAgICBTdHlsZVJ1bGUm
IHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgQ1NTU3R5bGVSdWxlKFN0eWxlUnVsZSYsIENTU1N0eWxlU2hlZXQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCAyYTI3ZGRiMDA5NGU0ODZkMGUwNDQ1NmZi
NTM1ZWFkMmU1NjgzOGQ2Li44NWM0NGEyZjNhOWI0OWZkMTE2ZmFlZTFjMzk2MmE3YWQzZmRlMmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC0xODgsMTIgKzE4OCwxMSBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgRmlsbExheWVyJiBsYXllciwgYwogc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRUb0xl
bmd0aFNpemUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhLCBMZW5ndGhTaXplJiBzaXplKQogewog
ICAgIGlmIChhdXRvKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKLSAgICAg
ICAgc2l6ZS5zZXRXaWR0aChwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLSAgICAgICAgc2l6ZS5zZXRIZWlnaHQocGFpci0+c2Vj
b25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwor
ICAgICAgICBzaXplLndpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNv
bnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgc2l6ZS5oZWlnaHQgPSBwYWlyLT5z
ZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgc2l6ZS5zZXRXaWR0aChwcmltaXRpdmVWYWx1ZS5jb252ZXJ0
VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLQotICAgIHJldHVybiAh
c2l6ZS53aWR0aCgpLmlzVW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0KCkuaXNVbmRlZmluZWQo
KTsKKyAgICAgICAgc2l6ZS53aWR0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxB
bnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgcmV0dXJuICFzaXplLndpZHRoLmlz
VW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0LmlzVW5kZWZpbmVkKCk7CiB9CiAKIHZvaWQgQ1NT
VG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5
ZXImIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApp
bmRleCBjOWZiNzMzNTk4NWI4YmM3YmU2ODY3YjhmNzFjZjIxMzE2MjU2YTNhLi5jMjg5Zjc4NDBh
YTY4Yzk4MTdlYmY0MWQ1NTI3NjZmYTIxNzYxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
QEAgLTI1OCwxMyArMjU4LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0
dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpCiAKIFN0cmluZyBGb250
RmFjZTo6ZmFtaWx5KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9i
YWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+ZmFtaWxpZXMoKS0+Y3Nz
VGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKIHsKLSAgICBjb25z
dF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoICht
X2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRTdHlsZU1hc2spIHsKICAgICBjYXNlIEZvbnRT
dHlsZU5vcm1hbE1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBGb250RmFj
ZTo6c3R5bGUoKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3
aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250V2VpZ2h0TWFzaykgewogICAgIGNh
c2UgRm9udFdlaWdodDEwME1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cmluZyBGb250
RmFjZTo6c3RyZXRjaCgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkg
Y29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZh
bHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTMyMCwxMyAr
MzIwLDEzIEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIAogU3RyaW5n
IEZvbnRGYWNlOjp2YXJpYW50KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNl
Jj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5n
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbXB1dGVGb250VmFyaWFudCht
X2JhY2tpbmctPnZhcmlhbnRTZXR0aW5ncygpKS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9u
dEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250
RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFj
a2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJl
U2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vcm1hbCIp
OwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4
IGIyMWRkNWQ1NjM3MzlmZmJkZDFkODlkODFlNWU0NDMwYWFlNmUxNTMuLjY4ZmZmZGViOWU0MmM3
MTYyM2Q4N2E1NzVjYTBkYzVjNzBhYWY3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5j
dGlvbnMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgi
CiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5j
bHVkZSAiTGVuZ3RoU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw2ICs1OSwx
MSBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSkKICAgICByZXR1cm4gMDsKIH0KIAorTGF5b3V0U2l6ZSBzaXpl
Rm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGgsIGNvbnN0IExheW91dFNpemUm
IG1heGltdW1WYWx1ZSkKK3sKKyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGgud2lk
dGgsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoLmhlaWdodCwg
bWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworfQorCiAvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBs
YXlvdXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2Fu
IGJlIHJlbW92ZWQuIFNlZSBidWcgNzExNDMuCiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSkKIHsKQEAgLTExMyw3
ICsxMTksNyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBmbG9hdCBtYXhpbXVtVmFsdWUpCiAKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXpl
KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
IHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53
aWR0aCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUu
aGVpZ2h0KCksIGJveFNpemUuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGxlbmd0aFNpemUud2lkdGgsIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JM
ZW5ndGgobGVuZ3RoU2l6ZS5oZWlnaHQsIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAppbmRleCA5
ZDIyNGQ5MTEyN2U1ZjgzYWFiMTA0ODkyZGU2ODA0NjQxMThkZDZhLi4xYzRlMDUwZGE2MDRhNDNh
NTY4M2FhZmQyZWVkNDM2YTQ1MzEzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUmlrIENh
YmFuaWVyIChjYWJhbmllckBhZG9iZS5jb20pCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdo
dCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtMjksOCArMjksOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFNpemU7
Ci1jbGFzcyBMYXlvdXRVbml0OworY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFJlbmRlclZpZXc7
CisKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIApAQCAtMzgsNiArMzksNyBA
QCBpbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQg
bWF4aW11bVZhbHVlKTsKIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSk7CiBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBXRUJDT1JFX0VYUE9SVCBM
YXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlKTsKK0xheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYs
IGNvbnN0IExheW91dFNpemUmIG1heGltdW1WYWx1ZSk7CiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIFdFQkNPUkVfRVhQ
T1JUIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11
bVZhbHVlKTsKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNp
emUmLCBjb25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNTM4MzQyN2Q5MmFiZmYxOTdl
N2ZhZGQ2ODc0Nzc3ZDdhODU0OWQ1Yy4uZDc2OWE1YTU4NmM4MTEyNzE4N2U3NTQ0MzJjOWYyYzVm
OGM3NzFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTMxLDM0ICszMiwzNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHBhaW50T3JkZXIo
UGFpbnRPcmRlciBwYWludE9yZGVyKQogewotICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IHBhaW50T3Jk
ZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIFJlZjxD
U1NWYWx1ZT4gZmlsbCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlRmlsbCk7Ci0gICAgUmVmPENTU1ZhbHVlPiBzdHJva2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSk7Ci0gICAgUmVmPENTU1ZhbHVlPiBtYXJr
ZXJzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJz
KTsKKyAgICBpZiAocGFpbnRPcmRlciA9PSBQYWludE9yZGVyTm9ybWFsKQorICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwog
CisgICAgYXV0byBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBzd2l0Y2ggKHBhaW50T3JkZXIpIHsKICAgICBjYXNlIFBhaW50T3JkZXJO
b3JtYWw6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsOgotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURk1vdmUoZmlsbCkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRmlsbCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsTWFya2VyczoKLSAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKLSAgICAgICAgcGFpbnRPcmRlckxp
c3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUZpbGwpKTsK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
YWludE9yZGVyU3Ryb2tlOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUo
c3Ryb2tlKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQYWludE9yZGVyU3Ryb2tlTWFya2VyczoKLSAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZChXVEZNb3ZlKHN0cm9rZSkpOwotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KFdURk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKSk7CisgICAgICAg
IHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRl
ck1hcmtlcnM6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJz
KSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUGFpbnRPcmRlck1hcmtlcnNTdHJva2U6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBl
bmQoV1RGTW92ZShtYXJrZXJzKSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RG
TW92ZShzdHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKKyAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZVN0cm9rZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFdURk1v
dmUocGFpbnRPcmRlckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCmluZGV4IGU0Yzc5NDNmODA4MjU1ZTI5MTZhNjcxZTRmNTk1M2M3ZGFmZDIxNzEuLmQ0
OTUwYTA2OWM5YTNmZjMwZWE2MWY1ZDE4YjRhMWZjOWFjMWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI5NCwyMSArMjk0LDE5IEBAIGlubGlu
ZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NT
VG9MZW5ndGhDb252ZXJzaW9uCiAKIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJhZGl1cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1
ZS5wYWlyVmFsdWUoKTsKKyAgICBhdXRvKiBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9
LCB7IDAsIEZpeGVkIH0gfTsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVy
c2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOwotICAgIExlbmd0aCByYWRpdXNXaWR0aCA9IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252
ZXJzaW9uRGF0YSwgKnBhaXItPmZpcnN0KCkpOwotICAgIExlbmd0aCByYWRpdXNIZWlnaHQgPSBj
b252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5zZWNvbmQoKSk7Cisg
ICAgTGVuZ3RoU2l6ZSByYWRpdXMgeyBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRh
dGEsICpwYWlyLT5maXJzdCgpKSwgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRh
LCAqcGFpci0+c2Vjb25kKCkpIH07CiAKLSAgICBBU1NFUlQoIXJhZGl1c1dpZHRoLmlzTmVnYXRp
dmUoKSk7Ci0gICAgQVNTRVJUKCFyYWRpdXNIZWlnaHQuaXNOZWdhdGl2ZSgpKTsKLSAgICBpZiAo
cmFkaXVzV2lkdGguaXNaZXJvKCkgfHwgcmFkaXVzSGVpZ2h0LmlzWmVybygpKQotICAgICAgICBy
ZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAg
ICBBU1NFUlQoIXJhZGl1cy53aWR0aC5pc05lZ2F0aXZlKCkpOworICAgIEFTU0VSVCghcmFkaXVz
LmhlaWdodC5pc05lZ2F0aXZlKCkpOworICAgIGlmIChyYWRpdXMud2lkdGguaXNaZXJvKCkgfHwg
cmFkaXVzLmhlaWdodC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIHJldHVybiBMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRp
dXNIZWlnaHQpOworICAgIHJldHVybiByYWRpdXM7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCkBAIC03NjYsNyArNzY0LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVl
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIK
ICAgICB9CiAKICAgICBpZiAoaXNJbWFnZVNoYXBlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFNo
YXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFs
dWUpLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlOwog
ICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKQEAgLTc4Niw3ICs3ODQs
NyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlcgogICAgIH0KIAogICAgIGlmIChzaGFwZSkKLSAg
ICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKHNoYXBlKSwgcmVmZXJlbmNl
Qm94KTsKKyAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzaGFwZS5yZWxlYXNlTm9u
TnVsbCgpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNz
aW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGZmZDlkNDliYWE2OTM3
MzRjNjFkNWE1OTdmZmE0MDU3NWY3MjI3ZS4uZmJmYmQ4MjJmYWZkZGQ2YmMwNmUzZTZkZGNhMmFm
MGRiMjlmYjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYg
KzU4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWwjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImKTsgXAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpCiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShUJiYgdmFsdWUpIHsgcmV0dXJu
IHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KK2lubGluZSBMZW5ndGggZm9yd2FyZEluaGVyaXRl
ZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBj
b3B5OyB9CitpbmxpbmUgTGVuZ3RoU2l6ZSBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3QgTGVu
Z3RoU2l6ZSYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBjb3B5OyB9Citpbmxp
bmUgTGVuZ3RoQm94IGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5ndGhCb3gmIHZhbHVl
KSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQorCiAvLyBOb3RlIHRoYXQgd2Ug
YXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgog
Y2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tIHsKIHB1YmxpYzoKQEAgLTMwMSw2ICszMDYsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzbwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorCiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhKQogewogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSA6IExlbmd0aChV
bmRlZmluZWQpOwpAQCAtMzE4LDcgKzMyNCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAg
ICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhc2hib2FyZFJlZ2lvbiog
Zmlyc3QgPSByZWdpb247CisgICAgYXV0byogZmlyc3QgPSByZWdpb247CiAgICAgd2hpbGUgKHJl
Z2lvbikgewogICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+
dG9wKCksIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCku
Y29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252
ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKQEAg
LTMzNSwxNyArMzQxLDIwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAgICAgICAgICAgICBs
ZWZ0ID0gTGVuZ3RoKCk7CiAKICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFz
aGJvYXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdp
b246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQp
LCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CiAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpS
ZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdp
b24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rhbmds
ZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3Zl
KGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CisKICAgICAgICAgcmVn
aW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7CiAgICAgfQogCiAgICAgc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CiB9CisKICNlbmRpZiAvLyBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCisKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VS
ZXNvbHV0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2Uoc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UoKSk7CkBAIC0zNzgsMTggKzM4NywyMyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRp
b24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
SW1hZ2VSZXNvbHV0aW9uU25hcChzbmFwKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dEltYWdlUmVzb2x1dGlvbihyZXNvbHV0aW9uKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
SU1BR0VfUkVTT0xVVElPTikKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOworCisgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGVuZ3RoIHdpZHRoOwogICAgIExlbmd0aCBo
ZWlnaHQ7CiAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwot
ICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogICAgIHN3
aXRjaCAodmFsdWVMaXN0Lmxlbmd0aCgpKSB7CkBAIC00NTMsMTIgKzQ2NywxMiBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFBhZ2VTaXplKHsgV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSB9KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRUZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0g
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+dGV4dEluZGVudCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRJbmRlbnQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5k
ZW50KCkgfSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRJbmRlbnRMaW5lKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dElu
ZGVudExpbmUoKSk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlw
ZShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJbmRlbnRUeXBlKCkpOwpAQCAtNDk2
LDcgKzUxMCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKGxlbmd0aE9yUGVy
Y2VudGFnZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChsZW5ndGhPclBlcmNlbnRhZ2VWYWx1ZSk7
CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KFdURk1vdmUobGVuZ3Ro
T3JQZXJjZW50YWdlVmFsdWUpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudExpbmUodGV4dEluZGVudExpbmVWYWx1ZSk7CiAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlwZSh0ZXh0SW5kZW50VHlw
ZVZhbHVlKTsKQEAgLTYxMSw4ICs2MjUsOCBAQCBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVS
X0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBXaWR0aCkKIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+bGluZUhlaWdodCgpKTsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExpbmVIZWlnaHQoc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0TGluZUhlaWdodChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmxp
bmVIZWlnaHQoKSB9KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExp
bmVIZWlnaHQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCkgfSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsTGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQpAQCAtNjI4
LDggKzY0Miw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxp
bmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKCFsaW5lSGVpZ2h0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExpbmVI
ZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFNwZWNpZmllZExpbmVIZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgbGluZUhlaWdodC52YWx1ZSgpIH0p
OworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChXVEZN
b3ZlKGxpbmVIZWlnaHQudmFsdWUoKSkpOwogfQogCiAjZW5kaWYKQEAgLTY2NSwyMSArNjc5LDIx
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIGF1dG8qIHBhcmVudFN0eWxlID0gc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpOwogICAgIGlmICghcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkK
ICAgICAgICAgcmV0dXJuIGFwcGx5SW5pdGlhbENsaXAoc3R5bGVSZXNvbHZlcik7Ci0gICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKHBhcmVudFN0eWxlLT5jbGlwVG9wKCksIHBhcmVu
dFN0eWxlLT5jbGlwUmlnaHQoKSwgcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKSwgcGFyZW50U3R5
bGUtPmNsaXBMZWZ0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChMZW5n
dGggeyBwYXJlbnRTdHlsZS0+Y2xpcFRvcCgpIH0sIExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlw
UmlnaHQoKSB9LAorICAgICAgICBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpIH0s
IExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlwTGVmdCgpIH0pOwogICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ2xpcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwotCi0gICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVW
YWx1ZS5yZWN0VmFsdWUoKSkgeworICAgIGlmIChhdXRvKiByZWN0ID0gcHJpbWl0aXZlVmFsdWUu
cmVjdFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2
ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7Ci0gICAgICAgIExlbmd0aCB0
b3AgPSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIExlbmd0aCByaWdodCA9IHJlY3QtPnJpZ2h0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4o
Y29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggYm90dG9tID0gcmVjdC0+Ym90dG9tKCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggbGVm
dCA9IHJlY3QtPmxlZnQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQpOworICAgICAgICBhdXRvIHRvcCA9IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9MZW5ndGg8
Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNp
b24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYXV0byByaWdodCA9IHJlY3QtPnJpZ2h0KCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBhdXRvIGJvdHRv
bSA9IHJlY3QtPmJvdHRvbSgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lv
biB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
KyAgICAgICAgYXV0byBsZWZ0ID0gcmVjdC0+bGVmdCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNv
bnZlcnNpb25EYXRhKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKFdU
Rk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0
KSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0byk7CkBAIC03MzUsMTIgKzc0OSwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
cwogICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CiAKLXRl
bXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgordGVtcGxhdGU8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0
eT4KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dW
YWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAgICAgIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwpA
QCAtNzYxLDggKzc3NSw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlU
ZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBj
b2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVl
LmNvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5
bGUsIGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3cpCisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0
byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coV1RGTW92ZShz
aGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlz
IG5vdCB0aGUgZmlyc3QgZW50cnkKQEAgLTExNTYsMjIgKzExNzAsMjIgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIEMKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwor
ICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHls
ZSgpOwogICAgIHN2Z1N0eWxlLnNldEZpbGxQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZp
bGxQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRDb2xvcigpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludFVyaSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1Zp
c2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0RmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZH
U3R5bGUoKTsKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnUGFyZW50U3R5bGUgPSBzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUg
PSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3Zn
UGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CiAg
ICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLmZpbGxQYWludFR5cGUoKSwg
c3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50
VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxl
UmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIAogfQogCiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYg
c3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZh
bHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7Cisg
ICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxl
KCk7CisgICAgY29uc3QgYXV0byogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUo
KSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBT
dHJpbmcgdXJsOwogICAgIGlmICh2YWx1ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0
IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAt
MTE4MywxMCArMTE5NywxMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgQ29sb3IgY29sb3I7Ci0gICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSA9
IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CisgICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SOwogICAgIGlmIChsb2NhbFZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgIHBh
aW50VHlwZSA9IFNWR19QQUlOVFRZUEVfVVJJOwotICAgICAgICB1cmwgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4obG9jYWxWYWx1ZSktPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIHVybCA9
IGxvY2FsVmFsdWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChsb2NhbFZhbHVlLT5p
c1ZhbHVlSUQoKSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9OT05FIDogU1ZH
X1BBSU5UVFlQRV9VUklfTk9ORTsKICAgICBlbHNlIGlmIChsb2NhbFZhbHVlLT5pc1ZhbHVlSUQo
KSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpIHsKQEAg
LTEyMDcsMTUgKzEyMjEsMTUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIAogaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTdHJva2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHls
ZSgpOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NT
VkdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHN2Z1Bh
cmVudFN0eWxlLnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludENv
bG9yKCksIHN2Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUq
IGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgY29uc3QgYXV0byogbG9j
YWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBTdHJpbmcgdXJsOwogICAgIGlmICh2YWx1
ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTIyNyw3ICsxMjQxLDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIEMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIENvbG9yIGNvbG9y
OwotICAgIFNWR1BhaW50VHlwZSBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOwor
ICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjsKICAgICBpZiAobG9j
YWxWYWx1ZS0+aXNVUkkoKSkgewogICAgICAgICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VS
STsKICAgICAgICAgdXJsID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGxvY2FsVmFsdWUp
LT5zdHJpbmdWYWx1ZSgpOwpAQCAtMTI1OCw3ICsxMjcyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGUKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
U3ZnU2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHN2Z1N0eWxlLnNldFNoYWRv
dyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwMDQ2OWVl
N2ZhMDkxNjY4ZjYzODY2YWVjYjQ1NGIwMzM0MTI4NTc1Li4zNDk3YjJhNzA3ZDRlNTQyNjkzNmIy
ZDFmODZmNTJlZWMzOWE4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xNjgsNyArMTY4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNhY2hl
Qm9yZGVyQW5kQmFja2dyb3VuZCgpCiAgICAgbV9oYXNVQUFwcGVhcmFuY2UgPSBtX3N0eWxlLT5o
YXNBcHBlYXJhbmNlKCk7CiAgICAgaWYgKG1faGFzVUFBcHBlYXJhbmNlKSB7CiAgICAgICAgIG1f
Ym9yZGVyRGF0YSA9IG1fc3R5bGUtPmJvcmRlcigpOwotICAgICAgICBtX2JhY2tncm91bmREYXRh
ID0gKm1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5kRGF0
YSA9IG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBtX3N0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiB9CkBAIC0xMzI4LDcgKzEz
MjgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgICAgICAvLyBXZSBjYW4gYnVpbGQg
dXAgdGhlIHN0eWxlIGJ5IGNvcHlpbmcgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4g
ZWFybGllciBzdHlsZSBvYmplY3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgZXhhY3QKICAgICAgICAg
Ly8gc3R5bGUgZGVjbGFyYXRpb25zLiBXZSB0aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5o
ZXJpdGVkIHByb3BlcnRpZXMsIGlmIGFueSwgYXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24g
dGhlIAogICAgICAgICAvLyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMg
bWVtb3J5IGJ5IHJldXNpbmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KLSAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS5n
ZXQoKSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKCpjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlKTsKICAgICAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCktPmlu
aGVyaXRlZERhdGFTaGFyZWQoY2FjaGVJdGVtLT5wYXJlbnRSZW5kZXJTdHlsZS5nZXQoKSkgJiYg
IWlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSkgewogICAgICAgICAgICAgRUluc2lkZUxpbmsg
bGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRlbnRpY2FsIGluaGVyaXRlZCBw
cm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0aGVuIHRoZQpAQCAtMTY2MSwx
NyArMTY2MSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgIGlmIChpc0luaGVyaXQg
JiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKICAgICAKLSAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKLSAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlVG9BcHBseSk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjdXN0b21WYWwgPSBzdGF0ZS5wYXJlbnRT
dHlsZSgpLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCkpOwot
ICAgICAgICAgICAgaWYgKCFjdXN0b21WYWwpCi0gICAgICAgICAgICAgICAgY3VzdG9tVmFsID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgp
LCBjdXN0b21WYWwpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5h
bWUoKSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShj
dXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eSk7CisgICAgaWYgKGN1c3RvbVBy
b3BlcnR5VmFsdWUpIHsKKyAgICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUt
Pm5hbWUoKTsKKyAgICAgICAgYXV0byogdmFsdWUgPSBpc0luaXRpYWwgPyBudWxscHRyIDogaXNJ
bmhlcml0ID8gc3RhdGUucGFyZW50U3R5bGUoKS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1l
KSA6IGN1c3RvbVByb3BlcnR5VmFsdWU7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUgPyBtYWtlUmVmKCp2YWx1ZSkgOiBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggODUxOTg1NTU3YzMzMzg1YzY4MzQxNDM5ZGFmNGU1
NjY5YzMzYzc3Zi4uZTYxN2MzOGU3OWYyMzUxZmNhODdhOGJkYjI2NDEwNDA3MTNiYWYzNyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNjE0LDggKzYxNCw4IEBAIHN1YiBnZW5lcmF0ZUFuaW1h
dGlvblByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgbXkgJGluZGVudCA9IHNoaWZ0Owog
CiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiQW5pbWF0aW9uTGlzdCYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVu
c3VyZUFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlz
dCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5z
aXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiYXV0byYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVuc3VyZUFu
aW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiYXV0byogcGFyZW50TGlzdCA9IHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic2l6ZV90IGkgPSAwLCBw
YXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFy
ZW50TGlzdC0+YW5pbWF0aW9uKGkpLiIgLiBnZXRUZXN0RnVuY3Rpb24oJG5hbWUpIC4gIigpOyAr
K2kpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmIChsaXN0LnNp
emUoKSA8PSBpKVxuIjsKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdWIgZ2VuZXJhdGVBbmltYXRpb25Q
cm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgIGxpc3QuYW5pbWF0aW9uKGkpLnNldEFuaW1hdGlvbk1vZGUocGFyZW50TGlzdC0+YW5p
bWF0aW9uKGkpLmFuaW1hdGlvbk1vZGUoKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIn1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICJcbiI7Ci0gICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIi8vIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJv
cGVydHkgc2V0LlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKCA7IGkg
PCBsaXN0LnNpemUoKTsgKytpKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgbGlzdC5hbmltYXRpb24oaSkuIiAuIGdldENsZWFyRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xu
IjsKIApAQCAtNjc0LDExICs2NzQsMTEgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJ
bml0aWFsVmFsdWVTZXR0ZXIgewogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiLy8gQ2hlY2sgZm9yIChzaW5nbGUtbGF5ZXIpIG5vLW9w
IGJlZm9yZSBjbGVhcmluZyBhbnl0aGluZy5cbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiY29uc3QgRmlsbExheWVyJiBsYXllcnMgPSAqc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4i
IC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJhdXRvJiBsYXllcnMgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gImlmICghbGF5ZXJzLm5leHQoKSAmJiAoIWxheWVycy4iIC4gJHRlc3RGdW5jdGlv
biAuICIoKSB8fCBsYXllcnMuIiAuICRnZXR0ZXIgLiAiKCkgPT0gJGluaXRpYWwpKVxuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIq
IGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVu
Y3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJh
dXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3Nv
ckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiY2hpbGQtPiIgLiAkc2V0dGVyIC4gIigiIC4gJGluaXRpYWwgLiAiKTtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChjaGlsZCA9IGNoaWxkLT5uZXh0KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBjaGlsZC0+IiAuICRjbGVhckZ1bmN0aW9uIC4gIigpO1xuIjsKQEAgLTY5NywxMiAr
Njk3LDEyIEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVy
IHsKIAogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIi8vIENoZWNrIGZvciBuby1vcCBiZWZvcmUgY29weWluZyBhbnl0aGluZy5cbiI7Ci0g
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiaWYgKCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSAqc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKKyAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4iKCkgPT0gc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
IlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJhdXRvKiBjaGlsZCA9ICZzdHls
ZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3NvckZ1bmN0aW9uKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2
aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
Zm9yIChhdXRvKiBwYXJlbnQgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRM
YXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1
bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKKyAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAm
JiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQo
KSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkg
e1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hp
bGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJU
eXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CkBAIC03MjQsNyArNzI0LDcg
QEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgIG15ICRDU1NQ
cm9wZXJ0eUlkID0gIkNTU1Byb3BlcnR5IiAuICRuYW1lVG9JZHskbmFtZX07CiAKICAgbXkgJHNl
dHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5
ZXIqIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29y
RnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJhdXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nl
c3NvckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpICYmICFpczxD
U1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3Jl
YXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBn
ZW5lcmF0ZUluaGVyaXRWYWx1ZVNldHRlciB7CiAgIH0KICAgaWYgKCEkZGlkQ2FsbFNldFZhbHVl
KSB7CiAgICAgbXkgJGluaGVyaXRlZFZhbHVlID0gJHBhcmVudFN0eWxlIC4gIi0+IiAuICgkaXNT
VkcgPyAic3ZnU3R5bGUoKS4iIDogIiIpIC4gICRnZXR0ZXIgLiAiKCkiOwotICAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICIgLiBnZW5lcmF0ZVNldFZhbHVlU3RhdGVtZW50KCRu
YW1lLCAkaW5oZXJpdGVkVmFsdWUpIC4gIjtcbiI7CisgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5hbWUsICJmb3J3YXJk
SW5oZXJpdGVkVmFsdWUoIiAuICRpbmhlcml0ZWRWYWx1ZSAuICIpIikgLiAiO1xuIjsKICAgfQog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIn1cbiI7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gIlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJP
cHRpb25zeyRuYW1lfXsiY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKSI7CiAg
IH0gZWxzaWYgKGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1l
fXsiY29uZGl0aW9uYWwtY29udmVydGVyIn0pKSB7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29u
ZGl0aW9uYWwtY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTtcbiI7Ci0gICAg
JGNvbnZlcnRlZFZhbHVlID0gImNvbnZlcnRlZFZhbHVlLnZhbHVlKCkiOworICAgICRjb252ZXJ0
ZWRWYWx1ZSA9ICJXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlLnZhbHVlKCkpIjsKICAgfSBlbHNlIHsK
ICAgICAkY29udmVydGVkVmFsdWUgPSAiZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGU0MTJlYjVhZTVhMGE3OGRjODUy
YzQwZjNhYWM3MGI0YTZkYWY3NzIuLmNkNzE1NDQxZTdkOWNhNTZjNGY3MmUzMWY4Y2VhNTdmZjA2
MzM3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgYm9v
bCBEb2N1bWVudDo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KQogdm9pZCBEb2N1bWVu
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFn
ZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRv
bSwgaW50JiBtYXJnaW5MZWZ0KQogewogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTY29wZSgpLnJlc29sdmVy
KCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CisgICAgYXV0byBzdHlsZSA9IHN0eWxlU2NvcGUo
KS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOwogCiAgICAgaW50IHdpZHRoID0g
cGFnZVNpemUud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0KCk7CkBA
IC0yMDg4LDExICsyMDg4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0lu
UGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgICAgICAg
ICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUEFH
RV9TSVpFX1JFU09MVkVEOiB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdl
U2l6ZSgpOwotICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7Ci0gICAgICAg
IEFTU0VSVChzaXplLmhlaWdodCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gdmFsdWVG
b3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwKTsKLSAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGF1dG8mIHNpemUgPSBzdHlsZS0+cGFnZVNp
emUoKTsKKyAgICAgICAgQVNTRVJUKHNpemUud2lkdGguaXNGaXhlZCgpKTsKKyAgICAgICAgQVNT
RVJUKHNpemUuaGVpZ2h0LmlzRml4ZWQoKSk7CisgICAgICAgIHdpZHRoID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS53aWR0aCwgMCk7CisgICAgICAgIGhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHNpemUu
aGVpZ2h0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFBhdGguY3BwCmluZGV4IGMyYmRkMDU2Nzc4NjdhMDI5YzUxYWZhM2U3Y2Y5NzM3ZWU3
OTZlYmUuLjc3NzEyODFhYjk0N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFBhdGguY3BwCkBAIC0yNTgsMjMgKzI1OCwyMSBAQCBib29sIEV2ZW50UGF0aDo6
aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiBW
ZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1Rhcmdl
dChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIFZlY3RvcjxFdmVudFRh
cmdldCo+IHBhdGg7Ci0gICAgY29uc3QgTm9kZSogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nhc3Q8RXZl
bnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOworICAgIGF1dG8qIHRhcmdldE5vZGUgPSBjb25z
dF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKICAgICBpZiAoIXRhcmdldE5v
ZGUpIHsKLSAgICAgICAgY29uc3QgRE9NV2luZG93KiBkb21XaW5kb3cgPSBjb25zdF9jYXN0PEV2
ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOworICAgICAgICBhdXRvKiBkb21XaW5k
b3cgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOwogICAg
ICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICAgICB0
YXJnZXROb2RlID0gZG9tV2luZG93LT5kb2N1bWVudCgpOwogICAgICAgICBBU1NFUlQodGFyZ2V0
Tm9kZSk7CiAgICAgfQotCiAgICAgZm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRoKSB7Ci0gICAg
ICAgIGlmIChOb2RlKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgpLT50b05v
ZGUoKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRU
YXJnZXQoKS0+dG9Ob2RlKCkpIHsKICAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9kZS0+aXNDbG9z
ZWRTaGFkb3dIaWRkZW4oKm5vZGVJblBhdGgpKQogICAgICAgICAgICAgICAgIHBhdGguYXBwZW5k
KGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
cGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICB9Ci0KICAgICByZXR1
cm4gcGF0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGEyZTk2MTFkNmM1
NDg4ODYxNDZiYmE5MWExMDVkODA5MWI4Y2ZhYWUuLmRlZTY0NmMzN2QxNWFkNDQzM2MwMzFiNWUz
YTVhYzQxZTYxNDI5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25z
dCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZh
bGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9Ci0gICAgQ29udGFpbmVyTm9kZSYgb3du
ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9vd25l
ck5vZGUuZ2V0KCkpOyB9CisgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vd25lck5vZGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFhdHRyTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJOYW1lKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKaW5kZXggY2MxYTZhNGEwNjY2OGY2MDRiY2JkZDQzYzRlYjYyYzdhNzI2
NmU2Mi4uNWJhMzdjZjgwNmViZGNlZmEzMmEzNjVkZTljNmRjYjYzYjRlYTIwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBFdmVudFRhcmdldCog
TWVzc2FnZUV2ZW50Ojpzb3VyY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAgICAgIFtdKGNv
bnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBj
b25zdF9jYXN0PEV2ZW50VGFyZ2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPih3
aW5kb3cuZ2V0KCkpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYg
bWVzc2FnZVBvcnQpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50VGFy
Z2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPihtZXNzYWdlUG9ydC5nZXQoKSkp
OyB9CisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVu
dFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxET01XaW5kb3cqPih3aW5kb3cuZ2V0KCkpOyB9
LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYgbWVzc2FnZVBvcnQpIC0+
IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PE1lc3NhZ2VQb3J0Kj4obWVzc2FnZVBv
cnQuZ2V0KCkpOyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGUyZmJiY2Y4MWEx
M2NmZDA0MDVlMTIwMzkxZTUyYjNkZTVkM2UyODkuLjNjNzEyMGVhYTRmOGEzMGI5ZjQ2YjhiNWFh
OTk2ZDdmODYxN2U4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQzMCwxMSArNDMwLDEwIEBAIHN0
YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVP
clN0cmluZ1ZlY3Rvcihjb25zdCBWCiAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQ7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CiAgICAgICAgIFdURjo6
c3dpdGNoT24odmFyaWFudCwKLSAgICAgICAgICAgIFsmXShjb25zdCBSZWZQdHI8Tm9kZT4mIG5v
ZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5nZXQoKSkpOyB9LAotICAg
ICAgICAgICAgW10oY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxOb2RlPiYgbm9kZSkgeyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdl
dCgpKSk7IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgICAgICk7
CiAgICAgfQotCiAgICAgcmV0dXJuIG5vZGVTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXggODAz
ZjhmZTIzZjczNzBiY2NjZDJhNzVmNzAzOTE1NzNmZWFkM2E3ZC4uYjlhMDIyZDUwZDEzNjhkOTM1
M2YwMmNiNTAyMzNlNzkwMWRkMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IGNyZWF0ZShEb2N1
bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5SYW5nZSgpOwogCi0gICAgRG9jdW1lbnQmIG93bmVyRG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9vd25lckRvY3VtZW50
LmdldCgpKTsgfQorICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9vd25lckRvY3VtZW50OyB9CiAKICAgICBOb2RlJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsg
QVNTRVJUKG1fc3RhcnQuY29udGFpbmVyKCkpOyByZXR1cm4gKm1fc3RhcnQuY29udGFpbmVyKCk7
IH0KICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQub2Zm
c2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgK
aW5kZXggMTBiMmFkOTQzY2MzYjkwMzMxZGM3YWI2OGQ1NWZjZjk0OTJmZTA4Mi4uMmE1OGEzZmEw
YmMxZDllNTRiNmExYzM0NTFhOTcyOWE2MzcyYTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihXVEZNb3Zl
KGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIH0KIAotICAgIEV2ZW50TGlzdGVuZXImIGNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudExpc3RlbmVyJj4obV9jYWxsYmFj
ay5nZXQoKSk7IH0KKyAgICBFdmVudExpc3RlbmVyJiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2s7IH0KICAgICBib29sIHVzZUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUNhcHR1cmU7IH0KICAgICBib29sIGlzUGFzc2l2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYXNz
aXZlOyB9CiAgICAgYm9vbCBpc09uY2UoKSBjb25zdCB7IHJldHVybiBtX2lzT25jZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAwNDFlNmQxMzMxZjQ0MjNjMTVjOTg3Njlm
OWEyMjc0Y2VkMGFkMGZmLi4xZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFlZjBjOWMyOGRjNWZjNGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTY3Jp
cHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogICAgIH0KICAgICBmb3IgKGF1dG8mIHBlbmRpbmdT
Y3JpcHQgOiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKICAgICAgICAgaWYgKHBlbmRpbmdTY3Jp
cHQtPndhdGNoaW5nRm9yTG9hZCgpKQotICAgICAgICAgICAgY29uc3RfY2FzdDxQZW5kaW5nU2Ny
aXB0Jj4ocGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKKyAgICAgICAgICAgIHBl
bmRpbmdTY3JpcHQtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaAppbmRleCA2ZmFhZDQwNzUwNTA0NTBkZDNiOTA5YmVkYWMwMDMwMGNjOWUyYTg2Li40
ODAxMjZiNjUxNmI3ZTc5NTM4YjYyOWZiODZhZWMwMmM5MTcyZjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIENvbGxlY3Rpb25U
eXBlIEhUTUxDb2xsZWN0aW9uOjp0eXBlKCkgY29uc3QKIAogaW5saW5lIENvbnRhaW5lck5vZGUm
IEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9kZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fb3du
ZXJOb2RlOwogfQogCiBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpkb2N1bWVudCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXgg
ZWYyMDZmNmMxZTFhNTYxNDc1MDk2ZTIyYWI3OTdkMzIyYzliZTEwZi4uOTg1MzE5ODMxYjE1MzI5
YmJhOTRmY2ZhOTA1NDRlOGNmMzdjZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTdGFja0l0ZW0uaApAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBSZWY8SFRNTFN0YWNr
SXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQog
CiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTFN0YWNrSXRlbTo6bm9kZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fbm9kZS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fbm9kZS5nZXQoKTsKIH0KIAogaW5saW5lIEVsZW1lbnQmIEhUTUxTdGFja0l0ZW06
OmVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzYWMyODcwNzczYjgzNDBhZTVlM2I0Yjk2NzI5MmFk
Y2QyYjA5MzExLi5jMmU1MTRjYjdjNzIxMWJjMzdjMjQzMjhiZDQwMmY0OWU2ODQ0OGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTMzLDU4ICsxMzMsNDQgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wKIHsKICAgICBz
ZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHBhdXNlZCk7CiAKLSAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChwYWdl
LCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlw
dFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2Us
IHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOwotCi0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJh
bWUsIHBhdXNlZCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5k
Q2xpZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCkpIHsKLSAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlUGF1c2VkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlVW5wYXVzZWQoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMo
KSkgeworICAgICAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7CisKKyAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKCpmcmFtZSwgcGF1c2VkKTsKKworICAgICAgICBpZiAoYXV0byogZnJvbnRlbmRDbGllbnQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkg
eworICAgICAgICAgICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVBhdXNlZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBi
b29sIHBhdXNlZCkKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1
c2VkKEZyYW1lJiBmcmFtZSwgYm9vbCBwYXVzZWQpCiB7Ci0gICAgQVNTRVJUX0FSRyhmcmFtZSwg
ZnJhbWUpOwotCi0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgIGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmcmFtZS0+c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CisgICAgZnJhbWUuc2NyaXB0KCku
c2V0UGF1c2VkKHBhdXNlZCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAocGF1c2VkKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7Ci0gICAg
ICAgIGRvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6Okph
dmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVz
ZWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmpl
Y3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKLSAgICAgICAg
ZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwor
ICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6
SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogCi0gICAgc2V0SmF2YVNj
cmlwdFBhdXNlZChmcmFtZS0+dmlldygpLCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqIHZpZXcsIGJvb2wgcGF1
c2VkKQotewotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oKmNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGRvd25jYXN0
PFBsdWdpblZpZXdCYXNlPigqY2hpbGQpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1c2VkKTsKKyAg
ICBpZiAoYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oY2hpbGQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGNoaWxkLmdldCgpKS5zZXRKYXZhU2NyaXB0UGF1
c2VkKHBhdXNlZCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAzYjQ5NzkxZWUyOWU1YzUw
ZjBhM2M4YWMxYzQxNmRhNWE3Yzc3YmQxLi43ZjU4YzZjOGIwNDhiZjNkYzI3N2FiOWRmNjVmZWEy
NDY4MjJiN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZyYW1lOwotY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VHcm91
cDsKIApAQCAtNTYsOSArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWRJbnRlcm5hbCgpOwogCiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0
IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQo
UGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUq
LCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyos
IGJvb2wgcGF1c2VkKTsKKyAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUmLCBib29s
IHBhdXNlZCk7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNGU4Mjc1NDVlMmMwOGU0ZDNlZmEyMjRhNjNk
ZmQ1ZWIzNTcwYTljYi4uMjk1Yjk0YTFhNTU1YjJhMjhlNzUwMzZjNmIxZDAyNTcwNzI5OTdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC03NDEs
NyArNzQxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9u
YWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQKICAgICAgICAgRnJhbWUqIGNoaWxk
RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFT
U0VSVChjaGlsZEZyYW1lKTsKIAotICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5
KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihj
aGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjaGlsZEl0ZW0sIGZy
b21DaGlsZEl0ZW0pOwogICAgIH0KIH0KIApAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5
SXRlbSogZnJvbUl0CiAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0
ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQo
ZnJvbUNoaWxkSXRlbSk7CiAgICAgICAgIGlmIChGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUu
dHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKSkKLSAgICAgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVt
Jj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgICAgICBj
aGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY2hpbGRJdGVt
LCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggMGJiMjg4ZWFlZmNmODA4MWIxZjBjZjQxZGM1NmE5YTE4NzdjZmU3ZS4uZDVhNTEwNjAxNzRh
ODcwNmY4OTlkNTI4ODRhZDZiYjRjZjY3MDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcy
MywzMSArNzIzLDI3IEBAIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25z
dAogCiBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OworICAg
IGF1dG8qIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAgIGlmICghb3duZXJFbGVt
ZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiBvYmplY3QgPSBvd25lckVs
ZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRvIGRpc2Fzc29j
aWF0ZSBpdHNlbGYgZnJvbSBmcmFtZXMKICAgICAvLyB0aGF0IGl0IGhhcyBzdGFydGVkIGJ1dCBj
YW5jZWxlZCwgdGhlbiB0aGlzIGNhbiB0dXJuIGludG8gYW4gQVNTRVJUCi0gICAgLy8gc2luY2Ug
bV9vd25lckVsZW1lbnQgd291bGQgYmUgMCB3aGVuIHRoZSBsb2FkIGlzIGNhbmNlbGVkLgorICAg
IC8vIHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIG51bGxwdHIgd2hlbiB0aGUgbG9hZCBp
cyBjYW5jZWxlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1ODUKLSAgICBpZiAoIWlzPFJlbmRlcldpZGdldD4oKm9iamVjdCkpCisgICAgaWYgKCFp
czxSZW5kZXJXaWRnZXQ+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG9iamVjdCk7CiB9CiAKLUZyYW1lKiBGcmFtZTo6
ZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCitGcmFtZSogRnJhbWU6OmZyYW1l
Rm9yV2lkZ2V0KGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVF9BUkcod2lkZ2V0
LCB3aWRnZXQpOwotCi0gICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBSZW5kZXJXaWRn
ZXQ6OmZpbmQod2lkZ2V0KSkKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6
OmZpbmQod2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5mcmFtZU93bmVyRWxlbWVu
dCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKIAogICAgIC8vIEFzc3VtZSBhbGwgd2lkZ2V0cyBhcmUg
ZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0LgogICAgIC8vIEZJ
WE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0IGZvciBzY3JvbGwgYmFycyEKLSAgICBy
ZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKKyAgICByZXR1cm4g
JmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpOwogfQogCiB2b2lkIEZyYW1lOjpj
bGVhclRpbWVycyhGcmFtZVZpZXcgKnZpZXcsIERvY3VtZW50ICpkb2N1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAppbmRleCA2ODM0MTEwN2Q5ODFjNGEzMmFiZWI5YzUxMDkzYzg3YTgxZGY4NjU1Li45YThm
NzNjY2I1OGQ3N2VkZDQ5MTk2YTU3ZmZkYmFmMTM4YTFlYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBA
IC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXll
clRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdl
dCYpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGlu
Z3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDc3MDc1ZmQ1NzliZmNiMzlm
NjZmNmQ5MzY2OWRlZDUwNzZhMDM3NDUuLmIyOTEyMzYzZjIxZGQ4MGQ2YmUwMTBkMDhhY2EyN2Fl
OTJmNzViMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMsNyArMyw3IEBACiAg
KiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KICAq
ICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9y
Zz4KICAqICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA2LDE4ICs1MDYsMTcgQEAgYm9vbCBG
cmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKLSAg
ICAgICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKSkKLSAgICAgICAgICAg
IHdpbmRvdy0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CisgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgcmVwYWludFJl
Y3QgPSByZWN0OwotICAgIHJlcGFpbnRSZWN0Lm1vdmUocmVuZGVyZXItPmJvcmRlckxlZnQoKSAr
IHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAotICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIt
PmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CisgICAgcmVwYWludFJlY3Qu
bW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksIHJl
bmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgIHJlbmRl
cmVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsKIH0KIApAQCAtNTQ0LDE0ICs1NDMs
MTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0
KQogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCiBib29sIEZyYW1l
Vmlldzo6c2NoZWR1bGVBbmltYXRpb24oKQogewotICAgIGlmIChIb3N0V2luZG93KiB3aW5kb3cg
PSBob3N0V2luZG93KCkpIHsKLSAgICAgICAgd2luZG93LT5zY2hlZHVsZUFuaW1hdGlvbigpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIHJldHVy
biB0cnVlOwogfQorCiAjZW5kaWYKIAogdm9pZCBGcmFtZVZpZXc6OnNldE1hcmdpbldpZHRoKExh
eW91dFVuaXQgdykKQEAgLTEwNTYsMjIgKzEwNTcsMjIgQEAgR3JhcGhpY3NMYXllciogRnJhbWVW
aWV3OjpncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQgcGxhdGZv
cm0KIHsKICAgICAvLyBUbyBmaW5kIHRoZSBXaWRnZXQgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHBs
YXRmb3JtV2lkZ2V0IHdlIGhhdmUgdG8gZG8gYSBsaW5lYXIKICAgICAvLyBzZWFyY2ggb2Ygb3Vy
IGNoaWxkIHdpZGdldHMuCi0gICAgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CisgICAg
Y29uc3QgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiB3aWRn
ZXQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmICh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkg
IT0gcGxhdGZvcm1XaWRnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm91bmRX
aWRnZXQgPSB3aWRnZXQuZ2V0KCk7CisgICAgICAgIGZvdW5kV2lkZ2V0ID0gd2lkZ2V0LnB0cigp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoIWZvdW5kV2lkZ2V0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdl
dDo6ZmluZChmb3VuZFdpZGdldCk7CisgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCpmb3VuZFdpZGdldCk7CiAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVuZGVyTGF5ZXIqIHdpZGdldExheWVyID0gcmVuZGVy
V2lkZ2V0LT5sYXllcigpOworICAgIGF1dG8qIHdpZGdldExheWVyID0gcmVuZGVyV2lkZ2V0LT5s
YXllcigpOwogICAgIGlmICghd2lkZ2V0TGF5ZXIgfHwgIXdpZGdldExheWVyLT5pc0NvbXBvc2l0
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxODAsMTEgKzIxODEsMTEgQEAg
Ym9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6
c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBp
ZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgfHwgbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICAgICAgZnJhbWUoKS5wYWdlKCkt
PmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IGJvb2wgaXNDb21wb3NpdGVk
Q29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICBib29sIGlzQ29t
cG9zaXRlZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAKICAgICAv
LyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RU
b1Njcm9sbAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKQEAgLTIyMjAsNyArMjIyMSw3IEBA
IGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgfQogCiAgICAgLy8gMSkgc2Nyb2xsCi0gICAg
aG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3Qp
OworICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RU
b1Njcm9sbCwgY2xpcFJlY3QpOwogCiAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVk
IG9iamVjdHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAogICAgIGZvciAoYXV0byYgdXBkYXRl
UmVjdCA6IHJlZ2lvblRvVXBkYXRlLnJlY3RzKCkpIHsKQEAgLTIyMzUsNyArMjIzNiw3IEBAIGJv
b2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9s
bERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNsaXBzUmVwYWlu
dHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7Ci0g
ICAgICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRl
UmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5pbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyh1cGRhdGVSZWN0KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI2NDIsOSArMjY0MywxMCBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9u
VXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbikKIAogSG9zdFdpbmRvdyogRnJh
bWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiBu
dWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7CiB9
CiAKIHZvaWQgRnJhbWVWaWV3OjphZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByKQpAQCAtMjc4NCwxMCArMjc4NiwxMiBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0VGlsZWRC
YWNraW5nU2Nyb2xsYWJpbGl0eSgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIHZvaWQgRnJh
bWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkKIHsKICAgICBhZGp1c3RUaWxl
ZEJhY2tpbmdTY3JvbGxhYmlsaXR5KCk7CiB9CisKICNlbmRpZgogCiBzdGF0aWMgTGF5ZXJGbHVz
aFRocm90dGxlU3RhdGU6OkZsYWdzIGRldGVybWluZUxheWVyRmx1c2hUaHJvdHRsZVN0YXRlKFBh
Z2UmIHBhZ2UpCkBAIC00MDgyLDggKzQwODYsNiBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Ny
b2xsQ29ybmVyKCkKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3Zl
KCpjb3JuZXJTdHlsZSkpOwogICAgICAgICBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKGNvcm5lclJl
Y3QpOwogICAgIH0KLQotICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpOwogfQog
CiB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQpAQCAtNDE1NywxNSArNDE1OSwxNCBAQCBD
b2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIGJvb2wgRnJh
bWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHdp
ZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkp
IHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmhhc0N1c3Rv
bVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSkg
eworICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKS5oYXND
dXN0b21TY3JvbGxiYXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkgewotICAgICAgICAgICAgaWYgKGRv
d25jYXN0PFNjcm9sbGJhcj4oKndpZGdldCkuaXNDdXN0b21TY3JvbGxiYXIoKSkKKyAgICAgICAg
fSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlm
IChkb3duY2FzdDxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkuaXNDdXN0b21TY3JvbGxiYXIoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNDE3MywxMSArNDE3NCwxMCBAQCBGcmFtZVZpZXcqIEZyYW1l
Vmlldzo6cGFyZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXBhcmVudCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFt
ZSgpLnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCku
dHJlZSgpLnBhcmVudCgpOworICAgIGlmICghcGFyZW50RnJhbWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygpOwogfQogCiBib29sIEZyYW1l
Vmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKQEAgLTUxODMs
OCArNTE4Myw4IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKQogICAg
IC8vIHNjcmlwdHMgaW4gcmVzcG9uc2UgdG8gTlBQX1NldFdpbmRvdywgZm9yIGV4YW1wbGUpLCBz
byB3ZSBuZWVkIHRvIGtlZXAgdGhlIFdpZGdldHMKICAgICAvLyBhbGl2ZSBkdXJpbmcgZW51bWVy
YXRpb24uCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBjb2xsZWN0QW5kUHJvdGVjdFdpZGdldHMo
bV93aWRnZXRzSW5SZW5kZXJUcmVlKSkgewotICAgICAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5k
ZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0LmdldCgpKSkgewotICAgICAgICAg
ICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRlcldpZGdldC0+dXBkYXRlV2lkZ2V0UG9z
aXRpb24oKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0OjpmaW5k
KCp3aWRnZXQpKSB7CisgICAgICAgICAgICBhdXRvIGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVy
ZXItPnVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oaWdu
b3JlV2lkZ2V0U3RhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
aW5kZXggMjNhN2ZkMWI0NGY2ZWU5MDQyMGIyMDUwODkzYzc4M2FhZTg1MDNiNi4uNzExYjc0YjQ2
N2IzNzU4ODRhMzU3OGE0MDJhNGU0NGM0NjIzMzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICAgIChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlz
ICh3ZWlzQGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKLSAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA5LCAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzQsMTYgKzc0
LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCi0gICAgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3coKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzZXRGcmFtZVJlY3Qo
Y29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQotICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICBib29sIHNj
aGVkdWxlQW5pbWF0aW9uKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIEZyYW1lJiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RnJhbWUmPihtX2ZyYW1lLmdldCgpKTsgfQorICAgIEZy
YW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIApAQCAtOTUsMTUgKzk1LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE1hcmdpbldpZHRoKExheW91dFVuaXQpOwogICAgIHZvaWQg
c2V0TWFyZ2luSGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKTsKIAotICAgIFJlZjxTY3JvbGxiYXI+IGNy
ZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgUmVmPFNj
cm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAot
ICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBzZXRD
b250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNTaXplKCkgZmluYWw7CiAKICAg
ICB2b2lkIGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25zdDsKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllckZvclBs
YXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNj
aGVkdWxlTGF5ZXJGbHVzaEFsbG93aW5nVGhyb3R0bGluZygpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIGFueSBTY3JvbGxhYmxlQXJlYSBjYW4gaGF2ZSBhIG5v
ZGUgaW4gdGggU2Nyb2xsaW5nVHJlZSwgdGhpcyBzaG91bGQKICAgICAvLyBiZWNvbWUgYSB2aXJ0
dWFsIGZ1bmN0aW9uIG9uIFNjcm9sbGFibGVBcmVhLgpAQCAtMjI1LDIxICsyMjUsMjEgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhJbnRTaXplKTsKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKSBjb25zdDsKICAgICAKLSAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7
CiAKLSAgICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rml4ZWRWaXNp
YmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgZmluYWw7CisgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9z
aXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBUaGUg
c2Nyb2xsT3JpZ2luLCBzY3JvbGxQb3NpdGlvbiwgbWluaW11bVNjcm9sbFBvc2l0aW9uIGFuZCBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24gYXJlIGFsbCBhZmZlY3RlZCBieSBmcmFtZSBzY2FsZSwKICAg
ICAvLyBidXQgbGF5b3V0Vmlld3BvcnQgY29tcHV0YXRpb25zIHJlcXVpcmUgdW5zY2FsZWQgc2Ny
b2xsIHBvc2l0aW9ucy4KQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCBy
ZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yOwpAQCAtMzc5LDkgKzM3OSw5IEBAIHB1YmxpYzoKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGNvcm5lclJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3ND
b250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6
b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFsOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgZmluYWw7Cisg
ICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OwogCkBAIC00MzYsMTAgKzQzNiwxMCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvUmVu
ZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAg
ICAvLyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2
aWEgcmVuZGVyZXJzLCBpbiBvcmRlciB0byB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50Lgot
ICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qg
ZmluYWw7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNG
cmFtZVZpZXdTY3JvbGxDb3JuZXIoY29uc3QgUmVuZGVyU2Nyb2xsYmFyUGFydCYgc2Nyb2xsQ29y
bmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9PSAmc2Nyb2xsQ29ybmVyOyB9CiAK
QEAgLTQ1MSwyMCArNDUxLDIwIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNjcm9sbGFiaWxp
dHkgeyBTY3JvbGxhYmxlLCBTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNTY3JvbGxhYmxlKFNjcm9sbGFiaWxpdHkgZGVmaW5pdGlvbk9mU2Ny
b2xsYWJsZSA9IFNjcm9sbGFiaWxpdHk6OlNjcm9sbGFibGUpOwogCi0gICAgYm9vbCBpc1Njcm9s
bGFibGVPclJ1YmJlcmJhbmRhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxl
T3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Njcm9sbGFi
bGVPclJ1YmJlcmJhbmRhYmxlKCkgZmluYWw7CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZUFuY2VzdG9yKCkgZmluYWw7CiAKICAgICBlbnVtIFNjcm9sbGJhck1vZGVzQ2Fs
Y3VsYXRpb25TdHJhdGVneSB7IFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5LCBBbnlSdWxlIH07CiAg
ICAgdm9pZCBjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNjcm9sbGJhck1vZGVzQ2FsY3VsYXRpb25TdHJh
dGVneSA9IEFueVJ1bGUpOwogCi0gICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkU2V0Q3Vyc29yKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
bWV0aG9kIG9uY2UgcGx1Z2luIGxvYWRpbmcgaXMgZGVjb3VwbGVkIGZyb20gbGF5b3V0LgogICAg
IHZvaWQgZmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKLSAgICBib29sIHNob3Vs
ZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xs
YmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlk
ZTsKIAogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CkBAIC00ODMs
NyArNDgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSopIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxh
YmxlQXJlYXMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQogCi0g
ICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCYpIGZpbmFsOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBv
cnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9u
IE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNj
cm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCkBAIC01MDEsNyArNTAxLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogICAgIAotICAgIGJvb2wgaW5Q
cm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luUHJvZ3JhbW1h
dGljU2Nyb2xsOyB9CisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7IH0KICAgICB2b2lkIHNldEluUHJvZ3Jh
bW1hdGljU2Nyb2xsKGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsKSB7IG1faW5Qcm9ncmFtbWF0aWNT
Y3JvbGwgPSBwcm9ncmFtbWF0aWNTY3JvbGw7IH0KIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCkBAIC01MDksOCArNTA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5pdGlh
bFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1faW5pdGlhbFZpZXdwb3J0U2l6
ZSA9IHNpemU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFu
Y2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9y
bWFuY2VUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYShib29sKSBjb25zdDsKQEAgLTUyMywyMCArNTIzLDIwIEBAIHB1YmxpYzoKIAog
ICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRp
b24oKSBjb25zdDsKIAotICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2hlYWRlckhlaWdodDsgfQorICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SGVhZGVySGVpZ2h0KGludCk7Ci0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHRvcENv
bnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0VHlwZTo6V2Vi
Q29yZUNvbnRlbnRJbnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxv
YXQgdG9wQ29udGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRU
eXBlOjpXZWJDb3JlQ29udGVudEluc2V0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHRvcENvbnRl
bnRJbnNldERpZENoYW5nZShmbG9hdCBuZXdUb3BDb250ZW50SW5zZXQpOwogCiAgICAgdm9pZCB0
b3BDb250ZW50RGlyZWN0aW9uRGlkQ2hhbmdlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxTdGFydExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
aWxsU3RhcnRMaXZlUmVzaXplKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxs
RW5kTGl2ZVJlc2l6ZSgpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFi
bGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZh
aWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CiAKICAgICB2b2lkIGFkanVzdFRpbGVkQmFj
a2luZ1Njcm9sbGFiaWxpdHkoKTsKIApAQCAtNTc0LDI5ICs1NzQsMjkgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbFNu
YXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
cygpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGll
cygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRD
b250ZW50KGZsb2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSkgb3ZlcnJpZGU7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChm
bG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKIAotICAgIHZvaWQgc2hvdygp
IG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBv
dmVycmlkZTsKKyAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlcGFpbnRTbG93UmVw
YWludE9iamVjdHMoKTsKIAotICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0ZsaXBw
ZWREb2N1bWVudCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1l
VmlldyhGcmFtZSYpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlu
UHJlTGF5b3V0U3R5bGVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlID09IElu
UHJlTGF5b3V0U3R5bGVVcGRhdGU7IH0KIAotICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiAg
ICAgYm9vbCB1c2VTbG93UmVwYWludHMoYm9vbCBjb25zaWRlck92ZXJsYXAgPSB0cnVlKSBjb25z
dDsKQEAgLTYyOCw5ICs2MjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXBkYXRlQ29t
cG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIGNvbnN0OwogICAgIGJvb2wgZmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNvbnN0IEZyYW1lJiByb290RnJhbWVGb3JGbHVzaCk7
CiAKLSAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRl
bnRTaXplQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQ
bGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNj
cm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbE9mZnNldENo
YW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQs
IGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25Ub1Zp
ZXdwb3J0KCk7CkBAIC02NTEsMzkgKzY1MSwzOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJGbHVzaFRocm90dGxpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkanVzdFRp
bGVkQmFja2luZ0NvdmVyYWdlKCk7CiAKLSAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xs
YmFyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpIGZpbmFs
OwogCi0gICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgLy8gU2Ny
b2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY3JvbGxUbyhj
b25zdCBTY3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9s
bGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRSZWN0
IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBTY3JvbGxQ
b3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRp
bmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Ny
b2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JW
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
Rm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCi0gICAgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbnRlbnRzUmVzaXplZCgpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5v
YnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBib29sIHVz
ZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzQXN5
bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5p
bWF0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1l
c3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzQ29tcG9z
aXRlZFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc0FzeW5jU2Nyb2xsaW5n
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGUgc2Nyb2xsYmFyIG5vdGlmaWNhdGlv
bnMgdG8gdXBkYXRlIHRoZSBBWE9iamVjdCBjYWNoZS4KLSAgICB2b2lkIGRpZEFkZFNjcm9sbGJh
cihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmll
bnRhdGlvbikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhcios
IFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIEludFNpemUgc2l6ZUZvclJlc2l6
ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgpOwpAQCAt
NjkzLDcgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxlQXJlYVNl
dCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0Vmlld3BvcnQoKTsKIAotICAgIHZvaWQgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCBlbmFibGVTcGVjdWxhdGl2ZVRpbGluZ0lmTmVlZGVkKCk7CiAgICAgdm9pZCBzcGVjdWxh
dGl2ZVRpbGluZ0VuYWJsZVRpbWVyRmlyZWQoKTsKQEAgLTcwOCw3ICs3MDgsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENvcm5lcigpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVy
KCkgZmluYWw7CiAKICAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA5MzMxYjMwMjkwN2U3OWI3YzExYjVlYzA4NDZiYWZkNWMzZmVj
NDk3Li42YzQ3NjVmMGNiYzQ1MjQyODJlMDdjNjE4NjY0ZTc2YTAyNTMxMWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTEzMzMsMTggKzEzMzMsMTUgQEAgdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGlu
Z1N0YXRlQ2hhbmdlZCgpCiBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFnZTo6cGx1Z2lu
Vmlld3MoKQogewogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiB2aWV3czsKLQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LT52aWV3KCk7CisgICAgICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFz
ZT4oKndpZGdldCkpCi0gICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBsdWdp
blZpZXdCYXNlPigqd2lkZ2V0KSk7CisgICAgICAgICAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+
KHdpZGdldC5nZXQoKSkpCisgICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBs
dWdpblZpZXdCYXNlPih3aWRnZXQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiB2aWV3czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDQ0
MzA1NDY3NTU3MWJiOTBkNzQwMWYyYmIxMTIzYWNlOWFmY2UxMTAuLjY3Y2UzMTcwN2NiMjE3YjNi
MDE0ZjE2OWE5MjRmNGM4YzVmZDljODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAKQEAgLTI4NiwxNiArMjg2LDE5IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWRE
ZXN0aW5hdGlvbnMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAKIFN0cmlu
ZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCkpOworCisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CiAgICAgcHJpbnRDb250ZXh0
LmJlZ2luKDgwMCk7IC8vIEFueSB3aWR0aCBpcyBPSyBoZXJlLgotICAgIGRvY3VtZW50LT51cGRh
dGVMYXlvdXQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZG9j
dW1lbnQtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsK
KyAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKKyAgICBhdXRvIHN0eWxlID0gZG9jdW1lbnQu
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOwogCiAgICAg
Ly8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KICAg
ICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVmdCIpKSB7CiAgICAgICAgIGlm
IChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygiYXV0byIpOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7ICJhdXRvIiB9Owog
ICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPm1hcmdpbkxlZnQoKS52YWx1ZSgp
KTsKICAgICB9CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibGluZS1oZWlnaHQiKSkK
QEAgLTMwNSw5ICszMDgsOSBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJh
bWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYQogICAgIGlmICghc3Ry
Y21wKHByb3BlcnR5TmFtZSwgImZvbnQtZmFtaWx5IikpCiAgICAgICAgIHJldHVybiBzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuZmlyc3RGYW1pbHkoKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0
eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFn
ZVNpemUoKS53aWR0aCgpLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5bGUtPnBh
Z2VTaXplKCkuaGVpZ2h0KCkudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cihzdHlsZS0+cGFnZVNpemUoKS53aWR0aC52YWx1ZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVy
KHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodC52YWx1ZSgpKTsKIAotICAgIHJldHVybiBTdHJpbmco
InBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAiKSArIHByb3BlcnR5TmFtZTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIs
IHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxl
KEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDFjNDdlM2RmYzRkZGQxYmQ0NWMzMjU3
ZjdiNGVkMzBkZWI4ZjlhNjguLjc2ZTgwYzA3OGYxYzY2YmRhZDZiODAxZjg5MzdkYmQwMDFiZmNj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9u
RXZlbnRzSWZOZWVkZWQoKQogICAgICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAmJiBt
X2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewogICAg
ICAgICAgICAgaWYgKG1fb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0g
bV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS5zY3JvbGxQb3NpdGlv
bigpOwotICAgICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdn
ZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdn
ZXIoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25j
YXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAg
ICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgICAgICB9CkBAIC01NzcsNyAr
NTc3LDcgQEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCkKICAgICAg
ICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigp
KSB7CiAgICAgICAgICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPSBtX29iamVjdC0+dmlldygpLmZyYW1lVmlldygpLnNjcm9s
bFBvc2l0aW9uRm9yRml4ZWRQb3NpdGlvbigpLnkoKS50b0Zsb2F0KCk7Ci0gICAgICAgICAgICAg
ICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9s
bEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9u
VHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPj0gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFsdWUo
KSAmJiAoIXNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSB8fCBjdXJyZW50U2Nyb2xsUG9zaXRp
b24gPD0gc2Nyb2xsVHJpZ2dlci5lbmRWYWx1ZSgpLnZhbHVlKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTY1Myw3ICs2NTMsNyBAQCBkb3VibGUg
QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MoZG91YmxlIHNjYWxlLCBkb3VibGUgb2Zmc2V0LCBjb25z
dCBUaW1pbmdGdW5jdGlvbgogICAgIH0KIAogICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAg
ICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7
CisgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCk7
CiAKICAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9uOiB7CkBAIC03NDMsNyArNzQzLDcgQEAgZG91
YmxlIEFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAm
JiBtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewot
ICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOwor
ICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAoc2Nyb2xsVHJpZ2dl
ci5oYXNFbmRWYWx1ZSgpICYmIG1fb2JqZWN0KSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQg
PSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICBmbG9hdCBzdGFydFZhbHVlID0gc2Nyb2xsVHJpZ2dlci5zdGFy
dFZhbHVlKCkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAyZDg5NDA0NTIwNDhhMjhmNDExMGE1
NTIwMzVmZjFjNzFmZDg4ZDU1Li45ZjZiOTE3YzZlYzFjNmZlYmJhNjk0MGExNjcwNWJkYmQ1YWM3
NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCkBAIC05MCw4ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3Ro
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25z
dCBMCiAKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8s
IGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZEZ1bmMoYW5p
bSwgZnJvbS53aWR0aCgpLCB0by53aWR0aCgpLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgpLCBwcm9ncmVz
cykpOworICAgIHJldHVybiB7IGJsZW5kRnVuYyhhbmltLCBmcm9tLndpZHRoLCB0by53aWR0aCwg
cHJvZ3Jlc3MpLCBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgcHJvZ3Jl
c3MpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgU2hhZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRvd1N0eWxlIGZyb20sIFNoYWRvd1N0eWxlIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCkBAIC00OTIsNyArNDkxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBj
bGFzcyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0dGVy
PGNvbnN0IFQmPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
TGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYgKFJlbmRl
clN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCkp
CisgICAgTGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYg
KFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRl
cikoVCYmKSkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29uc3QgVCY+KHByb3As
IGdldHRlcikKICAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCiAgICAgewpAQCAtNTA0LDcgKzUw
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIChSZW5kZXJTdHls
ZTo6Km1fc2V0dGVyKShUKTsKKyAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShUJiYp
OwogfTsKIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyQ2xpcFBhdGggOiBwdWJsaWMgUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjxDbGlwUGF0aE9wZXJhdGlvbj4gewpAQCAtMTA0OSw3ICsxMDQ4LDcg
QEAgcHVibGljOgogY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmlt
YXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEZpbGxMYXllciogKFJlbmRlclN0eWxlOjoqTGF5
ZXJzR2V0dGVyKSgpIGNvbnN0OworICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyJiAoUmVuZGVy
U3R5bGU6OipMYXllcnNHZXR0ZXIpKCkgY29uc3Q7CiAgICAgdHlwZWRlZiBGaWxsTGF5ZXImIChS
ZW5kZXJTdHlsZTo6KkxheWVyc0FjY2Vzc29yKSgpOwogCiAgICAgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIExheWVyc0dldHRlciBnZXR0ZXIsIExheWVyc0Fj
Y2Vzc29yIGFjY2Vzc29yKQpAQCAtMTA4Niw4ICsxMDg1LDggQEAgcHVibGljOgogICAgICAgICBp
ZiAoIWEgfHwgIWIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgY29uc3Qg
RmlsbExheWVyKiBmcm9tTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIHRvTGF5ZXIgPSAoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAg
ICBhdXRvKiBmcm9tTGF5ZXIgPSAmKGEtPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0
byogdG9MYXllciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOwogCiAgICAgICAgIHdoaWxlIChm
cm9tTGF5ZXIgJiYgdG9MYXllcikgewogICAgICAgICAgICAgaWYgKCFtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlci0+ZXF1YWxzKGZyb21MYXllciwgdG9MYXllcikpCkBAIC0xMTAyLDkgKzExMDEs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0s
IFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHls
ZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29u
c3QgRmlsbExheWVyKiBhTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGJMYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAg
IEZpbGxMYXllciogZHN0TGF5ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CisgICAg
ICAgIGF1dG8qIGFMYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRv
KiBiTGF5ZXIgPSAmKGItPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0byogZHN0TGF5
ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICAgICAgd2hpbGUgKGFMYXll
ciAmJiBiTGF5ZXIgJiYgZHN0TGF5ZXIpIHsKICAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyLT5ibGVuZChhbmltLCBkc3RMYXllciwgYUxheWVyLCBiTGF5ZXIsIHByb2dyZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcAppbmRleCBlZDk2YWIxNTM4ODJiNTlkYzk5Y2JkZjVhYzk4NjRkYjBmMDA1
YTA0Li4yMmJkZTQ2OGEwNmFiNDZjMGJhMGU4ODhiOWI3MzVkMTQ1MTJjMGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC05OSwyOCArOTksMjggQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmEKIAogRXZlbnRU
cmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZlbnRUcmFja2lu
Z1JlZ2lvbnNGb3JGcmFtZShjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0CiB7Ci0gICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIGF1dG8qIHJl
bmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlclZpZXcg
fHwgcmVuZGVyVmlldy0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm4g
RXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIC8vIE9uIGlPUywgd2UgdXNlIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uIHRvIHJlcHJlc2Vu
dCB0aGUgcmVnaW9uIGNvdmVyZWQgYnkgZWxlbWVudHMgd2l0aCB0b3VjaCBldmVudCBoYW5kbGVy
cy4KICAgICBBU1NFUlQoZnJhbWUuaXNNYWluRnJhbWUoKSk7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXZlbnRUcmFja2lu
Z1JlZ2lvbnMoKTsKICAgICByZXR1cm4gZG9jdW1lbnQtPmV2ZW50VHJhY2tpbmdSZWdpb25zKCk7
CiAjZWxzZQotICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcgPSBmcmFt
ZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNr
aW5nUmVnaW9ucygpOwogCisgICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOworCiAg
ICAgLy8gRklYTUU6IHNob3VsZCBBU1NFUlQoIWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgaGVy
ZSwgYnV0IG5lZWQgdG8gZml4IERlYnVnUGFnZU92ZXJsYXlzCiAgICAgLy8gdG8gbm90IGFzayBm
b3IgcmVnaW9ucyBhdCBiYWQgdGltZXMuCiAKLSAgICBpZiAoY29uc3QgRnJhbWVWaWV3OjpTY3Jv
bGxhYmxlQXJlYVNldCogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJl
YXMoKSkgeworICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9s
bGFibGVBcmVhcygpKSB7CiAgICAgICAgIGZvciAoYXV0byYgc2Nyb2xsYWJsZUFyZWEgOiAqc2Ny
b2xsYWJsZUFyZWFzKSB7CiAgICAgICAgICAgICAvLyBDb21wb3NpdGVkIHNjcm9sbGFibGUgYXJl
YXMgY2FuIGJlIHNjcm9sbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgICAgICBpZiAo
c2Nyb2xsYWJsZUFyZWEtPnVzZXNBc3luY1Njcm9sbGluZygpKQpAQCAtMTM2LDE4ICsxMzYsMjEg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IGZyYW1lVmlldy0+d2lkZ2V0c0luUmVuZGVyVHJlZSgpKSB7Ci0gICAgICAgIFJlbmRlcldp
ZGdldCogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldCk7Ci0gICAgICAg
IGlmICghcmVuZGVyV2lkZ2V0IHx8ICFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCisgICAg
ICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgCi0gICAgICAgIGlmIChkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCku
d2FudHNXaGVlbEV2ZW50cygpKQotICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24u
dW5pdGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
aWYgKCFkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkud2FudHNXaGVlbEV2ZW50cygp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJl
bmRlcldpZGdldDo6ZmluZCgqd2lkZ2V0KTsKKyAgICAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5p
dGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICB9CiAgICAg
Ci0gICAgLy8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZy
YW1lIGFzIGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQg
aGVyZS4KICAgICBFdmVudFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5nUmVnaW9uczsKKwor
ICAgIC8vIEZJWE1FOiBpZiB3ZSd2ZSBhbHJlYWR5IGFjY291bnRlZCBmb3IgdGhpcyBzdWJmcmFt
ZSBhcyBhIHNjcm9sbGFibGUgYXJlYSwgd2UgY2FuIGF2b2lkIHJlY3Vyc2luZyBpbnRvIGl0IGhl
cmUuCiAgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgp
OyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgRnJhbWVWaWV3KiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOworICAg
ICAgICBhdXRvKiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAo
IXN1YmZyYW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNjAsNyArMTYzLDcg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMu
dW5pdGUoc3ViZnJhbWVSZWdpb24pOwogICAgIH0KIAotICAgIERvY3VtZW50OjpSZWdpb25GaXhl
ZFBhaXIgd2hlZWxIYW5kbGVyUmVnaW9uID0gZnJhbWUuZG9jdW1lbnQoKS0+YWJzb2x1dGVSZWdp
b25Gb3JFdmVudFRhcmdldHMoZnJhbWUuZG9jdW1lbnQoKS0+d2hlZWxFdmVudFRhcmdldHMoKSk7
CisgICAgYXV0byB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0
ZVJlZ2lvbkZvckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0
cygpKTsKICAgICBib29sIHdoZWVsSGFuZGxlckluRml4ZWRDb250ZW50ID0gd2hlZWxIYW5kbGVy
UmVnaW9uLnNlY29uZDsKICAgICBpZiAod2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIHBvc2l0aW9uOnN0aWNreSBoZXJlIHRvby4K
QEAgLTE3Miw2ICsxNzUsNyBAQCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogCiAgICAgLy8gRklY
TUU6IElmIHRoaXMgaXMgbm90IHRoZSBtYWluIGZyYW1lLCB3ZSBjb3VsZCBjbGlwIHRoZSByZWdp
b24gdG8gdGhlIGZyYW1lJ3MgYm91bmRzLgogICAgIGV2ZW50VHJhY2tpbmdSZWdpb25zLnVuaXRl
U3luY2hyb25vdXNSZWdpb24oZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIG5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKTsKKwogICAgIHJldHVybiBldmVudFRyYWNraW5nUmVnaW9uczsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggOWU3MGU5ZDM2Yjk5NWVk
Y2JlYTI5MjU0MzY3MzY2YzQ5MThhM2JjMS4uYjExMTY0ZjA4NTVkYmRmMjVmNmIxYzY4NmY3MTZi
NDY3MjMyYzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBLZXllZENvZGluZ19oCi0jZGVmaW5lIEtleWVkQ29kaW5nX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTU2
LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQg
dmFsdWUpCkBAIC0yMTEsNSArMjEwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkQ29kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoQm94LmgKaW5kZXggZTdhOTc4YTljOGMwNTI4ZDI5Y2EwZTBkMzdjYzlmNGM3ZWQ3NzEwNy4u
M2UwZjIxODRlNjg2ZDBlZGMwY2VhMzliMzQ1OGU3NGY2YzZlYTc1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoQm94LmgKQEAgLTE5LDggKzE5LDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgTGVuZ3RoQm94X2gKLSNkZWZpbmUgTGVuZ3RoQm94
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiV3JpdGlu
Z01vZGUuaCIKQEAgLTMxLDEyICszMCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBCb3hFeHRlbnQgewogcHVibGljOgogICAgIEJveEV4dGVudCgp
Ci0gICAgICAgIDogbV9zaWRlcyh7eyBUKDApLCBUKDApLCBUKDApLCBUKDApIH19KQorICAgICAg
ICA6IG1fc2lkZXMoeyB7IHsgMCB9LCB7IDAgfSwgeyAwIH0sIHsgMCB9IH0gfSkKICAgICB7CiAg
ICAgfQogCiAgICAgQm94RXh0ZW50KGNvbnN0IFQmIHRvcCwgY29uc3QgVCYgcmlnaHQsIGNvbnN0
IFQmIGJvdHRvbSwgY29uc3QgVCYgbGVmdCkKLSAgICAgICAgOiBtX3NpZGVzKHt7IHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdCB9fSkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQgfSB9KQorICAgIHsKKyAgICB9CisKKyAgICBCb3hFeHRlbnQoVCYmIHRvcCwg
VCYmIHJpZ2h0LCBUJiYgYm90dG9tLCBUJiYgbGVmdCkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyBz
dGQ6OmZvcndhcmQ8VD4odG9wKSwgc3RkOjpmb3J3YXJkPFQ+KHJpZ2h0KSwgc3RkOjpmb3J3YXJk
PFQ+KGJvdHRvbSksIHN0ZDo6Zm9yd2FyZDxUPihsZWZ0KSB9IH0pCiAgICAgewogICAgIH0KIApA
QCAtMTM5LDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTGVuZ3RoQm94
KGNvbnN0IExlbmd0aCYgdG9wLCBjb25zdCBMZW5ndGgmIHJpZ2h0LCBjb25zdCBMZW5ndGgmIGJv
dHRvbSwgY29uc3QgTGVuZ3RoJiBsZWZ0KQotICAgICAgICA6IEJveEV4dGVudCh0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQpCisgICAgTGVuZ3RoQm94KExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmln
aHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCkKKyAgICAgICAgOiBCb3hFeHRlbnQg
eyBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUo
bGVmdCkgfQogICAgIHsKICAgICB9CiAKQEAgLTE1MCwxMSArMTU0LDkgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLXR5cGVkZWYgQm94RXh0ZW50PExheW91dFVuaXQ+IExheW91dEJveEV4dGVudDsK
LXR5cGVkZWYgQm94RXh0ZW50PGZsb2F0PiBGbG9hdEJveEV4dGVudDsKK3VzaW5nIExheW91dEJv
eEV4dGVudCA9IEJveEV4dGVudDxMYXlvdXRVbml0PjsKK3VzaW5nIEZsb2F0Qm94RXh0ZW50ID0g
Qm94RXh0ZW50PGZsb2F0PjsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgTGVuZ3RoQm94Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IExlbmd0aEJveF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuY3BwCmluZGV4IDE2
ODM5Y2NiYThmMDExOTVmN2U0MmU2ZmMxZmZlZTcyMTU5YWYxZmIuLjdmMzUwZTc3Mzg2M2QxNmM1
MzA3MWEyYzRhYzBmYjY5NmM4MWZkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFNpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNp
emUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExlbmd0aFNpemUmIHNpemUpCiB7Ci0gICAgcmV0
dXJuIHRzIDw8IHNpemUud2lkdGgoKSA8PCAiICIgPDwgc2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1
cm4gdHMgPDwgc2l6ZS53aWR0aCA8PCAiICIgPDwgc2l6ZS5oZWlnaHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRleCBkNzEz
ZTE4OTJjNWE1YzRiM2NjMDVmMzg5MzJmMmI2MTU2MWJmMTc4Li42MDUyM2VlYzZjYjMyZDEwMWJk
MWQyNDQxNDA0NWNhNjYzNDRlOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5o
CkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgsNDggKzE3
LDI3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIExl
bmd0aFNpemVfaAotI2RlZmluZSBMZW5ndGhTaXplX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IExlbmd0aFNpemUg
ewotcHVibGljOgotICAgIExlbmd0aFNpemUoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTGVu
Z3RoU2l6ZShMZW5ndGggd2lkdGgsIExlbmd0aCBoZWlnaHQpCi0gICAgICAgIDogbV93aWR0aChX
VEZNb3ZlKHdpZHRoKSkKLSAgICAgICAgLCBtX2hlaWdodChXVEZNb3ZlKGhlaWdodCkpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhTaXplJiBvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1faGVpZ2h0
ID09IG8ubV9oZWlnaHQ7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRXaWR0aChMZW5ndGggd2lkdGgp
IHsgbV93aWR0aCA9IFdURk1vdmUod2lkdGgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLQotICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBXVEZNb3ZlKGhlaWdodCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0KLXByaXZhdGU6Ci0gICAgTGVu
Z3RoIG1fd2lkdGg7Ci0gICAgTGVuZ3RoIG1faGVpZ2h0OworICAgIExlbmd0aCB3aWR0aDsKKyAg
ICBMZW5ndGggaGVpZ2h0OwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGhTaXplJiBhLCBjb25zdCBMZW5ndGhTaXplJiBiKQoreworICAgIHJldHVybiBhLndpZHRoID09
IGIud2lkdGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQ7Cit9CisKIGlubGluZSBMZW5ndGhTaXpl
IGJsZW5kKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFNpemUoYmxlbmQoZnJvbS53aWR0aCgp
LCB0by53aWR0aCgpLCBwcm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgp
LCBwcm9ncmVzcykpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ud2lkdGgsIHRvLndpZHRoLCBw
cm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0LCB0by5oZWlnaHQsIHByb2dyZXNzKSB9OwogfQog
CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhTaXplJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIExlbmd0aFNpemVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzQwMDE0YWQ1YTk5NTM1OWFmN2I2OTljNTI4
ZGQzODAzMjA5NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0jZGVm
aW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotY2xhc3MgU3BlZWNoU3ludGhlc2lzOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7Ci0gICAgCi1jbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXM+IGNyZWF0ZShTcGVlY2hTeW50aGVzaXMqKTsKLSAgICAKLSAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZVZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7
Ci0gICAgdm9pZCBwbGF0Zm9ybVNwZWFrKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwotICAg
IAotcHJpdmF0ZToKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hTeW50aGVzaXMq
KTsKLQotICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7Ci19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKaW5kZXggMWYyMDdmNDQzNjY5OWI0ZDFjODQ1ZDcwY2NjNzI5ZDM2ZTkwYmJhMi4u
MTBhODMwZTM5YzdiN2ZlZDg5MzhlYzBiNTQwMDBlZTg0N2NlMGM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDE2ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqIGNsaWVudCkKK1JlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CiB9CiAg
ICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdm9sdW1lKDEuMGYpCi0gICAg
LCBtX3JhdGUoMS4wZikKLSAgICAsIG1fcGl0Y2goMS4wZikKK2lubGluZSBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KCZjbGllbnQpCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCBhODY5YmI4
NzI4NGRjNTllMDdlZTY0MjMzNmVhZDE4Y2E5YzVkODg0Li5lMDg3NzViMjVlZjQwMGU2NmJkYzJl
OGRjNDVjODJiNmYxMGM4Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMjEgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZV9oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gSW1wbGVtZW50IG1ldGhv
ZHMgYXMgbmVlZGVkLgotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQmKTsKKwogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dDsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0g
dGV4dDsgfQogICAgIApAQCAtNzQsMjAgKzY2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENs
aWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KSB7IG1f
Y2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Q2xpZW50Kik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmKTsKIAogICAgIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90
ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IG1fdm9pY2U7Ci0gICAgZmxvYXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9yYXRl
OwotICAgIGZsb2F0IG1fcGl0Y2g7Ci0gICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGZsb2F0
IG1fdm9sdW1lIHsgMSB9OworICAgIGZsb2F0IG1fcmF0ZSB7IDEgfTsKKyAgICBmbG9hdCBtX3Bp
dGNoIHsgMSB9OworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHAKaW5kZXggNTgwZjE5ZDE2NzhkZTk1ZWZlNmM5NzIwMDU5ZDBlYjYyYjNkMDFiOC4uMjQz
NzZjZGU5MjMwOGY2NjAzMDdhM2NkMzVkNmRmYjcxZDU1MmZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwx
NyArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQorUmVmPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFt
ZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBs
b2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgpCitS
ZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSk7CiB9Ci0gICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpCisKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJKQogICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgLCBtX2xhbmcobGFuZykKQEAgLTQ5LDEyICs0OSw2IEBAIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5n
JiB2b2ljZVVSCiB7CiB9CiAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UoKQotICAgIDogbV9sb2NhbFNlcnZpY2UoZmFsc2UpCi0gICAg
LCBtX2RlZmF1bHQoZmFsc2UpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDM0M2I5ZTdi
YWNmMTVlNDk5MzIwOGY1NTgxNGZjZTM3Zjc0NTFkOWQuLjAxNThiMzQ5ODRkZjU2MWVjYTdlYmZl
NzQzMGZlODgzZjlhMTkwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTggQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKLSNkZWZp
bmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpOworICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gY3JlYXRlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyBy
ZXR1cm4gbV92b2ljZVVSSTsgfQogICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID0gdm9pY2VVUkk7IH0KQEAgLTU2LDE3ICs1MywxNSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25z
dCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFu
ZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKLSAgICBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlKCk7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpID0g
ZGVmYXVsdDsKIAogICAgIFN0cmluZyBtX3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgU3RyaW5nIG1fbGFuZzsKLSAgICBib29sIG1fbG9jYWxTZXJ2aWNlOwotICAgIGJvb2wgbV9k
ZWZhdWx0OworICAgIGJvb2wgbV9sb2NhbFNlcnZpY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9k
ZWZhdWx0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IGNiZmZlNmUxYzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVmMWFkY2IuLmI4OWQ1NjYxMTNmNWNj
N2ZkZTVlNGVlNGI1OGE4YzI5YTliNjQ2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsMTQgKzYyLDE0IEBAIFNjcm9sbFZp
ZXc6On5TY3JvbGxWaWV3KCkKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChQYXNz
UmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQpIAordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRn
ZXQmIGNoaWxkKQogewotICAgIFdpZGdldCogY2hpbGQgPSBwcnBDaGlsZC5nZXQoKTsKLSAgICBB
U1NFUlQoY2hpbGQgIT0gdGhpcyAmJiAhY2hpbGQtPnBhcmVudCgpKTsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYWRkKHBycENoaWxkKTsKLSAgICBpZiAoY2hp
bGQtPnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoY2hpbGQpOwor
ICAgIEFTU0VSVCgmY2hpbGQgIT0gdGhpcyk7CisgICAgQVNTRVJUKCFjaGlsZC5wYXJlbnQoKSk7
CisgICAgY2hpbGQuc2V0UGFyZW50KHRoaXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsK
KyAgICBpZiAoY2hpbGQucGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1BZGRDaGls
ZCgmY2hpbGQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hp
bGQpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50
ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciwgU2Nyb2xsYmFyCiAKICAgICBpZiAo
aGFzQmFyICYmICFzY3JvbGxiYXIpIHsKICAgICAgICAgc2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xs
YmFyKG9yaWVudGF0aW9uKTsKLSAgICAgICAgYWRkQ2hpbGQoc2Nyb2xsYmFyLmdldCgpKTsKKyAg
ICAgICAgYWRkQ2hpbGQoKnNjcm9sbGJhcik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcihzY3Jv
bGxiYXIuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAgc2Nyb2xsYmFyLT5zdHlsZUNoYW5n
ZWQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaXplQWZmZWN0ZWQpCkBAIC04MjksMTIgKzgyOSw2
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEpCiAgICAgd2luZG93LT5pbnZhbGlkYXRlUm9vdFZpZXcoSW50UmVjdCgpKTsKIH0KIAot
Ym9vbCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQotewotICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9T
Y3JvbGwsIGNsaXBSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3
OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJl
Y3QpOwpAQCAtMTAzOCwxNyArMTAzMiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHND
aGFuZ2VkKCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwot
Ci0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hp
bGRyZW4uZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRl
cmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3Vy
cmVudCkKLSAgICAgICAgKCpjdXJyZW50KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmZyYW1lUmVjdHNDaGFu
Z2VkKCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6Y2xpcFJlY3RDaGFuZ2VkKCkKIHsKLSAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5l
bmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBj
dXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQot
ICAgICAgICAoKmN1cnJlbnQpLT5jbGlwUmVjdENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNo
aWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmNsaXBSZWN0Q2hhbmdlZCgpOwogfQog
CiBzdGF0aWMgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMTE1MCwxMCArMTE0MSw2IEBAIHZv
aWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlIG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlCiAgICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQotewotfQotCiB2b2lkIFNj
cm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5w
YWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKQEAgLTEzOTIsOSAr
MTM3OSw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUp
CiAgICAgaWYgKCFpc1NlbGZWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2No
aWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldFBhcmVu
dFZpc2libGUodmlzaWJsZSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisg
ICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogfQogCiB2b2lkIFNjcm9s
bFZpZXc6OnNob3coKQpAQCAtMTQwMiw5ICsxMzg4LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93
KCkKICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0
cnVlKTsKICAgICAgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNo
U2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9j
aGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCkt
PnNldFBhcmVudFZpc2libGUodHJ1ZSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
bV9jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh0cnVl
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQxNSw5ICsxNDAwLDggQEAgdm9pZCBTY3JvbGxW
aWV3OjpoaWRlKCkKIHsKICAgICBpZiAoaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChp
c1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46
Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZh
bHNlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAg
ICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAg
ICAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCmluZGV4IGRiNTcwZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMu
LjZiMzFmOTgyZjQyOGIwOGFhYjU1OTY1ODVmZGZjNzExYWY0ZTdmYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
U2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgotCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
KwogT0JKQ19DTEFTUyBXQUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwogCkBAIC00
Niw2ICs0Niw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKICNpZm5kZWYgTlNWaWV3CiAjZGVmaW5l
IE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkIF9fT0JKQ19fCkBAIC02NCwxMCArNjUsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbFZpZXcoKTsKIAogICAgIC8vIFNjcm9sbGFibGVB
cmVhIGZ1bmN0aW9ucy4KLSAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZz
ZXQoY29uc3QgU2Nyb2xsT2Zmc2V0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbENvcm5l
clZpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jv
bGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JikgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbENv
cm5lclZpc2libGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwpAQCAt
ODUsMTQgKzg2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJl
Y3QoKSBjb25zdCA9IDA7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlv
biBhbmQgaW5zcGVjdGlvbi4KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiYgY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7CisgICAgY29uc3QgSGFz
aFNldDxSZWY8V2lkZ2V0Pj4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoV2lkZ2V0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpOwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3
IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBs
YXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRv
IG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQo
KTsgfQotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2Ny
b2xsVmlld1Njcm9sbGJhcihjb25zdCBXaWRnZXQqIGNoaWxkKSBjb25zdCB7IHJldHVybiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgPT0gY2hpbGQgfHwgdmVydGljYWxTY3JvbGxiYXIoKSA9PSBjaGls
ZDsgfQogCiAgICAgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwpAQCAtMTIxLDcgKzEy
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBmaW5hbDsKIAogICAgIC8v
IEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRo
YXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tp
bmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWlu
dHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE2Nyw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gSW4gdGhlIHNpdHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Ny
b2xsaW5nIChpZS4gd2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRv
IHVzZQogICAgIC8vIHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0
aGUgbWFpbmZyYW1lLCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBq
dXN0IGJlZm9yZSByZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBo
YXBwZW4gd2hlbiBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBz
Y2FsZSBvciBwb3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICBJbnRTaXplIHZpc2li
bGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQorICAgIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0g
dmlzaWJsZUNvbnRlbnRSZWN0OyB9CkBAIC0yMTcsMTMgKzIxOCwxMyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1l
bnQgY29udGFpbmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBp
bmRpdmlkdWFsIHdpZHRoIGFuZCBoZWlnaHQKICAgICAvLyB2YWx1ZXMpLgotICAgIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBh
dCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOyAvLyBB
bHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0
KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUo
KS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXpl
KGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1
cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBp
bmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CisgICAgU2Nyb2xsUG9zaXRpb24g
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3Qo
TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQogCiAgICAgU2Nyb2xs
UG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIFRoZSBt
YXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KIApAQCAtMjU4LDcgKzI1OSw3
IEBAIHB1YmxpYzoKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgdmVyeSB0b3Agb2YgdGhlIHZpZXcu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gZG9jdW1lbnRTY3JvbGxQb3NpdGlv
blJlbGF0aXZlVG9WaWV3T3JpZ2luKCkgY29uc3Q7CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1v
dW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNo
ZWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBTY3JvbGxQb3NpdGlv
biBjYWNoZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9z
aXRpb247IH0KQEAgLTMxMywxMyArMzE0LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Zmc2Ny
ZWVuKCkgY29uc3Q7CiAKICAgICAvLyBDYWxsZWQgd2hlbiBvdXIgZnJhbWUgcmVjdCBjaGFuZ2Vz
IChvciB0aGUgcmVjdC9zY3JvbGwgcG9zaXRpb24gb2YgYW4gYW5jZXN0b3IgY2hhbmdlcykuCi0g
ICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0
c0NoYW5nZWQoKSBmaW5hbDsKICAgICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRl
IG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAg
ICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlIHRvIG5vdGlmeSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBjaGFu
Z2UuCi0gICAgdm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBS
ZWN0Q2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8g
aGl0IHRlc3Qgc2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxl
cnMgKGxpa2UgV2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJ
bnRQb2ludCYgd2luZG93UG9pbnQpOwpAQCAtMzQzLDEzICszNDQsMTMgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIFdpZGdldCBvdmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29u
dGVudHMgb2YgdGhlIHZpZXcgYXMgd2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVu
c3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8g
ZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvdygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgZmluYWw7CiAgICAgCiAgICAgLy8g
UGFuIHNjcm9sbGluZy4KICAgICBzdGF0aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVzID0g
MTU7CkBAIC0zNTcsMjEgKzM1OCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQYW5TY3Jv
bGxJY29uKCk7CiAgICAgdm9pZCBwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0Jik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBv
aW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsK
LSAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOworICAgIGJvb2wgc2Ny
b2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1Zp
ZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWlu
aW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7Cisg
ICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Ny
b2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAotICAgIGJvb2wgaXNTY3Jv
bGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoY29uc3QgU2Ny
b2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KTsKIAog
cHJvdGVjdGVkOgpAQCAtMzg0LDI2ICszODMsMjYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBh
dmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgPSAwOwogCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGNyZWF0ZS9kZXN0cm95IHNjcm9sbGJhcnMuCiAg
ICAgLy8gVGhleSByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Nyb2xsYmFyIHdhcyBhZGRlZCBvciByZW1v
dmVkLgotICAgIGJvb2wgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250
ZW50U2l6ZUFmZmVjdGVkID0gMCk7Ci0gICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihi
b29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gMCk7CisgICAgYm9vbCBzZXRIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRy
KTsKKyAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRT
aXplQWZmZWN0ZWQgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxD
b3JuZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCkgPSAw
OworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIGZp
bmFsOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMu
Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KSA9IDA7CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGlu
dmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Ns
b3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxP
cmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBk
YXRlUG9zaXRpb25TeW5jaHJvbm91c2x5KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJhbWVW
aWV3IHRvIGNoZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHZpcnR1
YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENhbGxl
ZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJhcnMgdG8gYWNjdXJhdGVseSByZWZsZWN0IHRoZSBzdGF0
ZSBvZiB0aGUgdmlldy4KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9z
aXRpb24mIGRlc2lyZWRQb3NpdGlvbik7CkBAIC00MTEsMjcgKzQxMCwyOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgZmxvYXQgcGxhdGZvcm1Ub3BDb250ZW50SW5zZXQoKSBjb25zdDsKICAgICB2b2lkIHBs
YXRmb3JtU2V0VG9wQ29udGVudEluc2V0KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKKyAgICB2b2lk
IGhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNo
YW5nZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Ny
b2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9m
ZnNldCYsIGNvbnN0IFNjcm9sbE9mZnNldCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxP
ZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNv
bnN0IFNjcm9sbE9mZnNldCYpID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgLy8gU2l6ZSBhdmFpbGFibGUgZm9yIHZpZXcgY29udGVudHMsIGV4Y2x1ZGluZyBjb250
ZW50IGluc2V0cy4gTm90IGFmZmVjdGVkIGJ5IHpvb21pbmcuCiAgICAgSW50U2l6ZSBzaXplRm9y
VW5vYnNjdXJlZENvbnRlbnQoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0g
RXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVD
b250ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHZpc2libGVD
b250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywg
VmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAg
dm9pZCBjb21wbGV0ZVVwZGF0ZXNBZnRlclNjcm9sbFRvKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKTsKIAogICAgIGJvb2wgc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJh
cj4mLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQpOwogCisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBTY3JvbGxi
YXJNb2RlIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGU7CkBAIC00NDIsNyArNDQzLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9oaWJpdHNTY3JvbGxpbmc7CiAKLSAgICBIYXNoU2V0PFJl
ZlB0cjxXaWRnZXQ+PiBtX2NoaWxkcmVuOworICAgIEhhc2hTZXQ8UmVmPFdpZGdldD4+IG1fY2hp
bGRyZW47CiAKICAgICAvLyBUaGlzIGJvb2wgaXMgdW51c2VkIG9uIE1hYyBPUyBiZWNhdXNlIHdl
IGRpcmVjdGx5IGFzayB0aGUgcGxhdGZvcm0gd2lkZ2V0CiAgICAgLy8gd2hldGhlciBpdCBpcyBz
YWZlIHRvIGJsaXQgb24gc2Nyb2xsLgpAQCAtNDgzLDkgKzQ4NCw5IEBAIHByaXZhdGU6CiAKICAg
ICBJbnRSZWN0IHJlY3RUb0NvcHlPblNjcm9sbCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMuICBGcmFtZVZp
ZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZhbGlkYXRpb25zLgotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSB7
IH0KKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZp
ZXcgY2hhbmdlcy4gRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQg
aW52YWxpZGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXll
cnNBZnRlclNjcm9sbGluZygpID0gMDsKIAogICAgIHZvaWQgcGxhdGZvcm1BZGRDaGlsZChXaWRn
ZXQqKTsKICAgICB2b2lkIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuaAppbmRleCA1OTExOTc4YWVlYzE4ZjA4M2ZkYmY4NWYxYWYzZWQyNDE3OTAxMTY1
Li4zMTRhOGRmNzU5MDk5MTUzOTI3NWFhZDRhMzlkZDliNmM4ZWE2ZTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1
cm4gem9vbWVkU2l6ZTsgfQogICAgIAogICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBm
b3IgYSBjb250cm9sIGluIHpvb21lZCBjb29yZGluYXRlcy4gIAotICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
ZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7IH0KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWlu
aW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8q
em9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9
IH07IH0KICAgICAKICAgICAvLyBBbGxvd3MgdGhlIHRoZW1lIHRvIG1vZGlmeSB0aGUgZXhpc3Rp
bmcgcGFkZGluZy9ib3JkZXIuCiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmco
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRC
b3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IDlhMGRmMTcwMDhmMjE3NGJkMTdmYjM2MTY4Mzc0
OTVhNDNjMThhN2MuLjhmNWFkOTM2MjczMTFiZTIzMjYxZjE0NzhjYzQ2ZWJlYWQzY2VmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERl
bm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjIsMjEgKzIy
LDE2IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uX2gKLSNkZWZpbmUgQW5pbWF0aW9u
X2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKLQot
I2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotI2luY2x1ZGUgIkFuaW1hdGlvblRy
aWdnZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNs
dWRlICJUaW1pbmdGdW5jdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQorI2luY2x1ZGUgIkFuaW1hdGlv
blRyaWdnZXIuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDIwICs1
NywyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBGbGFncyB0aGlzIHRvIGJlIHRoZSBzcGVjaWFsICJu
b25lIiBhbmltYXRpb24gKGFuaW1hdGlvbi1uYW1lOiBub25lKQogICAgIGJvb2wgaXNOb25lQW5p
bWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc05vbmU7IH0KKwogICAgIC8vIFdlIGNhbiBtYWtl
IHBsYWNlaG9sZGVyIEFuaW1hdGlvbiBvYmplY3RzIHRvIGtlZXAgdGhlIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0cwogICAgIC8vIG9mIHByb3BlcnRpZXMgaW4gc3luYy4gaXNWYWxpZEFuaW1hdGlvbiBt
ZWFucyB0aGlzIGlzIG5vdCBhIHBsYWNlaG9sZGVyLgogICAgIGJvb2wgaXNWYWxpZEFuaW1hdGlv
bigpIGNvbnN0IHsgcmV0dXJuICFtX2lzTm9uZSAmJiAhbV9uYW1lLmlzRW1wdHkoKTsgfQogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoIW1fZGlyZWN0
aW9uU2V0ICYmICFtX2R1cmF0aW9uU2V0ICYmICFtX2ZpbGxNb2RlU2V0Ci0gICAgICAgICAgICAg
ICAgJiYgIW1fbmFtZVNldCAmJiAhbV9wbGF5U3RhdGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRT
ZXQKLSAgICAgICAgICAgICAgICAmJiAhbV9kZWxheVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNl
dCAmJiAhbV9wcm9wZXJ0eVNldAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQot
ICAgICAgICAgICAgICAgICYmICFtX3RyaWdnZXJTZXQpOwotI2Vsc2UKLSAgICAgICAgICAgICAg
ICApOworICAgICAgICBpZiAobV90cmlnZ2VyU2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCisgICAgICAgIHJldHVybiAhbV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRpb25T
ZXQgJiYgIW1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxh
eVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CisgICAgICAgICAgICAmJiAhbV9kZWxh
eVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9wZXJ0eVNldDsKICAgICB9CiAK
ICAgICBib29sIGlzRW1wdHlPclplcm9EdXJhdGlvbigpIGNvbnN0CkBAIC0xMTQsMTEgKzEwOSw3
IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7
IH0KIAotICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7Ci0gICAgICAgIEFuaW1hdGVBbGwsCi0gICAg
ICAgIEFuaW1hdGVOb25lLAotICAgICAgICBBbmltYXRlU2luZ2xlUHJvcGVydHkKLSAgICB9Owor
ICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1hdGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRl
U2luZ2xlUHJvcGVydHkgfTsKIAogICAgIGVudW0gQW5pbWF0aW9uRGlyZWN0aW9uIHsKICAgICAg
ICAgQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTM5LDEwICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIFN0eWxlOjpTY29wZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lU3R5bGVTY29wZU9yZGluYWw7IH0KICAgICBFQW5pbVBsYXlTdGF0ZSBw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBsYXlTdGF0ZT4obV9w
bGF5U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KKyAgICBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgUGFzc1Jl
ZlB0cjxBbmltYXRpb25UcmlnZ2VyPiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
OyB9CisgICAgQW5pbWF0aW9uVHJpZ2dlciogdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJp
Z2dlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1f
ZGVsYXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQpAQCAtMTU4LDEwICsxNDksMTAgQEAgcHVi
bGljOgogICAgIH0KICAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7IG1f
cGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYm
IGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgbV90aW1p
bmdGdW5jdGlvblNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbk1vZGUoQW5pbWF0
aW9uTW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKLSAgICB2b2lkIHNldFRyaWdnZXIoUGFzc1JlZlB0cjxBbmltYXRpb25Ucmln
Z2VyPiB0KSB7IG1fdHJpZ2dlciA9IHQ7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KKyAgICB2b2lk
IHNldFRyaWdnZXIoUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+JiYgdHJpZ2dlcikgeyBtX3RyaWdn
ZXIgPSBXVEZNb3ZlKHRyaWdnZXIpOyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9uKGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KQEAg
LTE5NywyMiArMTg4LDIyIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9maWxsTW9kZSA6IDI7
CiAKIAotICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlICAgICA6IDI7CisgICAgdW5zaWduZWQgbV9w
bGF5U3RhdGUgOiAyOwogCi0gICAgYm9vbCBtX2RlbGF5U2V0ICAgICAgICAgIDogMTsKLSAgICBi
b29sIG1fZGlyZWN0aW9uU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9kdXJhdGlvblNldCAgICAg
ICA6IDE7Ci0gICAgYm9vbCBtX2ZpbGxNb2RlU2V0ICAgICAgIDogMTsKKyAgICBib29sIG1fZGVs
YXlTZXQgOiAxOworICAgIGJvb2wgbV9kaXJlY3Rpb25TZXQgOiAxOworICAgIGJvb2wgbV9kdXJh
dGlvblNldCA6IDE7CisgICAgYm9vbCBtX2ZpbGxNb2RlU2V0IDogMTsKICAgICBib29sIG1faXRl
cmF0aW9uQ291bnRTZXQgOiAxOwotICAgIGJvb2wgbV9uYW1lU2V0ICAgICAgICAgICA6IDE7Ci0g
ICAgYm9vbCBtX3BsYXlTdGF0ZVNldCAgICAgIDogMTsKLSAgICBib29sIG1fcHJvcGVydHlTZXQg
ICAgICAgOiAxOworICAgIGJvb2wgbV9uYW1lU2V0IDogMTsKKyAgICBib29sIG1fcGxheVN0YXRl
U2V0IDogMTsKKyAgICBib29sIG1fcHJvcGVydHlTZXQgOiAxOwogICAgIGJvb2wgbV90aW1pbmdG
dW5jdGlvblNldCA6IDE7CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
Ym9vbCBtX3RyaWdnZXJTZXQgICAgICAgIDogMTsKKyAgICBib29sIG1fdHJpZ2dlclNldCA6IDE7
CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc05vbmUgICAgICAgICAgICA6IDE7CisgICAgYm9vbCBt
X2lzTm9uZSA6IDE7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEZWxheSgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMywxMiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBpbml0aWFsTmFtZSgpOwogICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBp
bml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgICBz
dGF0aWMgQ1NTUHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHkoKSB7IHJldHVybiBDU1NQcm9wZXJ0
eUludmFsaWQ7IH0KLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4g
aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsVGlt
aW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25z
dCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4g
QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxBbmltYXRp
b25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRpb25UcmlnZ2Vy
OjpjcmVhdGUoKTsgfQogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBbmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCmluZGV4IDYyNWQ3OTAxNWEwNzQwNmEyOTk4ODAxM2E2
NTIwNmI1MDg0MjcxZWEuLjBhMzIwMjI1NDU5YjFmZDA2NjI2NWVmMmNkN2E1OWRlNzIyNTcyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZp
bmUgRklMTF9VTlNFVF9QUk9QRVJUWSh0ZXN0LCBwcm9wR2V0LCBwcm9wU2V0KSBcCiBmb3IgKGkg
PSAwOyBpIDwgc2l6ZSgpICYmIGFuaW1hdGlvbihpKS50ZXN0KCk7ICsraSkgeyB9IFwKLWlmIChp
IDwgc2l6ZSgpICYmIGkgIT0gMCkgeyBcCitpZiAoaSkgeyBcCiAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGkgPCBzaXplKCk7ICsraSwgKytqKSBcCiAgICAgICAgIGFuaW1hdGlvbihpKS5wcm9wU2V0
KGFuaW1hdGlvbihqKS5wcm9wR2V0KCkpOyBcCiB9CiAKIEFuaW1hdGlvbkxpc3Q6OkFuaW1hdGlv
bkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvdGhlci5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChB
bmltYXRpb246OmNyZWF0ZShvdGhlci5hbmltYXRpb24oaSkpKTsKKyAgICBtX2FuaW1hdGlvbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5zaXplKCkpOworICAgIGZvciAoYXV0byYgYW5p
bWF0aW9uIDogb3RoZXIubV9hbmltYXRpb25zKQorICAgICAgICBtX2FuaW1hdGlvbnMudW5jaGVj
a2VkQXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSkpOwogfQogCiB2b2lk
IEFuaW1hdGlvbkxpc3Q6OmZpbGxVbnNldFByb3BlcnRpZXMoKQpAQCAtNTUsOSArNTYsMTAgQEAg
Ym9vbCBBbmltYXRpb25MaXN0OjpvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVy
KSBjb25zdAogewogICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChhbmltYXRp
b24oaSkgIT0gb3RoZXIuYW5pbWF0aW9uKGkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgKaW5kZXggYzg0Y2I5YjFkMTUxNjNkMDc2ODkz
NzQ2MTc0MDZkODQ5NDBkYWFmZS4uZWE3YzliNzhhMTk1MGYxNWU5NGZhYWJhYTk1MWI0ODE1NTJm
N2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCkBAIC0yMiw4ICsyMiw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9u
TGlzdF9oCi0jZGVmaW5lIEFuaW1hdGlvbkxpc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw2ICszNSw3IEBA
IGNsYXNzIEFuaW1hdGlvbkxpc3QgewogcHVibGljOgogICAgIEFuaW1hdGlvbkxpc3QoKSB7IH0K
ICAgICBBbmltYXRpb25MaXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsKKyAgICBBbmltYXRpb25M
aXN0KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9w
ZXJ0aWVzKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmKSBjb25z
dDsKQEAgLTQ5LDIyICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6
ZV90IG4pIHsgbV9hbmltYXRpb25zLnJlc2l6ZShuKTsgfQogICAgIHZvaWQgcmVtb3ZlKHNpemVf
dCBpKSB7IG1fYW5pbWF0aW9ucy5yZW1vdmUoaSk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGlv
bik7Ci0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKLSAgICB9Ci0gICAg
Ci0gICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuICptX2FuaW1hdGlv
bnNbaV07IH0KLSAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gKm1fYW5pbWF0aW9uc1tpXTsgfQorICAgIHZvaWQgYXBwZW5kKFJlZjxBbmltYXRp
b24+JiYgYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24p
KTsgfQorCisgICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuIG1fYW5p
bWF0aW9uc1tpXS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0uZ2V0KCk7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsK
KyAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oQW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKKyAgICBWZWN0
b3I8UmVmPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIH07ICAgIAogCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFuaW1hdGlvbkxpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKaW5kZXggZmNh
NDVjMTBkMjEwNGYwNWVkZWJiNzg4MDAxNGEyNjNhNjViMWUxMS4uNWVhMDFiMjBiMjYyN2I4ZDk3
YmEzNWYzZTJkN2NiZTRhNTUyOTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCkBAIC0yMywyOSArMjMsMjQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25UcmlnZ2VyX2gKLSNkZWZpbmUg
QW5pbWF0aW9uVHJpZ2dlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFU
SU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBbmltYXRpb25UcmlnZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVHJpZ2dlcj4g
ewogcHVibGljOgotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGNs
b25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7
Ci0gICAgICAgIEF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
clR5cGUKLSAgICB9OworICAgIHZpcnR1YWwgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVHJpZ2dlcigpIHsgfQogCisgICAg
ZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7IEF1dG9BbmltYXRpb25UcmlnZ2VyVHlw
ZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5cGUgfTsKICAgICBBbmltYXRpb25UcmlnZ2VyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGlzQXV0b0FuaW1h
dGlvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQW5pbWF0aW9uVHJpZ2dlclR5
cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZTsgfQpAQCAtNjIsMTYgKzU3LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICBBbmltYXRpb25UcmlnZ2VyVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBBdXRv
QW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIEF1dG9B
bmltYXRpb25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBSZWY8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgfkF1dG9BbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG90aGVyLmlzQXV0b0FuaW1hdGlvblRyaWdnZXIoKTsKICAgICB9CkBAIC04Miwy
MiArNzUsMjAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmlt
YXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRy
aWdnZXI+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogfTsKIAotY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0
aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCisgICAgc3RhdGljIFJlZjxTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3RoIHN0YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmICghb3RoZXIuaXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1hdGlv
blRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRWYWx1ZSwgbV9lbmRWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRW
YWx1ZSwgbV9lbmRWYWx1ZSkpOwogICAgIH0KIAogICAgIExlbmd0aCBtX3N0YXJ0VmFsdWU7CkBA
IC0xNTQsNSArMTQ1LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dF
UihBdXRvQW5pbWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHIKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciwgaXNTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyKTsKIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBBbmltYXRpb25Ucmln
Z2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKaW5kZXggZjVlNjYxNmE5N2NkNTNjNmJjYWUxMzVkZDM2Y2M0N2MyZmI3YzhjYy4u
ZmNhYTNjM2ZmZGI2ZGViMmFiZWViYzhkMDIwYTBkMzlkYTMyZjc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTIyLDU0
ICsyMiw1MCBAQAogICoKICAqLwogCi0jaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKLSNkZWZpbmUg
VGltaW5nRnVuY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBU
ZXh0U3RyZWFtOworCiBjbGFzcyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRp
bWluZ0Z1bmN0aW9uPiB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBSZWY8VGltaW5nRnVuY3Rpb24+
IGNsb25lKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsK
LSAgICAgICAgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rp
b24sIFNwcmluZ0Z1bmN0aW9uCi0gICAgfTsKLSAgICAKICAgICB2aXJ0dWFsIH5UaW1pbmdGdW5j
dGlvbigpIHsgfQogCisgICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgeyBMaW5lYXJGdW5jdGlv
biwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbiwgU3ByaW5nRnVuY3Rpb24gfTsK
ICAgICBUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIAorCiAgICAgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IExpbmVhckZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3ViaWNCZXppZXJGdW5jdGlvbjsg
fQogICAgIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFN0ZXBzRnVuY3Rpb247IH0KICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KLSAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3Qg
PSAwOworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBUaW1p
bmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKKyAgICBleHBsaWNpdCBUaW1pbmdG
dW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQotICAgIAorCitwcml2YXRlOgogICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSBt
X3R5cGU7CiB9OwogCiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBU
aW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGluZWFyVGlt
aW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxMaW5lYXJUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGlt
aW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdG
dW5jdGlvbik7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkxpbmVhclRpbWluZ0Z1bmN0aW9u
KCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzTGluZWFy
VGltaW5nRnVuY3Rpb24oKTsKICAgICB9CkBAIC04MCw2MSArNzYsNTQgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKICAg
ICB9CiB9OwogCiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGlj
IFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uUHJlc2V0
IHsKLSAgICAgICAgRWFzZSwKLSAgICAgICAgRWFzZUluLAotICAgICAgICBFYXNlT3V0LAotICAg
ICAgICBFYXNlSW5PdXQsCi0gICAgICAgIEN1c3RvbQotICAgIH07CisgICAgZW51bSBUaW1pbmdG
dW5jdGlvblByZXNldCB7IEVhc2UsIEVhc2VJbiwgRWFzZU91dCwgRWFzZUluT3V0LCBDdXN0b20g
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAg
IHN0YXRpYyBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGRvdWJsZSB4MSwg
ZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihDdXN0b20sIHgxLCB5MSwgeDIs
IHkyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5MikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJl
ZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQorICAgIHN0YXRpYyBSZWY8Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAocHJlc2V0KSB7CiAgICAgICAgIGNhc2UgRWFzZToKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24pOwogICAgICAgICBjYXNlIEVhc2VJbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAx
LjApKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFz
ZU91dDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VPdXQsIDAuMCwg
MC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlSW5PdXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICBjYXNlIEN1c3RvbToKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5DdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBm
aW5hbAogICAgIHsKLSAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsK
LSAgICAgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ICE9IEN1c3RvbSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldCA9PSBjdGYtPm1fdGltaW5n
RnVuY3Rpb25QcmVzZXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtX3gxID09
IGN0Zi0+bV94MSAmJiBtX3kxID09IGN0Zi0+bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBt
X3kyID09IGN0Zi0+bV95MjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghb3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyQ3ViaWMgPSBzdGF0aWNfY2FzdDxj
b25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAgICAgICBpZiAobV90
aW1pbmdGdW5jdGlvblByZXNldCAhPSBvdGhlckN1YmljLm1fdGltaW5nRnVuY3Rpb25QcmVzZXQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9u
UHJlc2V0ICE9IEN1c3RvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gbV94MSA9PSBvdGhlckN1YmljLm1feDEgJiYgbV95MSA9PSBvdGhlckN1YmljLm1feTEgJiYg
bV94MiA9PSBvdGhlckN1YmljLm1feDIgJiYgbV95MiA9PSBvdGhlckN1YmljLm1feTI7CiAgICAg
fQogCiAgICAgZG91YmxlIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQpAQCAtMTQ5LDIxICsx
MzgsMjEgQEAgcHVibGljOgogICAgICAgICBtX3gyID0geDI7CiAgICAgICAgIG1feTIgPSB5MjsK
ICAgICB9Ci0gICAgCisKICAgICBUaW1pbmdGdW5jdGlvblByZXNldCB0aW1pbmdGdW5jdGlvblBy
ZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQ7IH0KICAgICB2b2lk
IHNldFRpbWluZ0Z1bmN0aW9uUHJlc2V0KFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkgeyBt
X3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID0gcHJlc2V0OyB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGRlZmF1bHRUaW1pbmdGdW5jdGlvbigpCisKKyAg
ICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZGVmYXVsdFRpbWluZ0Z1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKiBkdGYgPSBjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBkdGY7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBmdW5jdGlvbiA9
IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQo
KSBjb25zdAorICAgIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNl
ZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKDEuMCAtIG1feDIsIDEuMCAt
IG1feTIsIDEuMCAtIG1feDEsIDEuMCAtIG1feTEpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uUHJl
c2V0IHByZXNldCA9IEVhc2UsIGRvdWJsZSB4MSA9IDAuMjUsIGRvdWJsZSB5MSA9IDAuMSwgZG91
YmxlIHgyID0gMC4yNSwgZG91YmxlIHkyID0gMS4wKQogICAgICAgICA6IFRpbWluZ0Z1bmN0aW9u
KEN1YmljQmV6aWVyRnVuY3Rpb24pCkBAIC0xNzUsOSArMTY0LDkgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KG1fdGltaW5nRnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihtX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CiAgICAgfQogCiAgICAg
ZG91YmxlIG1feDE7CkBAIC0xODksMjUgKzE3OCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoK
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUo
aW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdG
dW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0
U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihzdGVwcywgc3RlcEF0U3RhcnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rl
cHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBz
VGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+
U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlm
IChvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgY29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5j
dGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3Rl
cHMgJiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1fc3RlcEF0U3RhcnQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3RlcHNUaW1pbmdGdW5j
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlclN0
ZXBzID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXJTdGVwcy5tX3N0ZXBzICYmIG1fc3RlcEF0U3Rh
cnQgPT0gb3RoZXJTdGVwcy5tX3N0ZXBBdFN0YXJ0OwogICAgIH0KICAgICAKICAgICBpbnQgbnVt
YmVyT2ZTdGVwcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcHM7IH0KQEAgLTIxNSw3ICsyMDAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
QXRTdGFydDsgfQogICAgIHZvaWQgc2V0U3RlcEF0U3RhcnQoYm9vbCBzdGVwQXRTdGFydCkgeyBt
X3N0ZXBBdFN0YXJ0ID0gc3RlcEF0U3RhcnQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBTdGVw
c1RpbWluZ0Z1bmN0aW9uKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBU
aW1pbmdGdW5jdGlvbihTdGVwc0Z1bmN0aW9uKQpAQCAtMjI0LDkgKzIwOSw5IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0ZXBzVGltaW5nRnVuY3Rpb24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOwogICAgIH0KICAg
ICAKICAgICBpbnQgbV9zdGVwczsKQEAgLTI0NywxMyArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSgwLCAwLCAwLCAwKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsK
LSAgICAgICAgaWYgKG90aGVyLmlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAg
ICAgY29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mIG90aGVyU3RyaW5nID0gKnN0YXRpY19jYXN0
PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVy
biBtX21hc3MgPT0gb3RoZXJTdHJpbmcubV9tYXNzICYmIG1fc3RpZmZuZXNzID09IG90aGVyU3Ry
aW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlclN0cmluZy5tX2RhbXBpbmcgJiYg
bV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTdHJpbmcubV9pbml0aWFsVmVsb2NpdHk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3ByaW5n
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0
byYgb3RoZXJTcHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlclNwcmluZy5tX21hc3MgJiYg
bV9zdGlmZm5lc3MgPT0gb3RoZXJTcHJpbmcubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90
aGVyU3ByaW5nLm1fZGFtcGluZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlclNwcmluZy5t
X2luaXRpYWxWZWxvY2l0eTsKICAgICB9CiAKICAgICBkb3VibGUgbWFzcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWFzczsgfQpAQCAtMjc5LDkgKzI2Myw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0
aWZmbmVzcywgbV9kYW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3RpZmZuZXNzLCBt
X2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CiAgICAgfQogCiAgICAgZG91YmxlIG1fbWFz
czsKQEAgLTI5MCw5ICsyNzQsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2luaXRpYWxWZWxv
Y2l0eTsKIH07CiAKLWNsYXNzIFRleHRTdHJlYW07CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUaW1pbmdGdW5jdGlvbiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA0ZjliNWY1NWNjODQzZjRhYjg3
ZGUzNTU0MzlmODZkOTc4NmQxNmVhLi5kMThkYmRkOTQ0MjQ2NWQzM2U3ZTlkMGU3ZGNmODRlNmUw
M2MwNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQogCiAgICAgQXVkaW9DaGFubmVsKiBjaGFu
bmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7
IH0KLSAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5u
ZWxdLmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNo
YW5uZWwpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBB
dWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWVjNTNkOGEw
MTI3ZmMxOWJhNThiYTZkNGRmMmM5ZDE5YTk3NTZiZi4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFk
ZTExODJhNGUxZTUwZTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQwLDEyICsxNDAsMTEgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKKyAgICBhdXRvIGRhdGEgPSBh
ZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jv
b3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmYzU4ZmI2NWRm
ZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAzLi44MmI2YjYxNTY4NzdlMDQzY2M2MWQ4MzZi
YWE5MmE0YjJjNDcxMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5jb2RlckNGX2gKLSNkZWZpbmUgS2V5ZWRFbmNv
ZGVyQ0ZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDI1ICszNiwyNSBAQCBwdWJsaWM6CiAgICAgS2V5
ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAotICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2
YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0
cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9i
amVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5h
bDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlF
bGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZv
aWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFy
cmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7Cisg
ICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG1fcm9vdERpY3Rpb25hcnk7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5jb2RlckNG
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCmluZGV4IGIzOGQyY2FmZTdiNjkwM2Rk
NDRmYTZjMzZjZTM0MDFlOGU3M2I1NmIuLjc3ODIwMTc0MTI3YWU1ZGEzNWE2MWJhNGE4NmFkMGZi
ZTM0ZjMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtMjMsMTMgKzIz
LDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmxfaAotI2RlZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRl
IDxzcGVha19saWIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNSAr
NzQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCmluZGV4IGQ0OTIxMzY0MzA5OWMyYmE3NDVlYmZkNjk3ZWIxNTFhM2Zl
NTNmZjEuLjgxY2JlZDUzZDExNWU0NGYxMzRjMTIyNmQ2MzQ2MmM1OThlNDQ5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJp
YW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVp
bGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IDJkN2IxYzM0ZjcxOWIyNDg2NzcyNjIyNWUxM2I5Nzc0MmQyY2IzYmMuLmY5MWI0
ZGRiMzMxNWY2NmVjNGUwYzE5ZmQyNzA2NzNiNmM0NzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVu
Y29kZXJHbGliX2gKLSNkZWZpbmUgS2V5ZWRFbmNvZGVyR2xpYl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzksMjUgKzM4
LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVuY29kZXJHbGliKCk7CiAgICAgfktleWVkRW5jb2Rl
ckdsaWIoKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7
CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25z
dCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQg
ZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAg
ICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1aWxkZXI7CiAgICAgVmVjdG9yPEdWYXJpYW50
QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVyU3RhY2s7CkBAIC02Niw1ICs2NSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVu
Y29kZXJHbGliX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKaW5kZXggZDA1NmViZmUyMmFhZTgxNTk0ZTg4YmE0YjJlNzgyMTUzOWRiNzk3YS4uYWY0OGIw
YjkyNDJjNTk3MDBlZWViMzYyY2FiNmUwM2U1YWY2ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTI3LDE1ICsyNywxMyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRDYWNoZV9oCi0jZGVmaW5lIEZvbnRDYWNoZV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMjkwLDUgKzI4OCwzIEBAIGlubGluZSB2b2lkIEZvbnRD
YWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKQogI2VuZGlmCiAKIH0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggOTMwM2E5MDViMDk3MTNhMmQ1Y2NiMjM5YjJkOTc3NWRlODExYWE1Ni4u
YWQzODJmNDE1YTNiNTEwZWZlNDEzYmVmN2E5ZGFjZjFkZjljMzg4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIw
MTMtMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1l
bCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBD
ZW50ZXIgVVNBLCBJbmMuCkBAIC0yMiwxMCArMjIsMTUgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBG
b250UGxhdGZvcm1EYXRhX2gKLSNkZWZpbmUgRm9udFBsYXRmb3JtRGF0YV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CisKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJDT01QdHIuaCIKQEAgLTQ0LDI1
ICs0OSwxOCBAQAogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TRm9udDsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NU
Rm9udCogQ1RGb250UmVmOwotCiAjZW5kaWYKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmpl
Y3QuaD4KIHR5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOwpAQCAtNzAsNyArNjgsNiBAQCBp
bnRlcmZhY2UgSURXcml0ZUZvbnQ7CiBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogI2VuZGlm
CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CkBAIC04
MiwxMCArNzksNyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSgpOwotI2lmICFVU0UoRlJFRVRZUEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OwotI2VuZGlmCi0gICAgRm9udFBsYXRm
b3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKKwogICAgIEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkp
OwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gQXV0b1RleHRS
ZW5kZXJpbmcpOwogCkBAIC0xMDMsMjcgKzk3LDM2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7
CisjZW5kaWYKIAotI2lmIFVTRShDRykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykKICAg
ICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIENHRm9udFJlZiwgZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJ
KTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoRElSRUNUMkQpCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBJRFdy
aXRlRm9udCosIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgRm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVT
RShDQUlSTykKKyAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2Zv
bnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYK
IAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9m
YWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljT2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVm
YXVsdDsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShGb250UGxhdGZvcm1EYXRh
JiYpID0gZGVmYXVsdDsKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBt
X2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91
c2VHREk7IH0KLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBDVEZvbnRSZWYgZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIENURm9udFJlZiByZWdpc3RlcmVkRm9udCgpIGNvbnN0OyAv
LyBSZXR1cm5zIG51bGxwdHIgaWZmIHRoZSBmb250IGlzIG5vdCByZWdpc3RlcmVkLCBzdWNoIGFz
IHdlYiBmb250cyAob3RoZXJ3aXNlIHJldHVybnMgZm9udCgpKS4KIApAQCAtMTg5LDEyICsxOTIs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBVU0UoRlJFRVRZUEUpCi0gICAgRm9u
dFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSNlbHNl
Ci0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwbGF0Zm9ybUlz
RXF1YWwob3RoZXIpCkBAIC0yMzIsMTIgKzIyOSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0Owor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ0dGbG9hdCBjdEZvbnRTaXplKCkgY29uc3Q7CiAj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZP
TlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgorCiAjaWYgVVNF
KEZSRUVUWVBFKQogICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7
CiAjZW5kaWYKQEAgLTI1MywxMyArMjUzLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSAmJiAo
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMCkpCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9j
Z0ZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SURXcml0ZUZv
bnQ+IG1fZHdGb250OwogICAgIENPTVB0cjxJRFdyaXRlRm9udEZhY2U+IG1fZHdGb250RmFjZTsK
ICNlbmRpZgorCiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90
PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8
RmNQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgbXV0YWJsZSBGY1VuaXF1ZVB0cjxGY0ZvbnRTZXQ+
IG1fZmFsbGJhY2tzOwpAQCAtMjg1LDE1ICsyODgsMTggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2lzRW1vamkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFVT
RShGUkVFVFlQRSkKICAgICBib29sIG1fZml4ZWRXaWR0aCB7IGZhbHNlIH07CiAjZW5kaWYKIH07
CiAKICNpZiBVU0UoQVBQS0lUKQorCiAvLyBOU0ZvbnRzIGFuZCBDVEZvbnRSZWZzIGFyZSB0b2xs
LWZyZWUtYnJpZGdlZC4KIGlubGluZSBDVEZvbnRSZWYgdG9DVEZvbnQoTlNGb250ICpmb250KQog
ewpAQCAtMzA0LDkgKzMxMCwxMSBAQCBpbmxpbmUgTlNGb250ICp0b05TRm9udChDVEZvbnRSZWYg
Zm9udCkKIHsKICAgICByZXR1cm4gKE5TRm9udCAqKWZvbnQ7CiB9CisKICNlbmRpZgogCiAjaWYg
VVNFKENHKQorCiBjbGFzcyBTY29wZWRUZXh0TWF0cml4IHsKIHB1YmxpYzoKICAgICBTY29wZWRU
ZXh0TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtIG5ld01hdHJpeCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCkBAIC0zMzAsOCArMzM4LDcgQEAgcHJpdmF0ZToKICAgICBDR0NvbnRleHRSZWYgbV9jb250
ZXh0OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdGV4dE1hdHJpeDsKIH07CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApp
bmRleCBkOTE5ZmZkYmU1NGZjMjU5YTYxZjE1MWFkZTc3MDViNzNkODM2MDBjLi5mZTM3ZDI1MzRi
ZmMxMDcxMmI2NDAxMjFlMmY1YmQyMzI0YmFlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgR3JhcGhpY3NMYXllcl9oCi0jZGVmaW5lIEdy
YXBoaWNzTGF5ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNp
bmNsdWRlICJDb2xvci5oIgpAQCAtODAsMTEgKzc5LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIEFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBtX2tl
eVRpbWUob3RoZXIubV9rZXlUaW1lKQotICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIu
bV90aW1pbmdGdW5jdGlvbiA/IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkgOiBudWxs
cHRyKQorICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/
IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4geyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgp
IH0gOiBudWxscHRyKQogICAgIHsKICAgICB9CiAKKyAgICBBbmltYXRpb25WYWx1ZShBbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQW5pbWF0aW9uVmFsdWUmKSA9IGRlbGV0ZTsKKwogICAgIGRvdWJsZSBtX2tleVRpbWU7CiAg
ICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOwogfTsKQEAgLTEwNCwx
MiArMTA3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCi0gICAgRmxvYXRBbmltYXRpb25WYWx1
ZShjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJiBvdGhlcikKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShvdGhlcikKLSAgICAgICAgLCBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCi0gICAgewotICAg
IH0KLQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2
YXRlOgpAQCAtMTM0LDEwICsxMzEsMTMgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0t
PmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgp
KTsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTE2MiwxMCAr
MTYyLDEzIEBAIHB1YmxpYzoKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5pbWF0aW9uVmFsdWUob3RoZXIpCiAg
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fdmFsdWUub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkuYXBw
ZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92
YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlLm9w
ZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG90aGVy
Lm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCku
dW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiAgICAgfQogCisgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoRmlsdGVyQW5pbWF0aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CiAKIHByaXZhdGU6CkBAIC0xODUsMTMgKzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgICAgICA6IG1fcHJv
cGVydHkob3RoZXIucHJvcGVydHkoKSkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIubV92YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiBvdGhlci5tX3ZhbHVlcykKKyAgICAgICAgICAgIG1fdmFsdWVzLnVuY2hl
Y2tlZEFwcGVuZCh2YWx1ZS0+Y2xvbmUoKSk7CiAgICAgfQogCi0gICAgfktleWZyYW1lVmFsdWVM
aXN0KCkKLSAgICB7Ci0gICAgfQorICAgIEtleWZyYW1lVmFsdWVMaXN0KEtleWZyYW1lVmFsdWVM
aXN0JiYpID0gZGVmYXVsdDsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKQEAgLTIwMCw2ICsyMDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICBLZXlmcmFtZVZhbHVl
TGlzdCYgb3BlcmF0b3I9KEtleWZyYW1lVmFsdWVMaXN0JiYpID0gZGVmYXVsdDsKKwogICAgIHZv
aWQgc3dhcChLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3
YXAobV9wcm9wZXJ0eSwgb3RoZXIubV9wcm9wZXJ0eSk7CkBAIC0yMTAsMTAgKzIxNCwxMCBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUo
KTsgfQogICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1
cm4gKm1fdmFsdWVzLmF0KGkpOyB9Ci0gICAgCisKICAgICAvLyBJbnNlcnQsIHNvcnRlZCBieSBr
ZXlUaW1lLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBBbmltYXRpb25WYWx1ZT4pOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBBbmltYXRpb25WYWx1ZT4+IG1fdmFsdWVzOwogICAgIEFuaW1h
dGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OwpAQCAtMjI1LDcgKzIyOSw2IEBAIHByb3RlY3RlZDoK
IGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
TGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIGVudW0gY2xh
c3MgVHlwZSB7CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgUGFnZVRpbGVkQmFja2luZywKQEAg
LTI0MSw3ICsyNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShU
eXBlKSB7IH0KIAotICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOworICAgIHVz
aW5nIFBsYXRmb3JtTGF5ZXJJRCA9IHVpbnQ2NF90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
cklEIHByaW1hcnlMYXllcklEKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTY4Myw1
ICs2ODYsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAvLyBPdXRzaWRlIHRoZSBX
ZWJDb3JlIG5hbWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gdGhlIGRlYnVnZ2Vy
Lgogdm9pZCBzaG93R3JhcGhpY3NMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogbGF5ZXIpOwogI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCA4MjQ1ZDRlNmRhNzM1Mzg4MmVhOWNlMjdhNTM3MjVlMWNmZTgxNmRlLi44NTQ2YzcxMmY2NGEx
NzA2ZDYyMGIzNTIzNDY0YmVmNTViZDhjYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0yMywyMSArMjMsMTggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNl
c3Npb25faAotI2RlZmluZSBDRE1TZXNzaW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Q0RNU2Vz
c2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRp
b25VUkwpID0gMDsKIAogICAgIGVudW0gewpAQCAtNjQsNyArNjEsNiBAQCBlbnVtIENETVNlc3Np
b25UeXBlIHsKIAogY2xhc3MgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbigp
IHsgfQogICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KIAogICAgIHZpcnR1YWwgQ0RNU2Vz
c2lvblR5cGUgdHlwZSgpIHsgcmV0dXJuIENETVNlc3Npb25UeXBlVW5rbm93bjsgfQpAQCAtNzks
NSArNzUsMyBAQCBwdWJsaWM6CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKLQotI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCBiMTc2MzI0N2MxMDJm
NjkwYTg0N2EyNjhiOTkwNjI5N2ViYjc0ZTQzLi45MTRhMGEyNzdmMmE0Njc4MzY1ZTMyMzI3ZDAy
NjlhMjBiZjhjZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtNDg2LDE0ICs0ODYsMTUgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQ
b2x5Z29uJgogICAgIHJldHVybiBGbG9hdFJlY3QodG9wTGVmdC52YWx1ZSgpLCBib3R0b21SaWdo
dC52YWx1ZSgpKTsKIH0KIAotUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBw
ZWRSZWN0c0Zvck91dGxpbmUoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBC
b3JkZXJEYXRhJiBib3JkZXJEYXRhLCBmbG9hdCBvdXRsaW5lT2Zmc2V0LCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
Rm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IEJvcmRlckRh
dGEmIGJvcmRlckRhdGEsCisgICAgZmxvYXQgb3V0bGluZU9mZnNldCwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikKIHsKICAgICBBU1NFUlQoYm9yZGVyRGF0YS5oYXNCb3JkZXJSYWRpdXMoKSk7Ci0gICAgRmxv
YXRTaXplIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lk
dGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcExlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKLSAg
ICBGbG9hdFNpemUgdG9wUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BSaWdo
dCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BSaWdodCgpLmhlaWdodCgpLnZhbHVl
KCkpOwotICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJE
YXRhLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgRmxvYXRTaXplIGJvdHRvbUxlZnRSYWRpdXMgPSBG
bG9hdFNpemUoYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJE
YXRhLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKKworICAgIEZsb2F0U2l6ZSB0b3BM
ZWZ0UmFkaXVzIHsgYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0
YS50b3BMZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgdG9wUmlnaHRSYWRp
dXMgeyBib3JkZXJEYXRhLnRvcFJpZ2h0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BS
aWdodCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVz
IHsgYm9yZGVyRGF0YS5ib3R0b21SaWdodCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEuYm90
dG9tUmlnaHQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0UmFk
aXVzIHsgYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS5i
b3R0b21MZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKIAogICAgIGF1dG8gcm91bmRlZFJlY3QgPSBb
dG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBvdXRsaW5lT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcl0gKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGQ3NTQ2ZTI2ODcxM2Y4ZDQ1Y2Q1Y2Y4Zjk0NmFlYWQ1
ZjQ0OWRlMjAuLjg2MTg1ZmMyYmMxODJlOTJlZTkwYmMyNmUxZDU4MWZkYmQ5ODExN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBA
IC00NCwxNiArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiogcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KikKICAgICA6IG1f
cGFyZW50KHBhcmVudCkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc2Vzc2lvbklk
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKIHsKIH0KIAotUmVmUHRyPFVpbnQ4QXJyYXk+
IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK1JlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgVU5V
U0VEX1BBUkFNKGluaXREYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25VUkwpOwpA
QCAtNzAsMzUgKzY4LDMwIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVz
dEZvcktleVVSSShrZXlVUkkpOworICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LnRha2VSZXF1ZXN0
Rm9yS2V5VVJJKGtleVVSSSk7CiAgICAgaWYgKCFtX3JlcXVlc3QpIHsKICAgICAgICAgZXJyb3JD
b2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNlcnRpZmlj
YXRlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlm
aWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRl
RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlLT5i
YXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CiAKLSAgICBDU3RyaW5n
IGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7CisgICAgYXV0byBhc3NldFN0ciA9IGtleUlELnV0Zjgo
KTsKKyAgICBhdXRvIGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhhc3NldElELmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYXNzZXRTdHIu
ZGF0YSgpKSwgYXNzZXRTdHIubGVuZ3RoKCkpOwogCiAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0g
bnVsbHB0cjsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlSZXF1ZXN0ID0gYWRvcHRDRihB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRhLmdldCgpLCBh
c3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOworICAgIGF1dG8ga2V5UmVxdWVzdCA9
IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0
YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKIAogICAgIGlmICgh
a2V5UmVxdWVzdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5m
bzsKICAgICAgICAgaWYgKGNmRXJyb3IpIHsKLSAgICAgICAgICAgIHVzZXJJbmZvID0gYWRvcHRD
RihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKLQotICAgICAgICAgICAgaWYgKHVzZXJJ
bmZvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYgdW5kZXJseWluZ0Vycm9yID0g
KENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9y
VW5kZXJseWluZ0Vycm9yS2V5KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHVzZXJJbmZvID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKSkgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvIHVuZGVybHlpbmdFcnJvciA9IChDRkVycm9yUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvclVuZGVybHlpbmdFcnJvcktleSkpCiAgICAgICAgICAg
ICAgICAgICAgIHN5c3RlbUNvZGUgPSBDRkVycm9yR2V0Q29kZSh1bmRlcmx5aW5nRXJyb3IpOwog
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBDRlJlbGVhc2UoY2ZFcnJvcik7CiAgICAgICAg
IH0KLQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNiw4ICs5OSw4IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKLSAgICByZXR1cm4g
VWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3QuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoa2V5UmVxdWVzdC5nZXQoKSkpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RG
TW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICNlbmRpZgogfQogCkBAIC0xMTcsNyArMTEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewotICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
YXV0byBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3Mo
KSksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVsbHB0ciwg
a2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CkBAIC0xMjUsNyArMTE4LDYgQEAgYm9vbCBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYgbmV4dE0KICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBz
eXN0ZW1Db2RlID0gMDsKICAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCmluZGV4IDY1MjRkMWRmMGIzMTBiNmZmZTk0NjVjNTQzODZhZGRiZjhhNGQ5ZmUuLjEy
YTZhNzkzMWVlZWFmNDAxNWZmYjU2NjBlM2Y3MDE3MDU1Y2FlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTIzLDExICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKQEAgLTM3LDI2ICszNywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCi1jbGFzcyBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CitjbGFzcyBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YoKSB7IH0KLQotICAgIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQotICAgIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0K
LSAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIGJvb2wgdXBkYXRlKFVpbnQ4
QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogbV9wYXJlbnQ7Ci0gICAgQ0RN
U2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIENE
TVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYg
cGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRDbGll
bnQoQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBmaW5hbCB7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQg
cmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWlu
dDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YmIG1fcGFyZW50OworICAgIGNvbnN0IFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0Owog
fTsKIAogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25DRl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBkMWEwNjNlMGZiNTg3Y2ZjMGQ1YTAxYjQxNTY3YTBiN2I2
ZGMwMmU1Li40OWQzNTA5MjIxNWM2ODE4NjJiMzExYjk2OGEwZjBlOTU3ODIzNjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAKQEAgLTExMjIsNiArMTEyMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAogfQog
CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKwogUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0YWtlUmVxdWVzdEZv
cktleVVSSShjb25zdCBTdHJpbmcmIGtleVVSSSkKIHsKICAgICBpZiAoIW1fYXZmV3JhcHBlcikK
QEAgLTExMzUsMTMgKzExMzYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnMKICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
Pih0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CisKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCAsIENETVNlc3Npb25DbGllbnQqKQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENETVNlc3Npb25DbGllbnQqKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQorCiAjZW5kaWYKIAogbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
YXNzZXRFcnJvckNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZGYwM2NjYjYxMjkwMTllMGM4ODQyNmQ3
ODBhYWVkZTUyNmUyMGIyOS4uYmJjMDVkNTA3ZjQyNTY2NzlmYjdkN2JjZjcyMGQ4NTI2YzFhYzM3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKLSNk
ZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIApAQCAtNjYsNSArNjYsMyBAQCBw
cm90ZWN0ZWQ6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYmE0OTYzNTk3ZGFkZjBlMmZjYzUyOGZjODFjYzMy
MTVlOGNkMmJlZS4uZmE0NDQ0YjFlY2ZhYTJjMGU2MjkwNzgwODVmZmE2ZmMyYjI5NmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCkBAIC05MjQsOCArOTI0LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkK
IAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIC8vIElmIHRoZXJlIGlz
IGEgdHJpZ2dlciB0aGF0IGRlcGVuZHMgb24gdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgY2Fubm90
IGFjY2VsZXJhdGUgdGhlIGFuaW1hdGlvbi4KLSAgICBpZiAoYW5pbS0+dHJpZ2dlcigpLT5pc1Nj
cm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewotICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
JiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0t
PnRyaWdnZXIoKS5nZXQoKSk7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KGFu
aW0tPnRyaWdnZXIoKSkpIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAo
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTI4MDUsNyArMjgwNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVB
bmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAg
aW50IGFuaW1hdGlvbkluZGV4ID0gMDsKICAgICAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb247Ci0gICAgCisKICAgICBpZiAoaXNLZXlmcmFtZSkgewogICAgICAg
ICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVy
dHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOwogICAgICAgICB2
YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FB
bmltYXRpb24uZ2V0KCkpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHUKICAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2
ZSk7CiAgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2
YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDI0LDEzICszMDI0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9u
KiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShm
aWxsTW9kZSk7CiB9CiAKLWNvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1W
YWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQorY29uc3QgVGltaW5nRnVuY3Rpb24mIEdyYXBo
aWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCiB7CiAgICAgaWYgKGFu
aW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAqYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7
CiAgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICByZXR1cm4gYW5p
bS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotICAgIAorICAgICAgICByZXR1cm4gKmFuaW0udGlt
aW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVm
YXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTMwNTQsOSArMzA1Myw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlm
cmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAg
ICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0
aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9u
LgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKLSAgICBp
ZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24o
dGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICph
bmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDg2LDEz
ICszMDgzLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlU
aW1lcyk7CiAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModmFsdWVzKTsKICAgICBrZXlmcmFt
ZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFmb3J3YXJkcyk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSw4ICszMTAyLDggQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAg
ICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGF1dG8mIHN0
YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZh
bHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBhdXRvJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsK
IAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKQEAgLTMxNDksMTAgKzMxNDYsOSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZv
ciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUg
c3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2lu
ZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcg
ZnVuY3Rpb24uCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24p
OwotICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3
YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMp
OwogCi0gICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9y
bU9wVHlwZSk7CisgICAgYXV0byB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVG
b3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKICAgICBpZiAodmFsdWVGdW5j
dGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24pCiAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKIApAQCAtMzIwNCw3ICsz
MjAwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9u
cy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZh
bHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
Zm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9u
KSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMp
OwpAQCAtMzI2MCw3ICszMjU2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKIAogICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzI4OCw3
ICszMjg0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCBkMjQ5N2MzMWRhYWIzYjRmYWQ5NTk1NGQ3NTNlMDZhMzJhNWY1
ZDY2Li4yMjNiMTVmZjBmZWM2MTMwNTJmOGY0MzQyOTZlNWRkZjBiMTBjMGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FB
bmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCBlMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUx
MTAzOWRmOWJlNDAwNzEwLi5kYzJiZTFiODc1YjRiZTdhZGVmZDY3MmFiYTgxYjZkZDA3ZTk2M2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDkgKzM1LDMzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBJbnRTaXplIG91dHNldFNpemVGb3JCbHVyKGZsb2F0
IHN0ZERldmlhdGlvbikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1
cjo6Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBz
dGREZXZpYXRpb24pKTsKKyAgICBhdXRvIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBzdGREZXZp
YXRpb24pKTsKIAotICAgIEludFNpemUgb3V0c2V0OwogICAgIC8vIFdlIHRha2UgdGhlIGhhbGYg
a2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJlY2F1c2Ugd2UgcnVuIGJv
eCBibHVyIHRocmVlIHRpbWVzLgotICAgIG91dHNldC5zZXRXaWR0aCgzICoga2VybmVsU2l6ZS53
aWR0aCgpICogMC41Zik7Ci0gICAgb3V0c2V0LnNldEhlaWdodCgzICoga2VybmVsU2l6ZS5oZWln
aHQoKSAqIDAuNWYpOwotCi0gICAgcmV0dXJuIG91dHNldDsKLX0KLQotRmlsdGVyT3BlcmF0aW9u
czo6RmlsdGVyT3BlcmF0aW9ucygpCi17Ci19Ci0KLUZpbHRlck9wZXJhdGlvbnMmIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikKLXsKLSAg
ICBtX29wZXJhdGlvbnMgPSBvdGhlci5tX29wZXJhdGlvbnM7Ci0gICAgcmV0dXJuICp0aGlzOwor
ICAgIHJldHVybiB7CisgICAgICAgIDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLAorICAgICAg
ICAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIKKyAgICB9OwogfQogCi1ib29sIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK2Jv
b2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
dGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0
aW9ucy5zaXplKCkpCisgICAgc2l6ZV90IHNpemUgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOworICAg
IGlmIChzaXplICE9IG90aGVyLm1fb3BlcmF0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHVuc2lnbmVkIHMgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzOyBpKyspIHsKLSAgICAgICAgaWYgKCptX29wZXJhdGlvbnNb
aV0gIT0gKm8ubV9vcGVyYXRpb25zW2ldKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmICgqbV9vcGVyYXRpb25zW2ldICE9ICpvdGhlci5tX29wZXJh
dGlvbnNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAogewotICAgIHNpemVfdCBudW1PcGVyYXRp
b25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICAvLyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1
bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlzdHMgZG9uJ3QgbWF0Y2gKLSAgICBpZiAo
bnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25zKCkuc2l6ZSgpKQorICAgIHNpemVfdCBz
aXplID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICBpZiAoc2l6ZSAhPSBvdGhlci5vcGVyYXRp
b25zKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgdHlw
ZXMgb2YgZWFjaCBmdW5jdGlvbiBhcmUgbm90IHRoZSBzYW1lLCB0aGUgbGlzdHMgZG9uJ3QgbWF0
Y2gKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJhdGlvbnM7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghb3BlcmF0
aW9ucygpW2ldLT5pc1NhbWVUeXBlKCpvdGhlci5vcGVyYXRpb25zKClbaV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg2LDggKzcwLDggQEAgYm9vbCBGaWx0ZXJPcGVy
YXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNv
bnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QK
IHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAobV9vcGVyYXRpb25zLmF0KGkpLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMp
IHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVG
RVJFTkNFKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk1LDkgKzc5LDkgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VG
aWx0ZXIoKSBjb25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25z
dAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBl
ID0gbV9vcGVyYXRpb25zLmF0KGkpLmdldCgpLT50eXBlKCk7Ci0gICAgICAgIGlmIChvcGVyYXRp
b25UeXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCBvcGVyYXRpb25UeXBlID09IEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29w
ZXJhdGlvbnMpIHsKKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAg
ICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCB0eXBlID09IEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDExICs5MCwxMCBAQCBib29sIEZpbHRlck9wZXJhdGlv
bnM6Omhhc091dHNldHMoKSBjb25zdAogRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpv
dXRzZXRzKCkgY29uc3QKIHsKICAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICptX29wZXJhdGlvbnMu
YXQoaSk7Ci0gICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgeworICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7CisgICAgICAgIHN3aXRjaCAob3Bl
cmF0aW9uLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
LSAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAg
ICAgYXV0byYgYmx1ck9wZXJhdGlvbiA9IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpv
cGVyYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7CiAgICAg
ICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0
U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOwpA
QCAtMTE4LDE0ICsxMDEsMTQgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRz
ZXRzKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgY29uc3QgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBhdXRv
JiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRT
aXplRm9yQmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAg
ICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygKKyAgICAgICAgICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cyB7CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAt
IGRyb3BTaGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBv
dXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAgICAg
ICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVyYXRp
b24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLndpZHRoKCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSkKLSAgICAgICAgICAgICk7CisgICAgICAgICAgICB9
OwogICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTM4LDI0ICsxMjEsMjYgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9vcGVyYXRpb25z
W2ldLT5hZmZlY3RzT3BhY2l0eSgpKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVy
YXRpb25zKSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPmFmZmVjdHNPcGFjaXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGlmIChtX29wZXJhdGlvbnNbaV0tPm1vdmVzUGl4ZWxzKCkpCisgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+bW92ZXNQ
aXhlbHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVy
cy5hdChpKTsKKyAgICAgICAgYXV0byBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwogICAgICAgICBp
ZiAoZmlsdGVyKQogICAgICAgICAgICAgdHMgPDwgKmZpbHRlcjsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaAppbmRleCBjZjJjNWI5YjYyNWNiNjY5YzhjNzE0ZTdkM2ZiYTdjMDgz
YTFkZDExLi40ODZmNjg2ZmFhNjk0M2E0NmIyYjhiMWFiNmMwYzdkYzE4ZGQ2Nzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEZpbHRlck9wZXJhdGlvbnNfaAotI2RlZmluZSBGaWx0ZXJPcGVyYXRpb25zX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSW50
UmVjdEV4dGVudC5oIgpAQCAtMzMsMzMgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdHlwZWRlZiBJbnRSZWN0RXh0ZW50IEZpbHRlck91dHNldHM7Cit1c2luZyBGaWx0ZXJPdXRz
ZXRzID0gSW50UmVjdEV4dGVudDsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVy
T3BlcmF0aW9ucygpOwotICAgIEZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0b3I9KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX29wZXJhdGlvbnMuY2xlYXIo
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0K
LSAgICAKICAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkg
eyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+PiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fb3BlcmF0aW9ucy5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuaXNFbXB0
eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6
ZSgpOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChp
bmRleCkuZ2V0KCkgOiAwOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3Bl
cmF0aW9uc1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICBib29sIG9wZXJhdGlvbnNN
YXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKQEAgLTcwLDYgKzU4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKICAg
ICBib29sIGhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3Rv
cjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9vcGVyYXRpb25zOwogfTsKQEAgLTc3LDUgKzY2
LDMgQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5jcHAKaW5kZXggMGJlZGQwYTU3NGMyNDk5ZTVlM2FjZTkyN2I1NDExZjk0MjAx
YTg1MC4uOWNjMWRmNmFkM2JlNTcyOWQzYjJhODE3OTNlNWE1NzA0YWUxZWRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMTI4LDE5ICsxMjgsMTYgQEAgc3RhdGlj
IGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVw
QXRTdGFydCwgZG91YmxlIHQKICAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0
ZXBzOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1
cmF0aW9uKQorc3RhdGljIGlubGluZSBmbG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJh
dGlvbikKIHsKLSAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gcHJvZ3Jl
c3M7Ci0KLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlv
bik7Ci0gICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLCBj
dGYtPnkxKCksIGN0Zi0+eDIoKSwgY3RmLT55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOworICAg
IGlmICh0aW1pbmdGdW5jdGlvbi5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAg
ICAgICBhdXRvJiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi54MSgpLCBjdGYueTEoKSwgY3RmLngyKCksIGN0Zi55MigpLCBwcm9ncmVzcywg
ZHVyYXRpb24pOwogICAgIH0KIAotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
LSAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwg
c3RmLT5zdGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKKyAgICBpZiAodGltaW5nRnVu
Y3Rpb24uaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byYgc3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYubnVtYmVyT2ZTdGVwcygpLCBzdGYu
c3RlcEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHBy
b2dyZXNzOwpAQCAtMTk0LDEzICsxOTEsMTIgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGYKICAg
ICByZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmlt
YXRpb25WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVy
biBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotCisgICAgaWYgKGFuaW1hdGlvblZhbHVl
LnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiAqYW5pbWF0aW9uVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiAqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0yNTcs
NyArMjUzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgp
ID09IDIpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0g
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgbV9hbmlt
YXRpb24uZ2V0KCkpOworICAgICAgICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksICptX2FuaW1hdGlvbik7CiAg
ICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rp
b24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBh
cHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEp
LCBub3JtYWxpemVkVmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjY2LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVk
VmFsdWUgLSBmcm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkp
OwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAg
ICAgYXV0byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sICptX2FuaW1hdGlvbik7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5v
cm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRl
eCA1ODRmZGFiZDkyNDdmYTU4ZDliMGYwZjA0NjhkNDI2MGE2NmQyMDVhLi5lZmJlODBmYWUwM2M0
Y2EyODg0ZGMyZmI5MmExNzdmZmFhYzAyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAt
NjAsNyArNjAsNyBAQCBAaW50ZXJmYWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09i
amVjdDxBVlNwZWVjaFN5bnRoZXNpemVyRGVsZWdhdGU+CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgKilpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKilzeW50aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0
dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAtODcs
NyArODcsNyBAQCAtIChmbG9hdCltYXBTcGVlY2hSYXRlVG9QbGF0Zm9ybVJhdGU6KGZsb2F0KXJh
dGUKICAgICByZXR1cm4gcmF0ZTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0ZXJhbmNl
CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBj
YWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0
c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAg
LSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pdXQKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9sdW1lOnV0dGVy
YW5jZS0+dm9sdW1lKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0
ZXJhbmNlLT5waXRjaCgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07Ci0g
ICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0
dGVyYW5jZSk7CiAKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5j
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4OWQyYWVlMDNl
MjI0NWMuLjJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTE1NSwxMCArMTU1LDEwIEBAIHN0
YXRpYyBMZW5ndGhTaXplIHNpemVGcm9tTlNDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIG5zQ29u
dHJvbFNpemUsIGNvbnN0IExlbmd0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikKICAgICAg
ICAgY29udHJvbFNpemUgPSBJbnRTaXplKGNvbnRyb2xTaXplLndpZHRoKCkgKiB6b29tRmFjdG9y
LCBjb250cm9sU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwogICAgIExlbmd0aFNpemUgcmVz
dWx0ID0gem9vbWVkU2l6ZTsKLSAgICBpZiAoem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRX
aWR0aChMZW5ndGgoY29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBpZiAoem9vbWVk
U2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgp
ID4gMCkKLSAgICAgICAgcmVzdWx0LnNldEhlaWdodChMZW5ndGgoY29udHJvbFNpemUuaGVpZ2h0
KCksIEZpeGVkKSk7CisgICAgaWYgKHpvb21lZFNpemUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8o
KSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmVzdWx0LndpZHRoID0geyBj
b250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCB9OworICAgIGlmICh6b29tZWRTaXplLmhlaWdodC5p
c0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgpID4gMCkKKyAgICAgICAg
cmVzdWx0LmhlaWdodCA9IHsgY29udHJvbFNpemUuaGVpZ2h0KCksIEZpeGVkIH07CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIGNo
ZWNrYm94TWFyZ2lucyhOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNp
emUgY2hlY2tib3hTaXplKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBh
bmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8u
Ci0gICAgaWYgKCF6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9v
bWVkU2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6
ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJp
bnNpY09yQXV0bygpKQogICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0
aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250
cm9sLgpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIHJhZGlvTWFyZ2lucyhO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNpemUgcmFkaW9TaXplKGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9h
dCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3Ro
IHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCF6b29tZWRT
aXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQoKS5p
c0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNp
Y09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAg
ICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRl
dGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgpAQCAtNzEzLDkgKzcx
Myw5IEBAIExlbmd0aFNpemUgVGhlbWVNYWM6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zCiAgICAgICAgICAgICByZXR1cm4gcmFkaW9T
aXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgogICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBz
cGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KLSAgICAgICAgICAgIHJldHVybiBzaXpl
RnJvbUZvbnQoZm9udCwgTGVuZ3RoU2l6ZSh6b29tZWRTaXplLndpZHRoKCksIExlbmd0aCgpKSwg
em9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21G
b250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNp
emVzKCkpOwogICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICBp
ZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXpl
LmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgICAgICBpZiAoIXpvb21lZFNp
emUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRy
aW5zaWNPckF1dG8oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKICAgICAg
ICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRyb2xTaXplRm9y
Rm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzI2LDE3ICs3MjYsMTcgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6
Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnMKIExlbmd0aFNpemUgVGhlbWVNYWM6Om1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAg
ICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICBjYXNlIElu
bmVyU3BpbkJ1dHRvblBhcnQ6ewotICAgICAgICAgICAgSW50U2l6ZSBiYXNlID0gc3RlcHBlclNp
emVzKClbTlNDb250cm9sU2l6ZU1pbmldOwotICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUo
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4oYmFzZS53aWR0aCgpICogem9vbUZhY3RvciksIEZpeGVk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+
KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUo
cGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgorICAg
IGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3Ip
LCBGaXhlZCB9IH07CisgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OiB7CisgICAgICAgIGF1
dG8mIGJhc2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07CisgICAgICAgIHJl
dHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4
ZWQgfSwKKyAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9v
bUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA0MzE1
Y2NjNTdhNWQxNWZjZGI1NjU5YzcxZjFiZmQ5ZmRlMjgyMTNjLi5lZDMwYWIwMzI3MDFjZGUzZDJh
NmRjNjkxNzgyZjczMmUxNWViYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wgZm9j
dXNlZCkKICAgICBpZiAoIWZvY3VzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBm
cmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKKyAgICBGcmFtZSogZnJhbWUgPSBG
cmFtZTo6ZnJhbWVGb3JXaWRnZXQoKnRoaXMpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmFk
NDM5N2EwNGMwNTU2MWM3YzFkNjA2N2FkZWM1MTU5ZjIzNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50TW9jay5oIgotCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURldmljZU1vdGlvbkNsaWVudE1vY2s6OkRldmljZU1vdGlvbkNs
aWVudE1vY2soKQotICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKCp0aGlzLCAm
RGV2aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCkKLSAgICAsIG1faXNVcGRhdGluZyhm
YWxzZSkKLXsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nv
bnRyb2xsZXIpOwotICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgQVNTRVJUKG1f
Y29udHJvbGxlcik7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRh
dGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IGZhbHNl
OwotICAgIG1fdGltZXIuc3RvcCgpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6
OnNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IG1vdGlvbikKLXsKLSAgICBt
X21vdGlvbiA9IG1vdGlvbjsKLSAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIERldmlj
ZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoKQotewotICAgIG1fdGltZXIuc3RvcCgpOwot
ICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1fbW90aW9uLmdldCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2M2MjY4MjhlYTRmMzk0MWRlNWJjZTAxNTM1ODhkMWIwNGNhZTk5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERldmljZU1vdGlvbkNsaWVudE1vY2tf
aAotI2RlZmluZSBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJU
aW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGV2aWNlTW90aW9uQ29udHJv
bGxlcjsKLQotLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIERldmljZU1vdGlvbkNsaWVudCB1
c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KLS8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMg
c2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCi0vLyBj
bGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgotY2xhc3MgRGV2aWNlTW90aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewotcHVibGljOgotICAgIERldmlj
ZU1vdGlvbkNsaWVudE1vY2soKTsKLQotICAgIC8vIERldmljZU1vdGlvbkNsaWVudAotICAgIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKLSAgICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9tb3Rpb24uZ2V0KCk7IH0KLSAgICAvLyBtb2NrIGlzIG93bmVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yaywgd2hpY2ggc2hvdWxkIGhhbmRsZSBkZWxldGlvbgotICAgIHZv
aWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotCi0gICAg
dm9pZCBzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPik7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCB0aW1lckZpcmVkKCk7Ci0KLSAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4g
bV9tb3Rpb247Ci0gICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFRpbWVyIG1fdGltZXI7Ci0gICAgYm9vbCBtX2lzVXBkYXRpbmc7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAKaW5kZXggMzg4MTFmYzEwODE4OGNm
ZTI2ZTE4MGYwMGY5ZjUwZmQ2MTVkYjdkMy4uN2E5OTMxMzZiYTJjM2EwNWQyZDMxOTZhNTU2Nzcx
OGEwMGRhZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNv
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAK
QEAgLTQwLDEwICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIFJlZlB0
cjxTaGFyZWRDdXJzb3I+IGltcGw7Ci0KICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0g
ZGV0ZXJtaW5lSG90U3BvdChpbWcsIGhvdFNwb3QpOwogICAgIHN0YXRpYyBib29sIGRvQWxwaGEg
PSB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NYUDsKICAgICBCaXRtYXBJbmZvIGN1cnNvcklt
YWdlID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoaW1nLT53aWR0aCgpLCBpbWctPmhlaWdo
dCgpKSk7CkBAIC01Miw4ICs1MCw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
Y3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgYXV0
byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwog
ICAgIGlmIChkb0FscGhhKSB7CiAgICAgICAgIGF1dG8gaEN1cnNvciA9IGFkb3B0R0RJT2JqZWN0
KDo6Q3JlYXRlRElCU2VjdGlvbihkYywgJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgbnVs
bHB0ciwgMCwgMCkpOwotICAgICAgICBpZiAoIWhDdXJzb3IpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBpbWctPmdldEhCSVRNQVAoaEN1cnNvci5nZXQoKSk7IAogICAg
ICAgICBIQklUTUFQIGhPbGRCaXRtYXAgPSAoSEJJVE1BUClTZWxlY3RPYmplY3Qod29ya2luZ0RD
LmdldCgpLCBoQ3Vyc29yLmdldCgpKTsKQEAgLTcxLDE1ICs2NywxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpaS5oYm1NYXNrID0gaE1hc2suZ2V0KCk7CiAgICAgICAgIGlp
LmhibUNvbG9yID0gaEN1cnNvci5nZXQoKTsKIAotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29y
OjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3QoJmlpKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRDdXJzb3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgYmxlbmRlZCBjdXJz
b3JzLCBzbyB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGNyZWF0ZSB0aGUgbWFzayBtYW51YWxseQog
ICAgICAgICBhdXRvIGFuZE1hc2tEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKGRjKSk7CiAgICAgICAgIGF1dG8geG9yTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMoZGMpKTsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmpl
Y3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBu
dWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAg
ICAgICAgIEJJVE1BUCBjdXJzb3I7CkBAIC0xMDgsMTggKzEwMiwxNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpY29uLnlIb3RzcG90ID0gZWZmZWN0aXZlSG90U3BvdC55KCk7
CiAgICAgICAgIGljb24uaGJtTWFzayA9IGFuZE1hc2suZ2V0KCk7CiAgICAgICAgIGljb24uaGJt
Q29sb3IgPSB4b3JNYXNrLmdldCgpOwotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29yOjpjcmVh
dGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
bG9hZFNoYXJlZEN1cnNvcihISU5TVEFOQ0UgaEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFt
ZSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBo
SW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1lKQogewogICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZSg6OkxvYWRDdXJzb3JXKGhJbnN0YW5jZSwgbHBDdXJzb3JOYW1lKSk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5TmFtZShjaGFyKiBu
YW1lLCBpbnQgeCwgaW50IHkpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5
TmFtZShjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgSW50UG9pbnQgaG90U3BvdCh4
LCB5KTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnNvckltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCAwMDA4N2QyM2Y2MjY4NjVmOTc2YTc2Mjg2MWY2NzQzOWEw
Y2NiYmQzLi5mNTlmMTVmNmI0ZTA3MWYwMzk5OTcwMzMzZTFkYmQ5MWY4YzFjNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAg
LTM2NCw3ICszNjQsNyBAQCBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRl
U291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dAogCiBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxhc3QoKS5nZXQoKSkuYXNJbWFnZUJ1ZmZl
cigpOworICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpLT5hc0ltYWdlQnVmZmVyKCk7CiB9CiAK
IHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgZWZmZWN0UmVjdCkKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCiAK
IEludFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dFJlY3QoKSBjb25zdAogewotICAg
IGF1dG8mIGxhc3RFZmZlY3QgPSBjb25zdF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5s
YXN0KCkuZ2V0KCkpOworICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpOwogICAgIGlmICghbGFzdEVmZmVjdC5oYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA2M2I3M2M1YzUzMjQyMzM5
YzZkMzYwMWQ2YTJjNjVhZWQzYWY1YTAzLi5jMmIyMjE2YTZhOThmNzU2NGFlODk5OGUwMjI4ZDdm
NjAzYzU4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1
YWxpdHkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1JbnRlcnBvbGF0aW9uUXVhbGl0
eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdl
JiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitJbnRl
cnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNp
emUmIHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwg
dGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaCBx
dWFsaXR5LgogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRv
Y3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYjFmYjMwYTA5Y2MzYTJmNTRh
ZDhhYjQ3NThmYmI1YjEwNzkyZTVkYy4uNWEwMGY5ZWNlMGFhODk1MWEyZTZkODBlYWZmNDFlNmJi
ZWM0M2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApA
QCAtMTIzMSwxMiArMTIzMSwxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgfQogfQog
Ci12b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBpZiAoIWZpbGxMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXll
ci0+bmV4dCgpLCByZWN0LCBvcCk7Ci0gICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIG9wKTsKKyAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5
ZXJzOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKQorICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBsYXllcnMu
cmV2ZXJzZSgpOworICAgIGZvciAoYXV0byogbGF5ZXIgOiBsYXllcnMpCisgICAgICAgIHBhaW50
RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllciwgcmVjdCwgb3ApOwogfQogCiBib29s
IElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBG
aWxsTGF5ZXImIGxhc3RCYWNrZ3JvdW5kTGF5ZXIpIGNvbnN0CkBAIC0xMjQ4LDE3ICsxMjUwLDE3
IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tnCiAgICAgcmV0dXJuICghaGFzRmlsbEltYWdlICYm
ICFyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3go
KSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgpOwogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
aWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7Ci0gICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgpOwot
ICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKCZyZW5kZXJlcigp
LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBhdXRvKiBpbWFnZSA9
IGZpbGxMYXllci5pbWFnZSgpOworICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1hZ2UgJiYgaW1h
Z2UtPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgaWYgKCghaGFzRmlsbEltYWdlICYmICFyZW5kZXJlcigpLnN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwg
IXBhcmVudCgpKQotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFp
bnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJl
Y3Quc2l6ZSgpLCBvcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChwYWludEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUs
IHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9C
UkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gRENMT05FKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOwot
ICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBv
cCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Qu
c2l6ZSgpLCBvcCk7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC0xMjkwLDcgKzEyOTIs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgYwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgp
LCBoZWlnaHQoKSkpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlw
V2lkdGgsIHN0cmlwSGVpZ2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXpl
KCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUo
KSwgb3ApOwogICAgIH0KIH0KIApAQCAtMTQ0Niw3ICsxNDQ4LDcgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyA9IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnM7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSB7Ci0gICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJlbmRlcmVy
KCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCktPmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUo
KS5tYXNrTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgaWYgKChtYXNrQm94SW1hZ2UgJiYgcmVu
ZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0
eWxlKCkubWFza0xheWVycygpLm5leHQoKSkKICAgICAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURl
c3RpbmF0aW9uSW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRl
eCA4MzkwNWJkYzRlN2E3ZWIwN2Y5MzdlNDJhMDBjZDYyNDU5YzA0NWI5Li41NzJiMDI1NjFiMWQ5
MWY2YWViMGM0OGQxYmVlMjYzMmIzNTZlZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29u
c3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBiNGE3YmEwMjM3OTcxZjE3YWEyYzA3OTVjMzBlYzIyOTc3MDk5YTNj
Li44YTk2Yzg0OTdmYjM0NmQ0OTIzZmUwMmVkMWViNzA0ODMxYjdiZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTI3MCwxMCArMTI3MCw5IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogICAgIGlmICghcm9vdEJhY2tncm91bmRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgQ29sb3IgYmdDb2xvciA9IHJvb3RCYWNrZ3Jv
dW5kUmVuZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLQotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3Is
IGJnTGF5ZXIsIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKKyAgICBhdXRvJiBz
dHlsZSA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXItPnN0eWxlKCk7CisgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgY29sb3IsIHN0eWxlLmJhY2tncm91bmRM
YXllcnMoKSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCiBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtMTQxNCwxMiArMTQxMywx
MyBAQCBib29sIFJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoIXN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpIHx8IHN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKKyAgICBhdXRvJiBsYXllcnMgPSBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoIWxheWVycy5pbWFnZSgpIHx8IGxheWVy
cy5uZXh0KCkpIHsKICAgICAgICAgcGFpbnRlZEV4dGVudCA9ICBiYWNrZ3JvdW5kUmVjdDsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
Z2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0LCBiYWNrZ3JvdW5kUmVjdCk7Cisg
ICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxw
dHIsIGxheWVycywgcGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KTsKICAgICBwYWludGVkRXh0
ZW50ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKICAgICByZXR1cm4gIWdlb21ldHJ5Lmhhc05vbkxv
Y2FsR2VvbWV0cnkoKTsKIH0KQEAgLTE0NDksNyArMTQ0OSw3IEBAIGJvb2wgUmVuZGVyQm94Ojpi
YWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxS
ZWN0KSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBGSVhNRTogVGhlIGJh
Y2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgotICAgIGlm
IChzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgpKQorICAgIGlmIChzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKS5uZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMYXlv
dXRSZWN0IGJhY2tncm91bmRSZWN0OwogICAgIHN3aXRjaCAoc3R5bGUoKS5iYWNrZ3JvdW5kQ2xp
cCgpKSB7CkBAIC0xNTM5LDE5ICsxNTM5LDE5IEBAIGJvb2wgUmVuZGVyQm94Ojpjb21wdXRlQmFj
a2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAK
IGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7Ci0gICAgaWYgKCFmaWxsTGF5ZXIgfHwgZmlsbExheWVyLT5jbGlwKCkgIT0gQm9yZGVyRmls
bEJveCkKKyAgICBhdXRvJiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsK
KyAgICBpZiAoZmlsbExheWVyLmNsaXAoKSAhPSBCb3JkZXJGaWxsQm94KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDbGlwcGVkIHdpdGggbG9jYWwgc2Nyb2xsaW5nCi0gICAgaWYg
KGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXllci0+YXR0YWNobWVudCgpID09IExvY2FsQmFj
a2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXll
ci5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGZpbGxMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYm
IGZpbGxMYXllci0+aGFzUmVwZWF0WFkoKSAmJiBmaWxsTGF5ZXItPmltYWdlKCktPmNhblJlbmRl
cih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCisgICAgaWYgKGZpbGxMYXllci5oYXNP
cGFxdWVJbWFnZSgqdGhpcykgJiYgZmlsbExheWVyLmhhc1JlcGVhdFhZKCkgJiYgZmlsbExheWVy
LmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgYW5k
IG5vIGltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZS4K
LSAgICBpZiAoIWZpbGxMYXllci0+bmV4dCgpICYmICFmaWxsTGF5ZXItPmhhc0ltYWdlKCkpIHsK
KyAgICBpZiAoIWZpbGxMYXllci5uZXh0KCkgJiYgIWZpbGxMYXllci5oYXNJbWFnZSgpKSB7CiAg
ICAgICAgIENvbG9yIGJnQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiZ0NvbG9yLmlzT3BhcXVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1OTAsMTUgKzE1OTAsMTIgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcGEKICAgICAKICAgICBpZiAoIWNvbXBvc2l0ZWRNYXNrIHx8IGZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycykgewogICAgICAgICBwdXNoVHJhbnNwYXJlbmN5TGF5ZXIgPSB0
cnVlOwotICAgICAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCk7Ci0gICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0
eWxlKCkubWFza0xheWVycygpOwogCiAgICAgICAgIC8vIERvbid0IHJlbmRlciBhIG1hc2tlZCBl
bGVtZW50IHVudGlsIGFsbCB0aGUgbWFzayBpbWFnZXMgaGF2ZSBsb2FkZWQsIHRvIHByZXZlbnQg
YSBmbGFzaCBvZiB1bm1hc2tlZCBjb250ZW50LgotICAgICAgICBpZiAobWFza0JveEltYWdlKQor
ICAgICAgICBpZiAoYXV0byogbWFza0JveEltYWdlID0gc3R5bGUoKS5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKQogICAgICAgICAgICAgYWxsTWFza0ltYWdlc0xvYWRlZCAmPSBtYXNrQm94SW1hZ2Ut
PmlzTG9hZGVkKCk7CiAKLSAgICAgICAgaWYgKG1hc2tMYXllcnMpCi0gICAgICAgICAgICBhbGxN
YXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOworICAgICAg
ICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IHN0eWxlKCkubWFza0xheWVycygpLmltYWdlc0FyZUxv
YWRlZCgpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CkBAIC0xNjI3LDcxICsxNjI0LDY5IEBAIExheW91
dFJlY3QgUmVuZGVyQm94OjptYXNrQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIExheW91dFJlY3QgYm9yZGVy
Qm94ID0gYm9yZGVyQm94UmVjdCgpOwotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5
ZXIgPSBzdHlsZSgpLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkgeworICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0eWxlKCkubWFza0xh
eWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgIGlmIChtYXNrTGF5ZXItPmltYWdlKCkpIHsKICAgICAgICAgICAgIC8vIE1hc2tzIHNob3Vs
ZCBuZXZlciBoYXZlIGZpeGVkIGF0dGFjaG1lbnQsIHNvIGl0J3MgT0sgZm9yIHBhaW50Q29udGFp
bmVyIHRvIGJlIG51bGwuCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9t
ZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5
ZXIsIHBhaW50T2Zmc2V0LCBib3JkZXJCb3gpOwotICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGdl
b21ldHJ5LmRlc3RSZWN0KCkpOworICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5ZXIsIHBhaW50T2Zmc2V0LCBi
b3JkZXJCb3gpLmRlc3RSZWN0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAgICBWZWN0b3I8Y29uc3QgRmlsbExh
eWVyKiwgOD4gbGF5ZXJzOwotICAgIGNvbnN0IEZpbGxMYXllciogY3VyTGF5ZXIgPSBmaWxsTGF5
ZXI7CiAgICAgYm9vbCBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSBmYWxz
ZTsKLSAgICB3aGlsZSAoY3VyTGF5ZXIpIHsKLSAgICAgICAgbGF5ZXJzLmFwcGVuZChjdXJMYXll
cik7CisKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPm5leHQoKSkgeworICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKworICAgICAg
ICBpZiAobGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgICAg
IHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7CisKICAgICAgICAg
Ly8gU3RvcCB0cmF2ZXJzYWwgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCi0g
ICAgICAgIC8vIEZJWE1FIDogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xsb3dpbmcg
b2NjbHVzaW9uIGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgCisgICAgICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24g
Y3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZQogICAgICAgICAvLyBvbiBsYXllcnMg
d2l0aCBubyByZXBlYXQgYnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxh
eW91dCByZWN0LgogICAgICAgICAvLyBUZXN0aW5nIHRoYXQgaGVyZSB3b3VsZCBpbXBseSBkdXBs
aWNhdGluZyBhIGxvdCBvZiBjYWxjdWxhdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5IGRvbmUgaW4K
ICAgICAgICAgLy8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQu
IEEgbW9yZSBlZmZpY2llbnQgc29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQogICAgICAgICAvLyB0
aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29t
cHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVyZQogICAgICAgICAvLyBhbmQgcGFzcyBpdCBkb3du
LgogCi0gICAgICAgIGlmICghc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGVOb3JtYWwpCi0gICAgICAgICAgICBz
aG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSB0cnVlOwotCiAgICAgICAgIC8v
IFRoZSBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzIGNvbmRpdGlvbiBtdXN0IGJlIGV2YWx1YXRlZCBm
aXJzdCB0byBhdm9pZCBzaG9ydC1jaXJjdWl0aW5nLgotICAgICAgICBpZiAoY3VyTGF5ZXItPmNs
aXBPY2NsdWRlc05leHRMYXllcnMoY3VyTGF5ZXIgPT0gZmlsbExheWVyKSAmJiBjdXJMYXllci0+
aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGN1ckxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGN1ckxheWVyLT5oYXNSZXBlYXRYWSgpICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIGlmIChs
YXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXll
ci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxh
eWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwogICAgIH0KIAotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgQmFzZUJhY2tn
cm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
OworICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGF1dG8gYmFz
ZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxk
RHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7Ci0gICAgICAgIHBhaW50RmlsbExheWVy
KHBhaW50SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CisgICAgICAgIHBh
aW50RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllcnMubGFzdCgpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5
KTsKICAgICAgICAgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwog
ICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVy
ID0gbGF5ZXJzLnJlbmQoKTsKLSAgICBmb3IgKFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IGxheWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7
ICsraXQpCi0gICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgKml0LCByZWN0LCBi
bGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwor
ICAgIGF1dG8gdG9wTGF5ZXIgPSBsYXllcnMucmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGxh
eWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7ICsraXQpCisgICAgICAgIHBhaW50RmlsbExh
eWVyKHBhaW50SW5mbywgY29sb3IsICoqaXQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0Jh
Y2tncm91bmRJblNlcGFyYXRlQnVmZmVyKQogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExh
eWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJh
c2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG51bGxwdHIsIExheW91dFNpemUo
KSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogfQogCi1zdGF0aWMg
Ym9vbCBsYXllcnNVc2VJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
ciogbGF5ZXJzKQorc3RhdGljIGJvb2wgbGF5ZXJzVXNlSW1hZ2UoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycykKIHsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1ckxheWVyOyBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGN1ckxheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGN1ckxheWVy
LT5pbWFnZSgpLT5kYXRhKCkpCisgICAgZm9yIChhdXRvKiBsYXllciA9ICZsYXllcnM7IGxheWVy
OyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpICYm
IGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3MjUsMTMgKzE3MjAsMTMg
QEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEludFJlY3QqKQogICAgICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChCYWNrZ3JvdW5k
SW1hZ2VDaGFuZ2VkKTsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9v
bCBkcmF3aW5nQmFja2dyb3VuZCkKK2Jvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0Zv
ckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpCiB7CiAgICAgTGF5b3V0UmVjdCByZW5kZXJlclJlY3Q7CiAg
ICAgUmVuZGVyQm94KiBsYXllclJlbmRlcmVyID0gbnVsbHB0cjsKIAotICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5
ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0g
Y3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVy
KHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChs
YXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBsYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGxheWVy
LT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CiAg
ICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoaXMgaW1hZ2UgaXMgYmVpbmcgdXNlZCwg
Y29tcHV0ZSB0aGUgcmVuZGVyZXIgYW5kIHRoZSByZWN0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4K
ICAgICAgICAgICAgIGJvb2wgZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kID0gZHJhd2luZ0JhY2tncm91
bmQgJiYgKGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSB8fCAoaXNCb2R5KCkgJiYgIWRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkpOwog
ICAgICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKSB7CkBAIC0xNzUxLDcgKzE3NDYsNyBAQCBi
b29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIg
aW1hZ2UsIGNvbnN0IEZpbGxMYXllcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBwYXNzIGFic29sdXRlIHBv
c2l0aW9uIHRvIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5IChmb3IgcGl4ZWwgc25h
cHBpbmcpCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGxh
eWVyUmVuZGVyZXItPmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpj
dXJMYXllciwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXJSZWN0KTsKKyAgICAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gbGF5ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKmxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5k
ZXJlclJlY3QpOwogICAgICAgICAgICAgaWYgKGdlb21ldHJ5Lmhhc05vbkxvY2FsR2VvbWV0cnko
KSkgewogICAgICAgICAgICAgICAgIC8vIFJhdGhlciB0aGFuIGluY3VyIHRoZSBjb3N0cyBvZiBj
b21wdXRpbmcgdGhlIHBhaW50Q29udGFpbmVyIGZvciByZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNr
Z3JvdW5kcwogICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCB0aGUgcmlnaHQgZGVz
dFJlY3QsIGp1c3QgcmVwYWludCB0aGUgZW50aXJlIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IGQwZmE3YjJhNTc2Mjc5ZGEwMTVmNjI4NTdhNGJiNGMzODdi
NzgxMmQuLjAxMjRhZGFiYzM4YTVmNjQ4MmFjNjllYjgxOTlhMTc4ZjM1YTVlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYyNyw4ICs2MjcsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7
CiAgICAgCi0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBD
b2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRy
KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwor
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOwog
CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYpOwogCkBAIC02NjYsOCArNjY2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gUmV0
dXJucyB0cnVlIGlmIHdlIGRpZCBhIGZ1bGwgcmVwYWludAotICAgIGJvb2wgcmVwYWludExheWVy
UmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5
ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ug
ZGlkIGEgZnVsbCByZXBhaW50LgorICAgIGJvb2wgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShX
cmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNr
Z3JvdW5kKTsKIAogICAgIGJvb2wgc2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRD
YWxjdWxhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBl
bmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3Q7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVjNjU5YjcyY2E5ZDA3N2Zi
NjcyYTY3MjI1YTNjNTIzZGUxYTAxNjguLjFmNGQwYzVmYzlkNWE1YWFlYzk3ZGFhZjc5NmE2NTkz
YWFiYmRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZpbGxMYXllciogYmdMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBiZ0xheWVy
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAgLTYzNSwxMiAr
NjM1LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgYm9vbCBpbmNsdWRlUmlnaHRF
ZGdlID0gYm94ID8gYm94LT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpIDogdHJ1ZTsKIAogICAg
IGJvb2wgaGFzUm91bmRlZEJvcmRlciA9IHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgKGlu
Y2x1ZGVMZWZ0RWRnZSB8fCBpbmNsdWRlUmlnaHRFZGdlKTsKLSAgICBib29sIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiBiZ0xheWVyLT5hdHRhY2htZW50
KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKLSAgICBib29sIGlzQm9yZGVyRmlsbCA9
IGJnTGF5ZXItPmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OworICAgIGJvb2wgY2xpcHBlZFdpdGhM
b2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5ZXIuYXR0YWNobWVudCgp
ID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQ7CisgICAgYm9vbCBpc0JvcmRlckZpbGwgPSBi
Z0xheWVyLmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OwogICAgIGJvb2wgaXNSb290ID0gdGhpcy0+
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpOwogCiAgICAgQ29sb3IgYmdDb2xvciA9IGNvbG9y
OwotICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOworICAgIFN0eWxl
SW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLmltYWdlKCk7CiAgICAgYm9vbCBzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYgYmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hp
dGUgPSBmYWxzZTsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgIC8vIHdoaWxlIHJlbmRlcmluZy4pCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUp
IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVs
b3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2VkCi0gICAgICAgIGJvb2wgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNW
aXNpYmxlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdM
YXllci5uZXh0KCkgJiYgYmdDb2xvci5pc1Zpc2libGUoKTsKICAgICAgICAgaWYgKHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlIHx8IHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yKSB7CiAgICAg
ICAgICAgICBiZ0NvbG9yID0gQ29sb3I6OndoaXRlOwogICAgICAgICAgICAgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgIH0KIAogICAgIGJvb2wgYmFzZUJnQ29sb3JPbmx5ID0gKGJhc2VCZ0Nv
bG9yVXNhZ2UgPT0gQmFzZUJhY2tncm91bmRDb2xvck9ubHkpOwotICAgIGlmIChiYXNlQmdDb2xv
ck9ubHkgJiYgKCFpc1Jvb3QgfHwgYmdMYXllci0+bmV4dCgpIHx8IGJnQ29sb3IuaXNPcGFxdWUo
KSkpCisgICAgaWYgKGJhc2VCZ0NvbG9yT25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLm5leHQo
KSB8fCBiZ0NvbG9yLmlzT3BhcXVlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNv
bG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWaXNpYmxlKCk7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8g
RmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xvciBiYWNrZ3JvdW5kcy4KLSAgICBpZiAo
IWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRCYWNr
Z3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICBp
ZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLm5leHQoKSkgewogICAg
ICAgICBpZiAoIWNvbG9yVmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzA5LDEw
ICs3MDksMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gaXNCb3JkZXJGaWxsID8gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KHJlY3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNs
dWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCi0gICAgICAgIGlmIChiZ0xh
eWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKKyAgICAgICAgaWYgKGJnTGF5ZXIuY2xp
cCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgICAgICBib3JkZXIgPSBzdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLAogICAgICAgICAgICAgICAgIHBh
ZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20o
KSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJS
aWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwotICAgICAgICB9IGVs
c2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKKyAgICAgICAgfSBlbHNl
IGlmIChiZ0xheWVyLmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKICAgICAgICAgICAgIGJvcmRl
ciA9IHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTc0MCwxMCArNzQwLDEw
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtYXNrSW1hZ2U7CiAgICAgSW50UmVjdCBtYXNrUmVjdDsKIAotICAgIGlmIChiZ0xheWVy
LT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdMYXllci0+Y2xpcCgpID09IENvbnRlbnRG
aWxsQm94KSB7CisgICAgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJn
TGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCiAgICAgICAgIGlmICghY2xp
cFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdM
YXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94OworICAgICAgICAgICAgYm9vbCBpbmNsdWRl
UGFkZGluZyA9IGJnTGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94OwogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCA9IExheW91dFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QueCgpICsg
YkxlZnQgKyAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCA6IExheW91dFVuaXQoKSksCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QueSgpICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBh
ZGRpbmcgPyBwYWRkaW5nVG9wKCkgOiBMYXlvdXRVbml0KCkpLAogICAgICAgICAgICAgICAgIHNj
cm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFkZGlu
ZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKQEAgLTc1MSw3ICs3NTEsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYmFja2dyb3VuZENsaXBTdGF0ZVNh
dmVyLnNhdmUoKTsKICAgICAgICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAg
IH0gZWxzZSBpZiAoYmdMYXllci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNl
ZCB0byBjbGlwIGJhY2tncm91bmQgZHJhd2luZy4KICAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91
dCBob3cgYmlnIHRoZSBtYXNrIGhhcyB0byBiZS4gIEl0IHNob3VsZCBiZSBubyBiaWdnZXIgdGhh
biB3aGF0IHdlIG5lZWQKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcmVuZGVyLCBzbyB3ZSBzaG91
bGQgaW50ZXJzZWN0IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGJvcmRlciBib3ggb2YgdGhlIGJh
Y2tncm91bmQuCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICBib29sIGlzT3BhcXVlUm9vdCA9IGZhbHNlOwogICAgIGlmIChpc1Jvb3QpIHsKICAgICAgICAg
aXNPcGFxdWVSb290ID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIWJn
Q29sb3IuaXNPcGFxdWUoKSkgeworICAgICAgICBpZiAoIWJnTGF5ZXIubmV4dCgpICYmICFiZ0Nv
bG9yLmlzT3BhcXVlKCkpIHsKICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChv
d25lckVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aGFzVGFn
TmFtZShmcmFtZVRhZykpIHsKQEAgLTc5OCwxMiArNzk4LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvCiAgICAgfQogCiAgICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGgg
YWxsIGltYWdlcywgY3VsbGVkIGlmIGJhY2tncm91bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCi0gICAg
Ly8gRklYTUU6IEluIHRoZSBiZ0xheWVyLT5oYXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3Vs
ZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QKKyAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXIu
aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0
CiAgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJz
IHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCi0gICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKKyAg
ICBpZiAoIWJnTGF5ZXIubmV4dCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Qoc2Nyb2xsZWRQYWludFJlY3QpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZChyZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlLCBib3gpOwotICAgICAgICBpZiAo
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kIHx8ICFzaG91bGRQYWludEJhY2tn
cm91bmRJbWFnZSB8fCAhYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVy
LT5oYXNSZXBlYXRYWSgpKSB7CisgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRU
b0JhY2tncm91bmQgfHwgIXNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLmhh
c09wYXF1ZUltYWdlKCp0aGlzKSB8fCAhYmdMYXllci5oYXNSZXBlYXRYWSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGFpbnRJbmZvLnJlY3QpOwogCkBAIC04
MjQsMTAgKzgyNCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBpZiAo
YmFzZUNvbG9yLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xv
ck9ubHkgJiYgYmdDb2xvci5pc1Zpc2libGUoKSkKICAgICAgICAgICAgICAgICAgICAgYmFzZUNv
bG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3IpOwotCiAgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIENvbXBvc2l0
ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IHNo
b3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwpAQCAtODM2LDE5ICs4MzUsMTkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KIAogICAgIC8vIG5vIHByb2dyZXNzaXZlIGxvYWRpbmcgb2Yg
dGhlIGJhY2tncm91bmQgaW1hZ2UKICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBzaG91bGRQ
YWludEJhY2tncm91bmRJbWFnZSkgewotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBn
ZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWlu
dENvbnRhaW5lciwgKmJnTGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3Qs
IGJhY2tncm91bmRPYmplY3QpOworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCBiZ0xheWVyLCBy
ZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFpbnRSZWN0LCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAg
ICAgICAgZ2VvbWV0cnkuY2xpcChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFJlY3QpKTsKICAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8g
YmFja2dyb3VuZE9iamVjdCA6IHRoaXMsIGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewotICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGNvbnRleHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKKyAgICAgICAgICAgIGF1dG8gY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGUoKSA6IG9wOworICAgICAgICAgICAgY29udGV4
dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CiAKLSAgICAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRp
b24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIs
IGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVs
YXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xh
eWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5
ZXIuY2xpcCgpID09IFRleHRGaWxsQm94KSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKFdURk1vdmUobWFza0ltYWdlKSwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
fQpAQCAtOTYxLDggKzk2MCw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNh
bGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllCiAgICAgICAgIGNh
c2UgU2l6ZUxlbmd0aDogewogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0
aW9uaW5nQXJlYVNpemU7CiAKLSAgICAgICAgICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExh
eWVyLnNpemUoKS5zaXplLndpZHRoKCk7Ci0gICAgICAgICAgICBMZW5ndGggbGF5ZXJIZWlnaHQg
PSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCk7CisgICAgICAgICAgICBMZW5ndGggbGF5
ZXJXaWR0aCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aDsKKyAgICAgICAgICAgIExlbmd0
aCBsYXllckhlaWdodCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQ7CiAKICAgICAgICAg
ICAgIGlmIChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0aWxlU2l6ZS5z
ZXRXaWR0aChsYXllcldpZHRoLnZhbHVlKCkpOwpAQCAtOTg2LDcgKzk4NSw3IEBAIExheW91dFNp
emUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllCiAgICAgICAgICAgICAgICAgLy8gSWYgYm90aCB3aWR0aCBhbmQgaGVp
Z2h0IGFyZSBhdXRvLCB1c2UgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUuCiAgICAgICAgICAg
ICAgICAgdGlsZVNpemUgPSBpbWFnZUludHJpbnNpY1NpemU7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgdGlsZVNpemUuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwog
ICAgICAgICAgICAgcmV0dXJuIHRpbGVTaXplOwogICAgICAgICB9CkBAIC0xMTcxLDcgKzExNzAs
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9z
aXRpb24gPSByZXNvbHZlRWRnZVJlbGF0aXZlTGVuZ3RoKGZpbGxMYXllci54UG9zaXRpb24oKSwg
ZmlsbExheWVyLmJhY2tncm91bmRYT3JpZ2luKCksIGF2YWlsYWJsZVdpZHRoLCBwb3NpdGlvbmlu
Z0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYgKGJhY2tncm91bmRSZXBlYXRYID09IFJvdW5k
RmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgPiAwICYmIHRpbGVTaXplLndpZHRo
KCkgPiAwKSB7CiAgICAgICAgIGludCBudW1UaWxlcyA9IHN0ZDo6bWF4KDEsIHJvdW5kVG9JbnQo
cG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC8gdGlsZVNpemUud2lkdGgoKSkpOwotICAgICAg
ICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodCgpLmlzQXV0bygpICYmIGJhY2tncm91
bmRSZXBlYXRZICE9IFJvdW5kRmlsbCkKKyAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS5oZWlnaHQuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFkgIT0gUm91bmRGaWxsKQogICAg
ICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHRpbGVTaXplLmhlaWdodCgpICogcG9zaXRpb25p
bmdBcmVhU2l6ZS53aWR0aCgpIC8gKG51bVRpbGVzICogdGlsZVNpemUud2lkdGgoKSkpOwogCiAg
ICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAvIG51
bVRpbGVzKTsKQEAgLTExODEsNyArMTE4MCw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZFlQb3NpdGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5n
dGgoZmlsbExheWVyLnlQb3NpdGlvbigpLCBmaWxsTGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4oKSwg
YXZhaWxhYmxlSGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYg
KGJhY2tncm91bmRSZXBlYXRZID09IFJvdW5kRmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLmhl
aWdodCgpID4gMCAmJiB0aWxlU2l6ZS5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgaW50IG51bVRp
bGVzID0gc3RkOjptYXgoMSwgcm91bmRUb0ludChwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgp
IC8gdGlsZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS53aWR0aCgpLmlzQXV0bygpICYmIGJhY2tncm91bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKKyAg
ICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aC5pc0F1dG8oKSAmJiBiYWNrZ3Jv
dW5kUmVwZWF0WCAhPSBSb3VuZEZpbGwpCiAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aCh0
aWxlU2l6ZS53aWR0aCgpICogcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIChudW1UaWxl
cyAqIHRpbGVTaXplLmhlaWdodCgpKSk7CiAKICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHBv
c2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLyBudW1UaWxlcyk7CkBAIC0xMjUwLDcgKzEyNDks
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgRmxvYXRTaXplJiBwaGFzZSwgRmxvYXRTaXplJiB0aWxlU2l6ZSkgY29u
c3QKIHsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdChkZXN0UmVjdCk7Ci0gICAgQmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eShwYWludENvbnRhaW5lciwgKnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludE9mZnNl
dCwgcGFpbnRSZWN0KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkocGFpbnRDb250YWluZXIsIHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBw
YWludE9mZnNldCwgcGFpbnRSZWN0KTsKICAgICBwaGFzZSA9IGdlb21ldHJ5LnBoYXNlKCk7CiAg
ICAgdGlsZVNpemUgPSBnZW9tZXRyeS50aWxlU2l6ZSgpOwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0
cnkuZGVzdFJlY3QoKTsKQEAgLTIxNzAsOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQ
b2luCiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uc3QgRmlsbExheWVyKiBsYXN0QmFja2dyb3VuZExheWVyID0gc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG5leHQg
PSBsYXN0QmFja2dyb3VuZExheWVyLT5uZXh0KCk7IG5leHQ7IG5leHQgPSBsYXN0QmFja2dyb3Vu
ZExheWVyLT5uZXh0KCkpCisgICAgYXV0byogbGFzdEJhY2tncm91bmRMYXllciA9ICZzdHlsZSgp
LmJhY2tncm91bmRMYXllcnMoKTsKKyAgICB3aGlsZSAoYXV0byogbmV4dCA9IGxhc3RCYWNrZ3Jv
dW5kTGF5ZXItPm5leHQoKSkKICAgICAgICAgbGFzdEJhY2tncm91bmRMYXllciA9IG5leHQ7CiAK
ICAgICBpZiAobGFzdEJhY2tncm91bmRMYXllci0+Y2xpcCgpICE9IEJvcmRlckZpbGxCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDc4ZjUyZWM2MGU4NGUzMjc0MWM3YzQzMDhmYTJkYzY3Yjg3MGU1MTEuLjkzZWMyY2U4YTgxMDQ4
NTczNDAyMDQwZmE0Mjk3MzViZjI5OWM5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFn
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5
b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VC
YWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRT
aXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxl
bWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRv
d1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQ
YWludFBvc3Rpb24sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBu
dWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGUyN2I0MWFiMTBlYThhNWJmZTJlNjMyNzI4NWI1YThmMjFmMWJmMmQuLmY4NDdm
ZmRlOGZlNWQyNmQ1M2M2MWQ5NTQ3NTk0Yjg4NGE2YzRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNSwyMiArMTM1LDE4IEBAIFJlbmRlckVs
ZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsCiBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAg
aWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVy
ID0gYmdMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dy
b3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBiZ0xheWVy
ID0gJm1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXll
ci0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gYmdM
YXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBt
YXNrTGF5ZXIgPSBtX3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBt
YXNrTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tJbWFn
ZSA9IG1hc2tMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAm
bV9zdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxl
LmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIGJvcmRlckltYWdlID0g
bV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBib3JkZXJJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1h
Z2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChhdXRvKiBt
YXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAg
ICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLQogICAgICAgICBpZiAoYXV0byBz
aGFwZVZhbHVlID0gbV9zdHlsZS5zaGFwZU91dHNpZGUoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gc2hhcGVJbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgc2hh
cGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtMzAzLDggKzI5OSw4IEBAIFN0eWxlRGlm
ZmVyZW5jZSBSZW5kZXJFbGVtZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIHVuc2lnCiAgICAgfQogICAgIAogICAgIGlmICgoY29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXIpICYmIGhhc0xheWVyKCkp
IHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCk7Ci0gICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygpKQorICAgICAgICBhdXRvJiBsYXllciA9
ICpkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKTsKKyAgICAg
ICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSB8fCBsYXllci5wYWludHNXaXRoRmlsdGVycygp
KQogICAgICAgICAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYsIFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnRMYXllcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRpZmYgPSBzdGQ6Om1heChkaWZm
LCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKTsKQEAgLTM0MSwyMSArMzM3LDIwIEBA
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYpCiAgICAgcmV0dXJuIGRpZmYgPT0gU3R5bGVEaWZmZXJl
bmNlUmVwYWludCB8fCAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50SWZUZXh0T3JCb3Jk
ZXJPck91dGxpbmUgJiYgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZE9yQm9yZGVy
T3JPdXRsaW5lKCkpOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMo
Y29uc3QgRmlsbExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciogbmV3TGF5ZXJzKQor
dm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciogb2xk
TGF5ZXJzLCBjb25zdCBGaWxsTGF5ZXImIG5ld0xheWVycykKIHsKLSAgICAvLyBPcHRpbWl6ZSB0
aGUgY29tbW9uIGNhc2UKLSAgICBpZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5
ZXJzLCBuZXdMYXllcnMpKQorICAgIC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZS4KKyAgICBp
ZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5ZXJzLCAmbmV3TGF5ZXJzKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdvIHRocm91Z2ggdGhlIG5ldyBsYXllcnMgYW5k
IGFkZENsaWVudHMgZmlyc3QsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRzIG9mIGFuIGlt
YWdlLgotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTmV3ID0gbmV3TGF5ZXJzOyBjdXJy
TmV3OyBjdXJyTmV3ID0gY3Vyck5ldy0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyTmV3LT5p
bWFnZSgpKQotICAgICAgICAgICAgY3Vyck5ldy0+aW1hZ2UoKS0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgIC8vIEFkZCBiZWZvcmUgcmVtb3ZpbmcsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRz
IG9mIGFuIGltYWdlIHRoYXQgaXMgaW4gYm90aCBzZXRzLgorICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbmV3TGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGxheWVyLT5pbWFnZSgpLT5hZGRDbGllbnQo
dGhpcyk7CiAgICAgfQotCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJPbGQgPSBvbGRM
YXllcnM7IGN1cnJPbGQ7IGN1cnJPbGQgPSBjdXJyT2xkLT5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGN1cnJPbGQtPmltYWdlKCkpCi0gICAgICAgICAgICBjdXJyT2xkLT5pbWFnZSgpLT5yZW1vdmVD
bGllbnQodGhpcyk7CisgICAgZm9yIChhdXRvKiBsYXllciA9IG9sZExheWVyczsgbGF5ZXI7IGxh
eWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkpCisgICAg
ICAgICAgICBsYXllci0+aW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIH0KIApA
QCAtNDA5LDggKzQwNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpCiAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKHN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwogCiAgICAg
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlKTsKLSAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92
ZShtX3N0eWxlKTsKLSAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7CisgICAgYXV0byBvbGRT
dHlsZSA9IG1fc3R5bGUucmVwbGFjZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYm9vbCBkZXRhY2hl
ZEZyb21QYXJlbnQgPSAhcGFyZW50KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaW52YWxpZGF0
ZSB0aGUgY29udGFpbmluZyBibG9jayBjYWNoZSBmb3IgZmxvd3Mgd2hlbiB0aGUgY29udGlhbmlu
ZyBibG9jayBjb250ZXh0IGNoYW5nZXMKQEAgLTgwNyw3ICs4MDEsNyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihTdHlsZVByb3BhZ2F0aW9u
VHlwZSBwcm9wYQogICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlz
cGxheSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAg
ICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgmc3R5bGUo
KSk7CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KHN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLmNvbHVtblNw
YW4oKSkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOwogICAgICAgICB9CkBAIC05OTksOCArOTkzLDggQEAgc3RhdGljIGlubGluZSBib29sIGFy
ZUN1cnNvcnNFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICB1cGRhdGVGaWxsSW1hZ2Vz
KG9sZFN0eWxlID8gb2xkU3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5
bGUuYmFja2dyb3VuZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8g
b2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRl
RmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwg
bV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2Uo
KS5pbWFnZSgpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
KTsKICAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlT3V0c2lk
ZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CkBAIC0xMjMxLDQxICsxMjI1
LDM5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpM
YXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0
KCkpOwotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUg
KGNoaWxkKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xh
eW91dCgpKQogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgbXVz
dFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
aWxsTGF5ZXImIGxheWVyKQogewogICAgIC8vIE5vYm9keSB3aWxsIHVzZSBtdWx0aXBsZSBsYXll
cnMgd2l0aG91dCB3YW50aW5nIGZhbmN5IHBvc2l0aW9uaW5nLgotICAgIGlmIChsYXllci0+bmV4
dCgpKQorICAgIGlmIChsYXllci5uZXh0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGhhdmUgYSB2YWxpZCBpbWFnZS4KLSAgICBTdHlsZUltYWdlKiBpbWFn
ZSA9IGxheWVyLT5pbWFnZSgpOworICAgIGF1dG8qIGltYWdlID0gbGF5ZXIuaW1hZ2UoKTsKICAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlciwgcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWxheWVyLT54UG9zaXRpb24oKS5pc1plcm8oKSB8fCAhbGF5ZXItPnlQb3NpdGlvbigpLmlzWmVy
bygpKQorICAgIGlmICghbGF5ZXIueFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLnlQb3Np
dGlvbigpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVGaWxsU2l6ZVR5
cGUgc2l6ZVR5cGUgPSBsYXllci0+c2l6ZVR5cGUoKTsKKyAgICBhdXRvIHNpemVUeXBlID0gbGF5
ZXIuc2l6ZVR5cGUoKTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBDb250YWluIHx8IHNpemVUeXBl
ID09IENvdmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBT
aXplTGVuZ3RoKSB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IGxheWVyLT5zaXplTGVuZ3Ro
KCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwg
c2l6ZS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKKyAgICAgICAgYXV0byBzaXpl
ID0gbGF5ZXIuc2l6ZUxlbmd0aCgpOworICAgICAgICBpZiAoc2l6ZS53aWR0aC5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKSB8fCBzaXplLmhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRo
ZXIgYW4gaW50cmluc2ljIHdpZHRoIG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBp
cyBkZXRlcm1pbmVkIGFzIGZvciAnY29udGFpbicuCi0gICAgICAgIGlmICgoc2l6ZS53aWR0aCgp
LmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRl
ZEltYWdlKCkpCisgICAgICAgIGlmICgoc2l6ZS53aWR0aC5pc0F1dG8oKSB8fCBzaXplLmhlaWdo
dC5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVkSW1hZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoaW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzY1LDE0ICsxMzU3LDE0IEBAIGJvb2wgUmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4
dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFVuaXQgYm9yZGVy
UmlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMp
LmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJv
eD4oKnRoaXMpLndpZHRoKCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWlu
SW5zZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5yaWdodCgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwg
b2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0LCBzdGQ6Om1heDxMYXlvdXRVbml0Pih2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lk
dGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKSwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBib3Jk
ZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5p
dD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVuaXQgbWluSW5z
ZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4
dGVudC5yaWdodCgpLCBzdGQ6Om1pbihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRo
KCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4KGJvcmRlclJp
Z2h0LCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgsIGJveFdpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21S
aWdodFJhZGl1cygpLndpZHRoLCBib3hXaWR0aCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNv
cmF0aW9uc1dpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQm94LndpZHRoKCks
IG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRoLAogICAgICAgICAgICAg
bmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGRlY29yYXRpb25zV2lkdGgs
CiAgICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LmhlaWdodCgpLCBvbGRPdXRsaW5l
Qm94LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbjxMYXlv
dXRVbml0PihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKKyAgICAgICAgTGF5
b3V0VW5pdCByaWdodCA9IHN0ZDo6bWluKG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhY
KCkpOwogICAgICAgICBpZiAocmlnaHRSZWN0LngoKSA8IHJpZ2h0KSB7CiAgICAgICAgICAgICBy
aWdodFJlY3Quc2V0V2lkdGgoc3RkOjptaW4ocmlnaHRSZWN0LndpZHRoKCksIHJpZ2h0IC0gcmln
aHRSZWN0LngoKSkpOwogICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHJpZ2h0UmVjdCk7CkBAIC0xMzg1LDEwICsxMzc3LDEwIEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuYm9y
ZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91dFVu
aXQgYm94SGVpZ2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKS5oZWlnaHQoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLmhlaWdodCgp
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQg
PSBzdGQ6Om1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgp
LCBib3hIZWlnaHQpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpKSk7Ci0gICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20p
OworICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjpt
aW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbihuZXdC
b3VuZHMuaGVpZ2h0KCksIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckhlaWdodCA9IHN0ZDo6bWF4KGJvcmRlckJvdHRvbSwgc3RkOjptYXgodmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQp
LAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSkpOworICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRp
b25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zm
c2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIHN0ZDo6
bWF4KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0
b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgc3RkOjptaW4obmV3T3V0bGlu
ZUJveC5tYXhZKCksIG9sZE91dGxpbmVCb3gubWF4WSgpKSAtIGRlY29yYXRpb25zSGVpZ2h0LAog
ICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94
LndpZHRoKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
MjgwMzc0NDE1ZGM2MTI3ZDM1OGU2ZmU0NDMyZGY3YzhiYmZiZWI5Ny4uYzZmOTcwMThkZGI2OTI2
MTdlM2VmZDVmNGVlMTliZTRlMmUwNjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlKSBjb25zdDsKICAgICBi
b29sIGhhc0ltbWVkaWF0ZU5vbldoaXRlc3BhY2VUZXh0Q2hpbGRPckJvcmRlck9yT3V0bGluZSgp
IGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IEZpbGxMYXllciopOworICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5
ZXIqLCBjb25zdCBGaWxsTGF5ZXImKTsKICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2Uq
LCBTdHlsZUltYWdlKik7CiAgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCAzM2JmZjBlNDFkMDAzMmE3NTU3ZjA0ZDUzZjc1YWNkMTEzZWI2ZWYwLi43
ODYzODAxOTA5OTE1NjlmNzY1NTI0NGU5MDRlNTM4MjJjYzA3MDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNzIwLDcgKzI3MjAsNyBAQCBDb250ZW50QWxp
Z25tZW50RGF0YSBSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0
aW9uT2Zmc2V0KEdyaQogICAgIGlmIChjb250ZW50QWxpZ25tZW50LmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRBbGlnbm1lbnQ7CiAKLSAgICBhdXRvIG92ZXJmbG93ID0gaXNSb3dB
eGlzID8gc3R5bGUoKS5qdXN0aWZ5Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgOiBzdHlsZSgp
LmFsaWduQ29udGVudE92ZXJmbG93QWxpZ25tZW50KCk7CisgICAgYXV0byBvdmVyZmxvdyA9IChp
c1Jvd0F4aXMgPyBzdHlsZSgpLmp1c3RpZnlDb250ZW50KCkgOiBzdHlsZSgpLmFsaWduQ29udGVu
dCgpKS5vdmVyZmxvdygpOwogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPD0gMCAmJiBvdmVy
ZmxvdyA9PSBPdmVyZmxvd0FsaWdubWVudFNhZmUpCiAgICAgICAgIHJldHVybiB7MCwgMH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA1MWQ0NGJmNTY2
OTY3Y2FhZGFmOTc0MjAyOTgyY2I5MThiZmU4NTEuLmFjZWVkN2Q1OTBkZTI1Y2M0Mzk5ODc4NDgz
Yjg5ODc3YWYyOTU2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzE0MywxNyArMzE0MywxOCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyRm9yU2Nyb2xsYmFyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogUmVmPFNj
cm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7Ci0gICAgUmVu
ZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJl
cigpKTsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gYWN0dWFsUmVuZGVyZXIt
PmlzQm94KCkgJiYgYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKTsKKyAgICBBU1NFUlQocmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSkpOworICAg
IGF1dG8mIGFjdHVhbFJlbmRlcmVyID0gKnJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkp
OworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVh
bFJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0
eWxlKQotICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9s
bGJhcigqdGhpcywgb3JpZW50YXRpb24sIGFjdHVhbFJlbmRlcmVyLT5lbGVtZW50KCkpOworICAg
ICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhp
cywgb3JpZW50YXRpb24sIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLmVsZW1l
bnQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CiAgICAg
ICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIo
KSk7CiAgICAgfQotICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdp
ZGdldC5nZXQoKSk7CisgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQo
KndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGM4
YzQwYzVjZjAzMDQzYjkwNWVkOWE0YzFmZmY5OWRlOTMxNTAzZjQuLjNlYzdmZGQ4MDU3YzkwNzRh
MDIzNGM3NzBhZjQ3OTRhN2Q5M2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNzI2LDMwICsxNzI2LDI3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogCiBzdGF0aWMgYm9vbCBjYW5DcmVhdGVUaWxlZEltYWdlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciA9IHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKTsKLSAgICBpZiAoZmlsbExheWVyLT5uZXh0KCkpCisgICAgYXV0byYgZmls
bExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOworICAgIGlmIChmaWxsTGF5ZXIubmV4
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWZpbGxMYXllci0+aW1hZ2Vz
QXJlTG9hZGVkKCkpCisgICAgaWYgKCFmaWxsTGF5ZXIuaW1hZ2VzQXJlTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSAhPSBT
Y3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoZmlsbExheWVyLmF0dGFjaG1lbnQo
KSAhPSBTY3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotCiAgICAgLy8gRklYTUU6IEFsbG93IGNvbG9yK2ltYWdlIGNv
bXBvc2l0aW5nIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCiAgICAgLy8gRm9yIG5vdyBiYWlsaW5nIG91
dC4KLSAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpCisgICAgaWYgKHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBmaWxsTGF5
ZXItPmltYWdlKCk7Ci0KICAgICAvLyBGSVhNRTogc3VwcG9ydCBncmFkaWVudHMgd2l0aCBpc0dl
bmVyYXRlZEltYWdlLgorICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsK
ICAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1h
Z2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTE4MDksMjUgKzE4MDYsMjQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRJbWFnZShib29sIGlzU2ltcGxlQ28KICAg
ICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0KKyAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIWlzU2ltcGxlQ29udGFp
bmVyIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGJhY2tncm91bmRCb3hGb3JTaW1wbGVDb250YWluZXJQ
YWludGluZygpOworICAgIGF1dG8gZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9yU2ltcGxlQ29u
dGFpbmVyUGFpbnRpbmcoKTsKICAgICBGbG9hdFNpemUgcGhhc2U7CiAgICAgRmxvYXRTaXplIHRp
bGVTaXplOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlLmJhY2tncm91bmRMYXll
cnMoKS0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAvLyBGSVhNRTogYWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KKyAgICAvLyBGSVhNRTogQWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KICAgICBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpLmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKCZyZW5kZXJl
cigpLCBMYXlvdXRQb2ludCgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKKwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFzZSk7CiAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChkZXN0UmVjdCkpOwotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlLmdldCgpKTsKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCku
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKICAgICBkaWRVcGRhdGVDb250ZW50
c1JlY3QgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKaW5kZXggMjJlZTk4MTEwNzdmZmQ4MDhiZmJhMTM5NDA5YjZjOTYwZjYzNGZhZi4uY2Rm
ODA2MGJjYjVlZDhhOGY0ZjkzN2E3ZTQ5N2UxNDY3ZDZlYmI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIFJlZjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAg
IH0KLSAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICB2
aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQoKndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAppbmRleCBkMzlmNjQ2OTU4N2M3NDQyZjM3MjQ0NzNiNjg1ODA4YTk3ZmE2N2Zi
Li5kMmMwMmVmOWQ2MGUwNmM2ODY2NzIzZTQ3NDA3MzdhZDhjMGMzODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAvLyBVc2UgbWFyZ2lu
OmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0IHNhZmUgY2VudGVyaW5n
LCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MsIHRyZWF0IGl0IHRoZSBz
YW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIC8vIEJ1dCB3ZSBvbmx5IGRvIHRo
YXQgZm9yIHRoZSBjYXNlcyB3aGVyZSBodG1sLmNzcyB3b3VsZCBvdGhlcndpc2UgdXNlIGNlbnRl
ci4KLSAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25D
ZW50ZXIpIHsKKyAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zKCkucG9zaXRpb24oKSA9PSBJdGVt
UG9zaXRpb25DZW50ZXIpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3Ro
KCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpbkJvdHRvbShMZW5ndGgoKSk7CiAgICAg
ICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uRmxleFN0YXJ0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMS4uM2U3MDMyMGQ2OTUyMjhj
MmRhNmQ3NmEwZDFlYmYyMTQ2YTA5M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyNzYsOSArMTI3Niw5IEBAIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5CiAgICAgICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkp
OwogCiAgICAgQ29sb3IgYyA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBjb25zdCBGaWxsTGF5
ZXIqIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMo
KTsKKyAgICBhdXRvJiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CiAKLSAgICBpZiAoYmdMYXllci0+aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQo
KSkgeworICAgIGlmIChiZ0xheWVyLmhhc0ltYWdlKCkgfHwgYy5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBw
YWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBv
bmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAgICBib29sIHNob3VsZENsaXAg
PSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNrZ3JvdW5kT2JqZWN0ID09IHRo
aXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYgdGFibGVFbHQtPmNvbGxhcHNl
Qm9yZGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXgg
ZmE1OTlhNzE4NzJiNDk4YTU0NjMyZWQzZGVjZmU2NmU2ZjMxMWMxZS4uYzMxYTlhYTZjZjJiMDY5
ODIyYjZmZjUwNjdiZmZhYzUzN2ZmMmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAog
ICAgICAgICAvLyBQYWRkaW5nCiAgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gbV90aGVt
ZS0+Y29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFkZGlu
Z0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFkZGluZ0JveCAh
PSBzdHlsZS5wYWRkaW5nQm94KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KHBh
ZGRpbmdCb3gpOworICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBhZGRp
bmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCiAgICAgICAgIGlmIChtX3RoZW1lLT5j
b250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQpAQCAtMTU1LDE5ICsxNTUsMTkgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAg
ICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4K
ICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtl
IG1pbi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgotICAgICAgICBMZW5ndGhTaXplIGNv
bnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgTGVuZ3RoU2l6ZShzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSksIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKSk7Ci0gICAgICAgIGlmIChjb250cm9sU2l6ZS53aWR0aCgpICE9IHN0eWxlLndp
ZHRoKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChjb250cm9sU2l6ZS53aWR0aCgpKTsK
LSAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCgpICE9IHN0eWxlLmhlaWdodCgpKQotICAg
ICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGNvbnRyb2xTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICAKKyAgICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRy
b2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUu
aGVpZ2h0KCkgfSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xT
aXplLndpZHRoICE9IHN0eWxlLndpZHRoKCkpCisgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChX
VEZNb3ZlKGNvbnRyb2xTaXplLndpZHRoKSk7CisgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWln
aHQgIT0gc3R5bGUuaGVpZ2h0KCkpCisgICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92
ZShjb250cm9sU2l6ZS5oZWlnaHQpKTsKKwogICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVp
Z2h0CiAgICAgICAgIExlbmd0aFNpemUgbWluQ29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVt
Q29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKLSAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUubWluV2lk
dGgoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKG1pbkNvbnRyb2xTaXplLndpZHRo
KCkpOwotICAgICAgICBpZiAobWluQ29udHJvbFNpemUuaGVpZ2h0KCkgIT0gc3R5bGUubWluSGVp
Z2h0KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQobWluQ29udHJvbFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lk
dGggIT0gc3R5bGUubWluV2lkdGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdU
Rk1vdmUobWluQ29udHJvbFNpemUud2lkdGgpKTsKKyAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXpl
LmhlaWdodCAhPSBzdHlsZS5taW5IZWlnaHQoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbkhl
aWdodChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOworCiAgICAgICAgIC8vIEZvbnQK
ICAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwg
c3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAg
ICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9u
dCwgYWxzbyBvdmVycmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBo
ZWlnaHQuCkBAIC03MDksOSArNzA5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5
bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm8KICAgICBj
YXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgY2FzZSBUZXh0QXJlYVBhcnQ6CiAgICAgICAgIC8vIFRl
c3QgdGhlIHN0eWxlIHRvIHNlZSBpZiB0aGUgVUEgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIG1hdGNo
LgotICAgICAgICByZXR1cm4gKHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgotICAgICAgICAgICAg
fHwgKnN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICB8
fCAhc3R5bGUuYmFja2dyb3VuZENvbG9yRXF1YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChiYWNr
Z3JvdW5kQ29sb3IpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgor
ICAgICAgICAgICAgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQKKyAg
ICAgICAgICAgIHx8ICFzdHlsZS5iYWNrZ3JvdW5kQ29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdW
aXNpdGVkKGJhY2tncm91bmRDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3Bw
CmluZGV4IDExMjYwZmE5Y2JmNDE3OTVkM2Q4Yjc3ZDdiZDkxYTkwNWNiMjY5ZDUuLjU4NzUyOTRi
NjhjMjc4YmY5MTRiMTMyMWM3MWI2NmJhYmFjZjU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMTQ1LDIwICsxNDUsMjYgQEAgdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlJiBzdHlsZSwgRm9y
bVR5cGUgdHlwZSkgY28KICAgICAvLyBUaGVzZSBhcmUgYWx3YXlzIHZhbGlkLCBldmVuIGlmIG5v
IHRoZW1lIGNvdWxkIGJlIGxvYWRlZC4KICAgICBjb25zdCBUaGVtZVBhcnREZXNjKiBkZXNjID0g
bV9wYXJ0RGVzY3MgKyAoc2l6ZV90KXR5cGU7CiAKLSAgICBpZiAoc3R5bGUubWluV2lkdGgoKS5p
c0ludHJpbnNpYygpKQotICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChkZXNjLT5taW4ud2lkdGgo
KSk7Ci0gICAgaWYgKHN0eWxlLm1pbkhlaWdodCgpLmlzSW50cmluc2ljKCkpCi0gICAgICAgIHN0
eWxlLnNldE1pbkhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOworICAgIGlmIChzdHlsZS5taW5X
aWR0aCgpLmlzSW50cmluc2ljKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWluLndp
ZHRoCisgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdURk1vdmUoY29weSkpOworICAgIH0KKyAg
ICBpZiAoc3R5bGUubWluSGVpZ2h0KCkuaXNJbnRyaW5zaWMoKSkgeworICAgICAgICBhdXRvIGNv
cHkgPSBkZXNjLT5taW4uaGVpZ2h0CisgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChXVEZNb3Zl
KGNvcHkpKTsKKyAgICB9CiAKLSAgICBpZiAoZGVzYy0+bWF4LndpZHRoKCkudmFsdWUoKSA+IDAg
JiYgc3R5bGUubWF4V2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQotICAgICAgICBzdHlsZS5z
ZXRNYXhXaWR0aChkZXNjLT5tYXgud2lkdGgoKSk7Ci0gICAgaWYgKGRlc2MtPm1heC5oZWlnaHQo
KS52YWx1ZSgpID4gMCAmJiBzdHlsZS5tYXhIZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQot
ICAgICAgICBzdHlsZS5zZXRNYXhIZWlnaHQoZGVzYy0+bWF4LmhlaWdodCgpKTsKKyAgICBpZiAo
ZGVzYy0+bWF4LndpZHRoLnZhbHVlKCkgPiAwICYmIHN0eWxlLm1heFdpZHRoKCkuaXNJbnRyaW5z
aWNPckF1dG8oKSkgeworICAgICAgICBhdXRvIGNvcHkgPSBkZXNjLT5tYXgud2lkdGgKKyAgICAg
ICAgc3R5bGUuc2V0TWF4V2lkdGgoV1RGTW92ZShjb3B5KSk7CisgICAgfQorICAgIGlmIChkZXNj
LT5tYXguaGVpZ2h0LnZhbHVlKCkgPiAwICYmIHN0eWxlLm1heEhlaWdodCgpLmlzSW50cmluc2lj
T3JBdXRvKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWF4LmhlaWdodAorICAgICAg
ICBzdHlsZS5zZXRNYXhIZWlnaHQoV1RGTW92ZShjb3B5KSk7CisgICAgfQogCi0gICAgc3R5bGUu
c2V0UGFkZGluZ1RvcChkZXNjLT5wYWRkaW5nLnRvcCgpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5n
Qm90dG9tKGRlc2MtPnBhZGRpbmcuYm90dG9tKCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdMZWZ0
KGRlc2MtPnBhZGRpbmcubGVmdCgpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5nUmlnaHQoZGVzYy0+
cGFkZGluZy5yaWdodCgpKTsKKyAgICBhdXRvIHBhZGRpbmdDb3B5ID0gZGVzYy0+cGFkZGluZzsK
KyAgICBzdHlsZS5zZXRQYWRkaW5nQm94KFdURk1vdmUocGFkZGluZ0NvcHkpKTsKIH0KIAogc3Rh
dGljIGJvb2wgaXNGb3JtRWxlbWVudFRvb0xhcmdlVG9EaXNwbGF5KGNvbnN0IEludFNpemUmIGVs
ZW1lbnRTaXplKQpAQCAtMzY1LDcgKzM3MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50
VGhlbWVQYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0LCBGb3JtVHlwZSB0eXBlLCBjCiAg
ICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBib29sIGhhdmVCYWNr
Z3JvdW5kQ29sb3IgPSBpc0NvbnRyb2xTdHlsZWQob2JqZWN0LnN0eWxlKCksIG9iamVjdC5zdHls
ZSgpLmJvcmRlcigpLCAqb2JqZWN0LnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBDb2xvcjo6
d2hpdGUpOworICAgIGJvb2wgaGF2ZUJhY2tncm91bmRDb2xvciA9IGlzQ29udHJvbFN0eWxlZChv
YmplY3Quc3R5bGUoKSwgb2JqZWN0LnN0eWxlKCkuYm9yZGVyKCksIG9iamVjdC5zdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKSwgQ29sb3I6OndoaXRlKTsKICAgICBDb250cm9sU3RhdGVzIHN0YXRl
cyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG9iamVjdCkpOwogICAgIGFwcGx5RWRq
ZVN0YXRlRnJvbUZvcm0oZW50cnktPmVkamUoKSwgJnN0YXRlcywgaGF2ZUJhY2tncm91bmRDb2xv
cik7CiAKQEAgLTU0MiwxMSArNTQ4LDExIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OmxvYWRUaGVt
ZSgpCiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uRmFsbGJhY2so
VGhlbWVQYXJ0RGVzYyogZGVzYykKIHsKLSAgICBkZXNjLT5taW4uc2V0V2lkdGgoTGVuZ3RoKDAs
IEZpeGVkKSk7Ci0gICAgZGVzYy0+bWluLnNldEhlaWdodChMZW5ndGgoMCwgRml4ZWQpKTsKKyAg
ICBkZXNjLT5taW4ud2lkdGggPSB7IDAsIEZpeGVkIH07CisgICAgZGVzYy0+bWluLmhlaWdodCA9
IHsgMCwgRml4ZWQgfTsKIAotICAgIGRlc2MtPm1heC5zZXRXaWR0aChMZW5ndGgoMCwgRml4ZWQp
KTsKLSAgICBkZXNjLT5tYXguc2V0SGVpZ2h0KExlbmd0aCgwLCBGaXhlZCkpOworICAgIGRlc2Mt
Pm1heC53aWR0aCA9IHsgMCwgRml4ZWQgfTsKKyAgICBkZXNjLT5tYXguaGVpZ2h0ID0geyAwLCBG
aXhlZCB9OwogCiAgICAgZGVzYy0+cGFkZGluZyA9IExlbmd0aEJveCgwLCAwLCAwLCAwKTsKIH0K
QEAgLTU1OSwxMiArNTY1LDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2Ny
aXB0aW9uKEV2YXNfT2JqZWN0KiBvYmplY3QsIFRoZW1lUGFydERlc2MqIGRlCiAgICAgaWYgKCFt
aW53ICYmICFtaW5oKQogICAgICAgICBlZGplX29iamVjdF9zaXplX21pbl9jYWxjKG9iamVjdCwg
Jm1pbncsICZtaW5oKTsKIAotICAgIGRlc2MtPm1pbi5zZXRXaWR0aChMZW5ndGgobWludywgRml4
ZWQpKTsKLSAgICBkZXNjLT5taW4uc2V0SGVpZ2h0KExlbmd0aChtaW5oLCBGaXhlZCkpOworICAg
IGRlc2MtPm1pbi53aWR0aCA9IHsgbWludywgRml4ZWQgfTsKKyAgICBkZXNjLT5taW4uaGVpZ2h0
ID0geyBtaW5oLCBGaXhlZCB9OwogCiAgICAgZWRqZV9vYmplY3Rfc2l6ZV9tYXhfZ2V0KG9iamVj
dCwgJm1heHcsICZtYXhoKTsKLSAgICBkZXNjLT5tYXguc2V0V2lkdGgoTGVuZ3RoKG1heHcsIEZp
eGVkKSk7Ci0gICAgZGVzYy0+bWF4LnNldEhlaWdodChMZW5ndGgobWF4aCwgRml4ZWQpKTsKKyAg
ICBkZXNjLT5tYXgud2lkdGggPSB7IG1heHcsIEZpeGVkIH07CisgICAgZGVzYy0+bWF4LmhlaWdo
dCA9IHsgbWF4aCwgRml4ZWQgfTsKIAogICAgIGlmICghZWRqZV9vYmplY3RfcGFydF9leGlzdHMo
b2JqZWN0LCAidGV4dF9jb25maW5lbWVudCIpKQogICAgICAgICBkZXNjLT5wYWRkaW5nID0gTGVu
Z3RoQm94KDAsIDAsIDAsIDApOwpAQCAtODAwLDEwICs4MDYsMTAgQEAgdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBS
ZW5kZXJTdHkKICAgICBzdHlsZS5yZXNldEJvcmRlcigpOwogCiAgICAgY29uc3QgVGhlbWVQYXJ0
RGVzYyogZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdClDaGVja0JveDsKLSAgICBpZiAoc3R5
bGUud2lkdGgoKS52YWx1ZSgpIDwgZGVzYy0+bWluLndpZHRoKCkudmFsdWUoKSkKLSAgICAgICAg
c3R5bGUuc2V0V2lkdGgoZGVzYy0+bWluLndpZHRoKCkpOwotICAgIGlmIChzdHlsZS5oZWlnaHQo
KS52YWx1ZSgpIDwgZGVzYy0+bWluLmhlaWdodCgpLnZhbHVlKCkpCi0gICAgICAgIHN0eWxlLnNl
dEhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOworICAgIGlmIChzdHlsZS53aWR0aCgpLnZhbHVl
KCkgPCBkZXNjLT5taW4ud2lkdGgudmFsdWUoKSkKKyAgICAgICAgc3R5bGUuc2V0V2lkdGgoZGVz
Yy0+bWluLndpZHRoKTsKKyAgICBpZiAoc3R5bGUuaGVpZ2h0KCkudmFsdWUoKSA8IGRlc2MtPm1p
bi5oZWlnaHQudmFsdWUoKSkKKyAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGRlc2MtPm1pbi5oZWln
aHQpOwogfQogCiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRl
ck9iamVjdCYgb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCkBAIC04MjMsMTAgKzgyOSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RSYWRp
b1N0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJgogICAgIHN0
eWxlLnJlc2V0Qm9yZGVyKCk7CiAKICAgICBjb25zdCBUaGVtZVBhcnREZXNjKiBkZXNjID0gbV9w
YXJ0RGVzY3MgKyAoc2l6ZV90KVJhZGlvQnV0dG9uOwotICAgIGlmIChzdHlsZS53aWR0aCgpLnZh
bHVlKCkgPCBkZXNjLT5taW4ud2lkdGgoKS52YWx1ZSgpKQorICAgIGlmIChzdHlsZS53aWR0aCgp
LnZhbHVlKCkgPCBkZXNjLT5taW4ud2lkdGgudmFsdWUoKSkKICAgICAgICAgc3R5bGUuc2V0V2lk
dGgoZGVzYy0+bWluLndpZHRoKCkpOwotICAgIGlmIChzdHlsZS5oZWlnaHQoKS52YWx1ZSgpIDwg
ZGVzYy0+bWluLmhlaWdodCgpLnZhbHVlKCkpCi0gICAgICAgIHN0eWxlLnNldEhlaWdodChkZXNj
LT5taW4uaGVpZ2h0KCkpOworICAgIGlmIChzdHlsZS5oZWlnaHQoKS52YWx1ZSgpIDwgZGVzYy0+
bWluLmhlaWdodC52YWx1ZSgpKQorICAgICAgICBzdHlsZS5zZXRIZWlnaHQoZGVzYy0+bWluLmhl
aWdodCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50UmFkaW8oY29uc3QgUmVuZGVy
T2JqZWN0JiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCAxMDBh
NWQxNGUxNmZiYmRiNDNkYzgxYWY5YzQ4YTljY2JhY2Q5ODRjLi4xOTFhZmE3YzNmZDA2YmMxMGNk
ZDFhNjk4YWUwMGQ5NmUwOWE1NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCkBAIC0zNTcsMTAgKzM1Nyw5IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFk
anVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
CiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhl
aWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMZW5ndGggbGVuZ3RoID0g
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4oY2VpbGYoc3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwg
MTApKSksIEZpeGVkKTsKLSAgICAKLSAgICBzdHlsZS5zZXRXaWR0aChsZW5ndGgpOwotICAgIHN0
eWxlLnNldEhlaWdodChsZW5ndGgpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuZm9u
dFNpemUoKSwgMTApOworICAgIHN0eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4ZWQgfSk7CisgICAg
c3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQgfSk7CiB9CiAKIHN0YXRpYyBDR1BvaW50IHNo
b3J0ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCkBAIC00NDgs
MTAgKzQ0NywxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjppc0NvbnRyb2xTdHlsZWQoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJgogewogICAgIC8vIEJ1dHRvbnMg
YW5kIE1lbnVsaXN0QnV0dG9ucyBhcmUgc3R5bGVkIGlmIHRoZXkgY29udGFpbiBhIGJhY2tncm91
bmQgaW1hZ2UuCiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBQdXNoQnV0dG9uUGFydCB8
fCBzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KQotICAgICAgICByZXR1
cm4gIXN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikuYWxwaGEoKSB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmhhc0ltYWdlKCk7CisgICAg
ICAgIHJldHVybiAhc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKS5pc1Zpc2libGUoKSB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkuaGFzSW1h
Z2UoKTsKIAogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEZpZWxkUGFydCB8fCBz
dHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEFyZWFQYXJ0KQotICAgICAgICByZXR1cm4gKnN0eWxl
LmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kOworICAgICAgICByZXR1cm4gc3R5bGUu
YmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQ7CiAKICAgICByZXR1cm4gUmVuZGVyVGhl
bWU6OmlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5k
Q29sb3IpOwogfQpAQCAtNDYxLDEwICs0NjAsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRq
dXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdAog
ICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS5oZWln
aHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGVuZ3RoIGxlbmd0aCA9IExl
bmd0aChzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKHN0ZDo6bWF4KHN0eWxlLmZvbnRTaXplKCksIDEw
KSkpLCBGaXhlZCk7Ci0gICAgc3R5bGUuc2V0V2lkdGgobGVuZ3RoKTsKLSAgICBzdHlsZS5zZXRI
ZWlnaHQobGVuZ3RoKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoSW50U2l6ZShsZW5ndGgu
dmFsdWUoKSAvIDIuMGYsIGxlbmd0aC52YWx1ZSgpIC8gMi4wZikpOworICAgIGludCBzaXplID0g
c3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwgMTApOworICAgIHN0eWxlLnNldFdpZHRoKHsgc2l6
ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQgfSk7CisgICAg
c3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgc2l6ZSAvIDIsIHNpemUgLyAyIH0pOwogfQogCiBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpA
QCAtNTM4LDEzICs1MzcsMTEgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVy
bmFsUGFkZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnMKIAogdm9pZCBSZW5k
ZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBS
ZW5kZXJCb3gmIGJveCkKIHsKLSAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgpID09IE5vQ29udHJv
bFBhcnQgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpLT5oYXNJbWFnZSgpKQorICAgIGlmIChz
dHlsZS5hcHBlYXJhbmNlKCkgPT0gTm9Db250cm9sUGFydCB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5
ZXJzKCkuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBwZWFyYW5jZSBv
ZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+Ci0gICAgTGVuZ3RoIHJhZGl1
c1dpZHRoKHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5oZWlnaHQo
KSkgLyAyLjApLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHJhZGl1c0hlaWdodChzdGF0aWNfY2FzdDxp
bnQ+KGJveC5oZWlnaHQoKSAvIDIuMCksIEZpeGVkKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRp
dXMoTGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KSk7CisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBwZWFy
YW5jZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+LgorICAgIHN0eWxl
LnNldEJvcmRlclJhZGl1cyh7IHsgc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5oZWlnaHQoKSkg
LyAyLCBGaXhlZCB9LCB7IGJveC5oZWlnaHQoKSAvIDIsIEZpeGVkIH0gfSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpAQCAtNjU1LDExICs2NTIsMTEgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJv
eCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXM7CiAKICAg
ICAgICAgaWYgKGlzUlRMKSB7Ci0gICAgICAgICAgICB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6
ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIHJl
Y3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cyA9IEZs
b2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndp
ZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVp
Z2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICB0b3BSaWdo
dFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICAgICAgICAgIGJvdHRvbVJp
Z2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0
LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxl
bmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAt
IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSk7Ci0gICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRo
KCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3Jk
ZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUo
dmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoLCByZWN0Lndp
ZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVy
VG9wV2lkdGgoKSk7CisgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJv
cmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCkBAIC02OTIs
MTEgKzY4OSwxMSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZsb2F0U2l6ZSBi
b3R0b21SaWdodFJhZGl1czsKIAogICAgICAgICBpZiAoaXNSVEwpIHsKLSAgICAgICAgICAgIHRv
cExlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVm
dFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCgpLCBy
ZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAgICAgICAgYm90
dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0
b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVp
Z2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAg
ICAgICAgICB0b3BMZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxl
ZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVp
Z2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOworICAgICAgICAg
ICAgYm90dG9tTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygp
LmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRT
aXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgo
KSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5n
dGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQo
KSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcFJpZ2h0UmFk
aXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdo
dCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90dG9tUmlnaHRS
YWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwg
dmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHJl
Y3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGJ1dHRvbkNsaXAsCkBAIC03NTgsMTAgKzc1NSw5IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6
OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0
eWxlCiB7CiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoc2VsZWN0b3Is
IHN0eWxlLCBlbGVtZW50KTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIHJlbHlp
bmcgb24gYm9yZGVyIHJhZGl1cyBmb3IgdGhlIGFwcGVhcmFuY2Ugb2Ygb3VyIGNvbnRyb2xzIDxy
ZGFyOi8vcHJvYmxlbS83Njc1NDkzPgotICAgIExlbmd0aCByYWRpdXNXaWR0aChzdGF0aWNfY2Fz
dDxpbnQ+KGtUcmFja1JhZGl1cyksIEZpeGVkKTsKLSAgICBMZW5ndGggcmFkaXVzSGVpZ2h0KHN0
YXRpY19jYXN0PGludD4oa1RyYWNrUmFkaXVzKSwgRml4ZWQpOwotICAgIHN0eWxlLnNldEJvcmRl
clJhZGl1cyhMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpKTsKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG5vdCBiZSByZWx5aW5nIG9uIGJvcmRlciByYWRpdXMgZm9yIHRoZSBh
cHBlYXJhbmNlIG9mIG91ciBjb250cm9scyA8cmRhcjovL3Byb2JsZW0vNzY3NTQ5Mz4uCisgICAg
aW50IHJhZGl1cyA9IHN0YXRpY19jYXN0PGludD4oa1RyYWNrUmFkaXVzKTsKKyAgICBzdHlsZS5z
ZXRCb3JkZXJSYWRpdXMoeyB7IHJhZGl1cywgRml4ZWQgfSwgeyByYWRpdXMsIEZpeGVkIH0gfSk7
CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQpAQCAtODQ4LDE0ICs4NDQsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2xp
ZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRW5mb3JjZSAiYm9yZGVyLXJhZGl1czogNTAlIi4KLSAgICBM
ZW5ndGggbGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMo
TGVuZ3RoU2l6ZShsZW5ndGgsIGxlbmd0aCkpOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7
IHsgNTAsIFBlcmNlbnQgfSwgeyA1MCwgUGVyY2VudCB9IH0pOwogCiAgICAgLy8gRW5mb3JjZSBh
IDE2eDE2IHNpemUgaWYgbm8gc2l6ZSBpcyBwcm92aWRlZC4KICAgICBpZiAoc3R5bGUud2lkdGgo
KS5pc0ludHJpbnNpY09yQXV0bygpIHx8IHN0eWxlLmhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAg
ICAgIExlbmd0aCBsZW5ndGggPSBMZW5ndGgoa0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIEZpeGVk
KTsKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgobGVuZ3RoKTsKLSAgICAgICAgc3R5bGUuc2V0SGVp
Z2h0KGxlbmd0aCk7CisgICAgICAgIHN0eWxlLnNldFdpZHRoKHsga0RlZmF1bHRTbGlkZXJUaHVt
YlNpemUsIEZpeGVkIH0pOworICAgICAgICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVmYXVsdFNsaWRl
clRodW1iU2l6ZSwgRml4ZWQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDM3Mzk1ZTQzNjY2N2EyMTVhYWI2ZTc2MzA1OGQ0N2Ni
ODI2ZDc0MGQuLjYyM2E2Yzc5NGI5NjEwZTMyYTliMzZjYjU2OTg3YzJmMDY1YzQyOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC01MiwyOSArNTIsMjcg
QEAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRN
YXAmIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMKIAogdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cygpCiB7Ci0gICAgV2lkZ2V0VG9QYXJlbnRNYXAg
bWFwOwotICAgIHdpZGdldE5ld1BhcmVudE1hcCgpLnN3YXAobWFwKTsKLSAgICBXaWRnZXRUb1Bh
cmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAoV2lkZ2V0VG9QYXJl
bnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmtleS5nZXQoKTsKLSAgICAgICAgU2Nyb2xsVmlldyog
Y3VycmVudFBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgRnJhbWVWaWV3KiBuZXdQ
YXJlbnQgPSBpdC0+dmFsdWU7CisgICAgYXV0byBtYXAgPSBXVEZNb3ZlKHdpZGdldE5ld1BhcmVu
dE1hcCgpKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSB7CisgICAgICAgIGF1dG8mIGNo
aWxkID0gKmVudHJ5LmtleTsKKyAgICAgICAgYXV0byogY3VycmVudFBhcmVudCA9IGNoaWxkLnBh
cmVudCgpOworICAgICAgICBhdXRvKiBuZXdQYXJlbnQgPSBlbnRyeS52YWx1ZTsKICAgICAgICAg
aWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVu
dFBhcmVudCkKLSAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZCgqY2hp
bGQpOworICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxkKTsK
ICAgICAgICAgICAgIGlmIChuZXdQYXJlbnQpCiAgICAgICAgICAgICAgICAgbmV3UGFyZW50LT5h
ZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1vdmVX
aWRnZXRUb1BhcmVudFNvb24oV2lkZ2V0KiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCitzdGF0
aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCYgY2hpbGQsIEZyYW1lVmlldyog
cGFyZW50KQogewogICAgIGlmICghV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29w
ZTo6aXNTdXNwZW5kZWQoKSkgewogICAgICAgICBpZiAocGFyZW50KQogICAgICAgICAgICAgcGFy
ZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgICAgICBjaGlsZC5yZW1vdmVGcm9tUGFyZW50KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZTo6c2NoZWR1bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7CkBAIC0xNjcs
NyArMTY1LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYm
IHdpZGdldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2lkZ2V0KSB7Ci0gICAgICAg
IG1vdmVXaWRnZXRUb1BhcmVudFNvb24obV93aWRnZXQuZ2V0KCksIDApOworICAgICAgICBtb3Zl
V2lkZ2V0VG9QYXJlbnRTb29uKCptX3dpZGdldCwgbnVsbHB0cik7CiAgICAgICAgIHZpZXcoKS5m
cmFtZVZpZXcoKS53aWxsUmVtb3ZlV2lkZ2V0RnJvbVJlbmRlclRyZWUoKm1fd2lkZ2V0KTsKICAg
ICAgICAgd2lkZ2V0UmVuZGVyZXJNYXAoKS5yZW1vdmUobV93aWRnZXQuZ2V0KCkpOwogICAgICAg
ICBtX3dpZGdldCA9IG51bGxwdHI7CkBAIC0xOTMsNyArMTkxLDcgQEAgdm9pZCBSZW5kZXJXaWRn
ZXQ6OnNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmIHdpZGdldCkKICAgICAgICAgICAgICAgICBy
ZXBhaW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbW92ZVdpZGdldFRv
UGFyZW50U29vbihtX3dpZGdldC5nZXQoKSwgJnZpZXcoKS5mcmFtZVZpZXcoKSk7CisgICAgICAg
IG1vdmVXaWRnZXRUb1BhcmVudFNvb24oKm1fd2lkZ2V0LCAmdmlldygpLmZyYW1lVmlldygpKTsK
ICAgICB9CiB9CiAKQEAgLTMzOCw5ICszMzYsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0U2Vs
ZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgIG1fd2lkZ2V0LT5zZXRJ
c1NlbGVjdGVkKGlzU2VsZWN0ZWQoKSk7CiB9CiAKLVJlbmRlcldpZGdldCogUmVuZGVyV2lkZ2V0
OjpmaW5kKGNvbnN0IFdpZGdldCogd2lkZ2V0KQorUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6
OmZpbmQoY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIHdpZGdldFJlbmRlcmVy
TWFwKCkuZ2V0KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldFJlbmRlcmVyTWFwKCkuZ2V0KCZ3
aWRnZXQpOwogfQogCiBib29sIFJlbmRlcldpZGdldDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oCmluZGV4IDZlMDExZDczOWU1M2M2ZGE5YjExYTdkYTg2ZDhlZGNlYzNlNDQ5
N2IuLmM2YTliYzVmOTM1YzMzOTQ4MDg3MmExMWYzNjA3OTgwZWI0YmEzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAgLTQ0LDE0ICs0NCwxMyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVybiBzX3dpZGdl
dEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsgfQotICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxl
V2lkZ2V0VG9Nb3ZlKFdpZGdldCogd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7IHdpZGdldE5l
d1BhcmVudE1hcCgpLnNldCh3aWRnZXQsIGZyYW1lKTsgfQorICAgIHN0YXRpYyB2b2lkIHNjaGVk
dWxlV2lkZ2V0VG9Nb3ZlKFdpZGdldCYgd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7IHdpZGdl
dE5ld1BhcmVudE1hcCgpLnNldCgmd2lkZ2V0LCBmcmFtZSk7IH0KIAogcHJpdmF0ZToKLSAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+IFdpZGdldFRvUGFyZW50
TWFwOworICAgIHVzaW5nIFdpZGdldFRvUGFyZW50TWFwID0gSGFzaE1hcDxSZWZQdHI8V2lkZ2V0
PiwgRnJhbWVWaWV3Kj47CiAgICAgc3RhdGljIFdpZGdldFRvUGFyZW50TWFwJiB3aWRnZXROZXdQ
YXJlbnRNYXAoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVdpZGdldHMoKTsKLQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJhcmNoeVVwZGF0
ZVN1c3BlbmRDb3VudDsKIH07CiAgICAgCkBAIC02NCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBX
aWRnZXQqIHdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkZ2V0LmdldCgpOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJik7CiAKLSAgICBzdGF0
aWMgUmVuZGVyV2lkZ2V0KiBmaW5kKGNvbnN0IFdpZGdldCopOworICAgIHN0YXRpYyBSZW5kZXJX
aWRnZXQqIGZpbmQoY29uc3QgV2lkZ2V0Jik7CiAKICAgICBlbnVtIGNsYXNzIENoaWxkV2lkZ2V0
U3RhdGUgeyBWYWxpZCwgRGVzdHJveWVkIH07CiAgICAgQ2hpbGRXaWRnZXRTdGF0ZSB1cGRhdGVX
aWRnZXRQb3NpdGlvbigpIFdBUk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCmluZGV4IDFhNTlmNjU1NzQ4OWQwNzdmNGJiZGJmMjhh
OGRmYjhiNDZlN2EyNGMuLmFhZjcxY2I3OWZjMTYwOGZkYjBmNGE3ODNiOTZjOGExMWQ0YmIxNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcApAQCAtMTMz
LDcgKzEzMyw3IEBAIGF1dG8gVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4dE5vZGVTaXpl
cygpIC0+IFN0aWxsSGFzTm9kZXMKIAogICAgICAgICAvLyBSZXNpemUgdGhlIGxpbmUgaGVpZ2h0
IG9mIHRoZSBwYXJlbnQuCiAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFyZW50UmVuZGVy
ZXItPnN0eWxlKCk7Ci0gICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0TGVuZ3RoID0gcGFyZW50U3R5
bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOworICAgICAgICBhdXRvJiBsaW5lSGVpZ2h0TGVuZ3Ro
ID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhlaWdodCgpOwogCiAgICAgICAgIGludCBzcGVj
aWZpZWRMaW5lSGVpZ2h0OwogICAgICAgICBpZiAobGluZUhlaWdodExlbmd0aC5pc1BlcmNlbnQo
KSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBhdXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdFRl
eHROb2RlU2l6ZXMoKSAtPiBTdGlsbEhhc05vZGVzCiAKICAgICAgICAgYXV0byBuZXdQYXJlbnRT
dHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwogICAgICAgICBu
ZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aChsaW5lSGVpZ2h0LCBGaXhlZCkpOwot
ICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRM
ZW5ndGgpOworICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExl
bmd0aCB7IGxpbmVIZWlnaHRMZW5ndGggfSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5m
b250Q2FzY2FkZSgpLnVwZGF0ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAg
ICAgICAgIHBhcmVudFJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVudFN0eWxlKSk7
CkBAIC0xODgsMTIgKzE4OCwxMiBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KCkK
ICAgICAgICAgICAgIHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnBhcmVudCgpOwog
CiAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0eWxlKCk7Ci0g
ICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWlnaHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCk7CisgICAgICAgIGF1dG8mIG9yaWdpbmFsTGluZUhlaWdodCA9IHBhcmVudFN0
eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKICAgICAgICAgaWYgKG9yaWdpbmFsTGluZUhlaWdo
dCA9PSBwYXJlbnRTdHlsZS5saW5lSGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShw
YXJlbnRTdHlsZSk7Ci0gICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWlnaHQob3JpZ2lu
YWxMaW5lSGVpZ2h0KTsKKyAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChMZW5n
dGggeyBvcmlnaW5hbExpbmVIZWlnaHQgfSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5m
b250Q2FzY2FkZSgpLnVwZGF0ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAg
ICAgICAgIHBhcmVudFJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVudFN0eWxlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCmlu
ZGV4IGNhNDZjMmViY2QwMmZkZTM0ZTVlNmMwYmYwYmQ4YjcyYTA0YTJlMDQuLjYxNjJhY2JiOTNm
NzNlYjVmOTk1NzNiZDE1ZGMxYzYzM2QxMTMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCkBAIC00OSwxNCArNDksMTEgQEAgUmVmPE1h
dGhNTFN0eWxlPiBNYXRoTUxTdHlsZTo6Y3JlYXRlKCkKIAogY29uc3QgTWF0aE1MU3R5bGUqIE1h
dGhNTFN0eWxlOjpnZXRNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAg
IGlmIChyZW5kZXJlcikgewotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVy
TWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2lt
cGxpZnkgdGhpcz8KLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikp
Ci0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVy
KS0+bWF0aE1MU3R5bGUoKTsKLSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihyZW5k
ZXJlcikpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KHJl
bmRlcmVyKS0+bWF0aE1MU3R5bGUoKTsKLSAgICB9Ci0KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4g
b3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KHJl
bmRlcmVyKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4oKnJl
bmRlcmVyKS5tYXRoTUxTdHlsZSgpOworICAgIGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4ocmVu
ZGVyZXIpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqcmVu
ZGVyZXIpLm1hdGhNTFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTY1LDkg
KzYyLDkgQEAgdm9pZCBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgIGZvciAoYXV0byogY2hpbGQgPSByZW5kZXJlcjsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRJblByZU9yZGVyKHJlbmRlcmVyKSkgewogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVy
TWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KICAgICAgICAgaWYgKGlzPFJl
bmRlck1hdGhNTFRhYmxlPihjaGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRo
TUxUYWJsZT4oY2hpbGQpLT5tYXRoTUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQp
OworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpjaGlsZCkubWF0aE1M
U3R5bGUoKS5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOwogICAgICAgICBlbHNlIGlmIChpczxS
ZW5kZXJNYXRoTUxCbG9jaz4oY2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0
aE1MQmxvY2s+KGNoaWxkKS0+bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxk
KTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqY2hpbGQpLm1hdGhN
TFN0eWxlKCkucmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRl
eCBiYjE0MmEyNTQyMGEzYTZiY2UxNGMxNTRiZGU5MzIzMzYzNDM0ZTEyLi42MWExMmNhNDg3ZjNh
NWJiYzU1NGRlZTBjODNhZjY0NWE2MjFkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlck1hdGhNTEJsb2NrKCk7CiAKLSAgICBNYXRoTUxTdHlsZSogbWF0
aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0
aE1MU3R5bGUuZ2V0KCkpOyB9CisgICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRoTUxTdHlsZTsgfQogCiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIH0KIAogCi0gICAgTWF0aE1MU3R5bGUqIG1h
dGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxTdHlsZSo+KCZtX21h
dGhNTFN0eWxlLmdldCgpKTsgfQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0aE1MU3R5bGU7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVy
TWF0aE1MVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
CmluZGV4IDM1ZTQ0MTQ1ZjdmODYyYzA4YmQwNGUyMTdlZDVmZDBkZTYzMGMxMDguLmEyMGJkMTIy
ZDg4Y2UwZjA4ZDc0NTc3ZWU3OTg1YTAzYTU5ODkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC04
OSw3ICs4OSw3IEBAIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpGcmFjdGlvblBhcmFtZXRlcnMgUmVu
ZGVyTWF0aE1MRnJhY3Rpb246OmZyYWN0aW9uUGFyYW1ldGVyCiAgICAgLy8gV2UgdHJ5IGFuZCBy
ZWFkIGNvbnN0YW50cyB0byBkcmF3IHRoZSBmcmFjdGlvbiBmcm9tIHRoZSBPcGVuVHlwZSBNQVRI
IGFuZCB1c2UgZmFsbGJhY2sgdmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25zdCBhdXRvJiBwcmlt
YXJ5Rm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGNvbnN0
IGF1dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0
aERhdGEoKTsKLSAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUo
KTsKKyAgICBib29sIGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOwogICAg
IGlmIChtYXRoRGF0YSkgewogICAgICAgICBwYXJhbWV0ZXJzLm51bWVyYXRvckdhcE1pbiA9IG1h
dGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1h
dGhEYXRhOjpGcmFjdGlvbk51bURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6
OkZyYWN0aW9uTnVtZXJhdG9yR2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy5kZW5vbWluYXRv
ckdhcE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkg
PyBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbkRlbm9tRGlzcGxheVN0eWxlR2FwTWluIDogT3Bl
blR5cGVNYXRoRGF0YTo6RnJhY3Rpb25EZW5vbWluYXRvckdhcE1pbik7CkBAIC0xMTYsNyArMTE2
LDcgQEAgUmVuZGVyTWF0aE1MRnJhY3Rpb246OlN0YWNrUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6c3RhY2tQYXJhbWV0ZXJzKCkKICAgICAvLyBXZSB0cnkgYW5kIHJlYWQgY29uc3Rh
bnRzIHRvIGRyYXcgdGhlIHN0YWNrIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5kIHVzZSBmYWxs
YmFjayB2YWx1ZXMgb3RoZXJ3aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5
bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0byogbWF0aERh
dGEgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpOwotICAg
IGJvb2wgZGlzcGxheSA9IG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOworICAgIGJvb2wg
ZGlzcGxheSA9IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYgKG1hdGhEYXRh
KSB7CiAgICAgICAgIHBhcmFtZXRlcnMuZ2FwTWluID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFu
dChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrRGlzcGxheVN0
eWxlR2FwTWluIDogT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tHYXBNaW4pOwogICAgICAgICBwYXJh
bWV0ZXJzLnRvcFNoaWZ0VXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250
LCBkaXNwbGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tUb3BEaXNwbGF5U3R5bGVTaGlmdFVw
IDogT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tUb3BTaGlmdFVwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBl
MjEyZTliZjczNGFkMjU1ZjA2ZTY5MGVjMjVlMTc4NWE5Mjk5ZTA1Li4wMmZkNDRlNTU0NGU5Zjcy
MjEyNjczZTkxNmRkNjViODE0M2JhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC00OCw4ICs0OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U3RyZXRjaFNpemUoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKSBjb25zdDsK
LSAgICBib29sIGlzTGFyZ2VPcGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4g
IWhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0Y2h5KSAmJiBo
YXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9wKSAmJiBtYXRo
TUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsgfQotICAgIGJvb2wgc2hvdWxkTW92ZUxpbWl0cygp
IGNvbnN0IHsgcmV0dXJuIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6
Ok1vdmFibGVMaW1pdHMpICYmICFtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsgfQorICAg
IGJvb2wgaXNMYXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFz
T3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09w
ZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYmIG1hdGhNTFN0
eWxlKCkuZGlzcGxheVN0eWxlKCk7IH0KKyAgICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25z
dCB7IHJldHVybiBoYXNPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3Zh
YmxlTGltaXRzKSAmJiAhbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1ZlcnRpY2FsKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRoT3BlcmF0b3IuaXRhbGljQ29ycmVjdGlvbigpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCmluZGV4IDFhNjZlYzg3ZTZkOTM0M2JmNWNhNTU5Yjk3ODBhOTAyZjdmMTRlMjIu
LjNkNzU3YTdhODU2YWNiNjFmMGU2ZjgyM2Q5NmE5OTg5NTI5NWE0ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5k
ZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgIGNvbnN0IGF1dG8mIHByaW1h
cnlGb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgaWYgKGF1
dG8qIG1hdGhEYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERh
dGEoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBtYXRoRGF0YS0+Z2V0
TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsUnVsZVRo
aWNrbmVzcyk7Ci0gICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBtYXRoRGF0YS0+Z2V0
TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSA/
IE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5U
eXBlTWF0aERhdGE6OlJhZGljYWxWZXJ0aWNhbEdhcCk7CisgICAgICAgIHBhcmFtZXRlcnMudmVy
dGljYWxHYXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBtYXRoTUxT
dHlsZSgpLmRpc3BsYXlTdHlsZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbERpc3BsYXlT
dHlsZVZlcnRpY2FsR2FwIDogT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFZlcnRpY2FsR2FwKTsK
ICAgICAgICAgcGFyYW1ldGVycy5leHRyYUFzY2VuZGVyID0gbWF0aERhdGEtPmdldE1hdGhDb25z
dGFudChwcmltYXJ5Rm9udCwgT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEV4dHJhQXNjZW5kZXIp
OwogICAgICAgICBpZiAobV9raW5kID09IFJvb3RXaXRoSW5kZXgpCiAgICAgICAgICAgICBwYXJh
bWV0ZXJzLmRlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3Rh
bnQocHJpbWFyeUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEZWdyZWVCb3R0b21SYWlz
ZVBlcmNlbnQpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2Fs
UGFyYW1ldGVycyBSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgICAg
ICAvLyBSYWRpY2FsRXh0cmFBc2NlbmRlcjogU3VnZ2VzdGVkIHZhbHVlIGlzIFJhZGljYWxSdWxl
VGhpY2tuZXNzLgogICAgICAgICAvLyBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OiBT
dWdnZXN0ZWQgdmFsdWUgaXMgNjAlLgogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3Mg
PSBydWxlVGhpY2tuZXNzRmFsbGJhY2soKTsKLSAgICAgICAgaWYgKG1hdGhNTFN0eWxlKCktPmRp
c3BsYXlTdHlsZSgpKQorICAgICAgICBpZiAobWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSkK
ICAgICAgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlj
a25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNDsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IDUgKiBwYXJhbWV0ZXJzLnJ1
bGVUaGlja25lc3MgLyA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA1NTViZDY4ZDY1MWI1ZjhhZjA1MWYwMTVk
M2VhZmM3N2UwNjhmMzkxLi5hNWM0YzFjMGQwYzVkOWFlNjBmZTExMjA4NGY2ODRhNjcxOWFmODk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46
OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKQogCiAgICAgY29uc3QgYXV0byYgdG9rZW5FbGVtZW50
ID0gZWxlbWVudCgpOwogICAgIGlmIChhdXRvIGNvZGVQb2ludCA9IE1hdGhNTFRva2VuRWxlbWVu
dDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KGVsZW1lbnQoKS50ZXh0Q29udGVudCgpKSkgewot
ICAgICAgICBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0
eWxlKCktPm1hdGhWYXJpYW50KCk7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS5tYXRoVmFyaWFudCgpOwogICAgICAgICBpZiAo
bWF0aHZhcmlhbnQgPT0gTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vbmUpCiAgICAgICAg
ICAgICBtYXRodmFyaWFudCA9IHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjpt
aVRhZykgPyBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6SXRhbGljIDogTWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ6Ok5vcm1hbDsKICAgICAgICAgVUNoYXIzMiB0cmFuc2Zvcm1lZENvZGVQ
b2ludCA9IG1hdGhWYXJpYW50KGNvZGVQb2ludC52YWx1ZSgpLCBtYXRodmFyaWFudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRleCAyOTBj
NmQ4NWQwZWUzMmQ1MDYzNzM1MjZiOTA2YjQ4NmZkODMzNTkwLi4wNmIzZTA5MGVhOTdiYWVkMTUw
MTE3NDkxMTc3MjJiZTFmNzI5YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTM4Nyw4ICszODcsOCBAQCBib29sIEJhc2ljU2hhcGVJ
bnNldDo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIAogc3RhdGlj
IEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0
aFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiB7Ci0gICAgcmV0dXJuIEZsb2F0
U2l6ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUud2lkdGgoKSwgYm91bmRpbmdCb3gu
d2lkdGgoKSksCi0gICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS5oZWlnaHQo
KSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFNpemUud2lkdGgsIGJvdW5kaW5nQm94LndpZHRoKCkpLAorICAgICAgICBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUuaGVpZ2h0LCBib3VuZGluZ0JveC5oZWlnaHQoKSkg
fTsKIH0KIAogY29uc3QgUGF0aCYgQmFzaWNTaGFwZUluc2V0OjpwYXRoKGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRh
dGEuaAppbmRleCAyOTRmYjgyYTA0ZWRmNGNhMjkxYjgyYzgzZDE5ZWQwYzA2ZjIwYTFkLi4wNmJj
Yzk5ZjhiMGYxOWRjYTRiZDI3MjY1MWRhYzMyYmI3ZGQ1NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTM0LDEwICszNCwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCb3JkZXJEYXRhIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHls
ZTsKIHB1YmxpYzoKLSAgICBCb3JkZXJEYXRhKCkgOiBtX3RvcExlZnQoTGVuZ3RoKDAsIEZpeGVk
KSwgTGVuZ3RoKDAsIEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KExlbmd0
aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAgICAgICwgbV9ib3R0
b21MZWZ0KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAg
ICAgICwgbV9ib3R0b21SaWdodChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQor
ICAgIEJvcmRlckRhdGEoKQorICAgICAgICA6IG1fdG9wTGVmdCB7IHsgMCwgRml4ZWQgfSwgeyAw
LCBGaXhlZCB9IH0KKyAgICAgICAgLCBtX3RvcFJpZ2h0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZp
eGVkIH0gfQorICAgICAgICAsIG1fYm90dG9tTGVmdCB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhl
ZCB9IH0KKyAgICAgICAgLCBtX2JvdHRvbVJpZ2h0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVk
IH0gfQogICAgIHsKICAgICB9CiAgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdApAQCAtNTksMTUg
KzYwLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpLmlzWmVybygpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV90b3BSaWdodC53aWR0aCgpLmlzWmVy
bygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV9ib3R0b21MZWZ0
LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYg
KCFtX2JvdHRvbVJpZ2h0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gIW1fdG9wTGVmdC53aWR0
aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fdG9wUmlnaHQud2lkdGguaXNaZXJvKCkKKyAg
ICAgICAgICAgIHx8ICFtX2JvdHRvbUxlZnQud2lkdGguaXNaZXJvKCkKKyAgICAgICAgICAgIHx8
ICFtX2JvdHRvbVJpZ2h0LndpZHRoLmlzWmVybygpOwogICAgIH0KICAgICAKICAgICBmbG9hdCBi
b3JkZXJMZWZ0V2lkdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5jcHAKaW5kZXggMGJkMGQ3MDYxMWFjMWMxZjBjNDMxMzBiNDAzMWJiZGQy
NGVmYzM5Zi4uYzZjMDIyNGJjZGI4YTg3ZTVlNWMyMzEwOWE1ZTFkZmVjOTdhNGM3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCkBAIC0zOCw4
ICszOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gQ29udGVudERhdGE6OmNsb25l
KCkgY29uc3QKICAgICBhdXRvIHJlc3VsdCA9IGNsb25lSW50ZXJuYWwoKTsKICAgICBhdXRvKiBs
YXN0TmV3RGF0YSA9IHJlc3VsdC5nZXQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0g
bmV4dCgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7
Ci0gICAgICAgIGF1dG8gbmV3RGF0YSA9IGNvbnRlbnREYXRhLT5jbG9uZUludGVybmFsKCk7Ci0g
ICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0KFdURk1vdmUobmV3RGF0YSkpOworICAgICAgICBs
YXN0TmV3RGF0YS0+c2V0TmV4dChjb250ZW50RGF0YS0+Y2xvbmVJbnRlcm5hbCgpKTsKICAgICAg
ICAgbGFzdE5ld0RhdGEgPSBsYXN0TmV3RGF0YS0+bmV4dCgpOwogICAgIH0KICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApp
bmRleCAxNmQ2NTU3NjBkZTc1MmNmMTYyYTM2ZTUwY2IwMzU2NzZkN2RkMjkyLi45ZTk3YzAyMzVj
M2RmZWQ1ZGM4NDk1ZmJmN2E2OTYwMTA0NmI4ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVy
ZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPih0ZXh0KCkpOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KIAogICAg
IFN0cmluZyBtX3RleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmgKaW5kZXggM2Y5M2E1N2VmNTgyNjFkZmFhMmNlZmRmNmRhOWIyYTliMzlmMjM5Yy4uZjU0MmQ2
YzJhMTZmY2Y3OGIxNjZlYTI5ZWVkMGZkOGI0Y2YwZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0xLDggKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAw
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA1LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjksMzAgKzI2LDY1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWYgewogcHVibGljOgotICAgIERhdGFSZWYoUmVm
PFQ+JiYgZGF0YSkgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgRGF0YVJlZihjb25z
dCBEYXRhUmVmJiBvdGhlcikgOiBtX2RhdGEoY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdl
dCgpKSkgeyB9Ci0gICAgRGF0YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKSB7
IG1fZGF0YSA9IGNvbnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSk7IHJldHVybiAqdGhp
czsgfQorICAgIERhdGFSZWYoUmVmPFQ+JiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoV1RGTW92
ZShkYXRhKSkKKyAgICB7CisgICAgfQogCi0gICAgY29uc3QgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnB0cigpOyB9CisgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikKKyAg
ICAgICAgOiBtX2RhdGEob3RoZXIubV9kYXRhLmNvcHlSZWYoKSkKKyAgICB7CisgICAgfQorCisg
ICAgRGF0YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgbV9kYXRhID0gb3RoZXIubV9kYXRhLmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KIAotICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQor
ICAgIERhdGFSZWYoRGF0YVJlZiYmKSA9IGRlZmF1bHQ7CisgICAgRGF0YVJlZiYgb3BlcmF0b3I9
KERhdGFSZWYmJikgPSBkZWZhdWx0OworCisgICAgRGF0YVJlZiByZXBsYWNlKERhdGFSZWYmJiBv
dGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGEucmVwbGFjZShXVEZNb3ZlKG90aGVy
Lm1fZGF0YSkpOworICAgIH0KKworICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQogCi0gICAgVCogYWNjZXNzKCkKKyAgICBj
b25zdCBUJiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9
CisKKyAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZGF0YTsKKyAgICB9CisKKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CisgICAgfQorCisgICAgVCYgYWNjZXNzKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhLT5oYXNPbmVSZWYoKSkKICAgICAgICAgICAgIG1f
ZGF0YSA9IG1fZGF0YS0+Y29weSgpOwotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpOworICAg
ICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBE
YXRhUmVmPFQ+JiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmVmJiBv
dGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgPT0gby5tX2Rh
dGEucHRyKCkgfHwgbV9kYXRhLmdldCgpID09IG8ubV9kYXRhLmdldCgpOworICAgICAgICByZXR1
cm4gbV9kYXRhLnB0cigpID09IG90aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0g
b3RoZXIubV9kYXRhLmdldCgpOwogICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRGF0YVJlZjxUPiYgbykgY29uc3QKKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRh
UmVmJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgIT0g
by5tX2RhdGEucHRyKCkgJiYgbV9kYXRhLmdldCgpICE9IG8ubV9kYXRhLmdldCgpOworICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAppbmRleCA3NjUyMzgw
NWEyNWM5NDI2YWZlMDNjMzM5MWMwZTc4OTk4YTUxZDI2Li45NzI5OGFiNDQ3OWE3ZWEyN2RlOWZi
ZTM4MmUyYjc0NzBiNmY0MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvS2V5ZnJhbWVMaXN0LmNwcApAQCAtMjksMTQgKzI5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSoga2V5
ZnJhbWVTdHlsZSA9IHN0eWxlKCk7CisgICAgYXV0byoga2V5ZnJhbWVTdHlsZSA9IHN0eWxlKCk7
CiAgICAgaWYgKCFrZXlmcmFtZVN0eWxlIHx8ICFrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBr
ZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCktPnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbiYgYW5pbWF0aW9uID0ga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpLT5hbmlt
YXRpb24oaSk7CiAgICAgICAgIGlmIChuYW1lID09IGFuaW1hdGlvbi5uYW1lKCkpCi0gICAgICAg
ICAgICByZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAg
ICByZXR1cm4gYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00NCw3ICs0NCw2IEBAIFRpbWluZ0Z1bmN0aW9uKiBLZXlmcmFtZVZhbHVl
Ojp0aW1pbmdGdW5jdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAKIEtleWZy
YW1lTGlzdDo6fktleWZyYW1lTGlzdCgpCiB7Ci0gICAgY2xlYXIoKTsKIH0KIAogdm9pZCBLZXlm
cmFtZUxpc3Q6OmNsZWFyKCkKQEAgLTU4LDE1ICs1NywxMiBAQCBib29sIEtleWZyYW1lTGlzdDo6
b3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0CiAgICAgaWYgKG1fa2V5ZnJh
bWVzLnNpemUoKSAhPSBvLm1fa2V5ZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgVmVjdG9yPEtleWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDIgPSBvLm1f
a2V5ZnJhbWVzLmJlZ2luKCk7Ci0gICAgZm9yIChWZWN0b3I8S2V5ZnJhbWVWYWx1ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0MSA9IG1fa2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5l
bmQoKTsgKytpdDEpIHsKKyAgICBhdXRvIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVnaW4oKTsKKyAg
ICBmb3IgKGF1dG8gaXQxID0gbV9rZXlmcmFtZXMuYmVnaW4oKTsgaXQxICE9IG1fa2V5ZnJhbWVz
LmVuZCgpOyArK2l0MSwgKytpdDIpIHsKICAgICAgICAgaWYgKGl0MS0+a2V5KCkgIT0gaXQyLT5r
ZXkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlMSA9ICppdDEtPnN0eWxlKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZTIgPSAqaXQyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUxICE9IHN0eWxlMikKKyAg
ICAgICAgaWYgKCppdDEtPnN0eWxlKCkgIT0gKml0Mi0+c3R5bGUoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgKytpdDI7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApp
bmRleCBjZTg0YjE2MGYxOTczOWRkOTZiNDgxYjA0OWY2ZmZjMDNmNWJlMDc2Li5lOGM5MjMyYzE2
ZTU3OWZmMTZmZjQzNzU2NWU5ZGUyNjg4MGMwMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTYwLDIwICs2MCwyMiBAQCBM
YXlvdXRVbml0IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2UoTGVuZ3RoIGxlbmd0aCwgTGF5
b3V0VW5pdCB3aWR0aCwgTGF5b3V0VQogCiBMYXlvdXRCb3hFeHRlbnQgTmluZVBpZWNlSW1hZ2U6
OmNvbXB1dGVTbGljZXMoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgY29uc3QgTGVuZ3RoQm94JiBs
ZW5ndGhzLCBpbnQgc2NhbGVGYWN0b3IpCiB7Ci0gICAgTGF5b3V0VW5pdCB0b3AgICAgPSBzdGQ6
Om1pbjxMYXlvdXRVbml0PihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLnRv
cCgpLCAgICBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlvdXRVbml0IHJp
Z2h0ICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUud2lkdGgoKSwgIHZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aHMucmlnaHQoKSwgIHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yOwotICAgIExh
eW91dFVuaXQgYm90dG9tID0gc3RkOjptaW48TGF5b3V0VW5pdD4oc2l6ZS5oZWlnaHQoKSwgdmFs
dWVGb3JMZW5ndGgobGVuZ3Rocy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSkpICogc2NhbGVGYWN0
b3I7Ci0gICAgTGF5b3V0VW5pdCBsZWZ0ICAgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihzaXplLndp
ZHRoKCksICB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLmxlZnQoKSwgICBzaXplLndpZHRoKCkpKSAg
KiBzY2FsZUZhY3RvcjsKLSAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc3RkOjptaW4oc2l6ZS5oZWlnaHQo
KSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy50b3AoKSwgc2l6ZS5oZWlnaHQoKSkpICogc2NhbGVG
YWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNpemUud2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgobGVu
Z3Rocy5yaWdodCgpLCBzaXplLndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvciwKKyAgICAgICAgc3Rk
OjptaW4oc2l6ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5ib3R0b20oKSwgc2l6
ZS5oZWlnaHQoKSkpICogc2NhbGVGYWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNpemUud2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5sZWZ0KCksIHNpemUud2lkdGgoKSkpICAqIHNjYWxl
RmFjdG9yCisgICAgfTsKIH0KIAogTGF5b3V0Qm94RXh0ZW50IE5pbmVQaWVjZUltYWdlOjpjb21w
dXRlU2xpY2VzKGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IExlbmd0aEJveCYgbGVuZ3Ro
cywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIHdpZHRocywgY29uc3QgTGF5b3V0Qm94RXh0ZW50JiBz
bGljZXMpCiB7Ci0gICAgTGF5b3V0VW5pdCB0b3AgICAgPSBjb21wdXRlU2xpY2UobGVuZ3Rocy50
b3AoKSwgICAgd2lkdGhzLnRvcCgpLCAgICBzbGljZXMudG9wKCksICAgIHNpemUuaGVpZ2h0KCkp
OwotICAgIExheW91dFVuaXQgcmlnaHQgID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMucmlnaHQoKSwg
IHdpZHRocy5yaWdodCgpLCAgc2xpY2VzLnJpZ2h0KCksICBzaXplLndpZHRoKCkpOwotICAgIExh
eW91dFVuaXQgYm90dG9tID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMuYm90dG9tKCksIHdpZHRocy5i
b3R0b20oKSwgc2xpY2VzLmJvdHRvbSgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBMYXlvdXRVbml0
IGxlZnQgICA9IGNvbXB1dGVTbGljZShsZW5ndGhzLmxlZnQoKSwgICB3aWR0aHMubGVmdCgpLCAg
IHNsaWNlcy5sZWZ0KCksICAgc2l6ZS53aWR0aCgpKTsKLSAgICByZXR1cm4gTGF5b3V0Qm94RXh0
ZW50KHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29t
cHV0ZVNsaWNlKGxlbmd0aHMudG9wKCksIHdpZHRocy50b3AoKSwgc2xpY2VzLnRvcCgpLCBzaXpl
LmhlaWdodCgpKSwKKyAgICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMucmlnaHQoKSwgd2lkdGhz
LnJpZ2h0KCksIHNsaWNlcy5yaWdodCgpLCBzaXplLndpZHRoKCkpLAorICAgICAgICBjb21wdXRl
U2xpY2UobGVuZ3Rocy5ib3R0b20oKSwgd2lkdGhzLmJvdHRvbSgpLCBzbGljZXMuYm90dG9tKCks
IHNpemUuaGVpZ2h0KCkpLAorICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy5sZWZ0KCksIHdp
ZHRocy5sZWZ0KCksIHNsaWNlcy5sZWZ0KCksIHNpemUud2lkdGgoKSkKKyAgICB9OwogfQogCiB2
b2lkIE5pbmVQaWVjZUltYWdlOjpzY2FsZVNsaWNlc0lmTmVlZGVkKGNvbnN0IExheW91dFNpemUm
IHNpemUsIExheW91dEJveEV4dGVudCYgc2xpY2VzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKaW5k
ZXggZmFhYmJmZDVhODZlODEwMGZkODkxYjBhMDA3NTYzNDM1ZmY0MWE0Yy4uMmI1ZmU2NTU0ZTc2
MzFlMTJmNDM4ZjFmOGVlMzBmZDcxODk4OGQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKQEAgLTEwOCw1MyArMTA4LDUzIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmltYWdlOyB9
CiAgICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmltYWdlLmdl
dCgpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkgeyBt
X2RhdGEuYWNjZXNzKCktPmltYWdlID0gV1RGTW92ZShpbWFnZSk7IH0KKyAgICB2b2lkIHNldElt
YWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3MoKS5pbWFnZSA9
IFdURk1vdmUoaW1hZ2UpOyB9CiAKICAgICBjb25zdCBMZW5ndGhCb3gmIGltYWdlU2xpY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLT5pbWFnZVNsaWNlczsgfQotICAgIHZvaWQgc2V0SW1hZ2VT
bGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBtX2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0g
V1RGTW92ZShzbGljZXMpOyB9CisgICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xp
Y2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNlcyA9IFdURk1vdmUoc2xpY2VzKTsgfQog
CiAgICAgYm9vbCBmaWxsKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5maWxsOyB9Ci0gICAgdm9p
ZCBzZXRGaWxsKGJvb2wgZmlsbCkgeyBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSBmaWxsOyB9Cisg
ICAgdm9pZCBzZXRGaWxsKGJvb2wgZmlsbCkgeyBtX2RhdGEuYWNjZXNzKCkuZmlsbCA9IGZpbGw7
IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVyU2xpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLT5ib3JkZXJTbGljZXM7IH0KLSAgICB2b2lkIHNldEJvcmRlclNsaWNlcyhMZW5ndGhC
b3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gV1RGTW92ZShzbGlj
ZXMpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBtX2Rh
dGEuYWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CiAKICAgICBjb25z
dCBMZW5ndGhCb3gmIG91dHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+b3V0c2V0OyB9Ci0g
ICAgdm9pZCBzZXRPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNjZXNzKCktPm91
dHNldCA9IFdURk1vdmUob3V0c2V0KTsgfQorICAgIHZvaWQgc2V0T3V0c2V0KExlbmd0aEJveCBv
dXRzZXQpIHsgbV9kYXRhLmFjY2VzcygpLm91dHNldCA9IFdURk1vdmUob3V0c2V0KTsgfQogCiAg
ICAgRU5pbmVQaWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVOaW5lUGllY2VJbWFnZVJ1bGU+KG1fZGF0YS0+aG9yaXpvbnRhbFJ1bGUpOyB9
Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsg
bV9kYXRhLmFjY2VzcygpLT5ob3Jpem9udGFsUnVsZSA9IHJ1bGU7IH0KKyAgICB2b2lkIHNldEhv
cml6b250YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCku
aG9yaXpvbnRhbFJ1bGUgPSBydWxlOyB9CiAgICAgCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSB2
ZXJ0aWNhbFJ1bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTmluZVBpZWNlSW1hZ2VS
dWxlPihtX2RhdGEtPnZlcnRpY2FsUnVsZSk7IH0KLSAgICB2b2lkIHNldFZlcnRpY2FsUnVsZShF
TmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLT52ZXJ0aWNhbFJ1bGUg
PSBydWxlOyB9CisgICAgdm9pZCBzZXRWZXJ0aWNhbFJ1bGUoRU5pbmVQaWVjZUltYWdlUnVsZSBy
dWxlKSB7IG1fZGF0YS5hY2Nlc3MoKS52ZXJ0aWNhbFJ1bGUgPSBydWxlOyB9CiAKICAgICB2b2lk
IGNvcHlJbWFnZVNsaWNlc0Zyb20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKQogICAgIHsK
LSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IG90aGVyLm1fZGF0YS0+aW1h
Z2VTbGljZXM7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IG90aGVyLm1fZGF0YS0+
ZmlsbDsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmltYWdlU2xpY2VzID0gb3RoZXIubV9kYXRh
LT5pbWFnZVNsaWNlczsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSBvdGhlci5tX2Rh
dGEtPmZpbGw7CiAgICAgfQogCiAgICAgdm9pZCBjb3B5Qm9yZGVyU2xpY2VzRnJvbShjb25zdCBO
aW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmJv
cmRlclNsaWNlcyA9IG90aGVyLm1fZGF0YS0+Ym9yZGVyU2xpY2VzOworICAgICAgICBtX2RhdGEu
YWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gb3RoZXIubV9kYXRhLT5ib3JkZXJTbGljZXM7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29weU91dHNldEZyb20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90
aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5vdXRzZXQgPSBvdGhlci5tX2Rh
dGEtPm91dHNldDsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLm91dHNldCA9IG90aGVyLm1fZGF0
YS0+b3V0c2V0OwogICAgIH0KIAogICAgIHZvaWQgY29weVJlcGVhdEZyb20oY29uc3QgTmluZVBp
ZWNlSW1hZ2UmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5ob3Jpem9u
dGFsUnVsZSA9IG90aGVyLm1fZGF0YS0+aG9yaXpvbnRhbFJ1bGU7Ci0gICAgICAgIG1fZGF0YS5h
Y2Nlc3MoKS0+dmVydGljYWxSdWxlID0gb3RoZXIubV9kYXRhLT52ZXJ0aWNhbFJ1bGU7CisgICAg
ICAgIG1fZGF0YS5hY2Nlc3MoKS5ob3Jpem9udGFsUnVsZSA9IG90aGVyLm1fZGF0YS0+aG9yaXpv
bnRhbFJ1bGU7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS52ZXJ0aWNhbFJ1bGUgPSBvdGhlci5t
X2RhdGEtPnZlcnRpY2FsUnVsZTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hc2tEZWZhdWx0cygp
CiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0gTGVuZ3RoQm94
KDApOwotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSB0cnVlOwotICAgICAgICBtX2Rh
dGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IExlbmd0aEJveCgpOworICAgICAgICBtX2RhdGEu
YWNjZXNzKCkuaW1hZ2VTbGljZXMgPSBMZW5ndGhCb3goMCk7CisgICAgICAgIG1fZGF0YS5hY2Nl
c3MoKS5maWxsID0gdHJ1ZTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmJvcmRlclNsaWNlcyA9
IExlbmd0aEJveCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVPdXRz
ZXQoY29uc3QgTGVuZ3RoJiBvdXRzZXRTaWRlLCBMYXlvdXRVbml0IGJvcmRlclNpZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5YzQ3
MTI1ZWE3NDBmOTY3MDYwNmZlZmFiYjk1ZmY4ZTc2Y2JkMjFjLi44ZmU4MmUxNjViNzNjMmEzYWI3
Nzg2MDEwZGY0NWQ3Y2UyZjQ4ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTcxLDExICs3MSwxMSBAQCBzdHJ1Y3QgU2FtZVNpemVBc1Jl
bmRlclN0eWxlIHsKICAgICB2b2lkKiBkYXRhUmVmU3ZnU3R5bGU7CiAgICAgc3RydWN0IEluaGVy
aXRlZEZsYWdzIHsKICAgICAgICAgdW5zaWduZWQgbV9iaXRmaWVsZHNbMl07Ci0gICAgfSBpbmhl
cml0ZWRfZmxhZ3M7CisgICAgfSBtX2luaGVyaXRlZEZsYWdzOwogCiAgICAgc3RydWN0IE5vbklu
aGVyaXRlZEZsYWdzIHsKICAgICAgICAgdWludDY0X3QgbV9mbGFnczsKLSAgICB9IG5vbmluaGVy
aXRlZF9mbGFnczsKKyAgICB9IG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIGRlbGV0aW9uQ2hl
Y2s7CiAjZW5kaWYKQEAgLTg1LDcgKzg1LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRl
clN0eWxlKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgUmVuZGVyU3R5bGUKIAog
UmVuZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewotICAgIHN0YXRpYyBS
ZW5kZXJTdHlsZSYgc3R5bGUgPSAqbmV3IFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbmRlclN0eWxlPiBzdHlsZSB7IENyZWF0ZURl
ZmF1bHRTdHlsZSB9OwogICAgIHJldHVybiBzdHlsZTsKIH0KIApAQCAtMTI4LDUzICsxMjgsNjgg
QEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1
ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYKIH0KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxl
KENyZWF0ZURlZmF1bHRTdHlsZVRhZykKLSAgICA6IG1fYm94KFN0eWxlQm94RGF0YTo6Y3JlYXRl
KCkpCi0gICAgLCB2aXN1YWwoU3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fYmFj
a2dyb3VuZChTdHlsZUJhY2tncm91bmREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHN1cnJvdW5kKFN0
eWxlU3Vycm91bmREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQotICAgICwgcmFyZUluaGVyaXRlZERh
dGEoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhlcml0ZWQoU3R5
bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICA6IG1fYm94RGF0YShTdHlsZUJveERhdGE6
OmNyZWF0ZSgpKQorICAgICwgbV92aXN1YWxEYXRhKFN0eWxlVmlzdWFsRGF0YTo6Y3JlYXRlKCkp
CisgICAgLCBtX2JhY2tncm91bmREYXRhKFN0eWxlQmFja2dyb3VuZERhdGE6OmNyZWF0ZSgpKQor
ICAgICwgbV9zdXJyb3VuZERhdGEoU3R5bGVTdXJyb3VuZERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjcmVhdGUo
KSkKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y3Jl
YXRlKCkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUo
KSkKICAgICAsIG1fc3ZnU3R5bGUoU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQogewotICAgIGlu
aGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgPSBpbml0aWFsRW1wdHlDZWxscygpOwotICAgIGlu
aGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID0gaW5pdGlhbENhcHRpb25TaWRlKCk7Ci0gICAg
aW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgPSBpbml0aWFsTGlzdFN0eWxlVHlwZSgp
OwotICAgIGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IGluaXRpYWxMaXN0
U3R5bGVQb3NpdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IGluaXRp
YWxWaXNpYmlsaXR5KCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0gaW5pdGlh
bFRleHRBbGlnbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSBpbml0
aWFsVGV4dFRyYW5zZm9ybSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9u
cyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fY3Vyc29y
X3N0eWxlID0gaW5pdGlhbEN1cnNvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxs
cyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lk
ZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxl
VHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0
U3R5bGVQb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MudmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7CisgICAgbV9pbmhlcml0
ZWRGbGFncy50ZXh0QWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy50ZXh0VHJhbnNmb3JtID0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworICAg
IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gaW5pdGlhbEN1cnNvcigpOwogI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JWaXNpYmlsaXR5
ID0gaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmN1cnNv
clZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpOwogI2VuZGlmCi0gICAgaW5o
ZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7Ci0gICAgaW5oZXJp
dGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSA9IGluaXRpYWxXaGl0ZVNwYWNlKCk7Ci0gICAgaW5oZXJp
dGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgPSBpbml0aWFsQm9yZGVyQ29sbGFwc2UoKTsKLSAg
ICBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOwot
ICAgIGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24o
KTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gaW5pdGlhbFByaW50
Q29sb3JBZGp1c3QoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBpbml0
aWFsUG9pbnRlckV2ZW50cygpOwotICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IE5v
dEluc2lkZUxpbms7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uID0g
ZmFsc2U7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSBpbml0aWFsV3JpdGlu
Z01vZGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IGluaXRpYWxEaXJlY3Rp
b24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBpbml0aWFsV2hpdGVTcGFj
ZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBpbml0aWFsQm9yZGVy
Q29sbGFwc2UoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0gaW5pdGlhbFJU
TE9yZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPSBpbml0aWFs
Qm94RGlyZWN0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0g
aW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJF
dmVudHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuaW5z
aWRlTGluayA9IE5vdEluc2lkZUxpbms7CisgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZh
dWx0QnV0dG9uID0gZmFsc2U7CisgICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSA9IGlu
aXRpYWxXcml0aW5nTW9kZSgpOwogCiAgICAgc3RhdGljX2Fzc2VydCgoc2l6ZW9mKEluaGVyaXRl
ZEZsYWdzKSA8PSA4KSwgIkluaGVyaXRlZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsKICAgICBzdGF0
aWNfYXNzZXJ0KChzaXplb2YoTm9uSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiTm9uSW5oZXJpdGVk
RmxhZ3MgZG9lcyBub3QgZ3JvdyIpOwogfQogCi1SZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKLSAgICA6IG1fYm94KG90aGVyLm1fYm94
KQotICAgICwgdmlzdWFsKG90aGVyLnZpc3VhbCkKLSAgICAsIG1fYmFja2dyb3VuZChvdGhlci5t
X2JhY2tncm91bmQpCi0gICAgLCBzdXJyb3VuZChvdGhlci5zdXJyb3VuZCkKLSAgICAsIHJhcmVO
b25Jbmhlcml0ZWREYXRhKG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhKQotICAgICwgcmFyZUlu
aGVyaXRlZERhdGEob3RoZXIucmFyZUluaGVyaXRlZERhdGEpCi0gICAgLCBpbmhlcml0ZWQob3Ro
ZXIuaW5oZXJpdGVkKQoraW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQorICAgIDogbV9ib3hEYXRhKG90aGVyLm1fYm94RGF0
YSkKKyAgICAsIG1fdmlzdWFsRGF0YShvdGhlci5tX3Zpc3VhbERhdGEpCisgICAgLCBtX2JhY2tn
cm91bmREYXRhKG90aGVyLm1fYmFja2dyb3VuZERhdGEpCisgICAgLCBtX3N1cnJvdW5kRGF0YShv
dGhlci5tX3N1cnJvdW5kRGF0YSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERhdGEob3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mob3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncykKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEob3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YSkKKyAgICAsIG1faW5oZXJpdGVkRGF0YShvdGhlci5tX2luaGVyaXRl
ZERhdGEpCisgICAgLCBtX2luaGVyaXRlZEZsYWdzKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpCiAg
ICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCi0gICAgLCBpbmhlcml0ZWRfZmxhZ3Mo
b3RoZXIuaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgbm9uaW5oZXJpdGVkX2ZsYWdzKG90aGVyLm5v
bmluaGVyaXRlZF9mbGFncykKK3sKK30KKworaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHls
ZShSZW5kZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUmJiBiKQorICAgIDogbV9ib3hEYXRhKGEubV9i
b3hEYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fYm94RGF0YSkpKQorICAgICwgbV92aXN1YWxEYXRh
KGEubV92aXN1YWxEYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fdmlzdWFsRGF0YSkpKQorICAgICwg
bV9iYWNrZ3JvdW5kRGF0YShhLm1fYmFja2dyb3VuZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9i
YWNrZ3JvdW5kRGF0YSkpKQorICAgICwgbV9zdXJyb3VuZERhdGEoYS5tX3N1cnJvdW5kRGF0YS5y
ZXBsYWNlKFdURk1vdmUoYi5tX3N1cnJvdW5kRGF0YSkpKQorICAgICwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YShhLm1fcmFyZU5vbkluaGVyaXRlZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSkpKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhzdGQ6OmV4Y2hh
bmdlKGEubV9ub25Jbmhlcml0ZWRGbGFncywgYi5tX25vbkluaGVyaXRlZEZsYWdzKSkKKyAgICAs
IG1fcmFyZUluaGVyaXRlZERhdGEoYS5tX3JhcmVJbmhlcml0ZWREYXRhLnJlcGxhY2UoV1RGTW92
ZShiLm1fcmFyZUluaGVyaXRlZERhdGEpKSkKKyAgICAsIG1faW5oZXJpdGVkRGF0YShhLm1faW5o
ZXJpdGVkRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX2luaGVyaXRlZERhdGEpKSkKKyAgICAsIG1f
aW5oZXJpdGVkRmxhZ3Moc3RkOjpleGNoYW5nZShhLm1faW5oZXJpdGVkRmxhZ3MsIGIubV9pbmhl
cml0ZWRGbGFncykpCisgICAgLCBtX2NhY2hlZFBzZXVkb1N0eWxlcyhzdGQ6OmV4Y2hhbmdlKGEu
bV9jYWNoZWRQc2V1ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2NhY2hlZFBzZXVkb1N0eWxlcykpKQor
ICAgICwgbV9zdmdTdHlsZShhLm1fc3ZnU3R5bGUucmVwbGFjZShXVEZNb3ZlKGIubV9zdmdTdHls
ZSkpKQogewogfQogCkBAIC0xODYsNiArMjAxLDExIEBAIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5
bGUoKQogI2VuZGlmCiB9CiAKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpyZXBsYWNlKFJlbmRl
clN0eWxlJiYgbmV3U3R5bGUpCit7CisgICAgcmV0dXJuIFJlbmRlclN0eWxlIHsgKnRoaXMsIFdU
Rk1vdmUobmV3U3R5bGUpIH07Cit9CisKIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ1NTR3JpZExheW91
dEVuYWJsZWQoKQogewogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCkBAIC0yMTIsNyArMjMy
LDcgQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRBbGlnblNl
bGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFMKIHsKICAgICAvLyBUaGUgYXV0byBrZXl3b3Jk
IGNvbXB1dGVzIHRvIHRoZSBwYXJlbnQncyBhbGlnbi1pdGVtcyBjb21wdXRlZCB2YWx1ZS4KICAg
ICAvLyBXZSB3aWxsIHJldHVybiB0aGUgYmVoYXZpb3VyIG9mICdub3JtYWwnIHZhbHVlIGlmIG5l
ZWRlZCwgd2hpY2ggaXMgc3BlY2lmaWMgb2YgZWFjaCBsYXlvdXQgbW9kZWwuCi0gICAgaWYgKGFs
aWduU2VsZlBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoYWxpZ25TZWxm
KCkucG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1cm4gcGFyZW50
U3R5bGUucmVzb2x2ZWRBbGlnbkl0ZW1zKG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKICAgICByZXR1
cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGFsaWduU2VsZigpLCBub3JtYWxWYWx1ZUJlaGF2aW91
cik7CiB9CkBAIC0yMjIsOSArMjQyLDggQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBSZW5kZXJT
dHlsZTo6cmVzb2x2ZWRKdXN0aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHUKICAgICAv
LyBGSVhNRToganVzdGlmeS1pdGVtcyAnYXV0bycgdmFsdWUgaXMgYWxsb3dlZCBvbmx5IHRvIHBy
b3ZpZGUgdGhlICdsZWdhY3knIGtleXdvcmQncyBiZWhhdmlvciwgd2hpY2ggaXQncyBzdGlsbCBu
b3QgaW1wbGVtZW50ZWQgZm9yIGxheW91dC4KICAgICAvLyAiSWYgdGhlIGluaGVyaXRlZCB2YWx1
ZSBvZiBqdXN0aWZ5LWl0ZW1zIGluY2x1ZGVzIHRoZSBsZWdhY3kga2V5d29yZCwgYXV0byBjb21w
dXRlcyB0byB0aGUgaW5oZXJpdGVkIHZhbHVlLiIKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWFsaWduLyNqdXN0aWZ5LWl0ZW1zLXByb3BlcnR5Ci0gICAgaWYgKGp1c3RpZnlJ
dGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoanVzdGlmeUl0ZW1z
KCkucG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1cm4geyBub3Jt
YWxWYWx1ZUJlaGF2aW91ciwgT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0IH07Ci0KICAgICByZXR1
cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGp1c3RpZnlJdGVtcygpLCBub3JtYWxWYWx1ZUJlaGF2
aW91cik7CiB9CiAKQEAgLTIzMiw3ICsyNTEsNyBAQCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFJl
bmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlTZWxmKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbgog
ewogICAgIC8vIFRoZSBhdXRvIGtleXdvcmQgY29tcHV0ZXMgdG8gdGhlIHBhcmVudCdzIGp1c3Rp
ZnktaXRlbXMgY29tcHV0ZWQgdmFsdWUuCiAgICAgLy8gV2Ugd2lsbCByZXR1cm4gdGhlIGJlaGF2
aW91ciBvZiAnbm9ybWFsJyB2YWx1ZSBpZiBuZWVkZWQsIHdoaWNoIGlzIHNwZWNpZmljIG9mIGVh
Y2ggbGF5b3V0IG1vZGVsLgotICAgIGlmIChqdXN0aWZ5U2VsZlBvc2l0aW9uKCkgPT0gSXRlbVBv
c2l0aW9uQXV0bykKKyAgICBpZiAoanVzdGlmeVNlbGYoKS5wb3NpdGlvbigpID09IEl0ZW1Qb3Np
dGlvbkF1dG8pCiAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS5yZXNvbHZlZEp1c3RpZnlJdGVt
cyhub3JtYWxWYWx1ZUJlaGF2aW91cik7CiAgICAgcmV0dXJuIHJlc29sdmVkU2VsZkFsaWdubWVu
dChqdXN0aWZ5U2VsZigpLCBub3JtYWxWYWx1ZUJlaGF2aW91cik7CiB9CkBAIC0yNjksNDMgKzI4
OCw0MiBAQCBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRBbGln
bkNvbnRlbnREaXN0cmlidXRpb24oY29uc3QgU3R5bAogCiB2b2lkIFJlbmRlclN0eWxlOjppbmhl
cml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdFBhcmVudCkKIHsKLSAgICByYXJlSW5o
ZXJpdGVkRGF0YSA9IGluaGVyaXRQYXJlbnQucmFyZUluaGVyaXRlZERhdGE7Ci0gICAgaW5oZXJp
dGVkID0gaW5oZXJpdFBhcmVudC5pbmhlcml0ZWQ7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzID0gaW5o
ZXJpdFBhcmVudC5pbmhlcml0ZWRfZmxhZ3M7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YSA9IGlu
aGVyaXRQYXJlbnQubV9yYXJlSW5oZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRlZERhdGEgPSBp
bmhlcml0UGFyZW50Lm1faW5oZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gaW5o
ZXJpdFBhcmVudC5tX2luaGVyaXRlZEZsYWdzOwogCiAgICAgaWYgKG1fc3ZnU3R5bGUgIT0gaW5o
ZXJpdFBhcmVudC5tX3N2Z1N0eWxlKQotICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLT5pbmhl
cml0RnJvbShpbmhlcml0UGFyZW50Lm1fc3ZnU3R5bGUuZ2V0KCkpOworICAgICAgICBtX3N2Z1N0
eWxlLmFjY2VzcygpLmluaGVyaXRGcm9tKGluaGVyaXRQYXJlbnQubV9zdmdTdHlsZS5nZXQoKSk7
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRl
clN0eWxlKiBvdGhlcikKK3ZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNv
bnN0IFJlbmRlclN0eWxlJiBvdGhlcikKIHsKLSAgICBtX2JveCA9IG90aGVyLT5tX2JveDsKLSAg
ICB2aXN1YWwgPSBvdGhlci0+dmlzdWFsOwotICAgIG1fYmFja2dyb3VuZCA9IG90aGVyLT5tX2Jh
Y2tncm91bmQ7Ci0gICAgc3Vycm91bmQgPSBvdGhlci0+c3Vycm91bmQ7Ci0gICAgcmFyZU5vbklu
aGVyaXRlZERhdGEgPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGE7Ci0gICAgbm9uaW5oZXJp
dGVkX2ZsYWdzLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mp
OworICAgIG1fYm94RGF0YSA9IG90aGVyLm1fYm94RGF0YTsKKyAgICBtX3Zpc3VhbERhdGEgPSBv
dGhlci5tX3Zpc3VhbERhdGE7CisgICAgbV9iYWNrZ3JvdW5kRGF0YSA9IG90aGVyLm1fYmFja2dy
b3VuZERhdGE7CisgICAgbV9zdXJyb3VuZERhdGEgPSBvdGhlci5tX3N1cnJvdW5kRGF0YTsKKyAg
ICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YTsK
KyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLm1fbm9u
SW5oZXJpdGVkRmxhZ3MpOwogCi0gICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXItPm1fc3ZnU3R5
bGUpCi0gICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90
aGVyLT5tX3N2Z1N0eWxlLmdldCgpKTsKKyAgICBpZiAobV9zdmdTdHlsZSAhPSBvdGhlci5tX3N2
Z1N0eWxlKQorICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLmNvcHlOb25Jbmhlcml0ZWRGcm9t
KG90aGVyLm1fc3ZnU3R5bGUuZ2V0KCkpOwogCiAgICAgQVNTRVJUKHpvb20oKSA9PSBpbml0aWFs
Wm9vbSgpKTsKIH0KIAotYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJT
dHlsZSYgbykgY29uc3QKK2Jvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVy
U3R5bGUmIG90aGVyKSBjb25zdAogewogICAgIC8vIGNvbXBhcmUgZXZlcnl0aGluZyBleGNlcHQg
dGhlIHBzZXVkb1N0eWxlIHBvaW50ZXIKLSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzID09IG8u
aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncyA9PSBvLm5vbmlu
aGVyaXRlZF9mbGFncwotICAgICAgICAmJiBtX2JveCA9PSBvLm1fYm94Ci0gICAgICAgICYmIHZp
c3VhbCA9PSBvLnZpc3VhbAotICAgICAgICAmJiBtX2JhY2tncm91bmQgPT0gby5tX2JhY2tncm91
bmQKLSAgICAgICAgJiYgc3Vycm91bmQgPT0gby5zdXJyb3VuZAotICAgICAgICAmJiByYXJlTm9u
SW5oZXJpdGVkRGF0YSA9PSBvLnJhcmVOb25Jbmhlcml0ZWREYXRhCi0gICAgICAgICYmIHJhcmVJ
bmhlcml0ZWREYXRhID09IG8ucmFyZUluaGVyaXRlZERhdGEKLSAgICAgICAgJiYgaW5oZXJpdGVk
ID09IG8uaW5oZXJpdGVkCi0gICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gby5tX3N2Z1N0eWxlCi0g
ICAgICAgICAgICA7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9pbmhl
cml0ZWRGbGFncworICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzID09IG90aGVyLm1fbm9u
SW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ib3hEYXRhID09IG90aGVyLm1fYm94RGF0YQor
ICAgICAgICAmJiBtX3Zpc3VhbERhdGEgPT0gb3RoZXIubV92aXN1YWxEYXRhCisgICAgICAgICYm
IG1fYmFja2dyb3VuZERhdGEgPT0gb3RoZXIubV9iYWNrZ3JvdW5kRGF0YQorICAgICAgICAmJiBt
X3N1cnJvdW5kRGF0YSA9PSBvdGhlci5tX3N1cnJvdW5kRGF0YQorICAgICAgICAmJiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEKKyAgICAgICAg
JiYgbV9yYXJlSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhCisgICAg
ICAgICYmIG1faW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEKKyAgICAgICAg
JiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCiBib29sIFJlbmRlclN0eWxl
OjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC0zMTMsOCArMzMxLDcgQEAgYm9vbCBS
ZW5kZXJTdHlsZTo6aGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25zdAogICAgIGlmICghbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMgfHwgc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQc2V1ZG9TdHls
ZXMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IG1f
Y2FjaGVkUHNldWRvU3R5bGVzLT5hdChpKS5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHBzZXVkb1N0
eWxlIDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+
dW5pcXVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMzAsMTAgKzM0
Nyw5IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNl
dWRvSWQgcGlkKSBjb25zdAogICAgIGlmIChzdHlsZVR5cGUoKSAhPSBOT1BTRVVETykgCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hl
ZFBzZXVkb1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHBzZXVk
b1N0eWxlID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmF0KGkpLmdldCgpOworICAgIGZvciAoYXV0
byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKICAgICAgICAgaWYgKHBz
ZXVkb1N0eWxlLT5zdHlsZVR5cGUoKSA9PSBwaWQpCi0gICAgICAgICAgICByZXR1cm4gcHNldWRv
U3R5bGU7CisgICAgICAgICAgICByZXR1cm4gcHNldWRvU3R5bGUuZ2V0KCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNzEsMTAgKzM4NywxMCBAQCB2b2lkIFJlbmRlclN0eWxl
OjpyZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwaWQpCiAKIGJvb2wgUmVuZGVyU3R5
bGU6OmluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsK
LSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MKLSAg
ICAgICAgICAgfHwgaW5oZXJpdGVkICE9IG90aGVyLT5pbmhlcml0ZWQKLSAgICAgICAgICAgfHwg
bV9zdmdTdHlsZS0+aW5oZXJpdGVkTm90RXF1YWwob3RoZXItPm1fc3ZnU3R5bGUuZ2V0KCkpCi0g
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0
YTsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWRGbGFncyAhPSBvdGhlci0+bV9pbmhlcml0ZWRGbGFn
cworICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEgIT0gb3RoZXItPm1faW5oZXJpdGVkRGF0YQor
ICAgICAgICB8fCBtX3N2Z1N0eWxlLT5pbmhlcml0ZWROb3RFcXVhbChvdGhlci0+bV9zdmdTdHls
ZSkKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YSAhPSBvdGhlci0+bV9yYXJlSW5oZXJp
dGVkRGF0YTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0zOTAsNDYgKzQw
Niw0NiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVGb250SGFzaChjb25zdCBGb250
Q2FzY2FkZSYgZm9udCkKIHVuc2lnbmVkIFJlbmRlclN0eWxlOjpoYXNoRm9yVGV4dEF1dG9zaXpp
bmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOb3QgYSB2ZXJ5IHNtYXJ0IGhhc2guIENvdWxk
IGJlIGltcHJvdmVkIHVwb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMTEzMT4uCi0gICAgdW5zaWduZWQgaGFzaCA9IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FwcGVhcmFuY2U7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QmVmb3JlQ29sbGFwc2U7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QWZ0ZXJDb2xsYXBzZTsKLSAgICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xh
bXAudmFsdWUoKTsKLSAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXA7
Ci0gICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGU7Ci0gICAgaGFzaCBePSBy
YXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8
ZmxvYXQ+OjpoYXNoKGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodC52YWx1ZSgpKTsKLSAg
ICBoYXNoIF49IGNvbXB1dGVGb250SGFzaChpbmhlcml0ZWQtPmZvbnRDYXNjYWRlKTsKLSAgICBo
YXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPmhvcml6b250YWxf
Ym9yZGVyX3NwYWNpbmcpOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNo
KGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpOwotICAgIGhhc2ggXj0gaW5oZXJp
dGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uOwotICAgIGhhc2ggXj0gaW5oZXJpdGVkX2ZsYWdzLm1f
cnRsT3JkZXJpbmc7Ci0gICAgaGFzaCBePSBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKTsK
LSAgICBoYXNoIF49IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpOwotICAgIGhhc2ggXj0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsKLSAgICBoYXNoIF49IHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHk7CisgICAgdW5zaWduZWQgaGFzaCA9IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFwcGVhcmFuY2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5saW5lQ2xhbXAudmFsdWUoKTsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERh
dGEtPm92ZXJmbG93V3JhcDsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BN
b2RlOworICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrOworICAgIGhh
c2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVkRGF0YS0+c3BlY2lm
aWVkTGluZUhlaWdodC52YWx1ZSgpKTsKKyAgICBoYXNoIF49IGNvbXB1dGVGb250SGFzaChtX2lu
aGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlKTsKKyAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZs
b2F0Pjo6aGFzaChtX2luaGVyaXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKTsKKyAg
ICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVyaXRlZERhdGEtPnZl
cnRpY2FsQm9yZGVyU3BhY2luZyk7CisgICAgaGFzaCBePSBtX2luaGVyaXRlZEZsYWdzLmJveERp
cmVjdGlvbjsKKyAgICBoYXNoIF49IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmc7CisgICAg
aGFzaCBePSBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCk7CisgICAgaGFzaCBePSBtX25v
bkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCk7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0T3ZlcmZsb3c7CisgICAgaGFzaCBePSBtX3JhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U2VjdXJpdHk7CiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6OmVx
dWFsRm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewot
ICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlID09IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UKLSAgICAgICAgJiYgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFy
Z2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNs
YW1wID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAgICAgICAgJiYg
cmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ID09IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U2l6ZUFkanVzdAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZs
b3dXcmFwID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKLSAgICAgICAg
JiYgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5uYnNwTW9kZQotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrID09IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKLSAgICAgICAgJiYgcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRTZWN1cml0eSA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3Vy
aXR5Ci0gICAgICAgICYmIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCA9PSBvdGhlci5p
bmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQKLSAgICAgICAgJiYgaW5oZXJpdGVkLT5mb250
Q2FzY2FkZS5lcXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLmluaGVyaXRlZC0+Zm9udENhc2Nh
ZGUpCi0gICAgICAgICYmIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBv
dGhlci5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcKLSAgICAgICAgJiYgaW5o
ZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci5pbmhlcml0ZWQtPnZlcnRp
Y2FsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgICYmIGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVj
dGlvbiA9PSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KLSAgICAgICAgJiYg
aW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1f
cnRsT3JkZXJpbmcKLSAgICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkgPT0g
b3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgJiYgbm9uaW5oZXJp
dGVkX2ZsYWdzLmZsb2F0aW5nKCkgPT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5n
KCkKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyA9PSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OworICAgIHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmFwcGVhcmFuY2UKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QmVmb3JlQ29sbGFwc2UgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVm
b3JlQ29sbGFwc2UKKyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0
ZXJDb2xsYXBzZSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNv
bGxhcHNlCisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcCA9PSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKKyAgICAgICAgJiYgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNpemVBZGp1c3QKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZs
b3dXcmFwID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAg
ICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSA9PSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT5uYnNwTW9kZQorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJl
YWsgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAgICAgICYmIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U2VjdXJpdHkKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRM
aW5lSGVpZ2h0ID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodAor
ICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmVxdWFsRm9yVGV4dEF1dG9T
aXppbmcob3RoZXIubV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZSkKKyAgICAgICAgJiYgbV9p
bmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZyA9PSBvdGhlci5tX2luaGVyaXRl
ZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0
YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+dmVydGlj
YWxCb3JkZXJTcGFjaW5nCisgICAgICAgICYmIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9u
ID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAgICAgICYmIG1faW5o
ZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ydGxPcmRl
cmluZworICAgICAgICAmJiBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCkgPT0gb3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpCisgICAgICAgICYmIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuZmxvYXRpbmcoKSA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCkK
KyAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ID09IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC00MzcsMTAgKzQ1MywxMCBAQCBib29sIFJlbmRlclN0
eWxlOjplcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29u
c3QKIGJvb2wgUmVuZGVyU3R5bGU6OmluaGVyaXRlZERhdGFTaGFyZWQoY29uc3QgUmVuZGVyU3R5
bGUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMgYSBmYXN0IGNoZWNrIHRoYXQgb25s
eSBsb29rcyBpZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBzaGFyZWQuCi0gICAgcmV0dXJuIGlu
aGVyaXRlZF9mbGFncyA9PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICYmIGluaGVy
aXRlZC5nZXQoKSA9PSBvdGhlci0+aW5oZXJpdGVkLmdldCgpCisgICAgcmV0dXJuIG1faW5oZXJp
dGVkRmxhZ3MgPT0gb3RoZXItPm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9pbmhlcml0
ZWREYXRhLmdldCgpID09IG90aGVyLT5tX2luaGVyaXRlZERhdGEuZ2V0KCkKICAgICAgICAgJiYg
bV9zdmdTdHlsZS5nZXQoKSA9PSBvdGhlci0+bV9zdmdTdHlsZS5nZXQoKQotICAgICAgICAmJiBy
YXJlSW5oZXJpdGVkRGF0YS5nZXQoKSA9PSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEuZ2V0KCk7
CisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3RoZXItPm1fcmFyZUlu
aGVyaXRlZERhdGEuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIHBvc2l0aW9uQ2hhbmdlSXNNb3Zl
bWVudE9ubHkoY29uc3QgTGVuZ3RoQm94JiBhLCBjb25zdCBMZW5ndGhCb3gmIGIsIGNvbnN0IExl
bmd0aCYgd2lkdGgpCkBAIC00NzIsMTcgKzQ4OCwxNyBAQCBzdGF0aWMgYm9vbCBwb3NpdGlvbkNo
YW5nZUlzTW92ZW1lbnRPbmx5KGNvbnN0IExlbmd0aEJveCYgYSwgY29uc3QgTGVuZ3RoQm94JiBi
LAogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93
KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkKLSAgICAg
ICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94
U2hhZG93LCBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cpKQorICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuZ2V0KCkKKyAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Ym94U2hhZG93LCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5i
b3hTaGFkb3cpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlSW5oZXJpdGVk
RGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKQotICAgICAgICAmJiAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdywgb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cpKQorICAgIGlmIChtX3JhcmVJbmhlcml0
ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkKKyAgICAgICAg
JiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRv
dywgb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdykpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBv
dGhlci5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFs
LT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci52aXN1YWwtPnRleHREZWNvcmF0aW9uCi0gICAgICAg
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSkgeworICAgIGlmICht
X2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdz
LnRleHREZWNvcmF0aW9ucworICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9u
ICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKSB7CiAgICAgICAgIC8vIFVuZGVybGlu
ZXMgYXJlIGFsd2F5cyBkcmF3biBvdXRzaWRlIG9mIHRoZWlyIHRleHRib3ggYm91bmRzIHdoZW4g
dGV4dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVyOwogICAgICAgICAvLyBpcyBzcGVjaWZpZWQu
IFdlIGNhbiB0YWtlIGFuIGVhcmx5IG91dCBoZXJlLgogICAgICAgICBpZiAodGV4dFVuZGVybGlu
ZVBvc2l0aW9uKCkgPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIKQEAgLTQ5OCwxNjggKzUx
NCwxNjggQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVy
Zmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGMKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGlmIChtX2JveC0+
d2lkdGgoKSAhPSBvdGhlci5tX2JveC0+d2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWluV2lk
dGgoKSAhPSBvdGhlci5tX2JveC0+bWluV2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWF4V2lk
dGgoKSAhPSBvdGhlci5tX2JveC0+bWF4V2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+aGVpZ2h0
KCkgIT0gb3RoZXIubV9ib3gtPmhlaWdodCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5IZWlnaHQo
KSAhPSBvdGhlci5tX2JveC0+bWluSGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1heEhlaWdo
dCgpICE9IG90aGVyLm1fYm94LT5tYXhIZWlnaHQoKSkKKyAgICBpZiAobV9ib3hEYXRhLT53aWR0
aCgpICE9IG90aGVyLm1fYm94RGF0YS0+d2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1p
bldpZHRoKCkgIT0gb3RoZXIubV9ib3hEYXRhLT5taW5XaWR0aCgpCisgICAgICAgIHx8IG1fYm94
RGF0YS0+bWF4V2lkdGgoKSAhPSBvdGhlci5tX2JveERhdGEtPm1heFdpZHRoKCkKKyAgICAgICAg
fHwgbV9ib3hEYXRhLT5oZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPmhlaWdodCgpCisgICAg
ICAgIHx8IG1fYm94RGF0YS0+bWluSGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5taW5IZWln
aHQoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1heEhlaWdodCgpICE9IG90aGVyLm1fYm94RGF0
YS0+bWF4SGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fYm94LT52
ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIubV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8fCBub25pbmhl
cml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy52
ZXJ0aWNhbEFsaWduKCkpCisgICAgaWYgKG1fYm94RGF0YS0+dmVydGljYWxBbGlnbigpICE9IG90
aGVyLm1fYm94RGF0YS0+dmVydGljYWxBbGlnbigpIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVy
dGljYWxBbGlnbigpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2JveC0+Ym94U2l6aW5nKCkgIT0g
b3RoZXIubV9ib3gtPmJveFNpemluZygpKQorICAgIGlmIChtX2JveERhdGEtPmJveFNpemluZygp
ICE9IG90aGVyLm1fYm94RGF0YS0+Ym94U2l6aW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKHN1cnJvdW5kLT5tYXJnaW4gIT0gb3RoZXIuc3Vycm91bmQtPm1hcmdpbikKKyAg
ICBpZiAobV9zdXJyb3VuZERhdGEtPm1hcmdpbiAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+bWFy
Z2luKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJyb3VuZC0+cGFkZGluZyAh
PSBvdGhlci5zdXJyb3VuZC0+cGFkZGluZykKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPnBhZGRp
bmcgIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPnBhZGRpbmcpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgYW4gb3B0aW1pemVkIGZvcm0gb2YgbGF5
b3V0IHRoYXQganVzdCByZWNvbXB1dGVzIHZpc3VhbCBvdmVyZmxvdy4KICAgICBpZiAoY2hhbmdl
QWZmZWN0c1Zpc3VhbE92ZXJmbG93KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVh
cmFuY2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZQotICAgICAg
ICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQotICAgICAgICAg
ICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKLSAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPmxpbmVDbGFtcAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
aW5pdGlhbExldHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0
dGVyCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ICE9
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCisgICAgaWYgKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5n
ZXQoKSkgeworICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlCisgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCisgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bGluZUNsYW1wCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5pbml0aWFsTGV0dGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRp
YWxMZXR0ZXIKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVy
ZmxvdyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcmVnaW9uRnJhZ21lbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9u
RnJhZ21lbnQpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFn
bWVudCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9zaGFwZU1hcmdpbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1h
cmdpbikKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJl
Y2F0ZWRGbGV4aWJsZUJveCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNh
dGVkRmxleGlibGVCb3gpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXBy
ZWNhdGVkRmxleGlibGVCb3ggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVj
YXRlZEZsZXhpYmxlQm94KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94ICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94KQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+ZmxleGlibGVCb3ggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGli
bGVCb3gpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fb3JkZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3Jk
ZXIKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudCAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQKLSAgICAgICAgICAg
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcwotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWxpZ25TZWxmICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWdu
U2VsZgotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRl
bnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQKLSAgICAg
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtcyAhPSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMKLSAgICAgICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlTZWxmKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
b3JkZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXIKKyAgICAgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduQ29udGVudCAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5hbGlnbkNvbnRlbnQKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFsaWduSXRlbXMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
YWxpZ25JdGVtcworICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25T
ZWxmICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZgorICAgICAgICAg
ICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQgIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQKKyAgICAgICAgICAgIHx8IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVtcyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5qdXN0aWZ5SXRlbXMKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmp1c3RpZnlTZWxmICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlT
ZWxmKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKCFhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QsIG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QpKQorICAgICAgICBpZiAoIWFyZVBvaW50
aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdCwgb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wpCisgICAgICAgIGlmIChtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tdWx0aUNvbCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0gIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNmb3JtKSB7Ci0gICAgICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV90cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpKQorICAgICAgICBpZiAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybSkgeworICAgICAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIGlmICgqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtICE9ICpv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGlm
ICgqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtICE9ICpvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsKICAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5VHJhbnNmb3Jt
OwogICAgICAgICAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90
aGVyIGNoYW5nZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZCAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkCi0gICAgICAgICAgICB8fCByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkSXRlbSkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZAorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZEl0ZW0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAvLyBJZiByZWdpb25zIGNoYW5nZSwgdHJp
Z2dlciBhIHJlbGF5b3V0IHRvIHJlLWNhbGMgcmVnaW9ucy4KLSAgICAgICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2Rhc2hib2FyZFJlZ2lvbnMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9ucykKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmRhc2hib2FyZFJlZ2lvbnMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
ZGFzaGJvYXJkUmVnaW9ucykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAg
ICAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3dpbGxDaGFuZ2UsIG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2UpKSB7
CisgICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT53aWxsQ2hhbmdlLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdl
KSkgewogICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0eVdpbGxDaGFuZ2U7CiAgICAgICAgICAgICAvLyBEb24ndCBy
ZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmluZGVudCAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERh
dGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSkgeworICAgICAgICBp
ZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERh
dGEtPmluZGVudAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0QWxpZ25MYXN0ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5t
X3RleHRBbGlnbkxhc3QKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRK
dXN0aWZ5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5Ci0gICAgICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50
ZXh0QWxpZ25MYXN0CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVz
dGlmeSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeQorICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUgIT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUKICNlbmRpZgotICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0
YS0+bV9lZmZlY3RpdmVab29tCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90
ZXh0Wm9vbSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbQorICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlWm9vbSAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0Wm9vbSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9vbQog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dFNpemVBZGp1c3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXpl
QWRqdXN0CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVz
dCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAogI2VuZGlmCi0g
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT53b3JkQnJlYWsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5vdmVyZmxvd1dyYXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAot
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5uYnNwTW9kZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
PmxpbmVCcmVhayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCi0gICAgICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5oeXBoZW5zICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZQotICAgICAgICAgICAgfHwg
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlciAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uU3RyaW5nCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9y
dWJ5UG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uCi0g
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyawotICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
PnRleHRFbXBoYXNpc0N1c3RvbU1hcmsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT5tX3RleHRPcmllbnRhdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3Jp
ZW50YXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RhYlNpemUgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZQotICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW4gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEt
Pm1fbGluZUJveENvbnRhaW4KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xp
bmVHcmlkICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkCisgICAgICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXIubV9yYXJlSW5oZXJp
dGVkRGF0YS0+d29yZEJyZWFrCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5v
dmVyZmxvd1dyYXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCisg
ICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+bGluZUJyZWFrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhawor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+aHlwaGVucyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBo
ZW5zCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0
QmVmb3JlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZv
cmUKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRB
ZnRlciAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIK
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisgICAgICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9zaXRpb24gIT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc01hcmsKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc1Bvc2l0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bv
c2l0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXND
dXN0b21NYXJrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3Rv
bU1hcmsKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlv
biAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24KKyAgICAgICAg
ICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemUgIT0gb3RoZXIubV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGFiU2l6ZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlu
ZUJveENvbnRhaW4gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJveENvbnRhaW4K
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkICE9IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRp
b24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbgorICAgICAg
ICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhlci5t
X3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1h
Z2VSZXNvbHV0aW9uU291cmNlCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9p
bWFnZVJlc29sdXRpb25TbmFwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVz
b2x1dGlvblNuYXAKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVz
b2x1dGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb24KKyAg
ICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZSAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICAg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNuYXAgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvbgogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lU25hcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFsaWduICE9
IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbgotICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJp
dGVkRGF0YS0+bGluZVNuYXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZVNuYXAK
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVBbGlnbiAhPSBvdGhlci5t
X3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVy
aXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRh
LT5oYW5naW5nUHVuY3R1YXRpb24KICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NS
T0xMSU5HKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZs
b3dTY3JvbGxpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dT
Y3JvbGxpbmcKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmcgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZwogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdl
KSAvLyBGSVhNRTogbmVlZHMgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSgpPworICAgICAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UpIC8vIEZJWE1FOiBuZWVkcyBhcmVQb2ludGluZ1Rv
RXF1YWxEYXRhKCk/CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodGV4
dFN0cm9rZVdpZHRoKCkgIT0gb3RoZXIudGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdodCAhPSBv
dGhlci5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0CisgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+bGlu
ZUhlaWdodCAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQKICNpZiBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQotICAgICAgICB8fCBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWln
aHQgIT0gb3RoZXIuaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5tX2luaGVyaXRlZERh
dGEtPnNwZWNpZmllZExpbmVIZWlnaHQKICNlbmRpZgotICAgICAgICB8fCBpbmhlcml0ZWQtPmZv
bnRDYXNjYWRlICE9IG90aGVyLmluaGVyaXRlZC0+Zm9udENhc2NhZGUKLSAgICAgICAgfHwgaW5o
ZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLmluaGVyaXRlZC0+aG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8fCBpbmhlcml0ZWQtPnZlcnRpY2FsX2Jv
cmRlcl9zcGFjaW5nICE9IG90aGVyLmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcK
LSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9y
dGxPcmRlcmluZyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZwotICAgICAg
ICB8fCBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKSAhPSBvdGhlci5ub25pbmhlcml0ZWRf
ZmxhZ3MucG9zaXRpb24oKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmco
KSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQotICAgICAgICB8fCBub25p
bmhlcml0ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2Zs
YWdzLm9yaWdpbmFsRGlzcGxheSgpKQorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPmZvbnRD
YXNjYWRlICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUKKyAgICAgICAgfHwg
bV9pbmhlcml0ZWREYXRhLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZyAhPSBvdGhlci5tX2luaGVy
aXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVk
RGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+dmVy
dGljYWxCb3JkZXJTcGFjaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0
aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ydGxP
cmRlcmluZworICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCkgIT0gb3Ro
ZXIubV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbigpCisgICAgICAgIHx8IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxvYXRpbmcoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5n
KCkKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkoKSAhPSBv
dGhlci5tX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogCi0gICAgaWYgKChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxh
eSgpKSA+PSBUQUJMRSkgewotICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29s
bGFwc2UgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UKLSAgICAgICAg
ICAgIHx8IGluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgIT0gb3RoZXIuaW5oZXJpdGVkX2Zs
YWdzLl9lbXB0eV9jZWxscwotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9u
X3NpZGUgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUKLSAgICAgICAgICAg
IHx8IG5vbmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91dCgpICE9IG90aGVyLm5vbmluaGVyaXRl
ZF9mbGFncy50YWJsZUxheW91dCgpKQorICAgIGlmICgobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZl
Y3RpdmVEaXNwbGF5KCkpID49IFRBQkxFKSB7CisgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdz
LmJvcmRlckNvbGxhcHNlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UK
KyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMKKyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Mu
Y2FwdGlvblNpZGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZQorICAgICAg
ICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy50YWJsZUxheW91dCgpICE9IG90aGVyLm1fbm9u
SW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgICAgIC8vIEluIHRoZSBjb2xsYXBzaW5nIGJvcmRlciBtb2RlbCwgJ2hpZGRlbicgc3Vw
cHJlc3NlcyBvdGhlciBib3JkZXJzLCB3aGlsZSAnbm9uZScKICAgICAgICAgLy8gZG9lcyBub3Qs
IHNvIHRoZXNlIHN0eWxlIGRpZmZlcmVuY2VzIGNhbiBiZSB3aWR0aCBkaWZmZXJlbmNlcy4KLSAg
ICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlCisgICAgICAgIGlmICht
X2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlCiAgICAgICAgICAgICAmJiAoKGJvcmRlclRv
cFN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09IEJOT05FKQog
ICAgICAgICAgICAgICAgIHx8IChib3JkZXJUb3BTdHlsZSgpID09IEJOT05FICYmIG90aGVyLmJv
cmRlclRvcFN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAgICAgICB8fCAoYm9yZGVyQm90
dG9tU3R5bGUoKSA9PSBCSElEREVOICYmIG90aGVyLmJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQk5P
TkUpCkBAIC02NzEsMzcgKzY4NywzNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5l
ZmZlY3RpdmVEaXNwbGF5KCkgPT0gTElTVF9JVEVNKSB7Ci0gICAgICAgIGlmIChpbmhlcml0ZWRf
ZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5
bGVfdHlwZQotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0
aW9uICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbikKKyAgICBp
ZiAobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkgPT0gTElTVF9JVEVNKSB7
CisgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgIT0gb3RoZXIubV9p
bmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlCisgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzLmxpc3RTdHlsZVBvc2l0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxl
UG9zaXRpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9h
bGlnbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0KLSAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl9kaXJlY3Rpb24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24KLSAgICAg
ICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxh
Z3MuX3doaXRlX3NwYWNlCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpICE9
IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpCi0gICAgICAgIHx8IG5vbmluaGVyaXRl
ZF9mbGFncy51bmljb2RlQmlkaSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy51bmljb2Rl
QmlkaSgpKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiAhPSBvdGhlci5tX2lu
aGVyaXRlZEZsYWdzLnRleHRBbGlnbgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHRU
cmFuc2Zvcm0gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtCisgICAgICAg
IHx8IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
ZGlyZWN0aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSAhPSBvdGhl
ci5tX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRG
bGFncy5jbGVhcigpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKQorICAgICAg
ICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCkgIT0gb3RoZXIubV9ub25Jbmhl
cml0ZWRGbGFncy51bmljb2RlQmlkaSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IENoZWNrIGJsb2NrIGZsb3cgZGlyZWN0aW9uLgotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MubV93
cml0aW5nTW9kZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSkKKyAgICBp
ZiAobV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdz
LndyaXRpbmdNb2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIHRleHQg
Y29tYmluZSBtb2RlLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmlu
ZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSkKKyAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dENvbWJpbmUgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dENvbWJpbmUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
Q2hlY2sgYnJlYWtzLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0JlZm9y
ZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0JlZm9yZQotICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2JyZWFrQWZ0ZXIKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYnJlYWtJbnNpZGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtJbnNp
ZGUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlCisgICAgICAgIHx8IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmJyZWFrQWZ0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YnJlYWtBZnRlcgorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0lu
c2lkZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0luc2lkZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBPdmVyZmxvdyByZXR1cm5zIGEgbGF5b3V0IGhpbnQu
Ci0gICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5ub25pbmhl
cml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm92
ZXJmbG93WSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKSkKKyAgICBp
ZiAobV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5tX25vbkluaGVyaXRl
ZEZsYWdzLm92ZXJmbG93WCgpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZs
b3dZKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiBvdXIgYm9yZGVyIHdpZHRocyBjaGFuZ2UsIHRoZW4g
d2UgbmVlZCB0byBsYXlvdXQuICBPdGhlciBjaGFuZ2VzIHRvIGJvcmRlcnMKQEAgLTcxMywxMyAr
NzI5LDEzIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gSWYgdGhlIGNvdW50ZXIgZGlyZWN0aXZlcyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxh
eW91dCB0byByZS1jYWxjdWxhdGUgY291bnRlciB2YWx1ZXMgYW5kIHJlYnVpbGQgdGhlIGNvdW50
ZXIgbm9kZSB0cmVlLgotICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcywgb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fY291bnRlckRpcmVjdGl2ZXMpKQorICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0
YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZlcywgb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGlmICgodmlzaWJpbGl0eSgpID09IENPTExBUFNFKSAhPSAob3RoZXIudmlzaWJp
bGl0eSgpID09IENPTExBUFNFKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+aGFzT3BhY2l0eSgpKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhh
c09wYWNpdHkoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkp
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlv
dXQgaGVyZSwgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAvLyBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJlY3RseSBv
biBSZW5kZXJJbmxpbmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgLy8gdG8gYWRkIGEgc2VsZk5l
ZWRzU2ltcGxpZmllZExheW91dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNlZCBhbmQg
dGFpbnQgZXZlcnkgbGluZSkuCkBAIC03MjgsMTkgKzc0NCwxOSBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVk
JiBjaGFuZwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
aGFzRmlsdGVycygpKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJz
KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5oYXNCYWNrZHJvcEZpbHRlcnMoKSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ryb3BGaWx0ZXJzKCkpCisgICAgaWYgKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmhhc0JhY2tkcm9wRmlsdGVycygpICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmhhc0JhY2tkcm9wRmlsdGVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogCi0gICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVJbmhlcml0ZWREYXRh
LT5xdW90ZXMsIG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMpKQorICAgIGlmICghYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMsIG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKHBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHN1cnJvdW5k
LT5vZmZzZXQgIT0gb3RoZXIuc3Vycm91bmQtPm9mZnNldCkgeworICAgICAgICBpZiAobV9zdXJy
b3VuZERhdGEtPm9mZnNldCAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0KSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byB1c2UgU2ltcGxpZmllZExheW91dCBm
b3IgcmVsYXRpdmUgcG9zaXRpb25pbmcsIGJ1dCB3ZSBjYW4ndCBxdWl0ZSBkbyB0aGF0IHlldC4K
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNpbXBsaWZpZWRMYXlvdXQgY2Fu
IG9wZXJhdGUgY29ycmVjdGx5IG9uIFJlbmRlcklubGluZXMgKHdlIHdpbGwgbmVlZAogICAgICAg
ICAgICAgLy8gdG8gYWRkIGEgc2VsZk5lZWRzU2ltcGxpZmllZExheW91dCBiaXQgaW4gb3JkZXIg
dG8gbm90IGdldCBjb25mdXNlZCBhbmQgdGFpbnQgZXZlcnkgbGluZSkuCkBAIC03NDgsNyArNzY0
LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVy
U3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICAgICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIGEgcG9zaXRp
b25lZCBsYXllciBpcyBtb3ZpbmcgYnV0IG5vdCBjaGFuZ2luZyBzaXplLgotICAgICAgICAgICAg
aWYgKCFwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVy
LnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgICAgIGlmICghcG9z
aXRpb25DaGFuZ2VJc01vdmVtZW50T25seShtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBvdGhlci5t
X3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBtX2JveERhdGEtPndpZHRoKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzc2LDkgKzc5Miw5IEBAIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCB1CiAgICAgaWYgKHBvc2l0aW9uKCkgPT0gU3RhdGljUG9zaXRp
b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9
IG90aGVyLnN1cnJvdW5kLT5vZmZzZXQpIHsKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPm9mZnNl
dCAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0KSB7CiAgICAgICAgIC8vIE9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5nIGJ1dCBub3Qg
Y2hhbmdpbmcgc2l6ZS4KLSAgICAgICAgaWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlv
biAmJiBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVy
LnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgaWYgKHBvc2l0aW9u
KCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KG1f
c3Vycm91bmREYXRhLT5vZmZzZXQsIG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZzZXQsIG1fYm94
RGF0YS0+d2lkdGgoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBA
IC03ODgsNDAgKzgwNCw0MCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1Bvc2l0
aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdQogYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
LCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewog
ICAgIC8vIFN0eWxlUmVzb2x2ZXIgaGFzIGVuc3VyZWQgdGhhdCB6SW5kZXggaXMgbm9uLWF1dG8g
b25seSBpZiBpdCdzIGFwcGxpY2FibGUuCi0gICAgaWYgKG1fYm94LT56SW5kZXgoKSAhPSBvdGhl
ci5tX2JveC0+ekluZGV4KCkgfHwgbV9ib3gtPmhhc0F1dG9aSW5kZXgoKSAhPSBvdGhlci5tX2Jv
eC0+aGFzQXV0b1pJbmRleCgpKQorICAgIGlmIChtX2JveERhdGEtPnpJbmRleCgpICE9IG90aGVy
Lm1fYm94RGF0YS0+ekluZGV4KCkgfHwgbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkgIT0gb3Ro
ZXIubV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgaWYgKHBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHZpc3Vh
bC0+Y2xpcCAhPSBvdGhlci52aXN1YWwtPmNsaXAgfHwgdmlzdWFsLT5oYXNDbGlwICE9IG90aGVy
LnZpc3VhbC0+aGFzQ2xpcCkgeworICAgICAgICBpZiAobV92aXN1YWxEYXRhLT5jbGlwICE9IG90
aGVyLm1fdmlzdWFsRGF0YS0+Y2xpcCB8fCBtX3Zpc3VhbERhdGEtPmhhc0NsaXAgIT0gb3RoZXIu
bV92aXN1YWxEYXRhLT5oYXNDbGlwKSB7CiAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xpcFJlY3Q7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAogI2lmIEVOQUJMRShDU1Nf
Q09NUE9TSVRJTkcpCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZUJs
ZW5kTW9kZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1v
ZGUpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fb3BhY2l0eSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFjaXR5KSB7Cisg
ICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+b3BhY2l0eSkgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5T3BhY2l0eTsKICAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0K
IAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZmlsdGVyKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIpIHsKICAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcg
Zm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIp
Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyKSB7CisgICAgaWYgKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyKSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXI7CiAgICAgICAg
IC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9
CiAjZW5kaWYKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbWFza0JveEltYWdlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2tCb3hJbWFnZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzayAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hc2tCb3hJbWFnZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXNrQm94SW1hZ2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtODI5LDI2ICs4NDUsMjYgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXll
clJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYKIAogYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
dW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKLSAg
ICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLmluaGVyaXRlZF9mbGFn
cy5fdmlzaWJpbGl0eQotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRq
dXN0ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QKLSAgICAgICAg
fHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5f
aW5zaWRlTGluawotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0
b24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uCi0gICAgICAg
IHx8IHN1cnJvdW5kLT5ib3JkZXIgIT0gb3RoZXIuc3Vycm91bmQtPmJvcmRlcgotICAgICAgICB8
fCAhbV9iYWNrZ3JvdW5kLT5pc0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIubV9iYWNrZ3Jv
dW5kKQotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0
YS0+dXNlclNlbGVjdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdAotICAg
ICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPnVzZXJEcmFnCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQKLSAg
ICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdAotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9vYmplY3RQb3NpdGlvbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9v
YmplY3RQb3NpdGlvbgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRl
cmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKKyAgICBp
ZiAobV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
dmlzaWJpbGl0eQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3Qg
IT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0CisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmluc2lk
ZUxpbmsKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uICE9
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbgorICAgICAgICB8fCBt
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5ib3JkZXIKKyAg
ICAgICAgfHwgIW1fYmFja2dyb3VuZERhdGEtPmlzRXF1aXZhbGVudEZvclBhaW50aW5nKCpvdGhl
ci5tX2JhY2tncm91bmREYXRhKQorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT51c2Vy
TW9kaWZ5ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkKKyAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhLT51c2VyU2VsZWN0CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVz
ZXJEcmFnICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCisgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZpdCAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ib3JkZXJGaXQKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+b2JqZWN0Rml0ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdAor
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlvbiAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlvbgorICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3NoYXBlT3V0c2lkZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
c2hhcGVPdXRzaWRlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lk
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJv
YmFibHkgYmUgbW92ZWQgdG8gY2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoKS4KLSAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fY2xpcFBhdGgpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xp
cFBhdGggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGgpIHsKICAgICAg
ICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eUNsaXBQYXRoOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQpAQCAtODU4LDE2ICs4NzQsMTYgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
dW5zaWduZWQmIGNoYW4KIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50
SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25l
ZCYpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXIuaW5oZXJpdGVk
LT5jb2xvcgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0g
b3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zCi0gICAgICAgIHx8IHZpc3Vh
bC0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIudmlzdWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAg
ICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUKLSAgICAgICAgfHwg
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Db2xvciAhPSBvdGhlci5yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU2tpcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXAKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
PnRleHRGaWxsQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IK
LSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvciAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCi0gICAgICAgIHx8IHJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c0ZpbGwgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwpCisgICAg
aWYgKG1faW5oZXJpdGVkRGF0YS0+Y29sb3IgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5jb2xv
cgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucworICAgICAgICB8fCBtX3Zpc3VhbERhdGEt
PnRleHREZWNvcmF0aW9uICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlCisgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICB8fCBt
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXAgIT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRGaWxsQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZp
bGxDb2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3Ig
IT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCisgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzRmlsbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7
CkBAIC04NzUsMTIgKzg5MSwxMiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1Jl
cGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZShjb25zdCBSZW5kZXJTdHlsZQogCiBib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyLCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7Ci0gICAgICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAgICAgIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9iYWNrZmFjZVZpc2liaWxpdHkKLSAgICAgICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3BlcnNwZWN0aXZlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9w
ZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3Bl
Y3RpdmVPcmlnaW5ZKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmJhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3Bl
Y3RpdmUKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZl
T3JpZ2luWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdp
blgKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3Jp
Z2luWSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTk0NCwxNjggKzk2MCwxNTAg
QEAgYm9vbCBSZW5kZXJTdHlsZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYm9vbCBpc0NvbXAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90
dG9tLCBMZW5ndGggbGVmdCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoJiYgdG9w
LCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQogewotICAg
IFN0eWxlVmlzdWFsRGF0YSogZGF0YSA9IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBkYXRhLT5jbGlw
LnRvcCgpID0gdG9wOwotICAgIGRhdGEtPmNsaXAucmlnaHQoKSA9IHJpZ2h0OwotICAgIGRhdGEt
PmNsaXAuYm90dG9tKCkgPSBib3R0b207Ci0gICAgZGF0YS0+Y2xpcC5sZWZ0KCkgPSBsZWZ0Owor
ICAgIGF1dG8mIGRhdGEgPSBtX3Zpc3VhbERhdGEuYWNjZXNzKCk7CisgICAgZGF0YS5jbGlwLnRv
cCgpID0gV1RGTW92ZSh0b3ApOworICAgIGRhdGEuY2xpcC5yaWdodCgpID0gV1RGTW92ZShyaWdo
dCk7CisgICAgZGF0YS5jbGlwLmJvdHRvbSgpID0gV1RGTW92ZShib3R0b20pOworICAgIGRhdGEu
Y2xpcC5sZWZ0KCkgPSBXVEZNb3ZlKGxlZnQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjphZGRD
dXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90
KQogewotICAgIGlmICghcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEpCi0g
ICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gQ3Vyc29yTGlz
dDo6Y3JlYXRlKCk7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEt
PmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7CisgICAgYXV0byYg
Y3Vyc29yRGF0YSA9IG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0YTsKKyAg
ICBpZiAoIWN1cnNvckRhdGEpCisgICAgICAgIGN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVh
dGUoKTsKKyAgICBjdXJzb3JEYXRhLT5hcHBlbmQoQ3Vyc29yRGF0YShXVEZNb3ZlKGltYWdlKSwg
aG90U3BvdCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KFJlZlB0cjxD
dXJzb3JMaXN0PiYmIGxpc3QpCiB7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1
cnNvckRhdGEgPSBXVEZNb3ZlKGxpc3QpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNz
KCkuY3Vyc29yRGF0YSA9IFdURk1vdmUobGlzdCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dFF1b3RlcyhSZWZQdHI8UXVvdGVzRGF0YT4mJiBxKQogewotICAgIGlmIChyYXJlSW5oZXJpdGVk
RGF0YS0+cXVvdGVzID09IHEgfHwgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgJiYgcSAmJiAq
cmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyA9PSAqcSkpCisgICAgaWYgKG1fcmFyZUluaGVyaXRl
ZERhdGEtPnF1b3RlcyA9PSBxIHx8IChtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgJiYgcSAm
JiAqbV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09ICpxKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPnF1b3RlcyA9IFdURk1vdmUocSk7Cisg
ICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5xdW90ZXMgPSBXVEZNb3ZlKHEpOwogfQog
CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRXaWxsQ2hhbmdlKFJlZlB0cjxXaWxsQ2hhbmdlRGF0YT4m
JiB3aWxsQ2hhbmdlRGF0YSkKIHsKLSAgICBpZiAoYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLmdldCgpLCB3aWxsQ2hhbmdlRGF0YS5nZXQo
KSkpCisgICAgaWYgKGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+d2lsbENoYW5nZS5nZXQoKSwgd2lsbENoYW5nZURhdGEuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV93aWxsQ2hhbmdlID0g
V1RGTW92ZSh3aWxsQ2hhbmdlRGF0YSk7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS53aWxsQ2hhbmdlID0gV1RGTW92ZSh3aWxsQ2hhbmdlRGF0YSk7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCgpCiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRh
LT5jdXJzb3JEYXRhKQotICAgICAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29y
RGF0YSA9IG51bGxwdHI7CisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEp
CisgICAgICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0YSA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ29udGVudCgpCiB7Ci0gICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2NvbnRlbnQgPSBudWxscHRyOworICAgIGlmIChtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5jb250ZW50KQorICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLmNvbnRlbnQgPSBudWxscHRyOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBlbmRDb250
ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudERhdGEpCitzdGF0aWMgaW5s
aW5lIENvbnRlbnREYXRhJiBsYXN0Q29udGVudChDb250ZW50RGF0YSYgZmlyc3RDb250ZW50KQog
ewotICAgIGF1dG8mIGNvbnRlbnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9j
b250ZW50OwotICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVudCA9IGNvbnRlbnQuZ2V0KCk7Ci0g
ICAgd2hpbGUgKGxhc3RDb250ZW50ICYmIGxhc3RDb250ZW50LT5uZXh0KCkpCi0gICAgICAgIGxh
c3RDb250ZW50ID0gbGFzdENvbnRlbnQtPm5leHQoKTsKKyAgICBhdXRvKiBsYXN0Q29udGVudCA9
ICZmaXJzdENvbnRlbnQ7CisgICAgZm9yIChhdXRvKiBjb250ZW50ID0gJmZpcnN0Q29udGVudDsg
Y29udGVudDsgY29udGVudCA9IGNvbnRlbnQtPm5leHQoKSkKKyAgICAgICAgbGFzdENvbnRlbnQg
PSBjb250ZW50OworICAgIHJldHVybiAqbGFzdENvbnRlbnQ7Cit9CiAKLSAgICBpZiAobGFzdENv
bnRlbnQpCi0gICAgICAgIGxhc3RDb250ZW50LT5zZXROZXh0KFdURk1vdmUoY29udGVudERhdGEp
KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRlbnQgPSBXVEZNb3ZlKGNvbnRlbnREYXRhKTsKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBj
b250ZW50RGF0YSwgYm9vbCBhZGQpCit7CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCk7CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQpCisgICAgICAg
IGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpLnNldE5leHQoV1RGTW92ZShjb250ZW50RGF0YSkp
OworICAgIGVsc2UgeworICAgICAgICBkYXRhLmNvbnRlbnQgPSBXVEZNb3ZlKGNvbnRlbnREYXRh
KTsKKyAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKKyAgICAgICAgaWYgKCFh
bHRUZXh0LmlzTnVsbCgpKQorICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFs
dFRleHQpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8
U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIGFwcGVuZENvbnRl
bnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVs
bCgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRh
PihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fYWx0VGV4dCk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPElt
YWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOwogfQogCiB2b2lk
IFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkK
IHsKLSAgICBhdXRvJiBjb250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Y29udGVudDsKLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVu
dCA9IGNvbnRlbnQuZ2V0KCk7Ci0gICAgICAgIHdoaWxlIChsYXN0Q29udGVudCAmJiBsYXN0Q29u
dGVudC0+bmV4dCgpKQotICAgICAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29udGVudC0+bmV4
dCgpOwotCi0gICAgICAgIGlmIChsYXN0Q29udGVudCkgewotICAgICAgICAgICAgLy8gV2UgYXR0
ZW1wdCB0byBtZXJnZSB3aXRoIHRoZSBsYXN0IENvbnRlbnREYXRhIGlmIHBvc3NpYmxlLgotICAg
ICAgICAgICAgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmxhc3RDb250ZW50KSkgewotICAgICAg
ICAgICAgICAgIFRleHRDb250ZW50RGF0YSYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29u
dGVudERhdGE+KCpsYXN0Q29udGVudCk7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0
VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgbGFzdENvbnRlbnQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29udGVudERhdGE+KHN0cmluZykpOwotCi0gICAgICAgICAgICBpZiAoIXJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgbGFz
dENvbnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0
VGV4dCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQpIHsKKyAg
ICAgICAgYXV0byYgbGFzdCA9IGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpOworICAgICAgICBp
ZiAoIWlzPFRleHRDb250ZW50RGF0YT4obGFzdCkpCisgICAgICAgICAgICBsYXN0LnNldE5leHQo
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnRE
YXRhPihsYXN0KTsKKyAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQu
dGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRhdGEu
Y29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAg
ICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OworICAgICAgICBpZiAoIWFsdFRleHQu
aXNOdWxsKCkpCisgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7
CiAgICAgfQotCi0gICAgY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRh
PihzdHJpbmcpOwotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0
VGV4dC5pc051bGwoKSkKLSAgICAgICAgY29udGVudC0+c2V0QWx0VGV4dChyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIsIGJvb2wgYWRk
KQogewogICAgIGlmICghY291bnRlcikKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGFkZCkg
ewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnRE
YXRhPihXVEZNb3ZlKGNvdW50ZXIpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpOworICAgIHNldENvbnRlbnQo
c3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpLCBh
ZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlwZSBxdW90ZSwg
Ym9vbCBhZGQpCiB7Ci0gICAgaWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6
bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKTsKKyAgICBzZXRDb250ZW50
KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOwogfQogCiB2
b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dChjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0ID0gc3RyaW5n
OwotICAgIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50
KQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50LT5zZXRB
bHRUZXh0KHN0cmluZyk7CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCk7CisgICAgZGF0YS5hbHRUZXh0ID0gc3RyaW5nOworICAgIGlmIChkYXRhLmNvbnRl
bnQpCisgICAgICAgIGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChzdHJpbmcpOwogfQogCiBjb25z
dCBTdHJpbmcmIFJlbmRlclN0eWxlOjpjb250ZW50QWx0VGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsdFRleHQ7CisgICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc0F0
dHJDb250ZW50KCkKIHsKICAgICBzZXRVbmlxdWUoKTsKLSAgICBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2hhc0F0dHJDb250ZW50LCB0cnVlKTsKKyAgICBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGhhc0F0dHJDb250ZW50LCB0cnVlKTsKIH0KIAotLy8gRklYTUU6IHVz
ZSBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkuCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVxdWly
ZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+
JiB0cmFuc2Zvcm1PcGVyYXRpb25zLCBSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zvcm1PcmlnaW4g
YXBwbHlPcmlnaW4pCiB7Ci0gICAgLy8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0cyB0aGUgdHJh
bnNmb3JtIHdpdGggdHJhbnNsYXRlIG9wZXJhdGlvbnMuCi0gICAgLy8gT3B0aW1pemUgZm9yIHRo
ZSBjYXNlIHdoZXJlIHRoZSBvbmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9uLCBzaW5jZSB0
aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50Ci0gICAgLy8gaW4gdGhhdCBjYXNlLgor
ICAgIC8vIFRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5IGJyYWNrZXRzIHRoZSB0cmFuc2Zv
cm0gd2l0aCB0cmFuc2xhdGUgb3BlcmF0aW9ucy4KKyAgICAvLyBXaGVuIHRoZSBvbmx5IHRyYW5z
Zm9ybSBpcyBhIHRyYW5zbGF0aW9uLCB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50
LgorCiAgICAgaWYgKGFwcGx5T3JpZ2luICE9IFJlbmRlclN0eWxlOjpJbmNsdWRlVHJhbnNmb3Jt
T3JpZ2luKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlv
biA6IHRyYW5zZm9ybU9wZXJhdGlvbnMpIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUg
IT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWAorICAgICAgICAvLyBGSVhNRTogVXNl
IGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKS4KKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0
aW9uLT50eXBlKCk7CisgICAgICAgIGlmICh0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFCisgICAgICAgICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFXzNECisgICAgICAgICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1gKICAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xB
VEVfWQotICAgICAgICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RSAKLSAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WgotICAgICAgICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8z
RCkKKyAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTExNCw3ICsxMTEyLDcg
QEAgc3RhdGljIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgVmVjdG9y
PFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24KIAogdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgQXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pIGNvbnN0CiB7Ci0g
ICAgYXV0byYgb3BlcmF0aW9ucyA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+
bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKKyAgICBhdXRvJiBvcGVyYXRpb25zID0gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKICAg
ICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihvcGVy
YXRpb25zLCBhcHBseU9yaWdpbik7CiAKICAgICBmbG9hdCBvZmZzZXRYID0gdHJhbnNmb3JtT3Jp
Z2luWCgpLmlzUGVyY2VudCgpID8gYm91bmRpbmdCb3gueCgpIDogMDsKQEAgLTExNTEsNzggKzEx
NDksOTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8
U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQKIHsKICAgICBBU1NFUlQoIXNoYWRvd0Rh
dGEgfHwgKCFzaGFkb3dEYXRhLT5zcHJlYWQoKSAmJiBzaGFkb3dEYXRhLT5zdHlsZSgpID09IE5v
cm1hbCkpOwogCi0gICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSogcmFyZURhdGEgPSByYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURhdGEtPnRleHRT
aGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgICAgICByYXJlRGF0YS50ZXh0U2hhZG93
ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNo
YWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShyYXJlRGF0YS0+dGV4dFNoYWRvdykpOwotICAgIHJh
cmVEYXRhLT50ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBzaGFkb3dEYXRh
LT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEudGV4dFNoYWRvdykpOworICAgIHJhcmVEYXRhLnRl
eHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEsIGJvb2wg
YWRkKQogewotICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEqIHJhcmVEYXRhID0gcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgYXV0byYgcmFyZURhdGEgPSBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpOwogICAgIGlmICghYWRkKSB7Ci0gICAgICAgIHJhcmVEYXRh
LT5tX2JveFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CisgICAgICAgIHJhcmVEYXRhLmJv
eFNoYWRvdyA9IFdURk1vdmUoc2hhZG93RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEtPm1fYm94U2hhZG93KSk7
Ci0gICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBz
aGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUocmFyZURhdGEuYm94U2hhZG93KSk7CisgICAgcmFy
ZURhdGEuYm94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKIH0KIAogc3RhdGljIFJvdW5k
ZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25z
dCBMYXlvdXRTaXplJiBzaXplKQogewotICAgIHJldHVybiBSb3VuZGVkUmVjdDo6UmFkaWkoCi0g
ICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExl
ZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVl
Rm9yTGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0gICAg
ICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSwgc2l6ZS5o
ZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0
b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKLSAgICAg
ICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRv
bVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSk7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLnRvcExlZnQoKSwgc2l6ZSksCisgICAgICAgIHNp
emVGb3JMZW5ndGhTaXplKGJvcmRlci50b3BSaWdodCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZv
ckxlbmd0aFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKSwgc2l6ZSksCisgICAgICAgIHNpemVGb3JM
ZW5ndGhTaXplKGJvcmRlci5ib3R0b21SaWdodCgpLCBzaXplKQorICAgIH07CiB9CiAKLVN0eWxl
SW1hZ2UqIFJlbmRlclN0eWxlOjpsaXN0U3R5bGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJ
bmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5nZXQoKTsgfQorU3R5bGVJbWFnZSogUmVuZGVy
U3R5bGU6Omxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+bGlzdFN0eWxlSW1hZ2UuZ2V0KCk7IH0KKwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGlzdFN0
eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikKIHsKLSAgICBpZiAocmFyZUluaGVyaXRl
ZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCi0gICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5saXN0U3R5bGVJbWFnZSA9IFdURk1vdmUodik7CisgICAgaWYgKG1fcmFyZUluaGVy
aXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCisgICAgICAgIG1fcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCkubGlzdFN0eWxlSW1hZ2UgPSBXVEZNb3ZlKHYpOwogfQogCiBjb25zdCBDb2xv
ciYgUmVuZGVyU3R5bGU6OmNvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkLT5j
b2xvcjsKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5jb2xvcjsKIH0KIAogY29uc3QgQ29s
b3ImIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEt
PnZpc2l0ZWRMaW5rQ29sb3I7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbG9yKGNvbnN0
IENvbG9yJiB2KQogewotICAgIFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdik7CisgICAgU0VU
X1ZBUihtX2luaGVyaXRlZERhdGEsIGNvbG9yLCB2KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYgdikKIHsKLSAgICBTRVRfVkFSKGluaGVy
aXRlZCwgdmlzaXRlZExpbmtDb2xvciwgdik7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEs
IHZpc2l0ZWRMaW5rQ29sb3IsIHYpOworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmhv
cml6b250YWxCb3JkZXJTcGFjaW5nOwogfQogCi1mbG9hdCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9y
ZGVyX3NwYWNpbmc7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRlclNwYWNpbmco
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOyB9Ci12
b2lkIFJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCB2KSB7IFNF
VF9WQVIoaW5oZXJpdGVkLCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nLCB2KTsgfQotdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpIHsgU0VUX1ZBUihp
bmhlcml0ZWQsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nLCB2KTsgfQorZmxvYXQgUmVuZGVyU3R5
bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJp
dGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpz
ZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAgIFNFVF9WQVIobV9pbmhl
cml0ZWREYXRhLCBob3Jpem9udGFsQm9yZGVyU3BhY2luZywgdik7Cit9CisKK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAgIFNFVF9WQVIo
bV9pbmhlcml0ZWREYXRhLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHYpOworfQogCiBSb3VuZGVk
UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBi
b3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpIGNvbnN0CiB7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3QoYm9yZGVy
UmVjdCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0
OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBib3JkZXJSZWN0
LnNpemUoKSk7CisgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZv
cihtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLCBib3JkZXJSZWN0LnNpemUoKSk7CiAgICAgICAgIHJh
ZGlpLnNjYWxlKGNhbGNCb3JkZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihib3JkZXJSZWN0LCBy
YWRpaSkpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpAQCAtMTIzMiw0MSArMTI0MywzMyBAQCBSb3VuZGVk
UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBi
b3JkZXJSZWN0LCBib29sCiBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVy
Qm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKICAgICBi
b29sIGhvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0gICAgTGF5b3V0
VW5pdCBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkg
PyBib3JkZXJMZWZ0V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCByaWdodFdpZHRoID0gKCFo
b3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0V2lkdGgo
KSA6IDA7Ci0gICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCBi
b3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJv
cmRlckJvdHRvbVdpZHRoKCkgOiAwOwotCisgICAgYXV0byBsZWZ0V2lkdGggPSAoIWhvcml6b250
YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgoKSA6IDA7Cisg
ICAgYXV0byByaWdodFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSA/IGJvcmRlclJpZ2h0V2lkdGgoKSA6IDA7CisgICAgYXV0byB0b3BXaWR0aCA9IChob3Jp
em9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgoKSA6IDA7
CisgICAgYXV0byBib3R0b21XaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkgOiAwOwogICAgIHJldHVybiBnZXRSb3VuZGVk
SW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lk
dGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKIH0KIAogUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJv
cmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBMYXlvdXRVbml0IHRvcFdpZHRo
LCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLAogICAgIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlv
dXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IGlubmVyUmVjdChi
b3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwgCi0gICAgICAgICAgICAgICBib3JkZXJSZWN0Lnko
KSArIHRvcFdpZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgoKSAtIGxlZnRX
aWR0aCAtIHJpZ2h0V2lkdGgsIAotICAgICAgICAgICAgICAgYm9yZGVyUmVjdC5oZWlnaHQoKSAt
IHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwotCi0gICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3Qo
aW5uZXJSZWN0KTsKLQorICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0IHsgeyBib3JkZXJSZWN0
LngoKSArIGxlZnRXaWR0aCwgYm9yZGVyUmVjdC55KCkgKyB0b3BXaWR0aCwKKyAgICAgICAgYm9y
ZGVyUmVjdC53aWR0aCgpIC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgYm9yZGVyUmVjdC5oZWln
aHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGggfSB9OwogICAgIGlmIChoYXNCb3JkZXJSYWRp
dXMoKSkgewotICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBnZXRSb3VuZGVkQm9y
ZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CisgICAgICAgIGF1dG8gcmFkaWkgPSBnZXRSb3Vu
ZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpLnJhZGlpKCk7CiAgICAgICAgIHJhZGlpLnNocmluayh0
b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7CiAgICAgICAgIHJv
dW5kZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJvdW5kZWRSZWN0OwogfQogCi1zdGF0aWMgYm9vbCBhbGxMYXll
cnNBcmVGaXhlZChjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgYWxsTGF5ZXJz
QXJlRml4ZWQoY29uc3QgRmlsbExheWVyJiBsYXllcnMpCiB7Ci0gICAgYm9vbCBhbGxGaXhlZCA9
IHRydWU7Ci0gICAgCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVy
OyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQotICAgICAgICBhbGxG
aXhlZCAmPSAoY3VyckxheWVyLT5pbWFnZSgpICYmIGN1cnJMYXllci0+YXR0YWNobWVudCgpID09
IEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotCi0gICAgcmV0dXJuIGxheWVyICYmIGFsbEZp
eGVkOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXll
ci0+bmV4dCgpKSB7CisgICAgICAgIGlmICghKGxheWVyLT5pbWFnZSgpICYmIGxheWVyLT5hdHRh
Y2htZW50KCkgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRlclN0eWxl
OjpoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpIGNvbnN0CkBAIC0xMjc2LDEyICsxMjc5LDEy
IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkgY29uc3QK
IAogY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogUmVuZGVyU3R5bGU6OmNvdW50ZXJEaXJlY3Rp
dmVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRl
ckRpcmVjdGl2ZXMuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNv
dW50ZXJEaXJlY3RpdmVzLmdldCgpOwogfQogCiBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJT
dHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewotICAgIGF1dG8mIG1hcCA9IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvdW50ZXJEaXJlY3RpdmVzOworICAgIGF1dG8m
IG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRp
cmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKQEAgLTEyOTgsNyArMTMwMSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSk7CiAKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nID0gcmFyZUluaGVyaXRlZERhdGEuZ2V0KCktPmh5cGhl
bmF0aW9uU3RyaW5nOworICAgIGF1dG8mIGh5cGhlbmF0aW9uU3RyaW5nID0gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7CiAgICAgaWYgKCFoeXBoZW5hdGlvblN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGh5cGhlbmF0aW9uU3RyaW5nOwogCkBAIC0xMzUwLDYg
KzEzNTMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNN
YXJrU3RyaW5nKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKwog
Y29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6OmluaXRpYWxE
YXNoYm9hcmRSZWdpb25zKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPj4gZW1wdHlMaXN0OwpAQCAtMTM2MCwzMCArMTM2NCwyMyBAQCBj
b25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hi
b2FyZFJlZ2lvbnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+PiBub25lTGlzdDsKICAgICBzdGF0aWMgYm9vbCBub25lTGlzdEluaXRp
YWxpemVkID0gZmFsc2U7Ci0KICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQpIHsKLSAgICAg
ICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24ubGFiZWwgPSBl
bXB0eVN0cmluZygpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0aCgpOwot
ICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9u
Lm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQo
KSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9u
OjpOb25lOwotICAgICAgICBub25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKKyAgICAgICAg
bm9uZUxpc3QuZ2V0KCkuYXBwZW5kKFN0eWxlRGFzaGJvYXJkUmVnaW9uIHsgZW1wdHlTdHJpbmco
KSwgeyB9LCBTdHlsZURhc2hib2FyZFJlZ2lvbjo6Tm9uZSB9KTsKICAgICAgICAgbm9uZUxpc3RJ
bml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKIH0KKwogI2Vu
ZGlmCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogewotICAgIEFuaW1h
dGlvbkxpc3QqIGFuaW1hdGlvbkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRp
b25zLmdldCgpOworICAgIGF1dG8qIGFuaW1hdGlvbkxpc3QgPSBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5hbmltYXRpb25zLmdldCgpOwogICAgIGlmICghYW5pbWF0aW9uTGlzdCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gR2V0IHJpZCBvZiBlbXB0eSBhbmltYXRpb25zIGFuZCBhbnl0aGlu
ZyBiZXlvbmQgdGhlbQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9uTGlzdC0+
c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGFuaW1hdGlvbkxp
c3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9uTGlzdC0+
YW5pbWF0aW9uKGkpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYW5pbWF0aW9uTGlzdC0+cmVz
aXplKGkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDAxLDEyICsxMzk4LDEyIEBAIHZvaWQg
UmVuZGVyU3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogCiB2b2lkIFJlbmRlclN0eWxlOjphZGp1
c3RUcmFuc2l0aW9ucygpCiB7Ci0gICAgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbkxpc3QgPSBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsKKyAgICBhdXRvKiB0cmFu
c2l0aW9uTGlzdCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOwog
ICAgIGlmICghdHJhbnNpdGlvbkxpc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdldCBy
aWQgb2YgZW1wdHkgdHJhbnNpdGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVtCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgaWYgKHRyYW5zaXRpb25MaXN0LT5hbmltYXRpb24oaSkuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICB0cmFuc2l0aW9uTGlzdC0+cmVzaXplKGkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNDIxLDEwICsxNDE4LDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVz
dFRyYW5zaXRpb25zKCkKICAgICAvLyBSZXBlYXQgcGF0dGVybnMgaW50byBsYXllcnMgdGhhdCBk
b24ndCBoYXZlIHNvbWUgcHJvcGVydGllcyBzZXQuCiAgICAgdHJhbnNpdGlvbkxpc3QtPmZpbGxV
bnNldFByb3BlcnRpZXMoKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGlj
YXRlIHByb3BlcnRpZXMuIFRoaXMgaXMgYW4gTyhuXjIpIGFsZ29yaXRobQotICAgIC8vIGJ1dCB0
aGUgbGlzdHMgdGVuZCB0byBiZSB2ZXJ5IHNob3J0LCBzbyBpdCBpcyBwcm9iYWJseSBvaworICAg
IC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgLy8g
VGhpcyBpcyBhbiBPKG5eMikgYWxnb3JpdGhtIGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBiZSBzaG9y
dCwgc28gaXQgaXMgcHJvYmFibHkgT0suCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFu
c2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IGkrMTsg
aiA8IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7ICsraikgeworICAgICAgICBmb3IgKHNpemVfdCBq
ID0gaSArIDE7IGogPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2opIHsKICAgICAgICAgICAg
IGlmICh0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLnByb3BlcnR5KCkgPT0gdHJhbnNpdGlv
bkxpc3QtPmFuaW1hdGlvbihqKS5wcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gdG9z
cyBpCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkxpc3QtPnJlbW92ZShpKTsKQEAgLTE0MzYs
NjIgKzE0MzMsMTA3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIAog
QW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMoKQogewotICAgIGlm
ICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucykKLSAgICAgICAg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FuaW1hdGlvbnM7CisgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmFuaW1hdGlvbnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5p
bWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICByZXR1cm4g
Km1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnM7CiB9CiAKIEFuaW1hdGlvbkxpc3Qm
IFJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucygpCiB7Ci0gICAgaWYgKCFyYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucykKLSAgICAgICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCk7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0
aW9uczsKKyAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlv
bnMpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgcmV0dXJuICptX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIAogY29uc3QgQW5pbWF0aW9uKiBSZW5k
ZXJTdHlsZTo6dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNv
bnN0CiB7Ci0gICAgaWYgKHRyYW5zaXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0cmFuc2l0aW9ucygpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3Qg
QW5pbWF0aW9uJiBwID0gdHJhbnNpdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwotICAgICAgICAgICAg
aWYgKHAuYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBwLnByb3Bl
cnR5KCkgPT0gcHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICBhdXRvKiB0cmFuc2l0aW9ucyA9IHRoaXMtPnRyYW5zaXRp
b25zKCk7CisgICAgaWYgKCF0cmFuc2l0aW9ucykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0cmFuc2l0aW9ucy0+c2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIGF1dG8mIGFuaW1hdGlvbiA9IHRyYW5zaXRpb25zLT5hbmltYXRp
b24oaSk7CisgICAgICAgIGlmIChhbmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlv
bjo6QW5pbWF0ZUFsbCB8fCBhbmltYXRpb24ucHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkKKyAgICAg
ICAgICAgIHJldHVybiAmYW5pbWF0aW9uOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgRm9udENhc2NhZGUmIFJlbmRlclN0eWxlOjpmb250Q2Fz
Y2FkZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGU7IH0KLWNvbnN0IEZv
bnRNZXRyaWNzJiBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBpbmhl
cml0ZWQtPmZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzKCk7IH0KLWNvbnN0IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIFJlbmRlclN0eWxlOjpmb250RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBp
bmhlcml0ZWQtPmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpOyB9Ci1mbG9hdCBSZW5kZXJT
dHlsZTo6c3BlY2lmaWVkRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24o
KS5zcGVjaWZpZWRTaXplKCk7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXpl
KCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IH0KLWlu
dCBSZW5kZXJTdHlsZTo6Zm9udFNpemUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRD
YXNjYWRlLnBpeGVsU2l6ZSgpOyB9Citjb25zdCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZv
bnRDYXNjYWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2Fz
Y2FkZTsKK30KIAotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcoKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7IH0KLWZsb2F0IFJlbmRl
clN0eWxlOjpsZXR0ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250Q2Fz
Y2FkZS5sZXR0ZXJTcGFjaW5nKCk7IH0KK2NvbnN0IEZvbnRNZXRyaWNzJiBSZW5kZXJTdHlsZTo6
Zm9udE1ldHJpY3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRD
YXNjYWRlLmZvbnRNZXRyaWNzKCk7Cit9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNj
cmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiB2KQorY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0g
ICAgaWYgKGluaGVyaXRlZC0+Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkgIT0gdikgewot
ICAgICAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRDYXNjYWRlID0gRm9udENhc2NhZGUodiwg
aW5oZXJpdGVkLT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCksIGluaGVyaXRlZC0+Zm9udENh
c2NhZGUud29yZFNwYWNpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9u
dERlc2NyaXB0aW9uKCk7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZpZWRGb250U2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUo
KTsKK30KKworZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKK30KKworaW50IFJl
bmRlclN0eWxlOjpmb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0
YS0+Zm9udENhc2NhZGUucGl4ZWxTaXplKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OndvcmRTcGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+d29yZFNwYWNpbmc7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5sZXR0ZXJT
cGFjaW5nKCk7CiB9CiAKK2Jvb2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNjcmlwdGlvbihjb25z
dCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAobV9pbmhl
cml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSA9PSBkZXNjcmlwdGlvbikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGNhc2NhZGUgPSBtX2luaGVyaXRlZERh
dGEuYWNjZXNzKCkuZm9udENhc2NhZGU7CisgICAgY2FzY2FkZSA9IHsgZGVzY3JpcHRpb24sIGNh
c2NhZGUubGV0dGVyU3BhY2luZygpLCBjYXNjYWRlLndvcmRTcGFjaW5nKCkgfTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhl
aWdodCgpIGNvbnN0Cit7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLWNvbnN0IExlbmd0
aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpbmhl
cml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQ7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNwZWNp
ZmllZExpbmVIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHNwZWNpZmllZExp
bmVIZWlnaHQsIHYpOyB9CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGlu
ZUhlaWdodDsKICNlbHNlCi1jb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5l
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsgfQorICAgIHJl
dHVybiBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7CiAjZW5kaWYKK30KIAotTGVuZ3RoIFJl
bmRlclN0eWxlOjpsaW5lSGVpZ2h0KCkgY29uc3QKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCYmIGhl
aWdodCkKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsKKyAgICBTRVRfVkFS
KG1faW5oZXJpdGVkRGF0YSwgc3BlY2lmaWVkTGluZUhlaWdodCwgV1RGTW92ZShoZWlnaHQpKTsK
K30KKworI2VuZGlmCisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7Cit9CisKK3Zv
aWQgUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQoreworICAgIFNF
VF9WQVIobV9pbmhlcml0ZWREYXRhLCBsaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkpOwogfQot
dm9pZCBSZW5kZXJTdHlsZTo6c2V0TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdo
dCkgeyBTRVRfVkFSKGluaGVyaXRlZCwgbGluZV9oZWlnaHQsIHNwZWNpZmllZExpbmVIZWlnaHQp
OyB9CiAKIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29uc3QKIHsKQEAg
LTE1MDcsNyArMTU0OSw3IEBAIGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkg
Y29uc3QKICAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KGxoLnZhbHVlKCkpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5ndGggdmFsdWUpCit2b2lkIFJlbmRlclN0eWxl
OjpzZXRXb3JkU3BhY2luZyhMZW5ndGgmJiB2YWx1ZSkKIHsKICAgICBmbG9hdCBmb250V29yZFNw
YWNpbmc7CiAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKQEAgLTE1MjgsMTEgKzE1NzAsMTEg
QEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcoTGVuZ3RoIHZhbHVlKQogICAgICAg
ICBmb250V29yZFNwYWNpbmcgPSAwOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaW5oZXJp
dGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZS5zZXRXb3JkU3BhY2luZyhmb250V29yZFNwYWNpbmcp
OwotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT53b3JkU3BhY2luZyA9IFdURk1vdmUo
dmFsdWUpOworICAgIG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2FkZS5zZXRXb3Jk
U3BhY2luZyhmb250V29yZFNwYWNpbmcpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNz
KCkud29yZFNwYWNpbmcgPSBXVEZNb3ZlKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6
c2V0TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IGluaGVyaXRlZC5hY2Nlc3MoKS0+Zm9udENhc2Nh
ZGUuc2V0TGV0dGVyU3BhY2luZyh2KTsgfQordm9pZCBSZW5kZXJTdHlsZTo6c2V0TGV0dGVyU3Bh
Y2luZyhmbG9hdCB2KSB7IG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2FkZS5zZXRM
ZXR0ZXJTcGFjaW5nKHYpOyB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRTaXplKGZsb2F0
IHNpemUpCiB7CkBAIC0xNTY2LDcgKzE2MDgsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250
VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZhcmlhdGlvblNldHRpbmdzIHNldHRpbmdzKQogfQogI2Vu
ZGlmCiAKLXZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIExheW91dFVuaXQgJnRvcCwgTGF5b3V0VW5pdCAmcmlnaHQsIExheW91dFVuaXQg
JmJvdHRvbSwgTGF5b3V0VW5pdCAmbGVmdCkgY29uc3QKK3ZvaWQgUmVuZGVyU3R5bGU6OmdldFNo
YWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIHRvcCwgTGF5
b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29u
c3QKIHsKICAgICB0b3AgPSAwOwogICAgIHJpZ2h0ID0gMDsKQEAgLTE4MTAsNTMgKzE4NTIsNTMg
QEAgZmxvYXQgUmVuZGVyU3R5bGU6OmJvcmRlckVuZFdpZHRoKCkgY29uc3QKICAgICByZXR1cm4g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6IGJvcmRlclRv
cFdpZHRoKCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpblN0YXJ0KExlbmd0aCBt
YXJnaW4pCit2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5TdGFydChMZW5ndGgmJiBtYXJnaW4p
CiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpbkxlZnQobWFyZ2lu
KTsKKyAgICAgICAgICAgIHNldE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKKyAgICAgICAgICAgIHNl
dE1hcmdpblJpZ2h0KFdURk1vdmUobWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblRvcChtYXJn
aW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAg
c2V0TWFyZ2luQm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgfQogfQogCi12b2lkIFJlbmRl
clN0eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dE1hcmdpbkVuZChMZW5ndGgmJiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAg
ICAgICAgIHNldE1hcmdpblJpZ2h0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5SaWdo
dChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRNYXJnaW5M
ZWZ0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5MZWZ0KFdURk1vdmUobWFyZ2luKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAg
ICAgICAgICAgIHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2lu
Qm90dG9tKFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1h
cmdpblRvcChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2lu
KSk7CiAgICAgfQogfQogCiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFz
aXNNYXJrKCkgY29uc3QKIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrIG1hcmsgPSBzdGF0aWNfY2Fz
dDxUZXh0RW1waGFzaXNNYXJrPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayk7
CisgICAgYXV0byBtYXJrID0gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzTWFyaz4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayk7CiAgICAgaWYgKG1hcmsgIT0gVGV4dEVtcGhh
c2lzTWFya0F1dG8pCiAgICAgICAgIHJldHVybiBtYXJrOwotCiAgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrRG90OwotCiAg
ICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorCiBDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkK
IHsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7CiB9CisKICNl
bmRpZgogCiBMYXlvdXRCb3hFeHRlbnQgUmVuZGVyU3R5bGU6OmltYWdlT3V0c2V0cyhjb25zdCBO
aW5lUGllY2VJbWFnZSYgaW1hZ2UpIGNvbnN0CkBAIC0xODg5LDMwICsxOTMxLDMwIEBAIHN0ZDo6
cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IFJlbmRlclN0eWxl
Ojpmb250QW5kR2x5cGhPcmllCiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU291
cmNlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9y
ZGVyLm1faW1hZ2UuaW1hZ2UoKSA9PSBpbWFnZS5nZXQoKSkKKyAgICBpZiAobV9zdXJyb3VuZERh
dGEtPmJvcmRlci5tX2ltYWdlLmltYWdlKCkgPT0gaW1hZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2UoV1RGTW92
ZShpbWFnZSkpOworICAgIG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNl
dEltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
SW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckltYWdlU2xpY2VzKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJv
cmRlci5tX2ltYWdlLmltYWdlU2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmIChtX3N1cnJvdW5k
RGF0YS0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2VTbGljZXMoKSA9PSBzbGljZXMpCiAgICAgICAgIHJl
dHVybjsKLSAgICBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2VTbGlj
ZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFnZS5z
ZXRJbWFnZVNsaWNlcyhXVEZNb3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCBzbGljZXMpCit2b2lkIFJlbmRlclN0eWxlOjpz
ZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vycm91
bmQtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKKyAgICBpZiAobV9z
dXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKICAg
ICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRC
b3JkZXJTbGljZXMoc2xpY2VzKTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIu
bV9pbWFnZS5zZXRCb3JkZXJTbGljZXMoV1RGTW92ZShzbGljZXMpKTsKIH0KIAotdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkKK3ZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJvcmRlckltYWdlT3V0c2V0KExlbmd0aEJveCYmIG91dHNldCkKIHsKLSAg
ICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNldCkKKyAgICBp
ZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNldCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRP
dXRzZXQob3V0c2V0KTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFn
ZS5zZXRPdXRzZXQoV1RGTW92ZShvdXRzZXQpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmIHBh
Z2luYXRpb25Nb2RlKQpAQCAtMTk1OCw2ICsyMDAwLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmIHBh
Z2kKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisKIFNjcm9sbFNuYXBUeXBlIFJl
bmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKQogewogICAgIHJldHVybiB7IH07CkBA
IC0xOTcwLDIyICsyMDEzLDIyIEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlh
bFNjcm9sbFNuYXBBbGlnbigpCiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIFJlbmRlclN0
eWxlOjpzY3JvbGxTbmFwQXJlYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJlYTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnNjcm9sbFNuYXBBcmVhOwogfQogCiBjb25zdCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBS
ZW5kZXJTdHlsZTo6c2Nyb2xsU25hcFBvcnQoKSBjb25zdAogewotICAgIHJldHVybiAqcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcFBvcnQ7CisgICAgcmV0dXJuICptX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydDsKIH0KIAogY29uc3QgU2Nyb2xsU25hcFR5cGUm
IFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT50eXBlOworICAgIHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+dHlwZTsKIH0KIAogY29uc3QgTGVu
Z3RoQm94JiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBQb3J0LT5zY3JvbGxQYWRkaW5nOwor
ICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+c2Nyb2xs
UGFkZGluZzsKIH0KIAogY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZ1Rv
cCgpIGNvbnN0CkBAIC0yMDEwLDEyICsyMDUzLDEyIEBAIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbFBhZGRpbmdSaWdodCgpIGNvbnN0CiAKIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYg
UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBbGlnbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7CisgICAgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7CiB9CiAK
IGNvbnN0IExlbmd0aEJveCYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW4oKSBjb25zdAog
ewotICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJlYS0+c2Ny
b2xsU25hcE1hcmdpbjsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xs
U25hcEFyZWEtPnNjcm9sbFNuYXBNYXJnaW47CiB9CiAKIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5
bGU6OnNjcm9sbFNuYXBNYXJnaW5Ub3AoKSBjb25zdApAQCAtMjA0MCw3OSArMjA4Myw3NCBAQCBj
b25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwTWFyZ2luUmlnaHQoKSBjb25zdAog
CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlw
ZSYgdHlwZSkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxT
bmFwUG9ydC5hY2Nlc3MoKS0+dHlwZSA9IHR5cGU7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHR5cGUsIHR5cGUpOwogfQogCi12b2lk
IFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
dm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJiBsZW5ndGgpCiB7
Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNj
ZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0VG9wKGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcudG9w
KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBh
ZGRpbmdCb3R0b20oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGlu
Zy5zZXRCb3R0b20obGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy5ib3R0b20oKSwgV1RGTW92ZShs
ZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0xlZnQoY29u
c3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nTGVm
dChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0TGVmdChsZW5ndGgp
OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQ
b3J0LCBzY3JvbGxQYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
dm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkK
IHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5h
Y2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRSaWdodChsZW5ndGgpOworICAgIFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5n
LnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsKLSAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+
YWxpZ25tZW50ID0gYWxpZ25tZW50OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBhbGlnbm1lbnQsIGFsaWdubWVudCk7CiB9CiAKLXZv
aWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVuZ3RoJiBsZW5n
dGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKExlbmd0aCYmIGxl
bmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFw
QXJlYS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRUb3AobGVuZ3RoKTsKKyAgICBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xs
U25hcE1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHls
ZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQg
UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKQog
ewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFj
Y2VzcygpLT5zY3JvbGxTbmFwTWFyZ2luLnNldEJvdHRvbShsZW5ndGgpOworICAgIFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFw
TWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVu
ZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5MZWZ0KExlbmd0aCYmIGxlbmd0aCkKIHsKLSAg
ICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3Mo
KS0+c2Nyb2xsU25hcE1hcmdpbi5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4u
bGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3Jv
bGxTbmFwTWFyZ2luUmlnaHQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3Jv
bGxTbmFwTWFyZ2luLnNldFJpZ2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4ucmlnaHQo
KSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhh
c1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdAogewogICAgIGlmICghaGFzRmlsdGVyKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
ck9wZXJhdGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1fb3BlcmF0aW9u
czsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24gPSAq
ZmlsdGVyT3BlcmF0aW9ucy5hdCgwKTsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAh
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgZmlsdGVyT3BlcmF0aW9ucyA9IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmZpbHRlci0+b3BlcmF0aW9uczsKKyAgICByZXR1cm4gZmlsdGVyT3BlcmF0
aW9ucy5zaXplKCkgPT0gMSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkgPT0gRmls
dGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFy
aWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKIHsKLSAgICBpZiAoIXJhcmVJbmhlcml0ZWREYXRh
LT5tX2N1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzKCkpCisgICAgaWYgKCFtX3Jh
cmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcykKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byYgY3VzdG9tUHJvcGVydHlEYXRhID0gbV9y
YXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpOworCiAg
ICAgLy8gT3VyIGZpcnN0IHBhc3MgY2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5IGFu
ZCByZXBsYWNlcyBhbnkgcHJvcGVydGllcyB0aGF0IGJlY2FtZQogICAgIC8vIGludmFsaWQgd2l0
aCBlbXB0eSB2YWx1ZXMuCi0gICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnZhbHVlcygpOwor
ICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBjdXN0b21Qcm9wZXJ0eURhdGEudmFsdWVzOwog
ICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsKICAgICBmb3IgKGF1
dG8gZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmICghZW50cnkudmFsdWUt
PmNvbnRhaW5zVmFyaWFibGVzKCkpCkBAIC0yMTQyLDI1ICsyMTgwLDI1IEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKICAgICBmb3IgKGF1dG8m
IHJlc29sdmVkVmFsdWUgOiByZXNvbHZlZFZhbHVlcykKICAgICAgICAgY3VzdG9tUHJvcGVydGll
cy5zZXQocmVzb2x2ZWRWYWx1ZS0+bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlSZWYoKSk7CiAK
LSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2Vz
cygpLT5zZXRDb250YWluc1ZhcmlhYmxlcyhmYWxzZSk7CisgICAgY3VzdG9tUHJvcGVydHlEYXRh
LmNvbnRhaW5zVmFyaWFibGVzID0gZmFsc2U7CiB9CiAKIGZsb2F0IFJlbmRlclN0eWxlOjpvdXRs
aW5lV2lkdGgoKSBjb25zdAogewotICAgIGlmIChtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHls
ZSgpID09IEJOT05FKQorICAgIGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkg
PT0gQk5PTkUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChvdXRsaW5lU3R5bGVJc0F1dG8o
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLndpZHRo
KCksIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCkpOwotICAgIHJldHVybiBt
X2JhY2tncm91bmQtPm91dGxpbmUoKS53aWR0aCgpOworICAgICAgICByZXR1cm4gc3RkOjptYXgo
bV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS53aWR0aCgpLCBSZW5kZXJUaGVtZTo6cGxhdGZvcm1G
b2N1c1JpbmdXaWR0aCgpKTsKKyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS53
aWR0aCgpOwogfQogCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGluZU9mZnNldCgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5PTkUpCisgICAg
aWYgKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgaWYgKG91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICByZXR1cm4g
KG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLm9mZnNldCgpICsgUmVuZGVyVGhlbWU6OnBsYXRmb3Jt
Rm9jdXNSaW5nT2Zmc2V0KG91dGxpbmVXaWR0aCgpKSk7Ci0gICAgcmV0dXJuIG1fYmFja2dyb3Vu
ZC0+b3V0bGluZSgpLm9mZnNldCgpOworICAgICAgICByZXR1cm4gKG1fYmFja2dyb3VuZERhdGEt
Pm91dGxpbmUub2Zmc2V0KCkgKyBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdPZmZzZXQo
b3V0bGluZVdpZHRoKCkpKTsKKyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5v
ZmZzZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlv
blNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CkBAIC0yMTY4LDQgKzIyMDYsMTUgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0
CiAgICAgcmV0dXJuICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsKIH0KIAorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKwordm9pZCBS
ZW5kZXJTdHlsZTo6c2V0RGFzaGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0
aCYmIGxlZnQsIGJvb2wgYXBwZW5kKQoreworICAgIGlmICghYXBwZW5kKQorICAgICAgICBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmRhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKKyAg
ICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmRhc2hib2FyZFJlZ2lvbnMuYXBwZW5k
KHsgbGFiZWwsIHsgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20p
LCBXVEZNb3ZlKGxlZnQpIH0sIHR5cGUgfSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CmluZGV4IGMyOGFmMWFlMDQ2MGYyZjNjNzI4YTg2MGU5ZjkwMjlmNjRhYzAwNmQuLjk5YzE1NDdi
MzgyNGYzZmFhNTQ1ZTYwZWEzMWZmMjc0NGQ4MWFiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtODIsMTkgKzgyLDIwIEBACiAjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCiAj
ZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29t
cGFyZUVxdWFsKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIHsgcmV0dXJuIHQgPT0gc3RhdGljX2Nh
c3Q8Y29uc3QgVCY+KHUpOyB9Ci0KLSNkZWZpbmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZh
bHVlKSBcCi0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwK
LSAgICAgICAgZ3JvdXAuYWNjZXNzKCktPnZhcmlhYmxlID0gdmFsdWUKKyNkZWZpbmUgU0VUX1ZB
Uihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwKKyAgICAgICAgaWYgKCFjb21wYXJlRXF1
YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKKyAgICAgICAgICAgIGdyb3VwLmFjY2Vzcygp
LnZhcmlhYmxlID0gdmFsdWU7IFwKKyAgICB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFNFVF9ORVNU
RURfVkFSKGdyb3VwLCBwYXJlbnRWYXJpYWJsZSwgdmFyaWFibGUsIHZhbHVlKSBcCi0gICAgaWYg
KCFjb21wYXJlRXF1YWwoZ3JvdXAtPnBhcmVudFZhcmlhYmxlLT52YXJpYWJsZSwgdmFsdWUpKSBc
Ci0gICAgICAgIGdyb3VwLmFjY2VzcygpLT5wYXJlbnRWYXJpYWJsZS5hY2Nlc3MoKS0+dmFyaWFi
bGUgPSB2YWx1ZQorI2RlZmluZSBTRVRfTkVTVEVEX1ZBUihncm91cCwgcGFyZW50VmFyaWFibGUs
IHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCisgICAgICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3Vw
LT5wYXJlbnRWYXJpYWJsZS0+dmFyaWFibGUsIHZhbHVlKSkgXAorICAgICAgICAgICAgZ3JvdXAu
YWNjZXNzKCkucGFyZW50VmFyaWFibGUuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1ZTsgXAorICAg
IH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdyb3VwLCB2YXJp
YWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUuY29s
b3IoKSwgdmFsdWUpKSBcCi0gICAgICAgIGdyb3VwLmFjY2VzcygpLT52YXJpYWJsZS5zZXRDb2xv
cih2YWx1ZSkKKyNkZWZpbmUgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdyb3VwLCB2YXJpYWJsZSwg
dmFsdWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUu
Y29sb3IoKSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52YXJpYWJsZS5z
ZXRDb2xvcih2YWx1ZSk7IFwKKyAgICB9IHdoaWxlICgwKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTExMSwzODYgKzExMiwzNSBAQCBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVJ
bWFnZTsKIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7Citj
bGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOworY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
LWNsYXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7Ci1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOwot
c3RydWN0IFNjcm9sbFNuYXBUeXBlOwogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKLSNlbmRpZgor
c3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCA0PiBQc2V1ZG9TdHlsZUNhY2hlOwordXNpbmcgUHNldWRvU3R5bGVDYWNo
ZSA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCA0PjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29tcGFyZUVxdWFsKGNvbnN0IFQm
IHQsIGNvbnN0IFUmIHUpIHsgcmV0dXJuIHQgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KHUpOyB9
CiAKIGNsYXNzIFJlbmRlclN0eWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAKLSAgICBmcmllbmQgY2xhc3MgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOyAvLyBV
c2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFz
ZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgotICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0eWxlQ29tbWFu
ZDsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCi0gICAgZnJp
ZW5kIGNsYXNzIEVkaXRpbmdTdHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52
aXNpdGVkIGluZm8uCi0gICAgZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I7IC8v
IElnbm9yZXMgdmlzaXRlZCBzdHlsZXMsIHNvIG5lZWRzIHRvIGJlIGFibGUgdG8gc2VlIHVudmlz
aXRlZCBpbmZvLgotICAgIGZyaWVuZCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRD
b2xvcjsgLy8gVXNlZCBieSBDU1MgYW5pbWF0aW9ucy4gV2UgY2FuJ3QgYWxsb3cgdGhlbSB0byBh
bmltYXRlIGJhc2VkIG9mZiB2aXNpdGVkIGNvbG9ycy4KLSAgICBmcmllbmQgY2xhc3MgUmVuZGVy
U1ZHUmVzb3VyY2U7IC8vIEZJWE1FOiBOZWVkcyB0byBhbHRlciB0aGUgdmlzaXRlZCBzdGF0ZSBi
eSBoYW5kLiBTaG91bGQgY2xlYW4gdGhlIFNWRyBjb2RlIHVwIGFuZCBtb3ZlIGl0IGludG8gUmVu
ZGVyU3R5bGUgcGVyaGFwcy4KLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVHJlZUFzVGV4dDsgLy8g
RklYTUU6IE9ubHkgbmVlZGVkIHNvIHRoZSByZW5kZXIgdHJlZSBjYW4ga2VlcCBseWluZyBhbmQg
ZHVtcCB0aGUgd3JvbmcgY29sb3JzLiAgUmViYXNlbGluaW5nIHdvdWxkIGFsbG93IHRoaXMgdG8g
YmUgeWFua2VkLgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI7IC8vIFNl
dHMgbWVtYmVycyBkaXJlY3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9t
OyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRl
ckZ1bmN0aW9uczsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgotICAgIGZyaWVuZCBjbGFzcyBT
dHlsZVJlc29sdmVyOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCi0KLXB1YmxpYzoKLSAgICBz
dHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBOb25Jbmhlcml0ZWRGbGFncygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBzaG91bGQgYWxsIGJl
IHplcm8uCi0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1goKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWlu
aXRpYWxDbGVhcigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbERpc3BsYXkoKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxVbmljb2RlQmlkaSgpKTsKLSAgICAgICAgICAgIEFT
U0VSVCghaW5pdGlhbFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsVmVy
dGljYWxBbGlnbigpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0aW5nKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsVGFibGVMYXlvdXQoKSk7Ci0KLSAgICAgICAgICAg
IG1fZmxhZ3MgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFnczsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICAgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVk
RnJvbShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIE9ubHkgYSBzdWJzZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJpdGVkRmxhZ3Mg
Y29udGFpbnMgYSBidW5jaCBvZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KLSAg
ICAgICAgICAgIHVpbnQ2NF90IG5vbkluaGVyaXRlZE1hc2sgPSBvdmVyZmxvd01hc2sgPDwgb3Zl
cmZsb3dYT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dZ
T2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBjbGVhck1hc2sgPDwgY2xlYXJPZmZzZXQKLSAgICAg
ICAgICAgICAgICB8IGRpc3BsYXlNYXNrIDw8IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQKLSAgICAg
ICAgICAgICAgICB8IHBvc2l0aW9uTWFzayA8PCBwb3NpdGlvbk9mZnNldAotICAgICAgICAgICAg
ICAgIHwgZGlzcGxheU1hc2sgPDwgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0Ci0gICAgICAgICAgICAg
ICAgfCB1bmljb2RlQmlkaU1hc2sgPDwgdW5pY29kZUJpZGlPZmZzZXQKLSAgICAgICAgICAgICAg
ICB8IHZlcnRpY2FsQWxpZ25NYXNrIDw8IHZlcnRpY2FsQWxpZ25PZmZzZXQKLSAgICAgICAgICAg
ICAgICB8IGZsb2F0aW5nTWFzayA8PCBmbG9hdGluZ09mZnNldAotICAgICAgICAgICAgICAgIHwg
b25lQml0TWFzayA8PCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0Ci0gICAgICAgICAgICAgICAg
fCB0YWJsZUxheW91dEJpdE1hc2sgPDwgdGFibGVMYXlvdXRPZmZzZXQKLSAgICAgICAgICAgICAg
ICB8IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7Ci0K
LSAgICAgICAgICAgIG1fZmxhZ3MgPSAobV9mbGFncyAmIH5ub25Jbmhlcml0ZWRNYXNrKSB8IChv
dGhlci5tX2ZsYWdzICYgbm9uSW5oZXJpdGVkTWFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBF
T3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93
PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCkpOyB9Ci0gICAgICAgIHZv
aWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyBvdmVyZmxvd1gpIHsgdXBkYXRlVmFsdWUob3ZlcmZs
b3dYLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNldCk7IH0KLQotICAgICAgICBFT3ZlcmZs
b3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRW
YWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0
T3ZlcmZsb3dZKEVPdmVyZmxvdyBvdmVyZmxvd1kpIHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dZLCBv
dmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCk7IH0KLQotICAgICAgICBFQ2xlYXIgY2xlYXIo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2xlYXI+KGdldFZhbHVlKGNsZWFyTWFzaywg
Y2xlYXJPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldENsZWFyKEVDbGVhciBjbGVhcikgeyB1
cGRhdGVWYWx1ZShjbGVhciwgY2xlYXJNYXNrLCBjbGVhck9mZnNldCk7IH0KLQotICAgICAgICBF
RGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURp
c3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0KSk7IH0K
LSAgICAgICAgdm9pZCBzZXRFZmZlY3RpdmVEaXNwbGF5KEVEaXNwbGF5IGVmZmVjdGl2ZURpc3Bs
YXkpIHsgdXBkYXRlVmFsdWUoZWZmZWN0aXZlRGlzcGxheSwgZGlzcGxheU1hc2ssIGVmZmVjdGl2
ZURpc3BsYXlPZmZzZXQpOyB9Ci0KLSAgICAgICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihnZXRWYWx1ZShwb3NpdGlvbk1hc2ssIHBv
c2l0aW9uT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gcG9z
aXRpb24pIHsgdXBkYXRlVmFsdWUocG9zaXRpb24sIHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZz
ZXQpOyB9Ci0KLSAgICAgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBvcmlnaW5hbERp
c3BsYXlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxh
eSBvcmlnaW5hbERpc3BsYXkpIHsgdXBkYXRlVmFsdWUob3JpZ2luYWxEaXNwbGF5LCBkaXNwbGF5
TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KTsgfQotCi0gICAgICAgIEVVbmljb2RlQmlkaSB1
bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVbmljb2RlQmlkaT4oZ2V0
VmFsdWUodW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCkpOyB9Ci0gICAgICAgIHZv
aWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKSB7IHVwZGF0ZVZhbHVl
KHVuaWNvZGVCaWRpLCB1bmljb2RlQmlkaU1hc2ssIHVuaWNvZGVCaWRpT2Zmc2V0KTsgfQotCi0g
ICAgICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
aGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVu
aXRzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzVmlld3BvcnRVbml0c09m
ZnNldCk7IH0KLQotICAgICAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxpZ24+KGdldFZhbHVlKHZlcnRpY2FsQWxp
Z25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRWZXJ0aWNh
bEFsaWduKEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24pIHsgdXBkYXRlVmFsdWUodmVydGlj
YWxBbGlnbiwgdmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQpOyB9Ci0KLSAg
ICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIGdldEJvb2xlYW4oZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KLSAgICAgICAgdm9p
ZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyhib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9Ci0KLSAgICAgICAg
Ym9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gZmxvYXRpbmcoKSAhPSBOb0Zsb2F0OyB9
Ci0gICAgICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVG
bG9hdD4oZ2V0VmFsdWUoZmxvYXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCkpOyB9Ci0gICAgICAg
IHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IGZsb2F0aW5nKSB7IHVwZGF0ZVZhbHVlKGZsb2F0aW5n
LCBmbG9hdGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaGFzQW55
UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gUFVCTElDX1BTRVVET0lEX01BU0sg
JiBnZXRWYWx1ZShwc2V1ZG9CaXRzTWFzaywgcHNldWRvQml0c09mZnNldCk7IH0KLSAgICAgICAg
Ym9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgICAgICAgICBBU1NFUlQo
cHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOwotICAgICAgICAgICAgcmV0dXJuIChv
bmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYgbV9mbGFnczsK
LSAgICAgICAgfQotICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVk
bykKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKLSAg
ICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAg
ICAgICAgICBtX2ZsYWdzIHw9IG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsg
cHNldWRvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1
ZG9JZFNldCBwc2V1ZG9JZFNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBzZXVk
b0lkU2V0KTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0gcHNldWRvSWRT
ZXQuZGF0YSgpOwotICAgICAgICAgICAgQVNTRVJUKChyYXdQc2V1ZG9JZFNldCAmIFBVQkxJQ19Q
U0VVRE9JRF9NQVNLKSA9PSByYXdQc2V1ZG9JZFNldCk7Ci0gICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHBzZXVkb0JpdHNPZmZzZXQgPj0gMSwgIihwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkgc2hvdWxk
IGJlIHZhbGlkLiIpOwotICAgICAgICAgICAgbV9mbGFncyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJhd1BzZXVkb0lkU2V0KSA8PCAocHNldWRvQml0c09mZnNldCAtIDEpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVUYWJsZUxheW91dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRNYXNrLCB0YWJs
ZUxheW91dE9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5
b3V0IHRhYmxlTGF5b3V0KSB7IHVwZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJsZUxheW91dEJp
dE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KTsgfQotCi0gICAgICAgIFBzZXVkb0lkIHN0eWxlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1ZShzdHlsZVR5
cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFN0eWxlVHlwZShQ
c2V1ZG9JZCBzdHlsZVR5cGUpIHsgdXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHlsZVR5cGVNYXNr
LCBzdHlsZVR5cGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIGdldEJvb2xlYW4oaXNVbmlxdWVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNV
bmlxdWUoKSB7IHVwZGF0ZUJvb2xlYW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9Ci0KLSAgICAg
ICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihlbXB0eVN0YXRl
T2Zmc2V0KTsgIH0KLSAgICAgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUpIHsgdXBk
YXRlQm9vbGVhbih2YWx1ZSwgZW1wdHlTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGZp
cnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RDaGlsZFN0YXRl
T2Zmc2V0KTsgIH0KLSAgICAgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkg
eyB1cGRhdGVCb29sZWFuKHZhbHVlLCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9Ci0KLSAgICAg
ICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4obGFzdENo
aWxkU3RhdGVPZmZzZXQpOyAgfQotICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wg
dmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZzZXQpOyB9Ci0K
LSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92
ZXIoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5SG92ZXJPZmZz
ZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
Z2V0Qm9vbGVhbihhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEFm
ZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3Rl
ZEJ5QWN0aXZlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25z
dCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQotICAgICAgICB2
b2lkIHNldEFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwg
YWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7
IHJldHVybiBnZXRCb29sZWFuKGlzTGlua09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRJc0xp
bmsoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZzZXQpOyB9Ci0K
LSAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
Z2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQotICAgICAgICB2
b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29s
ZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQotCi0gICAgICAg
IGJvb2wgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9v
bGVhbihoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQg
c2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVh
bih2YWx1ZSwgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQotCi0gICAgICAg
IHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoTm9uSW5oZXJpdGVkRmxhZ3MsIG1fZmxhZ3MpOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50
NjRfdCBmbGFnSXNhZmZlY3RlZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZl
Y3RlZEJ5QWN0aXZlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZl
Y3RlZEJ5SG92ZXIoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlIb3Zlck9mZnNl
dDsgfQotICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBz
ZXVkbykgeyByZXR1cm4gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1
ZG8pOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygp
IHsgcmV0dXJuIGZsYWdGaXJzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9Ci0gICAg
ICAgIHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxh
Z0xhc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgdXBkYXRlQm9vbGVhbihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZzZXQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChpc1NldCkKLSAgICAgICAgICAgICAgICBtX2ZsYWdzIHw9
IChvbmVCaXRNYXNrIDw8IG9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9mbGFncyAmPSB+KG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgZ2V0Qm9vbGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBtX2ZsYWdzICYgKG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdWYWx1ZSwgdWludDY0
X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKCEobmV3VmFsdWUgJiB+cG9zaXRpb25JbmRlcGVuZGVudE1hc2sp
KTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHBvc2l0aW9uRGVwZW5kZW50TWFzayA9IHBvc2l0aW9u
SW5kZXBlbmRlbnRNYXNrIDw8IG9mZnNldDsKLSAgICAgICAgICAgIG1fZmxhZ3MgPSAobV9mbGFn
cyAmIH5wb3NpdGlvbkRlcGVuZGVudE1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihuZXdW
YWx1ZSkgPDwgb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGdldFZhbHVl
KHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKG1f
ZmxhZ3MgPj4gb2Zmc2V0KSAmIHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNVbmlxdWUoKSB7IHJldHVybiBvbmVCaXRN
YXNrIDw8IGlzVW5pcXVlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnRmly
c3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBmaXJzdENoaWxkU3RhdGVPZmZz
ZXQ7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgpIHsgcmV0
dXJuIG9uZUJpdE1hc2sgPDwgbGFzdENoaWxkU3RhdGVPZmZzZXQ7IH0KLQotICAgICAgICAvLyBU
byB0eXBlIHRoZSBiaXQgbWFzayBwcm9wZXJseSBvbiA2NGJpdHMuCi0gICAgICAgIHN0YXRpYyBj
b25zdCB1aW50NjRfdCBvbmVCaXRNYXNrID0gMHgxOwotCi0gICAgICAgIC8vIEJ5dGUgMS4KLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93Qml0Q291bnQgPSAzOwotICAgICAg
ICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb3ZlcmZsb3dNYXNrID0gKG9uZUJpdE1hc2sgPDwgb3Zl
cmZsb3dCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZs
b3dYT2Zmc2V0ID0gMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WU9m
ZnNldCA9IG92ZXJmbG93WE9mZnNldCArIG92ZXJmbG93Qml0Q291bnQ7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjbGVhckJpdENvdW50ID0gMjsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IGNsZWFyTWFzayA9IChvbmVCaXRNYXNrIDw8IGNsZWFyQml0Q291bnQpIC0gMTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsZWFyT2Zmc2V0ID0gb3ZlcmZsb3dZT2Zm
c2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDIuCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBkaXNwbGF5Qml0Q291bnQgPSA1OwotICAgICAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgZGlzcGxheU1hc2sgPSAob25lQml0TWFzayA8PCBkaXNwbGF5Qml0Q291
bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXlP
ZmZzZXQgPSBjbGVhck9mZnNldCArIGNsZWFyQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBwb3NpdGlvbkJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IHBvc2l0aW9uTWFzayA9IChvbmVCaXRNYXNrIDw8IHBvc2l0aW9uQml0Q291bnQpIC0g
MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uT2Zmc2V0ID0gZWZmZWN0
aXZlRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDMu
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXlPZmZzZXQgPSBw
b3NpdGlvbk9mZnNldCArIHBvc2l0aW9uQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB1bmljb2RlQmlkaUJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IHVuaWNvZGVCaWRpTWFzayA9IChvbmVCaXRNYXNrIDw8IHVuaWNvZGVCaWRpQml0Q291
bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRpT2Zmc2V0
ID0gb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ICsgZGlzcGxheUJpdENvdW50OwotCi0gICAgICAgIC8v
IEJ5dGUgNC4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5nQml0Q291bnQg
PSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxvYXRpbmdNYXNrID0gKG9uZUJp
dE1hc2sgPDwgZmxvYXRpbmdCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgZmxvYXRpbmdPZmZzZXQgPSB1bmljb2RlQmlkaU9mZnNldCArIHVuaWNvZGVCaWRpQml0
Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGly
ZWN0aW9uQml0Y291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbk9mZnNldCA9IGZsb2F0aW5nT2Zmc2V0ICsgZmxvYXRpbmdCaXRD
b3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0
aW5nTW9kZUJpdGNvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCA9IGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25P
ZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQ7Ci0KLSAgICAgICAgLy8g
Qnl0ZSA1LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5j
ZUJpdENvdW50ID0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5o
ZXJpdGFuY2VPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQgKyBoYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0gb25lQml0TWFzazsKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zmc2V0ID0gZXhwbGljaXRJbmhlcml0YW5jZU9mZnNl
dCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3VudCA9IDQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGluZyA9IDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFkZGluZ0JpdENvdW50ID0gdmVydGljYWxBbGlnbkJp
dENvdW50ICsgdmVydGljYWxBbGlnblBhZGRpbmc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChvbmVCaXRNYXNrIDw8IHZlcnRpY2FsQWxpZ25CaXRD
b3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbk9m
ZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsgdGFibGVMYXlvdXRCaXRDb3VudDsKLQotICAgICAg
ICAvLyBCeXRlIDYuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzQml0
Q291bnQgPSA3OwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcHNldWRvQml0c01hc2sg
PSAob25lQml0TWFzayA8PCBwc2V1ZG9CaXRzQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNPZmZzZXQgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsg
dmVydGljYWxBbGlnbkJpdENvdW50OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBo
YXNWaWV3cG9ydFVuaXRzQml0Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0
X3QgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPSAob25lQml0TWFzayA8PCBoYXNWaWV3cG9ydFVu
aXRzQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdw
b3J0VW5pdHNPZmZzZXQgPSBwc2V1ZG9CaXRzT2Zmc2V0ICsgcHNldWRvQml0c0JpdENvdW50Owot
Ci0gICAgICAgIC8vIEJ5dGUgNy4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxl
VHlwZUJpdENvdW50ID0gNjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlw
ZVBhZGRpbmcgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQW5k
UGFkZGluZ0JpdENvdW50ID0gc3R5bGVUeXBlQml0Q291bnQgKyBzdHlsZVR5cGVQYWRkaW5nOwot
ICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc3R5bGVUeXBlTWFzayA9IChvbmVCaXRNYXNr
IDw8IHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgc3R5bGVUeXBlT2Zmc2V0ID0gaGFzVmlld3BvcnRVbml0c0JpdENvdW50ICsg
aGFzVmlld3BvcnRVbml0c09mZnNldDsKLQotICAgICAgICAvLyBCeXRlIDguCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1ZU9mZnNldCA9IHN0eWxlVHlwZU9mZnNldCArIHN0
eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3RhdGVPZmZzZXQgPSBlbXB0eVN0YXRlT2Zmc2V0ICsg
MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxhc3RDaGlsZFN0YXRlT2Zmc2V0ID0g
Zmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxhc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQgPSBhZmZlY3Rl
ZEJ5SG92ZXJPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0
ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09mZnNldCA9IGFmZmVjdGVkQnlEcmFnT2Zmc2V0ICsg
MTsKLQotICAgICAgICAvLyA2MCBiaXRzIGFyZSBhc3NpZ25lZC4gVGhlcmUgYXJlIDQgYml0cyBh
dmFpbGFibGUgY3VycmVudGx5IHVzZWQgYXMgcGFkZGluZyB0byBpbXByb3ZlIGNvZGUgZ2VuZXJh
dGlvbi4KLSAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdp
bGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20o
KS4KLSAgICAgICAgdWludDY0X3QgbV9mbGFnczsKLSAgICB9OwotCi1wcm90ZWN0ZWQ6Ci0KLSAg
ICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlQm94RGF0YT4g
bV9ib3g7Ci0gICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+IHZpc3VhbDsKLSAgICBEYXRhUmVm
PFN0eWxlQmFja2dyb3VuZERhdGE+IG1fYmFja2dyb3VuZDsKLSAgICBEYXRhUmVmPFN0eWxlU3Vy
cm91bmREYXRhPiBzdXJyb3VuZDsKLSAgICBEYXRhUmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE+IHJhcmVOb25Jbmhlcml0ZWREYXRhOwotCi0gICAgLy8gaW5oZXJpdGVkIGF0dHJpYnV0ZXMK
LSAgICBEYXRhUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IHJhcmVJbmhlcml0ZWREYXRhOwot
ICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBpbmhlcml0ZWQ7Ci0KLSAgICAvLyBsaXN0
IG9mIGFzc29jaWF0ZWQgcHNldWRvIHN0eWxlcwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQc2V1ZG9T
dHlsZUNhY2hlPiBtX2NhY2hlZFBzZXVkb1N0eWxlczsKLQotICAgIERhdGFSZWY8U1ZHUmVuZGVy
U3R5bGU+IG1fc3ZnU3R5bGU7Ci0KLS8vICFTVEFSVCBTWU5DITogS2VlcCB0aGlzIGluIHN5bmMg
d2l0aCB0aGUgY29weSBjb25zdHJ1Y3RvciBpbiBSZW5kZXJTdHlsZS5jcHAgYW5kIGltcGxpY2l0
bHlJbmhlcml0ZWQoKSBpbiBTdHlsZVJlc29sdmVyLmNwcAotCi0gICAgLy8gaW5oZXJpdAotICAg
IHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biAoX2VtcHR5X2NlbGxzID09IG90aGVyLl9lbXB0eV9jZWxscykKLSAgICAgICAgICAgICAgICAm
JiAoX2NhcHRpb25fc2lkZSA9PSBvdGhlci5fY2FwdGlvbl9zaWRlKQotICAgICAgICAgICAgICAg
ICYmIChfbGlzdF9zdHlsZV90eXBlID09IG90aGVyLl9saXN0X3N0eWxlX3R5cGUpCi0gICAgICAg
ICAgICAgICAgJiYgKF9saXN0X3N0eWxlX3Bvc2l0aW9uID09IG90aGVyLl9saXN0X3N0eWxlX3Bv
c2l0aW9uKQotICAgICAgICAgICAgICAgICYmIChfdmlzaWJpbGl0eSA9PSBvdGhlci5fdmlzaWJp
bGl0eSkKLSAgICAgICAgICAgICAgICAmJiAoX3RleHRfYWxpZ24gPT0gb3RoZXIuX3RleHRfYWxp
Z24pCi0gICAgICAgICAgICAgICAgJiYgKF90ZXh0X3RyYW5zZm9ybSA9PSBvdGhlci5fdGV4dF90
cmFuc2Zvcm0pCi0gICAgICAgICAgICAgICAgJiYgKF90ZXh0X2RlY29yYXRpb25zID09IG90aGVy
Ll90ZXh0X2RlY29yYXRpb25zKQotICAgICAgICAgICAgICAgICYmIChfY3Vyc29yX3N0eWxlID09
IG90aGVyLl9jdXJzb3Jfc3R5bGUpCi0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAg
ICAgICAgICAgICAgICYmIChtX2N1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIubV9jdXJzb3JWaXNp
YmlsaXR5KQotI2VuZGlmCi0gICAgICAgICAgICAgICAgJiYgKF9kaXJlY3Rpb24gPT0gb3RoZXIu
X2RpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAmJiAoX3doaXRlX3NwYWNlID09IG90aGVyLl93
aGl0ZV9zcGFjZSkKLSAgICAgICAgICAgICAgICAmJiAoX2JvcmRlcl9jb2xsYXBzZSA9PSBvdGhl
ci5fYm9yZGVyX2NvbGxhcHNlKQotICAgICAgICAgICAgICAgICYmIChfYm94X2RpcmVjdGlvbiA9
PSBvdGhlci5fYm94X2RpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAmJiAobV9ydGxPcmRlcmlu
ZyA9PSBvdGhlci5tX3J0bE9yZGVyaW5nKQotICAgICAgICAgICAgICAgICYmIChtX3ByaW50Q29s
b3JBZGp1c3QgPT0gb3RoZXIubV9wcmludENvbG9yQWRqdXN0KQotICAgICAgICAgICAgICAgICYm
IChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykKLSAgICAgICAgICAgICAg
ICAmJiAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmspCi0gICAgICAgICAgICAgICAg
JiYgKF9pbnNpZGVEZWZhdWx0QnV0dG9uID09IG90aGVyLl9pbnNpZGVEZWZhdWx0QnV0dG9uKQot
ICAgICAgICAgICAgICAgICYmIChtX3dyaXRpbmdNb2RlID09IG90aGVyLm1fd3JpdGluZ01vZGUp
OwotICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZs
YWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgICAg
ICB1bnNpZ25lZCBfZW1wdHlfY2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCi0gICAgICAgIHVuc2ln
bmVkIF9jYXB0aW9uX3NpZGUgOiAyOyAvLyBFQ2FwdGlvblNpZGUKLSAgICAgICAgdW5zaWduZWQg
X2xpc3Rfc3R5bGVfdHlwZSA6IDc7IC8vIEVMaXN0U3R5bGVUeXBlCi0gICAgICAgIHVuc2lnbmVk
IF9saXN0X3N0eWxlX3Bvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCi0gICAgICAg
IHVuc2lnbmVkIF92aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkKLSAgICAgICAgdW5zaWdu
ZWQgX3RleHRfYWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0
X3RyYW5zZm9ybSA6IDI7IC8vIEVUZXh0VHJhbnNmb3JtCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0
X2RlY29yYXRpb25zIDogVGV4dERlY29yYXRpb25CaXRzOwotICAgICAgICB1bnNpZ25lZCBfY3Vy
c29yX3N0eWxlIDogNjsgLy8gRUN1cnNvcgotI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkK
LSAgICAgICAgdW5zaWduZWQgbV9jdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJp
bGl0eQotI2VuZGlmCi0gICAgICAgIHVuc2lnbmVkIF9kaXJlY3Rpb24gOiAxOyAvLyBUZXh0RGly
ZWN0aW9uCi0gICAgICAgIHVuc2lnbmVkIF93aGl0ZV9zcGFjZSA6IDM7IC8vIEVXaGl0ZVNwYWNl
Ci0gICAgICAgIC8vIDMyIGJpdHMKLSAgICAgICAgdW5zaWduZWQgX2JvcmRlcl9jb2xsYXBzZSA6
IDE7IC8vIEVCb3JkZXJDb2xsYXBzZQotICAgICAgICB1bnNpZ25lZCBfYm94X2RpcmVjdGlvbiA6
IDE7IC8vIEVCb3hEaXJlY3Rpb24gKENTUzMgYm94X2RpcmVjdGlvbiBwcm9wZXJ0eSwgZmxleGli
bGUgYm94IGxheW91dCBtb2R1bGUpCi0KLSAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVkCi0g
ICAgICAgIHVuc2lnbmVkIG1fcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgotICAgICAgICB1bnNp
Z25lZCBtX3ByaW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsKLSAgICAgICAg
dW5zaWduZWQgX3BvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cwotICAgICAgICB1
bnNpZ25lZCBfaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCi0gICAgICAgIHVuc2lnbmVk
IF9pbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKLSAgICAgICAgLy8gNDQgYml0cwotCi0gICAgICAg
IC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBw
b3J0Ci0gICAgICAgIHVuc2lnbmVkIG1fd3JpdGluZ01vZGUgOiAyOyAvLyBXcml0aW5nTW9kZQot
ICAgICAgICAvLyA0NiBiaXRzCi0gICAgfSBpbmhlcml0ZWRfZmxhZ3M7Ci0KLS8vIGRvbid0IGlu
aGVyaXQKLSAgICBOb25Jbmhlcml0ZWRGbGFncyBub25pbmhlcml0ZWRfZmxhZ3M7Ci0KLSNpZiAh
QVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQotICAgIGJvb2wg
bV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKLSNlbmRpZgotCi0vLyAhRU5EIFNZTkMhCiBw
cml2YXRlOgorICAgIGVudW0gQ2xvbmVUYWcgeyBDbG9uZSB9OwogICAgIGVudW0gQ3JlYXRlRGVm
YXVsdFN0eWxlVGFnIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07Ci0gICAgUmVuZGVyU3R5bGUoQ3Jl
YXRlRGVmYXVsdFN0eWxlVGFnKTsKLQotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0
eWxlKCk7CiAKIHB1YmxpYzoKICAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1
bHQ7CiAgICAgUmVuZGVyU3R5bGUmIG9wZXJhdG9yPShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7
CisgICAgflJlbmRlclN0eWxlKCk7CiAKLSAgICAvLyBUaGlzIGlzIG5vdCBhIHRydWUgY29weSBj
b25zdHJ1Y3Rvci4gSXQgZG9lc24ndCBjb3B5IHBzZXVkbyBzdHlsZSBjYWNoZXMgZm9yIGV4YW1w
bGUuCi0gICAgZW51bSBDbG9uZVRhZyB7IENsb25lIH07CisgICAgUmVuZGVyU3R5bGUgcmVwbGFj
ZShSZW5kZXJTdHlsZSYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICBleHBsaWNpdCBSZW5k
ZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcpOwogICAgIFJlbmRlclN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiwgQ2xvbmVUYWcpOwogCi0gICAgflJlbmRlclN0eWxlKCk7CisgICAgc3RhdGlj
IFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKTsKIAogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBj
cmVhdGUoKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVQ
dHIoKTsKQEAgLTUwNSw2ICsxNTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRpb25IYXNC
ZWd1bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRpb25IYXNCZWd1bjsgfQogI2VuZGlmCiAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQorCisgICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSYg
aW5oZXJpdFBhcmVudCk7CisgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5k
ZXJTdHlsZSYpOworCiAgICAgQ29udGVudFBvc2l0aW9uIHJlc29sdmVkSnVzdGlmeUNvbnRlbnRQ
b3NpdGlvbihjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2
aW9yKSBjb25zdDsKICAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSByZXNvbHZlZEp1c3RpZnlD
b250ZW50RGlzdHJpYnV0aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1h
bFZhbHVlQmVoYXZpb3IpIGNvbnN0OwogICAgIENvbnRlbnRQb3NpdGlvbiByZXNvbHZlZEFsaWdu
Q29udGVudFBvc2l0aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZh
bHVlQmVoYXZpb3IpIGNvbnN0OwpAQCAtNTE0LDExICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSByZXNvbHZlZEp1c3RpZnlJdGVtcyhJdGVtUG9zaXRpb24gbm9y
bWFsVmFsdWVCZWhhdmlvdXIpIGNvbnN0OwogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgcmVz
b2x2ZWRKdXN0aWZ5U2VsZihjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIEl0ZW1Qb3Np
dGlvbiBub3JtYWxWYWx1ZUJlaGF2aW91cikgY29uc3Q7CiAKLSAgICB2b2lkIGluaGVyaXRGcm9t
KGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0UGFyZW50KTsKLSAgICB2b2lkIGNvcHlOb25Jbmhl
cml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKik7Ci0KLSAgICBQc2V1ZG9JZCBzdHlsZVR5cGUo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Muc3R5bGVUeXBlKCk7IH0KLSAgICB2
b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldFN0eWxlVHlwZShzdHlsZVR5cGUpOyB9CisgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUoKTsgfQorICAgIHZvaWQg
c2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNl
dFN0eWxlVHlwZShzdHlsZVR5cGUpOyB9CiAKICAgICBSZW5kZXJTdHlsZSogZ2V0Q2FjaGVkUHNl
dWRvU3R5bGUoUHNldWRvSWQpIGNvbnN0OwogICAgIFJlbmRlclN0eWxlKiBhZGRDYWNoZWRQc2V1
ZG9TdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKQEAgLTUyNiwxMTYgKzE3OSw5
MyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9T
dHlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCi0g
ICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiB2YWx1ZSkgeyByYXJlSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT5zZXRDdXN0b21Q
cm9wZXJ0eVZhbHVlKG5hbWUsIHZhbHVlKTsgfQotICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPiBnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+Z2V0
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lKTsgfQotICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHko
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5oYXNDdXN0b21Qcm9wZXJ0eShuYW1lKTsgfQotICAgIGNv
bnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5tX3ZhbHVlczsgfQor
ICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7
IH0KKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKLSAgICB2b2lkIHNldEhh
c1ZpZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0
ZWRfZmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQotICAgIGJv
b2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5o
YXNWaWV3cG9ydFVuaXRzKCk7IH0KKyAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCBo
YXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1ZpZXdw
b3J0VW5pdHMoaGFzVmlld3BvcnRVbml0cyk7IH0KKyAgICBib29sIGhhc1ZpZXdwb3J0VW5pdHMo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMoKTsg
fQogCi0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KLSAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9
Ci0gICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25z
dCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlIb3ZlcigpOyB9CisgICAg
Ym9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFn
cy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3Qg
eyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CiAKLSAgICB2
b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVk
QnlIb3Zlcih0cnVlKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KLSAgICB2b2lkIHNldEFm
ZmVjdGVkQnlEcmFnKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWcodHJ1
ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zZXRBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3Rp
dmUoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsgfQor
ICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZm
ZWN0ZWRCeURyYWcodHJ1ZSk7IH0KIAogICAgIHZvaWQgc2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2lu
YXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmKTsKICAgICAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRl
ZF9mbGFncy5pc0Zsb2F0aW5nKCk7IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0
dXJuICFzdXJyb3VuZC0+bWFyZ2luLmlzWmVybygpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXIoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9Ci0gICAgYm9vbCBo
YXNCb3JkZXJGaWxsKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNGaWxsKCk7
IH0KKyAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZs
YWdzLmlzRmxvYXRpbmcoKTsgfQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4g
IW1fc3Vycm91bmREYXRhLT5tYXJnaW4uaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc0JvcmRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KKyAg
ICBib29sIGhhc0JvcmRlckZpbGwoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmhhc0ZpbGwoKTsgfQogICAgIGJvb2wgaGFzVmlzaWJsZUJvcmRlckRlY29yYXRpb24oKSBj
b25zdCB7IHJldHVybiBoYXNWaXNpYmxlQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmlsbCgpOyB9Ci0g
ICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5oYXNWaXNpYmxlQm9yZGVyKCk7IH0KLSAgICBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiAhc3Vycm91bmQtPnBhZGRpbmcuaXNaZXJvKCk7IH0KLSAgICBib29sIGhhc09mZnNldCgp
IGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+b2Zmc2V0LmlzWmVybygpOyB9CisgICAgYm9vbCBo
YXNWaXNpYmxlQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5o
YXNWaXNpYmxlQm9yZGVyKCk7IH0KKyAgICBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7IHJldHVy
biAhbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcuaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc09mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmlzWmVybygpOyB9CiAg
ICAgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9y
ZSgpLmhhc1F1aXJrKCk7IH0KICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVpcmsoKSBjb25zdCB7
IHJldHVybiBtYXJnaW5BZnRlcigpLmhhc1F1aXJrKCk7IH0KIAotICAgIGJvb2wgaGFzQmFja2dy
b3VuZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkuaGFz
SW1hZ2UoKTsgfQotICAgIGJvb2wgaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5oYXNGaXhlZEltYWdlKCk7IH0KLSAgICAK
KyAgICBib29sIGhhc0JhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZERhdGEtPmJhY2tncm91bmQuaGFzSW1hZ2UoKTsgfQorICAgIGJvb2wgaGFzRml4ZWRCYWNrZ3Jv
dW5kSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLmhh
c0ZpeGVkSW1hZ2UoKTsgfQorCiAgICAgYm9vbCBoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgp
IGNvbnN0OwotICAgIAorCiAgICAgYm9vbCBoYXNBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4g
YXBwZWFyYW5jZSgpICE9IE5vQ29udHJvbFBhcnQ7IH0KIAotICAgIGJvb2wgaGFzQmFja2dyb3Vu
ZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBDb2xvciBjb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGlmIChjb2xvci5pc1Zp
c2libGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gaGFzQmFj
a2dyb3VuZEltYWdlKCk7Ci0gICAgfQorICAgIGJvb2wgaGFzQmFja2dyb3VuZCgpIGNvbnN0Owog
ICAgIAogICAgIExheW91dEJveEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1h
Z2UmKSBjb25zdDsKLSAgICBib29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFn
ZSgpLm91dHNldCgpLmlzWmVybygpOwotICAgIH0KLSAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVy
SW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbWFnZU91dHNldHMo
Ym9yZGVySW1hZ2UoKSk7Ci0gICAgfQorICAgIGJvb2wgaGFzQm9yZGVySW1hZ2VPdXRzZXRzKCkg
Y29uc3QgeyByZXR1cm4gYm9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgp
Lm91dHNldCgpLmlzWmVybygpOyB9CisgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlckltYWdlT3V0
c2V0cygpIGNvbnN0IHsgcmV0dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgpKTsgfQogCi0g
ICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGltYWdlT3V0c2V0cyhtYXNrQm94SW1hZ2UoKSk7Ci0gICAgfQorICAgIExh
eW91dEJveEV4dGVudCBtYXNrQm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaW1hZ2VP
dXRzZXRzKG1hc2tCb3hJbWFnZSgpKTsgfQogCiAgICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkg
Y29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0cygpOyB9CiAg
ICAgRmlsdGVyT3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVy
KCkgPyBmaWx0ZXIoKS5vdXRzZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KIAotICAgIE9yZGVy
IHJ0bE9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KGluaGVyaXRl
ZF9mbGFncy5tX3J0bE9yZGVyaW5nKTsgfQotICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIg
bykgeyBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyA9IG87IH0KKyAgICBPcmRlciBydGxP
cmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2luaGVyaXRlZEZs
YWdzLnJ0bE9yZGVyaW5nKTsgfQorICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJp
bmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IG9yZGVyaW5nOyB9CiAKICAgICBi
b29sIGlzU3R5bGVBdmFpbGFibGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55UHVibGljUHNl
dWRvU3R5bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1
ZG8pIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKTsK
KyAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKKyAgICB2b2lkIHNldEhh
c1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1
ZG9JZFNldCk7CiAgICAgYm9vbCBoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0OwogCiAgICAg
Ly8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNwbGF5KCkgY29u
c3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsgfQotICAg
IEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5vcmlnaW5hbERpc3BsYXkoKTsgfQorICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsgfQogCi0gICAg
Y29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sZWZ0
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
Pm9mZnNldC5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+b2Zmc2V0LnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBib3R0b20oKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmJvdHRvbSgpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5sZWZ0KCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPm9mZnNldC5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBi
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmJvdHRvbSgpOyB9
CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIHBvc2l0aW9uZWQgb2JqZWN0IGVkZ2VzIHRoYXQgdGFr
ZSBpbnRvIGFjY291bnQgd3JpdGluZyBtb2RlLgotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExl
ZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnN0YXJ0KHdyaXRpbmdNb2RlKCkp
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+b2Zmc2V0LmVuZCh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbG9n
aWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYmVmb3JlKHdyaXRpbmdN
b2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPm9mZnNldC5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0
LnN0YXJ0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmVuZCh3cml0aW5nTW9kZSgp
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5vZmZzZXQuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNl
dC5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgLy8gV2hldGhlciBvciBub3QgYSBwb3Np
dGlvbmVkIGVsZW1lbnQgcmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNvbXB1dGVkCi0g
ICAgLy8gdG8gZGV0ZXJtaW5lIGl0cyBwb3NpdGlvbi4KLSAgICBib29sIGhhc0F1dG9MZWZ0QW5k
UmlnaHQoKSBjb25zdCB7IHJldHVybiBsZWZ0KCkuaXNBdXRvKCkgJiYgcmlnaHQoKS5pc0F1dG8o
KTsgfQotICAgIGJvb2wgaGFzQXV0b1RvcEFuZEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgp
LmlzQXV0bygpICYmIGJvdHRvbSgpLmlzQXV0bygpOyB9CisgICAgLy8gV2hldGhlciBvciBub3Qg
YSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNvbXB1
dGVkICB0byBkZXRlcm1pbmUgaXRzIHBvc2l0aW9uLgogICAgIGJvb2wgaGFzU3RhdGljSW5saW5l
UG9zaXRpb24oYm9vbCBob3Jpem9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsID8gaGFz
QXV0b0xlZnRBbmRSaWdodCgpIDogaGFzQXV0b1RvcEFuZEJvdHRvbSgpOyB9CiAgICAgYm9vbCBo
YXNTdGF0aWNCbG9ja1Bvc2l0aW9uKGJvb2wgaG9yaXpvbnRhbCkgY29uc3QgeyByZXR1cm4gaG9y
aXpvbnRhbCA/IGhhc0F1dG9Ub3BBbmRCb3R0b20oKSA6IGhhc0F1dG9MZWZ0QW5kUmlnaHQoKTsg
fQogCi0gICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLnBvc2l0aW9uKCk7IH0KKyAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCk7IH0KICAgICBib29sIGhhc091dE9m
Rmxvd1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0
aW9uIHx8IHBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsgfQogICAgIGJvb2wgaGFzSW5GbG93
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBwb3NpdGlvbigpID09IFJlbGF0aXZlUG9zaXRpb24g
fHwgcG9zaXRpb24oKSA9PSBTdGlja3lQb3NpdGlvbjsgfQogICAgIGJvb2wgaGFzVmlld3BvcnRD
b25zdHJhaW5lZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBGaXhlZFBv
c2l0aW9uIHx8IHBvc2l0aW9uKCkgPT0gU3RpY2t5UG9zaXRpb247IH0KLSAgICBFRmxvYXQgZmxv
YXRpbmcoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKTsgfQot
Ci0gICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT53aWR0aCgp
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveC0+aGVp
Z2h0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1pbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9i
b3gtPm1pbldpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1heFdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3gtPm1heFdpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1pbkhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm94LT5taW5IZWlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1heEhlaWdodCgpOyB9CisgICAgRUZs
b2F0IGZsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGlu
ZygpOyB9CisKKyAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hE
YXRhLT53aWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2JveERhdGEtPmhlaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtaW5XaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWluV2lkdGgoKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
bWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPm1heFdpZHRoKCk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIG1pbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWluSGVp
Z2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym94RGF0YS0+bWF4SGVpZ2h0KCk7IH0KICAgICAKICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB3aWR0aCgp
IDogaGVpZ2h0KCk7IH0KICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0KCkgOiB3aWR0aCgpOyB9
CkBAIC02NDQsNDIgKzI3NCw0MiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2Fs
TWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1p
bkhlaWdodCgpIDogbWluV2lkdGgoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbE1heEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtYXhIZWln
aHQoKSA6IG1heFdpZHRoKCk7IH0KIAotICAgIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlcigpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXI7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYg
Ym9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpOyB9Ci0g
ICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5yaWdodCgpOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclRvcCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wKCk7IH0KLSAgICBjb25zdCBCb3Jk
ZXJWYWx1ZSYgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5i
b3R0b20oKTsgfQorICAgIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5ib3JkZXI7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVy
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpOyB9Cisg
ICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPmJvcmRlci5yaWdodCgpOyB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRl
clRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCk7IH0KKyAg
ICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPmJvcmRlci5ib3R0b20oKTsgfQogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJv
cmRlckJlZm9yZSgpIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZnRlcigp
IGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJTdGFydCgpIGNvbnN0OwogICAg
IGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJFbmQoKSBjb25zdDsKIAotICAgIGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
aW1hZ2UoKTsgfQotICAgIFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLmltYWdlKCk7IH0KLSAgICBjb25zdCBMZW5n
dGhCb3gmIGJvcmRlckltYWdlU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5pbWFnZSgpLmltYWdlU2xpY2VzKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlcklt
YWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuYm9yZGVy
U2xpY2VzKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlT3V0c2V0KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLm91dHNldCgpOyB9Ci0KLSAgICBj
b25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci50b3BMZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJU
b3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQo
KTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQotICAgIGNvbnN0IExl
bmd0aFNpemUmIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9Ci0KLSAg
ICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVy
LmJvcmRlckxlZnRXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7IH0KLSAgICBi
b29sIGJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5sZWZ0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgZmxvYXQgYm9yZGVyUmlnaHRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9
Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVyUmlnaHRJc1Ry
YW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpLmlzVHJh
bnNwYXJlbnQoKTsgfQotICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJv
cmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5zdHls
ZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBmbG9hdCBib3Jk
ZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyQm90
dG9tV2lkdGgoKTsgfQotICAgIEVCb3JkZXJTdHlsZSBib3JkZXJCb3R0b21TdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQotICAgIGJvb2wg
Ym9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3Jk
ZXIuYm90dG9tKCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgRmxvYXRCb3hFeHRlbnQgYm9yZGVy
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlcldpZHRoKCk7IH0K
KyAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgYm9yZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmltYWdlKCk7IH0KKyAgICBTdHlsZUltYWdlKiBib3JkZXJJ
bWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2Uo
KS5pbWFnZSgpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVNsaWNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5pbWFnZVNsaWNlcygp
OyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmJvcmRlclNsaWNlcygpOyB9CisgICAg
Y29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZU91dHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5vdXRzZXQoKTsgfQorCisgICAgY29uc3QgTGVuZ3Ro
U2l6ZSYgYm9yZGVyVG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5ib3JkZXIudG9wTGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wUmln
aHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcFJpZ2h0
KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b21MZWZ0KCk7IH0KKyAgICBj
b25zdCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tUmlnaHQoKTsgfQorICAgIGJvb2wgaGFzQm9y
ZGVyUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5oYXNCb3Jk
ZXJSYWRpdXMoKTsgfQorCisgICAgZmxvYXQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQorICAgIEVCb3Jk
ZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9CisgICAgYm9vbCBib3JkZXJMZWZ0SXNUcmFuc3BhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpLmlzVHJhbnNw
YXJlbnQoKTsgfQorICAgIGZsb2F0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQorICAgIEVCb3JkZXJT
dHlsZSBib3JkZXJSaWdodFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5yaWdodCgpLnN0eWxlKCk7IH0KKyAgICBib29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5pc1RyYW5z
cGFyZW50KCk7IH0KKyAgICBmbG9hdCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHls
ZSBib3JkZXJUb3BTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIu
dG9wKCkuc3R5bGUoKTsgfQorICAgIGJvb2wgYm9yZGVyVG9wSXNUcmFuc3BhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCkuaXNUcmFuc3BhcmVudCgpOyB9
CisgICAgZmxvYXQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+Ym9yZGVyLmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KKyAgICBFQm9yZGVyU3R5bGUgYm9y
ZGVyQm90dG9tU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJv
dHRvbSgpLnN0eWxlKCk7IH0KKyAgICBib29sIGJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbSgpLmlzVHJhbnNwYXJl
bnQoKTsgfQorICAgIEZsb2F0Qm94RXh0ZW50IGJvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3JkZXJXaWR0aCgpOyB9CiAKICAgICBmbG9hdCBib3Jk
ZXJCZWZvcmVXaWR0aCgpIGNvbnN0OwogICAgIGZsb2F0IGJvcmRlckFmdGVyV2lkdGgoKSBjb25z
dDsKQEAgLTY4OSwyOCArMzE5LDI4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBvdXRsaW5lU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PigwLCBvdXRsaW5lV2lkdGgoKSArIG91dGxp
bmVPZmZzZXQoKSk7IH0KICAgICBmbG9hdCBvdXRsaW5lV2lkdGgoKSBjb25zdDsKICAgICBib29s
IGhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBvdXRsaW5lU3R5bGUoKSA+IEJISURERU4gJiYg
b3V0bGluZVdpZHRoKCkgPiAwOyB9Ci0gICAgRUJvcmRlclN0eWxlIG91dGxpbmVTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCk7IH0KLSAgICBPdXRs
aW5lSXNBdXRvIG91dGxpbmVTdHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE91dGxpbmVJc0F1dG8+KG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLmlzQXV0bygpKTsgfQorICAg
IEVCb3JkZXJTdHlsZSBvdXRsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRE
YXRhLT5vdXRsaW5lLnN0eWxlKCk7IH0KKyAgICBPdXRsaW5lSXNBdXRvIG91dGxpbmVTdHlsZUlz
QXV0bygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+KG1fYmFja2dy
b3VuZERhdGEtPm91dGxpbmUuaXNBdXRvKCkpOyB9CiAgICAgYm9vbCBoYXNPdXRsaW5lSW5WaXN1
YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc091dGxpbmUoKSAmJiBvdXRsaW5lU2l6ZSgp
ID4gMDsgfQogICAgIAotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1goKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCk7IH0KLSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZ
KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpOyB9CisgICAg
RU92ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
b3ZlcmZsb3dYKCk7IH0KKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4g
bV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKTsgfQogCi0gICAgRVZpc2liaWxpdHkgdmlz
aWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5Pihpbmhlcml0
ZWRfZmxhZ3MuX3Zpc2liaWxpdHkpOyB9Ci0gICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGln
bigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCk7IH0K
LSAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2JveC0+dmVydGljYWxBbGlnbigpOyB9CisgICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLnZp
c2liaWxpdHkpOyB9CisgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsg
cmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbigpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB2ZXJ0aWNhbEFsaWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT52
ZXJ0aWNhbEFsaWduKCk7IH0KIAotICAgIGNvbnN0IExlbmd0aCYgY2xpcExlZnQoKSBjb25zdCB7
IHJldHVybiB2aXN1YWwtPmNsaXAubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwUmln
aHQoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAucmlnaHQoKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgY2xpcFRvcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC50b3AoKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5i
b3R0b20oKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgY2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZp
c3VhbC0+Y2xpcDsgfQotICAgIGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+
aGFzQ2xpcDsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcExlZnQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbERhdGEtPmNsaXAubGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAucmlnaHQoKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgY2xpcFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC50b3Ao
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
dWFsRGF0YS0+Y2xpcC5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aEJveCYgY2xpcCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcDsgfQorICAgIGJvb2wgaGFzQ2xpcCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+aGFzQ2xpcDsgfQogCi0gICAgRVVuaWNvZGVCaWRp
IHVuaWNvZGVCaWRpKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVC
aWRpKCk7IH0KKyAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCk7IH0KIAotICAgIEVDbGVhciBjbGVhcigp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpOyB9Ci0gICAgRVRhYmxl
TGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnRh
YmxlTGF5b3V0KCk7IH0KKyAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZEZsYWdzLmNsZWFyKCk7IH0KKyAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBj
b25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLnRhYmxlTGF5b3V0KCk7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0
OwpAQCAtNzE4LDI3NyArMzQ4LDIxMiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc3BlY2lmaWVkRm9u
dFNpemUoKSBjb25zdDsKICAgICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29uc3Q7CiAgICAg
aW50IGZvbnRTaXplKCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlvbiwgTm9u
Q0pLR2x5cGhPcmllbnRhdGlvbj4gZm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsKKwogI2lmIEVO
QUJMRShWQVJJQVRJT05fRk9OVFMpCiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdzIGZvbnRWYXJp
YXRpb25TZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlv
blNldHRpbmdzKCk7IH0KICNlbmRpZgotICAgIHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5v
bkNKS0dseXBoT3JpZW50YXRpb24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAKLSAgICBj
b25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+aW5kZW50OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50OyB9CisgICAgRVRleHRBbGlnbiB0ZXh0QWxp
Z24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX2luaGVyaXRlZEZs
YWdzLnRleHRBbGlnbik7IH0KKyAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dFRyYW5zZm9ybSk7IH0KKyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX2luaGVy
aXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0KKyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVj
b3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX3Zp
c3VhbERhdGEtPnRleHREZWNvcmF0aW9uKTsgfQorICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4
dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0
aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9
CisgICAgVGV4dERlY29yYXRpb25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU2tpcD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dERlY29yYXRpb25Ta2lwKTsgfQorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0ZXh0VW5k
ZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5l
UG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3NpdGlvbik7IH0K
KwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgVGV4dEluZGVudExpbmUgdGV4dEluZGVudExp
bmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGluZT4ocmFyZUluaGVy
aXRlZERhdGEtPm1fdGV4dEluZGVudExpbmUpOyB9Ci0gICAgVGV4dEluZGVudFR5cGUgdGV4dElu
ZGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50VHlwZT4ocmFy
ZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudFR5cGUpOyB9CisgICAgVGV4dEluZGVudExpbmUg
dGV4dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGlu
ZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUpOyB9CisgICAgVGV4dEluZGVu
dFR5cGUgdGV4dEluZGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5k
ZW50VHlwZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudFR5cGUpOyB9CisgICAgVGV4
dEFsaWduTGFzdCB0ZXh0QWxpZ25MYXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEFsaWduTGFzdD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdCk7IH0KKyAgICBU
ZXh0SnVzdGlmeSB0ZXh0SnVzdGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRK
dXN0aWZ5PihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeSk7IH0KICNlbmRpZgotICAg
IEVUZXh0QWxpZ24gdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRB
bGlnbj4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduKTsgfQotICAgIEVUZXh0VHJhbnNmb3Jt
IHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFRyYW5zZm9y
bT4oaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSk7IH0KLSAgICBUZXh0RGVjb3JhdGlv
biB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHREZWNvcmF0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMpOyB9Ci0gICAg
VGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0RGVjb3JhdGlvbj4odmlzdWFsLT50ZXh0RGVjb3JhdGlvbik7IH0KLSNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgIFRleHRBbGlnbkxhc3QgdGV4dEFsaWduTGFzdCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbkxhc3Q+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRB
bGlnbkxhc3QpOyB9Ci0gICAgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUZXh0SnVzdGlmeT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3Rp
ZnkpOyB9Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0
RGVjb3JhdGlvblN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRp
b25TdHlsZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSk7IH0K
LSAgICBUZXh0RGVjb3JhdGlvblNraXAgdGV4dERlY29yYXRpb25Ta2lwKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25Ta2lwPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvblNraXApOyB9Ci0gICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRl
cmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQ
b3NpdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQog
CiAgICAgY29uc3QgTGVuZ3RoJiB3b3JkU3BhY2luZygpIGNvbnN0OwogICAgIGZsb2F0IGxldHRl
clNwYWNpbmcoKSBjb25zdDsKIAotICAgIGZsb2F0IHpvb20oKSBjb25zdCB7IHJldHVybiB2aXN1
YWwtPm1fem9vbTsgfQotICAgIGZsb2F0IGVmZmVjdGl2ZVpvb20oKSBjb25zdCB7IHJldHVybiBy
YXJlSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVab29tOyB9CisgICAgZmxvYXQgem9vbSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+em9vbTsgfQorICAgIGZsb2F0IGVmZmVjdGl2ZVpv
b20oKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tOyB9
CiAgICAgCi0gICAgVGV4dFpvb20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0Wm9vbT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dFpvb20pOyB9CisgICAgVGV4dFpv
b20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Wm9vbT4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFpvb20pOyB9CiAKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KGluaGVyaXRlZF9m
bGFncy5fZGlyZWN0aW9uKTsgfQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4obV9pbmhlcml0ZWRGbGFncy5kaXJl
Y3Rpb24pOyB9CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gZGlyZWN0aW9uKCkgPT0gTFRSOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4cGxpY2l0bHlTZXRE
aXJlY3Rpb24oKTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigp
OyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBMZW5ndGggbGluZUhlaWdodCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IExlbmd0aCYgbGluZUhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdDsKIAotICAgIEVXaGl0ZVNwYWNlIHdo
aXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4oaW5oZXJp
dGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBhdXRvV3JhcChFV2hp
dGVTcGFjZSB3cykKLSAgICB7Ci0gICAgICAgIC8vIE5vd3JhcCBhbmQgcHJlIGRvbid0IGF1dG9t
YXRpY2FsbHkgd3JhcC4KLSAgICAgICAgcmV0dXJuIHdzICE9IE5PV1JBUCAmJiB3cyAhPSBQUkU7
Ci0gICAgfQorICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFV2hpdGVTcGFjZT4obV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlKTsgfQorICAg
IHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlKTsKKyAgICBib29sIGF1dG9XcmFwKCkg
Y29uc3QgeyByZXR1cm4gYXV0b1dyYXAod2hpdGVTcGFjZSgpKTsgfQorICAgIHN0YXRpYyBib29s
IHByZXNlcnZlTmV3bGluZShFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUo
KSBjb25zdCB7IHJldHVybiBwcmVzZXJ2ZU5ld2xpbmUod2hpdGVTcGFjZSgpKTsgfQorICAgIHN0
YXRpYyBib29sIGNvbGxhcHNlV2hpdGVTcGFjZShFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBjb2xs
YXBzZVdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVT
cGFjZSgpKTsgfQorICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIpIGNvbnN0
OworICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgYm9vbCBi
cmVha1dvcmRzKCkgY29uc3Q7CisKKyAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX2JhY2tncm91bmREYXRh
LT5iYWNrZ3JvdW5kLnJlcGVhdFgoKSk7IH0KKyAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVw
ZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX2JhY2tncm91
bmREYXRhLT5iYWNrZ3JvdW5kLnJlcGVhdFkoKSk7IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBi
YWNrZ3JvdW5kQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRl
T3BlcmF0b3I+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuY29tcG9zaXRlKCkpOyB9Cisg
ICAgRUZpbGxBdHRhY2htZW50IGJhY2tncm91bmRBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZpbGxBdHRhY2htZW50PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5k
LmF0dGFjaG1lbnQoKSk7IH0KKyAgICBFRmlsbEJveCBiYWNrZ3JvdW5kQ2xpcCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5k
LmNsaXAoKSk7IH0KKyAgICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQub3Jp
Z2luKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC54UG9zaXRpb24oKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZERhdGEtPmJhY2tncm91bmQueVBvc2l0aW9uKCk7IH0KKyAgICBFRmlsbFNpemVUeXBl
IGJhY2tncm91bmRTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJh
Y2tncm91bmQuc2l6ZVR5cGUoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJhY2tncm91bmRT
aXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5z
aXplTGVuZ3RoKCk7IH0KKyAgICBGaWxsTGF5ZXImIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKSB7
IHJldHVybiBtX2JhY2tncm91bmREYXRhLmFjY2VzcygpLmJhY2tncm91bmQ7IH0KKyAgICBjb25z
dCBGaWxsTGF5ZXImIGJhY2tncm91bmRMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmREYXRhLT5iYWNrZ3JvdW5kOyB9CisKKyAgICBTdHlsZUltYWdlKiBtYXNrSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLmltYWdlKCk7IH0KKyAgICBF
RmlsbFJlcGVhdCBtYXNrUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxs
UmVwZWF0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFgoKSk7IH0KKyAgICBF
RmlsbFJlcGVhdCBtYXNrUmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxs
UmVwZWF0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFkoKSk7IH0KKyAgICBD
b21wb3NpdGVPcGVyYXRvciBtYXNrQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2suY29tcG9z
aXRlKCkpOyB9CisgICAgRUZpbGxCb3ggbWFza0NsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFRmlsbEJveD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5jbGlwKCkpOyB9Cisg
ICAgRUZpbGxCb3ggbWFza09yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxs
Qm94PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLm9yaWdpbigpKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgbWFza1hQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hc2sueFBvc2l0aW9uKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hc2tZUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnlQb3NpdGlv
bigpOyB9CisgICAgRUZpbGxTaXplVHlwZSBtYXNrU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnNpemVUeXBlKCk7IH0KKyAgICBjb25zdCBMZW5n
dGhTaXplJiBtYXNrU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hc2suc2l6ZUxlbmd0aCgpOyB9CisgICAgRmlsbExheWVyJiBlbnN1cmVNYXNrTGF5
ZXJzKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNrOyB9Cisg
ICAgY29uc3QgRmlsbExheWVyJiBtYXNrTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFzazsgfQorICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrQm94
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1h
Z2U7IH0KKyAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UuaW1hZ2UoKTsgfQorCisgICAg
RUJvcmRlckNvbGxhcHNlIGJvcmRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUJvcmRlckNvbGxhcHNlPihtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlKTsgfQor
ICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CisgICAgZmxvYXQgdmVy
dGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CisgICAgRUVtcHR5Q2VsbCBlbXB0eUNlbGxzKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUVtcHR5Q2VsbD4obV9pbmhlcml0ZWRGbGFncy5l
bXB0eUNlbGxzKTsgfQorICAgIEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lkZT4obV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lk
ZSk7IH0KIAotICAgIGJvb2wgYXV0b1dyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGF1dG9XcmFwKHdoaXRlU3BhY2UoKSk7Ci0gICAgfQorICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RT
dHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obV9p
bmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlKTsgfQorICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHls
ZUltYWdlKCkgY29uc3Q7CisgICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihtX2luaGVy
aXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKTsgfQorCisgICAgY29uc3QgTGVuZ3RoJiBtYXJn
aW5Ub3AoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnRvcCgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5Cb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+bWFyZ2luLmJvdHRvbSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5MZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5sZWZ0KCk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1h
cmdpbi5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmUoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+bWFyZ2luLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
YXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uc3RhcnQo
d3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5F
bmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmVuZCh3cml0aW5nTW9k
ZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0VXNpbmco
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5tYXJnaW4uc3RhcnQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+
ZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmRVc2luZyhjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1h
cmdpbi5lbmQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9u
KCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJT
dHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5i
ZWZvcmUob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1h
cmdpbkFmdGVyVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUo
KSk7IH0KKworICAgIGNvbnN0IExlbmd0aEJveCYgcGFkZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5wYWRkaW5nOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nVG9w
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcudG9wKCk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHBhZGRpbmdCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+cGFkZGluZy5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0xlZnQoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5sZWZ0KCk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIHBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5w
YWRkaW5nLnJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCZWZvcmUoKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5iZWZvcmUod3JpdGluZ01vZGUoKSk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdBZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5wYWRkaW5nLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGlu
Zy5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgm
IHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5lbmQo
d3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisKKyAgICBFQ3Vyc29yIGN1cnNvcigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29y
KTsgfQogCi0gICAgc3RhdGljIGJvb2wgcHJlc2VydmVOZXdsaW5lKEVXaGl0ZVNwYWNlIHdzKQot
ICAgIHsKLSAgICAgICAgLy8gTm9ybWFsIGFuZCBub3dyYXAgZG8gbm90IHByZXNlcnZlIG5ld2xp
bmVzLgotICAgICAgICByZXR1cm4gd3MgIT0gTk9STUFMICYmIHdzICE9IE5PV1JBUDsKLSAgICB9
CisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgIEN1cnNvclZpc2liaWxpdHkgY3Vy
c29yVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclZpc2liaWxp
dHk+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSk7IH0KKyNlbmRpZgogCi0gICAg
Ym9vbCBwcmVzZXJ2ZU5ld2xpbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZXNl
cnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOwotICAgIH0KKyAgICBDdXJzb3JMaXN0KiBjdXJzb3Jz
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YS5nZXQoKTsg
fQogCi0gICAgc3RhdGljIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQot
ICAgIHsKLSAgICAgICAgLy8gUHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBzZSB3aGl0ZXNw
YWNlLgotICAgICAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOwotICAgIH0K
KyAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUluc2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAgICBib29sIGlz
TGluaygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rKCk7IH0KIAot
ICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVTcGFjZSgpKTsKLSAgICB9CisgICAgYm9vbCBpbnNp
ZGVEZWZhdWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVE
ZWZhdWx0QnV0dG9uOyB9CiAKLSAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVDaGFy
IGMpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAgIGNhc2Ug
JyAnOgotICAgICAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICAgICAgICAgIHJldHVybiBjb2xs
YXBzZVdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIXByZXNlcnZlTmV3bGluZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CisgICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+d2lkb3dzOyB9CisgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPm9ycGhhbnM7IH0KKyAgICBib29sIGhhc0F1dG9XaWRvd3Mo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oYXNBdXRvV2lkb3dzOyB9Cisg
ICAgYm9vbCBoYXNBdXRvT3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPmhhc0F1dG9PcnBoYW5zOyB9CiAKLSAgICBib29sIGJyZWFrT25seUFmdGVyV2hpdGVTcGFj
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFBSRV9XUkFQ
IHx8IGxpbmVCcmVhaygpID09IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZTsKLSAgICB9CisgICAg
QnJlYWtJbnNpZGUgYnJlYWtJbnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVh
a0luc2lkZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUpOyB9CisgICAgQnJl
YWtCZXR3ZWVuIGJyZWFrQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtC
ZXR3ZWVuPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0JlZm9yZSk7IH0KKyAgICBCcmVh
a0JldHdlZW4gYnJlYWtBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0
d2Vlbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtBZnRlcik7IH0KIAotICAgIGJvb2wg
YnJlYWtXb3JkcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gd29yZEJyZWFrKCkgPT0g
QnJlYWtXb3JkQnJlYWsgfHwgb3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dyYXA7Ci0g
ICAgfQotCi0gICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkucmVw
ZWF0WCgpKTsgfQotICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgp
LnJlcGVhdFkoKSk7IH0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBiYWNrZ3JvdW5kQ29tcG9zaXRl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fYmFja2dy
b3VuZC0+YmFja2dyb3VuZCgpLmNvbXBvc2l0ZSgpKTsgfQotICAgIEVGaWxsQXR0YWNobWVudCBi
YWNrZ3JvdW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQXR0
YWNobWVudD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkuYXR0YWNobWVudCgpKTsgfQotICAg
IEVGaWxsQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZp
bGxCb3g+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLmNsaXAoKSk7IH0KLSAgICBFRmlsbEJv
eCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+
KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLm9yaWdpbigpKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgYmFja2dyb3VuZFhQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFj
a2dyb3VuZCgpLnhQb3NpdGlvbigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWVBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueVBvc2l0
aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnNpemVUeXBlKCk7IH0KLSAgICBjb25z
dCBMZW5ndGhTaXplJiBiYWNrZ3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZC0+YmFja2dyb3VuZCgpLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxMYXllciYgZW5z
dXJlQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuIG1fYmFja2dyb3VuZC5hY2Nlc3MoKS0+bV9i
YWNrZ3JvdW5kOyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5ZXJzKCkgY29u
c3QgeyByZXR1cm4gJihtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKSk7IH0KLQotICAgIFN0eWxl
SW1hZ2UqIG1hc2tJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X21hc2suaW1hZ2UoKTsgfQotICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRYKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2sucmVwZWF0WCgpKTsgfQotICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRZKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2sucmVwZWF0WSgpKTsgfQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1hc2tDb21wb3NpdGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4ocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay5jb21wb3NpdGUoKSk7IH0KLSAgICBFRmlsbEJveCBtYXNrQ2xpcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tYXNrLmNsaXAoKSk7IH0KLSAgICBFRmlsbEJveCBtYXNrT3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2su
b3JpZ2luKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay54UG9zaXRpb24oKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbWFza1lQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX21hc2sueVBvc2l0aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBlIG1hc2tTaXpl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suc2l6ZVR5
cGUoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5zaXplTGVuZ3RoKCk7IH0KLSAgICBG
aWxsTGF5ZXImIGVuc3VyZU1hc2tMYXllcnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9tYXNrOyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXJzKCkg
Y29uc3QgeyByZXR1cm4gJihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrKTsgfQotICAgIGNv
bnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2U7IH0KLSAgICBTdHlsZUltYWdlKiBtYXNrQm94
SW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNr
Qm94SW1hZ2UuaW1hZ2UoKTsgfQotIAotICAgIEVCb3JkZXJDb2xsYXBzZSBib3JkZXJDb2xsYXBz
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJDb2xsYXBzZT4oaW5oZXJpdGVk
X2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UpOyB9Ci0gICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoKSBjb25zdDsKLSAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdDsK
LSAgICBFRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RW1wdHlDZWxsPihpbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzKTsgfQotICAgIEVDYXB0aW9u
U2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lk
ZT4oaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUpOyB9Ci0KLSAgICBFTGlzdFN0eWxlVHlw
ZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5
cGU+KGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlKTsgfQotICAgIFN0eWxlSW1hZ2Uq
IGxpc3RTdHlsZUltYWdlKCkgY29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHls
ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9u
Pihpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24pOyB9Ci0KLSAgICBjb25zdCBM
ZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4udG9wKCk7
IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5tYXJnaW4uYm90dG9tKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkxlZnQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnJpZ2h0KCk7
IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5tYXJnaW4uYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBt
YXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0ZXIod3JpdGlu
Z01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPm1hcmdpbi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0K
LSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5t
YXJnaW4uZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5zdGFydChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgp
LCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVu
ZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+bWFyZ2luLmVuZChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5k
aXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2lu
LmJlZm9yZShvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsg
fQotCi0gICAgY29uc3QgTGVuZ3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPnBhZGRpbmc7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3AoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFk
ZGluZ0JvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJvdHRvbSgpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5wYWRkaW5nLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1JpZ2h0KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgcGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJlZm9y
ZSh3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0FmdGVyKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIHBhZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5w
YWRkaW5nLnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgcGFkZGluZ0VuZCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmVuZCh3
cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLQotICAgIEVDdXJzb3IgY3Vyc29yKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jf
c3R5bGUpOyB9Ci0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIEN1cnNvclZpc2li
aWxpdHkgY3Vyc29yVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNv
clZpc2liaWxpdHk+KGluaGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkpOyB9Ci0jZW5k
aWYKLQotICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+Y3Vyc29yRGF0YS5nZXQoKTsgfQotCi0gICAgRUluc2lkZUxpbmsgaW5zaWRlTGlu
aygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPihpbmhlcml0ZWRfZmxh
Z3MuX2luc2lkZUxpbmspOyB9Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBub25p
bmhlcml0ZWRfZmxhZ3MuaXNMaW5rKCk7IH0KLQotICAgIGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbjsg
fQotCi0gICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PndpZG93czsgfQotICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+b3JwaGFuczsgfQotICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhc0F1dG9XaWRvd3M7IH0KLSAgICBib29sIGhhc0F1
dG9PcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1faGFzQXV0b09y
cGhhbnM7IH0KLQotICAgIC8vIENTUzMgR2V0dGVyIE1ldGhvZHMKLSAgICBCcmVha0luc2lkZSBi
cmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSk7IH0KLSAgICBCcmVha0JldHdlZW4gYnJl
YWtCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlKTsgfQotICAgIEJyZWFrQmV0d2VlbiBicmVh
a0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9icmVha0FmdGVyKTsgfQotICAgIAotICAgIEhhbmdpbmdQdW5jdHVh
dGlvbiBoYW5naW5nUHVuY3R1YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5n
aW5nUHVuY3R1YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbik7
IH0KKyAgICBIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZ2luZ1B1bmN0dWF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRh
LT5oYW5naW5nUHVuY3R1YXRpb24pOyB9CiAKICAgICBmbG9hdCBvdXRsaW5lT2Zmc2V0KCkgY29u
c3Q7Ci0gICAgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LmdldCgpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hh
ZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQm
IGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQodGV4dFNo
YWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hh
ZG93SG9yaXpvbnRhbEV4dGVudChMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkg
Y29uc3QgeyBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHRleHRTaGFkb3coKSwgbGVmdCwgcmln
aHQpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQoTGF5b3V0VW5pdCYg
dG9wLCBMYXlvdXRVbml0JiBib3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQo
dGV4dFNoYWRvdygpLCB0b3AsIGJvdHRvbSk7IH0KKyAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0
U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdy5n
ZXQoKTsgfQogICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChMYXlv
dXRVbml0JiBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdCB7IGdl
dFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxMZWZ0LCBs
b2dpY2FsUmlnaHQpOyB9CiAgICAgdm9pZCBnZXRUZXh0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRl
bnQoTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29u
c3QgeyBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxU
b3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKLSAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZVdpZHRoOyB9Ci0gICAgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNp
dHk7IH0KLSAgICBDb250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29udHJvbFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9
Ci0gICAgQXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEFzcGVjdFJhdGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0
UmF0aW9UeXBlKTsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gYXNw
ZWN0UmF0aW9OdW1lcmF0b3IoKSAvIGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKTsgfQotICAgIGZs
b2F0IGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0
aW9OdW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3Bl
Y3RSYXRpb051bWVyYXRvcjsgfQotICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFQm94QWxpZ25tZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmFsaWduKTsgfQotICAgIEVCb3hEaXJlY3Rpb24gYm94
RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveERpcmVjdGlvbj4oaW5o
ZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uKTsgfQotICAgIGZsb2F0IGJveEZsZXgoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gt
PmZsZXg7IH0KLSAgICB1bnNpZ25lZCBpbnQgYm94RmxleEdyb3VwKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4X2dyb3Vw
OyB9Ci0gICAgRUJveExpbmVzIGJveExpbmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUJveExpbmVzPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gt
PmxpbmVzKTsgfQotICAgIHVuc2lnbmVkIGludCBib3hPcmRpbmFsR3JvdXAoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPm9yZGlu
YWxfZ3JvdXA7IH0KLSAgICBFQm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVCb3hPcmllbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRG
bGV4aWJsZUJveC0+b3JpZW50KTsgfQotICAgIEVCb3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVj
YXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQotCi0gICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXI7IH0KLSAgICBmbG9hdCBmbGV4R3Jvdygp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2Zs
ZXhHcm93OyB9Ci0gICAgZmxvYXQgZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhTaHJpbms7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIGZsZXhCYXNpcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2ZsZXhpYmxlQm94LT5tX2ZsZXhCYXNpczsgfQotICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdu
bWVudERhdGEmIGFsaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2FsaWduQ29udGVudDsgfQotICAgIENvbnRlbnRQb3NpdGlvbiBhbGlnbkNvbnRlbnRQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29u
dGVudC5wb3NpdGlvbigpOyB9Ci0gICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgYWxpZ25Db250
ZW50RGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YWxpZ25Db250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxp
Z25Db250ZW50T3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEmIGFsaWduSXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hbGlnbkl0ZW1zOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGFsaWduSXRlbXNQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMu
cG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduSXRlbXNPdmVyZmxvd0Fs
aWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRl
bXMub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWdu
U2VsZigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZjsg
fQotICAgIEl0ZW1Qb3NpdGlvbiBhbGlnblNlbGZQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZi5wb3NpdGlvbigpOyB9Ci0gICAgT3ZlcmZs
b3dBbGlnbm1lbnQgYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYub3ZlcmZsb3coKTsgfQotICAgIEVGbGV4
RGlyZWN0aW9uIGZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxl
eERpcmVjdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleERp
cmVjdGlvbik7IH0KKyAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KKyAgICBmbG9hdCBvcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsgfQorICAg
IENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250
cm9sUGFydD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSk7IH0KKyAgICBBc3Bl
Y3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
QXNwZWN0UmF0aW9UeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hc3BlY3RSYXRpb1R5cGUp
OyB9CisgICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvRGVub21pbmF0b3I7IH0KKyAgICBmbG9h
dCBhc3BlY3RSYXRpb051bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmFzcGVjdFJhdGlvTnVtZXJhdG9yOyB9CisgICAgRUJveEFsaWdubWVudCBib3hBbGln
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hBbGlnbm1lbnQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24pOyB9CisgICAgRUJveERp
cmVjdGlvbiBib3hEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94RGly
ZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbik7IH0KKyAgICBmbG9hdCBib3hG
bGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZs
ZXhpYmxlQm94LT5mbGV4OyB9CisgICAgdW5zaWduZWQgYm94RmxleEdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4
R3JvdXA7IH0KKyAgICBFQm94TGluZXMgYm94TGluZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFQm94TGluZXM+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC0+bGluZXMpOyB9CisgICAgdW5zaWduZWQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmRp
bmFsR3JvdXA7IH0KKyAgICBFQm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVCb3hPcmllbnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRG
bGV4aWJsZUJveC0+b3JpZW50KTsgfQorICAgIEVCb3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVj
YXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQorCisgICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXI7IH0KKyAgICBmbG9hdCBmbGV4R3Jvdygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4
R3JvdzsgfQorICAgIGZsb2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleFNocmluazsgfQorICAgIGNvbnN0IExlbmd0
aCYgZmxleEJhc2lzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmxl
eGlibGVCb3gtPmZsZXhCYXNpczsgfQorICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEmIGFsaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmFsaWduQ29udGVudDsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWdu
SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0ZW1z
OyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxmKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmOyB9CisgICAgRUZsZXhE
aXJlY3Rpb24gZmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4
RGlyZWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleERpcmVj
dGlvbik7IH0KICAgICBib29sIGlzQ29sdW1uRmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1uIHx8IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93
Q29sdW1uUmV2ZXJzZTsgfQogICAgIGJvb2wgaXNSZXZlcnNlRmxleERpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Um93UmV2ZXJzZSB8fCBmbGV4RGlyZWN0
aW9uKCkgPT0gRmxvd0NvbHVtblJldmVyc2U7IH0KLSAgICBFRmxleFdyYXAgZmxleFdyYXAoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleFdyYXA+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhXcmFwKTsgfQotICAgIGNvbnN0IFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEmIGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQ7IH0KLSAgICBDb250ZW50UG9zaXRpb24ganVzdGlm
eUNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2p1c3RpZnlDb250ZW50LnBvc2l0aW9uKCk7IH0KLSAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlw
ZSBqdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZs
b3dBbGlnbm1lbnQganVzdGlmeUNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50Lm92ZXJmbG93KCk7IH0K
LSAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXM7IH0KLSAgICBJdGVt
UG9zaXRpb24ganVzdGlmeUl0ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxp
Z25tZW50IGp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zLm92ZXJmbG93KCk7IH0KLSAgICBJdGVt
UG9zaXRpb25UeXBlIGp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtcy5wb3NpdGlvblR5cGUoKTsgfQotICAg
IGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGY7IH0KLSAgICBJdGVtUG9zaXRp
b24ganVzdGlmeVNlbGZQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlTZWxmLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBq
dXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fanVzdGlmeVNlbGYub3ZlcmZsb3coKTsgfQorICAgIEVGbGV4V3JhcCBmbGV4
V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhXcmFwKTsgfQorICAgIGNvbnN0IFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEmIGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQ7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZB
bGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5qdXN0aWZ5SXRlbXM7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhJiBqdXN0aWZ5U2VsZigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pmp1c3RpZnlTZWxmOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZENvbHVtbnMoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9Ci0gICAgY29uc3QgVmVj
dG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zOyB9Ci0gICAgY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdFJvd3MoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvUmVwZWF0Um93czsg
fQotICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0Q29s
dW1uc0luc2VydGlvblBvaW50OyB9Ci0gICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBlYXRSb3dzSW5z
ZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBBdXRvUmVwZWF0VHlwZSBn
cmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9Ci0gICAgQXV0b1JlcGVh
dFR5cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzVHlwZTsgfQotICAgIGNvbnN0IE5h
bWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAg
ICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZFJvd0xpbmVzOyB9
Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5t
X29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0K
LSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxp
bmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRv
UmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01h
cCYgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXM7IH0KLSAg
ICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25z
dCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93
TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRB
cmVhTWFwJiBuYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhOyB9Ci0gICAgc2l6ZV90IG5hbWVkR3JpZEFyZWFS
b3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1f
bmFtZWRHcmlkQXJlYVJvd0NvdW50OyB9Ci0gICAgc2l6ZV90IG5hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFt
ZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9Ci0gICAgR3JpZEF1dG9GbG93IGdyaWRBdXRvRmxvdygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4ocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0Zsb3cpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxv
d0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cpOyB9Ci0g
ICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0
b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRo
bVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5t
X2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UpOyB9Ci0gICAg
Ym9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkgY29uc3QgeyByZXR1cm4gKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxv
d0FsZ29yaXRobURlbnNlKTsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3Jp
ZEF1dG9Db2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9ncmlkQXV0b0NvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWQtPm1fZ3JpZEF1dG9Sb3dzOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkQ29sdW1uR2FwKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1u
R2FwOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkUm93R2FwKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93R2FwOyB9Ci0KLQotICAgIGNvbnN0
IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW5TdGFydDsgfQotICAgIGNv
bnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW5FbmQoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uRW5kOyB9Ci0gICAgY29u
c3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0tPm1fZ3JpZFJvd1N0YXJ0OyB9Ci0gICAgY29uc3Qg
R3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3dFbmQ7IH0KLSNlbmRpZiAvKiBFTkFCTEUo
Q1NTX0dSSURfTEFZT1VUKSAqLwotCi0gICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93LmdldCgpOyB9
CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRDb2x1bW5zOyB9CisgICAg
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRSb3dzOyB9CisgICAgY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b1JlcGVhdENvbHVtbnM7IH0KKyAg
ICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Um93cygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvUmVwZWF0Um93
czsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdENv
bHVtbnNJbnNlcnRpb25Qb2ludDsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Um93c0lu
c2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3Jp
ZC0+YXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsgfQorICAgIEF1dG9SZXBlYXRUeXBlIGdy
aWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSBjb25zdCAgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9CisgICAgQXV0b1JlcGVhdFR5
cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Um93c1R5cGU7IH0KKyAgICBjb25zdCBOYW1lZEdy
aWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0
IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29u
c3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5vcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAm
IG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWQtPm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE5h
bWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0TmFtZWRHcmlk
Q29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5h
bWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Z3JpZC0+YXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5h
bWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVh
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bmFtZWRHcmlk
QXJlYTsgfQorICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhUm93Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRBcmVhUm93Q291bnQ7IH0K
KyAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9Cisg
ICAgR3JpZEF1dG9GbG93IGdyaWRBdXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEdyaWRBdXRvRmxvdz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93
KTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSBjb25zdCB7IHJldHVy
biAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvblJvdyk7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9u
Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdy
aWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9CisgICAgYm9v
bCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxn
b3JpdGhtU3BhcnNlKTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgp
IGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zs
b3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UpOyB9CisgICAgY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiBncmlkQXV0b0NvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0NvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvUm93czsgfQorICAgIGNvbnN0IExlbmd0aCYg
Z3JpZENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPmdyaWRDb2x1bW5HYXA7IH0KKyAgICBjb25zdCBMZW5ndGgmIGdyaWRSb3dHYXAoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkUm93R2FwOyB9CisK
KyAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJdGVtQ29sdW1uU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZENvbHVtblN0YXJ0OyB9
CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbUNvbHVtbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWRJdGVtLT5ncmlkQ29sdW1uRW5kOyB9Cisg
ICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0tPmdyaWRSb3dTdGFydDsgfQorICAgIGNv
bnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Sb3dFbmQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZFJvd0VuZDsgfQorI2VuZGlmIC8vIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCisKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3coKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hTaGFkb3cuZ2V0KCk7IH0K
ICAgICB2b2lkIGdldEJveFNoYWRvd0V4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQm
IHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0IHsgZ2V0
U2hhZG93RXh0ZW50KGJveFNoYWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOyB9CiAg
ICAgTGF5b3V0Qm94RXh0ZW50IGdldEJveFNoYWRvd0luc2V0RXh0ZW50KCkgY29uc3QgeyByZXR1
cm4gZ2V0U2hhZG93SW5zZXRFeHRlbnQoYm94U2hhZG93KCkpOyB9CiAgICAgdm9pZCBnZXRCb3hT
aGFkb3dIb3Jpem9udGFsRXh0ZW50KExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0
KSBjb25zdCB7IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoYm94U2hhZG93KCksIGxlZnQsIHJp
Z2h0KTsgfQpAQCAtOTk3LDEzNiArNTYyLDEzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCb3hT
aGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlvdXRV
bml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50
KGJveFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAjaWYgRU5BQkxF
KENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKLSAgICBFQm94RGVjb3JhdGlvbkJyZWFrIGJveERl
Y29yYXRpb25CcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5ib3hEZWNvcmF0aW9uQnJlYWso
KTsgfQorICAgIEVCb3hEZWNvcmF0aW9uQnJlYWsgYm94RGVjb3JhdGlvbkJyZWFrKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3hEYXRhLT5ib3hEZWNvcmF0aW9uQnJlYWsoKTsgfQogI2VuZGlmCi0gICAg
U3R5bGVSZWZsZWN0aW9uKiBib3hSZWZsZWN0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fYm94UmVmbGVjdC5nZXQoKTsgfQotICAgIEVCb3hTaXppbmcgYm94U2l6aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPmJveFNpemluZygpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBtYXJxdWVlSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbWFycXVlZS0+aW5jcmVtZW50OyB9Ci0gICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPnNwZWVkOyB9Ci0gICAgaW50
IG1hcnF1ZWVMb29wQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9tYXJxdWVlLT5sb29wczsgfQotICAgIEVNYXJxdWVlQmVoYXZpb3IgbWFycXVlZUJlaGF2aW9y
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVCZWhhdmlvcj4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fbWFycXVlZS0+YmVoYXZpb3IpOyB9Ci0gICAgRU1hcnF1ZWVEaXJlY3Rp
b24gbWFycXVlZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVl
RGlyZWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5kaXJlY3Rpb24pOyB9
Ci0gICAgRVVzZXJNb2RpZnkgdXNlck1vZGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVVc2VyTW9kaWZ5PihyYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSk7IH0KLSAgICBFVXNl
ckRyYWcgdXNlckRyYWcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlckRyYWc+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyk7IH0KLSAgICBFVXNlclNlbGVjdCB1c2VyU2Vs
ZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KHJhcmVJbmhlcml0
ZWREYXRhLT51c2VyU2VsZWN0KTsgfQotICAgIFRleHRPdmVyZmxvdyB0ZXh0T3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3ZlcmZsb3c+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0T3ZlcmZsb3cpOyB9Ci0gICAgRU1hcmdpbkNvbGxhcHNlIG1hcmdpbkJlZm9yZUNv
bGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UpOyB9Ci0gICAgRU1hcmdpbkNv
bGxhcHNlIG1hcmdpbkFmdGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
TWFyZ2luQ29sbGFwc2U+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNl
KTsgfQotICAgIEVXb3JkQnJlYWsgd29yZEJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVdvcmRCcmVhaz4ocmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayk7IH0KLSAgICBFT3Zl
cmZsb3dXcmFwIG92ZXJmbG93V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVy
Zmxvd1dyYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9Ci0gICAgRU5CU1BN
b2RlIG5ic3BNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BNb2RlPihyYXJl
SW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUpOyB9Ci0gICAgTGluZUJyZWFrIGxpbmVCcmVhaygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVCcmVhaz4ocmFyZUluaGVyaXRlZERhdGEtPmxp
bmVCcmVhayk7IH0KLSAgICBIeXBoZW5zIGh5cGhlbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxIeXBoZW5zPihyYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7IH0KLSAgICBzaG9ydCBo
eXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uTGltaXRCZWZvcmU7IH0KLSAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0
ZXIoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFm
dGVyOyB9Ci0gICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4g
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7IH0KKworICAgIFN0eWxlUmVmbGVjdGlvbiogYm94
UmVmbGVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFJlZmxl
Y3QuZ2V0KCk7IH0KKyAgICBFQm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsgcmV0dXJuIG1f
Ym94RGF0YS0+Ym94U2l6aW5nKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcnF1ZWVJbmNyZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5pbmNy
ZW1lbnQ7IH0KKyAgICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+c3BlZWQ7IH0KKyAgICBpbnQgbWFycXVlZUxvb3BDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmxvb3Bz
OyB9CisgICAgRU1hcnF1ZWVCZWhhdmlvciBtYXJxdWVlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTWFycXVlZUJlaGF2aW9yPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXJxdWVlLT5iZWhhdmlvcik7IH0KKyAgICBFTWFycXVlZURpcmVjdGlvbiBtYXJxdWVlRGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVEaXJlY3Rpb24+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmRpcmVjdGlvbik7IH0KKyAgICBFVXNlck1vZGlm
eSB1c2VyTW9kaWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJNb2RpZnk+KG1f
cmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkpOyB9CisgICAgRVVzZXJEcmFnIHVzZXJEcmFn
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJEcmFnPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT51c2VyRHJhZyk7IH0KKyAgICBFVXNlclNlbGVjdCB1c2VyU2VsZWN0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KG1fcmFyZUluaGVyaXRlZERhdGEtPnVz
ZXJTZWxlY3QpOyB9CisgICAgVGV4dE92ZXJmbG93IHRleHRPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRPdmVyZmxvdz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4
dE92ZXJmbG93KTsgfQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5CZWZvcmVDb2xsYXBzZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UpOyB9CisgICAgRU1hcmdpbkNvbGxhcHNl
IG1hcmdpbkFmdGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFyZ2lu
Q29sbGFwc2U+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UpOyB9
CisgICAgRVdvcmRCcmVhayB3b3JkQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
V29yZEJyZWFrPihtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWspOyB9CisgICAgRU92ZXJm
bG93V3JhcCBvdmVyZmxvd1dyYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZs
b3dXcmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9CisgICAgRU5CU1BN
b2RlIG5ic3BNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BNb2RlPihtX3Jh
cmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSk7IH0KKyAgICBMaW5lQnJlYWsgbGluZUJyZWFrKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUJyZWFrPihtX3JhcmVJbmhlcml0ZWREYXRh
LT5saW5lQnJlYWspOyB9CisgICAgSHlwaGVucyBoeXBoZW5zKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SHlwaGVucz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7IH0KKyAgICBz
aG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZTsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9u
TGltaXRBZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0
aW9uTGltaXRBZnRlcjsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9j
YWxlKCk7IH0KLSAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVCb3JkZXJGaXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCk7IH0K
LSAgICBFUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVSZXNpemU+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Jlc2l6ZSk7IH0KLSAgICBDb2x1bW5BeGlzIGNvbHVt
bkF4aXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5BeGlzPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9heGlzKTsgfQotICAgIGJvb2wgaGFzSW5saW5lQ29s
dW1uQXhpcygpIGNvbnN0IHsKLSAgICAgICAgQ29sdW1uQXhpcyBheGlzID0gY29sdW1uQXhpcygp
OwotICAgICAgICByZXR1cm4gYXhpcyA9PSBBdXRvQ29sdW1uQXhpcyB8fCBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID09IChheGlzID09IEhvcml6b250YWxDb2x1bW5BeGlzKTsKLSAgICB9Ci0g
ICAgQ29sdW1uUHJvZ3Jlc3Npb24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb2x1bW5Qcm9ncmVzc2lvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVs
dGlDb2wtPm1fcHJvZ3Jlc3Npb24pOyB9Ci0gICAgZmxvYXQgY29sdW1uV2lkdGgoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV93aWR0aDsgfQotICAg
IGJvb2wgaGFzQXV0b0NvbHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbXVsdGlDb2wtPm1fYXV0b1dpZHRoOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgY29s
dW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNv
bC0+bV9jb3VudDsgfQotICAgIGJvb2wgaGFzQXV0b0NvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fYXV0b0NvdW50OyB9CisgICAg
RUJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVy
Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CisgICAgRVJlc2l6ZSBy
ZXNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUmVzaXplPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5yZXNpemUpOyB9CisgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bXVsdGlDb2wtPmF4aXMpOyB9CisgICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3Q7
CisgICAgQ29sdW1uUHJvZ3Jlc3Npb24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb2x1bW5Qcm9ncmVzc2lvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bXVsdGlDb2wtPnByb2dyZXNzaW9uKTsgfQorICAgIGZsb2F0IGNvbHVtbldpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPndpZHRoOyB9CisgICAg
Ym9vbCBoYXNBdXRvQ29sdW1uV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tdWx0aUNvbC0+YXV0b1dpZHRoOyB9CisgICAgdW5zaWduZWQgc2hvcnQgY29sdW1u
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+
Y291bnQ7IH0KKyAgICBib29sIGhhc0F1dG9Db2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5hdXRvQ291bnQ7IH0KICAgICBib29sIHNw
ZWNpZmllc0NvbHVtbnMoKSBjb25zdCB7IHJldHVybiAhaGFzQXV0b0NvbHVtbkNvdW50KCkgfHwg
IWhhc0F1dG9Db2x1bW5XaWR0aCgpIHx8ICFoYXNJbmxpbmVDb2x1bW5BeGlzKCk7IH0KLSAgICBD
b2x1bW5GaWxsIGNvbHVtbkZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5G
aWxsPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9maWxsKTsgfQotICAgIGZs
b2F0IGNvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211
bHRpQ29sLT5tX2dhcDsgfQotICAgIGJvb2wgaGFzTm9ybWFsQ29sdW1uR2FwKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fbm9ybWFsR2FwOyB9Ci0g
ICAgRUJvcmRlclN0eWxlIGNvbHVtblJ1bGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuc3R5bGUoKTsgfQotICAgIHVuc2lnbmVk
IHNob3J0IGNvbHVtblJ1bGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX211bHRpQ29sLT5ydWxlV2lkdGgoKTsgfQotICAgIGJvb2wgY29sdW1uUnVsZUlzVHJh
bnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNv
bC0+bV9ydWxlLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIENvbHVtblNwYW4gY29sdW1uU3Bhbigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblNwYW4+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX211bHRpQ29sLT5tX2NvbHVtblNwYW4pOyB9Ci0KLSAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IExlbmd0aCYgdHJhbnNm
b3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5z
Zm9ybS0+bV94OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5ZKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3k7IH0KLSAgICBm
bG9hdCB0cmFuc2Zvcm1PcmlnaW5aKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdHJhbnNmb3JtLT5tX3o7IH0KLSAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9Ci0KLSAgICBUZXh0RW1waGFzaXNGaWxsIHRleHRFbXBo
YXNpc0ZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNGaWxsPihy
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCk7IH0KKyAgICBDb2x1bW5GaWxsIGNv
bHVtbkZpbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5GaWxsPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+ZmlsbCk7IH0KKyAgICBmbG9hdCBjb2x1bW5HYXAo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+Z2FwOyB9
CisgICAgYm9vbCBoYXNOb3JtYWxDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+bm9ybWFsR2FwOyB9CisgICAgRUJvcmRlclN0eWxlIGNv
bHVtblJ1bGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11
bHRpQ29sLT5ydWxlLnN0eWxlKCk7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5SdWxlV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cnVs
ZVdpZHRoKCk7IH0KKyAgICBib29sIGNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuaXNUcmFuc3BhcmVu
dCgpOyB9CisgICAgQ29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29sdW1uU3Bhbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvbHVt
blNwYW4pOyB9CisKKyAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlv
bnM7IH0KKyAgICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPng7IH0KKyAgICBjb25zdCBMZW5n
dGgmIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50cmFuc2Zvcm0tPnk7IH0KKyAgICBmbG9hdCB0cmFuc2Zvcm1PcmlnaW5aKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT56OyB9CisgICAgYm9v
bCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KKworICAgIFRl
eHRFbXBoYXNpc0ZpbGwgdGV4dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRFbXBoYXNpc0ZpbGw+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0Zp
bGwpOyB9CiAgICAgVGV4dEVtcGhhc2lzTWFyayB0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3Q7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcms7IH0KLSAgICBU
ZXh0RW1waGFzaXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzUG9zaXRpb24pOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFz
aXNDdXN0b21NYXJrKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzQ3VzdG9tTWFyazsgfQorICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRleHRFbXBoYXNp
c1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzUG9zaXRp
b24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uKTsgfQogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0OwogCi0gICAg
UnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1
YnlQb3NpdGlvbj4ocmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uKTsgfQorICAgIFJ1
YnlQb3NpdGlvbiBydWJ5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSdWJ5
UG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnJ1YnlQb3NpdGlvbik7IH0KIAotICAgIFRl
eHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0T3JpZW50YXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbik7
IH0KKyAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3Jp
ZW50YXRpb24pOyB9CiAKLSAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RGaXQp
OyB9Ci0gICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbjsgfQorICAgIE9iamVjdEZpdCBvYmpl
Y3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KKyAgICBMZW5ndGhQb2ludCBvYmplY3RQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdFBvc2l0aW9u
OyB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgdHJhbnNmb3JtIHJlbGF0ZWQgcHJvcGVy
dHkgKGN1cnJlbnRseSB0cmFuc2Zvcm0sIHRyYW5zZm9ybVN0eWxlM0Qgb3IgcGVyc3BlY3RpdmUp
Ci0gICAgLy8gaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHRyYW5zZm9ybWluZworICAgIC8vIGluZGlj
YXRlcyB0aGF0IHdlIGFyZSB0cmFuc2Zvcm1pbmcuCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxh
dGVkUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm0oKSB8fCBwcmVzZXJ2ZXMz
RCgpIHx8IGhhc1BlcnNwZWN0aXZlKCk7IH0KIAogICAgIGVudW0gQXBwbHlUcmFuc2Zvcm1Pcmln
aW4geyBJbmNsdWRlVHJhbnNmb3JtT3JpZ2luLCBFeGNsdWRlVHJhbnNmb3JtT3JpZ2luIH07CiAg
ICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gsIEFwcGx5VHJhbnNmb3JtT3JpZ2luID0gSW5jbHVkZVRyYW5zZm9y
bU9yaWdpbikgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwog
Ci0gICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbWFzay5oYXNJbWFnZSgpIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFn
ZS5oYXNJbWFnZSgpOyB9CisgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bWFzay5oYXNJbWFnZSgpIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CiAKLSAgICBUZXh0Q29tYmluZSB0ZXh0Q29t
YmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSk7IH0KKyAgICBUZXh0Q29tYmluZSB0ZXh0Q29tYmlu
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21iaW5lKCkgY29u
c3QgeyByZXR1cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZU5vbmU7IH0KIAotICAgIHVu
c2lnbmVkIHRhYlNpemUoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV90YWJT
aXplOyB9CisgICAgdW5zaWduZWQgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPnRhYlNpemU7IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIAotICAgIGJv
b2wgaGFzRmxvd0ludG8oKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Zmxvd1RocmVhZC5pc051bGwoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQ7IH0K
LSAgICBib29sIGhhc0Zsb3dGcm9tKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3JlZ2lvblRocmVhZC5pc051bGwoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
cmVnaW9uVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVn
aW9uVGhyZWFkOyB9Ci0gICAgUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxSZWdpb25GcmFnbWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcmVnaW9uRnJhZ21lbnQpOyB9CisgICAgYm9vbCBoYXNGbG93SW50bygpIGNvbnN0IHsgcmV0
dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbG93VGhyZWFkLmlzTnVsbCgpOyB9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Zmxvd1RocmVhZDsgfQorICAgIGJvb2wgaGFzRmxvd0Zyb20oKSBjb25z
dCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uVGhyZWFkLmlzTnVsbCgp
OyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25UaHJlYWQ7IH0KKyAgICBSZWdpb25GcmFn
bWVudCByZWdpb25GcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ2lvbkZy
YWdtZW50PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCk7IH0KIAotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdyaWQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+bV9saW5lR3JpZDsgfQotICAgIExpbmVTbmFwIGxpbmVTbmFwKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNuYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFw
KTsgfQotICAgIExpbmVBbGlnbiBsaW5lQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxMaW5lQWxpZ24+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbik7IH0KKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+bGluZUdyaWQ7IH0KKyAgICBMaW5lU25hcCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PExpbmVTbmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcCk7IH0K
KyAgICBMaW5lQWxpZ24gbGluZUFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlu
ZUFsaWduPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24pOyB9CiAKLSAgICAvLyBBcHBs
ZS1zcGVjaWZpYyBwcm9wZXJ0eSBnZXR0ZXIgbWV0aG9kcwotICAgIEVQb2ludGVyRXZlbnRzIHBv
aW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4o
aW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzKTsgfQotICAgIGNvbnN0IEFuaW1hdGlvbkxp
c3QqIGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
bmltYXRpb25zLmdldCgpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbnMo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQo
KTsgfQorICAgIEVQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4obV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRz
KTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOyB9CisgICAgY29uc3Qg
QW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50cmFuc2l0aW9ucy5nZXQoKTsgfQogCi0gICAgQW5pbWF0aW9uTGlzdCogYW5p
bWF0aW9ucygpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0
KCk7IH0KLSAgICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLmdldCgpOyB9CisgICAgQW5pbWF0aW9uTGlzdCog
YW5pbWF0aW9ucygpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMu
Z2V0KCk7IH0KKyAgICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOyB9CiAgICAgCi0gICAgYm9vbCBo
YXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpOyB9CisgICAgYm9vbCBoYXNBbmlt
YXRpb25zT3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCk7IH0KIAogICAgIEFuaW1hdGlvbkxpc3Qm
IGVuc3VyZUFuaW1hdGlvbnMoKTsKICAgICBBbmltYXRpb25MaXN0JiBlbnN1cmVUcmFuc2l0aW9u
cygpOwogCi0gICAgYm9vbCBoYXNBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucyAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmlt
YXRpb25zLT5zaXplKCkgPiAwOyB9Ci0gICAgYm9vbCBoYXNUcmFuc2l0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zICYmIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLT5zaXplKCkgPiAwOyB9CisgICAgYm9vbCBoYXNBbmlt
YXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9u
cyAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLT5zaXplKCkgPiAwOyB9Cisg
ICAgYm9vbCBoYXNUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRyYW5zaXRpb25zICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25z
LT5zaXplKCkgPiAwOyB9CiAKLSAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGZvdW5kIEFuaW1hdGlv
biAoaW5jbHVkaW5nICdhbGwnIHRyYW5zaXRpb25zKQorICAgIC8vIFJldHVybiB0aGUgZmlyc3Qg
Zm91bmQgQW5pbWF0aW9uIChpbmNsdWRpbmcgJ2FsbCcgdHJhbnNpdGlvbnMpLgogICAgIGNvbnN0
IEFuaW1hdGlvbiogdHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0Owog
Ci0gICAgRVRyYW5zZm9ybVN0eWxlM0QgdHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVUcmFuc2Zvcm1TdHlsZTNEPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2Zvcm1TdHlsZTNEKTsgfQotICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEID09IFRyYW5zZm9ybVN0
eWxlM0RQcmVzZXJ2ZTNEOyB9CisgICAgRVRyYW5zZm9ybVN0eWxlM0QgdHJhbnNmb3JtU3R5bGUz
RCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUcmFuc2Zvcm1TdHlsZTNEPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHlsZTNEKTsgfQorICAgIGJvb2wgcHJlc2VydmVz
M0QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHls
ZTNEID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEOyB9CiAKLSAgICBFQmFja2ZhY2VWaXNp
YmlsaXR5IGJhY2tmYWNlVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVC
YWNrZmFjZVZpc2liaWxpdHk+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJp
bGl0eSk7IH0KLSAgICBmbG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlOyB9Ci0gICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlID4gMDsg
fQotICAgIGNvbnN0IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5YKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBwZXJzcGVjdGl2ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBw
YWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BhZ2VTaXpl
OyB9Ci0gICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFBhZ2VTaXplVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFnZVNpemVUeXBl
KTsgfQorICAgIEVCYWNrZmFjZVZpc2liaWxpdHkgYmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tmYWNlVmlzaWJpbGl0eT4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YmFja2ZhY2VWaXNpYmlsaXR5KTsgfQorICAgIGZsb2F0IHBlcnNwZWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmU7IH0KKyAg
ICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmUgPiAwOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2ZU9y
aWdpblgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2
ZU9yaWdpblg7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWTsgfQor
ICAgIGNvbnN0IExlbmd0aFNpemUmIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGFnZVNpemU7IH0KKyAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBlPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5wYWdlU2l6ZVR5cGUpOyB9CiAgICAgCi0gICAgTGluZUJveENvbnRhaW4gbGlu
ZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94
Q29udGFpbjsgfQotICAgIGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9Ci0gICAgY29uc3QgSW50
U2l6ZSYgaW5pdGlhbExldHRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2luaXRpYWxMZXR0ZXI7IH0KKyAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluOyB9Cisg
ICAgY29uc3QgTGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcDsgfQorICAgIGNvbnN0IEludFNpemUmIGluaXRp
YWxMZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pbml0aWFs
TGV0dGVyOyB9CiAgICAgaW50IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyByZXR1cm4gaW5p
dGlhbExldHRlcigpLndpZHRoKCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRvdWNoQWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90b3VjaEFj
dGlvbik7IH0KKyAgICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFRvdWNoQWN0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50b3VjaEFjdGlv
bik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTExNTAsNjkg
KzcxMiw2MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0g
ICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVk
RGF0YS0+dGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIHRvdWNoQ2FsbG91dEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dG91Y2hDYWxsb3V0RW5hYmxl
ZDsgfQorICAgIGJvb2wgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRvdWNoQ2FsbG91dEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICBib29sIHVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZzsgfQorICAgIGJvb2wgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dT
Y3JvbGxpbmc7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBU
ZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KKyAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4
dFNpemVBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6
ZUFkanVzdDsgfQogI2VuZGlmCiAKLSAgICBFVGV4dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0U2VjdXJpdHk+KHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U2VjdXJpdHkpOyB9CisgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U2VjdXJpdHkpOyB9CiAKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRpbmdNb2RlPihpbmhlcml0ZWRfZmxhZ3MubV93cml0
aW5nTW9kZSk7IH0KKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdyaXRpbmdNb2RlPihtX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlKTsg
fQogICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJD
b3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wg
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNWZXJ0aWNh
bFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRMaW5lc1dy
aXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5n
TW9kZSgpKTsgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigp
IGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4ocmFyZUluaGVyaXRlZERh
dGEtPm1faW1hZ2VPcmllbnRhdGlvbik7Ci0jZWxzZQotICAgICAgICByZXR1cm4gRGVmYXVsdElt
YWdlT3JpZW50YXRpb247Ci0jZW5kaWYKLSAgICB9CisgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0g
aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OwogCi0gICAgRUltYWdlUmVuZGVyaW5nIGltYWdlUmVu
ZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUltYWdlUmVuZGVyaW5nPihyYXJl
SW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyk7IH0KKyAgICBFSW1hZ2VSZW5kZXJpbmcg
aW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW1hZ2VSZW5kZXJp
bmc+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCiAjaWYgRU5BQkxF
KENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbWFnZVJl
c29sdXRpb25Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRp
b25Tb3VyY2U+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNvdXJjZSk7IH0K
LSAgICBJbWFnZVJlc29sdXRpb25TbmFwIGltYWdlUmVzb2x1dGlvblNuYXAoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25TbmFwPihyYXJlSW5oZXJpdGVkRGF0YS0+
bV9pbWFnZVJlc29sdXRpb25TbmFwKTsgfQotICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbjsgfQorICAg
IEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbWFnZVJlc29sdXRpb25Tb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25Tb3VyY2U+KG1fcmFyZUluaGVyaXRlZERh
dGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZSk7IH0KKyAgICBJbWFnZVJlc29sdXRpb25TbmFwIGlt
YWdlUmVzb2x1dGlvblNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29s
dXRpb25TbmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25TbmFwKTsgfQor
ICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRl
ZERhdGEtPmltYWdlUmVzb2x1dGlvbjsgfQogI2VuZGlmCiAgICAgCi0gICAgRVNwZWFrIHNwZWFr
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVNwZWFrPihyYXJlSW5oZXJpdGVkRGF0YS0+
c3BlYWspOyB9CisgICAgRVNwZWFrIHNwZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVNwZWFrPihtX3JhcmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KIAotICAgIEZpbHRlck9wZXJh
dGlvbnMmIG11dGFibGVGaWx0ZXIoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9maWx0ZXIuYWNjZXNzKCktPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zOyB9Ci0gICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7
IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFibGVGaWx0
ZXIoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmZpbHRlci5hY2Nl
c3MoKS5vcGVyYXRpb25zOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5vcGVyYXRpb25z
OyB9CisgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+ZmlsdGVyLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KICAg
ICBib29sIGhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdDsKIAogI2lmIEVOQUJMRShGSUxU
RVJTX0xFVkVMXzIpCi0gICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUJhY2tkcm9wRmlsdGVy
KCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYmFja2Ryb3BGaWx0
ZXIuYWNjZXNzKCktPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGJhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YmFja2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9uczsgfQotICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0
ZXIoKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2Ryb3BGaWx0
ZXItPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CisgICAgRmlsdGVyT3Bl
cmF0aW9ucyYgbXV0YWJsZUJhY2tkcm9wRmlsdGVyKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5iYWNrZHJvcEZpbHRlci5hY2Nlc3MoKS5vcGVyYXRpb25zOyB9Cisg
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlci0+b3BlcmF0aW9uczsgfQor
ICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXItPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1w
dHkoKTsgfQogI2Vsc2UKICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBC
bGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2Rl
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpOyB9Ci0gICAgdm9p
ZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIGJsZW5kTW9kZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZSwgYmxlbmRNb2RlKTsgfQotICAgIGJvb2wg
aGFzQmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5kTW9kZU5vcm1h
bDsgfQorICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxCbGVuZE1vZGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSk7
IH0KKyAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGVmZmVjdGl2ZUJsZW5kTW9kZSwgbW9kZSk7IH0KKyAgICBib29s
IGhhc0JsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKSAhPSBCbGVuZE1vZGVOb3Jt
YWw7IH0KIAotICAgIElzb2xhdGlvbiBpc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxJc29sYXRpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzb2xhdGlvbik7IH0KLSAg
ICB2b2lkIHNldElzb2xhdGlvbihJc29sYXRpb24gaXNvbGF0aW9uKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1faXNvbGF0aW9uLCBpc29sYXRpb24pOyB9Ci0gICAgYm9vbCBoYXNJ
c29sYXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pc29sYXRp
b24gIT0gSXNvbGF0aW9uQXV0bzsgfQorICAgIElzb2xhdGlvbiBpc29sYXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRpb24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlz
b2xhdGlvbik7IH0KKyAgICB2b2lkIHNldElzb2xhdGlvbihJc29sYXRpb24gaXNvbGF0aW9uKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaXNvbGF0aW9uLCBpc29sYXRpb24pOyB9
CisgICAgYm9vbCBoYXNJc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5pc29sYXRpb24gIT0gSXNvbGF0aW9uQXV0bzsgfQogI2Vsc2UKICAgICBCbGVuZE1v
ZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CiAgICAgYm9v
bCBoYXNCbGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTIyNCw1NzMgKzc3
OSw1MDYgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9s
bGJhck9uTGVmdCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQotICAg
IFRyYWlsaW5nV29yZCB0cmFpbGluZ1dvcmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
cmFpbGluZ1dvcmQ+KHJhcmVJbmhlcml0ZWREYXRhLT50cmFpbGluZ1dvcmQpOyB9CisgICAgVHJh
aWxpbmdXb3JkIHRyYWlsaW5nV29yZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYWls
aW5nV29yZD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dHJhaWxpbmdXb3JkKTsgfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlC
dXR0b25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uU3R5
bGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGxlUGF5QnV0dG9uU3R5bGUpOyB9Ci0gICAg
QXBwbGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBw
bGVQYXlCdXR0b25UeXBlKTsgfQorICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0
b25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uU3R5bGU+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9uU3R5bGUpOyB9CisgICAgQXBw
bGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwbGVQ
YXlCdXR0b25UeXBlKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGNoZWNrVmFyaWFibGVzSW5DdXN0
b21Qcm9wZXJ0aWVzKCk7CiAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCi0gICAgdm9p
ZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEVmZmVjdGl2
ZURpc3BsYXkodik7IH0KLSAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSB2KSB7
IG5vbmluaGVyaXRlZF9mbGFncy5zZXRPcmlnaW5hbERpc3BsYXkodik7IH0KLSAgICB2b2lkIHNl
dFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQb3NpdGlvbih2
KTsgfQotICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldEZsb2F0aW5nKHYpOyB9Ci0KLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgb2Zmc2V0LmxlZnQoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFJp
Z2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgpLCBXVEZNb3Zl
KHYpKTsgfQotICAgIHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9m
ZnNldC50b3AoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQuYm90dG9tKCksIFdURk1vdmUodikpOyB9Ci0KLSAg
ICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURk1v
dmUodikpOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwg
bV9oZWlnaHQsIFdURk1vdmUodikpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxXaWR0aChMZW5n
dGggdikKLSAgICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0g
ICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYpKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZNb3ZlKHYp
KTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXkoRURpc3BsYXkgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLnNldEVmZmVjdGl2ZURpc3BsYXkodik7IH0KKyAgICB2b2lkIHNl
dE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0T3Jp
Z2luYWxEaXNwbGF5KHYpOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLnNldFBvc2l0aW9uKHYpOyB9CisgICAgdm9pZCBzZXRGbG9hdGlu
ZyhFRmxvYXQgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEZsb2F0aW5nKHYpOyB9CiAKLSAg
ICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoIHYpCi0gICAgewotICAgICAgICBpZiAoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV9o
ZWlnaHQsIFdURk1vdmUodikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU0VUX1ZB
UihtX2JveCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9p
ZCBzZXRMZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBvZmZz
ZXQubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRSaWdodChMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LnJpZ2h0KCksIFdURk1v
dmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRCb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IG9mZnNldC5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogCi0gICAgdm9pZCBzZXRNaW5X
aWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21pbldpZHRoLCBXVEZNb3ZlKHYpKTsg
fQotICAgIHZvaWQgc2V0TWF4V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhX
aWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGggdikgeyBT
RVRfVkFSKG1fYm94LCBtX21pbkhlaWdodCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1h
eEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heEhlaWdodCwgV1RGTW92ZSh2
KSk7IH0KKyAgICB2b2lkIHNldFdpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94
RGF0YSwgbV93aWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0SGVpZ2h0KExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9oZWlnaHQsIFdURk1vdmUobGVu
Z3RoKSk7IH0KKworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKExlbmd0aCYmKTsKKyAgICB2b2lk
IHNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoJiYpOworCisgICAgdm9pZCBzZXRNaW5XaWR0aChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWluV2lkdGgsIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldE1heFdpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFS
KG1fYm94RGF0YSwgbV9tYXhXaWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
TWluSGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9taW5IZWln
aHQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1heEhlaWdodChMZW5ndGgmJiBs
ZW5ndGgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fbWF4SGVpZ2h0LCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgVmVjdG9yPFN0eWxlRGFz
aGJvYXJkUmVnaW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQotICAgIHZvaWQgc2V0RGFzaGJvYXJk
UmVnaW9ucyhWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kYXNoYm9hcmRSZWdpb25zLCByZWdpb25zKTsgfQotCi0g
ICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgbGFiZWws
IExlbmd0aCB0LCBMZW5ndGggciwgTGVuZ3RoIGIsIExlbmd0aCBsLCBib29sIGFwcGVuZCkKLSAg
ICB7Ci0gICAgICAgIFN0eWxlRGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKLSAgICAgICAgcmVnaW9u
LmxhYmVsID0gbGFiZWw7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgPSBXVEZNb3ZlKHQp
OwotICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0KCkgPSBXVEZNb3ZlKHIpOwotICAgICAgICBy
ZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gV1RGTW92ZShiKTsKLSAgICAgICAgcmVnaW9uLm9mZnNl
dC5sZWZ0KCkgPSBXVEZNb3ZlKGwpOwotICAgICAgICByZWdpb24udHlwZSA9IHR5cGU7Ci0gICAg
ICAgIGlmICghYXBwZW5kKQotICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOwotICAgICAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9kYXNoYm9hcmRSZWdpb25zLmFwcGVuZChyZWdpb24pOwotICAgIH0K
KyAgICBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBkYXNoYm9hcmRSZWdpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJvYXJkUmVnaW9u
czsgfQorICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9ucyhjb25zdCBWZWN0b3I8U3R5bGVEYXNo
Ym9hcmRSZWdpb24+JiByZWdpb25zKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
ZGFzaGJvYXJkUmVnaW9ucywgcmVnaW9ucyk7IH0KKyAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lv
bihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiBy
aWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0LCBib29sIGFwcGVuZCk7CiAjZW5k
aWYKIAogICAgIHZvaWQgcmVzZXRCb3JkZXIoKSB7IHJlc2V0Qm9yZGVySW1hZ2UoKTsgcmVzZXRC
b3JkZXJUb3AoKTsgcmVzZXRCb3JkZXJSaWdodCgpOyByZXNldEJvcmRlckJvdHRvbSgpOyByZXNl
dEJvcmRlckxlZnQoKTsgcmVzZXRCb3JkZXJSYWRpdXMoKTsgfQotICAgIHZvaWQgcmVzZXRCb3Jk
ZXJUb3AoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUoKSk7
IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyUmlnaHQoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b20o
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbSwgQm9yZGVyVmFsdWUoKSk7IH0K
LSAgICB2b2lkIHJlc2V0Qm9yZGVyTGVmdCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1f
bGVmdCwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVySW1hZ2UoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2ltYWdlLCBOaW5lUGllY2VJbWFnZSgpKTsgfQorICAg
IHZvaWQgcmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5t
X3RvcCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyUmlnaHQoKSB7IFNF
VF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgpKTsgfQor
ICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b20oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJv
cmRlci5tX2JvdHRvbSwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyTGVm
dCgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdCwgQm9yZGVyVmFsdWUo
KSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVySW1hZ2UoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIGJvcmRlci5tX2ltYWdlLCBOaW5lUGllY2VJbWFnZSgpKTsgfQogICAgIHZvaWQgcmVzZXRC
b3JkZXJSYWRpdXMoKSB7IHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpOyByZXNldEJvcmRlclRv
cFJpZ2h0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpOyByZXNldEJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1
cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlhbEJvcmRlclJh
ZGl1cygpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0K
LSAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZv
aWQgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9y
ZGVyLm1fYm90dG9tUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJl
c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVy
Lm1fdG9wTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3Jk
ZXJUb3BSaWdodFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9w
UmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9t
TGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0
b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9t
UmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2NvbG9yLCB2
KTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIobV9iYWNrZ3JvdW5kRGF0YSwgY29sb3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91
bmRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNr
Z3JvdW5kLm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRCYWNr
Z3JvdW5kWVBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1f
YmFja2dyb3VuZC5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0
QmFja2dyb3VuZFNpemUoRUZpbGxTaXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBt
X2JhY2tncm91bmQubV9zaXplVHlwZSwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXpl
TGVuZ3RoKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3Jv
dW5kLm1fc2l6ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91
bmRYUG9zaXRpb24oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwg
YmFja2dyb3VuZC5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
QmFja2dyb3VuZFlQb3NpdGlvbihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91
bmREYXRhLCBiYWNrZ3JvdW5kLm1feVBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZShFRmlsbFNpemVUeXBlIGIpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmREYXRhLCBiYWNrZ3JvdW5kLm1fc2l6ZVR5cGUsIGIpOyB9CisgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kU2l6ZUxlbmd0aChMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZERhdGEsIGJhY2tncm91bmQubV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQogICAgIAot
ICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1faW1hZ2UsIGIpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJJbWFn
ZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3Jk
ZXIubV9pbWFnZSwgYik7IH0KICAgICB2b2lkIHNldEJvcmRlckltYWdlU291cmNlKFJlZlB0cjxT
dHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJveCk7
Ci0gICAgdm9pZCBzZXRCb3JkZXJJbWFnZVdpZHRoKExlbmd0aEJveCk7Ci0gICAgdm9pZCBzZXRC
b3JkZXJJbWFnZU91dHNldChMZW5ndGhCb3gpOwotCi0gICAgdm9pZCBzZXRCb3JkZXJUb3BMZWZ0
UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BM
ZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
TGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBX
VEZNb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhMZW5n
dGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgV1RG
TW92ZShzaXplKSk7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKExlbmd0
aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgV1RG
TW92ZShzaXplKSk7IH0KLQotICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUgcykK
LSAgICB7Ci0gICAgICAgIHNldEJvcmRlclRvcExlZnRSYWRpdXMocyk7Ci0gICAgICAgIHNldEJv
cmRlclRvcFJpZ2h0UmFkaXVzKHMpOwotICAgICAgICBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
KHMpOwotICAgICAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhzKTsKLSAgICB9Ci0gICAg
dm9pZCBzZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykKLSAgICB7Ci0gICAgICAgIHNl
dEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3Ro
KHMuaGVpZ2h0KCksIEZpeGVkKSkpOwotICAgIH0KLSAgICAKKyAgICB2b2lkIHNldEJvcmRlcklt
YWdlU2xpY2VzKExlbmd0aEJveCYmKTsKKyAgICB2b2lkIHNldEJvcmRlckltYWdlV2lkdGgoTGVu
Z3RoQm94JiYpOworICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94JiYpOwor
CisgICAgdm9pZCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNF
VF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcExlZnQsIFdURk1vdmUoc2l6ZSkpOyB9
CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BSaWdodCwgV1RGTW92ZShzaXplKSk7
IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tTGVmdCwgV1RGTW92ZShz
aXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKExlbmd0aFNpemUm
JiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBX
VEZNb3ZlKHNpemUpKTsgfQorCisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSYm
KTsKKyAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJik7CisKICAgICBSb3Vu
ZGVkUmVjdCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3Qs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKICAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVkSW5uZXJC
b3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNv
bnN0OwogCiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExh
eW91dFJlY3QmIGJvcmRlclJlY3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90
dG9tV2lkdGgsCiAgICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0
V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFdp
ZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2
KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJv
cmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vy
cm91bmQsIGJvcmRlci5tX2xlZnQsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodFdpZHRo
KGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV93aWR0aCwgdik7
IH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJv
cmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1
cnJvdW5kLCBib3JkZXIubV9yaWdodCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcFdpZHRo
KGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fd2lkdGgsIHYpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV90b3AubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRv
cENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwg
Ym9yZGVyLm1fdG9wLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgoZmxvYXQg
dikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwgdik7IH0KLSAg
ICB2b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVy
Qm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJv
dW5kLCBib3JkZXIubV9ib3R0b20sIHYpOyB9Ci0KLSAgICB2b2lkIHNldE91dGxpbmVXaWR0aChm
bG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV93aWR0aCwgdik7IH0K
LSAgICB2b2lkIHNldE91dGxpbmVTdHlsZUlzQXV0byhPdXRsaW5lSXNBdXRvIGlzQXV0bykgeyBT
RVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8pOyB9Ci0gICAg
dm9pZCBzZXRPdXRsaW5lU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91
bmQsIG1fb3V0bGluZS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGluZUNvbG9yKGNv
bnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91bmQsIG1fb3V0
bGluZSwgdik7IH0KLQotICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyB2KSB7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRPdmVyZmxvd1godik7IH0KLSAgICB2b2lkIHNldE92ZXJmbG93WShF
T3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0T3ZlcmZsb3dZKHYpOyB9Ci0gICAg
dm9pZCBzZXRWaXNpYmlsaXR5KEVWaXNpYmlsaXR5IHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl92aXNp
YmlsaXR5ID0gdjsgfQotICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRWZXJ0aWNhbEFsaWduKHYpOyB9Ci0gICAgdm9pZCBz
ZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihM
RU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUobGVuZ3RoKSk7
IH0KLQotICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIodmlzdWFs
LCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHZpc3VhbCwgY2xpcC5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lk
IHNldENsaXBSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAg
IHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlw
LmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aCB0
b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwotICAgIHZvaWQg
c2V0Q2xpcChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEZNb3ZlKGJv
eCkpOyB9Ci0KLSAgICB2b2lkIHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSBiKSB7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRVbmljb2RlQmlkaShiKTsgfQotCi0gICAgdm9pZCBzZXRDbGVhcihF
Q2xlYXIgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0Q2xlYXIodik7IH0KLSAgICB2b2lkIHNl
dFRhYmxlTGF5b3V0KEVUYWJsZUxheW91dCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRUYWJs
ZUxheW91dCh2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFdpZHRoKGZsb2F0IHYpIHsgU0VU
X1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2KTsgfQorICAgIHZv
aWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxl
ZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX2xlZnQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodFdpZHRo
KGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmlnaHQubV93aWR0
aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdik7IH0KKyAg
ICB2b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZB
TFVFX0NPTE9SKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9yaWdodCwgdik7IH0KKyAgICB2b2lk
IHNldEJvcmRlclRvcFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9y
ZGVyLm1fdG9wLm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9y
ZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AubV9zdHls
ZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLCB2KTsgfQor
ICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRl
ckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJv
cmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vycm91bmREYXRh
LCBib3JkZXIubV9ib3R0b20sIHYpOyB9CisKKyAgICB2b2lkIHNldE91dGxpbmVXaWR0aChmbG9h
dCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX3dpZHRoLCB2KTsgfQor
ICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNF
VF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX2lzQXV0bywgaXNBdXRvKTsgfQorICAg
IHZvaWQgc2V0T3V0bGluZVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9iYWNrZ3Jv
dW5kRGF0YSwgb3V0bGluZS5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZUNvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91bmREYXRh
LCBvdXRsaW5lLCB2KTsgfQorCisgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsg
bV9ub25Jbmhlcml0ZWRGbGFncy5zZXRPdmVyZmxvd1godik7IH0KKyAgICB2b2lkIHNldE92ZXJm
bG93WShFT3ZlcmZsb3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldE92ZXJmbG93WSh2KTsg
fQorICAgIHZvaWQgc2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IG1faW5oZXJpdGVkRmxh
Z3MudmlzaWJpbGl0eSA9IHY7IH0KKyAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2Fs
QWxpZ24gdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFZlcnRpY2FsQWxpZ24odik7IH0KKyAg
ICB2b2lkIHNldFZlcnRpY2FsQWxpZ25MZW5ndGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IHNldFZlcnRp
Y2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fdmVydGljYWxBbGlnbiwgV1RG
TW92ZShsZW5ndGgpKTsgfQorCisgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9IHRydWUpIHsg
U0VUX1ZBUihtX3Zpc3VhbERhdGEsIGhhc0NsaXAsIGIpOyB9CisgICAgdm9pZCBzZXRDbGlwTGVm
dChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAubGVmdCgpLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KKyAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV92aXN1
YWxEYXRhLCBjbGlwLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlw
Qm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC5ib3R0
b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcChMZW5ndGgmJiB0b3As
IExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQpOworICAgIHZv
aWQgc2V0Q2xpcChMZW5ndGhCb3gmJiBib3gpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAs
IFdURk1vdmUoYm94KSk7IH0KKworICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRp
IGIpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRVbmljb2RlQmlkaShiKTsgfQorCisgICAgdm9p
ZCBzZXRDbGVhcihFQ2xlYXIgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldENsZWFyKHYpOyB9
CisgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdikgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLnNldFRhYmxlTGF5b3V0KHYpOyB9CiAKICAgICBib29sIHNldEZvbnREZXNjcmlwdGlv
bihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJik7CisKICAgICAvLyBPbmx5IHVzZWQgZm9y
IGJsZW5kaW5nIGZvbnQgc2l6ZXMgd2hlbiBhbmltYXRpbmcsIGZvciBNYXRoTUwgYW5vbnltb3Vz
IGJsb2NrcywgYW5kIGZvciB0ZXh0IGF1dG9zaXppbmcuCiAgICAgdm9pZCBzZXRGb250U2l6ZShm
bG9hdCk7CisKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIHZvaWQgc2V0Rm9udFZh
cmlhdGlvblNldHRpbmdzKEZvbnRWYXJpYXRpb25TZXR0aW5ncyk7CiAjZW5kaWYKIAogICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIHNldFRleHRJbmRlbnQoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVu
Z3RoKSk7IH0KLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4dEluZGVudExp
bmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRJ
bmRlbnRMaW5lLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dEluZGVudFR5cGUoVGV4dEluZGVudFR5
cGUgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRJbmRlbnRUeXBlLCB2KTsg
fQotI2VuZGlmCi0gICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7IGluaGVyaXRl
ZF9mbGFncy5fdGV4dF9hbGlnbiA9IHY7IH0KLSAgICB2b2lkIHNldFRleHRUcmFuc2Zvcm0oRVRl
eHRUcmFuc2Zvcm0gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtID0gdjsgfQot
ICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9Ci0gICAgdm9pZCBzZXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFn
cy5fdGV4dF9kZWNvcmF0aW9ucyA9IHY7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKFRl
eHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUih2aXN1YWwsIHRleHREZWNvcmF0aW9uLCB2KTsgfQor
ICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRl
eHRBbGlnbihFVGV4dEFsaWduIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSB2OyB9
CisgICAgdm9pZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0
ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gdjsgfQorICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29y
YXRpb25zIHw9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHRE
ZWNvcmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2OyB9Cisg
ICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2KSB7IFNFVF9WQVIobV92
aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0
aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNv
cmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KKyAgICB2b2lkIHNldFRleHRV
bmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KKyAgICB2b2lkIHNl
dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24g
PSB2OyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24odik7IH0KKyAg
ICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoJiYpOworICAgIGJvb2wgc2V0Wm9vbShmbG9hdCk7
CisgICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsgc2V0Wm9vbShm
KTsgfQorICAgIGJvb2wgc2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7CisgICAgdm9pZCBzZXRUZXh0
Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFpvb20s
IHYpOyB9CisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4dEFsaWduTGFz
dChUZXh0QWxpZ25MYXN0IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0QWxp
Z25MYXN0LCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dEp1c3RpZnkoVGV4dEp1c3RpZnkgdikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRKdXN0aWZ5LCB2KTsgfQorICAgIHZvaWQg
c2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRJbmRlbnRMaW5lLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEluZGVudFR5
cGUoVGV4dEluZGVudFR5cGUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRJ
bmRlbnRUeXBlLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEFsaWduTGFzdChUZXh0QWxpZ25MYXN0
IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0QWxpZ25MYXN0LCB2KTsgfQor
ICAgIHZvaWQgc2V0VGV4dEp1c3RpZnkoVGV4dEp1c3RpZnkgdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRKdXN0aWZ5LCB2KTsgfQogI2VuZGlmCi0gICAgdm9pZCBzZXRUZXh0
RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3RleHREZWNvcmF0aW9uU3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRU
ZXh0RGVjb3JhdGlvblNraXAoVGV4dERlY29yYXRpb25Ta2lwIHNraXApIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV90ZXh0RGVjb3JhdGlvblNraXAsIHNraXApOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYpOyB9Ci0gICAg
dm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fZGly
ZWN0aW9uID0gdjsgfQotICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbihib29s
IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24odik7
IH0KKwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRTcGVjaWZpZWRM
aW5lSGVpZ2h0KExlbmd0aCB2KTsKKyAgICB2b2lkIHNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVu
Z3RoJiYpOwogI2VuZGlmCi0gICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCBzcGVjaWZpZWRM
aW5lSGVpZ2h0KTsKLSAgICBib29sIHNldFpvb20oZmxvYXQpOwotICAgIHZvaWQgc2V0Wm9vbVdp
dGhvdXRSZXR1cm5WYWx1ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KLSAgICBib29sIHNldEVm
ZmVjdGl2ZVpvb20oZmxvYXQpOwotICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRab29tLCB2KTsgfQotICAgIAorCiAjaWYg
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB2b2lkIHNldEltYWdlT3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBt
X2ltYWdlT3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CisgICAgdm9pZCBzZXRJ
bWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYpKTsgfQog
I2VuZGlmCiAKLSAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5nKEVJbWFnZVJlbmRlcmluZyB2KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZW5kZXJpbmcsIHYpOyB9CisgICAg
dm9pZCBzZXRJbWFnZVJlbmRlcmluZyhFSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIGltYWdlUmVuZGVyaW5nLCB2KTsgfQogCiAjaWYgRU5BQkxFKENTU19J
TUFHRV9SRVNPTFVUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKEltYWdl
UmVzb2x1dGlvblNvdXJjZSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VS
ZXNvbHV0aW9uU291cmNlLCB2KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChJ
bWFnZVJlc29sdXRpb25TbmFwIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFn
ZVJlc29sdXRpb25TbmFwLCB2KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uKGZsb2F0
IGYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb24sIGYpOyB9
CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25Tb3VyY2UoSW1hZ2VSZXNvbHV0aW9uU291cmNl
IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRpb25Tb3VyY2Us
IHYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25TbmFwKEltYWdlUmVzb2x1dGlvblNu
YXAgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvblNuYXAs
IHYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvbiwgZik7IH0KICNlbmRpZgogCi0gICAg
dm9pZCBzZXRXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl93aGl0
ZV9zcGFjZSA9IHY7IH0KKyAgICB2b2lkIHNldFdoaXRlU3BhY2UoRVdoaXRlU3BhY2UgdikgeyBt
X2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSB2OyB9CiAKLSAgICB2b2lkIHNldFdvcmRTcGFj
aW5nKExlbmd0aCk7CisgICAgdm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgmJik7CiAgICAgdm9p
ZCBzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0KTsKIAotICAgIHZvaWQgY2xlYXJCYWNrZ3JvdW5kTGF5
ZXJzKCkgeyBtX2JhY2tncm91bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZCA9IEZpbGxMYXllcihC
YWNrZ3JvdW5kRmlsbExheWVyKTsgfQotICAgIHZvaWQgaW5oZXJpdEJhY2tncm91bmRMYXllcnMo
Y29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgbV9iYWNrZ3JvdW5kLmFjY2VzcygpLT5tX2JhY2tn
cm91bmQgPSBwYXJlbnQ7IH0KKyAgICB2b2lkIGNsZWFyQmFja2dyb3VuZExheWVycygpIHsgbV9i
YWNrZ3JvdW5kRGF0YS5hY2Nlc3MoKS5iYWNrZ3JvdW5kID0gRmlsbExheWVyKEJhY2tncm91bmRG
aWxsTGF5ZXIpOyB9CisgICAgdm9pZCBpbmhlcml0QmFja2dyb3VuZExheWVycyhjb25zdCBGaWxs
TGF5ZXImIHBhcmVudCkgeyBtX2JhY2tncm91bmREYXRhLmFjY2VzcygpLmJhY2tncm91bmQgPSBw
YXJlbnQ7IH0KIAotICAgIHZvaWQgYWRqdXN0QmFja2dyb3VuZExheWVycygpCi0gICAgewotICAg
ICAgICBpZiAoYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGVuc3Vy
ZUJhY2tncm91bmRMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAgICAgIGVuc3Vy
ZUJhY2tncm91bmRMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgdm9pZCBhZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCk7CiAKLSAgICB2b2lkIGNsZWFy
TWFza0xheWVycygpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFzayA9IEZp
bGxMYXllcihNYXNrRmlsbExheWVyKTsgfQotICAgIHZvaWQgaW5oZXJpdE1hc2tMYXllcnMoY29u
c3QgRmlsbExheWVyJiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
bWFzayA9IHBhcmVudDsgfQorICAgIHZvaWQgY2xlYXJNYXNrTGF5ZXJzKCkgeyBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2sgPSBGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcik7IH0K
KyAgICB2b2lkIGluaGVyaXRNYXNrTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFzayA9IHBhcmVudDsgfQogCi0gICAgdm9p
ZCBhZGp1c3RNYXNrTGF5ZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmIChtYXNrTGF5ZXJzKCktPm5l
eHQoKSkgewotICAgICAgICAgICAgZW5zdXJlTWFza0xheWVycygpLmN1bGxFbXB0eUxheWVycygp
OwotICAgICAgICAgICAgZW5zdXJlTWFza0xheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsK
LSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGFkanVzdE1hc2tMYXllcnMoKTsKIAotICAgIHZv
aWQgc2V0TWFza0ltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fbWFzay5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQorICAgIHZvaWQg
c2V0TWFza0ltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5tYXNrLnNldEltYWdlKFdURk1vdmUodikpOyB9CiAKLSAgICB2b2lkIHNl
dE1hc2tCb3hJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX21hc2tCb3hJbWFnZSwgYik7IH0KLSAgICB2b2lkIHNldE1hc2tCb3hJ
bWFnZVNvdXJjZShSZWZQdHI8U3R5bGVJbWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX21hc2tCb3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQotICAgIHZv
aWQgc2V0TWFza1hQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbWFzay5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZv
aWQgc2V0TWFza1lQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbWFzay5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZv
aWQgc2V0TWFza1NpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fbWFzay5tX3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBz
ZXRNYXNrQm94SW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBtYXNrQm94SW1hZ2UsIGIpOyB9CisgICAgdm9pZCBzZXRNYXNrQm94
SW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikgeyBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLm1hc2tCb3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQorICAgIHZv
aWQgc2V0TWFza1hQb3NpdGlvbihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBtYXNrLm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRNYXNrWVBvc2l0aW9uKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG1hc2subV95UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldE1hc2tTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIG1hc2subV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQogCi0gICAg
dm9pZCBzZXRCb3JkZXJDb2xsYXBzZShFQm9yZGVyQ29sbGFwc2UgY29sbGFwc2UpIHsgaW5oZXJp
dGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgPSBjb2xsYXBzZTsgfQorICAgIHZvaWQgc2V0Qm9y
ZGVyQ29sbGFwc2UoRUJvcmRlckNvbGxhcHNlIGNvbGxhcHNlKSB7IG1faW5oZXJpdGVkRmxhZ3Mu
Ym9yZGVyQ29sbGFwc2UgPSBjb2xsYXBzZTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbEJvcmRl
clNwYWNpbmcoZmxvYXQpOwogICAgIHZvaWQgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0
KTsKLSAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IGluaGVyaXRlZF9mbGFn
cy5fZW1wdHlfY2VsbHMgPSB2OyB9Ci0gICAgdm9pZCBzZXRDYXB0aW9uU2lkZShFQ2FwdGlvblNp
ZGUgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSA9IHY7IH0KKyAgICB2b2lkIHNl
dEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9
IHY7IH0KKyAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IG1faW5oZXJp
dGVkRmxhZ3MuY2FwdGlvblNpZGUgPSB2OyB9CiAKLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvVHlw
ZShBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fYXNwZWN0UmF0aW9UeXBlLCBhc3BlY3RSYXRpb1R5cGUpOyB9Ci0gICAgdm9p
ZCBzZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCB2KTsgfQotICAgIHZvaWQgc2V0
QXNwZWN0UmF0aW9OdW1lcmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yLCB2KTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0
aW9UeXBlKEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRpb1R5cGUsIGFzcGVjdFJhdGlvVHlwZSk7IH0KKyAg
ICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHYpOyB9CisgICAgdm9p
ZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldExp
c3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5
bGVfdHlwZSA9IHY7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUg
dikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSB2OyB9CiAgICAgdm9pZCBzZXRM
aXN0U3R5bGVJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJik7Ci0gICAgdm9pZCBzZXRMaXN0U3R5
bGVQb3NpdGlvbihFTGlzdFN0eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rf
c3R5bGVfcG9zaXRpb24gPSB2OyB9Ci0KLSAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJn
aW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsg
fQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdp
blJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7Ci0g
ICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKLQotICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9Ci0gICAgdm9p
ZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
ZywgV1RGTW92ZShib3gpKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ1RvcChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0K
LSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQ
YWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVm
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KLQotICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxh
Z3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVM
aXN0U3R5bGVQb3NpdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24g
PSB2OyB9CisKKyAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRh
LCBtYXJnaW4sIExlbmd0aEJveChGaXhlZCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi50b3AoKSwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0
aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4uYm90dG9tKCksIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBtYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
TWFyZ2luU3RhcnQoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCYmKTsK
KworICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRk
aW5nLCBMZW5ndGhCb3goQXV0bykpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJv
eCYmIGJveCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLCBXVEZNb3ZlKGJveCkp
OyB9CisgICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
c3Vycm91bmREYXRhLCBwYWRkaW5nLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9p
ZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQ
YWRkaW5nTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFk
ZGluZy5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdSaWdo
dChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy5yaWdo
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisKKyAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMp
IHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3IoUmVm
UHRyPFN0eWxlSW1hZ2U+JiYsIGNvbnN0IEludFBvaW50JiBob3RTcG90ID0gSW50UG9pbnQoKSk7
CiAgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFJlZlB0cjxDdXJzb3JMaXN0PiYmKTsKICAgICB2b2lk
IGNsZWFyQ3Vyc29yTGlzdCgpOwogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAg
IHZvaWQgc2V0Q3Vyc29yVmlzaWJpbGl0eShDdXJzb3JWaXNpYmlsaXR5IGMpIHsgaW5oZXJpdGVk
X2ZsYWdzLm1fY3Vyc29yVmlzaWJpbGl0eSA9IGM7IH0KKyAgICB2b2lkIHNldEN1cnNvclZpc2li
aWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJp
bGl0eSA9IGM7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5r
IGluc2lkZUxpbmspIHsgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsg
fQotICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNM
aW5rKGIpOyB9CisgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmsp
IHsgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQorICAgIHZvaWQg
c2V0SXNMaW5rKGJvb2wgYikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldElzTGluayhiKTsgfQog
Ci0gICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRv
bikgeyBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gPSBpbnNpZGVEZWZhdWx0
QnV0dG9uOyB9CisgICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVm
YXVsdEJ1dHRvbikgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBpbnNp
ZGVEZWZhdWx0QnV0dG9uOyB9CiAKLSAgICBQcmludENvbG9yQWRqdXN0IHByaW50Q29sb3JBZGp1
c3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmludENvbG9yQWRqdXN0Pihpbmhlcml0
ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0KTsgfQotICAgIHZvaWQgc2V0UHJpbnRDb2xvckFk
anVzdChQcmludENvbG9yQWRqdXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29s
b3JBZGp1c3QgPSB2YWx1ZTsgfQorICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xvckFkanVz
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KG1faW5oZXJp
dGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCk7IH0KKyAgICB2b2lkIHNldFByaW50Q29sb3JBZGp1
c3QoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkgeyBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JB
ZGp1c3QgPSB2YWx1ZTsgfQogCi0gICAgYm9vbCBoYXNBdXRvWkluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9ib3gtPmhhc0F1dG9aSW5kZXgoKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgp
IHsgU0VUX1ZBUihtX2JveCwgbV9oYXNBdXRvWkluZGV4LCB0cnVlKTsgU0VUX1ZBUihtX2JveCwg
bV96SW5kZXgsIDApOyB9Ci0gICAgaW50IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT56
SW5kZXgoKTsgfQotICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3gsIG1f
aGFzQXV0b1pJbmRleCwgZmFsc2UpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwgdik7IH0KKyAg
ICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmhhc0F1dG9a
SW5kZXgoKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveERh
dGEsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3pJbmRleCwg
MCk7IH0KKyAgICBpbnQgekluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT56SW5kZXgo
KTsgfQorICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2hh
c0F1dG9aSW5kZXgsIGZhbHNlKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fekluZGV4LCB2KTsgfQog
Ci0gICAgdm9pZCBzZXRIYXNBdXRvV2lkb3dzKCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX2hhc0F1dG9XaWRvd3MsIHRydWUpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB3aWRv
d3MsIGluaXRpYWxXaWRvd3MoKSk7IH0KLSAgICB2b2lkIHNldFdpZG93cyhzaG9ydCB3KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywgZmFsc2UpOyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIHcpOyB9CisgICAgdm9pZCBzZXRIYXNBdXRvV2lk
b3dzKCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9XaWRvd3MsIHRydWUp
OyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygpKTsg
fQorICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBoYXNBdXRvV2lkb3dzLCBmYWxzZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
d2lkb3dzLCB3KTsgfQogCi0gICAgdm9pZCBzZXRIYXNBdXRvT3JwaGFucygpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3JwaGFucywgdHJ1ZSk7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIG9ycGhhbnMsIGluaXRpYWxPcnBoYW5zKCkpOyB9Ci0gICAgdm9pZCBzZXRP
cnBoYW5zKHNob3J0IG8pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3Jw
aGFucywgZmFsc2UpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQor
ICAgIHZvaWQgc2V0SGFzQXV0b09ycGhhbnMoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgaGFzQXV0b09ycGhhbnMsIHRydWUpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG9y
cGhhbnMsIGluaXRpYWxPcnBoYW5zKCkpOyB9CisgICAgdm9pZCBzZXRPcnBoYW5zKHNob3J0IG8p
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvT3JwaGFucywgZmFsc2UpOyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIG8pOyB9CiAKICAgICAvLyBDU1Mz
IFNldHRlcnMKLSAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoZmxvYXQgdikgeyBTRVRfVkFSKG1f
YmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGlu
ZU9mZnNldChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX29m
ZnNldCwgdik7IH0KICAgICB2b2lkIHNldFRleHRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRv
d0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlQ29s
b3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQgdykgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9Ci0gICAgdm9pZCBzZXRU
ZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRleHRGaWxsQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxv
YXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX29wYWNpdHksIHYpOyB9Ci0gICAgdm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQYXJ0
IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBlYXJhbmNlLCBhKTsgfQor
ICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4
dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
U3Ryb2tlV2lkdGgsIHcpOyB9CisgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9y
JiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0K
KyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4o
ZiwgMCwgMSk7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0eSwgdik7IH0K
KyAgICB2b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGFwcGVhcmFuY2UsIGEpOyB9CiAgICAgLy8gRm9yIHZhbGlkIHZhbHVl
cyBvZiBib3gtYWxpZ24gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy1mbGV4
Ym94LTIwMDkwNzIzLyNhbGlnbm1lbnQKLSAgICB2b2lkIHNldEJveEFsaWduKEVCb3hBbGlnbm1l
bnQgYSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVk
RmxleGlibGVCb3gsIGFsaWduLCBhKTsgfQorICAgIHZvaWQgc2V0Qm94QWxpZ24oRUJveEFsaWdu
bWVudCBhKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0
ZWRGbGV4aWJsZUJveCwgYWxpZ24sIGEpOyB9CisgICAgdm9pZCBzZXRCb3hEaXJlY3Rpb24oRUJv
eERpcmVjdGlvbiBkKSB7IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0gZDsgfQorICAg
IHZvaWQgc2V0Qm94RmxleChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleCwgZik7IH0KKyAgICB2b2lkIHNl
dEJveEZsZXhHcm91cCh1bnNpZ25lZCBncm91cCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXhHcm91cCwgZ3JvdXApOyB9
CisgICAgdm9pZCBzZXRCb3hMaW5lcyhFQm94TGluZXMgbGluZXMpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBsaW5lcywgbGlu
ZXMpOyB9CisgICAgdm9pZCBzZXRCb3hPcmRpbmFsR3JvdXAodW5zaWduZWQgZ3JvdXApIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94
LCBvcmRpbmFsR3JvdXAsIGdyb3VwKTsgfQorICAgIHZvaWQgc2V0Qm94T3JpZW50KEVCb3hPcmll
bnQgbykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVk
RmxleGlibGVCb3gsIG9yaWVudCwgbyk7IH0KKyAgICB2b2lkIHNldEJveFBhY2soRUJveFBhY2sg
cCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxl
eGlibGVCb3gsIHBhY2ssIHApOyB9CisgICAgdm9pZCBzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVf
cHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKKyAgICB2b2lkIHNldEJveFJlZmxl
Y3QoUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4mJik7CisgICAgdm9pZCBzZXRCb3hTaXppbmcoRUJv
eFNpemluZyBzKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2JveFNpemluZywgcyk7IH0KKyAgICB2
b2lkIHNldEZsZXhHcm93KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZmxleGlibGVCb3gsIGZsZXhHcm93LCBmKTsgfQorICAgIHZvaWQgc2V0RmxleFNo
cmluayhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZs
ZXhpYmxlQm94LCBmbGV4U2hyaW5rLCBmKTsgfQorICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0
aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4
aWJsZUJveCwgZmxleEJhc2lzLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRPcmRl
cihpbnQgbykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9yZGVyLCBvKTsgfQor
ICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEm
IGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkNvbnRlbnQsIGRh
dGEpOyB9CisgICAgdm9pZCBzZXRBbGlnbkl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERh
dGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkl0ZW1zLCBk
YXRhKTsgfQorICAgIHZvaWQgc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3Np
dGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduSXRlbXMuc2V0UG9z
aXRpb24ocG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRBbGlnblNlbGYoY29uc3QgU3R5bGVTZWxm
QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFs
aWduU2VsZiwgZGF0YSk7IH0KKyAgICB2b2lkIHNldEFsaWduU2VsZlBvc2l0aW9uKEl0ZW1Qb3Np
dGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduU2Vs
Zi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZs
ZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9CisgICAgdm9p
ZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBmbGV4aWJsZUJveCwgZmxleFdyYXAsIHcpOyB9CisgICAgdm9pZCBzZXRKdXN0
aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwganVzdGlmeUNvbnRlbnQsIGRhdGEpOyB9CisgICAg
dm9pZCBzZXRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbiBwb3NpdGlvbikg
eyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmp1c3RpZnlDb250ZW50LnNldFBvc2l0
aW9uKHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zKGNvbnN0IFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBq
dXN0aWZ5SXRlbXMsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25zdCBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwganVzdGlmeVNlbGYsIGRhdGEpOyB9CisKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKQotICAgIHZvaWQgc2V0Qm94RGVjb3JhdGlvbkJyZWFrKEVCb3hEZWNvcmF0aW9uQnJl
YWsgYikgeyBTRVRfVkFSKG1fYm94LCBtX2JveERlY29yYXRpb25CcmVhaywgYik7IH0KKyAgICB2
b2lkIHNldEJveERlY29yYXRpb25CcmVhayhFQm94RGVjb3JhdGlvbkJyZWFrIGIpIHsgU0VUX1ZB
UihtX2JveERhdGEsIG1fYm94RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQogI2VuZGlmCi0gICAgdm9p
ZCBzZXRCb3hEaXJlY3Rpb24oRUJveERpcmVjdGlvbiBkKSB7IGluaGVyaXRlZF9mbGFncy5fYm94
X2RpcmVjdGlvbiA9IGQ7IH0KLSAgICB2b2lkIHNldEJveEZsZXgoZmxvYXQgZikgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGZs
ZXgsIGYpOyB9Ci0gICAgdm9pZCBzZXRCb3hGbGV4R3JvdXAodW5zaWduZWQgaW50IGZnKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eCwgZmxleF9ncm91cCwgZmcpOyB9Ci0gICAgdm9pZCBzZXRCb3hMaW5lcyhFQm94TGluZXMgbCkg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGli
bGVCb3gsIGxpbmVzLCBsKTsgfQotICAgIHZvaWQgc2V0Qm94T3JkaW5hbEdyb3VwKHVuc2lnbmVk
IGludCBvZykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNh
dGVkRmxleGlibGVCb3gsIG9yZGluYWxfZ3JvdXAsIG9nKTsgfQotICAgIHZvaWQgc2V0Qm94T3Jp
ZW50KEVCb3hPcmllbnQgbykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9kZXByZWNhdGVkRmxleGlibGVCb3gsIG9yaWVudCwgbyk7IH0KLSAgICB2b2lkIHNldEJveFBh
Y2soRUJveFBhY2sgcCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9k
ZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHApOyB9Ci0gICAgdm9pZCBzZXRCb3hTaGFkb3co
c3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKLSAgICB2b2lk
IHNldEJveFJlZmxlY3QoUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4mJiByZWZsZWN0KSB7IGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0ICE9IHJlZmxlY3QpIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2JveFJlZmxlY3QgPSBXVEZNb3ZlKHJlZmxlY3QpOyB9Ci0g
ICAgdm9pZCBzZXRCb3hTaXppbmcoRUJveFNpemluZyBzKSB7IFNFVF9WQVIobV9ib3gsIG1fYm94
U2l6aW5nLCBzKTsgfQotICAgIHZvaWQgc2V0RmxleEdyb3coZmxvYXQgZikgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4R3JvdywgZik7
IH0KLSAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4U2hyaW5rLCBmKTsgfQotICAg
IHZvaWQgc2V0RmxleEJhc2lzKExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleEJhc2lzLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX29yZGVyLCBvKTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KGNvbnN0IFN0
eWxlQ29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9hbGlnbkNvbnRlbnQsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnRQ
b3NpdGlvbihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZv
aWQgc2V0QWxpZ25Db250ZW50T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNldE92ZXJmbG93
KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKENvbnRl
bnREaXN0cmlidXRpb25UeXBlIGRpc3RyaWJ1dGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9hbGlnbkNvbnRlbnQuc2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7IH0K
LSAgICB2b2lkIHNldEFsaWduSXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0
YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXMsIGRhdGEpOyB9
Ci0gICAgdm9pZCBzZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0UG9zaXRpb24o
cG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dBbGln
bm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25J
dGVtcy5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEFsaWduU2VsZihjb25z
dCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fYWxpZ25TZWxmLCBkYXRhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmUG9zaXRp
b24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2FsaWduU2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWdu
U2VsZk92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduU2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAg
ICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhEaXJl
Y3Rpb24sIGRpcmVjdGlvbik7IH0KLSAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3JhcCB3KSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBtX2Zs
ZXhXcmFwLCB3KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoY29uc3QgU3R5bGVDb250
ZW50QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2p1c3RpZnlDb250ZW50LCBkYXRhKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnRQb3Np
dGlvbihDb250ZW50UG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fanVzdGlmeUNvbnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9p
ZCBzZXRKdXN0aWZ5Q29udGVudE92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50LnNldE92ZXJm
bG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24o
Q29udGVudERpc3RyaWJ1dGlvblR5cGUgZGlzdHJpYnV0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50LnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRp
b24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50
RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVt
cywgZGF0YSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlv
biBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRl
bXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNPdmVy
ZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9p
ZCBzZXRKdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5
cGUpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldFBv
c2l0aW9uVHlwZShwb3NpdGlvblR5cGUpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25z
dCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fanVzdGlmeVNlbGYsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZlBv
c2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9qdXN0aWZ5U2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNl
dEp1c3RpZnlTZWxmT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeVNlbGYuc2V0T3ZlcmZsb3cob3ZlcmZs
b3cpOyB9CisKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIHZvaWQgc2V0R3JpZEF1
dG9Db2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplTGlzdCkgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRBdXRvQ29s
dW1ucywgdHJhY2tTaXplTGlzdCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUm93cyhjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1Jvd3MsIHRyYWNrU2l6ZUxpc3Qp
OyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwg
bV9ncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQotICAgIHZvaWQgc2V0
R3JpZEF1dG9SZXBlYXRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3Ro
cykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRB
dXRvUmVwZWF0Q29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0
Um93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVhdFJvd3MsIGxl
bmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2lu
dChjb25zdCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQs
IGluc2VydGlvblBvaW50KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0
aW9uUG9pbnQoY29uc3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBv
aW50LCBpbnNlcnRpb25Qb2ludCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1u
c1R5cGUoY29uc3QgQXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUs
IGF1dG9SZXBlYXRUeXBlKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzVHlwZShj
b25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRSb3dzVHlwZSwgYXV0b1JlcGVh
dFR5cGUpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdy
aWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlk
Q29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBOYW1l
ZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93
TGluZXMpOyB9Ci0gICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3Qg
T3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsg
U0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9vcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2
b2lkIHNldE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5hbWVkR3JpZENv
bHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcykg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBl
YXROYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9p
ZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAm
IG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2dyaWQsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5l
cyk7IH0KLSAgICB2b2lkIHNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMo
Y29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRv
UmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMpOyB9Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1Jl
cGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsg
fQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1l
ZEdyaWRBcmVhKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fbmFtZWRHcmlkQXJlYSwgbmFtZWRHcmlkQXJlYSk7IH0KLSAgICB2b2lkIHNldE5hbWVkR3Jp
ZEFyZWFSb3dDb3VudChzaXplX3Qgcm93Q291bnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQsIHJvd0NvdW50KTsg
fQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KHNpemVfdCBjb2x1bW5Db3Vu
dCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVk
R3JpZEFyZWFDb2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0
b0Zsb3coR3JpZEF1dG9GbG93IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b0Zsb3csIGZsb3cpOyB9Ci0gICAgdm9pZCBzZXRHcmlk
SXRlbUNvbHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uU3RhcnRQb3NpdGlvbikg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkSXRlbSwgbV9ncmlk
Q29sdW1uU3RhcnQsIGNvbHVtblN0YXJ0UG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRl
bUNvbHVtbkVuZChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtbkVuZFBvc2l0aW9uKSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW5F
bmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dTdGFydChj
b25zdCBHcmlkUG9zaXRpb24mIHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZFJvd1N0YXJ0LCByb3dTdGFydFBv
c2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dFbmQoY29uc3QgR3JpZFBvc2l0aW9u
JiByb3dFbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkSXRlbSwgbV9ncmlkUm93RW5kLCByb3dFbmRQb3NpdGlvbik7IH0KLSAgICB2b2lkIHNl
dEdyaWRDb2x1bW5HYXAoY29uc3QgTGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZENvbHVtbkdhcCwgdik7IH0KLSAgICB2b2lkIHNl
dEdyaWRSb3dHYXAoY29uc3QgTGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZFJvd0dhcCwgdik7IH0KLSNlbmRpZiAvKiBFTkFCTEUo
Q1NTX0dSSURfTEFZT1VUKSAqLwotICAgIHZvaWQgc2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUs
IGluY3JlbWVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZVNwZWVk
KGludCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUs
IHNwZWVkLCBmKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVlZURpcmVj
dGlvbiBkKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUs
IGRpcmVjdGlvbiwgZCk7IH0KLSAgICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihFTWFycXVlZUJl
aGF2aW9yIGIpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVl
ZSwgYmVoYXZpb3IsIGIpOyB9Ci0gICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50KGludCBpKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGxvb3BzLCBp
KTsgfQotICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIHVzZXJNb2RpZnksIHUpOyB9Ci0gICAgdm9pZCBzZXRVc2VyRHJhZyhF
VXNlckRyYWcgZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2VyRHJhZywgZCk7
IH0KLSAgICB2b2lkIHNldFVzZXJTZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBzKTsgfQotICAgIHZvaWQgc2V0VGV4dE92ZXJmbG93
KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB0
ZXh0T3ZlcmZsb3csIG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQmVmb3JlQ29sbGFw
c2UoRU1hcmdpbkNvbGxhcHNlIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFy
Z2luQmVmb3JlQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRlckNvbGxhcHNl
KEVNYXJnaW5Db2xsYXBzZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdp
bkFmdGVyQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdvcmRCcmVhayBi
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdvcmRCcmVhaywgYik7IH0KLSAgICB2b2lk
IHNldE92ZXJmbG93V3JhcChFT3ZlcmZsb3dXcmFwIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgb3ZlcmZsb3dXcmFwLCBiKTsgfQotICAgIHZvaWQgc2V0TkJTUE1vZGUoRU5CU1BNb2Rl
IGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9Ci0gICAgdm9p
ZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bGluZUJyZWFrLCBiKTsgfQotICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0
aW9uTGltaXRCZWZvcmUoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
aHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlw
aGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGlt
aXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5h
dGlvbkxpbWl0TGluZXMsIGxpbWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25TdHJpbmco
Y29uc3QgQXRvbWljU3RyaW5nJiBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhl
bmF0aW9uU3RyaW5nLCBoKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JvcmRlckZpdCwgYik7IH0KLSAgICB2
b2lkIHNldFJlc2l6ZShFUmVzaXplIHIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9yZXNpemUsIHIpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9heGlz
LCBheGlzKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1uUHJvZ3Jlc3Np
b24gcHJvZ3Jlc3Npb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fcHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTsgfQotICAgIHZvaWQgc2V0Q29s
dW1uV2lkdGgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fd2lkdGgsIGYpOyB9Ci0gICAgdm9pZCBzZXRIYXNB
dXRvQ29sdW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX2F1dG9XaWR0aCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3dpZHRoLCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1u
Q291bnQodW5zaWduZWQgc2hvcnQgYykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fY291bnQsIGMpOyB9Ci0gICAgdm9pZCBz
ZXRIYXNBdXRvQ29sdW1uQ291bnQoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX211bHRpQ29sLCBtX2F1dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2NvdW50LCAwKTsgfQotICAgIHZvaWQgc2V0
Q29sdW1uRmlsbChDb2x1bW5GaWxsIGNvbHVtbkZpbGwpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fZmlsbCwgY29sdW1uRmlsbCk7IH0KLSAgICB2
b2lkIHNldENvbHVtbkdhcChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX211bHRpQ29sLCBtX25vcm1hbEdhcCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9nYXAsIGYpOyB9Ci0gICAgdm9pZCBz
ZXRIYXNOb3JtYWxDb2x1bW5HYXAoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX211bHRpQ29sLCBtX25vcm1hbEdhcCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2dhcCwgMCk7IH0KLSAgICB2b2lkIHNldENv
bHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwgYyk7IH0KLSAg
ICB2b2lkIHNldENvbHVtblJ1bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxlLm1fc3R5bGUsIGIpOyB9
Ci0gICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgodW5zaWduZWQgc2hvcnQgdykgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxlLm1fd2lkdGgs
IHcpOyB9Ci0gICAgdm9pZCByZXNldENvbHVtblJ1bGUoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3J1bGUsIEJvcmRlclZhbHVlKCkpOyB9Ci0g
ICAgdm9pZCBzZXRDb2x1bW5TcGFuKENvbHVtblNwYW4gY29sdW1uU3BhbikgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9jb2x1bW5TcGFuLCBjb2x1
bW5TcGFuKTsgfQotICAgIHZvaWQgaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVs
dGlDb2wgPSBwYXJlbnQtPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sOyB9Ci0gICAg
dm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV9vcGVyYXRpb25z
LCBvcHMpOyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCBsZW5ndGgpIHsg
U0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3gsIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0s
IG1feSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihm
bG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9y
bSwgbV96LCBmKTsgfQotICAgIHZvaWQgc2V0U3BlYWsoRVNwZWFrIHMpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0
Q29tYmluZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4dENvbWJpbmUs
IHYpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4dERlY29yYXRpb25Db2xvciwgYyk7
IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0NvbG9yLCBjKTsgfQotICAgIHZvaWQg
c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsIGZpbGwpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgZmlsbCk7IH0KLSAgICB2b2lkIHNldFRl
eHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1w
aGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQotICAgIHZvaWQg
c2V0VGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb24gcG9zaXRpb24pIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzUG9zaXRpb24sIHBvc2l0aW9u
KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9Db2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgdHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBncmlkLCBncmlkQXV0b0NvbHVtbnMsIHRyYWNrU2l6ZUxpc3QpOyB9CisgICAgdm9pZCBz
ZXRHcmlkQXV0b1Jvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0
KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRv
Um93cywgdHJhY2tTaXplTGlzdCk7IH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkLCBncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNl
dEdyaWRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVT
VEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkUm93cywgbGVuZ3Rocyk7
IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgZ3JpZCwgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0
R3JpZEF1dG9SZXBlYXRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3Rocykg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b1Jl
cGVhdFJvd3MsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNJ
bnNlcnRpb25Qb2ludChjb25zdCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Q29sdW1uc0luc2Vy
dGlvblBvaW50LCBpbnNlcnRpb25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0
Um93c0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRSb3dzSW5z
ZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBl
YXRDb2x1bW5zVHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Q29sdW1u
c1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dz
VHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Um93c1R5cGUsIGF1dG9S
ZXBlYXRUeXBlKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFt
ZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdy
aWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5h
bWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBuYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93
TGluZXMpOyB9CisgICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3Qg
T3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgb3JkZXJlZE5hbWVk
R3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9p
ZCBzZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVz
TWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1u
TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXROYW1l
ZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9pZCBzZXRB
dXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVk
R3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdy
aWQsIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9Cisg
ICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9y
ZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0K
KyAgICB2b2lkIHNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3Jk
ZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE9yZGVyZWRO
YW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAgIHZvaWQg
c2V0TmFtZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFy
ZWEsIG5hbWVkR3JpZEFyZWEpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93Q291bnQo
c2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGdyaWQsIG5hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CisgICAgdm9pZCBzZXRO
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3Vu
dCwgY29sdW1uQ291bnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b0Zsb3coR3JpZEF1dG9GbG93
IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3Jp
ZEF1dG9GbG93LCBmbG93KTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5TdGFydChjb25z
dCBHcmlkUG9zaXRpb24mIGNvbHVtblN0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRDb2x1bW5TdGFydCwgY29sdW1uU3Rh
cnRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uRW5kKGNvbnN0IEdyaWRQ
b3NpdGlvbiYgY29sdW1uRW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsg
fQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dTdGFydChjb25zdCBHcmlkUG9zaXRpb24mIHJvd1N0
YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZEl0ZW0sIGdyaWRSb3dTdGFydCwgcm93U3RhcnRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdy
aWRJdGVtUm93RW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93RW5kUG9zaXRpb24pIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRSb3dFbmQsIHJv
d0VuZFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZENvbHVtbkdhcChMZW5ndGgmJiBsZW5n
dGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZENv
bHVtbkdhcCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0R3JpZFJvd0dhcChMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZCwgZ3JpZFJvd0dhcCwgV1RGTW92ZShsZW5ndGgpKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDU1Nf
R1JJRF9MQVlPVVQpCisKKyAgICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGlu
Y3JlbWVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFycXVlZVNwZWVkKGlu
dCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIHNw
ZWVkLCBmKTsgfQorICAgIHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVlZURpcmVjdGlv
biBkKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGRp
cmVjdGlvbiwgZCk7IH0KKyAgICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihFTWFycXVlZUJlaGF2
aW9yIGIpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwg
YmVoYXZpb3IsIGIpOyB9CisgICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50KGludCBpKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGxvb3BzLCBpKTsg
fQorICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgdXNlck1vZGlmeSwgdSk7IH0KKyAgICB2b2lkIHNldFVzZXJEcmFnKEVV
c2VyRHJhZyBkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdXNlckRyYWcsIGQp
OyB9CisgICAgdm9pZCBzZXRVc2VyU2VsZWN0KEVVc2VyU2VsZWN0IHMpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBzKTsgfQorICAgIHZvaWQgc2V0VGV4dE92ZXJm
bG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHRleHRPdmVyZmxvdywgb3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVD
b2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG1hcmdpbkJlZm9yZUNvbGxhcHNlLCBjKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXJD
b2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMpOyB9CisgICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdv
cmRCcmVhayBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgd29yZEJyZWFrLCBiKTsg
fQorICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVPdmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3JhcCwgYik7IH0KKyAgICB2b2lkIHNldE5CU1BN
b2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUs
IGIpOyB9CisgICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5zKEh5
cGhlbnMgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbnMsIGgpOyB9Cisg
ICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGltaXQpOyB9Cisg
ICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsIGxpbWl0KTsgfQorICAg
IHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdExpbmVzLCBsaW1pdCk7IH0KKyAgICB2
b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaCkgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIGJvcmRlckZpdCwgYik7IH0KKyAgICB2b2lkIHNldFJlc2l6ZShFUmVzaXplIHIpIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZXNpemUsIHIpOyB9CisgICAgdm9pZCBzZXRD
b2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgYXhpcyk7IH0KKyAgICB2b2lkIHNldENvbHVtblBy
b2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgcHJvZ3Jlc3Np
b24pOyB9CisgICAgdm9pZCBzZXRDb2x1bW5XaWR0aChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBhdXRvV2lkdGgsIGZhbHNlKTsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdpZHRoLCBmKTsg
fQorICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbldpZHRoKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b1dpZHRoLCB0cnVlKTsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdpZHRoLCAwKTsgfQorICAg
IHZvaWQgc2V0Q29sdW1uQ291bnQodW5zaWduZWQgc2hvcnQgYykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b0NvdW50LCBmYWxzZSk7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBjb3VudCwgYyk7IH0K
KyAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5Db3VudCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBjb3VudCwgMCk7IH0KKyAgICB2
b2lkIHNldENvbHVtbkZpbGwoQ29sdW1uRmlsbCBjb2x1bW5GaWxsKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBmaWxsLCBjb2x1bW5GaWxsKTsgfQor
ICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIG5vcm1hbEdhcCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgZ2FwLCBmKTsgfQorICAgIHZvaWQg
c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBtdWx0aUNvbCwgbm9ybWFsR2FwLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGdhcCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVt
blJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tdWx0aUNvbCwgcnVsZSwgYyk7IH0KKyAgICB2b2lk
IHNldENvbHVtblJ1bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgcnVsZS5tX3N0eWxlLCBiKTsgfQorICAgIHZv
aWQgc2V0Q29sdW1uUnVsZVdpZHRoKHVuc2lnbmVkIHNob3J0IHcpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHJ1bGUubV93aWR0aCwgdyk7IH0KKyAg
ICB2b2lkIHJlc2V0Q29sdW1uUnVsZSgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbXVsdGlDb2wsIHJ1bGUsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCBzZXRD
b2x1bW5TcGFuKENvbHVtblNwYW4gY29sdW1uU3BhbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY29sdW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KKyAg
ICB2b2lkIGluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubXVsdGlDb2wgPSBwYXJlbnQu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2w7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgdHJhbnNmb3JtLCBvcGVyYXRpb25zLCBvcHMpOyB9CisgICAgdm9p
ZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zvcm0sIHgsIFdURk1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeSwgV1RGTW92ZShsZW5n
dGgpKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeiwgZik7IH0KKyAgICB2
b2lkIHNldFNwZWFrKEVTcGVhayBzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgc3Bl
YWssIHMpOyB9CisgICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dENvbWJpbmUsIHYpOyB9CisgICAgdm9pZCBz
ZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRl
eHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNG
aWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJr
KFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRl
eHRFbXBoYXNpc01hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21N
YXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1w
aGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KICAg
ICBib29sIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24pOwogCi0gICAgdm9pZCBz
ZXRPYmplY3RGaXQoT2JqZWN0Rml0IGZpdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX29iamVjdEZpdCwgZml0KTsgfQotICAgIHZvaWQgc2V0T2JqZWN0UG9zaXRpb24oY29uc3Qg
TGVuZ3RoUG9pbnQmIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
b2JqZWN0UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVj
dEZpdCBmaXQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RGaXQsIGZp
dCk7IH0KKyAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24p
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3NpdGlvbiwgV1RGTW92
ZShwb3NpdGlvbikpOyB9CisKKyAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24g
cG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24sIHBv
c2l0aW9uKTsgfQogCi0gICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9uIHBvc2l0
aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fcnVieVBvc2l0aW9uLCBwb3NpdGlv
bik7IH0KKyAgICB2b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmlsdGVyLCBvcGVyYXRpb25z
LCBvcHMpOyB9CiAKLSAgICB2b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
cHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmlsdGVyLCBtX29w
ZXJhdGlvbnMsIG9wcyk7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIHZvaWQg
c2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tkcm9wRmlsdGVyLCBtX29wZXJhdGlv
bnMsIG9wcyk7IH0KKyAgICB2b2lkIHNldEJhY2tkcm9wRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBiYWNr
ZHJvcEZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRh
YlNpemUodW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RhYlNp
emUsIHNpemUpOyB9CisgICAgdm9pZCBzZXRUYWJTaXplKHVuc2lnbmVkIHNpemUpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YWJTaXplLCBzaXplKTsgfQogCi0gICAgdm9pZCBzZXRC
cmVha0JlZm9yZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2JyZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQotICAgIHZvaWQg
c2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2JyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9Ci0gICAgdm9p
ZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAg
dm9pZCBzZXRCcmVha0JlZm9yZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQor
ICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9
CisgICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3Ip
OyB9CiAgICAgCi0gICAgdm9pZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1bmN0dWF0
aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFuZ2luZ1B1
bmN0dWF0aW9uLCBwdW5jdHVhdGlvbik7IH0KKyAgICB2b2lkIHNldEhhbmdpbmdQdW5jdHVhdGlv
bihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCBoYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQogCiAgICAgLy8gRW5k
IENTUzMgU2V0dGVycwogCi0gICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcm
IGxpbmVHcmlkKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUdyaWQsIGxpbmVH
cmlkKTsgfQotICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lU25hcCwgbGluZVNuYXApOyB9Ci0gICAgdm9pZCBz
ZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCBtX2xpbmVBbGlnbiwgbGluZUFsaWduKTsgfQorICAgIHZvaWQgc2V0TGluZUdyaWQoY29u
c3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IGxpbmVHcmlkLCBsaW5lR3JpZCk7IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxp
bmVTbmFwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIGxpbmVTbmFw
KTsgfQorICAgIHZvaWQgc2V0TGluZUFsaWduKExpbmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQWxpZ24sIGxpbmVBbGlnbik7IH0KIAotICAgIHZv
aWQgc2V0Rmxvd1RocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbG93VGhyZWFkLCBmbG93VGhyZWFkKTsgfQotICAg
IHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhyZWFkKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uVGhyZWFkLCByZWdpb25UaHJl
YWQpOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25GcmFnbWVudChSZWdpb25GcmFnbWVudCByZWdpb25G
cmFnbWVudCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvbkZyYWdtZW50
LCByZWdpb25GcmFnbWVudCk7IH0KKyAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBmbG93VGhyZWFkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxv
d1RocmVhZCwgZmxvd1RocmVhZCk7IH0KKyAgICB2b2lkIHNldFJlZ2lvblRocmVhZChjb25zdCBB
dG9taWNTdHJpbmcmIHJlZ2lvblRocmVhZCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHJlZ2lvblRocmVhZCwgcmVnaW9uVGhyZWFkKTsgfQorICAgIHZvaWQgc2V0UmVnaW9uRnJh
Z21lbnQoUmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCByZWdpb25GcmFnbWVudCwgcmVnaW9uRnJhZ21lbnQpOyB9CiAKLSAgICAv
LyBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0eSBzZXR0ZXJzCi0gICAgdm9pZCBzZXRQb2ludGVyRXZl
bnRzKEVQb2ludGVyRXZlbnRzIHApIHsgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzID0g
cDsgfQorICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhFUG9pbnRlckV2ZW50cyBwKSB7IG1faW5o
ZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHA7IH0KIAotICAgIHZvaWQgY2xlYXJBbmltYXRp
b25zKCkKLSAgICB7Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Fu
aW1hdGlvbnMgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJUcmFuc2l0aW9ucygp
Ci0gICAgewotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0
aW9ucyA9IG51bGxwdHI7Ci0gICAgfQorICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCk7CisgICAg
dm9pZCBjbGVhclRyYW5zaXRpb25zKCk7CiAKLSAgICB2b2lkIGluaGVyaXRBbmltYXRpb25zKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9hbmltYXRpb25zID0gcGFyZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
PigqcGFyZW50KSA6IG51bGxwdHI7IH0KLSAgICB2b2lkIGluaGVyaXRUcmFuc2l0aW9ucyhjb25z
dCBBbmltYXRpb25MaXN0KiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fdHJhbnNpdGlvbnMgPSBwYXJlbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpwYXJlbnQpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgYWRqdXN0QW5pbWF0aW9ucygpOwogICAg
IHZvaWQgYWRqdXN0VHJhbnNpdGlvbnMoKTsKIAotICAgIHZvaWQgc2V0VHJhbnNmb3JtU3R5bGUz
RChFVHJhbnNmb3JtU3R5bGUzRCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
dHJhbnNmb3JtU3R5bGUzRCwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShF
QmFja2ZhY2VWaXNpYmlsaXR5IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9i
YWNrZmFjZVZpc2liaWxpdHksIGIpOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVjdGl2ZShmbG9hdCBw
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmUsIHApOyB9Ci0g
ICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWCwgV1RGTW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BhZ2VTaXplLCBXVEZNb3ZlKHNpemUpKTsgfQot
ICAgIHZvaWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBlLCB0KTsgfQotICAgIHZvaWQgcmVzZXRQYWdl
U2l6ZVR5cGUoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBl
LCBQQUdFX1NJWkVfQVVUTyk7IH0KLQotICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJv
eENvbnRhaW4gYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVCb3hDb250YWlu
LCBjKTsgfQotICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQorICAgIHZvaWQgc2V0VHJh
bnNmb3JtU3R5bGUzRChFVHJhbnNmb3JtU3R5bGUzRCBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdHJhbnNmb3JtU3R5bGUzRCwgYik7IH0KKyAgICB2b2lkIHNldEJhY2tmYWNl
VmlzaWJpbGl0eShFQmFja2ZhY2VWaXNpYmlsaXR5IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBiYWNrZmFjZVZpc2liaWxpdHksIGIpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVj
dGl2ZShmbG9hdCBwKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3Rp
dmUsIHApOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoJiYgbGVuZ3Ro
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmVPcmlnaW5YLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblkoTGVuZ3Ro
JiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmVP
cmlnaW5ZLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5ndGhT
aXplIHNpemUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwYWdlU2l6ZSwgV1RG
TW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldFBhZ2VTaXplVHlwZShQYWdlU2l6ZVR5cGUgdCkg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBhZ2VTaXplVHlwZSwgdCk7IH0KKyAg
ICB2b2lkIHJlc2V0UGFnZVNpemVUeXBlKCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHBhZ2VTaXplVHlwZSwgUEFHRV9TSVpFX0FVVE8pOyB9CisKKyAgICB2b2lkIHNldExpbmVC
b3hDb250YWluKExpbmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBsaW5lQm94Q29udGFpbiwgYyk7IH0KKyAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBW
YWx1ZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsg
fQogICAgIAotICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXplJiBzaXplKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwgc2l6ZSk7IH0K
KyAgICB2b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGluaXRpYWxMZXR0ZXIsIHNpemUpOyB9CiAgICAgCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNoQWN0
aW9uIHRvdWNoQWN0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdG91Y2hB
Y3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9CisgICAgdm9pZCBz
ZXRUb3VjaEFjdGlvbihUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHRvdWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG91Y2hB
Y3Rpb24pKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIC8v
IFNjcm9sbCBzbmFwIHBvcnQgc3R5bGUuCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwVHlwZShjb25z
dCBTY3JvbGxTbmFwVHlwZSYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChjb25zdCBM
ZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdCb3R0b20oY29uc3QgTGVuZ3RoJik7
Ci0gICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nTGVmdChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lk
IHNldFNjcm9sbFBhZGRpbmdSaWdodChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFNjcm9s
bFBhZGRpbmdUb3AoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ0JvdHRvbShM
ZW5ndGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nTGVmdChMZW5ndGgmJik7CisgICAg
dm9pZCBzZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3RoJiYpOwogCi0gICAgLy8gU2Nyb2xsIHNu
YXAgYXJlYSBzdHlsZS4KICAgICB2b2lkIHNldFNjcm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxT
bmFwQWxpZ24mKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVuZ3Ro
Jik7Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luQm90dG9tKGNvbnN0IExlbmd0aCYpOwot
ICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQoY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9p
ZCBzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRT
Y3JvbGxTbmFwTWFyZ2luVG9wKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJn
aW5Cb3R0b20oTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQoTGVu
Z3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpblJpZ2h0KExlbmd0aCYmKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRhcEhpZ2hsaWdo
dENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhp
Z2hsaWdodENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xv
ciwgYyk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2V0VG91Y2hD
YWxsb3V0RW5hYmxlZChib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdG91Y2hD
YWxsb3V0RW5hYmxlZCwgdik7IH0KKyAgICB2b2lkIHNldFRvdWNoQ2FsbG91dEVuYWJsZWQoYm9v
bCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdG91Y2hDYWxsb3V0RW5hYmxlZCwg
dik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykKLSAgICB2b2lkIHNldFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9Cisg
ICAgdm9pZCBzZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRUZXh0U2l6ZUFk
anVzdChUZXh0U2l6ZUFkanVzdG1lbnQgYW5BZGp1c3RtZW50KSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHRleHRTaXplQWRqdXN0LCBhbkFkanVzdG1lbnQpOyB9CisgICAgdm9pZCBzZXRU
ZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQgYWRqdXN0bWVudCkgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRTaXplQWRqdXN0LCBhZGp1c3RtZW50KTsgfQogI2VuZGlm
CiAKLSAgICB2b2lkIHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5
KTsgfQorICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgc2VjdXJpdHkpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIHNlY3VyaXR5KTsgfQog
CiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQotICAgIHZvaWQgc2V0VHJhaWxpbmdXb3Jk
KFRyYWlsaW5nV29yZCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRyYWlsaW5nV29y
ZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0VHJhaWxpbmdXb3Jk
KFRyYWlsaW5nV29yZCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdHJhaWxpbmdX
b3JkLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCi0gICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0dG9u
U3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FwcGxlUGF5QnV0dG9u
U3R5bGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5
QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2FwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsg
fQorICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxlIHN0
eWxlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25TdHls
ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0eWxlKSk7IH0KKyAgICB2b2lkIHNldEFwcGxlUGF5
QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpKTsgfQogI2VuZGlmCiAKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUoKSBj
b25zdCB7IHJldHVybiAqbV9zdmdTdHlsZTsgfQotICAgIFNWR1JlbmRlclN0eWxlJiBhY2Nlc3NT
VkdTdHlsZSgpIHsgcmV0dXJuICptX3N2Z1N0eWxlLmFjY2VzcygpOyB9CisgICAgY29uc3QgU1ZH
UmVuZGVyU3R5bGUmIHN2Z1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdTdHlsZTsgfQorICAg
IFNWR1JlbmRlclN0eWxlJiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJuIG1fc3ZnU3R5bGUuYWNj
ZXNzKCk7IH0KIAogICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmlsbFBhaW50VHlwZSgpOyB9CiAgICAgQ29sb3IgZmlsbFBh
aW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWludENvbG9yKCk7IH0K
LSAgICB2b2lkIHNldEZpbGxQYWludENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0RmlsbFBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQorICAg
IHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0RmlsbFBhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGNvbG9yLCBlbXB0eVN0
cmluZygpKTsgfQogICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5maWxsT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBmKSB7
IGFjY2Vzc1NWR1N0eWxlKCkuc2V0RmlsbE9wYWNpdHkoZik7IH0KIAogICAgIGNvbnN0IFNWR1Bh
aW50VHlwZSYgc3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJv
a2VQYWludFR5cGUoKTsgfQogICAgIENvbG9yIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tl
UGFpbnRDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVBh
aW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tl
UGFpbnRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJv
a2VQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBjb2xvciwgZW1wdHlTdHJpbmcoKSk7IH0K
ICAgICBmbG9hdCBzdHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJv
a2VPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQgZikgeyBhY2Nl
c3NTVkdTdHlsZSgpLnNldFN0cm9rZU9wYWNpdHkoZik7IH0KICAgICBjb25zdCBMZW5ndGgmIHN0
cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VXaWR0aCgpOyB9Ci0g
ICAgdm9pZCBzZXRTdHJva2VXaWR0aChMZW5ndGggdykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0
cm9rZVdpZHRoKHcpOyB9CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChMZW5ndGgmJiB3KSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlV2lkdGgoV1RGTW92ZSh3KSk7IH0KICAgICBWZWN0b3I8
U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCkuc3Ryb2tlRGFzaEFycmF5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZURhc2hBcnJheShWZWN0
b3I8U1ZHTGVuZ3RoVmFsdWU+IGFycmF5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlRGFz
aEFycmF5KGFycmF5KTsgfQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlRGFzaE9mZnNldCgpOyB9Ci0gICAgdm9pZCBz
ZXRTdHJva2VEYXNoT2Zmc2V0KExlbmd0aCBkKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tl
RGFzaE9mZnNldChkKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChMZW5ndGgmJiBk
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlRGFzaE9mZnNldChXVEZNb3ZlKGQpKTsgfQog
ICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0
cm9rZU1pdGVyTGltaXQoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBm
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlTWl0ZXJMaW1pdChmKTsgfQogCiAgICAgY29u
c3QgTGVuZ3RoJiBjeCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3goKTsgfQotICAgIHZv
aWQgc2V0Q3goTGVuZ3RoIGN4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3goY3gpOyB9CisgICAg
dm9pZCBzZXRDeChMZW5ndGgmJiBjeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN4KFdURk1vdmUo
Y3gpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgY3koKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgp
LmN5KCk7IH0KLSAgICB2b2lkIHNldEN5KExlbmd0aCBjeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNl
dEN5KGN5KTsgfQorICAgIHZvaWQgc2V0Q3koTGVuZ3RoJiYgY3kpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRDeShXVEZNb3ZlKGN5KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLnIoKTsgfQotICAgIHZvaWQgc2V0UihMZW5ndGggcikgeyBhY2Nlc3NT
VkdTdHlsZSgpLnNldFIocik7IH0KKyAgICB2b2lkIHNldFIoTGVuZ3RoJiYgcikgeyBhY2Nlc3NT
VkdTdHlsZSgpLnNldFIoV1RGTW92ZShyKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJ4KCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5yeCgpOyB9Ci0gICAgdm9pZCBzZXRSeChMZW5ndGggcngp
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRSeChyeCk7IH0KKyAgICB2b2lkIHNldFJ4KExlbmd0aCYm
IHJ4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UngoV1RGTW92ZShyeCkpOyB9CiAgICAgY29uc3Qg
TGVuZ3RoJiByeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkucnkoKTsgfQotICAgIHZvaWQg
c2V0UnkoTGVuZ3RoIHJ5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UnkocnkpOyB9CisgICAgdm9p
ZCBzZXRSeShMZW5ndGgmJiByeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFJ5KFdURk1vdmUocnkp
KTsgfQogICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkueCgp
OyB9Ci0gICAgdm9pZCBzZXRYKExlbmd0aCB4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WCh4KTsg
fQorICAgIHZvaWQgc2V0WChMZW5ndGgmJiB4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WChXVEZN
b3ZlKHgpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCkueSgpOyB9Ci0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0
WSh5KTsgfQorICAgIHZvaWQgc2V0WShMZW5ndGgmJiB5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0
WShXVEZNb3ZlKHkpKTsgfQogCiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5
KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGbG9vZE9wYWNpdHkoZik7IH0KQEAgLTE4
MDcsNDAgKzEyOTUsMjUgQEAgcHVibGljOgogICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmcoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmtlcm5pbmcoKTsgfQogICAgIHZvaWQgc2V0S2Vybmlu
ZyhTVkdMZW5ndGhWYWx1ZSBrKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0S2VybmluZyhrKTsgfQog
Ci0gICAgdm9pZCBzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYgdmFsdWUpCi0g
ICAgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlID09
IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9zaGFwZU91dHNpZGUgPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICB9Ci0gICAg
U2hhcGVWYWx1ZSogc2hhcGVPdXRzaWRlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fc2hhcGVPdXRzaWRlLmdldCgpOyB9Ci0KLSAgICBzdGF0aWMgU2hhcGVWYWx1ZSog
aW5pdGlhbFNoYXBlT3V0c2lkZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFNoYXBlT3V0
c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJik7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVPdXRzaWRl
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlLmdl
dCgpOyB9CisgICAgc3RhdGljIFNoYXBlVmFsdWUqIGluaXRpYWxTaGFwZU91dHNpZGUoKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIHNoYXBlTWFyZ2luKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW47IH0KLSAgICB2b2lk
IHNldFNoYXBlTWFyZ2luKExlbmd0aCBzaGFwZU1hcmdpbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX3NoYXBlTWFyZ2luLCBXVEZNb3ZlKHNoYXBlTWFyZ2luKSk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHNoYXBlTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2hhcGVNYXJnaW47IH0KKyAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExlbmd0aCYm
IHNoYXBlTWFyZ2luKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVNYXJn
aW4sIFdURk1vdmUoc2hhcGVNYXJnaW4pKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNo
YXBlTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQogCi0gICAgZmxvYXQgc2hh
cGVJbWFnZVRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3NoYXBlSW1hZ2VUaHJlc2hvbGQ7IH0KLSAgICB2b2lkIHNldFNoYXBlSW1hZ2VUaHJlc2hvbGQo
ZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCkgCi0gICAgeyAKLSAgICAgICAgZmxvYXQgY2xhbXBl
ZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRvPGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xk
LCAwLCAxKTsKLSAgICAgICAgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZUlt
YWdlVGhyZXNob2xkLCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCk7IAotICAgIH0KKyAgICBm
bG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+c2hhcGVJbWFnZVRocmVzaG9sZDsgfQorICAgIHZvaWQgc2V0U2hhcGVJbWFnZVRo
cmVzaG9sZChmbG9hdCk7CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxTaGFwZUltYWdlVGhyZXNo
b2xkKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdm9pZCBzZXRDbGlwUGF0aChSZWZQdHI8Q2xpcFBh
dGhPcGVyYXRpb24+JiYgb3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IG9wZXJhdGlvbikKLSAgICAgICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NsaXBQYXRoID0gV1RGTW92ZShvcGVyYXRpb24pOwot
ICAgIH0KLSAgICBDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBhdGgoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aC5nZXQoKTsgfQotCisgICAgdm9pZCBzZXRD
bGlwUGF0aChSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYpOworICAgIENsaXBQYXRoT3BlcmF0
aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNs
aXBQYXRoLmdldCgpOyB9CiAgICAgc3RhdGljIENsaXBQYXRoT3BlcmF0aW9uKiBpbml0aWFsQ2xp
cFBhdGgoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBjb250ZW50RGF0YSgpOyB9Ci0gICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRl
bnREYXRhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVudC5n
ZXQoKTsgfQotICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxl
KiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4odGhp
cyktPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50RGF0YUVxdWl2YWxlbnQoKmNvbnN0X2Nh
c3Q8UmVuZGVyU3R5bGUqPihvdGhlclN0eWxlKS0+cmFyZU5vbkluaGVyaXRlZERhdGEpOyB9Cisg
ICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+Y29udGVudC5nZXQoKTsgfQorICAgIGJvb2wgY29udGVudERhdGFF
cXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBj
b25zdF9jYXN0PFJlbmRlclN0eWxlKj4odGhpcyktPm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNv
bnRlbnREYXRhRXF1aXZhbGVudCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90aGVyU3R5bGUp
LT5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKTsgfQogICAgIHZvaWQgY2xlYXJDb250ZW50KCk7CiAg
ICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkID0gZmFsc2UpOwogICAg
IHZvaWQgc2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiwgYm9vbCBhZGQgPSBmYWxzZSk7
CkBAIC0xODQ4LDI2ICsxMzIxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnQoUXVv
dGVUeXBlLCBib29sIGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRlbnRBbHRUZXh0KGNv
bnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGVudEFsdFRleHQoKSBjb25zdDsK
LSAgICBib29sIGhhc0F0dHJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1faGFzQXR0ckNvbnRlbnQ7IH0KKyAgICBib29sIGhhc0F0dHJDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQXR0ckNvbnRlbnQ7IH0KICAg
ICB2b2lkIHNldEhhc0F0dHJDb250ZW50KCk7CiAKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZl
TWFwKiBjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0OwogICAgIENvdW50ZXJEaXJlY3RpdmVNYXAm
IGFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMg
Z2V0Q291bnRlckRpcmVjdGl2ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKSBjb25z
dDsKIAotICAgIFF1b3Rlc0RhdGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0
ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KKyAgICBRdW90ZXNEYXRhKiBxdW90ZXMoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFF1b3RlcyhSZWZQdHI8UXVvdGVzRGF0YT4mJik7CiAKLSAgICBXaWxsQ2hhbmdlRGF0YSogd2ls
bENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFu
Z2UuZ2V0KCk7IH0KKyAgICBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UuZ2V0KCk7IH0KICAgICB2b2lk
IHNldFdpbGxDaGFuZ2UoUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiYmKTsKIAotICAgIGJvb2wgd2ls
bENoYW5nZUNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KCF3aWxsQ2hhbmdlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gd2lsbENoYW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKTsKLSAg
ICB9CisgICAgYm9vbCB3aWxsQ2hhbmdlQ3JlYXRlc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0Owog
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5TdHJpbmcoKSBjb25zdDsKIApAQCAtMTg4
Miw0NiArMTM0OSwzMiBAQCBwdWJsaWM6CiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3Qg
UmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
KSBjb25zdDsKICAgICBib29sIGRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJT
dHlsZSYsIGJvb2wgaXNDb21wb3NpdGVkKSBjb25zdDsKIAotICAgIGJvb2wgaXNEaXNwbGF5UmVw
bGFjZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5UmVwbGFjZWRUeXBlKGRpc3BsYXko
KSk7IH0KICAgICBib29sIGlzRGlzcGxheUlubGluZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc0Rp
c3BsYXlJbmxpbmVUeXBlKGRpc3BsYXkoKSk7IH0KICAgICBib29sIGlzT3JpZ2luYWxEaXNwbGF5
SW5saW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUlubGluZVR5cGUob3JpZ2luYWxE
aXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveCgpIGNvbnN0
IHsgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KGRpc3BsYXkoKSk7IH0KLSAgICBi
b29sIGlzRGlzcGxheUZsZXhpYmxlQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5RmxleGli
bGVCb3goZGlzcGxheSgpKTsgfQotICAgIGJvb2wgaXNEaXNwbGF5UmVnaW9uVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9
PSBJTkxJTkVfQkxPQ0sKLSAgICAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMIHx8
IGRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OCi0gICAgICAgICAgICB8fCBkaXNwbGF5KCkgPT0g
TElTVF9JVEVNOwotICAgIH0KLQotICAgIGJvb2wgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUg
dikKLSAgICB7Ci0gICAgICAgIGlmICh2ID09IHdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYm9vbCBpc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3Q7CiAKLSAg
ICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSB2OwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9CisgICAgYm9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSk7CiAKLSAg
ICBib29sIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKTsgfQotICAgIHZvaWQg
c2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdikgeyBub25pbmhlcml0ZWRfZmxh
Z3Muc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9CisgICAgYm9vbCBoYXNFeHBs
aWNpdGx5U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdz
Lmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpOyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNp
dGx5U2V0V3JpdGluZ01vZGUoYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzRXhw
bGljaXRseVNldFdyaXRpbmdNb2RlKHYpOyB9CiAKICAgICAvLyBBIHVuaXF1ZSBzdHlsZSBpcyBv
bmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhpbmcgdGhhdCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRv
IHNoYXJlLgotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLmlzVW5pcXVlKCk7IH0KLSAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLnNldElzVW5pcXVlKCk7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuaXNVbmlxdWUoKTsgfQorICAgIHZvaWQgc2V0VW5pcXVlKCkgeyBt
X25vbkluaGVyaXRlZEZsYWdzLnNldElzVW5pcXVlKCk7IH0KIAotICAgIGJvb2wgZW1wdHlTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRlKCk7IH0KLSAg
ICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0RW1wdHlTdGF0ZShiKTsgfQotICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAg
dm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxh
Z3Muc2V0Rmlyc3RDaGlsZFN0YXRlKHRydWUpOyB9Ci0gICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZSgpOyB9Ci0g
ICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9m
bGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZW1wdHlTdGF0ZSgpOyB9CisgICAgdm9p
ZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zZXRFbXB0eVN0YXRlKGIpOyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9CisgICAgdm9p
ZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldEZpcnN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmxhc3RDaGlsZFN0YXRlKCk7IH0KKyAg
ICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhlcml0ZWRG
bGFncy5zZXRMYXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29s
b3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKICAgICBi
b29sIGJhY2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zpc2l0ZWQoY29uc3QgQ29s
b3ImIGNvbG9yKSBjb25zdCB7IHJldHVybiBjb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IoKTsgfQog
Ci0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKHRydWUpOyB9
Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygp
OyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbV9u
b25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyh0cnVl
KTsgfQorICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0
aWVzKCk7IH0KICAgICAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0
aWVzCiAgICAgc3RhdGljIEVPdmVyZmxvdyBpbml0aWFsT3ZlcmZsb3dYKCkgeyByZXR1cm4gT1ZJ
U0lCTEU7IH0KQEAgLTE5NDAsMTUgKzEzOTMsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBFQm9y
ZGVyU3R5bGUgaW5pdGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4gQk5PTkU7IH0KICAgICBzdGF0
aWMgT3V0bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKCkgeyByZXR1cm4gQVVU
T19PRkY7IH0KICAgICBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgaW5pdGlhbE5pbmVQaWVjZUltYWdl
KCkgeyByZXR1cm4gTmluZVBpZWNlSW1hZ2UoKTsgfQotICAgIHN0YXRpYyBMZW5ndGhTaXplIGlu
aXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCks
IExlbmd0aCgwLCBGaXhlZCkpOyB9CisgICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRl
clJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQogICAg
IHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRpb25TaWRlKCkgeyByZXR1cm4gQ0FQVE9Q
OyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBB
dXRvQ29sdW1uQXhpczsgfQogICAgIHN0YXRpYyBDb2x1bW5Qcm9ncmVzc2lvbiBpbml0aWFsQ29s
dW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsgfQogICAg
IHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBMVFI7IH0K
ICAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdyaXRpbmdNb2RlKCkgeyByZXR1cm4gVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0aWFsVGV4
dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZU5vbmU7IH0KLSAgICBzdGF0aWMgVGV4dE9y
aWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRp
b246OgotICAgIE1peGVkOyB9CisgICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4
dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsgfQogICAgIHN0
YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVjdEZpdEZpbGw7
IH0KICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1
cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJj
ZW50KSk7IH0KICAgICBzdGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0
dXJuIFNIT1c7IH0KQEAgLTE5NjAsOSArMTQxMiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxv
YXQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0
YXRpYyBmbG9hdCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQog
ICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDdXJzb3JBdXRvOyB9
Ci0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIHN0YXRpYyBDdXJzb3JWaXNpYmls
aXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1
dG87IH0KLSNlbmRpZgogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBD
b2xvcjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHlsZUlt
YWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm9yZGVyV2lkdGgo
KSB7IHJldHVybiAzOyB9CkBAIC0xOTc5LDIyICsxNDI4LDExIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxUZXh0SW5kZW50KCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQog
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFplcm9MZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoRml4
ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsT25lTGVuZ3RoKCkgeyByZXR1cm4gTGVu
Z3RoKDEsIEZpeGVkKTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgc3RhdGljIFRleHRJ
bmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRGaXJz
dExpbmU7IH0KLSAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBl
KCkgeyByZXR1cm4gVGV4dEluZGVudE5vcm1hbDsgfQotI2VuZGlmCiAgICAgc3RhdGljIHNob3J0
IGluaXRpYWxXaWRvd3MoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxP
cnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExpbmVIZWln
aHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQotICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNwZWNpZmllZExpbmVIZWln
aHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNlbmRpZgogICAgIHN0
YXRpYyBFVGV4dEFsaWduIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUQVNUQVJUOyB9CiAg
ICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJu
IFRleHREZWNvcmF0aW9uTm9uZTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgc3RhdGlj
IFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25M
YXN0QXV0bzsgfQotICAgIHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7
IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KLSNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICBzdGF0
aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0
dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlv
blNraXAgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9u
U2tpcEF1dG87IH0KICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGluaXRpYWxUZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRpb25BdXRvOyB9
CkBAIC0yMDA5LDggKzE0NDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3hPcmllbnQgaW5p
dGlhbEJveE9yaWVudCgpIHsgcmV0dXJuIEhPUklaT05UQUw7IH0KICAgICBzdGF0aWMgRUJveFBh
Y2sgaW5pdGlhbEJveFBhY2soKSB7IHJldHVybiBTdGFydDsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsQm94RmxleCgpIHsgcmV0dXJuIDAuMGY7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50
IGluaXRpYWxCb3hGbGV4R3JvdXAoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGludCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBpbml0aWFsQm94RmxleEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBpbml0aWFsQm94T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRp
YyBFQm94U2l6aW5nIGluaXRpYWxCb3hTaXppbmcoKSB7IHJldHVybiBDT05URU5UX0JPWDsgfQog
ICAgIHN0YXRpYyBTdHlsZVJlZmxlY3Rpb24qIGluaXRpYWxCb3hSZWZsZWN0KCkgeyByZXR1cm4g
MDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxleEdyb3coKSB7IHJldHVybiAwOyB9CkBA
IC0yMDgzLDYgKzE1MjEsMjIgQEAgcHVibGljOgogICAgIHN0YXRpYyBRdW90ZXNEYXRhKiBpbml0
aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQogCisj
aWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRl
eHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQorICAgIHN0YXRp
YyBUZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5k
ZW50Tm9ybWFsOyB9CisgICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxh
c3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQorICAgIHN0YXRpYyBUZXh0SnVzdGlm
eSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgIHN0YXRpYyBDdXJzb3JWaXNp
YmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0
eUF1dG87IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKyAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0x
MDAuMGYsIFBlcmNlbnQpOyB9CisgICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVudCBpbml0aWFs
VGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsgfQorI2VuZGlm
CisKICAgICBzdGF0aWMgYm9vbCBpc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAKICAgICBzdGF0
aWMgV2lsbENoYW5nZURhdGEqIGluaXRpYWxXaWxsQ2hhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQpAQCAtMjEzOCw3ICsxNTkyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb24g
aW5pdGlhbEdyaWRJdGVtQ29sdW1uRW5kKCkgeyByZXR1cm4gR3JpZFBvc2l0aW9uKCk7IH0KICAg
ICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRlbVJvd1N0YXJ0KCkgeyByZXR1cm4g
R3JpZFBvc2l0aW9uKCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRl
bVJvd0VuZCgpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9Ci0jZW5kaWYgLyogRU5BQkxFKENT
U19HUklEX0xBWU9VVCkgKi8KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCiAg
ICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsgfQogCkBAIC0y
MTUwLDQxICsxNjA0LDMyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdGlhbFJlZ2lvblRocmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CiAgICAgc3RhdGlj
IFJlZ2lvbkZyYWdtZW50IGluaXRpYWxSZWdpb25GcmFnbWVudCgpIHsgcmV0dXJuIEF1dG9SZWdp
b25GcmFnbWVudDsgfQogCi0gICAgLy8gS2VlcCB0aGVzZSBhdCB0aGUgZW5kLgogICAgIHN0YXRp
YyBJbnRTaXplIGluaXRpYWxJbml0aWFsTGV0dGVyKCkgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAg
ICAgc3RhdGljIExpbmVDbGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5l
Q2xhbXBWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1
cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0g
ICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJl
dHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsgfQotI2VuZGlmCisKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSB7IHJldHVybiB0
cnVlOyB9CiAjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIENv
bG9yIGluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpOwogI2VuZGlmCisKICNpZiBFTkFCTEUoQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxVc2VU
b3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0YXRpYyBj
b25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVnaW9ucygp
OwogI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZp
bHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZpbHRlck9wZXJhdGlvbnM+IG9wczsgcmV0
dXJuIG9wczsgfQorCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICBzdGF0aWMgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEJhY2tkcm9wRmlsdGVyKCkgeyBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RmlsdGVyT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CiAjZW5kaWYK
KwogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgc3RhdGljIEJsZW5kTW9kZSBpbml0
aWFsQmxlbmRNb2RlKCkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CiAgICAgc3RhdGljIElz
b2xhdGlvbiBpbml0aWFsSXNvbGF0aW9uKCkgeyByZXR1cm4gSXNvbGF0aW9uQXV0bzsgfQogI2Vu
ZGlmCiAKLSAgICBib29sIGlzUGxhY2Vob2xkZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2lzUGxhY2Vob2xkZXJTdHlsZTsgfQotICAgIHZvaWQgc2V0SXNQ
bGFjZWhvbGRlclN0eWxlKCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2lzUGxh
Y2Vob2xkZXJTdHlsZSwgdHJ1ZSk7IH0KKyAgICBib29sIGlzUGxhY2Vob2xkZXJTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlzUGxhY2Vob2xkZXJTdHlsZTsg
fQorICAgIHZvaWQgc2V0SXNQbGFjZWhvbGRlclN0eWxlKCkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGlzUGxhY2Vob2xkZXJTdHlsZSwgdHJ1ZSk7IH0KIAotICAgIHN0YXRpYyBw
dHJkaWZmX3Qgbm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoUmVuZGVyU3R5bGUsIG5vbmluaGVyaXRlZF9mbGFncyk7IH0KKyAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KTsgfQorICAg
IHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9y
ZGVyQm90dG9tQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENv
bG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlz
aXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYp
OyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRE
ZWNvcmF0aW9uQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHYpOyB9CisKKyAgICB2b2lkIGlu
aGVyaXRVbmljb2RlQmlkaUZyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBtX25vbklu
aGVyaXRlZEZsYWdzLnNldFVuaWNvZGVCaWRpKHBhcmVudC0+bV9ub25Jbmhlcml0ZWRGbGFncy51
bmljb2RlQmlkaSgpKTsgfQorICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0Rh
dGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0
b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93SG9yaXpvbnRh
bEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYg
cmlnaHQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoY29uc3QgU2hh
ZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBjb25zdDsKKyAg
ICB2b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwg
TGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgY29uc3Q7
CisgICAgdm9pZCBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRh
KiwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29u
c3Q7CisKKyAgICBzdGF0aWMgQ29sb3IgaW52YWxpZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsg
fQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+Ym9yZGVyLmxlZnQoKS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJv
cmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJp
Z2h0KCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJUb3BDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCkuY29sb3IoKTsgfQorICAgIGNv
bnN0IENvbG9yJiBib3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5ib3JkZXIuYm90dG9tKCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5jb2xvcjsgfQorICAg
IGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OworICAgIGNvbnN0IENvbG9yJiBjb2x1bW5SdWxl
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+
cnVsZS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuY29sb3IoKTsgfQorICAgIGNvbnN0IENv
bG9yJiB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc0NvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRGaWxsQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yOyB9Cisg
ICAgY29uc3QgQ29sb3ImIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVk
TGlua0NvbG9yKCkgY29uc3Q7CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtC
b3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT52aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm11bHRpQ29sLT52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9y
JiB0ZXh0RGVjb3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlu
a1RleHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYg
dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KKyAgICBjb25zdCBDb2xv
ciYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0RmlsbENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3I7IH0KKworICAgIGNvbnN0IENvbG9yJiBz
dG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xvcigpOyB9CisgICAg
Y29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29k
Q29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7IH0KIAogcHJpdmF0ZToKKyAgICBzdHJ1Y3Qg
Tm9uSW5oZXJpdGVkRmxhZ3MgeworICAgICAgICBOb25Jbmhlcml0ZWRGbGFncygpOworCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFnczsgfQorICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzICE9IG90aGVyLm1fZmxhZ3M7IH0KKworICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRG
cm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJik7CisKKyAgICAgICAgRU92ZXJmbG93IG92ZXJm
bG93WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3Zl
cmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92ZXJmbG93
WChFT3ZlcmZsb3cgb3ZlcmZsb3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WCwgb3ZlcmZsb3dN
YXNrLCBvdmVyZmxvd1hPZmZzZXQpOyB9CisKKyAgICAgICAgRU92ZXJmbG93IG92ZXJmbG93WSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3ZlcmZsb3dN
YXNrLCBvdmVyZmxvd1lPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92ZXJmbG93WShFT3Zl
cmZsb3cgb3ZlcmZsb3dZKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3ZlcmZsb3dNYXNrLCBv
dmVyZmxvd1lPZmZzZXQpOyB9CisKKyAgICAgICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNsZWFyT2Zmc2V0KSk7
IH0KKyAgICAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBkYXRlVmFsdWUoY2xl
YXIsIGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpOyB9CisKKyAgICAgICAgRURpc3BsYXkgZWZmZWN0
aXZlRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1
ZShkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQg
c2V0RWZmZWN0aXZlRGlzcGxheShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KSB7IHVwZGF0ZVZh
bHVlKGVmZmVjdGl2ZURpc3BsYXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0
KTsgfQorCisgICAgICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVQb3NpdGlvbj4oZ2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCkp
OyB9CisgICAgICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0aW9uKSB7IHVwZGF0
ZVZhbHVlKHBvc2l0aW9uLCBwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KTsgfQorCisgICAg
ICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KSk7
IH0KKyAgICAgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgb3JpZ2luYWxEaXNw
bGF5KSB7IHVwZGF0ZVZhbHVlKG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1hc2ssIG9yaWdpbmFs
RGlzcGxheU9mZnNldCk7IH0KKworICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZhbHVlKHVuaWNvZGVC
aWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldFVuaWNvZGVC
aWRpKEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1bmljb2RlQmlkaSwg
dW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCk7IH0KKworICAgICAgICBib29sIGhh
c1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc1ZpZXdwb3J0VW5p
dHNPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHZhbHVl
KSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQpOyB9CisKKyAg
ICAgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVWZXJ0aWNhbEFsaWduPihnZXRWYWx1ZSh2ZXJ0aWNhbEFsaWduTWFzaywgdmVydGlj
YWxBbGlnbk9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGlj
YWxBbGlnbiB2ZXJ0aWNhbEFsaWduKSB7IHVwZGF0ZVZhbHVlKHZlcnRpY2FsQWxpZ24sIHZlcnRp
Y2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGlj
aXRseUluaGVyaXRlZFByb3BlcnRpZXMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVl
LCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaXNGbG9hdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZsb2F0aW5nKCkgIT0gTm9GbG9hdDsgfQorICAgICAgICBFRmxv
YXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxvYXQ+KGdldFZhbHVl
KGZsb2F0aW5nTWFzaywgZmxvYXRpbmdPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldEZsb2F0
aW5nKEVGbG9hdCBmbG9hdGluZykgeyB1cGRhdGVWYWx1ZShmbG9hdGluZywgZmxvYXRpbmdNYXNr
LCBmbG9hdGluZ09mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0
eWxlcygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgZ2V0VmFsdWUocHNl
dWRvQml0c01hc2ssIHBzZXVkb0JpdHNPZmZzZXQpOyB9CisgICAgICAgIGJvb2wgaGFzUHNldWRv
U3R5bGUoUHNldWRvSWQpIGNvbnN0OworICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBz
ZXVkb0lkKTsKKyAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQpOwor
CisgICAgICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVUYWJsZUxheW91dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRNYXNrLCB0YWJsZUxh
eW91dE9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5b3V0
IHRhYmxlTGF5b3V0KSB7IHVwZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJsZUxheW91dEJpdE1h
c2ssIHRhYmxlTGF5b3V0T2Zmc2V0KTsgfQorCisgICAgICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1ZShzdHlsZVR5cGVN
YXNrLCBzdHlsZVR5cGVPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1
ZG9JZCBzdHlsZVR5cGUpIHsgdXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHlsZVR5cGVNYXNrLCBz
dHlsZVR5cGVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0
dXJuIGdldEJvb2xlYW4oaXNVbmlxdWVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SXNVbmlx
dWUoKSB7IHVwZGF0ZUJvb2xlYW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9CisKKyAgICAgICAg
Ym9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihlbXB0eVN0YXRlT2Zm
c2V0KTsgIH0KKyAgICAgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRl
Qm9vbGVhbih2YWx1ZSwgZW1wdHlTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGZpcnN0
Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RDaGlsZFN0YXRlT2Zm
c2V0KTsgIH0KKyAgICAgICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9CisKKyAgICAgICAg
Ym9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4obGFzdENoaWxk
U3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wgdmFs
dWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZzZXQpOyB9CisKKyAg
ICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFm
ZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIo
Ym9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQp
OyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZ2V0
Qm9vbGVhbihhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEFmZmVj
dGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5
QWN0aXZlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7
IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQorICAgICAgICB2b2lk
IHNldEFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZm
ZWN0ZWRCeURyYWdPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJl
dHVybiBnZXRCb29sZWFuKGlzTGlua09mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRJc0xpbmso
Ym9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZzZXQpOyB9CisKKyAg
ICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZ2V0
Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorICAgICAgICB2b2lk
IHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFu
KHZhbHVlLCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorCisgICAgICAgIGJv
b2wgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVh
bihoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0
SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2
YWx1ZSwgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQorCisgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoTm9uSW5oZXJpdGVkRmxhZ3MsIG1fZmxhZ3MpOyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRf
dCBmbGFnSXNhZmZlY3RlZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3Rl
ZEJ5QWN0aXZlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3Rl
ZEJ5SG92ZXIoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlIb3Zlck9mZnNldDsg
fQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVk
bykgeyByZXR1cm4gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8p
OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpIHsg
cmV0dXJuIGZsYWdGaXJzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9CisgICAgICAg
IHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0xh
c3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdm9pZCB1cGRhdGVCb29sZWFuKGJvb2wsIHVpbnQ2NF90IG9mZnNldCk7CisgICAgICAgIGJv
b2wgZ2V0Qm9vbGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0
ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNr
LCB1aW50NjRfdCBvZmZzZXQpOworICAgICAgICB1bnNpZ25lZCBnZXRWYWx1ZSh1aW50NjRfdCBw
b3NpdGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgICAg
ICBzdGF0aWMgdWludDY0X3QgZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBp
c1VuaXF1ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0ZpcnN0Q2hpbGRT
dGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Cisg
ICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJldHVybiBvbmVC
aXRNYXNrIDw8IGxhc3RDaGlsZFN0YXRlT2Zmc2V0OyB9CisKKyAgICAgICAgLy8gVG8gdHlwZSB0
aGUgYml0IG1hc2sgcHJvcGVybHkgb24gNjRiaXRzLgorICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3Qgb25lQml0TWFzayA9IDB4MTsKKworICAgICAgICAvLyBCeXRlIDEuCisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd0JpdENvdW50ID0gMzsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IG92ZXJmbG93TWFzayA9IChvbmVCaXRNYXNrIDw8IG92ZXJmbG93Qml0
Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WE9mZnNl
dCA9IDA7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1lPZmZzZXQgPSBv
dmVyZmxvd1hPZmZzZXQgKyBvdmVyZmxvd0JpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2xlYXJCaXRDb3VudCA9IDI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRf
dCBjbGVhck1hc2sgPSAob25lQml0TWFzayA8PCBjbGVhckJpdENvdW50KSAtIDE7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhck9mZnNldCA9IG92ZXJmbG93WU9mZnNldCArIG92
ZXJmbG93Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSAyLgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgZGlzcGxheUJpdENvdW50ID0gNTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IGRpc3BsYXlNYXNrID0gKG9uZUJpdE1hc2sgPDwgZGlzcGxheUJpdENvdW50KSAtIDE7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ID0g
Y2xlYXJPZmZzZXQgKyBjbGVhckJpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgcG9zaXRpb25CaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBw
b3NpdGlvbk1hc2sgPSAob25lQml0TWFzayA8PCBwb3NpdGlvbkJpdENvdW50KSAtIDE7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IGVmZmVjdGl2ZURpc3Bs
YXlPZmZzZXQgKyBkaXNwbGF5Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSAzLgorICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ID0gcG9zaXRpb25P
ZmZzZXQgKyBwb3NpdGlvbkJpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dW5pY29kZUJpZGlCaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB1
bmljb2RlQmlkaU1hc2sgPSAob25lQml0TWFzayA8PCB1bmljb2RlQmlkaUJpdENvdW50KSAtIDE7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaU9mZnNldCA9IG9yaWdp
bmFsRGlzcGxheU9mZnNldCArIGRpc3BsYXlCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDQu
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ0JpdENvdW50ID0gMjsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsb2F0aW5nTWFzayA9IChvbmVCaXRNYXNrIDw8
IGZsb2F0aW5nQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZs
b2F0aW5nT2Zmc2V0ID0gdW5pY29kZUJpZGlPZmZzZXQgKyB1bmljb2RlQmlkaUJpdENvdW50Owor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJp
dGNvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb25PZmZzZXQgPSBmbG9hdGluZ09mZnNldCArIGZsb2F0aW5nQml0Q291bnQ7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVC
aXRjb3VudCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQgPSBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0ICsg
aGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50OworCisgICAgICAgIC8vIEJ5dGUgNS4K
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3Vu
dCA9IDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNl
T2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0ICsgaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlQml0Y291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0
YWJsZUxheW91dEJpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRh
YmxlTGF5b3V0Qml0TWFzayA9IG9uZUJpdE1hc2s7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB0YWJsZUxheW91dE9mZnNldCA9IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgKyBleHBs
aWNpdEluaGVyaXRhbmNlQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2
ZXJ0aWNhbEFsaWduQml0Q291bnQgPSA0OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmVydGljYWxBbGlnblBhZGRpbmcgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmVydGljYWxBbGlnbkFuZFBhZGRpbmdCaXRDb3VudCA9IHZlcnRpY2FsQWxpZ25CaXRDb3VudCAr
IHZlcnRpY2FsQWxpZ25QYWRkaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmVy
dGljYWxBbGlnbk1hc2sgPSAob25lQml0TWFzayA8PCB2ZXJ0aWNhbEFsaWduQml0Q291bnQpIC0g
MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSB0
YWJsZUxheW91dE9mZnNldCArIHRhYmxlTGF5b3V0Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0
ZSA2LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0JpdENvdW50ID0g
NzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBzZXVkb0JpdHNNYXNrID0gKG9uZUJp
dE1hc2sgPDwgcHNldWRvQml0c0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBwc2V1ZG9CaXRzT2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCArIHZlcnRpY2Fs
QWxpZ25CaXRDb3VudDsKKworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3Bv
cnRVbml0c0JpdENvdW50ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGhhc1Zp
ZXdwb3J0VW5pdHNCaXRNYXNrID0gKG9uZUJpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c0JpdENv
dW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRz
T2Zmc2V0ID0gcHNldWRvQml0c09mZnNldCArIHBzZXVkb0JpdHNCaXRDb3VudDsKKworICAgICAg
ICAvLyBCeXRlIDcuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVCaXRD
b3VudCA9IDY7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVQYWRkaW5n
ID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUFuZFBhZGRpbmdC
aXRDb3VudCA9IHN0eWxlVHlwZUJpdENvdW50ICsgc3R5bGVUeXBlUGFkZGluZzsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQ2NF90IHN0eWxlVHlwZU1hc2sgPSAob25lQml0TWFzayA8PCBzdHls
ZVR5cGVBbmRQYWRkaW5nQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHN0eWxlVHlwZU9mZnNldCA9IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCArIGhhc1ZpZXdw
b3J0VW5pdHNPZmZzZXQ7CisKKyAgICAgICAgLy8gQnl0ZSA4LgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaXNVbmlxdWVPZmZzZXQgPSBzdHlsZVR5cGVPZmZzZXQgKyBzdHlsZVR5cGVB
bmRQYWRkaW5nQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlbXB0eVN0
YXRlT2Zmc2V0ID0gaXNVbmlxdWVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZW1wdHlTdGF0ZU9mZnNldCArIDE7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCA9IGZpcnN0Q2hp
bGRTdGF0ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3Rl
ZEJ5SG92ZXJPZmZzZXQgPSBsYXN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ID0gYWZmZWN0ZWRCeUhvdmVy
T2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlEcmFn
T2Zmc2V0ID0gYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpc0xpbmtPZmZzZXQgPSBhZmZlY3RlZEJ5RHJhZ09mZnNldCArIDE7CisKKyAg
ICAgICAgLy8gNjAgYml0cyBhcmUgYXNzaWduZWQuIFRoZXJlIGFyZSA0IGJpdHMgYXZhaWxhYmxl
IGN1cnJlbnRseSB1c2VkIGFzIHBhZGRpbmcgdG8gaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24uCisg
ICAgICAgIC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28g
bmVlZCB0byB1cGRhdGUgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkuCisgICAg
ICAgIHVpbnQ2NF90IG1fZmxhZ3MgeyAwIH07CisgICAgfTsKKworICAgIHN0cnVjdCBJbmhlcml0
ZWRGbGFncyB7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYp
IGNvbnN0OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIHVuc2ln
bmVkIGVtcHR5Q2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCisgICAgICAgIHVuc2lnbmVkIGNhcHRp
b25TaWRlIDogMjsgLy8gRUNhcHRpb25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5
cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlwZQorICAgICAgICB1bnNpZ25lZCBsaXN0U3R5bGVQb3Np
dGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQb3NpdGlvbgorICAgICAgICB1bnNpZ25lZCB2aXNpYmls
aXR5IDogMjsgLy8gRVZpc2liaWxpdHkKKyAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsg
Ly8gRVRleHRBbGlnbgorICAgICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gRVRl
eHRUcmFuc2Zvcm0KKyAgICAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25zIDogVGV4dERlY29y
YXRpb25CaXRzOworICAgICAgICB1bnNpZ25lZCBjdXJzb3IgOiA2OyAvLyBFQ3Vyc29yCisjaWYg
RU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQorICAgICAgICB1bnNpZ25lZCBjdXJzb3JWaXNpYmls
aXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0eQorI2VuZGlmCisgICAgICAgIHVuc2lnbmVkIGRp
cmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KKyAgICAgICAgdW5zaWduZWQgd2hpdGVTcGFj
ZSA6IDM7IC8vIEVXaGl0ZVNwYWNlCisgICAgICAgIC8vIDMyIGJpdHMKKyAgICAgICAgdW5zaWdu
ZWQgYm9yZGVyQ29sbGFwc2UgOiAxOyAvLyBFQm9yZGVyQ29sbGFwc2UKKyAgICAgICAgdW5zaWdu
ZWQgYm94RGlyZWN0aW9uIDogMTsgLy8gRUJveERpcmVjdGlvbiAoQ1NTMyBib3hfZGlyZWN0aW9u
IHByb3BlcnR5LCBmbGV4aWJsZSBib3ggbGF5b3V0IG1vZHVsZSkKKworICAgICAgICAvLyBub24g
Q1NTMiBpbmhlcml0ZWQKKyAgICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRl
cgorICAgICAgICB1bnNpZ25lZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVzdEJp
dHM7CisgICAgICAgIHVuc2lnbmVkIHBvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50
cworICAgICAgICB1bnNpZ25lZCBpbnNpZGVMaW5rIDogMjsgLy8gRUluc2lkZUxpbmsKKyAgICAg
ICAgdW5zaWduZWQgaW5zaWRlRGVmYXVsdEJ1dHRvbiA6IDE7CisgICAgICAgIC8vIDQ0IGJpdHMK
KworICAgICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdy
aXRpbmcgc3VwcG9ydAorICAgICAgICB1bnNpZ25lZCB3cml0aW5nTW9kZSA6IDI7IC8vIFdyaXRp
bmdNb2RlCisgICAgICAgIC8vIDQ2IGJpdHMKKyAgICB9OworCisgICAgLy8gVGhpcyBjb25zdHJ1
Y3RvciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgcmVwbGFjZSBvcGVyYXRpb24uCisgICAgUmVu
ZGVyU3R5bGUoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSYmKTsKKworICAgIEVEaXNwbGF5IG9y
aWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2lu
YWxEaXNwbGF5KCk7IH0KKworICAgIGJvb2wgaGFzQXV0b0xlZnRBbmRSaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGxlZnQoKS5pc0F1dG8oKSAmJiByaWdodCgpLmlzQXV0bygpOyB9CisgICAgYm9vbCBo
YXNBdXRvVG9wQW5kQm90dG9tKCkgY29uc3QgeyByZXR1cm4gdG9wKCkuaXNBdXRvKCkgJiYgYm90
dG9tKCkuaXNBdXRvKCk7IH0KKworICAgIHZvaWQgc2V0Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudERhdGE+LCBib29sIGFkZCk7CisKKyAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93
SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSopIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wg
aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3Bs
YXlJbmxpbmVUeXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlGbGV4aWJs
ZUJveChFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5R3JpZEJveChFRGlzcGxh
eSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkp
OworCisgICAgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQcm9wZXJ0eSwg
Ym9vbCB2aXNpdGVkTGluaykgY29uc3Q7CisKICAgICBib29sIGNoYW5nZUFmZmVjdHNWaXN1YWxP
dmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgY2hhbmdlUmVxdWly
ZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUG9zaXRpb25l
ZExheW91dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKQEAgLTIxOTMsMTAyICsxOTMxLDE0MyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxp
bmUoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXll
cihjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IENv
bG9yJik7Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCB2KTsgfQotICAg
IHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IsIHYp
OyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9y
LCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2ws
IG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVk
TGlua1RleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IsIHYpOyB9Ci0g
ICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Is
IHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9y
LCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3IsIHYpOyB9Ci0KLSAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20oY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VW5pY29kZUJpZGkocGFy
ZW50LT5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSk7IH0KLSAgICB2b2lkIGdldFNo
YWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0
JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdDsKLSAg
ICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSop
IGNvbnN0OwotICAgIHZvaWQgZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dE
YXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0OwotICAgIHZv
aWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQm
IHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBjb25zdDsKLSAgICB2b2lkIGdldFNoYWRvd0lubGlu
ZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxv
Z2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxF
eHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRp
Y2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7Ci0gICAgfQotICAg
IHZvaWQgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBn
ZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
IDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxC
b3R0b20pOwotICAgIH0KKyAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKKyAgICBEYXRh
UmVmPFN0eWxlQm94RGF0YT4gbV9ib3hEYXRhOworICAgIERhdGFSZWY8U3R5bGVWaXN1YWxEYXRh
PiBtX3Zpc3VhbERhdGE7CisgICAgRGF0YVJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBtX2JhY2tn
cm91bmREYXRhOworICAgIERhdGFSZWY8U3R5bGVTdXJyb3VuZERhdGE+IG1fc3Vycm91bmREYXRh
OworICAgIERhdGFSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YTsKKyAgICBOb25Jbmhlcml0ZWRGbGFncyBtX25vbkluaGVyaXRlZEZsYWdzOwogCi0g
ICAgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09
IElOTElORV9CT1ggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWAotI2lmIEVOQUJMRShDU1NfR1JJ
RF9MQVlPVVQpCi0gICAgICAgICAgICB8fCBkaXNwbGF5ID09IElOTElORV9HUklECi0jZW5kaWYK
LSAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOwotICAgIH0KKyAgICAvLyBp
bmhlcml0ZWQgYXR0cmlidXRlcworICAgIERhdGFSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4g
bV9yYXJlSW5oZXJpdGVkRGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gbV9p
bmhlcml0ZWREYXRhOworICAgIEluaGVyaXRlZEZsYWdzIG1faW5oZXJpdGVkRmxhZ3M7CiAKLSAg
ICBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5
cGUoZGlzcGxheSk7Ci0gICAgfQorICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8gc3R5
bGVzCisgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRv
U3R5bGVzOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5
ID09IElOTElORV9GTEVYOwotICAgIH0KKyAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2
Z1N0eWxlOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpIGNv
bnN0Ci0gICAgewotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIHJldHVybiBk
aXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKLSNlbHNlCi0gICAgICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmICFBU1NF
UlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisgICAgYm9vbCBtX2Rl
bGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwogI2VuZGlmCi0gICAgfQorfTsKIAotICAgIGJvb2wg
aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3Bs
YXlHcmlkQm94KGRpc3BsYXkpOwotICAgIH0KK2ludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50
LCBjb25zdCBSZW5kZXJTdHlsZSYpOworZmxvYXQgYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20o
ZmxvYXQsIGNvbnN0IFJlbmRlclN0eWxlJik7CitMYXlvdXRVbml0IGFkanVzdExheW91dFVuaXRG
b3JBYnNvbHV0ZVpvb20oTGF5b3V0VW5pdCwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAotICAgIC8v
IENvbG9yIGFjY2Vzc29ycyBhcmUgYWxsIHByaXZhdGUgdG8gbWFrZSBzdXJlIGNhbGxlcnMgdXNl
IHZpc2l0ZWREZXBlbmRlbnRDb2xvciBpbnN0ZWFkIHRvIGFjY2VzcyB0aGVtLgotICAgIHN0YXRp
YyBDb2xvciBpbnZhbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAgY29uc3QgQ29s
b3ImIGJvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVm
dCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9Ci0gICAgY29uc3Qg
Q29sb3ImIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50
b3AoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGJvcmRlckJvdHRvbUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5jb2xvcigpOyB9Ci0gICAgY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+
Y29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OwotICAgIGNvbnN0IENv
bG9yJiBjb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tdWx0aUNvbC0+bV9ydWxlLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgb3V0bGlu
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuY29sb3IoKTsg
fQotICAgIGNvbnN0IENvbG9yJiB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB0
ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxs
Q29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcjsgfQotICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkTGlua0NvbG9yKCkgY29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExp
bmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVk
TGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlz
aXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KLSAgICBjb25zdCBDb2xv
ciYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KLSAgICBjb25zdCBDb2xv
ciYgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX211bHRpQ29sLT5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOyB9Ci0gICAg
Y29uc3QgQ29sb3ImIHRleHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3Im
IHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsgfQotICAgIGNv
bnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
cmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KLSAgICBj
b25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsgfQotICAgIGNvbnN0IENv
bG9yJiB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhl
cml0ZWREYXRhLT52aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcjsgfQorRUJvcmRlclN0eWxlIGNv
bGxhcHNlZEJvcmRlclN0eWxlKEVCb3JkZXJTdHlsZSk7CiAKLSAgICBDb2xvciBjb2xvckluY2x1
ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsK
K2Jvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqKTsK
IAotICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgp
LnN0b3BDb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLmZsb29kQ29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7IH0KK2lu
bGluZSBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Ok5vbkluaGVyaXRlZEZsYWdzKCkK
K3sKKyAgICAvLyBBbGwgdGhlc2UgaW5pdGlhbCB2YWx1ZXMgbmVlZCB0byBiZSB6ZXJvIHNvIHRo
YXQgemVyby1pbml0aWFsaXppbmcgbV9mbGFncyBpcyBjb3JyZWN0LgorICAgIEFTU0VSVCghaW5p
dGlhbE92ZXJmbG93WCgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7CisgICAg
QVNTRVJUKCFpbml0aWFsQ2xlYXIoKSk7CisgICAgQVNTRVJUKCFpbml0aWFsRGlzcGxheSgpKTsK
KyAgICBBU1NFUlQoIWluaXRpYWxVbmljb2RlQmlkaSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxQ
b3NpdGlvbigpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkpOworICAgIEFT
U0VSVCghaW5pdGlhbEZsb2F0aW5nKCkpOworICAgIEFTU0VSVCghaW5pdGlhbFRhYmxlTGF5b3V0
KCkpOworfQogCi0gICAgdm9pZCBhcHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RGF0YT4pOwotfTsKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKQorewor
ICAgIC8vIE9ubHkgYSBzdWJzZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJpdGVkRmxhZ3Mg
Y29udGFpbnMgYSBidW5jaCBvZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KKyAg
ICB1aW50NjRfdCBub25Jbmhlcml0ZWRNYXNrID0gb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WE9m
ZnNldAorICAgICAgICB8IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1lPZmZzZXQKKyAgICAgICAg
fCBjbGVhck1hc2sgPDwgY2xlYXJPZmZzZXQKKyAgICAgICAgfCBkaXNwbGF5TWFzayA8PCBlZmZl
Y3RpdmVEaXNwbGF5T2Zmc2V0CisgICAgICAgIHwgcG9zaXRpb25NYXNrIDw8IHBvc2l0aW9uT2Zm
c2V0CisgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0CisgICAg
ICAgIHwgdW5pY29kZUJpZGlNYXNrIDw8IHVuaWNvZGVCaWRpT2Zmc2V0CisgICAgICAgIHwgdmVy
dGljYWxBbGlnbk1hc2sgPDwgdmVydGljYWxBbGlnbk9mZnNldAorICAgICAgICB8IGZsb2F0aW5n
TWFzayA8PCBmbG9hdGluZ09mZnNldAorICAgICAgICB8IG9uZUJpdE1hc2sgPDwgZXhwbGljaXRJ
bmhlcml0YW5jZU9mZnNldAorICAgICAgICB8IHRhYmxlTGF5b3V0Qml0TWFzayA8PCB0YWJsZUxh
eW91dE9mZnNldAorICAgICAgICB8IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrIDw8IGhhc1ZpZXdw
b3J0VW5pdHNPZmZzZXQ7CisKKyAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9uSW5oZXJpdGVk
TWFzaykgfCAob3RoZXIubV9mbGFncyAmIG5vbkluaGVyaXRlZE1hc2spOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc1BzZXVkb1N0eWxlKFBzZXVk
b0lkIHBzZXVkbykgY29uc3QKK3sKKyAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOworICAg
IEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7CisgICAgcmV0dXJuIChv
bmVCaXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYgbV9mbGFnczsK
K30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pCit7CisgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNF
VURPKTsKKyAgICBBU1NFUlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOworICAg
IG1fZmxhZ3MgfD0gb25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8p
OworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhh
c1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNldCkKK3sKKyAgICBBU1NFUlQocHNl
dWRvSWRTZXQpOworICAgIHVpbnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0gcHNldWRvSWRTZXQuZGF0
YSgpOworICAgIEFTU0VSVCgocmF3UHNldWRvSWRTZXQgJiBQVUJMSUNfUFNFVURPSURfTUFTSykg
PT0gcmF3UHNldWRvSWRTZXQpOworICAgIHN0YXRpY19hc3NlcnQocHNldWRvQml0c09mZnNldCA+
PSAxLCAiKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSBzaG91bGQgYmUgdmFsaWQuIik7CisgICAgbV9m
bGFncyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhd1BzZXVkb0lkU2V0KSA8PCAocHNldWRv
Qml0c09mZnNldCAtIDEpKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVy
aXRlZEZsYWdzOjp1cGRhdGVCb29sZWFuKGJvb2wgaXNTZXQsIHVpbnQ2NF90IG9mZnNldCkKK3sK
KyAgICBpZiAoaXNTZXQpCisgICAgICAgIG1fZmxhZ3MgfD0gKG9uZUJpdE1hc2sgPDwgb2Zmc2V0
KTsKKyAgICBlbHNlCisgICAgICAgIG1fZmxhZ3MgJj0gfihvbmVCaXRNYXNrIDw8IG9mZnNldCk7
Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6Z2V0Qm9v
bGVhbih1aW50NjRfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmxhZ3MgJiAob25l
Qml0TWFzayA8PCBvZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5o
ZXJpdGVkRmxhZ3M6OnVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0
aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNTRVJUKCEobmV3
VmFsdWUgJiB+cG9zaXRpb25JbmRlcGVuZGVudE1hc2spKTsKKyAgICB1aW50NjRfdCBwb3NpdGlv
bkRlcGVuZGVudE1hc2sgPSBwb3NpdGlvbkluZGVwZW5kZW50TWFzayA8PCBvZmZzZXQ7CisgICAg
bV9mbGFncyA9IChtX2ZsYWdzICYgfnBvc2l0aW9uRGVwZW5kZW50TWFzaykgfCAoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG5ld1ZhbHVlKSA8PCBvZmZzZXQpOworfQorCitpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3Mm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBlbXB0eUNlbGxzID09IG90aGVyLmVtcHR5Q2Vs
bHMKKyAgICAgICAgJiYgY2FwdGlvblNpZGUgPT0gb3RoZXIuY2FwdGlvblNpZGUKKyAgICAgICAg
JiYgbGlzdFN0eWxlVHlwZSA9PSBvdGhlci5saXN0U3R5bGVUeXBlCisgICAgICAgICYmIGxpc3RT
dHlsZVBvc2l0aW9uID09IG90aGVyLmxpc3RTdHlsZVBvc2l0aW9uCisgICAgICAgICYmIHZpc2li
aWxpdHkgPT0gb3RoZXIudmlzaWJpbGl0eQorICAgICAgICAmJiB0ZXh0QWxpZ24gPT0gb3RoZXIu
dGV4dEFsaWduCisgICAgICAgICYmIHRleHRUcmFuc2Zvcm0gPT0gb3RoZXIudGV4dFRyYW5zZm9y
bQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbnMgPT0gb3RoZXIudGV4dERlY29yYXRpb25zCisg
ICAgICAgICYmIGN1cnNvciA9PSBvdGhlci5jdXJzb3IKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lC
SUxJVFkpCisgICAgICAgICYmIGN1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIuY3Vyc29yVmlzaWJp
bGl0eQorI2VuZGlmCisgICAgICAgICYmIGRpcmVjdGlvbiA9PSBvdGhlci5kaXJlY3Rpb24KKyAg
ICAgICAgJiYgd2hpdGVTcGFjZSA9PSBvdGhlci53aGl0ZVNwYWNlCisgICAgICAgICYmIGJvcmRl
ckNvbGxhcHNlID09IG90aGVyLmJvcmRlckNvbGxhcHNlCisgICAgICAgICYmIGJveERpcmVjdGlv
biA9PSBvdGhlci5ib3hEaXJlY3Rpb24KKyAgICAgICAgJiYgcnRsT3JkZXJpbmcgPT0gb3RoZXIu
cnRsT3JkZXJpbmcKKyAgICAgICAgJiYgcHJpbnRDb2xvckFkanVzdCA9PSBvdGhlci5wcmludENv
bG9yQWRqdXN0CisgICAgICAgICYmIHBvaW50ZXJFdmVudHMgPT0gb3RoZXIucG9pbnRlckV2ZW50
cworICAgICAgICAmJiBpbnNpZGVMaW5rID09IG90aGVyLmluc2lkZUxpbmsKKyAgICAgICAgJiYg
aW5zaWRlRGVmYXVsdEJ1dHRvbiA9PSBvdGhlci5pbnNpZGVEZWZhdWx0QnV0dG9uCisgICAgICAg
ICYmIHdyaXRpbmdNb2RlID09IG90aGVyLndyaXRpbmdNb2RlOworfQorCitpbmxpbmUgdW5zaWdu
ZWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpnZXRWYWx1ZSh1aW50NjRfdCBwb3Np
dGlvbkluZGVwZW5kZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKG1fZmxhZ3MgPj4gb2Zmc2V0KSAmIHBvc2l0aW9uSW5k
ZXBlbmRlbnRNYXNrKTsKK30KIAogaW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50
IHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CkBAIC0yMzI1LDUwICsyMTA0LDI1
NiBAQCBpbmxpbmUgRUJvcmRlclN0eWxlIGNvbGxhcHNlZEJvcmRlclN0eWxlKEVCb3JkZXJTdHls
ZSBzdHlsZSkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxl
OjpzZXRab29tKGZsb2F0IGYpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzQmFja2dyb3Vu
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJbWFnZSgpOwor
fQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3BhY2Ugd2hpdGVT
cGFjZSkKIHsKLSAgICBzZXRFZmZlY3RpdmVab29tKGVmZmVjdGl2ZVpvb20oKSAqIGYpOwotICAg
IGlmIChjb21wYXJlRXF1YWwodmlzdWFsLT5tX3pvb20sIGYpKQorICAgIC8vIE5vd3JhcCBhbmQg
cHJlIGRvbid0IGF1dG9tYXRpY2FsbHkgd3JhcC4KKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBO
T1dSQVAgJiYgd2hpdGVTcGFjZSAhPSBQUkU7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxl
OjpwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK3sKKyAgICAvLyBOb3Jt
YWwgYW5kIG5vd3JhcCBkbyBub3QgcHJlc2VydmUgbmV3bGluZXMuCisgICAgcmV0dXJuIHdoaXRl
U3BhY2UgIT0gTk9STUFMICYmIHdoaXRlU3BhY2UgIT0gTk9XUkFQOworfQorCitpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQoreworICAg
IC8vIFByZSBhbmQgcHJld3JhcCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4KKyAgICByZXR1
cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJT
dHlsZTo6aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAorewor
ICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgY2FzZSAnICc6CisgICAgY2FzZSAnXHQnOgor
ICAgICAgICByZXR1cm4gY29sbGFwc2VXaGl0ZVNwYWNlKCk7CisgICAgY2FzZSAnXG4nOgorICAg
ICAgICByZXR1cm4gIXByZXNlcnZlTmV3bGluZSgpOworICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB2aXN1YWwuYWNjZXNzKCktPm1fem9vbSA9IGY7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFBSRV9XUkFQIHx8IGxpbmVCcmVhaygp
ID09IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6OmJyZWFrV29yZHMoKSBjb25zdAoreworICAgIHJldHVybiB3b3JkQnJlYWsoKSA9PSBCcmVh
a1dvcmRCcmVhayB8fCBvdmVyZmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93V3JhcDsKK30KKwor
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdAorewor
ICAgIGF1dG8gYXhpcyA9IGNvbHVtbkF4aXMoKTsKKyAgICByZXR1cm4gYXhpcyA9PSBBdXRvQ29s
dW1uQXhpcyB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IChheGlzID09IEhvcml6b250
YWxDb2x1bW5BeGlzKTsKK30KKworaW5saW5lIEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlclN0
eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX09S
SUVOVEFUSU9OKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbik7CisjZWxzZQorICAgIHJldHVy
biBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0TG9naWNhbFdpZHRoKExlbmd0aCYmIGxvZ2ljYWxXaWR0aCkKK3sKKyAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgc2V0V2lkdGgoV1RGTW92ZShs
b2dpY2FsV2lkdGgpKTsKKyAgICBlbHNlCisgICAgICAgIHNldEhlaWdodChXVEZNb3ZlKGxvZ2lj
YWxXaWR0aCkpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TG9naWNhbEhlaWdo
dChMZW5ndGgmJiBsb2dpY2FsSGVpZ2h0KQoreworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQorICAgICAgICBzZXRIZWlnaHQoV1RGTW92ZShsb2dpY2FsSGVpZ2h0KSk7CisgICAg
ZWxzZQorICAgICAgICBzZXRXaWR0aChXVEZNb3ZlKGxvZ2ljYWxIZWlnaHQpKTsKK30KKworaW5s
aW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkK
K3sKKyAgICBhdXRvIHRvcExlZnQgPSBzaXplOworICAgIHNldEJvcmRlclRvcExlZnRSYWRpdXMo
V1RGTW92ZSh0b3BMZWZ0KSk7CisgICAgYXV0byB0b3BSaWdodCA9IHNpemU7CisgICAgc2V0Qm9y
ZGVyVG9wUmlnaHRSYWRpdXMoV1RGTW92ZSh0b3BSaWdodCkpOworICAgIGF1dG8gYm90dG9tTGVm
dCA9IHNpemU7CisgICAgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhXVEZNb3ZlKGJvdHRvbUxl
ZnQpKTsKKyAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhXVEZNb3ZlKHNpemUpKTsKK30K
KworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXpl
JiBzaXplKQoreworICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplIHsgeyBzaXplLndpZHRo
KCksIEZpeGVkIH0sIHsgc2l6ZS5oZWlnaHQoKSwgRml4ZWQgfSB9KTsKK30KKworaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OnNldFpvb20oZmxvYXQgem9vbUxldmVsKQoreworICAgIHNldEVmZmVj
dGl2ZVpvb20oZWZmZWN0aXZlWm9vbSgpICogem9vbUxldmVsKTsKKyAgICBpZiAoY29tcGFyZUVx
dWFsKG1fdmlzdWFsRGF0YS0+em9vbSwgem9vbUxldmVsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fdmlzdWFsRGF0YS5hY2Nlc3MoKS56b29tID0gem9vbUxldmVsOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0RWZmZWN0aXZlWm9vbShm
bG9hdCBmKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldEVmZmVjdGl2ZVpvb20oZmxvYXQg
em9vbUxldmVsKQogewotICAgIGlmIChjb21wYXJlRXF1YWwocmFyZUluaGVyaXRlZERhdGEtPm1f
ZWZmZWN0aXZlWm9vbSwgZikpCisgICAgaWYgKGNvbXBhcmVFcXVhbChtX3JhcmVJbmhlcml0ZWRE
YXRhLT5lZmZlY3RpdmVab29tLCB6b29tTGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZWZmZWN0aXZlWm9vbSA9IGY7CisgICAg
bV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5lZmZlY3RpdmVab29tID0gem9vbUxldmVsOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0VGV4dE9y
aWVudGF0aW9uKFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKGNv
bXBhcmVFcXVhbChyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24sIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pKSkKKyAgICBpZiAoY29tcGFyZUVxdWFsKG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRleHRPcmllbnRhdGlvbikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9yYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS50ZXh0T3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odGV4dE9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQg
UmVuZGVyU3R5bGU6OmFkanVzdEJhY2tncm91bmRMYXllcnMoKQoreworICAgIGlmIChiYWNrZ3Jv
dW5kTGF5ZXJzKCkubmV4dCgpKSB7CisgICAgICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKS5j
dWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmZpbGxV
bnNldFByb3BlcnRpZXMoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjph
ZGp1c3RNYXNrTGF5ZXJzKCkKK3sKKyAgICBpZiAobWFza0xheWVycygpLm5leHQoKSkgeworICAg
ICAgICBlbnN1cmVNYXNrTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7CisgICAgICAgIGVuc3Vy
ZU1hc2tMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7CisgICAgfQorfQorCitpbmxpbmUg
dm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJBbmltYXRpb25zKCkKK3sKKyAgICBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBudWxscHRyOworfQorCitpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6Y2xlYXJUcmFuc2l0aW9ucygpCit7CisgICAgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYgdmFsdWUp
Cit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZSA9PSB2YWx1
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
c2hhcGVPdXRzaWRlID0gV1RGTW92ZSh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0
eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQpCit7
CisgICAgZmxvYXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRvPGZsb2F0Pihz
aGFwZUltYWdlVGhyZXNob2xkLCAwLCAxKTsKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdlVGhyZXNob2xkKTsK
K30KIAotICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RleHRPcmllbnRhdGlvbiA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24pOworaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJiBvcGVyYXRp
b24pCit7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG9wZXJh
dGlvbikKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jbGlwUGF0aCA9
IFdURk1vdmUob3BlcmF0aW9uKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OndpbGxD
aGFuZ2VDcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbENo
YW5nZSgpICYmIHdpbGxDaGFuZ2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCk7Cit9CisK
K2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9PSBJTkxJTkVfQkxP
Q0sKKyAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSgpID09IFRB
QkxFX0NBUFRJT04KKyAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRFTTsKK30KKworaW5s
aW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHYpCit7Cisg
ICAgaWYgKHYgPT0gd3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1f
aW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUgPSB2OwogICAgIHJldHVybiB0cnVlOwogfQogCitp
bmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVu
aXQmIGxvZ2ljYWxSaWdodCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwg
bG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExl
ZnQsIGxvZ2ljYWxSaWdodCk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFk
b3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVu
aXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVu
dChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpvbnRh
bEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5IGRpc3BsYXkp
Cit7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5M
SU5FX0JPWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYCisjaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKKyAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRAorI2VuZGlmCisgICAgICAg
IHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHls
ZTo6aXNEaXNwbGF5SW5saW5lVHlwZShFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVybiBk
aXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7Cit9CisK
K2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBk
aXNwbGF5KQoreworICAgIHJldHVybiBkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJ
TkVfRkxFWDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3go
RURpc3BsYXkgZGlzcGxheSkKK3sKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHJl
dHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGRpc3BsYXkpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURp
c3BsYXkgZGlzcGxheSkKK3sKKyAgICByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVCb3goZGlzcGxh
eSkgfHwgaXNEaXNwbGF5R3JpZEJveChkaXNwbGF5KTsKK30KKwogaW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsKKyAgICByZXR1cm4g
bV9ub25Jbmhlcml0ZWRGbGFncy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsKIH0KIAogaW5s
aW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29u
c3QKIHsKLSAgICByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1BzZXVkb1N0eWxlKHBzZXVk
byk7CisgICAgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzUHNldWRvU3R5bGUocHNldWRv
KTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVk
b0lkIHBzZXVkbykKIHsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzUHNldWRvU3R5bGUo
cHNldWRvKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1BzZXVkb1N0eWxlKHBzZXVk
byk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZXMoUHNl
dWRvSWRTZXQgcHNldWRvSWRTZXQpCiB7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc1Bz
ZXVkb1N0eWxlcyhwc2V1ZG9JZFNldCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNQ
c2V1ZG9TdHlsZXMocHNldWRvSWRTZXQpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Qm94UmVmbGVjdChSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiYmIHJlZmxlY3QpCit7CisgICAg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3hSZWZsZWN0LCBXVEZNb3ZlKHJlZmxl
Y3QpKTsKIH0KIAogaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKaW5kZXggNmMwMmU1MDhhZjFhYTM4YjIyYzJmMjM5OWZk
ZDUyNDdhZTM0MWM5Zi4uZTQ2OGY4OWQ4MTEzYzg4ZDYwZTU0MTJhMGFiZjBjMmZiYjllMDE1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
Y3BwCkBAIC00OSw0NiArNDksNDYgQEAgUmVmPFNWR1JlbmRlclN0eWxlPiBTVkdSZW5kZXJTdHls
ZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkKIH0KIAogU1ZHUmVuZGVyU3R5bGU6OlNWR1JlbmRlclN0
eWxlKCkKLSAgICA6IGZpbGwoZGVmYXVsdFNWR1N0eWxlKCkuZmlsbCkKLSAgICAsIHN0cm9rZShk
ZWZhdWx0U1ZHU3R5bGUoKS5zdHJva2UpCi0gICAgLCB0ZXh0KGRlZmF1bHRTVkdTdHlsZSgpLnRl
eHQpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoZGVmYXVsdFNWR1N0eWxlKCkuaW5oZXJpdGVk
UmVzb3VyY2VzKQotICAgICwgc3RvcHMoZGVmYXVsdFNWR1N0eWxlKCkuc3RvcHMpCi0gICAgLCBt
aXNjKGRlZmF1bHRTVkdTdHlsZSgpLm1pc2MpCi0gICAgLCBzaGFkb3dTVkcoZGVmYXVsdFNWR1N0
eWxlKCkuc2hhZG93U1ZHKQotICAgICwgbGF5b3V0KGRlZmF1bHRTVkdTdHlsZSgpLmxheW91dCkK
LSAgICAsIHJlc291cmNlcyhkZWZhdWx0U1ZHU3R5bGUoKS5yZXNvdXJjZXMpCisgICAgOiBtX2Zp
bGxEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fZmlsbERhdGEpCisgICAgLCBtX3N0cm9rZURhdGEo
ZGVmYXVsdFNWR1N0eWxlKCkubV9zdHJva2VEYXRhKQorICAgICwgbV90ZXh0RGF0YShkZWZhdWx0
U1ZHU3R5bGUoKS5tX3RleHREYXRhKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEoZGVm
YXVsdFNWR1N0eWxlKCkubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEpCisgICAgLCBtX3N0b3BEYXRh
KGRlZmF1bHRTVkdTdHlsZSgpLm1fc3RvcERhdGEpCisgICAgLCBtX21pc2NEYXRhKGRlZmF1bHRT
VkdTdHlsZSgpLm1fbWlzY0RhdGEpCisgICAgLCBtX3NoYWRvd0RhdGEoZGVmYXVsdFNWR1N0eWxl
KCkubV9zaGFkb3dEYXRhKQorICAgICwgbV9sYXlvdXREYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1f
bGF5b3V0RGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGRlZmF1bHRTVkdT
dHlsZSgpLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKQogewogICAgIHNldEJpdERlZmF1bHRz
KCk7CiB9CiAKIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0VHlw
ZSkKLSAgICA6IGZpbGwoU3R5bGVGaWxsRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBzdHJva2UoU3R5
bGVTdHJva2VEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHRleHQoU3R5bGVUZXh0RGF0YTo6Y3JlYXRl
KCkpCi0gICAgLCBpbmhlcml0ZWRSZXNvdXJjZXMoU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6
OmNyZWF0ZSgpKQotICAgICwgc3RvcHMoU3R5bGVTdG9wRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBt
aXNjKFN0eWxlTWlzY0RhdGE6OmNyZWF0ZSgpKQotICAgICwgc2hhZG93U1ZHKFN0eWxlU2hhZG93
U1ZHRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBsYXlvdXQoU3R5bGVMYXlvdXREYXRhOjpjcmVhdGUo
KSkKLSAgICAsIHJlc291cmNlcyhTdHlsZVJlc291cmNlRGF0YTo6Y3JlYXRlKCkpCisgICAgOiBt
X2ZpbGxEYXRhKFN0eWxlRmlsbERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdHJva2VEYXRhKFN0
eWxlU3Ryb2tlRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3RleHREYXRhKFN0eWxlVGV4dERhdGE6
OmNyZWF0ZSgpKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVJbmhlcml0ZWRS
ZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdG9wRGF0YShTdHlsZVN0b3BEYXRhOjpj
cmVhdGUoKSkKKyAgICAsIG1fbWlzY0RhdGEoU3R5bGVNaXNjRGF0YTo6Y3JlYXRlKCkpCisgICAg
LCBtX3NoYWRvd0RhdGEoU3R5bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fbGF5
b3V0RGF0YShTdHlsZUxheW91dERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9ub25Jbmhlcml0ZWRS
ZXNvdXJjZURhdGEoU3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQogewogICAgIHNldEJpdERl
ZmF1bHRzKCk7CiB9CiAKIGlubGluZSBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVuZGVyU3R5bGUoY29u
c3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTVkdSZW5kZXJTdHls
ZT4oKQotICAgICwgc3ZnX2luaGVyaXRlZF9mbGFncyhvdGhlci5zdmdfaW5oZXJpdGVkX2ZsYWdz
KQotICAgICwgc3ZnX25vbmluaGVyaXRlZF9mbGFncyhvdGhlci5zdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzKQotICAgICwgZmlsbChvdGhlci5maWxsKQotICAgICwgc3Ryb2tlKG90aGVyLnN0cm9rZSkK
LSAgICAsIHRleHQob3RoZXIudGV4dCkKLSAgICAsIGluaGVyaXRlZFJlc291cmNlcyhvdGhlci5p
bmhlcml0ZWRSZXNvdXJjZXMpCi0gICAgLCBzdG9wcyhvdGhlci5zdG9wcykKLSAgICAsIG1pc2Mo
b3RoZXIubWlzYykKLSAgICAsIHNoYWRvd1NWRyhvdGhlci5zaGFkb3dTVkcpCi0gICAgLCBsYXlv
dXQob3RoZXIubGF5b3V0KQotICAgICwgcmVzb3VyY2VzKG90aGVyLnJlc291cmNlcykKKyAgICAs
IG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKKyAgICAsIG1fbm9uSW5o
ZXJpdGVkRmxhZ3Mob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncykKKyAgICAsIG1fZmlsbERhdGEo
b3RoZXIubV9maWxsRGF0YSkKKyAgICAsIG1fc3Ryb2tlRGF0YShvdGhlci5tX3N0cm9rZURhdGEp
CisgICAgLCBtX3RleHREYXRhKG90aGVyLm1fdGV4dERhdGEpCisgICAgLCBtX2luaGVyaXRlZFJl
c291cmNlRGF0YShvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YSkKKyAgICAsIG1fc3RvcERh
dGEob3RoZXIubV9zdG9wRGF0YSkKKyAgICAsIG1fbWlzY0RhdGEob3RoZXIubV9taXNjRGF0YSkK
KyAgICAsIG1fc2hhZG93RGF0YShvdGhlci5tX3NoYWRvd0RhdGEpCisgICAgLCBtX2xheW91dERh
dGEob3RoZXIubV9sYXlvdXREYXRhKQorICAgICwgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEo
b3RoZXIubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEpCiB7CiB9CiAKQEAgLTEwMyw0OSArMTAz
LDQ2IEBAIFNWR1JlbmRlclN0eWxlOjp+U1ZHUmVuZGVyU3R5bGUoKQogCiBib29sIFNWR1JlbmRl
clN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsK
LSAgICByZXR1cm4gZmlsbCA9PSBvdGhlci5maWxsCi0gICAgICAgICYmIHN0cm9rZSA9PSBvdGhl
ci5zdHJva2UKLSAgICAgICAgJiYgdGV4dCA9PSBvdGhlci50ZXh0Ci0gICAgICAgICYmIHN0b3Bz
ID09IG90aGVyLnN0b3BzCi0gICAgICAgICYmIG1pc2MgPT0gb3RoZXIubWlzYwotICAgICAgICAm
JiBzaGFkb3dTVkcgPT0gb3RoZXIuc2hhZG93U1ZHCi0gICAgICAgICYmIGxheW91dCA9PSBvdGhl
ci5sYXlvdXQKLSAgICAgICAgJiYgaW5oZXJpdGVkUmVzb3VyY2VzID09IG90aGVyLmluaGVyaXRl
ZFJlc291cmNlcwotICAgICAgICAmJiByZXNvdXJjZXMgPT0gb3RoZXIucmVzb3VyY2VzCi0gICAg
ICAgICYmIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX2luaGVyaXRlZF9mbGFncwot
ICAgICAgICAmJiBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzID09IG90aGVyLnN2Z19ub25pbmhlcml0
ZWRfZmxhZ3M7CisgICAgcmV0dXJuIG1fZmlsbERhdGEgPT0gb3RoZXIubV9maWxsRGF0YQorICAg
ICAgICAmJiBtX3N0cm9rZURhdGEgPT0gb3RoZXIubV9zdHJva2VEYXRhCisgICAgICAgICYmIG1f
dGV4dERhdGEgPT0gb3RoZXIubV90ZXh0RGF0YQorICAgICAgICAmJiBtX3N0b3BEYXRhID09IG90
aGVyLm1fc3RvcERhdGEKKyAgICAgICAgJiYgbV9taXNjRGF0YSA9PSBvdGhlci5tX21pc2NEYXRh
CisgICAgICAgICYmIG1fc2hhZG93RGF0YSA9PSBvdGhlci5tX3NoYWRvd0RhdGEKKyAgICAgICAg
JiYgbV9sYXlvdXREYXRhID09IG90aGVyLm1fbGF5b3V0RGF0YQorICAgICAgICAmJiBtX2luaGVy
aXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YQorICAgICAg
ICAmJiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX25vbkluaGVyaXRlZFJl
c291cmNlRGF0YQorICAgICAgICAmJiBtX2luaGVyaXRlZEZsYWdzID09IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX25vbklu
aGVyaXRlZEZsYWdzOwogfQogCi1ib29sIFNWR1JlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVh
bChjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0Citib29sIFNWR1JlbmRlclN0eWxl
Ojppbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGZpbGwgIT0gb3RoZXItPmZpbGwKLSAgICAgICAgfHwgc3Ryb2tlICE9IG90
aGVyLT5zdHJva2UKLSAgICAgICAgfHwgdGV4dCAhPSBvdGhlci0+dGV4dAotICAgICAgICB8fCBp
bmhlcml0ZWRSZXNvdXJjZXMgIT0gb3RoZXItPmluaGVyaXRlZFJlc291cmNlcwotICAgICAgICB8
fCBzdmdfaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzOworICAg
IHJldHVybiBtX2ZpbGxEYXRhICE9IG90aGVyLm1fZmlsbERhdGEKKyAgICAgICAgfHwgbV9zdHJv
a2VEYXRhICE9IG90aGVyLm1fc3Ryb2tlRGF0YQorICAgICAgICB8fCBtX3RleHREYXRhICE9IG90
aGVyLm1fdGV4dERhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgIT0gb3Ro
ZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncyAh
PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzOwogfQogCi12b2lkIFNWR1JlbmRlclN0eWxlOjppbmhl
cml0RnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnSW5oZXJpdFBhcmVudCkKK3ZvaWQgU1ZH
UmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikKIHsK
LSAgICBpZiAoIXN2Z0luaGVyaXRQYXJlbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBtX2ZpbGxE
YXRhID0gb3RoZXIubV9maWxsRGF0YTsKKyAgICBtX3N0cm9rZURhdGEgPSBvdGhlci5tX3N0cm9r
ZURhdGE7CisgICAgbV90ZXh0RGF0YSA9IG90aGVyLm1fdGV4dERhdGE7CisgICAgbV9pbmhlcml0
ZWRSZXNvdXJjZURhdGEgPSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YTsKIAotICAgIGZp
bGwgPSBzdmdJbmhlcml0UGFyZW50LT5maWxsOwotICAgIHN0cm9rZSA9IHN2Z0luaGVyaXRQYXJl
bnQtPnN0cm9rZTsKLSAgICB0ZXh0ID0gc3ZnSW5oZXJpdFBhcmVudC0+dGV4dDsKLSAgICBpbmhl
cml0ZWRSZXNvdXJjZXMgPSBzdmdJbmhlcml0UGFyZW50LT5pbmhlcml0ZWRSZXNvdXJjZXM7Ci0K
LSAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzID0gc3ZnSW5oZXJpdFBhcmVudC0+c3ZnX2luaGVyaXRl
ZF9mbGFnczsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gb3RoZXIubV9pbmhlcml0ZWRGbGFnczsK
IH0KIAotdm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZH
UmVuZGVyU3R5bGUqIG90aGVyKQordm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRl
ZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogewotICAgIHN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MgPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFnczsKLSAgICBzdG9wcyA9IG90
aGVyLT5zdG9wczsKLSAgICBtaXNjID0gb3RoZXItPm1pc2M7Ci0gICAgc2hhZG93U1ZHID0gb3Ro
ZXItPnNoYWRvd1NWRzsKLSAgICBsYXlvdXQgPSBvdGhlci0+bGF5b3V0OwotICAgIHJlc291cmNl
cyA9IG90aGVyLT5yZXNvdXJjZXM7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncyA9IG90aGVyLm1f
bm9uSW5oZXJpdGVkRmxhZ3M7CisgICAgbV9zdG9wRGF0YSA9IG90aGVyLm1fc3RvcERhdGE7Cisg
ICAgbV9taXNjRGF0YSA9IG90aGVyLm1fbWlzY0RhdGE7CisgICAgbV9zaGFkb3dEYXRhID0gb3Ro
ZXIubV9zaGFkb3dEYXRhOworICAgIG1fbGF5b3V0RGF0YSA9IG90aGVyLm1fbGF5b3V0RGF0YTsK
KyAgICBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSA9IG90aGVyLm1fbm9uSW5oZXJpdGVkUmVz
b3VyY2VEYXRhOwogfQogCiBWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFp
bnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdApAQCAtMTg4LDEwNCArMTg1LDEwNCBAQCBWZWN0
b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3JkZXIo
KSBjb25zdAogICAgIHJldHVybiBwYWludE9yZGVyOwogfQogCi1TdHlsZURpZmZlcmVuY2UgU1ZH
UmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAorU3R5
bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBv
dGhlcikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBBbGwgY29tcGFyaXNpb25zIHRoYXQgbWF5IHJl
dHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQgaGF2ZSB0byBnbyBiZWZvcmUgdGhvc2Ugd2hvIHJl
dHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50CiAKICAgICAvLyBJZiBrZXJuaW5nIGNoYW5nZXMs
IHdlIG5lZWQgYSByZWxheW91dCwgdG8gZm9yY2UgU1ZHQ2hhcmFjdGVyRGF0YSB0byBiZSByZWNh
bGN1bGF0ZWQgaW4gdGhlIFNWR1Jvb3RJbmxpbmVCb3guCi0gICAgaWYgKHRleHQgIT0gb3RoZXIt
PnRleHQpCisgICAgaWYgKG1fdGV4dERhdGEgIT0gb3RoZXIubV90ZXh0RGF0YSkKICAgICAgICAg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElmIHJlc291cmNlcyBjaGFu
Z2UsIHdlIG5lZWQgYSByZWxheW91dCwgYXMgdGhlIHByZXNlbmNlIG9mIHJlc291cmNlcyBpbmZs
dWVuY2VzIHRoZSByZXBhaW50IHJlY3QuCi0gICAgaWYgKHJlc291cmNlcyAhPSBvdGhlci0+cmVz
b3VyY2VzKQorICAgIGlmIChtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YSAhPSBvdGhlci5tX25v
bkluaGVyaXRlZFJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxh
eW91dDsKIAogICAgIC8vIElmIG1hcmtlcnMgY2hhbmdlLCB3ZSBuZWVkIGEgcmVsYXlvdXQsIGFz
IG1hcmtlciBib3VuZGFyaWVzIGFyZSBjYWNoZWQgaW4gUmVuZGVyU1ZHUGF0aC4KLSAgICBpZiAo
aW5oZXJpdGVkUmVzb3VyY2VzICE9IG90aGVyLT5pbmhlcml0ZWRSZXNvdXJjZXMpCisgICAgaWYg
KG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRh
KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gQWxsIHRl
eHQgcmVsYXRlZCBwcm9wZXJ0aWVzIGluZmx1ZW5jZSBsYXlvdXQuCi0gICAgaWYgKHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX3Rl
eHRBbmNob3IKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlv
bkhvcml6b250YWwgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRh
dGlvblZlcnRpY2FsCi0gICAgICAgIHx8IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25t
ZW50QmFzZWxpbmUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50
QmFzZWxpbmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJh
c2VsaW5lICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxp
bmUKLSAgICAgICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0ICE9
IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQpCisgICAgaWYg
KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRl
eHRBbmNob3IKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9y
aXpvbnRhbCAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2Fs
ICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCisgICAg
ICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgIT0g
b3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZQorICAg
ICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmUgIT0g
b3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lCisgICAg
ICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCAhPSBvdGhl
ci5tX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQpCiAgICAgICAgIHJl
dHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBUZXh0IHJlbGF0ZWQgcHJvcGVy
dGllcyBpbmZsdWVuY2UgbGF5b3V0LgotICAgIGJvb2wgbWlzY05vdEVxdWFsID0gbWlzYyAhPSBv
dGhlci0+bWlzYzsKLSAgICBpZiAobWlzY05vdEVxdWFsICYmIG1pc2MtPmJhc2VsaW5lU2hpZnRW
YWx1ZSAhPSBvdGhlci0+bWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlKQorICAgIGJvb2wgbWlzY05v
dEVxdWFsID0gbV9taXNjRGF0YSAhPSBvdGhlci5tX21pc2NEYXRhOworICAgIGlmIChtaXNjTm90
RXF1YWwgJiYgbV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlICE9IG90aGVyLm1fbWlzY0Rh
dGEtPmJhc2VsaW5lU2hpZnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxh
eW91dDsKIAogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYWZmZWN0IHRoZSBjYWNoZWQgc3Ryb2tl
IGJvdW5kaW5nIGJveCByZWN0cy4KLSAgICBpZiAoc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5
bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlCi0gICAgICAgIHx8IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFn
cy5fam9pblN0eWxlKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmNhcFN0eWxlICE9IG90aGVy
Lm1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5q
b2luU3R5bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5qb2luU3R5bGUpCiAgICAgICAgIHJl
dHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBTaGFkb3cgY2hhbmdlcyByZXF1
aXJlIHJlbGF5b3V0cywgYXMgdGhleSBhZmZlY3QgdGhlIHJlcGFpbnQgcmVjdHMuCi0gICAgaWYg
KHNoYWRvd1NWRyAhPSBvdGhlci0+c2hhZG93U1ZHKQorICAgIGlmIChtX3NoYWRvd0RhdGEgIT0g
b3RoZXIubV9zaGFkb3dEYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0
OwogCiAgICAgLy8gVGhlIHggb3IgeSBwcm9wZXJ0aWVzIHJlcXVpcmUgcmVsYXlvdXQuCi0gICAg
aWYgKGxheW91dCAhPSBvdGhlci0+bGF5b3V0KQorICAgIGlmIChtX2xheW91dERhdGEgIT0gb3Ro
ZXIubV9sYXlvdXREYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OyAK
IAogICAgIC8vIFNvbWUgc3Ryb2tlIHByb3BlcnRpZXMsIHJlcXVpcmVzIHJlbGF5b3V0cywgYXMg
dGhlIGNhY2hlZCBzdHJva2UgYm91bmRhcmllcyBuZWVkIHRvIGJlIHJlY2FsY3VsYXRlZC4KLSAg
ICBpZiAoc3Ryb2tlICE9IG90aGVyLT5zdHJva2UpIHsKLSAgICAgICAgaWYgKHN0cm9rZS0+d2lk
dGggIT0gb3RoZXItPnN0cm9rZS0+d2lkdGgKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+cGFpbnRU
eXBlICE9IG90aGVyLT5zdHJva2UtPnBhaW50VHlwZQotICAgICAgICAgICAgfHwgc3Ryb2tlLT5w
YWludENvbG9yICE9IG90aGVyLT5zdHJva2UtPnBhaW50Q29sb3IKLSAgICAgICAgICAgIHx8IHN0
cm9rZS0+cGFpbnRVcmkgIT0gb3RoZXItPnN0cm9rZS0+cGFpbnRVcmkKLSAgICAgICAgICAgIHx8
IHN0cm9rZS0+bWl0ZXJMaW1pdCAhPSBvdGhlci0+c3Ryb2tlLT5taXRlckxpbWl0Ci0gICAgICAg
ICAgICB8fCBzdHJva2UtPmRhc2hBcnJheSAhPSBvdGhlci0+c3Ryb2tlLT5kYXNoQXJyYXkKLSAg
ICAgICAgICAgIHx8IHN0cm9rZS0+ZGFzaE9mZnNldCAhPSBvdGhlci0+c3Ryb2tlLT5kYXNoT2Zm
c2V0Ci0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciAhPSBvdGhl
ci0+c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+
dmlzaXRlZExpbmtQYWludFVyaSAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJp
Ci0gICAgICAgICAgICB8fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlICE9IG90aGVyLT5z
dHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKQorICAgIGlmIChtX3N0cm9rZURhdGEgIT0gb3Ro
ZXIubV9zdHJva2VEYXRhKSB7CisgICAgICAgIGlmIChtX3N0cm9rZURhdGEtPndpZHRoICE9IG90
aGVyLm1fc3Ryb2tlRGF0YS0+d2lkdGgKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+cGFp
bnRUeXBlICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlCisgICAgICAgICAgICB8fCBt
X3N0cm9rZURhdGEtPnBhaW50Q29sb3IgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5wYWludENvbG9y
CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50VXJpICE9IG90aGVyLm1fc3Ryb2tl
RGF0YS0+cGFpbnRVcmkKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdCAh
PSBvdGhlci5tX3N0cm9rZURhdGEtPm1pdGVyTGltaXQKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tl
RGF0YS0+ZGFzaEFycmF5ICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5CisgICAgICAg
ICAgICB8fCBtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5k
YXNoT2Zmc2V0CisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRD
b2xvciAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcgorICAgICAg
ICAgICAgfHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpICE9IG90aGVyLm1fc3Ry
b2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaQorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRh
LT52aXNpdGVkTGlua1BhaW50VHlwZSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5r
UGFpbnRUeXBlKQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAog
ICAgICAgICAvLyBPbmx5IHRoZSBzdHJva2Utb3BhY2l0eSBjYXNlIHJlbWFpbnMsIHdoZXJlIHdl
IG9ubHkgbmVlZCBhIHJlcGFpbnQuCi0gICAgICAgIEFTU0VSVChzdHJva2UtPm9wYWNpdHkgIT0g
b3RoZXItPnN0cm9rZS0+b3BhY2l0eSk7CisgICAgICAgIEFTU0VSVChtX3N0cm9rZURhdGEtPm9w
YWNpdHkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5vcGFjaXR5KTsKICAgICAgICAgcmV0dXJuIFN0
eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCiAgICAgLy8gdmVjdG9yLWVmZmVjdCBjaGFu
Z2VzIHJlcXVpcmUgYSByZS1sYXlvdXQuCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5fdmVjdG9yRWZmZWN0ICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3Rv
ckVmZmVjdCkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZl
Y3QgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QpCiAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBOT1RFOiBBbGwg
Y29tcGFyaXNpb25zIGJlbG93IG1heSBvbmx5IHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50
CiAKICAgICAvLyBQYWludGluZyByZWxhdGVkIHByb3BlcnRpZXMgb25seSBuZWVkIHJlcGFpbnRz
LiAKICAgICBpZiAobWlzY05vdEVxdWFsKSB7Ci0gICAgICAgIGlmIChtaXNjLT5mbG9vZENvbG9y
ICE9IG90aGVyLT5taXNjLT5mbG9vZENvbG9yCi0gICAgICAgICAgICB8fCBtaXNjLT5mbG9vZE9w
YWNpdHkgIT0gb3RoZXItPm1pc2MtPmZsb29kT3BhY2l0eQotICAgICAgICAgICAgfHwgbWlzYy0+
bGlnaHRpbmdDb2xvciAhPSBvdGhlci0+bWlzYy0+bGlnaHRpbmdDb2xvcikKKyAgICAgICAgaWYg
KG1fbWlzY0RhdGEtPmZsb29kQ29sb3IgIT0gb3RoZXIubV9taXNjRGF0YS0+Zmxvb2RDb2xvcgor
ICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5ICE9IG90aGVyLm1fbWlzY0Rh
dGEtPmZsb29kT3BhY2l0eQorICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+bGlnaHRpbmdDb2xv
ciAhPSBvdGhlci5tX21pc2NEYXRhLT5saWdodGluZ0NvbG9yKQogICAgICAgICAgICAgcmV0dXJu
IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAgICAgfQogCi0gICAgLy8gSWYgZmlsbCBjaGFuZ2Vz
LCB3ZSBqdXN0IG5lZWQgdG8gcmVwYWludC4gRmlsbCBib3VuZGFyaWVzIGFyZSBub3QgaW5mbHVl
bmNlZCBieSB0aGlzLCBvbmx5IGJ5IHRoZSBQYXRoLCB0aGF0IFJlbmRlclNWR1BhdGggY29udGFp
bnMuCi0gICAgaWYgKGZpbGwtPnBhaW50VHlwZSAhPSBvdGhlci0+ZmlsbC0+cGFpbnRUeXBlIHx8
IGZpbGwtPnBhaW50Q29sb3IgIT0gb3RoZXItPmZpbGwtPnBhaW50Q29sb3IKLSAgICAgICAgfHwg
ZmlsbC0+cGFpbnRVcmkgIT0gb3RoZXItPmZpbGwtPnBhaW50VXJpIHx8IGZpbGwtPm9wYWNpdHkg
IT0gb3RoZXItPmZpbGwtPm9wYWNpdHkpCisgICAgLy8gSWYgZmlsbCBkYXRhIGNoYW5nZXMsIHdl
IGp1c3QgbmVlZCB0byByZXBhaW50LiBGaWxsIGJvdW5kYXJpZXMgYXJlIG5vdCBpbmZsdWVuY2Vk
IGJ5IHRoaXMsIG9ubHkgYnkgdGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZHUGF0aCBjb250YWlucy4K
KyAgICBpZiAobV9maWxsRGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1fZmlsbERhdGEtPnBhaW50
VHlwZSB8fCBtX2ZpbGxEYXRhLT5wYWludENvbG9yICE9IG90aGVyLm1fZmlsbERhdGEtPnBhaW50
Q29sb3IKKyAgICAgICAgfHwgbV9maWxsRGF0YS0+cGFpbnRVcmkgIT0gb3RoZXIubV9maWxsRGF0
YS0+cGFpbnRVcmkgfHwgbV9maWxsRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX2ZpbGxEYXRhLT5v
cGFjaXR5KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIAogICAgIC8v
IElmIGdyYWRpZW50IHN0b3BzIGNoYW5nZSwgd2UganVzdCBuZWVkIHRvIHJlcGFpbnQuIFN0eWxl
IHVwZGF0ZXMgYXJlIGFscmVhZHkgaGFuZGxlZCB0aHJvdWdoIFJlbmRlclNWR0dyYWRpZW50U1Rv
cC4KLSAgICBpZiAoc3RvcHMgIT0gb3RoZXItPnN0b3BzKQorICAgIGlmIChtX3N0b3BEYXRhICE9
IG90aGVyLm1fc3RvcERhdGEpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50
OwogCiAgICAgLy8gQ2hhbmdlcyBvZiB0aGVzZSBmbGFncyBvbmx5IGNhdXNlIHJlcGFpbnRzLgot
ICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyAhPSBvdGhlci0+c3Zn
X2luaGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmcKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX3No
YXBlUmVuZGVyaW5nCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlICE9
IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZQotICAgICAgICB8fCBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9maWxsUnVsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZmls
bFJ1bGUKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9u
ICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24KLSAgICAg
ICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyAhPSBv
dGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycykKKyAg
ICBpZiAobV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRlcmluZyAhPSBvdGhlci5tX2luaGVyaXRl
ZEZsYWdzLmNvbG9yUmVuZGVyaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVS
ZW5kZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZworICAgICAg
ICB8fCBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
Y2xpcFJ1bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY29s
b3JJbnRlcnBvbGF0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0
aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpCiAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0gICAgaWYgKHN2Z19ub25p
bmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyAhPSBvdGhlci0+c3ZnX25vbmluaGVy
aXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZs
YWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxh
Z3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZl
cmVuY2VSZXBhaW50OwogCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlw
ZSAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlKQorICAgIGlmICht
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlICE9IG90aGVyLm1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50OwogCiAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUVxdWFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRleCAzOTE5NzVh
NThiOTUwZTdkNjc0YjY4YTdiZmE2NTNhN2Y3ODc0MTZmLi42NjlhMmMwOTgzZTJhMmIyNGRjYWZl
ODU3MzE3YjkyNGIxNDQ4MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChD
KSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTMyLDI1ICszMSwyMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEludFJl
Y3Q7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7Ci0KLWNsYXNzIFNWR1JlbmRlclN0eWxlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+IHsgICAgCitjbGFzcyBTVkdSZW5kZXJTdHlsZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNWR1JlbmRlclN0eWxlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7CiAgICAgc3RhdGljIFJl
ZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZW5k
ZXJTdHlsZSk7IH0KICAgICBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNvcHkoKSBjb25zdDsKICAgICB+
U1ZHUmVuZGVyU3R5bGUoKTsKIAotICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZH
UmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRl
clN0eWxlKik7Ci0gICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJT
dHlsZSopOworICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUm
KSBjb25zdDsKKyAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7Cisg
ICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSYpOwogCi0g
ICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAg
ICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIC8vIEluaXRp
YWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgRUFsaWdubWVudEJh
c2VsaW5lIGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFCX0FVVE87IH0KQEAg
LTg0LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxvb2RPcGFj
aXR5KCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxvb2RDb2xvcigp
IHsgcmV0dXJuIENvbG9yKDAsIDAsIDApOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxMaWdo
dGluZ0NvbG9yKCkgeyByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDI1NSk7IH0KLSAgICBzdGF0aWMg
U2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgU2hh
ZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMg
U3RyaW5nIGluaXRpYWxDbGlwcGVyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAg
IHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hc2tlclJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJTdGFydFJlc291cmNlKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KQEAgLTkyLDI4NyArODcsMTIyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIGluaXRpYWxNYXJrZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgc3RhdGljIEVNYXNrVHlwZSBpbml0aWFsTWFza1R5cGUoKSB7IHJldHVybiBNVF9MVU1JTkFO
Q0U7IH0KICAgICBzdGF0aWMgUGFpbnRPcmRlciBpbml0aWFsUGFpbnRPcmRlcigpIHsgcmV0dXJu
IFBhaW50T3JkZXJOb3JtYWw7IH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFs
QmFzZWxpbmVTaGlmdFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0
aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJl
ciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQotCi0gICAgc3RhdGljIFNWR0xl
bmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVl
IGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlw
ZU51bWJlciwgMCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAgIHN0YXRpYyBT
VkdMZW5ndGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7CisgICAgc3RhdGljIFNW
R0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCk7CiAKICAgICAvLyBTVkcgQ1NTIFByb3BlcnR5
IHNldHRlcnMKLSAgICB2b2lkIHNldEFsaWdubWVudEJhc2VsaW5lKEVBbGlnbm1lbnRCYXNlbGlu
ZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSA9IHZh
bDsgfQotICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNlbGluZSB2YWwp
IHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gdmFsOyB9Ci0g
ICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSB2YWw7IH0KLSAgICB2b2lkIHNldFZlY3Rv
ckVmZmVjdChFVmVjdG9yRWZmZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3Zl
Y3RvckVmZmVjdCA9IHZhbDsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJpbmcoRUJ1ZmZl
cmVkUmVuZGVyaW5nIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5k
ZXJpbmcgPSB2YWw7IH0KLSAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7IHN2Z19p
bmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDbGlwUnVsZShX
aW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2YWw7IH0KLSAg
ICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0KLSAgICB2b2lk
IHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IHZhbDsgfQot
ICAgIHZvaWQgc2V0Q29sb3JSZW5kZXJpbmcoRUNvbG9yUmVuZGVyaW5nIHZhbCkgeyBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0RmlsbFJ1
bGUoV2luZFJ1bGUgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlID0gdmFsOyB9
Ci0gICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2pvaW5TdHlsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0U2hhcGVSZW5kZXJpbmcoRVNoYXBl
UmVuZGVyaW5nIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZyA9IHZh
bDsgfQotICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwpIHsgc3ZnX2luaGVy
aXRlZF9mbGFncy5fdGV4dEFuY2hvciA9IHZhbDsgfQotICAgIHZvaWQgc2V0R2x5cGhPcmllbnRh
dGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlw
aE9yaWVudGF0aW9uVmVydGljYWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0
TWFza1R5cGUoRU1hc2tUeXBlIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5
cGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFBhaW50T3JkZXIoUGFpbnRPcmRlciB2YWwpIHsgc3Zn
X2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDeChjb25z
dCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+Y3ggPT0gb2JqKSkK
LSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+Y3ggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQg
c2V0Q3koY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPmN5
ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPmN5ID0gb2JqOwotICAgIH0K
LSAgICB2b2lkIHNldFIoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShs
YXlvdXQtPnIgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+ciA9IG9iajsK
LSAgICB9Ci0gICAgdm9pZCBzZXRSeChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAg
IGlmICghKGxheW91dC0+cnggPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+
cnggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0UnkoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAg
ewotICAgICAgICBpZiAoIShsYXlvdXQtPnJ5ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQu
YWNjZXNzKCktPnJ5ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFgoY29uc3QgTGVuZ3RoJiBv
YmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnggPT0gb2JqKSkKLSAgICAgICAgICAg
IGxheW91dC5hY2Nlc3MoKS0+eCA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRZKGNvbnN0IExl
bmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT55ID09IG9iaikpCi0gICAg
ICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRG
aWxsT3BhY2l0eShmbG9hdCBvYmopCi0gICAgewotICAgICAgICBpZiAoIShmaWxsLT5vcGFjaXR5
ID09IG9iaikpCi0gICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwotICAg
IH0KLQotICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xv
ciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0
cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCi0gICAgewotICAgICAg
ICBpZiAoYXBwbHlUb1JlZ3VsYXJTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEoZmlsbC0+cGFp
bnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50VHlw
ZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludENvbG9yID09IGNvbG9yKSkK
LSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5wYWludENvbG9yID0gY29sb3I7Ci0gICAg
ICAgICAgICBpZiAoIShmaWxsLT5wYWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIGZp
bGwuYWNjZXNzKCktPnBhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhcHBs
eVRvVmlzaXRlZExpbmtTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEoZmlsbC0+dmlzaXRlZExp
bmtQYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+dmlz
aXRlZExpbmtQYWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoZmlsbC0+dmlzaXRl
ZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2Vzcygp
LT52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIGlmICghKGZpbGwt
PnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2Vz
cygpLT52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0
cm9rZS0+b3BhY2l0eSA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5vcGFj
aXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnRUeXBl
IHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlU
b1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxz
ZSkKLSAgICB7Ci0gICAgICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7Ci0gICAgICAgICAg
ICBpZiAoIShzdHJva2UtPnBhaW50VHlwZSA9PSB0eXBlKSkKLSAgICAgICAgICAgICAgICBzdHJv
a2UuYWNjZXNzKCktPnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2Ut
PnBhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+
cGFpbnRDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT5wYWludFVyaSA9
PSB1cmkpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRVcmkgPSB1cmk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7Ci0gICAg
ICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5cGUpKQotICAg
ICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBl
OwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0gY29s
b3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludENv
bG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRV
cmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnZpc2l0ZWRMaW5r
UGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZURh
c2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBvYmopCi0gICAgewotICAgICAg
ICBpZiAoIShzdHJva2UtPmRhc2hBcnJheSA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFj
Y2VzcygpLT5kYXNoQXJyYXkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VNaXRl
ckxpbWl0KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+bWl0ZXJMaW1p
dCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5taXRlckxpbWl0ID0gb2Jq
OwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3RoJiBvYmopCi0g
ICAgewotICAgICAgICBpZiAoIShzdHJva2UtPndpZHRoID09IG9iaikpCi0gICAgICAgICAgICBz
dHJva2UuYWNjZXNzKCktPndpZHRoID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tl
RGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9r
ZS0+ZGFzaE9mZnNldCA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5kYXNo
T2Zmc2V0ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0S2VybmluZyhjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEodGV4dC0+a2VybmluZyA9PSBvYmop
KQotICAgICAgICAgICAgdGV4dC5hY2Nlc3MoKS0+a2VybmluZyA9IG9iajsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFN0b3BPcGFjaXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0
b3BzLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+b3BhY2l0
eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBDb2xvciYgb2Jq
KQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RvcHMtPmNvbG9yID09IG9iaikpCi0gICAgICAgICAg
ICBzdG9wcy5hY2Nlc3MoKS0+Y29sb3IgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGbG9v
ZE9wYWNpdHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+Zmxvb2RPcGFj
aXR5ID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZE9wYWNpdHkgPSBv
Ymo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBvYmopCi0g
ICAgewotICAgICAgICBpZiAoIShtaXNjLT5mbG9vZENvbG9yID09IG9iaikpCi0gICAgICAgICAg
ICBtaXNjLmFjY2VzcygpLT5mbG9vZENvbG9yID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0
TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlz
Yy0+bGlnaHRpbmdDb2xvciA9PSBvYmopKQotICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+bGln
aHRpbmdDb2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnRWYWx1
ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+
YmFzZWxpbmVTaGlmdFZhbHVlID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5i
YXNlbGluZVNoaWZ0VmFsdWUgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTaGFkb3coc3Rk
Ojp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG9iaikgeyBzaGFkb3dTVkcuYWNjZXNzKCktPnNoYWRv
dyA9IFdURk1vdmUob2JqKTsgfQorICAgIHZvaWQgc2V0QWxpZ25tZW50QmFzZWxpbmUoRUFsaWdu
bWVudEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVu
dEJhc2VsaW5lID0gdmFsOyB9CisgICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5lKEVEb21pbmFu
dEJhc2VsaW5lIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFz
ZWxpbmUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnQoRUJhc2VsaW5lU2hpZnQg
dmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCA9IHZhbDsg
fQorICAgIHZvaWQgc2V0VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3QgdmFsKSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0ID0gdmFsOyB9CisgICAgdm9pZCBzZXRC
dWZmZXJlZFJlbmRlcmluZyhFQnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IG1fbm9uSW5oZXJpdGVk
RmxhZ3MuZmxhZ0JpdHMuYnVmZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNldENh
cFN0eWxlKExpbmVDYXAgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgPSB2YWw7IH0K
KyAgICB2b2lkIHNldENsaXBSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNs
aXBSdWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24oRUNvbG9ySW50
ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb24gPSB2
YWw7IH0KKyAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJw
b2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
ID0gdmFsOyB9CisgICAgdm9pZCBzZXRDb2xvclJlbmRlcmluZyhFQ29sb3JSZW5kZXJpbmcgdmFs
KSB7IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlID0gdmFs
OyB9CisgICAgdm9pZCBzZXRKb2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IG1faW5oZXJpdGVkRmxh
Z3Muam9pblN0eWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRTaGFwZVJlbmRlcmluZyhFU2hhcGVS
ZW5kZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSB2YWw7IH0K
KyAgICB2b2lkIHNldFRleHRBbmNob3IoRVRleHRBbmNob3IgdmFsKSB7IG1faW5oZXJpdGVkRmxh
Z3MudGV4dEFuY2hvciA9IHZhbDsgfQorICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9y
aWVudGF0aW9uVmVydGljYWwgPSB2YWw7IH0KKyAgICB2b2lkIHNldE1hc2tUeXBlKEVNYXNrVHlw
ZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9IHZhbDsgfQor
ICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdz
LnBhaW50T3JkZXIgPSB2YWw7IH0KKyAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0aCYpOworICAg
IHZvaWQgc2V0Q3koY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRSKGNvbnN0IExlbmd0aCYp
OworICAgIHZvaWQgc2V0UngoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRSeShjb25zdCBM
ZW5ndGgmKTsKKyAgICB2b2lkIHNldFgoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRZKGNv
bnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxvYXQpOworICAgIHZvaWQg
c2V0RmlsbFBhaW50KFNWR1BhaW50VHlwZSwgY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHVy
aSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExp
bmtTdHlsZSA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQpOworICAg
IHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0
cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9W
aXNpdGVkTGlua1N0eWxlID0gZmFsc2UpOworCisgICAgdm9pZCBzZXRTdHJva2VEYXNoQXJyYXko
Y29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYpOworICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJM
aW1pdChmbG9hdCk7CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChjb25zdCBMZW5ndGgmKTsKKyAg
ICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRL
ZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CisgICAgdm9pZCBzZXRTdG9wT3BhY2l0eShm
bG9hdCk7CisgICAgdm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNl
dEZsb29kT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9y
Jik7CisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBz
ZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKKworICAgIHZvaWQg
c2V0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiYmIGRhdGEpIHsgbV9zaGFkb3dE
YXRhLmFjY2VzcygpLnNoYWRvdyA9IFdURk1vdmUoZGF0YSk7IH0KIAogICAgIC8vIFNldHRlcnMg
Zm9yIG5vbi1pbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgdm9pZCBzZXRDbGlwcGVyUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShyZXNvdXJjZXMtPmNsaXBw
ZXIgPT0gb2JqKSkKLSAgICAgICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+Y2xpcHBlciA9IG9i
ajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYgb2Jq
KQotICAgIHsKLSAgICAgICAgaWYgKCEocmVzb3VyY2VzLT5tYXNrZXIgPT0gb2JqKSkKLSAgICAg
ICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+bWFza2VyID0gb2JqOwotICAgIH0KKyAgICB2b2lk
IHNldENsaXBwZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hc2tlclJl
c291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gU2V0dGVycyBmb3IgaW5oZXJpdGVkIHJl
c291cmNlcwotICAgIHZvaWQgc2V0TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9i
aikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyU3RhcnQg
PT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2Vy
U3RhcnQgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+
bWFya2VyTWlkID09IG9iaikpCi0gICAgICAgICAgICBpbmhlcml0ZWRSZXNvdXJjZXMuYWNjZXNz
KCktPm1hcmtlck1pZCA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hcmtlckVuZFJlc291
cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoaW5oZXJpdGVkUmVz
b3VyY2VzLT5tYXJrZXJFbmQgPT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNl
cy5hY2Nlc3MoKS0+bWFya2VyRW5kID0gb2JqOwotICAgIH0KKyAgICB2b2lkIHNldE1hcmtlclN0
YXJ0UmVzb3VyY2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRNYXJrZXJNaWRSZXNvdXJj
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgLy8gUmVhZCBhY2Nlc3NvcnMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwot
ICAgIEVBbGlnbm1lbnRCYXNlbGluZSBhbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IChFQWxpZ25tZW50QmFzZWxpbmUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50
QmFzZWxpbmU7IH0KLSAgICBFRG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJhc2VsaW5lKCkgY29u
c3QgeyByZXR1cm4gKEVEb21pbmFudEJhc2VsaW5lKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X2RvbWluYW50QmFzZWxpbmU7IH0KLSAgICBFQmFzZWxpbmVTaGlmdCBiYXNlbGluZVNoaWZ0KCkg
Y29uc3QgeyByZXR1cm4gKEVCYXNlbGluZVNoaWZ0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X2Jhc2VsaW5lU2hpZnQ7IH0KLSAgICBFVmVjdG9yRWZmZWN0IHZlY3RvckVmZmVjdCgpIGNvbnN0
IHsgcmV0dXJuIChFVmVjdG9yRWZmZWN0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3Rv
ckVmZmVjdDsgfQotICAgIEVCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNv
bnN0IHsgcmV0dXJuIChFQnVmZmVyZWRSZW5kZXJpbmcpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5idWZmZXJlZFJlbmRlcmluZzsgfQotICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJl
dHVybiAoTGluZUNhcCkgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGU7IH0KLSAgICBXaW5k
UnVsZSBjbGlwUnVsZSgpIGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2luaGVyaXRlZF9m
bGFncy5fY2xpcFJ1bGU7IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBzdmdfaW5oZXJpdGVk
X2ZsYWdzLl9jb2xvckludGVycG9sYXRpb247IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xh
dGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczsgfQot
ICAgIEVDb2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFQ29s
b3JSZW5kZXJpbmcpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nOyB9Ci0gICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2ZpbGxSdWxlOyB9Ci0gICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gKExpbmVKb2luKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGU7IH0KLSAgICBF
U2hhcGVSZW5kZXJpbmcgc2hhcGVSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRVNoYXBlUmVu
ZGVyaW5nKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZzsgfQotICAgIEVUZXh0
QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3IpIHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX3RleHRBbmNob3I7IH0KLSAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikg
c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw7IH0KLSAgICBF
R2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7IHJldHVy
biAoRUdseXBoT3JpZW50YXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRp
b25WZXJ0aWNhbDsgfQotICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gZmls
bC0+b3BhY2l0eTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiBmaWxsUGFp
bnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7IH0KLSAgICBjb25zdCBT
dHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50VXJpOyB9ICAg
IAotICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPm9wYWNp
dHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0cm9rZS0+cGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50
Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50Q29sb3I7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5wYWludFVyaTsg
fQotICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyBy
ZXR1cm4gc3Ryb2tlLT5kYXNoQXJyYXk7IH0KLSAgICBmbG9hdCBzdHJva2VNaXRlckxpbWl0KCkg
Y29uc3QgeyByZXR1cm4gc3Ryb2tlLT5taXRlckxpbWl0OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBz
dHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+d2lkdGg7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPmRhc2hPZmZz
ZXQ7IH0KLSAgICBTVkdMZW5ndGhWYWx1ZSBrZXJuaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dC0+
a2VybmluZzsgfQotICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3RvcHMt
Pm9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4g
c3RvcHMtPmNvbG9yOyB9Ci0gICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
bWlzYy0+Zmxvb2RPcGFjaXR5OyB9Ci0gICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9Ci0gICAgU1ZHTGVu
Z3RoVmFsdWUgYmFzZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+YmFzZWxp
bmVTaGlmdFZhbHVlOyB9Ci0gICAgU2hhZG93RGF0YSogc2hhZG93KCkgY29uc3QgeyByZXR1cm4g
c2hhZG93U1ZHLT5zaGFkb3cuZ2V0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3Qg
eyByZXR1cm4gbGF5b3V0LT5jeDsgfQotICAgIGNvbnN0IExlbmd0aCYgY3koKSBjb25zdCB7IHJl
dHVybiBsYXlvdXQtPmN5OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByKCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0LT5yOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91
dC0+cng7IH0KLSAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5y
eTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+eDsgfQot
ICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+eTsgfQotICAgIFN0
cmluZyBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMtPmNsaXBwZXI7
IH0KLSAgICBTdHJpbmcgbWFza2VyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMt
Pm1hc2tlcjsgfQotICAgIFN0cmluZyBtYXJrZXJTdGFydFJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJTdGFydDsgfQotICAgIFN0cmluZyBtYXJrZXJN
aWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyTWlk
OyB9Ci0gICAgU3RyaW5nIG1hcmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQ7IH0KLSAgICBFTWFza1R5cGUgbWFza1R5cGUoKSBjb25z
dCB7IHJldHVybiAoRU1hc2tUeXBlKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGU7
IH0KLSAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRl
cikgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyOyB9CisgICAgRUFsaWdubWVudEJhc2Vs
aW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVBbGlnbm1lbnRCYXNlbGlu
ZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZTsgfQorICAg
IEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRURv
bWluYW50QmFzZWxpbmUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNl
bGluZTsgfQorICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQoKSBjb25zdCB7IHJldHVy
biAoRUJhc2VsaW5lU2hpZnQpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVT
aGlmdDsgfQorICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4g
KEVWZWN0b3JFZmZlY3QpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0
OyB9CisgICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5i
dWZmZXJlZFJlbmRlcmluZzsgfQorICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVy
biAoTGluZUNhcCkgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZTsgfQorICAgIFdpbmRSdWxlIGNs
aXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmNsaXBS
dWxlOyB9CisgICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb24oKSBjb25z
dCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvcklu
dGVycG9sYXRpb247IH0KKyAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0
ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9CisgICAgRUNvbG9yUmVuZGVyaW5n
IGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmluZykgbV9pbmhl
cml0ZWRGbGFncy5jb2xvclJlbmRlcmluZzsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29u
c3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlOyB9CisgICAg
TGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBtX2luaGVyaXRl
ZEZsYWdzLmpvaW5TdHlsZTsgfQorICAgIEVTaGFwZVJlbmRlcmluZyBzaGFwZVJlbmRlcmluZygp
IGNvbnN0IHsgcmV0dXJuIChFU2hhcGVSZW5kZXJpbmcpIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVS
ZW5kZXJpbmc7IH0KKyAgICBFVGV4dEFuY2hvciB0ZXh0QW5jaG9yKCkgY29uc3QgeyByZXR1cm4g
KEVUZXh0QW5jaG9yKSBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3I7IH0KKyAgICBFR2x5cGhP
cmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIChF
R2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpv
bnRhbDsgfQorICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgp
IGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5nbHlw
aE9yaWVudGF0aW9uVmVydGljYWw7IH0KKyAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsbERhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIGZp
bGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFR5cGU7IH0KKyAg
ICBjb25zdCBDb2xvciYgZmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRh
LT5wYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiBmaWxsUGFpbnRVcmkoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFVyaTsgfSAgICAKKyAgICBmbG9hdCBzdHJva2VPcGFj
aXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5vcGFjaXR5OyB9CisgICAgY29uc3Qg
U1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURh
dGEtPnBhaW50VHlwZTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VQYWludENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5n
JiBzdHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+cGFpbnRVcmk7
IH0KKyAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5OyB9CisgICAgZmxvYXQgc3Ryb2tlTWl0ZXJM
aW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdDsgfQorICAgIGNv
bnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPndp
ZHRoOyB9CisgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9zdHJva2VEYXRhLT5kYXNoT2Zmc2V0OyB9CisgICAgU1ZHTGVuZ3RoVmFsdWUga2Vybmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERhdGEtPmtlcm5pbmc7IH0KKyAgICBmbG9hdCBzdG9w
T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcERhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25z
dCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wRGF0YS0+Y29sb3I7IH0K
KyAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX21pc2NEYXRhLT5mbG9v
ZE9wYWNpdHk7IH0KKyAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbWlzY0RhdGEtPmZsb29kQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3I7IH0KKyAgICBTVkdM
ZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX21pc2NEYXRh
LT5iYXNlbGluZVNoaWZ0VmFsdWU7IH0KKyAgICBTaGFkb3dEYXRhKiBzaGFkb3coKSBjb25zdCB7
IHJldHVybiBtX3NoYWRvd0RhdGEtPnNoYWRvdy5nZXQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
Y3goKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPmN4OyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBjeSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGF0YS0+Y3k7IH0KKyAgICBjb25zdCBMZW5n
dGgmIHIoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnI7IH0KKyAgICBjb25zdCBMZW5n
dGgmIHJ4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT5yeDsgfQorICAgIGNvbnN0IExl
bmd0aCYgcnkoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERhdGEtPnJ5OyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT54OyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREYXRhLT55OyB9CisgICAgY29uc3Qg
U3RyaW5nJiBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZFJl
c291cmNlRGF0YS0+Y2xpcHBlcjsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFza2VyUmVzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+bWFza2VyOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBtYXJrZXJTdGFydFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9p
bmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlclN0YXJ0OyB9CisgICAgY29uc3QgU3RyaW5nJiBt
YXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRh
LT5tYXJrZXJNaWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlckVuZFJlc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZDsgfQorICAgIEVN
YXNrVHlwZSBtYXNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIChFTWFza1R5cGUpIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGU7IH0KKyAgICBQYWludE9yZGVyIHBhaW50T3JkZXIo
KSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgbV9pbmhlcml0ZWRGbGFncy5wYWludE9yZGVy
OyB9CiAgICAgVmVjdG9yPFBhaW50VHlwZSwgMz4gcGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBj
b25zdDsKIAotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAgICBjb25z
dCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwt
PnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtG
aWxsUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50VXJpOyB9
Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAgICBjb25zdCBD
b2xvciYgdmlzaXRlZExpbmtTdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tl
LT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5r
U3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRV
cmk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAg
Y29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZp
c2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+dmlzaXRl
ZExpbmtQYWludFVyaTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtTdHJv
a2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFp
bnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpOyB9CiAKICAgICAvLyBjb252ZW5p
ZW5jZQogICAgIGJvb2wgaGFzQ2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuICFjbGlwcGVyUmVzb3Vy
Y2UoKS5pc0VtcHR5KCk7IH0KQEAgLTM4MywxMDcgKzIxMywzMTEgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBTVkdfUEFJTlRU
WVBFX05PTkU7IH0KICAgICBib29sIGlzb2xhdGVzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBo
YXNNYXNrZXIoKSB8fCBzaGFkb3coKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gaW5oZXJpdAor
cHJpdmF0ZToKKyAgICBTVkdSZW5kZXJTdHlsZSgpOworICAgIFNWR1JlbmRlclN0eWxlKGNvbnN0
IFNWR1JlbmRlclN0eWxlJik7CisKKyAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBlIHsgQ3JlYXRl
RGVmYXVsdCB9OworICAgIFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRUeXBlKTsgLy8gVXNl
ZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgc3R5bGUuCisKKyAgICB2b2lkIHNldEJpdERlZmF1bHRz
KCk7CisKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKF9jb2xvclJlbmRlcmluZyA9PSBvdGhlci5fY29sb3JSZW5kZXJpbmcpCi0g
ICAgICAgICAgICAgICAgJiYgKF9zaGFwZVJlbmRlcmluZyA9PSBvdGhlci5fc2hhcGVSZW5kZXJp
bmcpCi0gICAgICAgICAgICAgICAgJiYgKF9jbGlwUnVsZSA9PSBvdGhlci5fY2xpcFJ1bGUpCi0g
ICAgICAgICAgICAgICAgJiYgKF9maWxsUnVsZSA9PSBvdGhlci5fZmlsbFJ1bGUpCi0gICAgICAg
ICAgICAgICAgJiYgKF9jYXBTdHlsZSA9PSBvdGhlci5fY2FwU3R5bGUpCi0gICAgICAgICAgICAg
ICAgJiYgKF9qb2luU3R5bGUgPT0gb3RoZXIuX2pvaW5TdHlsZSkKLSAgICAgICAgICAgICAgICAm
JiAoX3RleHRBbmNob3IgPT0gb3RoZXIuX3RleHRBbmNob3IpCi0gICAgICAgICAgICAgICAgJiYg
KF9jb2xvckludGVycG9sYXRpb24gPT0gb3RoZXIuX2NvbG9ySW50ZXJwb2xhdGlvbikKLSAgICAg
ICAgICAgICAgICAmJiAoX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPT0gb3RoZXIuX2NvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMpCi0gICAgICAgICAgICAgICAgJiYgKF9nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpCi0gICAg
ICAgICAgICAgICAgJiYgKF9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3RoZXIuX2dseXBo
T3JpZW50YXRpb25WZXJ0aWNhbCkKLSAgICAgICAgICAgICAgICAmJiAocGFpbnRPcmRlciA9PSBv
dGhlci5wYWludE9yZGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVk
IF9jb2xvclJlbmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZwotICAgICAgICB1bnNpZ25l
ZCBfc2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcgCi0gICAgICAgIHVuc2ln
bmVkIF9jbGlwUnVsZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVkIF9maWxsUnVs
ZSA6IDE7IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVkIF9jYXBTdHlsZSA6IDI7IC8vIExp
bmVDYXAKLSAgICAgICAgdW5zaWduZWQgX2pvaW5TdHlsZSA6IDI7IC8vIExpbmVKb2luCi0gICAg
ICAgIHVuc2lnbmVkIF90ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IKLSAgICAgICAgdW5z
aWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KLSAg
ICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJ
bnRlcnBvbGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVu
dGF0aW9uVmVydGljYWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKKyAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KKworICAgICAgICB1bnNpZ25lZCBjb2xvclJlbmRlcmluZyA6IDI7IC8v
IEVDb2xvclJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBzaGFwZVJlbmRlcmluZyA6IDI7IC8v
IEVTaGFwZVJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBjbGlwUnVsZSA6IDE7IC8vIFdpbmRS
dWxlCisgICAgICAgIHVuc2lnbmVkIGZpbGxSdWxlIDogMTsgLy8gV2luZFJ1bGUKKyAgICAgICAg
dW5zaWduZWQgY2FwU3R5bGUgOiAyOyAvLyBMaW5lQ2FwCisgICAgICAgIHVuc2lnbmVkIGpvaW5T
dHlsZSA6IDI7IC8vIExpbmVKb2luCisgICAgICAgIHVuc2lnbmVkIHRleHRBbmNob3IgOiAyOyAv
LyBFVGV4dEFuY2hvcgorICAgICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb24gOiAyOyAv
LyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGNvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KKyAgICAg
ICAgdW5zaWduZWQgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIDogMzsgLy8gRUdseXBoT3JpZW50
YXRpb24KICAgICAgICAgdW5zaWduZWQgcGFpbnRPcmRlciA6IDM7IC8vIFBhaW50T3JkZXIKLSAg
ICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7CisgICAgfTsKIAotICAgIC8vIGRvbid0IGluaGVyaXQK
ICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICAvLyAzMiBiaXQgbm9uLWlu
aGVyaXRlZCwgZG9uJ3QgYWRkIHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRvciB3aWxsIGJy
ZWFrLgotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MgJm90
aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyA9PSBvdGhlci5fbmlmbGFnczsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7
IHJldHVybiBfbmlmbGFncyAhPSBvdGhlci5fbmlmbGFnczsgfQorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFn
cyA9PSBvdGhlci5mbGFnczsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5o
ZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFncyAhPSBvdGhlci5mbGFnczsg
fQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAg
ICAgdW5zaWduZWQgX2FsaWdubWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5l
IAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9kb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURv
bWluYW50QmFzZWxpbmUKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBfYmFzZWxpbmVTaGlmdCA6
IDI7IC8vIEVCYXNlbGluZVNoaWZ0Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgX3ZlY3RvckVm
ZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdu
bWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lCisgICAgICAgICAgICAgICAg
dW5zaWduZWQgZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5lCisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yRWZmZWN0OiAxOyAvLyBFVmVjdG9yRWZm
ZWN0CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyZWRSZW5kZXJpbmc6IDI7IC8vIEVC
dWZmZXJlZFJlbmRlcmluZwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hc2tUeXBlOiAxOyAv
LyBFTWFza1R5cGUKICAgICAgICAgICAgICAgICAvLyAxOCBiaXRzIHVudXNlZAotICAgICAgICAg
ICAgfSBmOwotICAgICAgICAgICAgdWludDMyX3QgX25pZmxhZ3M7CisgICAgICAgICAgICB9IGZs
YWdCaXRzOworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7CiAgICAgICAgIH07Ci0gICAgfSBz
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH07CisKKyAgICBJbmhlcml0ZWRGbGFncyBtX2lu
aGVyaXRlZEZsYWdzOworICAgIE5vbkluaGVyaXRlZEZsYWdzIG1fbm9uSW5oZXJpdGVkRmxhZ3M7
CiAKICAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVGaWxsRGF0
YT4gZmlsbDsKLSAgICBEYXRhUmVmPFN0eWxlU3Ryb2tlRGF0YT4gc3Ryb2tlOwotICAgIERhdGFS
ZWY8U3R5bGVUZXh0RGF0YT4gdGV4dDsKLSAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhPiBpbmhlcml0ZWRSZXNvdXJjZXM7CisgICAgRGF0YVJlZjxTdHlsZUZpbGxEYXRhPiBt
X2ZpbGxEYXRhOworICAgIERhdGFSZWY8U3R5bGVTdHJva2VEYXRhPiBtX3N0cm9rZURhdGE7Cisg
ICAgRGF0YVJlZjxTdHlsZVRleHREYXRhPiBtX3RleHREYXRhOworICAgIERhdGFSZWY8U3R5bGVJ
bmhlcml0ZWRSZXNvdXJjZURhdGE+IG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogCiAgICAgLy8g
bm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZVN0b3BEYXRhPiBzdG9w
czsKLSAgICBEYXRhUmVmPFN0eWxlTWlzY0RhdGE+IG1pc2M7Ci0gICAgRGF0YVJlZjxTdHlsZVNo
YWRvd1NWR0RhdGE+IHNoYWRvd1NWRzsKLSAgICBEYXRhUmVmPFN0eWxlTGF5b3V0RGF0YT4gbGF5
b3V0OwotICAgIERhdGFSZWY8U3R5bGVSZXNvdXJjZURhdGE+IHJlc291cmNlczsKLQotcHJpdmF0
ZToKLSAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBlIHsgQ3JlYXRlRGVmYXVsdCB9OwotICAgICAg
ICAKLSAgICBTVkdSZW5kZXJTdHlsZSgpOwotICAgIFNWR1JlbmRlclN0eWxlKGNvbnN0IFNWR1Jl
bmRlclN0eWxlJik7Ci0gICAgU1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5cGUpOyAvLyBV
c2VkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KKyAgICBEYXRhUmVmPFN0eWxlU3RvcERh
dGE+IG1fc3RvcERhdGE7CisgICAgRGF0YVJlZjxTdHlsZU1pc2NEYXRhPiBtX21pc2NEYXRhOwor
ICAgIERhdGFSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBtX3NoYWRvd0RhdGE7CisgICAgRGF0YVJl
ZjxTdHlsZUxheW91dERhdGE+IG1fbGF5b3V0RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlUmVzb3Vy
Y2VEYXRhPiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YTsKK307CiAKLSAgICB2b2lkIHNldEJp
dERlZmF1bHRzKCkKLSAgICB7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxl
ID0gaW5pdGlhbENsaXBSdWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9y
UmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2ZpbGxSdWxlID0gaW5pdGlhbEZpbGxSdWxlKCk7Ci0gICAgICAgIHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nID0gaW5pdGlhbFNoYXBlUmVuZGVyaW5nKCk7Ci0g
ICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgPSBpbml0aWFsVGV4dEFuY2hv
cigpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZSA9IGluaXRpYWxDYXBT
dHlsZSgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUgPSBpbml0aWFs
Sm9pblN0eWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xh
dGlvbiA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb24oKTsKLSAgICAgICAgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xvckludGVycG9s
YXRpb25GaWx0ZXJzKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50
YXRpb25Ib3Jpem9udGFsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCk7Ci0g
ICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IGlu
aXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9m
bGFncy5wYWludE9yZGVyID0gaW5pdGlhbFBhaW50T3JkZXIoKTsKLQotICAgICAgICBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLl9uaWZsYWdzID0gMDsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOwot
ICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSBpbml0
aWFsRG9taW5hbnRCYXNlbGluZSgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X2Jhc2VsaW5lU2hpZnQgPSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOwotICAgICAgICBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsK
LSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5p
dGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworaW5saW5lIFNWR0xlbmd0aFZhbHVlIFNW
R1JlbmRlclN0eWxlOjppbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkKK3sKKyAgICBTVkdMZW5n
dGhWYWx1ZSBsZW5ndGg7CisgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworaW5saW5lIFNWR0xlbmd0
aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2VybmluZygpCit7CisgICAgU1ZHTGVuZ3Ro
VmFsdWUgbGVuZ3RoOworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5
cGVOdW1iZXIsIDApOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1Jl
bmRlclN0eWxlOjpzZXRDeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xh
eW91dERhdGEtPmN4ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5j
eCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEN5KGNvbnN0
IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+Y3kgPT0gbGVuZ3Ro
KSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLmN5ID0gbGVuZ3RoOworfQorCitpbmxp
bmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Uihjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAg
ICBpZiAoIShtX2xheW91dERhdGEtPnIgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRh
LmFjY2VzcygpLnIgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpz
ZXRSeChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnJ4
ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5yeCA9IGxlbmd0aDsK
K30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFJ5KGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+cnkgPT0gbGVuZ3RoKSkKKyAgICAgICAg
bV9sYXlvdXREYXRhLmFjY2VzcygpLnJ5ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdS
ZW5kZXJTdHlsZTo6c2V0WChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xh
eW91dERhdGEtPnggPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLngg
PSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRZKGNvbnN0IExl
bmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+eSA9PSBsZW5ndGgpKQor
ICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkueSA9IGxlbmd0aDsKK30KKworaW5saW5lIHZv
aWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAg
aWYgKCEobV9maWxsRGF0YS0+b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAgICAgICAgbV9maWxsRGF0
YS5hY2Nlc3MoKS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVy
U3R5bGU6OnNldEZpbGxQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9y
LCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBib29sIGFwcGx5
VG9WaXNpdGVkTGlua1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7Cisg
ICAgICAgIGlmICghKG1fZmlsbERhdGEtPnBhaW50VHlwZSA9PSB0eXBlKSkKKyAgICAgICAgICAg
IG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9m
aWxsRGF0YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFj
Y2VzcygpLnBhaW50Q29sb3IgPSBjb2xvcjsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+cGFp
bnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRVcmkg
PSB1cmk7CiAgICAgfQotfTsKKyAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpIHsKKyAg
ICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCisg
ICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRUeXBlID0gdHlw
ZTsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNv
bG9yKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludENv
bG9yID0gY29sb3I7CisgICAgICAgIGlmICghKG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRV
cmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQ
YWludFVyaSA9IHVyaTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpz
ZXRTdHJva2VPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRh
LT5vcGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkub3Bh
Y2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdHJv
a2VQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJp
bmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlu
a1N0eWxlKQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7CisgICAgICAgIGlmICgh
KG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAgbV9zdHJva2VE
YXRhLmFjY2VzcygpLnBhaW50VHlwZSA9IHR5cGU7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0
YS0+cGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNz
KCkucGFpbnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnBhaW50
VXJpID09IHVyaSkpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkucGFpbnRVcmkg
PSB1cmk7CisgICAgfQorICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgeworICAgICAg
ICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5cGUpKQorICAg
ICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRUeXBlID0gdHlw
ZTsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0g
Y29sb3IpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFp
bnRDb2xvciA9IGNvbG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5r
UGFpbnRVcmkgPT0gdXJpKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS52aXNp
dGVkTGlua1BhaW50VXJpID0gdXJpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVy
U3R5bGU6OnNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBh
cnJheSkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hBcnJheSA9PSBhcnJheSkpCisg
ICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5kYXNoQXJyYXkgPSBhcnJheTsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQgbGltaXQp
Cit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT5taXRlckxpbWl0ID09IGxpbWl0KSkKKyAgICAg
ICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLm1pdGVyTGltaXQgPSBsaW1pdDsKK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0aCYgd2lkdGgp
Cit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT53aWR0aCA9PSB3aWR0aCkpCisgICAgICAgIG1f
c3Ryb2tlRGF0YS5hY2Nlc3MoKS53aWR0aCA9IHdpZHRoOworfQorCitpbmxpbmUgdm9pZCBTVkdS
ZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9mZnNldCkKK3sK
KyAgICBpZiAoIShtX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQgPT0gb2Zmc2V0KSkKKyAgICAgICAg
bV9zdHJva2VEYXRhLmFjY2VzcygpLmRhc2hPZmZzZXQgPSBvZmZzZXQ7Cit9CisKK2lubGluZSB2
b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBrZXJu
aW5nKQoreworICAgIGlmICghKG1fdGV4dERhdGEtPmtlcm5pbmcgPT0ga2VybmluZykpCisgICAg
ICAgIG1fdGV4dERhdGEuYWNjZXNzKCkua2VybmluZyA9IGtlcm5pbmc7Cit9CisKK2lubGluZSB2
b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wT3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAg
IGlmICghKG1fc3RvcERhdGEtPm9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAgIG1fc3RvcERh
dGEuYWNjZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRl
clN0eWxlOjpzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmICghKG1f
c3RvcERhdGEtPmNvbG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9zdG9wRGF0YS5hY2Nlc3MoKS5j
b2xvciA9IGNvbG9yOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Rmxvb2RP
cGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+Zmxvb2RPcGFj
aXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmZsb29kT3BhY2l0
eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRGbG9vZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5mbG9vZENv
bG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5mbG9vZENvbG9yID0g
Y29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRMaWdodGluZ0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5saWdodGluZ0Nv
bG9yID09IGNvbG9yKSkKKyAgICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5saWdodGluZ0NvbG9y
ID0gY29sb3I7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRCYXNlbGluZVNo
aWZ0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHNoaWZ0VmFsdWUpCit7CisgICAgaWYgKCEo
bV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZhbHVlID09IHNoaWZ0VmFsdWUpKQorICAgICAgICBt
X21pc2NEYXRhLmFjY2VzcygpLmJhc2VsaW5lU2hpZnRWYWx1ZSA9IHNoaWZ0VmFsdWU7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDbGlwcGVyUmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+
Y2xpcHBlciA9PSByZXNvdXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRh
LmFjY2VzcygpLmNsaXBwZXIgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVy
U3R5bGU6OnNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAg
aWYgKCEobV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hc2tlciA9PSByZXNvdXJjZSkpCisg
ICAgICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hc2tlciA9IHJlc291
cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TWFya2VyU3RhcnRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVkUmVz
b3VyY2VEYXRhLT5tYXJrZXJTdGFydCA9PSByZXNvdXJjZSkpCisgICAgICAgIG1faW5oZXJpdGVk
UmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlclN0YXJ0ID0gcmVzb3VyY2U7Cit9CisKK2lubGlu
ZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJN
aWQgPT0gcmVzb3VyY2UpKQorICAgICAgICBtX2luaGVyaXRlZFJlc291cmNlRGF0YS5hY2Nlc3Mo
KS5tYXJrZXJNaWQgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6
OnNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAgaWYg
KCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZCA9PSByZXNvdXJjZSkpCisgICAg
ICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlckVuZCA9IHJlc291cmNl
OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMoKQorewor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBpbml0aWFsQ2xpcFJ1bGUoKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7
CisgICAgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSA9IGluaXRpYWxGaWxsUnVsZSgpOworICAg
IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSBpbml0aWFsU2hhcGVSZW5kZXJpbmco
KTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3IgPSBpbml0aWFsVGV4dEFuY2hvcigp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgPSBpbml0aWFsQ2FwU3R5bGUoKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSA9IGluaXRpYWxKb2luU3R5bGUoKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xvckludGVycG9s
YXRpb24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMg
PSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpOworICAgIG1faW5oZXJpdGVkRmxh
Z3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSBpbml0aWFsR2x5cGhPcmllbnRhdGlvbkhv
cml6b250YWwoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNh
bCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLnBhaW50T3JkZXIgPSBpbml0aWFsUGFpbnRPcmRlcigpOworCisgICAgbV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFncyA9IDA7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGln
bm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOworICAgIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFudEJh
c2VsaW5lKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0
ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLnZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKKyAgICBtX25vbkluaGVy
aXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVu
ZGVyaW5nKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9IGlu
aXRpYWxNYXNrVHlwZSgpOworfQorCitpbmxpbmUgYm9vbCBTVkdSZW5kZXJTdHlsZTo6SW5oZXJp
dGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAor
eworICAgIHJldHVybiBjb2xvclJlbmRlcmluZyA9PSBvdGhlci5jb2xvclJlbmRlcmluZworICAg
ICAgICAmJiBzaGFwZVJlbmRlcmluZyA9PSBvdGhlci5zaGFwZVJlbmRlcmluZworICAgICAgICAm
JiBjbGlwUnVsZSA9PSBvdGhlci5jbGlwUnVsZQorICAgICAgICAmJiBmaWxsUnVsZSA9PSBvdGhl
ci5maWxsUnVsZQorICAgICAgICAmJiBjYXBTdHlsZSA9PSBvdGhlci5jYXBTdHlsZQorICAgICAg
ICAmJiBqb2luU3R5bGUgPT0gb3RoZXIuam9pblN0eWxlCisgICAgICAgICYmIHRleHRBbmNob3Ig
PT0gb3RoZXIudGV4dEFuY2hvcgorICAgICAgICAmJiBjb2xvckludGVycG9sYXRpb24gPT0gb3Ro
ZXIuY29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgICYmIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMgPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycworICAgICAgICAmJiBnbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbCA9PSBvdGhlci5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAor
ICAgICAgICAmJiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3RoZXIuZ2x5cGhPcmllbnRh
dGlvblZlcnRpY2FsCisgICAgICAgICYmIHBhaW50T3JkZXIgPT0gb3RoZXIucGFpbnRPcmRlcjsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4M2YyMjQ5ZTQ5MGVjOTA2
YTMzYjhlOC4uYjc0OWEyNmMwY2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5NTc4ZjdjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXBlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+
IGNyZWF0ZShSZWZQdHI8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCisg
ICAgc3RhdGljIFJlZjxTaGFwZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUs
IENTU0JveFR5cGUgY3NzQm94KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcGVWYWx1ZShXVEZNb3ZlKHNoYXBlKSwgY3NzQm94KSk7CiAgICAgfQpAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoYm94
U2hhcGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWZQ
dHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0
ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXBlVmFsdWUoV1RGTW92ZShpbWFnZSkpKTsKICAgICB9CkBAIC03MiwxNCArNzIs
MTQgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaGFwZVZhbHVlKFJlZlB0cjxC
YXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBTaGFwZVZhbHVlKFJl
ZjxCYXNpY1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICAgICAgOiBtX3R5
cGUoVHlwZTo6U2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEZNb3ZlKHNoYXBlKSkKICAgICAg
ICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFNoYXBl
VmFsdWUoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhwbGljaXQgU2hhcGVWYWx1
ZShSZWY8U3R5bGVJbWFnZT4mJiBpbWFnZSkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6SW1hZ2Up
CiAgICAgICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKaW5k
ZXggMWJhMzZjNGE4ZDBkM2JlYzMxZjQzMmEwNmZmZjNjODNmMmFkZTRiYS4uYWUzODM1Yzc5YmJh
OGQwOTZiMTNiNzBkZDU2ZTk1ZjQ4MWYxNzc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
OCwxNiArMjgsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVCYWNrZ3JvdW5kRGF0
YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YSgpCi0gICAgOiBtX2JhY2tncm91bmQoQmFja2dyb3VuZEZp
bGxMYXllcikKLSAgICAsIG1fY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29s
b3IoKSkKKyAgICA6IGJhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKKyAgICAsIGNvbG9y
KFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCiB7CiB9CiAKLWlubGluZSBT
dHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dy
b3VuZERhdGEmIG8pCitpbmxpbmUgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5k
RGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVCYWNrZ3JvdW5kRGF0YT4oKQotICAgICwgbV9iYWNrZ3JvdW5kKG8ubV9iYWNrZ3JvdW5k
KQotICAgICwgbV9jb2xvcihvLm1fY29sb3IpCi0gICAgLCBtX291dGxpbmUoby5tX291dGxpbmUp
CisgICAgLCBiYWNrZ3JvdW5kKG90aGVyLmJhY2tncm91bmQpCisgICAgLCBjb2xvcihvdGhlci5j
b2xvcikKKyAgICAsIG91dGxpbmUob3RoZXIub3V0bGluZSkKIHsKIH0KIApAQCAtNDYsMTggKzQ2
LDE4IEBAIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5
KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKCp0
aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6b3BlcmF0b3I9PShjb25zdCBT
dHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUJhY2tncm91bmREYXRhOjpv
cGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25zdAogewotICAg
IHJldHVybiBtX2JhY2tncm91bmQgPT0gby5tX2JhY2tncm91bmQgJiYgbV9jb2xvciA9PSBvLm1f
Y29sb3IgJiYgbV9vdXRsaW5lID09IG8ubV9vdXRsaW5lOworICAgIHJldHVybiBiYWNrZ3JvdW5k
ID09IG90aGVyLmJhY2tncm91bmQgJiYgY29sb3IgPT0gb3RoZXIuY29sb3IgJiYgb3V0bGluZSA9
PSBvdGhlci5vdXRsaW5lOwogfQogCiBib29sIFN0eWxlQmFja2dyb3VuZERhdGE6OmlzRXF1aXZh
bGVudEZvclBhaW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25zdAog
ewotICAgIGlmIChtX2JhY2tncm91bmQgIT0gb3RoZXIubV9iYWNrZ3JvdW5kIHx8IG1fY29sb3Ig
IT0gb3RoZXIubV9jb2xvcikKKyAgICBpZiAoYmFja2dyb3VuZCAhPSBvdGhlci5iYWNrZ3JvdW5k
IHx8IGNvbG9yICE9IG90aGVyLmNvbG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFtX291dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm1fb3V0bGluZS5pc1Zpc2libGUoKSkK
KyAgICBpZiAoIW91dGxpbmUuaXNWaXNpYmxlKCkgJiYgIW90aGVyLm91dGxpbmUuaXNWaXNpYmxl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX291dGxpbmUgPT0gb3RoZXIu
bV9vdXRsaW5lOworICAgIHJldHVybiBvdXRsaW5lID09IG90aGVyLm91dGxpbmU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCmluZGV4IDE0NDc3N2FhMGViOTVjMjVhNGFmZDEy
M2Q0OGRiYzU3YjM2ZGJkNzMuLjliOTVlZTBjYWI5OTFkNmZkZmIwYjU2ZGVkYTFjODBhZWU4OTQ0
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tn
cm91bmREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFj
a2dyb3VuZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0zNiwyOSArMzYsMTkgQEAgY2xhc3MgU3R5bGVCYWNrZ3JvdW5kRGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KICAgICBSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4g
Y29weSgpIGNvbnN0OwotICAgIH5TdHlsZUJhY2tncm91bmREYXRhKCkgeyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CiAKICAgICBib29sIGlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNvbnN0IFN0
eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKIAotICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dy
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZDsgfQotICAgIGNvbnN0IENvbG9yJiBj
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KLSAgICBjb25zdCBPdXRsaW5lVmFsdWUm
IG91dGxpbmUoKSBjb25zdCB7IHJldHVybiBtX291dGxpbmU7IH0KKyAgICBGaWxsTGF5ZXIgYmFj
a2dyb3VuZDsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBPdXRsaW5lVmFsdWUgb3V0bGluZTsKIAog
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7Ci0KICAgICBTdHlsZUJhY2tn
cm91bmREYXRhKCk7Ci0gICAgU3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91
bmREYXRhJik7IAotCi0gICAgRmlsbExheWVyIG1fYmFja2dyb3VuZDsKLSAgICBDb2xvciBtX2Nv
bG9yOwotICAgIE91dGxpbmVWYWx1ZSBtX291dGxpbmU7CisgICAgU3R5bGVCYWNrZ3JvdW5kRGF0
YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5jcHAKaW5kZXggZjcwNjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3MmEyMTEzZjczNWFkYy4u
NjkyMzk1YjFlMzUwZjFjYTBkM2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtOTgs
NyArOTgsNyBAQCBDYWNoZWRJbWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6Y2FjaGVkSW1hZ2UoKSBj
b25zdAogCiBSZWY8Q1NTVmFsdWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUuZ2V0KCkpOwor
ICAgIHJldHVybiBtX2Nzc1ZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHlsZUNhY2hlZElt
YWdlOjpjYW5SZW5kZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRp
cGxpZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCmluZGV4IGM2ZmZhNzU2OTU5NmMzZTk0YjFjZDNi
YzMyNjM3YzAxMjMyZDMwZjguLjg4ZjE4MzFjNGQ1MWNiNzM5Njk1MDljOWMyNTU1MzJhMmIwMjdk
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBAIC0zNSw1MCArMzUsNDEgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEpOyB9CiAgICAgUmVmPFN0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1
c3RvbVByb3BlcnR5RGF0YSgqdGhpcykpOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcyAhPSBvLm1fY29udGFpbnNWYXJpYWJsZXMpCisg
ICAgICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhlci5jb250YWluc1ZhcmlhYmxlcykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVl
cy5zaXplKCkgIT0gby5tX3ZhbHVlcy5zaXplKCkpCisKKyAgICAgICAgaWYgKHZhbHVlcy5zaXpl
KCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAoV1RGOjpLZXlWYWx1ZVBhaXI8QXRvbWljU3RyaW5nLCBSZWZQ
dHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IGVudHJ5IDogbV92YWx1ZXMpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBvdGhlciA9IG8ubV92YWx1ZXMuZ2V0
KGVudHJ5LmtleSk7Ci0gICAgICAgICAgICBpZiAoIW90aGVyIHx8ICFlbnRyeS52YWx1ZS0+ZXF1
YWxzKCpvdGhlcikpCisKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAg
ICAgICAgICAgYXV0byBvdGhlckVudHJ5ID0gb3RoZXIudmFsdWVzLmZpbmQoZW50cnkua2V5KTsK
KyAgICAgICAgICAgIGlmIChvdGhlckVudHJ5ID09IG90aGVyLnZhbHVlcy5lbmQoKSB8fCAhZW50
cnkudmFsdWUtPmVxdWFscygqb3RoZXJFbnRyeS0+dmFsdWUpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQorCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSAmbykgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiB2
YWx1ZSkKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIG1fdmFsdWVzLnNldChuYW1lLCB2YWx1ZSk7CiAgICAgICAgIGlmICh2YWx1ZS0+Y29udGFp
bnNWYXJpYWJsZXMoKSkKLSAgICAgICAgICAgIG1fY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOwor
ICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOworICAgICAgICB2YWx1ZXMuc2V0
KG5hbWUsIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4gZ2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldChuYW1lKTsgfQotICAgIEN1c3RvbVByb3Bl
cnR5VmFsdWVNYXAmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9Ci0gICAgCi0gICAgYm9v
bCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWVzLmNvbnRhaW5zKG5hbWUpOyB9Ci0gICAgCi0gICAgYm9vbCBjb250YWluc1Zh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNWYXJpYWJsZXM7IH0KLSAgICB2b2lk
IHNldENvbnRhaW5zVmFyaWFibGVzKGJvb2wgY29udGFpbnNWYXJpYWJsZXMpIHsgbV9jb250YWlu
c1ZhcmlhYmxlcyA9IGNvbnRhaW5zVmFyaWFibGVzOyB9Ci0KLSAgICBDdXN0b21Qcm9wZXJ0eVZh
bHVlTWFwIG1fdmFsdWVzOwotICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07
CisgICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCB2YWx1ZXM7CisgICAgYm9vbCBjb250YWluc1Zh
cmlhYmxlcyB7IGZhbHNlIH07CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEoKQotICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE+KCkKLSAgICB7IH0KKyAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0gZGVmYXVsdDsK
ICAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0
YSYgb3RoZXIpCiAgICAgICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4o
KQotICAgICAgICAsIG1fdmFsdWVzKEN1c3RvbVByb3BlcnR5VmFsdWVNYXAob3RoZXIubV92YWx1
ZXMpKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMob3RoZXIubV9jb250YWluc1Zhcmlh
YmxlcykKKyAgICAgICAgLCB2YWx1ZXMob3RoZXIudmFsdWVzKQorICAgICAgICAsIGNvbnRhaW5z
VmFyaWFibGVzKG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQogICAgIHsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAppbmRleCAzMmY3ODA1ZWJjZjY1NjBhYWQ0NjllZmFm
YzVhZWQzMmNjOTZhNWZmLi4xZmFmYTJkODg5NmQ3MTMyMzgyOTI2MTVmNWNkNDBkZWNkZTU2OTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcApAQCAtMjgsOCArMjgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKCkKICAgICA6IGZsZXgoUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hGbGV4KCkpCi0gICAgLCBmbGV4X2dyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94
RmxleEdyb3VwKCkpCi0gICAgLCBvcmRpbmFsX2dyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94
T3JkaW5hbEdyb3VwKCkpCisgICAgLCBmbGV4R3JvdXAoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hG
bGV4R3JvdXAoKSkKKyAgICAsIG9yZGluYWxHcm91cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9y
ZGluYWxHcm91cCgpKQogICAgICwgYWxpZ24oUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hBbGlnbigp
KQogICAgICwgcGFjayhSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFBhY2soKSkKICAgICAsIG9yaWVu
dChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yaWVudCgpKQpAQCAtMzcsMTUgKzM3LDE1IEBAIFN0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxl
Qm94RGF0YSYgbykKK2lubGluZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJv
eERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJv
eERhdGE+KCkKLSAgICAsIGZsZXgoby5mbGV4KQotICAgICwgZmxleF9ncm91cChvLmZsZXhfZ3Jv
dXApCi0gICAgLCBvcmRpbmFsX2dyb3VwKG8ub3JkaW5hbF9ncm91cCkKLSAgICAsIGFsaWduKG8u
YWxpZ24pCi0gICAgLCBwYWNrKG8ucGFjaykKLSAgICAsIG9yaWVudChvLm9yaWVudCkKLSAgICAs
IGxpbmVzKG8ubGluZXMpCisgICAgLCBmbGV4KG90aGVyLmZsZXgpCisgICAgLCBmbGV4R3JvdXAo
b3RoZXIuZmxleEdyb3VwKQorICAgICwgb3JkaW5hbEdyb3VwKG90aGVyLm9yZGluYWxHcm91cCkK
KyAgICAsIGFsaWduKG90aGVyLmFsaWduKQorICAgICwgcGFjayhvdGhlci5wYWNrKQorICAgICwg
b3JpZW50KG90aGVyLm9yaWVudCkKKyAgICAsIGxpbmVzKG90aGVyLmxpbmVzKQogewogfQogCkBA
IC01NCwxMSArNTQsMTEgQEAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoKnRoaXMpKTsKIH0KIAot
Ym9vbCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmxleCA9PSBvLmZsZXggJiYg
ZmxleF9ncm91cCA9PSBvLmZsZXhfZ3JvdXAgJiYKLSAgICAgICAgICAgb3JkaW5hbF9ncm91cCA9
PSBvLm9yZGluYWxfZ3JvdXAgJiYgYWxpZ24gPT0gby5hbGlnbiAmJgotICAgICAgICAgICBwYWNr
ID09IG8ucGFjayAmJiBvcmllbnQgPT0gby5vcmllbnQgJiYgbGluZXMgPT0gby5saW5lczsKKyAg
ICByZXR1cm4gZmxleCA9PSBvdGhlci5mbGV4ICYmIGZsZXhHcm91cCA9PSBvdGhlci5mbGV4R3Jv
dXAKKyAgICAgICAgJiYgb3JkaW5hbEdyb3VwID09IG90aGVyLm9yZGluYWxHcm91cCAmJiBhbGln
biA9PSBvdGhlci5hbGlnbgorICAgICAgICAmJiBwYWNrID09IG90aGVyLnBhY2sgJiYgb3JpZW50
ID09IG90aGVyLm9yaWVudCAmJiBsaW5lcyA9PSBvdGhlci5saW5lczsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDdmMDAwYmJl
YmY3Y2ZkYWU0ZDZkYTk5NzdiMjQwYzg1ZmMyNGNmMzAuLjMzMGNmNjQ3MzRkY2E3NWRiNWY4OWVl
NzY2Y2I0ZGM5MTcxYWVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKQEAgLTM1
LDE0ICszNSwxNCBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAogICAgIGZsb2F0IGZsZXg7Ci0gICAgdW5zaWduZWQg
aW50IGZsZXhfZ3JvdXA7Ci0gICAgdW5zaWduZWQgaW50IG9yZGluYWxfZ3JvdXA7CisgICAgdW5z
aWduZWQgZmxleEdyb3VwOworICAgIHVuc2lnbmVkIG9yZGluYWxHcm91cDsKIAogICAgIHVuc2ln
bmVkIGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVudAogICAgIHVuc2lnbmVkIHBhY2s6IDI7IC8v
IEVCb3hQYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGaWx0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZp
bHRlckRhdGEuY3BwCmluZGV4IGIwZDNiZTExMDE1ZTQ3OWZmYWMwYWExNTAxNTBmZjdkMTg1YzIw
YzIuLjIwZGJjMDhlNjYyNzM4NmRhZTMzNDVhM2Y1MmVmZmEyNWIyYjM5YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCkBAIC0y
NiwxOSArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZUZpbHRl
ckRhdGEuaCIKIAotI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUZpbHRlckRhdGE6OlN0eWxl
RmlsdGVyRGF0YSgpCi0gICAgOiBtX29wZXJhdGlvbnMoKQogewogfQogCi1pbmxpbmUgU3R5bGVG
aWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoY29uc3QgU3R5bGVGaWx0ZXJEYXRhJiBvKQoraW5s
aW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0IFN0eWxlRmlsdGVyRGF0
YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlRmlsdGVyRGF0YT4oKQotICAgICwgbV9v
cGVyYXRpb25zKG8ubV9vcGVyYXRpb25zKQorICAgICwgb3BlcmF0aW9ucyhvdGhlci5vcGVyYXRp
b25zKQogewogfQogCkBAIC00Nyw5ICs0Myw5IEBAIFJlZjxTdHlsZUZpbHRlckRhdGE+IFN0eWxl
RmlsdGVyRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVG
aWx0ZXJEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVGaWx0ZXJEYXRhOjpvcGVyYXRvcj09
KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVGaWx0ZXJEYXRhOjpv
cGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fb3BlcmF0aW9ucyA9PSBvLm1fb3BlcmF0aW9uczsKKyAgICByZXR1cm4gb3BlcmF0aW9u
cyA9PSBvdGhlci5vcGVyYXRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKaW5kZXgg
Yzk2ZTMxZWUwM2NlZWQ0OGI1MWQ0MmEzMTU3YWFhOGZlOTIxYzUzZC4uYThiYTgzMWUyYzI1NWQ3
ZTgyYmU4M2ZhNTU5MzI4YzEyZjRhZmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAotICAgIEZpbHRlck9wZXJhdGlv
bnMgbV9vcGVyYXRpb25zOworICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKIAogcHJp
dmF0ZToKICAgICBTdHlsZUZpbHRlckRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwCmluZGV4IDk5ZTU1ZWI3
ZTY0NjlkOWQ2NTQ1NWY2OWUxYzJkMjhhMjk3Y2JiNzUuLmE4MjE4NDQ1YTE3NjcyMWViOWFiZGQy
ZmMyOGU4NGVmNDlmMzBlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcApAQCAtMzEsMjEgKzMxLDIxIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlRmxleGlibGVCb3hEYXRhOjpTdHlsZUZsZXhpYmxl
Qm94RGF0YSgpCi0gICAgOiBtX2ZsZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEdyb3co
KSkKLSAgICAsIG1fZmxleFNocmluayhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhTaHJpbmsoKSkK
LSAgICAsIG1fZmxleEJhc2lzKFJlbmRlclN0eWxlOjppbml0aWFsRmxleEJhc2lzKCkpCi0gICAg
LCBtX2ZsZXhEaXJlY3Rpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uKCkpCi0g
ICAgLCBtX2ZsZXhXcmFwKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFdyYXAoKSkKKyAgICA6IGZs
ZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEdyb3coKSkKKyAgICAsIGZsZXhTaHJpbmso
UmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4U2hyaW5rKCkpCisgICAgLCBmbGV4QmFzaXMoUmVuZGVy
U3R5bGU6OmluaXRpYWxGbGV4QmFzaXMoKSkKKyAgICAsIGZsZXhEaXJlY3Rpb24oUmVuZGVyU3R5
bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uKCkpCisgICAgLCBmbGV4V3JhcChSZW5kZXJTdHlsZTo6
aW5pdGlhbEZsZXhXcmFwKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZUZsZXhpYmxlQm94RGF0YTo6
U3R5bGVGbGV4aWJsZUJveERhdGEoY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8pCitpbmxp
bmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hEYXRhKGNvbnN0IFN0eWxl
RmxleGlibGVCb3hEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVGbGV4aWJsZUJv
eERhdGE+KCkKLSAgICAsIG1fZmxleEdyb3coby5tX2ZsZXhHcm93KQotICAgICwgbV9mbGV4U2hy
aW5rKG8ubV9mbGV4U2hyaW5rKQotICAgICwgbV9mbGV4QmFzaXMoby5tX2ZsZXhCYXNpcykKLSAg
ICAsIG1fZmxleERpcmVjdGlvbihvLm1fZmxleERpcmVjdGlvbikKLSAgICAsIG1fZmxleFdyYXAo
by5tX2ZsZXhXcmFwKQorICAgICwgZmxleEdyb3cob3RoZXIuZmxleEdyb3cpCisgICAgLCBmbGV4
U2hyaW5rKG90aGVyLmZsZXhTaHJpbmspCisgICAgLCBmbGV4QmFzaXMob3RoZXIuZmxleEJhc2lz
KQorICAgICwgZmxleERpcmVjdGlvbihvdGhlci5mbGV4RGlyZWN0aW9uKQorICAgICwgZmxleFdy
YXAob3RoZXIuZmxleFdyYXApCiB7CiB9CiAKQEAgLTU0LDEwICs1NCwxMCBAQCBSZWY8U3R5bGVG
bGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSgqdGhpcykpOwogfQogCi1i
b29sIFN0eWxlRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmxleGlibGVC
b3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUZsZXhpYmxlQm94RGF0YTo6b3BlcmF0b3I9PShj
b25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZmxleEdyb3cgPT0gby5tX2ZsZXhHcm93ICYmIG1fZmxleFNocmluayA9PSBvLm1fZmxleFNocmlu
ayAmJiBtX2ZsZXhCYXNpcyA9PSBvLm1fZmxleEJhc2lzCi0gICAgICAgICYmIG1fZmxleERpcmVj
dGlvbiA9PSBvLm1fZmxleERpcmVjdGlvbiAmJiBtX2ZsZXhXcmFwID09IG8ubV9mbGV4V3JhcDsK
KyAgICByZXR1cm4gZmxleEdyb3cgPT0gb3RoZXIuZmxleEdyb3cgJiYgZmxleFNocmluayA9PSBv
dGhlci5mbGV4U2hyaW5rICYmIGZsZXhCYXNpcyA9PSBvdGhlci5mbGV4QmFzaXMKKyAgICAgICAg
JiYgZmxleERpcmVjdGlvbiA9PSBvdGhlci5mbGV4RGlyZWN0aW9uICYmIGZsZXhXcmFwID09IG90
aGVyLmZsZXhXcmFwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDMyMzhiODZmMmZiNTAwZGRmNGE4
MDJlYTM5MDJiMDhhNjE3MGQ4NjkuLmY1NGQ4NTkwNGI5NGI0ZWFmNzM3MjQwNzE3MWJmZmQzYmZl
MzVmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZs
ZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUZsZXhpYmxlQm94RGF0YS5oCkBAIC00MiwxMiArNDIsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICBmbG9hdCBtX2ZsZXhHcm93OwotICAg
IGZsb2F0IG1fZmxleFNocmluazsKLSAgICBMZW5ndGggbV9mbGV4QmFzaXM7CisgICAgZmxvYXQg
ZmxleEdyb3c7CisgICAgZmxvYXQgZmxleFNocmluazsKKyAgICBMZW5ndGggZmxleEJhc2lzOwog
Ci0gICAgdW5zaWduZWQgbV9mbGV4RGlyZWN0aW9uIDogMjsgLy8gRUZsZXhEaXJlY3Rpb24KLSAg
ICB1bnNpZ25lZCBtX2ZsZXhXcmFwIDogMjsgLy8gRUZsZXhXcmFwCisgICAgdW5zaWduZWQgZmxl
eERpcmVjdGlvbiA6IDI7IC8vIEVGbGV4RGlyZWN0aW9uCisgICAgdW5zaWduZWQgZmxleFdyYXAg
OiAyOyAvLyBFRmxleFdyYXAKIAogcHJpdmF0ZToKICAgICBTdHlsZUZsZXhpYmxlQm94RGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwCmluZGV4IDJjODRiMmY1NjdmMDdhMTk1OGM3MGU2NmI2ZjNmNGZjN2Q2OGZl
MjIuLmIwMDYzNzgxNGVhM2I0YjcxNjAxNzkwM2RmY2RkZmUyNGJhMzBiZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJ
bWFnZShSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkKIAogUmVmPENTU1ZhbHVl
PiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5n
ZXQoKSk7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5jb3B5UmVmKCk7CiB9CiAK
IGJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aXNQZW5kaW5nKCkgY29uc3QKQEAgLTU2LDcgKzU2
LDcgQEAgRmxvYXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXUKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwog
ICAgIGlmIChtX2ZpeGVkU2l6ZSkgewotICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gY29u
c3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdl
dCgpKS5maXhlZFNpemUoKnJlbmRlcmVyKTsKKyAgICAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZSA9
IG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+Zml4ZWRTaXplKCpyZW5kZXJlcik7CiAgICAgICAgIGlm
IChtdWx0aXBsaWVyID09IDEuMGYpCiAgICAgICAgICAgICByZXR1cm4gZml4ZWRTaXplOwogCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiBSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1h
Z2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxD
U1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5pbWFn
ZSgqcmVuZGVyZXIsIHNpemUpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmlt
YWdlKCpyZW5kZXJlciwgc2l6ZSk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCmluZGV4IDU0
ODA2MDQ0MDMwYTZhOWRjODBlZDc0YjI0ODdmODM3ZDU4ZjM0MzUuLmMxNDFlZjdlYWFiN2M0OTVh
MjhhZTRkODYzM2U5ODMzM2YzMzE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKQEAgLTMzLDU5ICszMyw1OSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKCkKLSAgICA6IG1fZ3Jp
ZENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1ucygpKQotICAgICwgbV9ncmlk
Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dzKCkpCi0gICAgLCBtX25hbWVkR3JpZENv
bHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAg
ICAsIG1fbmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dM
aW5lcygpKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6
OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1fb3JkZXJlZE5h
bWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHls
ZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1l
ZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0g
ICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6
OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1fYXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9ncmlkQXV0b0Zsb3coUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b0Zsb3coKSkKLSAgICAsIG1fZ3JpZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEF1dG9Sb3dzKCkpCi0gICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhSZW5kZXJTdHlsZTo6
aW5pdGlhbEdyaWRBdXRvQ29sdW1ucygpKQotICAgICwgbV9uYW1lZEdyaWRBcmVhKFJlbmRlclN0
eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgpKQotICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291
bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKLSAgICAsIG1fbmFt
ZWRHcmlkQXJlYUNvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNv
dW50KCkpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29s
dW1uR2FwKCkpCi0gICAgLCBtX2dyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93
R2FwKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlh
bEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Um93cyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBtX2F1dG9SZXBl
YXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVh
dEluc2VydGlvblBvaW50KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCi0gICAg
LCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVw
ZWF0VHlwZSgpKQotICAgICwgbV9hdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKKyAgICA6IGdyaWRDb2x1bW5zKFJlbmRlclN0eWxlOjpp
bml0aWFsR3JpZENvbHVtbnMoKSkKKyAgICAsIGdyaWRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFs
R3JpZFJvd3MoKSkKKyAgICAsIG5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0
aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAsIG5hbWVkR3JpZFJvd0xpbmVzKFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIG9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcygpKQorICAgICwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0
aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpCisgICAgLCBhdXRvUmVwZWF0TmFtZWRHcmlk
Q29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKQor
ICAgICwgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFt
ZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkK
KyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6Omlu
aXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIGdyaWRBdXRvRmxvdyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpKQorICAgICwgZ3JpZEF1dG9Sb3dzKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkpCisgICAgLCBncmlkQXV0b0NvbHVtbnMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKKyAgICAsIG5hbWVkR3JpZEFyZWEo
UmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhKCkpCisgICAgLCBuYW1lZEdyaWRBcmVh
Um93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKKyAgICAs
IG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFy
ZWFDb3VudCgpKQorICAgICwgZ3JpZENvbHVtbkdhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRD
b2x1bW5HYXAoKSkKKyAgICAsIGdyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93
R2FwKCkpCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxH
cmlkQXV0b1JlcGVhdFRyYWNrcygpKQorICAgICwgZ3JpZEF1dG9SZXBlYXRSb3dzKFJlbmRlclN0
eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFja3MoKSkKKyAgICAsIGF1dG9SZXBlYXRDb2x1
bW5zSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2Vy
dGlvblBvaW50KCkpCisgICAgLCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KFJlbmRlclN0
eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpKQorICAgICwgYXV0b1Jl
cGVhdENvbHVtbnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkp
CisgICAgLCBhdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1Jl
cGVhdFR5cGUoKSkKIHsKIH0KIAogaW5saW5lIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEo
Y29uc3QgU3R5bGVHcmlkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVHcmlkRGF0YT4o
KQotICAgICwgbV9ncmlkQ29sdW1ucyhvLm1fZ3JpZENvbHVtbnMpCi0gICAgLCBtX2dyaWRSb3dz
KG8ubV9ncmlkUm93cykKLSAgICAsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMoby5tX25hbWVkR3Jp
ZENvbHVtbkxpbmVzKQotICAgICwgbV9uYW1lZEdyaWRSb3dMaW5lcyhvLm1fbmFtZWRHcmlkUm93
TGluZXMpCi0gICAgLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1fb3JkZXJlZE5h
bWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoby5t
X29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENv
bHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMpCi0gICAgLCBtX2F1
dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVz
KQotICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRv
UmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0T3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzKQotICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKLSAgICAsIG1fZ3Jp
ZEF1dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCi0gICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhvLm1f
Z3JpZEF1dG9Db2x1bW5zKQotICAgICwgbV9uYW1lZEdyaWRBcmVhKG8ubV9uYW1lZEdyaWRBcmVh
KQotICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoby5tX25hbWVkR3JpZEFyZWFSb3dDb3Vu
dCkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdyaWRBcmVhQ29s
dW1uQ291bnQpCi0gICAgLCBtX2dyaWRDb2x1bW5HYXAoby5tX2dyaWRDb2x1bW5HYXApCi0gICAg
LCBtX2dyaWRSb3dHYXAoby5tX2dyaWRSb3dHYXApCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29s
dW1ucyhvLm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQotICAgICwgbV9ncmlkQXV0b1JlcGVhdFJv
d3Moby5tX2dyaWRBdXRvUmVwZWF0Um93cykKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNl
cnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkKLSAgICAsIG1f
YXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Q
b2ludCkKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9hdXRvUmVwZWF0Q29sdW1u
c1R5cGUpCi0gICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0b1JlcGVhdFJvd3NUeXBl
KQorICAgICwgZ3JpZENvbHVtbnMoby5ncmlkQ29sdW1ucykKKyAgICAsIGdyaWRSb3dzKG8uZ3Jp
ZFJvd3MpCisgICAgLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm5hbWVkR3JpZENvbHVtbkxpbmVz
KQorICAgICwgbmFtZWRHcmlkUm93TGluZXMoby5uYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIG9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykK
KyAgICAsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
cykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLmF1dG9SZXBlYXROYW1l
ZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLmF1
dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMoby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQor
ICAgICwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLmF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMpCisgICAgLCBncmlkQXV0b0Zsb3coby5ncmlkQXV0b0Zsb3cp
CisgICAgLCBncmlkQXV0b1Jvd3Moby5ncmlkQXV0b1Jvd3MpCisgICAgLCBncmlkQXV0b0NvbHVt
bnMoby5ncmlkQXV0b0NvbHVtbnMpCisgICAgLCBuYW1lZEdyaWRBcmVhKG8ubmFtZWRHcmlkQXJl
YSkKKyAgICAsIG5hbWVkR3JpZEFyZWFSb3dDb3VudChvLm5hbWVkR3JpZEFyZWFSb3dDb3VudCkK
KyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChvLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3Vu
dCkKKyAgICAsIGdyaWRDb2x1bW5HYXAoby5ncmlkQ29sdW1uR2FwKQorICAgICwgZ3JpZFJvd0dh
cChvLmdyaWRSb3dHYXApCisgICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoby5ncmlkQXV0b1Jl
cGVhdENvbHVtbnMpCisgICAgLCBncmlkQXV0b1JlcGVhdFJvd3Moby5ncmlkQXV0b1JlcGVhdFJv
d3MpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KG8uYXV0b1JlcGVhdENv
bHVtbnNJbnNlcnRpb25Qb2ludCkKKyAgICAsIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQo
by5hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KQorICAgICwgYXV0b1JlcGVhdENvbHVtbnNU
eXBlKG8uYXV0b1JlcGVhdENvbHVtbnNUeXBlKQorICAgICwgYXV0b1JlcGVhdFJvd3NUeXBlKG8u
YXV0b1JlcGVhdFJvd3NUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCAxNDRlZmFiOGJjOGZhYzdmYzdjNTdmMzQzM2Qz
MmNjYmFhYTg5ODRjLi5iMTFmMzBhNWM2ZjQ0ZTZjNzI0MzhjOWNmZmI5M2NkZjEyZGMxZjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAg
LTQ4LDE4ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
R3JpZERhdGEmIG8pIGNvbnN0CiAgICAgewogICAgICAgICAvLyBGSVhNRTogY29tcGFyaW5nIHR3
byBoYXNoZXMgZG9lc24ndCBsb29rIGdyZWF0IGZvciBwZXJmb3JtYW5jZS4gU29tZXRoaW5nIHRv
IGtlZXAgaW4gbWluZCBnb2luZyBmb3J3YXJkLgotICAgICAgICByZXR1cm4gbV9ncmlkQ29sdW1u
cyA9PSBvLm1fZ3JpZENvbHVtbnMgJiYgbV9ncmlkUm93cyA9PSBvLm1fZ3JpZFJvd3MKLSAgICAg
ICAgICAgICYmIG1fZ3JpZEF1dG9GbG93ID09IG8ubV9ncmlkQXV0b0Zsb3cgJiYgbV9ncmlkQXV0
b1Jvd3MgPT0gby5tX2dyaWRBdXRvUm93cyAmJiBtX2dyaWRBdXRvQ29sdW1ucyA9PSBvLm1fZ3Jp
ZEF1dG9Db2x1bW5zCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZENvbHVtbkxpbmVzID09IG8u
bV9uYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9uYW1l
ZEdyaWRSb3dMaW5lcwotICAgICAgICAgICAgJiYgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1u
TGluZXMgPT0gby5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX2F1dG9SZXBl
YXROYW1lZEdyaWRSb3dMaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzCi0g
ICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgPT0g
by5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgJiYgbV9hdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3Jp
ZEFyZWEgJiYgbV9uYW1lZEdyaWRBcmVhID09IG8ubV9uYW1lZEdyaWRBcmVhCi0gICAgICAgICAg
ICAmJiBtX25hbWVkR3JpZEFyZWFSb3dDb3VudCA9PSBvLm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50
ICYmIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50ID09IG8ubV9uYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQKLSAgICAgICAgICAgICYmIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9v
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMgJiYgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMg
PT0gby5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcwotICAgICAgICAgICAgJiYgbV9ncmlk
Q29sdW1uR2FwID09IG8ubV9ncmlkQ29sdW1uR2FwICYmIG1fZ3JpZFJvd0dhcCA9PSBvLm1fZ3Jp
ZFJvd0dhcAotICAgICAgICAgICAgJiYgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMgPT0gby5tX2dy
aWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBtX2dyaWRBdXRvUmVwZWF0Um93cyA9PSBvLm1fZ3JpZEF1
dG9SZXBlYXRSb3dzCi0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9u
UG9pbnQgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgJiYgbV9hdXRvUmVw
ZWF0Um93c0luc2VydGlvblBvaW50ID09IG8ubV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
Ci0gICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLm1fYXV0b1JlcGVh
dENvbHVtbnNUeXBlICYmIG1fYXV0b1JlcGVhdFJvd3NUeXBlID09IG8ubV9hdXRvUmVwZWF0Um93
c1R5cGU7CisgICAgICAgIHJldHVybiBncmlkQ29sdW1ucyA9PSBvLmdyaWRDb2x1bW5zICYmIGdy
aWRSb3dzID09IG8uZ3JpZFJvd3MKKyAgICAgICAgICAgICYmIGdyaWRBdXRvRmxvdyA9PSBvLmdy
aWRBdXRvRmxvdyAmJiBncmlkQXV0b1Jvd3MgPT0gby5ncmlkQXV0b1Jvd3MgJiYgZ3JpZEF1dG9D
b2x1bW5zID09IG8uZ3JpZEF1dG9Db2x1bW5zCisgICAgICAgICAgICAmJiBuYW1lZEdyaWRDb2x1
bW5MaW5lcyA9PSBvLm5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG5hbWVkR3JpZFJvd0xpbmVzID09
IG8ubmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXROYW1lZEdyaWRD
b2x1bW5MaW5lcyA9PSBvLmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBhdXRvUmVw
ZWF0TmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMKKyAg
ICAgICAgICAgICYmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5h
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIGF1dG9SZXBlYXRPcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
CisgICAgICAgICAgICAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJlYSAmJiBuYW1l
ZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJlYQorICAgICAgICAgICAgJiYgbmFtZWRHcmlkQXJl
YVJvd0NvdW50ID09IG8ubmFtZWRHcmlkQXJlYVJvd0NvdW50ICYmIG5hbWVkR3JpZEFyZWFDb2x1
bW5Db3VudCA9PSBvLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAorICAgICAgICAgICAgJiYgb3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzICYmIG9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
cworICAgICAgICAgICAgJiYgZ3JpZENvbHVtbkdhcCA9PSBvLmdyaWRDb2x1bW5HYXAgJiYgZ3Jp
ZFJvd0dhcCA9PSBvLmdyaWRSb3dHYXAKKyAgICAgICAgICAgICYmIGdyaWRBdXRvUmVwZWF0Q29s
dW1ucyA9PSBvLmdyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBncmlkQXV0b1JlcGVhdFJvd3MgPT0g
by5ncmlkQXV0b1JlcGVhdFJvd3MKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRDb2x1bW5zSW5z
ZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50ICYmIGF1dG9S
ZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
CisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5hdXRvUmVwZWF0Q29s
dW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09IG8uYXV0b1JlcGVhdFJvd3NUeXBlOwog
ICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBjb25z
dApAQCAtNjcsNDMgKzY3LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
byk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgbmFtaW5nIG9mIHRoZSBmb2xs
b3dpbmcgdmFyaWFibGVzLgotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRDb2x1bW5z
OwotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRSb3dzOworICAgIFZlY3RvcjxHcmlk
VHJhY2tTaXplPiBncmlkQ29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZFJv
d3M7CiAKLSAgICBOYW1lZEdyaWRMaW5lc01hcCBtX25hbWVkR3JpZENvbHVtbkxpbmVzOwotICAg
IE5hbWVkR3JpZExpbmVzTWFwIG1fbmFtZWRHcmlkUm93TGluZXM7CisgICAgTmFtZWRHcmlkTGlu
ZXNNYXAgbmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRH
cmlkUm93TGluZXM7CiAKLSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9vcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fb3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBvcmRlcmVk
TmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVy
ZWROYW1lZEdyaWRSb3dMaW5lczsKIAotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVh
dE5hbWVkR3JpZENvbHVtbkxpbmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVh
dE5hbWVkR3JpZFJvd0xpbmVzOwotICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExp
bmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKKyAgICBOYW1lZEdy
aWRMaW5lc01hcCBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgTmFtZWRHcmlk
TGluZXNNYXAgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzOworICAgIE9y
ZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
OwogCi0gICAgdW5zaWduZWQgbV9ncmlkQXV0b0Zsb3cgOiBHcmlkQXV0b0Zsb3dCaXRzOworICAg
IHVuc2lnbmVkIGdyaWRBdXRvRmxvdyA6IEdyaWRBdXRvRmxvd0JpdHM7CiAKLSAgICBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b1Jvd3M7Ci0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+
IG1fZ3JpZEF1dG9Db2x1bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQXV0b1Jv
d3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvQ29sdW1uczsKIAotICAgIE5h
bWVkR3JpZEFyZWFNYXAgbV9uYW1lZEdyaWRBcmVhOwotICAgIC8vIEJlY2F1c2UgbV9uYW1lZEdy
aWRBcmVhIGRvZXNuJ3Qgc3RvcmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBr
ZWVwIHRyYWNrCisgICAgTmFtZWRHcmlkQXJlYU1hcCBuYW1lZEdyaWRBcmVhOworICAgIC8vIEJl
Y2F1c2UgbmFtZWRHcmlkQXJlYSBkb2Vzbid0IHN0b3JlIHRoZSB1bm5hbWVkIGdyaWQgYXJlYXMs
IHdlIG5lZWQgdG8ga2VlcCB0cmFjawogICAgIC8vIG9mIHRoZSBleHBsaWNpdCBncmlkIHNpemUg
ZGVmaW5lZCBieSBib3RoIG5hbWVkIGFuZCB1bm5hbWVkIGdyaWQgYXJlYXMuCi0gICAgdW5zaWdu
ZWQgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7Ci0gICAgdW5zaWduZWQgbV9uYW1lZEdyaWRBcmVh
Q29sdW1uQ291bnQ7CisgICAgdW5zaWduZWQgbmFtZWRHcmlkQXJlYVJvd0NvdW50OworICAgIHVu
c2lnbmVkIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKIAotICAgIExlbmd0aCBtX2dyaWRDb2x1
bW5HYXA7Ci0gICAgTGVuZ3RoIG1fZ3JpZFJvd0dhcDsKKyAgICBMZW5ndGggZ3JpZENvbHVtbkdh
cDsKKyAgICBMZW5ndGggZ3JpZFJvd0dhcDsKIAotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBt
X2dyaWRBdXRvUmVwZWF0Q29sdW1uczsKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlk
QXV0b1JlcGVhdFJvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvUmVwZWF0
Q29sdW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1dG9SZXBlYXRSb3dzOwog
Ci0gICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OwotICAgIHVu
c2lnbmVkIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsKKyAgICB1bnNpZ25lZCBhdXRv
UmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OworICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQ7CiAKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRDb2x1bW5z
VHlwZTsKLSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRSb3dzVHlwZTsKKyAgICBBdXRv
UmVwZWF0VHlwZSBhdXRvUmVwZWF0Q29sdW1uc1R5cGU7CisgICAgQXV0b1JlcGVhdFR5cGUgYXV0
b1JlcGVhdFJvd3NUeXBlOwogCiBwcml2YXRlOgogICAgIFN0eWxlR3JpZERhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3Bw
CmluZGV4IDEwMmJlOTA4ZDc2Y2RkNmZmYTE3MmQ0YTJhMmEyMjZkZTViM2I1Y2QuLmMyZGI4ZTc0
ODI1YjIwMWU0MTc0NDcxZGZkMjE0NTY2MzY3NDdlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCisKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTdHlsZUdyaWRJdGVtRGF0YS5oIgogCkBAIC0zNywxOSArMzgs
MTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVHcmlkSXRlbURhdGE6OlN0eWxlR3Jp
ZEl0ZW1EYXRhKCkKLSAgICA6IG1fZ3JpZENvbHVtblN0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFs
R3JpZEl0ZW1Db2x1bW5TdGFydCgpKQotICAgICwgbV9ncmlkQ29sdW1uRW5kKFJlbmRlclN0eWxl
Ojppbml0aWFsR3JpZEl0ZW1Db2x1bW5FbmQoKSkKLSAgICAsIG1fZ3JpZFJvd1N0YXJ0KFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpKQotICAgICwgbV9ncmlkUm93RW5kKFJl
bmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dFbmQoKSkKKyAgICA6IGdyaWRDb2x1bW5TdGFy
dChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtQ29sdW1uU3RhcnQoKSkKKyAgICAsIGdyaWRD
b2x1bW5FbmQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbUNvbHVtbkVuZCgpKQorICAgICwg
Z3JpZFJvd1N0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpKQorICAg
ICwgZ3JpZFJvd0VuZChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtUm93RW5kKCkpCiB7CiB9
CiAKIGlubGluZSBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEoY29uc3QgU3R5
bGVHcmlkSXRlbURhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlR3JpZEl0ZW1EYXRhPigp
Ci0gICAgLCBtX2dyaWRDb2x1bW5TdGFydChvLm1fZ3JpZENvbHVtblN0YXJ0KQotICAgICwgbV9n
cmlkQ29sdW1uRW5kKG8ubV9ncmlkQ29sdW1uRW5kKQotICAgICwgbV9ncmlkUm93U3RhcnQoby5t
X2dyaWRSb3dTdGFydCkKLSAgICAsIG1fZ3JpZFJvd0VuZChvLm1fZ3JpZFJvd0VuZCkKKyAgICAs
IGdyaWRDb2x1bW5TdGFydChvLmdyaWRDb2x1bW5TdGFydCkKKyAgICAsIGdyaWRDb2x1bW5FbmQo
by5ncmlkQ29sdW1uRW5kKQorICAgICwgZ3JpZFJvd1N0YXJ0KG8uZ3JpZFJvd1N0YXJ0KQorICAg
ICwgZ3JpZFJvd0VuZChvLmdyaWRSb3dFbmQpCiB7CiB9CiAKQEAgLTYwLDQgKzYxLDQgQEAgUmVm
PFN0eWxlR3JpZEl0ZW1EYXRhPiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSgpIGNvbnN0CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
ICovCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdyaWRJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZEl0ZW1EYXRhLmgKaW5kZXggOGIyOGQ5NGI0MWIyOWIwMDIxNGNkYzY0ZWJmMTYxNzQwN2Fl
MGRkNi4uODBjODRmYzczMWUyZmNiZmZkZmY1MDgzZTIzY2MyMGExNGU4NGI2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKQEAg
LTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
R3JpZEl0ZW1EYXRhJiBvKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3JpZENvbHVt
blN0YXJ0ID09IG8ubV9ncmlkQ29sdW1uU3RhcnQgJiYgbV9ncmlkQ29sdW1uRW5kID09IG8ubV9n
cmlkQ29sdW1uRW5kCi0gICAgICAgICAgICAmJiBtX2dyaWRSb3dTdGFydCA9PSBvLm1fZ3JpZFJv
d1N0YXJ0ICYmIG1fZ3JpZFJvd0VuZCA9PSBvLm1fZ3JpZFJvd0VuZDsKKyAgICAgICAgcmV0dXJu
IGdyaWRDb2x1bW5TdGFydCA9PSBvLmdyaWRDb2x1bW5TdGFydCAmJiBncmlkQ29sdW1uRW5kID09
IG8uZ3JpZENvbHVtbkVuZAorICAgICAgICAgICAgJiYgZ3JpZFJvd1N0YXJ0ID09IG8uZ3JpZFJv
d1N0YXJ0ICYmIGdyaWRSb3dFbmQgPT0gby5ncmlkUm93RW5kOwogICAgIH0KIAogICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykgY29uc3QKQEAgLTU0LDEwICs1
NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAot
ICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRDb2x1bW5TdGFydDsKLSAgICBHcmlkUG9zaXRpb24gbV9n
cmlkQ29sdW1uRW5kOwotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRSb3dTdGFydDsKLSAgICBHcmlk
UG9zaXRpb24gbV9ncmlkUm93RW5kOworICAgIEdyaWRQb3NpdGlvbiBncmlkQ29sdW1uU3RhcnQ7
CisgICAgR3JpZFBvc2l0aW9uIGdyaWRDb2x1bW5FbmQ7CisgICAgR3JpZFBvc2l0aW9uIGdyaWRS
b3dTdGFydDsKKyAgICBHcmlkUG9zaXRpb24gZ3JpZFJvd0VuZDsKIAogcHJpdmF0ZToKICAgICBT
dHlsZUdyaWRJdGVtRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAppbmRleCA2MzM5ZjZkZGViMTdjOTc1YTE3ODhh
YjFjOGRhNDMyNmVmMWU4NTkxLi5hNWUzNTdlZTkzMTIzZjEyZDc0MjZmMDczMDA2NzVhMTIxZmFi
NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhl
cml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJ
bmhlcml0ZWREYXRhLmNwcApAQCAtMjcsOSArMjcsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCi0gICAgOiBob3Jpem9u
dGFsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoKSkKLSAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0
aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCi0gICAgLCBsaW5lX2hlaWdodChSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKKyAgICA6IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKFJl
bmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSkKKyAgICAsIHZlcnRp
Y2FsQm9yZGVyU3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2lu
ZygpKQorICAgICwgbGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICwgc3BlY2lmaWVkTGluZUhlaWdodChS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKICNlbmRpZgpAQCAtMzgsMTUgKzM4LDEx
IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKIHsKIH0KIAotU3R5
bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKCkKLXsKLX0KLQogaW5saW5lIFN0
eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVk
RGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPigpCi0gICAgLCBo
b3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykKLSAg
ICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmcpCi0g
ICAgLCBsaW5lX2hlaWdodChvLmxpbmVfaGVpZ2h0KQorICAgICwgaG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoby5ob3Jpem9udGFsQm9yZGVyU3BhY2luZykKKyAgICAsIHZlcnRpY2FsQm9yZGVyU3Bh
Y2luZyhvLnZlcnRpY2FsQm9yZGVyU3BhY2luZykKKyAgICAsIGxpbmVIZWlnaHQoby5saW5lSGVp
Z2h0KQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLCBzcGVjaWZpZWRMaW5lSGVp
Z2h0KG8uc3BlY2lmaWVkTGluZUhlaWdodCkKICNlbmRpZgpAQCAtNjMsMTUgKzU5LDE1IEBAIFJl
ZjxTdHlsZUluaGVyaXRlZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CiAK
IGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVk
RGF0YSYgbykgY29uc3QKIHsKLSAgICByZXR1cm4gbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdo
dAorICAgIHJldHVybiBsaW5lSGVpZ2h0ID09IG8ubGluZUhlaWdodAogI2lmIEVOQUJMRShURVhU
X0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHNwZWNpZmllZExpbmVIZWlnaHQgPT0gby5zcGVjaWZp
ZWRMaW5lSGVpZ2h0CiAjZW5kaWYKICAgICAgICAgJiYgZm9udENhc2NhZGUgPT0gby5mb250Q2Fz
Y2FkZQogICAgICAgICAmJiBjb2xvciA9PSBvLmNvbG9yCiAgICAgICAgICYmIHZpc2l0ZWRMaW5r
Q29sb3IgPT0gby52aXNpdGVkTGlua0NvbG9yCi0gICAgICAgICYmIGhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcgPT0gby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgICYmIHZlcnRp
Y2FsX2JvcmRlcl9zcGFjaW5nID09IG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAgICAg
ICYmIGhvcml6b250YWxCb3JkZXJTcGFjaW5nID09IG8uaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcK
KyAgICAgICAgJiYgdmVydGljYWxCb3JkZXJTcGFjaW5nID09IG8udmVydGljYWxCb3JkZXJTcGFj
aW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKaW5kZXggMjliZmNiNDQzYTBk
ZTA4MDlmNDRlY2E0ZGYxM2RjMjI2ZjcyYTgyOC4uZDY1NTU4MzVhYzhlMDkzMDUwNjA1NWRmYzhi
MTlhMjg4OTI4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNv
bSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0yNyw5ICsyNyw2IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyMCArMzQsMTQgQEAgY2xhc3Mg
U3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWREYXRh
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQogICAgIFJlZjxT
dHlsZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdDsKLSAgICB+U3R5bGVJbmhlcml0ZWREYXRh
KCk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgIGZsb2F0IGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmc7Ci0gICAgZmxvYXQgdmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAgZmxvYXQgaG9y
aXpvbnRhbEJvcmRlclNwYWNpbmc7CisgICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nOwog
Ci0gICAgLy8gY291bGQgYmUgcGFja2VkIGluIGEgc2hvcnQgYnV0IGRvZXNuJ3QKLSAgICAvLyBt
YWtlIGEgZGlmZmVyZW5jZSBjdXJyZW50bHkgYmVjYXVzZSBvZiBwYWRkaW5nCi0gICAgTGVuZ3Ro
IGxpbmVfaGVpZ2h0OworICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCiAgICAgTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQ7CiAjZW5kaWYKQEAgLTYy
LDYgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHlsZUluaGVyaXRlZERhdGEoKTsK
ICAgICBTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJik7CisgICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJikgPSBkZWxldGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAppbmRleCA1YzkwZTIwYTE4MGQyYWFkNmE0
Zjk3OTBkMGQ0YWJlNzU0Zjc2NDc0Li5iN2U3OTRmODRiMzk3Y2ZkOGI2YTQ5YWFmZTFmN2ZiOThi
Nzc5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUNvbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU11bHRpQ29sRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMzMgKzI3LDMxIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YSgpCi0gICAg
OiBtX3dpZHRoKDApCi0gICAgLCBtX2NvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291
bnQoKSkKLSAgICAsIG1fZ2FwKDApCi0gICAgLCBtX2F1dG9XaWR0aCh0cnVlKQotICAgICwgbV9h
dXRvQ291bnQodHJ1ZSkKLSAgICAsIG1fbm9ybWFsR2FwKHRydWUpCi0gICAgLCBtX2ZpbGwoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCi0gICAgLCBtX2NvbHVtblNwYW4oZmFsc2Up
Ci0gICAgLCBtX2F4aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpCi0gICAgLCBt
X3Byb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSkKKyAg
ICA6IGNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSkKKyAgICAsIGF1dG9X
aWR0aCh0cnVlKQorICAgICwgYXV0b0NvdW50KHRydWUpCisgICAgLCBub3JtYWxHYXAodHJ1ZSkK
KyAgICAsIGZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCisgICAgLCBjb2x1
bW5TcGFuKGZhbHNlKQorICAgICwgYXhpcyhSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkF4aXMo
KSkKKyAgICAsIHByb2dyZXNzaW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Np
b24oKSkKIHsKIH0KIAotaW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0
YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKK2lubGluZSBTdHlsZU11bHRpQ29sRGF0YTo6
U3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG90aGVyKQogICAgIDog
UmVmQ291bnRlZDxTdHlsZU11bHRpQ29sRGF0YT4oKQotICAgICwgbV93aWR0aChvLm1fd2lkdGgp
Ci0gICAgLCBtX2NvdW50KG8ubV9jb3VudCkKLSAgICAsIG1fZ2FwKG8ubV9nYXApCi0gICAgLCBt
X3J1bGUoby5tX3J1bGUpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKG8ubV92
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKLSAgICAsIG1fYXV0b1dpZHRoKG8ubV9hdXRvV2lk
dGgpCi0gICAgLCBtX2F1dG9Db3VudChvLm1fYXV0b0NvdW50KQotICAgICwgbV9ub3JtYWxHYXAo
by5tX25vcm1hbEdhcCkKLSAgICAsIG1fZmlsbChvLm1fZmlsbCkKLSAgICAsIG1fY29sdW1uU3Bh
bihvLm1fY29sdW1uU3BhbikKLSAgICAsIG1fYXhpcyhvLm1fYXhpcykKLSAgICAsIG1fcHJvZ3Jl
c3Npb24oby5tX3Byb2dyZXNzaW9uKQorICAgICwgd2lkdGgob3RoZXIud2lkdGgpCisgICAgLCBj
b3VudChvdGhlci5jb3VudCkKKyAgICAsIGdhcChvdGhlci5nYXApCisgICAgLCBydWxlKG90aGVy
LnJ1bGUpCisgICAgLCB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihvdGhlci52aXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcikKKyAgICAsIGF1dG9XaWR0aChvdGhlci5hdXRvV2lkdGgpCisgICAg
LCBhdXRvQ291bnQob3RoZXIuYXV0b0NvdW50KQorICAgICwgbm9ybWFsR2FwKG90aGVyLm5vcm1h
bEdhcCkKKyAgICAsIGZpbGwob3RoZXIuZmlsbCkKKyAgICAsIGNvbHVtblNwYW4ob3RoZXIuY29s
dW1uU3BhbikKKyAgICAsIGF4aXMob3RoZXIuYXhpcykKKyAgICAsIHByb2dyZXNzaW9uKG90aGVy
LnByb2dyZXNzaW9uKQogewogfQogCkBAIC02MiwxMyArNjAsMTMgQEAgUmVmPFN0eWxlTXVsdGlD
b2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZU11bHRp
Q29sRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3QKK2Jv
b2wgU3R5bGVNdWx0aUNvbERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEm
IG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX2Nv
dW50ID09IG8ubV9jb3VudCAmJiBtX2dhcCA9PSBvLm1fZ2FwCi0gICAgICAgICYmIG1fcnVsZSA9
PSBvLm1fcnVsZSAmJiBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID09IG8ubV92aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvcgotICAgICAgICAmJiBtX2F1dG9XaWR0aCA9PSBvLm1fYXV0b1dp
ZHRoICYmIG1fYXV0b0NvdW50ID09IG8ubV9hdXRvQ291bnQgJiYgbV9ub3JtYWxHYXAgPT0gby5t
X25vcm1hbEdhcAotICAgICAgICAmJiBtX2ZpbGwgPT0gby5tX2ZpbGwgJiYgbV9jb2x1bW5TcGFu
ID09IG8ubV9jb2x1bW5TcGFuCi0gICAgICAgICYmIG1fYXhpcyA9PSBvLm1fYXhpcyAmJiBtX3By
b2dyZXNzaW9uID09IG8ubV9wcm9ncmVzc2lvbjsKKyAgICByZXR1cm4gd2lkdGggPT0gb3RoZXIu
d2lkdGggJiYgY291bnQgPT0gb3RoZXIuY291bnQgJiYgZ2FwID09IG90aGVyLmdhcAorICAgICAg
ICAmJiBydWxlID09IG90aGVyLnJ1bGUgJiYgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPT0g
b3RoZXIudmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IKKyAgICAgICAgJiYgYXV0b1dpZHRoID09
IG90aGVyLmF1dG9XaWR0aCAmJiBhdXRvQ291bnQgPT0gb3RoZXIuYXV0b0NvdW50ICYmIG5vcm1h
bEdhcCA9PSBvdGhlci5ub3JtYWxHYXAKKyAgICAgICAgJiYgZmlsbCA9PSBvdGhlci5maWxsICYm
IGNvbHVtblNwYW4gPT0gb3RoZXIuY29sdW1uU3BhbgorICAgICAgICAmJiBheGlzID09IG90aGVy
LmF4aXMgJiYgcHJvZ3Jlc3Npb24gPT0gb3RoZXIucHJvZ3Jlc3Npb247CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXggMjkzNGY5ODU1NjdlN2QxMTEzM2E0YzZkZTUzZmUxYTU4
ZDQ1MzI3MC4uNWJkZjgxZDUxN2I5MGQxOTY4Y2QyMmQzNzYxNzdjMjdiYmQ2OTNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3Jh
aGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgs
MzIgKzM4LDI5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlDb2xEYXRhKTsgfQogICAg
IFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gY29weSgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhICZvKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZU11bHRpQ29sRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHls
ZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
CiAKICAgICB1bnNpZ25lZCBzaG9ydCBydWxlV2lkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKG1fcnVsZS5zdHlsZSgpID09IEJOT05FIHx8IG1fcnVsZS5zdHlsZSgpID09IEJISURERU4p
CisgICAgICAgIGlmIChydWxlLnN0eWxlKCkgPT0gQk5PTkUgfHwgcnVsZS5zdHlsZSgpID09IEJI
SURERU4pCiAgICAgICAgICAgICByZXR1cm4gMDsgCi0gICAgICAgIHJldHVybiBtX3J1bGUud2lk
dGgoKTsKKyAgICAgICAgcmV0dXJuIHJ1bGUud2lkdGgoKTsKICAgICB9CiAKLSAgICBmbG9hdCBt
X3dpZHRoOwotICAgIHVuc2lnbmVkIHNob3J0IG1fY291bnQ7Ci0gICAgZmxvYXQgbV9nYXA7Ci0g
ICAgQm9yZGVyVmFsdWUgbV9ydWxlOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3I7CisgICAgZmxvYXQgd2lkdGggeyAwIH07CisgICAgdW5zaWduZWQgc2hvcnQgY291bnQ7
CisgICAgZmxvYXQgZ2FwIHsgMCB9OworICAgIEJvcmRlclZhbHVlIHJ1bGU7CisgICAgQ29sb3Ig
dmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CiAKLSAgICBib29sIG1fYXV0b1dpZHRoIDogMTsK
LSAgICBib29sIG1fYXV0b0NvdW50IDogMTsKLSAgICBib29sIG1fbm9ybWFsR2FwIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2ZpbGwgOiAxOyAvLyBDb2x1bW5GaWxsCi0gICAgdW5zaWduZWQgbV9jb2x1
bW5TcGFuIDogMTsKLSAgICB1bnNpZ25lZCBtX2F4aXMgOiAyOyAvLyBDb2x1bW5BeGlzCi0gICAg
dW5zaWduZWQgbV9wcm9ncmVzc2lvbiA6IDI7IC8vIENvbHVtblByb2dyZXNzaW9uCisgICAgYm9v
bCBhdXRvV2lkdGggOiAxOworICAgIGJvb2wgYXV0b0NvdW50IDogMTsKKyAgICBib29sIG5vcm1h
bEdhcCA6IDE7CisgICAgdW5zaWduZWQgZmlsbCA6IDE7IC8vIENvbHVtbkZpbGwKKyAgICB1bnNp
Z25lZCBjb2x1bW5TcGFuIDogMTsKKyAgICB1bnNpZ25lZCBheGlzIDogMjsgLy8gQ29sdW1uQXhp
cworICAgIHVuc2lnbmVkIHByb2dyZXNzaW9uIDogMjsgLy8gQ29sdW1uUHJvZ3Jlc3Npb24KIAog
cHJpdmF0ZToKICAgICBTdHlsZU11bHRpQ29sRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4
IGZhMjlhZjBkY2U3MTYwYjk1OGEzNTdjZGQyODg3NzgxYWI5N2ZkZjcuLmZjNjA1ZDQ4ZmNjODU5
MDU4MzkwZGYzOTgyYjViZGIwNTk4OGI1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQdHJzWzJdOwog
ICAgIExlbmd0aCBsZW5ndGhzWzJdOwogICAgIGZsb2F0IHNlY29uZEZsb2F0OwotICAgIHVuc2ln
bmVkIG1fYml0ZmllbGRzWzRdOworICAgIHVuc2lnbmVkIGJpdGZpZWxkc1s0XTsKICAgICBzaG9y
dCBwYWdlZE1lZGlhU2hvcnRzWzJdOwogICAgIHVuc2lnbmVkIHVuc2lnbmVkc1sxXTsKICAgICBz
aG9ydCBoeXBoZW5hdGlvblNob3J0c1szXTsKQEAgLTczLDEyICs3MywxMiBAQCBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICA6IGxpc3RTdHlsZUlt
YWdlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSkKICAgICAsIHRleHRTdHJv
a2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0aCgpKQogICAgICwgaW5k
ZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQotICAgICwgbV9lZmZlY3RpdmVa
b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQotICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVz
KFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGVmZmVjdGl2ZVpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhOjpjcmVhdGUoKSkKICAgICAsIHdpZG93cyhSZW5kZXJTdHlsZTo6
aW5pdGlhbFdpZG93cygpKQogICAgICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhh
bnMoKSkKLSAgICAsIG1faGFzQXV0b1dpZG93cyh0cnVlKQotICAgICwgbV9oYXNBdXRvT3JwaGFu
cyh0cnVlKQorICAgICwgaGFzQXV0b1dpZG93cyh0cnVlKQorICAgICwgaGFzQXV0b09ycGhhbnMo
dHJ1ZSkKICAgICAsIHRleHRTZWN1cml0eShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTZWN1cml0
eSgpKQogICAgICwgdXNlck1vZGlmeShSRUFEX09OTFkpCiAgICAgLCB3b3JkQnJlYWsoUmVuZGVy
U3R5bGU6OmluaXRpYWxXb3JkQnJlYWsoKSkKQEAgLTkxLDUwICs5MSw1MCBAQCBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICAsIHRleHRFbXBoYXNp
c0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCkKICAgICAsIHRleHRFbXBoYXNpc01hcmsoVGV4
dEVtcGhhc2lzTWFya05vbmUpCiAgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFz
aXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KQotICAgICwgbV90ZXh0
T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQp
KQorICAgICwgdGV4dE9yaWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0T3JpZW50
YXRpb246Ok1peGVkKSkKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICwgbV90ZXh0SW5kZW50
TGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCi0gICAgLCBtX3RleHRJ
bmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5cGUoKSkKKyAgICAsIHRl
eHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudExpbmUoKSkKKyAgICAs
IHRleHRJbmRlbnRUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5cGUoKSkKICNl
bmRpZgotICAgICwgbV9saW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVCb3hD
b250YWluKCkpCisgICAgLCBsaW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVC
b3hDb250YWluKCkpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAsIG1f
aW1hZ2VPcmllbnRhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSkK
KyAgICAsIGltYWdlT3JpZW50YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZU9yaWVudGF0
aW9uKCkpCiAjZW5kaWYKLSAgICAsIG1faW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRp
YWxJbWFnZVJlbmRlcmluZygpKQotICAgICwgbV9saW5lU25hcChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVTbmFwKCkpCi0gICAgLCBtX2xpbmVBbGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVB
bGlnbigpKQorICAgICwgaW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJl
bmRlcmluZygpKQorICAgICwgbGluZVNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCgp
KQorICAgICwgbGluZUFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWduKCkpCiAjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAsIHVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xs
aW5nKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBt
X2ltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlv
blNvdXJjZSgpKQotICAgICwgbV9pbWFnZVJlc29sdXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0
aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU291cmNlKFJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCisgICAgLCBpbWFnZVJl
c29sdXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEFsaWduTGFzdChSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QoKSkKLSAgICAsIG1fdGV4dEp1c3RpZnkoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQotI2VuZGlmIC8vIENTUzNfVEVYVAotICAg
ICwgbV90ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlv
blNraXAoKSkKLSAgICAsIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkpCi0gICAgLCBtX3J1YnlQb3NpdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQotICAgICwgbV90ZXh0Wm9vbShSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRab29tKCkpCisgICAgLCB0ZXh0QWxpZ25MYXN0KFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dEFsaWduTGFzdCgpKQorICAgICwgdGV4dEp1c3RpZnkoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0SnVzdGlmeSgpKQorI2VuZGlmCisgICAgLCB0ZXh0RGVjb3JhdGlvblNraXAoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSkKKyAgICAsIHRleHRVbmRlcmxp
bmVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpKQor
ICAgICwgcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpCisg
ICAgLCB0ZXh0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxlZChSZW5kZXJTdHlsZTo6aW5pdGlhbFRv
dWNoQ2FsbG91dEVuYWJsZWQoKSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09S
RCkKICAgICAsIHRyYWlsaW5nV29yZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6
OmluaXRpYWxUcmFpbGluZ1dvcmQoKSkpCiAjZW5kaWYKLSAgICAsIG1faGFuZ2luZ1B1bmN0dWF0
aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCkpCisgICAgLCBoYW5n
aW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSkK
ICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0
QWZ0ZXIoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoLTEpCi0gICAgLCBtX2xpbmVH
cmlkKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkKLSAgICAsIG1fdGFiU2l6ZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRhYlNpemUoKSkKKyAgICAsIGxpbmVHcmlkKFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUdyaWQoKSkKKyAgICAsIHRhYlNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJT
aXplKCkpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAsIHRleHRTaXplQWRqdXN0
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNpemVBZGp1c3QoKSkKICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uKFJlbmRlclN0
eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uKCkpCisgICAgLCBpbWFnZVJlc29sdXRpb24oUmVu
ZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24oKSkKICNlbmRpZgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRhcEhpZ2hsaWdodENvbG9yKCkpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBpbmxpbmUgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJ
bmhlcml0ZWREYQogICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKICAgICAsIGN1cnNvckRh
dGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQotICAgICwgbV9lZmZlY3Rp
dmVab29tKG8ubV9lZmZlY3RpdmVab29tKQotICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVzKG8ubV9j
dXN0b21Qcm9wZXJ0aWVzKQorICAgICwgZWZmZWN0aXZlWm9vbShvLmVmZmVjdGl2ZVpvb20pCisg
ICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKICAgICAsIHdpZG93cyhv
LndpZG93cykKICAgICAsIG9ycGhhbnMoby5vcnBoYW5zKQotICAgICwgbV9oYXNBdXRvV2lkb3dz
KG8ubV9oYXNBdXRvV2lkb3dzKQotICAgICwgbV9oYXNBdXRvT3JwaGFucyhvLm1faGFzQXV0b09y
cGhhbnMpCisgICAgLCBoYXNBdXRvV2lkb3dzKG8uaGFzQXV0b1dpZG93cykKKyAgICAsIGhhc0F1
dG9PcnBoYW5zKG8uaGFzQXV0b09ycGhhbnMpCiAgICAgLCB0ZXh0U2VjdXJpdHkoby50ZXh0U2Vj
dXJpdHkpCiAgICAgLCB1c2VyTW9kaWZ5KG8udXNlck1vZGlmeSkKICAgICAsIHdvcmRCcmVhayhv
LndvcmRCcmVhaykKQEAgLTE3Myw1MiArMTczLDUyIEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERh
CiAgICAgLCB0ZXh0RW1waGFzaXNGaWxsKG8udGV4dEVtcGhhc2lzRmlsbCkKICAgICAsIHRleHRF
bXBoYXNpc01hcmsoby50ZXh0RW1waGFzaXNNYXJrKQogICAgICwgdGV4dEVtcGhhc2lzUG9zaXRp
b24oby50ZXh0RW1waGFzaXNQb3NpdGlvbikKLSAgICAsIG1fdGV4dE9yaWVudGF0aW9uKG8ubV90
ZXh0T3JpZW50YXRpb24pCisgICAgLCB0ZXh0T3JpZW50YXRpb24oby50ZXh0T3JpZW50YXRpb24p
CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEluZGVudExpbmUoby5tX3RleHRJ
bmRlbnRMaW5lKQotICAgICwgbV90ZXh0SW5kZW50VHlwZShvLm1fdGV4dEluZGVudFR5cGUpCisg
ICAgLCB0ZXh0SW5kZW50TGluZShvLnRleHRJbmRlbnRMaW5lKQorICAgICwgdGV4dEluZGVudFR5
cGUoby50ZXh0SW5kZW50VHlwZSkKICNlbmRpZgotICAgICwgbV9saW5lQm94Q29udGFpbihvLm1f
bGluZUJveENvbnRhaW4pCisgICAgLCBsaW5lQm94Q29udGFpbihvLmxpbmVCb3hDb250YWluKQog
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2ltYWdlT3JpZW50YXRp
b24oby5tX2ltYWdlT3JpZW50YXRpb24pCisgICAgLCBpbWFnZU9yaWVudGF0aW9uKG8uaW1hZ2VP
cmllbnRhdGlvbikKICNlbmRpZgotICAgICwgbV9pbWFnZVJlbmRlcmluZyhvLm1faW1hZ2VSZW5k
ZXJpbmcpCi0gICAgLCBtX2xpbmVTbmFwKG8ubV9saW5lU25hcCkKLSAgICAsIG1fbGluZUFsaWdu
KG8ubV9saW5lQWxpZ24pCisgICAgLCBpbWFnZVJlbmRlcmluZyhvLmltYWdlUmVuZGVyaW5nKQor
ICAgICwgbGluZVNuYXAoby5saW5lU25hcCkKKyAgICAsIGxpbmVBbGlnbihvLmxpbmVBbGlnbikK
ICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZyhvLnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlv
blNvdXJjZShvLm1faW1hZ2VSZXNvbHV0aW9uU291cmNlKQotICAgICwgbV9pbWFnZVJlc29sdXRp
b25TbmFwKG8ubV9pbWFnZVJlc29sdXRpb25TbmFwKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU291
cmNlKG8uaW1hZ2VSZXNvbHV0aW9uU291cmNlKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU25hcChv
LmltYWdlUmVzb2x1dGlvblNuYXApCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAg
ICwgbV90ZXh0QWxpZ25MYXN0KG8ubV90ZXh0QWxpZ25MYXN0KQotICAgICwgbV90ZXh0SnVzdGlm
eShvLm1fdGV4dEp1c3RpZnkpCi0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgLCBtX3RleHREZWNv
cmF0aW9uU2tpcChvLm1fdGV4dERlY29yYXRpb25Ta2lwKQotICAgICwgbV90ZXh0VW5kZXJsaW5l
UG9zaXRpb24oby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbikKLSAgICAsIG1fcnVieVBvc2l0aW9u
KG8ubV9ydWJ5UG9zaXRpb24pCi0gICAgLCBtX3RleHRab29tKG8ubV90ZXh0Wm9vbSkKKyAgICAs
IHRleHRBbGlnbkxhc3Qoby50ZXh0QWxpZ25MYXN0KQorICAgICwgdGV4dEp1c3RpZnkoby50ZXh0
SnVzdGlmeSkKKyNlbmRpZgorICAgICwgdGV4dERlY29yYXRpb25Ta2lwKG8udGV4dERlY29yYXRp
b25Ta2lwKQorICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKG8udGV4dFVuZGVybGluZVBvc2l0
aW9uKQorICAgICwgcnVieVBvc2l0aW9uKG8ucnVieVBvc2l0aW9uKQorICAgICwgdGV4dFpvb20o
by50ZXh0Wm9vbSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCB0b3VjaENhbGxvdXRFbmFibGVk
KG8udG91Y2hDYWxsb3V0RW5hYmxlZCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdf
V09SRCkKICAgICAsIHRyYWlsaW5nV29yZChvLnRyYWlsaW5nV29yZCkKICNlbmRpZgotICAgICwg
bV9oYW5naW5nUHVuY3R1YXRpb24oby5tX2hhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAsIGhhbmdp
bmdQdW5jdHVhdGlvbihvLmhhbmdpbmdQdW5jdHVhdGlvbikKICAgICAsIGh5cGhlbmF0aW9uU3Ry
aW5nKG8uaHlwaGVuYXRpb25TdHJpbmcpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKG8u
aHlwaGVuYXRpb25MaW1pdEJlZm9yZSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcihvLmh5
cGhlbmF0aW9uTGltaXRBZnRlcikKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5lcyhvLmh5cGhl
bmF0aW9uTGltaXRMaW5lcykKICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50ZXh0RW1w
aGFzaXNDdXN0b21NYXJrKQotICAgICwgbV9saW5lR3JpZChvLm1fbGluZUdyaWQpCi0gICAgLCBt
X3RhYlNpemUoby5tX3RhYlNpemUpCisgICAgLCBsaW5lR3JpZChvLmxpbmVHcmlkKQorICAgICwg
dGFiU2l6ZShvLnRhYlNpemUpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAsIHRl
eHRTaXplQWRqdXN0KG8udGV4dFNpemVBZGp1c3QpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvbihvLm1faW1hZ2VSZXNvbHV0
aW9uKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uKG8uaW1hZ2VSZXNvbHV0aW9uKQogI2VuZGlmCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdodENvbG9yKG8udGFwSGln
aGxpZ2h0Q29sb3IpCkBAIC0yNTAsMTEgKzI1MCwxMSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QK
ICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSh0ZXh0U2hhZG93LCBvLnRleHRTaGFk
b3cpCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJz
b3JEYXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKLSAgICAgICAgJiYgbV9lZmZl
Y3RpdmVab29tID09IG8ubV9lZmZlY3RpdmVab29tCisgICAgICAgICYmIGVmZmVjdGl2ZVpvb20g
PT0gby5lZmZlY3RpdmVab29tCiAgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93cwogICAgICAg
ICAmJiBvcnBoYW5zID09IG8ub3JwaGFucwotICAgICAgICAmJiBtX2hhc0F1dG9XaWRvd3MgPT0g
by5tX2hhc0F1dG9XaWRvd3MKLSAgICAgICAgJiYgbV9oYXNBdXRvT3JwaGFucyA9PSBvLm1faGFz
QXV0b09ycGhhbnMKKyAgICAgICAgJiYgaGFzQXV0b1dpZG93cyA9PSBvLmhhc0F1dG9XaWRvd3MK
KyAgICAgICAgJiYgaGFzQXV0b09ycGhhbnMgPT0gby5oYXNBdXRvT3JwaGFucwogICAgICAgICAm
JiB0ZXh0U2VjdXJpdHkgPT0gby50ZXh0U2VjdXJpdHkKICAgICAgICAgJiYgdXNlck1vZGlmeSA9
PSBvLnVzZXJNb2RpZnkKICAgICAgICAgJiYgd29yZEJyZWFrID09IG8ud29yZEJyZWFrCkBAIC0y
NzYsNDQgKzI3Niw0NCBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgdGV4dEVt
cGhhc2lzRmlsbCA9PSBvLnRleHRFbXBoYXNpc0ZpbGwKICAgICAgICAgJiYgdGV4dEVtcGhhc2lz
TWFyayA9PSBvLnRleHRFbXBoYXNpc01hcmsKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzUG9zaXRp
b24gPT0gby50ZXh0RW1waGFzaXNQb3NpdGlvbgotICAgICAgICAmJiBtX3RleHRPcmllbnRhdGlv
biA9PSBvLm1fdGV4dE9yaWVudGF0aW9uCisgICAgICAgICYmIHRleHRPcmllbnRhdGlvbiA9PSBv
LnRleHRPcmllbnRhdGlvbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAgICYmIG1fdGV4
dEluZGVudExpbmUgPT0gby5tX3RleHRJbmRlbnRMaW5lCi0gICAgICAgICYmIG1fdGV4dEluZGVu
dFR5cGUgPT0gby5tX3RleHRJbmRlbnRUeXBlCisgICAgICAgICYmIHRleHRJbmRlbnRMaW5lID09
IG8udGV4dEluZGVudExpbmUKKyAgICAgICAgJiYgdGV4dEluZGVudFR5cGUgPT0gby50ZXh0SW5k
ZW50VHlwZQogI2VuZGlmCi0gICAgICAgICYmIG1fbGluZUJveENvbnRhaW4gPT0gby5tX2xpbmVC
b3hDb250YWluCisgICAgICAgICYmIGxpbmVCb3hDb250YWluID09IG8ubGluZUJveENvbnRhaW4K
ICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICYmIHRvdWNoQ2FsbG91dEVuYWJsZWQgPT0gby50
b3VjaENhbGxvdXRFbmFibGVkCiAjZW5kaWYKICAgICAgICAgJiYgaHlwaGVuYXRpb25TdHJpbmcg
PT0gby5oeXBoZW5hdGlvblN0cmluZwogICAgICAgICAmJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJr
ID09IG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFyawogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1
YWxEYXRhKHF1b3Rlcywgby5xdW90ZXMpCi0gICAgICAgICYmIG1fdGFiU2l6ZSA9PSBvLm1fdGFi
U2l6ZQotICAgICAgICAmJiBtX2xpbmVHcmlkID09IG8ubV9saW5lR3JpZAorICAgICAgICAmJiB0
YWJTaXplID09IG8udGFiU2l6ZQorICAgICAgICAmJiBsaW5lR3JpZCA9PSBvLmxpbmVHcmlkCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgJiYgbV9pbWFnZU9yaWVu
dGF0aW9uID09IG8ubV9pbWFnZU9yaWVudGF0aW9uCisgICAgICAgICYmIGltYWdlT3JpZW50YXRp
b24gPT0gby5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKLSAgICAgICAgJiYgbV9pbWFnZVJlbmRl
cmluZyA9PSBvLm1faW1hZ2VSZW5kZXJpbmcKKyAgICAgICAgJiYgaW1hZ2VSZW5kZXJpbmcgPT0g
by5pbWFnZVJlbmRlcmluZwogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAg
ICAgJiYgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5tX2ltYWdlUmVzb2x1dGlvblNvdXJj
ZQotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1dGlvblNuYXAgPT0gby5tX2ltYWdlUmVzb2x1dGlv
blNuYXAKLSAgICAgICAgJiYgbV9pbWFnZVJlc29sdXRpb24gPT0gby5tX2ltYWdlUmVzb2x1dGlv
bgorICAgICAgICAmJiBpbWFnZVJlc29sdXRpb25Tb3VyY2UgPT0gby5pbWFnZVJlc29sdXRpb25T
b3VyY2UKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uU25hcCA9PSBvLmltYWdlUmVzb2x1dGlv
blNuYXAKKyAgICAgICAgJiYgaW1hZ2VSZXNvbHV0aW9uID09IG8uaW1hZ2VSZXNvbHV0aW9uCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAmJiBtX3RleHRBbGlnbkxhc3Qg
PT0gby5tX3RleHRBbGlnbkxhc3QKLSAgICAgICAgJiYgbV90ZXh0SnVzdGlmeSA9PSBvLm1fdGV4
dEp1c3RpZnkKKyAgICAgICAgJiYgdGV4dEFsaWduTGFzdCA9PSBvLnRleHRBbGlnbkxhc3QKKyAg
ICAgICAgJiYgdGV4dEp1c3RpZnkgPT0gby50ZXh0SnVzdGlmeQogI2VuZGlmIC8vIENTUzNfVEVY
VAotICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU2tpcCA9PSBvLm1fdGV4dERlY29yYXRpb25T
a2lwCi0gICAgICAgICYmIG1fdGV4dFVuZGVybGluZVBvc2l0aW9uID09IG8ubV90ZXh0VW5kZXJs
aW5lUG9zaXRpb24KLSAgICAgICAgJiYgbV9ydWJ5UG9zaXRpb24gPT0gby5tX3J1YnlQb3NpdGlv
bgotICAgICAgICAmJiBtX3RleHRab29tID09IG8ubV90ZXh0Wm9vbQotICAgICAgICAmJiBtX2xp
bmVTbmFwID09IG8ubV9saW5lU25hcAotICAgICAgICAmJiBtX2xpbmVBbGlnbiA9PSBvLm1fbGlu
ZUFsaWduCisgICAgICAgICYmIHRleHREZWNvcmF0aW9uU2tpcCA9PSBvLnRleHREZWNvcmF0aW9u
U2tpcAorICAgICAgICAmJiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24gPT0gby50ZXh0VW5kZXJsaW5l
UG9zaXRpb24KKyAgICAgICAgJiYgcnVieVBvc2l0aW9uID09IG8ucnVieVBvc2l0aW9uCisgICAg
ICAgICYmIHRleHRab29tID09IG8udGV4dFpvb20KKyAgICAgICAgJiYgbGluZVNuYXAgPT0gby5s
aW5lU25hcAorICAgICAgICAmJiBsaW5lQWxpZ24gPT0gby5saW5lQWxpZ24KICNpZiBFTkFCTEUo
Q1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgICYmIHRyYWlsaW5nV29yZCA9PSBvLnRyYWlsaW5n
V29yZAogI2VuZGlmCi0gICAgICAgICYmIG1faGFuZ2luZ1B1bmN0dWF0aW9uID09IG8ubV9oYW5n
aW5nUHVuY3R1YXRpb24KLSAgICAgICAgJiYgbV9jdXN0b21Qcm9wZXJ0aWVzID09IG8ubV9jdXN0
b21Qcm9wZXJ0aWVzCisgICAgICAgICYmIGhhbmdpbmdQdW5jdHVhdGlvbiA9PSBvLmhhbmdpbmdQ
dW5jdHVhdGlvbgorICAgICAgICAmJiBjdXN0b21Qcm9wZXJ0aWVzID09IG8uY3VzdG9tUHJvcGVy
dGllcwogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGxpc3RTdHlsZUltYWdlLCBv
Lmxpc3RTdHlsZUltYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggMTJiN2UzOWEzYWE5YzRl
YjdmODgyYmZhYzYwOWM3ZjI5MjA5ODdkNy4uMmZmMjdjOTg1MGYzYTA2MDgwM2M0YTA0NTRiNjg3
YTc1ODUzY2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC03MiwxNyArNzIsMTcgQEAgcHVibGljOgog
ICAgIAogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0aCBpbmRl
bnQ7Ci0gICAgZmxvYXQgbV9lZmZlY3RpdmVab29tOworICAgIGZsb2F0IGVmZmVjdGl2ZVpvb207
CiAgICAgCiAgICAgTGVuZ3RoIHdvcmRTcGFjaW5nOwogCi0gICAgRGF0YVJlZjxTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworICAgIERhdGFSZWY8U3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGE+IGN1c3RvbVByb3BlcnRpZXM7CiAKICAgICAvLyBQYWdlZCBtZWRpYSBw
cm9wZXJ0aWVzLgogICAgIHNob3J0IHdpZG93czsKICAgICBzaG9ydCBvcnBoYW5zOwotICAgIHVu
c2lnbmVkIG1faGFzQXV0b1dpZG93cyA6IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNBdXRvT3JwaGFu
cyA6IDE7CisgICAgdW5zaWduZWQgaGFzQXV0b1dpZG93cyA6IDE7CisgICAgdW5zaWduZWQgaGFz
QXV0b09ycGhhbnMgOiAxOwogICAgIAogICAgIHVuc2lnbmVkIHRleHRTZWN1cml0eSA6IDI7IC8v
IEVUZXh0U2VjdXJpdHkKICAgICB1bnNpZ25lZCB1c2VyTW9kaWZ5IDogMjsgLy8gRVVzZXJNb2Rp
ZnkgKGVkaXRpbmcpCkBAIC05NywzNCArOTcsMzQgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHRl
eHRFbXBoYXNpc0ZpbGwgOiAxOyAvLyBUZXh0RW1waGFzaXNGaWxsCiAgICAgdW5zaWduZWQgdGV4
dEVtcGhhc2lzTWFyayA6IDM7IC8vIFRleHRFbXBoYXNpc01hcmsKICAgICB1bnNpZ25lZCB0ZXh0
RW1waGFzaXNQb3NpdGlvbiA6IDQ7IC8vIFRleHRFbXBoYXNpc1Bvc2l0aW9uCi0gICAgdW5zaWdu
ZWQgbV90ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24KKyAgICB1bnNpZ25l
ZCB0ZXh0T3JpZW50YXRpb24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24KICNpZiBFTkFCTEUoQ1NT
M19URVhUKQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudExpbmUgOiAxOyAvLyBUZXh0SW5kZW50
TGluZQotICAgIHVuc2lnbmVkIG1fdGV4dEluZGVudFR5cGUgOiAxOyAvLyBUZXh0SW5kZW50VHlw
ZQorICAgIHVuc2lnbmVkIHRleHRJbmRlbnRMaW5lIDogMTsgLy8gVGV4dEluZGVudExpbmUKKyAg
ICB1bnNpZ25lZCB0ZXh0SW5kZW50VHlwZSA6IDE7IC8vIFRleHRJbmRlbnRUeXBlCiAjZW5kaWYK
LSAgICB1bnNpZ25lZCBtX2xpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29udGFpbgorICAg
IHVuc2lnbmVkIGxpbmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29udGFpbgogICAgIC8vIENT
UyBJbWFnZSBWYWx1ZXMgTGV2ZWwgMwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04p
Ci0gICAgdW5zaWduZWQgbV9pbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlv
bkVudW0KKyAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRh
dGlvbkVudW0KICNlbmRpZgotICAgIHVuc2lnbmVkIG1faW1hZ2VSZW5kZXJpbmcgOiAzOyAvLyBF
SW1hZ2VSZW5kZXJpbmcKLSAgICB1bnNpZ25lZCBtX2xpbmVTbmFwIDogMjsgLy8gTGluZVNuYXAK
LSAgICB1bnNpZ25lZCBtX2xpbmVBbGlnbiA6IDE7IC8vIExpbmVBbGlnbgorICAgIHVuc2lnbmVk
IGltYWdlUmVuZGVyaW5nIDogMzsgLy8gRUltYWdlUmVuZGVyaW5nCisgICAgdW5zaWduZWQgbGlu
ZVNuYXAgOiAyOyAvLyBMaW5lU25hcAorICAgIHVuc2lnbmVkIGxpbmVBbGlnbiA6IDE7IC8vIExp
bmVBbGlnbgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAg
dW5zaWduZWQgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzogMTsKICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICB1bnNpZ25lZCBtX2ltYWdlUmVzb2x1dGlvblNv
dXJjZSA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgIHVuc2lnbmVkIG1faW1hZ2VS
ZXNvbHV0aW9uU25hcCA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNuYXAKKyAgICB1bnNpZ25lZCBp
bWFnZVJlc29sdXRpb25Tb3VyY2UgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICB1
bnNpZ25lZCBpbWFnZVJlc29sdXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU25hcAog
I2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICB1bnNpZ25lZCBtX3RleHRBbGlnbkxh
c3QgOiAzOyAvLyBUZXh0QWxpZ25MYXN0Ci0gICAgdW5zaWduZWQgbV90ZXh0SnVzdGlmeSA6IDI7
IC8vIFRleHRKdXN0aWZ5Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgdW5zaWduZWQgbV90ZXh0
RGVjb3JhdGlvblNraXAgOiA1OyAvLyBUZXh0RGVjb3JhdGlvblNraXAKLSAgICB1bnNpZ25lZCBt
X3RleHRVbmRlcmxpbmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3NpdGlvbgotICAg
IHVuc2lnbmVkIG1fcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCi0gICAgdW5zaWdu
ZWQgbV90ZXh0Wm9vbTogMTsgLy8gVGV4dFpvb20KKyAgICB1bnNpZ25lZCB0ZXh0QWxpZ25MYXN0
IDogMzsgLy8gVGV4dEFsaWduTGFzdAorICAgIHVuc2lnbmVkIHRleHRKdXN0aWZ5IDogMjsgLy8g
VGV4dEp1c3RpZnkKKyNlbmRpZgorICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uU2tpcCA6IDU7
IC8vIFRleHREZWNvcmF0aW9uU2tpcAorICAgIHVuc2lnbmVkIHRleHRVbmRlcmxpbmVQb3NpdGlv
biA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3NpdGlvbgorICAgIHVuc2lnbmVkIHJ1YnlQb3NpdGlv
biA6IDI7IC8vIFJ1YnlQb3NpdGlvbgorICAgIHVuc2lnbmVkIHRleHRab29tOiAxOyAvLyBUZXh0
Wm9vbQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVuc2lnbmVkIHRvdWNoQ2FsbG91dEVuYWJs
ZWQgOiAxOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0cmFpbGlu
Z1dvcmQgOiAxOwogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX2hhbmdpbmdQdW5jdHVhdGlvbiA6
IDQ7CisgICAgdW5zaWduZWQgaGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsKIAogICAgIEF0b21pY1N0
cmluZyBoeXBoZW5hdGlvblN0cmluZzsKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVmb3Jl
OwpAQCAtMTQ0LDE1ICsxNDQsMTUgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZyB0ZXh0RW1w
aGFzaXNDdXN0b21NYXJrOwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CiAKLSAgICBB
dG9taWNTdHJpbmcgbV9saW5lR3JpZDsKLSAgICB1bnNpZ25lZCBtX3RhYlNpemU7CisgICAgQXRv
bWljU3RyaW5nIGxpbmVHcmlkOworICAgIHVuc2lnbmVkIHRhYlNpemU7CiAKICNpZiBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIGZsb2F0IG1f
aW1hZ2VSZXNvbHV0aW9uOworICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbjsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA0YTdm
N2U2ODcwMTk4Y2MwOWYyNDZiMDZkNzRjMTk5YmM4MTUyNzg3Li42NTE0MjAwOTlmOTc4MDA1MmFi
ZTBlNDI2MTRiZDBkNDM3YTRmZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTM3LDE3NCArMzcsMTc0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQotICAgIDogbV9vcGFj
aXR5KFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpKQotICAgICwgbV9hc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKQot
ICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJh
dGlvTnVtZXJhdG9yKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZlKFJlbmRlclN0eWxlOjppbml0aWFs
UGVyc3BlY3RpdmUoKSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5YKFJlbmRlclN0eWxlOjpp
bml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQorICAgIDogb3BhY2l0eShS
ZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHkoKSkKKyAgICAsIGFzcGVjdFJhdGlvRGVub21pbmF0
b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpCisgICAgLCBh
c3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJh
dG9yKCkpCisgICAgLCBwZXJzcGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZl
KCkpCisgICAgLCBwZXJzcGVjdGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVj
dGl2ZU9yaWdpblgoKSkKKyAgICAsIHBlcnNwZWN0aXZlT3JpZ2luWShSZW5kZXJTdHlsZTo6aW5p
dGlhbFBlcnNwZWN0aXZlT3JpZ2luWSgpKQogICAgICwgbGluZUNsYW1wKFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUNsYW1wKCkpCi0gICAgLCBtX2luaXRpYWxMZXR0ZXIoUmVuZGVyU3R5bGU6Omlu
aXRpYWxJbml0aWFsTGV0dGVyKCkpCi0gICAgLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveChTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9mbGV4aWJsZUJv
eChTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX21hcnF1ZWUoU3R5bGVN
YXJxdWVlRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX211bHRpQ29sKFN0eWxlTXVsdGlDb2xEYXRh
OjpjcmVhdGUoKSkKLSAgICAsIG1fdHJhbnNmb3JtKFN0eWxlVHJhbnNmb3JtRGF0YTo6Y3JlYXRl
KCkpCi0gICAgLCBtX2ZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNyZWF0ZSgpKQorICAgICwgaW5p
dGlhbExldHRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0ZXIoKSkKKyAgICAsIGRl
cHJlY2F0ZWRGbGV4aWJsZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0
ZSgpKQorICAgICwgZmxleGlibGVCb3goU3R5bGVGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQor
ICAgICwgbWFycXVlZShTdHlsZU1hcnF1ZWVEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG11bHRpQ29s
KFN0eWxlTXVsdGlDb2xEYXRhOjpjcmVhdGUoKSkKKyAgICAsIHRyYW5zZm9ybShTdHlsZVRyYW5z
Zm9ybURhdGE6OmNyZWF0ZSgpKQorICAgICwgZmlsdGVyKFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRl
KCkpCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAsIG1fYmFja2Ryb3BGaWx0ZXIo
U3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGJhY2tkcm9wRmlsdGVyKFN0eWxlRmls
dGVyRGF0YTo6Y3JlYXRlKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQot
ICAgICwgbV9ncmlkKFN0eWxlR3JpZERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9ncmlkSXRlbShT
dHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBncmlkKFN0eWxlR3JpZERhdGE6OmNy
ZWF0ZSgpKQorICAgICwgZ3JpZEl0ZW0oU3R5bGVHcmlkSXRlbURhdGE6OmNyZWF0ZSgpKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xsU25hcFBvcnQo
U3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCi0gICAgLCBtX3Njcm9sbFNuYXBBcmVhKFN0
eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgpKQorICAgICwgc2Nyb2xsU25hcFBvcnQoU3R5bGVT
Y3JvbGxTbmFwUG9ydDo6Y3JlYXRlKCkpCisgICAgLCBzY3JvbGxTbmFwQXJlYShTdHlsZVNjcm9s
bFNuYXBBcmVhOjpjcmVhdGUoKSkKICNlbmRpZgotICAgICwgbV93aWxsQ2hhbmdlKFJlbmRlclN0
eWxlOjppbml0aWFsV2lsbENoYW5nZSgpKQotICAgICwgbV9tYXNrKEZpbGxMYXllcihNYXNrRmls
bExheWVyKSkKLSAgICAsIG1fb2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxPYmpl
Y3RQb3NpdGlvbigpKQotICAgICwgbV9zaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxT
aGFwZU91dHNpZGUoKSkKLSAgICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxT
aGFwZU1hcmdpbigpKQotICAgICwgbV9zaGFwZUltYWdlVGhyZXNob2xkKFJlbmRlclN0eWxlOjpp
bml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZCgpKQotICAgICwgbV9jbGlwUGF0aChSZW5kZXJTdHls
ZTo6aW5pdGlhbENsaXBQYXRoKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9y
KFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCi0gICAgLCBtX29yZGVyKFJl
bmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKLSAgICAsIG1fZmxvd1RocmVhZChSZW5kZXJTdHls
ZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKLSAgICAsIG1fcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxl
Ojppbml0aWFsUmVnaW9uVGhyZWFkKCkpCi0gICAgLCBtX2FsaWduQ29udGVudChSZW5kZXJTdHls
ZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25JdGVtcyhSZW5kZXJT
dHlsZTo6aW5pdGlhbERlZmF1bHRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25TZWxmKFJlbmRl
clN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5Q29udGVudChS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1fanVzdGlmeUl0
ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5
U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKKyAgICAsIHdpbGxDaGFu
Z2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hhbmdlKCkpCisgICAgLCBtYXNrKEZpbGxMYXll
cihNYXNrRmlsbExheWVyKSkKKyAgICAsIG9iamVjdFBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0
aWFsT2JqZWN0UG9zaXRpb24oKSkKKyAgICAsIHNoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5p
dGlhbFNoYXBlT3V0c2lkZSgpKQorICAgICwgc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6OmluaXRp
YWxTaGFwZU1hcmdpbigpKQorICAgICwgc2hhcGVJbWFnZVRocmVzaG9sZChSZW5kZXJTdHlsZTo6
aW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSkKKyAgICAsIGNsaXBQYXRoKFJlbmRlclN0eWxl
Ojppbml0aWFsQ2xpcFBhdGgoKSkKKyAgICAsIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCisgICAgLCBvcmRlcihSZW5kZXJT
dHlsZTo6aW5pdGlhbE9yZGVyKCkpCisgICAgLCBmbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0
aWFsRmxvd1RocmVhZCgpKQorICAgICwgcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFs
UmVnaW9uVGhyZWFkKCkpCisgICAgLCBhbGlnbkNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b250ZW50QWxpZ25tZW50KCkpCisgICAgLCBhbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFs
RGVmYXVsdEFsaWdubWVudCgpKQorICAgICwgYWxpZ25TZWxmKFJlbmRlclN0eWxlOjppbml0aWFs
U2VsZkFsaWdubWVudCgpKQorICAgICwganVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRp
YWxDb250ZW50QWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5SXRlbXMoUmVuZGVyU3R5bGU6Omlu
aXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCBqdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5p
dGlhbFNlbGZBbGlnbm1lbnQoKSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgbV90
b3VjaEFjdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUb3Vj
aEFjdGlvbigpKSkKKyAgICAsIHRvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQogI2VuZGlmCi0gICAgLCBtX3JlZ2lvbkZy
YWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKLSAgICAsIG1fcGFn
ZVNpemVUeXBlKFBBR0VfU0laRV9BVVRPKQotICAgICwgbV90cmFuc2Zvcm1TdHlsZTNEKFJlbmRl
clN0eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpKQotICAgICwgbV9iYWNrZmFjZVZpc2li
aWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkKKyAgICAsIHJl
Z2lvbkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKKyAgICAs
IHBhZ2VTaXplVHlwZShQQUdFX1NJWkVfQVVUTykKKyAgICAsIHRyYW5zZm9ybVN0eWxlM0QoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkpCisgICAgLCBiYWNrZmFjZVZpc2li
aWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkKICAgICAsIHVz
ZXJEcmFnKFJlbmRlclN0eWxlOjppbml0aWFsVXNlckRyYWcoKSkKICAgICAsIHRleHRPdmVyZmxv
dyhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRPdmVyZmxvdygpKQogICAgICwgbWFyZ2luQmVmb3Jl
Q29sbGFwc2UoTUNPTExBUFNFKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShNQ09MTEFQU0Up
Ci0gICAgLCBtX2FwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlKCkpCi0g
ICAgLCBtX2JvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgpKQotICAgICwg
bV90ZXh0Q29tYmluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRDb21iaW5lKCkpCi0gICAgLCBt
X3RleHREZWNvcmF0aW9uU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0
eWxlKCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVj
dFJhdGlvVHlwZSgpKQorICAgICwgYXBwZWFyYW5jZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVh
cmFuY2UoKSkKKyAgICAsIGJvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgp
KQorICAgICwgdGV4dENvbWJpbmUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgpKQor
ICAgICwgdGV4dERlY29yYXRpb25TdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUoKSkKKyAgICAsIGFzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFz
cGVjdFJhdGlvVHlwZSgpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2Vm
ZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQotICAgICwg
bV9pc29sYXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJc29sYXRpb24oKSkKKyAgICAsIGVmZmVj
dGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQorICAgICwgaXNv
bGF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSXNvbGF0aW9uKCkpCiAjZW5kaWYKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQotICAgICwgbV9hcHBsZVBheUJ1dHRvblN0eWxlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9uU3R5bGUoKSkpCi0gICAg
LCBtX2FwcGxlUGF5QnV0dG9uVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6
OmluaXRpYWxBcHBsZVBheUJ1dHRvblR5cGUoKSkpCisgICAgLCBhcHBsZVBheUJ1dHRvblN0eWxl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9u
U3R5bGUoKSkpCisgICAgLCBhcHBsZVBheUJ1dHRvblR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFJlbmRlclN0eWxlOjppbml0aWFsQXBwbGVQYXlCdXR0b25UeXBlKCkpKQogI2VuZGlmCi0gICAg
LCBtX29iamVjdEZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdEZpdCgpKQotICAgICwgbV9i
cmVha0JlZm9yZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFrQmV0d2VlbigpKQotICAgICwgbV9i
cmVha0FmdGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCi0gICAgLCBtX2Jy
ZWFrSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtJbnNpZGUoKSkKLSAgICAsIG1fcmVz
aXplKFJlbmRlclN0eWxlOjppbml0aWFsUmVzaXplKCkpCi0gICAgLCBtX2hhc0F0dHJDb250ZW50
KGZhbHNlKQotICAgICwgbV9pc1BsYWNlaG9sZGVyU3R5bGUoZmFsc2UpCisgICAgLCBvYmplY3RG
aXQoUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RGaXQoKSkKKyAgICAsIGJyZWFrQmVmb3JlKFJl
bmRlclN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0FmdGVyKFJlbmRl
clN0eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0luc2lkZShSZW5kZXJT
dHlsZTo6aW5pdGlhbEJyZWFrSW5zaWRlKCkpCisgICAgLCByZXNpemUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxSZXNpemUoKSkKKyAgICAsIGhhc0F0dHJDb250ZW50KGZhbHNlKQorICAgICwgaXNQbGFj
ZWhvbGRlclN0eWxlKGZhbHNlKQogewotICAgIG1fbWFza0JveEltYWdlLnNldE1hc2tEZWZhdWx0
cygpOworICAgIG1hc2tCb3hJbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKIH0KIAogaW5saW5lIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YT4oKQotICAgICwgbV9vcGFjaXR5KG8ubV9vcGFjaXR5KQotICAgICwg
bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8ubV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKQotICAg
ICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihvLm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IpCi0gICAg
LCBtX3BlcnNwZWN0aXZlKG8ubV9wZXJzcGVjdGl2ZSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmln
aW5YKG8ubV9wZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWShv
Lm1fcGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICwgb3BhY2l0eShvLm9wYWNpdHkpCisgICAgLCBh
c3BlY3RSYXRpb0Rlbm9taW5hdG9yKG8uYXNwZWN0UmF0aW9EZW5vbWluYXRvcikKKyAgICAsIGFz
cGVjdFJhdGlvTnVtZXJhdG9yKG8uYXNwZWN0UmF0aW9OdW1lcmF0b3IpCisgICAgLCBwZXJzcGVj
dGl2ZShvLnBlcnNwZWN0aXZlKQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5YKG8ucGVyc3BlY3Rp
dmVPcmlnaW5YKQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5ZKG8ucGVyc3BlY3RpdmVPcmlnaW5Z
KQogICAgICwgbGluZUNsYW1wKG8ubGluZUNsYW1wKQotICAgICwgbV9pbml0aWFsTGV0dGVyKG8u
bV9pbml0aWFsTGV0dGVyKQotICAgICwgbV9kZXByZWNhdGVkRmxleGlibGVCb3goby5tX2RlcHJl
Y2F0ZWRGbGV4aWJsZUJveCkKLSAgICAsIG1fZmxleGlibGVCb3goby5tX2ZsZXhpYmxlQm94KQot
ICAgICwgbV9tYXJxdWVlKG8ubV9tYXJxdWVlKQotICAgICwgbV9tdWx0aUNvbChvLm1fbXVsdGlD
b2wpCi0gICAgLCBtX3RyYW5zZm9ybShvLm1fdHJhbnNmb3JtKQotICAgICwgbV9maWx0ZXIoby5t
X2ZpbHRlcikKKyAgICAsIGluaXRpYWxMZXR0ZXIoby5pbml0aWFsTGV0dGVyKQorICAgICwgZGVw
cmVjYXRlZEZsZXhpYmxlQm94KG8uZGVwcmVjYXRlZEZsZXhpYmxlQm94KQorICAgICwgZmxleGli
bGVCb3goby5mbGV4aWJsZUJveCkKKyAgICAsIG1hcnF1ZWUoby5tYXJxdWVlKQorICAgICwgbXVs
dGlDb2woby5tdWx0aUNvbCkKKyAgICAsIHRyYW5zZm9ybShvLnRyYW5zZm9ybSkKKyAgICAsIGZp
bHRlcihvLmZpbHRlcikKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgICwgbV9iYWNr
ZHJvcEZpbHRlcihvLm1fYmFja2Ryb3BGaWx0ZXIpCisgICAgLCBiYWNrZHJvcEZpbHRlcihvLmJh
Y2tkcm9wRmlsdGVyKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAs
IG1fZ3JpZChvLm1fZ3JpZCkKLSAgICAsIG1fZ3JpZEl0ZW0oby5tX2dyaWRJdGVtKQorICAgICwg
Z3JpZChvLmdyaWQpCisgICAgLCBncmlkSXRlbShvLmdyaWRJdGVtKQogI2VuZGlmCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xsU25hcFBvcnQoby5tX3Njcm9sbFNu
YXBQb3J0KQotICAgICwgbV9zY3JvbGxTbmFwQXJlYShvLm1fc2Nyb2xsU25hcEFyZWEpCisgICAg
LCBzY3JvbGxTbmFwUG9ydChvLnNjcm9sbFNuYXBQb3J0KQorICAgICwgc2Nyb2xsU25hcEFyZWEo
by5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgotICAgICwgbV9jb250ZW50KG8ubV9jb250ZW50ID8g
by5tX2NvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgbV9jb3VudGVyRGlyZWN0aXZl
cyhvLm1fY291bnRlckRpcmVjdGl2ZXMgPyBjbG9uZSgqby5tX2NvdW50ZXJEaXJlY3RpdmVzKSA6
IG51bGxwdHIpCi0gICAgLCBtX2FsdFRleHQoby5tX2FsdFRleHQpCi0gICAgLCBtX2JveFNoYWRv
dyhvLm1fYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5tX2JveFNo
YWRvdykgOiBudWxscHRyKQotICAgICwgbV93aWxsQ2hhbmdlKG8ubV93aWxsQ2hhbmdlKQotICAg
ICwgbV9ib3hSZWZsZWN0KG8ubV9ib3hSZWZsZWN0KQotICAgICwgbV9hbmltYXRpb25zKG8ubV9h
bmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5tX2FuaW1hdGlv
bnMpIDogbnVsbHB0cikKLSAgICAsIG1fdHJhbnNpdGlvbnMoby5tX3RyYW5zaXRpb25zID8gc3Rk
OjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5tX3RyYW5zaXRpb25zKSA6IG51bGxwdHIp
Ci0gICAgLCBtX21hc2soby5tX21hc2spCi0gICAgLCBtX21hc2tCb3hJbWFnZShvLm1fbWFza0Jv
eEltYWdlKQotICAgICwgbV9wYWdlU2l6ZShvLm1fcGFnZVNpemUpCi0gICAgLCBtX29iamVjdFBv
c2l0aW9uKG8ubV9vYmplY3RQb3NpdGlvbikKLSAgICAsIG1fc2hhcGVPdXRzaWRlKG8ubV9zaGFw
ZU91dHNpZGUpCi0gICAgLCBtX3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1hcmdpbikKLSAgICAsIG1f
c2hhcGVJbWFnZVRocmVzaG9sZChvLm1fc2hhcGVJbWFnZVRocmVzaG9sZCkKLSAgICAsIG1fY2xp
cFBhdGgoby5tX2NsaXBQYXRoKQotICAgICwgbV90ZXh0RGVjb3JhdGlvbkNvbG9yKG8ubV90ZXh0
RGVjb3JhdGlvbkNvbG9yKQotICAgICwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3Io
by5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQotICAgICwgbV92
aXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCi0gICAg
LCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV92aXNpdGVkTGlu
a0JvcmRlclJpZ2h0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ioby5t
X3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCi0gICAgLCBtX29yZGVy
KG8ubV9vcmRlcikKLSAgICAsIG1fZmxvd1RocmVhZChvLm1fZmxvd1RocmVhZCkKLSAgICAsIG1f
cmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCi0gICAgLCBtX2FsaWduQ29udGVudChvLm1f
YWxpZ25Db250ZW50KQotICAgICwgbV9hbGlnbkl0ZW1zKG8ubV9hbGlnbkl0ZW1zKQotICAgICwg
bV9hbGlnblNlbGYoby5tX2FsaWduU2VsZikKLSAgICAsIG1fanVzdGlmeUNvbnRlbnQoby5tX2p1
c3RpZnlDb250ZW50KQotICAgICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJdGVtcykKLSAg
ICAsIG1fanVzdGlmeVNlbGYoby5tX2p1c3RpZnlTZWxmKQorICAgICwgY29udGVudChvLmNvbnRl
bnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2
ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IGNsb25lKCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51
bGxwdHIpCisgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKKyAgICAsIGJveFNoYWRvdyhvLmJveFNo
YWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxw
dHIpCisgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKKyAgICAsIGJveFJlZmxlY3Qoby5i
b3hSZWZsZWN0KQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5z
aXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpv
LnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBtYXNrKG8ubWFzaykKKyAgICAsIG1hc2tC
b3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKKyAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCisgICAg
LCBvYmplY3RQb3NpdGlvbihvLm9iamVjdFBvc2l0aW9uKQorICAgICwgc2hhcGVPdXRzaWRlKG8u
c2hhcGVPdXRzaWRlKQorICAgICwgc2hhcGVNYXJnaW4oby5zaGFwZU1hcmdpbikKKyAgICAsIHNo
YXBlSW1hZ2VUaHJlc2hvbGQoby5zaGFwZUltYWdlVGhyZXNob2xkKQorICAgICwgY2xpcFBhdGgo
by5jbGlwUGF0aCkKKyAgICAsIHRleHREZWNvcmF0aW9uQ29sb3Ioby50ZXh0RGVjb3JhdGlvbkNv
bG9yKQorICAgICwgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKG8udmlzaXRlZExpbmtU
ZXh0RGVjb3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby52
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9y
KG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQorICAgICwgdmlzaXRlZExpbmtCb3Jk
ZXJSaWdodENvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQorICAgICwgdmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvcihvLnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCisgICAgLCB2
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
cikKKyAgICAsIG9yZGVyKG8ub3JkZXIpCisgICAgLCBmbG93VGhyZWFkKG8uZmxvd1RocmVhZCkK
KyAgICAsIHJlZ2lvblRocmVhZChvLnJlZ2lvblRocmVhZCkKKyAgICAsIGFsaWduQ29udGVudChv
LmFsaWduQ29udGVudCkKKyAgICAsIGFsaWduSXRlbXMoby5hbGlnbkl0ZW1zKQorICAgICwgYWxp
Z25TZWxmKG8uYWxpZ25TZWxmKQorICAgICwganVzdGlmeUNvbnRlbnQoby5qdXN0aWZ5Q29udGVu
dCkKKyAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKKyAgICAsIGp1c3RpZnlTZWxm
KG8uanVzdGlmeVNlbGYpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIG1fdG91Y2hB
Y3Rpb24oby5tX3RvdWNoQWN0aW9uKQorICAgICwgdG91Y2hBY3Rpb24oby50b3VjaEFjdGlvbikK
ICNlbmRpZgotICAgICwgbV9yZWdpb25GcmFnbWVudChvLm1fcmVnaW9uRnJhZ21lbnQpCi0gICAg
LCBtX3BhZ2VTaXplVHlwZShvLm1fcGFnZVNpemVUeXBlKQotICAgICwgbV90cmFuc2Zvcm1TdHls
ZTNEKG8ubV90cmFuc2Zvcm1TdHlsZTNEKQotICAgICwgbV9iYWNrZmFjZVZpc2liaWxpdHkoby5t
X2JhY2tmYWNlVmlzaWJpbGl0eSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50KG8ucmVnaW9uRnJhZ21l
bnQpCisgICAgLCBwYWdlU2l6ZVR5cGUoby5wYWdlU2l6ZVR5cGUpCisgICAgLCB0cmFuc2Zvcm1T
dHlsZTNEKG8udHJhbnNmb3JtU3R5bGUzRCkKKyAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShvLmJh
Y2tmYWNlVmlzaWJpbGl0eSkKICAgICAsIHVzZXJEcmFnKG8udXNlckRyYWcpCiAgICAgLCB0ZXh0
T3ZlcmZsb3coby50ZXh0T3ZlcmZsb3cpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShvLm1h
cmdpbkJlZm9yZUNvbGxhcHNlKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShvLm1hcmdpbkFm
dGVyQ29sbGFwc2UpCi0gICAgLCBtX2FwcGVhcmFuY2Uoby5tX2FwcGVhcmFuY2UpCi0gICAgLCBt
X2JvcmRlckZpdChvLm1fYm9yZGVyRml0KQotICAgICwgbV90ZXh0Q29tYmluZShvLm1fdGV4dENv
bWJpbmUpCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5bGUoby5tX3RleHREZWNvcmF0aW9uU3R5
bGUpCi0gICAgLCBtX2FzcGVjdFJhdGlvVHlwZShvLm1fYXNwZWN0UmF0aW9UeXBlKQorICAgICwg
YXBwZWFyYW5jZShvLmFwcGVhcmFuY2UpCisgICAgLCBib3JkZXJGaXQoby5ib3JkZXJGaXQpCisg
ICAgLCB0ZXh0Q29tYmluZShvLnRleHRDb21iaW5lKQorICAgICwgdGV4dERlY29yYXRpb25TdHls
ZShvLnRleHREZWNvcmF0aW9uU3R5bGUpCisgICAgLCBhc3BlY3RSYXRpb1R5cGUoby5hc3BlY3RS
YXRpb1R5cGUpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICAsIG1fZWZmZWN0aXZl
QmxlbmRNb2RlKG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUpCi0gICAgLCBtX2lzb2xhdGlvbihvLm1f
aXNvbGF0aW9uKQorICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKG8uZWZmZWN0aXZlQmxlbmRNb2Rl
KQorICAgICwgaXNvbGF0aW9uKG8uaXNvbGF0aW9uKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShvLm1fYXBwbGVQYXlCdXR0b25TdHls
ZSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25UeXBlKG8ubV9hcHBsZVBheUJ1dHRvblR5cGUpCisg
ICAgLCBhcHBsZVBheUJ1dHRvblN0eWxlKG8uYXBwbGVQYXlCdXR0b25TdHlsZSkKKyAgICAsIGFw
cGxlUGF5QnV0dG9uVHlwZShvLmFwcGxlUGF5QnV0dG9uVHlwZSkKICNlbmRpZgotICAgICwgbV9v
YmplY3RGaXQoby5tX29iamVjdEZpdCkKLSAgICAsIG1fYnJlYWtCZWZvcmUoby5tX2JyZWFrQmVm
b3JlKQotICAgICwgbV9icmVha0FmdGVyKG8ubV9icmVha0FmdGVyKQotICAgICwgbV9icmVha0lu
c2lkZShvLm1fYnJlYWtJbnNpZGUpCi0gICAgLCBtX3Jlc2l6ZShvLm1fcmVzaXplKQotICAgICwg
bV9oYXNBdHRyQ29udGVudChvLm1faGFzQXR0ckNvbnRlbnQpCi0gICAgLCBtX2lzUGxhY2Vob2xk
ZXJTdHlsZShvLm1faXNQbGFjZWhvbGRlclN0eWxlKQorICAgICwgb2JqZWN0Rml0KG8ub2JqZWN0
Rml0KQorICAgICwgYnJlYWtCZWZvcmUoby5icmVha0JlZm9yZSkKKyAgICAsIGJyZWFrQWZ0ZXIo
by5icmVha0FmdGVyKQorICAgICwgYnJlYWtJbnNpZGUoby5icmVha0luc2lkZSkKKyAgICAsIHJl
c2l6ZShvLnJlc2l6ZSkKKyAgICAsIGhhc0F0dHJDb250ZW50KG8uaGFzQXR0ckNvbnRlbnQpCisg
ICAgLCBpc1BsYWNlaG9sZGVyU3R5bGUoby5pc1BsYWNlaG9sZGVyU3R5bGUpCiB7CiB9CiAKQEAg
LTIxOSwxMjMgKzIxOSwxMjMgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6flN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoKQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9vcGFjaXR5ID09IG8ubV9vcGFjaXR5Ci0gICAgICAgICYmIG1fYXNwZWN0UmF0
aW9EZW5vbWluYXRvciA9PSBvLm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcgotICAgICAgICAmJiBt
X2FzcGVjdFJhdGlvTnVtZXJhdG9yID09IG8ubV9hc3BlY3RSYXRpb051bWVyYXRvcgotICAgICAg
ICAmJiBtX3BlcnNwZWN0aXZlID09IG8ubV9wZXJzcGVjdGl2ZQotICAgICAgICAmJiBtX3BlcnNw
ZWN0aXZlT3JpZ2luWCA9PSBvLm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICYmIG1fcGVy
c3BlY3RpdmVPcmlnaW5ZID09IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkKKyAgICByZXR1cm4gb3Bh
Y2l0eSA9PSBvLm9wYWNpdHkKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBv
LmFzcGVjdFJhdGlvRGVub21pbmF0b3IKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9OdW1lcmF0b3Ig
PT0gby5hc3BlY3RSYXRpb051bWVyYXRvcgorICAgICAgICAmJiBwZXJzcGVjdGl2ZSA9PSBvLnBl
cnNwZWN0aXZlCisgICAgICAgICYmIHBlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLnBlcnNwZWN0aXZl
T3JpZ2luWAorICAgICAgICAmJiBwZXJzcGVjdGl2ZU9yaWdpblkgPT0gby5wZXJzcGVjdGl2ZU9y
aWdpblkKICAgICAgICAgJiYgbGluZUNsYW1wID09IG8ubGluZUNsYW1wCi0gICAgICAgICYmIG1f
aW5pdGlhbExldHRlciA9PSBvLm1faW5pdGlhbExldHRlcgorICAgICAgICAmJiBpbml0aWFsTGV0
dGVyID09IG8uaW5pdGlhbExldHRlcgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICAgICAgJiYgbV9kYXNoYm9hcmRSZWdpb25zID09IG8ubV9kYXNoYm9hcmRSZWdpb25zCisgICAg
ICAgICYmIGRhc2hib2FyZFJlZ2lvbnMgPT0gby5kYXNoYm9hcmRSZWdpb25zCiAjZW5kaWYKLSAg
ICAgICAgJiYgbV9kZXByZWNhdGVkRmxleGlibGVCb3ggPT0gby5tX2RlcHJlY2F0ZWRGbGV4aWJs
ZUJveAotICAgICAgICAmJiBtX2ZsZXhpYmxlQm94ID09IG8ubV9mbGV4aWJsZUJveAotICAgICAg
ICAmJiBtX21hcnF1ZWUgPT0gby5tX21hcnF1ZWUKLSAgICAgICAgJiYgbV9tdWx0aUNvbCA9PSBv
Lm1fbXVsdGlDb2wKLSAgICAgICAgJiYgbV90cmFuc2Zvcm0gPT0gby5tX3RyYW5zZm9ybQotICAg
ICAgICAmJiBtX2ZpbHRlciA9PSBvLm1fZmlsdGVyCisgICAgICAgICYmIGRlcHJlY2F0ZWRGbGV4
aWJsZUJveCA9PSBvLmRlcHJlY2F0ZWRGbGV4aWJsZUJveAorICAgICAgICAmJiBmbGV4aWJsZUJv
eCA9PSBvLmZsZXhpYmxlQm94CisgICAgICAgICYmIG1hcnF1ZWUgPT0gby5tYXJxdWVlCisgICAg
ICAgICYmIG11bHRpQ29sID09IG8ubXVsdGlDb2wKKyAgICAgICAgJiYgdHJhbnNmb3JtID09IG8u
dHJhbnNmb3JtCisgICAgICAgICYmIGZpbHRlciA9PSBvLmZpbHRlcgogI2lmIEVOQUJMRShGSUxU
RVJTX0xFVkVMXzIpCi0gICAgICAgICYmIG1fYmFja2Ryb3BGaWx0ZXIgPT0gby5tX2JhY2tkcm9w
RmlsdGVyCisgICAgICAgICYmIGJhY2tkcm9wRmlsdGVyID09IG8uYmFja2Ryb3BGaWx0ZXIKICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgICYmIG1fZ3JpZCA9PSBv
Lm1fZ3JpZAotICAgICAgICAmJiBtX2dyaWRJdGVtID09IG8ubV9ncmlkSXRlbQorICAgICAgICAm
JiBncmlkID09IG8uZ3JpZAorICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJdGVtCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICAmJiBtX3Njcm9sbFNuYXBQ
b3J0ID09IG8ubV9zY3JvbGxTbmFwUG9ydAotICAgICAgICAmJiBtX3Njcm9sbFNuYXBBcmVhID09
IG8ubV9zY3JvbGxTbmFwQXJlYQorICAgICAgICAmJiBzY3JvbGxTbmFwUG9ydCA9PSBvLnNjcm9s
bFNuYXBQb3J0CisgICAgICAgICYmIHNjcm9sbFNuYXBBcmVhID09IG8uc2Nyb2xsU25hcEFyZWEK
ICNlbmRpZgogICAgICAgICAmJiBjb250ZW50RGF0YUVxdWl2YWxlbnQobykKLSAgICAgICAgJiYg
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2NvdW50ZXJEaXJlY3RpdmVzLCBvLm1fY291bnRlckRp
cmVjdGl2ZXMpCi0gICAgICAgICYmIG1fYWx0VGV4dCA9PSBvLm1fYWx0VGV4dAotICAgICAgICAm
JiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fYm94U2hhZG93LCBvLm1fYm94U2hhZG93KQotICAg
ICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fd2lsbENoYW5nZSwgby5tX3dpbGxDaGFu
Z2UpCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9ib3hSZWZsZWN0LCBvLm1f
Ym94UmVmbGVjdCkKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2FuaW1hdGlv
bnMsIG8ubV9hbmltYXRpb25zKQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1f
dHJhbnNpdGlvbnMsIG8ubV90cmFuc2l0aW9ucykKLSAgICAgICAgJiYgbV9tYXNrID09IG8ubV9t
YXNrCi0gICAgICAgICYmIG1fbWFza0JveEltYWdlID09IG8ubV9tYXNrQm94SW1hZ2UKLSAgICAg
ICAgJiYgbV9wYWdlU2l6ZSA9PSBvLm1fcGFnZVNpemUKLSAgICAgICAgJiYgbV9vYmplY3RQb3Np
dGlvbiA9PSBvLm1fb2JqZWN0UG9zaXRpb24KLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX3NoYXBlT3V0c2lkZSwgby5tX3NoYXBlT3V0c2lkZSkKLSAgICAgICAgJiYgbV9zaGFw
ZU1hcmdpbiA9PSBvLm1fc2hhcGVNYXJnaW4KLSAgICAgICAgJiYgbV9zaGFwZUltYWdlVGhyZXNo
b2xkID09IG8ubV9zaGFwZUltYWdlVGhyZXNob2xkCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9F
cXVhbERhdGEobV9jbGlwUGF0aCwgby5tX2NsaXBQYXRoKQotICAgICAgICAmJiBtX3RleHREZWNv
cmF0aW9uQ29sb3IgPT0gby5tX3RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAgJiYgbV92aXNp
dGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRp
b25Db2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yID09IG8ubV92
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yID09IG8ubV92aXNpdGVkTGlua091dGxpbmVDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcgot
ICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA9PSBvLm1fdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
ciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IK
LSAgICAgICAgJiYgbV9vcmRlciA9PSBvLm1fb3JkZXIKLSAgICAgICAgJiYgbV9mbG93VGhyZWFk
ID09IG8ubV9mbG93VGhyZWFkCi0gICAgICAgICYmIG1fYWxpZ25Db250ZW50ID09IG8ubV9hbGln
bkNvbnRlbnQKLSAgICAgICAgJiYgbV9hbGlnbkl0ZW1zID09IG8ubV9hbGlnbkl0ZW1zCi0gICAg
ICAgICYmIG1fYWxpZ25TZWxmID09IG8ubV9hbGlnblNlbGYKLSAgICAgICAgJiYgbV9qdXN0aWZ5
Q29udGVudCA9PSBvLm1fanVzdGlmeUNvbnRlbnQKLSAgICAgICAgJiYgbV9qdXN0aWZ5SXRlbXMg
PT0gby5tX2p1c3RpZnlJdGVtcwotICAgICAgICAmJiBtX2p1c3RpZnlTZWxmID09IG8ubV9qdXN0
aWZ5U2VsZgotICAgICAgICAmJiBtX3JlZ2lvblRocmVhZCA9PSBvLm1fcmVnaW9uVGhyZWFkCi0g
ICAgICAgICYmIG1fcmVnaW9uRnJhZ21lbnQgPT0gby5tX3JlZ2lvbkZyYWdtZW50Ci0gICAgICAg
ICYmIG1fcGFnZVNpemVUeXBlID09IG8ubV9wYWdlU2l6ZVR5cGUKLSAgICAgICAgJiYgbV90cmFu
c2Zvcm1TdHlsZTNEID09IG8ubV90cmFuc2Zvcm1TdHlsZTNECi0gICAgICAgICYmIG1fYmFja2Zh
Y2VWaXNpYmlsaXR5ID09IG8ubV9iYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAgJiYgYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShjb3VudGVyRGlyZWN0aXZlcywgby5jb3VudGVyRGlyZWN0aXZlcykK
KyAgICAgICAgJiYgYWx0VGV4dCA9PSBvLmFsdFRleHQKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShib3hTaGFkb3csIG8uYm94U2hhZG93KQorICAgICAgICAmJiBhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKHdpbGxDaGFuZ2UsIG8ud2lsbENoYW5nZSkKKyAgICAgICAgJiYgYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShib3hSZWZsZWN0LCBvLmJveFJlZmxlY3QpCisgICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEoYW5pbWF0aW9ucywgby5hbmltYXRpb25zKQorICAgICAgICAm
JiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHRyYW5zaXRpb25zLCBvLnRyYW5zaXRpb25zKQorICAg
ICAgICAmJiBtYXNrID09IG8ubWFzaworICAgICAgICAmJiBtYXNrQm94SW1hZ2UgPT0gby5tYXNr
Qm94SW1hZ2UKKyAgICAgICAgJiYgcGFnZVNpemUgPT0gby5wYWdlU2l6ZQorICAgICAgICAmJiBv
YmplY3RQb3NpdGlvbiA9PSBvLm9iamVjdFBvc2l0aW9uCisgICAgICAgICYmIGFyZVBvaW50aW5n
VG9FcXVhbERhdGEoc2hhcGVPdXRzaWRlLCBvLnNoYXBlT3V0c2lkZSkKKyAgICAgICAgJiYgc2hh
cGVNYXJnaW4gPT0gby5zaGFwZU1hcmdpbgorICAgICAgICAmJiBzaGFwZUltYWdlVGhyZXNob2xk
ID09IG8uc2hhcGVJbWFnZVRocmVzaG9sZAorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKGNsaXBQYXRoLCBvLmNsaXBQYXRoKQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbkNvbG9y
ID09IG8udGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua1RleHREZWNv
cmF0aW9uQ29sb3IgPT0gby52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IKKyAgICAgICAg
JiYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPT0gby52aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua091dGxpbmVDb2xvciA9PSBvLnZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID09IG8u
dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yCisgICAgICAgICYmIHZp
c2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlclRvcENvbG9yCisg
ICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby52aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yCisgICAgICAgICYmIG9yZGVyID09IG8ub3JkZXIKKyAgICAgICAgJiYg
Zmxvd1RocmVhZCA9PSBvLmZsb3dUaHJlYWQKKyAgICAgICAgJiYgYWxpZ25Db250ZW50ID09IG8u
YWxpZ25Db250ZW50CisgICAgICAgICYmIGFsaWduSXRlbXMgPT0gby5hbGlnbkl0ZW1zCisgICAg
ICAgICYmIGFsaWduU2VsZiA9PSBvLmFsaWduU2VsZgorICAgICAgICAmJiBqdXN0aWZ5Q29udGVu
dCA9PSBvLmp1c3RpZnlDb250ZW50CisgICAgICAgICYmIGp1c3RpZnlJdGVtcyA9PSBvLmp1c3Rp
ZnlJdGVtcworICAgICAgICAmJiBqdXN0aWZ5U2VsZiA9PSBvLmp1c3RpZnlTZWxmCisgICAgICAg
ICYmIHJlZ2lvblRocmVhZCA9PSBvLnJlZ2lvblRocmVhZAorICAgICAgICAmJiByZWdpb25GcmFn
bWVudCA9PSBvLnJlZ2lvbkZyYWdtZW50CisgICAgICAgICYmIHBhZ2VTaXplVHlwZSA9PSBvLnBh
Z2VTaXplVHlwZQorICAgICAgICAmJiB0cmFuc2Zvcm1TdHlsZTNEID09IG8udHJhbnNmb3JtU3R5
bGUzRAorICAgICAgICAmJiBiYWNrZmFjZVZpc2liaWxpdHkgPT0gby5iYWNrZmFjZVZpc2liaWxp
dHkKICAgICAgICAgJiYgdXNlckRyYWcgPT0gby51c2VyRHJhZwogICAgICAgICAmJiB0ZXh0T3Zl
cmZsb3cgPT0gby50ZXh0T3ZlcmZsb3cKICAgICAgICAgJiYgbWFyZ2luQmVmb3JlQ29sbGFwc2Ug
PT0gby5tYXJnaW5CZWZvcmVDb2xsYXBzZQogICAgICAgICAmJiBtYXJnaW5BZnRlckNvbGxhcHNl
ID09IG8ubWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAmJiBtX2FwcGVhcmFuY2UgPT0gby5t
X2FwcGVhcmFuY2UKLSAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRlckZpdAotICAg
ICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQotICAgICAgICAmJiBtX3Rl
eHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgJiYg
YXBwZWFyYW5jZSA9PSBvLmFwcGVhcmFuY2UKKyAgICAgICAgJiYgYm9yZGVyRml0ID09IG8uYm9y
ZGVyRml0CisgICAgICAgICYmIHRleHRDb21iaW5lID09IG8udGV4dENvbWJpbmUKKyAgICAgICAg
JiYgdGV4dERlY29yYXRpb25TdHlsZSA9PSBvLnRleHREZWNvcmF0aW9uU3R5bGUKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICAmJiBtX3RvdWNoQWN0aW9uID09IG8ubV90b3VjaEFj
dGlvbgorICAgICAgICAmJiB0b3VjaEFjdGlvbiA9PSBvLnRvdWNoQWN0aW9uCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICAgICAmJiBtX2VmZmVjdGl2ZUJsZW5kTW9k
ZSA9PSBvLm1fZWZmZWN0aXZlQmxlbmRNb2RlCi0gICAgICAgICYmIG1faXNvbGF0aW9uID09IG8u
bV9pc29sYXRpb24KKyAgICAgICAgJiYgZWZmZWN0aXZlQmxlbmRNb2RlID09IG8uZWZmZWN0aXZl
QmxlbmRNb2RlCisgICAgICAgICYmIGlzb2xhdGlvbiA9PSBvLmlzb2xhdGlvbgogI2VuZGlmCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAgICAgJiYgbV9hcHBsZVBheUJ1dHRvblN0eWxlID09
IG8ubV9hcHBsZVBheUJ1dHRvblN0eWxlCi0gICAgICAgICYmIG1fYXBwbGVQYXlCdXR0b25UeXBl
ID09IG8ubV9hcHBsZVBheUJ1dHRvblR5cGUKKyAgICAgICAgJiYgYXBwbGVQYXlCdXR0b25TdHls
ZSA9PSBvLmFwcGxlUGF5QnV0dG9uU3R5bGUKKyAgICAgICAgJiYgYXBwbGVQYXlCdXR0b25UeXBl
ID09IG8uYXBwbGVQYXlCdXR0b25UeXBlCiAjZW5kaWYKLSAgICAgICAgJiYgbV9hc3BlY3RSYXRp
b1R5cGUgPT0gby5tX2FzcGVjdFJhdGlvVHlwZQotICAgICAgICAmJiBtX29iamVjdEZpdCA9PSBv
Lm1fb2JqZWN0Rml0Ci0gICAgICAgICYmIG1fYnJlYWtBZnRlciA9PSBvLm1fYnJlYWtBZnRlcgot
ICAgICAgICAmJiBtX2JyZWFrQmVmb3JlID09IG8ubV9icmVha0JlZm9yZQotICAgICAgICAmJiBt
X2JyZWFrSW5zaWRlID09IG8ubV9icmVha0luc2lkZQotICAgICAgICAmJiBtX3Jlc2l6ZSA9PSBv
Lm1fcmVzaXplCi0gICAgICAgICYmIG1faGFzQXR0ckNvbnRlbnQgPT0gby5tX2hhc0F0dHJDb250
ZW50Ci0gICAgICAgICYmIG1faXNQbGFjZWhvbGRlclN0eWxlID09IG8ubV9pc1BsYWNlaG9sZGVy
U3R5bGU7CisgICAgICAgICYmIGFzcGVjdFJhdGlvVHlwZSA9PSBvLmFzcGVjdFJhdGlvVHlwZQor
ICAgICAgICAmJiBvYmplY3RGaXQgPT0gby5vYmplY3RGaXQKKyAgICAgICAgJiYgYnJlYWtBZnRl
ciA9PSBvLmJyZWFrQWZ0ZXIKKyAgICAgICAgJiYgYnJlYWtCZWZvcmUgPT0gby5icmVha0JlZm9y
ZQorICAgICAgICAmJiBicmVha0luc2lkZSA9PSBvLmJyZWFrSW5zaWRlCisgICAgICAgICYmIHJl
c2l6ZSA9PSBvLnJlc2l6ZQorICAgICAgICAmJiBoYXNBdHRyQ29udGVudCA9PSBvLmhhc0F0dHJD
b250ZW50CisgICAgICAgICYmIGlzUGxhY2Vob2xkZXJTdHlsZSA9PSBvLmlzUGxhY2Vob2xkZXJT
dHlsZTsKIH0KIAotYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250ZW50RGF0YUVx
dWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKK2Jvb2wg
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdAogewotICAgIENvbnRlbnREYXRh
KiBhID0gbV9jb250ZW50LmdldCgpOwotICAgIENvbnRlbnREYXRhKiBiID0gby5tX2NvbnRlbnQu
Z2V0KCk7Ci0KKyAgICBhdXRvKiBhID0gY29udGVudC5nZXQoKTsKKyAgICBhdXRvKiBiID0gb3Ro
ZXIuY29udGVudC5nZXQoKTsKICAgICB3aGlsZSAoYSAmJiBiICYmICphID09ICpiKSB7CiAgICAg
ICAgIGEgPSBhLT5uZXh0KCk7CiAgICAgICAgIGIgPSBiLT5uZXh0KCk7CiAgICAgfQotCiAgICAg
cmV0dXJuICFhICYmICFiOwogfQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Omhh
c0ZpbHRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpbHRlci5nZXQoKSAmJiAhbV9maWx0
ZXItPm1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFmaWx0ZXItPm9wZXJhdGlv
bnMuaXNFbXB0eSgpOwogfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKKwogYm9vbCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpoYXNCYWNrZHJvcEZpbHRlcnMoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2JhY2tkcm9wRmlsdGVyLmdldCgpICYmICFtX2JhY2tkcm9wRmlsdGVyLT5t
X29wZXJhdGlvbnMuaXNFbXB0eSgpOworICAgIHJldHVybiAhYmFja2Ryb3BGaWx0ZXItPm9wZXJh
dGlvbnMuaXNFbXB0eSgpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgKaW5kZXggMDRjMDliYWRmZmY4OTlmMzc0YTM0ODY1ZWFlY2FmNTkz
YWI1OWUwZS4uYmY5YmEyMDc0NTBjNWRhYmM0OTY3NzdlYjFkMzZmNTdiOWI5ODZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTQ0LDM0ICs0NCwyNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBbmltYXRpb25MaXN0OworY2xhc3MgQ29udGVudERhdGE7CiBjbGFzcyBTaGFkb3dEYXRhOwog
Y2xhc3MgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOwogY2xhc3MgU3R5bGVGaWx0ZXJE
YXRhOwogY2xhc3MgU3R5bGVGbGV4aWJsZUJveERhdGE7Ci0jaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKIGNsYXNzIFN0eWxlR3JpZERhdGE7CiBjbGFzcyBTdHlsZUdyaWRJdGVtRGF0YTsKLSNl
bmRpZgogY2xhc3MgU3R5bGVNYXJxdWVlRGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhOwog
Y2xhc3MgU3R5bGVSZWZsZWN0aW9uOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNsYXNzIFN0eWxl
VHJhbnNmb3JtRGF0YTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xhc3MgU3R5bGVT
Y3JvbGxTbmFwUG9ydDsKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci0jZW5kaWYKK2NsYXNz
IFN0eWxlU2Nyb2xsU25hcFBvcnQ7CitjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7CiAKLWNsYXNz
IENvbnRlbnREYXRhOwogc3RydWN0IExlbmd0aFNpemU7Ci0KLSNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCiBzdHJ1Y3QgU3R5bGVEYXNoYm9hcmRSZWdpb247Ci0jZW5kaWYKIAogLy8gUGFn
ZSBzaXplIHR5cGUuCi0vLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjptX3BhZ2VTaXplIGlz
IG1lYW5pbmdmdWwgb25seSB3aGVuIAotLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6bV9w
YWdlU2l6ZVR5cGUgaXMgUEFHRV9TSVpFX1JFU09MVkVELgorLy8gU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YTo6cGFnZVNpemUgaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4KKy8vIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OnBhZ2VTaXplVHlwZSBpcyBQQUdFX1NJWkVfUkVTT0xWRUQuCiBlbnVt
IFBhZ2VTaXplVHlwZSB7CiAgICAgUEFHRV9TSVpFX0FVVE8sIC8vIHNpemU6IGF1dG8KICAgICBQ
QUdFX1NJWkVfQVVUT19MQU5EU0NBUEUsIC8vIHNpemU6IGxhbmRzY2FwZQpAQCAtODksMTQ0ICs4
MiwxNDcgQEAgcHVibGljOgogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAg
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFsZW50KGNv
bnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmls
dGVycygpIGNvbnN0OworCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICBib29sIGhh
c0JhY2tkcm9wRmlsdGVycygpIGNvbnN0OwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9vcGFjaXR5IDwgMTsgfQogCi0gICAgYm9vbCBoYXNBbmltYXRpb25z
T3JUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucyB8fCBtX3RyYW5zaXRp
b25zOyB9CisgICAgYm9vbCBoYXNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gb3BhY2l0eSA8IDE7
IH0KIAotICAgIGZsb2F0IG1fb3BhY2l0eTsKKyAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5z
aXRpb25zKCkgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9ucyB8fCB0cmFuc2l0aW9uczsgfQogCi0g
ICAgZmxvYXQgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOwotICAgIGZsb2F0IG1fYXNwZWN0UmF0
aW9OdW1lcmF0b3I7CisgICAgZmxvYXQgb3BhY2l0eTsKIAotICAgIGZsb2F0IG1fcGVyc3BlY3Rp
dmU7Ci0gICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5YOwotICAgIExlbmd0aCBtX3BlcnNw
ZWN0aXZlT3JpZ2luWTsKKyAgICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yOworICAgIGZs
b2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yOworCisgICAgZmxvYXQgcGVyc3BlY3RpdmU7CisgICAg
TGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWDsKKyAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5Z
OwogCiAgICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wOyAvLyBBbiBBcHBsZSBleHRlbnNpb24u
CiAgICAgCi0gICAgSW50U2l6ZSBtX2luaXRpYWxMZXR0ZXI7CisgICAgSW50U2l6ZSBpbml0aWFs
TGV0dGVyOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIFZlY3RvcjxTdHls
ZURhc2hib2FyZFJlZ2lvbj4gbV9kYXNoYm9hcmRSZWdpb25zOworICAgIFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4gZGFzaGJvYXJkUmVnaW9uczsKICNlbmRpZgogCi0gICAgRGF0YVJlZjxT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94OyAv
LyBGbGV4aWJsZSBib3ggcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVGbGV4aWJsZUJveERh
dGE+IG1fZmxleGlibGVCb3g7Ci0gICAgRGF0YVJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBtX21hcnF1
ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVNdWx0aUNvbERhdGE+
IG1fbXVsdGlDb2w7IC8vICBDU1MzIG11bHRpY29sIHByb3BlcnRpZXMKLSAgICBEYXRhUmVmPFN0
eWxlVHJhbnNmb3JtRGF0YT4gbV90cmFuc2Zvcm07IC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIChy
b3RhdGUsIHNjYWxlLCBza2V3LCBldGMuKQotICAgIERhdGFSZWY8U3R5bGVGaWx0ZXJEYXRhPiBt
X2ZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCisg
ICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGRlcHJlY2F0ZWRGbGV4
aWJsZUJveDsgLy8gRmxleGlibGUgYm94IHByb3BlcnRpZXMKKyAgICBEYXRhUmVmPFN0eWxlRmxl
eGlibGVCb3hEYXRhPiBmbGV4aWJsZUJveDsKKyAgICBEYXRhUmVmPFN0eWxlTWFycXVlZURhdGE+
IG1hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJvcGVydGllcworICAgIERhdGFSZWY8U3R5bGVNdWx0aUNv
bERhdGE+IG11bHRpQ29sOyAvLyAgQ1NTMyBtdWx0aWNvbCBwcm9wZXJ0aWVzCisgICAgRGF0YVJl
ZjxTdHlsZVRyYW5zZm9ybURhdGE+IHRyYW5zZm9ybTsgLy8gVHJhbnNmb3JtIHByb3BlcnRpZXMg
KHJvdGF0ZSwgc2NhbGUsIHNrZXcsIGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+
IGZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCisK
ICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIERhdGFSZWY8U3R5bGVGaWx0ZXJEYXRh
PiBtX2JhY2tkcm9wRmlsdGVyOyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAodXJsLCBzZXBpYSwgYmx1
ciwgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gYmFja2Ryb3BGaWx0ZXI7IC8v
IEZpbHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIERhdGFSZWY8U3R5bGVHcmlkRGF0YT4gbV9n
cmlkOwotICAgIERhdGFSZWY8U3R5bGVHcmlkSXRlbURhdGE+IG1fZ3JpZEl0ZW07CisgICAgRGF0
YVJlZjxTdHlsZUdyaWREYXRhPiBncmlkOworICAgIERhdGFSZWY8U3R5bGVHcmlkSXRlbURhdGE+
IGdyaWRJdGVtOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIERh
dGFSZWY8U3R5bGVTY3JvbGxTbmFwUG9ydD4gbV9zY3JvbGxTbmFwUG9ydDsKLSAgICBEYXRhUmVm
PFN0eWxlU2Nyb2xsU25hcEFyZWE+IG1fc2Nyb2xsU25hcEFyZWE7CisgICAgRGF0YVJlZjxTdHls
ZVNjcm9sbFNuYXBQb3J0PiBzY3JvbGxTbmFwUG9ydDsKKyAgICBEYXRhUmVmPFN0eWxlU2Nyb2xs
U25hcEFyZWE+IHNjcm9sbFNuYXBBcmVhOwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudERhdGE+IG1fY29udGVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVj
dGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKLSAgICBTdHJpbmcgbV9hbHRUZXh0OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY291bnRlckRpcmVjdGl2ZXM7CisgICAgU3RyaW5nIGFs
dFRleHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9ib3hTaGFkb3c7IC8v
IEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dE
YXRhPiBib3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgogCi0gICAgUmVm
UHRyPFdpbGxDaGFuZ2VEYXRhPiBtX3dpbGxDaGFuZ2U7IC8vIE51bGwgaW5kaWNhdGVzICdhdXRv
Jy4KKyAgICBSZWZQdHI8V2lsbENoYW5nZURhdGE+IHdpbGxDaGFuZ2U7IC8vIE51bGwgaW5kaWNh
dGVzICdhdXRvJy4KICAgICAKLSAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBtX2JveFJlZmxl
Y3Q7CisgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gYm94UmVmbGVjdDsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxBbmltYXRpb25MaXN0PiBtX2FuaW1hdGlvbnM7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEFuaW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvbkxpc3Q+IGFuaW1hdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxp
c3Q+IHRyYW5zaXRpb25zOwogCi0gICAgRmlsbExheWVyIG1fbWFzazsKLSAgICBOaW5lUGllY2VJ
bWFnZSBtX21hc2tCb3hJbWFnZTsKKyAgICBGaWxsTGF5ZXIgbWFzazsKKyAgICBOaW5lUGllY2VJ
bWFnZSBtYXNrQm94SW1hZ2U7CiAKLSAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7Ci0gICAgTGVu
Z3RoUG9pbnQgbV9vYmplY3RQb3NpdGlvbjsKKyAgICBMZW5ndGhTaXplIHBhZ2VTaXplOworICAg
IExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uOwogCi0gICAgUmVmUHRyPFNoYXBlVmFsdWU+IG1f
c2hhcGVPdXRzaWRlOwotICAgIExlbmd0aCBtX3NoYXBlTWFyZ2luOwotICAgIGZsb2F0IG1fc2hh
cGVJbWFnZVRocmVzaG9sZDsKKyAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gc2hhcGVPdXRzaWRlOwor
ICAgIExlbmd0aCBzaGFwZU1hcmdpbjsKKyAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkOwog
Ci0gICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRoOworICAgIFJlZlB0cjxD
bGlwUGF0aE9wZXJhdGlvbj4gY2xpcFBhdGg7CiAKLSAgICBDb2xvciBtX3RleHREZWNvcmF0aW9u
Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3I7Ci0gICAg
Q29sb3IgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7
Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7Ci0gICAgQ29sb3IgbV92
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcjsKKyAgICBDb2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9yOworICAgIENvbG9yIHZp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tn
cm91bmRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xvcjsKKyAgICBDb2xv
ciB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcjsKKyAgICBD
b2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOwogCi0gICAgaW50IG1fb3JkZXI7Cisg
ICAgaW50IG9yZGVyOwogCi0gICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKLSAgICBBdG9t
aWNTdHJpbmcgbV9yZWdpb25UaHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIGZsb3dUaHJlYWQ7Cisg
ICAgQXRvbWljU3RyaW5nIHJlZ2lvblRocmVhZDsKIAotICAgIFN0eWxlQ29udGVudEFsaWdubWVu
dERhdGEgbV9hbGlnbkNvbnRlbnQ7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWdu
SXRlbXM7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduU2VsZjsKLSAgICBTdHls
ZUNvbnRlbnRBbGlnbm1lbnREYXRhIG1fanVzdGlmeUNvbnRlbnQ7Ci0gICAgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSBtX2p1c3RpZnlJdGVtczsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1f
anVzdGlmeVNlbGY7CisgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGlnbkNvbnRlbnQ7
CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnbkl0ZW1zOworICAgIFN0eWxlU2VsZkFs
aWdubWVudERhdGEgYWxpZ25TZWxmOworICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEganVz
dGlmeUNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5SXRlbXM7Cisg
ICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5U2VsZjsKIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgdW5zaWduZWQgbV90b3VjaEFjdGlvbiA6IDE7IC8vIFRvdWNoQWN0aW9u
CisgICAgdW5zaWduZWQgdG91Y2hBY3Rpb24gOiAxOyAvLyBUb3VjaEFjdGlvbgogI2VuZGlmCiAK
LSAgICB1bnNpZ25lZCBtX3JlZ2lvbkZyYWdtZW50IDogMTsgLy8gUmVnaW9uRnJhZ21lbnQKKyAg
ICB1bnNpZ25lZCByZWdpb25GcmFnbWVudCA6IDE7IC8vIFJlZ2lvbkZyYWdtZW50CiAKLSAgICB1
bnNpZ25lZCBtX3BhZ2VTaXplVHlwZSA6IDI7IC8vIFBhZ2VTaXplVHlwZQotICAgIHVuc2lnbmVk
IG1fdHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECi0gICAgdW5zaWdu
ZWQgbV9iYWNrZmFjZVZpc2liaWxpdHkgOiAxOyAvLyBFQmFja2ZhY2VWaXNpYmlsaXR5CisgICAg
dW5zaWduZWQgcGFnZVNpemVUeXBlIDogMjsgLy8gUGFnZVNpemVUeXBlCisgICAgdW5zaWduZWQg
dHJhbnNmb3JtU3R5bGUzRCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECisgICAgdW5zaWduZWQg
YmFja2ZhY2VWaXNpYmlsaXR5IDogMTsgLy8gRUJhY2tmYWNlVmlzaWJpbGl0eQogCiAKICAgICB1
bnNpZ25lZCB1c2VyRHJhZyA6IDI7IC8vIEVVc2VyRHJhZwogICAgIHVuc2lnbmVkIHRleHRPdmVy
ZmxvdyA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3BpbGwgb3V0IHNob3VsZCBi
ZSB0cnVuY2F0ZWQgd2l0aCAiLi4uIgogICAgIHVuc2lnbmVkIG1hcmdpbkJlZm9yZUNvbGxhcHNl
IDogMjsgLy8gRU1hcmdpbkNvbGxhcHNlCiAgICAgdW5zaWduZWQgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZSA6IDI7IC8vIEVNYXJnaW5Db2xsYXBzZQotICAgIHVuc2lnbmVkIG1fYXBwZWFyYW5jZSA6IDY7
IC8vIEVBcHBlYXJhbmNlCi0gICAgdW5zaWduZWQgbV9ib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVy
Rml0Ci0gICAgdW5zaWduZWQgbV90ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1jb21iaW5l
IHByb3BlcnRpZXMKKyAgICB1bnNpZ25lZCBhcHBlYXJhbmNlIDogNjsgLy8gRUFwcGVhcmFuY2UK
KyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0CisgICAgdW5zaWduZWQg
dGV4dENvbWJpbmUgOiAxOyAvLyBDU1MzIHRleHQtY29tYmluZSBwcm9wZXJ0aWVzCiAKLSAgICB1
bnNpZ25lZCBtX3RleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0RGVjb3JhdGlvblN0eWxl
CisgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25TdHlsZSA6IDM7IC8vIFRleHREZWNvcmF0aW9u
U3R5bGUKIAotICAgIHVuc2lnbmVkIG1fYXNwZWN0UmF0aW9UeXBlIDogMjsKKyAgICB1bnNpZ25l
ZCBhc3BlY3RSYXRpb1R5cGUgOiAyOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAg
ICB1bnNpZ25lZCBtX2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQotICAgIHVu
c2lnbmVkIG1faXNvbGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCisgICAgdW5zaWduZWQgZWZmZWN0
aXZlQmxlbmRNb2RlOiA1OyAvLyBFQmxlbmRNb2RlCisgICAgdW5zaWduZWQgaXNvbGF0aW9uIDog
MTsgLy8gSXNvbGF0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgdW5z
aWduZWQgbV9hcHBsZVBheUJ1dHRvblN0eWxlIDogMjsKLSAgICB1bnNpZ25lZCBtX2FwcGxlUGF5
QnV0dG9uVHlwZSA6IDM7CisgICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25TdHlsZSA6IDI7Cisg
ICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25UeXBlIDogMzsKICNlbmRpZgogCi0gICAgdW5zaWdu
ZWQgbV9vYmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQKKyAgICB1bnNpZ25lZCBvYmplY3RGaXQg
OiAzOyAvLyBPYmplY3RGaXQKICAgICAKLSAgICB1bnNpZ25lZCBtX2JyZWFrQmVmb3JlIDogNDsg
Ly8gQnJlYWtCZXR3ZWVuCi0gICAgdW5zaWduZWQgbV9icmVha0FmdGVyIDogNDsKLSAgICB1bnNp
Z25lZCBtX2JyZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKLSAgICB1bnNpZ25lZCBtX3Jl
c2l6ZSA6IDI7IC8vIEVSZXNpemUKKyAgICB1bnNpZ25lZCBicmVha0JlZm9yZSA6IDQ7IC8vIEJy
ZWFrQmV0d2VlbgorICAgIHVuc2lnbmVkIGJyZWFrQWZ0ZXIgOiA0OworICAgIHVuc2lnbmVkIGJy
ZWFrSW5zaWRlIDogMzsgLy8gQnJlYWtJbnNpZGUKKyAgICB1bnNpZ25lZCByZXNpemUgOiAyOyAv
LyBFUmVzaXplCiAKLSAgICB1bnNpZ25lZCBtX2hhc0F0dHJDb250ZW50IDogMTsKKyAgICB1bnNp
Z25lZCBoYXNBdHRyQ29udGVudCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX2lzUGxhY2Vob2xkZXJT
dHlsZSA6IDE7CisgICAgdW5zaWduZWQgaXNQbGFjZWhvbGRlclN0eWxlIDogMTsKIAogcHJpdmF0
ZToKICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCmluZGV4IGVhZjMx
MGI2M2Q2MWFkMWNjMTA0OGIwYzY4MmFjZmVkNTJkOWFmYTYuLmVhZjdhNmE0MzdlOTM2MTE2ODNi
ZTZhMWE5ZTQzYmEwMDgwYTM5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCkBAIC0yNywxOSArMjcsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURh
dGEoKQotICAgIDogbV9vcGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtKCkp
Ci0gICAgLCBtX3goUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkpCi0gICAg
LCBtX3koUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkpCi0gICAgLCBtX3oo
UmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aKCkpCisgICAgOiBvcGVyYXRpb25z
KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtKCkpCisgICAgLCB4KFJlbmRlclN0eWxlOjpp
bml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpKQorICAgICwgeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRy
YW5zZm9ybU9yaWdpblkoKSkKKyAgICAsIHooUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1P
cmlnaW5aKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNm
b3JtRGF0YShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pCitpbmxpbmUgU3R5bGVUcmFuc2Zv
cm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhl
cikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVUcmFuc2Zvcm1EYXRhPigpCi0gICAgLCBtX29wZXJh
dGlvbnMoby5tX29wZXJhdGlvbnMpCi0gICAgLCBtX3goby5tX3gpCi0gICAgLCBtX3koby5tX3kp
Ci0gICAgLCBtX3ooby5tX3opCisgICAgLCBvcGVyYXRpb25zKG90aGVyLm9wZXJhdGlvbnMpCisg
ICAgLCB4KG90aGVyLngpCisgICAgLCB5KG90aGVyLnkpCisgICAgLCB6KG90aGVyLnopCiB7CiB9
CiAKQEAgLTQ4LDkgKzQ4LDkgQEAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gU3R5bGVUcmFuc2Zv
cm1EYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRyYW5z
Zm9ybURhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9y
PT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZVRyYW5zZm9y
bURhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV94ID09IG8ubV94ICYmIG1feSA9PSBvLm1feSAmJiBtX3ogPT0gby5t
X3ogJiYgbV9vcGVyYXRpb25zID09IG8ubV9vcGVyYXRpb25zOworICAgIHJldHVybiB4ID09IG90
aGVyLnggJiYgeSA9PSBvdGhlci55ICYmIHogPT0gb3RoZXIueiAmJiBvcGVyYXRpb25zID09IG90
aGVyLm9wZXJhdGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaAppbmRleCAy
ZWEwNzk1YjZhZWRjMTUwMzRmN2JmMjhmM2Q4ZmEzNjIyZWVkOGNhLi42YjQ2YTM1NmI0MWZjMWI2
MTIzZTgyYzQ3ZDIxMDYwM2FhYWM5MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCkBAIC0zNiwxOCArMzYsMTggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSk7IH0KICAgICBSZWY8U3R5bGVUcmFu
c2Zvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVUcmFuc2Zvcm1EYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZVRyYW5zZm9ybURhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVU
cmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG8pOworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNpemUo
KTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gb3BlcmF0aW9ucy5z
aXplKCk7IH0KIAotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgbV9vcGVyYXRpb25zOwotICAgIExl
bmd0aCBtX3g7Ci0gICAgTGVuZ3RoIG1feTsKLSAgICBmbG9hdCBtX3o7CisgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIExlbmd0aCB4OworICAgIExlbmd0aCB5OworICAg
IGZsb2F0IHo7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVUcmFuc2Zvcm1EYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCmluZGV4
IDI1NmMxNTQ5NWZhNmUwMGM3YWNjMGIxZGRiN2I3MGZmYzgyMjBiMmUuLjEwZmQ1ODg4ZjdmN2I2
Nzg3NTQ0ZGQxMWViOGY3ZWVhZGIwMTgwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6
IGhhc0NsaXAoZmFsc2UpCiAgICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHREZWNvcmF0aW9uKCkpCi0gICAgLCBtX3pvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewogfQogCkBAIC0z
NywxMiArMzcsMTIgQEAgU3R5bGVWaXN1YWxEYXRhOjp+U3R5bGVWaXN1YWxEYXRhKCkKIHsKIH0K
IAotaW5saW5lIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0IFN0eWxlVmlz
dWFsRGF0YSYgbykKK2lubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25z
dCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVZpc3VhbERh
dGE+KCkKLSAgICAsIGNsaXAoby5jbGlwKQotICAgICwgaGFzQ2xpcChvLmhhc0NsaXApCi0gICAg
LCB0ZXh0RGVjb3JhdGlvbihvLnRleHREZWNvcmF0aW9uKQotICAgICwgbV96b29tKFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgY2xpcChvdGhlci5jbGlwKQorICAgICwgaGFzQ2xp
cChvdGhlci5oYXNDbGlwKQorICAgICwgdGV4dERlY29yYXRpb24ob3RoZXIudGV4dERlY29yYXRp
b24pCisgICAgLCB6b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKaW5kZXgg
YTZmNjhlZmQwNTBhN2RhMDhlNjU1NzAxNjU1MDAwYWEwOGFkZmI0Mi4uZDQxOGFjYjUwYTI0Zjhh
M2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtMzcsMTkgKzM3LDE5IEBAIHB1YmxpYzoK
ICAgICBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0eWxlVmlzdWFs
RGF0YSgpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgbykg
Y29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvdGhlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjbGlwID09IG8uY2xpcAotICAgICAgICAgICAg
JiYgaGFzQ2xpcCA9PSBvLmhhc0NsaXAKLSAgICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uID09
IG8udGV4dERlY29yYXRpb24KLSAgICAgICAgICAgICYmIG1fem9vbSA9PSBvLm1fem9vbTsKKyAg
ICAgICAgcmV0dXJuIGNsaXAgPT0gb3RoZXIuY2xpcAorICAgICAgICAgICAgJiYgaGFzQ2xpcCA9
PSBvdGhlci5oYXNDbGlwCisgICAgICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbiA9PSBvdGhlci50
ZXh0RGVjb3JhdGlvbgorICAgICAgICAgICAgJiYgem9vbSA9PSBvdGhlci56b29tOwogICAgIH0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVmlz
dWFsRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAg
ICBMZW5ndGhCb3ggY2xpcDsKICAgICBib29sIGhhc0NsaXAgOiAxOwogICAgIHVuc2lnbmVkIHRl
eHREZWNvcmF0aW9uIDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRl
ZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KLSAgICBmbG9hdCBtX3pvb207CisgICAgZmxv
YXQgem9vbTsKIAogcHJpdmF0ZToKICAgICBTdHlsZVZpc3VhbERhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCmluZGV4IGY3NDkzMzkwMzQy
MDk1Y2UzMTc0MWNjZDJjMDAzYTNmMmI2NDcyNzIuLjEwMzE5ZjgyM2VkMDMxNGIyZWIzODI1ODkw
YmVjMzU3MDcwMzE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVu
ZGluZ1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVQZW5kaW5n
UmVzb3VyY2VzLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBsb2FkUGVuZGluZ0lt
YWdlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgYwog
CiB2b2lkIGxvYWRQZW5kaW5nUmVzb3VyY2VzKFJlbmRlclN0eWxlJiBzdHlsZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIGZvciAoYXV0byogYmFj
a2dyb3VuZExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7
IGJhY2tncm91bmRMYXllciA9IGJhY2tncm91bmRMYXllci0+bmV4dCgpKQorICAgIGZvciAoYXV0
byogYmFja2dyb3VuZExheWVyID0gJnN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgYmFja2dyb3Vu
ZExheWVyOyBiYWNrZ3JvdW5kTGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkKICAgICAg
ICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgYmFja2dyb3VuZExheWVyLT5pbWFnZSgpLCBl
bGVtZW50KTsKIAogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0
YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoUmVuZGVyU3R5bGUmIHN0
eWxlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAgICAgaWYgKGF1dG8qIHJl
ZmxlY3Rpb24gPSBzdHlsZS5ib3hSZWZsZWN0KCkpCiAgICAgICAgIGxvYWRQZW5kaW5nSW1hZ2Uo
ZG9jdW1lbnQsIHJlZmxlY3Rpb24tPm1hc2soKS5pbWFnZSgpLCBlbGVtZW50KTsKIAotICAgIGZv
ciAoYXV0byogbWFza0xheWVyID0gc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tM
YXllciA9IG1hc2tMYXllci0+bmV4dCgpKQorICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0
eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5leHQo
KSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgbWFza0xheWVyLT5pbWFnZSgp
LCBlbGVtZW50KTsKIAogICAgIGlmIChzdHlsZS5zaGFwZU91dHNpZGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KaW5kZXggZmUyOGZkNGVhNWU1MDdlYjg2YjgzZTcxYWQ2ODA5ZjMwNjY5Mzg3NC4uNGU5YjJl
MjcyZDJkMzlkYWE4MGRhMGNjYTQzZGQyZmEwOTg5YzEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTE4NDksNyArMTg0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChFdmVudCogZXZlbnQpCiAgICAgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBGcmFtZTo6ZnJh
bWVGb3JXaWRnZXQodGhpcyk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZv
cldpZGdldCgqdGhpcyk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDBjNWZkYTAx
ZjA4YTkwNWQxNmM5M2M0YjczODJiNjQyZDgyZWY1YWEuLmM5MTE1NTIwZjJjODk1MjM5ZTQxNDJj
YTg2N2E3ZjZkNGY2MDYyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTM0NzAsOCArMzQ3MCw4IEBAIC0gKHZvaWQpX2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0Zv
ckZyYW1lVmlldzooRnJhbWVWaWV3KilmcmFtZVZpZXcgZGFzaGJvYXJkCiAgICAgTlNWaWV3ICpk
b2N1bWVudFZpZXcgPSBbW2tpdCgmZnJhbWVWaWV3LT5mcmFtZSgpKSBmcmFtZVZpZXddIGRvY3Vt
ZW50Vmlld107CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdpZGdldDogZnJhbWVWaWV3LT5jaGls
ZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7Ci0gICAgICAg
ICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OmRvd25j
YXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdpb25zOnJlZ2lvbnNdOwor
ICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pih3aWRnZXQpKSB7CisgICAgICAgICAgICBbc2VsZiBf
YWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OiZkb3duY2FzdDxGcmFtZVZp
ZXc+KHdpZGdldC5nZXQoKSkgZGFzaGJvYXJkUmVnaW9uczpyZWdpb25zXTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDlhODczNThiMDg1NDM1MThkODA0NjYz
MWI1MTkzMDNlMGEzMWM0YTcuLmRmMWE1N2JhNDk0Y2IwNzIzMjFhNjcyYjk5MDJjMDgzYmE4ZTNh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHR1CiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYW5pbWF0aW9uT2JqZWN0LT5maWxs
TW9kZSgpKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+ZHVyYXRpb24oKTsKICAg
ICBlbmNvZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+aXRlcmF0aW9uQ291bnQoKTsKLSAgICBlbmNv
ZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCBhbmltYXRpb25PYmplY3QtPnRpbWluZ0Z1bmN0aW9u
KCkuZ2V0KCkpOworICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIGFuaW1hdGlvbk9i
amVjdC0+dGltaW5nRnVuY3Rpb24oKSk7CiAKICAgICBjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
a2V5ZnJhbWVzID0gYW5pbWF0aW9uLmtleWZyYW1lcygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShrZXlmcmFtZXMucHJvcGVydHkoKSk7CkBAIC01MjcsNyArNTI3LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
VGV4dHVyZU1hcHAKICAgICBhbmltYXRpb25PYmplY3QtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
ICAgICBhbmltYXRpb25PYmplY3QtPnNldEl0ZXJhdGlvbkNvdW50KGl0ZXJhdGlvbkNvdW50KTsK
ICAgICBpZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGFuaW1hdGlvbk9iamVjdC0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhbmltYXRpb25PYmplY3QtPnNl
dFRpbWluZ0Z1bmN0aW9uKFdURk1vdmUodGltaW5nRnVuY3Rpb24pKTsKIAogICAgIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwcm9wZXJ0
eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggYmFlOTZiNmEyY2RkZjliYjJjODA5MTFm
NzZhNmY0NDhhY2RkZjI0Yi4uODUwOWFlNjUwMjRkNGVlNTkyZWQxMjVhMTIxMjE0MGYwN2ZjZTMx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXBy
ZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtNjY2LDcgKzY2Niw3IEBAIFJlZjxTY3Jv
bGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQogICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOwogICAgICAgICB9CiAgICAgfQotICAg
IHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQucHRyKCkpOwor
ICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQpOwogICAg
IHJldHVybiB3aWRnZXQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298558</attachid>
            <date>2017-01-11 00:06:45 -0800</date>
            <delta_ts>2017-01-12 18:53:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170111000506.patch</filename>
            <type>text/plain</type>
            <size>954296</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li4yMDVmYjdiNDRlZjQyOTFj
YTZlMDQ2YzhlZTI0MTc4MTQ1YzYyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUg
cGlwZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDI2NTZjZGU4Y2M0NmYxMGMwMzgyZDMxMTI1YWI1NTY3NzkwMWRjZi4u
MzQwOWMyY2VjZDkxOTIwNWQ5ZjNmYTg2M2M2NTY2ZjQ4OTljYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBDaGFuZ2Vk
IHRoZSB0ZW1wbGF0ZSBzbyB0aGF0IGEgY29uc3QgUmVmPFQ+IGRvZXMgbm90IHByb2hpYml0IG5v
bi1jb25zdAorICAgICAgICB1c2Ugb2YgVC4gV2UgY2FuIHN0aWxsIHVzZSBjb25zdCBSZWY8Y29u
c3QgVD4gdG8gZXhwcmVzcyB0aGF0LiBUaGUgZWFybGllciBkZXNpZ24KKyAgICAgICAgd2FzIGlu
dGVudGlvbmFsLCBidXQgd2FzIG5vdCBjb25zaXN0ZW50IHdpdGggZWl0aGVyIGFjdHVhbCByZWZl
cmVuY2VzIG9yIHdpdGgKKyAgICAgICAgb3RoZXIgc21hcnQgcG9pbnRlciBjbGFzc2VzIGxpa2Ug
UmVmUHRyLiBPbmUgd2F5IHRvIHNlZSBob3cgbXVjaCBiZXR0ZXIgdGhpcyBpcywKKyAgICAgICAg
aXMgdG8gc2VlIGFsbCB0aGUgbWFueSwgbWFueSBjYXNlcyB3aGVyZSB3ZSBoYXZlIGNvbnN0X2Nh
c3QganVzdCB0byB3b3JrIGFyb3VuZAorICAgICAgICB0aGlzLiBJIHNlYXJjaGVkIGZvciB0aG9z
ZSBhbmQgaW5jbHVkZWQgZml4ZXMgZm9yIG1hbnkgaW4gdGhpcyBwYXRjaC4KKwogMjAxNy0wMS0w
NiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbR1RLXSBTaG91bGQgc3VwcG9ydCBrZXkgYW5kIGNvZGUgcHJvcGVydGll
cyBvbiBrZXlib2FyZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMWM4MjJiNTkzMzViNWIzYzJiODFi
MzgyMTc2MTA4YjZhNTY0OTc2Li5lYzAwZDZmYTk5OGQ1ZjU3NjcyOGJlMDlhN2U5NWIyNzFlYjg0
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIyIEBACisyMDE3LTAxLTA5ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIG1v
cmUgb2YgInBsYXRmb3JtIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY2ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICBBZGRlZCBub3ctbmVlZGVkIGluY2x1ZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICBQYXNzIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg6IFR3ZWFrcywgbXNhZGUgYSBmZXcgdGhpbmdzCisgICAgICAgIG1vcmUgcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbDo6Z2V0UHRyT3JSZWYpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6d3JhcHBlZCk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6On5TY3JpcHRNb2R1bGVMb2FkZXIpOiBEaXR0by4KKworICAgICAgICAq
IGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
b0xlbmd0aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6
IFVwZGF0ZWQgbWFueSBwcm9wZXJ0aWVzCisgICAgICAgIHNpbmNlIHRoZSBsYXllciBwcm9wZXJ0
aWVzIG5vdyByZXR1cm4gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBwb2ludGVycy4KKworICAgICAg
ICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlOjppbWFnZSk6IFJlbW92
ZWQKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6
Oml0ZW0pOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdCk6IFVwZGF0ZWQgZm9yIExl
bmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOiBSZW1vdmVk
IG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKworICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBVcGRhdGVk
IGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmFtaWx5KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlOjp2YXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6ZmVhdHVyZVNldHRpbmdzKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemVGb3JMZW5ndGhTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpmbG9hdFNpemVGb3JMZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVu
Z3RoU2l6ZSBzdHJ1Y3QuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZCBz
aXplRm9yTGVuZ3RoU2l6ZS4KKworICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRPcmRlcik6IEN1dCBkb3duIG9u
IGNyZWF0aW9uIG9mIHVudXNlZCBvYmplY3RzLgorICAgICAgICBXZSBub3cgY3JlYXRlIG9ubHkg
d2hhdCB3ZSBhY3R1YWxseSB1c2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
YWRpdXMpOiBVcGRhdGVkIGZvcgorICAgICAgICBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUpOiBQYXNz
IHJlZmVyZW5jZXMKKyAgICAgICAgd2hlbiBjcmVhdGluZyBTaGFwZVZhbHVlLgorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Zm9yd2FyZElu
aGVyaXRlZFZhbHVlKTogQWRkZWQuIFRoaXMgc2V0IG9mIG92ZXJsb2FkZWQKKyAgICAgICAgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byB1c2UgbW92ZSBzZW1hbnRpY3MgZm9yIHNvbWUgdHlwZXMsIGJ1
dCBjb3B5CisgICAgICAgIHRoZW0gd2hlbiBpbmhlcml0aW5nLiBEb2luZyBpdCB3aXRoIHNwZWNp
YWwgY2FzZXMgaGVyZSBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVzb2x2ZSB0aGlzIHdpdGhvdXQg
YWRkaW5nIG92ZXJsb2FkcyBzb21lb25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8KKyAgICAgICAgY2Fs
bCBvdXRzaWRlIHRoZSBzdHlsZSBidWlsZGVyLCBhbmQgd2l0aG91dCBhZGRpbmcgc3BlY2lhbCBj
YXNlcyB0bworICAgICAgICB0aGUgSlNPTiBmaWxlIGZvciBlYWNoIHByb3BlcnR5LgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJk
UmVnaW9uKToKKyAgICAgICAgQWRkIFdURk1vdmUgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBydmFs
dWUgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5l
SGVpZ2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXApOiBEaXR0by4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQpOiBVc2UKKyAgICAgICAgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgY3VzdG9tIHByb3Bl
cnR5IGRhdGEgaW4gUmVuZGVyU3R5bGUuCisKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6IFVz
ZSBhdXRvIHF1aXRlIGEgYml0IG1vcmUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBV
cGRhdGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxheWVycyB0byBleHBlY3QgcmVmZXJlbmNlcy4gQWRk
ZWQgYSBXVEZNb3ZlCisgICAgICAgIHNvIHdlIGNhbiBnZXQgbW92ZSBzZW1hbnRpY3MgZm9yIGNv
bnZlcnRlZCB2YWx1ZXMgdGhhdCBjb21lIG91dCBpbgorICAgICAgICBhbiBvcHRpb25hbC4gQWRk
ZWQgY2FsbCB0byBmb3J3YXJkSW5oZXJpdGVkVmFsdWUgKHNlZSBhYm92ZSkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTogVXNlIGF1dG8gYW5kIHVwZGF0ZQorICAgICAgICBzaW5jZSBM
ZW5ndGhTaXplIGlzIGEgc3RydWN0LgorCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldCk6
IFVzZSBhdXRvLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGl2ZU5vZGVMaXN0Ojpvd25lck5vZGUpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQg
Y29uc3RfY2FzdC4KKworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpzb3VyY2UpOiBSZW1vdmVkIHVubmVlZGVkIHN0YXRpY19j
YXN0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVNl
dFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcik6IFR3ZWFrZWQgZm9ybWF0dGlu
Zy4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Om93
bmVyRG9jdW1lbnQpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9T
Y3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0
UnVubmVyKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSk6IERpdHRvLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFj
a0l0ZW06Om5vZGUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
ZXRKYXZhU2NyaXB0UGF1c2VkKTogQ3V0IGRvd24gb24gdGhlIG51bWJlcgorICAgICAgICBvZiBk
aWZmZXJlbnQgZnVuY3Rpb25zIGhlcmUuIEFsc28gdXNlIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBw
b2ludGVyLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogVXBk
YXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6IFVzZSBhdXRvLiBMZXQgdGhlIGlzPD4gZnVu
Y3Rpb24gZG8gbnVsbAorICAgICAgICBjaGVja2luZyBmb3IgdXMuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6ZnJhbWVGb3JXaWRnZXQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QpOiBVc2UgQ2hyb21lIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgSG9zdFdpbmRvdy4gSG9zdFdpbmRvdyBpcyBhbiBhYnN0cmFjdGlvbiBmb3Ig
dGhlIHBsYXRmb3JtIGxheWVyLCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gZ29vZCByZWFzb24g
dG8gdXNlIGl0IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlQW5p
bWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmdyYXBoaWNzTGF5
ZXJGb3JQbGF0Zm9ybVdpZGdldCk6IFVwZGF0ZWQgdG8gdXNlIHJlZmVyZW5jZQorICAgICAgICB3
aGVuIGNhbGxpbmcgUmVuZGVyV2lkZ2V0OjpmaW5kLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogVXNlIENocm9tZSBpbnN0ZWFkIG9mIEhvc3RX
aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvc3RXaW5kb3cpOiBVc2UgZWFy
bHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3Ju
ZXIpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlCisgICAgICAgIGNsYXNz
IGZ1bmN0aW9uLCB3aGljaCB3YXMgZW1wdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
Omhhc0N1c3RvbVNjcm9sbGJhcnMpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93
CisgICAgICAgIGNvbnRhaW5zIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldyk6IFVzZSBlYXJseSByZXR1cm4uCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucyk6IFVzZSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6IFVz
ZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBSZW1vdmUgbm93LXVubmVlZGVkIGNvbnN0X2Nh
c3QuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cGx1Z2luVmlld3MpOiBVcGRhdGVkIHNpbmNlIHRoZSBjaGlsZHJlbiBzZXQgbm93IGNvbnRhaW5z
CisgICAgICAgIFJlZiByYXRoZXIgdGhhbiBSZWZQdHIuCisKKyAgICAgICAgKiBwYWdlL1ByaW50
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0
eSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
OjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvCisg
ICAgICAgIHRoZSB0eXBlcyBpbiBhbmltYXRpb24gZnVuY3Rpb24gbWVtYmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z2V0RWxhcHNlZFRpbWUpOiBEaXR0by4KKworICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsZW5kRnVuYyk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFwcGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIp
OiBVcGRhdGVkIHNpbmNlIHdlIG5vdworICAgICAgICB1c2UgcnZhbHVlIHJlZmVyZW5jZXMgYW5k
IG1vdmUgc2VtYW50aWNzIHdoZW4gc2V0dGluZyBsZW5ndGggcHJvcGVydGllcy4KKworICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25z
Rm9yRnJhbWUpOiBUd2Vha2VkIHRvCisgICAgICAgIHVzZSBhdXRvLCBwYXNzIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOiBSZXR1cm4gUmVmUHRyIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOiBBZGRl
ZCBhIGNvbnN0cnVjdG9yIHRoYXQgbW92ZXMgdGhlIGxlbmd0aHMgaW4sIHJhdGhlcgorICAgICAg
ICB0aGFuIGFsd2F5cyBjb3B5aW5nIHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBVcGRhdGVkIHNpbmNlIExl
bmd0aFNpemUgaXMgYSBzdHJ1Y3QuCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5oOiBU
dXJuZWQgTGVuZ3RoU2l6ZSBpbnRvIGEgc3RydWN0IGFuZCByZW1vdmVkIGFsbCB0aGUKKyAgICAg
ICAgZ2V0dGVyIGFuZCBzZXR0ZXIgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuIFVudXNlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUpOiBSZXR1cm4gUmVmIHJh
dGhlciB0aGFuIFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOiBUYWtl
CisgICAgICAgIGEgcmVmZXJlbmNlLiBJbml0aWFsaXplIGRhdGEgbWVtYmVycyBpbiBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQ
YXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGRDaGlsZCk6IFRha2Ug
YSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwpOiBVcGRhdGVkIGZvciBjaGFuZ2Ug
dG8gYWRkQ2hpbGQKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgpOiBEZWxldGVkLiBUaGlzIHdhcyBuZXZlciBjYWxsZWQsCisgICAgICAgIHNvIG1h
ZGUgaXQgcHVyZSB2aXJ0dWFsLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6ZnJhbWVS
ZWN0c0NoYW5nZWQpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjbGlwUmVjdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6IERlbGV0ZWQuIFRoaXMgd2FzIGVtcHR5IHNv
IG1hZGUgaXQgcHVyZQorICAgICAgICB2aXJ0dWFsIGFuZCBjaGFuZ2VkIEZyYW1lVmlldyB0byBu
b3QgY2FsbCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzaG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpoaWRlKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBDaGFuZ2VkIHRoZSBjaGlsZHJl
biBzZXQgdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIENoYW5nZWQg
ZnVuY3Rpb25zIHRoYXQgd2VyZSBuZXZlciBvdmVycmlkZGVuIHRvIGVpdGhlciBiZSBmaW5hbCBv
ciBub24tdmlydHVhbCwKKyAgICAgICAgQ2hhbmdlZCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG5ldmVy
IGNhbGxlZCB0byBiZSBwdXJlIHZpcnR1YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6Om1pbmltdW1Db250cm9sU2l6ZSk6IFVwZGF0ZWQg
Zm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oOiBDaGFuZ2VkIHRpbWluZ0Z1bmN0aW9uIGFuZCB0cmlnZ2VyIHRvIHJldHVybgor
ICAgICAgICByYXcgcG9pbnRlcnMgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLiBDaGFuZ2VkIHNldFRp
bWluZ0Z1bmN0aW9uIGFuZCBzZXRUcmlnZ2VyIHRvCisgICAgICAgIHRha2UgUmVmUHRyJiYgYW5k
IFJlZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4gQ0hhbmdlZCBpbml0aWFsVGltaW5nZnVuY3Rp
b24gYW5kCisgICAgICAgIGluaXRpYWxUcmlnZ2VyIHRvIHJldHVybiBSZWYuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5jcHA6IFJlbW92ZWQgcmVkdW5kYW50
IGNoZWNrIGluIEZJTExfVU5TRVRfUFJPUEVSVFkuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25MaXN0OjpBbmltYXRpb25MaXN0KTogVXNlIG1vZGVybiBmb3IgbG9vcCwgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSwKKyAgICAgICAgYW5kIHVuY2hlY2tlZEFwcGVuZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oOiBDaGFuZ2VkIGFwcGVuZCB0byB0YWtlIFJl
ZiYmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgY2hhbmdlZCB2ZWN0byB0byBjb250
YWluIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4gQWRkZWQgbW92ZSBjb25zdHJ1Y3RvciBhbmQgYXNz
aWdubWVudAorICAgICAgICBvcGVyYXRvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb25UcmlnZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJp
Z2dlcjo6Y2xvbmUpOiBSZXR1cm4gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dG9BbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyOjpjbG9uZSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbik6IFJldHVybiBhIHJlZmVyZW5jZQorICAgICAg
ICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZVJldmVyc2VkKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFBhc3NS
ZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjbG9u
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjbG9uZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb246OmNsb25lKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBSZW1vdmVkIG5vLWxvbmdlci1uZWVkZWQgY29u
c3RfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6IFJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6IFVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBNYWRlIGV2ZW4gbW9y
ZQorICAgICAgICBwcml2YXRlLiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBmaW5pc2hFbmNvZGlu
ZyB0byBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
Zyk6IFJldHVybiBSZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlk
ZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4gdmFsdWUg
b2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvdXRzZXRTaXplRm9yQmx1cik6IFNpbXBsaWZpZWQsIHJlbW92aW5nIHVu
bmVjZXNzYXJ5IGZsb2F0aW5nIHBvaW50IG1hdGguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpGaWx0ZXJPcGVyYXRpb25zKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBn
ZW5lcmF0ZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0
b3I9KTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlciBnZW5lcmF0ZSB0aGlzLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6IFN0cmVhbWxpbmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VGaWx0ZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogUmVtb3Zl
ZCBpbmNsdWRlZCBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6IFR3ZWFrZWQgZm9ybWF0dGluZy4gUmVtb3ZlZCBuZXN0aW5n
CisgICAgICAgIGZyb20gI2lmIHNpbmNlIG91ciBmb3JtYXR0aW5nIG1ha2VzIGl0IGhhcmQgdG8g
c2VlIG5lc3RpbmcuIExldCB0aGUgY29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGUgdGhlIGRlZmF1
bHQgbW92ZSBhbmQgY29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbmVtbnQgb3BlcmF0b3JzIGV4
Y2VwdAorICAgICAgICBpbiB0aGUgVVNFKEZSRUVUWVBFKSBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKTogVXBkYXRlZCBzaW5jZSBjbG9uZSBub3cgcmV0dXJu
cyBhIFJlZgorICAgICAgICByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0aW9uVmFsdWUpOiBEZWxldGVkLiBMZXQg
dGhlIGNvbXBpbGVyCisgICAgICAgIGdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpdGhv
dXQgZGVmaW5pbmcgaXQgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6IFVzZSBhIG1vZGVybiBmb3IK
KyAgICAgICAgbG9vcCwgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSwgYW5kIHVuY2hlY2tlZCBhcHBl
bmQuIEFsc28gdGVsbCB0aGUgY29tcGlsZXIgdG8KKyAgICAgICAgZ2VuZXJhdGUgdGhlIG1vdmUg
Y29uc3RydWN0b3IsIHNpbmNlIHRoZSBzcGVjaWFsIHdvcmsgaXMgb25seSBuZWVkZWQgZm9yIHRo
ZQorICAgICAgICBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQW5p
bWF0aW9uVmFsdWU6OkZpbHRlckFuaW1hdGlvblZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6S2V5ZnJhbWVWYWx1ZUxpc3QpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFBhc3NSZWZQdHIuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhT
aHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKTogVXBkYXRlZAorICAgICAgICBmb3IgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgRG9uJ3QgYm90aGVyIHNldHRpbmcgbV9jbGllbnQgc2luY2Ugd2Ug
bmV2ZXIgdXNlIGl0LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBDbGVhbiB1cCBjb2RlIGEgYml0CisgICAgICAgIGJ5IHVz
aW5nIGF1dG8gYSBsb3QgbW9yZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6IEFkZGVkIGluY2x1ZGUKKyAgICAg
ICAgdGhhdCBpcyBub3cgbmVlZGVkIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2Ug
Y2xhc3MuIFRpZGllZCB0aGUgY2xhc3MKKyAgICAgICAgdXAgYSBiaXQsIG1hcmtpbmcgaXQgZmlu
YWwsIG1ha2luZyBldmVyeXRoaW5nIHByaXZhdGUsIHRha2luZyBhIHJlZmVyZW5jZSwgYW5kCisg
ICAgICAgIHJlbW92aW5nIGFuIHVudXNlZCBkYXRhIG1lbWJlciwgbV9jbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOiBQYXNzIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDoKKyAgICAgICAgYWRkZWQgaW5jbHVkZSBvZiBXVEZTdHJpbmcuaCwgbm93
IG5lZWRlZCBiZWNhdXNlIG9mIHJlbW92aW5nIGFuIHVubmVlZGVkCisgICAgICAgIGluY2x1ZGUg
ZnJvbSBhbm90aGVyIGhlYWRlciBmaWxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCk6IFVwZGF0ZWQgc2luY2UgdHJpZ2dlcgorICAg
ICAgICBpcyBhIHJhdyBwb2ludGVyIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgcmV0dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVy
QW5pbWF0aW9uRW5kcG9pbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAo
LVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOiBDSGFuZ2VkIGFy
Z3VtZW50IHRvIGJlIGEKKyAgICAgICAgUmVmUHRyJiYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaXplRnJvbU5TQ29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5naHRTaXplIHN0cnVjdC4K
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrYm94U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6cmFkaW9TaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJv
bFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5pbXVtQ29udHJv
bFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEZvY3VzKTogVXBkYXRlZCB0byBwYXNzIGEgcmVm
ZXJlbmNlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2Nr
LmNwcDogUmVtb3ZlZC4gVW51c2VkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlTW90
aW9uQ2xpZW50TW9jay5oOiBSZW1vdmVkLiBVbnVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6
IFJldHVybiBhIFJlZiBpbnN0ZWFkIG9mIGEgUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaGFyZWRDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRDdXJzb3JC
eU5hbWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0KTog
UmVtb3ZlZCBhIG5vLWxvbmdlci1uZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6IFVwZGF0
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4gQWxzbworICAgICAgICB1c2VkIGEgdmVjdG9yIHRvIGl0
ZXJhdGUgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIgaW5zdGVhZCBvZiByZWN1cnNp
b24uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6IFRh
a2UgYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1h
c2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKTogVXNlIGF1dG8gYSBi
aXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0
ZW50KTogVXNlIHJlZmVyZW5jZSBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFza0NsaXBSZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZpbGxMYXllcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJzVXNlSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKTogVXNlIHJlZmVyZW5j
ZSBmb3IKKyAgICAgICAgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdl
b21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KTogVXNl
IHJlZmVyZW5jZXMgZm9yIHRoZSBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKTogVXNlIFJlbmRlclN0eWxlOjpyZXBsYWNlIHRvIHJl
cGxhY2UgdGhlCisgICAgICAgIG9sZCBzdHlsZSB3aXRoIHRoZSBuZXcgc3R5bGUsIGFuZCBnZXQg
dGhlIG9sZCBvbmUgb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJz
LgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxsTGF5ZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFVwZGF0ZWQgZm9y
IHRoZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25PZmZzZXQpOgorICAgICAgICBSZWZhY3RvciBzbyB3ZSBkb24ndCBuZWVkIHNvIG1hbnkg
ZnVuY3Rpb25zIGluIFJlbmRlclN0eWxlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOiBQYXNzIHdpZGdl
dCBhcyByZWZlcmVuY2UgdG8gYWRkQ2hpbGQuCisgICAgICAgIEFsc28gZGlkIGEgZmV3IG90aGVy
IHR3ZWFrcyBhbmQgdXNlZCBtb3JlIHNwZWNpZmljIHR5cGVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVU
aWxlZEltYWdlKTogVXBkYXRlZCBzaW5jZSBsYXllcnMgYXJlIHJlZmVyZW5jZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJh
Y2tncm91bmRJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKTogVXBkYXRlZCB0byB1c2UKKyAgICAg
ICAgcmVmZXJlbmNlcyBmb3IgbGF5ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6IFVz
ZSBXVEZNb3ZlIHRvIHBhc3MgYSBMZW5ndGhCb3guCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6aXNDb250cm9sU3R5bGVkKTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3Ry
dWN0LAorICAgICAgICBtb3JlIFdURk1vdmUsIGNoYW5nZSBzaW5jZSBsYXllcnMgYXJlIGZlcmVu
Y2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cyk6IFVzZSBtb3ZlCisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9v
cCBpbnN0ZWFkIG9mIGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1Bh
cmVudFNvb24pOiBUYWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFs
dWU6OnJlc2V0KTogVXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2
YWx1ZSByZWZlcmVuY2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUp
OiBVcGRhdGVkIHNpbmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVt
b3ZlZCBuby1sb25nZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0
dXJuIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5j
ZSBtYXRoTUxTdHlsZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlT
dHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNo
b3VsZE1vdmVMaW1pdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVy
dGljYWxQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0
aFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9y
ZGVyRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVy
UmFkaXVzKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1i
ZXIgbmFtZXMuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxp
emVyIGxpc3RzIHNvIHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJl
cXVpcmluZyBleHBsaWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5v
LWxvbmdlciBuZWVkZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJl
cGxhY2UpOiBBZGRlZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisg
ICAgICAgIGNhbiBiZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2
YWx1ZSBvdXQgd2l0aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBh
Ym91dCBub3QgYmVpbmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVp
bmcKKyAgICAgICAgbW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3Rk
OjpleGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQm
KTogQWRkZWQgb3BlcmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVu
Y2VzIHdpdGhvdXQgYW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vz
cyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0
ZWQgc2luY2UgdGltaW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1
bm5lZWRlZCBjYWxsIHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFy
ZSByZWR1bmRhbnQgc2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAg
ICBkYXRhIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9y
PT0pOiBUd2Vha2VkIGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xh
c3MKKyAgICAgICAgZm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlv
biBpbiB0aGlzCisgICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBl
bGltaW5hdGUgdGhlIHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFy
ZCBkYXRhIG1lbWJlciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVy
TmFtZSBpbiBhCisgICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGlj
bHkgYWNjZXNzaWJsZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJu
IG1vcmUgcmVmZXJlbmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJu
IGZvciBsb29wcy4KKyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24g
YnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0
aGUgaGVhcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFk
ZGVkIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ug
b3BlcmF0aW9uLCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0
ZDo6ZXhjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFk
ZGVkLiBDYWxscyB0aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0
IGVxdWFsaXR5CisgICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1h
bCBlZmZpY2llbmN5IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
RGFzaGJvYXJkUmVnaW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNl
dCBvZiBmdW5jdGlvbnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUu
CisgICAgICAgIEFsc28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNo
bmlxdWUuIFJlbW92ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3
aXRoIHRoZSBlbGFib3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5k
c2hpcAorICAgICAgICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2
YXRlLiBNb3ZlZCBsYXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25J
dGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0
cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3Rp
ZnlDb250ZW50T3ZlcmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25U
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2Vs
ZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0
aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVt
c092ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRB
bGlnblNlbGZPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNP
dmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3Bw
OiBTaW1pbGFyIGNoYW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpj
cmVhdGUpOiBUYWtlIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlVmFsdWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVz
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRv
OyBtYWtlIHRoZW0gcHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8t
bG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6
IFRha2UgYW4gcnZhbHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3Rv
bVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjb250YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBk
YXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zv
cm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0
YS5oOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUg
c2luY2UgbGF5ZXJzIGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMDkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEpTU291cmNl
Q29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUKQEAgLTM3MCw3
ICs5ODksNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdz
IG9mIHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRo
ZSBzZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVj
ZSBDUFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDhhMDY1ZjEzMDQxOGRhMjcwYjZmYmE2NzI4OTUyOWViYWU0YzYzZGEuLjY2NjY0
ZTdhMzhhYmU3ZGIxN2MwZjhjMmI1NDU4MjM2MjkzNTQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldp
ZGdldDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdp
b25zRm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2lu
Y2UgdGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgor
CiAyMDE3LTAxLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgUGFzc1JlZlB0ciB1c2UgZnJvbSAiaW5zcGVjdG9yIiwgInBsYXRmb3JtL3NxbCIsIGFu
ZCAicGxhdGZvcm0vdGV4dCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDk0MDQ2M2FhYzM5MWIzMDI2NmNiMDY5
ZGQwYWRmODE5Zjg3Yjg0Li4zN2Q5OTA3NjhhYmE5YTcyYmQ4Y2U5OGFlZThhMDdmNWRmZWI1NzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMDkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBv
ZiAicGxhdGZvcm0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmVuY29kZSk6IFVwZGF0ZWQgc2luY2UgdGltaW5nIGZ1bmN0aW9uCisgICAg
ICAgIHJldHVybnMgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6ZGVjb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVu
Y3Rpb24KKyAgICAgICAgc2V0dGVycyBub3cgdGFrZXMgYW4gcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOiBVcGRhdGVkIHNp
bmNlIGFkZENoaWxkIG5vdyB0YWtlcyBhIHJlZmVyZW5jZS4KKwogMjAxNy0wMS0wOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyb3AgVk5vZGVUcmFj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMWJkNGQ3N2Q2YzU1OTE3MDEzNzhkYjRiZjAzZjZkZGVhN2U2
ODk5NS4uZWRlNzU0MzdhMzRmM2Y1ZGU5MmYyNTBkNWQxMGQxZmI4YTNlMmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIEluamVjdGVkU2NyaXB0SG9z
dCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Jj4o
bV93cmFwcGVkLmdldCgpKTsgfQorICAgIEluamVjdGVkU2NyaXB0SG9zdCYgaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogCiAgICAgLy8gQXR0cmlidXRlcy4KICAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4IDRiODZkZWM3MWE3MjM3NGU3MTEyM2Uy
OTI0MTZjOTJmN2U2ZjNiN2EuLmVhNDNmZjE1ZjdiNWYwN2ZjYmYyZDZiMWI1M2Y2MTdjM2RiZWIy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBQcml2YXRlTmFtZShQcml2YXRlTmFtZSYmKSA9
IGRlZmF1bHQ7CiAKLSAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFN5bWJvbEltcGwmPihtX3VpZC5nZXQoKSk7IH0KKyAgICBTeW1ib2xJbXBsJiB1aWQoKSBj
b25zdCB7IHJldHVybiBtX3VpZDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICZ1aWQoKSAhPSAmb3RoZXIudWlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNDdlNWZhMDk2ZTgxNjAzYzA4ZTU2
YmFmMWU4YWJkZGYwOTAxYWIyNS4uZTk1NTM1MmRmZjdhNTUyOTk5ODBhOWM5YzY3ZTJmM2U3NWM3
MTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmLmgKQEAgLTEzMywxNyArMTMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
cHRyKTsKICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gbV9wdHI7IH0KLQotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRy
KTsgcmV0dXJuICptX3B0cjsgfQotICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
ICptX3B0cjsgfQotCi0gICAgb3BlcmF0b3IgVCYoKSB7IEFTU0VSVChtX3B0cik7IHJldHVybiAq
bV9wdHI7IH0KLSAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuICptX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9CisgICAgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJl
dHVybiAqbV9wdHI7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZjxUPiByZXBsYWNl
KFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NmViMzE0Njk5YWJkNTE0OWE5ZDRiNWZmOWU5MTY4NTg2NTQ5ODEzZC4uMzA4ODFkM2JlMjgxZDAx
YzcxMzNhN2M3NmZmZWIwZjdiZTFlY2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNzcs
NyArMjI3Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vU0RQUHJvY2Vzc29yU2NyaXB0UmVzb3VyY2UuY3BwCiAKLSAgICBwbGF0Zm9ybS9tb2NrL0Rl
dmljZU1vdGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMGJiNDZlYmU0OTJlOTAx
ZTY4NTg2ODM3ZTM3OGRjYWI0MDU3M2RmYy4uZTFlNzM1YTQwYjU1MGZhNjFhZjUxYTZiMGU4Mzc4
YTQwMmFjOTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IGQ4YmM3YTU1YzMwOTk5MTgwNTNjNzEzYzJiNmM5OGFlMzU3ZGQxYTMuLjY3NDZmNGVm
NGFmM2VhNjgwY2U0ZjExODMxNzBhMzY3MGQ4OGYxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBSZWY8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25DbwogCiBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1V
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKaW5kZXggNWYxNDE5NzU5NTdlNGZlZDljMmRkY2ZjMjY2N2JlNDIzYWI1OGNmMS4uYjVj
YjUyMDAyMzYxMGFiMTM4ZDQ2Y2VmZTA0NWFiOTFiYzE0ZjUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2wKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnRl
eHQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsgfQpAQCAtNjIsMjEgKzYyLDIxIEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+c3RhcnRUaW1lKCk7IH0KICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAKLSAg
ICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwotCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CiAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
cGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCiAgICAgUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJl
ZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKLQotICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggZjkw
Zjk2YTBlZWE3M2I5ZjlhNTFiYjQ1MTE0MGYwNmQwM2I5MDE0Ny4uN2E2MWJjYWRiMGMzYmM5YjMw
MDBmZWMyMTljNTE3OWEzNTZmZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKQEAgLTQ0OSw4ICs0NDksOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBUKiBwKSB7IHJl
dHVybiBjb25zdF9jYXN0PFQqPihwKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
JiBnZXRQdHJPclJlZihjb25zdCBUJiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQmPihwKTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHJPclJlZihjb25zdCBSZWZQdHI8
VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxUJj4ocC5nZXQoKSk7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRyPFQ+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQmIGdldFB0ck9yUmVmKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gcC5nZXQoKTsgfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNi
NzU4ZS4uNmYzNzQ2MmEyODEyMTE3YjNiZmZmMjM0YTIzMGVhZjk5NzQ0ODIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSW1wbGVtZW50YXRpb25DbGFzcyBET01XcmFwcGVkOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RPTVdyYXBwZXIgPSB0cnVlOwogCi0gICAgSW1wbGVtZW50
YXRpb25DbGFzcyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1wbGVtZW50
YXRpb25DbGFzcyY+KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNz
JiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZldyYXBwZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNET01XcmFw
cGVyPEltcGxlbWVudGF0aW9uQ2xhc3M+LCBtX3dyYXBwZWQpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmlu
ZGV4IGIzZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjAwY2NhY2Q5NjRk
ZTVlZWUzNzBjZWFjYzBlOWRmMjE0MWI0NzgwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtNTQsMTAgKzU0LDkgQEAgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVyKCkKIHsKICAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IG1fbG9hZGVycykKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXImPihsb2FkZXIuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgIGxvYWRl
ci0+Y2xlYXJDbGllbnQoKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1Jvb3RNb2R1bGUoSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQogewogICAgIHJldHVybiBpbXBvcnRlck1vZHVsZUtl
eS5pc1N5bWJvbCgpIHx8IGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggMDg4NjRmYTFhNjhlNDFh
YzdlZGNkZmRlN2RiNGFhZDBiMWY0MGUxNS4uNWYyMjVmNzRhYmI1NTI5MGFjZjExNjkyYzY2Y2Zi
ODNiN2JiMzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cApAQCAtMTQ0LDE4ICsxNDQsMTYgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKIHN0YXRpYyBM
ZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCk7Ci0g
ICAgcmV0dXJuIExlbmd0aFNpemUoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQo
KSkpOworICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIHJldHVybiB7
IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29udmVydFRv
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OwogfQogCiBzdGF0aWMgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlKQogewotICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgIExlbmd0aCBvZmZzZXQgPSBMZW5ndGgoMCwgRml4ZWQpOwotCiAgICAg
Q1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7CisgICAgTGVuZ3RoIG9mZnNldCB7IDAs
IEZpeGVkIH07CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2Vu
dGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKQEAgLTE2Niw2ICsxNjQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRp
bmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKIAorICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29y
ZCkgewogICAgIGNhc2UgQ1NTVmFsdWVUb3A6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDJmYmU5YzE0ZDQyZWMxY2RjNmZhMTgyM2I4NWNjM2U0NzIyMzQyNzguLmU4NGQ1OTk3NzFl
ZjU3ZjVmOTZlZWRhOGUyM2FjMGM2MGRmMGY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtz
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBTZW5jaGEsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTYwNiwxMSArNjA2LDEwIEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94KQogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6b250YWxS
ZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0
UnVsZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7Ci0KKyAgICBhdXRvIGhvcml6b250YWxSZXBl
YXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVs
ZShpbWFnZS5ob3Jpem9udGFsUnVsZSgpKSk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2ZXJ0aWNhbFJlcGVhdDsKICAgICBpZiAoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSA9PSBpbWFn
ZS52ZXJ0aWNhbFJ1bGUoKSkKLSAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVw
ZWF0OworICAgICAgICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigp
OwogICAgIGVsc2UKICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkp
OwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1v
dmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CkBAIC02ODgs
MjAgKzY4NywyMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29u
c3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjb25zdAogICAgIHJldHVybiBDU1NSZWZs
ZWN0VmFsdWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7
CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3Np
dGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEZpbGxMYXll
ciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHBvc2l0aW9u
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAobGF5
ZXItPmlzQmFja2dyb3VuZFhPcmlnaW5TZXQoKSkgeworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAobGF5ZXIuaXNCYWNrZ3JvdW5k
WE9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKTsKLSAgICAgICAgcG9zaXRpb25MaXN0LmdldCgp
LmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLT5iYWNr
Z3JvdW5kWE9yaWdpbigpKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxheWVyLmJhY2tncm91bmRYT3JpZ2luKCkpKTsKICAgICB9
Ci0gICAgcG9zaXRpb25MaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGxheWVyLT54UG9zaXRpb24oKSwgc3R5bGUpKTsKLSAgICBpZiAobGF5ZXItPmlzQmFj
a2dyb3VuZFlPcmlnaW5TZXQoKSkgeworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKGxheWVyLnhQb3NpdGlvbigpLCBzdHlsZSkpOworICAgIGlmIChsYXll
ci5pc0JhY2tncm91bmRZT3JpZ2luU2V0KCkpIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFja2dyb3Vu
ZFlPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWU9yaWdpbigpKSk7CiAgICAgfQotICAg
IHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChsYXllci0+eVBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uTGlzdDsK
KyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsYXllci55
UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTc2NSwzOSArNzY0LDM4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7Ci0gICAgbGlzdC5nZXQoKS5hcHBl
bmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVzLmhlaWdodCgpLCBzdHlsZSkp
OworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShyYWRpdXMu
d2lkdGgsIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy5oZWlnaHQsIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJh
ZGl1cy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7Ci0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOworICAgIGlmIChyYWRpdXMud2lkdGggPT0gcmFk
aXVzLmhlaWdodCkKKyAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVl
KHJhZGl1cy53aWR0aCwgc3R5bGUpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMocmFkaXVzLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3Jk
ZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gYm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkud2lkdGgoKTsKLSAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQgPSBz
aG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7Ci0gICAg
Ym9vbCBzaG93SG9yaXpvbnRhbFRvcFJpZ2h0ID0gc2hvd0hvcml6b250YWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpKTsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoOworICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21SaWdo
dCA9IHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgpOworICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLndpZHRoKTsKIAotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCA9
IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUuYm9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpOwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9tUmln
aHQgPSBzaG93VmVydGljYWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7
Ci0gICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRl
clRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21M
ZWZ0ID0gc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodDsKKyAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCk7Cisg
ICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8
IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCAhPSBzdHlsZS5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCkuaGVpZ2h0KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRS
YWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJh
ZGl1cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wUmlnaHRSYWRpdXMg
PSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0g
Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KSwgc3R5bGUpOworICAgIGF1dG8gdG9wTGVmdFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcFJp
Z2h0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlKTsKKyAgICBhdXRvIGJvdHRvbVJpZ2h0UmFkaXVzID0gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKTsK
KyAgICBhdXRvIGJvdHRvbUxlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5
bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgYXV0byBob3Jpem9udGFsUmFkaWkgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcExlZnRSYWRp
dXMtPml0ZW0oMCkpOwogICAgIGlmIChzaG93SG9yaXpvbnRhbFRvcFJpZ2h0KQogICAgICAgICBo
b3Jpem9udGFsUmFkaWktPmFwcGVuZCgqdG9wUmlnaHRSYWRpdXMtPml0ZW0oMCkpOwpAQCAtODA2
LDkgKzgwNCw5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9y
dGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKHNob3dIb3Jpem9u
dGFsQm90dG9tTGVmdCkKICAgICAgICAgaG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKmJvdHRvbUxl
ZnRSYWRpdXMtPml0ZW0oMCkpOwogCi0gICAgbGlzdC5nZXQoKS5hcHBlbmQoaG9yaXpvbnRhbFJh
ZGlpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKGhvcml6b250
YWxSYWRpaSkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmVydGljYWxSYWRpaUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2ZXJ0aWNh
bFJhZGlpTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2
ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCp0b3BMZWZ0UmFkaXVzLT5pdGVtKDEpKTsKICAgICBp
ZiAoc2hvd1ZlcnRpY2FsVG9wUmlnaHQpCiAgICAgICAgIHZlcnRpY2FsUmFkaWlMaXN0LT5hcHBl
bmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDEpKTsKQEAgLTgxNyw4ICs4MTUsOCBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93VmVydGljYWxCb3R0b21MZWZ0KQogICAgICAg
ICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBwZW5kKCpib3R0b21MZWZ0UmFkaXVzLT5pdGVtKDEpKTsK
IAotICAgIGlmICghdmVydGljYWxSYWRpaUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpsaXN0LmdldCgpLml0ZW0oMCkpKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmVy
dGljYWxSYWRpaUxpc3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaWYgKCF2ZXJ0aWNhbFJhZGlp
TGlzdC0+ZXF1YWxzKGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QtPml0ZW0oMCkpKSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmVydGljYWxSYWRpaUxpc3QpKTsKIAogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtODg3LDcgKzg4NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNv
bXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOworICAg
IGxpc3QtPmFwcGVuZChtYXRyaXhUcmFuc2Zvcm1WYWx1ZSh0cmFuc2Zvcm0sIHN0eWxlKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKQEAgLTkzNCw3ICs5MzIsNyBAQCBSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmls
dGVyT3BlcmF0aW9uLnR5cGUoKSkgewpAQCAtOTk2LDcgKzk5NCw3IEBAIFJlZjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFIKICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tTaXplcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgYWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNv
bGxlY3RvciwgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChz
cGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJh
Y2tTaXplc1tpXSwgc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25JbmRleCA9
IHRyYWNrU2l6ZXMuc2l6ZSgpOwogICAgIH0KQEAgLTExODcsMTMgKzExODUsMTMgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBw
b3NpdGlvbikKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb24uaXNTcGFuKCkpIHsKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBv
c2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNwYW4pKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOwogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogI2VuZGlmCkBAIC0xMjA3LDE0ICsxMjA1LDE0IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uKQogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmlt
TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVHJh
bnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTI0Miw3ICsxMjQwLDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3Jv
bGxTbmFwQWxpZ24mIGFsaWcKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0
YSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKGNvbnN0IFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghd2lsbENoYW5nZURhdGEgfHwg
IXdpbGxDaGFuZ2VEYXRhLT5udW1GZWF0dXJlcygpKQpAQCAtMTI1MywxMyArMTI1MSwxMyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRXaWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxs
Q2hhbmdlRGF0YSogd2lsbENoYW5nZQogICAgICAgICBXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZVBy
b3BlcnR5UGFpciBmZWF0dXJlID0gd2lsbENoYW5nZURhdGEtPmZlYXR1cmVBdChpKTsKICAgICAg
ICAgc3dpdGNoIChmZWF0dXJlLmZpcnN0KSB7CiAgICAgICAgIGNhc2UgV2lsbENoYW5nZURhdGE6
OlNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6Q29udGVudHM6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudHMpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQ29udGVudHMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdpbGxDaGFuZ2VEYXRhOjpQcm9wZXJ0eToKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmVhdHVyZS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGZlYXR1cmUuc2Vjb25kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWxs
Q2hhbmdlRGF0YTo6SW52YWxpZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTQ1NiwzOSArMTQ1NCwzOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVh
c3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAg
ICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYg
KGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVy
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3Qp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
YW5pbUxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0
aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7CiAgICAgfQogICAgIHJl
dHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlv
blZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24m
IHRpbWluZ0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkg
eworICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdG
dW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5j
dGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZh
bGlkOwogICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
KSB7CkBAIC0xNTExLDU5ICsxNTA5LDYwIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0CiAgICAg
ICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJP
ZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpz
dGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVz
cygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAg
ICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkg
PT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKKyAgICAgICAgQVNTRVJUKHRpbWlu
Z0Z1bmN0aW9uLnR5cGUoKSA9PSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb24pOwogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVMaW5lYXIpOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRp
b25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9u
KGkpLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1
bmN0aW9uKCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAogI2lmIEVOQUJMRShD
U1NfQU5JTUFUSU9OU19MRVZFTF8yKQotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0
aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKKworc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIHRyaWdnZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKLSAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgeworICAgIHN3
aXRjaCAodHJpZ2dlci50eXBlKCkpIHsKICAgICBjYXNlIEFuaW1hdGlvblRyaWdnZXI6OkFuaW1h
dGlvblRyaWdnZXJUeXBlOjpTY3JvbGxBbmltYXRpb25UcmlnZ2VyVHlwZTogewotICAgICAgICBh
dXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKnRyaWdnZXIpOworICAgICAgICBhdXRvJiBzY3JvbGxBbmltYXRpb25UcmlnZ2VyID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4odHJpZ2dlcik7CiAgICAgICAgIGlmIChz
Y3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwg
c3R5bGUpKTsKICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6
Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLCBzdHlsZSkpOwogICAgIH0KICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQodHJpZ2dlci0+dHlwZSgpID09IEFuaW1hdGlvblRyaWdn
ZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOworICAg
ICAgICBBU1NFUlQodHJpZ2dlci50eXBlKCkgPT0gQW5pbWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9u
VHJpZ2dlclR5cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSk7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgIH0KIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEFuaW1hdGlvblRy
aWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblRyaWdnZXJWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bmltTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCku
Z2V0KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9u
VHJpZ2dlclZhbHVlKCphbmltTGlzdC0+YW5pbWF0aW9uKGkpLnRyaWdnZXIoKSwgc3R5bGUpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJp
Z2dlclZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKLQor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbFRyaWdnZXIoKS5nZXQoKSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdDsKIH0K
KwogI2VuZGlmCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCkBAIC0xNzAwLDcgKzE2OTksNyBAQCBzdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4
dERlY29yYXRpb24pCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSkpOwogICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3Zl
cmxpbmUpCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAKICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRp
b25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQpAQCAtMTc1OCw3ICsxNzU3LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0
RW1waGFzaXNQb3NpdGlvbgogICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb25VbmRlcikpKTsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpKSk7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAodGV4dEVtcGhh
c2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcikpOwog
ICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIp
CkBAIC0xNzY3LDE2ICsxNzY2LDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24KICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
ZWZ0KSk7CiAgICAgaWYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRp
b25SaWdodCkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSaWdodCkpOwotCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBoYW5naW5nUHVuY3R1YXRpb25U
b0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24pCiB7CiAgICAg
YXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24p
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRmlyc3QpKTsKICAgICBpZiAoaGFuZ2luZ1B1bmN0dWF0aW9uICYgQWxsb3dFbmRI
YW5naW5nUHVuY3R1YXRpb24pCkBAIC0xNzg3LDcgKzE3ODUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBoYW5naW5nUHVuY3R1YXRpb25Ub0NTU1ZhbHVlKEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5n
aW5nUHVuYwogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxhc3QpKTsKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgIHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1
ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQpAQCAtMTgwMyw4ICsx
ODAxLDggQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxS
ZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXRZKTsKIAogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0Lmdl
dCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CisgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh4UmVwZWF0KSk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh5UmVwZWF0KSk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAKQEAgLTE4MjcsNDAgKzE4MjUsNDAgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3Qg
UmVuZGVyU3QKICAgICBpZiAoZmlsbFNpemUudHlwZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Q292ZXIpOwogCi0gICAgaWYgKGZpbGxTaXplLnNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUu
d2lkdGgoKSwgc3R5bGUpOworICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodC5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS53aWR0aCwgc3R5bGUpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUu
c2l6ZS5oZWlnaHQoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLndpZHRoLCBzdHlsZSkpOworICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUuaGVp
Z2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdHls
ZS5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAg
ICAgCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERh
dGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVy
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0
LmdldCgpLmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmlt
YWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1h
Z2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAg
ICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpLnRleHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICB9Ci0gICAgaWYgKHN0eWxlLT5oYXNG
bG93RnJvbSgpKQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykpOworICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewotICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG1hcCA9IHN0eWxlLT5jb3VudGVy
RGlyZWN0aXZlcygpOworICAgIGF1dG8qIG1hcCA9IHN0eWxlLmNvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCkBAIC0xODgzLDE0ICsxODgx
LDIxIEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5
SUQpKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlMaXN0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250Q2FzY2FkZSgpLmZhbWlseUNvdW50KCk7ICsr
aSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQodmFsdWVGb3JGYW1pbHkoc3R5bGUtPmZvbnRD
YXNjYWRlKCkuZmFtaWx5QXQoaSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5
bGUuZm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckZhbWlseShzdHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRGYW1pbHlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmIChzdHlsZS5mb250Q2FzY2Fk
ZSgpLmZhbWlseUNvdW50KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmFtaWx5KHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5QXQoMCkpOworICAgIHJldHVybiBmb250RmFtaWx5TGlz
dEZyb21TdHlsZShzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
bmVIZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIExlbmd0
aCBsZW5ndGggPSBzdHlsZS5saW5lSGVpZ2h0KCk7CkBAIC0xOTExLDIwMyArMTkxNiwyMDMgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCisgICAgaWYgKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50
Q29tbW9uTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJl
czo6WWVzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJlcykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9Db21tb25MaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgeworICAgIHN3aXRj
aCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6WWVzOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RGlzY3JldGlvbmFyeUxpZ2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpObzoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkp
IHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUhpc3Rv
cmljYWxMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1
cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlcykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Rm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250
ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRleHR1YWwpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9Db250ZXh0dWFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29udGV4dHVh
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50UG9z
aXRpb246Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudFBvc2l0
aW9uOjpTdWJzY3JpcHQ6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3ViKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVN1YikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
UG9zaXRpb246OlN1cGVyc2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1cGVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkpIHsKICAgICBj
YXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBz
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxsU21hbGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQWxsU21hbGxDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFNtYWxsQ2FwcykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6UGV0aXRlOgotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVBldGl0ZUNhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGV0
aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6QWxs
UGV0aXRlOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQWxsUGV0aXRlQ2FwcykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50Q2Fwczo6VW5pY2FzZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmlj
YXNlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuaWNhc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OlRpdGxpbmc6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlVGl0bGluZ0NhcHMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGl0bGluZ0NhcHMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUxpbmluZ051bXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluaW5nTnVtcykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6T2xkU3R5bGVOdW1i
ZXJzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9sZHN0eWxlTnVtcykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
c3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTcGFjaW5nKCkp
IHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3Bh
Y2luZygpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6UHJvcG9y
dGlvbmFsTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1z
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVByb3BvcnRpb25hbE51bXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nOjpUYWJ1bGFyTnVtYmVyczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUYWJ1bGFyTnVtcykpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVUYWJ1bGFyTnVtcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6RGlhZ29uYWxG
cmFjdGlvbnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRGlhZ29uYWxGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbjo6U3RhY2tlZEZyYWN0aW9uczoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFs
KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmlj
T3JkaW5hbCgpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWw6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9yZGluYWwpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlT3JkaW5hbCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Ok5vcm1hbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzo6WWVz
OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNsYXNoZWRaZXJvKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVNsYXNoZWRaZXJvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRj
aCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKKyAgICBz
d2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVzKCkpIHsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50QWx0ZXJuYXRlczo6SGlzdG9yaWNhbEZvcm1zOgotICAgICAgICBs
aXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUhpc3RvcmljYWxGb3JtcykpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVI
aXN0b3JpY2FsRm9ybXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgeworICAg
IHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZhcmlhbnQo
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM3OCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVK
aXM3OCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudDo6SmlzODM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzODMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSmlzODMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ6OkppczkwOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkw
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczkwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXMwNDoKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVKaXMwNCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXMwNCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6U2ltcGxpZmllZDoK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTaW1wbGlmaWVkKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNpbXBsaWZpZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ6OlRyYWRpdGlvbmFsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRy
YWRpdGlvbmFsKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRyYWRpdGlvbmFsKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZh
cmlhbnRFYXN0QXNpYW5XaWR0aCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0
QXNpYW5XaWR0aDo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6OkZ1bGw6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnVsbFdpZHRo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6OlByb3BvcnRpb25hbDoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxXaWR0aCkpOworICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVQcm9wb3J0aW9uYWxXaWR0aCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6OlllczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1YnkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdo
dEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWUxMDApOwogICAgIGNhc2UgRm9udFdlaWdodDIwMDoKQEAgLTIxMzgsMTkgKzIxNDMs
MTkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
eW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVTdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdHlsZSkpOwogICAgIGlmIChzdHlsZS5m
b250RGVzY3JpcHRpb24oKS5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KQot
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdlaWdodCkpOworICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVX
ZWlnaHQpKTsKICAgICBpZiAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygp
ICYgRm9udFN5bnRoZXNpc1NtYWxsQ2FwcykKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFs
bENhcHMpKTsKLSAgICByZXR1cm4gUmVmPENTU1ZhbHVlPihsaXN0LmdldCgpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlU21hbGxDYXBzKSk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxlbmd0aEdl
dHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxPYmplY3Q6
OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1wbGF0ZTxS
ZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1dGVkQ1NT
VmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgTGVuZ3RoIHVuem9vbXpl
ZExlbmd0aCA9IChzdHlsZS4qbGVuZ3RoR2V0dGVyKSgpOwogICAgIGlmICghaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgfHwgdW56b29temVkTGVuZ3RoLmlzRml4ZWQoKSkKQEAgLTIxNTksMTEgKzIx
NjQsOSBAQCBpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJn
aW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJgogfQogCiB0ZW1wbGF0ZTxSZW5kZXJTdHls
ZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXI+Ci1pbmxpbmUgYm9vbCBwYWRkaW5nT3JNYXJnaW5J
c1JlbmRlcmVyRGVwZW5kZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHBhZGRpbmdPck1hcmdpbklzUmVuZGVyZXJEZXBlbmRl
bnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICEoc3R5bGUgJiYgKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0eWxlICYmIHJlbmRlcmVyLT5pc0Jv
eCgpICYmICEoc3R5bGUtPipsZW5ndGhHZXR0ZXIpKCkuaXNGaXhlZCgpOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQpAQCAtMjQ0
NSwxMSArMjQ0OCwxMSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9z
aXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoY29uc3QgU3R5bGVTZQogICAgIGF1dG8mIGNzc1Zh
bHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEucG9zaXRp
b25UeXBlKCkgPT0gTGVnYWN5UG9zaXRpb24pCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOwotICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRp
b24oKSkpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTGVnYWN5KSk7CisgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRhdGEucG9zaXRpb24oKSkpOwogICAgIGlmIChkYXRhLnBvc2l0aW9u
KCkgPj0gSXRlbVBvc2l0aW9uQ2VudGVyICYmIGRhdGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0Fs
aWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCku
bGVuZ3RoKCkgPD0gMik7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8
PSAyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDU4LDIxICsyNDYxLDIxIEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbldpdGhPdmVyZmxvd0FsaWduCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSAhPSBDb250ZW50
RGlzdHJpYnV0aW9uRGVmYXVsdCkKLSAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOworICAgICAgICByZXN1bHQt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5kaXN0cmlidXRpb24oKSkpOwog
ICAgIGlmIChkYXRhLmRpc3RyaWJ1dGlvbigpID09IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0
IHx8IGRhdGEucG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwpIHsKICAgICAgICAg
Ym9vbCBncmlkRW5hYmxlZCA9IGZhbHNlOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgICAgIGdyaWRFbmFibGVkID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRhdGEu
cG9zaXRpb24oKSAhPSBDb250ZW50UG9zaXRpb25Ob3JtYWwgfHwgZ3JpZEVuYWJsZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRh
LnBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKG5v
cm1hbEJlaGF2aW9yVmFsdWVJRCkpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShub3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKICAg
ICB9CiAgICAgaWYgKChkYXRhLnBvc2l0aW9uKCkgPj0gQ29udGVudFBvc2l0aW9uQ2VudGVyIHx8
IGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVudERpc3RyaWJ1dGlvbkRlZmF1bHQpICYmIGRh
dGEub3ZlcmZsb3coKSAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpCi0gICAgICAgIHJlc3Vs
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkp
OwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkubGVuZ3RoKCkgPiAwKTsKLSAgICBBU1NFUlQocmVz
dWx0LmdldCgpLmxlbmd0aCgpIDw9IDMpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+
bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA8PSAzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk0LDEwICsyNDk3LDEwIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3BlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG93bmVkU3R5bGU7
CiAgICAgYXV0byogc3R5bGUgPSBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSgqc3R5bGVk
RWxlbWVudCwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUN1c3RvbSwgb3du
ZWRTdHlsZSk7Ci0gICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmhhc0N1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5VmFsdWUocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gc3R5bGUtPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQocHJvcGVydHlOYW1lKTsK
IH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VGV4dChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTI1NjAsODggKzI1NjMsNjkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
Q29sb3JWYWx1ZShtX2FsbG93VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAg
ICAgICAgaWYgKCFsYXllcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllcnMtPmltYWdlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMtPmltYWdlKCktPmNzc1ZhbHVlKCk7Ci0K
KyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2UgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXll
cnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgeworICAgICAgICAgICAgICAg
IGlmIChsYXllcnMuaW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVycy5p
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vy
ckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KSB7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1
cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyckxheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3VyckxheWVyLT5pbWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy0+c2l6ZSgpLCAqc3R5bGUpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFsYXll
cnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxsU2l6ZVRvQ1NTVmFsdWUobGF5
ZXJzLnNpemUoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3Vyckxh
eWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXll
ci0+c2l6ZSgpLCAqc3R5bGUpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxheWVy
cy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUobGF5ZXJzLnJlcGVhdFgoKSwgbGF5ZXJzLnJlcGVhdFkoKSk7CisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGN1cnJMYXllci0+cmVwZWF0WCgpLCBjdXJyTGF5ZXItPnJl
cGVhdFkoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU291cmNlVHlwZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBzdHlsZS0+bWFza0xheWVycygpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwotCi0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLT5tYXNrU291cmNl
VHlwZSgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vy
ckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+bWFza0xh
eWVycygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUobGF5ZXJzLm1hc2tTb3VyY2VUeXBlKCkp
OworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJy
TGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoY3VyckxheWVyLT5tYXNrU291cmNl
VHlwZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUtPm1hc2tMYXll
cnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVy
cy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUobGF5ZXJzLT5jb21wb3NpdGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlm
ICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGxheWVycy5jb21wb3NpdGUoKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVy
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBs
aXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5hdHRhY2htZW50KCkpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBj
dXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVudCgpKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKQEAgLTI2NDksNjUgKzI2MzMsNTkgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRPcmlnaW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IEZpbGxMYXllciogbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgICAgICBi
b29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwotICAgICAgICAgICAgaWYgKCFsYXllcnMt
Pm5leHQoKSkgewotICAgICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGxheWVy
cy0+Y2xpcCgpIDogbGF5ZXJzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBj
dXJyTGF5ZXItPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoYm94KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0OworICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAo
KSA6IGxheWVycy5vcmlnaW4oKSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShp
c0NsaXAgPyBjdXJyTGF5ZXItPmNsaXAoKSA6IGN1cnJMYXllci0+b3JpZ2luKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0g
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVy
dHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3VyckxheWVyLCAqc3R5
bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+eFBvc2l0aW9uKCkpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy54UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7
IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICAgICAgY29uc3QgRmlsbExh
eWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+eVBvc2l0aW9uKCkpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAg
ICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRpb24oKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbGxhcHNl
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU2VwYXJhdGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygp
LCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZzoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpOwpAQCAtMjgyMiw3ICsyODAwLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q3Vy
c29yOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0OwotICAgICAgICAg
ICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBh
dXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKICAgICAgICAgICAgIGlmIChjdXJzb3Jz
ICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKQEAgLTI4ODEsNTkgKzI4NTks
NTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZmxvYXRpbmcoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTRm9u
dFZhbHVlPiBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZShzdHlsZSk7CisgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IENTU0ZvbnRWYWx1ZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPnN0eWxlID0gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgICAgICAgICBjb21wdXRlZEZvbnQt
PnZhcmlhbnQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29tcHV0ZWRGb250LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250
LT53ZWlnaHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICAg
ICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0
eWxlKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21T
dHlsZShzdHlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250OwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5TGlzdCA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5
bGUpOwotICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGZhbWlseSwgcmV0
dXJuIHRoYXQgYXMgYSBDU1NQcmltaXRpdmVWYWx1ZS4KLSAgICAgICAgICAgIC8vIE5PVEU6IEdl
Y2tvIGFsd2F5cyByZXR1cm5zIHRoaXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgQ1NTUHJpbWl0aXZl
VmFsdWUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKGZvbnRGYW1pbHlMaXN0LT5sZW5ndGgoKSA9
PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdC0+aXRlbSgwKTsKLSAg
ICAgICAgICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+ZmFtaWx5ID0gZm9udEZhbWlseUxpc3RGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21T
dHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CiAgICAgICAg
ICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udFZhcmlhbnRGcm9tU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJp
YW50RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTeW50aGVzaXM6CiAgICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNp
c0Zyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVT
ZXR0aW5nczogewogICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwog
ICAgICAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJl
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzOiB7CiAgICAgICAg
ICAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzID0gc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7CiAgICAgICAgICAgICBp
ZiAodmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiB2
YXJpYXRpb25TZXR0aW5ncykKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udFZh
cmlhdGlvblZhbHVlOjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9GbG93OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgQVNTRVJUKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJv
dygpIHx8IHN0eWxlLT5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSkKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVJvdykpOwpAQCAtMjk0Myw3ICsyOTE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwK
ICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNw
ZWNzIG1lbnRpb24gdGhhdCBnZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNl
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI5Nzks
MTMgKzI5NTEsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZENvbHVtblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRSb3dTaG9ydGhhbmQo
KSk7Ci0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS0+bmFtZWRHcmlkQXJlYSgpLCBzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCksIHN0eWxlLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgogICAgICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5HYXAo
KSwgKnN0eWxlKTsKQEAgLTMxMjAsMTAgKzMwOTAsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm9iamVjdFBvc2l0aW9uKCkueCgpLCAqc3R5bGUpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmpl
Y3RQb3NpdGlvbigpLnkoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CkBAIC0zMjI0LDMxICszMTk0LDMwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6CisgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogewogICAgICAgICAgICAgLy8g
SWYgQ1NTM19URVhUIGlzIGRpc2FibGVkIG9yIHRleHQtaW5kZW50IGhhcyBvbmx5IG9uZSB2YWx1
ZSg8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiksCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZS4KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dGV4dEluZGVudCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJ
bmRlbnQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgKnN0eWxlKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAgLy8gSWYgQ1NTM19URVhUIGlzIGVuYWJs
ZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVhY2gtbGluZSBvciAtd2Via2l0LWhhbmdp
bmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1
ZUxpc3QuCiAgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5n
aW5nKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQodGV4dEluZGVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodGV4dEluZGVudCkpOwogICAgICAgICAgICAgICAg
IGlmIChzdHlsZS0+dGV4dEluZGVudExpbmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlV2Via2l0RWFjaExpbmUpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5
bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlV2Via2l0SGFuZ2luZykpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAgfQogI2VuZGlm
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dEluZGVudDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKHRleHRJbmRlbnQpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
U2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN0eWxlLT50ZXh0U2hh
ZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CkBAIC0zMzIxLDggKzMyOTAsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPndpZHRoKCksICpzdHlsZSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaWxsQ2hhbmdlOgotICAgICAgICAgICAgcmV0dXJuIGdldFdp
bGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxlLT53aWxsQ2hhbmdlKCkpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICByZXR1cm4gd2lsbENoYW5nZVByb3BlcnR5VmFsdWUoc3R5bGUt
PndpbGxDaGFuZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT53b3JkQnJlYWso
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKQEAgLTMzOTQsOSArMzM2
Miw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkZWxh
eVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRGlyZWN0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAg
ICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+
c2l6ZSgpOyArK2kpIHsKQEAgLTM0MTcsMTIgKzMzODUsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShzdHls
ZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxl
LT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1v
ZGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmlt
YXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7
CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkg
ewpAQCAtMzQ0MywxMCArMzQxMSwxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQ6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsr
aSkgewpAQCAtMzQ1OCwyMCArMzQyNiwyMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0
aW9uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6IHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5
bGUtPmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0LT5hbmltYXRpb24oaSku
bmFtZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGU6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlv
bnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgewpAQCAtMzQ4MywxMyArMzQ1MSwxMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAg
IHJldHVybiB0aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVHJpZ2dlcjoKLSAgICAgICAgICAgIHJldHVybiBnZXRBbmltYXRpb25Ucmln
Z2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biBhbmltYXRpb25UcmlnZ2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKICNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmFwcGVhcmFuY2UoKSk7
CkBAIC0zNTMxLDggKzM0OTksOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAg
ICAgLy8gTm90IGEgcmVhbCBzdHlsZSBwcm9wZXJ0eSAtLSB1c2VkIGJ5IHRoZSBlZGl0aW5nIGVu
Z2luZSAtLSBzbyBoYXMgbm8gY29tcHV0ZWQgdmFsdWUuCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXI6IHsKLSAgICAgICAgICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExldHRlckRyb3Ao
KSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDog
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJvcCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNpemUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcCA9ICFzdHlsZS0+aW5pdGlhbExl
dHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbml0aWFsTGV0dGVyRHJv
cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIHNp
emUgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6
Y3JlYXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUoc2l6ZSkpKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CkBAIC0zNTUyLDcg
KzM1MjAsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmUo
KSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luOiB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAgICAgICAgICAgICAgaWYgKGlz
PFJlbmRlckJveD4oKnJlbmRlcmVyKSkKQEAgLTM1NjYsNyArMzUzNCw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCAqc3R5bGUpKTsK
IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDog
Q1NTVmFsdWVMb2dpY2FsKTsKQEAgLTM1ODUsMTMgKzM1NTMsMTMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyU2VsZWN0
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAg
ICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksICpzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAg
ICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRS
YWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCAqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpz
dHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUt
PmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGlwOiB7CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKTsKQEAgLTM2MDcsNyArMzU3NSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0
ZWRUcmFuc2Zvcm0ocmVuZGVyZXIsICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW46IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveDsKICAgICAg
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQpAQCAtMzYyMyw0MiArMzU5
MSw0MSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGlmIChzdHls
ZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksICpz
dHlsZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNmb3JtU3R5bGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQ
cmVzZXJ2ZTNEKSA/IENTU1ZhbHVlUHJlc2VydmUzZCA6IENTU1ZhbHVlRmxhdCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZGVs
YXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25WYWx1ZShz
dHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9u
UHJvcGVydHk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VHJhbnNpdGlvblByb3BlcnR5VmFsdWUo
c3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9w
ZXJ0eVZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBnZXRUaW1pbmdG
dW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB0
aW1pbmdGdW5jdGlvblZhbHVlKHN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb246IHsKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCk7Ci0gICAgICAgICAgICBpZiAoYW5pbUxp
c3QpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9uc0xp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byogYW5pbUxpc3QgPSBzdHlsZS0+dHJhbnNpdGlvbnMoKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8gdHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3Qt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uID0gYW5pbUxpc3QtPmFuaW1hdGlv
bihpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBhbmltYXRpb24g
PSBhbmltTGlzdC0+YW5pbWF0aW9uKGkpOwogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoYW5pbWF0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9u
LmR1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShhbmltYXRpb24udGlt
aW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShhbmltYXRpb24uZGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKGxpc3QucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKFdURk1vdmUo
bGlzdCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNp
dGlvbnNMaXN0OworICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHRyYW5zaXRpb25zTGlz
dCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAg
ICAgICAvLyB0cmFuc2l0aW9uLXByb3BlcnR5IGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUFs
bCkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxEdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsK
LSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZl
bnRzOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+
cG9pbnRlckV2ZW50cygpKTsKQEAgLTM2NzksMzMgKzM2NDYsMjkgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOgog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUoc3R5bGUtPmxpbmVC
b3hDb250YWluKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWx0OgotICAgICAgICAgICAg
cmV0dXJuIGFsdFRleHRUb0NTU1ZhbHVlKHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBhbHRU
ZXh0VG9DU1NWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoK
LSAgICAgICAgICAgIHJldHVybiBjb250ZW50VG9DU1NWYWx1ZShzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFs
dWUoc3R5bGUsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1Zh
bHVlKCpzdHlsZSwgcHJvcGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVy
UmVzZXQ6Ci0gICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoc3R5bGUsIHByb3Bl
cnR5SUQpOworICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKCpzdHlsZSwgcHJv
cGVydHlJRCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDbGlwUGF0aDogewotICAg
ICAgICAgICAgQ2xpcFBhdGhPcGVyYXRpb24qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgp
OworICAgICAgICAgICAgYXV0byogb3BlcmF0aW9uID0gc3R5bGUtPmNsaXBQYXRoKCk7CiAgICAg
ICAgICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgaWYg
KGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVy
YXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS51cmwoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKGlzPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgc2hhcGVPcGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
Pigqb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRv
d25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoKnN0eWxlLCBzaGFwZU9wZXJhdGlv
bi5iYXNpY1NoYXBlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc2hhcGVPcGVyYXRpb24ucmVm
ZXJlbmNlQm94KCkgIT0gQm94TWlzc2luZykKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3go
KSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJveE9wZXJh
dGlvbiA9IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveE9wZXJh
dGlvbi5yZWZlcmVuY2VCb3goKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGxpc3Q7CisgICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRp
b24pKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnJlZmVyZW5jZUJv
eCgpKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJ
bnRvOgpAQCAtMzczOCwyMCArMzcwMSwxOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aXNvbGF0aW9u
KCkpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2Rl
OiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLT5ibGVuZE1vZGUo
KSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxM
YXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRM
YXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy5ibGVuZE1vZGUoKSk7Cisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXll
cjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmJsZW5kTW9kZSgpKSk7
Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxh
eW91dCk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIGlmICgh
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPih2YWx1ZSwgcHJvcGVydHlWYWx1ZShwcm9wZXJ0
eSwgRG9Ob3RVcGRhdGVMYXlvdXQpKSkKQEAgLTM3NjgsNyArMzcyOSw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHN0eWxlLT5ib3JkZXJJbWFnZSgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSgqc3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIGJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKQEAgLTM5OTgsNyArMzk1OSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAog
ewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQpOworICAgIGF1dG8gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQp
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgYmUgbnVsbCBpbnN0ZWFkLCBhcyBpdCBpcyBpbiBTdHlsZVByb3BlcnRp
ZXM6OmdldFByb3BlcnR5VmFsdWU/CiAgICAgcmV0dXJuIHZhbHVlLT5jc3NUZXh0KCk7CkBAIC00
MDYzLDIyICs0MDI0LDIxIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAKIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KTsKLSAgICAgICAgbGlz
dC0+YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIH0KLSAgICByZXR1cm4gbGlz
dDsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtp
XSwgRG9Ob3RVcGRhdGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKwogICAgIC8vIEFzc3Vt
ZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRvcFZhbHVlID0gcHJvcGVydHlWYWx1ZShz
aG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlPiByaWdodFZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpWzFdLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21W
YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSwgRG9Ob3RVcGRh
dGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gcHJvcGVydHlWYWx1
ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzNdLCBEb05vdFVwZGF0ZUxheW91dCk7CisgICAgYXV0
byB0b3BWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9O
b3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gcmlnaHRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGF1dG8gYm90
dG9tVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0sIERvTm90
VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIGxlZnRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogCiAgICAgLy8gQWxsIDQg
cHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdo
dFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQpAQCAtNDA5NiwxNyArNDA1Niwx
NSBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIGlmIChzaG93TGVmdCkKICAgICAgICAg
bGlzdC0+YXBwZW5kKGxlZnRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIHJldHVybiBs
aXN0OworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9y
dGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9y
dGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgICAgIGxpc3Qt
PmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7
CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisgICAg
ICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0s
IERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gV1RGTW92
ZShsaXN0KTsKIH0KIAogUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCkBAIC00MTE0LDggKzQwNzIsNyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25z
dCBDUwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBhdXRvIHZhbHVlID0gcHJvcGVydHlWYWx1ZShzZXRbaV0p
OwotICAgICAgICBpZiAodmFsdWUpCisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJvcGVydHlW
YWx1ZShzZXRbaV0pKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ld
LCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwpAQCAtNDEzOCw3
ICs0MDk1LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY28KICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUlEKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gdmFsdWUtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdy
YXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAppbmRleCBjOGI2MTU1MGI2YmE3ZTYyYzNiNzMzZDQ1YWEwODU0MWEwODU1MDhhLi4zYzdjMjk5
NTYwYTgxZjE3YWQ2ODdhNWMzYzhiMjk2MzkzNDc5ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRHZW5lcmF0ZWRJbWFnZShDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlJiwgRmxvYXRTaXplLCBHZW5lcmF0ZWRJbWFnZSYpOwotICAgIEdl
bmVyYXRlZEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJhdGVk
SW1hZ2UmPihtX2ltYWdlLmdldCgpKTsgfQorICAgIEdlbmVyYXRlZEltYWdlJiBpbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KICAgICB2b2lkIHB1bnRFdmljdGlvblRpbWVyKCkgeyBt
X2V2aWN0aW9uVGltZXIucmVzdGFydCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggMDY0MmI4NzhjZTkzNTIzY2ZlMGFjZDk2MWU5MTc1
NGFlYmUwZWEwYS4uMDllN2FkMzEwNjUxZDFhMDg3ZjJkYjdkM2Y4NDRiNzMxODMzMjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjExLDEyICsyMTEsMTAg
QEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0g
bV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKS5zaXplKCkpOwotICAgIFJlZlB0cjxDU1NLZXlm
cmFtZVJ1bGU+JiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKKyAgICBh
dXRvJiBydWxlID0gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XTsKICAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJ1bGUgPSBhZG9wdFJlZihuZXcgQ1NTS2V5ZnJhbWVSdWxlKGNvbnN0X2Nh
c3Q8U3R5bGVSdWxlS2V5ZnJhbWUmPihtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2luZGV4
XS5nZXQoKSksIGNvbnN0X2Nhc3Q8Q1NTS2V5ZnJhbWVzUnVsZSo+KHRoaXMpKSk7Ci0KKyAgICAg
ICAgcnVsZSA9IGFkb3B0UmVmKCpuZXcgQ1NTS2V5ZnJhbWVSdWxlKG1fa2V5ZnJhbWVzUnVsZS0+
a2V5ZnJhbWVzKClbaW5kZXhdLCBjb25zdF9jYXN0PENTU0tleWZyYW1lc1J1bGUqPih0aGlzKSkp
OwogICAgIHJldHVybiBydWxlLmdldCgpOyAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKaW5kZXggMjBjNTZlNjZiZTRmNTNiN2FlNmRhN2UyMzY1OTk0ODlmZWU2
YTJjZi4uNDgyZmQzZGE4MmNhMmM2MDMzMTIzYTY2NGVkMTFiNDkyODMzZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3QKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1BB
SVI7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7Ci0gICAgbV92YWx1ZS5wYWlyID0g
JlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCgpLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCgpLCBzdHlsZSkpLmxlYWtSZWYoKTsKKyAgICBtX3ZhbHVlLnBhaXIg
PSAmUGFpcjo6Y3JlYXRlKGNyZWF0ZShsZW5ndGhTaXplLndpZHRoLCBzdHlsZSksIGNyZWF0ZShs
ZW5ndGhTaXplLmhlaWdodCwgc3R5bGUpKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmluaXQoUmVmPENvdW50ZXI+JiYgY291bnRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVJ1bGUuaAppbmRleCA4MTBiOWE0NTRkNjU3NmU4YWU3OGU0ZjVlYmNmZjBiMDEyYjczZjIwLi43
MWYzNTUwNTU2YzY4NWY4ZjVmMDUxNWRhMDAzMmE4OTkxNjdhNzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZSgpOwogCiAgICAgLy8gRklYTUU6IE5vdCBDU1NP
TS4gUmVtb3ZlLgotICAgIFN0eWxlUnVsZSYgc3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxTdHlsZVJ1bGUmPihtX3N0eWxlUnVsZS5nZXQoKSk7IH0KKyAgICBTdHlsZVJ1bGUm
IHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgQ1NTU3R5bGVSdWxlKFN0eWxlUnVsZSYsIENTU1N0eWxlU2hlZXQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCAyYTI3ZGRiMDA5NGU0ODZkMGUwNDQ1NmZi
NTM1ZWFkMmU1NjgzOGQ2Li44NWM0NGEyZjNhOWI0OWZkMTE2ZmFlZTFjMzk2MmE3YWQzZmRlMmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC0xODgsMTIgKzE4OCwxMSBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgRmlsbExheWVyJiBsYXllciwgYwogc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRUb0xl
bmd0aFNpemUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhLCBMZW5ndGhTaXplJiBzaXplKQogewog
ICAgIGlmIChhdXRvKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKLSAgICAg
ICAgc2l6ZS5zZXRXaWR0aChwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLSAgICAgICAgc2l6ZS5zZXRIZWlnaHQocGFpci0+c2Vj
b25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwor
ICAgICAgICBzaXplLndpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNv
bnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgc2l6ZS5oZWlnaHQgPSBwYWlyLT5z
ZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgc2l6ZS5zZXRXaWR0aChwcmltaXRpdmVWYWx1ZS5jb252ZXJ0
VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKLQotICAgIHJldHVybiAh
c2l6ZS53aWR0aCgpLmlzVW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0KCkuaXNVbmRlZmluZWQo
KTsKKyAgICAgICAgc2l6ZS53aWR0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxB
bnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgcmV0dXJuICFzaXplLndpZHRoLmlz
VW5kZWZpbmVkKCkgJiYgIXNpemUuaGVpZ2h0LmlzVW5kZWZpbmVkKCk7CiB9CiAKIHZvaWQgQ1NT
VG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5
ZXImIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApp
bmRleCBjOWZiNzMzNTk4NWI4YmM3YmU2ODY3YjhmNzFjZjIxMzE2MjU2YTNhLi5jMjg5Zjc4NDBh
YTY4Yzk4MTdlYmY0MWQ1NTI3NjZmYTIxNzYxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
QEAgLTI1OCwxMyArMjU4LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0
dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpCiAKIFN0cmluZyBGb250
RmFjZTo6ZmFtaWx5KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9i
YWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYmFja2luZy0+ZmFtaWxpZXMoKS0+Y3Nz
VGV4dCgpOwogfQogCiBTdHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKIHsKLSAgICBjb25z
dF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3dpdGNoICht
X2JhY2tpbmctPnRyYWl0c01hc2soKSAmIEZvbnRTdHlsZU1hc2spIHsKICAgICBjYXNlIEZvbnRT
dHlsZU5vcm1hbE1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIm5vcm1hbCIsIFN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBGb250RmFj
ZTo6c3R5bGUoKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3
aXRjaCAobV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250V2VpZ2h0TWFzaykgewogICAgIGNh
c2UgRm9udFdlaWdodDEwME1hc2s6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIjEwMCIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cmluZyBGb250
RmFjZTo6c3RyZXRjaCgpIGNvbnN0CiAKIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkg
Y29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNlJj4obV9iYWNraW5nLmdldCgpKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZh
bHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTMyMCwxMyAr
MzIwLDEzIEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKIAogU3RyaW5n
IEZvbnRGYWNlOjp2YXJpYW50KCkgY29uc3QKIHsKLSAgICBjb25zdF9jYXN0PENTU0ZvbnRGYWNl
Jj4obV9iYWNraW5nLmdldCgpKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9iYWNraW5n
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbXB1dGVGb250VmFyaWFudCht
X2JhY2tpbmctPnZhcmlhbnRTZXR0aW5ncygpKS0+Y3NzVGV4dCgpOwogfQogCiBTdHJpbmcgRm9u
dEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250
RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFj
a2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJl
U2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vcm1hbCIp
OwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4
IGIyMWRkNWQ1NjM3MzlmZmJkZDFkODlkODFlNWU0NDMwYWFlNmUxNTMuLjY4ZmZmZGViOWU0MmM3
MTYyM2Q4N2E1NzVjYTBkYzVjNzBhYWY3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5j
dGlvbnMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgi
CiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5j
bHVkZSAiTGVuZ3RoU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw2ICs1OSwx
MSBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSkKICAgICByZXR1cm4gMDsKIH0KIAorTGF5b3V0U2l6ZSBzaXpl
Rm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGgsIGNvbnN0IExheW91dFNpemUm
IG1heGltdW1WYWx1ZSkKK3sKKyAgICByZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGgud2lk
dGgsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoLmhlaWdodCwg
bWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworfQorCiAvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBs
YXlvdXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2Fu
IGJlIHJlbW92ZWQuIFNlZSBidWcgNzExNDMuCiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSkKIHsKQEAgLTExMyw3
ICsxMTksNyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBmbG9hdCBtYXhpbXVtVmFsdWUpCiAKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXpl
KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
IHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53
aWR0aCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUu
aGVpZ2h0KCksIGJveFNpemUuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGxlbmd0aFNpemUud2lkdGgsIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JM
ZW5ndGgobGVuZ3RoU2l6ZS5oZWlnaHQsIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAppbmRleCA5
ZDIyNGQ5MTEyN2U1ZjgzYWFiMTA0ODkyZGU2ODA0NjQxMThkZDZhLi4xYzRlMDUwZGE2MDRhNDNh
NTY4M2FhZmQyZWVkNDM2YTQ1MzEzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUmlrIENh
YmFuaWVyIChjYWJhbmllckBhZG9iZS5jb20pCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdo
dCAoQykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtMjksOCArMjksOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFNpemU7
Ci1jbGFzcyBMYXlvdXRVbml0OworY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFJlbmRlclZpZXc7
CisKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIApAQCAtMzgsNiArMzksNyBA
QCBpbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQg
bWF4aW11bVZhbHVlKTsKIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSk7CiBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBXRUJDT1JFX0VYUE9SVCBM
YXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlKTsKK0xheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYs
IGNvbnN0IExheW91dFNpemUmIG1heGltdW1WYWx1ZSk7CiBmbG9hdCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlKTsKIFdFQkNPUkVfRVhQ
T1JUIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11
bVZhbHVlKTsKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNp
emUmLCBjb25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNTM4MzQyN2Q5MmFiZmYxOTdl
N2ZhZGQ2ODc0Nzc3ZDdhODU0OWQ1Yy4uZDc2OWE1YTU4NmM4MTEyNzE4N2U3NTQ0MzJjOWYyYzVm
OGM3NzFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTMxLDM0ICszMiwzNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHBhaW50T3JkZXIo
UGFpbnRPcmRlciBwYWludE9yZGVyKQogewotICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IHBhaW50T3Jk
ZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIFJlZjxD
U1NWYWx1ZT4gZmlsbCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlRmlsbCk7Ci0gICAgUmVmPENTU1ZhbHVlPiBzdHJva2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSk7Ci0gICAgUmVmPENTU1ZhbHVlPiBtYXJr
ZXJzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJz
KTsKKyAgICBpZiAocGFpbnRPcmRlciA9PSBQYWludE9yZGVyTm9ybWFsKQorICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOwog
CisgICAgYXV0byBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBzd2l0Y2ggKHBhaW50T3JkZXIpIHsKICAgICBjYXNlIFBhaW50T3JkZXJO
b3JtYWw6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsOgotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURk1vdmUoZmlsbCkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRmlsbCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsTWFya2VyczoKLSAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKLSAgICAgICAgcGFpbnRPcmRlckxp
c3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUZpbGwpKTsK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
YWludE9yZGVyU3Ryb2tlOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUo
c3Ryb2tlKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQYWludE9yZGVyU3Ryb2tlTWFya2VyczoKLSAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZChXVEZNb3ZlKHN0cm9rZSkpOwotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5k
KFdURk1vdmUobWFya2VycykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKSk7CisgICAgICAg
IHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRl
ck1hcmtlcnM6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJz
KSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUGFpbnRPcmRlck1hcmtlcnNTdHJva2U6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBl
bmQoV1RGTW92ZShtYXJrZXJzKSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RG
TW92ZShzdHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU1hcmtlcnMpKTsKKyAgICAgICAgcGFp
bnRPcmRlckxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZVN0cm9rZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFdURk1v
dmUocGFpbnRPcmRlckxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCmluZGV4IGU0Yzc5NDNmODA4MjU1ZTI5MTZhNjcxZTRmNTk1M2M3ZGFmZDIxNzEuLmQ0
OTUwYTA2OWM5YTNmZjMwZWE2MWY1ZDE4YjRhMWZjOWFjMWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTI5NCwyMSArMjk0LDE5IEBAIGlubGlu
ZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NT
VG9MZW5ndGhDb252ZXJzaW9uCiAKIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJhZGl1cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1
ZS5wYWlyVmFsdWUoKTsKKyAgICBhdXRvKiBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9
LCB7IDAsIEZpeGVkIH0gfTsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVy
c2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOwotICAgIExlbmd0aCByYWRpdXNXaWR0aCA9IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252
ZXJzaW9uRGF0YSwgKnBhaXItPmZpcnN0KCkpOwotICAgIExlbmd0aCByYWRpdXNIZWlnaHQgPSBj
b252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5zZWNvbmQoKSk7Cisg
ICAgTGVuZ3RoU2l6ZSByYWRpdXMgeyBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRh
dGEsICpwYWlyLT5maXJzdCgpKSwgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRh
LCAqcGFpci0+c2Vjb25kKCkpIH07CiAKLSAgICBBU1NFUlQoIXJhZGl1c1dpZHRoLmlzTmVnYXRp
dmUoKSk7Ci0gICAgQVNTRVJUKCFyYWRpdXNIZWlnaHQuaXNOZWdhdGl2ZSgpKTsKLSAgICBpZiAo
cmFkaXVzV2lkdGguaXNaZXJvKCkgfHwgcmFkaXVzSGVpZ2h0LmlzWmVybygpKQotICAgICAgICBy
ZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKKyAg
ICBBU1NFUlQoIXJhZGl1cy53aWR0aC5pc05lZ2F0aXZlKCkpOworICAgIEFTU0VSVCghcmFkaXVz
LmhlaWdodC5pc05lZ2F0aXZlKCkpOworICAgIGlmIChyYWRpdXMud2lkdGguaXNaZXJvKCkgfHwg
cmFkaXVzLmhlaWdodC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKIAotICAgIHJldHVybiBMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCByYWRp
dXNIZWlnaHQpOworICAgIHJldHVybiByYWRpdXM7CiB9CiAKIGlubGluZSBMZW5ndGggU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCkBAIC03NjYsNyArNzY0LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVl
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIK
ICAgICB9CiAKICAgICBpZiAoaXNJbWFnZVNoYXBlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFNo
YXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFs
dWUpLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlOwog
ICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKQEAgLTc4Niw3ICs3ODQs
NyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlcgogICAgIH0KIAogICAgIGlmIChzaGFwZSkKLSAg
ICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKHNoYXBlKSwgcmVmZXJlbmNl
Qm94KTsKKyAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzaGFwZS5yZWxlYXNlTm9u
TnVsbCgpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNz
aW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGZmZDlkNDliYWE2OTM3
MzRjNjFkNWE1OTdmZmE0MDU3NWY3MjI3ZS4uZmJmYmQ4MjJmYWZkZGQ2YmMwNmUzZTZkZGNhMmFm
MGRiMjlmYjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYg
KzU4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWwjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImKTsgXAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUjI3Byb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpCiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShUJiYgdmFsdWUpIHsgcmV0dXJu
IHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KK2lubGluZSBMZW5ndGggZm9yd2FyZEluaGVyaXRl
ZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBj
b3B5OyB9CitpbmxpbmUgTGVuZ3RoU2l6ZSBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3QgTGVu
Z3RoU2l6ZSYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBjb3B5OyB9Citpbmxp
bmUgTGVuZ3RoQm94IGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBMZW5ndGhCb3gmIHZhbHVl
KSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQorCiAvLyBOb3RlIHRoYXQgd2Ug
YXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5cGVzLgog
Y2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tIHsKIHB1YmxpYzoKQEAgLTMwMSw2ICszMDYsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzbwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorCiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhKQogewogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSA6IExlbmd0aChV
bmRlZmluZWQpOwpAQCAtMzE4LDcgKzMyNCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAg
ICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhc2hib2FyZFJlZ2lvbiog
Zmlyc3QgPSByZWdpb247CisgICAgYXV0byogZmlyc3QgPSByZWdpb247CiAgICAgd2hpbGUgKHJl
Z2lvbikgewogICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+
dG9wKCksIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCku
Y29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252
ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKQEAg
LTMzNSwxNyArMzQxLDIwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbihTdHlsZVJlc29sdmVyJiBzCiAgICAgICAgICAgICBs
ZWZ0ID0gTGVuZ3RoKCk7CiAKICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFz
aGJvYXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdp
b246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQp
LCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CiAgICAg
ICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpS
ZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdp
b24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rhbmds
ZSwgcmVnaW9uLT5tX2xhYmVsLCBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3Zl
KGJvdHRvbSksIFdURk1vdmUobGVmdCksIHJlZ2lvbiAhPSBmaXJzdCk7CisKICAgICAgICAgcmVn
aW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7CiAgICAgfQogCiAgICAgc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CiB9CisKICNlbmRpZiAvLyBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCisKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VS
ZXNvbHV0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2Uoc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UoKSk7CkBAIC0zNzgsMTggKzM4NywyMyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRp
b24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
SW1hZ2VSZXNvbHV0aW9uU25hcChzbmFwKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dEltYWdlUmVzb2x1dGlvbihyZXNvbHV0aW9uKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
SU1BR0VfUkVTT0xVVElPTikKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTaXplKFN0eWxlUmVzb2x2ZXImKSB7IH0KKwogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOworCisgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGVuZ3RoIHdpZHRoOwogICAgIExlbmd0aCBo
ZWlnaHQ7CiAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwot
ICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogICAgIHN3
aXRjaCAodmFsdWVMaXN0Lmxlbmd0aCgpKSB7CkBAIC00NTMsMTIgKzQ2NywxMiBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFBhZ2VTaXplKHsgV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSB9KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRUZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0g
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+dGV4dEluZGVudCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRJbmRlbnQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5k
ZW50KCkgfSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRJbmRlbnRMaW5lKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dElu
ZGVudExpbmUoKSk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlw
ZShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJbmRlbnRUeXBlKCkpOwpAQCAtNDk2
LDcgKzUxMCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKGxlbmd0aE9yUGVy
Y2VudGFnZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChsZW5ndGhPclBlcmNlbnRhZ2VWYWx1ZSk7
CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50KFdURk1vdmUobGVuZ3Ro
T3JQZXJjZW50YWdlVmFsdWUpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudExpbmUodGV4dEluZGVudExpbmVWYWx1ZSk7CiAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0SW5kZW50VHlwZSh0ZXh0SW5kZW50VHlw
ZVZhbHVlKTsKQEAgLTYxMSw4ICs2MjUsOCBAQCBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVS
X0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBXaWR0aCkKIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+bGluZUhlaWdodCgpKTsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExpbmVIZWlnaHQoc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0TGluZUhlaWdodChMZW5ndGggeyBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmxp
bmVIZWlnaHQoKSB9KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExp
bmVIZWlnaHQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCkgfSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsTGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQpAQCAtNjI4
LDggKzY0Miw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxp
bmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgaWYgKCFsaW5lSGVpZ2h0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExpbmVI
ZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFNwZWNpZmllZExpbmVIZWlnaHQobGluZUhlaWdodC52YWx1ZSgpKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgbGluZUhlaWdodC52YWx1ZSgpIH0p
OworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChXVEZN
b3ZlKGxpbmVIZWlnaHQudmFsdWUoKSkpOwogfQogCiAjZW5kaWYKQEAgLTY2NSwyMSArNjc5LDIx
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIGF1dG8qIHBhcmVudFN0eWxlID0gc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpOwogICAgIGlmICghcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkK
ICAgICAgICAgcmV0dXJuIGFwcGx5SW5pdGlhbENsaXAoc3R5bGVSZXNvbHZlcik7Ci0gICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKHBhcmVudFN0eWxlLT5jbGlwVG9wKCksIHBhcmVu
dFN0eWxlLT5jbGlwUmlnaHQoKSwgcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKSwgcGFyZW50U3R5
bGUtPmNsaXBMZWZ0KCkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChMZW5n
dGggeyBwYXJlbnRTdHlsZS0+Y2xpcFRvcCgpIH0sIExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlw
UmlnaHQoKSB9LAorICAgICAgICBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpIH0s
IExlbmd0aCB7IHBhcmVudFN0eWxlLT5jbGlwTGVmdCgpIH0pOwogICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ2xpcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwotCi0gICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVW
YWx1ZS5yZWN0VmFsdWUoKSkgeworICAgIGlmIChhdXRvKiByZWN0ID0gcHJpbWl0aXZlVmFsdWUu
cmVjdFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2
ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7Ci0gICAgICAgIExlbmd0aCB0
b3AgPSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIExlbmd0aCByaWdodCA9IHJlY3QtPnJpZ2h0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4o
Y29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggYm90dG9tID0gcmVjdC0+Ym90dG9tKCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwotICAgICAgICBMZW5ndGggbGVm
dCA9IHJlY3QtPmxlZnQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQpOworICAgICAgICBhdXRvIHRvcCA9IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9MZW5ndGg8
Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNp
b24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYXV0byByaWdodCA9IHJlY3QtPnJpZ2h0KCkt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNp
b24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBhdXRvIGJvdHRv
bSA9IHJlY3QtPmJvdHRvbSgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lv
biB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
KyAgICAgICAgYXV0byBsZWZ0ID0gcmVjdC0+bGVmdCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KGNv
bnZlcnNpb25EYXRhKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDbGlwKFdU
Rk1vdmUodG9wKSwgV1RGTW92ZShyaWdodCksIFdURk1vdmUoYm90dG9tKSwgV1RGTW92ZShsZWZ0
KSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0byk7CkBAIC03MzUsMTIgKzc0OSwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
cwogICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CiAKLXRl
bXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgordGVtcGxhdGU8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0
eT4KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dW
YWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAgICAgIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwpA
QCAtNzYxLDggKzc3NSw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlU
ZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBj
b2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVl
LmNvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5
bGUsIGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3cpCisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0
byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coV1RGTW92ZShz
aGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlz
IG5vdCB0aGUgZmlyc3QgZW50cnkKQEAgLTExNTYsMjIgKzExNzAsMjIgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIEMKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwor
ICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHls
ZSgpOwogICAgIHN2Z1N0eWxlLnNldEZpbGxQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZp
bGxQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRDb2xvcigpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludFVyaSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1Zp
c2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0RmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZH
U3R5bGUoKTsKLSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnUGFyZW50U3R5bGUgPSBzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUg
PSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3Zn
UGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7CiAg
ICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLmZpbGxQYWludFR5cGUoKSwg
c3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUuZmlsbFBhaW50
VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxl
UmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIAogfQogCiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYg
c3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZh
bHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7Cisg
ICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxl
KCk7CisgICAgY29uc3QgYXV0byogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUo
KSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBT
dHJpbmcgdXJsOwogICAgIGlmICh2YWx1ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0
IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAt
MTE4MywxMCArMTE5NywxMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVGaWxsKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgQ29sb3IgY29sb3I7Ci0gICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZSA9
IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CisgICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SOwogICAgIGlmIChsb2NhbFZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgIHBh
aW50VHlwZSA9IFNWR19QQUlOVFRZUEVfVVJJOwotICAgICAgICB1cmwgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4obG9jYWxWYWx1ZSktPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIHVybCA9
IGxvY2FsVmFsdWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChsb2NhbFZhbHVlLT5p
c1ZhbHVlSUQoKSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9OT05FIDogU1ZH
X1BBSU5UVFlQRV9VUklfTk9ORTsKICAgICBlbHNlIGlmIChsb2NhbFZhbHVlLT5pc1ZhbHVlSUQo
KSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpIHsKQEAg
LTEyMDcsMTUgKzEyMjEsMTUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxTdHJva2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIAogaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTdHJva2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHls
ZSgpOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NT
VkdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHN2Z1Bh
cmVudFN0eWxlLnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludENv
bG9yKCksIHN2Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50VXJpKCksIHN0eWxlUmVzb2x2ZXIuYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7Ci0gICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUq
IGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgY29uc3QgYXV0byogbG9j
YWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKICAgICBTdHJpbmcgdXJsOwogICAgIGlmICh2YWx1
ZS5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgIGNvbnN0IENTU1ZhbHVlTGlzdCYgbGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTIyNyw3ICsxMjQxLDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIEMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIENvbG9yIGNvbG9y
OwotICAgIFNWR1BhaW50VHlwZSBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOwor
ICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjsKICAgICBpZiAobG9j
YWxWYWx1ZS0+aXNVUkkoKSkgewogICAgICAgICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VS
STsKICAgICAgICAgdXJsID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGxvY2FsVmFsdWUp
LT5zdHJpbmdWYWx1ZSgpOwpAQCAtMTI1OCw3ICsxMjcyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGUKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
U3ZnU2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PmFjY2Vzc1NWR1N0eWxlKCk7CisgICAgYXV0byYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHN2Z1N0eWxlLnNldFNoYWRv
dyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwMDQ2OWVl
N2ZhMDkxNjY4ZjYzODY2YWVjYjQ1NGIwMzM0MTI4NTc1Li4zNDk3YjJhNzA3ZDRlNTQyNjkzNmIy
ZDFmODZmNTJlZWMzOWE4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xNjgsNyArMTY4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNhY2hl
Qm9yZGVyQW5kQmFja2dyb3VuZCgpCiAgICAgbV9oYXNVQUFwcGVhcmFuY2UgPSBtX3N0eWxlLT5o
YXNBcHBlYXJhbmNlKCk7CiAgICAgaWYgKG1faGFzVUFBcHBlYXJhbmNlKSB7CiAgICAgICAgIG1f
Ym9yZGVyRGF0YSA9IG1fc3R5bGUtPmJvcmRlcigpOwotICAgICAgICBtX2JhY2tncm91bmREYXRh
ID0gKm1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5kRGF0
YSA9IG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBtX3N0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiB9CkBAIC0xMzI4LDcgKzEz
MjgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgICAgICAvLyBXZSBjYW4gYnVpbGQg
dXAgdGhlIHN0eWxlIGJ5IGNvcHlpbmcgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4g
ZWFybGllciBzdHlsZSBvYmplY3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgZXhhY3QKICAgICAgICAg
Ly8gc3R5bGUgZGVjbGFyYXRpb25zLiBXZSB0aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5o
ZXJpdGVkIHByb3BlcnRpZXMsIGlmIGFueSwgYXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24g
dGhlIAogICAgICAgICAvLyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMg
bWVtb3J5IGJ5IHJldXNpbmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KLSAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS5n
ZXQoKSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKCpjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlKTsKICAgICAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCktPmlu
aGVyaXRlZERhdGFTaGFyZWQoY2FjaGVJdGVtLT5wYXJlbnRSZW5kZXJTdHlsZS5nZXQoKSkgJiYg
IWlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSkgewogICAgICAgICAgICAgRUluc2lkZUxpbmsg
bGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRlbnRpY2FsIGluaGVyaXRlZCBw
cm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0aGVuIHRoZQpAQCAtMTY2MSwx
NyArMTY2MSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgIGlmIChpc0luaGVyaXQg
JiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKICAgICAKLSAg
ICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKLSAgICAgICAgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSogY3VzdG9tUHJvcGVydHkgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4oKnZhbHVlVG9BcHBseSk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjdXN0b21WYWwgPSBzdGF0ZS5wYXJlbnRT
dHlsZSgpLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5uYW1lKCkpOwot
ICAgICAgICAgICAgaWYgKCFjdXN0b21WYWwpCi0gICAgICAgICAgICAgICAgY3VzdG9tVmFsID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgp
LCBjdXN0b21WYWwpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5h
bWUoKSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShj
dXN0b21Qcm9wZXJ0eS0+bmFtZSgpLCBjdXN0b21Qcm9wZXJ0eSk7CisgICAgaWYgKGN1c3RvbVBy
b3BlcnR5VmFsdWUpIHsKKyAgICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUt
Pm5hbWUoKTsKKyAgICAgICAgYXV0byogdmFsdWUgPSBpc0luaXRpYWwgPyBudWxscHRyIDogaXNJ
bmhlcml0ID8gc3RhdGUucGFyZW50U3R5bGUoKS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1l
KSA6IGN1c3RvbVByb3BlcnR5VmFsdWU7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUgPyBtYWtlUmVmKCp2YWx1ZSkgOiBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggODUxOTg1NTU3YzMzMzg1YzY4MzQxNDM5ZGFmNGU1
NjY5YzMzYzc3Zi4uZTYxN2MzOGU3OWYyMzUxZmNhODdhOGJkYjI2NDEwNDA3MTNiYWYzNyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNjE0LDggKzYxNCw4IEBAIHN1YiBnZW5lcmF0ZUFuaW1h
dGlvblByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgbXkgJGluZGVudCA9IHNoaWZ0Owog
CiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiQW5pbWF0aW9uTGlzdCYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVu
c3VyZUFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlz
dCA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5z
aXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiYXV0byYgbGlzdCA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldEVuc3VyZUFu
aW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiYXV0byogcGFyZW50TGlzdCA9IHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+IiAuIGdldEFuaW1hdGlvbnNPclRyYW5zaXRpb25zTWV0aG9kKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic2l6ZV90IGkgPSAwLCBw
YXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFy
ZW50TGlzdC0+YW5pbWF0aW9uKGkpLiIgLiBnZXRUZXN0RnVuY3Rpb24oJG5hbWUpIC4gIigpOyAr
K2kpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmIChsaXN0LnNp
emUoKSA8PSBpKVxuIjsKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdWIgZ2VuZXJhdGVBbmltYXRpb25Q
cm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgIGxpc3QuYW5pbWF0aW9uKGkpLnNldEFuaW1hdGlvbk1vZGUocGFyZW50TGlzdC0+YW5p
bWF0aW9uKGkpLmFuaW1hdGlvbk1vZGUoKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIn1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICJcbiI7Ci0gICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIi8vIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJv
cGVydHkgc2V0LlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKCA7IGkg
PCBsaXN0LnNpemUoKTsgKytpKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgbGlzdC5hbmltYXRpb24oaSkuIiAuIGdldENsZWFyRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xu
IjsKIApAQCAtNjc0LDExICs2NzQsMTEgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJ
bml0aWFsVmFsdWVTZXR0ZXIgewogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiLy8gQ2hlY2sgZm9yIChzaW5nbGUtbGF5ZXIpIG5vLW9w
IGJlZm9yZSBjbGVhcmluZyBhbnl0aGluZy5cbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiY29uc3QgRmlsbExheWVyJiBsYXllcnMgPSAqc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4i
IC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJhdXRvJiBsYXllcnMgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gImlmICghbGF5ZXJzLm5leHQoKSAmJiAoIWxheWVycy4iIC4gJHRlc3RGdW5jdGlv
biAuICIoKSB8fCBsYXllcnMuIiAuICRnZXR0ZXIgLiAiKCkgPT0gJGluaXRpYWwpKVxuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gIlxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIq
IGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVu
Y3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJh
dXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3Nv
ckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiY2hpbGQtPiIgLiAkc2V0dGVyIC4gIigiIC4gJGluaXRpYWwgLiAiKTtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChjaGlsZCA9IGNoaWxkLT5uZXh0KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBjaGlsZC0+IiAuICRjbGVhckZ1bmN0aW9uIC4gIigpO1xuIjsKQEAgLTY5NywxMiAr
Njk3LDEyIEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVy
IHsKIAogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIi8vIENoZWNrIGZvciBuby1vcCBiZWZvcmUgY29weWluZyBhbnl0aGluZy5cbiI7Ci0g
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiaWYgKCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiIoKSA9PSAqc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKKyAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJpZiAoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4iKCkgPT0gc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpKVxuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
IlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJhdXRvKiBjaGlsZCA9ICZzdHls
ZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3NvckZ1bmN0aW9uKCRuYW1lKSAu
ICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2
aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
Zm9yIChhdXRvKiBwYXJlbnQgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRM
YXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1
bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKKyAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAm
JiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQo
KSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkg
e1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hp
bGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJU
eXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CkBAIC03MjQsNyArNzI0LDcg
QEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgIG15ICRDU1NQ
cm9wZXJ0eUlkID0gIkNTU1Byb3BlcnR5IiAuICRuYW1lVG9JZHskbmFtZX07CiAKICAgbXkgJHNl
dHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5
ZXIqIGNoaWxkID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29y
RnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJhdXRvKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nl
c3NvckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpICYmICFpczxD
U1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3Jl
YXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwpAQCAtODMwLDcgKzgzMCw3IEBAIHN1YiBn
ZW5lcmF0ZUluaGVyaXRWYWx1ZVNldHRlciB7CiAgIH0KICAgaWYgKCEkZGlkQ2FsbFNldFZhbHVl
KSB7CiAgICAgbXkgJGluaGVyaXRlZFZhbHVlID0gJHBhcmVudFN0eWxlIC4gIi0+IiAuICgkaXNT
VkcgPyAic3ZnU3R5bGUoKS4iIDogIiIpIC4gICRnZXR0ZXIgLiAiKCkiOwotICAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICIgLiBnZW5lcmF0ZVNldFZhbHVlU3RhdGVtZW50KCRu
YW1lLCAkaW5oZXJpdGVkVmFsdWUpIC4gIjtcbiI7CisgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgIiAuIGdlbmVyYXRlU2V0VmFsdWVTdGF0ZW1lbnQoJG5hbWUsICJmb3J3YXJk
SW5oZXJpdGVkVmFsdWUoIiAuICRpbmhlcml0ZWRWYWx1ZSAuICIpIikgLiAiO1xuIjsKICAgfQog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIn1cbiI7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gIlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJP
cHRpb25zeyRuYW1lfXsiY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKSI7CiAg
IH0gZWxzaWYgKGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1l
fXsiY29uZGl0aW9uYWwtY29udmVydGVyIn0pKSB7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29u
ZGl0aW9uYWwtY29udmVydGVyIn0gLiAiKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTtcbiI7Ci0gICAg
JGNvbnZlcnRlZFZhbHVlID0gImNvbnZlcnRlZFZhbHVlLnZhbHVlKCkiOworICAgICRjb252ZXJ0
ZWRWYWx1ZSA9ICJXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlLnZhbHVlKCkpIjsKICAgfSBlbHNlIHsK
ICAgICAkY29udmVydGVkVmFsdWUgPSAiZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGU0MTJlYjVhZTVhMGE3OGRjODUy
YzQwZjNhYWM3MGI0YTZkYWY3NzIuLmNkNzE1NDQxZTdkOWNhNTZjNGY3MmUzMWY4Y2VhNTdmZjA2
MzM3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgYm9v
bCBEb2N1bWVudDo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KQogdm9pZCBEb2N1bWVu
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFn
ZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRv
bSwgaW50JiBtYXJnaW5MZWZ0KQogewogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVTY29wZSgpLnJlc29sdmVy
KCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CisgICAgYXV0byBzdHlsZSA9IHN0eWxlU2NvcGUo
KS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOwogCiAgICAgaW50IHdpZHRoID0g
cGFnZVNpemUud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0KCk7CkBA
IC0yMDg4LDExICsyMDg4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0lu
UGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgICAgICAg
ICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUEFH
RV9TSVpFX1JFU09MVkVEOiB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdl
U2l6ZSgpOwotICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7Ci0gICAgICAg
IEFTU0VSVChzaXplLmhlaWdodCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gdmFsdWVG
b3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwKTsKLSAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGF1dG8mIHNpemUgPSBzdHlsZS0+cGFnZVNp
emUoKTsKKyAgICAgICAgQVNTRVJUKHNpemUud2lkdGguaXNGaXhlZCgpKTsKKyAgICAgICAgQVNT
RVJUKHNpemUuaGVpZ2h0LmlzRml4ZWQoKSk7CisgICAgICAgIHdpZHRoID0gdmFsdWVGb3JMZW5n
dGgoc2l6ZS53aWR0aCwgMCk7CisgICAgICAgIGhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHNpemUu
aGVpZ2h0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFBhdGguY3BwCmluZGV4IGMyYmRkMDU2Nzc4NjdhMDI5YzUxYWZhM2U3Y2Y5NzM3ZWU3
OTZlYmUuLjc3NzEyODFhYjk0N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFBhdGguY3BwCkBAIC0yNTgsMjMgKzI1OCwyMSBAQCBib29sIEV2ZW50UGF0aDo6
aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiBW
ZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1Rhcmdl
dChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIFZlY3RvcjxFdmVudFRh
cmdldCo+IHBhdGg7Ci0gICAgY29uc3QgTm9kZSogdGFyZ2V0Tm9kZSA9IGNvbnN0X2Nhc3Q8RXZl
bnRUYXJnZXQmPih0YXJnZXQpLnRvTm9kZSgpOworICAgIGF1dG8qIHRhcmdldE5vZGUgPSBjb25z
dF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKICAgICBpZiAoIXRhcmdldE5v
ZGUpIHsKLSAgICAgICAgY29uc3QgRE9NV2luZG93KiBkb21XaW5kb3cgPSBjb25zdF9jYXN0PEV2
ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOworICAgICAgICBhdXRvKiBkb21XaW5k
b3cgPSBjb25zdF9jYXN0PEV2ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b0RPTVdpbmRvdygpOwogICAg
ICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICAgICB0
YXJnZXROb2RlID0gZG9tV2luZG93LT5kb2N1bWVudCgpOwogICAgICAgICBBU1NFUlQodGFyZ2V0
Tm9kZSk7CiAgICAgfQotCiAgICAgZm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRoKSB7Ci0gICAg
ICAgIGlmIChOb2RlKiBub2RlSW5QYXRoID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgpLT50b05v
ZGUoKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRU
YXJnZXQoKS0+dG9Ob2RlKCkpIHsKICAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9kZS0+aXNDbG9z
ZWRTaGFkb3dIaWRkZW4oKm5vZGVJblBhdGgpKQogICAgICAgICAgICAgICAgIHBhdGguYXBwZW5k
KGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
cGF0aC5hcHBlbmQoY29udGV4dC0+Y3VycmVudFRhcmdldCgpKTsKICAgICB9Ci0KICAgICByZXR1
cm4gcGF0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGEyZTk2MTFkNmM1
NDg4ODYxNDZiYmE5MWExMDVkODA5MWI4Y2ZhYWUuLmRlZTY0NmMzN2QxNWFkNDQzM2MwMzFiNWUz
YTVhYzQxZTYxNDI5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25z
dCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZh
bGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9Ci0gICAgQ29udGFpbmVyTm9kZSYgb3du
ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4obV9vd25l
ck5vZGUuZ2V0KCkpOyB9CisgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vd25lck5vZGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFhdHRyTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJOYW1lKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKaW5kZXggY2MxYTZhNGEwNjY2OGY2MDRiY2JkZDQzYzRlYjYyYzdhNzI2
NmU2Mi4uNWJhMzdjZjgwNmViZGNlZmEzMmEzNjVkZTljNmRjYjYzYjRlYTIwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBFdmVudFRhcmdldCog
TWVzc2FnZUV2ZW50Ojpzb3VyY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAgICAgIFtdKGNv
bnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBj
b25zdF9jYXN0PEV2ZW50VGFyZ2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPih3
aW5kb3cuZ2V0KCkpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYg
bWVzc2FnZVBvcnQpIC0+IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50VGFy
Z2V0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXZlbnRUYXJnZXQqPihtZXNzYWdlUG9ydC5nZXQoKSkp
OyB9CisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVu
dFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxET01XaW5kb3cqPih3aW5kb3cuZ2V0KCkpOyB9
LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPE1lc3NhZ2VQb3J0PiYgbWVzc2FnZVBvcnQpIC0+
IEV2ZW50VGFyZ2V0KiB7IHJldHVybiBjb25zdF9jYXN0PE1lc3NhZ2VQb3J0Kj4obWVzc2FnZVBv
cnQuZ2V0KCkpOyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGUyZmJiY2Y4MWEx
M2NmZDA0MDVlMTIwMzkxZTUyYjNkZTVkM2UyODkuLjNjNzEyMGVhYTRmOGEzMGI5ZjQ2YjhiNWFh
OTk2ZDdmODYxN2U4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQzMCwxMSArNDMwLDEwIEBAIHN0
YXRpYyBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVP
clN0cmluZ1ZlY3Rvcihjb25zdCBWCiAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQ7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYW50IDogdmVjdG9yKSB7CiAgICAgICAgIFdURjo6
c3dpdGNoT24odmFyaWFudCwKLSAgICAgICAgICAgIFsmXShjb25zdCBSZWZQdHI8Tm9kZT4mIG5v
ZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5nZXQoKSkpOyB9LAotICAg
ICAgICAgICAgW10oY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxOb2RlPiYgbm9kZSkgeyBub2RlU2V0LmFkZChjb25zdF9jYXN0PE5vZGUqPihub2RlLmdl
dCgpKSk7IH0sCisgICAgICAgICAgICBbXSAoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgICAgICk7
CiAgICAgfQotCiAgICAgcmV0dXJuIG5vZGVTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXggODAz
ZjhmZTIzZjczNzBiY2NjZDJhNzVmNzAzOTE1NzNmZWFkM2E3ZC4uYjlhMDIyZDUwZDEzNjhkOTM1
M2YwMmNiNTAyMzNlNzkwMWRkMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IGNyZWF0ZShEb2N1
bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5SYW5nZSgpOwogCi0gICAgRG9jdW1lbnQmIG93bmVyRG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9vd25lckRvY3VtZW50
LmdldCgpKTsgfQorICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9vd25lckRvY3VtZW50OyB9CiAKICAgICBOb2RlJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsg
QVNTRVJUKG1fc3RhcnQuY29udGFpbmVyKCkpOyByZXR1cm4gKm1fc3RhcnQuY29udGFpbmVyKCk7
IH0KICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQub2Zm
c2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgK
aW5kZXggMTBiMmFkOTQzY2MzYjkwMzMxZGM3YWI2OGQ1NWZjZjk0OTJmZTA4Mi4uMmE1OGEzZmEw
YmMxZDllNTRiNmExYzM0NTFhOTcyOWE2MzcyYTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihXVEZNb3Zl
KGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIH0KIAotICAgIEV2ZW50TGlzdGVuZXImIGNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudExpc3RlbmVyJj4obV9jYWxsYmFj
ay5nZXQoKSk7IH0KKyAgICBFdmVudExpc3RlbmVyJiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2s7IH0KICAgICBib29sIHVzZUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUNhcHR1cmU7IH0KICAgICBib29sIGlzUGFzc2l2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYXNz
aXZlOyB9CiAgICAgYm9vbCBpc09uY2UoKSBjb25zdCB7IHJldHVybiBtX2lzT25jZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAwNDFlNmQxMzMxZjQ0MjNjMTVjOTg3Njlm
OWEyMjc0Y2VkMGFkMGZmLi4xZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFlZjBjOWMyOGRjNWZjNGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTY3Jp
cHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogICAgIH0KICAgICBmb3IgKGF1dG8mIHBlbmRpbmdT
Y3JpcHQgOiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKICAgICAgICAgaWYgKHBlbmRpbmdTY3Jp
cHQtPndhdGNoaW5nRm9yTG9hZCgpKQotICAgICAgICAgICAgY29uc3RfY2FzdDxQZW5kaW5nU2Ny
aXB0Jj4ocGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKKyAgICAgICAgICAgIHBl
bmRpbmdTY3JpcHQtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaAppbmRleCA2ZmFhZDQwNzUwNTA0NTBkZDNiOTA5YmVkYWMwMDMwMGNjOWUyYTg2Li40
ODAxMjZiNjUxNmI3ZTc5NTM4YjYyOWZiODZhZWMwMmM5MTcyZjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIENvbGxlY3Rpb25U
eXBlIEhUTUxDb2xsZWN0aW9uOjp0eXBlKCkgY29uc3QKIAogaW5saW5lIENvbnRhaW5lck5vZGUm
IEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihtX293bmVyTm9kZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fb3du
ZXJOb2RlOwogfQogCiBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpkb2N1bWVudCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXgg
ZWYyMDZmNmMxZTFhNTYxNDc1MDk2ZTIyYWI3OTdkMzIyYzliZTEwZi4uOTg1MzE5ODMxYjE1MzI5
YmJhOTRmY2ZhOTA1NDRlOGNmMzdjZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTdGFja0l0ZW0uaApAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBSZWY8SFRNTFN0YWNr
SXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQog
CiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTFN0YWNrSXRlbTo6bm9kZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fbm9kZS5nZXQoKSk7CisgICAg
cmV0dXJuIG1fbm9kZS5nZXQoKTsKIH0KIAogaW5saW5lIEVsZW1lbnQmIEhUTUxTdGFja0l0ZW06
OmVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzYWMyODcwNzczYjgzNDBhZTVlM2I0Yjk2NzI5MmFk
Y2QyYjA5MzExLi5jMmU1MTRjYjdjNzIxMWJjMzdjMjQzMjhiZDQwMmY0OWU2ODQ0OGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtMTMzLDU4ICsxMzMsNDQgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wKIHsKICAgICBz
ZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHBhdXNlZCk7CiAKLSAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChwYWdl
LCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlw
dFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2Us
IHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOwotCi0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJh
bWUsIHBhdXNlZCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5k
Q2xpZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCkpIHsKLSAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlUGF1c2VkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50
LT5wYWdlVW5wYXVzZWQoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMo
KSkgeworICAgICAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKHBhdXNlZCk7CisKKyAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKCpmcmFtZSwgcGF1c2VkKTsKKworICAgICAgICBpZiAoYXV0byogZnJvbnRlbmRDbGllbnQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkg
eworICAgICAgICAgICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVBhdXNlZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBi
b29sIHBhdXNlZCkKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1
c2VkKEZyYW1lJiBmcmFtZSwgYm9vbCBwYXVzZWQpCiB7Ci0gICAgQVNTRVJUX0FSRyhmcmFtZSwg
ZnJhbWUpOwotCi0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgIGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmcmFtZS0+c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CisgICAgZnJhbWUuc2NyaXB0KCku
c2V0UGF1c2VkKHBhdXNlZCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAocGF1c2VkKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7Ci0gICAg
ICAgIGRvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6Okph
dmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVz
ZWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmpl
Y3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKLSAgICAgICAg
ZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwor
ICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6
SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogCi0gICAgc2V0SmF2YVNj
cmlwdFBhdXNlZChmcmFtZS0+dmlldygpLCBwYXVzZWQpOwotfQotCi12b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqIHZpZXcsIGJvb2wgcGF1
c2VkKQotewotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oKmNoaWxkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGRvd25jYXN0
PFBsdWdpblZpZXdCYXNlPigqY2hpbGQpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1c2VkKTsKKyAg
ICBpZiAoYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkIDogdmlldy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4oY2hpbGQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGNoaWxkLmdldCgpKS5zZXRKYXZhU2NyaXB0UGF1
c2VkKHBhdXNlZCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAzYjQ5NzkxZWUyOWU1YzUw
ZjBhM2M4YWMxYzQxNmRhNWE3Yzc3YmQxLi43ZjU4YzZjOGIwNDhiZjNkYzI3N2FiOWRmNjVmZWEy
NDY4MjJiN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZyYW1lOwotY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VHcm91
cDsKIApAQCAtNTYsOSArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWRJbnRlcm5hbCgpOwogCiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0
IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQo
UGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUq
LCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyos
IGJvb2wgcGF1c2VkKTsKKyAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUmLCBib29s
IHBhdXNlZCk7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNGU4Mjc1NDVlMmMwOGU0ZDNlZmEyMjRhNjNk
ZmQ1ZWIzNTcwYTljYi4uMjk1Yjk0YTFhNTU1YjJhMjhlNzUwMzZjNmIxZDAyNTcwNzI5OTdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC03NDEs
NyArNzQxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9u
YWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQKICAgICAgICAgRnJhbWUqIGNoaWxk
RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFT
U0VSVChjaGlsZEZyYW1lKTsKIAotICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5
KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihj
aGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjaGlsZEl0ZW0sIGZy
b21DaGlsZEl0ZW0pOwogICAgIH0KIH0KIApAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5
SXRlbSogZnJvbUl0CiAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0
ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQo
ZnJvbUNoaWxkSXRlbSk7CiAgICAgICAgIGlmIChGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUu
dHJlZSgpLmNoaWxkKGNoaWxkRnJhbWVOYW1lKSkKLSAgICAgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVt
Jj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgICAgICBj
aGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY2hpbGRJdGVt
LCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggMGJiMjg4ZWFlZmNmODA4MWIxZjBjZjQxZGM1NmE5YTE4NzdjZmU3ZS4uZDVhNTEwNjAxNzRh
ODcwNmY4OTlkNTI4ODRhZDZiYjRjZjY3MDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcy
MywzMSArNzIzLDI3IEBAIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25z
dAogCiBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OworICAg
IGF1dG8qIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAgIGlmICghb3duZXJFbGVt
ZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiBvYmplY3QgPSBvd25lckVs
ZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRvIGRpc2Fzc29j
aWF0ZSBpdHNlbGYgZnJvbSBmcmFtZXMKICAgICAvLyB0aGF0IGl0IGhhcyBzdGFydGVkIGJ1dCBj
YW5jZWxlZCwgdGhlbiB0aGlzIGNhbiB0dXJuIGludG8gYW4gQVNTRVJUCi0gICAgLy8gc2luY2Ug
bV9vd25lckVsZW1lbnQgd291bGQgYmUgMCB3aGVuIHRoZSBsb2FkIGlzIGNhbmNlbGVkLgorICAg
IC8vIHNpbmNlIG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIG51bGxwdHIgd2hlbiB0aGUgbG9hZCBp
cyBjYW5jZWxlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1ODUKLSAgICBpZiAoIWlzPFJlbmRlcldpZGdldD4oKm9iamVjdCkpCisgICAgaWYgKCFp
czxSZW5kZXJXaWRnZXQ+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG9iamVjdCk7CiB9CiAKLUZyYW1lKiBGcmFtZTo6
ZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCitGcmFtZSogRnJhbWU6OmZyYW1l
Rm9yV2lkZ2V0KGNvbnN0IFdpZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVF9BUkcod2lkZ2V0
LCB3aWRnZXQpOwotCi0gICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBSZW5kZXJXaWRn
ZXQ6OmZpbmQod2lkZ2V0KSkKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBSZW5kZXJXaWRnZXQ6
OmZpbmQod2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5mcmFtZU93bmVyRWxlbWVu
dCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKIAogICAgIC8vIEFzc3VtZSBhbGwgd2lkZ2V0cyBhcmUg
ZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0LgogICAgIC8vIEZJ
WE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0IGZvciBzY3JvbGwgYmFycyEKLSAgICBy
ZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKKyAgICByZXR1cm4g
JmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpOwogfQogCiB2b2lkIEZyYW1lOjpj
bGVhclRpbWVycyhGcmFtZVZpZXcgKnZpZXcsIERvY3VtZW50ICpkb2N1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAppbmRleCA2ODM0MTEwN2Q5ODFjNGEzMmFiZWI5YzUxMDkzYzg3YTgxZGY4NjU1Li45YThm
NzNjY2I1OGQ3N2VkZDQ5MTk2YTU3ZmZkYmFmMTM4YTFlYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBA
IC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXll
clRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdl
dCYpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGlu
Z3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDc3MDc1ZmQ1NzliZmNiMzlm
NjZmNmQ5MzY2OWRlZDUwNzZhMDM3NDUuLmIyOTEyMzYzZjIxZGQ4MGQ2YmUwMTBkMDhhY2EyN2Fl
OTJmNzViMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMsNyArMyw3IEBACiAg
KiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KICAq
ICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9y
Zz4KICAqICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA2LDE4ICs1MDYsMTcgQEAgYm9vbCBG
cmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKLSAg
ICAgICAgaWYgKEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKSkKLSAgICAgICAgICAg
IHdpbmRvdy0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CisgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgcmVwYWludFJl
Y3QgPSByZWN0OwotICAgIHJlcGFpbnRSZWN0Lm1vdmUocmVuZGVyZXItPmJvcmRlckxlZnQoKSAr
IHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAotICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIt
PmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CisgICAgcmVwYWludFJlY3Qu
bW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksIHJl
bmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgIHJlbmRl
cmVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsKIH0KIApAQCAtNTQ0LDE0ICs1NDMs
MTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0
KQogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorCiBib29sIEZyYW1l
Vmlldzo6c2NoZWR1bGVBbmltYXRpb24oKQogewotICAgIGlmIChIb3N0V2luZG93KiB3aW5kb3cg
PSBob3N0V2luZG93KCkpIHsKLSAgICAgICAgd2luZG93LT5zY2hlZHVsZUFuaW1hdGlvbigpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIHJldHVy
biB0cnVlOwogfQorCiAjZW5kaWYKIAogdm9pZCBGcmFtZVZpZXc6OnNldE1hcmdpbldpZHRoKExh
eW91dFVuaXQgdykKQEAgLTEwNTYsMjIgKzEwNTcsMjIgQEAgR3JhcGhpY3NMYXllciogRnJhbWVW
aWV3OjpncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQgcGxhdGZv
cm0KIHsKICAgICAvLyBUbyBmaW5kIHRoZSBXaWRnZXQgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHBs
YXRmb3JtV2lkZ2V0IHdlIGhhdmUgdG8gZG8gYSBsaW5lYXIKICAgICAvLyBzZWFyY2ggb2Ygb3Vy
IGNoaWxkIHdpZGdldHMuCi0gICAgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CisgICAg
Y29uc3QgV2lkZ2V0KiBmb3VuZFdpZGdldCA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiB3aWRn
ZXQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmICh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkg
IT0gcGxhdGZvcm1XaWRnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm91bmRX
aWRnZXQgPSB3aWRnZXQuZ2V0KCk7CisgICAgICAgIGZvdW5kV2lkZ2V0ID0gd2lkZ2V0LnB0cigp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoIWZvdW5kV2lkZ2V0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdl
dDo6ZmluZChmb3VuZFdpZGdldCk7CisgICAgYXV0byogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKCpmb3VuZFdpZGdldCk7CiAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVuZGVyTGF5ZXIqIHdpZGdldExheWVyID0gcmVuZGVy
V2lkZ2V0LT5sYXllcigpOworICAgIGF1dG8qIHdpZGdldExheWVyID0gcmVuZGVyV2lkZ2V0LT5s
YXllcigpOwogICAgIGlmICghd2lkZ2V0TGF5ZXIgfHwgIXdpZGdldExheWVyLT5pc0NvbXBvc2l0
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxODAsMTEgKzIxODEsMTEgQEAg
Ym9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6
c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBp
ZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgfHwgbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICAgICAgZnJhbWUoKS5wYWdlKCkt
PmNocm9tZSgpLnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IGJvb2wgaXNDb21wb3NpdGVk
Q29udGVudExheWVyID0gdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICBib29sIGlzQ29t
cG9zaXRlZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAKICAgICAv
LyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RU
b1Njcm9sbAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKQEAgLTIyMjAsNyArMjIyMSw3IEBA
IGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgfQogCiAgICAgLy8gMSkgc2Nyb2xsCi0gICAg
aG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3Qp
OworICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RU
b1Njcm9sbCwgY2xpcFJlY3QpOwogCiAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVk
IG9iamVjdHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAogICAgIGZvciAoYXV0byYgdXBkYXRl
UmVjdCA6IHJlZ2lvblRvVXBkYXRlLnJlY3RzKCkpIHsKQEAgLTIyMzUsNyArMjIzNiw3IEBAIGJv
b2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9s
bERlbHRhLCBjb25zdCBJbnRSZWN0CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNsaXBzUmVwYWlu
dHMoKSkKICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7Ci0g
ICAgICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRl
UmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5pbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyh1cGRhdGVSZWN0KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI2NDIsOSArMjY0MywxMCBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9u
VXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbikKIAogSG9zdFdpbmRvdyogRnJh
bWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiBu
dWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7CiB9
CiAKIHZvaWQgRnJhbWVWaWV3OjphZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByKQpAQCAtMjc4NCwxMCArMjc4NiwxMiBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0VGlsZWRC
YWNraW5nU2Nyb2xsYWJpbGl0eSgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIHZvaWQgRnJh
bWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkKIHsKICAgICBhZGp1c3RUaWxl
ZEJhY2tpbmdTY3JvbGxhYmlsaXR5KCk7CiB9CisKICNlbmRpZgogCiBzdGF0aWMgTGF5ZXJGbHVz
aFRocm90dGxlU3RhdGU6OkZsYWdzIGRldGVybWluZUxheWVyRmx1c2hUaHJvdHRsZVN0YXRlKFBh
Z2UmIHBhZ2UpCkBAIC00MDgyLDggKzQwODYsNiBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Ny
b2xsQ29ybmVyKCkKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3Zl
KCpjb3JuZXJTdHlsZSkpOwogICAgICAgICBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKGNvcm5lclJl
Y3QpOwogICAgIH0KLQotICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpOwogfQog
CiB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQpAQCAtNDE1NywxNSArNDE1OSwxNCBAQCBD
b2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIGJvb2wgRnJh
bWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHdp
ZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkp
IHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmhhc0N1c3Rv
bVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSkg
eworICAgICAgICAgICAgaWYgKGRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKS5oYXND
dXN0b21TY3JvbGxiYXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkgewotICAgICAgICAgICAgaWYgKGRv
d25jYXN0PFNjcm9sbGJhcj4oKndpZGdldCkuaXNDdXN0b21TY3JvbGxiYXIoKSkKKyAgICAgICAg
fSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlm
IChkb3duY2FzdDxTY3JvbGxiYXI+KHdpZGdldC5nZXQoKSkuaXNDdXN0b21TY3JvbGxiYXIoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNDE3MywxMSArNDE3NCwxMCBAQCBGcmFtZVZpZXcqIEZyYW1l
Vmlldzo6cGFyZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXBhcmVudCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFt
ZSgpLnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCku
dHJlZSgpLnBhcmVudCgpOworICAgIGlmICghcGFyZW50RnJhbWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygpOwogfQogCiBib29sIEZyYW1l
Vmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKQEAgLTUxODMs
OCArNTE4Myw4IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKQogICAg
IC8vIHNjcmlwdHMgaW4gcmVzcG9uc2UgdG8gTlBQX1NldFdpbmRvdywgZm9yIGV4YW1wbGUpLCBz
byB3ZSBuZWVkIHRvIGtlZXAgdGhlIFdpZGdldHMKICAgICAvLyBhbGl2ZSBkdXJpbmcgZW51bWVy
YXRpb24uCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBjb2xsZWN0QW5kUHJvdGVjdFdpZGdldHMo
bV93aWRnZXRzSW5SZW5kZXJUcmVlKSkgewotICAgICAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5k
ZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQod2lkZ2V0LmdldCgpKSkgewotICAgICAgICAg
ICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRlcldpZGdldC0+dXBkYXRlV2lkZ2V0UG9z
aXRpb24oKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0OjpmaW5k
KCp3aWRnZXQpKSB7CisgICAgICAgICAgICBhdXRvIGlnbm9yZVdpZGdldFN0YXRlID0gcmVuZGVy
ZXItPnVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oaWdu
b3JlV2lkZ2V0U3RhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
aW5kZXggMjNhN2ZkMWI0NGY2ZWU5MDQyMGIyMDUwODkzYzc4M2FhZTg1MDNiNi4uNzExYjc0YjQ2
N2IzNzU4ODRhMzU3OGE0MDJhNGU0NGM0NjIzMzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICAgIChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlz
ICh3ZWlzQGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAgICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKLSAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA5LCAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzQsMTYgKzc0
LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCi0gICAgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3coKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzZXRGcmFtZVJlY3Qo
Y29uc3QgSW50UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQotICAgIGJvb2wgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICBib29sIHNj
aGVkdWxlQW5pbWF0aW9uKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIEZyYW1lJiBmcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RnJhbWUmPihtX2ZyYW1lLmdldCgpKTsgfQorICAgIEZy
YW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIApAQCAtOTUsMTUgKzk1LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE1hcmdpbldpZHRoKExheW91dFVuaXQpOwogICAgIHZvaWQg
c2V0TWFyZ2luSGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKTsKIAotICAgIFJlZjxTY3JvbGxiYXI+IGNy
ZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgUmVmPFNj
cm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAot
ICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBzZXRD
b250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNTaXplKCkgZmluYWw7CiAKICAg
ICB2b2lkIGxheW91dChib29sIGFsbG93U3VidHJlZSA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25zdDsKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllckZvclBs
YXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNj
aGVkdWxlTGF5ZXJGbHVzaEFsbG93aW5nVGhyb3R0bGluZygpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIGFueSBTY3JvbGxhYmxlQXJlYSBjYW4gaGF2ZSBhIG5v
ZGUgaW4gdGggU2Nyb2xsaW5nVHJlZSwgdGhpcyBzaG91bGQKICAgICAvLyBiZWNvbWUgYSB2aXJ0
dWFsIGZ1bmN0aW9uIG9uIFNjcm9sbGFibGVBcmVhLgpAQCAtMjI1LDIxICsyMjUsMjEgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhJbnRTaXplKTsKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKSBjb25zdDsKICAgICAKLSAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7
CiAKLSAgICBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rml4ZWRWaXNp
YmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGlu
ZygpIGZpbmFsOworICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgZmluYWw7CisgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9z
aXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBUaGUg
c2Nyb2xsT3JpZ2luLCBzY3JvbGxQb3NpdGlvbiwgbWluaW11bVNjcm9sbFBvc2l0aW9uIGFuZCBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24gYXJlIGFsbCBhZmZlY3RlZCBieSBmcmFtZSBzY2FsZSwKICAg
ICAvLyBidXQgbGF5b3V0Vmlld3BvcnQgY29tcHV0YXRpb25zIHJlcXVpcmUgdW5zY2FsZWQgc2Ny
b2xsIHBvc2l0aW9ucy4KQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCBy
ZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yOwpAQCAtMzc5LDkgKzM3OSw5IEBAIHB1YmxpYzoKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGNvcm5lclJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3ND
b250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6
b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFsOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgZmluYWw7Cisg
ICAgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OwogCkBAIC00MzYsMTAgKzQzNiwxMCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvUmVu
ZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAg
ICAvLyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2
aWEgcmVuZGVyZXJzLCBpbiBvcmRlciB0byB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50Lgot
ICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qg
ZmluYWw7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNG
cmFtZVZpZXdTY3JvbGxDb3JuZXIoY29uc3QgUmVuZGVyU2Nyb2xsYmFyUGFydCYgc2Nyb2xsQ29y
bmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9PSAmc2Nyb2xsQ29ybmVyOyB9CiAK
QEAgLTQ1MSwyMCArNDUxLDIwIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNjcm9sbGFiaWxp
dHkgeyBTY3JvbGxhYmxlLCBTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNTY3JvbGxhYmxlKFNjcm9sbGFiaWxpdHkgZGVmaW5pdGlvbk9mU2Ny
b2xsYWJsZSA9IFNjcm9sbGFiaWxpdHk6OlNjcm9sbGFibGUpOwogCi0gICAgYm9vbCBpc1Njcm9s
bGFibGVPclJ1YmJlcmJhbmRhYmxlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxl
T3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Njcm9sbGFi
bGVPclJ1YmJlcmJhbmRhYmxlKCkgZmluYWw7CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZUFuY2VzdG9yKCkgZmluYWw7CiAKICAgICBlbnVtIFNjcm9sbGJhck1vZGVzQ2Fs
Y3VsYXRpb25TdHJhdGVneSB7IFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5LCBBbnlSdWxlIH07CiAg
ICAgdm9pZCBjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNjcm9sbGJhck1vZGVzQ2FsY3VsYXRpb25TdHJh
dGVneSA9IEFueVJ1bGUpOwogCi0gICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkU2V0Q3Vyc29yKCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
bWV0aG9kIG9uY2UgcGx1Z2luIGxvYWRpbmcgaXMgZGVjb3VwbGVkIGZyb20gbGF5b3V0LgogICAg
IHZvaWQgZmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKLSAgICBib29sIHNob3Vs
ZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xs
YmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlk
ZTsKIAogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CkBAIC00ODMs
NyArNDgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSopIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxh
YmxlQXJlYXMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQogCi0g
ICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCYpIGZpbmFsOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBv
cnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9u
IE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNj
cm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCkBAIC01MDEsNyArNTAxLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogICAgIAotICAgIGJvb2wgaW5Q
cm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luUHJvZ3JhbW1h
dGljU2Nyb2xsOyB9CisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7IH0KICAgICB2b2lkIHNldEluUHJvZ3Jh
bW1hdGljU2Nyb2xsKGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsKSB7IG1faW5Qcm9ncmFtbWF0aWNT
Y3JvbGwgPSBwcm9ncmFtbWF0aWNTY3JvbGw7IH0KIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCkBAIC01MDksOCArNTA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5pdGlh
bFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1faW5pdGlhbFZpZXdwb3J0U2l6
ZSA9IHNpemU7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFu
Y2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9y
bWFuY2VUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYShib29sKSBjb25zdDsKQEAgLTUyMywyMCArNTIzLDIwIEBAIHB1YmxpYzoKIAog
ICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uUmVzcGVjdGluZ0N1c3RvbUZpeGVkUG9zaXRp
b24oKSBjb25zdDsKIAotICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2hlYWRlckhlaWdodDsgfQorICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SGVhZGVySGVpZ2h0KGludCk7Ci0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHRvcENv
bnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0VHlwZTo6V2Vi
Q29yZUNvbnRlbnRJbnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxv
YXQgdG9wQ29udGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRU
eXBlOjpXZWJDb3JlQ29udGVudEluc2V0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHRvcENvbnRl
bnRJbnNldERpZENoYW5nZShmbG9hdCBuZXdUb3BDb250ZW50SW5zZXQpOwogCiAgICAgdm9pZCB0
b3BDb250ZW50RGlyZWN0aW9uRGlkQ2hhbmdlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxTdGFydExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
aWxsU3RhcnRMaXZlUmVzaXplKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxs
RW5kTGl2ZVJlc2l6ZSgpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFi
bGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZh
aWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CiAKICAgICB2b2lkIGFkanVzdFRpbGVkQmFj
a2luZ1Njcm9sbGFiaWxpdHkoKTsKIApAQCAtNTc0LDI5ICs1NzQsMjkgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbFNu
YXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
cygpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGll
cygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBmbG9hdCBhZGp1c3RTY3JvbGxTdGVwRm9yRml4ZWRD
b250ZW50KGZsb2F0IHN0ZXAsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSkgb3ZlcnJpZGU7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChm
bG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKIAotICAgIHZvaWQgc2hvdygp
IG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBv
dmVycmlkZTsKKyAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlcGFpbnRTbG93UmVw
YWludE9iamVjdHMoKTsKIAotICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0ZsaXBw
ZWREb2N1bWVudCgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1l
VmlldyhGcmFtZSYpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlu
UHJlTGF5b3V0U3R5bGVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlID09IElu
UHJlTGF5b3V0U3R5bGVVcGRhdGU7IH0KIAotICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiAg
ICAgYm9vbCB1c2VTbG93UmVwYWludHMoYm9vbCBjb25zaWRlck92ZXJsYXAgPSB0cnVlKSBjb25z
dDsKQEAgLTYyOCw5ICs2MjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXBkYXRlQ29t
cG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIGNvbnN0OwogICAgIGJvb2wgZmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNvbnN0IEZyYW1lJiByb290RnJhbWVGb3JGbHVzaCk7
CiAKLSAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRl
bnRTaXplQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHNjcm9sbE9mZnNldENoYW5nZWRWaWFQ
bGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNj
cm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbE9mZnNldENo
YW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvbGRPZmZzZXQs
IGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25Ub1Zp
ZXdwb3J0KCk7CkBAIC02NTEsMzkgKzY1MSwzOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJGbHVzaFRocm90dGxpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkanVzdFRp
bGVkQmFja2luZ0NvdmVyYWdlKCk7CiAKLSAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xs
YmFyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpIGZpbmFs
OwogCi0gICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgLy8gU2Ny
b2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY3JvbGxUbyhj
b25zdCBTY3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9s
bGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRSZWN0
IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBTY3JvbGxQ
b3NpdGlvbiYpIGZpbmFsOworICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRp
bmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Ny
b2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWw7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JW
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
Rm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCi0gICAgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbnRlbnRzUmVzaXplZCgpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5v
YnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBib29sIHVz
ZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzQXN5
bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5p
bWF0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1l
c3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzQ29tcG9z
aXRlZFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc0FzeW5jU2Nyb2xsaW5n
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGUgc2Nyb2xsYmFyIG5vdGlmaWNhdGlv
bnMgdG8gdXBkYXRlIHRoZSBBWE9iamVjdCBjYWNoZS4KLSAgICB2b2lkIGRpZEFkZFNjcm9sbGJh
cihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmll
bnRhdGlvbikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhcios
IFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIEludFNpemUgc2l6ZUZvclJlc2l6
ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgpOwpAQCAt
NjkzLDcgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxlQXJlYVNl
dCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0Vmlld3BvcnQoKTsKIAotICAgIHZvaWQgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
bm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCBlbmFibGVTcGVjdWxhdGl2ZVRpbGluZ0lmTmVlZGVkKCk7CiAgICAgdm9pZCBzcGVjdWxh
dGl2ZVRpbGluZ0VuYWJsZVRpbWVyRmlyZWQoKTsKQEAgLTcwOCw3ICs3MDgsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENvcm5lcigpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVy
KCkgZmluYWw7CiAKICAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA5MzMxYjMwMjkwN2U3OWI3YzExYjVlYzA4NDZiYWZkNWMzZmVj
NDk3Li42YzQ3NjVmMGNiYzQ1MjQyODJlMDdjNjE4NjY0ZTc2YTAyNTMxMWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTEzMzMsMTggKzEzMzMsMTUgQEAgdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGlu
Z1N0YXRlQ2hhbmdlZCgpCiBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFnZTo6cGx1Z2lu
Vmlld3MoKQogewogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiB2aWV3czsKLQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LT52aWV3KCk7CisgICAgICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFz
ZT4oKndpZGdldCkpCi0gICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBsdWdp
blZpZXdCYXNlPigqd2lkZ2V0KSk7CisgICAgICAgICAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+
KHdpZGdldC5nZXQoKSkpCisgICAgICAgICAgICAgICAgdmlld3MuYXBwZW5kKGRvd25jYXN0PFBs
dWdpblZpZXdCYXNlPih3aWRnZXQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
dHVybiB2aWV3czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDQ0
MzA1NDY3NTU3MWJiOTBkNzQwMWYyYmIxMTIzYWNlOWFmY2UxMTAuLjY3Y2UzMTcwN2NiMjE3YjNi
MDE0ZjE2OWE5MjRmNGM4YzVmZDljODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAKQEAgLTI4NiwxNiArMjg2LDE5IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWRE
ZXN0aW5hdGlvbnMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAKIFN0cmlu
ZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUt
PmRvY3VtZW50KCkpOworCisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CiAgICAgcHJpbnRDb250ZXh0
LmJlZ2luKDgwMCk7IC8vIEFueSB3aWR0aCBpcyBPSyBoZXJlLgotICAgIGRvY3VtZW50LT51cGRh
dGVMYXlvdXQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZG9j
dW1lbnQtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsK
KyAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKKyAgICBhdXRvIHN0eWxlID0gZG9jdW1lbnQu
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VOdW1iZXIpOwogCiAgICAg
Ly8gSW1wbGVtZW50IGZvcm1hdHRlcnMgZm9yIHByb3BlcnRpZXMgd2UgY2FyZSBhYm91dC4KICAg
ICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJtYXJnaW4tbGVmdCIpKSB7CiAgICAgICAgIGlm
IChzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygiYXV0byIpOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7ICJhdXRvIiB9Owog
ICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPm1hcmdpbkxlZnQoKS52YWx1ZSgp
KTsKICAgICB9CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibGluZS1oZWlnaHQiKSkK
QEAgLTMwNSw5ICszMDgsOSBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJh
bWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYQogICAgIGlmICghc3Ry
Y21wKHByb3BlcnR5TmFtZSwgImZvbnQtZmFtaWx5IikpCiAgICAgICAgIHJldHVybiBzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuZmlyc3RGYW1pbHkoKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0
eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFn
ZVNpemUoKS53aWR0aCgpLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5bGUtPnBh
Z2VTaXplKCkuaGVpZ2h0KCkudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cihzdHlsZS0+cGFnZVNpemUoKS53aWR0aC52YWx1ZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVy
KHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodC52YWx1ZSgpKTsKIAotICAgIHJldHVybiBTdHJpbmco
InBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAiKSArIHByb3BlcnR5TmFtZTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIs
IHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxl
KEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDFjNDdlM2RmYzRkZGQxYmQ0NWMzMjU3
ZjdiNGVkMzBkZWI4ZjlhNjguLjc2ZTgwYzA3OGYxYzY2YmRhZDZiODAxZjg5MzdkYmQwMDFiZmNj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9u
RXZlbnRzSWZOZWVkZWQoKQogICAgICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAmJiBt
X2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewogICAg
ICAgICAgICAgaWYgKG1fb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0g
bV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS5zY3JvbGxQb3NpdGlv
bigpOwotICAgICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdn
ZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdn
ZXIoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25j
YXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAg
ICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgICAgICB9CkBAIC01NzcsNyAr
NTc3LDcgQEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCkKICAgICAg
ICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigp
KSB7CiAgICAgICAgICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPSBtX29iamVjdC0+dmlldygpLmZyYW1lVmlldygpLnNjcm9s
bFBvc2l0aW9uRm9yRml4ZWRQb3NpdGlvbigpLnkoKS50b0Zsb2F0KCk7Ci0gICAgICAgICAgICAg
ICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9s
bEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9u
VHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50U2Nyb2xsUG9zaXRpb24gPj0gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFsdWUo
KSAmJiAoIXNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSB8fCBjdXJyZW50U2Nyb2xsUG9zaXRp
b24gPD0gc2Nyb2xsVHJpZ2dlci5lbmRWYWx1ZSgpLnZhbHVlKCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTY1Myw3ICs2NTMsNyBAQCBkb3VibGUg
QW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MoZG91YmxlIHNjYWxlLCBkb3VibGUgb2Zmc2V0LCBjb25z
dCBUaW1pbmdGdW5jdGlvbgogICAgIH0KIAogICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAg
ICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7
CisgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gbV9hbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCk7
CiAKICAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIFRpbWlu
Z0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9uOiB7CkBAIC03NDMsNyArNzQzLDcgQEAgZG91
YmxlIEFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKSAm
JiBtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewot
ICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkuZ2V0KCkpOwor
ICAgICAgICBhdXRvJiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAoc2Nyb2xsVHJpZ2dl
ci5oYXNFbmRWYWx1ZSgpICYmIG1fb2JqZWN0KSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQg
PSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLnNjcm9sbFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICBmbG9hdCBzdGFydFZhbHVlID0gc2Nyb2xsVHJpZ2dlci5zdGFy
dFZhbHVlKCkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAyZDg5NDA0NTIwNDhhMjhmNDExMGE1
NTIwMzVmZjFjNzFmZDg4ZDU1Li45ZjZiOTE3YzZlYzFjNmZlYmJhNjk0MGExNjcwNWJkYmQ1YWM3
NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCkBAIC05MCw4ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3Ro
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25z
dCBMCiAKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8s
IGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZEZ1bmMoYW5p
bSwgZnJvbS53aWR0aCgpLCB0by53aWR0aCgpLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgpLCBwcm9ncmVz
cykpOworICAgIHJldHVybiB7IGJsZW5kRnVuYyhhbmltLCBmcm9tLndpZHRoLCB0by53aWR0aCwg
cHJvZ3Jlc3MpLCBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgcHJvZ3Jl
c3MpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgU2hhZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRvd1N0eWxlIGZyb20sIFNoYWRvd1N0eWxlIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCkBAIC00OTIsNyArNDkxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBj
bGFzcyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0dGVy
PGNvbnN0IFQmPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
TGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYgKFJlbmRl
clN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCkp
CisgICAgTGVuZ3RoUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYg
KFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRl
cikoVCYmKSkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29uc3QgVCY+KHByb3As
IGdldHRlcikKICAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCiAgICAgewpAQCAtNTA0LDcgKzUw
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIChSZW5kZXJTdHls
ZTo6Km1fc2V0dGVyKShUKTsKKyAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShUJiYp
OwogfTsKIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyQ2xpcFBhdGggOiBwdWJsaWMgUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjxDbGlwUGF0aE9wZXJhdGlvbj4gewpAQCAtMTA0OSw3ICsxMDQ4LDcg
QEAgcHVibGljOgogY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmlt
YXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEZpbGxMYXllciogKFJlbmRlclN0eWxlOjoqTGF5
ZXJzR2V0dGVyKSgpIGNvbnN0OworICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyJiAoUmVuZGVy
U3R5bGU6OipMYXllcnNHZXR0ZXIpKCkgY29uc3Q7CiAgICAgdHlwZWRlZiBGaWxsTGF5ZXImIChS
ZW5kZXJTdHlsZTo6KkxheWVyc0FjY2Vzc29yKSgpOwogCiAgICAgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIExheWVyc0dldHRlciBnZXR0ZXIsIExheWVyc0Fj
Y2Vzc29yIGFjY2Vzc29yKQpAQCAtMTA4Niw4ICsxMDg1LDggQEAgcHVibGljOgogICAgICAgICBp
ZiAoIWEgfHwgIWIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgY29uc3Qg
RmlsbExheWVyKiBmcm9tTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIHRvTGF5ZXIgPSAoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAg
ICBhdXRvKiBmcm9tTGF5ZXIgPSAmKGEtPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0
byogdG9MYXllciA9ICYoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOwogCiAgICAgICAgIHdoaWxlIChm
cm9tTGF5ZXIgJiYgdG9MYXllcikgewogICAgICAgICAgICAgaWYgKCFtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlci0+ZXF1YWxzKGZyb21MYXllciwgdG9MYXllcikpCkBAIC0xMTAyLDkgKzExMDEs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0s
IFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHls
ZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29u
c3QgRmlsbExheWVyKiBhTGF5ZXIgPSAoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGJMYXllciA9IChiLT4qbV9sYXllcnNHZXR0ZXIpKCk7Ci0gICAgICAg
IEZpbGxMYXllciogZHN0TGF5ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CisgICAg
ICAgIGF1dG8qIGFMYXllciA9ICYoYS0+Km1fbGF5ZXJzR2V0dGVyKSgpOworICAgICAgICBhdXRv
KiBiTGF5ZXIgPSAmKGItPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0byogZHN0TGF5
ZXIgPSAmKGRzdC0+Km1fbGF5ZXJzQWNjZXNzb3IpKCk7CiAKICAgICAgICAgd2hpbGUgKGFMYXll
ciAmJiBiTGF5ZXIgJiYgZHN0TGF5ZXIpIHsKICAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyLT5ibGVuZChhbmltLCBkc3RMYXllciwgYUxheWVyLCBiTGF5ZXIsIHByb2dyZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcAppbmRleCBlZDk2YWIxNTM4ODJiNTlkYzk5Y2JkZjVhYzk4NjRkYjBmMDA1
YTA0Li4yMmJkZTQ2OGEwNmFiNDZjMGJhMGU4ODhiOWI3MzVkMTQ1MTJjMGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC05OSwyOCArOTksMjggQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmEKIAogRXZlbnRU
cmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZlbnRUcmFja2lu
Z1JlZ2lvbnNGb3JGcmFtZShjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0CiB7Ci0gICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIGF1dG8qIHJl
bmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlclZpZXcg
fHwgcmVuZGVyVmlldy0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm4g
RXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIC8vIE9uIGlPUywgd2UgdXNlIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uIHRvIHJlcHJlc2Vu
dCB0aGUgcmVnaW9uIGNvdmVyZWQgYnkgZWxlbWVudHMgd2l0aCB0b3VjaCBldmVudCBoYW5kbGVy
cy4KICAgICBBU1NFUlQoZnJhbWUuaXNNYWluRnJhbWUoKSk7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXZlbnRUcmFja2lu
Z1JlZ2lvbnMoKTsKICAgICByZXR1cm4gZG9jdW1lbnQtPmV2ZW50VHJhY2tpbmdSZWdpb25zKCk7
CiAjZWxzZQotICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcgPSBmcmFt
ZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBFdmVudFRyYWNr
aW5nUmVnaW9ucygpOwogCisgICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOworCiAg
ICAgLy8gRklYTUU6IHNob3VsZCBBU1NFUlQoIWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgaGVy
ZSwgYnV0IG5lZWQgdG8gZml4IERlYnVnUGFnZU92ZXJsYXlzCiAgICAgLy8gdG8gbm90IGFzayBm
b3IgcmVnaW9ucyBhdCBiYWQgdGltZXMuCiAKLSAgICBpZiAoY29uc3QgRnJhbWVWaWV3OjpTY3Jv
bGxhYmxlQXJlYVNldCogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJl
YXMoKSkgeworICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9s
bGFibGVBcmVhcygpKSB7CiAgICAgICAgIGZvciAoYXV0byYgc2Nyb2xsYWJsZUFyZWEgOiAqc2Ny
b2xsYWJsZUFyZWFzKSB7CiAgICAgICAgICAgICAvLyBDb21wb3NpdGVkIHNjcm9sbGFibGUgYXJl
YXMgY2FuIGJlIHNjcm9sbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgICAgICBpZiAo
c2Nyb2xsYWJsZUFyZWEtPnVzZXNBc3luY1Njcm9sbGluZygpKQpAQCAtMTM2LDE4ICsxMzYsMjEg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHdpZGdl
dCA6IGZyYW1lVmlldy0+d2lkZ2V0c0luUmVuZGVyVHJlZSgpKSB7Ci0gICAgICAgIFJlbmRlcldp
ZGdldCogcmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldCk7Ci0gICAgICAg
IGlmICghcmVuZGVyV2lkZ2V0IHx8ICFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCisgICAg
ICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgCi0gICAgICAgIGlmIChkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCku
d2FudHNXaGVlbEV2ZW50cygpKQotICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24u
dW5pdGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICAgICAg
aWYgKCFkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkud2FudHNXaGVlbEV2ZW50cygp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJl
bmRlcldpZGdldDo6ZmluZCgqd2lkZ2V0KTsKKyAgICAgICAgaWYgKCFyZW5kZXJXaWRnZXQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5p
dGUocmVuZGVyV2lkZ2V0LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICB9CiAgICAg
Ci0gICAgLy8gRklYTUU6IGlmIHdlJ3ZlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGlzIHN1YmZy
YW1lIGFzIGEgc2Nyb2xsYWJsZSBhcmVhLCB3ZSBjYW4gYXZvaWQgcmVjdXJzaW5nIGludG8gaXQg
aGVyZS4KICAgICBFdmVudFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5nUmVnaW9uczsKKwor
ICAgIC8vIEZJWE1FOiBpZiB3ZSd2ZSBhbHJlYWR5IGFjY291bnRlZCBmb3IgdGhpcyBzdWJmcmFt
ZSBhcyBhIHNjcm9sbGFibGUgYXJlYSwgd2UgY2FuIGF2b2lkIHJlY3Vyc2luZyBpbnRvIGl0IGhl
cmUuCiAgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgp
OyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgRnJhbWVWaWV3KiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOworICAg
ICAgICBhdXRvKiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAo
IXN1YmZyYW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNjAsNyArMTYzLDcg
QEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFic29sdXRlRXZl
bnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKICAgICAgICAgZXZlbnRUcmFja2luZ1JlZ2lvbnMu
dW5pdGUoc3ViZnJhbWVSZWdpb24pOwogICAgIH0KIAotICAgIERvY3VtZW50OjpSZWdpb25GaXhl
ZFBhaXIgd2hlZWxIYW5kbGVyUmVnaW9uID0gZnJhbWUuZG9jdW1lbnQoKS0+YWJzb2x1dGVSZWdp
b25Gb3JFdmVudFRhcmdldHMoZnJhbWUuZG9jdW1lbnQoKS0+d2hlZWxFdmVudFRhcmdldHMoKSk7
CisgICAgYXV0byB3aGVlbEhhbmRsZXJSZWdpb24gPSBmcmFtZS5kb2N1bWVudCgpLT5hYnNvbHV0
ZVJlZ2lvbkZvckV2ZW50VGFyZ2V0cyhmcmFtZS5kb2N1bWVudCgpLT53aGVlbEV2ZW50VGFyZ2V0
cygpKTsKICAgICBib29sIHdoZWVsSGFuZGxlckluRml4ZWRDb250ZW50ID0gd2hlZWxIYW5kbGVy
UmVnaW9uLnNlY29uZDsKICAgICBpZiAod2hlZWxIYW5kbGVySW5GaXhlZENvbnRlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIHBvc2l0aW9uOnN0aWNreSBoZXJlIHRvby4K
QEAgLTE3Miw2ICsxNzUsNyBAQCBFdmVudFRyYWNraW5nUmVnaW9ucyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKAogCiAgICAgLy8gRklY
TUU6IElmIHRoaXMgaXMgbm90IHRoZSBtYWluIGZyYW1lLCB3ZSBjb3VsZCBjbGlwIHRoZSByZWdp
b24gdG8gdGhlIGZyYW1lJ3MgYm91bmRzLgogICAgIGV2ZW50VHJhY2tpbmdSZWdpb25zLnVuaXRl
U3luY2hyb25vdXNSZWdpb24oZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIG5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKTsKKwogICAgIHJldHVybiBldmVudFRyYWNraW5nUmVnaW9uczsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggOWU3MGU5ZDM2Yjk5NWVk
Y2JlYTI5MjU0MzY3MzY2YzQ5MThhM2JjMS4uYjExMTY0ZjA4NTVkYmRmMjVmNmIxYzY4NmY3MTZi
NDY3MjMyYzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBLZXllZENvZGluZ19oCi0jZGVmaW5lIEtleWVkQ29kaW5nX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTU2
LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQg
dmFsdWUpCkBAIC0yMTEsNSArMjEwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkQ29kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoQm94LmgKaW5kZXggZTdhOTc4YTljOGMwNTI4ZDI5Y2EwZTBkMzdjYzlmNGM3ZWQ3NzEwNy4u
M2UwZjIxODRlNjg2ZDBlZGMwY2VhMzliMzQ1OGU3NGY2YzZlYTc1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoQm94LmgKQEAgLTE5LDggKzE5LDcgQEAKICAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgTGVuZ3RoQm94X2gKLSNkZWZpbmUgTGVuZ3RoQm94
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiV3JpdGlu
Z01vZGUuaCIKQEAgLTMxLDEyICszMCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBCb3hFeHRlbnQgewogcHVibGljOgogICAgIEJveEV4dGVudCgp
Ci0gICAgICAgIDogbV9zaWRlcyh7eyBUKDApLCBUKDApLCBUKDApLCBUKDApIH19KQorICAgICAg
ICA6IG1fc2lkZXMoeyB7IHsgMCB9LCB7IDAgfSwgeyAwIH0sIHsgMCB9IH0gfSkKICAgICB7CiAg
ICAgfQogCiAgICAgQm94RXh0ZW50KGNvbnN0IFQmIHRvcCwgY29uc3QgVCYgcmlnaHQsIGNvbnN0
IFQmIGJvdHRvbSwgY29uc3QgVCYgbGVmdCkKLSAgICAgICAgOiBtX3NpZGVzKHt7IHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdCB9fSkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQgfSB9KQorICAgIHsKKyAgICB9CisKKyAgICBCb3hFeHRlbnQoVCYmIHRvcCwg
VCYmIHJpZ2h0LCBUJiYgYm90dG9tLCBUJiYgbGVmdCkKKyAgICAgICAgOiBtX3NpZGVzKHsgeyBz
dGQ6OmZvcndhcmQ8VD4odG9wKSwgc3RkOjpmb3J3YXJkPFQ+KHJpZ2h0KSwgc3RkOjpmb3J3YXJk
PFQ+KGJvdHRvbSksIHN0ZDo6Zm9yd2FyZDxUPihsZWZ0KSB9IH0pCiAgICAgewogICAgIH0KIApA
QCAtMTM5LDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTGVuZ3RoQm94
KGNvbnN0IExlbmd0aCYgdG9wLCBjb25zdCBMZW5ndGgmIHJpZ2h0LCBjb25zdCBMZW5ndGgmIGJv
dHRvbSwgY29uc3QgTGVuZ3RoJiBsZWZ0KQotICAgICAgICA6IEJveEV4dGVudCh0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQpCisgICAgTGVuZ3RoQm94KExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmln
aHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCkKKyAgICAgICAgOiBCb3hFeHRlbnQg
eyBXVEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUo
bGVmdCkgfQogICAgIHsKICAgICB9CiAKQEAgLTE1MCwxMSArMTU0LDkgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLXR5cGVkZWYgQm94RXh0ZW50PExheW91dFVuaXQ+IExheW91dEJveEV4dGVudDsK
LXR5cGVkZWYgQm94RXh0ZW50PGZsb2F0PiBGbG9hdEJveEV4dGVudDsKK3VzaW5nIExheW91dEJv
eEV4dGVudCA9IEJveEV4dGVudDxMYXlvdXRVbml0PjsKK3VzaW5nIEZsb2F0Qm94RXh0ZW50ID0g
Qm94RXh0ZW50PGZsb2F0PjsKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgTGVuZ3RoQm94Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IExlbmd0aEJveF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuY3BwCmluZGV4IDE2
ODM5Y2NiYThmMDExOTVmN2U0MmU2ZmMxZmZlZTcyMTU5YWYxZmIuLjdmMzUwZTc3Mzg2M2QxNmM1
MzA3MWEyYzRhYzBmYjY5NmM4MWZkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aFNpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNp
emUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExlbmd0aFNpemUmIHNpemUpCiB7Ci0gICAgcmV0
dXJuIHRzIDw8IHNpemUud2lkdGgoKSA8PCAiICIgPDwgc2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1
cm4gdHMgPDwgc2l6ZS53aWR0aCA8PCAiICIgPDwgc2l6ZS5oZWlnaHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRleCBkNzEz
ZTE4OTJjNWE1YzRiM2NjMDVmMzg5MzJmMmI2MTU2MWJmMTc4Li42MDUyM2VlYzZjYjMyZDEwMWJk
MWQyNDQxNDA0NWNhNjYzNDRlOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5o
CkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgsNDggKzE3
LDI3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIExl
bmd0aFNpemVfaAotI2RlZmluZSBMZW5ndGhTaXplX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IExlbmd0aFNpemUg
ewotcHVibGljOgotICAgIExlbmd0aFNpemUoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTGVu
Z3RoU2l6ZShMZW5ndGggd2lkdGgsIExlbmd0aCBoZWlnaHQpCi0gICAgICAgIDogbV93aWR0aChX
VEZNb3ZlKHdpZHRoKSkKLSAgICAgICAgLCBtX2hlaWdodChXVEZNb3ZlKGhlaWdodCkpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhTaXplJiBvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1faGVpZ2h0
ID09IG8ubV9oZWlnaHQ7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRXaWR0aChMZW5ndGggd2lkdGgp
IHsgbV93aWR0aCA9IFdURk1vdmUod2lkdGgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLQotICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBXVEZNb3ZlKGhlaWdodCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0KLXByaXZhdGU6Ci0gICAgTGVu
Z3RoIG1fd2lkdGg7Ci0gICAgTGVuZ3RoIG1faGVpZ2h0OworICAgIExlbmd0aCB3aWR0aDsKKyAg
ICBMZW5ndGggaGVpZ2h0OwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5n
dGhTaXplJiBhLCBjb25zdCBMZW5ndGhTaXplJiBiKQoreworICAgIHJldHVybiBhLndpZHRoID09
IGIud2lkdGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQ7Cit9CisKIGlubGluZSBMZW5ndGhTaXpl
IGJsZW5kKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFNpemUoYmxlbmQoZnJvbS53aWR0aCgp
LCB0by53aWR0aCgpLCBwcm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgp
LCBwcm9ncmVzcykpOworICAgIHJldHVybiB7IGJsZW5kKGZyb20ud2lkdGgsIHRvLndpZHRoLCBw
cm9ncmVzcyksIGJsZW5kKGZyb20uaGVpZ2h0LCB0by5oZWlnaHQsIHByb2dyZXNzKSB9OwogfQog
CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBMZW5ndGhTaXplJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIExlbmd0aFNpemVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzQwMDE0YWQ1YTk5NTM1OWFmN2I2OTljNTI4
ZGQzODAzMjA5NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0jZGVm
aW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzX2gKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotY2xhc3MgU3BlZWNoU3ludGhlc2lzOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7Ci0gICAgCi1jbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXM+IGNyZWF0ZShTcGVlY2hTeW50aGVzaXMqKTsKLSAgICAKLSAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZVZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7
Ci0gICAgdm9pZCBwbGF0Zm9ybVNwZWFrKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwotICAg
IAotcHJpdmF0ZToKLSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hTeW50aGVzaXMq
KTsKLQotICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7Ci19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKaW5kZXggMWYyMDdmNDQzNjY5OWI0ZDFjODQ1ZDcwY2NjNzI5ZDM2ZTkwYmJhMi4u
MTBhODMwZTM5YzdiN2ZlZDg5MzhlYzBiNTQwMDBlZTg0N2NlMGM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDE2ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqIGNsaWVudCkKK1JlZjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7CiB9CiAg
ICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdm9sdW1lKDEuMGYpCi0gICAg
LCBtX3JhdGUoMS4wZikKLSAgICAsIG1fcGl0Y2goMS4wZikKK2lubGluZSBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KCZjbGllbnQpCiB7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCBhODY5YmI4
NzI4NGRjNTllMDdlZTY0MjMzNmVhZDE4Y2E5YzVkODg0Li5lMDg3NzViMjVlZjQwMGU2NmJkYzJl
OGRjNDVjODJiNmYxMGM4Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMjEgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZV9oCi0jZGVmaW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNwcmFn
bWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gSW1wbGVtZW50IG1ldGhv
ZHMgYXMgbmVlZGVkLgotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKLSAgICAKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQmKTsKKwogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dDsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0g
dGV4dDsgfQogICAgIApAQCAtNzQsMjAgKzY2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENs
aWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KSB7IG1f
Y2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Q2xpZW50Kik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQmKTsKIAogICAgIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90
ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IG1fdm9pY2U7Ci0gICAgZmxvYXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9yYXRl
OwotICAgIGZsb2F0IG1fcGl0Y2g7Ci0gICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGZsb2F0
IG1fdm9sdW1lIHsgMSB9OworICAgIGZsb2F0IG1fcmF0ZSB7IDEgfTsKKyAgICBmbG9hdCBtX3Bp
dGNoIHsgMSB9OworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHAKaW5kZXggNTgwZjE5ZDE2NzhkZTk1ZWZlNmM5NzIwMDU5ZDBlYjYyYjNkMDFiOC4uMjQz
NzZjZGU5MjMwOGY2NjAzMDdhM2NkMzVkNmRmYjcxZDU1MmZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwx
NyArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQorUmVmPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFt
ZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBs
b2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgpCitS
ZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSk7CiB9Ci0gICAgCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpCisKK2lubGluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJKQogICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgLCBtX2xhbmcobGFuZykKQEAgLTQ5LDEyICs0OSw2IEBAIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgU3RyaW5n
JiB2b2ljZVVSCiB7CiB9CiAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UoKQotICAgIDogbV9sb2NhbFNlcnZpY2UoZmFsc2UpCi0gICAg
LCBtX2RlZmF1bHQoZmFsc2UpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDM0M2I5ZTdi
YWNmMTVlNDk5MzIwOGY1NTgxNGZjZTM3Zjc0NTFkOWQuLjAxNThiMzQ5ODRkZjU2MWVjYTdlYmZl
NzQzMGZlODgzZjlhMTkwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTggQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKLSNkZWZp
bmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9v
bCBpc0RlZmF1bHQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwg
Ym9vbCBpc0RlZmF1bHQpOworICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gY3JlYXRlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyBy
ZXR1cm4gbV92b2ljZVVSSTsgfQogICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID0gdm9pY2VVUkk7IH0KQEAgLTU2LDE3ICs1MywxNSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25z
dCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFu
ZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKLSAgICBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlKCk7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpID0g
ZGVmYXVsdDsKIAogICAgIFN0cmluZyBtX3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CiAg
ICAgU3RyaW5nIG1fbGFuZzsKLSAgICBib29sIG1fbG9jYWxTZXJ2aWNlOwotICAgIGJvb2wgbV9k
ZWZhdWx0OworICAgIGJvb2wgbV9sb2NhbFNlcnZpY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9k
ZWZhdWx0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IGNiZmZlNmUxYzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVmMWFkY2IuLmI4OWQ1NjYxMTNmNWNj
N2ZkZTVlNGVlNGI1OGE4YzI5YTliNjQ2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsMTQgKzYyLDE0IEBAIFNjcm9sbFZp
ZXc6On5TY3JvbGxWaWV3KCkKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChQYXNz
UmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQpIAordm9pZCBTY3JvbGxWaWV3OjphZGRDaGlsZChXaWRn
ZXQmIGNoaWxkKQogewotICAgIFdpZGdldCogY2hpbGQgPSBwcnBDaGlsZC5nZXQoKTsKLSAgICBB
U1NFUlQoY2hpbGQgIT0gdGhpcyAmJiAhY2hpbGQtPnBhcmVudCgpKTsKLSAgICBjaGlsZC0+c2V0
UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uYWRkKHBycENoaWxkKTsKLSAgICBpZiAoY2hp
bGQtPnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQoY2hpbGQpOwor
ICAgIEFTU0VSVCgmY2hpbGQgIT0gdGhpcyk7CisgICAgQVNTRVJUKCFjaGlsZC5wYXJlbnQoKSk7
CisgICAgY2hpbGQuc2V0UGFyZW50KHRoaXMpOworICAgIG1fY2hpbGRyZW4uYWRkKGNoaWxkKTsK
KyAgICBpZiAoY2hpbGQucGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1BZGRDaGls
ZCgmY2hpbGQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hp
bGQpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzU2Nyb2xsYmFySW50
ZXJuYWwoUmVmUHRyPFNjcm9sbGJhcj4mIHNjcm9sbGJhciwgU2Nyb2xsYmFyCiAKICAgICBpZiAo
aGFzQmFyICYmICFzY3JvbGxiYXIpIHsKICAgICAgICAgc2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xs
YmFyKG9yaWVudGF0aW9uKTsKLSAgICAgICAgYWRkQ2hpbGQoc2Nyb2xsYmFyLmdldCgpKTsKKyAg
ICAgICAgYWRkQ2hpbGQoKnNjcm9sbGJhcik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcihzY3Jv
bGxiYXIuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAgc2Nyb2xsYmFyLT5zdHlsZUNoYW5n
ZWQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaXplQWZmZWN0ZWQpCkBAIC04MjksMTIgKzgyOSw2
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEpCiAgICAgd2luZG93LT5pbnZhbGlkYXRlUm9vdFZpZXcoSW50UmVjdCgpKTsKIH0KIAot
Ym9vbCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQotewotICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9T
Y3JvbGwsIGNsaXBSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3
OjpzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB7CiAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJl
Y3QpOwpAQCAtMTAzOCwxNyArMTAzMiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHND
aGFuZ2VkKCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwot
Ci0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hp
bGRyZW4uZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRl
cmF0b3IgY3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3Vy
cmVudCkKLSAgICAgICAgKCpjdXJyZW50KS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmZyYW1lUmVjdHNDaGFu
Z2VkKCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6Y2xpcFJlY3RDaGFuZ2VkKCkKIHsKLSAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5l
bmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBj
dXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQot
ICAgICAgICAoKmN1cnJlbnQpLT5jbGlwUmVjdENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIGNo
aWxkIDogbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPmNsaXBSZWN0Q2hhbmdlZCgpOwogfQog
CiBzdGF0aWMgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMTE1MCwxMCArMTE0MSw2IEBAIHZv
aWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlIG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlCiAgICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQotewotfQotCiB2b2lkIFNj
cm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5w
YWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKQEAgLTEzOTIsOSAr
MTM3OSw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUp
CiAgICAgaWYgKCFpc1NlbGZWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2No
aWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldFBhcmVu
dFZpc2libGUodmlzaWJsZSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisg
ICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogfQogCiB2b2lkIFNjcm9s
bFZpZXc6OnNob3coKQpAQCAtMTQwMiw5ICsxMzg4LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzaG93
KCkKICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBzZXRTZWxmVmlzaWJsZSh0
cnVlKTsKICAgICAgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICBIYXNo
U2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9j
aGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgKCppdCkt
PnNldFBhcmVudFZpc2libGUodHJ1ZSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
bV9jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh0cnVl
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQxNSw5ICsxNDAwLDggQEAgdm9pZCBTY3JvbGxW
aWV3OjpoaWRlKCkKIHsKICAgICBpZiAoaXNTZWxmVmlzaWJsZSgpKSB7CiAgICAgICAgIGlmIChp
c1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46
Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hT
ZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZh
bHNlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAg
ICAgICAgICAgIGNoaWxkLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAg
ICAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCmluZGV4IGRiNTcwZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMu
LjZiMzFmOTgyZjQyOGIwOGFhYjU1OTY1ODVmZGZjNzExYWY0ZTdmYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAi
U2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgotCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
KwogT0JKQ19DTEFTUyBXQUtTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBXQUtWaWV3OwogCkBAIC00
Niw2ICs0Niw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKICNpZm5kZWYgTlNWaWV3CiAjZGVmaW5l
IE5TVmlldyBXQUtWaWV3CiAjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkIF9fT0JKQ19fCkBAIC02NCwxMCArNjUsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbFZpZXcoKTsKIAogICAgIC8vIFNjcm9sbGFibGVB
cmVhIGZ1bmN0aW9ucy4KLSAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPZmZz
ZXQoY29uc3QgU2Nyb2xsT2Zmc2V0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Njcm9sbENvcm5l
clZpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jv
bGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JikgZmluYWw7CisgICAgYm9vbCBpc1Njcm9sbENv
cm5lclZpc2libGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwpAQCAt
ODUsMTQgKzg2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJl
Y3QoKSBjb25zdCA9IDA7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1hbmlwdWxhdGlv
biBhbmQgaW5zcGVjdGlvbi4KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+PiYgY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7CisgICAgY29uc3QgSGFz
aFNldDxSZWY8V2lkZ2V0Pj4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoV2lkZ2V0Jik7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpOwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3
IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBs
YXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRv
IG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQo
KTsgfQotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLmdldCgpOyB9CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzU2Ny
b2xsVmlld1Njcm9sbGJhcihjb25zdCBXaWRnZXQqIGNoaWxkKSBjb25zdCB7IHJldHVybiBob3Jp
em9udGFsU2Nyb2xsYmFyKCkgPT0gY2hpbGQgfHwgdmVydGljYWxTY3JvbGxiYXIoKSA9PSBjaGls
ZDsgfQogCiAgICAgdm9pZCBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwpAQCAtMTIxLDcgKzEy
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNyZWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBmaW5hbDsKIAogICAgIC8v
IEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRo
YXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tp
bmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWlu
dHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE2Nyw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gSW4gdGhlIHNpdHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Ny
b2xsaW5nIChpZS4gd2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRv
IHVzZQogICAgIC8vIHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0
aGUgbWFpbmZyYW1lLCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBq
dXN0IGJlZm9yZSByZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBo
YXBwZW4gd2hlbiBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBz
Y2FsZSBvciBwb3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICBJbnRTaXplIHZpc2li
bGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQorICAgIEludFNpemUgdmlzaWJsZVNp
emUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0g
dmlzaWJsZUNvbnRlbnRSZWN0OyB9CkBAIC0yMTcsMTMgKzIxOCwxMyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1l
bnQgY29udGFpbmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBp
bmRpdmlkdWFsIHdpZHRoIGFuZCBoZWlnaHQKICAgICAvLyB2YWx1ZXMpLgotICAgIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIEFsd2F5cyBh
dCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOyAvLyBB
bHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0
KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUo
KS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXpl
KGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1
cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBp
bmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigpOyB9CisgICAgU2Nyb2xsUG9zaXRpb24g
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3Qo
TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQogCiAgICAgU2Nyb2xs
UG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIFRoZSBt
YXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KIApAQCAtMjU4LDcgKzI1OSw3
IEBAIHB1YmxpYzoKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgdmVyeSB0b3Agb2YgdGhlIHZpZXcu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gZG9jdW1lbnRTY3JvbGxQb3NpdGlv
blJlbGF0aXZlVG9WaWV3T3JpZ2luKCkgY29uc3Q7CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1v
dW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNo
ZWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBTY3JvbGxQb3NpdGlv
biBjYWNoZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9z
aXRpb247IH0KQEAgLTMxMywxMyArMzE0LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Zmc2Ny
ZWVuKCkgY29uc3Q7CiAKICAgICAvLyBDYWxsZWQgd2hlbiBvdXIgZnJhbWUgcmVjdCBjaGFuZ2Vz
IChvciB0aGUgcmVjdC9zY3JvbGwgcG9zaXRpb24gb2YgYW4gYW5jZXN0b3IgY2hhbmdlcykuCi0g
ICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0
c0NoYW5nZWQoKSBmaW5hbDsKICAgICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRl
IG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAg
ICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlIHRvIG5vdGlmeSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBjaGFu
Z2UuCi0gICAgdm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBS
ZWN0Q2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8g
aGl0IHRlc3Qgc2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxl
cnMgKGxpa2UgV2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJ
bnRQb2ludCYgd2luZG93UG9pbnQpOwpAQCAtMzQzLDEzICszNDQsMTMgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIFdpZGdldCBvdmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29u
dGVudHMgb2YgdGhlIHZpZXcgYXMgd2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVu
c3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8g
ZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvdygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGlkZSgpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgZmluYWw7CiAgICAgCiAgICAgLy8g
UGFuIHNjcm9sbGluZy4KICAgICBzdGF0aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVzID0g
MTU7CkBAIC0zNTcsMjEgKzM1OCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVQYW5TY3Jv
bGxJY29uKCk7CiAgICAgdm9pZCBwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0Jik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNvbnN0IEludFBv
aW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsK
LSAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOworICAgIGJvb2wgc2Ny
b2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1Zp
ZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWlu
aW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3QgZmluYWw7Cisg
ICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Ny
b2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAotICAgIGJvb2wgaXNTY3Jv
bGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoY29uc3QgU2Ny
b2xsT2Zmc2V0JiBvbGRPZmZzZXQsIGNvbnN0IFNjcm9sbE9mZnNldCYgbmV3T2Zmc2V0KTsKIAog
cHJvdGVjdGVkOgpAQCAtMzg0LDI2ICszODMsMjYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBh
dmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgPSAwOwogCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGNyZWF0ZS9kZXN0cm95IHNjcm9sbGJhcnMuCiAg
ICAgLy8gVGhleSByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Nyb2xsYmFyIHdhcyBhZGRlZCBvciByZW1v
dmVkLgotICAgIGJvb2wgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250
ZW50U2l6ZUFmZmVjdGVkID0gMCk7Ci0gICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihi
b29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gMCk7CisgICAgYm9vbCBzZXRIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQgPSBudWxscHRy
KTsKKyAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wqIGNvbnRlbnRT
aXplQWZmZWN0ZWQgPSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxD
b3JuZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCkgPSAw
OworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIGZp
bmFsOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMu
Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KSA9IDA7CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGlu
dmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Ns
b3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxP
cmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBk
YXRlUG9zaXRpb25TeW5jaHJvbm91c2x5KTsKIAogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJhbWVW
aWV3IHRvIGNoZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHZpcnR1
YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENhbGxl
ZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJhcnMgdG8gYWNjdXJhdGVseSByZWZsZWN0IHRoZSBzdGF0
ZSBvZiB0aGUgdmlldy4KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9z
aXRpb24mIGRlc2lyZWRQb3NpdGlvbik7CkBAIC00MTEsMjcgKzQxMCwyOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgZmxvYXQgcGxhdGZvcm1Ub3BDb250ZW50SW5zZXQoKSBjb25zdDsKICAgICB2b2lkIHBs
YXRmb3JtU2V0VG9wQ29udGVudEluc2V0KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKKyAgICB2b2lk
IGhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNo
YW5nZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZERlZmVyU2Ny
b2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9m
ZnNldCYsIGNvbnN0IFNjcm9sbE9mZnNldCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxP
ZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYsIGNv
bnN0IFNjcm9sbE9mZnNldCYpID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgLy8gU2l6ZSBhdmFpbGFibGUgZm9yIHZpZXcgY29udGVudHMsIGV4Y2x1ZGluZyBjb250
ZW50IGluc2V0cy4gTm90IGFmZmVjdGVkIGJ5IHpvb21pbmcuCiAgICAgSW50U2l6ZSBzaXplRm9y
VW5vYnNjdXJlZENvbnRlbnQoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0g
RXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCi0gICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVD
b250ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHZpc2libGVD
b250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywg
VmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEludFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHVkZXNTY3JvbGxiYXJzID0gRXhjbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogCiAgICAg
dm9pZCBjb21wbGV0ZVVwZGF0ZXNBZnRlclNjcm9sbFRvKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKTsKIAogICAgIGJvb2wgc2V0SGFzU2Nyb2xsYmFySW50ZXJuYWwoUmVmUHRyPFNjcm9sbGJh
cj4mLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXpl
QWZmZWN0ZWQpOwogCisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBTY3JvbGxi
YXJNb2RlIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGU7CkBAIC00NDIsNyArNDQzLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9oaWJpdHNTY3JvbGxpbmc7CiAKLSAgICBIYXNoU2V0PFJl
ZlB0cjxXaWRnZXQ+PiBtX2NoaWxkcmVuOworICAgIEhhc2hTZXQ8UmVmPFdpZGdldD4+IG1fY2hp
bGRyZW47CiAKICAgICAvLyBUaGlzIGJvb2wgaXMgdW51c2VkIG9uIE1hYyBPUyBiZWNhdXNlIHdl
IGRpcmVjdGx5IGFzayB0aGUgcGxhdGZvcm0gd2lkZ2V0CiAgICAgLy8gd2hldGhlciBpdCBpcyBz
YWZlIHRvIGJsaXQgb24gc2Nyb2xsLgpAQCAtNDgzLDkgKzQ4NCw5IEBAIHByaXZhdGU6CiAKICAg
ICBJbnRSZWN0IHJlY3RUb0NvcHlPblNjcm9sbCgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2aWV3IGNoYW5nZXMuICBGcmFtZVZp
ZXcgb3ZlcnJpZGVzIHRoaXMgdG8gZ2VuZXJhdGUgcmVwYWludCBpbnZhbGlkYXRpb25zLgotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSB7
IH0KKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGlzIHZp
ZXcgY2hhbmdlcy4gRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQg
aW52YWxpZGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXll
cnNBZnRlclNjcm9sbGluZygpID0gMDsKIAogICAgIHZvaWQgcGxhdGZvcm1BZGRDaGlsZChXaWRn
ZXQqKTsKICAgICB2b2lkIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuaAppbmRleCA1OTExOTc4YWVlYzE4ZjA4M2ZkYmY4NWYxYWYzZWQyNDE3OTAxMTY1
Li4zMTRhOGRmNzU5MDk5MTUzOTI3NWFhZDRhMzlkZDliNmM4ZWE2ZTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1
cm4gem9vbWVkU2l6ZTsgfQogICAgIAogICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBm
b3IgYSBjb250cm9sIGluIHpvb21lZCBjb29yZGluYXRlcy4gIAotICAgIHZpcnR1YWwgTGVuZ3Ro
U2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
ZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7IH0KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWlu
aW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8q
em9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9
IH07IH0KICAgICAKICAgICAvLyBBbGxvd3MgdGhlIHRoZW1lIHRvIG1vZGlmeSB0aGUgZXhpc3Rp
bmcgcGFkZGluZy9ib3JkZXIuCiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmco
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRC
b3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IDlhMGRmMTcwMDhmMjE3NGJkMTdmYjM2MTY4Mzc0
OTVhNDNjMThhN2MuLjhmNWFkOTM2MjczMTFiZTIzMjYxZjE0NzhjYzQ2ZWJlYWQzY2VmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERl
bm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjIsMjEgKzIy
LDE2IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uX2gKLSNkZWZpbmUgQW5pbWF0aW9u
X2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKLQot
I2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotI2luY2x1ZGUgIkFuaW1hdGlvblRy
aWdnZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNs
dWRlICJUaW1pbmdGdW5jdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQorI2luY2x1ZGUgIkFuaW1hdGlv
blRyaWdnZXIuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDIwICs1
NywyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBGbGFncyB0aGlzIHRvIGJlIHRoZSBzcGVjaWFsICJu
b25lIiBhbmltYXRpb24gKGFuaW1hdGlvbi1uYW1lOiBub25lKQogICAgIGJvb2wgaXNOb25lQW5p
bWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc05vbmU7IH0KKwogICAgIC8vIFdlIGNhbiBtYWtl
IHBsYWNlaG9sZGVyIEFuaW1hdGlvbiBvYmplY3RzIHRvIGtlZXAgdGhlIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0cwogICAgIC8vIG9mIHByb3BlcnRpZXMgaW4gc3luYy4gaXNWYWxpZEFuaW1hdGlvbiBt
ZWFucyB0aGlzIGlzIG5vdCBhIHBsYWNlaG9sZGVyLgogICAgIGJvb2wgaXNWYWxpZEFuaW1hdGlv
bigpIGNvbnN0IHsgcmV0dXJuICFtX2lzTm9uZSAmJiAhbV9uYW1lLmlzRW1wdHkoKTsgfQogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoIW1fZGlyZWN0
aW9uU2V0ICYmICFtX2R1cmF0aW9uU2V0ICYmICFtX2ZpbGxNb2RlU2V0Ci0gICAgICAgICAgICAg
ICAgJiYgIW1fbmFtZVNldCAmJiAhbV9wbGF5U3RhdGVTZXQgJiYgIW1faXRlcmF0aW9uQ291bnRT
ZXQKLSAgICAgICAgICAgICAgICAmJiAhbV9kZWxheVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNl
dCAmJiAhbV9wcm9wZXJ0eVNldAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQot
ICAgICAgICAgICAgICAgICYmICFtX3RyaWdnZXJTZXQpOwotI2Vsc2UKLSAgICAgICAgICAgICAg
ICApOworICAgICAgICBpZiAobV90cmlnZ2VyU2V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCisgICAgICAgIHJldHVybiAhbV9kaXJlY3Rpb25TZXQgJiYgIW1fZHVyYXRpb25T
ZXQgJiYgIW1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxh
eVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50U2V0CisgICAgICAgICAgICAmJiAhbV9kZWxh
eVNldCAmJiAhbV90aW1pbmdGdW5jdGlvblNldCAmJiAhbV9wcm9wZXJ0eVNldDsKICAgICB9CiAK
ICAgICBib29sIGlzRW1wdHlPclplcm9EdXJhdGlvbigpIGNvbnN0CkBAIC0xMTQsMTEgKzEwOSw3
IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7
IH0KIAotICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7Ci0gICAgICAgIEFuaW1hdGVBbGwsCi0gICAg
ICAgIEFuaW1hdGVOb25lLAotICAgICAgICBBbmltYXRlU2luZ2xlUHJvcGVydHkKLSAgICB9Owor
ICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1hdGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRl
U2luZ2xlUHJvcGVydHkgfTsKIAogICAgIGVudW0gQW5pbWF0aW9uRGlyZWN0aW9uIHsKICAgICAg
ICAgQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTM5LDEwICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIFN0eWxlOjpTY29wZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lU3R5bGVTY29wZU9yZGluYWw7IH0KICAgICBFQW5pbVBsYXlTdGF0ZSBw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBsYXlTdGF0ZT4obV9w
bGF5U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KKyAgICBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgUGFzc1Jl
ZlB0cjxBbmltYXRpb25UcmlnZ2VyPiB0cmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmlnZ2Vy
OyB9CisgICAgQW5pbWF0aW9uVHJpZ2dlciogdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJp
Z2dlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1f
ZGVsYXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQpAQCAtMTU4LDEwICsxNDksMTAgQEAgcHVi
bGljOgogICAgIH0KICAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7IG1f
cGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYm
IGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgbV90aW1p
bmdGdW5jdGlvblNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbk1vZGUoQW5pbWF0
aW9uTW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKLSAgICB2b2lkIHNldFRyaWdnZXIoUGFzc1JlZlB0cjxBbmltYXRpb25Ucmln
Z2VyPiB0KSB7IG1fdHJpZ2dlciA9IHQ7IG1fdHJpZ2dlclNldCA9IHRydWU7IH0KKyAgICB2b2lk
IHNldFRyaWdnZXIoUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+JiYgdHJpZ2dlcikgeyBtX3RyaWdn
ZXIgPSBXVEZNb3ZlKHRyaWdnZXIpOyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9uKGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KQEAg
LTE5NywyMiArMTg4LDIyIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9maWxsTW9kZSA6IDI7
CiAKIAotICAgIHVuc2lnbmVkIG1fcGxheVN0YXRlICAgICA6IDI7CisgICAgdW5zaWduZWQgbV9w
bGF5U3RhdGUgOiAyOwogCi0gICAgYm9vbCBtX2RlbGF5U2V0ICAgICAgICAgIDogMTsKLSAgICBi
b29sIG1fZGlyZWN0aW9uU2V0ICAgICAgOiAxOwotICAgIGJvb2wgbV9kdXJhdGlvblNldCAgICAg
ICA6IDE7Ci0gICAgYm9vbCBtX2ZpbGxNb2RlU2V0ICAgICAgIDogMTsKKyAgICBib29sIG1fZGVs
YXlTZXQgOiAxOworICAgIGJvb2wgbV9kaXJlY3Rpb25TZXQgOiAxOworICAgIGJvb2wgbV9kdXJh
dGlvblNldCA6IDE7CisgICAgYm9vbCBtX2ZpbGxNb2RlU2V0IDogMTsKICAgICBib29sIG1faXRl
cmF0aW9uQ291bnRTZXQgOiAxOwotICAgIGJvb2wgbV9uYW1lU2V0ICAgICAgICAgICA6IDE7Ci0g
ICAgYm9vbCBtX3BsYXlTdGF0ZVNldCAgICAgIDogMTsKLSAgICBib29sIG1fcHJvcGVydHlTZXQg
ICAgICAgOiAxOworICAgIGJvb2wgbV9uYW1lU2V0IDogMTsKKyAgICBib29sIG1fcGxheVN0YXRl
U2V0IDogMTsKKyAgICBib29sIG1fcHJvcGVydHlTZXQgOiAxOwogICAgIGJvb2wgbV90aW1pbmdG
dW5jdGlvblNldCA6IDE7CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAg
Ym9vbCBtX3RyaWdnZXJTZXQgICAgICAgIDogMTsKKyAgICBib29sIG1fdHJpZ2dlclNldCA6IDE7
CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc05vbmUgICAgICAgICAgICA6IDE7CisgICAgYm9vbCBt
X2lzTm9uZSA6IDE7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEZWxheSgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMywxMiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBpbml0aWFsTmFtZSgpOwogICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBp
bml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgICBz
dGF0aWMgQ1NTUHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHkoKSB7IHJldHVybiBDU1NQcm9wZXJ0
eUludmFsaWQ7IH0KLSAgICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4g
aW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsVGlt
aW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25z
dCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGluaXRpYWxUcmlnZ2VyKCkgeyByZXR1cm4g
QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxBbmltYXRp
b25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJuIEF1dG9BbmltYXRpb25UcmlnZ2Vy
OjpjcmVhdGUoKTsgfQogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBbmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwCmluZGV4IDYyNWQ3OTAxNWEwNzQwNmEyOTk4ODAxM2E2
NTIwNmI1MDg0MjcxZWEuLjBhMzIwMjI1NDU5YjFmZDA2NjI2NWVmMmNkN2E1OWRlNzIyNTcyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25M
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZp
bmUgRklMTF9VTlNFVF9QUk9QRVJUWSh0ZXN0LCBwcm9wR2V0LCBwcm9wU2V0KSBcCiBmb3IgKGkg
PSAwOyBpIDwgc2l6ZSgpICYmIGFuaW1hdGlvbihpKS50ZXN0KCk7ICsraSkgeyB9IFwKLWlmIChp
IDwgc2l6ZSgpICYmIGkgIT0gMCkgeyBcCitpZiAoaSkgeyBcCiAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGkgPCBzaXplKCk7ICsraSwgKytqKSBcCiAgICAgICAgIGFuaW1hdGlvbihpKS5wcm9wU2V0
KGFuaW1hdGlvbihqKS5wcm9wR2V0KCkpOyBcCiB9CiAKIEFuaW1hdGlvbkxpc3Q6OkFuaW1hdGlv
bkxpc3QoY29uc3QgQW5pbWF0aW9uTGlzdCYgb3RoZXIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvdGhlci5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChB
bmltYXRpb246OmNyZWF0ZShvdGhlci5hbmltYXRpb24oaSkpKTsKKyAgICBtX2FuaW1hdGlvbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5zaXplKCkpOworICAgIGZvciAoYXV0byYgYW5p
bWF0aW9uIDogb3RoZXIubV9hbmltYXRpb25zKQorICAgICAgICBtX2FuaW1hdGlvbnMudW5jaGVj
a2VkQXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSkpOwogfQogCiB2b2lk
IEFuaW1hdGlvbkxpc3Q6OmZpbGxVbnNldFByb3BlcnRpZXMoKQpAQCAtNTUsOSArNTYsMTAgQEAg
Ym9vbCBBbmltYXRpb25MaXN0OjpvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVy
KSBjb25zdAogewogICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChhbmltYXRp
b24oaSkgIT0gb3RoZXIuYW5pbWF0aW9uKGkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmgKaW5kZXggYzg0Y2I5YjFkMTUxNjNkMDc2ODkz
NzQ2MTc0MDZkODQ5NDBkYWFmZS4uZWE3YzliNzhhMTk1MGYxNWU5NGZhYWJhYTk1MWI0ODE1NTJm
N2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oCkBAIC0yMiw4ICsyMiw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9u
TGlzdF9oCi0jZGVmaW5lIEFuaW1hdGlvbkxpc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiw2ICszNSw3IEBA
IGNsYXNzIEFuaW1hdGlvbkxpc3QgewogcHVibGljOgogICAgIEFuaW1hdGlvbkxpc3QoKSB7IH0K
ICAgICBBbmltYXRpb25MaXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsKKyAgICBBbmltYXRpb25M
aXN0KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9w
ZXJ0aWVzKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmKSBjb25z
dDsKQEAgLTQ5LDIyICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemUoc2l6
ZV90IG4pIHsgbV9hbmltYXRpb25zLnJlc2l6ZShuKTsgfQogICAgIHZvaWQgcmVtb3ZlKHNpemVf
dCBpKSB7IG1fYW5pbWF0aW9ucy5yZW1vdmUoaSk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGlv
bik7Ci0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKLSAgICB9Ci0gICAg
Ci0gICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuICptX2FuaW1hdGlv
bnNbaV07IH0KLSAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gKm1fYW5pbWF0aW9uc1tpXTsgfQorICAgIHZvaWQgYXBwZW5kKFJlZjxBbmltYXRp
b24+JiYgYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24p
KTsgfQorCisgICAgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIHsgcmV0dXJuIG1fYW5p
bWF0aW9uc1tpXS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnNbaV0uZ2V0KCk7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KGNvbnN0IEFuaW1hdGlvbkxpc3QmKTsK
KyAgICBBbmltYXRpb25MaXN0JiBvcGVyYXRvcj0oQW5pbWF0aW9uTGlzdCYmKSA9IGRlZmF1bHQ7
CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKKyAgICBWZWN0
b3I8UmVmPEFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIH07ICAgIAogCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFuaW1hdGlvbkxpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKaW5kZXggZmNh
NDVjMTBkMjEwNGYwNWVkZWJiNzg4MDAxNGEyNjNhNjViMWUxMS4uNWVhMDFiMjBiMjYyN2I4ZDk3
YmEzNWYzZTJkN2NiZTRhNTUyOTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCkBAIC0yMywyOSArMjMsMjQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBbmltYXRpb25UcmlnZ2VyX2gKLSNkZWZpbmUg
QW5pbWF0aW9uVHJpZ2dlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFU
SU9OU19MRVZFTF8yKQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBbmltYXRpb25UcmlnZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVHJpZ2dlcj4g
ewogcHVibGljOgotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFuaW1hdGlvblRyaWdnZXI+IGNs
b25lKCkgY29uc3QgPSAwOwotCi0gICAgZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7
Ci0gICAgICAgIEF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
clR5cGUKLSAgICB9OworICAgIHZpcnR1YWwgUmVmPEFuaW1hdGlvblRyaWdnZXI+IGNsb25lKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVHJpZ2dlcigpIHsgfQogCisgICAg
ZW51bSBjbGFzcyBBbmltYXRpb25UcmlnZ2VyVHlwZSB7IEF1dG9BbmltYXRpb25UcmlnZ2VyVHlw
ZSwgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5cGUgfTsKICAgICBBbmltYXRpb25UcmlnZ2VyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGlzQXV0b0FuaW1h
dGlvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQW5pbWF0aW9uVHJpZ2dlclR5
cGU6OkF1dG9BbmltYXRpb25UcmlnZ2VyVHlwZTsgfQpAQCAtNjIsMTYgKzU3LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICBBbmltYXRpb25UcmlnZ2VyVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBBdXRv
QW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIEF1dG9B
bmltYXRpb25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBSZWY8QXV0b0FuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgfkF1dG9BbmltYXRpb25UcmlnZ2VyKCkgeyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG90aGVyLmlzQXV0b0FuaW1hdGlvblRyaWdnZXIoKTsKICAgICB9CkBAIC04Miwy
MiArNzUsMjAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmlt
YXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRy
aWdnZXI+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogfTsKIAotY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uVHJpZ2dlciA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKK2NsYXNzIFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0
aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUpCisgICAgc3RhdGljIFJlZjxTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyPiBjcmVhdGUoTGVuZ3RoIHN0YXJ0VmFsdWUsIExlbmd0aCBlbmRWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmICghb3RoZXIuaXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEFuaW1hdGlv
blRyaWdnZXI+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8QW5pbWF0aW9uVHJpZ2dl
cj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRWYWx1ZSwgbV9lbmRWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRW
YWx1ZSwgbV9lbmRWYWx1ZSkpOwogICAgIH0KIAogICAgIExlbmd0aCBtX3N0YXJ0VmFsdWU7CkBA
IC0xNTQsNSArMTQ1LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dF
UihBdXRvQW5pbWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHIKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciwgaXNTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyKTsKIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBBbmltYXRpb25Ucmln
Z2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKaW5kZXggZjVlNjYxNmE5N2NkNTNjNmJjYWUxMzVkZDM2Y2M0N2MyZmI3YzhjYy4u
ZmNhYTNjM2ZmZGI2ZGViMmFiZWViYzhkMDIwYTBkMzlkYTMyZjc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTIyLDU0
ICsyMiw1MCBAQAogICoKICAqLwogCi0jaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKLSNkZWZpbmUg
VGltaW5nRnVuY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBU
ZXh0U3RyZWFtOworCiBjbGFzcyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRp
bWluZ0Z1bmN0aW9uPiB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBSZWY8VGltaW5nRnVuY3Rpb24+
IGNsb25lKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsK
LSAgICAgICAgTGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rp
b24sIFNwcmluZ0Z1bmN0aW9uCi0gICAgfTsKLSAgICAKICAgICB2aXJ0dWFsIH5UaW1pbmdGdW5j
dGlvbigpIHsgfQogCisgICAgZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgeyBMaW5lYXJGdW5jdGlv
biwgQ3ViaWNCZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbiwgU3ByaW5nRnVuY3Rpb24gfTsK
ICAgICBUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIAorCiAgICAgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IExpbmVhckZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3ViaWNCZXppZXJGdW5jdGlvbjsg
fQogICAgIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFN0ZXBzRnVuY3Rpb247IH0KICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KLSAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3Qg
PSAwOworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBUaW1p
bmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKKyAgICBleHBsaWNpdCBUaW1pbmdG
dW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQotICAgIAorCitwcml2YXRlOgogICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSBt
X3R5cGU7CiB9OwogCiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBU
aW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGluZWFyVGlt
aW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxMaW5lYXJUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGlt
aW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdG
dW5jdGlvbik7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgfkxpbmVhclRpbWluZ0Z1bmN0aW9u
KCkgeyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzTGluZWFy
VGltaW5nRnVuY3Rpb24oKTsKICAgICB9CkBAIC04MCw2MSArNzYsNTQgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKICAg
ICB9CiB9OwogCiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGlj
IFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uUHJlc2V0
IHsKLSAgICAgICAgRWFzZSwKLSAgICAgICAgRWFzZUluLAotICAgICAgICBFYXNlT3V0LAotICAg
ICAgICBFYXNlSW5PdXQsCi0gICAgICAgIEN1c3RvbQotICAgIH07CisgICAgZW51bSBUaW1pbmdG
dW5jdGlvblByZXNldCB7IEVhc2UsIEVhc2VJbiwgRWFzZU91dCwgRWFzZUluT3V0LCBDdXN0b20g
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
PiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAg
IHN0YXRpYyBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGRvdWJsZSB4MSwg
ZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihDdXN0b20sIHgxLCB5MSwgeDIs
IHkyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgyLCB5MikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJl
ZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoVGltaW5nRnVuY3Rpb25QcmVzZXQgcHJlc2V0KQorICAgIHN0YXRpYyBSZWY8Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAocHJlc2V0KSB7CiAgICAgICAgIGNhc2UgRWFzZToKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24pOwogICAgICAgICBjYXNlIEVhc2VJbjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlSW4sIDAuNDIsIDAuMCwgMS4wLCAx
LjApKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFz
ZU91dDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihFYXNlT3V0LCAwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VPdXQsIDAuMCwg
MC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgY2FzZSBFYXNlSW5PdXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluT3V0LCAw
LjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICBjYXNlIEN1c3RvbToKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIH5DdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgeyB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBm
aW5hbAogICAgIHsKLSAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsK
LSAgICAgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0ICE9IEN1c3RvbSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV90aW1pbmdGdW5jdGlvblByZXNldCA9PSBjdGYtPm1fdGltaW5n
RnVuY3Rpb25QcmVzZXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtX3gxID09
IGN0Zi0+bV94MSAmJiBtX3kxID09IGN0Zi0+bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBt
X3kyID09IGN0Zi0+bV95MjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghb3RoZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIG90aGVyQ3ViaWMgPSBzdGF0aWNfY2FzdDxj
b25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4ob3RoZXIpOworICAgICAgICBpZiAobV90
aW1pbmdGdW5jdGlvblByZXNldCAhPSBvdGhlckN1YmljLm1fdGltaW5nRnVuY3Rpb25QcmVzZXQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9u
UHJlc2V0ICE9IEN1c3RvbSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gbV94MSA9PSBvdGhlckN1YmljLm1feDEgJiYgbV95MSA9PSBvdGhlckN1YmljLm1feTEgJiYg
bV94MiA9PSBvdGhlckN1YmljLm1feDIgJiYgbV95MiA9PSBvdGhlckN1YmljLm1feTI7CiAgICAg
fQogCiAgICAgZG91YmxlIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQpAQCAtMTQ5LDIxICsx
MzgsMjEgQEAgcHVibGljOgogICAgICAgICBtX3gyID0geDI7CiAgICAgICAgIG1feTIgPSB5MjsK
ICAgICB9Ci0gICAgCisKICAgICBUaW1pbmdGdW5jdGlvblByZXNldCB0aW1pbmdGdW5jdGlvblBy
ZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQ7IH0KICAgICB2b2lk
IHNldFRpbWluZ0Z1bmN0aW9uUHJlc2V0KFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkgeyBt
X3RpbWluZ0Z1bmN0aW9uUHJlc2V0ID0gcHJlc2V0OyB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGRlZmF1bHRUaW1pbmdGdW5jdGlvbigpCisKKyAg
ICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZGVmYXVsdFRpbWluZ0Z1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKiBkdGYgPSBjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBkdGY7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBmdW5jdGlvbiA9
IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJzZWQo
KSBjb25zdAorICAgIFJlZjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVSZXZlcnNl
ZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKDEuMCAtIG1feDIsIDEuMCAt
IG1feTIsIDEuMCAtIG1feDEsIDEuMCAtIG1feTEpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uUHJl
c2V0IHByZXNldCA9IEVhc2UsIGRvdWJsZSB4MSA9IDAuMjUsIGRvdWJsZSB5MSA9IDAuMSwgZG91
YmxlIHgyID0gMC4yNSwgZG91YmxlIHkyID0gMS4wKQogICAgICAgICA6IFRpbWluZ0Z1bmN0aW9u
KEN1YmljQmV6aWVyRnVuY3Rpb24pCkBAIC0xNzUsOSArMTY0LDkgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBmaW5hbAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KG1fdGltaW5nRnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIsIG1feTIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihtX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CiAgICAgfQogCiAgICAg
ZG91YmxlIG1feDE7CkBAIC0xODksMjUgKzE3OCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKIHB1YmxpYzoK
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUo
aW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdG
dW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0
U3RhcnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihzdGVwcywgc3RlcEF0U3RhcnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Rl
cHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5nRnVu
Y3Rpb24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBz
VGltaW5nRnVuY3Rpb24oMSwgdHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB+
U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlm
IChvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgY29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5j
dGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3Rl
cHMgJiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1fc3RlcEF0U3RhcnQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3RlcHNUaW1pbmdGdW5j
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlclN0
ZXBzID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXJTdGVwcy5tX3N0ZXBzICYmIG1fc3RlcEF0U3Rh
cnQgPT0gb3RoZXJTdGVwcy5tX3N0ZXBBdFN0YXJ0OwogICAgIH0KICAgICAKICAgICBpbnQgbnVt
YmVyT2ZTdGVwcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcHM7IH0KQEAgLTIxNSw3ICsyMDAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
QXRTdGFydDsgfQogICAgIHZvaWQgc2V0U3RlcEF0U3RhcnQoYm9vbCBzdGVwQXRTdGFydCkgeyBt
X3N0ZXBBdFN0YXJ0ID0gc3RlcEF0U3RhcnQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBTdGVw
c1RpbWluZ0Z1bmN0aW9uKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBU
aW1pbmdGdW5jdGlvbihTdGVwc0Z1bmN0aW9uKQpAQCAtMjI0LDkgKzIwOSw5IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmlu
YWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihtX3N0ZXBzLCBtX3N0ZXBBdFN0YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0ZXBzVGltaW5nRnVuY3Rpb24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOwogICAgIH0KICAg
ICAKICAgICBpbnQgbV9zdGVwczsKQEAgLTI0NywxMyArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSgwLCAwLCAwLCAwKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAogICAgIHsK
LSAgICAgICAgaWYgKG90aGVyLmlzU3ByaW5nVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICAg
ICAgY29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mIG90aGVyU3RyaW5nID0gKnN0YXRpY19jYXN0
PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKLSAgICAgICAgICAgIHJldHVy
biBtX21hc3MgPT0gb3RoZXJTdHJpbmcubV9tYXNzICYmIG1fc3RpZmZuZXNzID09IG90aGVyU3Ry
aW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlclN0cmluZy5tX2RhbXBpbmcgJiYg
bV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTdHJpbmcubV9pbml0aWFsVmVsb2NpdHk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW90aGVyLmlzU3ByaW5n
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0
byYgb3RoZXJTcHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlclNwcmluZy5tX21hc3MgJiYg
bV9zdGlmZm5lc3MgPT0gb3RoZXJTcHJpbmcubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90
aGVyU3ByaW5nLm1fZGFtcGluZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlclNwcmluZy5t
X2luaXRpYWxWZWxvY2l0eTsKICAgICB9CiAKICAgICBkb3VibGUgbWFzcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWFzczsgfQpAQCAtMjc5LDkgKzI2Myw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0
aWZmbmVzcywgbV9kYW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTcHJpbmdUaW1pbmdGdW5jdGlvbihtX21hc3MsIG1fc3RpZmZuZXNzLCBt
X2RhbXBpbmcsIG1faW5pdGlhbFZlbG9jaXR5KSk7CiAgICAgfQogCiAgICAgZG91YmxlIG1fbWFz
czsKQEAgLTI5MCw5ICsyNzQsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2luaXRpYWxWZWxv
Y2l0eTsKIH07CiAKLWNsYXNzIFRleHRTdHJlYW07CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUaW1pbmdGdW5jdGlvbiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA0ZjliNWY1NWNjODQzZjRhYjg3
ZGUzNTU0MzlmODZkOTc4NmQxNmVhLi5kMThkYmRkOTQ0MjQ2NWQzM2U3ZTlkMGU3ZGNmODRlNmUw
M2MwNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQogCiAgICAgQXVkaW9DaGFubmVsKiBjaGFu
bmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7
IH0KLSAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5u
ZWxdLmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNo
YW5uZWwpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBB
dWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWVjNTNkOGEw
MTI3ZmMxOWJhNThiYTZkNGRmMmM5ZDE5YTk3NTZiZi4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFk
ZTExODJhNGUxZTUwZTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQwLDEyICsxNDAsMTEgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKKyAgICBhdXRvIGRhdGEgPSBh
ZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jv
b3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmYzU4ZmI2NWRm
ZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAzLi44MmI2YjYxNTY4NzdlMDQzY2M2MWQ4MzZi
YWE5MmE0YjJjNDcxMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEtleWVkRW5jb2RlckNGX2gKLSNkZWZpbmUgS2V5ZWRFbmNv
ZGVyQ0ZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDI1ICszNiwyNSBAQCBwdWJsaWM6CiAgICAgS2V5
ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAotICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2
YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0
cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkg
ZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZp
bmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9i
amVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5h
bDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlF
bGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZv
aWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFy
cmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7Cisg
ICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG1fcm9vdERpY3Rpb25hcnk7CiAKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEtleWVkRW5jb2RlckNG
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCmluZGV4IGIzOGQyY2FmZTdiNjkwM2Rk
NDRmYTZjMzZjZTM0MDFlOGU3M2I1NmIuLjc3ODIwMTc0MTI3YWU1ZGEzNWE2MWJhNGE4NmFkMGZi
ZTM0ZjMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtMjMsMTMgKzIz
LDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmxfaAotI2RlZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRl
IDxzcGVha19saWIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNSAr
NzQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1Byb3ZpZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCmluZGV4IGQ0OTIxMzY0MzA5OWMyYmE3NDVlYmZkNjk3ZWIxNTFhM2Zl
NTNmZjEuLjgxY2JlZDUzZDExNWU0NGYxMzRjMTIyNmQ2MzQ2MmM1OThlNDQ5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJp
YW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVp
bGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IDJkN2IxYzM0ZjcxOWIyNDg2NzcyNjIyNWUxM2I5Nzc0MmQyY2IzYmMuLmY5MWI0
ZGRiMzMxNWY2NmVjNGUwYzE5ZmQyNzA2NzNiNmM0NzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVu
Y29kZXJHbGliX2gKLSNkZWZpbmUgS2V5ZWRFbmNvZGVyR2xpYl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzksMjUgKzM4
LDI1IEBAIHB1YmxpYzoKICAgICBLZXllZEVuY29kZXJHbGliKCk7CiAgICAgfktleWVkRW5jb2Rl
ckdsaWIoKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChj
b25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgZmluYWw7
CisgICAgdm9pZCBlbmRPYmplY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5BcnJheShjb25z
dCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgZmluYWw7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQg
ZW5kQXJyYXlFbGVtZW50KCkgZmluYWw7CisgICAgdm9pZCBlbmRBcnJheSgpIGZpbmFsOwogCiAg
ICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1aWxkZXI7CiAgICAgVmVjdG9yPEdWYXJpYW50
QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVyU3RhY2s7CkBAIC02Niw1ICs2NSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVu
Y29kZXJHbGliX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKaW5kZXggZDA1NmViZmUyMmFhZTgxNTk0ZTg4YmE0YjJlNzgyMTUzOWRiNzk3YS4uYWY0OGIw
YjkyNDJjNTk3MDBlZWViMzYyY2FiNmUwM2U1YWY2ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTI3LDE1ICsyNywxMyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRDYWNoZV9oCi0jZGVmaW5lIEZvbnRDYWNoZV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMjkwLDUgKzI4OCwzIEBAIGlubGluZSB2b2lkIEZvbnRD
YWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKQogI2VuZGlmCiAKIH0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggOTMwM2E5MDViMDk3MTNhMmQ1Y2NiMjM5YjJkOTc3NWRlODExYWE1Ni4u
YWQzODJmNDE1YTNiNTEwZWZlNDEzYmVmN2E5ZGFjZjFkZjljMzg4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIw
MTMtMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1l
bCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBD
ZW50ZXIgVVNBLCBJbmMuCkBAIC0yMiwxMCArMjIsMTUgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBG
b250UGxhdGZvcm1EYXRhX2gKLSNkZWZpbmUgRm9udFBsYXRmb3JtRGF0YV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CisKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJDT01QdHIuaCIKQEAgLTQ0LDI1
ICs0OSwxOCBAQAogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIE5TRm9udDsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NU
Rm9udCogQ1RGb250UmVmOwotCiAjZW5kaWYKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmpl
Y3QuaD4KIHR5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOwpAQCAtNzAsNyArNjgsNiBAQCBp
bnRlcmZhY2UgSURXcml0ZUZvbnQ7CiBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogI2VuZGlm
CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CkBAIC04
MiwxMCArNzksNyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSgpOwotI2lmICFVU0UoRlJFRVRZUEUpCi0gICAgRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OwotI2VuZGlmCi0gICAgRm9udFBsYXRm
b3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVmYXVsdDsKKwogICAgIEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkp
OwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRX
aWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gQXV0b1RleHRS
ZW5kZXJpbmcpOwogCkBAIC0xMDMsMjcgKzk3LDM2IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdESSk7
CisjZW5kaWYKIAotI2lmIFVTRShDRykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykKICAg
ICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIENHRm9udFJlZiwgZmxvYXQgc2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIGJvb2wgdXNlR0RJ
KTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoRElSRUNUMkQpCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBJRFdy
aXRlRm9udCosIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBib29sIHVzZUdESSk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgRm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19mb250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmIFVT
RShDQUlSTykKKyAgICBGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4sIGNhaXJvX2Zv
bnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CiAjZW5kaWYK
IAogI2lmIFVTRShGUkVFVFlQRSkKICAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9m
YWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljT2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CisgICAgRm9udFBsYXRmb3JtRGF0YShGb250UGxhdGZvcm1EYXRhJiYpID0gZGVm
YXVsdDsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShGb250UGxhdGZvcm1EYXRh
JiYpID0gZGVmYXVsdDsKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBt
X2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91
c2VHREk7IH0KLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBDVEZvbnRSZWYgZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5nZXQoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIENURm9udFJlZiByZWdpc3RlcmVkRm9udCgpIGNvbnN0OyAv
LyBSZXR1cm5zIG51bGxwdHIgaWZmIHRoZSBmb250IGlzIG5vdCByZWdpc3RlcmVkLCBzdWNoIGFz
IHdlYiBmb250cyAob3RoZXJ3aXNlIHJldHVybnMgZm9udCgpKS4KIApAQCAtMTg5LDEyICsxOTIs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBVU0UoRlJFRVRZUEUpCi0gICAgRm9u
dFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSNlbHNl
Ci0gICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KSA9IGRlZmF1bHQ7Ci0jZW5kaWYKLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwbGF0Zm9ybUlz
RXF1YWwob3RoZXIpCkBAIC0yMzIsMTIgKzIyOSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0Owor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ0dGbG9hdCBjdEZvbnRTaXplKCkgY29uc3Q7CiAj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZP
TlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgorCiAjaWYgVVNF
KEZSRUVUWVBFKQogICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7
CiAjZW5kaWYKQEAgLTI1MywxMyArMjUzLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSAmJiAo
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMCkpCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9j
Z0ZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SURXcml0ZUZv
bnQ+IG1fZHdGb250OwogICAgIENPTVB0cjxJRFdyaXRlRm9udEZhY2U+IG1fZHdGb250RmFjZTsK
ICNlbmRpZgorCiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90
PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKwogI2lmIFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8
RmNQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgbXV0YWJsZSBGY1VuaXF1ZVB0cjxGY0ZvbnRTZXQ+
IG1fZmFsbGJhY2tzOwpAQCAtMjg1LDE1ICsyODgsMTggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX2lzRW1vamkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAjZW5kaWYKKwogI2lmIFVT
RShGUkVFVFlQRSkKICAgICBib29sIG1fZml4ZWRXaWR0aCB7IGZhbHNlIH07CiAjZW5kaWYKIH07
CiAKICNpZiBVU0UoQVBQS0lUKQorCiAvLyBOU0ZvbnRzIGFuZCBDVEZvbnRSZWZzIGFyZSB0b2xs
LWZyZWUtYnJpZGdlZC4KIGlubGluZSBDVEZvbnRSZWYgdG9DVEZvbnQoTlNGb250ICpmb250KQog
ewpAQCAtMzA0LDkgKzMxMCwxMSBAQCBpbmxpbmUgTlNGb250ICp0b05TRm9udChDVEZvbnRSZWYg
Zm9udCkKIHsKICAgICByZXR1cm4gKE5TRm9udCAqKWZvbnQ7CiB9CisKICNlbmRpZgogCiAjaWYg
VVNFKENHKQorCiBjbGFzcyBTY29wZWRUZXh0TWF0cml4IHsKIHB1YmxpYzoKICAgICBTY29wZWRU
ZXh0TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtIG5ld01hdHJpeCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCkBAIC0zMzAsOCArMzM4LDcgQEAgcHJpdmF0ZToKICAgICBDR0NvbnRleHRSZWYgbV9jb250
ZXh0OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdGV4dE1hdHJpeDsKIH07CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApp
bmRleCBkOTE5ZmZkYmU1NGZjMjU5YTYxZjE1MWFkZTc3MDViNzNkODM2MDBjLi5mZTM3ZDI1MzRi
ZmMxMDcxMmI2NDAxMjFlMmY1YmQyMzI0YmFlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgR3JhcGhpY3NMYXllcl9oCi0jZGVmaW5lIEdy
YXBoaWNzTGF5ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNp
bmNsdWRlICJDb2xvci5oIgpAQCAtODAsMTEgKzc5LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIEFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBtX2tl
eVRpbWUob3RoZXIubV9rZXlUaW1lKQotICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIu
bV90aW1pbmdGdW5jdGlvbiA/IG90aGVyLm1fdGltaW5nRnVuY3Rpb24tPmNsb25lKCkgOiBudWxs
cHRyKQorICAgICAgICAsIG1fdGltaW5nRnVuY3Rpb24ob3RoZXIubV90aW1pbmdGdW5jdGlvbiA/
IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4geyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgp
IH0gOiBudWxscHRyKQogICAgIHsKICAgICB9CiAKKyAgICBBbmltYXRpb25WYWx1ZShBbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQW5pbWF0aW9uVmFsdWUmKSA9IGRlbGV0ZTsKKwogICAgIGRvdWJsZSBtX2tleVRpbWU7CiAg
ICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOwogfTsKQEAgLTEwNCwx
MiArMTA3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCi0gICAgRmxvYXRBbmltYXRpb25WYWx1
ZShjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJiBvdGhlcikKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShvdGhlcikKLSAgICAgICAgLCBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCi0gICAgewotICAg
IH0KLQogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2
YXRlOgpAQCAtMTM0LDEwICsxMzEsMTMgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikKICAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X3ZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQob3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKClbaV0t
PmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogb3RoZXIubV92YWx1ZS5vcGVyYXRpb25zKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLm9wZXJhdGlvbnMoKS51bmNoZWNrZWRBcHBlbmQob3BlcmF0aW9uLT5jbG9uZSgp
KTsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKQEAgLTE2MiwxMCAr
MTYyLDEzIEBAIHB1YmxpYzoKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQW5pbWF0aW9uVmFsdWUob3RoZXIpCiAg
ICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fdmFsdWUub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkuYXBw
ZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92
YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlLm9w
ZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG90aGVy
Lm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCku
dW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiAgICAgfQogCisgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoRmlsdGVyQW5pbWF0aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
CiAKIHByaXZhdGU6CkBAIC0xODUsMTMgKzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgICAgICA6IG1fcHJv
cGVydHkob3RoZXIucHJvcGVydHkoKSkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3RoZXIubV92YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOworICAgICAgICBtX3ZhbHVlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG90aGVyLm1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiBvdGhlci5tX3ZhbHVlcykKKyAgICAgICAgICAgIG1fdmFsdWVzLnVuY2hl
Y2tlZEFwcGVuZCh2YWx1ZS0+Y2xvbmUoKSk7CiAgICAgfQogCi0gICAgfktleWZyYW1lVmFsdWVM
aXN0KCkKLSAgICB7Ci0gICAgfQorICAgIEtleWZyYW1lVmFsdWVMaXN0KEtleWZyYW1lVmFsdWVM
aXN0JiYpID0gZGVmYXVsdDsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKQEAgLTIwMCw2ICsyMDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICBLZXlmcmFtZVZhbHVl
TGlzdCYgb3BlcmF0b3I9KEtleWZyYW1lVmFsdWVMaXN0JiYpID0gZGVmYXVsdDsKKwogICAgIHZv
aWQgc3dhcChLZXlmcmFtZVZhbHVlTGlzdCYgb3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6OnN3
YXAobV9wcm9wZXJ0eSwgb3RoZXIubV9wcm9wZXJ0eSk7CkBAIC0yMTAsMTAgKzIxNCwxMCBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUo
KTsgfQogICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1
cm4gKm1fdmFsdWVzLmF0KGkpOyB9Ci0gICAgCisKICAgICAvLyBJbnNlcnQsIHNvcnRlZCBieSBr
ZXlUaW1lLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBBbmltYXRpb25WYWx1ZT4pOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBBbmltYXRpb25WYWx1ZT4+IG1fdmFsdWVzOwogICAgIEFuaW1h
dGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OwpAQCAtMjI1LDcgKzIyOSw2IEBAIHByb3RlY3RlZDoK
IGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNz
TGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIGVudW0gY2xh
c3MgVHlwZSB7CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgUGFnZVRpbGVkQmFja2luZywKQEAg
LTI0MSw3ICsyNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShU
eXBlKSB7IH0KIAotICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOworICAgIHVz
aW5nIFBsYXRmb3JtTGF5ZXJJRCA9IHVpbnQ2NF90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
cklEIHByaW1hcnlMYXllcklEKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTY4Myw1
ICs2ODYsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAvLyBPdXRzaWRlIHRoZSBX
ZWJDb3JlIG5hbWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gdGhlIGRlYnVnZ2Vy
Lgogdm9pZCBzaG93R3JhcGhpY3NMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogbGF5ZXIpOwogI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCA4MjQ1ZDRlNmRhNzM1Mzg4MmVhOWNlMjdhNTM3MjVlMWNmZTgxNmRlLi44NTQ2YzcxMmY2NGEx
NzA2ZDYyMGIzNTIzNDY0YmVmNTViZDhjYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0yMywyMSArMjMsMTggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNl
c3Npb25faAotI2RlZmluZSBDRE1TZXNzaW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Q0RNU2Vz
c2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRp
b25VUkwpID0gMDsKIAogICAgIGVudW0gewpAQCAtNjQsNyArNjEsNiBAQCBlbnVtIENETVNlc3Np
b25UeXBlIHsKIAogY2xhc3MgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbigp
IHsgfQogICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KIAogICAgIHZpcnR1YWwgQ0RNU2Vz
c2lvblR5cGUgdHlwZSgpIHsgcmV0dXJuIENETVNlc3Npb25UeXBlVW5rbm93bjsgfQpAQCAtNzks
NSArNzUsMyBAQCBwdWJsaWM6CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKLQotI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCBiMTc2MzI0N2MxMDJm
NjkwYTg0N2EyNjhiOTkwNjI5N2ViYjc0ZTQzLi45MTRhMGEyNzdmMmE0Njc4MzY1ZTMyMzI3ZDAy
NjlhMjBiZjhjZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtNDg2LDE0ICs0ODYsMTUgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQ
b2x5Z29uJgogICAgIHJldHVybiBGbG9hdFJlY3QodG9wTGVmdC52YWx1ZSgpLCBib3R0b21SaWdo
dC52YWx1ZSgpKTsKIH0KIAotUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBw
ZWRSZWN0c0Zvck91dGxpbmUoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBC
b3JkZXJEYXRhJiBib3JkZXJEYXRhLCBmbG9hdCBvdXRsaW5lT2Zmc2V0LCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
Rm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IEJvcmRlckRh
dGEmIGJvcmRlckRhdGEsCisgICAgZmxvYXQgb3V0bGluZU9mZnNldCwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikKIHsKICAgICBBU1NFUlQoYm9yZGVyRGF0YS5oYXNCb3JkZXJSYWRpdXMoKSk7Ci0gICAgRmxv
YXRTaXplIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lk
dGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLnRvcExlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKLSAg
ICBGbG9hdFNpemUgdG9wUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVyRGF0YS50b3BSaWdo
dCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BSaWdodCgpLmhlaWdodCgpLnZhbHVl
KCkpOwotICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZShib3JkZXJE
YXRhLmJvdHRvbVJpZ2h0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJEYXRhLmJvdHRvbVJpZ2h0
KCkuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgRmxvYXRTaXplIGJvdHRvbUxlZnRSYWRpdXMgPSBG
bG9hdFNpemUoYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgoKS52YWx1ZSgpLCBib3JkZXJE
YXRhLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS52YWx1ZSgpKTsKKworICAgIEZsb2F0U2l6ZSB0b3BM
ZWZ0UmFkaXVzIHsgYm9yZGVyRGF0YS50b3BMZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0
YS50b3BMZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgdG9wUmlnaHRSYWRp
dXMgeyBib3JkZXJEYXRhLnRvcFJpZ2h0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BS
aWdodCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVz
IHsgYm9yZGVyRGF0YS5ib3R0b21SaWdodCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEuYm90
dG9tUmlnaHQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0UmFk
aXVzIHsgYm9yZGVyRGF0YS5ib3R0b21MZWZ0KCkud2lkdGgudmFsdWUoKSwgYm9yZGVyRGF0YS5i
b3R0b21MZWZ0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKIAogICAgIGF1dG8gcm91bmRlZFJlY3QgPSBb
dG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBib3R0b21M
ZWZ0UmFkaXVzLCBvdXRsaW5lT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcl0gKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGQ3NTQ2ZTI2ODcxM2Y4ZDQ1Y2Q1Y2Y4Zjk0NmFlYWQ1
ZjQ0OWRlMjAuLjg2MTg1ZmMyYmMxODJlOTJlZTkwYmMyNmUxZDU4MWZkYmQ5ODExN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBA
IC00NCwxNiArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiogcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50KikKICAgICA6IG1f
cGFyZW50KHBhcmVudCkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc2Vzc2lvbklk
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKIHsKIH0KIAotUmVmUHRyPFVpbnQ4QXJyYXk+
IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK1JlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgVU5V
U0VEX1BBUkFNKGluaXREYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25VUkwpOwpA
QCAtNzAsMzUgKzY4LDMwIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVz
dEZvcktleVVSSShrZXlVUkkpOworICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LnRha2VSZXF1ZXN0
Rm9yS2V5VVJJKGtleVVSSSk7CiAgICAgaWYgKCFtX3JlcXVlc3QpIHsKICAgICAgICAgZXJyb3JD
b2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNlcnRpZmlj
YXRlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlm
aWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRl
RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlLT5i
YXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CiAKLSAgICBDU3RyaW5n
IGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7CisgICAgYXV0byBhc3NldFN0ciA9IGtleUlELnV0Zjgo
KTsKKyAgICBhdXRvIGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhhc3NldElELmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYXNzZXRTdHIu
ZGF0YSgpKSwgYXNzZXRTdHIubGVuZ3RoKCkpOwogCiAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0g
bnVsbHB0cjsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlSZXF1ZXN0ID0gYWRvcHRDRihB
VkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVEYXRhLmdldCgpLCBh
c3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOworICAgIGF1dG8ga2V5UmVxdWVzdCA9
IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0
YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKIAogICAgIGlmICgh
a2V5UmVxdWVzdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5m
bzsKICAgICAgICAgaWYgKGNmRXJyb3IpIHsKLSAgICAgICAgICAgIHVzZXJJbmZvID0gYWRvcHRD
RihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKTsKLQotICAgICAgICAgICAgaWYgKHVzZXJJ
bmZvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGRXJyb3JSZWYgdW5kZXJseWluZ0Vycm9yID0g
KENGRXJyb3JSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9y
VW5kZXJseWluZ0Vycm9yS2V5KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHVzZXJJbmZvID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpKSkgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvIHVuZGVybHlpbmdFcnJvciA9IChDRkVycm9yUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvclVuZGVybHlpbmdFcnJvcktleSkpCiAgICAgICAgICAg
ICAgICAgICAgIHN5c3RlbUNvZGUgPSBDRkVycm9yR2V0Q29kZSh1bmRlcmx5aW5nRXJyb3IpOwog
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBDRlJlbGVhc2UoY2ZFcnJvcik7CiAgICAgICAg
IH0KLQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNiw4ICs5OSw4IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKLSAgICByZXR1cm4g
VWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGtleVJlcXVlc3QuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoa2V5UmVxdWVzdC5nZXQoKSkpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RG
TW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICNlbmRpZgogfQogCkBAIC0xMTcsNyArMTEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewotICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
YXV0byBrZXlEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3Mo
KSksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVsbHB0ciwg
a2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CkBAIC0xMjUsNyArMTE4LDYgQEAgYm9vbCBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYgbmV4dE0KICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBz
eXN0ZW1Db2RlID0gMDsKICAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCmluZGV4IDY1MjRkMWRmMGIzMTBiNmZmZTk0NjVjNTQzODZhZGRiZjhhNGQ5ZmUuLjEy
YTZhNzkzMWVlZWFmNDAxNWZmYjU2NjBlM2Y3MDE3MDU1Y2FlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTIzLDExICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKQEAgLTM3LDI2ICszNywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCi1jbGFzcyBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CitjbGFzcyBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBwYXJlbnQsIENETVNlc3Npb25DbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YoKSB7IH0KLQotICAgIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGll
bnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQotICAgIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0K
LSAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIGJvb2wgdXBkYXRlKFVpbnQ4
QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogbV9wYXJlbnQ7Ci0gICAgQ0RN
U2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIENE
TVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYg
cGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRDbGll
bnQoQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBmaW5hbCB7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQg
cmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWlu
dDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YmIG1fcGFyZW50OworICAgIGNvbnN0IFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0Owog
fTsKIAogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25DRl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBkMWEwNjNlMGZiNTg3Y2ZjMGQ1YTAxYjQxNTY3YTBiN2I2
ZGMwMmU1Li40OWQzNTA5MjIxNWM2ODE4NjJiMzExYjk2OGEwZjBlOTU3ODIzNjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAKQEAgLTExMjIsNiArMTEyMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAogfQog
CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKwogUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0YWtlUmVxdWVzdEZv
cktleVVSSShjb25zdCBTdHJpbmcmIGtleVVSSSkKIHsKICAgICBpZiAoIW1fYXZmV3JhcHBlcikK
QEAgLTExMzUsMTMgKzExMzYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnMKICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
Pih0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CisKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCAsIENETVNlc3Npb25DbGllbnQqKQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENETVNlc3Npb25DbGllbnQqKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQorCiAjZW5kaWYKIAogbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
YXNzZXRFcnJvckNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZGYwM2NjYjYxMjkwMTllMGM4ODQyNmQ3
ODBhYWVkZTUyNmUyMGIyOS4uYmJjMDVkNTA3ZjQyNTY2NzlmYjdkN2JjZjcyMGQ4NTI2YzFhYzM3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKLSNk
ZWZpbmUgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIApAQCAtNjYsNSArNjYsMyBAQCBw
cm90ZWN0ZWQ6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYmE0OTYzNTk3ZGFkZjBlMmZjYzUyOGZjODFjYzMy
MTVlOGNkMmJlZS4uZmE0NDQ0YjFlY2ZhYTJjMGU2MjkwNzgwODVmZmE2ZmMyYjI5NmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCkBAIC05MjQsOCArOTI0LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkK
IAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIC8vIElmIHRoZXJlIGlz
IGEgdHJpZ2dlciB0aGF0IGRlcGVuZHMgb24gdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgY2Fubm90
IGFjY2VsZXJhdGUgdGhlIGFuaW1hdGlvbi4KLSAgICBpZiAoYW5pbS0+dHJpZ2dlcigpLT5pc1Nj
cm9sbEFuaW1hdGlvblRyaWdnZXIoKSkgewotICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
JiBzY3JvbGxUcmlnZ2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKmFuaW0t
PnRyaWdnZXIoKS5nZXQoKSk7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KGFu
aW0tPnRyaWdnZXIoKSkpIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkpOwogICAgICAgICBpZiAo
c2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTI4MDUsNyArMjgwNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVB
bmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAg
aW50IGFuaW1hdGlvbkluZGV4ID0gMDsKICAgICAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb247Ci0gICAgCisKICAgICBpZiAoaXNLZXlmcmFtZSkgewogICAgICAg
ICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJvcGVy
dHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOwogICAgICAgICB2
YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FB
bmltYXRpb24uZ2V0KCkpOwpAQCAtMjgxNiw3ICsyODE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHUKICAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2
ZSk7CiAgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2
YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDI0LDEzICszMDI0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9u
KiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShm
aWxsTW9kZSk7CiB9CiAKLWNvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1W
YWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQorY29uc3QgVGltaW5nRnVuY3Rpb24mIEdyYXBo
aWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYgYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24mIGFuaW0pCiB7CiAgICAgaWYgKGFu
aW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAqYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7
CiAgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICByZXR1cm4gYW5p
bS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotICAgIAorICAgICAgICByZXR1cm4gKmFuaW0udGlt
aW5nRnVuY3Rpb24oKTsKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVm
YXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CiAKQEAgLTMwNTQsOSArMzA1Myw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlm
cmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAg
ICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0
aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9u
LgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKLSAgICBp
ZiAodGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24o
dGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5j
dGlvbigmdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICph
bmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDg2LDEz
ICszMDgzLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlU
aW1lcyk7CiAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModmFsdWVzKTsKICAgICBrZXlmcmFt
ZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbnMsICFmb3J3YXJkcyk7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSw4ICszMTAyLDggQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAg
ICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGF1dG8mIHN0
YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZh
bHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBhdXRvJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsK
IAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKQEAgLTMxNDksMTAgKzMxNDYsOSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZv
ciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUg
c3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2lu
ZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcg
ZnVuY3Rpb24uCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24p
OwotICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3
YXJkcyk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbigmdGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMp
OwogCi0gICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9y
bU9wVHlwZSk7CisgICAgYXV0byB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVG
b3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKICAgICBpZiAodmFsdWVGdW5j
dGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24pCiAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKIApAQCAtMzIwNCw3ICsz
MjAwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9u
cy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZh
bHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAgICAg
IHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
Zm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9u
KSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMp
OwpAQCAtMzI2MCw3ICszMjU2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKIAogICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzI4OCw3
ICszMjg0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKKyAgICAgICAg
ICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQoJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCBkMjQ5N2MzMWRhYWIzYjRmYWQ5NTk1NGQ3NTNlMDZhMzJhNWY1
ZDY2Li4yMjNiMTVmZjBmZWM2MTMwNTJmOGY0MzQyOTZlNWRkZjBiMTBjMGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FB
bmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZh
bHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCBlMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUx
MTAzOWRmOWJlNDAwNzEwLi5kYzJiZTFiODc1YjRiZTdhZGVmZDY3MmFiYTgxYjZkZDA3ZTk2M2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDkgKzM1LDMzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBJbnRTaXplIG91dHNldFNpemVGb3JCbHVyKGZsb2F0
IHN0ZERldmlhdGlvbikKIHsKLSAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1
cjo6Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBz
dGREZXZpYXRpb24pKTsKKyAgICBhdXRvIGtlcm5lbFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0UG9pbnQoc3RkRGV2aWF0aW9uLCBzdGREZXZp
YXRpb24pKTsKIAotICAgIEludFNpemUgb3V0c2V0OwogICAgIC8vIFdlIHRha2UgdGhlIGhhbGYg
a2VybmVsIHNpemUgYW5kIG11bHRpcGx5IGl0IHdpdGggdGhyZWUsIGJlY2F1c2Ugd2UgcnVuIGJv
eCBibHVyIHRocmVlIHRpbWVzLgotICAgIG91dHNldC5zZXRXaWR0aCgzICoga2VybmVsU2l6ZS53
aWR0aCgpICogMC41Zik7Ci0gICAgb3V0c2V0LnNldEhlaWdodCgzICoga2VybmVsU2l6ZS5oZWln
aHQoKSAqIDAuNWYpOwotCi0gICAgcmV0dXJuIG91dHNldDsKLX0KLQotRmlsdGVyT3BlcmF0aW9u
czo6RmlsdGVyT3BlcmF0aW9ucygpCi17Ci19Ci0KLUZpbHRlck9wZXJhdGlvbnMmIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikKLXsKLSAg
ICBtX29wZXJhdGlvbnMgPSBvdGhlci5tX29wZXJhdGlvbnM7Ci0gICAgcmV0dXJuICp0aGlzOwor
ICAgIHJldHVybiB7CisgICAgICAgIDMgKiBrZXJuZWxTaXplLndpZHRoKCkgLyAyLAorICAgICAg
ICAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIKKyAgICB9OwogfQogCi1ib29sIEZpbHRlck9w
ZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK2Jv
b2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
dGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0
aW9ucy5zaXplKCkpCisgICAgc2l6ZV90IHNpemUgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOworICAg
IGlmIChzaXplICE9IG90aGVyLm1fb3BlcmF0aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHVuc2lnbmVkIHMgPSBtX29wZXJhdGlvbnMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzOyBpKyspIHsKLSAgICAgICAgaWYgKCptX29wZXJhdGlvbnNb
aV0gIT0gKm8ubV9vcGVyYXRpb25zW2ldKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmICgqbV9vcGVyYXRpb25zW2ldICE9ICpvdGhlci5tX29wZXJh
dGlvbnNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAogewotICAgIHNpemVfdCBudW1PcGVyYXRp
b25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICAvLyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1
bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlzdHMgZG9uJ3QgbWF0Y2gKLSAgICBpZiAo
bnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25zKCkuc2l6ZSgpKQorICAgIHNpemVfdCBz
aXplID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICBpZiAoc2l6ZSAhPSBvdGhlci5vcGVyYXRp
b25zKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgdHlw
ZXMgb2YgZWFjaCBmdW5jdGlvbiBhcmUgbm90IHRoZSBzYW1lLCB0aGUgbGlzdHMgZG9uJ3QgbWF0
Y2gKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJhdGlvbnM7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghb3BlcmF0
aW9ucygpW2ldLT5pc1NhbWVUeXBlKCpvdGhlci5vcGVyYXRpb25zKClbaV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg2LDggKzcwLDggQEAgYm9vbCBGaWx0ZXJPcGVy
YXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNv
bnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzUmVmZXJlbmNlRmlsdGVyKCkgY29uc3QK
IHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAobV9vcGVyYXRpb25zLmF0KGkpLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMp
IHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVG
RVJFTkNFKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk1LDkgKzc5LDkgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNSZWZlcmVuY2VG
aWx0ZXIoKSBjb25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBjb25z
dAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBl
ID0gbV9vcGVyYXRpb25zLmF0KGkpLmdldCgpLT50eXBlKCk7Ci0gICAgICAgIGlmIChvcGVyYXRp
b25UeXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCBvcGVyYXRpb25UeXBlID09IEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29w
ZXJhdGlvbnMpIHsKKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAg
ICAgIGlmICh0eXBlID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUiB8fCB0eXBlID09IEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDExICs5MCwxMCBAQCBib29sIEZpbHRlck9wZXJhdGlv
bnM6Omhhc091dHNldHMoKSBjb25zdAogRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpv
dXRzZXRzKCkgY29uc3QKIHsKICAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICptX29wZXJhdGlvbnMu
YXQoaSk7Ci0gICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgeworICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7CisgICAgICAgIHN3aXRjaCAob3Bl
cmF0aW9uLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
LSAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24mIGJsdXJPcGVyYXRpb24gPSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAg
ICAgYXV0byYgYmx1ck9wZXJhdGlvbiA9IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KCpv
cGVyYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyT3BlcmF0aW9uLnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7CiAgICAg
ICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0
U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOwpA
QCAtMTE4LDE0ICsxMDEsMTQgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRz
ZXRzKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgY29uc3QgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBhdXRv
JiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRT
aXplRm9yQmx1cihkcm9wU2hhZG93T3BlcmF0aW9uLnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAg
ICAgIEZpbHRlck91dHNldHMgb3V0c2V0cygKKyAgICAgICAgICAgIEZpbHRlck91dHNldHMgb3V0
c2V0cyB7CiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSAt
IGRyb3BTaGFkb3dPcGVyYXRpb24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBv
dXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSksCiAgICAgICAgICAg
ICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFkb3dPcGVyYXRp
b24ueSgpKSwKICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLndpZHRoKCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLngoKSkKLSAgICAgICAgICAgICk7CisgICAgICAgICAgICB9
OwogICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTM4LDI0ICsxMjEsMjYgQEAgRmlsdGVyT3V0c2V0cyBGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9vcGVyYXRpb25z
W2ldLT5hZmZlY3RzT3BhY2l0eSgpKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVy
YXRpb25zKSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPmFmZmVjdHNPcGFjaXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGlmIChtX29wZXJhdGlvbnNbaV0tPm1vdmVzUGl4ZWxzKCkpCisgICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+bW92ZXNQ
aXhlbHMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVy
cy5hdChpKTsKKyAgICAgICAgYXV0byBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwogICAgICAgICBp
ZiAoZmlsdGVyKQogICAgICAgICAgICAgdHMgPDwgKmZpbHRlcjsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaAppbmRleCBjZjJjNWI5YjYyNWNiNjY5YzhjNzE0ZTdkM2ZiYTdjMDgz
YTFkZDExLi40ODZmNjg2ZmFhNjk0M2E0NmIyYjhiMWFiNmMwYzdkYzE4ZGQ2Nzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEZpbHRlck9wZXJhdGlvbnNfaAotI2RlZmluZSBGaWx0ZXJPcGVyYXRpb25zX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSW50
UmVjdEV4dGVudC5oIgpAQCAtMzMsMzMgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdHlwZWRlZiBJbnRSZWN0RXh0ZW50IEZpbHRlck91dHNldHM7Cit1c2luZyBGaWx0ZXJPdXRz
ZXRzID0gSW50UmVjdEV4dGVudDsKIAogY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVy
T3BlcmF0aW9ucygpOwotICAgIEZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0b3I9KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX29wZXJhdGlvbnMuY2xlYXIo
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0K
LSAgICAKICAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkg
eyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+PiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fb3BlcmF0aW9ucy5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuaXNFbXB0
eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6
ZSgpOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChp
bmRleCkuZ2V0KCkgOiAwOyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3Bl
cmF0aW9uc1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICBib29sIG9wZXJhdGlvbnNN
YXRjaChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29uc3Q7CiAKQEAgLTcwLDYgKzU4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKICAg
ICBib29sIGhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3Rv
cjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9vcGVyYXRpb25zOwogfTsKQEAgLTc3LDUgKzY2
LDMgQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5jcHAKaW5kZXggMGJlZGQwYTU3NGMyNDk5ZTVlM2FjZTkyN2I1NDExZjk0MjAx
YTg1MC4uOWNjMWRmNmFkM2JlNTcyOWQzYjJhODE3OTNlNWE1NzA0YWUxZWRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMTI4LDE5ICsxMjgsMTYgQEAgc3RhdGlj
IGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVw
QXRTdGFydCwgZG91YmxlIHQKICAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0
ZXBzOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1
cmF0aW9uKQorc3RhdGljIGlubGluZSBmbG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBkdXJh
dGlvbikKIHsKLSAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gcHJvZ3Jl
c3M7Ci0KLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlv
bik7Ci0gICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLCBj
dGYtPnkxKCksIGN0Zi0+eDIoKSwgY3RmLT55MigpLCBwcm9ncmVzcywgZHVyYXRpb24pOworICAg
IGlmICh0aW1pbmdGdW5jdGlvbi5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAg
ICAgICBhdXRvJiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi54MSgpLCBjdGYueTEoKSwgY3RmLngyKCksIGN0Zi55MigpLCBwcm9ncmVzcywg
ZHVyYXRpb24pOwogICAgIH0KIAotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsK
LSAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwg
c3RmLT5zdGVwQXRTdGFydCgpLCBkb3VibGUocHJvZ3Jlc3MpKTsKKyAgICBpZiAodGltaW5nRnVu
Y3Rpb24uaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byYgc3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5jdGlvbihzdGYubnVtYmVyT2ZTdGVwcygpLCBzdGYu
c3RlcEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHBy
b2dyZXNzOwpAQCAtMTk0LDEzICsxOTEsMTIgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGYKICAg
ICByZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmlt
YXRpb25WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVy
biBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotCisgICAgaWYgKGFuaW1hdGlvblZhbHVl
LnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiAqYW5pbWF0aW9uVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiAqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0yNTcs
NyArMjUzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgp
ID09IDIpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0g
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShtX2tleWZyYW1lcy5hdCgwKSwgbV9hbmlt
YXRpb24uZ2V0KCkpOworICAgICAgICBhdXRvJiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksICptX2FuaW1hdGlvbik7CiAg
ICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rp
b24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBh
cHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQoMCksIG1fa2V5ZnJhbWVzLmF0KDEp
LCBub3JtYWxpemVkVmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjY2LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjphcHBseShDbGllbnQmIGNsaWVudCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVk
VmFsdWUgLSBmcm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkp
OwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAg
ICAgYXV0byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sICptX2FuaW1hdGlvbik7CiAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5v
cm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQppbmRl
eCA1ODRmZGFiZDkyNDdmYTU4ZDliMGYwZjA0NjhkNDI2MGE2NmQyMDVhLi5lZmJlODBmYWUwM2M0
Y2EyODg0ZGMyZmI5MmExNzdmZmFhYzAyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAt
NjAsNyArNjAsNyBAQCBAaW50ZXJmYWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09i
amVjdDxBVlNwZWVjaFN5bnRoZXNpemVyRGVsZWdhdGU+CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgKilpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKilzeW50aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0
dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAtODcs
NyArODcsNyBAQCAtIChmbG9hdCltYXBTcGVlY2hSYXRlVG9QbGF0Zm9ybVJhdGU6KGZsb2F0KXJh
dGUKICAgICByZXR1cm4gcmF0ZTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pdXR0ZXJhbmNl
CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBj
YWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0
c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAg
LSAodm9pZClzcGVha1V0dGVyYW5jZTooUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pdXQKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9sdW1lOnV0dGVy
YW5jZS0+dm9sdW1lKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0
ZXJhbmNlLT5waXRjaCgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07Ci0g
ICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0
dGVyYW5jZSk7CiAKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5j
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4OWQyYWVlMDNl
MjI0NWMuLjJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTE1NSwxMCArMTU1LDEwIEBAIHN0
YXRpYyBMZW5ndGhTaXplIHNpemVGcm9tTlNDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIG5zQ29u
dHJvbFNpemUsIGNvbnN0IExlbmd0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikKICAgICAg
ICAgY29udHJvbFNpemUgPSBJbnRTaXplKGNvbnRyb2xTaXplLndpZHRoKCkgKiB6b29tRmFjdG9y
LCBjb250cm9sU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwogICAgIExlbmd0aFNpemUgcmVz
dWx0ID0gem9vbWVkU2l6ZTsKLSAgICBpZiAoem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRX
aWR0aChMZW5ndGgoY29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBpZiAoem9vbWVk
U2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgp
ID4gMCkKLSAgICAgICAgcmVzdWx0LnNldEhlaWdodChMZW5ndGgoY29udHJvbFNpemUuaGVpZ2h0
KCksIEZpeGVkKSk7CisgICAgaWYgKHpvb21lZFNpemUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8o
KSAmJiBjb250cm9sU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmVzdWx0LndpZHRoID0geyBj
b250cm9sU2l6ZS53aWR0aCgpLCBGaXhlZCB9OworICAgIGlmICh6b29tZWRTaXplLmhlaWdodC5p
c0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLmhlaWdodCgpID4gMCkKKyAgICAgICAg
cmVzdWx0LmhlaWdodCA9IHsgY29udHJvbFNpemUuaGVpZ2h0KCksIEZpeGVkIH07CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIGNo
ZWNrYm94TWFyZ2lucyhOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNp
emUgY2hlY2tib3hTaXplKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBh
bmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8u
Ci0gICAgaWYgKCF6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9v
bWVkU2l6ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6
ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJp
bnNpY09yQXV0bygpKQogICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0
aGUgZm9udCBzaXplIHRvIGRldGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250
cm9sLgpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQqIHJhZGlvTWFyZ2lucyhO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogc3RhdGljIExlbmd0aFNpemUgcmFkaW9TaXplKGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9h
dCB6b29tRmFjdG9yKQogewogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3Ro
IHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCF6b29tZWRT
aXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQoKS5p
c0ludHJpbnNpY09yQXV0bygpKQorICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNp
Y09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAg
ICAgICByZXR1cm4gem9vbWVkU2l6ZTsKIAogICAgIC8vIFVzZSB0aGUgZm9udCBzaXplIHRvIGRl
dGVybWluZSB0aGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBjb250cm9sLgpAQCAtNzEzLDkgKzcx
Myw5IEBAIExlbmd0aFNpemUgVGhlbWVNYWM6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zCiAgICAgICAgICAgICByZXR1cm4gcmFkaW9T
aXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgogICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBz
cGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KLSAgICAgICAgICAgIHJldHVybiBzaXpl
RnJvbUZvbnQoZm9udCwgTGVuZ3RoU2l6ZSh6b29tZWRTaXplLndpZHRoKCksIExlbmd0aCgpKSwg
em9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21G
b250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNp
emVzKCkpOwogICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICBp
ZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXpl
LmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgICAgICBpZiAoIXpvb21lZFNp
emUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRy
aW5zaWNPckF1dG8oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKICAgICAg
ICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRyb2xTaXplRm9y
Rm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzI2LDE3ICs3MjYsMTcgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6
Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnMKIExlbmd0aFNpemUgVGhlbWVNYWM6Om1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAg
ICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICBjYXNlIElu
bmVyU3BpbkJ1dHRvblBhcnQ6ewotICAgICAgICAgICAgSW50U2l6ZSBiYXNlID0gc3RlcHBlclNp
emVzKClbTlNDb250cm9sU2l6ZU1pbmldOwotICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUo
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4oYmFzZS53aWR0aCgpICogem9vbUZhY3RvciksIEZpeGVk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+
KGJhc2UuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUo
cGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgorICAg
IGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3Ip
LCBGaXhlZCB9IH07CisgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OiB7CisgICAgICAgIGF1
dG8mIGJhc2UgPSBzdGVwcGVyU2l6ZXMoKVtOU0NvbnRyb2xTaXplTWluaV07CisgICAgICAgIHJl
dHVybiB7IHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLndpZHRoKCkgKiB6b29tRmFjdG9yKSwgRml4
ZWQgfSwKKyAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9v
bUZhY3RvciksIEZpeGVkIH0gfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA0MzE1
Y2NjNTdhNWQxNWZjZGI1NjU5YzcxZjFiZmQ5ZmRlMjgyMTNjLi5lZDMwYWIwMzI3MDFjZGUzZDJh
NmRjNjkxNzgyZjczMmUxNWViYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wgZm9j
dXNlZCkKICAgICBpZiAoIWZvY3VzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBm
cmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKKyAgICBGcmFtZSogZnJhbWUgPSBG
cmFtZTo6ZnJhbWVGb3JXaWRnZXQoKnRoaXMpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmFk
NDM5N2EwNGMwNTU2MWM3YzFkNjA2N2FkZWM1MTU5ZjIzNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50TW9jay5oIgotCi0jaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURldmljZU1vdGlvbkNsaWVudE1vY2s6OkRldmljZU1vdGlvbkNs
aWVudE1vY2soKQotICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKCp0aGlzLCAm
RGV2aWNlTW90aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCkKLSAgICAsIG1faXNVcGRhdGluZyhm
YWxzZSkKLXsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nv
bnRyb2xsZXIpOwotICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgQVNTRVJUKG1f
Y29udHJvbGxlcik7Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRh
dGluZygpCi17Ci0gICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IGZhbHNl
OwotICAgIG1fdGltZXIuc3RvcCgpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6
OnNldE1vdGlvbihQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IG1vdGlvbikKLXsKLSAgICBt
X21vdGlvbiA9IG1vdGlvbjsKLSAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIERldmlj
ZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoKQotewotICAgIG1fdGltZXIuc3RvcCgpOwot
ICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1fbW90aW9uLmdldCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2M2MjY4MjhlYTRmMzk0MWRlNWJjZTAxNTM1ODhkMWIwNGNhZTk5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBA
IC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERldmljZU1vdGlvbkNsaWVudE1vY2tf
aAotI2RlZmluZSBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJU
aW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGV2aWNlTW90aW9uQ29udHJv
bGxlcjsKLQotLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIERldmljZU1vdGlvbkNsaWVudCB1
c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KLS8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMg
c2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCi0vLyBj
bGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgotY2xhc3MgRGV2aWNlTW90aW9uQ2xp
ZW50TW9jayA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewotcHVibGljOgotICAgIERldmlj
ZU1vdGlvbkNsaWVudE1vY2soKTsKLQotICAgIC8vIERldmljZU1vdGlvbkNsaWVudAotICAgIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKLSAgICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9tb3Rpb24uZ2V0KCk7IH0KLSAgICAvLyBtb2NrIGlzIG93bmVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yaywgd2hpY2ggc2hvdWxkIGhhbmRsZSBkZWxldGlvbgotICAgIHZv
aWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotCi0gICAg
dm9pZCBzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPik7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCB0aW1lckZpcmVkKCk7Ci0KLSAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4g
bV9tb3Rpb247Ci0gICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFRpbWVyIG1fdGltZXI7Ci0gICAgYm9vbCBtX2lzVXBkYXRpbmc7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAKaW5kZXggMzg4MTFmYzEwODE4OGNm
ZTI2ZTE4MGYwMGY5ZjUwZmQ2MTVkYjdkMy4uN2E5OTMxMzZiYTJjM2EwNWQyZDMxOTZhNTU2Nzcx
OGEwMGRhZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNv
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAK
QEAgLTQwLDEwICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIFJlZlB0
cjxTaGFyZWRDdXJzb3I+IGltcGw7Ci0KICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0g
ZGV0ZXJtaW5lSG90U3BvdChpbWcsIGhvdFNwb3QpOwogICAgIHN0YXRpYyBib29sIGRvQWxwaGEg
PSB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NYUDsKICAgICBCaXRtYXBJbmZvIGN1cnNvcklt
YWdlID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoaW1nLT53aWR0aCgpLCBpbWctPmhlaWdo
dCgpKSk7CkBAIC01Miw4ICs1MCw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
Y3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgYXV0
byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwog
ICAgIGlmIChkb0FscGhhKSB7CiAgICAgICAgIGF1dG8gaEN1cnNvciA9IGFkb3B0R0RJT2JqZWN0
KDo6Q3JlYXRlRElCU2VjdGlvbihkYywgJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgbnVs
bHB0ciwgMCwgMCkpOwotICAgICAgICBpZiAoIWhDdXJzb3IpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBpbWctPmdldEhCSVRNQVAoaEN1cnNvci5nZXQoKSk7IAogICAg
ICAgICBIQklUTUFQIGhPbGRCaXRtYXAgPSAoSEJJVE1BUClTZWxlY3RPYmplY3Qod29ya2luZ0RD
LmdldCgpLCBoQ3Vyc29yLmdldCgpKTsKQEAgLTcxLDE1ICs2NywxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpaS5oYm1NYXNrID0gaE1hc2suZ2V0KCk7CiAgICAgICAgIGlp
LmhibUNvbG9yID0gaEN1cnNvci5nZXQoKTsKIAotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29y
OjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3QoJmlpKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRDdXJzb3I6OmNyZWF0ZSg6OkNyZWF0ZUljb25JbmRpcmVjdCgmaWkpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgYmxlbmRlZCBjdXJz
b3JzLCBzbyB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGNyZWF0ZSB0aGUgbWFzayBtYW51YWxseQog
ICAgICAgICBhdXRvIGFuZE1hc2tEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKGRjKSk7CiAgICAgICAgIGF1dG8geG9yTWFza0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMoZGMpKTsKICAgICAgICAgYXV0byBoQ3Vyc29yID0gYWRvcHRHRElPYmpl
Y3QoOjpDcmVhdGVESUJTZWN0aW9uKGRjLCAmY3Vyc29ySW1hZ2UsIERJQl9SR0JfQ09MT1JTLCBu
dWxscHRyLCAwLCAwKSk7Ci0gICAgICAgIGlmICghaEN1cnNvcikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGltZy0+Z2V0SEJJVE1BUChoQ3Vyc29yLmdldCgpKTsgCiAg
ICAgICAgIEJJVE1BUCBjdXJzb3I7CkBAIC0xMDgsMTggKzEwMiwxNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJ
bnRQb2ludCYgaAogICAgICAgICBpY29uLnlIb3RzcG90ID0gZWZmZWN0aXZlSG90U3BvdC55KCk7
CiAgICAgICAgIGljb24uaGJtTWFzayA9IGFuZE1hc2suZ2V0KCk7CiAgICAgICAgIGljb24uaGJt
Q29sb3IgPSB4b3JNYXNrLmdldCgpOwotICAgICAgICBpbXBsID0gU2hhcmVkQ3Vyc29yOjpjcmVh
dGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZShDcmVhdGVJY29uSW5kaXJlY3QoJmljb24pKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4g
bG9hZFNoYXJlZEN1cnNvcihISU5TVEFOQ0UgaEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFt
ZSkKK3N0YXRpYyBSZWY8U2hhcmVkQ3Vyc29yPiBsb2FkU2hhcmVkQ3Vyc29yKEhJTlNUQU5DRSBo
SW5zdGFuY2UsIExQQ1dTVFIgbHBDdXJzb3JOYW1lKQogewogICAgIHJldHVybiBTaGFyZWRDdXJz
b3I6OmNyZWF0ZSg6OkxvYWRDdXJzb3JXKGhJbnN0YW5jZSwgbHBDdXJzb3JOYW1lKSk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5TmFtZShjaGFyKiBu
YW1lLCBpbnQgeCwgaW50IHkpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZEN1cnNvckJ5
TmFtZShjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgSW50UG9pbnQgaG90U3BvdCh4
LCB5KTsKICAgICBSZWZQdHI8SW1hZ2U+IGN1cnNvckltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCAwMDA4N2QyM2Y2MjY4NjVmOTc2YTc2Mjg2MWY2NzQzOWEw
Y2NiYmQzLi5mNTlmMTVmNmI0ZTA3MWYwMzk5OTcwMzMzZTFkYmQ5MWY4YzFjNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAg
LTM2NCw3ICszNjQsNyBAQCBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRl
U291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dAogCiBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RmlsdGVyRWZmZWN0Jj4obV9lZmZlY3RzLmxhc3QoKS5nZXQoKSkuYXNJbWFnZUJ1ZmZl
cigpOworICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpLT5hc0ltYWdlQnVmZmVyKCk7CiB9CiAK
IHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgZWZmZWN0UmVjdCkKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCiAK
IEludFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6Om91dHB1dFJlY3QoKSBjb25zdAogewotICAg
IGF1dG8mIGxhc3RFZmZlY3QgPSBjb25zdF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5s
YXN0KCkuZ2V0KCkpOworICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2VmZmVjdHMubGFzdCgpLmdl
dCgpOwogICAgIGlmICghbGFzdEVmZmVjdC5oYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA2M2I3M2M1YzUzMjQyMzM5
YzZkMzYwMWQ2YTJjNjVhZWQzYWY1YTAzLi5jMmIyMjE2YTZhOThmNzU2NGFlODk5OGUwMjI4ZDdm
NjAzYzU4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1
YWxpdHkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1JbnRlcnBvbGF0aW9uUXVhbGl0
eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdl
JiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitJbnRl
cnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNp
emUmIHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwg
dGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaCBx
dWFsaXR5LgogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRv
Y3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYjFmYjMwYTA5Y2MzYTJmNTRh
ZDhhYjQ3NThmYmI1YjEwNzkyZTVkYy4uNWEwMGY5ZWNlMGFhODk1MWEyZTZkODBlYWZmNDFlNmJi
ZWM0M2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApA
QCAtMTIzMSwxMiArMTIzMSwxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgfQogfQog
Ci12b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBpZiAoIWZpbGxMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXll
ci0+bmV4dCgpLCByZWN0LCBvcCk7Ci0gICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIG9wKTsKKyAgICBWZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5
ZXJzOworICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVyOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+bmV4dCgpKQorICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBsYXllcnMu
cmV2ZXJzZSgpOworICAgIGZvciAoYXV0byogbGF5ZXIgOiBsYXllcnMpCisgICAgICAgIHBhaW50
RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllciwgcmVjdCwgb3ApOwogfQogCiBib29s
IElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBG
aWxsTGF5ZXImIGxhc3RCYWNrZ3JvdW5kTGF5ZXIpIGNvbnN0CkBAIC0xMjQ4LDE3ICsxMjUwLDE3
IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tnCiAgICAgcmV0dXJuICghaGFzRmlsbEltYWdlICYm
ICFyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3go
KSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgpOwogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
aWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7Ci0gICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgpOwot
ICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKCZyZW5kZXJlcigp
LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBhdXRvKiBpbWFnZSA9
IGZpbGxMYXllci5pbWFnZSgpOworICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1hZ2UgJiYgaW1h
Z2UtPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgaWYgKCghaGFzRmlsbEltYWdlICYmICFyZW5kZXJlcigpLnN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwg
IXBhcmVudCgpKQotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFp
bnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJl
Y3Quc2l6ZSgpLCBvcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChwYWludEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUs
IHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9C
UkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gRENMT05FKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOwot
ICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBv
cCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Qu
c2l6ZSgpLCBvcCk7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC0xMjkwLDcgKzEyOTIs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgYwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgp
LCBoZWlnaHQoKSkpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlw
V2lkdGgsIHN0cmlwSGVpZ2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXpl
KCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUo
KSwgb3ApOwogICAgIH0KIH0KIApAQCAtMTQ0Niw3ICsxNDQ4LDcgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyA9IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnM7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSB7Ci0gICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJlbmRlcmVy
KCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCktPmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUo
KS5tYXNrTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgaWYgKChtYXNrQm94SW1hZ2UgJiYgcmVu
ZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKS5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0
eWxlKCkubWFza0xheWVycygpLm5leHQoKSkKICAgICAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURl
c3RpbmF0aW9uSW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRl
eCA4MzkwNWJkYzRlN2E3ZWIwN2Y5MzdlNDJhMDBjZDYyNDU5YzA0NWI5Li41NzJiMDI1NjFiMWQ5
MWY2YWViMGM0OGQxYmVlMjYzMmIzNTZlZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyJiwgY29u
c3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBiNGE3YmEwMjM3OTcxZjE3YWEyYzA3OTVjMzBlYzIyOTc3MDk5YTNj
Li44YTk2Yzg0OTdmYjM0NmQ0OTIzZmUwMmVkMWViNzA0ODMxYjdiZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTI3MCwxMCArMTI3MCw5IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogICAgIGlmICghcm9vdEJhY2tncm91bmRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci0+c3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgQ29sb3IgYmdDb2xvciA9IHJvb3RCYWNrZ3Jv
dW5kUmVuZGVyZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLQotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3Is
IGJnTGF5ZXIsIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKKyAgICBhdXRvJiBz
dHlsZSA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXItPnN0eWxlKCk7CisgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgY29sb3IsIHN0eWxlLmJhY2tncm91bmRM
YXllcnMoKSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCiBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtMTQxNCwxMiArMTQxMywx
MyBAQCBib29sIFJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoIXN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpIHx8IHN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpLT5uZXh0KCkpIHsKKyAgICBhdXRvJiBsYXllcnMgPSBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoIWxheWVycy5pbWFnZSgpIHx8IGxheWVy
cy5uZXh0KCkpIHsKICAgICAgICAgcGFpbnRlZEV4dGVudCA9ICBiYWNrZ3JvdW5kUmVjdDsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
Z2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50T2Zmc2V0LCBiYWNrZ3JvdW5kUmVjdCk7Cisg
ICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxw
dHIsIGxheWVycywgcGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KTsKICAgICBwYWludGVkRXh0
ZW50ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKICAgICByZXR1cm4gIWdlb21ldHJ5Lmhhc05vbkxv
Y2FsR2VvbWV0cnkoKTsKIH0KQEAgLTE0NDksNyArMTQ0OSw3IEBAIGJvb2wgUmVuZGVyQm94Ojpi
YWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxS
ZWN0KSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBGSVhNRTogVGhlIGJh
Y2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgotICAgIGlm
IChzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgpKQorICAgIGlmIChzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKS5uZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMYXlv
dXRSZWN0IGJhY2tncm91bmRSZWN0OwogICAgIHN3aXRjaCAoc3R5bGUoKS5iYWNrZ3JvdW5kQ2xp
cCgpKSB7CkBAIC0xNTM5LDE5ICsxNTM5LDE5IEBAIGJvb2wgUmVuZGVyQm94Ojpjb21wdXRlQmFj
a2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAK
IGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7Ci0gICAgaWYgKCFmaWxsTGF5ZXIgfHwgZmlsbExheWVyLT5jbGlwKCkgIT0gQm9yZGVyRmls
bEJveCkKKyAgICBhdXRvJiBmaWxsTGF5ZXIgPSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsK
KyAgICBpZiAoZmlsbExheWVyLmNsaXAoKSAhPSBCb3JkZXJGaWxsQm94KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDbGlwcGVkIHdpdGggbG9jYWwgc2Nyb2xsaW5nCi0gICAgaWYg
KGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXllci0+YXR0YWNobWVudCgpID09IExvY2FsQmFj
a2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGZpbGxMYXll
ci5hdHRhY2htZW50KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGZpbGxMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYm
IGZpbGxMYXllci0+aGFzUmVwZWF0WFkoKSAmJiBmaWxsTGF5ZXItPmltYWdlKCktPmNhblJlbmRl
cih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCisgICAgaWYgKGZpbGxMYXllci5oYXNP
cGFxdWVJbWFnZSgqdGhpcykgJiYgZmlsbExheWVyLmhhc1JlcGVhdFhZKCkgJiYgZmlsbExheWVy
LmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgbGF5ZXIgYW5k
IG5vIGltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZS4K
LSAgICBpZiAoIWZpbGxMYXllci0+bmV4dCgpICYmICFmaWxsTGF5ZXItPmhhc0ltYWdlKCkpIHsK
KyAgICBpZiAoIWZpbGxMYXllci5uZXh0KCkgJiYgIWZpbGxMYXllci5oYXNJbWFnZSgpKSB7CiAg
ICAgICAgIENvbG9yIGJnQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiZ0NvbG9yLmlzT3BhcXVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1OTAsMTUgKzE1OTAsMTIgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcGEKICAgICAKICAgICBpZiAoIWNvbXBvc2l0ZWRNYXNrIHx8IGZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycykgewogICAgICAgICBwdXNoVHJhbnNwYXJlbmN5TGF5ZXIgPSB0
cnVlOwotICAgICAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBzdHlsZSgpLm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCk7Ci0gICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0
eWxlKCkubWFza0xheWVycygpOwogCiAgICAgICAgIC8vIERvbid0IHJlbmRlciBhIG1hc2tlZCBl
bGVtZW50IHVudGlsIGFsbCB0aGUgbWFzayBpbWFnZXMgaGF2ZSBsb2FkZWQsIHRvIHByZXZlbnQg
YSBmbGFzaCBvZiB1bm1hc2tlZCBjb250ZW50LgotICAgICAgICBpZiAobWFza0JveEltYWdlKQor
ICAgICAgICBpZiAoYXV0byogbWFza0JveEltYWdlID0gc3R5bGUoKS5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKQogICAgICAgICAgICAgYWxsTWFza0ltYWdlc0xvYWRlZCAmPSBtYXNrQm94SW1hZ2Ut
PmlzTG9hZGVkKCk7CiAKLSAgICAgICAgaWYgKG1hc2tMYXllcnMpCi0gICAgICAgICAgICBhbGxN
YXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOworICAgICAg
ICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IHN0eWxlKCkubWFza0xheWVycygpLmltYWdlc0FyZUxv
YWRlZCgpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CkBAIC0xNjI3LDcxICsxNjI0LDY5IEBAIExheW91
dFJlY3QgUmVuZGVyQm94OjptYXNrQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIExheW91dFJlY3QgYm9yZGVy
Qm94ID0gYm9yZGVyQm94UmVjdCgpOwotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5
ZXIgPSBzdHlsZSgpLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5
ZXItPm5leHQoKSkgeworICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0eWxlKCkubWFza0xh
eWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgIGlmIChtYXNrTGF5ZXItPmltYWdlKCkpIHsKICAgICAgICAgICAgIC8vIE1hc2tzIHNob3Vs
ZCBuZXZlciBoYXZlIGZpeGVkIGF0dGFjaG1lbnQsIHNvIGl0J3MgT0sgZm9yIHBhaW50Q29udGFp
bmVyIHRvIGJlIG51bGwuCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9t
ZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5
ZXIsIHBhaW50T2Zmc2V0LCBib3JkZXJCb3gpOwotICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGdl
b21ldHJ5LmRlc3RSZWN0KCkpOworICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICptYXNrTGF5ZXIsIHBhaW50T2Zmc2V0LCBi
b3JkZXJCb3gpLmRlc3RSZWN0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAgICBWZWN0b3I8Y29uc3QgRmlsbExh
eWVyKiwgOD4gbGF5ZXJzOwotICAgIGNvbnN0IEZpbGxMYXllciogY3VyTGF5ZXIgPSBmaWxsTGF5
ZXI7CiAgICAgYm9vbCBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSBmYWxz
ZTsKLSAgICB3aGlsZSAoY3VyTGF5ZXIpIHsKLSAgICAgICAgbGF5ZXJzLmFwcGVuZChjdXJMYXll
cik7CisKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPm5leHQoKSkgeworICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKKworICAgICAg
ICBpZiAobGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgICAg
IHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7CisKICAgICAgICAg
Ly8gU3RvcCB0cmF2ZXJzYWwgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCi0g
ICAgICAgIC8vIEZJWE1FIDogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xsb3dpbmcg
b2NjbHVzaW9uIGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgCisgICAgICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24g
Y3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZQogICAgICAgICAvLyBvbiBsYXllcnMg
d2l0aCBubyByZXBlYXQgYnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxh
eW91dCByZWN0LgogICAgICAgICAvLyBUZXN0aW5nIHRoYXQgaGVyZSB3b3VsZCBpbXBseSBkdXBs
aWNhdGluZyBhIGxvdCBvZiBjYWxjdWxhdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5IGRvbmUgaW4K
ICAgICAgICAgLy8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQu
IEEgbW9yZSBlZmZpY2llbnQgc29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQogICAgICAgICAvLyB0
aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29t
cHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVyZQogICAgICAgICAvLyBhbmQgcGFzcyBpdCBkb3du
LgogCi0gICAgICAgIGlmICghc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGVOb3JtYWwpCi0gICAgICAgICAgICBz
aG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSB0cnVlOwotCiAgICAgICAgIC8v
IFRoZSBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzIGNvbmRpdGlvbiBtdXN0IGJlIGV2YWx1YXRlZCBm
aXJzdCB0byBhdm9pZCBzaG9ydC1jaXJjdWl0aW5nLgotICAgICAgICBpZiAoY3VyTGF5ZXItPmNs
aXBPY2NsdWRlc05leHRMYXllcnMoY3VyTGF5ZXIgPT0gZmlsbExheWVyKSAmJiBjdXJMYXllci0+
aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGN1ckxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGN1ckxheWVyLT5oYXNSZXBlYXRYWSgpICYm
IGN1ckxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIGlmIChs
YXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXll
ci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxh
eWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwogICAgIH0KIAotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgQmFzZUJhY2tn
cm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
OworICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGF1dG8gYmFz
ZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxk
RHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7Ci0gICAgICAgIHBhaW50RmlsbExheWVy
KHBhaW50SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CisgICAgICAgIHBh
aW50RmlsbExheWVyKHBhaW50SW5mbywgY29sb3IsICpsYXllcnMubGFzdCgpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5
KTsKICAgICAgICAgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwog
ICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVy
ID0gbGF5ZXJzLnJlbmQoKTsKLSAgICBmb3IgKFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IGxheWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7
ICsraXQpCi0gICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgKml0LCByZWN0LCBi
bGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwor
ICAgIGF1dG8gdG9wTGF5ZXIgPSBsYXllcnMucmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGxh
eWVycy5yYmVnaW4oKTsgaXQgIT0gdG9wTGF5ZXI7ICsraXQpCisgICAgICAgIHBhaW50RmlsbExh
eWVyKHBhaW50SW5mbywgY29sb3IsICoqaXQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CiAKICAgICBpZiAoc2hvdWxkRHJhd0Jh
Y2tncm91bmRJblNlcGFyYXRlQnVmZmVyKQogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExh
eWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJh
c2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8s
IGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG51bGxwdHIsIExheW91dFNpemUo
KSwgb3AsIGJhY2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogfQogCi1zdGF0aWMg
Ym9vbCBsYXllcnNVc2VJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXll
ciogbGF5ZXJzKQorc3RhdGljIGJvb2wgbGF5ZXJzVXNlSW1hZ2UoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycykKIHsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1ckxheWVyOyBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGN1ckxheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGN1ckxheWVy
LT5pbWFnZSgpLT5kYXRhKCkpCisgICAgZm9yIChhdXRvKiBsYXllciA9ICZsYXllcnM7IGxheWVy
OyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpICYm
IGltYWdlID09IGxheWVyLT5pbWFnZSgpLT5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3MjUsMTMgKzE3MjAsMTMg
QEAgdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEludFJlY3QqKQogICAgICAgICBsYXllcigpLT5jb250ZW50Q2hhbmdlZChCYWNrZ3JvdW5k
SW1hZ2VDaGFuZ2VkKTsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9v
bCBkcmF3aW5nQmFja2dyb3VuZCkKK2Jvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0Zv
ckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpCiB7CiAgICAgTGF5b3V0UmVjdCByZW5kZXJlclJlY3Q7CiAg
ICAgUmVuZGVyQm94KiBsYXllclJlbmRlcmVyID0gbnVsbHB0cjsKIAotICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1ckxheWVyID0gY3VyTGF5
ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0g
Y3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVy
KHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChs
YXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBsYXllci0+aW1hZ2UoKS0+ZGF0YSgpICYmIGxheWVy
LT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CiAg
ICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoaXMgaW1hZ2UgaXMgYmVpbmcgdXNlZCwg
Y29tcHV0ZSB0aGUgcmVuZGVyZXIgYW5kIHRoZSByZWN0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4K
ICAgICAgICAgICAgIGJvb2wgZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kID0gZHJhd2luZ0JhY2tncm91
bmQgJiYgKGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSB8fCAoaXNCb2R5KCkgJiYgIWRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkpOwog
ICAgICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKSB7CkBAIC0xNzUxLDcgKzE3NDYsNyBAQCBi
b29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIg
aW1hZ2UsIGNvbnN0IEZpbGxMYXllcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBwYXNzIGFic29sdXRlIHBv
c2l0aW9uIHRvIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5IChmb3IgcGl4ZWwgc25h
cHBpbmcpCi0gICAgICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGxh
eWVyUmVuZGVyZXItPmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpj
dXJMYXllciwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXJSZWN0KTsKKyAgICAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gbGF5ZXJSZW5kZXJlci0+Y2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKmxheWVyLCBMYXlvdXRQb2ludCgpLCByZW5k
ZXJlclJlY3QpOwogICAgICAgICAgICAgaWYgKGdlb21ldHJ5Lmhhc05vbkxvY2FsR2VvbWV0cnko
KSkgewogICAgICAgICAgICAgICAgIC8vIFJhdGhlciB0aGFuIGluY3VyIHRoZSBjb3N0cyBvZiBj
b21wdXRpbmcgdGhlIHBhaW50Q29udGFpbmVyIGZvciByZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNr
Z3JvdW5kcwogICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCB0aGUgcmlnaHQgZGVz
dFJlY3QsIGp1c3QgcmVwYWludCB0aGUgZW50aXJlIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IGQwZmE3YjJhNTc2Mjc5ZGEwMTVmNjI4NTdhNGJiNGMzODdi
NzgxMmQuLjAxMjRhZGFiYzM4YTVmNjQ4MmFjNjllYjgxOTlhMTc4ZjM1YTVlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYyNyw4ICs2MjcsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7
CiAgICAgCi0gICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBD
b2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNl
KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRy
KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwor
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOwog
CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYpOwogCkBAIC02NjYsOCArNjY2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gUmV0
dXJucyB0cnVlIGlmIHdlIGRpZCBhIGZ1bGwgcmVwYWludAotICAgIGJvb2wgcmVwYWludExheWVy
UmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5
ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ug
ZGlkIGEgZnVsbCByZXBhaW50LgorICAgIGJvb2wgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShX
cmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNr
Z3JvdW5kKTsKIAogICAgIGJvb2wgc2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRD
YWxjdWxhdGlvbihjb25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBl
bmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3Q7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVjNjU5YjcyY2E5ZDA3N2Zi
NjcyYTY3MjI1YTNjNTIzZGUxYTAxNjguLjFmNGQwYzVmYzlkNWE1YWFlYzk3ZGFhZjc5NmE2NTkz
YWFiYmRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZpbGxMYXllciogYmdMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBiZ0xheWVy
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKQEAgLTYzNSwxMiAr
NjM1LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgYm9vbCBpbmNsdWRlUmlnaHRF
ZGdlID0gYm94ID8gYm94LT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpIDogdHJ1ZTsKIAogICAg
IGJvb2wgaGFzUm91bmRlZEJvcmRlciA9IHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkgJiYgKGlu
Y2x1ZGVMZWZ0RWRnZSB8fCBpbmNsdWRlUmlnaHRFZGdlKTsKLSAgICBib29sIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiBiZ0xheWVyLT5hdHRhY2htZW50
KCkgPT0gTG9jYWxCYWNrZ3JvdW5kQXR0YWNobWVudDsKLSAgICBib29sIGlzQm9yZGVyRmlsbCA9
IGJnTGF5ZXItPmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OworICAgIGJvb2wgY2xpcHBlZFdpdGhM
b2NhbFNjcm9sbGluZyA9IGhhc092ZXJmbG93Q2xpcCgpICYmIGJnTGF5ZXIuYXR0YWNobWVudCgp
ID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQ7CisgICAgYm9vbCBpc0JvcmRlckZpbGwgPSBi
Z0xheWVyLmNsaXAoKSA9PSBCb3JkZXJGaWxsQm94OwogICAgIGJvb2wgaXNSb290ID0gdGhpcy0+
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpOwogCiAgICAgQ29sb3IgYmdDb2xvciA9IGNvbG9y
OwotICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOworICAgIFN0eWxl
SW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLmltYWdlKCk7CiAgICAgYm9vbCBzaG91bGRQYWludEJh
Y2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYgYmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZFRvV2hp
dGUgPSBmYWxzZTsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgIC8vIHdoaWxlIHJlbmRlcmluZy4pCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUp
IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVs
b3cgYmVjYXVzZSB0aGUgYmdDb2xvciBtaWdodCBiZSBjaGFuZ2VkCi0gICAgICAgIGJvb2wgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNW
aXNpYmxlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3IgPSAhYmdM
YXllci5uZXh0KCkgJiYgYmdDb2xvci5pc1Zpc2libGUoKTsKICAgICAgICAgaWYgKHNob3VsZFBh
aW50QmFja2dyb3VuZEltYWdlIHx8IHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yKSB7CiAgICAg
ICAgICAgICBiZ0NvbG9yID0gQ29sb3I6OndoaXRlOwogICAgICAgICAgICAgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgIH0KIAogICAgIGJvb2wgYmFzZUJnQ29sb3JPbmx5ID0gKGJhc2VCZ0Nv
bG9yVXNhZ2UgPT0gQmFzZUJhY2tncm91bmRDb2xvck9ubHkpOwotICAgIGlmIChiYXNlQmdDb2xv
ck9ubHkgJiYgKCFpc1Jvb3QgfHwgYmdMYXllci0+bmV4dCgpIHx8IGJnQ29sb3IuaXNPcGFxdWUo
KSkpCisgICAgaWYgKGJhc2VCZ0NvbG9yT25seSAmJiAoIWlzUm9vdCB8fCBiZ0xheWVyLm5leHQo
KSB8fCBiZ0NvbG9yLmlzT3BhcXVlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNv
bG9yVmlzaWJsZSA9IGJnQ29sb3IuaXNWaXNpYmxlKCk7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8g
RmFzdCBwYXRoIGZvciBkcmF3aW5nIHNpbXBsZSBjb2xvciBiYWNrZ3JvdW5kcy4KLSAgICBpZiAo
IWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRCYWNr
Z3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICBp
ZiAoIWlzUm9vdCAmJiAhY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyAmJiAhc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgJiYgaXNCb3JkZXJGaWxsICYmICFiZ0xheWVyLm5leHQoKSkgewogICAg
ICAgICBpZiAoIWNvbG9yVmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzA5LDEw
ICs3MDksMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gaXNCb3JkZXJGaWxsID8gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXpl
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KHJlY3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNs
dWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCi0gICAgICAgIGlmIChiZ0xh
eWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gpIHsKKyAgICAgICAgaWYgKGJnTGF5ZXIuY2xp
cCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgICAgICBib3JkZXIgPSBzdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLAogICAgICAgICAgICAgICAgIHBh
ZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20o
KSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJS
aWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwotICAgICAgICB9IGVs
c2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKKyAgICAgICAgfSBlbHNl
IGlmIChiZ0xheWVyLmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCkKICAgICAgICAgICAgIGJvcmRl
ciA9IHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlci5yZWN0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTc0MCwxMCArNzQwLDEw
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBtYXNrSW1hZ2U7CiAgICAgSW50UmVjdCBtYXNrUmVjdDsKIAotICAgIGlmIChiZ0xheWVy
LT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3ggfHwgYmdMYXllci0+Y2xpcCgpID09IENvbnRlbnRG
aWxsQm94KSB7CisgICAgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJn
TGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhl
IHBhZGRpbmcgb3IgY29udGVudCBib3hlcyBhcyBuZWNlc3NhcnkuCiAgICAgICAgIGlmICghY2xp
cFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdM
YXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94OworICAgICAgICAgICAgYm9vbCBpbmNsdWRl
UGFkZGluZyA9IGJnTGF5ZXIuY2xpcCgpID09IENvbnRlbnRGaWxsQm94OwogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCA9IExheW91dFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QueCgpICsg
YkxlZnQgKyAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCA6IExheW91dFVuaXQoKSksCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QueSgpICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBh
ZGRpbmcgPyBwYWRkaW5nVG9wKCkgOiBMYXlvdXRVbml0KCkpLAogICAgICAgICAgICAgICAgIHNj
cm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFkZGlu
ZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKQEAgLTc1MSw3ICs3NTEsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgYmFja2dyb3VuZENsaXBTdGF0ZVNh
dmVyLnNhdmUoKTsKICAgICAgICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAg
IH0gZWxzZSBpZiAoYmdMYXllci5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNl
ZCB0byBjbGlwIGJhY2tncm91bmQgZHJhd2luZy4KICAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91
dCBob3cgYmlnIHRoZSBtYXNrIGhhcyB0byBiZS4gIEl0IHNob3VsZCBiZSBubyBiaWdnZXIgdGhh
biB3aGF0IHdlIG5lZWQKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcmVuZGVyLCBzbyB3ZSBzaG91
bGQgaW50ZXJzZWN0IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGJvcmRlciBib3ggb2YgdGhlIGJh
Y2tncm91bmQuCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICBib29sIGlzT3BhcXVlUm9vdCA9IGZhbHNlOwogICAgIGlmIChpc1Jvb3QpIHsKICAgICAgICAg
aXNPcGFxdWVSb290ID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIWJn
Q29sb3IuaXNPcGFxdWUoKSkgeworICAgICAgICBpZiAoIWJnTGF5ZXIubmV4dCgpICYmICFiZ0Nv
bG9yLmlzT3BhcXVlKCkpIHsKICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChv
d25lckVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+aGFzVGFn
TmFtZShmcmFtZVRhZykpIHsKQEAgLTc5OCwxMiArNzk4LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvCiAgICAgfQogCiAgICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGgg
YWxsIGltYWdlcywgY3VsbGVkIGlmIGJhY2tncm91bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCi0gICAg
Ly8gRklYTUU6IEluIHRoZSBiZ0xheWVyLT5oYXNGaW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3Vs
ZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QKKyAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXIu
aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0
CiAgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJz
IHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCi0gICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKKyAg
ICBpZiAoIWJnTGF5ZXIubmV4dCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Qoc2Nyb2xsZWRQYWludFJlY3QpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZChyZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlLCBib3gpOwotICAgICAgICBpZiAo
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kIHx8ICFzaG91bGRQYWludEJhY2tn
cm91bmRJbWFnZSB8fCAhYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpIHx8ICFiZ0xheWVy
LT5oYXNSZXBlYXRYWSgpKSB7CisgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRU
b0JhY2tncm91bmQgfHwgIXNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLmhh
c09wYXF1ZUltYWdlKCp0aGlzKSB8fCAhYmdMYXllci5oYXNSZXBlYXRYWSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGFpbnRJbmZvLnJlY3QpOwogCkBAIC04
MjQsMTAgKzgyNCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBpZiAo
YmFzZUNvbG9yLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xv
ck9ubHkgJiYgYmdDb2xvci5pc1Zpc2libGUoKSkKICAgICAgICAgICAgICAgICAgICAgYmFzZUNv
bG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3IpOwotCiAgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIENvbXBvc2l0
ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IHNo
b3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwpAQCAtODM2LDE5ICs4MzUsMTkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KIAogICAgIC8vIG5vIHByb2dyZXNzaXZlIGxvYWRpbmcgb2Yg
dGhlIGJhY2tncm91bmQgaW1hZ2UKICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBzaG91bGRQ
YWludEJhY2tncm91bmRJbWFnZSkgewotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBn
ZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWlu
dENvbnRhaW5lciwgKmJnTGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3Qs
IGJhY2tncm91bmRPYmplY3QpOworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCBiZ0xheWVyLCBy
ZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFpbnRSZWN0LCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAg
ICAgICAgZ2VvbWV0cnkuY2xpcChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFJlY3QpKTsKICAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8g
YmFja2dyb3VuZE9iamVjdCA6IHRoaXMsIGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewotICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGNvbnRleHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKKyAgICAgICAgICAgIGF1dG8gY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGUoKSA6IG9wOworICAgICAgICAgICAgY29udGV4
dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CiAKLSAgICAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRp
b24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIs
IGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVs
YXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xh
eWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5
ZXIuY2xpcCgpID09IFRleHRGaWxsQm94KSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKFdURk1vdmUobWFza0ltYWdlKSwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
fQpAQCAtOTYxLDggKzk2MCw4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNh
bGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllCiAgICAgICAgIGNh
c2UgU2l6ZUxlbmd0aDogewogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0
aW9uaW5nQXJlYVNpemU7CiAKLSAgICAgICAgICAgIExlbmd0aCBsYXllcldpZHRoID0gZmlsbExh
eWVyLnNpemUoKS5zaXplLndpZHRoKCk7Ci0gICAgICAgICAgICBMZW5ndGggbGF5ZXJIZWlnaHQg
PSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0KCk7CisgICAgICAgICAgICBMZW5ndGggbGF5
ZXJXaWR0aCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aDsKKyAgICAgICAgICAgIExlbmd0
aCBsYXllckhlaWdodCA9IGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQ7CiAKICAgICAgICAg
ICAgIGlmIChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0aWxlU2l6ZS5z
ZXRXaWR0aChsYXllcldpZHRoLnZhbHVlKCkpOwpAQCAtOTg2LDcgKzk4NSw3IEBAIExheW91dFNp
emUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxs
TGF5ZXImIGZpbGxMYXllCiAgICAgICAgICAgICAgICAgLy8gSWYgYm90aCB3aWR0aCBhbmQgaGVp
Z2h0IGFyZSBhdXRvLCB1c2UgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUuCiAgICAgICAgICAg
ICAgICAgdGlsZVNpemUgPSBpbWFnZUludHJpbnNpY1NpemU7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgdGlsZVNpemUuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwog
ICAgICAgICAgICAgcmV0dXJuIHRpbGVTaXplOwogICAgICAgICB9CkBAIC0xMTcxLDcgKzExNzAs
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9z
aXRpb24gPSByZXNvbHZlRWRnZVJlbGF0aXZlTGVuZ3RoKGZpbGxMYXllci54UG9zaXRpb24oKSwg
ZmlsbExheWVyLmJhY2tncm91bmRYT3JpZ2luKCksIGF2YWlsYWJsZVdpZHRoLCBwb3NpdGlvbmlu
Z0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYgKGJhY2tncm91bmRSZXBlYXRYID09IFJvdW5k
RmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgPiAwICYmIHRpbGVTaXplLndpZHRo
KCkgPiAwKSB7CiAgICAgICAgIGludCBudW1UaWxlcyA9IHN0ZDo6bWF4KDEsIHJvdW5kVG9JbnQo
cG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC8gdGlsZVNpemUud2lkdGgoKSkpOwotICAgICAg
ICBpZiAoZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodCgpLmlzQXV0bygpICYmIGJhY2tncm91
bmRSZXBlYXRZICE9IFJvdW5kRmlsbCkKKyAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS5oZWlnaHQuaXNBdXRvKCkgJiYgYmFja2dyb3VuZFJlcGVhdFkgIT0gUm91bmRGaWxsKQogICAg
ICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHRpbGVTaXplLmhlaWdodCgpICogcG9zaXRpb25p
bmdBcmVhU2l6ZS53aWR0aCgpIC8gKG51bVRpbGVzICogdGlsZVNpemUud2lkdGgoKSkpOwogCiAg
ICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAvIG51
bVRpbGVzKTsKQEAgLTExODEsNyArMTE4MCw3IEBAIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjCiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZFlQb3NpdGlvbiA9IHJlc29sdmVFZGdlUmVsYXRpdmVMZW5n
dGgoZmlsbExheWVyLnlQb3NpdGlvbigpLCBmaWxsTGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4oKSwg
YXZhaWxhYmxlSGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLCB0aWxlU2l6ZSk7CiAgICAgaWYg
KGJhY2tncm91bmRSZXBlYXRZID09IFJvdW5kRmlsbCAmJiBwb3NpdGlvbmluZ0FyZWFTaXplLmhl
aWdodCgpID4gMCAmJiB0aWxlU2l6ZS5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgaW50IG51bVRp
bGVzID0gc3RkOjptYXgoMSwgcm91bmRUb0ludChwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgp
IC8gdGlsZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6
ZS53aWR0aCgpLmlzQXV0bygpICYmIGJhY2tncm91bmRSZXBlYXRYICE9IFJvdW5kRmlsbCkKKyAg
ICAgICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6ZS53aWR0aC5pc0F1dG8oKSAmJiBiYWNrZ3Jv
dW5kUmVwZWF0WCAhPSBSb3VuZEZpbGwpCiAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aCh0
aWxlU2l6ZS53aWR0aCgpICogcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAvIChudW1UaWxl
cyAqIHRpbGVTaXplLmhlaWdodCgpKSk7CiAKICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHBv
c2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLyBudW1UaWxlcyk7CkBAIC0xMjUwLDcgKzEyNDks
NyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgRmxvYXRTaXplJiBwaGFzZSwgRmxvYXRTaXplJiB0aWxlU2l6ZSkgY29u
c3QKIHsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdChkZXN0UmVjdCk7Ci0gICAgQmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eShwYWludENvbnRhaW5lciwgKnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludE9mZnNl
dCwgcGFpbnRSZWN0KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZElt
YWdlR2VvbWV0cnkocGFpbnRDb250YWluZXIsIHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBw
YWludE9mZnNldCwgcGFpbnRSZWN0KTsKICAgICBwaGFzZSA9IGdlb21ldHJ5LnBoYXNlKCk7CiAg
ICAgdGlsZVNpemUgPSBnZW9tZXRyeS50aWxlU2l6ZSgpOwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0
cnkuZGVzdFJlY3QoKTsKQEAgLTIxNzAsOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQ
b2luCiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uc3QgRmlsbExheWVyKiBsYXN0QmFja2dyb3VuZExheWVyID0gc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG5leHQg
PSBsYXN0QmFja2dyb3VuZExheWVyLT5uZXh0KCk7IG5leHQ7IG5leHQgPSBsYXN0QmFja2dyb3Vu
ZExheWVyLT5uZXh0KCkpCisgICAgYXV0byogbGFzdEJhY2tncm91bmRMYXllciA9ICZzdHlsZSgp
LmJhY2tncm91bmRMYXllcnMoKTsKKyAgICB3aGlsZSAoYXV0byogbmV4dCA9IGxhc3RCYWNrZ3Jv
dW5kTGF5ZXItPm5leHQoKSkKICAgICAgICAgbGFzdEJhY2tncm91bmRMYXllciA9IG5leHQ7CiAK
ICAgICBpZiAobGFzdEJhY2tncm91bmRMYXllci0+Y2xpcCgpICE9IEJvcmRlckZpbGxCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDc4ZjUyZWM2MGU4NGUzMjc0MWM3YzQzMDhmYTJkYzY3Yjg3MGU1MTEuLjkzZWMyY2U4YTgxMDQ4
NTczNDAyMDQwZmE0Mjk3MzViZjI5OWM5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFn
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5
b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VC
YWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRT
aXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxl
bWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRv
d1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQ
YWludFBvc3Rpb24sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBu
dWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IGUyN2I0MWFiMTBlYThhNWJmZTJlNjMyNzI4NWI1YThmMjFmMWJmMmQuLmY4NDdm
ZmRlOGZlNWQyNmQ1M2M2MWQ5NTQ3NTk0Yjg4NGE2YzRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNSwyMiArMTM1LDE4IEBAIFJlbmRlckVs
ZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsCiBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAg
aWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXll
ciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVy
ID0gYmdMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dy
b3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBiZ0xheWVy
ID0gJm1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXll
ci0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gYmdM
YXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBt
YXNrTGF5ZXIgPSBtX3N0eWxlLm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBt
YXNrTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tJbWFn
ZSA9IG1hc2tMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAm
bV9zdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxl
LmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIGJvcmRlckltYWdlID0g
bV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBib3JkZXJJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwotCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1h
Z2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChhdXRvKiBt
YXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAg
ICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLQogICAgICAgICBpZiAoYXV0byBz
aGFwZVZhbHVlID0gbV9zdHlsZS5zaGFwZU91dHNpZGUoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gc2hhcGVJbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgc2hh
cGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtMzAzLDggKzI5OSw4IEBAIFN0eWxlRGlm
ZmVyZW5jZSBSZW5kZXJFbGVtZW50OjphZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIHVuc2lnCiAgICAgfQogICAgIAogICAgIGlmICgoY29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgJiBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXIpICYmIGhhc0xheWVyKCkp
IHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCk7Ci0gICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpIHx8IGxheWVyLT5wYWludHNXaXRoRmlsdGVycygpKQorICAgICAgICBhdXRvJiBsYXllciA9
ICpkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKTsKKyAgICAg
ICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSB8fCBsYXllci5wYWludHNXaXRoRmlsdGVycygp
KQogICAgICAgICAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYsIFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnRMYXllcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRpZmYgPSBzdGQ6Om1heChkaWZm
LCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKTsKQEAgLTM0MSwyMSArMzM3LDIwIEBA
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYpCiAgICAgcmV0dXJuIGRpZmYgPT0gU3R5bGVEaWZmZXJl
bmNlUmVwYWludCB8fCAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50SWZUZXh0T3JCb3Jk
ZXJPck91dGxpbmUgJiYgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZE9yQm9yZGVy
T3JPdXRsaW5lKCkpOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0ZUZpbGxJbWFnZXMo
Y29uc3QgRmlsbExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciogbmV3TGF5ZXJzKQor
dm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciogb2xk
TGF5ZXJzLCBjb25zdCBGaWxsTGF5ZXImIG5ld0xheWVycykKIHsKLSAgICAvLyBPcHRpbWl6ZSB0
aGUgY29tbW9uIGNhc2UKLSAgICBpZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5
ZXJzLCBuZXdMYXllcnMpKQorICAgIC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZS4KKyAgICBp
ZiAoRmlsbExheWVyOjppbWFnZXNJZGVudGljYWwob2xkTGF5ZXJzLCAmbmV3TGF5ZXJzKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdvIHRocm91Z2ggdGhlIG5ldyBsYXllcnMgYW5k
IGFkZENsaWVudHMgZmlyc3QsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRzIG9mIGFuIGlt
YWdlLgotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTmV3ID0gbmV3TGF5ZXJzOyBjdXJy
TmV3OyBjdXJyTmV3ID0gY3Vyck5ldy0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyTmV3LT5p
bWFnZSgpKQotICAgICAgICAgICAgY3Vyck5ldy0+aW1hZ2UoKS0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgIC8vIEFkZCBiZWZvcmUgcmVtb3ZpbmcsIHRvIGF2b2lkIHJlbW92aW5nIGFsbCBjbGllbnRz
IG9mIGFuIGltYWdlIHRoYXQgaXMgaW4gYm90aCBzZXRzLgorICAgIGZvciAoYXV0byogbGF5ZXIg
PSAmbmV3TGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChsYXllci0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGxheWVyLT5pbWFnZSgpLT5hZGRDbGllbnQo
dGhpcyk7CiAgICAgfQotCi0gICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJPbGQgPSBvbGRM
YXllcnM7IGN1cnJPbGQ7IGN1cnJPbGQgPSBjdXJyT2xkLT5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGN1cnJPbGQtPmltYWdlKCkpCi0gICAgICAgICAgICBjdXJyT2xkLT5pbWFnZSgpLT5yZW1vdmVD
bGllbnQodGhpcyk7CisgICAgZm9yIChhdXRvKiBsYXllciA9IG9sZExheWVyczsgbGF5ZXI7IGxh
eWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAobGF5ZXItPmltYWdlKCkpCisgICAg
ICAgICAgICBsYXllci0+aW1hZ2UoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIH0KIApA
QCAtNDA5LDggKzQwNCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpCiAgICAgU3R5bGU6Omxv
YWRQZW5kaW5nUmVzb3VyY2VzKHN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwogCiAgICAg
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlKTsKLSAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92
ZShtX3N0eWxlKTsKLSAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7CisgICAgYXV0byBvbGRT
dHlsZSA9IG1fc3R5bGUucmVwbGFjZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYm9vbCBkZXRhY2hl
ZEZyb21QYXJlbnQgPSAhcGFyZW50KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaW52YWxpZGF0
ZSB0aGUgY29udGFpbmluZyBibG9jayBjYWNoZSBmb3IgZmxvd3Mgd2hlbiB0aGUgY29udGlhbmlu
ZyBibG9jayBjb250ZXh0IGNoYW5nZXMKQEAgLTgwNyw3ICs4MDEsNyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihTdHlsZVByb3BhZ2F0aW9u
VHlwZSBwcm9wYQogICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlz
cGxheSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAg
ICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgmc3R5bGUo
KSk7CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KHN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLmNvbHVtblNw
YW4oKSkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOwogICAgICAgICB9CkBAIC05OTksOCArOTkzLDggQEAgc3RhdGljIGlubGluZSBib29sIGFy
ZUN1cnNvcnNFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICB1cGRhdGVGaWxsSW1hZ2Vz
KG9sZFN0eWxlID8gb2xkU3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5
bGUuYmFja2dyb3VuZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8g
b2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlID8gJm9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRl
RmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+bWFza0xheWVycygpIDogbnVsbHB0ciwg
bV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2Uo
KS5pbWFnZSgpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
KTsKICAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlT3V0c2lk
ZSgpIDogbnVsbHB0ciwgbV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CkBAIC0xMjMxLDQxICsxMjI1
LDM5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpM
YXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0
KCkpOwotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUg
KGNoaWxkKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xh
eW91dCgpKQogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgbXVz
dFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
aWxsTGF5ZXImIGxheWVyKQogewogICAgIC8vIE5vYm9keSB3aWxsIHVzZSBtdWx0aXBsZSBsYXll
cnMgd2l0aG91dCB3YW50aW5nIGZhbmN5IHBvc2l0aW9uaW5nLgotICAgIGlmIChsYXllci0+bmV4
dCgpKQorICAgIGlmIChsYXllci5uZXh0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGhhdmUgYSB2YWxpZCBpbWFnZS4KLSAgICBTdHlsZUltYWdlKiBpbWFn
ZSA9IGxheWVyLT5pbWFnZSgpOworICAgIGF1dG8qIGltYWdlID0gbGF5ZXIuaW1hZ2UoKTsKICAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlciwgcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWxheWVyLT54UG9zaXRpb24oKS5pc1plcm8oKSB8fCAhbGF5ZXItPnlQb3NpdGlvbigpLmlzWmVy
bygpKQorICAgIGlmICghbGF5ZXIueFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLnlQb3Np
dGlvbigpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVGaWxsU2l6ZVR5
cGUgc2l6ZVR5cGUgPSBsYXllci0+c2l6ZVR5cGUoKTsKKyAgICBhdXRvIHNpemVUeXBlID0gbGF5
ZXIuc2l6ZVR5cGUoKTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBDb250YWluIHx8IHNpemVUeXBl
ID09IENvdmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzaXplVHlwZSA9PSBT
aXplTGVuZ3RoKSB7Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IGxheWVyLT5zaXplTGVuZ3Ro
KCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwg
c2l6ZS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKKyAgICAgICAgYXV0byBzaXpl
ID0gbGF5ZXIuc2l6ZUxlbmd0aCgpOworICAgICAgICBpZiAoc2l6ZS53aWR0aC5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKSB8fCBzaXplLmhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIG5laXRo
ZXIgYW4gaW50cmluc2ljIHdpZHRoIG5vciBhbiBpbnRyaW5zaWMgaGVpZ2h0LCBpdHMgc2l6ZSBp
cyBkZXRlcm1pbmVkIGFzIGZvciAnY29udGFpbicuCi0gICAgICAgIGlmICgoc2l6ZS53aWR0aCgp
LmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRl
ZEltYWdlKCkpCisgICAgICAgIGlmICgoc2l6ZS53aWR0aC5pc0F1dG8oKSB8fCBzaXplLmhlaWdo
dC5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVkSW1hZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoaW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzY1LDE0ICsxMzU3LDE0IEBAIGJvb2wgUmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4
dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFVuaXQgYm9yZGVy
UmlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMp
LmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJv
eD4oKnRoaXMpLndpZHRoKCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWlu
SW5zZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5yaWdodCgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwg
b2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0LCBzdGQ6Om1heDxMYXlvdXRVbml0Pih2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lk
dGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKSwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpLCBib3Jk
ZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5p
dD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVuaXQgbWluSW5z
ZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4
dGVudC5yaWdodCgpLCBzdGQ6Om1pbihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRo
KCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4KGJvcmRlclJp
Z2h0LCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgsIGJveFdpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21S
aWdodFJhZGl1cygpLndpZHRoLCBib3hXaWR0aCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNv
cmF0aW9uc1dpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQm94LndpZHRoKCks
IG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRoLAogICAgICAgICAgICAg
bmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGRlY29yYXRpb25zV2lkdGgs
CiAgICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LmhlaWdodCgpLCBvbGRPdXRsaW5l
Qm94LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbjxMYXlv
dXRVbml0PihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKKyAgICAgICAgTGF5
b3V0VW5pdCByaWdodCA9IHN0ZDo6bWluKG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhY
KCkpOwogICAgICAgICBpZiAocmlnaHRSZWN0LngoKSA8IHJpZ2h0KSB7CiAgICAgICAgICAgICBy
aWdodFJlY3Quc2V0V2lkdGgoc3RkOjptaW4ocmlnaHRSZWN0LndpZHRoKCksIHJpZ2h0IC0gcmln
aHRSZWN0LngoKSkpOwogICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHJpZ2h0UmVjdCk7CkBAIC0xMzg1LDEwICsxMzc3LDEwIEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwCiAgICAgICAgIHN0eWxlKCkuZ2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuYm9y
ZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7CiAgICAgICAgIExheW91dFVu
aXQgYm94SGVpZ2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKS5oZWlnaHQoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLmhlaWdodCgp
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQg
PSBzdGQ6Om1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgp
LCBib3hIZWlnaHQpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJC
b3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpKSk7Ci0gICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNIZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20p
OworICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjpt
aW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbihuZXdC
b3VuZHMuaGVpZ2h0KCksIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckhlaWdodCA9IHN0ZDo6bWF4KGJvcmRlckJvdHRvbSwgc3RkOjptYXgodmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQp
LAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSkpOworICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRp
b25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zm
c2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50KSArIHN0ZDo6
bWF4KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0
b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgc3RkOjptaW4obmV3T3V0bGlu
ZUJveC5tYXhZKCksIG9sZE91dGxpbmVCb3gubWF4WSgpKSAtIGRlY29yYXRpb25zSGVpZ2h0LAog
ICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94
LndpZHRoKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
MjgwMzc0NDE1ZGM2MTI3ZDM1OGU2ZmU0NDMyZGY3YzhiYmZiZWI5Ny4uYzZmOTcwMThkZGI2OTI2
MTdlM2VmZDVmNGVlMTliZTRlMmUwNjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlKSBjb25zdDsKICAgICBi
b29sIGhhc0ltbWVkaWF0ZU5vbldoaXRlc3BhY2VUZXh0Q2hpbGRPckJvcmRlck9yT3V0bGluZSgp
IGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IEZpbGxMYXllciopOworICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5
ZXIqLCBjb25zdCBGaWxsTGF5ZXImKTsKICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2Uq
LCBTdHlsZUltYWdlKik7CiAgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCAzM2JmZjBlNDFkMDAzMmE3NTU3ZjA0ZDUzZjc1YWNkMTEzZWI2ZWYwLi43
ODYzODAxOTA5OTE1NjlmNzY1NTI0NGU5MDRlNTM4MjJjYzA3MDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yNzIwLDcgKzI3MjAsNyBAQCBDb250ZW50QWxp
Z25tZW50RGF0YSBSZW5kZXJHcmlkOjpjb21wdXRlQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0
aW9uT2Zmc2V0KEdyaQogICAgIGlmIChjb250ZW50QWxpZ25tZW50LmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRBbGlnbm1lbnQ7CiAKLSAgICBhdXRvIG92ZXJmbG93ID0gaXNSb3dB
eGlzID8gc3R5bGUoKS5qdXN0aWZ5Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgOiBzdHlsZSgp
LmFsaWduQ29udGVudE92ZXJmbG93QWxpZ25tZW50KCk7CisgICAgYXV0byBvdmVyZmxvdyA9IChp
c1Jvd0F4aXMgPyBzdHlsZSgpLmp1c3RpZnlDb250ZW50KCkgOiBzdHlsZSgpLmFsaWduQ29udGVu
dCgpKS5vdmVyZmxvdygpOwogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPD0gMCAmJiBvdmVy
ZmxvdyA9PSBPdmVyZmxvd0FsaWdubWVudFNhZmUpCiAgICAgICAgIHJldHVybiB7MCwgMH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA1MWQ0NGJmNTY2
OTY3Y2FhZGFmOTc0MjAyOTgyY2I5MThiZmU4NTEuLmFjZWVkN2Q1OTBkZTI1Y2M0Mzk5ODc4NDgz
Yjg5ODc3YWYyOTU2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzE0MywxNyArMzE0MywxOCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyRm9yU2Nyb2xsYmFyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogUmVmPFNj
cm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7Ci0gICAgUmVu
ZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJl
cigpKTsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gYWN0dWFsUmVuZGVyZXIt
PmlzQm94KCkgJiYgYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKTsKKyAgICBBU1NFUlQocmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSkpOworICAg
IGF1dG8mIGFjdHVhbFJlbmRlcmVyID0gKnJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkp
OworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVh
bFJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0
eWxlKQotICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9s
bGJhcigqdGhpcywgb3JpZW50YXRpb24sIGFjdHVhbFJlbmRlcmVyLT5lbGVtZW50KCkpOworICAg
ICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhp
cywgb3JpZW50YXRpb24sIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLmVsZW1l
bnQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CiAgICAg
ICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIG9yaWVudGF0aW9uKTsKICAgICAgICAg
aWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCiAgICAgICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIo
KSk7CiAgICAgfQotICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdp
ZGdldC5nZXQoKSk7CisgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQo
KndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGM4
YzQwYzVjZjAzMDQzYjkwNWVkOWE0YzFmZmY5OWRlOTMxNTAzZjQuLjNlYzdmZGQ4MDU3YzkwNzRh
MDIzNGM3NzBhZjQ3OTRhN2Q5M2QwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNzI2LDMwICsxNzI2LDI3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogCiBzdGF0aWMgYm9vbCBjYW5DcmVhdGVUaWxlZEltYWdlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciA9IHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKTsKLSAgICBpZiAoZmlsbExheWVyLT5uZXh0KCkpCisgICAgYXV0byYgZmls
bExheWVyID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOworICAgIGlmIChmaWxsTGF5ZXIubmV4
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWZpbGxMYXllci0+aW1hZ2Vz
QXJlTG9hZGVkKCkpCisgICAgaWYgKCFmaWxsTGF5ZXIuaW1hZ2VzQXJlTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSAhPSBT
Y3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBpZiAoZmlsbExheWVyLmF0dGFjaG1lbnQo
KSAhPSBTY3JvbGxCYWNrZ3JvdW5kQXR0YWNobWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotCiAgICAgLy8gRklYTUU6IEFsbG93IGNvbG9yK2ltYWdlIGNv
bXBvc2l0aW5nIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCiAgICAgLy8gRm9yIG5vdyBiYWlsaW5nIG91
dC4KLSAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpCisgICAgaWYgKHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBmaWxsTGF5
ZXItPmltYWdlKCk7Ci0KICAgICAvLyBGSVhNRTogc3VwcG9ydCBncmFkaWVudHMgd2l0aCBpc0dl
bmVyYXRlZEltYWdlLgorICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsK
ICAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1h
Z2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTE4MDksMjUgKzE4MDYsMjQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRJbWFnZShib29sIGlzU2ltcGxlQ28KICAg
ICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0KKyAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIWlzU2ltcGxlQ29udGFp
bmVyIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGJhY2tncm91bmRCb3hGb3JTaW1wbGVDb250YWluZXJQ
YWludGluZygpOworICAgIGF1dG8gZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9yU2ltcGxlQ29u
dGFpbmVyUGFpbnRpbmcoKTsKICAgICBGbG9hdFNpemUgcGhhc2U7CiAgICAgRmxvYXRTaXplIHRp
bGVTaXplOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlLmJhY2tncm91bmRMYXll
cnMoKS0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAvLyBGSVhNRTogYWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KKyAgICAvLyBGSVhNRTogQWJz
b2x1dGUgcGFpbnQgbG9jYXRpb24gaXMgcmVxdWlyZWQgaGVyZS4KICAgICBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpLmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKCZyZW5kZXJl
cigpLCBMYXlvdXRQb2ludCgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKKwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFzZSk7CiAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChkZXN0UmVjdCkpOwotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlLmdldCgpKTsKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCku
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKICAgICBkaWRVcGRhdGVDb250ZW50
c1JlY3QgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKaW5kZXggMjJlZTk4MTEwNzdmZmQ4MDhiZmJhMTM5NDA5YjZjOTYwZjYzNGZhZi4uY2Rm
ODA2MGJjYjVlZDhhOGY0ZjkzN2E3ZTQ5N2UxNDY3ZDZlYmI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIFJlZjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOwogICAg
IH0KLSAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKKyAgICB2
aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQoKndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAppbmRleCBkMzlmNjQ2OTU4N2M3NDQyZjM3MjQ0NzNiNjg1ODA4YTk3ZmE2N2Zi
Li5kMmMwMmVmOWQ2MGUwNmM2ODY2NzIzZTQ3NDA3MzdhZDhjMGMzODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAvLyBVc2UgbWFyZ2lu
OmF1dG8gaW5zdGVhZCBvZiBhbGlnbi1pdGVtczpjZW50ZXIgdG8gZ2V0IHNhZmUgY2VudGVyaW5n
LCBpLmUuCiAgICAgLy8gd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MsIHRyZWF0IGl0IHRoZSBz
YW1lIGFzIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0LgogICAgIC8vIEJ1dCB3ZSBvbmx5IGRvIHRo
YXQgZm9yIHRoZSBjYXNlcyB3aGVyZSBodG1sLmNzcyB3b3VsZCBvdGhlcndpc2UgdXNlIGNlbnRl
ci4KLSAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25D
ZW50ZXIpIHsKKyAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1zKCkucG9zaXRpb24oKSA9PSBJdGVt
UG9zaXRpb25DZW50ZXIpIHsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3Ro
KCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpbkJvdHRvbShMZW5ndGgoKSk7CiAgICAg
ICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uRmxleFN0YXJ0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMS4uM2U3MDMyMGQ2OTUyMjhj
MmRhNmQ3NmEwZDFlYmYyMTQ2YTA5M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyNzYsOSArMTI3Niw5IEBAIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5CiAgICAgICAgIGFkanVzdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkp
OwogCiAgICAgQ29sb3IgYyA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBjb25zdCBGaWxsTGF5
ZXIqIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMo
KTsKKyAgICBhdXRvJiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CiAKLSAgICBpZiAoYmdMYXllci0+aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQo
KSkgeworICAgIGlmIChiZ0xheWVyLmhhc0ltYWdlKCkgfHwgYy5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBw
YWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBv
bmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAgICBib29sIHNob3VsZENsaXAg
PSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNrZ3JvdW5kT2JqZWN0ID09IHRo
aXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYgdGFibGVFbHQtPmNvbGxhcHNl
Qm9yZGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXgg
ZmE1OTlhNzE4NzJiNDk4YTU0NjMyZWQzZGVjZmU2NmU2ZjMxMWMxZS4uYzMxYTlhYTZjZjJiMDY5
ODIyYjZmZjUwNjdiZmZhYzUzN2ZmMmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAog
ICAgICAgICAvLyBQYWRkaW5nCiAgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gbV90aGVt
ZS0+Y29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFkZGlu
Z0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFkZGluZ0JveCAh
PSBzdHlsZS5wYWRkaW5nQm94KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KHBh
ZGRpbmdCb3gpOworICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBhZGRp
bmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCiAgICAgICAgIGlmIChtX3RoZW1lLT5j
b250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQpAQCAtMTU1LDE5ICsxNTUsMTkgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAg
ICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4K
ICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtl
IG1pbi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgotICAgICAgICBMZW5ndGhTaXplIGNv
bnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgTGVuZ3RoU2l6ZShzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSksIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKSk7Ci0gICAgICAgIGlmIChjb250cm9sU2l6ZS53aWR0aCgpICE9IHN0eWxlLndp
ZHRoKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChjb250cm9sU2l6ZS53aWR0aCgpKTsK
LSAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCgpICE9IHN0eWxlLmhlaWdodCgpKQotICAg
ICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGNvbnRyb2xTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICAKKyAgICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRy
b2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUu
aGVpZ2h0KCkgfSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2xT
aXplLndpZHRoICE9IHN0eWxlLndpZHRoKCkpCisgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChX
VEZNb3ZlKGNvbnRyb2xTaXplLndpZHRoKSk7CisgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWln
aHQgIT0gc3R5bGUuaGVpZ2h0KCkpCisgICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92
ZShjb250cm9sU2l6ZS5oZWlnaHQpKTsKKwogICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVp
Z2h0CiAgICAgICAgIExlbmd0aFNpemUgbWluQ29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVt
Q29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKLSAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndpZHRoKCkgIT0gc3R5bGUubWluV2lk
dGgoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKG1pbkNvbnRyb2xTaXplLndpZHRo
KCkpOwotICAgICAgICBpZiAobWluQ29udHJvbFNpemUuaGVpZ2h0KCkgIT0gc3R5bGUubWluSGVp
Z2h0KCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQobWluQ29udHJvbFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lk
dGggIT0gc3R5bGUubWluV2lkdGgoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdU
Rk1vdmUobWluQ29udHJvbFNpemUud2lkdGgpKTsKKyAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXpl
LmhlaWdodCAhPSBzdHlsZS5taW5IZWlnaHQoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldE1pbkhl
aWdodChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOworCiAgICAgICAgIC8vIEZvbnQK
ICAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwg
c3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAg
ICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9u
dCwgYWxzbyBvdmVycmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBo
ZWlnaHQuCkBAIC03MDksOSArNzA5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5
bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm8KICAgICBj
YXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgY2FzZSBUZXh0QXJlYVBhcnQ6CiAgICAgICAgIC8vIFRl
c3QgdGhlIHN0eWxlIHRvIHNlZSBpZiB0aGUgVUEgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIG1hdGNo
LgotICAgICAgICByZXR1cm4gKHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgotICAgICAgICAgICAg
fHwgKnN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICB8
fCAhc3R5bGUuYmFja2dyb3VuZENvbG9yRXF1YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChiYWNr
Z3JvdW5kQ29sb3IpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLmJvcmRlcigpICE9IGJvcmRlcgor
ICAgICAgICAgICAgfHwgc3R5bGUuYmFja2dyb3VuZExheWVycygpICE9IGJhY2tncm91bmQKKyAg
ICAgICAgICAgIHx8ICFzdHlsZS5iYWNrZ3JvdW5kQ29sb3JFcXVhbHNUb0NvbG9ySWdub3JpbmdW
aXNpdGVkKGJhY2tncm91bmRDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3Bw
CmluZGV4IDExMjYwZmE5Y2JmNDE3OTVkM2Q4Yjc3ZDdiZDkxYTkwNWNiMjY5ZDUuLmNkNGE4Mzk2
NWE1NWM4NTM4YzRlOWJmZDU0MTA2NmMwODI2MzE4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMTQ1LDIwICsxNDUsMjYgQEAgdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlJiBzdHlsZSwgRm9y
bVR5cGUgdHlwZSkgY28KICAgICAvLyBUaGVzZSBhcmUgYWx3YXlzIHZhbGlkLCBldmVuIGlmIG5v
IHRoZW1lIGNvdWxkIGJlIGxvYWRlZC4KICAgICBjb25zdCBUaGVtZVBhcnREZXNjKiBkZXNjID0g
bV9wYXJ0RGVzY3MgKyAoc2l6ZV90KXR5cGU7CiAKLSAgICBpZiAoc3R5bGUubWluV2lkdGgoKS5p
c0ludHJpbnNpYygpKQotICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChkZXNjLT5taW4ud2lkdGgo
KSk7Ci0gICAgaWYgKHN0eWxlLm1pbkhlaWdodCgpLmlzSW50cmluc2ljKCkpCi0gICAgICAgIHN0
eWxlLnNldE1pbkhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOworICAgIGlmIChzdHlsZS5taW5X
aWR0aCgpLmlzSW50cmluc2ljKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWluLndp
ZHRoOworICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChXVEZNb3ZlKGNvcHkpKTsKKyAgICB9Cisg
ICAgaWYgKHN0eWxlLm1pbkhlaWdodCgpLmlzSW50cmluc2ljKCkpIHsKKyAgICAgICAgYXV0byBj
b3B5ID0gZGVzYy0+bWluLmhlaWdodDsKKyAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KFdURk1v
dmUoY29weSkpOworICAgIH0KIAotICAgIGlmIChkZXNjLT5tYXgud2lkdGgoKS52YWx1ZSgpID4g
MCAmJiBzdHlsZS5tYXhXaWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAgIHN0eWxl
LnNldE1heFdpZHRoKGRlc2MtPm1heC53aWR0aCgpKTsKLSAgICBpZiAoZGVzYy0+bWF4LmhlaWdo
dCgpLnZhbHVlKCkgPiAwICYmIHN0eWxlLm1heEhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkp
Ci0gICAgICAgIHN0eWxlLnNldE1heEhlaWdodChkZXNjLT5tYXguaGVpZ2h0KCkpOworICAgIGlm
IChkZXNjLT5tYXgud2lkdGgudmFsdWUoKSA+IDAgJiYgc3R5bGUubWF4V2lkdGgoKS5pc0ludHJp
bnNpY09yQXV0bygpKSB7CisgICAgICAgIGF1dG8gY29weSA9IGRlc2MtPm1heC53aWR0aDsKKyAg
ICAgICAgc3R5bGUuc2V0TWF4V2lkdGgoV1RGTW92ZShjb3B5KSk7CisgICAgfQorICAgIGlmIChk
ZXNjLT5tYXguaGVpZ2h0LnZhbHVlKCkgPiAwICYmIHN0eWxlLm1heEhlaWdodCgpLmlzSW50cmlu
c2ljT3JBdXRvKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWF4LmhlaWdodDsKKyAg
ICAgICAgc3R5bGUuc2V0TWF4SGVpZ2h0KFdURk1vdmUoY29weSkpOworICAgIH0KIAotICAgIHN0
eWxlLnNldFBhZGRpbmdUb3AoZGVzYy0+cGFkZGluZy50b3AoKSk7Ci0gICAgc3R5bGUuc2V0UGFk
ZGluZ0JvdHRvbShkZXNjLT5wYWRkaW5nLmJvdHRvbSgpKTsKLSAgICBzdHlsZS5zZXRQYWRkaW5n
TGVmdChkZXNjLT5wYWRkaW5nLmxlZnQoKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGluZ1JpZ2h0KGRl
c2MtPnBhZGRpbmcucmlnaHQoKSk7CisgICAgYXV0byBwYWRkaW5nQ29weSA9IGRlc2MtPnBhZGRp
bmc7CisgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBhZGRpbmdDb3B5KSk7CiB9CiAK
IHN0YXRpYyBib29sIGlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShjb25zdCBJbnRTaXpl
JiBlbGVtZW50U2l6ZSkKQEAgLTM2NSw3ICszNzEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpw
YWludFRoZW1lUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgRm9ybVR5cGUgdHlwZSwg
YwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYm9vbCBoYXZl
QmFja2dyb3VuZENvbG9yID0gaXNDb250cm9sU3R5bGVkKG9iamVjdC5zdHlsZSgpLCBvYmplY3Qu
c3R5bGUoKS5ib3JkZXIoKSwgKm9iamVjdC5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgQ29s
b3I6OndoaXRlKTsKKyAgICBib29sIGhhdmVCYWNrZ3JvdW5kQ29sb3IgPSBpc0NvbnRyb2xTdHls
ZWQob2JqZWN0LnN0eWxlKCksIG9iamVjdC5zdHlsZSgpLmJvcmRlcigpLCBvYmplY3Quc3R5bGUo
KS5iYWNrZ3JvdW5kTGF5ZXJzKCksIENvbG9yOjp3aGl0ZSk7CiAgICAgQ29udHJvbFN0YXRlcyBz
dGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKICAgICBhcHBs
eUVkamVTdGF0ZUZyb21Gb3JtKGVudHJ5LT5lZGplKCksICZzdGF0ZXMsIGhhdmVCYWNrZ3JvdW5k
Q29sb3IpOwogCkBAIC01NDIsMTEgKzU0OCwxMSBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpsb2Fk
VGhlbWUoKQogCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbkZhbGxi
YWNrKFRoZW1lUGFydERlc2MqIGRlc2MpCiB7Ci0gICAgZGVzYy0+bWluLnNldFdpZHRoKExlbmd0
aCgwLCBGaXhlZCkpOwotICAgIGRlc2MtPm1pbi5zZXRIZWlnaHQoTGVuZ3RoKDAsIEZpeGVkKSk7
CisgICAgZGVzYy0+bWluLndpZHRoID0geyAwLCBGaXhlZCB9OworICAgIGRlc2MtPm1pbi5oZWln
aHQgPSB7IDAsIEZpeGVkIH07CiAKLSAgICBkZXNjLT5tYXguc2V0V2lkdGgoTGVuZ3RoKDAsIEZp
eGVkKSk7Ci0gICAgZGVzYy0+bWF4LnNldEhlaWdodChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBk
ZXNjLT5tYXgud2lkdGggPSB7IDAsIEZpeGVkIH07CisgICAgZGVzYy0+bWF4LmhlaWdodCA9IHsg
MCwgRml4ZWQgfTsKIAogICAgIGRlc2MtPnBhZGRpbmcgPSBMZW5ndGhCb3goMCwgMCwgMCwgMCk7
CiB9CkBAIC01NTksMTIgKzU2NSwxMiBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnRE
ZXNjcmlwdGlvbihFdmFzX09iamVjdCogb2JqZWN0LCBUaGVtZVBhcnREZXNjKiBkZQogICAgIGlm
ICghbWludyAmJiAhbWluaCkKICAgICAgICAgZWRqZV9vYmplY3Rfc2l6ZV9taW5fY2FsYyhvYmpl
Y3QsICZtaW53LCAmbWluaCk7CiAKLSAgICBkZXNjLT5taW4uc2V0V2lkdGgoTGVuZ3RoKG1pbncs
IEZpeGVkKSk7Ci0gICAgZGVzYy0+bWluLnNldEhlaWdodChMZW5ndGgobWluaCwgRml4ZWQpKTsK
KyAgICBkZXNjLT5taW4ud2lkdGggPSB7IG1pbncsIEZpeGVkIH07CisgICAgZGVzYy0+bWluLmhl
aWdodCA9IHsgbWluaCwgRml4ZWQgfTsKIAogICAgIGVkamVfb2JqZWN0X3NpemVfbWF4X2dldChv
YmplY3QsICZtYXh3LCAmbWF4aCk7Ci0gICAgZGVzYy0+bWF4LnNldFdpZHRoKExlbmd0aChtYXh3
LCBGaXhlZCkpOwotICAgIGRlc2MtPm1heC5zZXRIZWlnaHQoTGVuZ3RoKG1heGgsIEZpeGVkKSk7
CisgICAgZGVzYy0+bWF4LndpZHRoID0geyBtYXh3LCBGaXhlZCB9OworICAgIGRlc2MtPm1heC5o
ZWlnaHQgPSB7IG1heGgsIEZpeGVkIH07CiAKICAgICBpZiAoIWVkamVfb2JqZWN0X3BhcnRfZXhp
c3RzKG9iamVjdCwgInRleHRfY29uZmluZW1lbnQiKSkKICAgICAgICAgZGVzYy0+cGFkZGluZyA9
IExlbmd0aEJveCgwLCAwLCAwLCAwKTsKQEAgLTgwMCwxMCArODA2LDE0IEBAIHZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5CiAgICAgc3R5bGUucmVzZXRCb3JkZXIoKTsKIAogICAgIGNvbnN0IFRoZW1l
UGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3QpQ2hlY2tCb3g7Ci0gICAgaWYg
KHN0eWxlLndpZHRoKCkudmFsdWUoKSA8IGRlc2MtPm1pbi53aWR0aCgpLnZhbHVlKCkpCi0gICAg
ICAgIHN0eWxlLnNldFdpZHRoKGRlc2MtPm1pbi53aWR0aCgpKTsKLSAgICBpZiAoc3R5bGUuaGVp
Z2h0KCkudmFsdWUoKSA8IGRlc2MtPm1pbi5oZWlnaHQoKS52YWx1ZSgpKQotICAgICAgICBzdHls
ZS5zZXRIZWlnaHQoZGVzYy0+bWluLmhlaWdodCgpKTsKKyAgICBpZiAoc3R5bGUud2lkdGgoKS52
YWx1ZSgpIDwgZGVzYy0+bWluLndpZHRoLnZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0g
ZGVzYy0+bWluLndpZHRoOworICAgICAgICBzdHlsZS5zZXRXaWR0aChXVEZNb3ZlKGNvcHkpKTsK
KyAgICB9CisgICAgaWYgKHN0eWxlLmhlaWdodCgpLnZhbHVlKCkgPCBkZXNjLT5taW4uaGVpZ2h0
LnZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWluLmhlaWdodDsKKyAgICAg
ICAgc3R5bGUuc2V0SGVpZ2h0KFdURk1vdmUoY29weSkpOworICAgIH0KIH0KIAogYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtODIzLDEwICs4MzMs
MTQgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYKICAgICBzdHlsZS5yZXNldEJvcmRlcigpOwog
CiAgICAgY29uc3QgVGhlbWVQYXJ0RGVzYyogZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdClS
YWRpb0J1dHRvbjsKLSAgICBpZiAoc3R5bGUud2lkdGgoKS52YWx1ZSgpIDwgZGVzYy0+bWluLndp
ZHRoKCkudmFsdWUoKSkKLSAgICAgICAgc3R5bGUuc2V0V2lkdGgoZGVzYy0+bWluLndpZHRoKCkp
OwotICAgIGlmIChzdHlsZS5oZWlnaHQoKS52YWx1ZSgpIDwgZGVzYy0+bWluLmhlaWdodCgpLnZh
bHVlKCkpCi0gICAgICAgIHN0eWxlLnNldEhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOworICAg
IGlmIChzdHlsZS53aWR0aCgpLnZhbHVlKCkgPCBkZXNjLT5taW4ud2lkdGgudmFsdWUoKSkgewor
ICAgICAgICBhdXRvIGNvcHkgPSBkZXNjLT5taW4ud2lkdGg7CisgICAgICAgIHN0eWxlLnNldFdp
ZHRoKFdURk1vdmUoY29weSkpOworICAgIH0KKyAgICBpZiAoc3R5bGUuaGVpZ2h0KCkudmFsdWUo
KSA8IGRlc2MtPm1pbi5oZWlnaHQudmFsdWUoKSkgeworICAgICAgICBhdXRvIGNvcHkgPSBkZXNj
LT5taW4uaGVpZ2h0OworICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92ZShjb3B5KSk7Cisg
ICAgfQogfQogCiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFJhZGlvKGNvbnN0IFJlbmRlck9i
amVjdCYgb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBmYTgw
YjI4MTczY2NiZDQ3MTAyZjY0NjY5ZDA2MGM4YmI3MTA2NTZhLi5iNzM3ZmI4MjA2ODk5ZmU4ZGVh
NGI1ODRkNjliYTYzMjQwNjBkMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUd0ay5jcHAKQEAgLTIwMTQsMTAgKzIwMTQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUd0
azo6cGFpbnRNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKGNvbnN0IFJlbmRlck9iamVj
dCYgcmUKIHN0YXRpYyBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBib3JkZXJSYWRpaUZyb21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpKAotICAgICAgICBJbnRTaXplKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53
aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKS5p
bnRWYWx1ZSgpKSwKLSAgICAgICAgSW50U2l6ZShzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygp
LndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KS5pbnRWYWx1ZSgpKSwKLSAgICAgICAgSW50U2l6ZShzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCku
aGVpZ2h0KCkuaW50VmFsdWUoKSksCi0gICAgICAgIEludFNpemUoc3R5bGUuYm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMoKS53aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkuaGVpZ2h0KCkuaW50VmFsdWUoKSkpOworICAgICAgICBJbnRTaXplKHN0eWxlLmJv
cmRlclRvcExlZnRSYWRpdXMoKS53aWR0aC5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJUb3BMZWZ0
UmFkaXVzKCkuaGVpZ2h0LmludFZhbHVlKCkpLAorICAgICAgICBJbnRTaXplKHN0eWxlLmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCkud2lkdGguaW50VmFsdWUoKSwgc3R5bGUuYm9yZGVyVG9wUmlnaHRS
YWRpdXMoKS5oZWlnaHQuaW50VmFsdWUoKSksCisgICAgICAgIEludFNpemUoc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLndpZHRoLmludFZhbHVlKCksIHN0eWxlLmJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMoKS5oZWlnaHQuaW50VmFsdWUoKSksCisgICAgICAgIEludFNpemUoc3R5bGUuYm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aC5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLmhlaWdodC5pbnRWYWx1ZSgpKSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDEwMGE1ZDE0ZTE2ZmJiZGI0M2RjODFh
ZjljNDhhOWNjYmFjZDk4NGMuLjE5MWFmYTdjM2ZkMDZiYzEwY2RkMWE2OThhZTAwZDk2ZTA5YTU0
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTM1
NywxMCArMzU3LDkgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb24KICAgICBpZiAoIXN0eWxlLndp
ZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIExlbmd0aCBsZW5ndGggPSBMZW5ndGgoc3RhdGljX2Nhc3Q8
aW50PihjZWlsZihzdGQ6Om1heChzdHlsZS5mb250U2l6ZSgpLCAxMCkpKSwgRml4ZWQpOwotICAg
IAotICAgIHN0eWxlLnNldFdpZHRoKGxlbmd0aCk7Ci0gICAgc3R5bGUuc2V0SGVpZ2h0KGxlbmd0
aCk7CisgICAgaW50IHNpemUgPSBzdGQ6Om1heChzdHlsZS5mb250U2l6ZSgpLCAxMCk7CisgICAg
c3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRIZWlnaHQoeyBz
aXplLCBGaXhlZCB9KTsKIH0KIAogc3RhdGljIENHUG9pbnQgc2hvcnRlbmVkKENHUG9pbnQgc3Rh
cnQsIENHUG9pbnQgZW5kLCBmbG9hdCB3aWR0aCkKQEAgLTQ0OCwxMCArNDQ3LDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVJT1M6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEJvcmRlckRhdGEmCiB7CiAgICAgLy8gQnV0dG9ucyBhbmQgTWVudWxpc3RCdXR0b25z
IGFyZSBzdHlsZWQgaWYgdGhleSBjb250YWluIGEgYmFja2dyb3VuZCBpbWFnZS4KICAgICBpZiAo
c3R5bGUuYXBwZWFyYW5jZSgpID09IFB1c2hCdXR0b25QYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2Uo
KSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpCi0gICAgICAgIHJldHVybiAhc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5hbHBoYSgpIHx8IHN0eWxl
LmJhY2tncm91bmRMYXllcnMoKS0+aGFzSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICFzdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmlzaWJs
ZSgpIHx8IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKS5oYXNJbWFnZSgpOwogCiAgICAgaWYgKHN0
eWxlLmFwcGVhcmFuY2UoKSA9PSBUZXh0RmllbGRQYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9
PSBUZXh0QXJlYVBhcnQpCi0gICAgICAgIHJldHVybiAqc3R5bGUuYmFja2dyb3VuZExheWVycygp
ICE9IGJhY2tncm91bmQ7CisgICAgICAgIHJldHVybiBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkg
IT0gYmFja2dyb3VuZDsKIAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVk
KHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJhY2tncm91bmRDb2xvcik7CiB9CkBAIC00NjEs
MTAgKzQ2MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxl
UmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0CiAgICAgaWYgKCFzdHlsZS53aWR0
aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMZW5ndGggbGVuZ3RoID0gTGVuZ3RoKHN0YXRpY19jYXN0PGlu
dD4oY2VpbGYoc3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwgMTApKSksIEZpeGVkKTsKLSAgICBz
dHlsZS5zZXRXaWR0aChsZW5ndGgpOwotICAgIHN0eWxlLnNldEhlaWdodChsZW5ndGgpOwotICAg
IHN0eWxlLnNldEJvcmRlclJhZGl1cyhJbnRTaXplKGxlbmd0aC52YWx1ZSgpIC8gMi4wZiwgbGVu
Z3RoLnZhbHVlKCkgLyAyLjBmKSk7CisgICAgaW50IHNpemUgPSBzdGQ6Om1heChzdHlsZS5mb250
U2l6ZSgpLCAxMCk7CisgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBz
dHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKKyAgICBzdHlsZS5zZXRCb3JkZXJSYWRp
dXMoeyBzaXplIC8gMiwgc2l6ZSAvIDIgfSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MzgsMTMgKzUzNywxMSBA
QCBMZW5ndGhCb3ggUmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkgY29ucwogCiB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RS
b3VuZEJvcmRlclJhZGl1cyhSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlckJveCYgYm94KQogewot
ICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTm9Db250cm9sUGFydCB8fCBzdHlsZS5iYWNr
Z3JvdW5kTGF5ZXJzKCktPmhhc0ltYWdlKCkpCisgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9
PSBOb0NvbnRyb2xQYXJ0IHx8IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKS5oYXNJbWFnZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSByZWx5aW5n
IG9uIGJvcmRlciByYWRpdXMgZm9yIHRoZSBhcHBlYXJhbmNlIG9mIG91ciBjb250cm9scyA8cmRh
cjovL3Byb2JsZW0vNzY3NTQ5Mz4KLSAgICBMZW5ndGggcmFkaXVzV2lkdGgoc3RhdGljX2Nhc3Q8
aW50PihzdGQ6Om1pbihib3gud2lkdGgoKSwgYm94LmhlaWdodCgpKSAvIDIuMCksIEZpeGVkKTsK
LSAgICBMZW5ndGggcmFkaXVzSGVpZ2h0KHN0YXRpY19jYXN0PGludD4oYm94LmhlaWdodCgpIC8g
Mi4wKSwgRml4ZWQpOwotICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKHJhZGl1
c1dpZHRoLCByYWRpdXNIZWlnaHQpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSBy
ZWx5aW5nIG9uIGJvcmRlciByYWRpdXMgZm9yIHRoZSBhcHBlYXJhbmNlIG9mIG91ciBjb250cm9s
cyA8cmRhcjovL3Byb2JsZW0vNzY3NTQ5Mz4uCisgICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsg
eyBzdGQ6Om1pbihib3gud2lkdGgoKSwgYm94LmhlaWdodCgpKSAvIDIsIEZpeGVkIH0sIHsgYm94
LmhlaWdodCgpIC8gMiwgRml4ZWQgfSB9KTsKIH0KIAogc3RhdGljIHZvaWQgYXBwbHlDb21tb25C
dXR0b25QYWRkaW5nVG9TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCkBAIC02NTUsMTEgKzY1MiwxMSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1czsKIAogICAgICAgICBpZiAoaXNSVEwpIHsK
LSAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxl
LmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRS
YWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgp
KTsKLSAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgp
KSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3Jk
ZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qu
d2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJv
cmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNp
emUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwg
cmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0g
c3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB0b3BMZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAg
IGJvdHRvbUxlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygp
LmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwor
ICAgICAgICAgICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3Jk
ZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygp
LmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKKyAgICAg
ICAgICAgIGJvdHRvbUxlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHRpdGxlQ2xpcCwKQEAgLTY5MiwxMSArNjg5LDExIEBAIGJvb2wg
UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgRmxvYXRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzOwog
CiAgICAgICAgIGlmIChpc1JUTCkgewotICAgICAgICAgICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0
U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwg
cmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChz
dHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxv
YXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0
aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQo
KSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcExlZnRSYWRp
dXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygp
LndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkp
IC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CisgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVz
ID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZv
ckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdo
dCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgdG9wUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1
cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwot
ICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0g
c3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJv
dHRvbVdpZHRoKCkpOworICAgICAgICAgICAgdG9wUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUodmFs
dWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0
aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9y
ZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVy
VG9wV2lkdGgoKSk7CisgICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZSh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoLCByZWN0
LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHls
ZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKQEAg
LTc1OCwxMCArNzU1LDkgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2xpZGVyVHJhY2tT
dHlsZShTdHlsZVJlc29sdmVyJiBzZWxlY3RvciwgUmVuZGVyU3R5bGUKIHsKICAgICBSZW5kZXJU
aGVtZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwog
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUgcmVseWluZyBvbiBib3JkZXIgcmFkaXVz
IGZvciB0aGUgYXBwZWFyYW5jZSBvZiBvdXIgY29udHJvbHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0
OTM+Ci0gICAgTGVuZ3RoIHJhZGl1c1dpZHRoKHN0YXRpY19jYXN0PGludD4oa1RyYWNrUmFkaXVz
KSwgRml4ZWQpOwotICAgIExlbmd0aCByYWRpdXNIZWlnaHQoc3RhdGljX2Nhc3Q8aW50PihrVHJh
Y2tSYWRpdXMpLCBGaXhlZCk7Ci0gICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUo
cmFkaXVzV2lkdGgsIHJhZGl1c0hlaWdodCkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90
IGJlIHJlbHlpbmcgb24gYm9yZGVyIHJhZGl1cyBmb3IgdGhlIGFwcGVhcmFuY2Ugb2Ygb3VyIGNv
bnRyb2xzIDxyZGFyOi8vcHJvYmxlbS83Njc1NDkzPi4KKyAgICBpbnQgcmFkaXVzID0gc3RhdGlj
X2Nhc3Q8aW50PihrVHJhY2tSYWRpdXMpOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsg
cmFkaXVzLCBGaXhlZCB9LCB7IHJhZGl1cywgRml4ZWQgfSB9KTsKIH0KIAogYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC04NDgsMTQgKzg0
NCwxMiBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgYwogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBFbmZvcmNlICJib3JkZXItcmFkaXVzOiA1MCUiLgotICAgIExlbmd0aCBsZW5ndGgoNTAuMGYs
IFBlcmNlbnQpOwotICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKGxlbmd0aCwg
bGVuZ3RoKSk7CisgICAgc3R5bGUuc2V0Qm9yZGVyUmFkaXVzKHsgeyA1MCwgUGVyY2VudCB9LCB7
IDUwLCBQZXJjZW50IH0gfSk7CiAKICAgICAvLyBFbmZvcmNlIGEgMTZ4MTYgc2l6ZSBpZiBubyBz
aXplIGlzIHByb3ZpZGVkLgogICAgIGlmIChzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRv
KCkgfHwgc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgTGVuZ3RoIGxlbmd0aCA9
IExlbmd0aChrRGVmYXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQpOwotICAgICAgICBzdHlsZS5z
ZXRXaWR0aChsZW5ndGgpOwotICAgICAgICBzdHlsZS5zZXRIZWlnaHQobGVuZ3RoKTsKKyAgICAg
ICAgc3R5bGUuc2V0V2lkdGgoeyBrRGVmYXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQgfSk7Cisg
ICAgICAgIHN0eWxlLnNldEhlaWdodCh7IGtEZWZhdWx0U2xpZGVyVGh1bWJTaXplLCBGaXhlZCB9
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
aW5kZXggMzczOTVlNDM2NjY3YTIxNWFhYjZlNzYzMDU4ZDQ3Y2I4MjZkNzQwZC4uNjIzYTZjNzk0
Yjk2MTBlMzJhOWIzNmNiNTY5ODdjMmYwNjVjNDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTUyLDI5ICs1MiwyNyBAQCBXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYgV2lkZ2V0SGllcmFyY2h5
VXBkYXRlcwogCiB2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1v
dmVXaWRnZXRzKCkKIHsKLSAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXA7Ci0gICAgd2lkZ2V0TmV3
UGFyZW50TWFwKCkuc3dhcChtYXApOwotICAgIFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBl
bmQgPSBtYXAuZW5kKCk7Ci0gICAgZm9yIChXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgaXQg
PSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdpZGdldCogY2hpbGQg
PSBpdC0+a2V5LmdldCgpOwotICAgICAgICBTY3JvbGxWaWV3KiBjdXJyZW50UGFyZW50ID0gY2hp
bGQtPnBhcmVudCgpOwotICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGl0LT52YWx1ZTsK
KyAgICBhdXRvIG1hcCA9IFdURk1vdmUod2lkZ2V0TmV3UGFyZW50TWFwKCkpOworICAgIGZvciAo
YXV0byYgZW50cnkgOiBtYXApIHsKKyAgICAgICAgYXV0byYgY2hpbGQgPSAqZW50cnkua2V5Owor
ICAgICAgICBhdXRvKiBjdXJyZW50UGFyZW50ID0gY2hpbGQucGFyZW50KCk7CisgICAgICAgIGF1
dG8qIG5ld1BhcmVudCA9IGVudHJ5LnZhbHVlOwogICAgICAgICBpZiAobmV3UGFyZW50ICE9IGN1
cnJlbnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50KQotICAgICAgICAg
ICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKCpjaGlsZCk7CisgICAgICAgICAgICAg
ICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgaWYgKG5l
d1BhcmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihX
aWRnZXQqIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKK3N0YXRpYyB2b2lkIG1vdmVXaWRnZXRU
b1BhcmVudFNvb24oV2lkZ2V0JiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCiB7CiAgICAgaWYg
KCFXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjppc1N1c3BlbmRlZCgpKSB7
CiAgICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxk
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21QYXJlbnQoKTsK
KyAgICAgICAgICAgIGNoaWxkLnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpzY2hlZHVs
ZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKQEAgLTE2Nyw3ICsxNjUsNyBAQCB2b2lkIFJl
bmRlcldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0cjxXaWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV93aWRnZXQpIHsKLSAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50
U29vbihtX3dpZGdldC5nZXQoKSwgMCk7CisgICAgICAgIG1vdmVXaWRnZXRUb1BhcmVudFNvb24o
Km1fd2lkZ2V0LCBudWxscHRyKTsKICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLndpbGxSZW1v
dmVXaWRnZXRGcm9tUmVuZGVyVHJlZSgqbV93aWRnZXQpOwogICAgICAgICB3aWRnZXRSZW5kZXJl
ck1hcCgpLnJlbW92ZShtX3dpZGdldC5nZXQoKSk7CiAgICAgICAgIG1fd2lkZ2V0ID0gbnVsbHB0
cjsKQEAgLTE5Myw3ICsxOTEsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFJlZlB0
cjxXaWRnZXQ+JiYgd2lkZ2V0KQogICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKG1fd2lkZ2V0
LmdldCgpLCAmdmlldygpLmZyYW1lVmlldygpKTsKKyAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50
U29vbigqbV93aWRnZXQsICZ2aWV3KCkuZnJhbWVWaWV3KCkpOwogICAgIH0KIH0KIApAQCAtMzM4
LDkgKzMzNiw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rp
b25TdGF0ZSBzdGF0ZSkKICAgICAgICAgbV93aWRnZXQtPnNldElzU2VsZWN0ZWQoaXNTZWxlY3Rl
ZCgpKTsKIH0KIAotUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lkZ2V0
KiB3aWRnZXQpCitSZW5kZXJXaWRnZXQqIFJlbmRlcldpZGdldDo6ZmluZChjb25zdCBXaWRnZXQm
IHdpZGdldCkKIHsKLSAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQod2lkZ2V0KTsK
KyAgICByZXR1cm4gd2lkZ2V0UmVuZGVyZXJNYXAoKS5nZXQoJndpZGdldCk7CiB9CiAKIGJvb2wg
UmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXgg
NmUwMTFkNzM5ZTUzYzZkYTliMTFhN2RhODZkOGVkY2VjM2U0NDk3Yi4uYzZhOWJjNWY5MzVjMzM5
NDgwODcyYTExZjM2MDc5ODBlYjRiYTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaApAQCAtNDQsMTQgKzQ0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0
aWMgYm9vbCBpc1N1c3BlbmRlZCgpIHsgcmV0dXJuIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3Vz
cGVuZENvdW50OyB9Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01vdmUoV2lkZ2V0
KiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0KHdp
ZGdldCwgZnJhbWUpOyB9CisgICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01vdmUoV2lk
Z2V0JiB3aWRnZXQsIEZyYW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0
KCZ3aWRnZXQsIGZyYW1lKTsgfQogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7CisgICAgdXNpbmcgV2lk
Z2V0VG9QYXJlbnRNYXAgPSBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+LCBGcmFtZVZpZXcqPjsKICAg
ICBzdGF0aWMgV2lkZ2V0VG9QYXJlbnRNYXAmIHdpZGdldE5ld1BhcmVudE1hcCgpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHVuc2lnbmVkIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50OwogfTsK
ICAgICAKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV93aWRnZXQuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmKTsKIAotICAgIHN0YXRpYyBSZW5kZXJXaWRnZXQqIGZp
bmQoY29uc3QgV2lkZ2V0Kik7CisgICAgc3RhdGljIFJlbmRlcldpZGdldCogZmluZChjb25zdCBX
aWRnZXQmKTsKIAogICAgIGVudW0gY2xhc3MgQ2hpbGRXaWRnZXRTdGF0ZSB7IFZhbGlkLCBEZXN0
cm95ZWQgfTsKICAgICBDaGlsZFdpZGdldFN0YXRlIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCkgV0FS
Tl9VTlVTRURfUkVUVVJOOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Npemlu
Zy5jcHAKaW5kZXggMWE1OWY2NTU3NDg5ZDA3N2Y0YmJkYmYyOGE4ZGZiOGI0NmU3YTI0Yy4uYWFm
NzFjYjc5ZmMxNjA4ZmRiMGY0YTc4M2I5NmM4YTExZDRiYjE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBU
ZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RUZXh0Tm9kZVNpemVzKCkgLT4gU3RpbGxIYXNOb2Rl
cwogCiAgICAgICAgIC8vIFJlc2l6ZSB0aGUgbGluZSBoZWlnaHQgb2YgdGhlIHBhcmVudC4KICAg
ICAgICAgYXV0byYgcGFyZW50U3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKLSAgICAg
ICAgTGVuZ3RoIGxpbmVIZWlnaHRMZW5ndGggPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVp
Z2h0KCk7CisgICAgICAgIGF1dG8mIGxpbmVIZWlnaHRMZW5ndGggPSBwYXJlbnRTdHlsZS5zcGVj
aWZpZWRMaW5lSGVpZ2h0KCk7CiAKICAgICAgICAgaW50IHNwZWNpZmllZExpbmVIZWlnaHQ7CiAg
ICAgICAgIGlmIChsaW5lSGVpZ2h0TGVuZ3RoLmlzUGVyY2VudCgpKQpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIGF1dG8gVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4dE5vZGVTaXplcygpIC0+IFN0
aWxsSGFzTm9kZXMKIAogICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJT
dHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldExp
bmVIZWlnaHQoTGVuZ3RoKGxpbmVIZWlnaHQsIEZpeGVkKSk7Ci0gICAgICAgIG5ld1BhcmVudFN0
eWxlLnNldFNwZWNpZmllZExpbmVIZWlnaHQobGluZUhlaWdodExlbmd0aCk7CisgICAgICAgIG5l
d1BhcmVudFN0eWxlLnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHsgbGluZUhlaWdodExl
bmd0aCB9KTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbik7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRl
KCZub2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgcGFyZW50UmVuZGVy
ZXItPnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKQEAgLTE4OCwxMiArMTg4LDEy
IEBAIHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQoKQogICAgICAgICAgICAgcGFyZW50
UmVuZGVyZXIgPSBwYXJlbnRSZW5kZXJlci0+cGFyZW50KCk7CiAKICAgICAgICAgYXV0byYgcGFy
ZW50U3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgTGVuZ3RoIG9yaWdp
bmFsTGluZUhlaWdodCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVIZWlnaHQoKTsKKyAgICAg
ICAgYXV0byYgb3JpZ2luYWxMaW5lSGVpZ2h0ID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhl
aWdodCgpOwogICAgICAgICBpZiAob3JpZ2luYWxMaW5lSGVpZ2h0ID09IHBhcmVudFN0eWxlLmxp
bmVIZWlnaHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gbmV3UGFy
ZW50U3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHBhcmVudFN0eWxlKTsKLSAgICAg
ICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChvcmlnaW5hbExpbmVIZWlnaHQpOworICAg
ICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IG9yaWdpbmFsTGluZUhl
aWdodCB9KTsKICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbik7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRl
KCZub2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgcGFyZW50UmVuZGVy
ZXItPnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggY2E0NmMyZWJjZDAyZmRl
MzRlNWU2YzBiZjBiZDhiNzJhMDRhMmUwNC4uNjE2MmFjYmI5M2Y3M2ViNWY5OTU3M2JkMTVkYzFj
NjMzZDExMzE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9N
YXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHAKQEAgLTQ5LDE0ICs0OSwxMSBAQCBSZWY8TWF0aE1MU3R5bGU+IE1hdGhNTFN0
eWxlOjpjcmVhdGUoKQogCiBjb25zdCBNYXRoTUxTdHlsZSogTWF0aE1MU3R5bGU6OmdldE1hdGhN
TFN0eWxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBSZW5kZXJNYXRoTUxUYWJsZSBkZXJpdmUg
ZnJvbSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGlzPwotICAgICAg
ICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpLT5tYXRoTUxTdHlsZSgpOwot
ICAgICAgICBpZiAoaXM8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKSkKLSAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpLT5tYXRoTUxTdHls
ZSgpOwotICAgIH0KLQorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBSZW5kZXJNYXRoTUxU
YWJsZSBkZXJpdmUgZnJvbSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRlciB0byBzaW1wbGlmeSB0
aGlzPworICAgIGlmIChpczxSZW5kZXJNYXRoTUxUYWJsZT4ocmVuZGVyZXIpKQorICAgICAgICBy
ZXR1cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPigqcmVuZGVyZXIpLm1hdGhNTFN0eWxl
KCk7CisgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlcikpCisgICAgICAgIHJl
dHVybiAmZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpyZW5kZXJlcikubWF0aE1MU3R5bGUo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNjUsOSArNjIsOSBAQCB2b2lkIE1hdGhN
TFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAg
ICAgZm9yIChhdXRvKiBjaGlsZCA9IHJlbmRlcmVyOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dEluUHJlT3JkZXIocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgbWFr
ZSBSZW5kZXJNYXRoTUxUYWJsZSBkZXJpdmUgZnJvbSBSZW5kZXJNYXRoTUxCbG9jayBpbiBvcmRl
ciB0byBzaW1wbGlmeSB0aGlzPwogICAgICAgICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KGNo
aWxkKSkKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhNTFRhYmxlPihjaGlsZCktPm1h
dGhNTFN0eWxlKCktPnJlc29sdmVNYXRoTUxTdHlsZShjaGlsZCk7CisgICAgICAgICAgICBkb3du
Y2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4oKmNoaWxkKS5tYXRoTUxTdHlsZSgpLnJlc29sdmVNYXRo
TUxTdHlsZShjaGlsZCk7CiAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihj
aGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oY2hpbGQpLT5t
YXRoTUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOworICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpjaGlsZCkubWF0aE1MU3R5bGUoKS5yZXNvbHZlTWF0
aE1MU3R5bGUoY2hpbGQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IGJiMTQyYTI1NDIwYTNhNmJj
ZTE0YzE1NGJkZTkzMjMzNjM0MzRlMTIuLjYxYTEyY2E0ODdmM2E1YmJjNTU0ZGVlMGM4M2FmNjQ1
YTYyMWRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1h
dGhNTEJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
TWF0aE1MQmxvY2soKTsKIAotICAgIE1hdGhNTFN0eWxlKiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8TWF0aE1MU3R5bGUqPigmbV9tYXRoTUxTdHlsZS5nZXQoKSk7IH0K
KyAgICBNYXRoTUxTdHlsZSYgbWF0aE1MU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX21hdGhNTFN0
eWxlOyB9CiAKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAKLSAgICBNYXRoTUxTdHlsZSogbWF0aE1MU3R5bGUoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0aE1MU3R5bGUuZ2V0KCkpOyB9
CisgICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9tYXRoTUxT
dHlsZTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggMzVlNDQxNDVmN2Y4
NjJjMDhiZDA0ZTIxN2VkNWZkMGRlNjMwYzEwOC4uYTIwYmQxMjJkODhjZTBmMDhkNzQ1NzdlZTc5
ODVhMDNhNTk4OTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUmVuZGVy
TWF0aE1MRnJhY3Rpb246OkZyYWN0aW9uUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6
ZnJhY3Rpb25QYXJhbWV0ZXIKICAgICAvLyBXZSB0cnkgYW5kIHJlYWQgY29uc3RhbnRzIHRvIGRy
YXcgdGhlIGZyYWN0aW9uIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5kIHVzZSBmYWxsYmFjayB2
YWx1ZXMgb3RoZXJ3aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0byogbWF0aERhdGEgPSBz
dHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpOwotICAgIGJvb2wg
ZGlzcGxheSA9IG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOworICAgIGJvb2wgZGlzcGxh
eSA9IG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYgKG1hdGhEYXRhKSB7CiAg
ICAgICAgIHBhcmFtZXRlcnMubnVtZXJhdG9yR2FwTWluID0gbWF0aERhdGEtPmdldE1hdGhDb25z
dGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uTnVt
RGlzcGxheVN0eWxlR2FwTWluIDogT3BlblR5cGVNYXRoRGF0YTo6RnJhY3Rpb25OdW1lcmF0b3JH
YXBNaW4pOwogICAgICAgICBwYXJhbWV0ZXJzLmRlbm9taW5hdG9yR2FwTWluID0gbWF0aERhdGEt
PmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlzcGxheSA/IE9wZW5UeXBlTWF0aERhdGE6
OkZyYWN0aW9uRGVub21EaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVuVHlwZU1hdGhEYXRhOjpGcmFj
dGlvbkRlbm9taW5hdG9yR2FwTWluKTsKQEAgLTExNiw3ICsxMTYsNyBAQCBSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6U3RhY2tQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpzdGFja1BhcmFt
ZXRlcnMoKQogICAgIC8vIFdlIHRyeSBhbmQgcmVhZCBjb25zdGFudHMgdG8gZHJhdyB0aGUgc3Rh
Y2sgZnJvbSB0aGUgT3BlblR5cGUgTUFUSCBhbmQgdXNlIGZhbGxiYWNrIHZhbHVlcyBvdGhlcndp
c2UuCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCku
cHJpbWFyeUZvbnQoKTsKICAgICBjb25zdCBhdXRvKiBtYXRoRGF0YSA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKS5wcmltYXJ5Rm9udCgpLm1hdGhEYXRhKCk7Ci0gICAgYm9vbCBkaXNwbGF5ID0gbWF0
aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCk7CisgICAgYm9vbCBkaXNwbGF5ID0gbWF0aE1MU3R5
bGUoKS5kaXNwbGF5U3R5bGUoKTsKICAgICBpZiAobWF0aERhdGEpIHsKICAgICAgICAgcGFyYW1l
dGVycy5nYXBNaW4gPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNw
bGF5ID8gT3BlblR5cGVNYXRoRGF0YTo6U3RhY2tEaXNwbGF5U3R5bGVHYXBNaW4gOiBPcGVuVHlw
ZU1hdGhEYXRhOjpTdGFja0dhcE1pbik7CiAgICAgICAgIHBhcmFtZXRlcnMudG9wU2hpZnRVcCA9
IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlw
ZU1hdGhEYXRhOjpTdGFja1RvcERpc3BsYXlTdHlsZVNoaWZ0VXAgOiBPcGVuVHlwZU1hdGhEYXRh
OjpTdGFja1RvcFNoaWZ0VXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGUyMTJlOWJmNzM0YWQyNTVmMDZl
NjkwZWMyNWUxNzg1YTkyOTllMDUuLjAyZmQ0NGU1NTQ0ZTlmNzIyMTI2NzNlOTE2ZGQ2NWI4MTQz
YmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTQ4LDggKzQ4LDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVzZXRTdHJldGNoU2l6ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc09wZXJhdG9yRmxhZyhN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpIGNvbnN0OwotICAgIGJvb2wgaXNMYXJnZU9w
ZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JGbGFnKE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxhZyhNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYmIG1hdGhNTFN0eWxlKCktPmRpc3BsYXlT
dHlsZSgpOyB9Ci0gICAgYm9vbCBzaG91bGRNb3ZlTGltaXRzKCkgY29uc3QgeyByZXR1cm4gaGFz
T3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6TW92YWJsZUxpbWl0cykgJiYg
IW1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOyB9CisgICAgYm9vbCBpc0xhcmdlT3BlcmF0
b3JJbkRpc3BsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICFoYXNPcGVyYXRvckZsYWcoTWF0aE1M
T3BlcmF0b3JEaWN0aW9uYXJ5OjpTdHJldGNoeSkgJiYgaGFzT3BlcmF0b3JGbGFnKE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6TGFyZ2VPcCkgJiYgbWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUo
KTsgfQorICAgIGJvb2wgc2hvdWxkTW92ZUxpbWl0cygpIGNvbnN0IHsgcmV0dXJuIGhhc09wZXJh
dG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6Ok1vdmFibGVMaW1pdHMpICYmICFtYXRo
TUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmVydGljYWwo
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGl0YWxpY0NvcnJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX21hdGhPcGVyYXRvci5pdGFsaWNDb3JyZWN0aW9uKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggMWE2
NmVjODdlNmQ5MzQzYmY1Y2E1NTliOTc4MGE5MDJmN2YxNGUyMi4uM2Q3NTdhN2E4NTZhY2I2MWYw
ZTZmODIzZDk2YTk5ODk1Mjk1YTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVu
ZGVyTWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1hdGhNTFJvb3Q6OnZlcnRp
Y2FsUGFyYW1ldGVycygpCiAgICAgY29uc3QgYXV0byYgcHJpbWFyeUZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKTsKICAgICBpZiAoYXV0byogbWF0aERhdGEgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CiAgICAgICAgIHBh
cmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFy
eUZvbnQsIE9wZW5UeXBlTWF0aERhdGE6OlJhZGljYWxSdWxlVGhpY2tuZXNzKTsKLSAgICAgICAg
cGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFy
eUZvbnQsIG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6
UmFkaWNhbERpc3BsYXlTdHlsZVZlcnRpY2FsR2FwIDogT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNh
bFZlcnRpY2FsR2FwKTsKKyAgICAgICAgcGFyYW1ldGVycy52ZXJ0aWNhbEdhcCA9IG1hdGhEYXRh
LT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxl
KCkgPyBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRGlzcGxheVN0eWxlVmVydGljYWxHYXAgOiBP
cGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsVmVydGljYWxHYXApOwogICAgICAgICBwYXJhbWV0ZXJz
LmV4dHJhQXNjZW5kZXIgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBP
cGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsRXh0cmFBc2NlbmRlcik7CiAgICAgICAgIGlmIChtX2tp
bmQgPT0gUm9vdFdpdGhJbmRleCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMuZGVncmVlQm90dG9t
UmFpc2VQZXJjZW50ID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgT3Bl
blR5cGVNYXRoRGF0YTo6UmFkaWNhbERlZ3JlZUJvdHRvbVJhaXNlUGVyY2VudCk7CkBAIC0xMzEs
NyArMTMxLDcgQEAgUmVuZGVyTWF0aE1MUm9vdDo6VmVydGljYWxQYXJhbWV0ZXJzIFJlbmRlck1h
dGhNTFJvb3Q6OnZlcnRpY2FsUGFyYW1ldGVycygpCiAgICAgICAgIC8vIFJhZGljYWxFeHRyYUFz
Y2VuZGVyOiBTdWdnZXN0ZWQgdmFsdWUgaXMgUmFkaWNhbFJ1bGVUaGlja25lc3MuCiAgICAgICAg
IC8vIFJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQ6IFN1Z2dlc3RlZCB2YWx1ZSBpcyA2
MCUuCiAgICAgICAgIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyA9IHJ1bGVUaGlja25lc3NGYWxs
YmFjaygpOwotICAgICAgICBpZiAobWF0aE1MU3R5bGUoKS0+ZGlzcGxheVN0eWxlKCkpCisgICAg
ICAgIGlmIChtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpKQogICAgICAgICAgICAgcGFyYW1l
dGVycy52ZXJ0aWNhbEdhcCA9IHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyArIHN0eWxlKCkuZm9u
dE1ldHJpY3MoKS54SGVpZ2h0KCkgLyA0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJh
bWV0ZXJzLnZlcnRpY2FsR2FwID0gNSAqIHBhcmFtZXRlcnMucnVsZVRoaWNrbmVzcyAvIDQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9r
ZW4uY3BwCmluZGV4IDU1NWJkNjhkNjUxYjVmOGFmMDUxZjAxNWQzZWFmYzc3ZTA2OGYzOTEuLmE1
YzRjMWMwZDBjNWQ5YWU2MGZlMTEyMDg0ZjY4NGE2NzE5YWY4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01
MjgsNyArNTI4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRH
bHlwaCgpCiAKICAgICBjb25zdCBhdXRvJiB0b2tlbkVsZW1lbnQgPSBlbGVtZW50KCk7CiAgICAg
aWYgKGF1dG8gY29kZVBvaW50ID0gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVD
b2RlUG9pbnQoZWxlbWVudCgpLnRleHRDb250ZW50KCkpKSB7Ci0gICAgICAgIE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0aE1MU3R5bGUoKS0+bWF0aFZhcmlhbnQo
KTsKKyAgICAgICAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgbWF0aHZhcmlhbnQgPSBtYXRo
TUxTdHlsZSgpLm1hdGhWYXJpYW50KCk7CiAgICAgICAgIGlmIChtYXRodmFyaWFudCA9PSBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9uZSkKICAgICAgICAgICAgIG1hdGh2YXJpYW50ID0g
dG9rZW5FbGVtZW50Lmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKSA/IE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50OjpJdGFsaWMgOiBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudDo6Tm9y
bWFsOwogICAgICAgICBVQ2hhcjMyIHRyYW5zZm9ybWVkQ29kZVBvaW50ID0gbWF0aFZhcmlhbnQo
Y29kZVBvaW50LnZhbHVlKCksIG1hdGh2YXJpYW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDI5MGM2ZDg1ZDBlZTMyZDUwNjM3MzUy
NmI5MDZiNDg2ZmQ4MzM1OTAuLjA2YjNlMDkwZWE5N2JhZWQxNTAxMTc0OTExNzcyMmJlMWY3Mjlh
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cApAQCAtMzg3LDggKzM4Nyw4IEBAIGJvb2wgQmFzaWNTaGFwZUluc2V0OjpvcGVyYXRvcj09KGNv
bnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAogCiBzdGF0aWMgRmxvYXRTaXplIGZsb2F0U2l6
ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCkKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JM
ZW5ndGgobGVuZ3RoU2l6ZS53aWR0aCgpLCBib3VuZGluZ0JveC53aWR0aCgpKSwKLSAgICAgICAg
ZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXplLmhlaWdodCgpLCBib3VuZGluZ0JveC5oZWln
aHQoKSkpOworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS53aWR0
aCwgYm91bmRpbmdCb3gud2lkdGgoKSksCisgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVu
Z3RoU2l6ZS5oZWlnaHQsIGJvdW5kaW5nQm94LmhlaWdodCgpKSB9OwogfQogCiBjb25zdCBQYXRo
JiBCYXNpY1NoYXBlSW5zZXQ6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDI5NGZiODJh
MDRlZGY0Y2EyOTFiODJjODNkMTllZDBjMDZmMjBhMWQuLjA2YmNjOTlmOGIwZjE5ZGNhNGJkMjcy
NjUxZGFjMzJiYjdkZDU1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Cb3JkZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jv
cmRlckRhdGEuaApAQCAtMzQsMTAgKzM0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJvcmRlckRhdGEgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgotICAgIEJv
cmRlckRhdGEoKSA6IG1fdG9wTGVmdChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQp
KQotICAgICAgICAgICAgICAgICAsIG1fdG9wUmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3Ro
KDAsIEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX2JvdHRvbUxlZnQoTGVuZ3RoKDAsIEZp
eGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSkKLSAgICAgICAgICAgICAgICAgLCBtX2JvdHRvbVJpZ2h0
KExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCisgICAgQm9yZGVyRGF0YSgpCisg
ICAgICAgIDogbV90b3BMZWZ0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQorICAgICAg
ICAsIG1fdG9wUmlnaHQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CisgICAgICAgICwg
bV9ib3R0b21MZWZ0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQorICAgICAgICAsIG1f
Ym90dG9tUmlnaHQgeyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9CiAgICAgewogICAgIH0K
ICAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0CkBAIC01OSwxNSArNjAsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
ICghbV90b3BMZWZ0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKS5pc1plcm8oKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lk
dGgoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiAhbV90b3BMZWZ0LndpZHRoLmlzWmVybygpCisgICAgICAg
ICAgICB8fCAhbV90b3BSaWdodC53aWR0aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fYm90
dG9tTGVmdC53aWR0aC5pc1plcm8oKQorICAgICAgICAgICAgfHwgIW1fYm90dG9tUmlnaHQud2lk
dGguaXNaZXJvKCk7CiAgICAgfQogICAgIAogICAgIGZsb2F0IGJvcmRlckxlZnRXaWR0aCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcApp
bmRleCAwYmQwZDcwNjExYWMxYzFmMGM0MzEzMGI0MDMxYmJkZDI0ZWZjMzlmLi5jNmMwMjI0YmNk
YjhhODdlNWU1YzIzMTA5YTVlMWRmZWM5N2E0Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKQEAgLTM4LDggKzM4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnREYXRhPiBDb250ZW50RGF0YTo6Y2xvbmUoKSBjb25zdAogICAgIGF1dG8g
cmVzdWx0ID0gY2xvbmVJbnRlcm5hbCgpOwogICAgIGF1dG8qIGxhc3ROZXdEYXRhID0gcmVzdWx0
LmdldCgpOwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBuZXh0KCk7IGNvbnRlbnREYXRh
OyBjb250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKLSAgICAgICAgYXV0byBuZXdE
YXRhID0gY29udGVudERhdGEtPmNsb25lSW50ZXJuYWwoKTsKLSAgICAgICAgbGFzdE5ld0RhdGEt
PnNldE5leHQoV1RGTW92ZShuZXdEYXRhKSk7CisgICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0
KGNvbnRlbnREYXRhLT5jbG9uZUludGVybmFsKCkpOwogICAgICAgICBsYXN0TmV3RGF0YSA9IGxh
c3ROZXdEYXRhLT5uZXh0KCk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IDE2ZDY1NTc2MGRlNzUy
Y2YxNjJhMzZlNTBjYjAzNTY3NmQ3ZGQyOTIuLjllOTdjMDIzNWMzZGZlZDVkYzg0OTVmYmY3YTY5
NjAxMDQ2YjhlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50
RGF0YS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlbmRl
clB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRE
YXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29udGVudERhdGE+KHRleHQoKSk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAppbmRleCAzZjkzYTU3ZWY1
ODI2MWRmYWEyY2VmZGY2ZGE5YjJhOWIzOWYyMzljLi5mNTQyZDZjMmExNmZjZjc4YjE2NmVhMjll
ZWQwZmQ4YjRjZjBmMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRGF0YVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmgKQEAgLTEsOCArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwzMCAr
MjYsNjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRGF0YVJlZiB7CiBwdWJsaWM6Ci0gICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6
IG1fZGF0YShjb25zdF9jYXN0PFQmPihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KLSAgICBEYXRh
UmVmJiBvcGVyYXRvcj0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2Fz
dDxUJj4ob3RoZXIubV9kYXRhLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgRGF0YVJlZihS
ZWY8VD4mJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgIHsKKyAg
ICB9CiAKLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
KyAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKQorICAgICAgICA6IG1fZGF0YShvdGhl
ci5tX2RhdGEuY29weVJlZigpKQorICAgIHsKKyAgICB9CisKKyAgICBEYXRhUmVmJiBvcGVyYXRv
cj0oY29uc3QgRGF0YVJlZiYgb3RoZXIpCisgICAgeworICAgICAgICBtX2RhdGEgPSBvdGhlci5t
X2RhdGEuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgY29u
c3QgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9Ci0gICAgY29uc3QgVCog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisgICAgRGF0YVJlZihEYXRhUmVm
JiYpID0gZGVmYXVsdDsKKyAgICBEYXRhUmVmJiBvcGVyYXRvcj0oRGF0YVJlZiYmKSA9IGRlZmF1
bHQ7CisKKyAgICBEYXRhUmVmIHJlcGxhY2UoRGF0YVJlZiYmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YS5yZXBsYWNlKFdURk1vdmUob3RoZXIubV9kYXRhKSk7CisgICAgfQor
CisgICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKKyAgICB9CiAKLSAgICBUKiBhY2Nlc3MoKQorICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIGNvbnN0IFQmIG9w
ZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKwor
ICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YS5wdHIoKTsKKyAgICB9CisKKyAgICBUJiBhY2Nlc3MoKQogICAgIHsKICAgICAgICAgaWYg
KCFtX2RhdGEtPmhhc09uZVJlZigpKQogICAgICAgICAgICAgbV9kYXRhID0gbV9kYXRhLT5jb3B5
KCk7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWYmIG90aGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKSA9PSBvLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEu
Z2V0KCkgPT0gby5tX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgPT0g
b3RoZXIubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9PSBvdGhlci5tX2RhdGEuZ2V0KCk7
CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmPFQ+JiBvKSBj
b25zdAorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERhdGFSZWYmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5wdHIoKSAhPSBvLm1fZGF0YS5wdHIoKSAmJiBt
X2RhdGEuZ2V0KCkgIT0gby5tX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwCmluZGV4IDc2NTIzODA1YTI1Yzk0MjZhZmUwM2MzMzkx
YzBlNzg5OThhNTFkMjYuLjk3Mjk4YWI0NDc5YTdlYTI3ZGU5ZmJlMzgyZTJiNzQ3MGI2ZjQwMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3Bw
CkBAIC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaW1pbmdGdW5jdGlv
biogS2V5ZnJhbWVWYWx1ZTo6dGltaW5nRnVuY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAogewotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBrZXlmcmFtZVN0eWxlID0gc3R5bGUo
KTsKKyAgICBhdXRvKiBrZXlmcmFtZVN0eWxlID0gc3R5bGUoKTsKICAgICBpZiAoIWtleWZyYW1l
U3R5bGUgfHwgIWtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleWZyYW1lU3R5bGUtPmFuaW1h
dGlvbnMoKS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRp
b24gPSBrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCktPmFuaW1hdGlvbihpKTsKICAgICAgICAg
aWYgKG5hbWUgPT0gYW5pbWF0aW9uLm5hbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBhbmltYXRp
b24udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb24u
dGltaW5nRnVuY3Rpb24oKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ0LDcg
KzQ0LDYgQEAgVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0aW9uKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIAogS2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVM
aXN0KCkKIHsKLSAgICBjbGVhcigpOwogfQogCiB2b2lkIEtleWZyYW1lTGlzdDo6Y2xlYXIoKQpA
QCAtNTgsMTUgKzU3LDEyIEBAIGJvb2wgS2V5ZnJhbWVMaXN0OjpvcGVyYXRvcj09KGNvbnN0IEtl
eWZyYW1lTGlzdCYgbykgY29uc3QKICAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgpICE9IG8ubV9r
ZXlmcmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBWZWN0b3I8S2V5
ZnJhbWVWYWx1ZT46OmNvbnN0X2l0ZXJhdG9yIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVnaW4oKTsK
LSAgICBmb3IgKFZlY3RvcjxLZXlmcmFtZVZhbHVlPjo6Y29uc3RfaXRlcmF0b3IgaXQxID0gbV9r
ZXlmcmFtZXMuYmVnaW4oKTsgaXQxICE9IG1fa2V5ZnJhbWVzLmVuZCgpOyArK2l0MSkgeworICAg
IGF1dG8gaXQyID0gby5tX2tleWZyYW1lcy5iZWdpbigpOworICAgIGZvciAoYXV0byBpdDEgPSBt
X2tleWZyYW1lcy5iZWdpbigpOyBpdDEgIT0gbV9rZXlmcmFtZXMuZW5kKCk7ICsraXQxLCArK2l0
MikgewogICAgICAgICBpZiAoaXQxLT5rZXkoKSAhPSBpdDItPmtleSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUxID0gKml0MS0+
c3R5bGUoKTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlMiA9ICppdDItPnN0eWxl
KCk7Ci0gICAgICAgIGlmIChzdHlsZTEgIT0gc3R5bGUyKQorICAgICAgICBpZiAoKml0MS0+c3R5
bGUoKSAhPSAqaXQyLT5zdHlsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICArK2l0MjsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IGNlODRiMTYwZjE5NzM5
ZGQ5NmI0ODFiMDQ5ZjZmZmMwM2Y1YmUwNzYuLmU4YzkyMzJjMTZlNTc5ZmYxNmZmNDM3NTY1ZTlk
ZTI2ODgwYzAyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9O
aW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmNwcApAQCAtNjAsMjAgKzYwLDIyIEBAIExheW91dFVuaXQgTmluZVBpZWNl
SW1hZ2U6OmNvbXB1dGVTbGljZShMZW5ndGggbGVuZ3RoLCBMYXlvdXRVbml0IHdpZHRoLCBMYXlv
dXRVCiAKIExheW91dEJveEV4dGVudCBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZVNsaWNlcyhjb25z
dCBMYXlvdXRTaXplJiBzaXplLCBjb25zdCBMZW5ndGhCb3gmIGxlbmd0aHMsIGludCBzY2FsZUZh
Y3RvcikKIHsKLSAgICBMYXlvdXRVbml0IHRvcCAgICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNp
emUuaGVpZ2h0KCksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aHMudG9wKCksICAgIHNpemUuaGVpZ2h0
KCkpKSAqIHNjYWxlRmFjdG9yOwotICAgIExheW91dFVuaXQgcmlnaHQgID0gc3RkOjptaW48TGF5
b3V0VW5pdD4oc2l6ZS53aWR0aCgpLCAgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5yaWdodCgpLCAg
c2l6ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3I7Ci0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBz
dGQ6Om1pbjxMYXlvdXRVbml0PihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhz
LmJvdHRvbSgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlvdXRVbml0
IGxlZnQgICA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHNpemUud2lkdGgoKSwgIHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aHMubGVmdCgpLCAgIHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yOwotICAg
IHJldHVybiBMYXlvdXRCb3hFeHRlbnQodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBy
ZXR1cm4geworICAgICAgICBzdGQ6Om1pbihzaXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChs
ZW5ndGhzLnRvcCgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2FsZUZhY3RvciwKKyAgICAgICAgc3Rk
OjptaW4oc2l6ZS53aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLnJpZ2h0KCksIHNpemUu
d2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yLAorICAgICAgICBzdGQ6Om1pbihzaXplLmhlaWdodCgp
LCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLmJvdHRvbSgpLCBzaXplLmhlaWdodCgpKSkgKiBzY2Fs
ZUZhY3RvciwKKyAgICAgICAgc3RkOjptaW4oc2l6ZS53aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChs
ZW5ndGhzLmxlZnQoKSwgc2l6ZS53aWR0aCgpKSkgICogc2NhbGVGYWN0b3IKKyAgICB9OwogfQog
CiBMYXlvdXRCb3hFeHRlbnQgTmluZVBpZWNlSW1hZ2U6OmNvbXB1dGVTbGljZXMoY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSwgY29uc3QgTGVuZ3RoQm94JiBsZW5ndGhzLCBjb25zdCBGbG9hdEJveEV4
dGVudCYgd2lkdGhzLCBjb25zdCBMYXlvdXRCb3hFeHRlbnQmIHNsaWNlcykKIHsKLSAgICBMYXlv
dXRVbml0IHRvcCAgICA9IGNvbXB1dGVTbGljZShsZW5ndGhzLnRvcCgpLCAgICB3aWR0aHMudG9w
KCksICAgIHNsaWNlcy50b3AoKSwgICAgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBy
aWdodCAgPSBjb21wdXRlU2xpY2UobGVuZ3Rocy5yaWdodCgpLCAgd2lkdGhzLnJpZ2h0KCksICBz
bGljZXMucmlnaHQoKSwgIHNpemUud2lkdGgoKSk7Ci0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBj
b21wdXRlU2xpY2UobGVuZ3Rocy5ib3R0b20oKSwgd2lkdGhzLmJvdHRvbSgpLCBzbGljZXMuYm90
dG9tKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgbGVmdCAgID0gY29tcHV0ZVNs
aWNlKGxlbmd0aHMubGVmdCgpLCAgIHdpZHRocy5sZWZ0KCksICAgc2xpY2VzLmxlZnQoKSwgICBz
aXplLndpZHRoKCkpOwotICAgIHJldHVybiBMYXlvdXRCb3hFeHRlbnQodG9wLCByaWdodCwgYm90
dG9tLCBsZWZ0KTsKKyAgICByZXR1cm4geworICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy50
b3AoKSwgd2lkdGhzLnRvcCgpLCBzbGljZXMudG9wKCksIHNpemUuaGVpZ2h0KCkpLAorICAgICAg
ICBjb21wdXRlU2xpY2UobGVuZ3Rocy5yaWdodCgpLCB3aWR0aHMucmlnaHQoKSwgc2xpY2VzLnJp
Z2h0KCksIHNpemUud2lkdGgoKSksCisgICAgICAgIGNvbXB1dGVTbGljZShsZW5ndGhzLmJvdHRv
bSgpLCB3aWR0aHMuYm90dG9tKCksIHNsaWNlcy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSksCisg
ICAgICAgIGNvbXB1dGVTbGljZShsZW5ndGhzLmxlZnQoKSwgd2lkdGhzLmxlZnQoKSwgc2xpY2Vz
LmxlZnQoKSwgc2l6ZS53aWR0aCgpKQorICAgIH07CiB9CiAKIHZvaWQgTmluZVBpZWNlSW1hZ2U6
OnNjYWxlU2xpY2VzSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgTGF5b3V0Qm94RXh0
ZW50JiBzbGljZXMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCBmYWFiYmZkNWE4NmU4MTAw
ZmQ4OTFiMGEwMDc1NjM0MzVmZjQxYTRjLi4yYjVmZTY1NTRlNzYzMWUxMmY0MzhmMWY4ZWUzMGZk
NzE4OTg4ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmlu
ZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaApAQCAtMTA4LDUzICsxMDgsNTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+aW1hZ2U7IH0KICAgICBTdHlsZUltYWdlKiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+aW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dEltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1h
Z2UgPSBXVEZNb3ZlKGltYWdlKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUmVmUHRyPFN0eWxlSW1h
Z2U+JiYgaW1hZ2UpIHsgbV9kYXRhLmFjY2VzcygpLmltYWdlID0gV1RGTW92ZShpbWFnZSk7IH0K
IAogICAgIGNvbnN0IExlbmd0aEJveCYgaW1hZ2VTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEtPmltYWdlU2xpY2VzOyB9Ci0gICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xp
Y2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0K
KyAgICB2b2lkIHNldEltYWdlU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2Vz
cygpLmltYWdlU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CiAKICAgICBib29sIGZpbGwoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEtPmZpbGw7IH0KLSAgICB2b2lkIHNldEZpbGwoYm9vbCBmaWxs
KSB7IG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IGZpbGw7IH0KKyAgICB2b2lkIHNldEZpbGwoYm9v
bCBmaWxsKSB7IG1fZGF0YS5hY2Nlc3MoKS5maWxsID0gZmlsbDsgfQogCiAgICAgY29uc3QgTGVu
Z3RoQm94JiBib3JkZXJTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmJvcmRlclNsaWNl
czsgfQotICAgIHZvaWQgc2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRh
LmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KKyAgICB2b2lkIHNl
dEJvcmRlclNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJT
bGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYgb3V0c2V0
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5vdXRzZXQ7IH0KLSAgICB2b2lkIHNldE91dHNldChM
ZW5ndGhCb3ggb3V0c2V0KSB7IG1fZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0gV1RGTW92ZShvdXRz
ZXQpOyB9CisgICAgdm9pZCBzZXRPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNj
ZXNzKCkub3V0c2V0ID0gV1RGTW92ZShvdXRzZXQpOyB9CiAKICAgICBFTmluZVBpZWNlSW1hZ2VS
dWxlIGhvcml6b250YWxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5pbmVQaWVj
ZUltYWdlUnVsZT4obV9kYXRhLT5ob3Jpem9udGFsUnVsZSk7IH0KLSAgICB2b2lkIHNldEhvcml6
b250YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCktPmhv
cml6b250YWxSdWxlID0gcnVsZTsgfQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFJ1bGUoRU5pbmVQ
aWVjZUltYWdlUnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nlc3MoKS5ob3Jpem9udGFsUnVsZSA9IHJ1
bGU7IH0KICAgICAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZlcnRpY2FsUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVOaW5lUGllY2VJbWFnZVJ1bGU+KG1fZGF0YS0+dmVydGlj
YWxSdWxlKTsgfQotICAgIHZvaWQgc2V0VmVydGljYWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUg
cnVsZSkgeyBtX2RhdGEuYWNjZXNzKCktPnZlcnRpY2FsUnVsZSA9IHJ1bGU7IH0KKyAgICB2b2lk
IHNldFZlcnRpY2FsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2Vz
cygpLnZlcnRpY2FsUnVsZSA9IHJ1bGU7IH0KIAogICAgIHZvaWQgY29weUltYWdlU2xpY2VzRnJv
bShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNj
ZXNzKCktPmltYWdlU2xpY2VzID0gb3RoZXIubV9kYXRhLT5pbWFnZVNsaWNlczsKLSAgICAgICAg
bV9kYXRhLmFjY2VzcygpLT5maWxsID0gb3RoZXIubV9kYXRhLT5maWxsOworICAgICAgICBtX2Rh
dGEuYWNjZXNzKCkuaW1hZ2VTbGljZXMgPSBvdGhlci5tX2RhdGEtPmltYWdlU2xpY2VzOworICAg
ICAgICBtX2RhdGEuYWNjZXNzKCkuZmlsbCA9IG90aGVyLm1fZGF0YS0+ZmlsbDsKICAgICB9CiAK
ICAgICB2b2lkIGNvcHlCb3JkZXJTbGljZXNGcm9tKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvdGhl
cikKICAgICB7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gb3RoZXIu
bV9kYXRhLT5ib3JkZXJTbGljZXM7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5ib3JkZXJTbGlj
ZXMgPSBvdGhlci5tX2RhdGEtPmJvcmRlclNsaWNlczsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b3B5T3V0c2V0RnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAgICAgewotICAgICAg
ICBtX2RhdGEuYWNjZXNzKCktPm91dHNldCA9IG90aGVyLm1fZGF0YS0+b3V0c2V0OworICAgICAg
ICBtX2RhdGEuYWNjZXNzKCkub3V0c2V0ID0gb3RoZXIubV9kYXRhLT5vdXRzZXQ7CiAgICAgfQog
CiAgICAgdm9pZCBjb3B5UmVwZWF0RnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpCiAg
ICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmhvcml6b250YWxSdWxlID0gb3RoZXIubV9k
YXRhLT5ob3Jpem9udGFsUnVsZTsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT52ZXJ0aWNhbFJ1
bGUgPSBvdGhlci5tX2RhdGEtPnZlcnRpY2FsUnVsZTsKKyAgICAgICAgbV9kYXRhLmFjY2Vzcygp
Lmhvcml6b250YWxSdWxlID0gb3RoZXIubV9kYXRhLT5ob3Jpem9udGFsUnVsZTsKKyAgICAgICAg
bV9kYXRhLmFjY2VzcygpLnZlcnRpY2FsUnVsZSA9IG90aGVyLm1fZGF0YS0+dmVydGljYWxSdWxl
OwogICAgIH0KIAogICAgIHZvaWQgc2V0TWFza0RlZmF1bHRzKCkKICAgICB7Ci0gICAgICAgIG1f
ZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBMZW5ndGhCb3goMCk7Ci0gICAgICAgIG1fZGF0
YS5hY2Nlc3MoKS0+ZmlsbCA9IHRydWU7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+Ym9yZGVy
U2xpY2VzID0gTGVuZ3RoQm94KCk7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5pbWFnZVNsaWNl
cyA9IExlbmd0aEJveCgwKTsKKyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSB0cnVlOwor
ICAgICAgICBtX2RhdGEuYWNjZXNzKCkuYm9yZGVyU2xpY2VzID0gTGVuZ3RoQm94KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZU91dHNldChjb25zdCBMZW5ndGgmIG91
dHNldFNpZGUsIExheW91dFVuaXQgYm9yZGVyU2lkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDljNDcxMjVlYTc0MGY5NjcwNjA2ZmVm
YWJiOTVmZjhlNzZjYmQyMWMuLjhmZTgyZTE2NWI3M2MyYTNhYjc3ODYwMTBkZjQ1ZDdjZTJmNDhl
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtNzEsMTEgKzcxLDExIEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAgIHZv
aWQqIGRhdGFSZWZTdmdTdHlsZTsKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAg
ICB1bnNpZ25lZCBtX2JpdGZpZWxkc1syXTsKLSAgICB9IGluaGVyaXRlZF9mbGFnczsKKyAgICB9
IG1faW5oZXJpdGVkRmxhZ3M7CiAKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAg
ICAgICB1aW50NjRfdCBtX2ZsYWdzOwotICAgIH0gbm9uaW5oZXJpdGVkX2ZsYWdzOworICAgIH0g
bV9ub25Jbmhlcml0ZWRGbGFnczsKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNV
UklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVsZXRpb25DaGVjazsKICNlbmRpZgpAQCAtODUs
NyArODUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihT
YW1lU2l6ZUFzUmVuZGVyU3R5bGUpLCBSZW5kZXJTdHlsZQogCiBSZW5kZXJTdHlsZSYgUmVuZGVy
U3R5bGU6OmRlZmF1bHRTdHlsZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZSA9
ICpuZXcgUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVuZGVyU3R5bGU+IHN0eWxlIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CiAgICAg
cmV0dXJuIHN0eWxlOwogfQogCkBAIC0xMjgsNTMgKzEyOCw2OCBAQCBSZW5kZXJTdHlsZSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJgogfQogCiBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxl
VGFnKQotICAgIDogbV9ib3goU3R5bGVCb3hEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHZpc3VhbChT
dHlsZVZpc3VhbERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9iYWNrZ3JvdW5kKFN0eWxlQmFja2dy
b3VuZERhdGE6OmNyZWF0ZSgpKQotICAgICwgc3Vycm91bmQoU3R5bGVTdXJyb3VuZERhdGE6OmNy
ZWF0ZSgpKQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEoU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpjcmVhdGUoKSkKLSAgICAsIGluaGVyaXRlZChTdHlsZUluaGVyaXRlZERhdGE6OmNy
ZWF0ZSgpKQorICAgIDogbV9ib3hEYXRhKFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBt
X3Zpc3VhbERhdGEoU3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2dyb3Vu
ZERhdGEoU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N1cnJvdW5kRGF0
YShTdHlsZVN1cnJvdW5kRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhKFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9yYXJlSW5o
ZXJpdGVkRGF0YShTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1faW5o
ZXJpdGVkRGF0YShTdHlsZUluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9zdmdTdHls
ZShTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpCiB7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0
eV9jZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0
aW9uX3NpZGUgPSBpbml0aWFsQ2FwdGlvblNpZGUoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2xp
c3Rfc3R5bGVfdHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7Ci0gICAgaW5oZXJpdGVkX2Zs
YWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKLSAg
ICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfYWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7Ci0gICAg
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSA9IGluaXRpYWxUZXh0VHJhbnNmb3JtKCk7
Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zID0gaW5pdGlhbFRleHREZWNv
cmF0aW9uKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBpbml0aWFsQ3Vy
c29yKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gaW5pdGlhbEVtcHR5Q2Vs
bHMoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gaW5pdGlhbENhcHRpb25T
aWRlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gaW5pdGlhbExpc3RT
dHlsZVR5cGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gaW5p
dGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5
ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9
IGluaXRpYWxUZXh0QWxpZ24oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0g
PSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29y
YXRpb25zID0gaW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5j
dXJzb3IgPSBpbml0aWFsQ3Vyc29yKCk7CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQot
ICAgIGluaGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlz
aWJpbGl0eSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRp
YWxDdXJzb3JWaXNpYmlsaXR5KCk7CiAjZW5kaWYKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVj
dGlvbiA9IGluaXRpYWxEaXJlY3Rpb24oKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3Nw
YWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9j
b2xsYXBzZSA9IGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpOwotICAgIGluaGVyaXRlZF9mbGFncy5t
X3J0bE9yZGVyaW5nID0gaW5pdGlhbFJUTE9yZGVyaW5nKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdz
Ll9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwotICAgIGluaGVyaXRlZF9m
bGFncy5tX3ByaW50Q29sb3JBZGp1c3QgPSBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpOwotICAg
IGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7
Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKLSAgICBp
bmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKLSAgICBpbmhlcml0
ZWRfZmxhZ3MubV93cml0aW5nTW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgpOworICAgIG1faW5o
ZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlvbigpOworICAgIG1faW5oZXJp
dGVkRmxhZ3Mud2hpdGVTcGFjZSA9IGluaXRpYWxXaGl0ZVNwYWNlKCk7CisgICAgbV9pbmhlcml0
ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSA9IGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpOworICAgIG1f
aW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24oKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QgPSBpbml0aWFsUHJpbnRDb2xvckFk
anVzdCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2lu
dGVyRXZlbnRzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gTm90SW5zaWRl
TGluazsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsK
KyAgICBtX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7
CiAKICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5o
ZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3JvdyIpOwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihO
b25Jbmhlcml0ZWRGbGFncykgPD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93
Iik7CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3Ro
ZXIsIENsb25lVGFnKQotICAgIDogbV9ib3gob3RoZXIubV9ib3gpCi0gICAgLCB2aXN1YWwob3Ro
ZXIudmlzdWFsKQotICAgICwgbV9iYWNrZ3JvdW5kKG90aGVyLm1fYmFja2dyb3VuZCkKLSAgICAs
IHN1cnJvdW5kKG90aGVyLnN1cnJvdW5kKQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEob3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YSkKLSAgICAsIGluaGVyaXRlZChvdGhlci5pbmhlcml0ZWQpCitpbmxp
bmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xv
bmVUYWcpCisgICAgOiBtX2JveERhdGEob3RoZXIubV9ib3hEYXRhKQorICAgICwgbV92aXN1YWxE
YXRhKG90aGVyLm1fdmlzdWFsRGF0YSkKKyAgICAsIG1fYmFja2dyb3VuZERhdGEob3RoZXIubV9i
YWNrZ3JvdW5kRGF0YSkKKyAgICAsIG1fc3Vycm91bmREYXRhKG90aGVyLm1fc3Vycm91bmREYXRh
KQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
KQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0YShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKQor
ICAgICwgbV9pbmhlcml0ZWREYXRhKG90aGVyLm1faW5oZXJpdGVkRGF0YSkKKyAgICAsIG1faW5o
ZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3Ro
ZXIubV9zdmdTdHlsZSkKLSAgICAsIGluaGVyaXRlZF9mbGFncyhvdGhlci5pbmhlcml0ZWRfZmxh
Z3MpCi0gICAgLCBub25pbmhlcml0ZWRfZmxhZ3Mob3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzKQor
eworfQorCitpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBS
ZW5kZXJTdHlsZSYmIGIpCisgICAgOiBtX2JveERhdGEoYS5tX2JveERhdGEucmVwbGFjZShXVEZN
b3ZlKGIubV9ib3hEYXRhKSkpCisgICAgLCBtX3Zpc3VhbERhdGEoYS5tX3Zpc3VhbERhdGEucmVw
bGFjZShXVEZNb3ZlKGIubV92aXN1YWxEYXRhKSkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKGEu
bV9iYWNrZ3JvdW5kRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX2JhY2tncm91bmREYXRhKSkpCisg
ICAgLCBtX3N1cnJvdW5kRGF0YShhLm1fc3Vycm91bmREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1f
c3Vycm91bmREYXRhKSkpCisgICAgLCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhKGEubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKSkp
CisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKHN0ZDo6ZXhjaGFuZ2UoYS5tX25vbkluaGVyaXRl
ZEZsYWdzLCBiLm1fbm9uSW5oZXJpdGVkRmxhZ3MpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0
YShhLm1fcmFyZUluaGVyaXRlZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9yYXJlSW5oZXJpdGVk
RGF0YSkpKQorICAgICwgbV9pbmhlcml0ZWREYXRhKGEubV9pbmhlcml0ZWREYXRhLnJlcGxhY2Uo
V1RGTW92ZShiLm1faW5oZXJpdGVkRGF0YSkpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhzdGQ6
OmV4Y2hhbmdlKGEubV9pbmhlcml0ZWRGbGFncywgYi5tX2luaGVyaXRlZEZsYWdzKSkKKyAgICAs
IG1fY2FjaGVkUHNldWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2NhY2hlZFBzZXVkb1N0eWxl
cywgV1RGTW92ZShiLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCisgICAgLCBtX3N2Z1N0eWxlKGEu
bV9zdmdTdHlsZS5yZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxlKSkpCiB7CiB9CiAKQEAgLTE4
Niw2ICsyMDEsMTEgQEAgUmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpCiAjZW5kaWYKIH0KIAor
UmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkK
K3sKKyAgICByZXR1cm4gUmVuZGVyU3R5bGUgeyAqdGhpcywgV1RGTW92ZShuZXdTdHlsZSkgfTsK
K30KKwogYm9vbCBSZW5kZXJTdHlsZTo6aXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpCiB7CiAjaWYg
RU5BQkxFKENTU19HUklEX0xBWU9VVCkKQEAgLTIxMiw3ICsyMzIsNyBAQCBTdHlsZVNlbGZBbGln
bm1lbnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduU2VsZihjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50UwogewogICAgIC8vIFRoZSBhdXRvIGtleXdvcmQgY29tcHV0ZXMgdG8gdGhlIHBh
cmVudCdzIGFsaWduLWl0ZW1zIGNvbXB1dGVkIHZhbHVlLgogICAgIC8vIFdlIHdpbGwgcmV0dXJu
IHRoZSBiZWhhdmlvdXIgb2YgJ25vcm1hbCcgdmFsdWUgaWYgbmVlZGVkLCB3aGljaCBpcyBzcGVj
aWZpYyBvZiBlYWNoIGxheW91dCBtb2RlbC4KLSAgICBpZiAoYWxpZ25TZWxmUG9zaXRpb24oKSA9
PSBJdGVtUG9zaXRpb25BdXRvKQorICAgIGlmIChhbGlnblNlbGYoKS5wb3NpdGlvbigpID09IEl0
ZW1Qb3NpdGlvbkF1dG8pCiAgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS5yZXNvbHZlZEFsaWdu
SXRlbXMobm9ybWFsVmFsdWVCZWhhdmlvdXIpOwogICAgIHJldHVybiByZXNvbHZlZFNlbGZBbGln
bm1lbnQoYWxpZ25TZWxmKCksIG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKIH0KQEAgLTIyMiw5ICsy
NDIsOCBAQCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3Rp
ZnlJdGVtcyhJdGVtUG9zaXRpb24gbm9ybWFsVmFsdQogICAgIC8vIEZJWE1FOiBqdXN0aWZ5LWl0
ZW1zICdhdXRvJyB2YWx1ZSBpcyBhbGxvd2VkIG9ubHkgdG8gcHJvdmlkZSB0aGUgJ2xlZ2FjeScg
a2V5d29yZCdzIGJlaGF2aW9yLCB3aGljaCBpdCdzIHN0aWxsIG5vdCBpbXBsZW1lbnRlZCBmb3Ig
bGF5b3V0LgogICAgIC8vICJJZiB0aGUgaW5oZXJpdGVkIHZhbHVlIG9mIGp1c3RpZnktaXRlbXMg
aW5jbHVkZXMgdGhlIGxlZ2FjeSBrZXl3b3JkLCBhdXRvIGNvbXB1dGVzIHRvIHRoZSBpbmhlcml0
ZWQgdmFsdWUuIgogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtYWxpZ24vI2p1
c3RpZnktaXRlbXMtcHJvcGVydHkKLSAgICBpZiAoanVzdGlmeUl0ZW1zUG9zaXRpb24oKSA9PSBJ
dGVtUG9zaXRpb25BdXRvKQorICAgIGlmIChqdXN0aWZ5SXRlbXMoKS5wb3NpdGlvbigpID09IEl0
ZW1Qb3NpdGlvbkF1dG8pCiAgICAgICAgIHJldHVybiB7IG5vcm1hbFZhbHVlQmVoYXZpb3VyLCBP
dmVyZmxvd0FsaWdubWVudERlZmF1bHQgfTsKLQogICAgIHJldHVybiByZXNvbHZlZFNlbGZBbGln
bm1lbnQoanVzdGlmeUl0ZW1zKCksIG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKIH0KIApAQCAtMjMy
LDcgKzI1MSw3IEBAIFN0eWxlU2VsZkFsaWdubWVudERhdGEgUmVuZGVyU3R5bGU6OnJlc29sdmVk
SnVzdGlmeVNlbGYoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVuCiB7CiAgICAgLy8gVGhlIGF1dG8g
a2V5d29yZCBjb21wdXRlcyB0byB0aGUgcGFyZW50J3MganVzdGlmeS1pdGVtcyBjb21wdXRlZCB2
YWx1ZS4KICAgICAvLyBXZSB3aWxsIHJldHVybiB0aGUgYmVoYXZpb3VyIG9mICdub3JtYWwnIHZh
bHVlIGlmIG5lZWRlZCwgd2hpY2ggaXMgc3BlY2lmaWMgb2YgZWFjaCBsYXlvdXQgbW9kZWwuCi0g
ICAgaWYgKGp1c3RpZnlTZWxmUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQorICAgIGlm
IChqdXN0aWZ5U2VsZigpLnBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKICAgICAgICAg
cmV0dXJuIHBhcmVudFN0eWxlLnJlc29sdmVkSnVzdGlmeUl0ZW1zKG5vcm1hbFZhbHVlQmVoYXZp
b3VyKTsKICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxpZ25tZW50KGp1c3RpZnlTZWxmKCksIG5v
cm1hbFZhbHVlQmVoYXZpb3VyKTsKIH0KQEAgLTI2OSw0MyArMjg4LDQyIEBAIENvbnRlbnREaXN0
cmlidXRpb25UeXBlIFJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudERpc3RyaWJ1dGlv
bihjb25zdCBTdHlsCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFJlbmRl
clN0eWxlJiBpbmhlcml0UGFyZW50KQogewotICAgIHJhcmVJbmhlcml0ZWREYXRhID0gaW5oZXJp
dFBhcmVudC5yYXJlSW5oZXJpdGVkRGF0YTsKLSAgICBpbmhlcml0ZWQgPSBpbmhlcml0UGFyZW50
LmluaGVyaXRlZDsKLSAgICBpbmhlcml0ZWRfZmxhZ3MgPSBpbmhlcml0UGFyZW50LmluaGVyaXRl
ZF9mbGFnczsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhID0gaW5oZXJpdFBhcmVudC5tX3JhcmVJ
bmhlcml0ZWREYXRhOworICAgIG1faW5oZXJpdGVkRGF0YSA9IGluaGVyaXRQYXJlbnQubV9pbmhl
cml0ZWREYXRhOworICAgIG1faW5oZXJpdGVkRmxhZ3MgPSBpbmhlcml0UGFyZW50Lm1faW5oZXJp
dGVkRmxhZ3M7CiAKICAgICBpZiAobV9zdmdTdHlsZSAhPSBpbmhlcml0UGFyZW50Lm1fc3ZnU3R5
bGUpCi0gICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCktPmluaGVyaXRGcm9tKGluaGVyaXRQYXJl
bnQubV9zdmdTdHlsZS5nZXQoKSk7CisgICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCkuaW5oZXJp
dEZyb20oaW5oZXJpdFBhcmVudC5tX3N2Z1N0eWxlLmdldCgpKTsKIH0KIAotdm9pZCBSZW5kZXJT
dHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKQordm9p
ZCBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIG90
aGVyKQogewotICAgIG1fYm94ID0gb3RoZXItPm1fYm94OwotICAgIHZpc3VhbCA9IG90aGVyLT52
aXN1YWw7Ci0gICAgbV9iYWNrZ3JvdW5kID0gb3RoZXItPm1fYmFja2dyb3VuZDsKLSAgICBzdXJy
b3VuZCA9IG90aGVyLT5zdXJyb3VuZDsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YSA9IG90aGVy
LT5yYXJlTm9uSW5oZXJpdGVkRGF0YTsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3MuY29weU5vbklu
aGVyaXRlZEZyb20ob3RoZXItPm5vbmluaGVyaXRlZF9mbGFncyk7CisgICAgbV9ib3hEYXRhID0g
b3RoZXIubV9ib3hEYXRhOworICAgIG1fdmlzdWFsRGF0YSA9IG90aGVyLm1fdmlzdWFsRGF0YTsK
KyAgICBtX2JhY2tncm91bmREYXRhID0gb3RoZXIubV9iYWNrZ3JvdW5kRGF0YTsKKyAgICBtX3N1
cnJvdW5kRGF0YSA9IG90aGVyLm1fc3Vycm91bmREYXRhOworICAgIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEgPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhOworICAgIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuY29weU5vbkluaGVyaXRlZEZyb20ob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncyk7CiAK
LSAgICBpZiAobV9zdmdTdHlsZSAhPSBvdGhlci0+bV9zdmdTdHlsZSkKLSAgICAgICAgbV9zdmdT
dHlsZS5hY2Nlc3MoKS0+Y29weU5vbkluaGVyaXRlZEZyb20ob3RoZXItPm1fc3ZnU3R5bGUuZ2V0
KCkpOworICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLm1fc3ZnU3R5bGUpCisgICAgICAgIG1f
c3ZnU3R5bGUuYWNjZXNzKCkuY29weU5vbkluaGVyaXRlZEZyb20ob3RoZXIubV9zdmdTdHlsZS5n
ZXQoKSk7CiAKICAgICBBU1NFUlQoem9vbSgpID09IGluaXRpYWxab29tKCkpOwogfQogCi1ib29s
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvKSBjb25zdAorYm9v
bCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0
CiB7CiAgICAgLy8gY29tcGFyZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgcHNldWRvU3R5bGUgcG9p
bnRlcgotICAgIHJldHVybiBpbmhlcml0ZWRfZmxhZ3MgPT0gby5pbmhlcml0ZWRfZmxhZ3MKLSAg
ICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzID09IG8ubm9uaW5oZXJpdGVkX2ZsYWdzCi0gICAg
ICAgICYmIG1fYm94ID09IG8ubV9ib3gKLSAgICAgICAgJiYgdmlzdWFsID09IG8udmlzdWFsCi0g
ICAgICAgICYmIG1fYmFja2dyb3VuZCA9PSBvLm1fYmFja2dyb3VuZAotICAgICAgICAmJiBzdXJy
b3VuZCA9PSBvLnN1cnJvdW5kCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhID09IG8u
cmFyZU5vbkluaGVyaXRlZERhdGEKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEgPT0gby5y
YXJlSW5oZXJpdGVkRGF0YQotICAgICAgICAmJiBpbmhlcml0ZWQgPT0gby5pbmhlcml0ZWQKLSAg
ICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvLm1fc3ZnU3R5bGUKLSAgICAgICAgICAgIDsKKyAgICBy
ZXR1cm4gbV9pbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzCisgICAgICAg
ICYmIG1fbm9uSW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncworICAg
ICAgICAmJiBtX2JveERhdGEgPT0gb3RoZXIubV9ib3hEYXRhCisgICAgICAgICYmIG1fdmlzdWFs
RGF0YSA9PSBvdGhlci5tX3Zpc3VhbERhdGEKKyAgICAgICAgJiYgbV9iYWNrZ3JvdW5kRGF0YSA9
PSBvdGhlci5tX2JhY2tncm91bmREYXRhCisgICAgICAgICYmIG1fc3Vycm91bmREYXRhID09IG90
aGVyLm1fc3Vycm91bmREYXRhCisgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgPT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWRE
YXRhID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEKKyAgICAgICAgJiYgbV9pbmhlcml0ZWRE
YXRhID09IG90aGVyLm1faW5oZXJpdGVkRGF0YQorICAgICAgICAmJiBtX3N2Z1N0eWxlID09IG90
aGVyLm1fc3ZnU3R5bGU7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0
eWxlKCkgY29uc3QKQEAgLTMxMyw4ICszMzEsNyBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNVbmlx
dWVQc2V1ZG9TdHlsZSgpIGNvbnN0CiAgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcyB8fCBz
dHlsZVR5cGUoKSAhPSBOT1BTRVVETykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMt
PmF0KGkpLmdldCgpOworICAgIGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1
ZG9TdHlsZXMpIHsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT51bmlxdWUoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzMCwxMCArMzQ3LDkgQEAgUmVuZGVyU3R5bGUq
IFJlbmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwaWQpIGNvbnN0CiAg
ICAgaWYgKHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKSAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXpl
KCk7ICsraSkgewotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBtX2NhY2hlZFBz
ZXVkb1N0eWxlcy0+YXQoaSkuZ2V0KCk7CisgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICpt
X2NhY2hlZFBzZXVkb1N0eWxlcykgewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnN0eWxlVHlw
ZSgpID09IHBpZCkKLSAgICAgICAgICAgIHJldHVybiBwc2V1ZG9TdHlsZTsKKyAgICAgICAgICAg
IHJldHVybiBwc2V1ZG9TdHlsZS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTM3MSwxMCArMzg3LDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hlZFBzZXVk
b1N0eWxlKFBzZXVkb0lkIHBpZCkKIAogYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1
YWwoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0
ZWRfZmxhZ3MgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncwotICAgICAgICAgICB8fCBpbmhlcml0
ZWQgIT0gb3RoZXItPmluaGVyaXRlZAotICAgICAgICAgICB8fCBtX3N2Z1N0eWxlLT5pbmhlcml0
ZWROb3RFcXVhbChvdGhlci0+bV9zdmdTdHlsZS5nZXQoKSkKLSAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhOworICAgIHJldHVybiBtX2lu
aGVyaXRlZEZsYWdzICE9IG90aGVyLT5tX2luaGVyaXRlZEZsYWdzCisgICAgICAgIHx8IG1faW5o
ZXJpdGVkRGF0YSAhPSBvdGhlci0+bV9pbmhlcml0ZWREYXRhCisgICAgICAgIHx8IG1fc3ZnU3R5
bGUtPmluaGVyaXRlZE5vdEVxdWFsKG90aGVyLT5tX3N2Z1N0eWxlKQorICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhICE9IG90aGVyLT5tX3JhcmVJbmhlcml0ZWREYXRhOwogfQogCiAjaWYg
RU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTM5MCw0NiArNDA2LDQ2IEBAIHN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgY29tcHV0ZUZvbnRIYXNoKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogdW5z
aWduZWQgUmVuZGVyU3R5bGU6Omhhc2hGb3JUZXh0QXV0b3NpemluZygpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IE5vdCBhIHZlcnkgc21hcnQgaGFzaC4gQ291bGQgYmUgaW1wcm92ZWQgdXBvbi4g
U2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTMxPi4KLSAg
ICB1bnNpZ25lZCBoYXNoID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZTsKLSAg
ICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZTsKLSAg
ICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlOwotICAg
IGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcC52YWx1ZSgpOwotICAgIGhh
c2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcDsKLSAgICBoYXNoIF49IHJhcmVJ
bmhlcml0ZWREYXRhLT5uYnNwTW9kZTsKLSAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT5s
aW5lQnJlYWs7Ci0gICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2goaW5oZXJp
dGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0LnZhbHVlKCkpOwotICAgIGhhc2ggXj0gY29tcHV0ZUZv
bnRIYXNoKGluaGVyaXRlZC0+Zm9udENhc2NhZGUpOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhh
c2g8ZmxvYXQ+OjpoYXNoKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyk7Ci0g
ICAgaGFzaCBePSBXVEY6OkZsb2F0SGFzaDxmbG9hdD46Omhhc2goaW5oZXJpdGVkLT52ZXJ0aWNh
bF9ib3JkZXJfc3BhY2luZyk7Ci0gICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJl
Y3Rpb247Ci0gICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZzsKLSAgICBo
YXNoIF49IG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpOwotICAgIGhhc2ggXj0gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCk7Ci0gICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dGV4dE92ZXJmbG93OwotICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1
cml0eTsKKyAgICB1bnNpZ25lZCBoYXNoID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFy
YW5jZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNv
bGxhcHNlOworICAgIGhhc2ggXj0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJD
b2xsYXBzZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcC52
YWx1ZSgpOworICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwOwor
ICAgIGhhc2ggXj0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGU7CisgICAgaGFzaCBePSBt
X3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWs7CisgICAgaGFzaCBePSBXVEY6OkZsb2F0SGFz
aDxmbG9hdD46Omhhc2gobV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0LnZhbHVl
KCkpOworICAgIGhhc2ggXj0gY29tcHV0ZUZvbnRIYXNoKG1faW5oZXJpdGVkRGF0YS0+Zm9udENh
c2NhZGUpOworICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJp
dGVkRGF0YS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpOworICAgIGhhc2ggXj0gV1RGOjpGbG9h
dEhhc2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5n
KTsKKyAgICBoYXNoIF49IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uOworICAgIGhhc2gg
Xj0gbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZzsKKyAgICBoYXNoIF49IG1fbm9uSW5oZXJp
dGVkRmxhZ3MucG9zaXRpb24oKTsKKyAgICBoYXNoIF49IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxv
YXRpbmcoKTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxv
dzsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eTsKICAgICBy
ZXR1cm4gaGFzaDsKIH0KIAogYm9vbCBSZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3Npemlu
Zyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYXBwZWFyYW5jZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVm
b3JlQ29sbGFwc2UgPT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNv
bGxhcHNlCi0gICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxh
cHNlID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCi0g
ICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgPT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNpemVBZGp1c3QgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0
Ci0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgPT0gb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0
YS0+bmJzcE1vZGUgPT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlCi0gICAgICAg
ICYmIHJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgPT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPmxpbmVCcmVhawotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5
ID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgJiYgaW5o
ZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0ID09IG90aGVyLmluaGVyaXRlZC0+c3BlY2lmaWVk
TGluZUhlaWdodAotICAgICAgICAmJiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmVxdWFsRm9yVGV4
dEF1dG9TaXppbmcob3RoZXIuaW5oZXJpdGVkLT5mb250Q2FzY2FkZSkKLSAgICAgICAgJiYgaW5o
ZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLmluaGVyaXRlZC0+aG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICAmJiBpbmhlcml0ZWQtPnZlcnRpY2FsX2Jv
cmRlcl9zcGFjaW5nID09IG90aGVyLmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcK
LSAgICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID09IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbgotICAgICAgICAmJiBpbmhlcml0ZWRfZmxhZ3MubV9y
dGxPcmRlcmluZyA9PSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZwotICAgICAg
ICAmJiBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKSA9PSBvdGhlci5ub25pbmhlcml0ZWRf
ZmxhZ3MucG9zaXRpb24oKQotICAgICAgICAmJiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmco
KSA9PSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQotICAgICAgICAmJiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0T3ZlcmZsb3c7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFw
cGVhcmFuY2UgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZQorICAg
ICAgICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQorICAgICAg
ICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlID09IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKKyAgICAgICAgJiYg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wID09IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmxpbmVDbGFtcAorICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
U2l6ZUFkanVzdCA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAor
ICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgPT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRl
ZERhdGEtPm5ic3BNb2RlID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlCisg
ICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayA9PSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT5saW5lQnJlYWsKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNlY3VyaXR5ID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eQor
ICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVIZWlnaHQgPT0gb3RoZXIu
bV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgICYmIG1faW5oZXJp
dGVkRGF0YS0+Zm9udENhc2NhZGUuZXF1YWxGb3JUZXh0QXV0b1NpemluZyhvdGhlci5tX2luaGVy
aXRlZERhdGEtPmZvbnRDYXNjYWRlKQorICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEtPmhvcml6
b250YWxCb3JkZXJTcGFjaW5nID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNw
YWNpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcKKyAg
ICAgICAgJiYgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPT0gb3RoZXIubV9pbmhlcml0
ZWRGbGFncy5ib3hEaXJlY3Rpb24KKyAgICAgICAgJiYgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRl
cmluZyA9PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nCisgICAgICAgICYmIG1f
bm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRpb24oKSA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdz
LnBvc2l0aW9uKCkKKyAgICAgICAgJiYgbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpID09
IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKQorICAgICAgICAmJiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dE92ZXJmbG93OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKQEAgLTQzNywxMCArNDUzLDEwIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1
dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogYm9vbCBSZW5kZXJTdHls
ZTo6aW5oZXJpdGVkRGF0YVNoYXJlZChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7
CiAgICAgLy8gVGhpcyBpcyBhIGZhc3QgY2hlY2sgdGhhdCBvbmx5IGxvb2tzIGlmIHRoZSBkYXRh
IHN0cnVjdHVyZXMgYXJlIHNoYXJlZC4KLSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzID09IG90
aGVyLT5pbmhlcml0ZWRfZmxhZ3MKLSAgICAgICAgJiYgaW5oZXJpdGVkLmdldCgpID09IG90aGVy
LT5pbmhlcml0ZWQuZ2V0KCkKKyAgICByZXR1cm4gbV9pbmhlcml0ZWRGbGFncyA9PSBvdGhlci0+
bV9pbmhlcml0ZWRGbGFncworICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3Ro
ZXItPm1faW5oZXJpdGVkRGF0YS5nZXQoKQogICAgICAgICAmJiBtX3N2Z1N0eWxlLmdldCgpID09
IG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLmdl
dCgpID09IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKTsKKyAgICAgICAgJiYgbV9yYXJl
SW5oZXJpdGVkRGF0YS5nZXQoKSA9PSBvdGhlci0+bV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKTsK
IH0KIAogc3RhdGljIGJvb2wgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShjb25zdCBMZW5n
dGhCb3gmIGEsIGNvbnN0IExlbmd0aEJveCYgYiwgY29uc3QgTGVuZ3RoJiB3aWR0aCkKQEAgLTQ3
MiwxNyArNDg4LDE3IEBAIHN0YXRpYyBib29sIHBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHko
Y29uc3QgTGVuZ3RoQm94JiBhLCBjb25zdCBMZW5ndGhCb3gmIGIsCiAKIGlubGluZSBib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyKSBjb25zdAogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKQotICAgICAgICAmJiAhYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3csIG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdykpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKQorICAgICAg
ICAmJiAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hT
aGFkb3csIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFNoYWRvdykpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLmdldCgpCi0gICAgICAgICYmICFhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LCBvdGhlci5yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNoYWRvdykpCisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKQorICAgICAgICAmJiAhYXJlUG9pbnRpbmdUb0Vx
dWFsRGF0YShtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LCBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2hhZG93KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRlZF9mbGFn
cy5fdGV4dF9kZWNvcmF0aW9ucwotICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0aW9uICE9
IG90aGVyLnZpc3VhbC0+dGV4dERlY29yYXRpb24KLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlKSB7CisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudGV4
dERlY29yYXRpb25zICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zCisg
ICAgICAgIHx8IG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIubV92aXN1YWxE
YXRhLT50ZXh0RGVjb3JhdGlvbgorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRE
ZWNvcmF0aW9uU3R5bGUpIHsKICAgICAgICAgLy8gVW5kZXJsaW5lcyBhcmUgYWx3YXlzIGRyYXdu
IG91dHNpZGUgb2YgdGhlaXIgdGV4dGJveCBib3VuZHMgd2hlbiB0ZXh0LXVuZGVybGluZS1wb3Np
dGlvbjogdW5kZXI7CiAgICAgICAgIC8vIGlzIHNwZWNpZmllZC4gV2UgY2FuIHRha2UgYW4gZWFy
bHkgb3V0IGhlcmUuCiAgICAgICAgIGlmICh0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSA9PSBUZXh0
VW5kZXJsaW5lUG9zaXRpb25VbmRlcgpAQCAtNDk4LDE2OCArNTE0LDE2OCBAQCBpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0
eWxlJiBvdGhlcikgYwogCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYm94LT53aWR0aCgpICE9IG90aGVyLm1f
Ym94LT53aWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9IG90aGVyLm1fYm94
LT5taW5XaWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5tYXhXaWR0aCgpICE9IG90aGVyLm1fYm94
LT5tYXhXaWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5oZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+
aGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90aGVyLm1fYm94LT5t
aW5IZWlnaHQoKQotICAgICAgICB8fCBtX2JveC0+bWF4SGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gt
Pm1heEhlaWdodCgpKQorICAgIGlmIChtX2JveERhdGEtPndpZHRoKCkgIT0gb3RoZXIubV9ib3hE
YXRhLT53aWR0aCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+bWluV2lkdGgoKSAhPSBvdGhlci5t
X2JveERhdGEtPm1pbldpZHRoKCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5tYXhXaWR0aCgpICE9
IG90aGVyLm1fYm94RGF0YS0+bWF4V2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPmhlaWdo
dCgpICE9IG90aGVyLm1fYm94RGF0YS0+aGVpZ2h0KCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5t
aW5IZWlnaHQoKSAhPSBvdGhlci5tX2JveERhdGEtPm1pbkhlaWdodCgpCisgICAgICAgIHx8IG1f
Ym94RGF0YS0+bWF4SGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5tYXhIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ib3gtPnZlcnRpY2FsQWxpZ24oKSAhPSBv
dGhlci5tX2JveC0+dmVydGljYWxBbGlnbigpIHx8IG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNh
bEFsaWduKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2FsQWxpZ24oKSkKKyAg
ICBpZiAobV9ib3hEYXRhLT52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIubV9ib3hEYXRhLT52ZXJ0
aWNhbEFsaWduKCkgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCkgIT0gb3Ro
ZXIubV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKG1fYm94LT5ib3hTaXppbmcoKSAhPSBvdGhlci5tX2JveC0+Ym94U2l6
aW5nKCkpCisgICAgaWYgKG1fYm94RGF0YS0+Ym94U2l6aW5nKCkgIT0gb3RoZXIubV9ib3hEYXRh
LT5ib3hTaXppbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3Vycm91bmQt
Pm1hcmdpbiAhPSBvdGhlci5zdXJyb3VuZC0+bWFyZ2luKQorICAgIGlmIChtX3N1cnJvdW5kRGF0
YS0+bWFyZ2luICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5tYXJnaW4pCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5wYWRkaW5nICE9IG90aGVyLnN1cnJvdW5kLT5w
YWRkaW5nKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+cGFkZGluZyAhPSBvdGhlci5tX3N1cnJv
dW5kRGF0YS0+cGFkZGluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFkZCBhbiBvcHRpbWl6ZWQgZm9ybSBvZiBsYXlvdXQgdGhhdCBqdXN0IHJlY29t
cHV0ZXMgdmlzdWFsIG92ZXJmbG93LgogICAgIGlmIChjaGFuZ2VBZmZlY3RzVmlzdWFsT3ZlcmZs
b3cob3RoZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAg
ICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSAhPSBvdGhlci5yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPmxpbmVDbGFtcCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCi0g
ICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0dGVyICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIKLSAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHRPdmVyZmxvdykKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5n
ZXQoKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFwcGVhcmFuY2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmxpbmVDbGFtcCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xh
bXAKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRpYWxMZXR0ZXIg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aW5pdGlhbExldHRlcgorICAgICAgICAg
ICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdykKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCkKKyAgICAgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50ICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luICE9
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luKQorICAgICAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVNYXJnaW4gIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+c2hhcGVNYXJnaW4pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
ICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94ICE9
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkKKyAg
ICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveCAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZmxleGlibGVCb3ggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGli
bGVCb3gpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveCAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRl
ciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRlcgotICAgICAgICAgICAgfHwg
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50ICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FsaWduQ29udGVudAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWxpZ25JdGVtcyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGln
bkl0ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmCi0gICAgICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudCAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudAotICAgICAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2p1c3RpZnlJdGVtcwotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
anVzdGlmeVNlbGYgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYp
CisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcmRlciAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5vcmRlcgorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YWxpZ25Db250ZW50ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFs
aWduQ29udGVudAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25J
dGVtcyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0ZW1zCisgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnblNlbGYgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5qdXN0aWZ5Q29udGVudCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5qdXN0aWZ5Q29udGVudAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
anVzdGlmeUl0ZW1zICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJdGVt
cworICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGYgIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGYpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYm94UmVmbGVjdCwgb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYm94UmVmbGVjdCkpCisgICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ib3hSZWZsZWN0LCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5ib3hSZWZsZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlm
IChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbCAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tdWx0aUNvbCkKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm11bHRpQ29sICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0p
IHsKLSAgICAgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPmhh
c1RyYW5zZm9ybSgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+
aGFzVHJhbnNmb3JtKCkpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2Zvcm0gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtKSB7CisgICAg
ICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zv
cm0oKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5z
Zm9ybSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCpy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0gIT0gKm90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RyYW5zZm9ybSkgeworICAgICAgICAgICAgaWYgKCptX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50cmFuc2Zvcm0gIT0gKm90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5z
Zm9ybSkgewogICAgICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlUcmFuc2Zvcm07CiAgICAgICAgICAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWRJdGVtICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtKQorICAgICAg
ICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZCAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5ncmlkCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkSXRlbSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkSXRlbSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgICAgIC8vIElmIHJlZ2lvbnMgY2hhbmdlLCB0cmlnZ2VyIGEgcmVsYXlvdXQgdG8g
cmUtY2FsYyByZWdpb25zLgotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFz
aGJvYXJkUmVnaW9ucyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRS
ZWdpb25zKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJvYXJkUmVn
aW9ucyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9hcmRSZWdpb25zKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgICAgICBpZiAoIWFyZVBvaW50
aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZSwgb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZSkpIHsKKyAgICAgICAgaWYgKCFhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UsIG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UpKSB7CiAgICAgICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5V2lsbENoYW5nZTsKICAgICAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5n
IGZvciBhbm90aGVyIGNoYW5nZQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHJhcmVJbmhl
cml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLmdldCgpKSB7Ci0gICAg
ICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT5pbmRlbnQKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5t
X3JhcmVJbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChtX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbmRlbnQgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CiAjaWYgRU5B
QkxFKENTUzNfVEVYVCkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRB
bGlnbkxhc3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdAotICAg
ICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkgIT0gb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0
ZWREYXRhLT5tX3RleHRJbmRlbnRMaW5lICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3Rl
eHRJbmRlbnRMaW5lCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0QWxp
Z25MYXN0ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRBbGlnbkxhc3QKKyAgICAg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRKdXN0aWZ5ICE9IG90aGVyLm1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRKdXN0aWZ5CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0SW5kZW50TGluZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
SW5kZW50TGluZQogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9l
ZmZlY3RpdmVab29tICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpvb20K
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRab29tICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX3RleHRab29tCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5lZmZlY3RpdmVab29tICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVj
dGl2ZVpvb20KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRab29tICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRab29tCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVz
dCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKKyAgICAgICAgICAg
IHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0CiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPndvcmRC
cmVhawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm5ic3BN
b2RlCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1
cml0eQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMgIT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5o
eXBoZW5hdGlvbkxpbWl0QmVmb3JlCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
aHlwaGVuYXRpb25MaW1pdEFmdGVyICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5h
dGlvbkxpbWl0QWZ0ZXIKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5h
dGlvblN0cmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbiAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0RW1waGFzaXNNYXJrCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzUG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c1Bvc2l0aW9uCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lz
Q3VzdG9tTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9t
TWFyawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9u
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbgotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV90YWJTaXplCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5l
Qm94Q29udGFpbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFpbgot
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQgIT0gb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsK
KyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKKyAgICAgICAgICAgIHx8IG1fcmFy
ZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPm5i
c3BNb2RlCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgIT0g
b3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAgICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNlY3VyaXR5CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBo
ZW5zICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbnMKKyAgICAgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZQorICAgICAgICAgICAgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyICE9IG90aGVyLm1fcmFy
ZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcgorICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXIubV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcKKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRl
ZERhdGEtPnJ1YnlQb3NpdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9z
aXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01h
cmsgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyaworICAgICAg
ICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24gIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24KKyAgICAgICAgICAg
IHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaworICAgICAgICAgICAg
fHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uICE9IG90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGFiU2l6ZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50YWJTaXplCisg
ICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQm94Q29udGFpbiAhPSBvdGhl
ci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQm94Q29udGFpbgorICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+bGluZUdyaWQgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
bGluZUdyaWQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhl
cml0ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PmltYWdlT3JpZW50YXRpb24KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNv
dXJjZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNuYXAg
IT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcAotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbgorICAgICAgICAgICAgfHwgbV9yYXJl
SW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbWFnZVJlc29sdXRpb25TbmFwCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbWFnZVJlc29sdXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VS
ZXNvbHV0aW9uCiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xp
bmVTbmFwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFwCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQWxpZ24gIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPm1fbGluZUFsaWduCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9o
YW5naW5nUHVuY3R1YXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1
bmN0dWF0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcCAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcAorICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+bGluZUFsaWduICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PmxpbmVBbGlnbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFuZ2luZ1B1
bmN0dWF0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlv
bgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZworICAgICAgICAg
ICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBv
dGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCiAjZW5k
aWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UpIC8vIEZJWE1FOiBuZWVkcyBh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKCk/CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5saXN0U3R5bGVJbWFnZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5
bGVJbWFnZSkgLy8gRklYTUU6IG5lZWRzIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoKT8KICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmICh0ZXh0U3Ryb2tlV2lkdGgoKSAhPSBv
dGhlci50ZXh0U3Ryb2tlV2lkdGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGlmIChpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0ICE9IG90aGVyLmluaGVyaXRlZC0+bGlu
ZV9oZWlnaHQKKyAgICBpZiAobV9pbmhlcml0ZWREYXRhLT5saW5lSGVpZ2h0ICE9IG90aGVyLm1f
aW5oZXJpdGVkRGF0YS0+bGluZUhlaWdodAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0g
ICAgICAgIHx8IGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5pbmhlcml0
ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT5zcGVj
aWZpZWRMaW5lSGVpZ2h0ICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhl
aWdodAogI2VuZGlmCi0gICAgICAgIHx8IGluaGVyaXRlZC0+Zm9udENhc2NhZGUgIT0gb3RoZXIu
aW5oZXJpdGVkLT5mb250Q2FzY2FkZQotICAgICAgICB8fCBpbmhlcml0ZWQtPmhvcml6b250YWxf
Ym9yZGVyX3NwYWNpbmcgIT0gb3RoZXIuaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFj
aW5nCi0gICAgICAgIHx8IGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgIT0gb3Ro
ZXIuaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8fCBpbmhlcml0
ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGly
ZWN0aW9uCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9m
bGFncy5wb3NpdGlvbigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpCi0g
ICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpICE9IG90aGVyLm5vbmluaGVy
aXRlZF9mbGFncy5mbG9hdGluZygpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vcmln
aW5hbERpc3BsYXkoKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5
KCkpCisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUgIT0gb3RoZXIubV9p
bmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZQorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPmhv
cml6b250YWxCb3JkZXJTcGFjaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRl
clNwYWNpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcK
KyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gIT0gb3RoZXIubV9pbmhl
cml0ZWRGbGFncy5ib3hEaXJlY3Rpb24KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5ydGxP
cmRlcmluZyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nCisgICAgICAgIHx8
IG1fbm9uSW5oZXJpdGVkRmxhZ3MucG9zaXRpb24oKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZs
YWdzLnBvc2l0aW9uKCkKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygp
ICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKQorICAgICAgICB8fCBtX25v
bkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVk
RmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAKLSAgICBp
ZiAoKG5vbmluaGVyaXRlZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkpID49IFRBQkxFKSB7Ci0g
ICAgICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZSAhPSBvdGhlci5pbmhl
cml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl9lbXB0eV9jZWxscyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzCi0g
ICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSAhPSBvdGhlci5pbmhl
cml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZQotICAgICAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2Zs
YWdzLnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5b3V0
KCkpCisgICAgaWYgKChtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0g
VEFCTEUpIHsKKyAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZQorICAgICAgICAgICAgfHwgbV9p
bmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZW1wdHlD
ZWxscworICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSAhPSBvdGhl
ci5tX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlCisgICAgICAgICAgICB8fCBtX25vbkluaGVy
aXRlZEZsYWdzLnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy50YWJs
ZUxheW91dCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gSW4gdGhl
IGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVsLCAnaGlkZGVuJyBzdXBwcmVzc2VzIG90aGVyIGJvcmRl
cnMsIHdoaWxlICdub25lJwogICAgICAgICAvLyBkb2VzIG5vdCwgc28gdGhlc2Ugc3R5bGUgZGlm
ZmVyZW5jZXMgY2FuIGJlIHdpZHRoIGRpZmZlcmVuY2VzLgotICAgICAgICBpZiAoaW5oZXJpdGVk
X2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UKKyAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9y
ZGVyQ29sbGFwc2UKICAgICAgICAgICAgICYmICgoYm9yZGVyVG9wU3R5bGUoKSA9PSBCSElEREVO
ICYmIG90aGVyLmJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgICAgICAgICAgfHwg
KGJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyVG9wU3R5bGUoKSA9PSBC
SElEREVOKQogICAgICAgICAgICAgICAgIHx8IChib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURE
RU4gJiYgb3RoZXIuYm9yZGVyQm90dG9tU3R5bGUoKSA9PSBCTk9ORSkKQEAgLTY3MSwzNyArNjg3
LDM3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSA9
PSBMSVNUX0lURU0pIHsKLSAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90
eXBlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCi0gICAgICAgICAg
ICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3RoZXIuaW5oZXJp
dGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZs
YWdzLmVmZmVjdGl2ZURpc3BsYXkoKSA9PSBMSVNUX0lURU0pIHsKKyAgICAgICAgaWYgKG1faW5o
ZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmxpc3RT
dHlsZVR5cGUKKyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRp
b24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbikKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX3RleHRf
YWxpZ24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduCi0gICAgICAgIHx8IGlu
aGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0X3RyYW5zZm9ybQotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbiAhPSBv
dGhlci5pbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxh
Z3MuX3doaXRlX3NwYWNlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UKLSAg
ICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVk
X2ZsYWdzLmNsZWFyKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRp
KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCkpCisgICAgaWYgKG1f
aW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dEFs
aWduCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0KKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFn
cy5kaXJlY3Rpb24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24KKyAgICAgICAg
fHwgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
d2hpdGVTcGFjZQorICAgICAgICB8fCBtX25vbkluaGVyaXRlZEZsYWdzLmNsZWFyKCkgIT0gb3Ro
ZXIubV9ub25Jbmhlcml0ZWRGbGFncy5jbGVhcigpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVk
RmxhZ3MudW5pY29kZUJpZGkoKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVC
aWRpKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgYmxvY2sgZmxvdyBk
aXJlY3Rpb24uCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdz
LndyaXRpbmdNb2RlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGV4dCBjb21iaW5lIG1vZGUuCi0gICAg
aWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRDb21iaW5lICE9IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3RleHRDb21iaW5lKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0Q29tYmluZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0Q29t
YmluZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayBicmVha3MuCi0gICAg
aWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlICE9IG90aGVyLnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2JyZWFrQmVmb3JlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2JyZWFrQWZ0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtB
ZnRlcgotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0luc2lkZSkKKyAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtCZWZvcmUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+YnJlYWtCZWZvcmUKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJl
YWtBZnRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0FmdGVyCisgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrSW5zaWRlICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrSW5zaWRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIE92ZXJmbG93IHJldHVybnMgYSBsYXlvdXQgaGludC4KLSAgICBpZiAobm9uaW5oZXJp
dGVkX2ZsYWdzLm92ZXJmbG93WCgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxv
d1goKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkgIT0gb3RoZXIu
bm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZs
YWdzLm92ZXJmbG93WCgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYKCkK
KyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKSAhPSBvdGhlci5tX25v
bkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIElmIG91ciBib3JkZXIgd2lkdGhzIGNoYW5nZSwgdGhlbiB3ZSBuZWVkIHRvIGxheW91dC4g
IE90aGVyIGNoYW5nZXMgdG8gYm9yZGVycwpAQCAtNzEzLDEzICs3MjksMTMgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1
bnNpZ25lZCYgY2hhbmcKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUgY291
bnRlciBkaXJlY3RpdmVzIGNoYW5nZSwgdHJpZ2dlciBhIHJlbGF5b3V0IHRvIHJlLWNhbGN1bGF0
ZSBjb3VudGVyIHZhbHVlcyBhbmQgcmVidWlsZCB0aGUgY291bnRlciBub2RlIHRyZWUuCi0gICAg
aWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50
ZXJEaXJlY3RpdmVzLCBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0
aXZlcykpCisgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmNvdW50ZXJEaXJlY3RpdmVzLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5j
b3VudGVyRGlyZWN0aXZlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCh2aXNp
YmlsaXR5KCkgPT0gQ09MTEFQU0UpICE9IChvdGhlci52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0Up
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
aGFzT3BhY2l0eSgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkp
IHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugd291bGQgbGlrZSB0byB1c2UgU2ltcGxpZmllZExheW91dCBoZXJlLCBidXQgd2UgY2Fu
J3QgcXVpdGUgZG8gdGhhdCB5ZXQuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNp
bXBsaWZpZWRMYXlvdXQgY2FuIG9wZXJhdGUgY29ycmVjdGx5IG9uIFJlbmRlcklubGluZXMgKHdl
IHdpbGwgbmVlZAogICAgICAgICAvLyB0byBhZGQgYSBzZWxmTmVlZHNTaW1wbGlmaWVkTGF5b3V0
IGJpdCBpbiBvcmRlciB0byBub3QgZ2V0IGNvbmZ1c2VkIGFuZCB0YWludCBldmVyeSBsaW5lKS4K
QEAgLTcyOCwxOSArNzQ0LDE5IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5
b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmls
dGVycygpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkpCisgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAj
aWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pmhhc0JhY2tkcm9wRmlsdGVycygpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNC
YWNrZHJvcEZpbHRlcnMoKSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFj
a2Ryb3BGaWx0ZXJzKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQmFja2Ry
b3BGaWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBpZiAoIWFy
ZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcywgb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPnF1b3RlcykpCisgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcywgb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+
cXVvdGVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocG9zaXRpb24oKSAhPSBT
dGF0aWNQb3NpdGlvbikgewotICAgICAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBvdGhlci5z
dXJyb3VuZC0+b2Zmc2V0KSB7CisgICAgICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0ICE9
IG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZzZXQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSB3b3VsZCBsaWtlIHRvIHVzZSBTaW1wbGlmaWVkTGF5b3V0IGZvciByZWxhdGl2ZSBwb3NpdGlv
bmluZywgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBtYWtlIHN1cmUgU2ltcGxpZmllZExheW91dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkg
b24gUmVuZGVySW5saW5lcyAod2Ugd2lsbCBuZWVkCiAgICAgICAgICAgICAvLyB0byBhZGQgYSBz
ZWxmTmVlZHNTaW1wbGlmaWVkTGF5b3V0IGJpdCBpbiBvcmRlciB0byBub3QgZ2V0IGNvbmZ1c2Vk
IGFuZCB0YWludCBldmVyeSBsaW5lKS4KQEAgLTc0OCw3ICs3NjQsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2ln
bmVkJiBjaGFuZwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICAv
LyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBwb3NpdGlvbmVkIGxheWVyIGlzIG1vdmlu
ZyBidXQgbm90IGNoYW5naW5nIHNpemUuCi0gICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdl
SXNNb3ZlbWVudE9ubHkoc3Vycm91bmQtPm9mZnNldCwgb3RoZXIuc3Vycm91bmQtPm9mZnNldCwg
bV9ib3gtPndpZHRoKCkpKQorICAgICAgICAgICAgaWYgKCFwb3NpdGlvbkNoYW5nZUlzTW92ZW1l
bnRPbmx5KG1fc3Vycm91bmREYXRhLT5vZmZzZXQsIG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZz
ZXQsIG1fYm94RGF0YS0+d2lkdGgoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03NzYsOSArNzkyLDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIs
IHUKICAgICBpZiAocG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5vZmZzZXQgIT0gb3RoZXIuc3Vycm91bmQtPm9m
ZnNldCkgeworICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0ICE9IG90aGVyLm1fc3Vycm91
bmREYXRhLT5vZmZzZXQpIHsKICAgICAgICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJl
IGEgcG9zaXRpb25lZCBsYXllciBpcyBtb3ZpbmcgYnV0IG5vdCBjaGFuZ2luZyBzaXplLgotICAg
ICAgICBpZiAocG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uICYmIHBvc2l0aW9uQ2hhbmdl
SXNNb3ZlbWVudE9ubHkoc3Vycm91bmQtPm9mZnNldCwgb3RoZXIuc3Vycm91bmQtPm9mZnNldCwg
bV9ib3gtPndpZHRoKCkpKQorICAgICAgICBpZiAocG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0
aW9uICYmIHBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkobV9zdXJyb3VuZERhdGEtPm9mZnNl
dCwgb3RoZXIubV9zdXJyb3VuZERhdGEtPm9mZnNldCwgbV9ib3hEYXRhLT53aWR0aCgpKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTc4OCw0MCArODA0LDQwIEBA
IGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29u
c3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1CiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2Vk
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgLy8gU3R5bGVSZXNvbHZl
ciBoYXMgZW5zdXJlZCB0aGF0IHpJbmRleCBpcyBub24tYXV0byBvbmx5IGlmIGl0J3MgYXBwbGlj
YWJsZS4KLSAgICBpZiAobV9ib3gtPnpJbmRleCgpICE9IG90aGVyLm1fYm94LT56SW5kZXgoKSB8
fCBtX2JveC0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1fYm94LT5oYXNBdXRvWkluZGV4KCkp
CisgICAgaWYgKG1fYm94RGF0YS0+ekluZGV4KCkgIT0gb3RoZXIubV9ib3hEYXRhLT56SW5kZXgo
KSB8fCBtX2JveERhdGEtPmhhc0F1dG9aSW5kZXgoKSAhPSBvdGhlci5tX2JveERhdGEtPmhhc0F1
dG9aSW5kZXgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocG9zaXRpb24oKSAh
PSBTdGF0aWNQb3NpdGlvbikgewotICAgICAgICBpZiAodmlzdWFsLT5jbGlwICE9IG90aGVyLnZp
c3VhbC0+Y2xpcCB8fCB2aXN1YWwtPmhhc0NsaXAgIT0gb3RoZXIudmlzdWFsLT5oYXNDbGlwKSB7
CisgICAgICAgIGlmIChtX3Zpc3VhbERhdGEtPmNsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5j
bGlwIHx8IG1fdmlzdWFsRGF0YS0+aGFzQ2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmhhc0Ns
aXApIHsKICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydHlDbGlwUmVjdDsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSkKKyAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAj
ZW5kaWYKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFjaXR5ICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHkpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFj
aXR5KSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydHlPcGFjaXR5OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtl
ZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2ZpbHRlciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9m
aWx0ZXIpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlcikgewogICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5RmlsdGVyOwog
ICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2Uu
CiAgICAgfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYmFja2Ryb3BGaWx0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYmFja2Ryb3BGaWx0ZXIpIHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
YmFja2Ryb3BGaWx0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BG
aWx0ZXIpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBr
ZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KICNlbmRpZgogCi0gICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fbWFzawotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1h
Z2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlKQorICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hc2sKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveElt
YWdlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC04MjksMjYgKzg0NSwyNiBA
QCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJgogCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGlmIChpbmhlcml0ZWRfZmxh
Z3MuX3Zpc2liaWxpdHkgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5Ci0gICAg
ICAgIHx8IGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QgIT0gb3RoZXIuaW5oZXJp
dGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdAotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3Mu
X2luc2lkZUxpbmsgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rCi0gICAgICAg
IHx8IGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbiAhPSBvdGhlci5pbmhlcml0
ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24KLSAgICAgICAgfHwgc3Vycm91bmQtPmJvcmRl
ciAhPSBvdGhlci5zdXJyb3VuZC0+Ym9yZGVyCi0gICAgICAgIHx8ICFtX2JhY2tncm91bmQtPmlz
RXF1aXZhbGVudEZvclBhaW50aW5nKCpvdGhlci5tX2JhY2tncm91bmQpCi0gICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT51
c2VyTW9kaWZ5Ci0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0ICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT51c2VyRHJhZyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRy
YWcKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0ICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdAotICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9vYmplY3RGaXQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
b2JqZWN0Rml0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdFBvc2l0
aW9uICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdFBvc2l0aW9uCi0gICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nKQorICAgIGlmIChtX2luaGVyaXRlZEZsYWdz
LnZpc2liaWxpdHkgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5CisgICAgICAg
IHx8IG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci5tX2luaGVyaXRl
ZEZsYWdzLnByaW50Q29sb3JBZGp1c3QKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5pbnNp
ZGVMaW5rICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluaworICAgICAgICB8fCBt
X2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXIubV9pbmhlcml0ZWRG
bGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uCisgICAgICAgIHx8IG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIgIT0gb3RoZXIubV9zdXJyb3VuZERhdGEtPmJvcmRlcgorICAgICAgICB8fCAhbV9iYWNrZ3Jv
dW5kRGF0YS0+aXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoKm90aGVyLm1fYmFja2dyb3VuZERhdGEp
CisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkgIT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWRE
YXRhLT51c2VyU2VsZWN0ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QK
KyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Ym9yZGVyRml0ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRl
ckZpdAorICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0Rml0CisgICAgICAgIHx8IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm9iamVjdFBvc2l0aW9uICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm9iamVjdFBvc2l0aW9uCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmlt
YWdlUmVuZGVyaW5nICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5n
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9zaGFwZU91dHNpZGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRz
aWRlKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBj
aGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCgpLgotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9jbGlwUGF0aCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aCkg
eworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCkgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xpcFBhdGg7CiAg
ICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4K
ICAgICB9CkBAIC04NTgsMTYgKzg3NCwxNiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbgogCiBi
b29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0
bGluZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJikgY29uc3QKIHsKLSAgICBp
ZiAoaW5oZXJpdGVkLT5jb2xvciAhPSBvdGhlci5pbmhlcml0ZWQtPmNvbG9yCi0gICAgICAgIHx8
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBvdGhlci5pbmhlcml0ZWRfZmxh
Z3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAh
PSBvdGhlci52aXN1YWwtPnRleHREZWNvcmF0aW9uCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25TdHlsZQotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4
dERlY29yYXRpb25Ta2lwICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0
aW9uU2tpcAotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvciAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcgotICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U3Ryb2tlQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c0NvbG9yICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcgotICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCkKKyAgICBpZiAobV9pbmhlcml0ZWREYXRh
LT5jb2xvciAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmNvbG9yCisgICAgICAgIHx8IG1faW5o
ZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4
dERlY29yYXRpb25zCisgICAgICAgIHx8IG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24gIT0g
b3RoZXIubV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbgorICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0RGVjb3JhdGlvbkNvbG9yCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHREZWNvcmF0aW9uU2tpcCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVj
b3JhdGlvblNraXAKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xv
ciAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCisgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvciAhPSBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzQ29sb3IKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lz
RmlsbCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTg3NSwxMiArODkxLDEy
IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVy
T3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJl
cXVpcmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVk
JikgY29uc3QKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdHJhbnNmb3JtU3R5bGUzRAotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Jh
Y2tmYWNlVmlzaWJpbGl0eQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
cGVyc3BlY3RpdmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUK
LSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2lu
WCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblgKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWSAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkpCisgICAg
aWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5nZXQoKSkgeworICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJh
bnNmb3JtU3R5bGUzRCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1T
dHlsZTNECisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZp
c2liaWxpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VWaXNpYmls
aXR5CisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZSAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWAorICAgICAgICAgICAgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtOTQ0LDE2OCArOTYwLDE1MCBAQCBib29sIFJlbmRlclN0eWxl
OjpkaWZmUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29s
IGlzQ29tcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xp
cChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0aCBib3R0b20sIExlbmd0aCBsZWZ0KQor
dm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBM
ZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQpCiB7Ci0gICAgU3R5bGVWaXN1YWxEYXRhKiBk
YXRhID0gdmlzdWFsLmFjY2VzcygpOwotICAgIGRhdGEtPmNsaXAudG9wKCkgPSB0b3A7Ci0gICAg
ZGF0YS0+Y2xpcC5yaWdodCgpID0gcmlnaHQ7Ci0gICAgZGF0YS0+Y2xpcC5ib3R0b20oKSA9IGJv
dHRvbTsKLSAgICBkYXRhLT5jbGlwLmxlZnQoKSA9IGxlZnQ7CisgICAgYXV0byYgZGF0YSA9IG1f
dmlzdWFsRGF0YS5hY2Nlc3MoKTsKKyAgICBkYXRhLmNsaXAudG9wKCkgPSBXVEZNb3ZlKHRvcCk7
CisgICAgZGF0YS5jbGlwLnJpZ2h0KCkgPSBXVEZNb3ZlKHJpZ2h0KTsKKyAgICBkYXRhLmNsaXAu
Ym90dG9tKCkgPSBXVEZNb3ZlKGJvdHRvbSk7CisgICAgZGF0YS5jbGlwLmxlZnQoKSA9IFdURk1v
dmUobGVmdCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihSZWZQdHI8U3R5bGVJ
bWFnZT4mJiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiB7Ci0gICAgaWYgKCFyYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKLSAgICAgICAgcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVhdGUoKTsKLSAgICBy
YXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEo
V1RGTW92ZShpbWFnZSksIGhvdFNwb3QpKTsKKyAgICBhdXRvJiBjdXJzb3JEYXRhID0gbV9yYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhOworICAgIGlmICghY3Vyc29yRGF0YSkK
KyAgICAgICAgY3Vyc29yRGF0YSA9IEN1cnNvckxpc3Q6OmNyZWF0ZSgpOworICAgIGN1cnNvckRh
dGEtPmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7CiB9CiAKIHZv
aWQgUmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYgbGlzdCkK
IHsKLSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IFdURk1vdmUo
bGlzdCk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhID0gV1RG
TW92ZShsaXN0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0UXVvdGVzKFJlZlB0cjxRdW90
ZXNEYXRhPiYmIHEpCiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgPT0gcSB8
fCAocmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICpyYXJlSW5oZXJpdGVkRGF0YS0+
cXVvdGVzID09ICpxKSkKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09IHEg
fHwgKG1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyAmJiBxICYmICptX3JhcmVJbmhlcml0ZWRE
YXRhLT5xdW90ZXMgPT0gKnEpKQogICAgICAgICByZXR1cm47CiAKLSAgICByYXJlSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+cXVvdGVzID0gV1RGTW92ZShxKTsKKyAgICBtX3JhcmVJbmhlcml0ZWRE
YXRhLmFjY2VzcygpLnF1b3RlcyA9IFdURk1vdmUocSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OnNldFdpbGxDaGFuZ2UoUmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiYmIHdpbGxDaGFuZ2VEYXRhKQog
ewotICAgIGlmIChhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3dpbGxDaGFuZ2UuZ2V0KCksIHdpbGxDaGFuZ2VEYXRhLmdldCgpKSkKKyAgICBpZiAoYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLmdldCgp
LCB3aWxsQ2hhbmdlRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3dpbGxDaGFuZ2UgPSBXVEZNb3ZlKHdpbGxDaGFuZ2VE
YXRhKTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLndpbGxDaGFuZ2UgPSBX
VEZNb3ZlKHdpbGxDaGFuZ2VEYXRhKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJz
b3JMaXN0KCkKIHsKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEpCi0gICAg
ICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gbnVsbHB0cjsKKyAg
ICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgbV9yYXJlSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JEYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5k
ZXJTdHlsZTo6Y2xlYXJDb250ZW50KCkKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fY29udGVudCkKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29u
dGVudCA9IG51bGxwdHI7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvbnRlbnQp
CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY29udGVudCA9IG51bGxw
dHI7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFwcGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnREYXRhPiBjb250ZW50RGF0YSkKK3N0YXRpYyBpbmxpbmUgQ29udGVudERhdGEmIGxh
c3RDb250ZW50KENvbnRlbnREYXRhJiBmaXJzdENvbnRlbnQpCiB7Ci0gICAgYXV0byYgY29udGVu
dCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQ7Ci0gICAgQ29udGVu
dERhdGEqIGxhc3RDb250ZW50ID0gY29udGVudC5nZXQoKTsKLSAgICB3aGlsZSAobGFzdENvbnRl
bnQgJiYgbGFzdENvbnRlbnQtPm5leHQoKSkKLSAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29u
dGVudC0+bmV4dCgpOworICAgIGF1dG8qIGxhc3RDb250ZW50ID0gJmZpcnN0Q29udGVudDsKKyAg
ICBmb3IgKGF1dG8qIGNvbnRlbnQgPSAmZmlyc3RDb250ZW50OyBjb250ZW50OyBjb250ZW50ID0g
Y29udGVudC0+bmV4dCgpKQorICAgICAgICBsYXN0Q29udGVudCA9IGNvbnRlbnQ7CisgICAgcmV0
dXJuICpsYXN0Q29udGVudDsKK30KIAotICAgIGlmIChsYXN0Q29udGVudCkKLSAgICAgICAgbGFz
dENvbnRlbnQtPnNldE5leHQoV1RGTW92ZShjb250ZW50RGF0YSkpOwotICAgIGVsc2UKLSAgICAg
ICAgY29udGVudCA9IFdURk1vdmUoY29udGVudERhdGEpOwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNvbnRlbnREYXRhLCBib29sIGFk
ZCkKK3sKKyAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsK
KyAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkKKyAgICAgICAgbGFzdENvbnRlbnQoKmRhdGEu
Y29udGVudCkuc2V0TmV4dChXVEZNb3ZlKGNvbnRlbnREYXRhKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIGRhdGEuY29udGVudCA9IFdURk1vdmUoY29udGVudERhdGEpOworICAgICAgICBhdXRvJiBh
bHRUZXh0ID0gZGF0YS5hbHRUZXh0OworICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCisg
ICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CisgICAgfQogfQog
CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdl
LCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgICAg
IAotICAgIGlmIChhZGQpIHsKLSAgICAgICAgYXBwZW5kQ29udGVudChzdGQ6Om1ha2VfdW5pcXVl
PEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25O
dWxsKCkpOwotICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4
dC5pc051bGwoKSkKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29u
dGVudC0+c2V0QWx0VGV4dChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0
KTsKKyAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1h
Z2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogewotICAgIGF1dG8mIGNvbnRl
bnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50OwotICAgIGlmIChh
ZGQpIHsKLSAgICAgICAgQ29udGVudERhdGEqIGxhc3RDb250ZW50ID0gY29udGVudC5nZXQoKTsK
LSAgICAgICAgd2hpbGUgKGxhc3RDb250ZW50ICYmIGxhc3RDb250ZW50LT5uZXh0KCkpCi0gICAg
ICAgICAgICBsYXN0Q29udGVudCA9IGxhc3RDb250ZW50LT5uZXh0KCk7Ci0KLSAgICAgICAgaWYg
KGxhc3RDb250ZW50KSB7Ci0gICAgICAgICAgICAvLyBXZSBhdHRlbXB0IHRvIG1lcmdlIHdpdGgg
dGhlIGxhc3QgQ29udGVudERhdGEgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiAoaXM8VGV4
dENvbnRlbnREYXRhPigqbGFzdENvbnRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgVGV4dENvbnRl
bnREYXRhJiB0ZXh0Q29udGVudCA9IGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmxhc3RDb250
ZW50KTsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGVudC5zZXRUZXh0KHRleHRDb250ZW50LnRl
eHQoKSArIHN0cmluZyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBsYXN0
Q29udGVudC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5n
KSk7Ci0KLSAgICAgICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
YWx0VGV4dC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBsYXN0Q29udGVudC0+c2V0QWx0VGV4
dChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0KTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KTsKKyAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgeworICAgICAgICBhdXRvJiBsYXN0ID0g
bGFzdENvbnRlbnQoKmRhdGEuY29udGVudCk7CisgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnRE
YXRhPihsYXN0KSkKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0
byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3QpOworICAgICAg
ICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwog
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGF1dG8mIGFsdFRleHQg
PSBkYXRhLmFsdFRleHQ7CisgICAgICAgIGlmICghYWx0VGV4dC5pc051bGwoKSkKKyAgICAgICAg
ICAgIGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChhbHRUZXh0KTsKICAgICB9Ci0KLSAgICBjb250
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7Ci0gICAgaWYg
KCFyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0LmlzTnVsbCgpKQotICAg
ICAgICBjb250ZW50LT5zZXRBbHRUZXh0KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2FsdFRleHQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVl
X3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3Vu
dGVyKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIGFwcGVuZENv
bnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRl
cikpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0
YT4oV1RGTW92ZShjb3VudGVyKSk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENv
dW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBp
ZiAoYWRkKSB7Ci0gICAgICAgIGFwcGVuZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNv
bnRlbnREYXRhPihxdW90ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UXVv
dGVDb250ZW50RGF0YT4ocXVvdGUpOworICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxR
dW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRleHQgPSBzdHJpbmc7Ci0gICAgCi0gICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQtPnNldEFsdFRleHQoc3RyaW5nKTsKKyAg
ICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAgICBkYXRh
LmFsdFRleHQgPSBzdHJpbmc7CisgICAgaWYgKGRhdGEuY29udGVudCkKKyAgICAgICAgZGF0YS5j
b250ZW50LT5zZXRBbHRUZXh0KHN0cmluZyk7CiB9CiAKIGNvbnN0IFN0cmluZyYgUmVuZGVyU3R5
bGU6OmNvbnRlbnRBbHRUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWx0VGV4dDsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWx0
VGV4dDsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0SGFzQXR0ckNvbnRlbnQoKQogewogICAg
IHNldFVuaXF1ZSgpOwotICAgIFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faGFzQXR0
ckNvbnRlbnQsIHRydWUpOworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaGFz
QXR0ckNvbnRlbnQsIHRydWUpOwogfQogCi0vLyBGSVhNRTogdXNlIGFmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4oKS4KIHN0YXRpYyBpbmxpbmUgYm9vbCByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKGNv
bnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPj4mIHRyYW5zZm9ybU9wZXJhdGlv
bnMsIFJlbmRlclN0eWxlOjpBcHBseVRyYW5zZm9ybU9yaWdpbiBhcHBseU9yaWdpbikKIHsKLSAg
ICAvLyB0cmFuc2Zvcm0tb3JpZ2luIGJyYWNrZXRzIHRoZSB0cmFuc2Zvcm0gd2l0aCB0cmFuc2xh
dGUgb3BlcmF0aW9ucy4KLSAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG9u
bHkgdHJhbnNmb3JtIGlzIGEgdHJhbnNsYXRpb24sIHNpbmNlIHRoZSB0cmFuc2Zvcm0tb3JpZ2lu
IGlzIGlycmVsZXZhbnQKLSAgICAvLyBpbiB0aGF0IGNhc2UuCisgICAgLy8gVGhlIHRyYW5zZm9y
bS1vcmlnaW4gcHJvcGVydHkgYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRoIHRyYW5zbGF0ZSBv
cGVyYXRpb25zLgorICAgIC8vIFdoZW4gdGhlIG9ubHkgdHJhbnNmb3JtIGlzIGEgdHJhbnNsYXRp
b24sIHRoZSB0cmFuc2Zvcm0tb3JpZ2luIGlzIGlycmVsZXZhbnQuCisKICAgICBpZiAoYXBwbHlP
cmlnaW4gIT0gUmVuZGVyU3R5bGU6OkluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0
aW9ucykgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9
IG9wZXJhdGlvbi0+dHlwZSgpOwotICAgICAgICBpZiAodHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9YCisgICAgICAgIC8vIEZJWE1FOiBVc2UgYWZmZWN0ZWRCeVRyYW5zZm9y
bU9yaWdpbigpLgorICAgICAgICBhdXRvIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUKKyAgICAgICAgICAg
ICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0QKKyAgICAgICAgICAg
ICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWAogICAgICAgICAgICAg
JiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZCi0gICAgICAgICAgICAm
JiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFIAotICAgICAgICAgICAgJiYg
dHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aCi0gICAgICAgICAgICAmJiB0
eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEKQorICAgICAgICAgICAgJiYg
dHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMTE0LDcgKzExMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbgogCiB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBBcHBseVRy
YW5zZm9ybU9yaWdpbiBhcHBseU9yaWdpbikgY29uc3QKIHsKLSAgICBhdXRvJiBvcGVyYXRpb25z
ID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0
aW9ucygpOworICAgIGF1dG8mIG9wZXJhdGlvbnMgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
cmFuc2Zvcm0tPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpOwogICAgIGJvb2wgYXBwbHlUcmFuc2Zv
cm1PcmlnaW4gPSByZXF1aXJlVHJhbnNmb3JtT3JpZ2luKG9wZXJhdGlvbnMsIGFwcGx5T3JpZ2lu
KTsKIAogICAgIGZsb2F0IG9mZnNldFggPSB0cmFuc2Zvcm1PcmlnaW5YKCkuaXNQZXJjZW50KCkg
PyBib3VuZGluZ0JveC54KCkgOiAwOwpAQCAtMTE1MSw3OCArMTE0OSw5MSBAQCB2b2lkIFJlbmRl
clN0eWxlOjpzZXRUZXh0U2hhZG93KHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBzaGFkb3dE
YXRhLCBib29sIGFkZAogewogICAgIEFTU0VSVCghc2hhZG93RGF0YSB8fCAoIXNoYWRvd0RhdGEt
PnNwcmVhZCgpICYmIHNoYWRvd0RhdGEtPnN0eWxlKCkgPT0gTm9ybWFsKSk7CiAKLSAgICBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKiByYXJlRGF0YSA9IHJhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
OworICAgIGF1dG8mIHJhcmVEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAg
ICBpZiAoIWFkZCkgewotICAgICAgICByYXJlRGF0YS0+dGV4dFNoYWRvdyA9IFdURk1vdmUoc2hh
ZG93RGF0YSk7CisgICAgICAgIHJhcmVEYXRhLnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0Rh
dGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2hhZG93RGF0YS0+c2V0TmV4dChX
VEZNb3ZlKHJhcmVEYXRhLT50ZXh0U2hhZG93KSk7Ci0gICAgcmFyZURhdGEtPnRleHRTaGFkb3cg
PSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShy
YXJlRGF0YS50ZXh0U2hhZG93KSk7CisgICAgcmFyZURhdGEudGV4dFNoYWRvdyA9IFdURk1vdmUo
c2hhZG93RGF0YSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyhzdGQ6OnVu
aXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQpCiB7Ci0gICAgU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YSogcmFyZURhdGEgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCk7CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RG
TW92ZShzaGFkb3dEYXRhKTsKKyAgICAgICAgcmFyZURhdGEuYm94U2hhZG93ID0gV1RGTW92ZShz
aGFkb3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNoYWRvd0RhdGEtPnNl
dE5leHQoV1RGTW92ZShyYXJlRGF0YS0+bV9ib3hTaGFkb3cpKTsKLSAgICByYXJlRGF0YS0+bV9i
b3hTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOworICAgIHNoYWRvd0RhdGEtPnNldE5leHQo
V1RGTW92ZShyYXJlRGF0YS5ib3hTaGFkb3cpKTsKKyAgICByYXJlRGF0YS5ib3hTaGFkb3cgPSBX
VEZNb3ZlKHNoYWRvd0RhdGEpOwogfQogCiBzdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNS
YWRpaUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUp
CiB7Ci0gICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRpaSgKLSAgICAgICAgTGF5b3V0U2l6ZSh2
YWx1ZUZvckxlbmd0aChib3JkZXIudG9wTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0g
ICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLCBzaXpl
LmhlaWdodCgpKSksCi0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRv
cFJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSksCi0gICAgICAg
IExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLCBz
aXplLndpZHRoKCkpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxl
ZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVl
Rm9yTGVuZ3RoKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0g
ICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwg
c2l6ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4geworICAgICAgICBzaXplRm9yTGVuZ3RoU2l6
ZShib3JkZXIudG9wTGVmdCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9y
ZGVyLnRvcFJpZ2h0KCksIHNpemUpLAorICAgICAgICBzaXplRm9yTGVuZ3RoU2l6ZShib3JkZXIu
Ym90dG9tTGVmdCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVyLmJv
dHRvbVJpZ2h0KCksIHNpemUpCisgICAgfTsKIH0KIAotU3R5bGVJbWFnZSogUmVuZGVyU3R5bGU6
Omxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmxpc3RT
dHlsZUltYWdlLmdldCgpOyB9CitTdHlsZUltYWdlKiBSZW5kZXJTdHlsZTo6bGlzdFN0eWxlSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5n
ZXQoKTsgfQorCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZShSZWZQdHI8U3R5
bGVJbWFnZT4mJiB2KQogewotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1h
Z2UgIT0gdikKLSAgICAgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmxpc3RTdHlsZUlt
YWdlID0gV1RGTW92ZSh2KTsKKyAgICBpZiAobV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxl
SW1hZ2UgIT0gdikKKyAgICAgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5saXN0U3R5
bGVJbWFnZSA9IFdURk1vdmUodik7CiB9CiAKIGNvbnN0IENvbG9yJiBSZW5kZXJTdHlsZTo6Y29s
b3IoKSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0ZWQtPmNvbG9yOworICAgIHJldHVybiBt
X2luaGVyaXRlZERhdGEtPmNvbG9yOwogfQogCiBjb25zdCBDb2xvciYgUmVuZGVyU3R5bGU6OnZp
c2l0ZWRMaW5rQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBpbmhlcml0ZWQtPnZpc2l0ZWRM
aW5rQ29sb3I7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtDb2xvcjsK
IH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIHYpCiB7Ci0gICAg
U0VUX1ZBUihpbmhlcml0ZWQsIGNvbG9yLCB2KTsKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0
YSwgY29sb3IsIHYpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9y
KGNvbnN0IENvbG9yJiB2KQogewotICAgIFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0Nv
bG9yLCB2KTsKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtDb2xvciwg
dik7Cit9CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+aG9yaXpvbnRhbEJvcmRlclNwYWNp
bmc7CiB9CiAKLWZsb2F0IFJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNv
bnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsgfQotZmxv
YXQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGlu
aGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dEhvcml6b250YWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0
aWNhbEJvcmRlclNwYWNpbmcoZmxvYXQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxf
Ym9yZGVyX3NwYWNpbmcsIHYpOyB9CitmbG9hdCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJT
cGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT52ZXJ0aWNhbEJv
cmRlclNwYWNpbmc7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKGZsb2F0IHYpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIGhvcml6b250
YWxCb3JkZXJTcGFjaW5nLCB2KTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxC
b3JkZXJTcGFjaW5nKGZsb2F0IHYpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIHZl
cnRpY2FsQm9yZGVyU3BhY2luZywgdik7Cit9CiAKIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpn
ZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QK
IHsKICAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChib3JkZXJSZWN0KTsKICAgICBpZiAoaGFz
Qm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2Fs
Y1JhZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIGJvcmRlclJlY3Quc2l6ZSgpKTsKKyAgICAgICAg
Um91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1JhZGlpRm9yKG1fc3Vycm91bmREYXRhLT5i
b3JkZXIsIGJvcmRlclJlY3Quc2l6ZSgpKTsKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0JvcmRl
clJhZGlpQ29uc3RyYWludFNjYWxlRm9yKGJvcmRlclJlY3QsIHJhZGlpKSk7CiAgICAgICAgIHJv
dW5kZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
ICAgICB9CkBAIC0xMjMyLDQxICsxMjQzLDMzIEBAIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpn
ZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wKIFJv
dW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewogICAgIGJvb2wgaG9yaXpvbnRhbCA9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0KLSAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCA9ICgh
aG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNhbExlZnRFZGdlKSA/IGJvcmRlckxlZnRXaWR0aCgp
IDogMDsKLSAgICBMYXlvdXRVbml0IHJpZ2h0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyUmlnaHRXaWR0aCgpIDogMDsKLSAgICBMYXlvdXRV
bml0IHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBi
b3JkZXJUb3BXaWR0aCgpIDogMDsKLSAgICBMYXlvdXRVbml0IGJvdHRvbVdpZHRoID0gKGhvcml6
b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6
IDA7Ci0KKyAgICBhdXRvIGxlZnRXaWR0aCA9ICghaG9yaXpvbnRhbCB8fCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlKSA/IGJvcmRlckxlZnRXaWR0aCgpIDogMDsKKyAgICBhdXRvIHJpZ2h0V2lkdGgg
PSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyUmlnaHRX
aWR0aCgpIDogMDsKKyAgICBhdXRvIHRvcFdpZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSkgPyBib3JkZXJUb3BXaWR0aCgpIDogMDsKKyAgICBhdXRvIGJvdHRvbVdp
ZHRoID0gKGhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpID8gYm9yZGVyQm90
dG9tV2lkdGgoKSA6IDA7CiAgICAgcmV0dXJuIGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3Jk
ZXJSZWN0LCB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQogCiBSb3Vu
ZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91
dFJlY3QmIGJvcmRlclJlY3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9t
V2lkdGgsCiAgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQgcmlnaHRXaWR0aCwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KSBjb25zdAogewotICAgIExheW91dFJlY3QgaW5uZXJSZWN0KGJvcmRlclJlY3QueCgpICsgbGVm
dFdpZHRoLCAKLSAgICAgICAgICAgICAgIGJvcmRlclJlY3QueSgpICsgdG9wV2lkdGgsIAotICAg
ICAgICAgICAgICAgYm9yZGVyUmVjdC53aWR0aCgpIC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwg
Ci0gICAgICAgICAgICAgICBib3JkZXJSZWN0LmhlaWdodCgpIC0gdG9wV2lkdGggLSBib3R0b21X
aWR0aCk7Ci0KLSAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChpbm5lclJlY3QpOwotCisgICAg
Um91bmRlZFJlY3Qgcm91bmRlZFJlY3QgeyB7IGJvcmRlclJlY3QueCgpICsgbGVmdFdpZHRoLCBi
b3JkZXJSZWN0LnkoKSArIHRvcFdpZHRoLAorICAgICAgICBib3JkZXJSZWN0LndpZHRoKCkgLSBs
ZWZ0V2lkdGggLSByaWdodFdpZHRoLCBib3JkZXJSZWN0LmhlaWdodCgpIC0gdG9wV2lkdGggLSBi
b3R0b21XaWR0aCB9IH07CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJv
dW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCku
cmFkaWkoKTsKKyAgICAgICAgYXV0byByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVy
UmVjdCkucmFkaWkoKTsKICAgICAgICAgcmFkaWkuc2hyaW5rKHRvcFdpZHRoLCBib3R0b21XaWR0
aCwgbGVmdFdpZHRoLCByaWdodFdpZHRoKTsKICAgICAgICAgcm91bmRlZFJlY3QuaW5jbHVkZUxv
Z2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIH0KICAgICByZXR1cm4g
cm91bmRlZFJlY3Q7CiB9CiAKLXN0YXRpYyBib29sIGFsbExheWVyc0FyZUZpeGVkKGNvbnN0IEZp
bGxMYXllciogbGF5ZXIpCitzdGF0aWMgYm9vbCBhbGxMYXllcnNBcmVGaXhlZChjb25zdCBGaWxs
TGF5ZXImIGxheWVycykKIHsKLSAgICBib29sIGFsbEZpeGVkID0gdHJ1ZTsKLSAgICAKLSAgICBm
b3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXI7IGN1cnJMYXllcjsgY3Vyckxh
eWVyID0gY3VyckxheWVyLT5uZXh0KCkpCi0gICAgICAgIGFsbEZpeGVkICY9IChjdXJyTGF5ZXIt
PmltYWdlKCkgJiYgY3VyckxheWVyLT5hdHRhY2htZW50KCkgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0
YWNobWVudCk7Ci0KLSAgICByZXR1cm4gbGF5ZXIgJiYgYWxsRml4ZWQ7CisgICAgZm9yIChhdXRv
KiBsYXllciA9ICZsYXllcnM7IGxheWVyOyBsYXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAg
ICAgaWYgKCEobGF5ZXItPmltYWdlKCkgJiYgbGF5ZXItPmF0dGFjaG1lbnQoKSA9PSBGaXhlZEJh
Y2tncm91bmRBdHRhY2htZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0VudGlyZWx5Rml4ZWRC
YWNrZ3JvdW5kKCkgY29uc3QKQEAgLTEyNzYsMTIgKzEyNzksMTIgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6aGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSBjb25zdAogCiBjb25zdCBDb3VudGVyRGly
ZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRpcmVjdGl2ZXMoKSBjb25zdAogewotICAg
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQoKTsK
KyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMuZ2V0
KCk7CiB9CiAKIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVy
RGlyZWN0aXZlcygpCiB7Ci0gICAgYXV0byYgbWFwID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fY291bnRlckRpcmVjdGl2ZXM7CisgICAgYXV0byYgbWFwID0gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb3VudGVyRGlyZWN0aXZlczsKICAgICBpZiAoIW1hcCkKICAg
ICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAg
IHJldHVybiAqbWFwOwpAQCAtMTI5OCw3ICsxMzAxLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBS
ZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaHlwaGVucygp
ICE9IEh5cGhlbnNOb25lKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25T
dHJpbmcgPSByYXJlSW5oZXJpdGVkRGF0YS5nZXQoKS0+aHlwaGVuYXRpb25TdHJpbmc7CisgICAg
YXV0byYgaHlwaGVuYXRpb25TdHJpbmcgPSBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
blN0cmluZzsKICAgICBpZiAoIWh5cGhlbmF0aW9uU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gaHlwaGVuYXRpb25TdHJpbmc7CiAKQEAgLTEzNTAsNiArMTM1Myw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAog
fQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorCiBjb25zdCBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
PiBlbXB0eUxpc3Q7CkBAIC0xMzYwLDMwICsxMzY0LDIzIEBAIGNvbnN0IFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+IG5v
bmVMaXN0OwogICAgIHN0YXRpYyBib29sIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQog
ICAgIGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewotICAgICAgICBTdHlsZURhc2hib2FyZFJl
Z2lvbiByZWdpb247Ci0gICAgICAgIHJlZ2lvbi5sYWJlbCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgID0gTGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZz
ZXQucmlnaHQoKSA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0g
TGVuZ3RoKCk7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gTGVuZ3RoKCk7Ci0gICAg
ICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmU7Ci0gICAgICAgIG5v
bmVMaXN0LmdldCgpLmFwcGVuZChyZWdpb24pOworICAgICAgICBub25lTGlzdC5nZXQoKS5hcHBl
bmQoU3R5bGVEYXNoYm9hcmRSZWdpb24geyBlbXB0eVN0cmluZygpLCB7IH0sIFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpOb25lIH0pOwogICAgICAgICBub25lTGlzdEluaXRpYWxpemVkID0gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIG5vbmVMaXN0OwogfQorCiAjZW5kaWYKIAogdm9pZCBSZW5kZXJT
dHlsZTo6YWRqdXN0QW5pbWF0aW9ucygpCiB7Ci0gICAgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9u
TGlzdCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0KCk7CisgICAgYXV0
byogYW5pbWF0aW9uTGlzdCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0
KCk7CiAgICAgaWYgKCFhbmltYXRpb25MaXN0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBH
ZXQgcmlkIG9mIGVtcHR5IGFuaW1hdGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVtCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25MaXN0LT5zaXplKCk7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYW5pbWF0aW9uTGlzdC0+c2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIGlmIChhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBhbmltYXRpb25MaXN0LT5yZXNpemUoaSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE0MDEsMTIgKzEzOTgsMTIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0
QW5pbWF0aW9ucygpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIHsK
LSAgICBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9uTGlzdCA9IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zaXRpb25zLmdldCgpOworICAgIGF1dG8qIHRyYW5zaXRpb25MaXN0ID0gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMuZ2V0KCk7CiAgICAgaWYgKCF0cmFuc2l0aW9u
TGlzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHJpZCBvZiBlbXB0eSB0cmFuc2l0
aW9ucyBhbmQgYW55dGhpbmcgYmV5b25kIHRoZW0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gdHJhbnNpdGlvbkxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBp
ZiAodHJhbnNpdGlvbkxpc3QtPmFuaW1hdGlvbihpKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IHRyYW5zaXRpb25MaXN0LT5yZXNpemUoaSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0MjEs
MTAgKzE0MTgsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogICAg
IC8vIFJlcGVhdCBwYXR0ZXJucyBpbnRvIGxheWVycyB0aGF0IGRvbid0IGhhdmUgc29tZSBwcm9w
ZXJ0aWVzIHNldC4KICAgICB0cmFuc2l0aW9uTGlzdC0+ZmlsbFVuc2V0UHJvcGVydGllcygpOwog
Ci0gICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgcHJvcGVydGllcy4gVGhp
cyBpcyBhbiBPKG5eMikgYWxnb3JpdGhtCi0gICAgLy8gYnV0IHRoZSBsaXN0cyB0ZW5kIHRvIGJl
IHZlcnkgc2hvcnQsIHNvIGl0IGlzIHByb2JhYmx5IG9rCisgICAgLy8gTWFrZSBzdXJlIHRoZXJl
IGFyZSBubyBkdXBsaWNhdGUgcHJvcGVydGllcy4KKyAgICAvLyBUaGlzIGlzIGFuIE8obl4yKSBh
bGdvcml0aG0gYnV0IHRoZSBsaXN0cyB0ZW5kIHRvIGJlIHNob3J0LCBzbyBpdCBpcyBwcm9iYWJs
eSBPSy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7
ICsraSkgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gaSsxOyBqIDwgdHJhbnNpdGlvbkxpc3Qt
PnNpemUoKTsgKytqKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IHRyYW5z
aXRpb25MaXN0LT5zaXplKCk7ICsraikgewogICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25MaXN0
LT5hbmltYXRpb24oaSkucHJvcGVydHkoKSA9PSB0cmFuc2l0aW9uTGlzdC0+YW5pbWF0aW9uKGop
LnByb3BlcnR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyB0b3NzIGkKICAgICAgICAgICAgICAg
ICB0cmFuc2l0aW9uTGlzdC0+cmVtb3ZlKGkpOwpAQCAtMTQzNiw2MiArMTQzMywxMDcgQEAgdm9p
ZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogCiBBbmltYXRpb25MaXN0JiBSZW5k
ZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
PigpOwotICAgIHJldHVybiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9uczsKKyAg
ICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKKyAgICAg
ICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3Vy
ZVRyYW5zaXRpb25zKCkKIHsKLSAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX3RyYW5zaXRpb25zKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV90cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKLSAgICBy
ZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zOworICAgIGlmICghbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKKyAgICAgICAgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
QW5pbWF0aW9uTGlzdD4oKTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zaXRpb25zOwogfQogCiBjb25zdCBBbmltYXRpb24qIFJlbmRlclN0eWxlOjp0cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAodHJh
bnNpdGlvbnMoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaXRpb25z
KCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBBbmltYXRpb24mIHAgPSB0cmFu
c2l0aW9ucygpLT5hbmltYXRpb24oaSk7Ci0gICAgICAgICAgICBpZiAocC5hbmltYXRpb25Nb2Rl
KCkgPT0gQW5pbWF0aW9uOjpBbmltYXRlQWxsIHx8IHAucHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiAmcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQor
ICAgIGF1dG8qIHRyYW5zaXRpb25zID0gdGhpcy0+dHJhbnNpdGlvbnMoKTsKKyAgICBpZiAoIXRy
YW5zaXRpb25zKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0g
MCwgc2l6ZSA9IHRyYW5zaXRpb25zLT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
YXV0byYgYW5pbWF0aW9uID0gdHJhbnNpdGlvbnMtPmFuaW1hdGlvbihpKTsKKyAgICAgICAgaWYg
KGFuaW1hdGlvbi5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uOjpBbmltYXRlQWxsIHx8IGFu
aW1hdGlvbi5wcm9wZXJ0eSgpID09IHByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuICZhbmlt
YXRpb247CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1j
b25zdCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkLT5mb250Q2FzY2FkZTsgfQotY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0
eWxlOjpmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUu
Zm9udE1ldHJpY3MoKTsgfQotY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyU3R5
bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2Nh
ZGUuZm9udERlc2NyaXB0aW9uKCk7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZpZWRGb250
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsg
fQotZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBm
b250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsgfQotaW50IFJlbmRlclN0eWxlOjpmb250
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGUucGl4ZWxTaXplKCk7
IH0KK2NvbnN0IEZvbnRDYXNjYWRlJiBSZW5kZXJTdHlsZTo6Zm9udENhc2NhZGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlOworfQogCi1jb25zdCBM
ZW5ndGgmIFJlbmRlclN0eWxlOjp3b3JkU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhl
cml0ZWREYXRhLT53b3JkU3BhY2luZzsgfQotZmxvYXQgUmVuZGVyU3R5bGU6OmxldHRlclNwYWNp
bmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLmxldHRlclNwYWNpbmco
KTsgfQorY29uc3QgRm9udE1ldHJpY3MmIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9udE1ldHJpY3Mo
KTsKK30KIAotYm9vbCBSZW5kZXJTdHlsZTo6c2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mIHYpCitjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5k
ZXJTdHlsZTo6Zm9udERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5oZXJpdGVkLT5m
b250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSAhPSB2KSB7Ci0gICAgICAgIGluaGVyaXRlZC5h
Y2Nlc3MoKS0+Zm9udENhc2NhZGUgPSBGb250Q2FzY2FkZSh2LCBpbmhlcml0ZWQtPmZvbnRDYXNj
YWRlLmxldHRlclNwYWNpbmcoKSwgaW5oZXJpdGVkLT5mb250Q2FzY2FkZS53b3JkU3BhY2luZygp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKTsKK30K
KworZmxvYXQgUmVuZGVyU3R5bGU6OnNwZWNpZmllZEZvbnRTaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworfQorCitmbG9hdCBSZW5k
ZXJTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZvbnREZXNj
cmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworfQorCitpbnQgUmVuZGVyU3R5bGU6OmZvbnRTaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5waXhl
bFNpemUoKTsKK30KKworY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT53b3JkU3BhY2luZzsKK30K
KworZmxvYXQgUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmxldHRlclNwYWNpbmcoKTsKIH0KIAorYm9v
bCBSZW5kZXJTdHlsZTo6c2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIGlmIChtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNj
YWRlLmZvbnREZXNjcmlwdGlvbigpID09IGRlc2NyaXB0aW9uKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYXV0byYgY2FzY2FkZSA9IG1faW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2Fz
Y2FkZTsKKyAgICBjYXNjYWRlID0geyBkZXNjcmlwdGlvbiwgY2FzY2FkZS5sZXR0ZXJTcGFjaW5n
KCksIGNhc2NhZGUud29yZFNwYWNpbmcoKSB9OworICAgIHJldHVybiB0cnVlOworfQorCitjb25z
dCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QKK3sKICNp
ZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3Bl
Y2lmaWVkTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+c3BlY2lmaWVkTGlu
ZUhlaWdodDsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5n
dGggdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgc3BlY2lmaWVkTGluZUhlaWdodCwgdik7IH0KKyAg
ICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0OwogI2Vsc2UKLWNv
bnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0OyB9CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0
YS0+bGluZUhlaWdodDsKICNlbmRpZgorfQogCi1MZW5ndGggUmVuZGVyU3R5bGU6OmxpbmVIZWln
aHQoKSBjb25zdAorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQogewotICAgIHJldHVy
biBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0OworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCBz
cGVjaWZpZWRMaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkpOworfQorCisjZW5kaWYKKworY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6bGluZUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faW5oZXJpdGVkRGF0YS0+bGluZUhlaWdodDsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
TGluZUhlaWdodChMZW5ndGgmJiBoZWlnaHQpCit7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERh
dGEsIGxpbmVIZWlnaHQsIFdURk1vdmUoaGVpZ2h0KSk7CiB9Ci12b2lkIFJlbmRlclN0eWxlOjpz
ZXRMaW5lSGVpZ2h0KExlbmd0aCBzcGVjaWZpZWRMaW5lSGVpZ2h0KSB7IFNFVF9WQVIoaW5oZXJp
dGVkLCBsaW5lX2hlaWdodCwgc3BlY2lmaWVkTGluZUhlaWdodCk7IH0KIAogaW50IFJlbmRlclN0
eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdAogewpAQCAtMTUwNyw3ICsxNTQ5LDcgQEAg
aW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBj
bGFtcFRvPGludD4obGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFdvcmRT
cGFjaW5nKExlbmd0aCB2YWx1ZSkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFdvcmRTcGFjaW5nKExl
bmd0aCYmIHZhbHVlKQogewogICAgIGZsb2F0IGZvbnRXb3JkU3BhY2luZzsKICAgICBzd2l0Y2gg
KHZhbHVlLnR5cGUoKSkgewpAQCAtMTUyOCwxMSArMTU3MCwxMSBAQCB2b2lkIFJlbmRlclN0eWxl
OjpzZXRXb3JkU3BhY2luZyhMZW5ndGggdmFsdWUpCiAgICAgICAgIGZvbnRXb3JkU3BhY2luZyA9
IDA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmZvbnRD
YXNjYWRlLnNldFdvcmRTcGFjaW5nKGZvbnRXb3JkU3BhY2luZyk7Ci0gICAgcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPndvcmRTcGFjaW5nID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgbV9pbmhl
cml0ZWREYXRhLmFjY2VzcygpLmZvbnRDYXNjYWRlLnNldFdvcmRTcGFjaW5nKGZvbnRXb3JkU3Bh
Y2luZyk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS53b3JkU3BhY2luZyA9IFdU
Rk1vdmUodmFsdWUpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nKGZs
b2F0IHYpIHsgaW5oZXJpdGVkLmFjY2VzcygpLT5mb250Q2FzY2FkZS5zZXRMZXR0ZXJTcGFjaW5n
KHYpOyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0IHYpIHsgbV9p
bmhlcml0ZWREYXRhLmFjY2VzcygpLmZvbnRDYXNjYWRlLnNldExldHRlclNwYWNpbmcodik7IH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFNpemUoZmxvYXQgc2l6ZSkKIHsKQEAgLTE1NjYs
NyArMTYwOCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRWYXJpYXRpb25TZXR0aW5ncyhG
b250VmFyaWF0aW9uU2V0dGluZ3Mgc2V0dGluZ3MpCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJT
dHlsZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5p
dCAmdG9wLCBMYXlvdXRVbml0ICZyaWdodCwgTGF5b3V0VW5pdCAmYm90dG9tLCBMYXlvdXRVbml0
ICZsZWZ0KSBjb25zdAordm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5
b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdAogewogICAgIHRvcCA9IDA7
CiAgICAgcmlnaHQgPSAwOwpAQCAtMTgxMCw1MyArMTg1Miw1MyBAQCBmbG9hdCBSZW5kZXJTdHls
ZTo6Ym9yZGVyRW5kV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBib3JkZXJCb3R0b21XaWR0aCgpIDogYm9yZGVyVG9wV2lkdGgoKTsKIH0KIAotdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0TWFyZ2luU3RhcnQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldE1hcmdpblN0YXJ0KExlbmd0aCYmIG1hcmdpbikKIHsKICAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQotICAgICAgICAgICAgc2V0TWFyZ2luTGVmdChtYXJnaW4pOworICAgICAgICAgICAgc2V0
TWFyZ2luTGVmdChXVEZNb3ZlKG1hcmdpbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXRNYXJnaW5SaWdodChtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luUmlnaHQoV1RGTW92
ZShtYXJnaW4pKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKQotICAgICAgICAgICAgc2V0TWFyZ2luVG9wKG1hcmdpbik7CisgICAgICAgICAgICBz
ZXRNYXJnaW5Ub3AoV1RGTW92ZShtYXJnaW4pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2V0TWFyZ2luQm90dG9tKG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5Cb3R0b20oV1RG
TW92ZShtYXJnaW4pKTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpbkVu
ZChMZW5ndGggbWFyZ2luKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0TWFyZ2luRW5kKExlbmd0aCYm
IG1hcmdpbikKIHsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAg
ICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgc2V0TWFyZ2luUmln
aHQobWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpblJpZ2h0KFdURk1vdmUobWFyZ2luKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpbkxlZnQobWFyZ2luKTsKKyAgICAg
ICAgICAgIHNldE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgc2V0TWFyZ2lu
Qm90dG9tKG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5Cb3R0b20oV1RGTW92ZShtYXJn
aW4pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TWFyZ2luVG9wKG1hcmdpbik7Cisg
ICAgICAgICAgICBzZXRNYXJnaW5Ub3AoV1RGTW92ZShtYXJnaW4pKTsKICAgICB9CiB9CiAKIFRl
eHRFbXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmsoKSBjb25zdAogewot
ICAgIFRleHRFbXBoYXNpc01hcmsgbWFyayA9IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc01hcms+
KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrKTsKKyAgICBhdXRvIG1hcmsgPSBz
dGF0aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJrPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1w
aGFzaXNNYXJrKTsKICAgICBpZiAobWFyayAhPSBUZXh0RW1waGFzaXNNYXJrQXV0bykKICAgICAg
ICAgcmV0dXJuIG1hcms7Ci0KICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAg
ICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtEb3Q7Ci0KICAgICByZXR1cm4gVGV4dEVtcGhh
c2lzTWFya1Nlc2FtZTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIENvbG9yIFJl
bmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKQogewogICAgIHJldHVybiBSZW5k
ZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKTsKIH0KKwogI2VuZGlmCiAKIExheW91dEJveEV4
dGVudCBSZW5kZXJTdHlsZTo6aW1hZ2VPdXRzZXRzKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFn
ZSkgY29uc3QKQEAgLTE4ODksMzAgKzE5MzEsMzAgQEAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlv
biwgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4gUmVuZGVyU3R5bGU6OmZvbnRBbmRHbHlwaE9yaWUK
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1h
Z2U+JiYgaW1hZ2UpCiB7Ci0gICAgaWYgKHN1cnJvdW5kLT5ib3JkZXIubV9pbWFnZS5pbWFnZSgp
ID09IGltYWdlLmdldCgpKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLm1faW1hZ2Uu
aW1hZ2UoKSA9PSBpbWFnZS5nZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFj
Y2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZShXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9z
dXJyb3VuZERhdGEuYWNjZXNzKCkuYm9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2UoV1RGTW92ZShpbWFn
ZSkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5ndGhC
b3ggc2xpY2VzKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3Ro
Qm94JiYgc2xpY2VzKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2VT
bGljZXMoKSA9PSBzbGljZXMpCisgICAgaWYgKG1fc3Vycm91bmREYXRhLT5ib3JkZXIubV9pbWFn
ZS5pbWFnZVNsaWNlcygpID09IHNsaWNlcykKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5k
LmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZVNsaWNlcyhzbGljZXMpOworICAgIG1f
c3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldEltYWdlU2xpY2VzKFdURk1v
dmUoc2xpY2VzKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlV2lkdGgo
TGVuZ3RoQm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlV2lkdGgo
TGVuZ3RoQm94JiYgc2xpY2VzKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2Uu
Ym9yZGVyU2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9yZGVy
Lm1faW1hZ2UuYm9yZGVyU2xpY2VzKCkgPT0gc2xpY2VzKQogICAgICAgICByZXR1cm47Ci0gICAg
c3Vycm91bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldEJvcmRlclNsaWNlcyhzbGljZXMp
OworICAgIG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldEJvcmRlclNs
aWNlcyhXVEZNb3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJ
bWFnZU91dHNldChMZW5ndGhCb3ggb3V0c2V0KQordm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
SW1hZ2VPdXRzZXQoTGVuZ3RoQm94JiYgb3V0c2V0KQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9y
ZGVyLm1faW1hZ2Uub3V0c2V0KCkgPT0gb3V0c2V0KQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLm1faW1hZ2Uub3V0c2V0KCkgPT0gb3V0c2V0KQogICAgICAgICByZXR1cm47Ci0gICAg
c3Vycm91bmQuYWNjZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldE91dHNldChvdXRzZXQpOworICAg
IG1fc3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldE91dHNldChXVEZNb3Zl
KG91dHNldCkpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFn
aW5hdGlvbk1vZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaW5hdGlvbk1vZGUpCkBAIC0x
OTU4LDYgKzIwMDAsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFn
aW5hdGlvbk1vZGUoY29uc3QgUGFnaW5hdGlvbjo6TW9kZSYgcGFnaQogfQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKKwogU2Nyb2xsU25hcFR5cGUgUmVuZGVyU3R5bGU6OmluaXRpYWxT
Y3JvbGxTbmFwVHlwZSgpCiB7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTE5NzAsMjIgKzIwMTMsMjIg
QEAgU2Nyb2xsU25hcEFsaWduIFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcEFsaWduKCkK
IAogY29uc3QgU3R5bGVTY3JvbGxTbmFwQXJlYSYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNu
YXBBcmVhOworICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFy
ZWE7CiB9CiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvcnQmIFJlbmRlclN0eWxlOjpzY3JvbGxT
bmFwUG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9z
Y3JvbGxTbmFwUG9ydDsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9s
bFNuYXBQb3J0OwogfQogCiBjb25zdCBTY3JvbGxTbmFwVHlwZSYgUmVuZGVyU3R5bGU6OnNjcm9s
bFNuYXBUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
c2Nyb2xsU25hcFBvcnQtPnR5cGU7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnNjcm9sbFNuYXBQb3J0LT50eXBlOwogfQogCiBjb25zdCBMZW5ndGhCb3gmIFJlbmRlclN0eWxl
OjpzY3JvbGxQYWRkaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fc2Nyb2xsU25hcFBvcnQtPnNjcm9sbFBhZGRpbmc7CisgICAgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBQb3J0LT5zY3JvbGxQYWRkaW5nOwogfQogCiBjb25z
dCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzY3JvbGxQYWRkaW5nVG9wKCkgY29uc3QKQEAgLTIwMTAs
MTIgKzIwNTMsMTIgQEAgY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZ1Jp
Z2h0KCkgY29uc3QKIAogY29uc3QgU2Nyb2xsU25hcEFsaWduJiBSZW5kZXJTdHlsZTo6c2Nyb2xs
U25hcEFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKKyAgICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+c2Nyb2xsU25hcEFyZWEtPmFsaWdubWVudDsKIH0KIAogY29uc3QgTGVuZ3RoQm94JiBS
ZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBBcmVhLT5zY3JvbGxTbmFwTWFyZ2luOworICAg
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwQXJlYS0+c2Nyb2xsU25h
cE1hcmdpbjsKIH0KIAogY29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdp
blRvcCgpIGNvbnN0CkBAIC0yMDQwLDc5ICsyMDgzLDc0IEBAIGNvbnN0IExlbmd0aCYgUmVuZGVy
U3R5bGU6OnNjcm9sbFNuYXBNYXJnaW5SaWdodCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OnNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJiB0eXBlKQogewotICAgIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT50
eXBlID0gdHlwZTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBz
Y3JvbGxTbmFwUG9ydCwgdHlwZSwgdHlwZSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbFBhZGRpbmdUb3AoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxQYWRkaW5nVG9wKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGlu
Zy5zZXRUb3AobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBzY3JvbGxTbmFwUG9ydCwgc2Nyb2xsUGFkZGluZy50b3AoKSwgV1RGTW92ZShsZW5ndGgp
KTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0JvdHRvbShjb25zdCBM
ZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20o
TGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT5zY3JvbGxQYWRkaW5nLnNldEJvdHRvbShsZW5ndGgp
OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQ
b3J0LCBzY3JvbGxQYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lk
IFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KExlbmd0aCYmIGxlbmd0aCkK
IHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5h
Y2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcu
bGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3Jv
bGxQYWRkaW5nUmlnaHQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpz
ZXRTY3JvbGxQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb3J0LmFjY2VzcygpLT5zY3JvbGxQYWRk
aW5nLnNldFJpZ2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShs
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0
IFNjcm9sbFNuYXBBbGlnbiYgYWxpZ25tZW50KQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5hbGlnbm1lbnQgPSBhbGlnbm1l
bnQ7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2Nyb2xsU25h
cEFyZWEsIGFsaWdubWVudCwgYWxpZ25tZW50KTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsU25hcE1hcmdpblRvcChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5
bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3Jv
bGxTbmFwTWFyZ2luLnNldFRvcChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFwTWFyZ2luLnRvcCgpLCBX
VEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFy
Z2luQm90dG9tKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsU25hcE1hcmdpbkJvdHRvbShMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPnNjcm9sbFNuYXBN
YXJnaW4uc2V0Qm90dG9tKGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4uYm90dG9tKCksIFdU
Rk1vdmUobGVuZ3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJn
aW5MZWZ0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
U25hcE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3JvbGxTbmFwTWFyZ2lu
LnNldExlZnQobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVu
Z3RoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5SaWdodChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJn
aW5SaWdodChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fc2Nyb2xsU25hcEFyZWEuYWNjZXNzKCktPnNjcm9sbFNuYXBNYXJnaW4uc2V0Umln
aHQobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBz
Y3JvbGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OwogfQorCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25s
eSgpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNGaWx0ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucyA9IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zOwotICAgIGlmIChmaWx0ZXJP
cGVyYXRpb25zLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiA9ICpmaWx0ZXJPcGVyYXRpb25zLmF0
KDApOwotICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6
UkVGRVJFTkNFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBhdXRvJiBmaWx0ZXJPcGVyYXRpb25zID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVy
LT5vcGVyYXRpb25zOworICAgIHJldHVybiBmaWx0ZXJPcGVyYXRpb25zLnNpemUoKSA9PSAxICYm
IGZpbHRlck9wZXJhdGlvbnMuYXQoMCktPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVS
RU5DRTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3Bl
cnRpZXMoKQogewotICAgIGlmICghcmFyZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGll
cy0+Y29udGFpbnNWYXJpYWJsZXMoKSkKKyAgICBpZiAoIW1fcmFyZUluaGVyaXRlZERhdGEtPmN1
c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKKyAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0eURhdGEgPSBtX3JhcmVJbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCk7CisKICAgICAvLyBPdXIgZmlyc3QgcGFz
cyBjaGVja3MgdGhlIHZhcmlhYmxlcyBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VzIGFueSBwcm9w
ZXJ0aWVzIHRoYXQgYmVjYW1lCiAgICAgLy8gaW52YWxpZCB3aXRoIGVtcHR5IHZhbHVlcy4KLSAg
ICBhdXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0gcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Y3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS0+dmFsdWVzKCk7CisgICAgYXV0byYgY3VzdG9tUHJv
cGVydGllcyA9IGN1c3RvbVByb3BlcnR5RGF0YS52YWx1ZXM7CiAgICAgSGFzaFNldDxBdG9taWNT
dHJpbmc+IGludmFsaWRQcm9wZXJ0aWVzOwogICAgIGZvciAoYXV0byBlbnRyeSA6IGN1c3RvbVBy
b3BlcnRpZXMpIHsKICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMo
KSkKQEAgLTIxNDIsMjUgKzIxODAsMjUgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJs
ZXNJbkN1c3RvbVByb3BlcnRpZXMoKQogICAgIGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6IHJl
c29sdmVkVmFsdWVzKQogICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChyZXNvbHZlZFZhbHVl
LT5uYW1lKCksIHJlc29sdmVkVmFsdWUuY29weVJlZigpKTsKIAotICAgIHJhcmVJbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldENvbnRhaW5zVmFy
aWFibGVzKGZhbHNlKTsKKyAgICBjdXN0b21Qcm9wZXJ0eURhdGEuY29udGFpbnNWYXJpYWJsZXMg
PSBmYWxzZTsKIH0KIAogZmxvYXQgUmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5PTkUpCisgICAg
aWYgKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgaWYgKG91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICByZXR1cm4g
c3RkOjptYXgobV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkud2lkdGgoKSwgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtRm9jdXNSaW5nV2lkdGgoKSk7Ci0gICAgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGlu
ZSgpLndpZHRoKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChtX2JhY2tncm91bmREYXRhLT5v
dXRsaW5lLndpZHRoKCksIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCkpOwor
ICAgIHJldHVybiBtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLndpZHRoKCk7CiB9CiAKIGZsb2F0
IFJlbmRlclN0eWxlOjpvdXRsaW5lT2Zmc2V0KCkgY29uc3QKIHsKLSAgICBpZiAobV9iYWNrZ3Jv
dW5kLT5vdXRsaW5lKCkuc3R5bGUoKSA9PSBCTk9ORSkKKyAgICBpZiAobV9iYWNrZ3JvdW5kRGF0
YS0+b3V0bGluZS5zdHlsZSgpID09IEJOT05FKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAo
b3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAgICAgIHJldHVybiAobV9iYWNrZ3JvdW5kLT5vdXRs
aW5lKCkub2Zmc2V0KCkgKyBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdPZmZzZXQob3V0
bGluZVdpZHRoKCkpKTsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkub2Zmc2V0
KCk7CisgICAgICAgIHJldHVybiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5vZmZzZXQoKSAr
IFJlbmRlclRoZW1lOjpwbGF0Zm9ybUZvY3VzUmluZ09mZnNldChvdXRsaW5lV2lkdGgoKSkpOwor
ICAgIHJldHVybiBtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLm9mZnNldCgpOwogfQogCiBib29s
IFJlbmRlclN0eWxlOjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkg
Y29uc3QKQEAgLTIxNjgsNCArMjIwNiwxNSBAQCBib29sIFJlbmRlclN0eWxlOjpzaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QKICAgICByZXR1cm4gIWlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSAmJiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQogCisj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXREYXNo
Ym9hcmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgbGFiZWwsIExlbmd0aCYmIHRvcCwg
TGVuZ3RoJiYgcmlnaHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCwgYm9vbCBhcHBl
bmQpCit7CisgICAgaWYgKCFhcHBlbmQpCisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkuZGFzaGJvYXJkUmVnaW9ucy5jbGVhcigpOworICAgIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuZGFzaGJvYXJkUmVnaW9ucy5hcHBlbmQoeyBsYWJlbCwgeyBXVEZNb3Zl
KHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVmdCkgfSwg
dHlwZSB9KTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYzI4YWYxYWUwNDYw
ZjJmM2M3MjhhODYwZTlmOTAyOWY2NGFjMDA2ZC4uOTljMTU0N2IzODI0ZjNmYWE1NDVlNjBlYTMx
ZmYyNzQ0ZDgxYWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlz
IChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04MiwxOSArODIsMjAg
QEAKICNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYg
dCwgY29uc3QgVSYgdSkgeyByZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25zdCBUJj4odSk7IH0K
LQotI2RlZmluZSBTRVRfVkFSKGdyb3VwLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNv
bXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUsIHZhbHVlKSkgXAotICAgICAgICBncm91cC5hY2Nl
c3MoKS0+dmFyaWFibGUgPSB2YWx1ZQorI2RlZmluZSBTRVRfVkFSKGdyb3VwLCB2YXJpYWJsZSwg
dmFsdWUpIGRvIHsgXAorICAgICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUs
IHZhbHVlKSkgXAorICAgICAgICAgICAgZ3JvdXAuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1ZTsg
XAorICAgIH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0VUX05FU1RFRF9WQVIoZ3JvdXAsIHBhcmVu
dFZhcmlhYmxlLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91
cC0+cGFyZW50VmFyaWFibGUtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKLSAgICAgICAgZ3JvdXAuYWNj
ZXNzKCktPnBhcmVudFZhcmlhYmxlLmFjY2VzcygpLT52YXJpYWJsZSA9IHZhbHVlCisjZGVmaW5l
IFNFVF9ORVNURURfVkFSKGdyb3VwLCBwYXJlbnRWYXJpYWJsZSwgdmFyaWFibGUsIHZhbHVlKSBk
byB7IFwKKyAgICAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnBhcmVudFZhcmlhYmxlLT52
YXJpYWJsZSwgdmFsdWUpKSBcCisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS5wYXJlbnRWYXJp
YWJsZS5hY2Nlc3MoKS52YXJpYWJsZSA9IHZhbHVlOyBcCisgICAgfSB3aGlsZSAoMCkKIAotI2Rl
ZmluZSBTRVRfQk9SREVSVkFMVUVfQ09MT1IoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgXAotICAg
IGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZS5jb2xvcigpLCB2YWx1ZSkpIFwKLSAg
ICAgICAgZ3JvdXAuYWNjZXNzKCktPnZhcmlhYmxlLnNldENvbG9yKHZhbHVlKQorI2RlZmluZSBT
RVRfQk9SREVSVkFMVUVfQ09MT1IoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCisgICAg
ICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZS5jb2xvcigpLCB2YWx1ZSkpIFwK
KyAgICAgICAgICAgIGdyb3VwLmFjY2VzcygpLnZhcmlhYmxlLnNldENvbG9yKHZhbHVlKTsgXAor
ICAgIH0gd2hpbGUgKDApCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTExLDM4NiArMTEy
LDM1IEBAIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgU3R5bGVJ
bmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIFN0eWxlU2Nyb2xsU25h
cEFyZWE7CitjbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xhc3MgU3R5bGVTY3JvbGxT
bmFwUG9ydDsKLWNsYXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci1zdHJ1Y3QgU2Nyb2xsU25hcFR5
cGU7CiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduOwotI2VuZGlmCitzdHJ1Y3QgU2Nyb2xsU25hcFR5
cGU7CiAKLXR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+IFBz
ZXVkb1N0eWxlQ2FjaGU7Cit1c2luZyBQc2V1ZG9TdHlsZUNhY2hlID0gVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdSkgeyBy
ZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25zdCBUJj4odSk7IH0KIAogY2xhc3MgUmVuZGVyU3R5
bGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIAotICAgIGZyaWVuZCBjbGFz
cyBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA7IC8vIFVzZWQgYnkgQ1NTIGFuaW1hdGlv
bnMuIFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBiYXNlZCBvZmYgdmlzaXRlZCBjb2xv
cnMuCi0gICAgZnJpZW5kIGNsYXNzIEFwcGx5U3R5bGVDb21tYW5kOyAvLyBFZGl0aW5nIGhhcyB0
byBvbmx5IHJldmVhbCB1bnZpc2l0ZWQgaW5mby4KLSAgICBmcmllbmQgY2xhc3MgRWRpdGluZ1N0
eWxlOyAvLyBFZGl0aW5nIGhhcyB0byBvbmx5IHJldmVhbCB1bnZpc2l0ZWQgaW5mby4KLSAgICBm
cmllbmQgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsgLy8gSWdub3JlcyB2aXNpdGVkIHN0
eWxlcywgc28gbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgdW52aXNpdGVkIGluZm8uCi0gICAgZnJp
ZW5kIGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yOyAvLyBVc2VkIGJ5IENT
UyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZp
c2l0ZWQgY29sb3JzLgotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZTsgLy8gRklY
TUU6IE5lZWRzIHRvIGFsdGVyIHRoZSB2aXNpdGVkIHN0YXRlIGJ5IGhhbmQuIFNob3VsZCBjbGVh
biB0aGUgU1ZHIGNvZGUgdXAgYW5kIG1vdmUgaXQgaW50byBSZW5kZXJTdHlsZSBwZXJoYXBzLgot
ICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJUcmVlQXNUZXh0OyAvLyBGSVhNRTogT25seSBuZWVkZWQg
c28gdGhlIHJlbmRlciB0cmVlIGNhbiBrZWVwIGx5aW5nIGFuZCBkdW1wIHRoZSB3cm9uZyBjb2xv
cnMuICBSZWJhc2VsaW5pbmcgd291bGQgYWxsb3cgdGhpcyB0byBiZSB5YW5rZWQuCi0gICAgZnJp
ZW5kIGNsYXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5
LgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDdXN0b207IC8vIFNldHMgbWVtYmVycyBk
aXJlY3RseS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyRnVuY3Rpb25zOyAvLyBTZXRz
IG1lbWJlcnMgZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlUmVzb2x2ZXI7IC8vIFNl
dHMgbWVtYmVycyBkaXJlY3RseS4KLQotcHVibGljOgotICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRG
bGFncyB7Ci0gICAgICAgIE5vbkluaGVyaXRlZEZsYWdzKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIHNob3VsZCBhbGwgYmUgemVyby4KLSAgICAgICAgICAg
IEFTU0VSVCghaW5pdGlhbE92ZXJmbG93WCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlh
bE92ZXJmbG93WSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbENsZWFyKCkpOwotICAg
ICAgICAgICAgQVNTRVJUKCFpbml0aWFsRGlzcGxheSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
aW5pdGlhbFVuaWNvZGVCaWRpKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsUG9zaXRp
b24oKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkpOwotICAg
ICAgICAgICAgQVNTRVJUKCFpbml0aWFsRmxvYXRpbmcoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
IWluaXRpYWxUYWJsZUxheW91dCgpKTsKLQotICAgICAgICAgICAgbV9mbGFncyA9IDA7Ci0gICAg
ICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3Mm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9mbGFncyA9PSBv
dGhlci5tX2ZsYWdzOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KLQotICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IE5vbkluaGVy
aXRlZEZsYWdzJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gT25seSBhIHN1YnNl
dCBpcyBjb3BpZWQgYmVjYXVzZSBOb25Jbmhlcml0ZWRGbGFncyBjb250YWlucyBhIGJ1bmNoIG9m
IHN0dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBkYXRhLgotICAgICAgICAgICAgdWludDY0X3Qg
bm9uSW5oZXJpdGVkTWFzayA9IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1hPZmZzZXQKLSAgICAg
ICAgICAgICAgICB8IG92ZXJmbG93TWFzayA8PCBvdmVyZmxvd1lPZmZzZXQKLSAgICAgICAgICAg
ICAgICB8IGNsZWFyTWFzayA8PCBjbGVhck9mZnNldAotICAgICAgICAgICAgICAgIHwgZGlzcGxh
eU1hc2sgPDwgZWZmZWN0aXZlRGlzcGxheU9mZnNldAotICAgICAgICAgICAgICAgIHwgcG9zaXRp
b25NYXNrIDw8IHBvc2l0aW9uT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBkaXNwbGF5TWFzayA8
PCBvcmlnaW5hbERpc3BsYXlPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHVuaWNvZGVCaWRpTWFz
ayA8PCB1bmljb2RlQmlkaU9mZnNldAotICAgICAgICAgICAgICAgIHwgdmVydGljYWxBbGlnbk1h
c2sgPDwgdmVydGljYWxBbGlnbk9mZnNldAotICAgICAgICAgICAgICAgIHwgZmxvYXRpbmdNYXNr
IDw8IGZsb2F0aW5nT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCBvbmVCaXRNYXNrIDw8IGV4cGxp
Y2l0SW5oZXJpdGFuY2VPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHRhYmxlTGF5b3V0Qml0TWFz
ayA8PCB0YWJsZUxheW91dE9mZnNldAotICAgICAgICAgICAgICAgIHwgaGFzVmlld3BvcnRVbml0
c0JpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c09mZnNldDsKLQotICAgICAgICAgICAgbV9mbGFn
cyA9IChtX2ZsYWdzICYgfm5vbkluaGVyaXRlZE1hc2spIHwgKG90aGVyLm1fZmxhZ3MgJiBub25J
bmhlcml0ZWRNYXNrKTsKLSAgICAgICAgfQotCi0gICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1go
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93
TWFzaywgb3ZlcmZsb3dYT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92
ZXJmbG93IG92ZXJmbG93WCkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1gsIG92ZXJmbG93TWFzaywg
b3ZlcmZsb3dYT2Zmc2V0KTsgfQotCi0gICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KGdldFZhbHVlKG92ZXJmbG93TWFzaywg
b3ZlcmZsb3dZT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93
IG92ZXJmbG93WSkgeyB1cGRhdGVWYWx1ZShvdmVyZmxvd1ksIG92ZXJmbG93TWFzaywgb3ZlcmZs
b3dZT2Zmc2V0KTsgfQotCi0gICAgICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVDbGVhcj4oZ2V0VmFsdWUoY2xlYXJNYXNrLCBjbGVhck9mZnNldCkpOyB9Ci0g
ICAgICAgIHZvaWQgc2V0Q2xlYXIoRUNsZWFyIGNsZWFyKSB7IHVwZGF0ZVZhbHVlKGNsZWFyLCBj
bGVhck1hc2ssIGNsZWFyT2Zmc2V0KTsgfQotCi0gICAgICAgIEVEaXNwbGF5IGVmZmVjdGl2ZURp
c3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4oZ2V0VmFsdWUoZGlz
cGxheU1hc2ssIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldEVm
ZmVjdGl2ZURpc3BsYXkoRURpc3BsYXkgZWZmZWN0aXZlRGlzcGxheSkgeyB1cGRhdGVWYWx1ZShl
ZmZlY3RpdmVEaXNwbGF5LCBkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCk7IH0K
LQotICAgICAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFUG9zaXRpb24+KGdldFZhbHVlKHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpKTsgfQot
ICAgICAgICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiBwb3NpdGlvbikgeyB1cGRhdGVWYWx1
ZShwb3NpdGlvbiwgcG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCk7IH0KLQotICAgICAgICBF
RGlzcGxheSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlz
cGxheT4oZ2V0VmFsdWUoZGlzcGxheU1hc2ssIG9yaWdpbmFsRGlzcGxheU9mZnNldCkpOyB9Ci0g
ICAgICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSkg
eyB1cGRhdGVWYWx1ZShvcmlnaW5hbERpc3BsYXksIGRpc3BsYXlNYXNrLCBvcmlnaW5hbERpc3Bs
YXlPZmZzZXQpOyB9Ci0KLSAgICAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVuaWNvZGVCaWRpPihnZXRWYWx1ZSh1bmljb2RlQmlkaU1h
c2ssIHVuaWNvZGVCaWRpT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRVbmljb2RlQmlkaShF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGkpIHsgdXBkYXRlVmFsdWUodW5pY29kZUJpZGksIHVuaWNv
ZGVCaWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNWaWV3
cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNWaWV3cG9ydFVuaXRzT2Zm
c2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0KTsgfQotCi0gICAgICAg
IEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFVmVydGljYWxBbGlnbj4oZ2V0VmFsdWUodmVydGljYWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxp
Z25PZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxp
Z24gdmVydGljYWxBbGlnbikgeyB1cGRhdGVWYWx1ZSh2ZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFs
aWduTWFzaywgdmVydGljYWxBbGlnbk9mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0V4cGxp
Y2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihleHBs
aWNpdEluaGVyaXRhbmNlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJ
bmhlcml0ZWRQcm9wZXJ0aWVzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZXhw
bGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGlzRmxvYXRpbmcoKSBj
b25zdCB7IHJldHVybiBmbG9hdGluZygpICE9IE5vRmxvYXQ7IH0KLSAgICAgICAgRUZsb2F0IGZs
b2F0aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsb2F0PihnZXRWYWx1ZShmbG9h
dGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRGbG9hdGluZyhF
RmxvYXQgZmxvYXRpbmcpIHsgdXBkYXRlVmFsdWUoZmxvYXRpbmcsIGZsb2F0aW5nTWFzaywgZmxv
YXRpbmdPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMo
KSBjb25zdCB7IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIGdldFZhbHVlKHBzZXVkb0Jp
dHNNYXNrLCBwc2V1ZG9CaXRzT2Zmc2V0KTsgfQotICAgICAgICBib29sIGhhc1BzZXVkb1N0eWxl
KFBzZXVkb0lkIHBzZXVkbykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBz
ZXVkbyA+IE5PUFNFVURPKTsKLSAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRF
Uk5BTF9QU0VVRE9JRCk7Ci0gICAgICAgICAgICByZXR1cm4gKG9uZUJpdE1hc2sgPDwgKHBzZXVk
b0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKSkgJiBtX2ZsYWdzOwotICAgICAgICB9Ci0gICAgICAg
IHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgICAgICAgICAgQVNTRVJUKHBz
ZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICAgICAgICAgIG1fZmxhZ3MgfD0g
b25lQml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOwotICAgICAgICB9
Ci0gICAgICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0IHBzZXVkb0lkU2V0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHNldWRvSWRTZXQpOwotICAgICAgICAg
ICAgdWludDY0X3QgcmF3UHNldWRvSWRTZXQgPSBwc2V1ZG9JZFNldC5kYXRhKCk7Ci0gICAgICAg
ICAgICBBU1NFUlQoKHJhd1BzZXVkb0lkU2V0ICYgUFVCTElDX1BTRVVET0lEX01BU0spID09IHJh
d1BzZXVkb0lkU2V0KTsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQocHNldWRvQml0c09mZnNl
dCA+PSAxLCAiKHBzZXVkb0JpdHNPZmZzZXQgLSAxKSBzaG91bGQgYmUgdmFsaWQuIik7Ci0gICAg
ICAgICAgICBtX2ZsYWdzIHw9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmF3UHNldWRvSWRTZXQp
IDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgRVRhYmxl
TGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRhYmxlTGF5
b3V0PihnZXRWYWx1ZSh0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KSk7IH0K
LSAgICAgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQpIHsg
dXBkYXRlVmFsdWUodGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRP
ZmZzZXQpOyB9Ci0KLSAgICAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHNldWRvSWQ+KGdldFZhbHVlKHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9m
ZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkg
eyB1cGRhdGVWYWx1ZShzdHlsZVR5cGUsIHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCk7
IH0KLQotICAgICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihp
c1VuaXF1ZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRJc1VuaXF1ZSgpIHsgdXBkYXRlQm9v
bGVhbih0cnVlLCBpc1VuaXF1ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGVtcHR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGVtcHR5U3RhdGVPZmZzZXQpOyAgfQotICAgICAg
ICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBl
bXB0eVN0YXRlT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQotICAgICAg
ICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFs
dWUsIGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGxhc3RDaGlsZFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9
Ci0gICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29s
ZWFuKHZhbHVlLCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGFmZmVj
dGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRCeUhvdmVyT2Zm
c2V0KTsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IHVw
ZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KLQotICAgICAgICBi
b29sIGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVk
QnlBY3RpdmVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29s
IHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9
Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xl
YW4oYWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURy
YWcoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5RHJhZ09mZnNl
dCk7IH0KLQotICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
aXNMaW5rT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldElzTGluayhib29sIHZhbHVlKSB7IHVw
ZGF0ZUJvb2xlYW4odmFsdWUsIGlzTGlua09mZnNldCk7IH0KLQotICAgICAgICBib29sIGhhc0V4
cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRs
eVNldERpcmVjdGlvbihib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlT
ZXRXcml0aW5nTW9kZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNp
dGx5U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBm
bGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRG
bGFncywgbV9mbGFncyk7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVk
QnlBY3RpdmUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQ7
IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0
dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRp
YyB1aW50NjRfdCBmbGFnUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSB7IHJldHVybiBvbmVC
aXRNYXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7IH0KLSAgICAgICAgc3Rh
dGljIHVpbnQ2NF90IHNldEZpcnN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0ZpcnN0
Q2hpbGRTdGF0ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90
IHNldExhc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnTGFzdENoaWxkU3RhdGUoKSB8
IGZsYWdJc1VuaXF1ZSgpOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVCb29s
ZWFuKGJvb2wgaXNTZXQsIHVpbnQ2NF90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKGlzU2V0KQotICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gKG9uZUJpdE1hc2sgPDwgb2Zm
c2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2ZsYWdzICY9IH4ob25l
Qml0TWFzayA8PCBvZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBnZXRCb29sZWFu
KHVpbnQ2NF90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
ZmxhZ3MgJiAob25lQml0TWFzayA8PCBvZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCB1cGRhdGVWYWx1ZSh1aW50OF90IG5ld1ZhbHVlLCB1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5k
ZW50TWFzaywgdWludDY0X3Qgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
IShuZXdWYWx1ZSAmIH5wb3NpdGlvbkluZGVwZW5kZW50TWFzaykpOwotICAgICAgICAgICAgdWlu
dDY0X3QgcG9zaXRpb25EZXBlbmRlbnRNYXNrID0gcG9zaXRpb25JbmRlcGVuZGVudE1hc2sgPDwg
b2Zmc2V0OwotICAgICAgICAgICAgbV9mbGFncyA9IChtX2ZsYWdzICYgfnBvc2l0aW9uRGVwZW5k
ZW50TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVlKSA8PCBvZmZzZXQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgZ2V0VmFsdWUodWludDY0X3QgcG9zaXRpb25J
bmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPigobV9mbGFncyA+PiBvZmZzZXQpICYg
cG9zaXRpb25JbmRlcGVuZGVudE1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHVp
bnQ2NF90IGZsYWdJc1VuaXF1ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgaXNVbmlxdWVPZmZz
ZXQ7IH0KLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdGaXJzdENoaWxkU3RhdGUoKSB7IHJl
dHVybiBvbmVCaXRNYXNrIDw8IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldDsgfQotICAgICAgICBzdGF0
aWMgdWludDY0X3QgZmxhZ0xhc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBs
YXN0Q2hpbGRTdGF0ZU9mZnNldDsgfQotCi0gICAgICAgIC8vIFRvIHR5cGUgdGhlIGJpdCBtYXNr
IHByb3Blcmx5IG9uIDY0Yml0cy4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG9uZUJp
dE1hc2sgPSAweDE7Ci0KLSAgICAgICAgLy8gQnl0ZSAxLgotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgb3ZlcmZsb3dCaXRDb3VudCA9IDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBvdmVyZmxvd01hc2sgPSAob25lQml0TWFzayA8PCBvdmVyZmxvd0JpdENvdW50KSAtIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1hPZmZzZXQgPSAwOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dZT2Zmc2V0ID0gb3ZlcmZsb3dYT2Zm
c2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNs
ZWFyQml0Q291bnQgPSAyOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgY2xlYXJNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgY2xlYXJCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2xlYXJPZmZzZXQgPSBvdmVyZmxvd1lPZmZzZXQgKyBvdmVyZmxvd0JpdENv
dW50OwotCi0gICAgICAgIC8vIEJ5dGUgMi4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRpc3BsYXlCaXRDb3VudCA9IDU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkaXNw
bGF5TWFzayA9IChvbmVCaXRNYXNrIDw8IGRpc3BsYXlCaXRDb3VudCkgLSAxOwotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZWZmZWN0aXZlRGlzcGxheU9mZnNldCA9IGNsZWFyT2Zmc2V0
ICsgY2xlYXJCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9u
Qml0Q291bnQgPSAzOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcG9zaXRpb25NYXNr
ID0gKG9uZUJpdE1hc2sgPDwgcG9zaXRpb25CaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ICsg
ZGlzcGxheUJpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgMy4KLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG9yaWdpbmFsRGlzcGxheU9mZnNldCA9IHBvc2l0aW9uT2Zmc2V0ICsgcG9z
aXRpb25CaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRp
Qml0Q291bnQgPSAzOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdW5pY29kZUJpZGlN
YXNrID0gKG9uZUJpdE1hc2sgPDwgdW5pY29kZUJpZGlCaXRDb3VudCkgLSAxOwotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgdW5pY29kZUJpZGlPZmZzZXQgPSBvcmlnaW5hbERpc3BsYXlP
ZmZzZXQgKyBkaXNwbGF5Qml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA0LgotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdCaXRDb3VudCA9IDI7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1aW50NjRfdCBmbG9hdGluZ01hc2sgPSAob25lQml0TWFzayA8PCBmbG9hdGluZ0Jp
dENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGluZ09mZnNl
dCA9IHVuaWNvZGVCaWRpT2Zmc2V0ICsgdW5pY29kZUJpZGlCaXRDb3VudDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25CaXRjb3VudCA9IDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9u
T2Zmc2V0ID0gZmxvYXRpbmdPZmZzZXQgKyBmbG9hdGluZ0JpdENvdW50OwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlQml0Y291bnQgPSAx
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldFdyaXRpbmdN
b2RlT2Zmc2V0ID0gaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCArIGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb25CaXRjb3VudDsKLQotICAgICAgICAvLyBCeXRlIDUuCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlQml0Q291bnQgPSAxOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCA9IGhh
c0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNldCArIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5n
TW9kZUJpdGNvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVMYXlvdXRC
aXRDb3VudCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB0YWJsZUxheW91dEJp
dE1hc2sgPSBvbmVCaXRNYXNrOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFibGVM
YXlvdXRPZmZzZXQgPSBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0ICsgZXhwbGljaXRJbmhlcml0
YW5jZUJpdENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGln
bkJpdENvdW50ID0gNDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxp
Z25QYWRkaW5nID0gMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxp
Z25BbmRQYWRkaW5nQml0Q291bnQgPSB2ZXJ0aWNhbEFsaWduQml0Q291bnQgKyB2ZXJ0aWNhbEFs
aWduUGFkZGluZzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHZlcnRpY2FsQWxpZ25N
YXNrID0gKG9uZUJpdE1hc2sgPDwgdmVydGljYWxBbGlnbkJpdENvdW50KSAtIDE7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduT2Zmc2V0ID0gdGFibGVMYXlvdXRP
ZmZzZXQgKyB0YWJsZUxheW91dEJpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNi4KLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNCaXRDb3VudCA9IDc7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBwc2V1ZG9CaXRzTWFzayA9IChvbmVCaXRNYXNrIDw8IHBz
ZXVkb0JpdHNCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNl
dWRvQml0c09mZnNldCA9IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyB2ZXJ0aWNhbEFsaWduQml0Q291
bnQ7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNCaXRD
b3VudCA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBoYXNWaWV3cG9ydFVuaXRz
Qml0TWFzayA9IChvbmVCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCkgLSAxOwot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3BvcnRVbml0c09mZnNldCA9IHBz
ZXVkb0JpdHNPZmZzZXQgKyBwc2V1ZG9CaXRzQml0Q291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA3
LgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQml0Q291bnQgPSA2Owot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlUGFkZGluZyA9IDI7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQgPSBz
dHlsZVR5cGVCaXRDb3VudCArIHN0eWxlVHlwZVBhZGRpbmc7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBzdHlsZVR5cGVNYXNrID0gKG9uZUJpdE1hc2sgPDwgc3R5bGVUeXBlQW5kUGFk
ZGluZ0JpdENvdW50KSAtIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5
cGVPZmZzZXQgPSBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgKyBoYXNWaWV3cG9ydFVuaXRzT2Zm
c2V0OwotCi0gICAgICAgIC8vIEJ5dGUgOC4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGlzVW5pcXVlT2Zmc2V0ID0gc3R5bGVUeXBlT2Zmc2V0ICsgc3R5bGVUeXBlQW5kUGFkZGluZ0Jp
dENvdW50OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZW1wdHlTdGF0ZU9mZnNldCA9
IGlzVW5pcXVlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZpcnN0
Q2hpbGRTdGF0ZU9mZnNldCA9IGVtcHR5U3RhdGVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbGFzdENoaWxkU3RhdGVPZmZzZXQgPSBmaXJzdENoaWxkU3RhdGVPZmZz
ZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeUhvdmVyT2Zm
c2V0ID0gbGFzdENoaWxkU3RhdGVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNldCA9IGFmZmVjdGVkQnlIb3Zlck9mZnNldCArIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5RHJhZ09mZnNldCA9IGFm
ZmVjdGVkQnlBY3RpdmVPZmZzZXQgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aXNMaW5rT2Zmc2V0ID0gYWZmZWN0ZWRCeURyYWdPZmZzZXQgKyAxOwotCi0gICAgICAgIC8vIDYw
IGJpdHMgYXJlIGFzc2lnbmVkLiBUaGVyZSBhcmUgNCBiaXRzIGF2YWlsYWJsZSBjdXJyZW50bHkg
dXNlZCBhcyBwYWRkaW5nIHRvIGltcHJvdmUgY29kZSBnZW5lcmF0aW9uLgotICAgICAgICAvLyBJ
ZiB5b3UgYWRkIG1vcmUgc3R5bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBk
YXRlIFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpLgotICAgICAgICB1aW50NjRf
dCBtX2ZsYWdzOwotICAgIH07Ci0KLXByb3RlY3RlZDoKLQotICAgIC8vIG5vbi1pbmhlcml0ZWQg
YXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVCb3hEYXRhPiBtX2JveDsKLSAgICBEYXRhUmVm
PFN0eWxlVmlzdWFsRGF0YT4gdmlzdWFsOwotICAgIERhdGFSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0
YT4gbV9iYWNrZ3JvdW5kOwotICAgIERhdGFSZWY8U3R5bGVTdXJyb3VuZERhdGE+IHN1cnJvdW5k
OwotICAgIERhdGFSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gcmFyZU5vbkluaGVyaXRl
ZERhdGE7Ci0KLSAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YT4gcmFyZUluaGVyaXRlZERhdGE7Ci0gICAgRGF0YVJlZjxTdHlsZUlu
aGVyaXRlZERhdGE+IGluaGVyaXRlZDsKLQotICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1
ZG8gc3R5bGVzCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVk
UHNldWRvU3R5bGVzOwotCi0gICAgRGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9zdmdTdHlsZTsK
LQotLy8gIVNUQVJUIFNZTkMhOiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBjb3B5IGNvbnN0
cnVjdG9yIGluIFJlbmRlclN0eWxlLmNwcCBhbmQgaW1wbGljaXRseUluaGVyaXRlZCgpIGluIFN0
eWxlUmVzb2x2ZXIuY3BwCi0KLSAgICAvLyBpbmhlcml0Ci0gICAgc3RydWN0IEluaGVyaXRlZEZs
YWdzIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChfZW1wdHlfY2VsbHMgPT0g
b3RoZXIuX2VtcHR5X2NlbGxzKQotICAgICAgICAgICAgICAgICYmIChfY2FwdGlvbl9zaWRlID09
IG90aGVyLl9jYXB0aW9uX3NpZGUpCi0gICAgICAgICAgICAgICAgJiYgKF9saXN0X3N0eWxlX3R5
cGUgPT0gb3RoZXIuX2xpc3Rfc3R5bGVfdHlwZSkKLSAgICAgICAgICAgICAgICAmJiAoX2xpc3Rf
c3R5bGVfcG9zaXRpb24gPT0gb3RoZXIuX2xpc3Rfc3R5bGVfcG9zaXRpb24pCi0gICAgICAgICAg
ICAgICAgJiYgKF92aXNpYmlsaXR5ID09IG90aGVyLl92aXNpYmlsaXR5KQotICAgICAgICAgICAg
ICAgICYmIChfdGV4dF9hbGlnbiA9PSBvdGhlci5fdGV4dF9hbGlnbikKLSAgICAgICAgICAgICAg
ICAmJiAoX3RleHRfdHJhbnNmb3JtID09IG90aGVyLl90ZXh0X3RyYW5zZm9ybSkKLSAgICAgICAg
ICAgICAgICAmJiAoX3RleHRfZGVjb3JhdGlvbnMgPT0gb3RoZXIuX3RleHRfZGVjb3JhdGlvbnMp
Ci0gICAgICAgICAgICAgICAgJiYgKF9jdXJzb3Jfc3R5bGUgPT0gb3RoZXIuX2N1cnNvcl9zdHls
ZSkKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgICAgICAgICAgICAgJiYgKG1f
Y3Vyc29yVmlzaWJpbGl0eSA9PSBvdGhlci5tX2N1cnNvclZpc2liaWxpdHkpCi0jZW5kaWYKLSAg
ICAgICAgICAgICAgICAmJiAoX2RpcmVjdGlvbiA9PSBvdGhlci5fZGlyZWN0aW9uKQotICAgICAg
ICAgICAgICAgICYmIChfd2hpdGVfc3BhY2UgPT0gb3RoZXIuX3doaXRlX3NwYWNlKQotICAgICAg
ICAgICAgICAgICYmIChfYm9yZGVyX2NvbGxhcHNlID09IG90aGVyLl9ib3JkZXJfY29sbGFwc2Up
Ci0gICAgICAgICAgICAgICAgJiYgKF9ib3hfZGlyZWN0aW9uID09IG90aGVyLl9ib3hfZGlyZWN0
aW9uKQotICAgICAgICAgICAgICAgICYmIChtX3J0bE9yZGVyaW5nID09IG90aGVyLm1fcnRsT3Jk
ZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYgKG1fcHJpbnRDb2xvckFkanVzdCA9PSBvdGhlci5t
X3ByaW50Q29sb3JBZGp1c3QpCi0gICAgICAgICAgICAgICAgJiYgKF9wb2ludGVyRXZlbnRzID09
IG90aGVyLl9wb2ludGVyRXZlbnRzKQotICAgICAgICAgICAgICAgICYmIChfaW5zaWRlTGluayA9
PSBvdGhlci5faW5zaWRlTGluaykKLSAgICAgICAgICAgICAgICAmJiAoX2luc2lkZURlZmF1bHRC
dXR0b24gPT0gb3RoZXIuX2luc2lkZURlZmF1bHRCdXR0b24pCi0gICAgICAgICAgICAgICAgJiYg
KG1fd3JpdGluZ01vZGUgPT0gb3RoZXIubV93cml0aW5nTW9kZSk7Ci0gICAgICAgIH0KIAotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgICAgIHVuc2lnbmVkIF9lbXB0eV9j
ZWxscyA6IDE7IC8vIEVFbXB0eUNlbGwKLSAgICAgICAgdW5zaWduZWQgX2NhcHRpb25fc2lkZSA6
IDI7IC8vIEVDYXB0aW9uU2lkZQotICAgICAgICB1bnNpZ25lZCBfbGlzdF9zdHlsZV90eXBlIDog
NzsgLy8gRUxpc3RTdHlsZVR5cGUKLSAgICAgICAgdW5zaWduZWQgX2xpc3Rfc3R5bGVfcG9zaXRp
b24gOiAxOyAvLyBFTGlzdFN0eWxlUG9zaXRpb24KLSAgICAgICAgdW5zaWduZWQgX3Zpc2liaWxp
dHkgOiAyOyAvLyBFVmlzaWJpbGl0eQotICAgICAgICB1bnNpZ25lZCBfdGV4dF9hbGlnbiA6IDQ7
IC8vIEVUZXh0QWxpZ24KLSAgICAgICAgdW5zaWduZWQgX3RleHRfdHJhbnNmb3JtIDogMjsgLy8g
RVRleHRUcmFuc2Zvcm0KLSAgICAgICAgdW5zaWduZWQgX3RleHRfZGVjb3JhdGlvbnMgOiBUZXh0
RGVjb3JhdGlvbkJpdHM7Ci0gICAgICAgIHVuc2lnbmVkIF9jdXJzb3Jfc3R5bGUgOiA2OyAvLyBF
Q3Vyc29yCi0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgICAgICB1bnNpZ25lZCBt
X2N1cnNvclZpc2liaWxpdHkgOiAxOyAvLyBDdXJzb3JWaXNpYmlsaXR5Ci0jZW5kaWYKLSAgICAg
ICAgdW5zaWduZWQgX2RpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KLSAgICAgICAgdW5z
aWduZWQgX3doaXRlX3NwYWNlIDogMzsgLy8gRVdoaXRlU3BhY2UKLSAgICAgICAgLy8gMzIgYml0
cwotICAgICAgICB1bnNpZ25lZCBfYm9yZGVyX2NvbGxhcHNlIDogMTsgLy8gRUJvcmRlckNvbGxh
cHNlCi0gICAgICAgIHVuc2lnbmVkIF9ib3hfZGlyZWN0aW9uIDogMTsgLy8gRUJveERpcmVjdGlv
biAoQ1NTMyBib3hfZGlyZWN0aW9uIHByb3BlcnR5LCBmbGV4aWJsZSBib3ggbGF5b3V0IG1vZHVs
ZSkKLQotICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKLSAgICAgICAgdW5zaWduZWQgbV9y
dGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCi0gICAgICAgIHVuc2lnbmVkIG1fcHJpbnRDb2xvckFk
anVzdCA6IFByaW50Q29sb3JBZGp1c3RCaXRzOwotICAgICAgICB1bnNpZ25lZCBfcG9pbnRlckV2
ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCi0gICAgICAgIHVuc2lnbmVkIF9pbnNpZGVMaW5r
IDogMjsgLy8gRUluc2lkZUxpbmsKLSAgICAgICAgdW5zaWduZWQgX2luc2lkZURlZmF1bHRCdXR0
b24gOiAxOwotICAgICAgICAvLyA0NCBiaXRzCi0KLSAgICAgICAgLy8gQ1NTIFRleHQgTGF5b3V0
IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICAgICAgdW5zaWdu
ZWQgbV93cml0aW5nTW9kZSA6IDI7IC8vIFdyaXRpbmdNb2RlCi0gICAgICAgIC8vIDQ2IGJpdHMK
LSAgICB9IGluaGVyaXRlZF9mbGFnczsKLQotLy8gZG9uJ3QgaW5oZXJpdAotICAgIE5vbkluaGVy
aXRlZEZsYWdzIG5vbmluaGVyaXRlZF9mbGFnczsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwg
RU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCi0gICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4g
eyBmYWxzZSB9OwotI2VuZGlmCi0KLS8vICFFTkQgU1lOQyEKIHByaXZhdGU6CisgICAgZW51bSBD
bG9uZVRhZyB7IENsb25lIH07CiAgICAgZW51bSBDcmVhdGVEZWZhdWx0U3R5bGVUYWcgeyBDcmVh
dGVEZWZhdWx0U3R5bGUgfTsKLSAgICBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcp
OwotCi0gICAgc3RhdGljIFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKTsKIAogcHVibGljOgog
ICAgIFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKICAgICBSZW5kZXJTdHls
ZSYgb3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKyAgICB+UmVuZGVyU3R5bGUo
KTsKIAotICAgIC8vIFRoaXMgaXMgbm90IGEgdHJ1ZSBjb3B5IGNvbnN0cnVjdG9yLiBJdCBkb2Vz
bid0IGNvcHkgcHNldWRvIHN0eWxlIGNhY2hlcyBmb3IgZXhhbXBsZS4KLSAgICBlbnVtIENsb25l
VGFnIHsgQ2xvbmUgfTsKKyAgICBSZW5kZXJTdHlsZSByZXBsYWNlKFJlbmRlclN0eWxlJiYpIFdB
Uk5fVU5VU0VEX1JFVFVSTjsKKworICAgIGV4cGxpY2l0IFJlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRTdHlsZVRhZyk7CiAgICAgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBDbG9uZVRh
Zyk7CiAKLSAgICB+UmVuZGVyU3R5bGUoKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIGRlZmF1
bHRTdHlsZSgpOwogCiAgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZSgpOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVB0cigpOwpAQCAtNTA1LDYgKzE1
NSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGlvbkhhc0JlZ3VuKCkgY29uc3QgeyByZXR1
cm4gbV9kZWxldGlvbkhhc0JlZ3VuOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAg
ICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0UGFyZW50KTsKKyAg
ICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJik7CisKICAgICBD
b250ZW50UG9zaXRpb24gcmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKGNvbnN0IFN0eWxl
Q29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0OwogICAgIENv
bnRlbnREaXN0cmlidXRpb25UeXBlIHJlc29sdmVkSnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24o
Y29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29u
c3Q7CiAgICAgQ29udGVudFBvc2l0aW9uIHJlc29sdmVkQWxpZ25Db250ZW50UG9zaXRpb24oY29u
c3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29uc3Q7
CkBAIC01MTQsMTEgKzE3MCw4IEBAIHB1YmxpYzoKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRh
IHJlc29sdmVkSnVzdGlmeUl0ZW1zKEl0ZW1Qb3NpdGlvbiBub3JtYWxWYWx1ZUJlaGF2aW91cikg
Y29uc3Q7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSByZXNvbHZlZEp1c3RpZnlTZWxmKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHVlQmVo
YXZpb3VyKSBjb25zdDsKIAotICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUm
IGluaGVyaXRQYXJlbnQpOwotICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVu
ZGVyU3R5bGUqKTsKLQotICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5zdHlsZVR5cGUoKTsgfQotICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBz
ZXVkb0lkIHN0eWxlVHlwZSkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0U3R5bGVUeXBlKHN0eWxl
VHlwZSk7IH0KKyAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZEZsYWdzLnN0eWxlVHlwZSgpOyB9CisgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRv
SWQgc3R5bGVUeXBlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0U3R5bGVUeXBlKHN0eWxlVHlw
ZSk7IH0KIAogICAgIFJlbmRlclN0eWxlKiBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCkg
Y29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOwpAQCAtNTI2LDExNiArMTc5LDkzIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IFBzZXVkb1N0eWxlQ2FjaGUqIGNhY2hlZFBzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkUHNldWRvU3R5bGVzLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4mIHZhbHVlKSB7IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwg
dmFsdWUpOyB9Ci0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGdldEN1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJl
SW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KG5hbWUpOyB9Ci0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRp
ZXMtPmhhc0N1c3RvbVByb3BlcnR5KG5hbWUpOyB9Ci0gICAgY29uc3QgQ3VzdG9tUHJvcGVydHlW
YWx1ZU1hcCYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2N1c3RvbVByb3BlcnRpZXMtPm1fdmFsdWVzOyB9CisgICAgY29uc3QgQ3VzdG9tUHJv
cGVydHlWYWx1ZU1hcCYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQorICAgIHZvaWQgc2V0Q3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vz
cygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1l
LCBXVEZNb3ZlKHZhbHVlKSk7IH0KIAotICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29s
IGhhc1ZpZXdwb3J0VW5pdHMgPSB0cnVlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNWaWV3
cG9ydFVuaXRzKGhhc1ZpZXdwb3J0VW5pdHMpOyB9Ci0gICAgYm9vbCBoYXNWaWV3cG9ydFVuaXRz
KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMoKTsg
fQorICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIGhhc1ZpZXdwb3J0VW5pdHMgPSB0
cnVlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzVmlld3BvcnRVbml0cyhoYXNWaWV3cG9y
dFVuaXRzKTsgfQorICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0cygpOyB9CiAKLSAgICBib29sIGFmZmVj
dGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5
SG92ZXIoKTsgfQotICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KLSAgICBib29sIGFmZmVjdGVk
QnlEcmFnKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVkQnlEcmFn
KCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlBY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlBY3RpdmUo
KTsgfQorICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmFmZmVjdGVkQnlEcmFnKCk7IH0KIAotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhv
dmVyKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKHRydWUpOyB9Ci0g
ICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZm
ZWN0ZWRCeUFjdGl2ZSh0cnVlKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG5v
bmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyh0cnVlKTsgfQorICAgIHZvaWQgc2V0
QWZmZWN0ZWRCeUhvdmVyKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEFmZmVjdGVkQnlIb3Zl
cih0cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5zZXRBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOyB9CisgICAgdm9pZCBzZXRBZmZlY3Rl
ZEJ5RHJhZygpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyh0cnVlKTsg
fQogCiAgICAgdm9pZCBzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUoY29uc3QgUGFn
aW5hdGlvbjo6TW9kZSYpOwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgYm9vbCBp
c0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmlzRmxvYXRpbmco
KTsgfQotICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gIXN1cnJvdW5kLT5tYXJn
aW4uaXNaZXJvKCk7IH0KLSAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KLSAgICBib29sIGhhc0JvcmRlckZpbGwoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQorICAgIGJvb2wgaXNGbG9h
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNGbG9hdGluZygpOyB9
CisgICAgYm9vbCBoYXNNYXJnaW4oKSBjb25zdCB7IHJldHVybiAhbV9zdXJyb3VuZERhdGEtPm1h
cmdpbi5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPmJvcmRlci5oYXNCb3JkZXIoKTsgfQorICAgIGJvb2wgaGFzQm9yZGVyRmls
bCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaGFzRmlsbCgpOyB9CiAg
ICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyRGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGhhc1Zp
c2libGVCb3JkZXIoKSB8fCBoYXNCb3JkZXJGaWxsKCk7IH0KLSAgICBib29sIGhhc1Zpc2libGVC
b3JkZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc1Zpc2libGVCb3JkZXIo
KTsgfQotICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+cGFk
ZGluZy5pc1plcm8oKTsgfQotICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gIXN1
cnJvdW5kLT5vZmZzZXQuaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc1Zpc2libGVCb3JkZXIoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc1Zpc2libGVCb3JkZXIoKTsg
fQorICAgIGJvb2wgaGFzUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3N1cnJvdW5kRGF0YS0+
cGFkZGluZy5pc1plcm8oKTsgfQorICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
IW1fc3Vycm91bmREYXRhLT5vZmZzZXQuaXNaZXJvKCk7IH0KICAgICBib29sIGhhc01hcmdpbkJl
Zm9yZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkuaGFzUXVpcmsoKTsgfQog
ICAgIGJvb2wgaGFzTWFyZ2luQWZ0ZXJRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkFmdGVy
KCkuaGFzUXVpcmsoKTsgfQogCi0gICAgYm9vbCBoYXNCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5oYXNJbWFnZSgpOyB9Ci0gICAgYm9v
bCBoYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+
YmFja2dyb3VuZCgpLmhhc0ZpeGVkSW1hZ2UoKTsgfQotICAgIAorICAgIGJvb2wgaGFzQmFja2dy
b3VuZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5o
YXNJbWFnZSgpOyB9CisgICAgYm9vbCBoYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuaGFzRml4ZWRJbWFnZSgpOyB9CisK
ICAgICBib29sIGhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkgY29uc3Q7Ci0gICAgCisKICAg
ICBib29sIGhhc0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBhcHBlYXJhbmNlKCkgIT0gTm9D
b250cm9sUGFydDsgfQogCi0gICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIENvbG9yIGNvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLSAgICAgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBoYXNCYWNrZ3JvdW5kSW1hZ2UoKTsKLSAg
ICB9CisgICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3Q7CiAgICAgCiAgICAgTGF5b3V0Qm94
RXh0ZW50IGltYWdlT3V0c2V0cyhjb25zdCBOaW5lUGllY2VJbWFnZSYpIGNvbnN0OwotICAgIGJv
b2wgaGFzQm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBi
b3JkZXJJbWFnZSgpLmhhc0ltYWdlKCkgJiYgIWJvcmRlckltYWdlKCkub3V0c2V0KCkuaXNaZXJv
KCk7Ci0gICAgfQotICAgIExheW91dEJveEV4dGVudCBib3JkZXJJbWFnZU91dHNldHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgpKTsKLSAg
ICB9CisgICAgYm9vbCBoYXNCb3JkZXJJbWFnZU91dHNldHMoKSBjb25zdCB7IHJldHVybiBib3Jk
ZXJJbWFnZSgpLmhhc0ltYWdlKCkgJiYgIWJvcmRlckltYWdlKCkub3V0c2V0KCkuaXNaZXJvKCk7
IH0KKyAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1
cm4gaW1hZ2VPdXRzZXRzKGJvcmRlckltYWdlKCkpOyB9CiAKLSAgICBMYXlvdXRCb3hFeHRlbnQg
bWFza0JveEltYWdlT3V0c2V0cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaW1hZ2VP
dXRzZXRzKG1hc2tCb3hJbWFnZSgpKTsKLSAgICB9CisgICAgTGF5b3V0Qm94RXh0ZW50IG1hc2tC
b3hJbWFnZU91dHNldHMoKSBjb25zdCB7IHJldHVybiBpbWFnZU91dHNldHMobWFza0JveEltYWdl
KCkpOyB9CiAKICAgICBib29sIGhhc0ZpbHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNG
aWx0ZXIoKSAmJiBmaWx0ZXIoKS5oYXNPdXRzZXRzKCk7IH0KICAgICBGaWx0ZXJPdXRzZXRzIGZp
bHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNl
dHMoKSA6IEZpbHRlck91dHNldHMoKTsgfQogCi0gICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4oaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJp
bmcpOyB9Ci0gICAgdm9pZCBzZXRSVExPcmRlcmluZyhPcmRlciBvKSB7IGluaGVyaXRlZF9mbGFn
cy5tX3J0bE9yZGVyaW5nID0gbzsgfQorICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcpOyB9
CisgICAgdm9pZCBzZXRSVExPcmRlcmluZyhPcmRlciBvcmRlcmluZykgeyBtX2luaGVyaXRlZEZs
YWdzLnJ0bE9yZGVyaW5nID0gb3JkZXJpbmc7IH0KIAogICAgIGJvb2wgaXNTdHlsZUF2YWlsYWJs
ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdDsK
LSAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pOworICAgIGJvb2wgaGFzUHNldWRv
U3R5bGUoUHNldWRvSWQpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRv
SWQpOwogICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0KTsKICAgICBib29s
IGhhc1VuaXF1ZVBzZXVkb1N0eWxlKCkgY29uc3Q7CiAKICAgICAvLyBhdHRyaWJ1dGUgZ2V0dGVy
IG1ldGhvZHMKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpOyB9Ci0gICAgRURpc3BsYXkgb3JpZ2luYWxE
aXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxh
eSgpOyB9CisgICAgRURpc3BsYXkgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpOyB9CiAKLSAgICBjb25zdCBMZW5ndGgmIGxlZnQo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxlZnQoKTsgfQotICAgIGNvbnN0IExl
bmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnJpZ2h0KCk7IH0K
LSAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQu
dG9wKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0
aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LnJpZ2h0KCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5vZmZzZXQudG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29y
cyBmb3IgcG9zaXRpb25lZCBvYmplY3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0
aW5nIG1vZGUuCi0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuZW5kKHdy
aXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsVG9wKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25z
dCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0
LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQuc3RhcnQod3JpdGluZ01vZGUo
KSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5vZmZzZXQuZW5kKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5i
ZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20o
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmFmdGVyKHdyaXRpbmdNb2Rl
KCkpOyB9CiAKLSAgICAvLyBXaGV0aGVyIG9yIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCByZXF1
aXJlcyBub3JtYWwgZmxvdyB4L3kgdG8gYmUgY29tcHV0ZWQKLSAgICAvLyB0byBkZXRlcm1pbmUg
aXRzIHBvc2l0aW9uLgotICAgIGJvb2wgaGFzQXV0b0xlZnRBbmRSaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGxlZnQoKS5pc0F1dG8oKSAmJiByaWdodCgpLmlzQXV0bygpOyB9Ci0gICAgYm9vbCBoYXNB
dXRvVG9wQW5kQm90dG9tKCkgY29uc3QgeyByZXR1cm4gdG9wKCkuaXNBdXRvKCkgJiYgYm90dG9t
KCkuaXNBdXRvKCk7IH0KKyAgICAvLyBXaGV0aGVyIG9yIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVu
dCByZXF1aXJlcyBub3JtYWwgZmxvdyB4L3kgdG8gYmUgY29tcHV0ZWQgIHRvIGRldGVybWluZSBp
dHMgcG9zaXRpb24uCiAgICAgYm9vbCBoYXNTdGF0aWNJbmxpbmVQb3NpdGlvbihib29sIGhvcml6
b250YWwpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWwgPyBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkg
OiBoYXNBdXRvVG9wQW5kQm90dG9tKCk7IH0KICAgICBib29sIGhhc1N0YXRpY0Jsb2NrUG9zaXRp
b24oYm9vbCBob3Jpem9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsID8gaGFzQXV0b1Rv
cEFuZEJvdHRvbSgpIDogaGFzQXV0b0xlZnRBbmRSaWdodCgpOyB9CiAKLSAgICBFUG9zaXRpb24g
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKTsg
fQorICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MucG9zaXRpb24oKTsgfQogICAgIGJvb2wgaGFzT3V0T2ZGbG93UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBwb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uOyB9CiAgICAgYm9vbCBoYXNJbkZsb3dQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IFN0
aWNreVBvc2l0aW9uOyB9CiAgICAgYm9vbCBoYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgcG9zaXRpb24o
KSA9PSBTdGlja3lQb3NpdGlvbjsgfQotICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpOyB9Ci0KLSAgICBjb25zdCBMZW5ndGgm
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPndpZHRoKCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oZWlnaHQoKTsgfQotICAgIGNvbnN0
IExlbmd0aCYgbWluV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+bWluV2lkdGgoKTsgfQot
ICAgIGNvbnN0IExlbmd0aCYgbWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+bWF4V2lk
dGgoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9i
b3gtPm1pbkhlaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXhIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2JveC0+bWF4SGVpZ2h0KCk7IH0KKyAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25z
dCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCk7IH0KKworICAgIGNvbnN0
IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPndpZHRoKCk7IH0KKyAg
ICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+aGVpZ2h0
KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1pbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hE
YXRhLT5taW5XaWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYm94RGF0YS0+bWF4V2lkdGgoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWluSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5taW5IZWlnaHQoKTsgfQorICAgIGNvbnN0
IExlbmd0aCYgbWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5tYXhIZWlnaHQo
KTsgfQogICAgIAogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQogICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6IHdpZHRoKCk7IH0KQEAgLTY0NCw0MiArMjc0LDQy
IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxNaW5IZWlnaHQoKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWluSGVpZ2h0KCkgOiBtaW5XaWR0
aCgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTWF4SGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heEhlaWdodCgpIDogbWF4V2lkdGgoKTsg
fQogCi0gICAgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlcjsgfQotICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJMZWZ0KCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCk7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1
ZSYgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCk7
IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci50b3AoKTsgfQotICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJCb3R0
b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpOyB9CisgICAgY29u
c3QgQm9yZGVyRGF0YSYgYm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlcjsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1
ZSYgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJp
Z2h0KCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1
cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3AoKTsgfQorICAgIGNvbnN0IEJvcmRlclZhbHVl
JiBib3JkZXJCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJv
dHRvbSgpOyB9CiAKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQmVmb3JlKCkgY29uc3Q7
CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFmdGVyKCkgY29uc3Q7CiAgICAgY29uc3Qg
Qm9yZGVyVmFsdWUmIGJvcmRlclN0YXJ0KCkgY29uc3Q7CiAgICAgY29uc3QgQm9yZGVyVmFsdWUm
IGJvcmRlckVuZCgpIGNvbnN0OwogCi0gICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGJvcmRlcklt
YWdlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpOyB9Ci0gICAgU3R5
bGVJbWFnZSogYm9yZGVySW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9y
ZGVyLmltYWdlKCkuaW1hZ2UoKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VT
bGljZXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuaW1hZ2VTbGlj
ZXMoKTsgfQotICAgIGNvbnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKS5ib3JkZXJTbGljZXMoKTsgfQotICAgIGNv
bnN0IExlbmd0aEJveCYgYm9yZGVySW1hZ2VPdXRzZXQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmltYWdlKCkub3V0c2V0KCk7IH0KLQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJv
cmRlclRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcExl
ZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoU2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm90dG9tTGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJp
Z2h0KCk7IH0KLSAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KLQotICAgIGZsb2F0IGJvcmRlckxlZnRX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7
IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyTGVmdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5sZWZ0KCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVyTGVmdElzVHJh
bnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5pc1RyYW5z
cGFyZW50KCk7IH0KLSAgICBmbG9hdCBib3JkZXJSaWdodFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPmJvcmRlci5ib3JkZXJSaWdodFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUg
Ym9yZGVyUmlnaHRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQo
KS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJSaWdodElzVHJhbnNwYXJlbnQoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAg
ZmxvYXQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJv
cmRlclRvcFdpZHRoKCk7IH0KLSAgICBFQm9yZGVyU3R5bGUgYm9yZGVyVG9wU3R5bGUoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJv
cmRlclRvcElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRv
cCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIGZsb2F0IGJvcmRlckJvdHRvbVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJCb3R0b21XaWR0aCgpOyB9Ci0gICAg
RUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5ib3R0b20oKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5z
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5pc1RyYW5z
cGFyZW50KCk7IH0KLSAgICBGbG9hdEJveEV4dGVudCBib3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyV2lkdGgoKTsgfQorICAgIGNvbnN0IE5pbmVQaWVj
ZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIuaW1hZ2UoKTsgfQorICAgIFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmltYWdlKCk7IH0KKyAgICBj
b25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPmJvcmRlci5pbWFnZSgpLmltYWdlU2xpY2VzKCk7IH0KKyAgICBjb25zdCBMZW5n
dGhCb3gmIGJvcmRlckltYWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLmltYWdlKCkuYm9yZGVyU2xpY2VzKCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJv
cmRlckltYWdlT3V0c2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5p
bWFnZSgpLm91dHNldCgpOyB9CisKKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BMZWZ0
UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3BMZWZ0KCk7
IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wUmlnaHQoKTsgfQorICAgIGNvbnN0IExl
bmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5ib3R0b21SaWdodCgpOyB9CisgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CisKKyAg
ICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpLnN0eWxl
KCk7IH0KKyAgICBib29sIGJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci5sZWZ0KCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgZmxv
YXQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUo
KTsgfQorICAgIGJvb2wgYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPmJvcmRlci5yaWdodCgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZs
b2F0IGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRl
ci5ib3JkZXJUb3BXaWR0aCgpOyB9CisgICAgRUJvcmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci50b3AoKS5zdHlsZSgpOyB9Cisg
ICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBmbG9hdCBib3JkZXJC
b3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm9yZGVy
Qm90dG9tV2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHlsZSBib3JkZXJCb3R0b21TdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQor
ICAgIGJvb2wgYm9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5ib3JkZXIuYm90dG9tKCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgRmxvYXRC
b3hFeHRlbnQgYm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmJvcmRlcldpZHRoKCk7IH0KIAogICAgIGZsb2F0IGJvcmRlckJlZm9yZVdpZHRoKCkgY29u
c3Q7CiAgICAgZmxvYXQgYm9yZGVyQWZ0ZXJXaWR0aCgpIGNvbnN0OwpAQCAtNjg5LDI4ICszMTks
MjggQEAgcHVibGljOgogICAgIGZsb2F0IG91dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjptYXg8ZmxvYXQ+KDAsIG91dGxpbmVXaWR0aCgpICsgb3V0bGluZU9mZnNldCgpKTsgfQogICAg
IGZsb2F0IG91dGxpbmVXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3V0bGluZSgpIGNvbnN0
IHsgcmV0dXJuIG91dGxpbmVTdHlsZSgpID4gQkhJRERFTiAmJiBvdXRsaW5lV2lkdGgoKSA+IDA7
IH0KLSAgICBFQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kLT5vdXRsaW5lKCkuc3R5bGUoKTsgfQotICAgIE91dGxpbmVJc0F1dG8gb3V0bGluZVN0
eWxlSXNBdXRvKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9i
YWNrZ3JvdW5kLT5vdXRsaW5lKCkuaXNBdXRvKCkpOyB9CisgICAgRUJvcmRlclN0eWxlIG91dGxp
bmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUo
KTsgfQorICAgIE91dGxpbmVJc0F1dG8gb3V0bGluZVN0eWxlSXNBdXRvKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5p
c0F1dG8oKSk7IH0KICAgICBib29sIGhhc091dGxpbmVJblZpc3VhbE92ZXJmbG93KCkgY29uc3Qg
eyByZXR1cm4gaGFzT3V0bGluZSgpICYmIG91dGxpbmVTaXplKCkgPiAwOyB9CiAgICAgCi0gICAg
RU92ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5v
dmVyZmxvd1goKTsgfQotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCk7IH0KKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dY
KCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1goKTsgfQorICAg
IEVPdmVyZmxvdyBvdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdz
Lm92ZXJmbG93WSgpOyB9CiAKLSAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+KGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0
eSk7IH0KLSAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4g
bm9uaW5oZXJpdGVkX2ZsYWdzLnZlcnRpY2FsQWxpZ24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
dmVydGljYWxBbGlnbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT52ZXJ0aWNhbEFsaWdu
KCk7IH0KKyAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RVZpc2liaWxpdHk+KG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSk7IH0KKyAgICBF
VmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0
ZWRGbGFncy52ZXJ0aWNhbEFsaWduKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxp
Z25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKTsgfQog
Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xp
cC5sZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHZpc3VhbC0+Y2xpcC5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkgY29u
c3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwLnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlw
Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwLmJvdHRvbSgpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoQm94JiBjbGlwKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5jbGlwOyB9Ci0gICAg
Ym9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT5oYXNDbGlwOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5s
ZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGNsaXBSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlzdWFsRGF0YS0+Y2xpcC5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwVG9wKCkg
Y29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwLnRvcCgpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBjbGlwQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxEYXRhLT5jbGlwLmJvdHRv
bSgpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBjbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1
YWxEYXRhLT5jbGlwOyB9CisgICAgYm9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gbV92aXN1
YWxEYXRhLT5oYXNDbGlwOyB9CiAKLSAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25z
dCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKTsgfQorICAgIEVVbmlj
b2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
dW5pY29kZUJpZGkoKTsgfQogCi0gICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCk7IH0KLSAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKTsgfQorICAg
IEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIo
KTsgfQorICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
SW5oZXJpdGVkRmxhZ3MudGFibGVMYXlvdXQoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Q7CkBAIC03MTgsMjc3ICszNDgs
MjEyIEBAIHB1YmxpYzoKICAgICBmbG9hdCBzcGVjaWZpZWRGb250U2l6ZSgpIGNvbnN0OwogICAg
IGZsb2F0IGNvbXB1dGVkRm9udFNpemUoKSBjb25zdDsKICAgICBpbnQgZm9udFNpemUoKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8Rm9udE9yaWVudGF0aW9uLCBOb25DSktHbHlwaE9yaWVudGF0aW9u
PiBmb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05U
UykKICAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgZm9udFZhcmlhdGlvblNldHRpbmdzKCkgY29u
c3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkudmFyaWF0aW9uU2V0dGluZ3MoKTsgfQogI2Vu
ZGlmCi0gICAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlvbiwgTm9uQ0pLR2x5cGhPcmllbnRhdGlv
bj4gZm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsKIAotICAgIGNvbnN0IExlbmd0aCYgdGV4dElu
ZGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5pbmRlbnQ7IH0KKyAgICBFVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQor
ICAgIEVUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFVGV4dFRyYW5zZm9ybT4obV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQor
ICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29y
YXRpb25zKTsgfQorICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KG1fdmlzdWFsRGF0YS0+dGV4dERlY29y
YXRpb24pOyB9CisgICAgVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25TdHlsZT4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSk7IH0KKyAgICBUZXh0RGVjb3JhdGlv
blNraXAgdGV4dERlY29yYXRpb25Ta2lwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dERlY29yYXRpb25Ta2lwPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXAp
OyB9CisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQorCiAjaWYgRU5BQkxFKENTUzNf
VEVYVCkKLSAgICBUZXh0SW5kZW50TGluZSB0ZXh0SW5kZW50TGluZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRJbmRlbnRMaW5lPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5k
ZW50TGluZSk7IH0KLSAgICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRUeXBlPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90
ZXh0SW5kZW50VHlwZSk7IH0KKyAgICBUZXh0SW5kZW50TGluZSB0ZXh0SW5kZW50TGluZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRMaW5lPihtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0SW5kZW50TGluZSk7IH0KKyAgICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRJbmRlbnRUeXBlPihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0SW5kZW50VHlwZSk7IH0KKyAgICBUZXh0QWxpZ25MYXN0IHRleHRBbGln
bkxhc3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25MYXN0PihtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0QWxpZ25MYXN0KTsgfQorICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0
aWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEp1c3RpZnk+KG1fcmFyZUluaGVy
aXRlZERhdGEtPnRleHRKdXN0aWZ5KTsgfQogI2VuZGlmCi0gICAgRVRleHRBbGlnbiB0ZXh0QWxp
Z24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihpbmhlcml0ZWRfZmxh
Z3MuX3RleHRfYWxpZ24pOyB9Ci0gICAgRVRleHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0VHJhbnNmb3JtPihpbmhlcml0ZWRfZmxhZ3Mu
X3RleHRfdHJhbnNmb3JtKTsgfQotICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9uc0lu
RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb24+KGluaGVy
aXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyk7IH0KLSAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0
RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPih2
aXN1YWwtPnRleHREZWNvcmF0aW9uKTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgVGV4
dEFsaWduTGFzdCB0ZXh0QWxpZ25MYXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEFsaWduTGFzdD4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdCk7IH0KLSAgICBU
ZXh0SnVzdGlmeSB0ZXh0SnVzdGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRK
dXN0aWZ5PihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SnVzdGlmeSk7IH0KLSNlbmRpZiAvLyBD
U1MzX1RFWFQKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQotICAgIFRleHREZWNvcmF0aW9u
U2tpcCB0ZXh0RGVjb3JhdGlvblNraXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
RGVjb3JhdGlvblNraXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU2tpcCk7
IH0KLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdGV4dFVuZGVybGluZVBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihyYXJlSW5oZXJp
dGVkRGF0YS0+bV90ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CiAKICAgICBjb25zdCBMZW5ndGgm
IHdvcmRTcGFjaW5nKCkgY29uc3Q7CiAgICAgZmxvYXQgbGV0dGVyU3BhY2luZygpIGNvbnN0Owog
Ci0gICAgZmxvYXQgem9vbSgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+bV96b29tOyB9Ci0gICAg
ZmxvYXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5t
X2VmZmVjdGl2ZVpvb207IH0KKyAgICBmbG9hdCB6b29tKCkgY29uc3QgeyByZXR1cm4gbV92aXN1
YWxEYXRhLT56b29tOyB9CisgICAgZmxvYXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZVpvb207IH0KICAgICAKLSAgICBUZXh0Wm9v
bSB0ZXh0Wm9vbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRab29tPihyYXJlSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbSk7IH0KKyAgICBUZXh0Wm9vbSB0ZXh0Wm9vbSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRab29tPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
Wm9vbSk7IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24pOyB9
CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbik7IH0KICAgICBib29s
IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBM
VFI7IH0KLSAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBub25pbmhlcml0ZWRfZmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpOyB9CisgICAg
Ym9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCk7IH0KIAogICAgIGNvbnN0IExl
bmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIExl
bmd0aCBsaW5lSGVpZ2h0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGVuZ3Ro
JiBsaW5lSGVpZ2h0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbXB1dGVkTGlu
ZUhlaWdodCgpIGNvbnN0OwogCi0gICAgRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNlPihpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3Nw
YWNlKTsgfQotICAgIHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsK
LSAgICAgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGljYWxseSB3cmFwLgotICAg
ICAgICByZXR1cm4gd3MgIT0gTk9XUkFQICYmIHdzICE9IFBSRTsKLSAgICB9CisgICAgRVdoaXRl
U3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNl
PihtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UpOyB9CisgICAgc3RhdGljIGJvb2wgYXV0b1dy
YXAoRVdoaXRlU3BhY2UpOworICAgIGJvb2wgYXV0b1dyYXAoKSBjb25zdCB7IHJldHVybiBhdXRv
V3JhcCh3aGl0ZVNwYWNlKCkpOyB9CisgICAgc3RhdGljIGJvb2wgcHJlc2VydmVOZXdsaW5lKEVX
aGl0ZVNwYWNlKTsKKyAgICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIHBy
ZXNlcnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOyB9CisgICAgc3RhdGljIGJvb2wgY29sbGFwc2VX
aGl0ZVNwYWNlKEVXaGl0ZVNwYWNlKTsKKyAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh3aGl0ZVNwYWNlKCkpOyB9CisgICAgYm9v
bCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShVQ2hhcikgY29uc3Q7CisgICAgYm9vbCBicmVha09u
bHlBZnRlcldoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBib29sIGJyZWFrV29yZHMoKSBjb25zdDsK
KworICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQucmVwZWF0
WCgpKTsgfQorICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQu
cmVwZWF0WSgpKTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGJhY2tncm91bmRDb21wb3NpdGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4obV9iYWNrZ3Jv
dW5kRGF0YS0+YmFja2dyb3VuZC5jb21wb3NpdGUoKSk7IH0KKyAgICBFRmlsbEF0dGFjaG1lbnQg
YmFja2dyb3VuZEF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEF0
dGFjaG1lbnQ+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuYXR0YWNobWVudCgpKTsgfQor
ICAgIEVGaWxsQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxCb3g+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuY2xpcCgpKTsgfQorICAgIEVG
aWxsQm94IGJhY2tncm91bmRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bEJveD4obV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5vcmlnaW4oKSk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIGJhY2tncm91bmRYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmREYXRhLT5iYWNrZ3JvdW5kLnhQb3NpdGlvbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBiYWNr
Z3JvdW5kWVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dy
b3VuZC55UG9zaXRpb24oKTsgfQorICAgIEVGaWxsU2l6ZVR5cGUgYmFja2dyb3VuZFNpemVUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5zaXplVHlwZSgp
OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYmFja2dyb3VuZFNpemVMZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnNpemVMZW5ndGgoKTsgfQorICAg
IEZpbGxMYXllciYgZW5zdXJlQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZERhdGEuYWNjZXNzKCkuYmFja2dyb3VuZDsgfQorICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dy
b3VuZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQ7
IH0KKworICAgIFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hc2suaW1hZ2UoKTsgfQorICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBl
YXRYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hc2sucmVwZWF0WCgpKTsgfQorICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBl
YXRZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hc2sucmVwZWF0WSgpKTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1h
c2tDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRv
cj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5jb21wb3NpdGUoKSk7IH0KKyAgICBFRmls
bEJveCBtYXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLmNsaXAoKSk7IH0KKyAgICBFRmlsbEJveCBtYXNrT3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hc2sub3JpZ2luKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay54UG9zaXRp
b24oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFza1lQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2sueVBvc2l0aW9uKCk7IH0KKyAgICBFRmlsbFNp
emVUeXBlIG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hc2suc2l6ZVR5cGUoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIG1hc2tTaXplTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5zaXplTGVu
Z3RoKCk7IH0KKyAgICBGaWxsTGF5ZXImIGVuc3VyZU1hc2tMYXllcnMoKSB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2s7IH0KKyAgICBjb25zdCBGaWxsTGF5ZXIm
IG1hc2tMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNr
OyB9CisgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tCb3hJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZTsgfQorICAgIFN0eWxlSW1h
Z2UqIG1hc2tCb3hJbWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1hc2tCb3hJbWFnZS5pbWFnZSgpOyB9CisKKyAgICBFQm9yZGVyQ29sbGFwc2UgYm9y
ZGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyQ29sbGFwc2U+
KG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UpOyB9CisgICAgZmxvYXQgaG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSBjb25zdDsKKyAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmco
KSBjb25zdDsKKyAgICBFRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFRW1wdHlDZWxsPihtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMpOyB9CisgICAg
RUNhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNh
cHRpb25TaWRlPihtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlKTsgfQogCi0gICAgYm9vbCBh
dXRvV3JhcCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXV0b1dyYXAod2hpdGVTcGFj
ZSgpKTsKLSAgICB9CisgICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihtX2luaGVyaXRlZEZsYWdzLmxpc3RT
dHlsZVR5cGUpOyB9CisgICAgU3R5bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBjb25zdDsKKyAg
ICBFTGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFTGlzdFN0eWxlUG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxl
UG9zaXRpb24pOyB9CisKKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4udG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1h
cmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYm90dG9t
KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+bWFyZ2luLmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luUmln
aHQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnJpZ2h0KCk7IH0KKyAg
ICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmRE
YXRhLT5tYXJnaW4uYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
YXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYWZ0ZXIo
d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJl
Y3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5tYXJnaW4uZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsg
fQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSog
b3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5zdGFydChv
dGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KKyAg
ICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0
eWxlKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmVuZChvdGhlclN0eWxl
LT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIG1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJlZm9yZShvdGhlclN0eWxlLT53
cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXJVc2luZyhjb25z
dCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
Pm1hcmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQorCisgICAgY29uc3Qg
TGVuZ3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBh
ZGRpbmc7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3AoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+cGFkZGluZy50b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGlu
Z0JvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmJvdHRvbSgp
OyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5wYWRkaW5nLmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1Jp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcucmlnaHQoKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5wYWRkaW5nLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0
aCYgcGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPnBhZGRpbmcu
YWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnN0YXJ0KHdyaXRpbmdNb2Rl
KCksIGRpcmVjdGlvbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJl
Y3Rpb24oKSk7IH0KKworICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUN1cnNvcj4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3IpOyB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd3MpCi0gICAgewotICAgICAgICAvLyBO
b3JtYWwgYW5kIG5vd3JhcCBkbyBub3QgcHJlc2VydmUgbmV3bGluZXMuCi0gICAgICAgIHJldHVy
biB3cyAhPSBOT1JNQUwgJiYgd3MgIT0gTk9XUkFQOwotICAgIH0KKyNpZiBFTkFCTEUoQ1VSU09S
X1ZJU0lCSUxJVFkpCisgICAgQ3Vyc29yVmlzaWJpbGl0eSBjdXJzb3JWaXNpYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFn
cy5jdXJzb3JWaXNpYmlsaXR5KTsgfQorI2VuZGlmCiAKLSAgICBib29sIHByZXNlcnZlTmV3bGlu
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlc2VydmVOZXdsaW5lKHdoaXRlU3Bh
Y2UoKSk7Ci0gICAgfQorICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgYm9v
bCBjb2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2Ugd3MpCi0gICAgewotICAgICAgICAvLyBQ
cmUgYW5kIHByZXdyYXAgZG8gbm90IGNvbGxhcHNlIHdoaXRlc3BhY2UuCi0gICAgICAgIHJldHVy
biB3cyAhPSBQUkUgJiYgd3MgIT0gUFJFX1dSQVA7Ci0gICAgfQorICAgIEVJbnNpZGVMaW5rIGlu
c2lkZUxpbmsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW5zaWRlTGluaz4obV9pbmhl
cml0ZWRGbGFncy5pbnNpZGVMaW5rKTsgfQorICAgIGJvb2wgaXNMaW5rKCkgY29uc3QgeyByZXR1
cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5pc0xpbmsoKTsgfQogCi0gICAgYm9vbCBjb2xsYXBzZVdo
aXRlU3BhY2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFj
ZSh3aGl0ZVNwYWNlKCkpOwotICAgIH0KKyAgICBib29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBj
b25zdCB7IHJldHVybiBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b247IH0KIAot
ICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgYykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICAgICAgY2FzZSAnICc6Ci0gICAgICAgICAgICBj
YXNlICdcdCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSgpOwot
ICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIHJldHVybiAhcHJlc2VydmVO
ZXdsaW5lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBz
aG9ydCB3aWRvd3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT53aWRvd3M7
IH0KKyAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+b3JwaGFuczsgfQorICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPmhhc0F1dG9XaWRvd3M7IH0KKyAgICBib29sIGhhc0F1dG9PcnBo
YW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aGFzQXV0b09ycGhhbnM7
IH0KIAotICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB3aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAgfHwgbGluZUJyZWFrKCkgPT0g
TGluZUJyZWFrQWZ0ZXJXaGl0ZVNwYWNlOwotICAgIH0KKyAgICBCcmVha0luc2lkZSBicmVha0lu
c2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5icmVha0luc2lkZSk7IH0KKyAgICBCcmVha0JldHdlZW4gYnJlYWtCZWZv
cmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlKTsgfQorICAgIEJyZWFrQmV0d2VlbiBicmVha0FmdGVy
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5icmVha0FmdGVyKTsgfQogCi0gICAgYm9vbCBicmVha1dvcmRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWsoKSA9PSBCcmVha1dvcmRCcmVhayB8fCBv
dmVyZmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93V3JhcDsKLSAgICB9Ci0KLSAgICBFRmlsbFJl
cGVhdCBiYWNrZ3JvdW5kUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxs
UmVwZWF0PihtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5yZXBlYXRYKCkpOyB9Ci0gICAgRUZp
bGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RmlsbFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkucmVwZWF0WSgpKTsgfQotICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGJhY2tncm91bmRDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCku
Y29tcG9zaXRlKCkpOyB9Ci0gICAgRUZpbGxBdHRhY2htZW50IGJhY2tncm91bmRBdHRhY2htZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxBdHRhY2htZW50PihtX2JhY2tncm91
bmQtPmJhY2tncm91bmQoKS5hdHRhY2htZW50KCkpOyB9Ci0gICAgRUZpbGxCb3ggYmFja2dyb3Vu
ZENsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9iYWNrZ3JvdW5k
LT5iYWNrZ3JvdW5kKCkuY2xpcCgpKTsgfQotICAgIEVGaWxsQm94IGJhY2tncm91bmRPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9iYWNrZ3JvdW5kLT5iYWNr
Z3JvdW5kKCkub3JpZ2luKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueFBvc2l0aW9u
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGJhY2tncm91bmRZUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS55UG9zaXRpb24oKTsgfQotICAgIEVGaWxs
U2l6ZVR5cGUgYmFja2dyb3VuZFNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
LT5iYWNrZ3JvdW5kKCkuc2l6ZVR5cGUoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJhY2tn
cm91bmRTaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5k
KCkuc2l6ZUxlbmd0aCgpOyB9Ci0gICAgRmlsbExheWVyJiBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJz
KCkgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLmFjY2VzcygpLT5tX2JhY2tncm91bmQ7IH0KLSAgICBj
b25zdCBGaWxsTGF5ZXIqIGJhY2tncm91bmRMYXllcnMoKSBjb25zdCB7IHJldHVybiAmKG1fYmFj
a2dyb3VuZC0+YmFja2dyb3VuZCgpKTsgfQotCi0gICAgU3R5bGVJbWFnZSogbWFza0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5pbWFnZSgpOyB9Ci0g
ICAgRUZpbGxSZXBlYXQgbWFza1JlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RmlsbFJlcGVhdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5yZXBlYXRYKCkpOyB9Ci0g
ICAgRUZpbGxSZXBlYXQgbWFza1JlcGVhdFkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RmlsbFJlcGVhdD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5yZXBlYXRZKCkpOyB9Ci0g
ICAgQ29tcG9zaXRlT3BlcmF0b3IgbWFza0NvbXBvc2l0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmNv
bXBvc2l0ZSgpKTsgfQotICAgIEVGaWxsQm94IG1hc2tDbGlwKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suY2xpcCgpKTsg
fQotICAgIEVGaWxsQm94IG1hc2tPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RmlsbEJveD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5vcmlnaW4oKSk7IH0KLSAgICBj
b25zdCBMZW5ndGgmIG1hc2tYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrLnhQb3NpdGlvbigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXNrWVBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay55UG9z
aXRpb24oKTsgfQotICAgIEVGaWxsU2l6ZVR5cGUgbWFza1NpemVUeXBlKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5zaXplVHlwZSgpOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoU2l6ZSYgbWFza1NpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxMYXllciYgZW5zdXJlTWFz
a0xheWVycygpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2s7
IH0KLSAgICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllcnMoKSBjb25zdCB7IHJldHVybiAmKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2spOyB9Ci0gICAgY29uc3QgTmluZVBpZWNlSW1hZ2Um
IG1hc2tCb3hJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
c2tCb3hJbWFnZTsgfQotICAgIFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZVNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5pbWFnZSgpOyB9
Ci0gCi0gICAgRUJvcmRlckNvbGxhcHNlIGJvcmRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUJvcmRlckNvbGxhcHNlPihpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xs
YXBzZSk7IH0KLSAgICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0OwotICAg
IGZsb2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0OwotICAgIEVFbXB0eUNlbGwgZW1w
dHlDZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KGluaGVyaXRl
ZF9mbGFncy5fZW1wdHlfY2VsbHMpOyB9Ci0gICAgRUNhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNhcHRpb25TaWRlPihpbmhlcml0ZWRfZmxhZ3Mu
X2NhcHRpb25fc2lkZSk7IH0KLQotICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4oaW5oZXJpdGVkX2ZsYWdz
Ll9saXN0X3N0eWxlX3R5cGUpOyB9Ci0gICAgU3R5bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBj
b25zdDsKLSAgICBFTGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlUG9zaXRpb24+KGluaGVyaXRlZF9mbGFncy5f
bGlzdF9zdHlsZV9wb3NpdGlvbik7IH0KLQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luVG9wKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5ib3R0b20o
KTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5tYXJnaW4ubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5SaWdodCgpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4ucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0
aCYgbWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUo
d3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQotICAgIGNv
bnN0IExlbmd0aCYgbWFyZ2luU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2lu
LnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luRW5kKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5lbmQod3JpdGluZ01v
ZGUoKSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFydFVzaW5n
KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
bWFyZ2luLnN0YXJ0KG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVj
dGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVy
U3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uZW5kKG90
aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlvbigpKTsgfQotICAg
IGNvbnN0IExlbmd0aCYgbWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVy
U3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYmVmb3JlKG90aGVyU3R5bGUt
PndyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5BZnRlclVzaW5nKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFy
Z2luLmFmdGVyKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpOyB9Ci0KLSAgICBjb25zdCBMZW5n
dGhCb3gmIHBhZGRpbmdCb3goKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZzsgfQot
ICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1RvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5w
YWRkaW5nLnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYm90dG9tKCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IHBhZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcubGVmdCgpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+cGFkZGluZy5yaWdodCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+cGFkZGluZy5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFk
ZGluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuc3RhcnQod3JpdGlu
Z01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nRW5kKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuZW5kKHdyaXRpbmdNb2RlKCksIGRpcmVj
dGlvbigpKTsgfQotCi0gICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFQ3Vyc29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KLSNpZiBFTkFC
TEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgQ3Vyc29yVmlzaWJpbGl0eSBjdXJzb3JWaXNpYmls
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlzaWJpbGl0eT4oaW5oZXJp
dGVkX2ZsYWdzLm1fY3Vyc29yVmlzaWJpbGl0eSk7IH0KLSNlbmRpZgotCi0gICAgQ3Vyc29yTGlz
dCogY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRh
LmdldCgpOyB9Ci0KLSAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUluc2lkZUxpbms+KGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayk7IH0K
LSAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0xp
bmsoKTsgfQotCi0gICAgYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uOyB9Ci0KLSAgICBzaG9ydCB3aWRv
d3MoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+d2lkb3dzOyB9Ci0gICAgc2hv
cnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5vcnBoYW5zOyB9
Ci0gICAgYm9vbCBoYXNBdXRvV2lkb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPm1faGFzQXV0b1dpZG93czsgfQotICAgIGJvb2wgaGFzQXV0b09ycGhhbnMoKSBjb25zdCB7
IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9oYXNBdXRvT3JwaGFuczsgfQotCi0gICAgLy8g
Q1NTMyBHZXR0ZXIgTWV0aG9kcwotICAgIEJyZWFrSW5zaWRlIGJyZWFrSW5zaWRlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtJbnNpZGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2JyZWFrSW5zaWRlKTsgfQotICAgIEJyZWFrQmV0d2VlbiBicmVha0JlZm9yZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YnJlYWtCZWZvcmUpOyB9Ci0gICAgQnJlYWtCZXR3ZWVuIGJyZWFrQWZ0ZXIoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Jy
ZWFrQWZ0ZXIpOyB9Ci0gICAgCi0gICAgSGFuZ2luZ1B1bmN0dWF0aW9uIGhhbmdpbmdQdW5jdHVh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmdpbmdQdW5jdHVhdGlvbj4ocmFy
ZUluaGVyaXRlZERhdGEtPm1faGFuZ2luZ1B1bmN0dWF0aW9uKTsgfQorICAgIEhhbmdpbmdQdW5j
dHVhdGlvbiBoYW5naW5nUHVuY3R1YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxI
YW5naW5nUHVuY3R1YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQdW5jdHVhdGlv
bik7IH0KIAogICAgIGZsb2F0IG91dGxpbmVPZmZzZXQoKSBjb25zdDsKLSAgICBjb25zdCBTaGFk
b3dEYXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTaGFkb3cuZ2V0KCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dFeHRlbnQoTGF5b3V0VW5p
dCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0
JiBsZWZ0KSBjb25zdCB7IGdldFNoYWRvd0V4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dIb3Jpem9udGFsRXh0ZW50
KExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0hv
cml6b250YWxFeHRlbnQodGV4dFNoYWRvdygpLCBsZWZ0LCByaWdodCk7IH0KLSAgICB2b2lkIGdl
dFRleHRTaGFkb3dWZXJ0aWNhbEV4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIGJv
dHRvbSkgY29uc3QgeyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudCh0ZXh0U2hhZG93KCksIHRvcCwg
Ym90dG9tKTsgfQorICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3coKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2hhZG93LmdldCgpOyB9CiAgICAgdm9pZCBn
ZXRUZXh0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0
LCBMYXlvdXRVbml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93SW5saW5lRGlyZWN0
aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7IH0KICAg
ICB2b2lkIGdldFRleHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dp
Y2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Jsb2Nr
RGlyZWN0aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7
IH0KIAotICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KLSAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3BhY2l0eTsgfQotICAgIENvbnRyb2xQ
YXJ0IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFydD4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSk7IH0KLSAgICBBc3BlY3RSYXRpb1R5
cGUgYXNwZWN0UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXNwZWN0UmF0
aW9UeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb1R5cGUpOyB9Ci0gICAg
ZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBhc3BlY3RSYXRpb051bWVyYXRvcigp
IC8gYXNwZWN0UmF0aW9EZW5vbWluYXRvcigpOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5v
bWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJh
dGlvRGVub21pbmF0b3I7IH0KLSAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yOyB9
Ci0gICAgRUJveEFsaWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVCb3hBbGlnbm1lbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJs
ZUJveC0+YWxpZ24pOyB9Ci0gICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFQm94RGlyZWN0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2JveF9k
aXJlY3Rpb24pOyB9Ci0gICAgZmxvYXQgYm94RmxleCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleDsgfQotICAgIHVuc2ln
bmVkIGludCBib3hGbGV4R3JvdXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXhfZ3JvdXA7IH0KLSAgICBFQm94TGluZXMg
Ym94TGluZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94TGluZXM+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+bGluZXMpOyB9Ci0gICAgdW5z
aWduZWQgaW50IGJveE9yZGluYWxHcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JkaW5hbF9ncm91cDsgfQotICAgIEVC
b3hPcmllbnQgYm94T3JpZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveE9yaWVu
dD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmllbnQp
OyB9Ci0gICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVC
b3hQYWNrPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPnBh
Y2spOyB9Ci0KLSAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9vcmRlcjsgfQotICAgIGZsb2F0IGZsZXhHcm93KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleEdyb3c7IH0KLSAgICBmbG9h
dCBmbGV4U2hyaW5rKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxl
eGlibGVCb3gtPm1fZmxleFNocmluazsgfQotICAgIGNvbnN0IExlbmd0aCYgZmxleEJhc2lzKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxl
eEJhc2lzOyB9Ci0gICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgYWxpZ25Db250
ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50
OyB9Ci0gICAgQ29udGVudFBvc2l0aW9uIGFsaWduQ29udGVudFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50LnBvc2l0aW9uKCk7IH0K
LSAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBhbGlnbkNvbnRlbnREaXN0cmlidXRpb24oKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQuZGlzdHJp
YnV0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnbkNvbnRlbnRPdmVyZmxvd0Fs
aWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29u
dGVudC5vdmVyZmxvdygpOyB9Ci0gICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxp
Z25JdGVtcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRl
bXM7IH0KLSAgICBJdGVtUG9zaXRpb24gYWxpZ25JdGVtc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5wb3NpdGlvbigpOyB9Ci0gICAg
T3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5vdmVyZmxvdygpOyB9Ci0g
ICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxmKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmOyB9Ci0gICAgSXRlbVBvc2l0aW9u
IGFsaWduU2VsZlBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYWxpZ25TZWxmLnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnblNl
bGZPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduU2VsZi5vdmVyZmxvdygpOyB9Ci0gICAgRUZsZXhEaXJlY3Rpb24gZmxleERpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4RGlyZWN0aW9uPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4RGlyZWN0aW9uKTsgfQorICAgIGZs
b2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTdHJva2VXaWR0aDsgfQorICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CisgICAgQ29udHJvbFBhcnQgYXBwZWFy
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlKTsgfQorICAgIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RS
YXRpb1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlvVHlwZSk7IH0KKyAgICBmbG9hdCBhc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YXNwZWN0UmF0aW9EZW5vbWluYXRvcjsgfQorICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXNwZWN0UmF0aW9O
dW1lcmF0b3I7IH0KKyAgICBFQm94QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUJveEFsaWdubWVudD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVj
YXRlZEZsZXhpYmxlQm94LT5hbGlnbik7IH0KKyAgICBFQm94RGlyZWN0aW9uIGJveERpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hEaXJlY3Rpb24+KG1faW5oZXJpdGVk
RmxhZ3MuYm94RGlyZWN0aW9uKTsgfQorICAgIGZsb2F0IGJveEZsZXgoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXg7IH0K
KyAgICB1bnNpZ25lZCBib3hGbGV4R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXhHcm91cDsgfQorICAgIEVCb3hM
aW5lcyBib3hMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hMaW5lcz4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5saW5lcyk7IH0KKyAg
ICB1bnNpZ25lZCBib3hPcmRpbmFsR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPm9yZGluYWxHcm91cDsgfQorICAgIEVC
b3hPcmllbnQgYm94T3JpZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveE9yaWVu
dD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmllbnQp
OyB9CisgICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVC
b3hQYWNrPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gtPnBh
Y2spOyB9CisKKyAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5vcmRlcjsgfQorICAgIGZsb2F0IGZsZXhHcm93KCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhHcm93OyB9CisgICAgZmxvYXQg
ZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhp
YmxlQm94LT5mbGV4U2hyaW5rOyB9CisgICAgY29uc3QgTGVuZ3RoJiBmbGV4QmFzaXMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleEJhc2lz
OyB9CisgICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgYWxpZ25Db250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25Db250ZW50OyB9Cisg
ICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25JdGVtcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduSXRlbXM7IH0KKyAgICBjb25zdCBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnblNlbGYoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5hbGlnblNlbGY7IH0KKyAgICBFRmxleERpcmVjdGlvbiBmbGV4RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhEaXJlY3Rpb24+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4RGlyZWN0aW9uKTsgfQogICAgIGJvb2wg
aXNDb2x1bW5GbGV4RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmxleERpcmVjdGlvbigpID09
IEZsb3dDb2x1bW4gfHwgZmxleERpcmVjdGlvbigpID09IEZsb3dDb2x1bW5SZXZlcnNlOyB9CiAg
ICAgYm9vbCBpc1JldmVyc2VGbGV4RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmxleERpcmVj
dGlvbigpID09IEZsb3dSb3dSZXZlcnNlIHx8IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1u
UmV2ZXJzZTsgfQotICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1f
ZmxleFdyYXApOyB9Ci0gICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYganVzdGlm
eUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5
Q29udGVudDsgfQotICAgIENvbnRlbnRQb3NpdGlvbiBqdXN0aWZ5Q29udGVudFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQucG9z
aXRpb24oKTsgfQotICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIGp1c3RpZnlDb250ZW50RGlz
dHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eUNvbnRlbnQuZGlzdHJpYnV0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5
Q29udGVudE92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fanVzdGlmeUNvbnRlbnQub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEmIGp1c3RpZnlJdGVtcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtczsgfQotICAgIEl0ZW1Qb3NpdGlvbiBqdXN0aWZ5SXRl
bXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3Rp
ZnlJdGVtcy5wb3NpdGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlmeUl0ZW1z
T3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9qdXN0aWZ5SXRlbXMub3ZlcmZsb3coKTsgfQotICAgIEl0ZW1Qb3NpdGlvblR5cGUganVzdGlm
eUl0ZW1zUG9zaXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fanVzdGlmeUl0ZW1zLnBvc2l0aW9uVHlwZSgpOyB9Ci0gICAgY29uc3QgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSYganVzdGlmeVNlbGYoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9qdXN0aWZ5U2VsZjsgfQotICAgIEl0ZW1Qb3NpdGlvbiBqdXN0aWZ5U2VsZlBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYu
cG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlTZWxmT3ZlcmZsb3dB
bGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5
U2VsZi5vdmVyZmxvdygpOyB9CisgICAgRUZsZXhXcmFwIGZsZXhXcmFwKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUZsZXhXcmFwPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJs
ZUJveC0+ZmxleFdyYXApOyB9CisgICAgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYg
anVzdGlmeUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5q
dXN0aWZ5Q29udGVudDsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3Rp
ZnlJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlJ
dGVtczsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+anVzdGlmeVNlbGY7IH0KIAog
I2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1Np
emU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9ncmlkUm93czsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9ncmlkQXV0b1JlcGVhdENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIGdyaWRBdXRvUmVwZWF0Um93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRSb3dzOyB9Ci0gICAgdW5zaWduZWQgZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQ7
IH0KLSAgICB1bnNpZ25lZCBncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdFJvd3NJ
bnNlcnRpb25Qb2ludDsgfQotICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1u
c1R5cGUoKSBjb25zdCAgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9h
dXRvUmVwZWF0Q29sdW1uc1R5cGU7IH0KLSAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVh
dFJvd3NUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQt
Pm1fYXV0b1JlcGVhdFJvd3NUeXBlOyB9Ci0gICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExp
bmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVk
TmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fb3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3Jp
ZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1
bW5MaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1l
ZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lczsgfQotICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFy
ZWEoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVk
R3JpZEFyZWE7IH0KLSAgICBzaXplX3QgbmFtZWRHcmlkQXJlYVJvd0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhUm93Q291
bnQ7IH0KLSAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQ7IH0KLSAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8R3JpZEF1dG9GbG93PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dy
aWRBdXRvRmxvdyk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkgY29u
c3QgeyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93
ICYgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdyk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9G
bG93RGlyZWN0aW9uQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVt
bik7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlKCkgY29uc3QgeyBy
ZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50
ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSk7IH0KLSAgICBib29sIGlzR3JpZEF1dG9GbG93
QWxnb3JpdGhtRGVuc2UoKSBjb25zdCB7IHJldHVybiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZC0+bV9ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UpOyB9
Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b0NvbHVtbnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvQ29sdW1u
czsgfQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9Sb3dzKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b1Jvd3M7
IH0KLSAgICBjb25zdCBMZW5ndGgmIGdyaWRDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5HYXA7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIGdyaWRSb3dHYXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX2dyaWRSb3dHYXA7IH0KLQotCi0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlk
SXRlbUNvbHVtblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZEl0ZW0tPm1fZ3JpZENvbHVtblN0YXJ0OyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBn
cmlkSXRlbUNvbHVtbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWRJdGVtLT5tX2dyaWRDb2x1bW5FbmQ7IH0KLSAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdy
aWRJdGVtUm93U3RhcnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkSXRlbS0+bV9ncmlkUm93U3RhcnQ7IH0KLSAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJ
dGVtUm93RW5kKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0
ZW0tPm1fZ3JpZFJvd0VuZDsgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICov
Ci0KLSAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3coKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+Z3JpZFJvd3M7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdy
aWRBdXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmdyaWQtPmdyaWRBdXRvUmVwZWF0Q29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlk
VHJhY2tTaXplPiYgZ3JpZEF1dG9SZXBlYXRSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9SZXBlYXRSb3dzOyB9CisgICAgdW5zaWduZWQg
Z3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
OyB9CisgICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0Um93c0lu
c2VydGlvblBvaW50OyB9CisgICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRDb2x1bW5z
VHlwZSgpIGNvbnN0ICB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRv
UmVwZWF0Q29sdW1uc1R5cGU7IH0KKyAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdFJv
d3NUeXBlKCkgY29uc3QgIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmF1
dG9SZXBlYXRSb3dzVHlwZTsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdy
aWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPm5hbWVkR3JpZENvbHVtbkxpbmVzOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAm
IG5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+bmFtZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsg
fQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+b3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIGF1
dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAg
IGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0TmFt
ZWRHcmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAg
IGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRBcmVhOyB9CisgICAgc2l6ZV90
IG5hbWVkR3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmdyaWQtPm5hbWVkR3JpZEFyZWFSb3dDb3VudDsgfQorICAgIHNpemVfdCBuYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5ncmlkLT5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7IH0KKyAgICBHcmlkQXV0b0Zsb3cgZ3Jp
ZEF1dG9GbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R3JpZEF1dG9GbG93PihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cpOyB9CisgICAgYm9vbCBpc0dy
aWRBdXRvRmxvd0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uUm93
KTsgfQorICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4oKSBjb25zdCB7IHJl
dHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJu
YWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbik7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93QWxn
b3JpdGhtU3BhcnNlKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UpOyB9Cisg
ICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkgY29uc3QgeyByZXR1cm4gKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zs
b3dBbGdvcml0aG1EZW5zZSk7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdy
aWRBdXRvQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPmdyaWRBdXRvQ29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
Z3JpZEF1dG9Sb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3Jp
ZC0+Z3JpZEF1dG9Sb3dzOyB9CisgICAgY29uc3QgTGVuZ3RoJiBncmlkQ29sdW1uR2FwKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZENvbHVtbkdhcDsg
fQorICAgIGNvbnN0IExlbmd0aCYgZ3JpZFJvd0dhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRSb3dHYXA7IH0KKworICAgIGNvbnN0IEdyaWRQb3Np
dGlvbiYgZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWRJdGVtLT5ncmlkQ29sdW1uU3RhcnQ7IH0KKyAgICBjb25zdCBHcmlkUG9z
aXRpb24mIGdyaWRJdGVtQ29sdW1uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZEl0ZW0tPmdyaWRDb2x1bW5FbmQ7IH0KKyAgICBjb25zdCBHcmlkUG9zaXRp
b24mIGdyaWRJdGVtUm93U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5ncmlkSXRlbS0+Z3JpZFJvd1N0YXJ0OyB9CisgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBn
cmlkSXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWRJdGVtLT5ncmlkUm93RW5kOyB9CisjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
KworICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJveFNoYWRvdy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0Qm94U2hh
ZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQm
IGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQoYm94U2hh
ZG93KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7IH0KICAgICBMYXlvdXRCb3hFeHRlbnQg
Z2V0Qm94U2hhZG93SW5zZXRFeHRlbnQoKSBjb25zdCB7IHJldHVybiBnZXRTaGFkb3dJbnNldEV4
dGVudChib3hTaGFkb3coKSk7IH0KICAgICB2b2lkIGdldEJveFNoYWRvd0hvcml6b250YWxFeHRl
bnQoTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93
SG9yaXpvbnRhbEV4dGVudChib3hTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9CkBAIC05OTcsMTM2
ICs1NjIsMTMzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJveFNoYWRvd0Jsb2NrRGlyZWN0aW9u
RXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20p
IGNvbnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoYm94U2hhZG93KCksIGxvZ2lj
YWxUb3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKQotICAgIEVCb3hEZWNvcmF0aW9uQnJlYWsgYm94RGVjb3JhdGlvbkJyZWFrKCkgY29u
c3QgeyByZXR1cm4gbV9ib3gtPmJveERlY29yYXRpb25CcmVhaygpOyB9CisgICAgRUJveERlY29y
YXRpb25CcmVhayBib3hEZWNvcmF0aW9uQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEt
PmJveERlY29yYXRpb25CcmVhaygpOyB9CiAjZW5kaWYKLSAgICBTdHlsZVJlZmxlY3Rpb24qIGJv
eFJlZmxlY3QoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZs
ZWN0LmdldCgpOyB9Ci0gICAgRUJveFNpemluZyBib3hTaXppbmcoKSBjb25zdCB7IHJldHVybiBt
X2JveC0+Ym94U2l6aW5nKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcnF1ZWVJbmNyZW1lbnQo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5pbmNyZW1l
bnQ7IH0KLSAgICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFycXVlZS0+c3BlZWQ7IH0KLSAgICBpbnQgbWFycXVlZUxvb3BDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmxvb3BzOyB9
Ci0gICAgRU1hcnF1ZWVCZWhhdmlvciBtYXJxdWVlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFTWFycXVlZUJlaGF2aW9yPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJx
dWVlLT5iZWhhdmlvcik7IH0KLSAgICBFTWFycXVlZURpcmVjdGlvbiBtYXJxdWVlRGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVEaXJlY3Rpb24+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmRpcmVjdGlvbik7IH0KLSAgICBFVXNlck1vZGlmeSB1
c2VyTW9kaWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJNb2RpZnk+KHJhcmVJ
bmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5KTsgfQotICAgIEVVc2VyRHJhZyB1c2VyRHJhZygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyRHJhZz4ocmFyZU5vbkluaGVyaXRlZERhdGEt
PnVzZXJEcmFnKTsgfQotICAgIEVVc2VyU2VsZWN0IHVzZXJTZWxlY3QoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFVXNlclNlbGVjdD4ocmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3Qp
OyB9Ci0gICAgVGV4dE92ZXJmbG93IHRleHRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHRPdmVyZmxvdz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyk7
IH0KLSAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQmVmb3JlQ29sbGFwc2UoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXJnaW5CZWZvcmVDb2xsYXBzZSk7IH0KLSAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQWZ0ZXJD
b2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UpOyB9Ci0gICAgRVdvcmRCcmVh
ayB3b3JkQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV29yZEJyZWFrPihyYXJl
SW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrKTsgfQotICAgIEVPdmVyZmxvd1dyYXAgb3ZlcmZsb3dX
cmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93V3JhcD4ocmFyZUluaGVy
aXRlZERhdGEtPm92ZXJmbG93V3JhcCk7IH0KLSAgICBFTkJTUE1vZGUgbmJzcE1vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTkJTUE1vZGU+KHJhcmVJbmhlcml0ZWREYXRhLT5uYnNw
TW9kZSk7IH0KLSAgICBMaW5lQnJlYWsgbGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8TGluZUJyZWFrPihyYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrKTsgfQotICAgIEh5
cGhlbnMgaHlwaGVucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEh5cGhlbnM+KHJhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5zKTsgfQotICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRCZWZv
cmUoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJl
Zm9yZTsgfQotICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRBZnRlcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7IH0KLSAgICBzaG9ydCBo
eXBoZW5hdGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5h
dGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
blN0cmluZzsgfQorCisgICAgU3R5bGVSZWZsZWN0aW9uKiBib3hSZWZsZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdC5nZXQoKTsgfQorICAgIEVC
b3hTaXppbmcgYm94U2l6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT5ib3hTaXppbmco
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFycXVlZUluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmluY3JlbWVudDsgfQorICAgIGludCBt
YXJxdWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJx
dWVlLT5zcGVlZDsgfQorICAgIGludCBtYXJxdWVlTG9vcENvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+bG9vcHM7IH0KKyAgICBFTWFycXVlZUJl
aGF2aW9yIG1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJx
dWVlQmVoYXZpb3I+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmJlaGF2aW9yKTsg
fQorICAgIEVNYXJxdWVlRGlyZWN0aW9uIG1hcnF1ZWVEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTWFycXVlZURpcmVjdGlvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFycXVlZS0+ZGlyZWN0aW9uKTsgfQorICAgIEVVc2VyTW9kaWZ5IHVzZXJNb2RpZnkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlck1vZGlmeT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+
dXNlck1vZGlmeSk7IH0KKyAgICBFVXNlckRyYWcgdXNlckRyYWcoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFVXNlckRyYWc+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnKTsg
fQorICAgIEVVc2VyU2VsZWN0IHVzZXJTZWxlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFVXNlclNlbGVjdD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCk7IH0KKyAgICBU
ZXh0T3ZlcmZsb3cgdGV4dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dE92ZXJmbG93PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpOyB9CisgICAg
RU1hcmdpbkNvbGxhcHNlIG1hcmdpbkJlZm9yZUNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5C
ZWZvcmVDb2xsYXBzZSk7IH0KKyAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSk7IH0KKyAgICBFV29yZEJyZWFrIHdv
cmRCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXb3JkQnJlYWs+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPndvcmRCcmVhayk7IH0KKyAgICBFT3ZlcmZsb3dXcmFwIG92ZXJmbG93V3Jh
cCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvd1dyYXA+KG1fcmFyZUluaGVy
aXRlZERhdGEtPm92ZXJmbG93V3JhcCk7IH0KKyAgICBFTkJTUE1vZGUgbmJzcE1vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTkJTUE1vZGU+KG1fcmFyZUluaGVyaXRlZERhdGEtPm5i
c3BNb2RlKTsgfQorICAgIExpbmVCcmVhayBsaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxMaW5lQnJlYWs+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayk7IH0KKyAg
ICBIeXBoZW5zIGh5cGhlbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIeXBoZW5zPiht
X3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zKTsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9uTGlt
aXRCZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
bkxpbWl0QmVmb3JlOyB9CisgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyOyB9Cisg
ICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUo
KSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsgfQotICAgIEVCb3Jk
ZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0KTsgfQotICAgIEVSZXNpemUgcmVzaXpl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVJlc2l6ZT4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fcmVzaXplKTsgfQotICAgIENvbHVtbkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRp
Q29sLT5tX2F4aXMpOyB9Ci0gICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3Qgewot
ICAgICAgICBDb2x1bW5BeGlzIGF4aXMgPSBjb2x1bW5BeGlzKCk7Ci0gICAgICAgIHJldHVybiBh
eGlzID09IEF1dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4
aXMgPT0gSG9yaXpvbnRhbENvbHVtbkF4aXMpOwotICAgIH0KLSAgICBDb2x1bW5Qcm9ncmVzc2lv
biBjb2x1bW5Qcm9ncmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtblBy
b2dyZXNzaW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9wcm9ncmVzc2lv
bik7IH0KLSAgICBmbG9hdCBjb2x1bW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3dpZHRoOyB9Ci0gICAgYm9vbCBoYXNBdXRvQ29sdW1u
V2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+
bV9hdXRvV2lkdGg7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2NvdW50OyB9Ci0gICAg
Ym9vbCBoYXNBdXRvQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9tdWx0aUNvbC0+bV9hdXRvQ291bnQ7IH0KKyAgICBFQm9yZGVyRml0IGJvcmRlckZp
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJvcmRlckZpdCk7IH0KKyAgICBFUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVSZXNpemU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJlc2l6ZSk7
IH0KKyAgICBDb2x1bW5BeGlzIGNvbHVtbkF4aXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDb2x1bW5BeGlzPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+YXhpcyk7IH0K
KyAgICBib29sIGhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdDsKKyAgICBDb2x1bW5Qcm9ncmVz
c2lvbiBjb2x1bW5Qcm9ncmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVt
blByb2dyZXNzaW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cHJvZ3Jlc3Np
b24pOyB9CisgICAgZmxvYXQgY29sdW1uV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+d2lkdGg7IH0KKyAgICBib29sIGhhc0F1dG9Db2x1bW5X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5h
dXRvV2lkdGg7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5jb3VudDsgfQorICAgIGJvb2wg
aGFzQXV0b0NvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bXVsdGlDb2wtPmF1dG9Db3VudDsgfQogICAgIGJvb2wgc3BlY2lmaWVzQ29sdW1ucygpIGNv
bnN0IHsgcmV0dXJuICFoYXNBdXRvQ29sdW1uQ291bnQoKSB8fCAhaGFzQXV0b0NvbHVtbldpZHRo
KCkgfHwgIWhhc0lubGluZUNvbHVtbkF4aXMoKTsgfQotICAgIENvbHVtbkZpbGwgY29sdW1uRmls
bCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkZpbGw+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX211bHRpQ29sLT5tX2ZpbGwpOyB9Ci0gICAgZmxvYXQgY29sdW1uR2FwKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fZ2FwOyB9Ci0g
ICAgYm9vbCBoYXNOb3JtYWxDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9ub3JtYWxHYXA7IH0KLSAgICBFQm9yZGVyU3R5bGUgY29s
dW1uUnVsZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVs
dGlDb2wtPm1fcnVsZS5zdHlsZSgpOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgY29sdW1uUnVsZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPnJ1
bGVXaWR0aCgpOyB9Ci0gICAgYm9vbCBjb2x1bW5SdWxlSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuaXNUcmFuc3Bh
cmVudCgpOyB9Ci0gICAgQ29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29sdW1uU3Bhbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1f
Y29sdW1uU3Bhbik7IH0KLQotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9v
cGVyYXRpb25zOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3g7IH0KLSAgICBj
b25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feTsgfQotICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdp
blooKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1f
ejsgfQotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5
KCk7IH0KLQotICAgIFRleHRFbXBoYXNpc0ZpbGwgdGV4dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc0ZpbGw+KHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNGaWxsKTsgfQorICAgIENvbHVtbkZpbGwgY29sdW1uRmlsbCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkZpbGw+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11
bHRpQ29sLT5maWxsKTsgfQorICAgIGZsb2F0IGNvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5nYXA7IH0KKyAgICBib29sIGhhc05vcm1h
bENvbHVtbkdhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRp
Q29sLT5ub3JtYWxHYXA7IH0KKyAgICBFQm9yZGVyU3R5bGUgY29sdW1uUnVsZVN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuc3R5bGUo
KTsgfQorICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtblJ1bGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlV2lkdGgoKTsgfQorICAgIGJv
b2wgY29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5tdWx0aUNvbC0+cnVsZS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBDb2x1bW5T
cGFuIGNvbHVtblNwYW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5TcGFuPiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+Y29sdW1uU3Bhbik7IH0KKworICAgIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9uczsgfQorICAgIGNvbnN0IExl
bmd0aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRyYW5zZm9ybS0+eDsgfQorICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2lu
WSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+eTsg
fQorICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPno7IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorCisgICAgVGV4dEVtcGhhc2lzRmlsbCB0ZXh0
RW1waGFzaXNGaWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzRmls
bD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCk7IH0KICAgICBUZXh0RW1w
aGFzaXNNYXJrIHRleHRFbXBoYXNpc01hcmsoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyazsgfQotICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9u
IHRleHRFbXBoYXNpc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVt
cGhhc2lzUG9zaXRpb24+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlvbik7
IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrOyB9
CisgICAgVGV4dEVtcGhhc2lzUG9zaXRpb24gdGV4dEVtcGhhc2lzUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24pOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0
ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBSdWJ5UG9zaXRpb24gcnVieVBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UnVieVBvc2l0aW9uPihyYXJlSW5o
ZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24pOyB9CisgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uKTsgfQogCi0gICAgVGV4dE9yaWVudGF0aW9uIHRleHRP
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRPcmllbnRhdGlvbj4o
cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uKTsgfQorICAgIFRleHRPcmllbnRh
dGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3Jp
ZW50YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7IH0KIAotICAg
IE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmplY3RG
aXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdCk7IH0KLSAgICBMZW5ndGhQb2lu
dCBvYmplY3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X29iamVjdFBvc2l0aW9uOyB9CisgICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PE9iamVjdEZpdD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0
Rml0KTsgfQorICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0UG9zaXRpb247IH0KIAogICAgIC8vIFJldHVy
biB0cnVlIGlmIGFueSB0cmFuc2Zvcm0gcmVsYXRlZCBwcm9wZXJ0eSAoY3VycmVudGx5IHRyYW5z
Zm9ybSwgdHJhbnNmb3JtU3R5bGUzRCBvciBwZXJzcGVjdGl2ZSkKLSAgICAvLyBpbmRpY2F0ZXMg
dGhhdCB3ZSBhcmUgdHJhbnNmb3JtaW5nCisgICAgLy8gaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHRy
YW5zZm9ybWluZy4KICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0
IHsgcmV0dXJuIGhhc1RyYW5zZm9ybSgpIHx8IHByZXNlcnZlczNEKCkgfHwgaGFzUGVyc3BlY3Rp
dmUoKTsgfQogCiAgICAgZW51bSBBcHBseVRyYW5zZm9ybU9yaWdpbiB7IEluY2x1ZGVUcmFuc2Zv
cm1PcmlnaW4sIEV4Y2x1ZGVUcmFuc2Zvcm1PcmlnaW4gfTsKICAgICB2b2lkIGFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwg
QXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSBJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKSBjb25zdDsKICAg
ICB2b2lkIHNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCk7CiAKLSAgICBib29sIGhhc01hc2so
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmhhc0ltYWdlKCkg
fHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlLmhhc0ltYWdlKCk7IH0KKyAg
ICBib29sIGhhc01hc2soKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXNrLmhhc0ltYWdlKCkgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlLmhh
c0ltYWdlKCk7IH0KIAotICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRD
b21iaW5lKTsgfQorICAgIFRleHRDb21iaW5lIHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRDb21i
aW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0Q29t
YmluZSgpICE9IFRleHRDb21iaW5lTm9uZTsgfQogCi0gICAgdW5zaWduZWQgdGFiU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX3RhYlNpemU7IH0KKyAgICB1bnNpZ25l
ZCB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZTsg
fQogCiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCi0gICAgYm9vbCBoYXNGbG93SW50bygpIGNv
bnN0IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbG93VGhyZWFkLmlzTnVsbCgp
OyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZDsgfQotICAgIGJvb2wgaGFzRmxvd0Zy
b20oKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFk
LmlzTnVsbCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25UaHJlYWQ7IH0KLSAgICBS
ZWdpb25GcmFnbWVudCByZWdpb25GcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFJlZ2lvbkZyYWdtZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFnbWVudCk7
IH0KKyAgICBib29sIGhhc0Zsb3dJbnRvKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmZsb3dUaHJlYWQuaXNOdWxsKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbG93
VGhyZWFkOyB9CisgICAgYm9vbCBoYXNGbG93RnJvbSgpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5yZWdpb25UaHJlYWQuaXNOdWxsKCk7IH0KKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHJlZ2lvblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnJlZ2lvblRocmVhZDsgfQorICAgIFJlZ2lvbkZyYWdtZW50IHJlZ2lvbkZyYWdtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaW9uRnJhZ21lbnQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnJlZ2lvbkZyYWdtZW50KTsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsaW5lR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlk
OyB9Ci0gICAgTGluZVNuYXAgbGluZVNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxM
aW5lU25hcD4ocmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXApOyB9Ci0gICAgTGluZUFsaWdu
IGxpbmVBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVBbGlnbj4ocmFyZUlu
aGVyaXRlZERhdGEtPm1fbGluZUFsaWduKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGlu
ZUdyaWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lR3JpZDsgfQor
ICAgIExpbmVTbmFwIGxpbmVTbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNu
YXA+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwKTsgfQorICAgIExpbmVBbGlnbiBsaW5l
QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQWxpZ24+KG1fcmFyZUluaGVy
aXRlZERhdGEtPmxpbmVBbGlnbik7IH0KIAotICAgIC8vIEFwcGxlLXNwZWNpZmljIHByb3BlcnR5
IGdldHRlciBtZXRob2RzCi0gICAgRVBvaW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQb2ludGVyRXZlbnRzPihpbmhlcml0ZWRfZmxhZ3MuX3Bv
aW50ZXJFdmVudHMpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0KCk7IH0K
LSAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zaXRpb25zLmdldCgpOyB9CisgICAgRVBvaW50ZXJF
dmVudHMgcG9pbnRlckV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQb2ludGVy
RXZlbnRzPihtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMpOyB9CisgICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7IH0KKyAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFu
c2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRp
b25zLmdldCgpOyB9CiAKLSAgICBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsgfQotICAgIEFuaW1hdGlv
bkxpc3QqIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJh
bnNpdGlvbnMuZ2V0KCk7IH0KKyAgICBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9ucy5nZXQoKTsgfQorICAgIEFuaW1h
dGlvbkxpc3QqIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNpdGlvbnMuZ2V0KCk7IH0KICAgICAKLSAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5z
aXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0FuaW1hdGlv
bnNPclRyYW5zaXRpb25zKCk7IH0KKyAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzQW5pbWF0aW9uc09y
VHJhbnNpdGlvbnMoKTsgfQogCiAgICAgQW5pbWF0aW9uTGlzdCYgZW5zdXJlQW5pbWF0aW9ucygp
OwogICAgIEFuaW1hdGlvbkxpc3QmIGVuc3VyZVRyYW5zaXRpb25zKCk7CiAKLSAgICBib29sIGhh
c0FuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmlt
YXRpb25zICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMtPnNpemUoKSA+IDA7
IH0KLSAgICBib29sIGhhc1RyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fdHJhbnNpdGlvbnMgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNp
dGlvbnMtPnNpemUoKSA+IDA7IH0KKyAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zICYmIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmFuaW1hdGlvbnMtPnNpemUoKSA+IDA7IH0KKyAgICBib29sIGhhc1RyYW5zaXRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMg
JiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMtPnNpemUoKSA+IDA7IH0KIAot
ICAgIC8vIHJldHVybiB0aGUgZmlyc3QgZm91bmQgQW5pbWF0aW9uIChpbmNsdWRpbmcgJ2FsbCcg
dHJhbnNpdGlvbnMpCisgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCBmb3VuZCBBbmltYXRpb24gKGlu
Y2x1ZGluZyAnYWxsJyB0cmFuc2l0aW9ucykuCiAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2l0
aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKLSAgICBFVHJhbnNmb3JtU3R5
bGUzRCB0cmFuc2Zvcm1TdHlsZTNEKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRyYW5z
Zm9ybVN0eWxlM0Q+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QpOyB9
Ci0gICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Q7IH0K
KyAgICBFVHJhbnNmb3JtU3R5bGUzRCB0cmFuc2Zvcm1TdHlsZTNEKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVRyYW5zZm9ybVN0eWxlM0Q+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybVN0eWxlM0QpOyB9CisgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybVN0eWxlM0QgPT0gVHJhbnNmb3JtU3R5
bGUzRFByZXNlcnZlM0Q7IH0KIAotICAgIEVCYWNrZmFjZVZpc2liaWxpdHkgYmFja2ZhY2VWaXNp
YmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tmYWNlVmlzaWJpbGl0eT4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2ZhY2VWaXNpYmlsaXR5KTsgfQotICAgIGZsb2F0
IHBlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmU7IH0KLSAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUgPiAwOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBwZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblg7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZl
T3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0
aXZlT3JpZ2luWTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIHBhZ2VTaXplKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFnZVNpemU7IH0KLSAgICBQYWdlU2l6ZVR5
cGUgcGFnZVNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBl
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wYWdlU2l6ZVR5cGUpOyB9CisgICAgRUJhY2tmYWNl
VmlzaWJpbGl0eSBiYWNrZmFjZVZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQmFja2ZhY2VWaXNpYmlsaXR5PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZp
c2liaWxpdHkpOyB9CisgICAgZmxvYXQgcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZTsgfQorICAgIGJvb2wgaGFzUGVyc3BlY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZSA+
IDA7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWDsgfQorICAgIGNv
bnN0IExlbmd0aCYgcGVyc3BlY3RpdmVPcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6
ZSYgcGFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wYWdl
U2l6ZTsgfQorICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxQYWdlU2l6ZVR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBhZ2VTaXpl
VHlwZSk7IH0KICAgICAKLSAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluOyB9Ci0gICAgY29u
c3QgTGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KLSAgICBjb25zdCBJbnRTaXplJiBpbml0aWFsTGV0dGVy
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faW5pdGlhbExldHRlcjsg
fQorICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+bGluZUJveENvbnRhaW47IH0KKyAgICBjb25zdCBMaW5lQ2xhbXBW
YWx1ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bGluZUNsYW1wOyB9CisgICAgY29uc3QgSW50U2l6ZSYgaW5pdGlhbExldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRpYWxMZXR0ZXI7IH0KICAgICBpbnQg
aW5pdGlhbExldHRlckRyb3AoKSBjb25zdCB7IHJldHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgo
KTsgfQogICAgIGludCBpbml0aWFsTGV0dGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlh
bExldHRlcigpLmhlaWdodCgpOyB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIFRv
dWNoQWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hB
Y3Rpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RvdWNoQWN0aW9uKTsgfQorICAgIFRvdWNo
QWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hBY3Rp
b24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRvdWNoQWN0aW9uKTsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtMTE1MCw2OSArNzEyLDYyIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0YXBIaWdobGln
aHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRD
b2xvcjsgfQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxpZ2h0Q29sb3I7IH0KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIGJvb2wgdG91Y2hDYWxsb3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT50b3VjaENhbGxvdXRFbmFibGVkOyB9CisgICAgYm9vbCB0b3Vj
aENhbGxvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dG91
Y2hDYWxsb3V0RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZF
UkZMT1dfU0NST0xMSU5HKQotICAgIGJvb2wgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
OyB9CisgICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZzsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIFRleHRTaXplQWRqdXN0bWVudCB0
ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6
ZUFkanVzdDsgfQorICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAjZW5kaWYK
IAotICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0K
KyAgICBFVGV4dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVUZXh0U2VjdXJpdHk+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0K
IAotICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8V3JpdGluZ01vZGU+KGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKTsgfQorICAgIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V3JpdGlu
Z01vZGU+KG1faW5oZXJpdGVkRmxhZ3Mud3JpdGluZ01vZGUpOyB9CiAgICAgYm9vbCBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc1ZlcnRpY2FsV3JpdGluZ01vZGUod3JpdGlu
Z01vZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBjb25zdCB7
IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkp
OyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IFdlYkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAKLSAgICBJ
bWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKLSAgICB7Ci0jaWYg
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEltYWdlT3JpZW50YXRpb25FbnVtPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0
aW9uKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKLSNl
bmRpZgotICAgIH0KKyAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkg
Y29uc3Q7CiAKLSAgICBFSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFSW1hZ2VSZW5kZXJpbmc+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2lt
YWdlUmVuZGVyaW5nKTsgfQorICAgIEVJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbWFnZVJlbmRlcmluZz4obV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW1hZ2VSZW5kZXJpbmcpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCi0gICAgSW1hZ2VSZXNvbHV0aW9uU291cmNlIGltYWdlUmVzb2x1dGlvblNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzb2x1dGlvblNvdXJjZT4ocmFyZUluaGVy
aXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU291cmNlKTsgfQotICAgIEltYWdlUmVzb2x1dGlv
blNuYXAgaW1hZ2VSZXNvbHV0aW9uU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElt
YWdlUmVzb2x1dGlvblNuYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNu
YXApOyB9Ci0gICAgZmxvYXQgaW1hZ2VSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZUlu
aGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uOyB9CisgICAgSW1hZ2VSZXNvbHV0aW9uU291
cmNlIGltYWdlUmVzb2x1dGlvblNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElt
YWdlUmVzb2x1dGlvblNvdXJjZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0aW9u
U291cmNlKTsgfQorICAgIEltYWdlUmVzb2x1dGlvblNuYXAgaW1hZ2VSZXNvbHV0aW9uU25hcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzb2x1dGlvblNuYXA+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNuYXApOyB9CisgICAgZmxvYXQgaW1hZ2VSZXNv
bHV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZXNvbHV0
aW9uOyB9CiAjZW5kaWYKICAgICAKLSAgICBFU3BlYWsgc3BlYWsoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFU3BlYWs+KHJhcmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KKyAgICBFU3Bl
YWsgc3BlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFU3BlYWs+KG1fcmFyZUluaGVy
aXRlZERhdGEtPnNwZWFrKTsgfQogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUZpbHRl
cigpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZpbHRlci5hY2Nl
c3MoKS0+bV9vcGVyYXRpb25zOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJh
dGlvbnM7IH0KLSAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
OyB9CisgICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUZpbHRlcigpIHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuZmlsdGVyLmFjY2VzcygpLm9wZXJhdGlvbnM7IH0K
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXItPm9wZXJhdGlvbnM7IH0KKyAgICBib29sIGhhc0Zp
bHRlcigpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXItPm9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzUmVmZXJlbmNl
RmlsdGVyT25seSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICBG
aWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxlQmFja2Ryb3BGaWx0ZXIoKSB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9iYWNrZHJvcEZpbHRlci5hY2Nlc3MoKS0+bV9vcGVy
YXRpb25zOyB9Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2Ryb3BGaWx0ZXIoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlci0+bV9v
cGVyYXRpb25zOyB9Ci0gICAgYm9vbCBoYXNCYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJu
ICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZHJvcEZpbHRlci0+bV9vcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KKyAgICBGaWx0ZXJPcGVyYXRpb25zJiBtdXRhYmxlQmFj
a2Ryb3BGaWx0ZXIoKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmJh
Y2tkcm9wRmlsdGVyLmFjY2VzcygpLm9wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBiYWNrZHJvcEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmJhY2tkcm9wRmlsdGVyLT5vcGVyYXRpb25zOyB9CisgICAgYm9vbCBoYXNCYWNrZHJv
cEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJv
cEZpbHRlci0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CiAjZWxzZQogICAg
IGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSk7IH0KLSAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVu
ZE1vZGUgYmxlbmRNb2RlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZWZmZWN0
aXZlQmxlbmRNb2RlLCBibGVuZE1vZGUpOyB9Ci0gICAgYm9vbCBoYXNCbGVuZE1vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2VmZmVjdGl2ZUJsZW5kTW9kZSkgIT0gQmxlbmRNb2RlTm9ybWFsOyB9CisgICAgQmxlbmRNb2Rl
IGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKTsgfQorICAgIHZvaWQgc2V0Qmxl
bmRNb2RlKEJsZW5kTW9kZSBtb2RlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
ZWZmZWN0aXZlQmxlbmRNb2RlLCBtb2RlKTsgfQorICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5lZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5kTW9kZU5vcm1hbDsgfQogCi0gICAgSXNvbGF0
aW9uIGlzb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElzb2xhdGlvbj4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1faXNvbGF0aW9uKTsgfQotICAgIHZvaWQgc2V0SXNvbGF0aW9u
KElzb2xhdGlvbiBpc29sYXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9p
c29sYXRpb24sIGlzb2xhdGlvbik7IH0KLSAgICBib29sIGhhc0lzb2xhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzb2xhdGlvbiAhPSBJc29sYXRpb25BdXRv
OyB9CisgICAgSXNvbGF0aW9uIGlzb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PElzb2xhdGlvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aXNvbGF0aW9uKTsgfQorICAgIHZv
aWQgc2V0SXNvbGF0aW9uKElzb2xhdGlvbiBpc29sYXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBpc29sYXRpb24sIGlzb2xhdGlvbik7IH0KKyAgICBib29sIGhhc0lzb2xh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlzb2xhdGlvbiAh
PSBJc29sYXRpb25BdXRvOyB9CiAjZWxzZQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25z
dCB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjI0LDU3MyArNzc5LDUwNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3Q7
CiAKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCi0gICAgVHJhaWxpbmdXb3JkIHRyYWls
aW5nV29yZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYWlsaW5nV29yZD4ocmFyZUlu
aGVyaXRlZERhdGEtPnRyYWlsaW5nV29yZCk7IH0KKyAgICBUcmFpbGluZ1dvcmQgdHJhaWxpbmdX
b3JkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhaWxpbmdXb3JkPihtX3JhcmVJbmhl
cml0ZWREYXRhLT50cmFpbGluZ1dvcmQpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCi0gICAgQXBwbGVQYXlCdXR0b25TdHlsZSBhcHBsZVBheUJ1dHRvblN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25TdHlsZT4ocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYXBwbGVQYXlCdXR0b25TdHlsZSk7IH0KLSAgICBBcHBsZVBheUJ1dHRvblR5cGUg
YXBwbGVQYXlCdXR0b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlC
dXR0b25UeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBsZVBheUJ1dHRvblR5cGUpOyB9
CisgICAgQXBwbGVQYXlCdXR0b25TdHlsZSBhcHBsZVBheUJ1dHRvblN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25TdHlsZT4obV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+YXBwbGVQYXlCdXR0b25TdHlsZSk7IH0KKyAgICBBcHBsZVBheUJ1dHRvblR5cGUgYXBw
bGVQYXlCdXR0b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0
b25UeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBsZVBheUJ1dHRvblR5cGUpOyB9CiAj
ZW5kaWYKIAogICAgIHZvaWQgY2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoKTsKIAog
Ly8gYXR0cmlidXRlIHNldHRlciBtZXRob2RzCiAKLSAgICB2b2lkIHNldERpc3BsYXkoRURpc3Bs
YXkgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RWZmZWN0aXZlRGlzcGxheSh2KTsgfQotICAg
IHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldE9yaWdpbmFsRGlzcGxheSh2KTsgfQotICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9u
IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFBvc2l0aW9uKHYpOyB9Ci0gICAgdm9pZCBzZXRG
bG9hdGluZyhFRmxvYXQgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RmxvYXRpbmcodik7IH0K
LQotICAgIHZvaWQgc2V0TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQu
bGVmdCgpLCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnJpZ2h0KCksIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBz
ZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnRvcCgpLCBXVEZNb3Zl
KHYpKTsgfQotICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IG9mZnNldC5ib3R0b20oKSwgV1RGTW92ZSh2KSk7IH0KLQotICAgIHZvaWQgc2V0V2lkdGgoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lk
IHNldEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2
KSk7IH0KLQotICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKExlbmd0aCB2KQotICAgIHsKLSAgICAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIo
bV9ib3gsIG1fd2lkdGgsIFdURk1vdmUodikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikpOwotICAgICAgICB9Ci0gICAg
fQorICAgIHZvaWQgc2V0RGlzcGxheShFRGlzcGxheSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0RWZmZWN0aXZlRGlzcGxheSh2KTsgfQorICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVE
aXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRPcmlnaW5hbERpc3BsYXkodik7IH0K
KyAgICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0UG9zaXRpb24odik7IH0KKyAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG1fbm9u
SW5oZXJpdGVkRmxhZ3Muc2V0RmxvYXRpbmcodik7IH0KIAotICAgIHZvaWQgc2V0TG9naWNhbEhl
aWdodChMZW5ndGggdikKLSAgICB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBX
VEZNb3ZlKHYpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldExlZnQoTGVuZ3RoJiYg
bGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG9mZnNldC5sZWZ0KCksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFS
KG1fc3Vycm91bmREYXRhLCBvZmZzZXQucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAg
IHZvaWQgc2V0VG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBv
ZmZzZXQudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5n
dGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LmJvdHRvbSgpLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CiAKLSAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCB2KSB7IFNF
VF9WQVIobV9ib3gsIG1fbWluV2lkdGgsIFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXhX
aWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heFdpZHRoLCBXVEZNb3ZlKHYpKTsg
fQotICAgIHZvaWQgc2V0TWluSGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWlu
SGVpZ2h0LCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCB2KSB7
IFNFVF9WQVIobV9ib3gsIG1fbWF4SGVpZ2h0LCBXVEZNb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0
V2lkdGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3dpZHRoLCBXVEZN
b3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNF
VF9WQVIobV9ib3hEYXRhLCBtX2hlaWdodCwgV1RGTW92ZShsZW5ndGgpKTsgfQorCisgICAgdm9p
ZCBzZXRMb2dpY2FsV2lkdGgoTGVuZ3RoJiYpOworICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChM
ZW5ndGgmJik7CisKKyAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
VkFSKG1fYm94RGF0YSwgbV9taW5XaWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQg
c2V0TWF4V2lkdGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX21heFdp
ZHRoLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVuZ3RoJiYg
bGVuZ3RoKSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX21pbkhlaWdodCwgV1RGTW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1f
Ym94RGF0YSwgbV9tYXhIZWlnaHQsIFdURk1vdmUobGVuZ3RoKSk7IH0KIAogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKLSAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IGRhc2hi
b2FyZFJlZ2lvbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNo
Ym9hcmRSZWdpb25zOyB9Ci0gICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxTdHls
ZURhc2hib2FyZFJlZ2lvbj4gcmVnaW9ucykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2Rhc2hib2FyZFJlZ2lvbnMsIHJlZ2lvbnMpOyB9Ci0KLSAgICB2b2lkIHNldERhc2hib2Fy
ZFJlZ2lvbihpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoIHQsIExlbmd0aCBy
LCBMZW5ndGggYiwgTGVuZ3RoIGwsIGJvb2wgYXBwZW5kKQotICAgIHsKLSAgICAgICAgU3R5bGVE
YXNoYm9hcmRSZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24ubGFiZWwgPSBsYWJlbDsKLSAg
ICAgICAgcmVnaW9uLm9mZnNldC50b3AoKSA9IFdURk1vdmUodCk7Ci0gICAgICAgIHJlZ2lvbi5v
ZmZzZXQucmlnaHQoKSA9IFdURk1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9t
KCkgPSBXVEZNb3ZlKGIpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IFdURk1vdmUo
bCk7Ci0gICAgICAgIHJlZ2lvbi50eXBlID0gdHlwZTsKLSAgICAgICAgaWYgKCFhcHBlbmQpCi0g
ICAgICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kYXNoYm9hcmRSZWdp
b25zLmNsZWFyKCk7Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rh
c2hib2FyZFJlZ2lvbnMuYXBwZW5kKHJlZ2lvbik7Ci0gICAgfQorICAgIGNvbnN0IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj4mIGRhc2hib2FyZFJlZ2lvbnMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kYXNoYm9hcmRSZWdpb25zOyB9CisgICAgdm9pZCBzZXRE
YXNoYm9hcmRSZWdpb25zKGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIHJlZ2lv
bnMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkYXNoYm9hcmRSZWdpb25zLCBy
ZWdpb25zKTsgfQorICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0
b20sIExlbmd0aCYmIGxlZnQsIGJvb2wgYXBwZW5kKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXNl
dEJvcmRlcigpIHsgcmVzZXRCb3JkZXJJbWFnZSgpOyByZXNldEJvcmRlclRvcCgpOyByZXNldEJv
cmRlclJpZ2h0KCk7IHJlc2V0Qm9yZGVyQm90dG9tKCk7IHJlc2V0Qm9yZGVyTGVmdCgpOyByZXNl
dEJvcmRlclJhZGl1cygpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlclRvcCgpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgYm9yZGVyLm1fdG9wLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRC
b3JkZXJSaWdodCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQsIEJvcmRlclZh
bHVlKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckJvdHRvbSgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fYm90dG9tLCBCb3JkZXJWYWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3Jk
ZXJMZWZ0KCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0LCBCb3JkZXJWYWx1ZSgp
KTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJJbWFnZSgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9y
ZGVyLm1faW1hZ2UsIE5pbmVQaWVjZUltYWdlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRv
cCgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLCBCb3JkZXJWYWx1ZSgp
KTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJSaWdodCgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgYm9yZGVyLm1fcmlnaHQsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRl
ckJvdHRvbSgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLCBCb3Jk
ZXJWYWx1ZSgpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJMZWZ0KCkgeyBTRVRfVkFSKG1fc3Vy
cm91bmREYXRhLCBib3JkZXIubV9sZWZ0LCBCb3JkZXJWYWx1ZSgpKTsgfQorICAgIHZvaWQgcmVz
ZXRCb3JkZXJJbWFnZSgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1faW1hZ2Us
IE5pbmVQaWVjZUltYWdlKCkpOyB9CiAgICAgdm9pZCByZXNldEJvcmRlclJhZGl1cygpIHsgcmVz
ZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoKTsgcmVz
ZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7IHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJv
dW5kLCBib3JkZXIubV90b3BMZWZ0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9p
ZCByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV90b3BSaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZvaWQgcmVzZXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21M
ZWZ0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Ci0gICAgdm9pZCByZXNldEJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwg
aW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BMZWZ0UmFk
aXVzKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BMZWZ0LCBpbml0aWFs
Qm9yZGVyUmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkg
eyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3BSaWdodCwgaW5pdGlhbEJvcmRl
clJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b21MZWZ0LCBpbml0aWFsQm9yZGVy
UmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgeyBT
RVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b21SaWdodCwgaW5pdGlhbEJvcmRl
clJhZGl1cygpKTsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fY29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRh
LCBjb2xvciwgdik7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV94UG9zaXRpb24s
IFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRpb24oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feVBvc2l0
aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZShFRmls
bFNpemVUeXBlIGIpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3NpemVU
eXBlLCBiKTsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemVMZW5ndGgoTGVuZ3RoU2l6ZSBz
aXplKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV9zaXplTGVuZ3RoLCBX
VEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5kLm1feFBvc2l0
aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9u
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQu
bV95UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRT
aXplKEVGaWxsU2l6ZVR5cGUgYikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91
bmQubV9zaXplVHlwZSwgYik7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExl
bmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dyb3VuZC5t
X3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRCb3JkZXJJ
bWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9pbWFnZSwgYik7IH0KKyAgICB2b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUlt
YWdlJiBiKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2ltYWdlLCBiKTsgfQog
ICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VTb3VyY2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYpOwotICAg
IHZvaWQgc2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94KTsKLSAgICB2b2lkIHNldEJvcmRl
ckltYWdlV2lkdGgoTGVuZ3RoQm94KTsKLSAgICB2b2lkIHNldEJvcmRlckltYWdlT3V0c2V0KExl
bmd0aEJveCk7Ci0KLSAgICB2b2lkIHNldEJvcmRlclRvcExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBz
aXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcExlZnQsIFdURk1vdmUoc2l6ZSkp
OyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9Ci0g
ICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQotICAg
IHZvaWQgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQotCi0g
ICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSBzKQotICAgIHsKLSAgICAgICAgc2V0
Qm9yZGVyVG9wTGVmdFJhZGl1cyhzKTsKLSAgICAgICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
cyk7Ci0gICAgICAgIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMocyk7Ci0gICAgICAgIHNldEJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKHMpOwotICAgIH0KLSAgICB2b2lkIHNldEJvcmRlclJhZGl1
cyhjb25zdCBJbnRTaXplJiBzKQotICAgIHsKLSAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0
aFNpemUoTGVuZ3RoKHMud2lkdGgoKSwgRml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQp
KSk7Ci0gICAgfQotICAgIAorICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94
JiYpOworICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5ndGhCb3gmJik7CisgICAgdm9p
ZCBzZXRCb3JkZXJJbWFnZU91dHNldChMZW5ndGhCb3gmJik7CisKKyAgICB2b2lkIHNldEJvcmRl
clRvcExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgYm9yZGVyLm1fdG9wTGVmdCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRl
clRvcFJpZ2h0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIGJvcmRlci5tX3RvcFJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0Qm9y
ZGVyQm90dG9tTGVmdFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV9ib3R0b21MZWZ0LCBXVEZNb3ZlKHNpemUpKTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUiht
X3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIFdURk1vdmUoc2l6ZSkpOyB9CisK
KyAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplJiYpOworICAgIHZvaWQgc2V0Qm9y
ZGVyUmFkaXVzKGNvbnN0IEludFNpemUmKTsKKwogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRC
b3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNv
bnN0OwogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlv
dXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBSb3VuZGVk
UmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVj
dCwgTGF5b3V0VW5pdCB0b3BXaWR0aCwgTGF5b3V0VW5pdCBib3R0b21XaWR0aCwKICAgICAgICAg
TGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQgcmlnaHRXaWR0aCwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRy
dWUpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgoZmxvYXQgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRC
b3JkZXJMZWZ0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fbGVmdC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0
IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVm
dCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9y
ZGVyUmlnaHRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9yaWdodC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX3Jp
Z2h0LCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRl
clRvcFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3Rv
cC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV90b3AsIHYpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90
dG9tU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90
dG9tLm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2JvdHRv
bSwgdik7IH0KLQotICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUiht
X2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGlu
ZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5k
LCBtX291dGxpbmUubV9pc0F1dG8sIGlzQXV0byk7IH0KLSAgICB2b2lkIHNldE91dGxpbmVTdHls
ZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fc3R5
bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2KTsgfQotCi0gICAg
dm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldE92
ZXJmbG93WCh2KTsgfQotICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRPdmVyZmxvd1kodik7IH0KLSAgICB2b2lkIHNldFZpc2liaWxpdHko
RVZpc2liaWxpdHkgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgPSB2OyB9Ci0gICAg
dm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHYpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLnNldFZlcnRpY2FsQWxpZ24odik7IH0KLSAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ25MZW5n
dGgoTGVuZ3RoIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7IFNFVF9WQVIobV9i
b3gsIG1fdmVydGljYWxBbGlnbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotCi0gICAgdm9pZCBzZXRI
YXNDbGlwKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0g
ICAgdm9pZCBzZXRDbGlwTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlw
LmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9t
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAuYm90dG9tKCksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBM
ZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCk7Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBi
b3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURk1vdmUoYm94KSk7IH0KLQotICAgIHZvaWQg
c2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFVu
aWNvZGVCaWRpKGIpOyB9Ci0KLSAgICB2b2lkIHNldENsZWFyKEVDbGVhciB2KSB7IG5vbmluaGVy
aXRlZF9mbGFncy5zZXRDbGVhcih2KTsgfQotICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxl
TGF5b3V0IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFRhYmxlTGF5b3V0KHYpOyB9CisgICAg
dm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRh
LCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5
bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVm
dC5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVm
dCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFS
KG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyUmlnaHRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBib3JkZXIubV9yaWdodC5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmln
aHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3Vu
ZERhdGEsIGJvcmRlci5tX3JpZ2h0LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgo
ZmxvYXQgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AubV93aWR0aCwg
dik7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9W
QVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcC5tX3N0eWxlLCB2KTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9S
KG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJC
b3R0b21XaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2Jv
dHRvbS5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tU3R5bGUoRUJvcmRl
clN0eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tLm1fc3R5
bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYgdikg
eyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbSwg
dik7IH0KKworICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX2Jh
Y2tncm91bmREYXRhLCBvdXRsaW5lLm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5l
U3R5bGVJc0F1dG8oT3V0bGluZUlzQXV0byBpc0F1dG8pIHsgU0VUX1ZBUihtX2JhY2tncm91bmRE
YXRhLCBvdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8pOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lU3R5
bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBvdXRsaW5lLm1f
c3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZERhdGEsIG91dGxpbmUsIHYpOyB9CisK
KyAgICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldE92ZXJmbG93WCh2KTsgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0T3ZlcmZsb3dZKHYpOyB9CisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5KEVWaXNpYmlsaXR5IHYpIHsgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0gdjsg
fQorICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2KSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3Muc2V0VmVydGljYWxBbGlnbih2KTsgfQorICAgIHZvaWQgc2V0VmVydGljYWxB
bGlnbkxlbmd0aChMZW5ndGgmJiBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBT
RVRfVkFSKG1fYm94RGF0YSwgbV92ZXJ0aWNhbEFsaWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisK
KyAgICB2b2lkIHNldEhhc0NsaXAoYm9vbCBiID0gdHJ1ZSkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0
YSwgaGFzQ2xpcCwgYik7IH0KKyAgICB2b2lkIHNldENsaXBMZWZ0KExlbmd0aCYmIGxlbmd0aCkg
eyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldENsaXBSaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3Vh
bERhdGEsIGNsaXAucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xp
cFRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAudG9wKCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0b20oTGVuZ3RoJiYgbGVu
Z3RoKSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwKExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExl
bmd0aCYmIGJvdHRvbSwgTGVuZ3RoJiYgbGVmdCk7CisgICAgdm9pZCBzZXRDbGlwKExlbmd0aEJv
eCYmIGJveCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcCwgV1RGTW92ZShib3gpKTsgfQor
CisgICAgdm9pZCBzZXRVbmljb2RlQmlkaShFVW5pY29kZUJpZGkgYikgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLnNldFVuaWNvZGVCaWRpKGIpOyB9CisKKyAgICB2b2lkIHNldENsZWFyKEVDbGVhciB2
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0Q2xlYXIodik7IH0KKyAgICB2b2lkIHNldFRhYmxl
TGF5b3V0KEVUYWJsZUxheW91dCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0VGFibGVMYXlv
dXQodik7IH0KIAogICAgIGJvb2wgc2V0Rm9udERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24mKTsKKwogICAgIC8vIE9ubHkgdXNlZCBmb3IgYmxlbmRpbmcgZm9udCBzaXpl
cyB3aGVuIGFuaW1hdGluZywgZm9yIE1hdGhNTCBhbm9ueW1vdXMgYmxvY2tzLCBhbmQgZm9yIHRl
eHQgYXV0b3NpemluZy4KICAgICB2b2lkIHNldEZvbnRTaXplKGZsb2F0KTsKKwogI2lmIEVOQUJM
RShWQVJJQVRJT05fRk9OVFMpCiAgICAgdm9pZCBzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9u
dFZhcmlhdGlvblNldHRpbmdzKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvciYpOwotICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIGluZGVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQotI2lmIEVOQUJM
RShDU1MzX1RFWFQpCi0gICAgdm9pZCBzZXRUZXh0SW5kZW50TGluZShUZXh0SW5kZW50TGluZSB2
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGV4dEluZGVudExpbmUsIHYpOyB9Ci0g
ICAgdm9pZCBzZXRUZXh0SW5kZW50VHlwZShUZXh0SW5kZW50VHlwZSB2KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIG1fdGV4dEluZGVudFR5cGUsIHYpOyB9Ci0jZW5kaWYKLSAgICB2b2lk
IHNldFRleHRBbGlnbihFVGV4dEFsaWduIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWdu
ID0gdjsgfQotICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IGlu
aGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSB2OyB9Ci0gICAgdm9pZCBhZGRUb1RleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90
ZXh0X2RlY29yYXRpb25zIHw9IHY7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25z
ID0gdjsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oVGV4dERlY29yYXRpb24gdikgeyBT
RVRfVkFSKHZpc3VhbCwgdGV4dERlY29yYXRpb24sIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5k
ZW50KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGluZGVu
dCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VGV4dEFsaWduKEVUZXh0QWxpZ24g
dikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHY7IH0KKyAgICB2b2lkIHNldFRleHRU
cmFuc2Zvcm0oRVRleHRUcmFuc2Zvcm0gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zv
cm0gPSB2OyB9CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNv
cmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gdjsgfQorICAg
IHZvaWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBtX2lu
aGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNv
cmF0aW9uKFRleHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNv
cmF0aW9uLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3Jh
dGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3Jh
dGlvblN0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKFRleHREZWNv
cmF0aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dERlY29y
YXRpb25Ta2lwLCBza2lwKTsgfQorICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRl
eHRVbmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dFVuZGVybGluZVBvc2l0aW9uLCB2KTsgfQorICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJl
Y3Rpb24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IHY7IH0KKyAgICB2b2lkIHNl
dEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbih2KTsgfQorICAgIHZvaWQgc2V0TGluZUhlaWdo
dChMZW5ndGgmJik7CisgICAgYm9vbCBzZXRab29tKGZsb2F0KTsKKyAgICB2b2lkIHNldFpvb21X
aXRob3V0UmV0dXJuVmFsdWUoZmxvYXQgZikgeyBzZXRab29tKGYpOyB9CisgICAgYm9vbCBzZXRF
ZmZlY3RpdmVab29tKGZsb2F0KTsKKyAgICB2b2lkIHNldFRleHRab29tKFRleHRab29tIHYpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0Wm9vbSwgdik7IH0KKwogI2lmIEVOQUJM
RShDU1MzX1RFWFQpCi0gICAgdm9pZCBzZXRUZXh0QWxpZ25MYXN0KFRleHRBbGlnbkxhc3Qgdikg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRBbGlnbkxhc3QsIHYpOyB9Ci0gICAg
dm9pZCBzZXRUZXh0SnVzdGlmeShUZXh0SnVzdGlmeSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fdGV4dEp1c3RpZnksIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50TGluZShU
ZXh0SW5kZW50TGluZSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEluZGVu
dExpbmUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50VHlwZShUZXh0SW5kZW50VHlwZSB2
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEluZGVudFR5cGUsIHYpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0QWxpZ25MYXN0KFRleHRBbGlnbkxhc3QgdikgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRleHRBbGlnbkxhc3QsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0SnVz
dGlmeShUZXh0SnVzdGlmeSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEp1
c3RpZnksIHYpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4
dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4
dERlY29yYXRpb25TdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChU
ZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3Rl
eHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3Np
dGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KLSAgICB2b2lkIHNldERpcmVjdGlvbihU
ZXh0RGlyZWN0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSB2OyB9Ci0gICAg
dm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbih2KTsgfQorCiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKLSAgICB2b2lkIHNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHYp
OworICAgIHZvaWQgc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGgmJik7CiAjZW5kaWYKLSAg
ICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQpOwotICAgIGJv
b2wgc2V0Wm9vbShmbG9hdCk7Ci0gICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZs
b2F0IGYpIHsgc2V0Wm9vbShmKTsgfQotICAgIGJvb2wgc2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7
Ci0gICAgdm9pZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fdGV4dFpvb20sIHYpOyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09S
SUVOVEFUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9u
RW51bSB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VPcmllbnRhdGlvbiwg
c3RhdGljX2Nhc3Q8aW50Pih2KSk7IH0KKyAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1h
Z2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdl
T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQg
c2V0SW1hZ2VSZW5kZXJpbmcoRUltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbV9pbWFnZVJlbmRlcmluZywgdik7IH0KKyAgICB2b2lkIHNldEltYWdlUmVuZGVy
aW5nKEVJbWFnZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1h
Z2VSZW5kZXJpbmcsIHYpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0g
ICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25Tb3VyY2UoSW1hZ2VSZXNvbHV0aW9uU291cmNlIHYp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb25Tb3VyY2UsIHYp
OyB9Ci0gICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb25TbmFwKEltYWdlUmVzb2x1dGlvblNuYXAg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAsIHYp
OyB9Ci0gICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvbiwgZik7IH0KKyAgICB2b2lkIHNldEltYWdl
UmVzb2x1dGlvblNvdXJjZShJbWFnZVJlc29sdXRpb25Tb3VyY2UgdikgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvblNvdXJjZSwgdik7IH0KKyAgICB2b2lkIHNl
dEltYWdlUmVzb2x1dGlvblNuYXAoSW1hZ2VSZXNvbHV0aW9uU25hcCB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZXNvbHV0aW9uU25hcCwgdik7IH0KKyAgICB2b2lkIHNl
dEltYWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aW1hZ2VSZXNvbHV0aW9uLCBmKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFdoaXRlU3BhY2Uo
RVdoaXRlU3BhY2UgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gdjsgfQorICAg
IHZvaWQgc2V0V2hpdGVTcGFjZShFV2hpdGVTcGFjZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mud2hp
dGVTcGFjZSA9IHY7IH0KIAotICAgIHZvaWQgc2V0V29yZFNwYWNpbmcoTGVuZ3RoKTsKKyAgICB2
b2lkIHNldFdvcmRTcGFjaW5nKExlbmd0aCYmKTsKICAgICB2b2lkIHNldExldHRlclNwYWNpbmco
ZmxvYXQpOwogCi0gICAgdm9pZCBjbGVhckJhY2tncm91bmRMYXllcnMoKSB7IG1fYmFja2dyb3Vu
ZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kID0gRmlsbExheWVyKEJhY2tncm91bmRGaWxsTGF5ZXIp
OyB9Ci0gICAgdm9pZCBpbmhlcml0QmFja2dyb3VuZExheWVycyhjb25zdCBGaWxsTGF5ZXImIHBh
cmVudCkgeyBtX2JhY2tncm91bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZCA9IHBhcmVudDsgfQor
ICAgIHZvaWQgY2xlYXJCYWNrZ3JvdW5kTGF5ZXJzKCkgeyBtX2JhY2tncm91bmREYXRhLmFjY2Vz
cygpLmJhY2tncm91bmQgPSBGaWxsTGF5ZXIoQmFja2dyb3VuZEZpbGxMYXllcik7IH0KKyAgICB2
b2lkIGluaGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IG1f
YmFja2dyb3VuZERhdGEuYWNjZXNzKCkuYmFja2dyb3VuZCA9IHBhcmVudDsgfQogCi0gICAgdm9p
ZCBhZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmIChiYWNrZ3JvdW5k
TGF5ZXJzKCktPm5leHQoKSkgewotICAgICAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygp
LmN1bGxFbXB0eUxheWVycygpOwotICAgICAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygp
LmZpbGxVbnNldFByb3BlcnRpZXMoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIGFkanVz
dEJhY2tncm91bmRMYXllcnMoKTsKIAotICAgIHZvaWQgY2xlYXJNYXNrTGF5ZXJzKCkgeyByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrID0gRmlsbExheWVyKE1hc2tGaWxsTGF5
ZXIpOyB9Ci0gICAgdm9pZCBpbmhlcml0TWFza0xheWVycyhjb25zdCBGaWxsTGF5ZXImIHBhcmVu
dCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrID0gcGFyZW50OyB9Cisg
ICAgdm9pZCBjbGVhck1hc2tMYXllcnMoKSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkubWFzayA9IEZpbGxMYXllcihNYXNrRmlsbExheWVyKTsgfQorICAgIHZvaWQgaW5oZXJpdE1h
c2tMYXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJlbnQpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS5tYXNrID0gcGFyZW50OyB9CiAKLSAgICB2b2lkIGFkanVzdE1hc2tMYXllcnMo
KQotICAgIHsKLSAgICAgICAgaWYgKG1hc2tMYXllcnMoKS0+bmV4dCgpKSB7Ci0gICAgICAgICAg
ICBlbnN1cmVNYXNrTGF5ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7Ci0gICAgICAgICAgICBlbnN1
cmVNYXNrTGF5ZXJzKCkuZmlsbFVuc2V0UHJvcGVydGllcygpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIHZvaWQgYWRqdXN0TWFza0xheWVycygpOwogCi0gICAgdm9pZCBzZXRNYXNrSW1hZ2UoUmVm
UHRyPFN0eWxlSW1hZ2U+JiYgdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9t
YXNrLnNldEltYWdlKFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRNYXNrSW1hZ2UoUmVmUHRy
PFN0eWxlSW1hZ2U+JiYgdikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2su
c2V0SW1hZ2UoV1RGTW92ZSh2KSk7IH0KIAotICAgIHZvaWQgc2V0TWFza0JveEltYWdlKGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFz
a0JveEltYWdlLCBiKTsgfQotICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFJlZlB0cjxT
dHlsZUltYWdlPiYmIHYpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFza0Jv
eEltYWdlLnNldEltYWdlKFdURk1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXNrWFBvc2l0aW9u
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1f
eFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXNrWVBvc2l0aW9u
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1f
eVBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXNrU2l6ZShMZW5n
dGhTaXplIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1fc2l6
ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldE1hc2tCb3hJbWFnZShjb25z
dCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1h
c2tCb3hJbWFnZSwgYik7IH0KKyAgICB2b2lkIHNldE1hc2tCb3hJbWFnZVNvdXJjZShSZWZQdHI8
U3R5bGVJbWFnZT4mJiB2KSB7IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkubWFza0Jv
eEltYWdlLnNldEltYWdlKFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRNYXNrWFBvc2l0aW9u
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2su
bV94UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hc2tZUG9zaXRp
b24oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFz
ay5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFza1NpemUo
TGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFzay5t
X3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CiAKLSAgICB2b2lkIHNldEJvcmRlckNvbGxh
cHNlKEVCb3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9j
b2xsYXBzZSA9IGNvbGxhcHNlOyB9CisgICAgdm9pZCBzZXRCb3JkZXJDb2xsYXBzZShFQm9yZGVy
Q29sbGFwc2UgY29sbGFwc2UpIHsgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSA9IGNv
bGxhcHNlOyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCk7CiAg
ICAgdm9pZCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwotICAgIHZvaWQgc2V0RW1w
dHlDZWxscyhFRW1wdHlDZWxsIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IHY7
IH0KLSAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IGluaGVyaXRlZF9m
bGFncy5fY2FwdGlvbl9zaWRlID0gdjsgfQorICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlD
ZWxsIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gdjsgfQorICAgIHZvaWQgc2V0
Q2FwdGlvblNpZGUoRUNhcHRpb25TaWRlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lk
ZSA9IHY7IH0KIAotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvVHlwZSBh
c3BlY3RSYXRpb1R5cGUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RS
YXRpb1R5cGUsIGFzcGVjdFJhdGlvVHlwZSk7IH0KLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVj
dFJhdGlvRGVub21pbmF0b3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRv
cihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9O
dW1lcmF0b3IsIHYpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9U
eXBlIGFzcGVjdFJhdGlvVHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFz
cGVjdFJhdGlvVHlwZSwgYXNwZWN0UmF0aW9UeXBlKTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0
aW9EZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
YXNwZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVt
ZXJhdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RS
YXRpb051bWVyYXRvciwgdik7IH0KIAotICAgIHZvaWQgc2V0TGlzdFN0eWxlVHlwZShFTGlzdFN0
eWxlVHlwZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlID0gdjsgfQorICAg
IHZvaWQgc2V0TGlzdFN0eWxlVHlwZShFTGlzdFN0eWxlVHlwZSB2KSB7IG1faW5oZXJpdGVkRmxh
Z3MubGlzdFN0eWxlVHlwZSA9IHY7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFJlZlB0
cjxTdHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5
bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IHY7
IH0KLQotICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbiwg
TGVuZ3RoQm94KEZpeGVkKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQot
ICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgbWFyZ2luLmJvdHRvbSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJn
aW5MZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLmxlZnQoKSwg
V1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsg
fQotICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKTsKLSAgICB2b2lkIHNldE1hcmdpbkVu
ZChMZW5ndGgpOwotCi0gICAgdm9pZCByZXNldFBhZGRpbmcoKSB7IFNFVF9WQVIoc3Vycm91bmQs
IHBhZGRpbmcsIExlbmd0aEJveChBdXRvKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVu
Z3RoQm94IGJveCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBXVEZNb3ZlKGJveCkpOyB9
Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgcGFkZGluZy50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFkZGlu
Z0JvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcuYm90dG9t
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5sZWZ0KCksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIo
c3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotCi0gICAgdm9p
ZCBzZXRDdXJzb3IoRUN1cnNvciBjKSB7IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0g
YzsgfQorICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYp
IHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHY7IH0KKworICAgIHZvaWQg
cmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbiwgTGVuZ3RoQm94
KEZpeGVkKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VU
X1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Cisg
ICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQg
c2V0TWFyZ2luTGVmdChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
bWFyZ2luLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luUmln
aHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi5yaWdo
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5TdGFydChMZW5ndGgm
Jik7CisgICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoJiYpOworCisgICAgdm9pZCByZXNldFBh
ZGRpbmcoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcsIExlbmd0aEJveChBdXRv
KSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVuZ3RoQm94JiYgYm94KSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIHBhZGRpbmcsIFdURk1vdmUoYm94KSk7IH0KKyAgICB2b2lkIHNldFBh
ZGRpbmdUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRp
bmcudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20o
TGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcuYm90dG9t
KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCYm
IGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92
ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkg
eyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KKworICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBtX2luaGVyaXRlZEZsYWdz
LmN1cnNvciA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4mJiwg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsKICAgICB2b2lkIHNldEN1cnNv
ckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYpOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7
CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgdm9pZCBzZXRDdXJzb3JWaXNp
YmlsaXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBpbmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JWaXNp
YmlsaXR5ID0gYzsgfQorICAgIHZvaWQgc2V0Q3Vyc29yVmlzaWJpbGl0eShDdXJzb3JWaXNpYmls
aXR5IGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0gYzsgfQogI2VuZGlm
CiAKLSAgICB2b2lkIHNldEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBpbmhl
cml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9Ci0gICAgdm9pZCBzZXRJc0xp
bmsoYm9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRJc0xpbmsoYik7IH0KKyAgICB2b2lk
IHNldEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9CisgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCBiKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SXNMaW5rKGIpOyB9CiAKLSAgICB2b2lkIHNldEluc2lk
ZURlZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKSB7IGluaGVyaXRlZF9mbGFn
cy5faW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURlZmF1bHRCdXR0b247IH0KKyAgICB2b2lk
IHNldEluc2lkZURlZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKSB7IG1faW5o
ZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURlZmF1bHRCdXR0b247IH0K
IAotICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xvckFkanVzdCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29s
b3JBZGp1c3QpOyB9Ci0gICAgdm9pZCBzZXRQcmludENvbG9yQWRqdXN0KFByaW50Q29sb3JBZGp1
c3QgdmFsdWUpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IHZhbHVlOyB9
CisgICAgUHJpbnRDb2xvckFkanVzdCBwcmludENvbG9yQWRqdXN0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJpbnRDb2xvckFkanVzdD4obV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9y
QWRqdXN0KTsgfQorICAgIHZvaWQgc2V0UHJpbnRDb2xvckFkanVzdChQcmludENvbG9yQWRqdXN0
IHZhbHVlKSB7IG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xvckFkanVzdCA9IHZhbHVlOyB9CiAK
LSAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+aGFzQXV0b1pJ
bmRleCgpOyB9Ci0gICAgdm9pZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBTRVRfVkFSKG1fYm94LCBt
X2hhc0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwgMCk7IH0KLSAg
ICBpbnQgekluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPnpJbmRleCgpOyB9Ci0gICAgdm9p
ZCBzZXRaSW5kZXgoaW50IHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oYXNBdXRvWkluZGV4LCBmYWxz
ZSk7IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCB2KTsgfQorICAgIGJvb2wgaGFzQXV0b1pJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+aGFzQXV0b1pJbmRleCgpOyB9CisgICAgdm9p
ZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9oYXNBdXRvWkluZGV4
LCB0cnVlKTsgU0VUX1ZBUihtX2JveERhdGEsIG1fekluZGV4LCAwKTsgfQorICAgIGludCB6SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPnpJbmRleCgpOyB9CisgICAgdm9pZCBzZXRa
SW5kZXgoaW50IHYpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1faGFzQXV0b1pJbmRleCwgZmFsc2Up
OyBTRVRfVkFSKG1fYm94RGF0YSwgbV96SW5kZXgsIHYpOyB9CiAKLSAgICB2b2lkIHNldEhhc0F1
dG9XaWRvd3MoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywg
dHJ1ZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygp
KTsgfQotICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9oYXNBdXRvV2lkb3dzLCBmYWxzZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHdpZG93cywgdyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9XaWRvd3MoKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaGFzQXV0b1dpZG93cywgdHJ1ZSk7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgd2lkb3dzLCBpbml0aWFsV2lkb3dzKCkpOyB9CisgICAgdm9pZCBzZXRXaWRv
d3Moc2hvcnQgdykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9XaWRvd3Ms
IGZhbHNlKTsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIHcpOyB9CiAKLSAg
ICB2b2lkIHNldEhhc0F1dG9PcnBoYW5zKCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBt
X2hhc0F1dG9PcnBoYW5zLCB0cnVlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFu
cywgaW5pdGlhbE9ycGhhbnMoKSk7IH0KLSAgICB2b2lkIHNldE9ycGhhbnMoc2hvcnQgbykgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9PcnBoYW5zLCBmYWxzZSk7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIG8pOyB9CisgICAgdm9pZCBzZXRIYXNBdXRv
T3JwaGFucygpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvT3JwaGFucywg
dHJ1ZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFucywgaW5pdGlhbE9ycGhh
bnMoKSk7IH0KKyAgICB2b2lkIHNldE9ycGhhbnMoc2hvcnQgbykgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIGhhc0F1dG9PcnBoYW5zLCBmYWxzZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgb3JwaGFucywgbyk7IH0KIAogICAgIC8vIENTUzMgU2V0dGVycwotICAgIHZvaWQg
c2V0T3V0bGluZU9mZnNldChmbG9hdCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxp
bmUubV9vZmZzZXQsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lT2Zmc2V0KGZsb2F0IHYpIHsg
U0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBvdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQogICAgIHZv
aWQgc2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4sIGJvb2wgYWRkID0g
ZmFsc2UpOwotICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYyk7IH0KLSAgICB2b2lk
IHNldFRleHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRleHRTdHJva2VXaWR0aCwgdyk7IH0KLSAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7
IH0KLSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9h
dD4oZiwgMCwgMSk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb3BhY2l0eSwgdik7
IH0KLSAgICB2b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2FwcGVhcmFuY2UsIGEpOyB9CisgICAgdm9pZCBzZXRUZXh0U3Ry
b2tlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0
ZXh0U3Ryb2tlQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQg
dykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VXaWR0aCwgdyk7IH0K
KyAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0T3BhY2l0
eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAwLCAxKTsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQorICAgIHZvaWQgc2V0QXBwZWFy
YW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBw
ZWFyYW5jZSwgYSk7IH0KICAgICAvLyBGb3IgdmFsaWQgdmFsdWVzIG9mIGJveC1hbGlnbiBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLWZsZXhib3gtMjAwOTA3MjMvI2FsaWdu
bWVudAotICAgIHZvaWQgc2V0Qm94QWxpZ24oRUJveEFsaWdubWVudCBhKSB7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgYWxpZ24s
IGEpOyB9CisgICAgdm9pZCBzZXRCb3hBbGlnbihFQm94QWxpZ25tZW50IGEpIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBhbGln
biwgYSk7IH0KKyAgICB2b2lkIHNldEJveERpcmVjdGlvbihFQm94RGlyZWN0aW9uIGQpIHsgbV9p
bmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPSBkOyB9CisgICAgdm9pZCBzZXRCb3hGbGV4KGZs
b2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRl
ZEZsZXhpYmxlQm94LCBmbGV4LCBmKTsgfQorICAgIHZvaWQgc2V0Qm94RmxleEdyb3VwKHVuc2ln
bmVkIGdyb3VwKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCwgZmxleEdyb3VwLCBncm91cCk7IH0KKyAgICB2b2lkIHNldEJveExp
bmVzKEVCb3hMaW5lcyBsaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIGxpbmVzLCBsaW5lcyk7IH0KKyAgICB2b2lkIHNl
dEJveE9yZGluYWxHcm91cCh1bnNpZ25lZCBncm91cCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIG9yZGluYWxHcm91cCwgZ3Jv
dXApOyB9CisgICAgdm9pZCBzZXRCb3hPcmllbnQoRUJveE9yaWVudCBvKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JpZW50
LCBvKTsgfQorICAgIHZvaWQgc2V0Qm94UGFjayhFQm94UGFjayBwKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgcGFjaywgcCk7
IH0KKyAgICB2b2lkIHNldEJveFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4sIGJv
b2wgYWRkID0gZmFsc2UpOworICAgIHZvaWQgc2V0Qm94UmVmbGVjdChSZWZQdHI8U3R5bGVSZWZs
ZWN0aW9uPiYmKTsKKyAgICB2b2lkIHNldEJveFNpemluZyhFQm94U2l6aW5nIHMpIHsgU0VUX1ZB
UihtX2JveERhdGEsIG1fYm94U2l6aW5nLCBzKTsgfQorICAgIHZvaWQgc2V0RmxleEdyb3coZmxv
YXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJsZUJv
eCwgZmxleEdyb3csIGYpOyB9CisgICAgdm9pZCBzZXRGbGV4U2hyaW5rKGZsb2F0IGYpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gsIGZsZXhTaHJp
bmssIGYpOyB9CisgICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4QmFzaXMs
IFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE9yZGVyKGludCBvKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3JkZXIsIG8pOyB9CisgICAgdm9pZCBzZXRBbGlnbkNv
bnRlbnQoY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGFsaWduQ29udGVudCwgZGF0YSk7IH0KKyAgICB2b2lkIHNl
dEFsaWduSXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFsaWduSXRlbXMsIGRhdGEpOyB9CisgICAgdm9pZCBz
ZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCkuYWxpZ25JdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0K
KyAgICB2b2lkIHNldEFsaWduU2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRh
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYWxpZ25TZWxmLCBkYXRhKTsgfQor
ICAgIHZvaWQgc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYWxpZ25TZWxmLnNldFBvc2l0aW9uKHBvc2l0
aW9uKTsgfQorICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rp
b24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVCb3gs
IGZsZXhEaXJlY3Rpb24sIGRpcmVjdGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4
V3JhcCB3KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxl
Qm94LCBmbGV4V3JhcCwgdyk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50KGNvbnN0IFN0
eWxlQ29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBqdXN0aWZ5Q29udGVudCwgZGF0YSk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250
ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuanVzdGlmeUNvbnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Cisg
ICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0
YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGp1c3RpZnlJdGVtcywgZGF0YSk7
IH0KKyAgICB2b2lkIHNldEp1c3RpZnlTZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEm
IGRhdGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBqdXN0aWZ5U2VsZiwgZGF0
YSk7IH0KKwogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCi0gICAgdm9pZCBz
ZXRCb3hEZWNvcmF0aW9uQnJlYWsoRUJveERlY29yYXRpb25CcmVhayBiKSB7IFNFVF9WQVIobV9i
b3gsIG1fYm94RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0Qm94RGVjb3JhdGlv
bkJyZWFrKEVCb3hEZWNvcmF0aW9uQnJlYWsgYikgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9ib3hE
ZWNvcmF0aW9uQnJlYWssIGIpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldEJveERpcmVjdGlvbihF
Qm94RGlyZWN0aW9uIGQpIHsgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gZDsgfQot
ICAgIHZvaWQgc2V0Qm94RmxleChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleCwgZik7IH0KLSAgICB2b2lk
IHNldEJveEZsZXhHcm91cCh1bnNpZ25lZCBpbnQgZmcpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBmbGV4X2dyb3VwLCBmZyk7
IH0KLSAgICB2b2lkIHNldEJveExpbmVzKEVCb3hMaW5lcyBsKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgbGluZXMsIGwpOyB9
Ci0gICAgdm9pZCBzZXRCb3hPcmRpbmFsR3JvdXAodW5zaWduZWQgaW50IG9nKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3Jk
aW5hbF9ncm91cCwgb2cpOyB9Ci0gICAgdm9pZCBzZXRCb3hPcmllbnQoRUJveE9yaWVudCBvKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJs
ZUJveCwgb3JpZW50LCBvKTsgfQotICAgIHZvaWQgc2V0Qm94UGFjayhFQm94UGFjayBwKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJv
eCwgcGFjaywgcCk7IH0KLSAgICB2b2lkIHNldEJveFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hh
ZG93RGF0YT4sIGJvb2wgYWRkID0gZmFsc2UpOwotICAgIHZvaWQgc2V0Qm94UmVmbGVjdChSZWZQ
dHI8U3R5bGVSZWZsZWN0aW9uPiYmIHJlZmxlY3QpIHsgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2JveFJlZmxlY3QgIT0gcmVmbGVjdCkgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fYm94UmVmbGVjdCA9IFdURk1vdmUocmVmbGVjdCk7IH0KLSAgICB2b2lkIHNldEJveFNpemlu
ZyhFQm94U2l6aW5nIHMpIHsgU0VUX1ZBUihtX2JveCwgbV9ib3hTaXppbmcsIHMpOyB9Ci0gICAg
dm9pZCBzZXRGbGV4R3JvdyhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhHcm93LCBmKTsgfQotICAgIHZvaWQgc2V0Rmxl
eFNocmluayhmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2ZsZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9Ci0gICAgdm9pZCBzZXRGbGV4QmFzaXMo
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9m
bGV4aWJsZUJveCwgbV9mbGV4QmFzaXMsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNl
dE9yZGVyKGludCBvKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb3JkZXIsIG8p
OyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQoY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50
RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduQ29udGVu
dCwgZGF0YSk7IH0KLSAgICB2b2lkIHNldEFsaWduQ29udGVudFBvc2l0aW9uKENvbnRlbnRQb3Np
dGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkNv
bnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnRP
dmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9hbGlnbkNvbnRlbnQuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAg
dm9pZCBzZXRBbGlnbkNvbnRlbnREaXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvblR5cGUg
ZGlzdHJpYnV0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduQ29u
dGVudC5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxpZ25J
dGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fYWxpZ25JdGVtcywgZGF0YSk7IH0KLSAgICB2b2lkIHNldEFsaWdu
SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fYWxpZ25JdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2
b2lkIHNldEFsaWduSXRlbXNPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkl0ZW1zLnNldE92ZXJmbG93KG92
ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVu
dERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnblNlbGYs
IGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9z
aXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25TZWxmLnNldFBv
c2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmT3ZlcmZsb3coT3ZlcmZs
b3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
YWxpZ25TZWxmLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0RmxleERpcmVj
dGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsg
fQotICAgIHZvaWQgc2V0RmxleFdyYXAoRUZsZXhXcmFwIHcpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZmxleGlibGVCb3gsIG1fZmxleFdyYXAsIHcpOyB9Ci0gICAg
dm9pZCBzZXRKdXN0aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBk
YXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUNvbnRlbnQsIGRh
dGEpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlv
biBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5Q29u
dGVudC5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50
T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fanVzdGlmeUNvbnRlbnQuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0g
ICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9u
VHlwZSBkaXN0cmlidXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVz
dGlmeUNvbnRlbnQuc2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7IH0KLSAgICB2b2lkIHNl
dEp1c3RpZnlJdGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUl0ZW1zLCBkYXRhKTsgfQotICAgIHZv
aWQgc2V0SnVzdGlmeUl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRQb3NpdGlvbihwb3Np
dGlvbik7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc092ZXJmbG93KE92ZXJmbG93QWxpZ25t
ZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJ
dGVtcy5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bv
c2l0aW9uVHlwZShJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkgeyByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0UG9zaXRpb25UeXBlKHBvc2l0aW9u
VHlwZSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVu
dERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5U2Vs
ZiwgZGF0YSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9u
IHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlTZWxm
LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGZPdmVyZmxv
dyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9qdXN0aWZ5U2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KKwogI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCi0gICAgdm9pZCBzZXRHcmlkQXV0b0NvbHVtbnMoY29uc3QgVmVj
dG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9Db2x1bW5zLCB0cmFja1NpemVMaXN0
KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9Sb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgdHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkLCBtX2dyaWRBdXRvUm93cywgdHJhY2tTaXplTGlzdCk7IH0KLSAgICB2b2lkIHNldEdy
aWRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRDb2x1bW5zLCBsZW5n
dGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVt
bnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zLCBs
ZW5ndGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzKGNvbnN0IFZlY3RvcjxH
cmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9ncmlkLCBtX2dyaWRBdXRvUmVwZWF0Um93cywgbGVuZ3Rocyk7IH0KLSAgICB2b2lk
IHNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGlu
c2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9uUG9pbnQpOyB9
Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChjb25zdCB1bnNp
Z25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50
KTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZShjb25zdCBBdXRvUmVw
ZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9
Ci0gICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NUeXBlKGNvbnN0IEF1dG9SZXBlYXRUeXBl
IGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2dyaWQsIG1fYXV0b1JlcGVhdFJvd3NUeXBlLCBhdXRvUmVwZWF0VHlwZSk7IH0KLSAgICB2b2lk
IHNldE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdy
aWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX25hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAg
ICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1l
ZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX25hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2b2lk
IHNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcywg
b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQotICAgIHZvaWQgc2V0T3JkZXJlZE5hbWVk
R3JpZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVk
R3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMp
OyB9Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFt
ZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxp
bmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1l
ZEdyaWRSb3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMp
IHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVw
ZWF0TmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0
QXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRH
cmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2b2lk
IHNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9pZCBzZXROYW1l
ZEdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhLCBu
YW1lZEdyaWRBcmVhKTsgfQotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KHNpemVf
dCByb3dDb3VudCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX25hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9Ci0gICAgdm9pZCBzZXROYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50
LCBjb2x1bW5Db3VudCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvRmxvdyhHcmlkQXV0b0Zsb3cg
ZmxvdykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dy
aWRBdXRvRmxvdywgZmxvdyk7IH0KLSAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uU3RhcnQoY29u
c3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5TdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW5TdGFydCwgY29sdW1u
U3RhcnRQb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uRW5kKGNvbnN0IEdy
aWRQb3NpdGlvbiYgY29sdW1uRW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtbkVuZCwgY29sdW1uRW5kUG9zaXRp
b24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbVJvd1N0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYg
cm93U3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkSXRlbSwgbV9ncmlkUm93U3RhcnQsIHJvd1N0YXJ0UG9zaXRpb24pOyB9Ci0gICAgdm9p
ZCBzZXRHcmlkSXRlbVJvd0VuZChjb25zdCBHcmlkUG9zaXRpb24mIHJvd0VuZFBvc2l0aW9uKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRS
b3dFbmQsIHJvd0VuZFBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZENvbHVtbkdhcChjb25z
dCBMZW5ndGgmIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3Jp
ZCwgbV9ncmlkQ29sdW1uR2FwLCB2KTsgfQotICAgIHZvaWQgc2V0R3JpZFJvd0dhcChjb25zdCBM
ZW5ndGgmIHYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwg
bV9ncmlkUm93R2FwLCB2KTsgfQotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICov
Ci0gICAgdm9pZCBzZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgaW5jcmVtZW50LCBXVEZNb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgc3BlZWQsIGYpOyB9Ci0gICAg
dm9pZCBzZXRNYXJxdWVlRGlyZWN0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGQpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgZGlyZWN0aW9uLCBkKTsgfQot
ICAgIHZvaWQgc2V0TWFycXVlZUJlaGF2aW9yKEVNYXJxdWVlQmVoYXZpb3IgYikgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXJxdWVlLCBiZWhhdmlvciwgYik7IH0K
LSAgICB2b2lkIHNldE1hcnF1ZWVMb29wQ291bnQoaW50IGkpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgbG9vcHMsIGkpOyB9Ci0gICAgdm9pZCBzZXRV
c2VyTW9kaWZ5KEVVc2VyTW9kaWZ5IHUpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNl
ck1vZGlmeSwgdSk7IH0KLSAgICB2b2lkIHNldFVzZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHVzZXJEcmFnLCBkKTsgfQotICAgIHZvaWQgc2V0VXNl
clNlbGVjdChFVXNlclNlbGVjdCBzKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZXJT
ZWxlY3QsIHMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0T3ZlcmZsb3coVGV4dE92ZXJmbG93IG92ZXJm
bG93KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRPdmVyZmxvdywgb3ZlcmZs
b3cpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2Ug
YykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5CZWZvcmVDb2xsYXBzZSwg
Yyk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UoRU1hcmdpbkNvbGxhcHNlIGMp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQWZ0ZXJDb2xsYXBzZSwgYyk7
IH0KLSAgICB2b2lkIHNldFdvcmRCcmVhayhFV29yZEJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgd29yZEJyZWFrLCBiKTsgfQotICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVP
dmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvdmVyZmxvd1dyYXAs
IGIpOyB9Ci0gICAgdm9pZCBzZXROQlNQTW9kZShFTkJTUE1vZGUgYikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBuYnNwTW9kZSwgYik7IH0KLSAgICB2b2lkIHNldExpbmVCcmVhayhMaW5l
QnJlYWsgYikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIGIpOyB9Ci0g
ICAgdm9pZCBzZXRIeXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBoeXBoZW5zLCBoKTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEJlZm9yZShzaG9y
dCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QmVm
b3JlLCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRBZnRlcihzaG9ydCBs
aW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIs
IGxpbWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0IGxpbWl0
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGlt
aXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcm
IGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25TdHJpbmcsIGgpOyB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJGaXQoRUJvcmRlckZpdCBiKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fYm9yZGVyRml0LCBiKTsgfQotICAgIHZvaWQgc2V0UmVzaXplKEVSZXNp
emUgcikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Jlc2l6ZSwgcik7IH0KLSAg
ICB2b2lkIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpcyBheGlzKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F4aXMsIGF4aXMpOyB9Ci0gICAgdm9p
ZCBzZXRDb2x1bW5Qcm9ncmVzc2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9wcm9ncmVz
c2lvbiwgcHJvZ3Jlc3Npb24pOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5XaWR0aChmbG9hdCBmKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1dG9X
aWR0aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0
aUNvbCwgbV93aWR0aCwgZik7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsg
U0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fYXV0b1dp
ZHRoLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlD
b2wsIG1fd2lkdGgsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNpZ25lZCBzaG9y
dCBjKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBt
X2F1dG9Db3VudCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9tdWx0aUNvbCwgbV9jb3VudCwgYyk7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5Db3Vu
dCgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1f
YXV0b0NvdW50LCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fY291bnQsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5GaWxsKENvbHVtbkZp
bGwgY29sdW1uRmlsbCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9t
dWx0aUNvbCwgbV9maWxsLCBjb2x1bW5GaWxsKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZs
b2F0IGYpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2ws
IG1fbm9ybWFsR2FwLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX211bHRpQ29sLCBtX2dhcCwgZik7IH0KLSAgICB2b2lkIHNldEhhc05vcm1hbENvbHVtbkdh
cCgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1f
bm9ybWFsR2FwLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fZ2FwLCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUnVsZUNvbG9yKGNvbnN0
IENvbG9yJiBjKSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9ydWxlLCBjKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uUnVs
ZVN0eWxlKEVCb3JkZXJTdHlsZSBiKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX211bHRpQ29sLCBtX3J1bGUubV9zdHlsZSwgYik7IH0KLSAgICB2b2lkIHNldENvbHVt
blJ1bGVXaWR0aCh1bnNpZ25lZCBzaG9ydCB3KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX211bHRpQ29sLCBtX3J1bGUubV93aWR0aCwgdyk7IH0KLSAgICB2b2lkIHJl
c2V0Q29sdW1uUnVsZSgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fcnVsZSwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHNldENvbHVtblNw
YW4oQ29sdW1uU3BhbiBjb2x1bW5TcGFuKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX211bHRpQ29sLCBtX2NvbHVtblNwYW4sIGNvbHVtblNwYW4pOyB9Ci0gICAgdm9p
ZCBpbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkg
eyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCA9IHBhcmVudC0+cmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2w7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0KLSAgICB2b2lk
IHNldFRyYW5zZm9ybU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1feCwgV1RGTW92ZShsZW5ndGgpKTsgfQot
ICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWShMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNURURf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV95LCBXVEZNb3ZlKGxlbmd0
aCkpOyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5aKGZsb2F0IGYpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3osIGYpOyB9Ci0gICAg
dm9pZCBzZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVh
aywgcyk7IH0KLSAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KLSAgICB2b2lkIHNl
dFRleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV90ZXh0RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0VGV4
dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxs
KFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RW1waGFzaXNGaWxsLCBmaWxsKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0
RW1waGFzaXNNYXJrIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhh
c2lzTWFyaywgbWFyayk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29u
c3QgQXRvbWljU3RyaW5nJiBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRF
bXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNQb3Np
dGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RW1waGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRH
cmlkQXV0b0NvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0
KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRv
Q29sdW1ucywgdHJhY2tTaXplTGlzdCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUm93cyhjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9Sb3dzLCB0cmFja1NpemVMaXN0
KTsgfQorICAgIHZvaWQgc2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQs
IGdyaWRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVj
dG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGdyaWQsIGdyaWRSb3dzLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3Rocykg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b1Jl
cGVhdENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3Mo
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRvUmVwZWF0Um93cywgbGVuZ3Rocyk7
IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGNvbnN0
IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlv
blBvaW50KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgdW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwgaW5zZXJ0
aW9uUG9pbnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGNvbnN0
IEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRDb2x1bW5zVHlwZSwgYXV0b1JlcGVhdFR5
cGUpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3NUeXBlKGNvbnN0IEF1dG9SZXBl
YXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRSb3dzVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9CisgICAg
dm9pZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFt
ZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgZ3JpZCwgbmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQor
ICAgIHZvaWQgc2V0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGdyaWQsIG5hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lk
IHNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGlu
ZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMsIG9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlk
LCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0K
KyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdy
aWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzLCBu
YW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRS
b3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE5hbWVk
R3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVz
TWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0b1Jl
cGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBv
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhKGNv
bnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEpIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYSwgbmFtZWRHcmlkQXJlYSk7
IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChzaXplX3Qgcm93Q291bnQpIHsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJl
YVJvd0NvdW50LCByb3dDb3VudCk7IH0KKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5D
b3VudChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50LCBjb2x1bW5Db3VudCk7IH0K
KyAgICB2b2lkIHNldEdyaWRBdXRvRmxvdyhHcmlkQXV0b0Zsb3cgZmxvdykgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b0Zsb3csIGZsb3cpOyB9
CisgICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29s
dW1uU3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBncmlkSXRlbSwgZ3JpZENvbHVtblN0YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQorICAg
IHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5FbmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQ
b3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRl
bSwgZ3JpZENvbHVtbkVuZCwgY29sdW1uRW5kUG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlk
SXRlbVJvd1N0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgcm93U3RhcnRQb3NpdGlvbikgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZFJvd1N0YXJ0
LCByb3dTdGFydFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dFbmQoY29uc3Qg
R3JpZFBvc2l0aW9uJiByb3dFbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZFJvd0VuZCwgcm93RW5kUG9zaXRpb24pOyB9Cisg
ICAgdm9pZCBzZXRHcmlkQ29sdW1uR2FwKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQ29sdW1uR2FwLCBXVEZNb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93R2FwKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkUm93R2FwLCBXVEZN
b3ZlKGxlbmd0aCkpOyB9CisjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKworICAg
IHZvaWQgc2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgaW5jcmVtZW50LCBXVEZNb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgc3BlZWQsIGYpOyB9CisgICAgdm9p
ZCBzZXRNYXJxdWVlRGlyZWN0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGQpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgZGlyZWN0aW9uLCBkKTsgfQorICAg
IHZvaWQgc2V0TWFycXVlZUJlaGF2aW9yKEVNYXJxdWVlQmVoYXZpb3IgYikgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXJxdWVlLCBiZWhhdmlvciwgYik7IH0KKyAg
ICB2b2lkIHNldE1hcnF1ZWVMb29wQ291bnQoaW50IGkpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgbG9vcHMsIGkpOyB9CisgICAgdm9pZCBzZXRVc2Vy
TW9kaWZ5KEVVc2VyTW9kaWZ5IHUpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB1c2Vy
TW9kaWZ5LCB1KTsgfQorICAgIHZvaWQgc2V0VXNlckRyYWcoRVVzZXJEcmFnIGQpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2VyRHJhZywgZCk7IH0KKyAgICB2b2lkIHNldFVz
ZXJTZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHVz
ZXJTZWxlY3QsIHMpOyB9CisgICAgdm9pZCBzZXRUZXh0T3ZlcmZsb3coVGV4dE92ZXJmbG93IG92
ZXJmbG93KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dE92ZXJmbG93LCBv
dmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKEVNYXJnaW5Db2xs
YXBzZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQmVmb3JlQ29s
bGFwc2UsIGMpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlKEVNYXJnaW5Db2xs
YXBzZSBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQWZ0ZXJDb2xs
YXBzZSwgYyk7IH0KKyAgICB2b2lkIHNldFdvcmRCcmVhayhFV29yZEJyZWFrIGIpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB3b3JkQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRPdmVy
Zmxvd1dyYXAoRU92ZXJmbG93V3JhcCBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
b3ZlcmZsb3dXcmFwLCBiKTsgfQorICAgIHZvaWQgc2V0TkJTUE1vZGUoRU5CU1BNb2RlIGIpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBuYnNwTW9kZSwgYik7IH0KKyAgICB2b2lkIHNl
dExpbmVCcmVhayhMaW5lQnJlYWsgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxp
bmVCcmVhaywgYik7IH0KKyAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0
aW9uTGltaXRCZWZvcmUoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlLCBsaW1pdCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0
aW9uTGltaXRBZnRlcihzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IGh5cGhlbmF0aW9uTGltaXRBZnRlciwgbGltaXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlv
bkxpbWl0TGluZXMoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBo
eXBoZW5hdGlvbkxpbWl0TGluZXMsIGxpbWl0KTsgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25T
dHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgaHlwaGVuYXRpb25TdHJpbmcsIGgpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJGaXQoRUJvcmRl
ckZpdCBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYm9yZGVyRml0LCBiKTsg
fQorICAgIHZvaWQgc2V0UmVzaXplKEVSZXNpemUgcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHJlc2l6ZSwgcik7IH0KKyAgICB2b2lkIHNldENvbHVtbkF4aXMoQ29sdW1uQXhp
cyBheGlzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29s
LCBheGlzLCBheGlzKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1uUHJv
Z3Jlc3Npb24gcHJvZ3Jlc3Npb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIHByb2dyZXNzaW9uLCBwcm9ncmVzc2lvbik7IH0KKyAgICB2b2lkIHNl
dENvbHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIGYpOyB9CisgICAgdm9pZCBzZXRIYXNB
dXRvQ29sdW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG11bHRpQ29sLCBhdXRvV2lkdGgsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIDApOyB9CisgICAgdm9pZCBzZXRDb2x1bW5Db3Vu
dCh1bnNpZ25lZCBzaG9ydCBjKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBhdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGNvdW50LCBjKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0
b0NvbHVtbkNvdW50KCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
dWx0aUNvbCwgYXV0b0NvdW50LCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbXVsdGlDb2wsIGNvdW50LCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uRmlsbChD
b2x1bW5GaWxsIGNvbHVtbkZpbGwpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIGZpbGwsIGNvbHVtbkZpbGwpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5H
YXAoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0
aUNvbCwgbm9ybWFsR2FwLCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG11bHRpQ29sLCBnYXAsIGYpOyB9CisgICAgdm9pZCBzZXRIYXNOb3JtYWxDb2x1bW5H
YXAoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBu
b3JtYWxHYXAsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
dWx0aUNvbCwgZ2FwLCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZUNvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLm11bHRpQ29sLCBydWxlLCBjKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVN0eWxl
KEVCb3JkZXJTdHlsZSBiKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG11bHRpQ29sLCBydWxlLm1fc3R5bGUsIGIpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lk
dGgodW5zaWduZWQgc2hvcnQgdykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtdWx0aUNvbCwgcnVsZS5tX3dpZHRoLCB3KTsgfQorICAgIHZvaWQgcmVzZXRDb2x1bW5S
dWxlKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
cnVsZSwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHNldENvbHVtblNwYW4oQ29sdW1uU3Bh
biBjb2x1bW5TcGFuKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCBjb2x1bW5TcGFuLCBjb2x1bW5TcGFuKTsgfQorICAgIHZvaWQgaW5oZXJpdENvbHVt
blByb3BlcnRpZXNGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnQpIHsgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5tdWx0aUNvbCA9IHBhcmVudC5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tdWx0aUNvbDsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0
cmFuc2Zvcm0sIG9wZXJhdGlvbnMsIG9wcyk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdp
blgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHRyYW5zZm9ybSwgeCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0VHJhbnNm
b3JtT3JpZ2luWShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdHJhbnNmb3JtLCB5LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBz
ZXRUcmFuc2Zvcm1PcmlnaW5aKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdHJhbnNmb3JtLCB6LCBmKTsgfQorICAgIHZvaWQgc2V0U3BlYWsoRVNwZWFr
IHMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywgcyk7IH0KKyAgICB2b2lk
IHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCB0ZXh0Q29tYmluZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uQ29s
b3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0
RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXND
b2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmls
bCBmaWxsKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwg
ZmlsbCk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBt
YXJrKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgbWFy
ayk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyaywgbWFyayk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRF
bXBoYXNpc1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dEVtcGhhc2lzUG9zaXRpb24sIHBvc2l0aW9uKTsgfQogICAgIGJvb2wgc2V0VGV4dE9yaWVu
dGF0aW9uKFRleHRPcmllbnRhdGlvbik7CiAKLSAgICB2b2lkIHNldE9iamVjdEZpdChPYmplY3RG
aXQgZml0KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb2JqZWN0Rml0LCBmaXQp
OyB9Ci0gICAgdm9pZCBzZXRPYmplY3RQb3NpdGlvbihjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRp
b24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vYmplY3RQb3NpdGlvbiwgcG9z
aXRpb24pOyB9CisgICAgdm9pZCBzZXRPYmplY3RGaXQoT2JqZWN0Rml0IGZpdCkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9iamVjdEZpdCwgZml0KTsgfQorICAgIHZvaWQgc2V0
T2JqZWN0UG9zaXRpb24oTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG9iamVjdFBvc2l0aW9uLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KKwor
ICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAKLSAgICB2
b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV9ydWJ5UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0
RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KIAotICAgIHZv
aWQgc2V0RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9maWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQog
I2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgdm9pZCBzZXRCYWNrZHJvcEZpbHRlcihj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fYmFja2Ryb3BGaWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQorICAgIHZv
aWQgc2V0QmFja2Ryb3BGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tkcm9wRmlsdGVyLCBvcGVyYXRp
b25zLCBvcHMpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXpl
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGFiU2l6ZSwgc2l6ZSk7IH0KKyAgICB2
b2lkIHNldFRhYlNpemUodW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRhYlNpemUsIHNpemUpOyB9CiAKLSAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0
d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYnJl
YWtCZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFr
QmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
YnJlYWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJy
ZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9icmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrQmVmb3Jl
KEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgYnJlYWtCZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVha0Fm
dGVyKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgYnJlYWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFr
SW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBicmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KICAgICAKLSAgICB2b2lk
IHNldEhhbmdpbmdQdW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0
aW9uKTsgfQorICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlv
biBwdW5jdHVhdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5j
dHVhdGlvbiwgcHVuY3R1YXRpb24pOyB9CiAKICAgICAvLyBFbmQgQ1NTMyBTZXR0ZXJzCiAKLSAg
ICB2b2lkIHNldExpbmVHcmlkKGNvbnN0IEF0b21pY1N0cmluZyYgbGluZUdyaWQpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lR3JpZCwgbGluZUdyaWQpOyB9Ci0gICAgdm9pZCBz
ZXRMaW5lU25hcChMaW5lU25hcCBsaW5lU25hcCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBtX2xpbmVTbmFwLCBsaW5lU25hcCk7IH0KLSAgICB2b2lkIHNldExpbmVBbGlnbihMaW5lQWxp
Z24gbGluZUFsaWduKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUFsaWduLCBs
aW5lQWxpZ24pOyB9CisgICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxp
bmVHcmlkKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZUdyaWQsIGxpbmVHcmlk
KTsgfQorICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lU25hcCwgbGluZVNuYXApOyB9CisgICAgdm9pZCBzZXRM
aW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGxpbmVBbGlnbiwgbGluZUFsaWduKTsgfQogCi0gICAgdm9pZCBzZXRGbG93VGhyZWFkKGNv
bnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2Zsb3dUaHJlYWQsIGZsb3dUaHJlYWQpOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25UaHJl
YWQoY29uc3QgQXRvbWljU3RyaW5nJiByZWdpb25UaHJlYWQpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9yZWdpb25UaHJlYWQsIHJlZ2lvblRocmVhZCk7IH0KLSAgICB2b2lkIHNl
dFJlZ2lvbkZyYWdtZW50KFJlZ2lvbkZyYWdtZW50IHJlZ2lvbkZyYWdtZW50KSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uRnJhZ21lbnQsIHJlZ2lvbkZyYWdtZW50KTsg
fQorICAgIHZvaWQgc2V0Rmxvd1RocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbG93VGhyZWFkLCBmbG93VGhyZWFk
KTsgfQorICAgIHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9u
VGhyZWFkKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcmVnaW9uVGhyZWFkLCBy
ZWdpb25UaHJlYWQpOyB9CisgICAgdm9pZCBzZXRSZWdpb25GcmFnbWVudChSZWdpb25GcmFnbWVu
dCByZWdpb25GcmFnbWVudCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHJlZ2lv
bkZyYWdtZW50LCByZWdpb25GcmFnbWVudCk7IH0KIAotICAgIC8vIEFwcGxlLXNwZWNpZmljIHBy
b3BlcnR5IHNldHRlcnMKLSAgICB2b2lkIHNldFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMg
cCkgeyBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBwOyB9CisgICAgdm9pZCBzZXRQ
b2ludGVyRXZlbnRzKEVQb2ludGVyRXZlbnRzIHApIHsgbV9pbmhlcml0ZWRGbGFncy5wb2ludGVy
RXZlbnRzID0gcDsgfQogCi0gICAgdm9pZCBjbGVhckFuaW1hdGlvbnMoKQotICAgIHsKLSAgICAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IG51bGxwdHI7
Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhclRyYW5zaXRpb25zKCkKLSAgICB7Ci0gICAgICAgIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gbnVsbHB0cjsKLSAg
ICB9CisgICAgdm9pZCBjbGVhckFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIGNsZWFyVHJhbnNpdGlv
bnMoKTsKIAotICAgIHZvaWQgaW5oZXJpdEFuaW1hdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCog
cGFyZW50KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBw
YXJlbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0
cjsgfQotICAgIHZvaWQgaW5oZXJpdFRyYW5zaXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBh
cmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IHBh
cmVudCA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRy
OyB9CiAgICAgdm9pZCBhZGp1c3RBbmltYXRpb25zKCk7CiAgICAgdm9pZCBhZGp1c3RUcmFuc2l0
aW9ucygpOwogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFuc2Zvcm1TdHlsZTNE
IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm1TdHlsZTNELCBi
KTsgfQotICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZpc2liaWxpdHkg
YikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tmYWNlVmlzaWJpbGl0eSwg
Yik7IH0KLSAgICB2b2lkIHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2ZSwgcCk7IH0KLSAgICB2b2lkIHNldFBlcnNwZWN0
aXZlT3JpZ2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fcGVyc3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQ
ZXJzcGVjdGl2ZU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZv
aWQgc2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fcGFnZVNpemUsIFdURk1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRQYWdlU2l6
ZVR5cGUoUGFnZVNpemVUeXBlIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9w
YWdlU2l6ZVR5cGUsIHQpOyB9Ci0gICAgdm9pZCByZXNldFBhZ2VTaXplVHlwZSgpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBBR0VfU0laRV9BVVRPKTsg
fQotCi0gICAgdm9pZCBzZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9Ci0gICAgdm9pZCBz
ZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBsaW5lQ2xhbXAsIGMpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1TdHlsZTNEKEVUcmFu
c2Zvcm1TdHlsZTNEIGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0cmFuc2Zv
cm1TdHlsZTNELCBiKTsgfQorICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFj
ZVZpc2liaWxpdHkgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJhY2tmYWNl
VmlzaWJpbGl0eSwgYik7IH0KKyAgICB2b2lkIHNldFBlcnNwZWN0aXZlKGZsb2F0IHApIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZSwgcCk7IH0KKyAgICB2b2lk
IHNldFBlcnNwZWN0aXZlT3JpZ2luWChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobGVuZ3RoKSk7IH0K
KyAgICB2b2lkIHNldFBlcnNwZWN0aXZlT3JpZ2luWShMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBhZ2VTaXplLCBXVEZNb3ZlKHNpemUpKTsgfQorICAg
IHZvaWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgcGFnZVNpemVUeXBlLCB0KTsgfQorICAgIHZvaWQgcmVzZXRQYWdlU2l6
ZVR5cGUoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGFnZVNpemVUeXBlLCBQ
QUdFX1NJWkVfQVVUTyk7IH0KKworICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENv
bnRhaW4gYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVCb3hDb250YWluLCBj
KTsgfQorICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAsIGMpOyB9CiAgICAgCi0gICAgdm9pZCBz
ZXRJbml0aWFsTGV0dGVyKGNvbnN0IEludFNpemUmIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9pbml0aWFsTGV0dGVyLCBzaXplKTsgfQorICAgIHZvaWQgc2V0SW5pdGlh
bExldHRlcihjb25zdCBJbnRTaXplJiBzaXplKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgaW5pdGlhbExldHRlciwgc2l6ZSk7IH0KICAgICAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgc2V0VG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24pIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRvdWNoQWN0aW9uKSk7IH0KKyAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNo
QWN0aW9uIHRvdWNoQWN0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdG91
Y2hBY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgLy8gU2Nyb2xsIHNuYXAgcG9ydCBz
dHlsZS4KICAgICB2b2lkIHNldFNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJik7
Ci0gICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQg
c2V0U2Nyb2xsUGFkZGluZ0JvdHRvbShjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9s
bFBhZGRpbmdMZWZ0KGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1Jp
Z2h0KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgm
Jik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRkaW5nQm90dG9tKExlbmd0aCYmKTsKKyAgICB2b2lk
IHNldFNjcm9sbFBhZGRpbmdMZWZ0KExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRp
bmdSaWdodChMZW5ndGgmJik7CiAKLSAgICAvLyBTY3JvbGwgc25hcCBhcmVhIHN0eWxlLgogICAg
IHZvaWQgc2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYpOwotICAgIHZv
aWQgc2V0U2Nyb2xsU25hcE1hcmdpblRvcChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNj
cm9sbFNuYXBNYXJnaW5Cb3R0b20oY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxT
bmFwTWFyZ2luTGVmdChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJn
aW5SaWdodChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3Ao
TGVuZ3RoJiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbShMZW5ndGgmJik7
CisgICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luTGVmdChMZW5ndGgmJik7CisgICAgdm9pZCBz
ZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9
CisgICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBzZXRUb3VjaENhbGxvdXRFbmFibGVkKGJvb2wg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsg
fQorICAgIHZvaWQgc2V0VG91Y2hDYWxsb3V0RW5hYmxlZChib29sIHYpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0b3VjaENhbGxvdXRFbmFibGVkLCB2KTsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgIHZvaWQgc2V0VXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgdik7IH0KKyAgICB2b2lkIHNldFVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgdik7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKLSAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0
bWVudCBhbkFkanVzdG1lbnQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNpemVB
ZGp1c3QsIGFuQWRqdXN0bWVudCk7IH0KKyAgICB2b2lkIHNldFRleHRTaXplQWRqdXN0KFRleHRT
aXplQWRqdXN0bWVudCBhZGp1c3RtZW50KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFNpemVBZGp1c3QsIGFkanVzdG1lbnQpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VGV4
dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CisgICAgdm9pZCBzZXRU
ZXh0U2VjdXJpdHkoRVRleHRTZWN1cml0eSBzZWN1cml0eSkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRTZWN1cml0eSwgc2VjdXJpdHkpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1RS
QUlMSU5HX1dPUkQpCi0gICAgdm9pZCBzZXRUcmFpbGluZ1dvcmQoVHJhaWxpbmdXb3JkIHYpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdHJhaWxpbmdXb3JkLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odikpOyB9CisgICAgdm9pZCBzZXRUcmFpbGluZ1dvcmQoVHJhaWxpbmdXb3JkIHYpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0cmFpbGluZ1dvcmQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KSk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICB2b2lk
IHNldEFwcGxlUGF5QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSB2KSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXBwbGVQYXlCdXR0b25TdHlsZSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHYpKTsgfQotICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5
QnV0dG9uVHlwZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXBwbGVQYXlC
dXR0b25UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CisgICAgdm9pZCBzZXRBcHBs
ZVBheUJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3R5bGUpKTsgfQorICAgIHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5
QnV0dG9uVHlwZSB0eXBlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQ
YXlCdXR0b25UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOyB9CiAjZW5kaWYKIAot
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N2
Z1N0eWxlOyB9Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIGFjY2Vzc1NWR1N0eWxlKCkgeyByZXR1cm4g
Km1fc3ZnU3R5bGUuYWNjZXNzKCk7IH0KKyAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N2Z1N0eWxlOyB9CisgICAgU1ZHUmVuZGVyU3R5bGUmIGFj
Y2Vzc1NWR1N0eWxlKCkgeyByZXR1cm4gbV9zdmdTdHlsZS5hY2Nlc3MoKTsgfQogCiAgICAgY29u
c3QgU1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5maWxsUGFpbnRUeXBlKCk7IH0KICAgICBDb2xvciBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHN2Z1N0eWxlKCkuZmlsbFBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0RmlsbFBh
aW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQo
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIpOyB9CisgICAgdm9pZCBzZXRGaWxsUGFpbnRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQo
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxv
YXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxPcGFjaXR5KCk7
IH0KICAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5z
ZXRGaWxsT3BhY2l0eShmKTsgfQogCiAgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWlu
dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9CiAg
ICAgQ29sb3Igc3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ry
b2tlUGFpbnRDb2xvcigpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFpbnQoU1ZHX1BBSU5UVFlQRV9S
R0JDT0xPUiwgYywgIiIpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVBhaW50KFNWR19QQUlOVFRZ
UEVfUkdCQ09MT1IsIGNvbG9yLCBlbXB0eVN0cmluZygpKTsgfQogICAgIGZsb2F0IHN0cm9rZU9w
YWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZU9wYWNpdHkoKTsgfQogICAg
IHZvaWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ry
b2tlT3BhY2l0eShmKTsgfQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVdpZHRoKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVdp
ZHRoKExlbmd0aCB3KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZVdpZHRoKExlbmd0aCYmIHcpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRT
dHJva2VXaWR0aChXVEZNb3ZlKHcpKTsgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ry
b2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VEYXNoQXJyYXko
KTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlRGFzaEFycmF5KFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4g
YXJyYXkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoQXJyYXkoYXJyYXkpOyB9CiAg
ICAgY29uc3QgTGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5zdHJva2VEYXNoT2Zmc2V0KCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQo
TGVuZ3RoIGQpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VEYXNoT2Zmc2V0KExlbmd0aCYmIGQpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRTdHJva2VEYXNoT2Zmc2V0KFdURk1vdmUoZCkpOyB9CiAgICAgZmxvYXQgc3Ryb2tlTWl0
ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlTWl0ZXJMaW1pdCgpOyB9
CiAgICAgdm9pZCBzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRTdHJva2VNaXRlckxpbWl0KGYpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5jeCgpOyB9Ci0gICAgdm9pZCBzZXRDeChMZW5ndGggY3gp
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRDeChjeCk7IH0KKyAgICB2b2lkIHNldEN4KExlbmd0aCYm
IGN4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3goV1RGTW92ZShjeCkpOyB9CiAgICAgY29uc3Qg
TGVuZ3RoJiBjeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3koKTsgfQotICAgIHZvaWQg
c2V0Q3koTGVuZ3RoIGN5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3koY3kpOyB9CisgICAgdm9p
ZCBzZXRDeShMZW5ndGgmJiBjeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN5KFdURk1vdmUoY3kp
KTsgfQogICAgIGNvbnN0IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkucigp
OyB9Ci0gICAgdm9pZCBzZXRSKExlbmd0aCByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihyKTsg
fQorICAgIHZvaWQgc2V0UihMZW5ndGgmJiByKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UihXVEZN
b3ZlKHIpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgcngoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLnJ4KCk7IH0KLSAgICB2b2lkIHNldFJ4KExlbmd0aCByeCkgeyBhY2Nlc3NTVkdTdHlsZSgp
LnNldFJ4KHJ4KTsgfQorICAgIHZvaWQgc2V0UngoTGVuZ3RoJiYgcngpIHsgYWNjZXNzU1ZHU3R5
bGUoKS5zZXRSeChXVEZNb3ZlKHJ4KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJ5KCkgY29uc3Qg
eyByZXR1cm4gc3ZnU3R5bGUoKS5yeSgpOyB9Ci0gICAgdm9pZCBzZXRSeShMZW5ndGggcnkpIHsg
YWNjZXNzU1ZHU3R5bGUoKS5zZXRSeShyeSk7IH0KKyAgICB2b2lkIHNldFJ5KExlbmd0aCYmIHJ5
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UnkoV1RGTW92ZShyeSkpOyB9CiAgICAgY29uc3QgTGVu
Z3RoJiB4KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS54KCk7IH0KLSAgICB2b2lkIHNldFgo
TGVuZ3RoIHgpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRYKHgpOyB9CisgICAgdm9pZCBzZXRYKExl
bmd0aCYmIHgpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRYKFdURk1vdmUoeCkpOyB9CiAgICAgY29u
c3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS55KCk7IH0KLSAgICB2b2lk
IHNldFkoTGVuZ3RoIHkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKHkpOyB9CisgICAgdm9pZCBz
ZXRZKExlbmd0aCYmIHkpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRZKFdURk1vdmUoeSkpOyB9CiAK
ICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29k
T3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NT
VkdTdHlsZSgpLnNldEZsb29kT3BhY2l0eShmKTsgfQpAQCAtMTgwNyw0MCArMTI5NSwyNSBAQCBw
dWJsaWM6CiAgICAgU1ZHTGVuZ3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCkua2VybmluZygpOyB9CiAgICAgdm9pZCBzZXRLZXJuaW5nKFNWR0xlbmd0aFZhbHVlIGsp
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRLZXJuaW5nKGspOyB9CiAKLSAgICB2b2lkIHNldFNoYXBl
T3V0c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUgPT0gdmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3NoYXBl
T3V0c2lkZSA9IFdURk1vdmUodmFsdWUpOwotICAgIH0KLSAgICBTaGFwZVZhbHVlKiBzaGFwZU91
dHNpZGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNp
ZGUuZ2V0KCk7IH0KLQotICAgIHN0YXRpYyBTaGFwZVZhbHVlKiBpbml0aWFsU2hhcGVPdXRzaWRl
KCkgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0U2hhcGVPdXRzaWRlKFJlZlB0cjxTaGFwZVZh
bHVlPiYmKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU91dHNpZGUuZ2V0KCk7IH0KKyAgICBzdGF0aWMg
U2hhcGVWYWx1ZSogaW5pdGlhbFNoYXBlT3V0c2lkZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIGNvbnN0IExlbmd0aCYgc2hhcGVNYXJnaW4oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbjsgfQotICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVu
Z3RoIHNoYXBlTWFyZ2luKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVN
YXJnaW4sIFdURk1vdmUoc2hhcGVNYXJnaW4pKTsgfQorICAgIGNvbnN0IExlbmd0aCYgc2hhcGVN
YXJnaW4oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZU1hcmdp
bjsgfQorICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3RoJiYgc2hhcGVNYXJnaW4pIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzaGFwZU1hcmdpbiwgV1RGTW92ZShzaGFwZU1h
cmdpbikpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2hhcGVNYXJnaW4oKSB7IHJldHVy
biBMZW5ndGgoMCwgRml4ZWQpOyB9CiAKLSAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVJbWFnZVRocmVzaG9s
ZDsgfQotICAgIHZvaWQgc2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhy
ZXNob2xkKSAKLSAgICB7IAotICAgICAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9s
ZCA9IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAsIDEpOwotICAgICAgICBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1w
ZWRTaGFwZUltYWdlVGhyZXNob2xkKTsgCi0gICAgfQorICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJl
c2hvbGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zaGFwZUltYWdl
VGhyZXNob2xkOyB9CisgICAgdm9pZCBzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0KTsKICAg
ICBzdGF0aWMgZmxvYXQgaW5pdGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSB7IHJldHVybiAwOyB9
CiAKLSAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJiBvcGVy
YXRpb24pCi0gICAgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBh
dGggIT0gb3BlcmF0aW9uKQotICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fY2xpcFBhdGggPSBXVEZNb3ZlKG9wZXJhdGlvbik7Ci0gICAgfQotICAgIENsaXBQYXRo
T3BlcmF0aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2NsaXBQYXRoLmdldCgpOyB9Ci0KKyAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxDbGlw
UGF0aE9wZXJhdGlvbj4mJik7CisgICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGguZ2V0KCk7IH0KICAg
ICBzdGF0aWMgQ2xpcFBhdGhPcGVyYXRpb24qIGluaXRpYWxDbGlwUGF0aCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRE
YXRhKCk7IH0KLSAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb250ZW50LmdldCgpOyB9Ci0gICAgYm9vbCBj
b250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPih0aGlzKS0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPmNvbnRlbnREYXRhRXF1aXZhbGVudCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90
aGVyU3R5bGUpLT5yYXJlTm9uSW5oZXJpdGVkRGF0YSk7IH0KKyAgICBjb25zdCBDb250ZW50RGF0
YSogY29udGVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5j
b250ZW50LmdldCgpOyB9CisgICAgYm9vbCBjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVu
ZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5
bGUqPih0aGlzKS0+bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y29udGVudERhdGFFcXVpdmFsZW50
KCpjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4ob3RoZXJTdHlsZSktPm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEpOyB9CiAgICAgdm9pZCBjbGVhckNvbnRlbnQoKTsKICAgICB2b2lkIHNldENvbnRlbnQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBhZGQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRDb250ZW50KFJl
ZlB0cjxTdHlsZUltYWdlPiYmLCBib29sIGFkZCA9IGZhbHNlKTsKQEAgLTE4NDgsMjYgKzEzMjEs
MjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudChRdW90ZVR5cGUsIGJvb2wgYWRkID0g
ZmFsc2UpOwogICAgIHZvaWQgc2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJik7CiAgICAg
Y29uc3QgU3RyaW5nJiBjb250ZW50QWx0VGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaGFzQXR0ckNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBdHRyQ29u
dGVudDsgfQorICAgIGJvb2wgaGFzQXR0ckNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5oYXNBdHRyQ29udGVudDsgfQogICAgIHZvaWQgc2V0SGFzQXR0ckNv
bnRlbnQoKTsKIAogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIGNvdW50ZXJEaXJlY3Rp
dmVzKCkgY29uc3Q7CiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgYWNjZXNzQ291bnRlckRpcmVj
dGl2ZXMoKTsKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyBnZXRDb3VudGVyRGlyZWN0aXZl
cyhjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgUXVvdGVzRGF0
YSogcXVvdGVzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcy5nZXQo
KTsgfQorICAgIFF1b3Rlc0RhdGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEtPnF1b3Rlcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UXVvdGVzKFJlZlB0cjxRdW90
ZXNEYXRhPiYmKTsKIAotICAgIFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fd2lsbENoYW5nZS5nZXQoKTsgfQorICAgIFdp
bGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+d2lsbENoYW5nZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0V2lsbENoYW5nZShSZWZQ
dHI8V2lsbENoYW5nZURhdGE+JiYpOwogCi0gICAgYm9vbCB3aWxsQ2hhbmdlQ3JlYXRlc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxDaGFuZ2UoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aWxsQ2hh
bmdlKCktPmNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgpOwotICAgIH0KKyAgICBib29sIHdpbGxD
aGFuZ2VDcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGh5cGhlblN0cmluZygpIGNvbnN0OwogCkBAIC0xODgyLDQ2ICsxMzQ5LDMyIEBAIHB1
YmxpYzoKICAgICBTdHlsZURpZmZlcmVuY2UgZGlmZihjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2ln
bmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwogICAgIGJvb2wg
ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiwgYm9vbCBpc0NvbXBv
c2l0ZWQpIGNvbnN0OwogCi0gICAgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoKSBjb25zdCB7
IHJldHVybiBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSgpKTsgfQogICAgIGJvb2wgaXNE
aXNwbGF5SW5saW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUlubGluZVR5cGUoZGlz
cGxheSgpKTsgfQogICAgIGJvb2wgaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gaXNEaXNwbGF5SW5saW5lVHlwZShvcmlnaW5hbERpc3BsYXkoKSk7IH0KICAgICBi
b29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5
RmxleGlibGVPckdyaWRCb3goZGlzcGxheSgpKTsgfQotICAgIGJvb2wgaXNEaXNwbGF5RmxleGli
bGVCb3goKSBjb25zdCB7IHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KCkpOyB9
Ci0gICAgYm9vbCBpc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBkaXNwbGF5KCkgPT0gQkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElORV9CTE9DSwotICAg
ICAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSgpID09IFRBQkxF
X0NBUFRJT04KLSAgICAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBMSVNUX0lURU07Ci0gICAgfQot
Ci0gICAgYm9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KQotICAgIHsKLSAgICAgICAg
aWYgKHYgPT0gd3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBi
b29sIGlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdDsKIAotICAgICAgICBpbmhlcml0ZWRfZmxh
Z3MubV93cml0aW5nTW9kZSA9IHY7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBi
b29sIHNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlKTsKIAotICAgIGJvb2wgaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpOyB9Ci0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGUoYm9vbCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGUodik7IH0KKyAgICBib29sIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldFdy
aXRpbmdNb2RlKCk7IH0KKyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZShi
b29sIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01v
ZGUodik7IH0KIAogICAgIC8vIEEgdW5pcXVlIHN0eWxlIGlzIG9uZSB0aGF0IGhhcyBtYXRjaGVz
IHNvbWV0aGluZyB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gc2hhcmUuCi0gICAgYm9vbCB1
bmlxdWUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNVbmlxdWUoKTsgfQot
ICAgIHZvaWQgc2V0VW5pcXVlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNVbmlxdWUoKTsg
fQorICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5p
c1VuaXF1ZSgpOyB9CisgICAgdm9pZCBzZXRVbmlxdWUoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
c2V0SXNVbmlxdWUoKTsgfQogCi0gICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bm9uaW5oZXJpdGVkX2ZsYWdzLmVtcHR5U3RhdGUoKTsgfQotICAgIHZvaWQgc2V0RW1wdHlTdGF0
ZShib29sIGIpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRFbXB0eVN0YXRl
KGIpOyB9Ci0gICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MuZmlyc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEZpcnN0Q2hpbGRT
dGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRGaXJzdENoaWxkU3Rh
dGUodHJ1ZSk7IH0KLSAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLmxhc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldExhc3RDaGls
ZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldExhc3RDaGlsZFN0
YXRlKHRydWUpOyB9CisgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9ub25J
bmhlcml0ZWRGbGFncy5lbXB0eVN0YXRlKCk7IH0KKyAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9v
bCBiKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEVtcHR5U3RhdGUoYik7
IH0KKyAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmlyc3RDaGlsZFN0YXRlKCk7IH0KKyAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0
ZSgpIHsgc2V0VW5pcXVlKCk7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0Rmlyc3RDaGlsZFN0YXRl
KHRydWUpOyB9CisgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
SW5oZXJpdGVkRmxhZ3MubGFzdENoaWxkU3RhdGUoKTsgfQorICAgIHZvaWQgc2V0TGFzdENoaWxk
U3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdzLnNldExhc3RDaGlsZFN0
YXRlKHRydWUpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciB2aXNpdGVkRGVwZW5kZW50
Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogICAgIGJvb2wgYmFja2dyb3VuZENvbG9y
RXF1YWxzVG9Db2xvcklnbm9yaW5nVmlzaXRlZChjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0IHsg
cmV0dXJuIGNvbG9yID09IGJhY2tncm91bmRDb2xvcigpOyB9CiAKLSAgICB2b2lkIHNldEhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXModHJ1ZSk7IH0KLSAgICBib29sIGhhc0V4cGxp
Y2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7IH0KKyAgICB2b2lkIHNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNl
dEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKHRydWUpOyB9CisgICAgYm9vbCBoYXNF
eHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3MuaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsgfQogICAgIAogICAg
IC8vIEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgRU92
ZXJmbG93IGluaXRpYWxPdmVyZmxvd1goKSB7IHJldHVybiBPVklTSUJMRTsgfQpAQCAtMTk0MCwx
NSArMTM5MywxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3JkZXJTdHlsZSBpbml0aWFsQm9y
ZGVyU3R5bGUoKSB7IHJldHVybiBCTk9ORTsgfQogICAgIHN0YXRpYyBPdXRsaW5lSXNBdXRvIGlu
aXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8oKSB7IHJldHVybiBBVVRPX09GRjsgfQogICAgIHN0YXRp
YyBOaW5lUGllY2VJbWFnZSBpbml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGll
Y2VJbWFnZSgpOyB9Ci0gICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygp
IHsgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7
IH0KKyAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4g
eyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9CiAgICAgc3RhdGljIEVDYXB0aW9uU2lk
ZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDQVBUT1A7IH0KICAgICBzdGF0aWMgQ29s
dW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJuIEF1dG9Db2x1bW5BeGlzOyB9CiAg
ICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsg
cmV0dXJuIE5vcm1hbENvbHVtblByb2dyZXNzaW9uOyB9CiAgICAgc3RhdGljIFRleHREaXJlY3Rp
b24gaW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIExUUjsgfQogICAgIHN0YXRpYyBXcml0aW5n
TW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRvbVdyaXRpbmdNb2Rl
OyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgpIHsgcmV0dXJu
IFRleHRDb21iaW5lTm9uZTsgfQotICAgIHN0YXRpYyBUZXh0T3JpZW50YXRpb24gaW5pdGlhbFRl
eHRPcmllbnRhdGlvbigpIHsgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6Ci0gICAgTWl4ZWQ7IH0K
KyAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJl
dHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0
aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0RmlsbDsgfQogICAgIHN0YXRpYyBMZW5n
dGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5n
dGgoNTAuMGYsIFBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpKTsgfQogICAgIHN0YXRp
YyBFRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4gU0hPVzsgfQpAQCAtMTk2
MCw5ICsxNDEyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsSG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxW
ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEVDdXJzb3Ig
aW5pdGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvckF1dG87IH0KLSNpZiBFTkFCTEUoQ1VSU09S
X1ZJU0lCSUxJVFkpCi0gICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNvclZp
c2liaWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsgfQotI2VuZGlmCiAgICAg
c3RhdGljIENvbG9yIGluaXRpYWxDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQogICAg
IHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSB7IHJldHVybiAwOyB9
CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxCb3JkZXJXaWR0aCgpIHsgcmV0dXJuIDM7IH0KQEAg
LTE5NzksMjIgKzE0MjgsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRl
eHRJbmRlbnQoKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsWmVyb0xlbmd0aCgpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KICAgICBzdGF0aWMg
TGVuZ3RoIGluaXRpYWxPbmVMZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoMSwgRml4ZWQpOyB9Ci0j
aWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRl
eHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQotICAgIHN0YXRp
YyBUZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5k
ZW50Tm9ybWFsOyB9Ci0jZW5kaWYKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsg
cmV0dXJuIDI7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAy
OyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0
aCgtMTAwLjBmLCBQZXJjZW50KTsgfQotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAg
c3RhdGljIExlbmd0aCBpbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0
aCgtMTAwLjBmLCBQZXJjZW50KTsgfQotI2VuZGlmCiAgICAgc3RhdGljIEVUZXh0QWxpZ24gaW5p
dGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRBU1RBUlQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29y
YXRpb24gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ob25l
OyB9Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICBzdGF0aWMgVGV4dEFsaWduTGFzdCBpbml0
aWFsVGV4dEFsaWduTGFzdCgpIHsgcmV0dXJuIFRleHRBbGlnbkxhc3RBdXRvOyB9Ci0gICAgc3Rh
dGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlmeSgpIHsgcmV0dXJuIFRleHRKdXN0aWZ5
QXV0bzsgfQotI2VuZGlmIC8vIENTUzNfVEVYVAogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0
eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25T
dHlsZVNvbGlkOyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU2tpcCBpbml0aWFsVGV4dERl
Y29yYXRpb25Ta2lwKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ta2lwQXV0bzsgfQogICAgIHN0
YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gaW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigp
IHsgcmV0dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbkF1dG87IH0KQEAgLTIwMDksOCArMTQ0Nyw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRUJveE9yaWVudCBpbml0aWFsQm94T3JpZW50KCkgeyBy
ZXR1cm4gSE9SSVpPTlRBTDsgfQogICAgIHN0YXRpYyBFQm94UGFjayBpbml0aWFsQm94UGFjaygp
IHsgcmV0dXJuIFN0YXJ0OyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxCb3hGbGV4KCkgeyBy
ZXR1cm4gMC4wZjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5pdGlhbEJveEZsZXhHcm91
cCgpIHsgcmV0dXJuIDE7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGluaXRpYWxCb3hPcmRp
bmFsR3JvdXAoKSB7IHJldHVybiAxOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3hG
bGV4R3JvdXAoKSB7IHJldHVybiAxOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3hP
cmRpbmFsR3JvdXAoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIEVCb3hTaXppbmcgaW5pdGlh
bEJveFNpemluZygpIHsgcmV0dXJuIENPTlRFTlRfQk9YOyB9CiAgICAgc3RhdGljIFN0eWxlUmVm
bGVjdGlvbiogaW5pdGlhbEJveFJlZmxlY3QoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxGbGV4R3JvdygpIHsgcmV0dXJuIDA7IH0KQEAgLTIwODMsNiArMTUyMSwyMiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFF1b3Rlc0RhdGEqIGluaXRpYWxRdW90ZXMoKSB7IHJldHVy
biBudWxscHRyOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbENvbnRl
bnRBbHRUZXh0KCkgeyByZXR1cm4gZW1wdHlBdG9tOyB9CiAKKyNpZiBFTkFCTEUoQ1NTM19URVhU
KQorICAgIHN0YXRpYyBUZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJl
dHVybiBUZXh0SW5kZW50Rmlyc3RMaW5lOyB9CisgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGlu
aXRpYWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnROb3JtYWw7IH0KKyAgICBz
dGF0aWMgVGV4dEFsaWduTGFzdCBpbml0aWFsVGV4dEFsaWduTGFzdCgpIHsgcmV0dXJuIFRleHRB
bGlnbkxhc3RBdXRvOyB9CisgICAgc3RhdGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlm
eSgpIHsgcmV0dXJuIFRleHRKdXN0aWZ5QXV0bzsgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1VS
U09SX1ZJU0lCSUxJVFkpCisgICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNv
clZpc2liaWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsgfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNw
ZWNpZmllZExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0K
KyAgICBzdGF0aWMgVGV4dFNpemVBZGp1c3RtZW50IGluaXRpYWxUZXh0U2l6ZUFkanVzdCgpIHsg
cmV0dXJuIFRleHRTaXplQWRqdXN0bWVudCgpOyB9CisjZW5kaWYKKwogICAgIHN0YXRpYyBib29s
IGlzQ1NTR3JpZExheW91dEVuYWJsZWQoKTsKIAogICAgIHN0YXRpYyBXaWxsQ2hhbmdlRGF0YSog
aW5pdGlhbFdpbGxDaGFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CkBAIC0yMTM4LDcgKzE1OTIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Db2x1
bW5FbmQoKSB7IHJldHVybiBHcmlkUG9zaXRpb24oKTsgfQogICAgIHN0YXRpYyBHcmlkUG9zaXRp
b24gaW5pdGlhbEdyaWRJdGVtUm93U3RhcnQoKSB7IHJldHVybiBHcmlkUG9zaXRpb24oKTsgfQog
ICAgIHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtUm93RW5kKCkgeyByZXR1cm4g
R3JpZFBvc2l0aW9uKCk7IH0KLSNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwor
I2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKICAgICBzdGF0aWMgdW5zaWduZWQg
aW5pdGlhbFRhYlNpemUoKSB7IHJldHVybiA4OyB9CiAKQEAgLTIxNTAsNDEgKzE2MDQsMzI1IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsUmVnaW9uVGhy
ZWFkKCkgeyByZXR1cm4gbnVsbEF0b207IH0KICAgICBzdGF0aWMgUmVnaW9uRnJhZ21lbnQgaW5p
dGlhbFJlZ2lvbkZyYWdtZW50KCkgeyByZXR1cm4gQXV0b1JlZ2lvbkZyYWdtZW50OyB9CiAKLSAg
ICAvLyBLZWVwIHRoZXNlIGF0IHRoZSBlbmQuCiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbElu
aXRpYWxMZXR0ZXIoKSB7IHJldHVybiBJbnRTaXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1w
VmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAg
ICBzdGF0aWMgRVRleHRTZWN1cml0eSBpbml0aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNO
T05FOyB9Ci0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBzdGF0aWMgVGV4dFNpemVB
ZGp1c3RtZW50IGluaXRpYWxUZXh0U2l6ZUFkanVzdCgpIHsgcmV0dXJuIFRleHRTaXplQWRqdXN0
bWVudCgpOyB9Ci0jZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsVG91Y2hDYWxsb3V0RW5hYmxlZCgpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hs
aWdodENvbG9yKCk7CiAjZW5kaWYKKwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGlu
aXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKKwogICAgIHN0
YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsRmlsdGVyKCkgeyBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RmlsdGVyT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CisKICNpZiBF
TkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJP
cGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJl
dHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KICAgICBzdGF0aWMgSXNvbGF0aW9uIGluaXRpYWxJc29s
YXRpb24oKSB7IHJldHVybiBJc29sYXRpb25BdXRvOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNQ
bGFjZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
aXNQbGFjZWhvbGRlclN0eWxlOyB9Ci0gICAgdm9pZCBzZXRJc1BsYWNlaG9sZGVyU3R5bGUoKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faXNQbGFjZWhvbGRlclN0eWxlLCB0cnVl
KTsgfQorICAgIGJvb2wgaXNQbGFjZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+aXNQbGFjZWhvbGRlclN0eWxlOyB9CisgICAgdm9pZCBzZXRJc1Bs
YWNlaG9sZGVyU3R5bGUoKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaXNQbGFj
ZWhvbGRlclN0eWxlLCB0cnVlKTsgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBub25pbmhlcml0
ZWRGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZW5kZXJTdHls
ZSwgbm9uaW5oZXJpdGVkX2ZsYWdzKTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihj
b25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlu
a0JhY2tncm91bmRDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVm
dENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlu
a0JvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IsIHYpOyB9CisgICAgdm9pZCBz
ZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdik7
IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlclRvcENv
bG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua091dGxp
bmVDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNv
bnN0IENvbG9yJiB2KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciwgdik7
IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0
IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Io
Y29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlu
a1RleHRTdHJva2VDb2xvciwgdik7IH0KKworICAgIHZvaWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJv
bShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0VW5p
Y29kZUJpZGkocGFyZW50LT5tX25vbkluaGVyaXRlZEZsYWdzLnVuaWNvZGVCaWRpKCkpOyB9Cisg
ICAgdm9pZCBnZXRTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRv
cCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVm
dCkgY29uc3Q7CisgICAgdm9pZCBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRv
d0RhdGEqLCBMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3Q7CisgICAg
dm9pZCBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5p
dCYgdG9wLCBMYXlvdXRVbml0JiBib3R0b20pIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93SW5s
aW5lRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBsb2dpY2Fs
TGVmdCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdDsKKyAgICB2b2lkIGdldFNoYWRv
d0Jsb2NrRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBsb2dp
Y2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdDsKKworICAgIHN0YXRpYyBD
b2xvciBpbnZhbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3Im
IGJvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIu
bGVmdCgpLmNvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9Cisg
ICAgY29uc3QgQ29sb3ImIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3Vu
ZERhdGEtPmJvcmRlci50b3AoKS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJvcmRlckJv
dHRvbUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5ib3R0b20o
KS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIGNvbG9y
KCkgY29uc3Q7CisgICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlLmNvbG9yKCk7IH0KKyAg
ICBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
RGF0YS0+b3V0bGluZS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRFbXBoYXNpc0Nv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29s
b3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGV4
dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0
cm9rZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdDsK
KyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsg
fQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9y
OyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRD
b2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3Jk
ZXJUb3BDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua091dGxpbmVDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnZpc2l0ZWRM
aW5rQ29sdW1uUnVsZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHREZWNvcmF0aW9uQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlv
bkNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4
dERlY29yYXRpb25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRFbXBo
YXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtUZXh0RW1waGFzaXNDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHRG
aWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlu
a1RleHRGaWxsQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1Rl
eHRTdHJva2VDb2xvcjsgfQorCisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHN2Z1N0eWxlKCkuc3RvcENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmxvb2RD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmxvb2RDb2xvcigpOyB9CisgICAgY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmxpZ2h0
aW5nQ29sb3IoKTsgfQogCiBwcml2YXRlOgorICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7
CisgICAgICAgIE5vbkluaGVyaXRlZEZsYWdzKCk7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mbGFncyA9
PSBvdGhlci5tX2ZsYWdzOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhl
cml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgIT0gb3RoZXIubV9mbGFn
czsgfQorCisgICAgICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJp
dGVkRmxhZ3MmKTsKKworICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93
WE9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyBvdmVyZmxv
d1gpIHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dYLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WE9mZnNl
dCk7IH0KKworICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNl
dCkpOyB9CisgICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyBvdmVyZmxvd1kpIHsg
dXBkYXRlVmFsdWUob3ZlcmZsb3dZLCBvdmVyZmxvd01hc2ssIG92ZXJmbG93WU9mZnNldCk7IH0K
KworICAgICAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2xl
YXI+KGdldFZhbHVlKGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNl
dENsZWFyKEVDbGVhciBjbGVhcikgeyB1cGRhdGVWYWx1ZShjbGVhciwgY2xlYXJNYXNrLCBjbGVh
ck9mZnNldCk7IH0KKworICAgICAgICBFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBlZmZl
Y3RpdmVEaXNwbGF5T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRFZmZlY3RpdmVEaXNwbGF5
KEVEaXNwbGF5IGVmZmVjdGl2ZURpc3BsYXkpIHsgdXBkYXRlVmFsdWUoZWZmZWN0aXZlRGlzcGxh
eSwgZGlzcGxheU1hc2ssIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpOyB9CisKKyAgICAgICAgRVBv
c2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihn
ZXRWYWx1ZShwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBz
ZXRQb3NpdGlvbihFUG9zaXRpb24gcG9zaXRpb24pIHsgdXBkYXRlVmFsdWUocG9zaXRpb24sIHBv
c2l0aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpOyB9CisKKyAgICAgICAgRURpc3BsYXkgb3JpZ2lu
YWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVl
KGRpc3BsYXlNYXNrLCBvcmlnaW5hbERpc3BsYXlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNl
dE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkpIHsgdXBkYXRlVmFsdWUo
b3JpZ2luYWxEaXNwbGF5LCBkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KTsgfQor
CisgICAgICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVVbmljb2RlQmlkaT4oZ2V0VmFsdWUodW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlk
aU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIHVu
aWNvZGVCaWRpKSB7IHVwZGF0ZVZhbHVlKHVuaWNvZGVCaWRpLCB1bmljb2RlQmlkaU1hc2ssIHVu
aWNvZGVCaWRpT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNv
bnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2
YWx1ZSwgaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KKworICAgICAgICBFVmVydGljYWxBbGln
biB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxp
Z24+KGdldFZhbHVlKHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFsaWduT2Zmc2V0KSk7IH0K
KyAgICAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxp
Z24pIHsgdXBkYXRlVmFsdWUodmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbk1hc2ssIHZlcnRp
Y2FsQWxpZ25PZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVk
UHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZXhwbGljaXRJbmhlcml0YW5j
ZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVy
dGllcyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGV4cGxpY2l0SW5oZXJpdGFu
Y2VPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4g
ZmxvYXRpbmcoKSAhPSBOb0Zsb2F0OyB9CisgICAgICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbG9hdD4oZ2V0VmFsdWUoZmxvYXRpbmdNYXNrLCBmbG9h
dGluZ09mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IGZsb2F0aW5n
KSB7IHVwZGF0ZVZhbHVlKGZsb2F0aW5nLCBmbG9hdGluZ01hc2ssIGZsb2F0aW5nT2Zmc2V0KTsg
fQorCisgICAgICAgIGJvb2wgaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1
cm4gUFVCTElDX1BTRVVET0lEX01BU0sgJiBnZXRWYWx1ZShwc2V1ZG9CaXRzTWFzaywgcHNldWRv
Qml0c09mZnNldCk7IH0KKyAgICAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQpOworICAgICAgICB2
b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCk7CisKKyAgICAgICAgRVRhYmxlTGF5
b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRhYmxlTGF5b3V0
PihnZXRWYWx1ZSh0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zmc2V0KSk7IH0KKyAg
ICAgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQpIHsgdXBk
YXRlVmFsdWUodGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0Qml0TWFzaywgdGFibGVMYXlvdXRPZmZz
ZXQpOyB9CisKKyAgICAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHNldWRvSWQ+KGdldFZhbHVlKHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNl
dCkpOyB9CisgICAgICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0eWxlVHlwZSkgeyB1
cGRhdGVWYWx1ZShzdHlsZVR5cGUsIHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlwZU9mZnNldCk7IH0K
KworICAgICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihpc1Vu
aXF1ZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRJc1VuaXF1ZSgpIHsgdXBkYXRlQm9vbGVh
bih0cnVlLCBpc1VuaXF1ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGVtcHR5U3RhdGUoKSBj
b25zdCB7IHJldHVybiBnZXRCb29sZWFuKGVtcHR5U3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2
b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBlbXB0
eVN0YXRlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gZ2V0Qm9vbGVhbihmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQorICAgICAgICB2
b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUs
IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7ICB9Cisg
ICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFu
KHZhbHVlLCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGFmZmVjdGVk
QnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0
KTsgfQorICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KKworICAgICAgICBib29s
IGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlB
Y3RpdmVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZh
bHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9CisK
KyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
YWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWco
Ym9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5RHJhZ09mZnNldCk7
IH0KKworICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNM
aW5rT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldElzTGluayhib29sIHZhbHVlKSB7IHVwZGF0
ZUJvb2xlYW4odmFsdWUsIGlzTGlua09mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNl
dERpcmVjdGlvbihib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb25PZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc0V4cGxpY2l0bHlTZXRX
cml0aW5nTW9kZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3Jp
dGluZ01vZGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFn
c01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRGbGFn
cywgbV9mbGFncyk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlB
Y3RpdmUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQ7IH0K
KyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJu
IG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1
aW50NjRfdCBmbGFnUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSB7IHJldHVybiBvbmVCaXRN
YXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7IH0KKyAgICAgICAgc3RhdGlj
IHVpbnQ2NF90IHNldEZpcnN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0ZpcnN0Q2hp
bGRTdGF0ZSgpIHwgZmxhZ0lzVW5pcXVlKCk7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNl
dExhc3RDaGlsZFN0YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnTGFzdENoaWxkU3RhdGUoKSB8IGZs
YWdJc1VuaXF1ZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHVwZGF0ZUJvb2xl
YW4oYm9vbCwgdWludDY0X3Qgb2Zmc2V0KTsKKyAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVpbnQ2
NF90IG9mZnNldCkgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdW
YWx1ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCk7
CisgICAgICAgIHVuc2lnbmVkIGdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRN
YXNrLCB1aW50NjRfdCBvZmZzZXQpIGNvbnN0OworCisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBm
bGFnSXNVbmlxdWUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGlzVW5pcXVlT2Zmc2V0OyB9Cisg
ICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gb25l
Qml0TWFzayA8PCBmaXJzdENoaWxkU3RhdGVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2
NF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgbGFzdENoaWxk
U3RhdGVPZmZzZXQ7IH0KKworICAgICAgICAvLyBUbyB0eXBlIHRoZSBiaXQgbWFzayBwcm9wZXJs
eSBvbiA2NGJpdHMuCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBvbmVCaXRNYXNrID0g
MHgxOworCisgICAgICAgIC8vIEJ5dGUgMS4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG92ZXJmbG93Qml0Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb3Zl
cmZsb3dNYXNrID0gKG9uZUJpdE1hc2sgPDwgb3ZlcmZsb3dCaXRDb3VudCkgLSAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dYT2Zmc2V0ID0gMDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WU9mZnNldCA9IG92ZXJmbG93WE9mZnNldCArIG92
ZXJmbG93Qml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbGVhckJpdENv
dW50ID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGNsZWFyTWFzayA9IChvbmVC
aXRNYXNrIDw8IGNsZWFyQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNsZWFyT2Zmc2V0ID0gb3ZlcmZsb3dZT2Zmc2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKKwor
ICAgICAgICAvLyBCeXRlIDIuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaXNwbGF5
Qml0Q291bnQgPSA1OworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZGlzcGxheU1hc2sg
PSAob25lQml0TWFzayA8PCBkaXNwbGF5Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQgPSBjbGVhck9mZnNldCArIGNsZWFy
Qml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlvbkJpdENvdW50
ID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBvc2l0aW9uTWFzayA9IChvbmVC
aXRNYXNrIDw8IHBvc2l0aW9uQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHBvc2l0aW9uT2Zmc2V0ID0gZWZmZWN0aXZlRGlzcGxheU9mZnNldCArIGRpc3BsYXlC
aXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDMuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBvcmlnaW5hbERpc3BsYXlPZmZzZXQgPSBwb3NpdGlvbk9mZnNldCArIHBvc2l0aW9uQml0
Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaUJpdENvdW50
ID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHVuaWNvZGVCaWRpTWFzayA9IChv
bmVCaXRNYXNrIDw8IHVuaWNvZGVCaWRpQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRpT2Zmc2V0ID0gb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ICsg
ZGlzcGxheUJpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNC4KKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGZsb2F0aW5nQml0Q291bnQgPSAyOworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3QgZmxvYXRpbmdNYXNrID0gKG9uZUJpdE1hc2sgPDwgZmxvYXRpbmdCaXRDb3VudCkg
LSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdPZmZzZXQgPSB1bmlj
b2RlQmlkaU9mZnNldCArIHVuaWNvZGVCaWRpQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQgPSAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbk9mZnNldCA9
IGZsb2F0aW5nT2Zmc2V0ICsgZmxvYXRpbmdCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZUJpdGNvdW50ID0gMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZU9mZnNl
dCA9IGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0RGly
ZWN0aW9uQml0Y291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA1LgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZUJpdENvdW50ID0gMTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgPSBoYXNFeHBsaWNp
dGx5U2V0V3JpdGluZ01vZGVPZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRj
b3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQg
PSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0g
b25lQml0TWFzazsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zm
c2V0ID0gZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRD
b3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3Vu
dCA9IDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGlu
ZyA9IDI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFk
ZGluZ0JpdENvdW50ID0gdmVydGljYWxBbGlnbkJpdENvdW50ICsgdmVydGljYWxBbGlnblBhZGRp
bmc7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChv
bmVCaXRNYXNrIDw8IHZlcnRpY2FsQWxpZ25CaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbk9mZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsg
dGFibGVMYXlvdXRCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDYuCisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzQml0Q291bnQgPSA3OworICAgICAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgcHNldWRvQml0c01hc2sgPSAob25lQml0TWFzayA8PCBwc2V1ZG9CaXRz
Qml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBzZXVkb0JpdHNP
ZmZzZXQgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgdmVydGljYWxBbGlnbkJpdENvdW50OworCisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQgPSAx
OworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sg
PSAob25lQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQpIC0gMTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQgPSBwc2V1ZG9CaXRz
T2Zmc2V0ICsgcHNldWRvQml0c0JpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNy4KKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUJpdENvdW50ID0gNjsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZVBhZGRpbmcgPSAyOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQW5kUGFkZGluZ0JpdENvdW50ID0gc3R5bGVUeXBl
Qml0Q291bnQgKyBzdHlsZVR5cGVQYWRkaW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0
X3Qgc3R5bGVUeXBlTWFzayA9IChvbmVCaXRNYXNrIDw8IHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRD
b3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlT2Zmc2V0
ID0gaGFzVmlld3BvcnRVbml0c0JpdENvdW50ICsgaGFzVmlld3BvcnRVbml0c09mZnNldDsKKwor
ICAgICAgICAvLyBCeXRlIDguCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1
ZU9mZnNldCA9IHN0eWxlVHlwZU9mZnNldCArIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1
ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3Rh
dGVPZmZzZXQgPSBlbXB0eVN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxhc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxh
c3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFm
ZmVjdGVkQnlBY3RpdmVPZmZzZXQgPSBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5
QWN0aXZlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09m
ZnNldCA9IGFmZmVjdGVkQnlEcmFnT2Zmc2V0ICsgMTsKKworICAgICAgICAvLyA2MCBiaXRzIGFy
ZSBhc3NpZ25lZC4gVGhlcmUgYXJlIDQgYml0cyBhdmFpbGFibGUgY3VycmVudGx5IHVzZWQgYXMg
cGFkZGluZyB0byBpbXByb3ZlIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICAgICAgLy8gSWYgeW91IGFk
ZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5k
ZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKS4KKyAgICAgICAgdWludDY0X3QgbV9mbGFn
cyB7IDAgfTsKKyAgICB9OworCisgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7CisgICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7
IC8vIEVFbXB0eUNlbGwKKyAgICAgICAgdW5zaWduZWQgY2FwdGlvblNpZGUgOiAyOyAvLyBFQ2Fw
dGlvblNpZGUKKyAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIEVMaXN0U3R5
bGVUeXBlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVBvc2l0aW9uIDogMTsgLy8gRUxpc3RT
dHlsZVBvc2l0aW9uCisgICAgICAgIHVuc2lnbmVkIHZpc2liaWxpdHkgOiAyOyAvLyBFVmlzaWJp
bGl0eQorICAgICAgICB1bnNpZ25lZCB0ZXh0QWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCisgICAg
ICAgIHVuc2lnbmVkIHRleHRUcmFuc2Zvcm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQorICAgICAg
ICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbnMgOiBUZXh0RGVjb3JhdGlvbkJpdHM7CisgICAgICAg
IHVuc2lnbmVkIGN1cnNvciA6IDY7IC8vIEVDdXJzb3IKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lC
SUxJVFkpCisgICAgICAgIHVuc2lnbmVkIGN1cnNvclZpc2liaWxpdHkgOiAxOyAvLyBDdXJzb3JW
aXNpYmlsaXR5CisjZW5kaWYKKyAgICAgICAgdW5zaWduZWQgZGlyZWN0aW9uIDogMTsgLy8gVGV4
dERpcmVjdGlvbgorICAgICAgICB1bnNpZ25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gRVdoaXRlU3Bh
Y2UKKyAgICAgICAgLy8gMzIgYml0cworICAgICAgICB1bnNpZ25lZCBib3JkZXJDb2xsYXBzZSA6
IDE7IC8vIEVCb3JkZXJDb2xsYXBzZQorICAgICAgICB1bnNpZ25lZCBib3hEaXJlY3Rpb24gOiAx
OyAvLyBFQm94RGlyZWN0aW9uIChDU1MzIGJveF9kaXJlY3Rpb24gcHJvcGVydHksIGZsZXhpYmxl
IGJveCBsYXlvdXQgbW9kdWxlKQorCisgICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAorICAg
ICAgICB1bnNpZ25lZCBydGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCisgICAgICAgIHVuc2lnbmVk
IHByaW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsKKyAgICAgICAgdW5zaWdu
ZWQgcG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCisgICAgICAgIHVuc2lnbmVk
IGluc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluaworICAgICAgICB1bnNpZ25lZCBpbnNpZGVE
ZWZhdWx0QnV0dG9uIDogMTsKKyAgICAgICAgLy8gNDQgYml0cworCisgICAgICAgIC8vIENTUyBU
ZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0CisgICAg
ICAgIHVuc2lnbmVkIHdyaXRpbmdNb2RlIDogMjsgLy8gV3JpdGluZ01vZGUKKyAgICAgICAgLy8g
NDYgYml0cworICAgIH07CisKKyAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgdG8gaW1w
bGVtZW50IHRoZSByZXBsYWNlIG9wZXJhdGlvbi4KKyAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHls
ZSYsIFJlbmRlclN0eWxlJiYpOworCisgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29u
c3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkoKTsgfQorCisg
ICAgYm9vbCBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGVmdCgpLmlzQXV0
bygpICYmIHJpZ2h0KCkuaXNBdXRvKCk7IH0KKyAgICBib29sIGhhc0F1dG9Ub3BBbmRCb3R0b20o
KSBjb25zdCB7IHJldHVybiB0b3AoKS5pc0F1dG8oKSAmJiBib3R0b20oKS5pc0F1dG8oKTsgfQor
CisgICAgdm9pZCBzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4sIGJvb2wg
YWRkKTsKKworICAgIExheW91dEJveEV4dGVudCBnZXRTaGFkb3dJbnNldEV4dGVudChjb25zdCBT
aGFkb3dEYXRhKikgY29uc3Q7CisKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5
cGUoRURpc3BsYXkpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRURpc3Bs
YXkpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5KTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9v
bCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChFRGlzcGxheSk7CisKKyAgICBDb2xvciBjb2xv
ckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBj
b25zdDsKKwogICAgIGJvb2wgY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3Q7CiAgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5k
ZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNv
bnN0OwogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBS
ZW5kZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMp
IGNvbnN0OwpAQCAtMjE5MywxMDIgKzE5MzEsMTQzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGFu
Z2VSZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZShjb25zdCBSZW5kZXJTdHls
ZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Owog
ICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxl
JiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CiAK
LSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9Ci0g
ICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9y
LCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3Jk
ZXJSaWdodENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21D
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zp
c2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlu
a0JvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV92aXNpdGVkTGlua0NvbHVt
blJ1bGVDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25D
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7IH0KLSAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwgdik7IH0KLQotICAg
IHZvaWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJvbShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50KSB7
IG5vbmluaGVyaXRlZF9mbGFncy5zZXRVbmljb2RlQmlkaShwYXJlbnQtPm5vbmluaGVyaXRlZF9m
bGFncy51bmljb2RlQmlkaSgpKTsgfQotICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0IFNo
YWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0
JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OwotICAgIExheW91dEJveEV4dGVudCBn
ZXRTaGFkb3dJbnNldEV4dGVudChjb25zdCBTaGFkb3dEYXRhKikgY29uc3Q7Ci0gICAgdm9pZCBn
ZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiBs
ZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRTaGFkb3dWZXJ0aWNh
bEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBi
b3R0b20pIGNvbnN0OwotICAgIHZvaWQgZ2V0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVu
aXQmIGxvZ2ljYWxSaWdodCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2lj
YWxMZWZ0LCBsb2dpY2FsUmlnaHQpIDogZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBs
b2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsKLSAgICB9Ci0gICAgdm9pZCBnZXRTaGFkb3dCbG9j
a0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxv
Z2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2FsRXh0
ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jpem9u
dGFsRXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7Ci0gICAgfQorICAg
IC8vIG5vbi1pbmhlcml0ZWQgYXR0cmlidXRlcworICAgIERhdGFSZWY8U3R5bGVCb3hEYXRhPiBt
X2JveERhdGE7CisgICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+IG1fdmlzdWFsRGF0YTsKKyAg
ICBEYXRhUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IG1fYmFja2dyb3VuZERhdGE7CisgICAgRGF0
YVJlZjxTdHlsZVN1cnJvdW5kRGF0YT4gbV9zdXJyb3VuZERhdGE7CisgICAgRGF0YVJlZjxTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhPiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhOworICAgIE5vbklu
aGVyaXRlZEZsYWdzIG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAKLSAgICBib29sIGlzRGlzcGxheVJl
cGxhY2VkVHlwZShFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNw
bGF5ID09IElOTElORV9GTEVYCi0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAg
ICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQKLSNlbmRpZgotICAgICAgICAgICAgfHwgZGlz
cGxheSA9PSBJTkxJTkVfVEFCTEU7Ci0gICAgfQorICAgIC8vIGluaGVyaXRlZCBhdHRyaWJ1dGVz
CisgICAgRGF0YVJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBtX3JhcmVJbmhlcml0ZWREYXRh
OworICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERhdGE7CisgICAg
SW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKIAotICAgIGJvb2wgaXNEaXNwbGF5SW5s
aW5lVHlwZShFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRp
c3BsYXkgPT0gSU5MSU5FIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsKLSAgICB9
CisgICAgLy8gbGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHNldWRvU3R5bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CiAKLSAgICBib29s
IGlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVg7Ci0g
ICAgfQorICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKLSAgICBib29s
IGlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0jaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gR1JJRCB8fCBk
aXNwbGF5ID09IElOTElORV9HUklEOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRpc3Bs
YXkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFC
TEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZh
bHNlIH07CiAjZW5kaWYKLSAgICB9Cit9OwogCi0gICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9y
R3JpZEJveChFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlz
RGlzcGxheUZsZXhpYmxlQm94KGRpc3BsYXkpIHx8IGlzRGlzcGxheUdyaWRCb3goZGlzcGxheSk7
Ci0gICAgfQoraW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQsIGNvbnN0IFJlbmRlclN0eWxl
Jik7CitmbG9hdCBhZGp1c3RGbG9hdEZvckFic29sdXRlWm9vbShmbG9hdCwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKK0xheW91dFVuaXQgYWRqdXN0TGF5b3V0VW5pdEZvckFic29sdXRlWm9vbShMYXlv
dXRVbml0LCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgLy8gQ29sb3IgYWNjZXNzb3JzIGFy
ZSBhbGwgcHJpdmF0ZSB0byBtYWtlIHN1cmUgY2FsbGVycyB1c2UgdmlzaXRlZERlcGVuZGVudENv
bG9yIGluc3RlYWQgdG8gYWNjZXNzIHRoZW0uCi0gICAgc3RhdGljIENvbG9yIGludmFsaWRDb2xv
cigpIHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyTGVmdENvbG9y
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuY29sb3IoKTsgfQotICAg
IGNvbnN0IENvbG9yJiBib3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5yaWdodCgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYm9yZGVyVG9wQ29s
b3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmNvbG9yKCk7IH0KLSAg
ICBjb25zdCBDb2xvciYgYm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbSgpLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgYmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5jb2xvcigpOyB9Ci0gICAgY29u
c3QgQ29sb3ImIGNvbG9yKCkgY29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIGNvbHVtblJ1bGVDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1
bGUuY29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmQtPm91dGxpbmUoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3Im
IHRleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHRleHRGaWxsQ29sb3IoKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQotICAgIGNvbnN0
IENvbG9yJiB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFN0cm9rZUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sb3Io
KSBjb25zdDsKLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tncm91
bmRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVy
TGVmdENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9y
ZGVyUmlnaHRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlckJvdHRv
bUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRl
clRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua091dGxp
bmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wt
Pm1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdGV4dERl
Y29yYXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Rl
eHREZWNvcmF0aW9uQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RGVj
b3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlz
aXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRM
aW5rVGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVk
TGlua1RleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRM
aW5rVGV4dFN0cm9rZUNvbG9yOyB9CitFQm9yZGVyU3R5bGUgY29sbGFwc2VkQm9yZGVyU3R5bGUo
RUJvcmRlclN0eWxlKTsKIAotICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soaW50IGNv
bG9yUHJvcGVydHksIGJvb2wgdmlzaXRlZExpbmspIGNvbnN0OworYm9vbCBwc2V1ZG9FbGVtZW50
UmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSopOwogCi0gICAgY29uc3QgQ29sb3Im
IHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3RvcENvbG9yKCk7IH0KLSAg
ICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmxv
b2RDb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsgfQoraW5saW5lIFJlbmRlclN0eWxlOjpO
b25Jbmhlcml0ZWRGbGFnczo6Tm9uSW5oZXJpdGVkRmxhZ3MoKQoreworICAgIC8vIEFsbCB0aGVz
ZSBpbml0aWFsIHZhbHVlcyBuZWVkIHRvIGJlIHplcm8gc28gdGhhdCB6ZXJvLWluaXRpYWxpemlu
ZyBtX2ZsYWdzIGlzIGNvcnJlY3QuCisgICAgQVNTRVJUKCFpbml0aWFsT3ZlcmZsb3dYKCkpOwor
ICAgIEFTU0VSVCghaW5pdGlhbE92ZXJmbG93WSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxDbGVh
cigpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxEaXNwbGF5KCkpOworICAgIEFTU0VSVCghaW5pdGlh
bFVuaWNvZGVCaWRpKCkpOworICAgIEFTU0VSVCghaW5pdGlhbFBvc2l0aW9uKCkpOworICAgIEFT
U0VSVCghaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSk7CisgICAgQVNTRVJUKCFpbml0aWFsRmxvYXRp
bmcoKSk7CisgICAgQVNTRVJUKCFpbml0aWFsVGFibGVMYXlvdXQoKSk7Cit9CiAKLSAgICB2b2lk
IGFwcGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPik7Ci19OworaW5saW5l
IHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpjb3B5Tm9uSW5oZXJpdGVkRnJv
bShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpCit7CisgICAgLy8gT25seSBhIHN1YnNl
dCBpcyBjb3BpZWQgYmVjYXVzZSBOb25Jbmhlcml0ZWRGbGFncyBjb250YWlucyBhIGJ1bmNoIG9m
IHN0dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBkYXRhLgorICAgIHVpbnQ2NF90IG5vbkluaGVy
aXRlZE1hc2sgPSBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dYT2Zmc2V0CisgICAgICAgIHwgb3Zl
cmZsb3dNYXNrIDw8IG92ZXJmbG93WU9mZnNldAorICAgICAgICB8IGNsZWFyTWFzayA8PCBjbGVh
ck9mZnNldAorICAgICAgICB8IGRpc3BsYXlNYXNrIDw8IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQK
KyAgICAgICAgfCBwb3NpdGlvbk1hc2sgPDwgcG9zaXRpb25PZmZzZXQKKyAgICAgICAgfCBkaXNw
bGF5TWFzayA8PCBvcmlnaW5hbERpc3BsYXlPZmZzZXQKKyAgICAgICAgfCB1bmljb2RlQmlkaU1h
c2sgPDwgdW5pY29kZUJpZGlPZmZzZXQKKyAgICAgICAgfCB2ZXJ0aWNhbEFsaWduTWFzayA8PCB2
ZXJ0aWNhbEFsaWduT2Zmc2V0CisgICAgICAgIHwgZmxvYXRpbmdNYXNrIDw8IGZsb2F0aW5nT2Zm
c2V0CisgICAgICAgIHwgb25lQml0TWFzayA8PCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0Cisg
ICAgICAgIHwgdGFibGVMYXlvdXRCaXRNYXNrIDw8IHRhYmxlTGF5b3V0T2Zmc2V0CisgICAgICAg
IHwgaGFzVmlld3BvcnRVbml0c0JpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c09mZnNldDsKKwor
ICAgIG1fZmxhZ3MgPSAobV9mbGFncyAmIH5ub25Jbmhlcml0ZWRNYXNrKSB8IChvdGhlci5tX2Zs
YWdzICYgbm9uSW5oZXJpdGVkTWFzayk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpO
b25Jbmhlcml0ZWRGbGFnczo6aGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAor
eworICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7CisgICAgQVNTRVJUKHBzZXVkbyA8IEZJ
UlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKKyAgICByZXR1cm4gKG9uZUJpdE1hc2sgPDwgKHBzZXVk
b0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKSkgJiBtX2ZsYWdzOworfQorCitpbmxpbmUgdm9pZCBS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
IHBzZXVkbykKK3sKKyAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOworICAgIEFTU0VSVChw
c2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7CisgICAgbV9mbGFncyB8PSBvbmVCaXRN
YXNrIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbyk7Cit9CisKK2lubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVk
b0lkU2V0IHBzZXVkb0lkU2V0KQoreworICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7CisgICAgdWlu
dDY0X3QgcmF3UHNldWRvSWRTZXQgPSBwc2V1ZG9JZFNldC5kYXRhKCk7CisgICAgQVNTRVJUKChy
YXdQc2V1ZG9JZFNldCAmIFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9PSByYXdQc2V1ZG9JZFNldCk7
CisgICAgc3RhdGljX2Fzc2VydChwc2V1ZG9CaXRzT2Zmc2V0ID49IDEsICIocHNldWRvQml0c09m
ZnNldCAtIDEpIHNob3VsZCBiZSB2YWxpZC4iKTsKKyAgICBtX2ZsYWdzIHw9IChzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmF3UHNldWRvSWRTZXQpIDw8IChwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkpOwor
fQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnVwZGF0ZUJv
b2xlYW4oYm9vbCBpc1NldCwgdWludDY0X3Qgb2Zmc2V0KQoreworICAgIGlmIChpc1NldCkKKyAg
ICAgICAgbV9mbGFncyB8PSAob25lQml0TWFzayA8PCBvZmZzZXQpOworICAgIGVsc2UKKyAgICAg
ICAgbV9mbGFncyAmPSB+KG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKK30KKworaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpnZXRCb29sZWFuKHVpbnQ2NF90IG9mZnNl
dCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mbGFncyAmIChvbmVCaXRNYXNrIDw8IG9mZnNldCk7
Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6dXBkYXRl
VmFsdWUodWludDhfdCBuZXdWYWx1ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ss
IHVpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIShuZXdWYWx1ZSAmIH5wb3NpdGlvbklu
ZGVwZW5kZW50TWFzaykpOworICAgIHVpbnQ2NF90IHBvc2l0aW9uRGVwZW5kZW50TWFzayA9IHBv
c2l0aW9uSW5kZXBlbmRlbnRNYXNrIDw8IG9mZnNldDsKKyAgICBtX2ZsYWdzID0gKG1fZmxhZ3Mg
JiB+cG9zaXRpb25EZXBlbmRlbnRNYXNrKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4obmV3VmFs
dWUpIDw8IG9mZnNldCk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpJbmhlcml0ZWRG
bGFnczo6b3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGVtcHR5Q2VsbHMgPT0gb3RoZXIuZW1wdHlDZWxscworICAgICAgICAmJiBjYXB0
aW9uU2lkZSA9PSBvdGhlci5jYXB0aW9uU2lkZQorICAgICAgICAmJiBsaXN0U3R5bGVUeXBlID09
IG90aGVyLmxpc3RTdHlsZVR5cGUKKyAgICAgICAgJiYgbGlzdFN0eWxlUG9zaXRpb24gPT0gb3Ro
ZXIubGlzdFN0eWxlUG9zaXRpb24KKyAgICAgICAgJiYgdmlzaWJpbGl0eSA9PSBvdGhlci52aXNp
YmlsaXR5CisgICAgICAgICYmIHRleHRBbGlnbiA9PSBvdGhlci50ZXh0QWxpZ24KKyAgICAgICAg
JiYgdGV4dFRyYW5zZm9ybSA9PSBvdGhlci50ZXh0VHJhbnNmb3JtCisgICAgICAgICYmIHRleHRE
ZWNvcmF0aW9ucyA9PSBvdGhlci50ZXh0RGVjb3JhdGlvbnMKKyAgICAgICAgJiYgY3Vyc29yID09
IG90aGVyLmN1cnNvcgorI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKKyAgICAgICAgJiYg
Y3Vyc29yVmlzaWJpbGl0eSA9PSBvdGhlci5jdXJzb3JWaXNpYmlsaXR5CisjZW5kaWYKKyAgICAg
ICAgJiYgZGlyZWN0aW9uID09IG90aGVyLmRpcmVjdGlvbgorICAgICAgICAmJiB3aGl0ZVNwYWNl
ID09IG90aGVyLndoaXRlU3BhY2UKKyAgICAgICAgJiYgYm9yZGVyQ29sbGFwc2UgPT0gb3RoZXIu
Ym9yZGVyQ29sbGFwc2UKKyAgICAgICAgJiYgYm94RGlyZWN0aW9uID09IG90aGVyLmJveERpcmVj
dGlvbgorICAgICAgICAmJiBydGxPcmRlcmluZyA9PSBvdGhlci5ydGxPcmRlcmluZworICAgICAg
ICAmJiBwcmludENvbG9yQWRqdXN0ID09IG90aGVyLnByaW50Q29sb3JBZGp1c3QKKyAgICAgICAg
JiYgcG9pbnRlckV2ZW50cyA9PSBvdGhlci5wb2ludGVyRXZlbnRzCisgICAgICAgICYmIGluc2lk
ZUxpbmsgPT0gb3RoZXIuaW5zaWRlTGluaworICAgICAgICAmJiBpbnNpZGVEZWZhdWx0QnV0dG9u
ID09IG90aGVyLmluc2lkZURlZmF1bHRCdXR0b24KKyAgICAgICAgJiYgd3JpdGluZ01vZGUgPT0g
b3RoZXIud3JpdGluZ01vZGU7Cit9CisKK2lubGluZSB1bnNpZ25lZCBSZW5kZXJTdHlsZTo6Tm9u
SW5oZXJpdGVkRmxhZ3M6OmdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNr
LCB1aW50NjRfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPigobV9mbGFncyA+PiBvZmZzZXQpICYgcG9zaXRpb25JbmRlcGVuZGVudE1hc2spOworfQog
CiBpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKQEAgLTIzMjUsNTAgKzIxMDQsMjU2IEBAIGlubGluZSBFQm9yZGVy
U3R5bGUgY29sbGFwc2VkQm9yZGVyU3R5bGUoRUJvcmRlclN0eWxlIHN0eWxlKQogICAgIHJldHVy
biBzdHlsZTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFpvb20oZmxvYXQgZikK
K2lubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNCYWNrZ3JvdW5kKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5p
c1Zpc2libGUoKSB8fCAgaGFzQmFja2dyb3VuZEltYWdlKCk7Cit9CisKK2lubGluZSBib29sIFJl
bmRlclN0eWxlOjphdXRvV3JhcChFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQogewotICAgIHNldEVm
ZmVjdGl2ZVpvb20oZWZmZWN0aXZlWm9vbSgpICogZik7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbCh2
aXN1YWwtPm1fem9vbSwgZikpCisgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGlj
YWxseSB3cmFwLgorICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PV1JBUCAmJiB3aGl0ZVNwYWNl
ICE9IFBSRTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZShF
V2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQoreworICAgIC8vIE5vcm1hbCBhbmQgbm93cmFwIGRvIG5v
dCBwcmVzZXJ2ZSBuZXdsaW5lcy4KKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBOT1JNQUwgJiYg
d2hpdGVTcGFjZSAhPSBOT1dSQVA7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpjb2xs
YXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2Ugd3MpCit7CisgICAgLy8gUHJlIGFuZCBwcmV3cmFw
IGRvIG5vdCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgorICAgIHJldHVybiB3cyAhPSBQUkUgJiYgd3Mg
IT0gUFJFX1dSQVA7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0NvbGxhcHNpYmxl
V2hpdGVTcGFjZShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgc3dpdGNoIChjaGFyYWN0
ZXIpIHsKKyAgICBjYXNlICcgJzoKKyAgICBjYXNlICdcdCc6CisgICAgICAgIHJldHVybiBjb2xs
YXBzZVdoaXRlU3BhY2UoKTsKKyAgICBjYXNlICdcbic6CisgICAgICAgIHJldHVybiAhcHJlc2Vy
dmVOZXdsaW5lKCk7CisgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZp
c3VhbC5hY2Nlc3MoKS0+bV96b29tID0gZjsKKyAgICB9Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiB3
aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAgfHwgbGluZUJyZWFrKCkgPT0gTGluZUJyZWFrQWZ0ZXJX
aGl0ZVNwYWNlOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YnJlYWtXb3JkcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHdvcmRCcmVhaygpID09IEJyZWFrV29yZEJyZWFrIHx8IG92ZXJm
bG93V3JhcCgpID09IEJyZWFrT3ZlcmZsb3dXcmFwOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJT
dHlsZTo6aGFzSW5saW5lQ29sdW1uQXhpcygpIGNvbnN0Cit7CisgICAgYXV0byBheGlzID0gY29s
dW1uQXhpcygpOworICAgIHJldHVybiBheGlzID09IEF1dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gSG9yaXpvbnRhbENvbHVtbkF4aXMpOworfQor
CitpbmxpbmUgSW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRp
b24oKSBjb25zdAoreworI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZU9yaWVudGF0aW9uKTsKKyNlbHNlCisgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRMb2dpY2Fs
V2lkdGgoTGVuZ3RoJiYgbG9naWNhbFdpZHRoKQoreworICAgIGlmIChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQorICAgICAgICBzZXRXaWR0aChXVEZNb3ZlKGxvZ2ljYWxXaWR0aCkpOworICAg
IGVsc2UKKyAgICAgICAgc2V0SGVpZ2h0KFdURk1vdmUobG9naWNhbFdpZHRoKSk7Cit9CisKK2lu
bGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCYmIGxvZ2ljYWxI
ZWlnaHQpCit7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHNl
dEhlaWdodChXVEZNb3ZlKGxvZ2ljYWxIZWlnaHQpKTsKKyAgICBlbHNlCisgICAgICAgIHNldFdp
ZHRoKFdURk1vdmUobG9naWNhbEhlaWdodCkpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUmJiBzaXplKQoreworICAgIGF1dG8gdG9wTGVm
dCA9IHNpemU7CisgICAgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhXVEZNb3ZlKHRvcExlZnQpKTsK
KyAgICBhdXRvIHRvcFJpZ2h0ID0gc2l6ZTsKKyAgICBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhX
VEZNb3ZlKHRvcFJpZ2h0KSk7CisgICAgYXV0byBib3R0b21MZWZ0ID0gc2l6ZTsKKyAgICBzZXRC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKFdURk1vdmUoYm90dG9tTGVmdCkpOworICAgIHNldEJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKFdURk1vdmUoc2l6ZSkpOworfQorCitpbmxpbmUgdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyUmFkaXVzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgc2V0
Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUgeyB7IHNpemUud2lkdGgoKSwgRml4ZWQgfSwgeyBzaXpl
LmhlaWdodCgpLCBGaXhlZCB9IH0pOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0
Wm9vbShmbG9hdCB6b29tTGV2ZWwpCit7CisgICAgc2V0RWZmZWN0aXZlWm9vbShlZmZlY3RpdmVa
b29tKCkgKiB6b29tTGV2ZWwpOworICAgIGlmIChjb21wYXJlRXF1YWwobV92aXN1YWxEYXRhLT56
b29tLCB6b29tTGV2ZWwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92aXN1YWxEYXRh
LmFjY2VzcygpLnpvb20gPSB6b29tTGV2ZWw7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjpzZXRFZmZlY3RpdmVab29tKGZsb2F0IGYpCitpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6c2V0RWZmZWN0aXZlWm9vbShmbG9hdCB6b29tTGV2ZWwpCiB7Ci0gICAg
aWYgKGNvbXBhcmVFcXVhbChyYXJlSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVab29tLCBmKSkK
KyAgICBpZiAoY29tcGFyZUVxdWFsKG1fcmFyZUluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZVpvb20s
IHpvb21MZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9lZmZlY3RpdmVab29tID0gZjsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRh
LmFjY2VzcygpLmVmZmVjdGl2ZVpvb20gPSB6b29tTGV2ZWw7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVu
dGF0aW9uIHRleHRPcmllbnRhdGlvbikKIHsKLSAgICBpZiAoY29tcGFyZUVxdWFsKHJhcmVJbmhl
cml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHRP
cmllbnRhdGlvbikpKQorICAgIGlmIChjb21wYXJlRXF1YWwobV9yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dE9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dE9yaWVudGF0aW9uKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
LnRleHRPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0T3JpZW50YXRpb24p
OworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0
QmFja2dyb3VuZExheWVycygpCit7CisgICAgaWYgKGJhY2tncm91bmRMYXllcnMoKS5uZXh0KCkp
IHsKKyAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmN1bGxFbXB0eUxheWVycygpOwor
ICAgICAgICBlbnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKCkuZmlsbFVuc2V0UHJvcGVydGllcygpOwor
ICAgIH0KK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdE1hc2tMYXllcnMoKQor
eworICAgIGlmIChtYXNrTGF5ZXJzKCkubmV4dCgpKSB7CisgICAgICAgIGVuc3VyZU1hc2tMYXll
cnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAgZW5zdXJlTWFza0xheWVycygpLmZpbGxV
bnNldFByb3BlcnRpZXMoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpj
bGVhckFuaW1hdGlvbnMoKQoreworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
YW5pbWF0aW9ucyA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpjbGVh
clRyYW5zaXRpb25zKCkKK3sKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRy
YW5zaXRpb25zID0gbnVsbHB0cjsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNo
YXBlT3V0c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBpZiAobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlID09IHZhbHVlKQorICAgICAgICByZXR1cm47
CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5zaGFwZU91dHNpZGUgPSBXVEZN
b3ZlKHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNoYXBlSW1hZ2VU
aHJlc2hvbGQoZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCkKK3sKKyAgICBmbG9hdCBjbGFtcGVk
U2hhcGVJbWFnZVRocmVzaG9sZCA9IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQs
IDAsIDEpOworICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVJbWFnZVRo
cmVzaG9sZCwgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQpOworfQogCi0gICAgcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fdGV4dE9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRleHRPcmllbnRhdGlvbik7CitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcFBh
dGgoUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKK3sKKyAgICBpZiAobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGggIT0gb3BlcmF0aW9uKQorICAgICAgICBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNsaXBQYXRoID0gV1RGTW92ZShvcGVyYXRpb24p
OworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6d2lsbENoYW5nZUNyZWF0ZXNTdGFja2lu
Z0NvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiB3aWxsQ2hhbmdlKCkgJiYgd2lsbENoYW5n
ZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBkaXNwbGF5
KCkgPT0gQkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElORV9CTE9DSworICAgICAgICB8fCBkaXNw
bGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5KCkgPT0gVEFCTEVfQ0FQVElPTgorICAgICAg
ICB8fCBkaXNwbGF5KCkgPT0gTElTVF9JVEVNOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHls
ZTo6c2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgdikKK3sKKyAgICBpZiAodiA9PSB3cml0aW5n
TW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9pbmhlcml0ZWRGbGFncy53cml0
aW5nTW9kZSA9IHY7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSB2b2lkIFJlbmRlclN0
eWxlOjpnZXRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93LCBMYXlvdXRVbml0JiBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBj
b25zdAoreworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZ2V0U2hhZG93
SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpIDogZ2V0
U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KTsK
K30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0
ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5
b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbFRv
cCwgbG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvdywgbG9n
aWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpp
c0Rpc3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxheSkKK3sKKyAgICByZXR1cm4gZGlz
cGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfQk9YIHx8IGRpc3BsYXkg
PT0gSU5MSU5FX0ZMRVgKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgICAgICB8fCBk
aXNwbGF5ID09IElOTElORV9HUklECisjZW5kaWYKKyAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJ
TkVfVEFCTEU7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlJbmxpbmVU
eXBlKEVEaXNwbGF5IGRpc3BsYXkpCit7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FIHx8
IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5IGRpc3BsYXkpCit7CisgICAgcmV0
dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYOworfQorCitpbmxp
bmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5R3JpZEJveChFRGlzcGxheSBkaXNwbGF5KQor
eworI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisgICAgcmV0dXJuIGRpc3BsYXkgPT0gR1JJ
RCB8fCBkaXNwbGF5ID09IElOTElORV9HUklEOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGlz
cGxheSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChFRGlzcGxheSBkaXNwbGF5KQorewor
ICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3BsYXlHcmlk
Qm94KGRpc3BsYXkpOworfQorCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzQW55UHVibGlj
UHNldWRvU3R5bGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhh
c0FueVB1YmxpY1BzZXVkb1N0eWxlcygpOworICAgIHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdz
Lmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHls
ZTo6aGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAogewotICAgIHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MuaGFzUHNldWRvU3R5bGUocHNldWRvKTsKKyAgICByZXR1cm4gbV9u
b25Jbmhlcml0ZWRGbGFncy5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pOwogfQogCiBpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKQogewotICAg
IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNQc2V1ZG9TdHlsZShwc2V1ZG8pOworICAgIG1fbm9u
SW5oZXJpdGVkRmxhZ3Muc2V0SGFzUHNldWRvU3R5bGUocHNldWRvKTsKIH0KIAogaW5saW5lIHZv
aWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNl
dCkKIHsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzUHNldWRvU3R5bGVzKHBzZXVkb0lk
U2V0KTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1BzZXVkb1N0eWxlcyhwc2V1ZG9J
ZFNldCk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3hSZWZsZWN0KFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+JiYgcmVmbGVjdCkKK3sKKyAgICBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGJveFJlZmxlY3QsIFdURk1vdmUocmVmbGVjdCkpOwogfQogCiBpbmxpbmUg
Ym9vbCBwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmNwcAppbmRleCA2YzAyZTUwOGFmMWFhMzhiMjJjMmYyMzk5ZmRkNTI0N2FlMzQxYzlmLi5lNDY4
Zjg5ZDgxMTNjODhkNjBlNTQxMmEwYWJmMGMyZmJiOWUwMTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKQEAgLTQ5LDQ2ICs0OSw0
NiBAQCBSZWY8U1ZHUmVuZGVyU3R5bGU+IFNWR1JlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5
bGUoKQogfQogCiBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVuZGVyU3R5bGUoKQotICAgIDogZmlsbChk
ZWZhdWx0U1ZHU3R5bGUoKS5maWxsKQotICAgICwgc3Ryb2tlKGRlZmF1bHRTVkdTdHlsZSgpLnN0
cm9rZSkKLSAgICAsIHRleHQoZGVmYXVsdFNWR1N0eWxlKCkudGV4dCkKLSAgICAsIGluaGVyaXRl
ZFJlc291cmNlcyhkZWZhdWx0U1ZHU3R5bGUoKS5pbmhlcml0ZWRSZXNvdXJjZXMpCi0gICAgLCBz
dG9wcyhkZWZhdWx0U1ZHU3R5bGUoKS5zdG9wcykKLSAgICAsIG1pc2MoZGVmYXVsdFNWR1N0eWxl
KCkubWlzYykKLSAgICAsIHNoYWRvd1NWRyhkZWZhdWx0U1ZHU3R5bGUoKS5zaGFkb3dTVkcpCi0g
ICAgLCBsYXlvdXQoZGVmYXVsdFNWR1N0eWxlKCkubGF5b3V0KQotICAgICwgcmVzb3VyY2VzKGRl
ZmF1bHRTVkdTdHlsZSgpLnJlc291cmNlcykKKyAgICA6IG1fZmlsbERhdGEoZGVmYXVsdFNWR1N0
eWxlKCkubV9maWxsRGF0YSkKKyAgICAsIG1fc3Ryb2tlRGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5t
X3N0cm9rZURhdGEpCisgICAgLCBtX3RleHREYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fdGV4dERh
dGEpCisgICAgLCBtX2luaGVyaXRlZFJlc291cmNlRGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX2lu
aGVyaXRlZFJlc291cmNlRGF0YSkKKyAgICAsIG1fc3RvcERhdGEoZGVmYXVsdFNWR1N0eWxlKCku
bV9zdG9wRGF0YSkKKyAgICAsIG1fbWlzY0RhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9taXNjRGF0
YSkKKyAgICAsIG1fc2hhZG93RGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX3NoYWRvd0RhdGEpCisg
ICAgLCBtX2xheW91dERhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9sYXlvdXREYXRhKQorICAgICwg
bV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGEpCiB7CiAgICAgc2V0Qml0RGVmYXVsdHMoKTsKIH0KIAogU1ZHUmVuZGVy
U3R5bGU6OlNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRUeXBlKQotICAgIDogZmlsbChTdHls
ZUZpbGxEYXRhOjpjcmVhdGUoKSkKLSAgICAsIHN0cm9rZShTdHlsZVN0cm9rZURhdGE6OmNyZWF0
ZSgpKQotICAgICwgdGV4dChTdHlsZVRleHREYXRhOjpjcmVhdGUoKSkKLSAgICAsIGluaGVyaXRl
ZFJlc291cmNlcyhTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBz
dG9wcyhTdHlsZVN0b3BEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1pc2MoU3R5bGVNaXNjRGF0YTo6
Y3JlYXRlKCkpCi0gICAgLCBzaGFkb3dTVkcoU3R5bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUoKSkK
LSAgICAsIGxheW91dChTdHlsZUxheW91dERhdGE6OmNyZWF0ZSgpKQotICAgICwgcmVzb3VyY2Vz
KFN0eWxlUmVzb3VyY2VEYXRhOjpjcmVhdGUoKSkKKyAgICA6IG1fZmlsbERhdGEoU3R5bGVGaWxs
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3N0cm9rZURhdGEoU3R5bGVTdHJva2VEYXRhOjpjcmVh
dGUoKSkKKyAgICAsIG1fdGV4dERhdGEoU3R5bGVUZXh0RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBt
X2luaGVyaXRlZFJlc291cmNlRGF0YShTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y3JlYXRl
KCkpCisgICAgLCBtX3N0b3BEYXRhKFN0eWxlU3RvcERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9t
aXNjRGF0YShTdHlsZU1pc2NEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fc2hhZG93RGF0YShTdHls
ZVNoYWRvd1NWR0RhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9sYXlvdXREYXRhKFN0eWxlTGF5b3V0
RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YShTdHlsZVJl
c291cmNlRGF0YTo6Y3JlYXRlKCkpCiB7CiAgICAgc2V0Qml0RGVmYXVsdHMoKTsKIH0KIAogaW5s
aW5lIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShjb25zdCBTVkdSZW5kZXJTdHlsZSYg
b3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFNWR1JlbmRlclN0eWxlPigpCi0gICAgLCBzdmdfaW5o
ZXJpdGVkX2ZsYWdzKG90aGVyLnN2Z19pbmhlcml0ZWRfZmxhZ3MpCi0gICAgLCBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzKG90aGVyLnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MpCi0gICAgLCBmaWxsKG90
aGVyLmZpbGwpCi0gICAgLCBzdHJva2Uob3RoZXIuc3Ryb2tlKQotICAgICwgdGV4dChvdGhlci50
ZXh0KQotICAgICwgaW5oZXJpdGVkUmVzb3VyY2VzKG90aGVyLmluaGVyaXRlZFJlc291cmNlcykK
LSAgICAsIHN0b3BzKG90aGVyLnN0b3BzKQotICAgICwgbWlzYyhvdGhlci5taXNjKQotICAgICwg
c2hhZG93U1ZHKG90aGVyLnNoYWRvd1NWRykKLSAgICAsIGxheW91dChvdGhlci5sYXlvdXQpCi0g
ICAgLCByZXNvdXJjZXMob3RoZXIucmVzb3VyY2VzKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhv
dGhlci5tX2luaGVyaXRlZEZsYWdzKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhvdGhlci5t
X25vbkluaGVyaXRlZEZsYWdzKQorICAgICwgbV9maWxsRGF0YShvdGhlci5tX2ZpbGxEYXRhKQor
ICAgICwgbV9zdHJva2VEYXRhKG90aGVyLm1fc3Ryb2tlRGF0YSkKKyAgICAsIG1fdGV4dERhdGEo
b3RoZXIubV90ZXh0RGF0YSkKKyAgICAsIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKG90aGVyLm1f
aW5oZXJpdGVkUmVzb3VyY2VEYXRhKQorICAgICwgbV9zdG9wRGF0YShvdGhlci5tX3N0b3BEYXRh
KQorICAgICwgbV9taXNjRGF0YShvdGhlci5tX21pc2NEYXRhKQorICAgICwgbV9zaGFkb3dEYXRh
KG90aGVyLm1fc2hhZG93RGF0YSkKKyAgICAsIG1fbGF5b3V0RGF0YShvdGhlci5tX2xheW91dERh
dGEpCisgICAgLCBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YShvdGhlci5tX25vbkluaGVyaXRl
ZFJlc291cmNlRGF0YSkKIHsKIH0KIApAQCAtMTAzLDQ5ICsxMDMsNDYgQEAgU1ZHUmVuZGVyU3R5
bGU6On5TVkdSZW5kZXJTdHlsZSgpCiAKIGJvb2wgU1ZHUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0o
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBmaWxsID09
IG90aGVyLmZpbGwKLSAgICAgICAgJiYgc3Ryb2tlID09IG90aGVyLnN0cm9rZQotICAgICAgICAm
JiB0ZXh0ID09IG90aGVyLnRleHQKLSAgICAgICAgJiYgc3RvcHMgPT0gb3RoZXIuc3RvcHMKLSAg
ICAgICAgJiYgbWlzYyA9PSBvdGhlci5taXNjCi0gICAgICAgICYmIHNoYWRvd1NWRyA9PSBvdGhl
ci5zaGFkb3dTVkcKLSAgICAgICAgJiYgbGF5b3V0ID09IG90aGVyLmxheW91dAotICAgICAgICAm
JiBpbmhlcml0ZWRSZXNvdXJjZXMgPT0gb3RoZXIuaW5oZXJpdGVkUmVzb3VyY2VzCi0gICAgICAg
ICYmIHJlc291cmNlcyA9PSBvdGhlci5yZXNvdXJjZXMKLSAgICAgICAgJiYgc3ZnX2luaGVyaXRl
ZF9mbGFncyA9PSBvdGhlci5zdmdfaW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICYmIHN2Z19ub25p
bmhlcml0ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX25vbmluaGVyaXRlZF9mbGFnczsKKyAgICByZXR1
cm4gbV9maWxsRGF0YSA9PSBvdGhlci5tX2ZpbGxEYXRhCisgICAgICAgICYmIG1fc3Ryb2tlRGF0
YSA9PSBvdGhlci5tX3N0cm9rZURhdGEKKyAgICAgICAgJiYgbV90ZXh0RGF0YSA9PSBvdGhlci5t
X3RleHREYXRhCisgICAgICAgICYmIG1fc3RvcERhdGEgPT0gb3RoZXIubV9zdG9wRGF0YQorICAg
ICAgICAmJiBtX21pc2NEYXRhID09IG90aGVyLm1fbWlzY0RhdGEKKyAgICAgICAgJiYgbV9zaGFk
b3dEYXRhID09IG90aGVyLm1fc2hhZG93RGF0YQorICAgICAgICAmJiBtX2xheW91dERhdGEgPT0g
b3RoZXIubV9sYXlvdXREYXRhCisgICAgICAgICYmIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhID09
IG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhCisgICAgICAgICYmIG1fbm9uSW5oZXJpdGVk
UmVzb3VyY2VEYXRhID09IG90aGVyLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhCisgICAgICAg
ICYmIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncworICAgICAgICAm
JiBtX25vbkluaGVyaXRlZEZsYWdzID09IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3M7CiB9CiAK
LWJvb2wgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0
eWxlKiBvdGhlcikgY29uc3QKK2Jvb2wgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRlZE5vdEVxdWFs
KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsbCAh
PSBvdGhlci0+ZmlsbAotICAgICAgICB8fCBzdHJva2UgIT0gb3RoZXItPnN0cm9rZQotICAgICAg
ICB8fCB0ZXh0ICE9IG90aGVyLT50ZXh0Ci0gICAgICAgIHx8IGluaGVyaXRlZFJlc291cmNlcyAh
PSBvdGhlci0+aW5oZXJpdGVkUmVzb3VyY2VzCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxh
Z3MgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3M7CisgICAgcmV0dXJuIG1fZmlsbERhdGEg
IT0gb3RoZXIubV9maWxsRGF0YQorICAgICAgICB8fCBtX3N0cm9rZURhdGEgIT0gb3RoZXIubV9z
dHJva2VEYXRhCisgICAgICAgIHx8IG1fdGV4dERhdGEgIT0gb3RoZXIubV90ZXh0RGF0YQorICAg
ICAgICB8fCBtX2luaGVyaXRlZFJlc291cmNlRGF0YSAhPSBvdGhlci5tX2luaGVyaXRlZFJlc291
cmNlRGF0YQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzICE9IG90aGVyLm1faW5oZXJpdGVk
RmxhZ3M7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFNWR1Jl
bmRlclN0eWxlKiBzdmdJbmhlcml0UGFyZW50KQordm9pZCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJp
dEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogewotICAgIGlmICghc3ZnSW5oZXJp
dFBhcmVudCkKLSAgICAgICAgcmV0dXJuOworICAgIG1fZmlsbERhdGEgPSBvdGhlci5tX2ZpbGxE
YXRhOworICAgIG1fc3Ryb2tlRGF0YSA9IG90aGVyLm1fc3Ryb2tlRGF0YTsKKyAgICBtX3RleHRE
YXRhID0gb3RoZXIubV90ZXh0RGF0YTsKKyAgICBtX2luaGVyaXRlZFJlc291cmNlRGF0YSA9IG90
aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogCi0gICAgZmlsbCA9IHN2Z0luaGVyaXRQYXJl
bnQtPmZpbGw7Ci0gICAgc3Ryb2tlID0gc3ZnSW5oZXJpdFBhcmVudC0+c3Ryb2tlOwotICAgIHRl
eHQgPSBzdmdJbmhlcml0UGFyZW50LT50ZXh0OwotICAgIGluaGVyaXRlZFJlc291cmNlcyA9IHN2
Z0luaGVyaXRQYXJlbnQtPmluaGVyaXRlZFJlc291cmNlczsKLQotICAgIHN2Z19pbmhlcml0ZWRf
ZmxhZ3MgPSBzdmdJbmhlcml0UGFyZW50LT5zdmdfaW5oZXJpdGVkX2ZsYWdzOworICAgIG1faW5o
ZXJpdGVkRmxhZ3MgPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzOwogfQogCi12b2lkIFNWR1JlbmRl
clN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIp
Cit2b2lkIFNWR1JlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5k
ZXJTdHlsZSYgb3RoZXIpCiB7Ci0gICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncyA9IG90aGVyLT5z
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzOwotICAgIHN0b3BzID0gb3RoZXItPnN0b3BzOwotICAgIG1p
c2MgPSBvdGhlci0+bWlzYzsKLSAgICBzaGFkb3dTVkcgPSBvdGhlci0+c2hhZG93U1ZHOwotICAg
IGxheW91dCA9IG90aGVyLT5sYXlvdXQ7Ci0gICAgcmVzb3VyY2VzID0gb3RoZXItPnJlc291cmNl
czsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzID0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFnczsK
KyAgICBtX3N0b3BEYXRhID0gb3RoZXIubV9zdG9wRGF0YTsKKyAgICBtX21pc2NEYXRhID0gb3Ro
ZXIubV9taXNjRGF0YTsKKyAgICBtX3NoYWRvd0RhdGEgPSBvdGhlci5tX3NoYWRvd0RhdGE7Cisg
ICAgbV9sYXlvdXREYXRhID0gb3RoZXIubV9sYXlvdXREYXRhOworICAgIG1fbm9uSW5oZXJpdGVk
UmVzb3VyY2VEYXRhID0gb3RoZXIubV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGE7CiB9CiAKIFZl
Y3RvcjxQYWludFR5cGUsIDM+IFNWR1JlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRPcmRl
cigpIGNvbnN0CkBAIC0xODgsMTA0ICsxODUsMTA0IEBAIFZlY3RvcjxQYWludFR5cGUsIDM+IFNW
R1JlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRPcmRlcigpIGNvbnN0CiAgICAgcmV0dXJu
IHBhaW50T3JkZXI7CiB9CiAKLVN0eWxlRGlmZmVyZW5jZSBTVkdSZW5kZXJTdHlsZTo6ZGlmZihj
b25zdCBTVkdSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CitTdHlsZURpZmZlcmVuY2UgU1ZHUmVu
ZGVyU3R5bGU6OmRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewogICAg
IC8vIE5PVEU6IEFsbCBjb21wYXJpc2lvbnMgdGhhdCBtYXkgcmV0dXJuIFN0eWxlRGlmZmVyZW5j
ZUxheW91dCBoYXZlIHRvIGdvIGJlZm9yZSB0aG9zZSB3aG8gcmV0dXJuIFN0eWxlRGlmZmVyZW5j
ZVJlcGFpbnQKIAogICAgIC8vIElmIGtlcm5pbmcgY2hhbmdlcywgd2UgbmVlZCBhIHJlbGF5b3V0
LCB0byBmb3JjZSBTVkdDaGFyYWN0ZXJEYXRhIHRvIGJlIHJlY2FsY3VsYXRlZCBpbiB0aGUgU1ZH
Um9vdElubGluZUJveC4KLSAgICBpZiAodGV4dCAhPSBvdGhlci0+dGV4dCkKKyAgICBpZiAobV90
ZXh0RGF0YSAhPSBvdGhlci5tX3RleHREYXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJl
bmNlTGF5b3V0OwogCiAgICAgLy8gSWYgcmVzb3VyY2VzIGNoYW5nZSwgd2UgbmVlZCBhIHJlbGF5
b3V0LCBhcyB0aGUgcHJlc2VuY2Ugb2YgcmVzb3VyY2VzIGluZmx1ZW5jZXMgdGhlIHJlcGFpbnQg
cmVjdC4KLSAgICBpZiAocmVzb3VyY2VzICE9IG90aGVyLT5yZXNvdXJjZXMpCisgICAgaWYgKG1f
bm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VE
YXRhKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gSWYg
bWFya2VycyBjaGFuZ2UsIHdlIG5lZWQgYSByZWxheW91dCwgYXMgbWFya2VyIGJvdW5kYXJpZXMg
YXJlIGNhY2hlZCBpbiBSZW5kZXJTVkdQYXRoLgotICAgIGlmIChpbmhlcml0ZWRSZXNvdXJjZXMg
IT0gb3RoZXItPmluaGVyaXRlZFJlc291cmNlcykKKyAgICBpZiAobV9pbmhlcml0ZWRSZXNvdXJj
ZURhdGEgIT0gb3RoZXIubV9pbmhlcml0ZWRSZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBT
dHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBBbGwgdGV4dCByZWxhdGVkIHByb3BlcnRp
ZXMgaW5mbHVlbmNlIGxheW91dC4KLSAgICBpZiAoc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFu
Y2hvciAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvcgotICAgICAgICB8
fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCAhPSBvdGhl
ci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwKLSAgICAg
ICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsICE9IG90
aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwKLSAgICAg
ICAgfHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSAhPSBvdGhl
ci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZQotICAgICAgICB8
fCBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgIT0gb3RoZXItPnN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZQotICAgICAgICB8fCBzdmdf
bm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgIT0gb3RoZXItPnN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCkKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFncy50
ZXh0QW5jaG9yICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvcgorICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsICE9IG90aGVyLm1f
aW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwKKyAgICAgICAgfHwgbV9p
bmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgIT0gb3RoZXIubV9pbmhlcml0
ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZSAhPSBvdGhlci5tX25vbkluaGVyaXRl
ZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lCisgICAgICAgIHx8IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSAhPSBvdGhlci5tX25vbkluaGVyaXRl
ZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmUKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxh
Z3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5j
ZUxheW91dDsKIAogICAgIC8vIFRleHQgcmVsYXRlZCBwcm9wZXJ0aWVzIGluZmx1ZW5jZSBsYXlv
dXQuCi0gICAgYm9vbCBtaXNjTm90RXF1YWwgPSBtaXNjICE9IG90aGVyLT5taXNjOwotICAgIGlm
IChtaXNjTm90RXF1YWwgJiYgbWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlICE9IG90aGVyLT5taXNj
LT5iYXNlbGluZVNoaWZ0VmFsdWUpCisgICAgYm9vbCBtaXNjTm90RXF1YWwgPSBtX21pc2NEYXRh
ICE9IG90aGVyLm1fbWlzY0RhdGE7CisgICAgaWYgKG1pc2NOb3RFcXVhbCAmJiBtX21pc2NEYXRh
LT5iYXNlbGluZVNoaWZ0VmFsdWUgIT0gb3RoZXIubV9taXNjRGF0YS0+YmFzZWxpbmVTaGlmdFZh
bHVlKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gVGhl
c2UgcHJvcGVydGllcyBhZmZlY3QgdGhlIGNhY2hlZCBzdHJva2UgYm91bmRpbmcgYm94IHJlY3Rz
LgotICAgIGlmIChzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZSAhPSBvdGhlci0+c3ZnX2lu
aGVyaXRlZF9mbGFncy5fY2FwU3R5bGUKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5f
am9pblN0eWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUpCisgICAg
aWYgKG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5j
YXBTdHlsZQorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5j
ZUxheW91dDsKIAogICAgIC8vIFNoYWRvdyBjaGFuZ2VzIHJlcXVpcmUgcmVsYXlvdXRzLCBhcyB0
aGV5IGFmZmVjdCB0aGUgcmVwYWludCByZWN0cy4KLSAgICBpZiAoc2hhZG93U1ZHICE9IG90aGVy
LT5zaGFkb3dTVkcpCisgICAgaWYgKG1fc2hhZG93RGF0YSAhPSBvdGhlci5tX3NoYWRvd0RhdGEp
CiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBUaGUgeCBv
ciB5IHByb3BlcnRpZXMgcmVxdWlyZSByZWxheW91dC4KLSAgICBpZiAobGF5b3V0ICE9IG90aGVy
LT5sYXlvdXQpCisgICAgaWYgKG1fbGF5b3V0RGF0YSAhPSBvdGhlci5tX2xheW91dERhdGEpCiAg
ICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7IAogCiAgICAgLy8gU29tZSBzdHJv
a2UgcHJvcGVydGllcywgcmVxdWlyZXMgcmVsYXlvdXRzLCBhcyB0aGUgY2FjaGVkIHN0cm9rZSBi
b3VuZGFyaWVzIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkLgotICAgIGlmIChzdHJva2UgIT0gb3Ro
ZXItPnN0cm9rZSkgewotICAgICAgICBpZiAoc3Ryb2tlLT53aWR0aCAhPSBvdGhlci0+c3Ryb2tl
LT53aWR0aAotICAgICAgICAgICAgfHwgc3Ryb2tlLT5wYWludFR5cGUgIT0gb3RoZXItPnN0cm9r
ZS0+cGFpbnRUeXBlCi0gICAgICAgICAgICB8fCBzdHJva2UtPnBhaW50Q29sb3IgIT0gb3RoZXIt
PnN0cm9rZS0+cGFpbnRDb2xvcgotICAgICAgICAgICAgfHwgc3Ryb2tlLT5wYWludFVyaSAhPSBv
dGhlci0+c3Ryb2tlLT5wYWludFVyaQotICAgICAgICAgICAgfHwgc3Ryb2tlLT5taXRlckxpbWl0
ICE9IG90aGVyLT5zdHJva2UtPm1pdGVyTGltaXQKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+ZGFz
aEFycmF5ICE9IG90aGVyLT5zdHJva2UtPmRhc2hBcnJheQotICAgICAgICAgICAgfHwgc3Ryb2tl
LT5kYXNoT2Zmc2V0ICE9IG90aGVyLT5zdHJva2UtPmRhc2hPZmZzZXQKLSAgICAgICAgICAgIHx8
IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludENvbG9yICE9IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRM
aW5rUGFpbnRDb2xvcgotICAgICAgICAgICAgfHwgc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJp
ICE9IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRVcmkKLSAgICAgICAgICAgIHx8IHN0
cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGUgIT0gb3RoZXItPnN0cm9rZS0+dmlzaXRlZExpbmtQ
YWludFR5cGUpCisgICAgaWYgKG1fc3Ryb2tlRGF0YSAhPSBvdGhlci5tX3N0cm9rZURhdGEpIHsK
KyAgICAgICAgaWYgKG1fc3Ryb2tlRGF0YS0+d2lkdGggIT0gb3RoZXIubV9zdHJva2VEYXRhLT53
aWR0aAorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT5wYWludFR5cGUgIT0gb3RoZXIubV9z
dHJva2VEYXRhLT5wYWludFR5cGUKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+cGFpbnRD
b2xvciAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnBhaW50Q29sb3IKKyAgICAgICAgICAgIHx8IG1f
c3Ryb2tlRGF0YS0+cGFpbnRVcmkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5wYWludFVyaQorICAg
ICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT5taXRlckxpbWl0ICE9IG90aGVyLm1fc3Ryb2tlRGF0
YS0+bWl0ZXJMaW1pdAorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT5kYXNoQXJyYXkgIT0g
b3RoZXIubV9zdHJva2VEYXRhLT5kYXNoQXJyYXkKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0
YS0+ZGFzaE9mZnNldCAhPSBvdGhlci5tX3N0cm9rZURhdGEtPmRhc2hPZmZzZXQKKyAgICAgICAg
ICAgIHx8IG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yICE9IG90aGVyLm1fc3Ry
b2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yCisgICAgICAgICAgICB8fCBtX3N0cm9rZURh
dGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgIT0gb3RoZXIubV9zdHJva2VEYXRhLT52aXNpdGVkTGlu
a1BhaW50VXJpCisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRU
eXBlICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUpCiAgICAgICAg
ICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgICAgIC8vIE9ubHkgdGhl
IHN0cm9rZS1vcGFjaXR5IGNhc2UgcmVtYWlucywgd2hlcmUgd2Ugb25seSBuZWVkIGEgcmVwYWlu
dC4KLSAgICAgICAgQVNTRVJUKHN0cm9rZS0+b3BhY2l0eSAhPSBvdGhlci0+c3Ryb2tlLT5vcGFj
aXR5KTsKKyAgICAgICAgQVNTRVJUKG1fc3Ryb2tlRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX3N0
cm9rZURhdGEtPm9wYWNpdHkpOwogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWlu
dDsKICAgICB9CiAKICAgICAvLyB2ZWN0b3ItZWZmZWN0IGNoYW5nZXMgcmVxdWlyZSBhIHJlLWxh
eW91dC4KLSAgICBpZiAoc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZlY3QgIT0g
b3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0KQorICAgIGlmICht
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCAhPSBvdGhlci5tX25vbklu
aGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCkKICAgICAgICAgcmV0dXJuIFN0eWxl
RGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIE5PVEU6IEFsbCBjb21wYXJpc2lvbnMgYmVsb3cg
bWF5IG9ubHkgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQKIAogICAgIC8vIFBhaW50aW5n
IHJlbGF0ZWQgcHJvcGVydGllcyBvbmx5IG5lZWQgcmVwYWludHMuIAogICAgIGlmIChtaXNjTm90
RXF1YWwpIHsKLSAgICAgICAgaWYgKG1pc2MtPmZsb29kQ29sb3IgIT0gb3RoZXItPm1pc2MtPmZs
b29kQ29sb3IKLSAgICAgICAgICAgIHx8IG1pc2MtPmZsb29kT3BhY2l0eSAhPSBvdGhlci0+bWlz
Yy0+Zmxvb2RPcGFjaXR5Ci0gICAgICAgICAgICB8fCBtaXNjLT5saWdodGluZ0NvbG9yICE9IG90
aGVyLT5taXNjLT5saWdodGluZ0NvbG9yKQorICAgICAgICBpZiAobV9taXNjRGF0YS0+Zmxvb2RD
b2xvciAhPSBvdGhlci5tX21pc2NEYXRhLT5mbG9vZENvbG9yCisgICAgICAgICAgICB8fCBtX21p
c2NEYXRhLT5mbG9vZE9wYWNpdHkgIT0gb3RoZXIubV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5Cisg
ICAgICAgICAgICB8fCBtX21pc2NEYXRhLT5saWdodGluZ0NvbG9yICE9IG90aGVyLm1fbWlzY0Rh
dGEtPmxpZ2h0aW5nQ29sb3IpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVw
YWludDsKICAgICB9CiAKLSAgICAvLyBJZiBmaWxsIGNoYW5nZXMsIHdlIGp1c3QgbmVlZCB0byBy
ZXBhaW50LiBGaWxsIGJvdW5kYXJpZXMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5IHRoaXMsIG9ubHkg
YnkgdGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZHUGF0aCBjb250YWlucy4KLSAgICBpZiAoZmlsbC0+
cGFpbnRUeXBlICE9IG90aGVyLT5maWxsLT5wYWludFR5cGUgfHwgZmlsbC0+cGFpbnRDb2xvciAh
PSBvdGhlci0+ZmlsbC0+cGFpbnRDb2xvcgotICAgICAgICB8fCBmaWxsLT5wYWludFVyaSAhPSBv
dGhlci0+ZmlsbC0+cGFpbnRVcmkgfHwgZmlsbC0+b3BhY2l0eSAhPSBvdGhlci0+ZmlsbC0+b3Bh
Y2l0eSkKKyAgICAvLyBJZiBmaWxsIGRhdGEgY2hhbmdlcywgd2UganVzdCBuZWVkIHRvIHJlcGFp
bnQuIEZpbGwgYm91bmRhcmllcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgdGhpcywgb25seSBieSB0
aGUgUGF0aCwgdGhhdCBSZW5kZXJTVkdQYXRoIGNvbnRhaW5zLgorICAgIGlmIChtX2ZpbGxEYXRh
LT5wYWludFR5cGUgIT0gb3RoZXIubV9maWxsRGF0YS0+cGFpbnRUeXBlIHx8IG1fZmlsbERhdGEt
PnBhaW50Q29sb3IgIT0gb3RoZXIubV9maWxsRGF0YS0+cGFpbnRDb2xvcgorICAgICAgICB8fCBt
X2ZpbGxEYXRhLT5wYWludFVyaSAhPSBvdGhlci5tX2ZpbGxEYXRhLT5wYWludFVyaSB8fCBtX2Zp
bGxEYXRhLT5vcGFjaXR5ICE9IG90aGVyLm1fZmlsbERhdGEtPm9wYWNpdHkpCiAgICAgICAgIHJl
dHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCiAgICAgLy8gSWYgZ3JhZGllbnQgc3RvcHMg
Y2hhbmdlLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYWludC4gU3R5bGUgdXBkYXRlcyBhcmUgYWxyZWFk
eSBoYW5kbGVkIHRocm91Z2ggUmVuZGVyU1ZHR3JhZGllbnRTVG9wLgotICAgIGlmIChzdG9wcyAh
PSBvdGhlci0+c3RvcHMpCisgICAgaWYgKG1fc3RvcERhdGEgIT0gb3RoZXIubV9zdG9wRGF0YSkK
ICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKICAgICAvLyBDaGFuZ2Vz
IG9mIHRoZXNlIGZsYWdzIG9ubHkgY2F1c2UgcmVwYWludHMuCi0gICAgaWYgKHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9j
b2xvclJlbmRlcmluZwotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRl
cmluZyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcKLSAgICAg
ICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgIT0gb3RoZXItPnN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2NsaXBSdWxlCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxS
dWxlICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxsUnVsZQotICAgICAgICB8fCBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gIT0gb3RoZXItPnN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbgotICAgICAgICB8fCBzdmdfaW5oZXJpdGVk
X2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzICE9IG90aGVyLT5zdmdfaW5oZXJpdGVk
X2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKQorICAgIGlmIChtX2luaGVyaXRlZEZs
YWdzLmNvbG9yUmVuZGVyaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY29sb3JSZW5kZXJp
bmcKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxh
Z3MuY2xpcFJ1bGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZQorICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZmls
bFJ1bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb24gIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb24KKyAgICAgICAgfHwgbV9p
bmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycykKICAgICAgICAgcmV0dXJuIFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnQ7CiAKLSAgICBpZiAoc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1
ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVy
ZWRSZW5kZXJpbmcpCisgICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVy
ZWRSZW5kZXJpbmcgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJl
ZFJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKLSAg
ICBpZiAoc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlICE9IG90aGVyLT5zdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUpCisgICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZmxhZ0JpdHMubWFza1R5cGUgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5t
YXNrVHlwZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKICAgICBy
ZXR1cm4gU3R5bGVEaWZmZXJlbmNlRXF1YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IDM5MTk3NWE1OGI5NTBlN2Q2NzRiNjhhN2Jm
YTY1M2E3Zjc4NzQxNmYuLjY2OWEyYzA5ODNlMmEyYjI0ZGNhZmU4NTczMTdiOTI0YjE0NDgxZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2IEFwcGxlIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAo
QykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IApAQCAtMjMsNyArMjMsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtMzIsMjUgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFJlbmRlck9i
amVjdDsKLQotY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdSZW5k
ZXJTdHlsZT4geyAgICAKK2NsYXNzIFNWR1JlbmRlclN0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8
U1ZHUmVuZGVyU3R5bGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1JlbmRlclN0eWxl
PiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsKICAgICBzdGF0aWMgUmVmPFNWR1JlbmRlclN0eWxlPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1JlbmRlclN0eWxlKTsgfQogICAgIFJl
ZjxTVkdSZW5kZXJTdHlsZT4gY29weSgpIGNvbnN0OwogICAgIH5TVkdSZW5kZXJTdHlsZSgpOwog
Ci0gICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0
OwotICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqKTsKLSAgICB2b2lk
IGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlKik7CisgICAgYm9vbCBp
bmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZvaWQg
aW5oZXJpdEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUmKTsKKyAgICB2b2lkIGNvcHlOb25Jbmhl
cml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7CiAKLSAgICBTdHlsZURpZmZlcmVuY2Ug
ZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIFN0eWxlRGlmZmVyZW5jZSBk
aWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U1ZHUmVuZGVyU3R5bGUmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgLy8gSW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCB0
aGUgcHJvcGVydGllcwogICAgIHN0YXRpYyBFQWxpZ25tZW50QmFzZWxpbmUgaW5pdGlhbEFsaWdu
bWVudEJhc2VsaW5lKCkgeyByZXR1cm4gQUJfQVVUTzsgfQpAQCAtODQsNyArNzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxGbG9vZE9wYWNpdHkoKSB7IHJldHVybiAxOyB9
CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoMCwg
MCwgMCk7IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbExpZ2h0aW5nQ29sb3IoKSB7IHJldHVy
biBDb2xvcigyNTUsIDI1NSwgMjU1KTsgfQotICAgIHN0YXRpYyBTaGFkb3dEYXRhKiBpbml0aWFs
U2hhZG93KCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBTaGFkb3dEYXRhKiBpbml0aWFsU2hh
ZG93KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbENsaXBw
ZXJSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0
aWFsTWFza2VyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJp
bmcgaW5pdGlhbE1hcmtlclN0YXJ0UmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQpAQCAt
OTIsMjg3ICs4NywxMjIgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtl
ckVuZFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgRU1hc2tUeXBl
IGluaXRpYWxNYXNrVHlwZSgpIHsgcmV0dXJuIE1UX0xVTUlOQU5DRTsgfQogICAgIHN0YXRpYyBQ
YWludE9yZGVyIGluaXRpYWxQYWludE9yZGVyKCkgeyByZXR1cm4gUGFpbnRPcmRlck5vcm1hbDsg
fQotCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUo
KQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgICAgICBsZW5ndGgu
bmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCAwKTsKLSAgICAgICAgcmV0
dXJuIGxlbmd0aDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEtl
cm5pbmcoKQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgICAgICBs
ZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCAwKTsKLSAgICAg
ICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRp
YWxCYXNlbGluZVNoaWZ0VmFsdWUoKTsKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlh
bEtlcm5pbmcoKTsKIAogICAgIC8vIFNWRyBDU1MgUHJvcGVydHkgc2V0dGVycwotICAgIHZvaWQg
c2V0QWxpZ25tZW50QmFzZWxpbmUoRUFsaWdubWVudEJhc2VsaW5lIHZhbCkgeyBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5lID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRE
b21pbmFudEJhc2VsaW5lKEVEb21pbmFudEJhc2VsaW5lIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSB2YWw7IH0KLSAgICB2b2lkIHNldEJhc2VsaW5l
U2hpZnQoRUJhc2VsaW5lU2hpZnQgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFz
ZWxpbmVTaGlmdCA9IHZhbDsgfQotICAgIHZvaWQgc2V0VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZl
Y3QgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ID0gdmFsOyB9
Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhFQnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7
IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyA9IHZhbDsgfQotICAg
IHZvaWQgc2V0Q2FwU3R5bGUoTGluZUNhcCB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2Fw
U3R5bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldENsaXBSdWxlKFdpbmRSdWxlIHZhbCkgeyBzdmdf
aW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JJbnRl
cnBvbGF0aW9uKEVDb2xvckludGVycG9sYXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2NvbG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVycyhFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdz
Ll9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDb2xvclJl
bmRlcmluZyhFQ29sb3JSZW5kZXJpbmcgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9y
UmVuZGVyaW5nID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSB2YWwpIHsg
c3ZnX2luaGVyaXRlZF9mbGFncy5fZmlsbFJ1bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldEpvaW5T
dHlsZShMaW5lSm9pbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlID0gdmFs
OyB9Ci0gICAgdm9pZCBzZXRTaGFwZVJlbmRlcmluZyhFU2hhcGVSZW5kZXJpbmcgdmFsKSB7IHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRU
ZXh0QW5jaG9yKEVUZXh0QW5jaG9yIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl90ZXh0QW5j
aG9yID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbChFR2x5
cGhPcmllbnRhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlv
bkhvcml6b250YWwgPSB2YWw7IH0KLSAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25WZXJ0aWNh
bChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRNYXNrVHlwZShFTWFza1R5cGUg
dmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSA9IHZhbDsgfQotICAgIHZv
aWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLnBh
aW50T3JkZXIgPSB2YWw7IH0KLSAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0aCYgb2JqKQotICAg
IHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT5jeCA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0
LmFjY2VzcygpLT5jeCA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRDeShjb25zdCBMZW5ndGgm
IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+Y3kgPT0gb2JqKSkKLSAgICAgICAg
ICAgIGxheW91dC5hY2Nlc3MoKS0+Y3kgPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0Uihjb25z
dCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+ciA9PSBvYmopKQot
ICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5yID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNl
dFJ4KGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobGF5b3V0LT5yeCA9
PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT5yeCA9IG9iajsKLSAgICB9Ci0g
ICAgdm9pZCBzZXRSeShjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxh
eW91dC0+cnkgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+cnkgPSBvYmo7
Ci0gICAgfQotICAgIHZvaWQgc2V0WChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAg
IGlmICghKGxheW91dC0+eCA9PSBvYmopKQotICAgICAgICAgICAgbGF5b3V0LmFjY2VzcygpLT54
ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFkoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewot
ICAgICAgICBpZiAoIShsYXlvdXQtPnkgPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nl
c3MoKS0+eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IG9i
aikKLSAgICB7Ci0gICAgICAgIGlmICghKGZpbGwtPm9wYWNpdHkgPT0gb2JqKSkKLSAgICAgICAg
ICAgIGZpbGwuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRG
aWxsUGFpbnQoU1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zp
c2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIGlmIChhcHBseVRvUmVndWxh
clN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT5wYWludFR5cGUgPT0gdHlwZSkpCi0g
ICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+cGFpbnRUeXBlID0gdHlwZTsKLSAgICAgICAg
ICAgIGlmICghKGZpbGwtPnBhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAgICAgIGZp
bGwuYWNjZXNzKCktPnBhaW50Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIGlmICghKGZpbGwt
PnBhaW50VXJpID09IHVyaSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+cGFpbnRV
cmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxl
KSB7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT52aXNpdGVkTGlua1BhaW50VHlwZSA9PSB0eXBl
KSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VHlwZSA9
IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShmaWxsLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0g
Y29sb3IpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRD
b2xvciA9IGNvbG9yOwotICAgICAgICAgICAgaWYgKCEoZmlsbC0+dmlzaXRlZExpbmtQYWludFVy
aSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFp
bnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZU9wYWNp
dHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3Ryb2tlLT5vcGFjaXR5ID09IG9i
aikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXRTdHJva2VQYWludChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlID0gdHJ1
ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKQotICAgIHsKLSAgICAgICAg
aWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKLSAgICAgICAgICAgIGlmICghKHN0cm9rZS0+cGFp
bnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRU
eXBlID0gdHlwZTsKLSAgICAgICAgICAgIGlmICghKHN0cm9rZS0+cGFpbnRDb2xvciA9PSBjb2xv
cikpCi0gICAgICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5wYWludENvbG9yID0gY29sb3I7
Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50VXJpID09IHVyaSkpCi0gICAgICAgICAg
ICAgICAgc3Ryb2tlLmFjY2VzcygpLT5wYWludFVyaSA9IHVyaTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpIHsKLSAgICAgICAgICAgIGlmICghKHN0cm9r
ZS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCi0gICAgICAgICAgICAgICAgc3Ryb2tl
LmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAo
IShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9PSBjb2xvcikpCi0gICAgICAgICAgICAg
ICAgc3Ryb2tlLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xvcjsKLSAgICAg
ICAgICAgIGlmICghKHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVyaSA9PSB1cmkpKQotICAgICAg
ICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFVyaSA9IHVyaTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlRGFzaEFycmF5KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+ZGFz
aEFycmF5ID09IG9iaikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPmRhc2hBcnJheSA9
IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQgb2JqKQot
ICAgIHsKLSAgICAgICAgaWYgKCEoc3Ryb2tlLT5taXRlckxpbWl0ID09IG9iaikpCi0gICAgICAg
ICAgICBzdHJva2UuYWNjZXNzKCktPm1pdGVyTGltaXQgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRTdHJva2VXaWR0aChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICgh
KHN0cm9rZS0+d2lkdGggPT0gb2JqKSkKLSAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+d2lk
dGggPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VEYXNoT2Zmc2V0KGNvbnN0IExl
bmd0aCYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3Ryb2tlLT5kYXNoT2Zmc2V0ID09IG9i
aikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPmRhc2hPZmZzZXQgPSBvYmo7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBvYmopCi0gICAg
ewotICAgICAgICBpZiAoISh0ZXh0LT5rZXJuaW5nID09IG9iaikpCi0gICAgICAgICAgICB0ZXh0
LmFjY2VzcygpLT5rZXJuaW5nID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3RvcE9wYWNp
dHkoZmxvYXQgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RvcHMtPm9wYWNpdHkgPT0gb2Jq
KSkKLSAgICAgICAgICAgIHN0b3BzLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0U3RvcENvbG9yKGNvbnN0IENvbG9yJiBvYmopCi0gICAgewotICAgICAgICBp
ZiAoIShzdG9wcy0+Y29sb3IgPT0gb2JqKSkKLSAgICAgICAgICAgIHN0b3BzLmFjY2VzcygpLT5j
b2xvciA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCBvYmop
Ci0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5mbG9vZE9wYWNpdHkgPT0gb2JqKSkKLSAgICAg
ICAgICAgIG1pc2MuYWNjZXNzKCktPmZsb29kT3BhY2l0eSA9IG9iajsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICgh
KG1pc2MtPmZsb29kQ29sb3IgPT0gb2JqKSkKLSAgICAgICAgICAgIG1pc2MuYWNjZXNzKCktPmZs
b29kQ29sb3IgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0
IENvbG9yJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5saWdodGluZ0NvbG9yID09
IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5saWdodGluZ0NvbG9yID0gb2JqOwot
ICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdFZhbHVlKGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShtaXNjLT5iYXNlbGluZVNoaWZ0VmFsdWUg
PT0gb2JqKSkKLSAgICAgICAgICAgIG1pc2MuYWNjZXNzKCktPmJhc2VsaW5lU2hpZnRWYWx1ZSA9
IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93
RGF0YT4gb2JqKSB7IHNoYWRvd1NWRy5hY2Nlc3MoKS0+c2hhZG93ID0gV1RGTW92ZShvYmopOyB9
CisgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShFQWxpZ25tZW50QmFzZWxpbmUgdmFsKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgPSB2YWw7IH0K
KyAgICB2b2lkIHNldERvbWluYW50QmFzZWxpbmUoRURvbWluYW50QmFzZWxpbmUgdmFsKSB7IG1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IHZhbDsgfQorICAg
IHZvaWQgc2V0QmFzZWxpbmVTaGlmdChFQmFzZWxpbmVTaGlmdCB2YWwpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ID0gdmFsOyB9CisgICAgdm9pZCBzZXRWZWN0
b3JFZmZlY3QoRVZlY3RvckVmZmVjdCB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy52ZWN0b3JFZmZlY3QgPSB2YWw7IH0KKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmVuZGVyaW5nKEVC
dWZmZXJlZFJlbmRlcmluZyB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5idWZm
ZXJlZFJlbmRlcmluZyA9IHZhbDsgfQorICAgIHZvaWQgc2V0Q2FwU3R5bGUoTGluZUNhcCB2YWwp
IHsgbV9pbmhlcml0ZWRGbGFncy5jYXBTdHlsZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0Q2xpcFJ1
bGUoV2luZFJ1bGUgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSB2YWw7IH0KKyAg
ICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBt
X2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQorICAgIHZvaWQgc2V0
Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyhFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2lu
aGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPSB2YWw7IH0KKyAgICB2b2lk
IHNldENvbG9yUmVuZGVyaW5nKEVDb2xvclJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvclJlbmRlcmluZyA9IHZhbDsgfQorICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUg
dmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldEpv
aW5TdHlsZShMaW5lSm9pbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5qb2luU3R5bGUgPSB2YWw7
IH0KKyAgICB2b2lkIHNldFNoYXBlUmVuZGVyaW5nKEVTaGFwZVJlbmRlcmluZyB2YWwpIHsgbV9p
bmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyA9IHZhbDsgfQorICAgIHZvaWQgc2V0VGV4dEFu
Y2hvcihFVGV4dEFuY2hvciB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yID0gdmFs
OyB9CisgICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbChFR2x5cGhPcmllbnRh
dGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9
IHZhbDsgfQorICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKEVHbHlwaE9yaWVu
dGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9
IHZhbDsgfQorICAgIHZvaWQgc2V0TWFza1R5cGUoRU1hc2tUeXBlIHZhbCkgeyBtX25vbkluaGVy
aXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gdmFsOyB9CisgICAgdm9pZCBzZXRQYWludE9y
ZGVyKFBhaW50T3JkZXIgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MucGFpbnRPcmRlciA9IHZhbDsg
fQorICAgIHZvaWQgc2V0Q3goY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRDeShjb25zdCBM
ZW5ndGgmKTsKKyAgICB2b2lkIHNldFIoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRSeChj
b25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFJ5KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQg
c2V0WChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFkoY29uc3QgTGVuZ3RoJik7CisgICAg
dm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRGaWxsUGFpbnQoU1ZHUGFp
bnRUeXBlLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1
bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpOwor
ICAgIHZvaWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRTdHJva2VQYWlu
dChTVkdQYWludFR5cGUsIGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBw
bHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBm
YWxzZSk7CisKKyAgICB2b2lkIHNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVu
Z3RoVmFsdWU+Jik7CisgICAgdm9pZCBzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0KTsKKyAgICB2
b2lkIHNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0U3Ryb2tlRGFz
aE9mZnNldChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldEtlcm5pbmcoY29uc3QgU1ZHTGVu
Z3RoVmFsdWUmKTsKKyAgICB2b2lkIHNldFN0b3BPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNl
dFN0b3BDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0
KTsKKyAgICB2b2lkIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldExp
Z2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnRWYWx1
ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYpOworCisgICAgdm9pZCBzZXRTaGFkb3coc3RkOjp1bmlx
dWVfcHRyPFNoYWRvd0RhdGE+JiYgZGF0YSkgeyBtX3NoYWRvd0RhdGEuYWNjZXNzKCkuc2hhZG93
ID0gV1RGTW92ZShkYXRhKTsgfQogCiAgICAgLy8gU2V0dGVycyBmb3Igbm9uLWluaGVyaXRlZCBy
ZXNvdXJjZXMKLSAgICB2b2lkIHNldENsaXBwZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikK
LSAgICB7Ci0gICAgICAgIGlmICghKHJlc291cmNlcy0+Y2xpcHBlciA9PSBvYmopKQotICAgICAg
ICAgICAgcmVzb3VyY2VzLmFjY2VzcygpLT5jbGlwcGVyID0gb2JqOwotICAgIH0KLQotICAgIHZv
aWQgc2V0TWFza2VyUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmopCi0gICAgewotICAgICAgICBp
ZiAoIShyZXNvdXJjZXMtPm1hc2tlciA9PSBvYmopKQotICAgICAgICAgICAgcmVzb3VyY2VzLmFj
Y2VzcygpLT5tYXNrZXIgPSBvYmo7Ci0gICAgfQorICAgIHZvaWQgc2V0Q2xpcHBlclJlc291cmNl
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0TWFza2VyUmVzb3VyY2UoY29uc3QgU3RyaW5n
Jik7CiAKICAgICAvLyBTZXR0ZXJzIGZvciBpbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgdm9pZCBz
ZXRNYXJrZXJTdGFydFJlc291cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEoaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJTdGFydCA9PSBvYmopKQotICAgICAgICAg
ICAgaW5oZXJpdGVkUmVzb3VyY2VzLmFjY2VzcygpLT5tYXJrZXJTdGFydCA9IG9iajsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldE1hcmtlck1pZFJlc291cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAg
IHsKLSAgICAgICAgaWYgKCEoaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJNaWQgPT0gb2JqKSkK
LSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2VyTWlkID0gb2Jq
OwotICAgIH0KLQotICAgIHZvaWQgc2V0TWFya2VyRW5kUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBv
YmopCi0gICAgewotICAgICAgICBpZiAoIShpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtlckVuZCA9
PSBvYmopKQotICAgICAgICAgICAgaW5oZXJpdGVkUmVzb3VyY2VzLmFjY2VzcygpLT5tYXJrZXJF
bmQgPSBvYmo7Ci0gICAgfQorICAgIHZvaWQgc2V0TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHNldE1hcmtlck1pZFJlc291cmNlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0TWFya2VyRW5kUmVzb3VyY2UoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBS
ZWFkIGFjY2Vzc29ycyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCi0gICAgRUFsaWdubWVudEJhc2Vs
aW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVBbGlnbm1lbnRCYXNlbGlu
ZSkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZTsgfQotICAgIEVE
b21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRURvbWlu
YW50QmFzZWxpbmUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZTsg
fQotICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQoKSBjb25zdCB7IHJldHVybiAoRUJh
c2VsaW5lU2hpZnQpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdDsgfQot
ICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gKEVWZWN0b3JF
ZmZlY3QpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0OyB9Ci0gICAgRUJ1
ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVCdWZm
ZXJlZFJlbmRlcmluZykgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5n
OyB9Ci0gICAgTGluZUNhcCBjYXBTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lQ2FwKSBzdmdf
aW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZTsgfQotICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29u
c3QgeyByZXR1cm4gKFdpbmRSdWxlKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZTsgfQot
ICAgIEVDb2xvckludGVycG9sYXRpb24gY29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gKEVDb2xvckludGVycG9sYXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJw
b2xhdGlvbjsgfQotICAgIEVDb2xvckludGVycG9sYXRpb24gY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBzdmdfaW5oZXJpdGVk
X2ZsYWdzLl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9Ci0gICAgRUNvbG9yUmVuZGVyaW5n
IGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmluZykgc3ZnX2lu
aGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmc7IH0KLSAgICBXaW5kUnVsZSBmaWxsUnVsZSgp
IGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2luaGVyaXRlZF9mbGFncy5fZmlsbFJ1bGU7
IH0KLSAgICBMaW5lSm9pbiBqb2luU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUpvaW4pIHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZTsgfQotICAgIEVTaGFwZVJlbmRlcmluZyBzaGFw
ZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFU2hhcGVSZW5kZXJpbmcpIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nOyB9Ci0gICAgRVRleHRBbmNob3IgdGV4dEFuY2hvcigp
IGNvbnN0IHsgcmV0dXJuIChFVGV4dEFuY2hvcikgc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFu
Y2hvcjsgfQotICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
KCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdz
Ll9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDsgfQotICAgIEVHbHlwaE9yaWVudGF0aW9uIGds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlv
bikgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOyB9Ci0gICAg
ZmxvYXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBmaWxsLT5vcGFjaXR5OyB9Ci0gICAg
Y29uc3QgU1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+
cGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxQYWludENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gZmlsbC0+cGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgZmlsbFBhaW50VXJp
KCkgY29uc3QgeyByZXR1cm4gZmlsbC0+cGFpbnRVcmk7IH0gICAgCi0gICAgZmxvYXQgc3Ryb2tl
T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+b3BhY2l0eTsgfQotICAgIGNvbnN0IFNW
R1BhaW50VHlwZSYgc3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5wYWlu
dFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN0cm9rZS0+cGFpbnRDb2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgc3Ryb2tlUGFpbnRV
cmkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50VXJpOyB9Ci0gICAgVmVjdG9yPFNWR0xl
bmd0aFZhbHVlPiBzdHJva2VEYXNoQXJyYXkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPmRhc2hB
cnJheTsgfQotICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBzdHJv
a2UtPm1pdGVyTGltaXQ7IH0KLSAgICBjb25zdCBMZW5ndGgmIHN0cm9rZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc3Ryb2tlLT53aWR0aDsgfQotICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+ZGFzaE9mZnNldDsgfQotICAgIFNWR0xlbmd0
aFZhbHVlIGtlcm5pbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0LT5rZXJuaW5nOyB9Ci0gICAgZmxv
YXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdG9wcy0+b3BhY2l0eTsgfQotICAgIGNv
bnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KLSAg
ICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7
IH0KLSAgICBjb25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmZs
b29kQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1pc2MtPmxpZ2h0aW5nQ29sb3I7IH0KLSAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNo
aWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtaXNjLT5iYXNlbGluZVNoaWZ0VmFsdWU7IH0KLSAg
ICBTaGFkb3dEYXRhKiBzaGFkb3coKSBjb25zdCB7IHJldHVybiBzaGFkb3dTVkctPnNoYWRvdy5n
ZXQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgY3goKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPmN4
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjeSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+Y3k7IH0K
LSAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPnI7IH0KLSAgICBj
b25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5yeDsgfQotICAgIGNvbnN0
IExlbmd0aCYgcnkoKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPnJ5OyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT54OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB5
KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT55OyB9Ci0gICAgU3RyaW5nIGNsaXBwZXJSZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xpcHBlcjsgfQotICAgIFN0cmluZyBtYXNr
ZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+bWFza2VyOyB9Ci0gICAgU3Ry
aW5nIG1hcmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRSZXNvdXJj
ZXMtPm1hcmtlclN0YXJ0OyB9Ci0gICAgU3RyaW5nIG1hcmtlck1pZFJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJNaWQ7IH0KLSAgICBTdHJpbmcgbWFy
a2VyRW5kUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRSZXNvdXJjZXMtPm1hcmtl
ckVuZDsgfQotICAgIEVNYXNrVHlwZSBtYXNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIChFTWFza1R5
cGUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZTsgfQotICAgIFBhaW50T3JkZXIg
cGFpbnRPcmRlcigpIGNvbnN0IHsgcmV0dXJuIChQYWludE9yZGVyKSBzdmdfaW5oZXJpdGVkX2Zs
YWdzLnBhaW50T3JkZXI7IH0KKyAgICBFQWxpZ25tZW50QmFzZWxpbmUgYWxpZ25tZW50QmFzZWxp
bmUoKSBjb25zdCB7IHJldHVybiAoRUFsaWdubWVudEJhc2VsaW5lKSBtX25vbkluaGVyaXRlZEZs
YWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lOyB9CisgICAgRURvbWluYW50QmFzZWxpbmUg
ZG9taW5hbnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChFRG9taW5hbnRCYXNlbGluZSkgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lOyB9CisgICAgRUJhc2Vs
aW5lU2hpZnQgYmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJuIChFQmFzZWxpbmVTaGlmdCkg
bV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0OyB9CisgICAgRVZlY3Rv
ckVmZmVjdCB2ZWN0b3JFZmZlY3QoKSBjb25zdCB7IHJldHVybiAoRVZlY3RvckVmZmVjdCkgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3Q7IH0KKyAgICBFQnVmZmVyZWRS
ZW5kZXJpbmcgYnVmZmVyZWRSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRUJ1ZmZlcmVkUmVu
ZGVyaW5nKSBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nOyB9
CisgICAgTGluZUNhcCBjYXBTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lQ2FwKSBtX2luaGVy
aXRlZEZsYWdzLmNhcFN0eWxlOyB9CisgICAgV2luZFJ1bGUgY2xpcFJ1bGUoKSBjb25zdCB7IHJl
dHVybiAoV2luZFJ1bGUpIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGU7IH0KKyAgICBFQ29sb3JJ
bnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JJ
bnRlcnBvbGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbjsgfQorICAg
IEVDb2xvckludGVycG9sYXRpb24gY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJw
b2xhdGlvbkZpbHRlcnM7IH0KKyAgICBFQ29sb3JSZW5kZXJpbmcgY29sb3JSZW5kZXJpbmcoKSBj
b25zdCB7IHJldHVybiAoRUNvbG9yUmVuZGVyaW5nKSBtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVu
ZGVyaW5nOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1
bGUpIG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGU7IH0KKyAgICBMaW5lSm9pbiBqb2luU3R5bGUo
KSBjb25zdCB7IHJldHVybiAoTGluZUpvaW4pIG1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlOyB9
CisgICAgRVNoYXBlUmVuZGVyaW5nIHNoYXBlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVT
aGFwZVJlbmRlcmluZykgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZzsgfQorICAgIEVU
ZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3IpIG1faW5o
ZXJpdGVkRmxhZ3MudGV4dEFuY2hvcjsgfQorICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3Jp
ZW50YXRpb25Ib3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBt
X2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOyB9CisgICAgRUdseXBo
T3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgY29uc3QgeyByZXR1cm4gKEVH
bHlwaE9yaWVudGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNh
bDsgfQorICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+
b3BhY2l0eTsgfQorICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50VHlwZTsgfQorICAgIGNvbnN0IENvbG9yJiBmaWxs
UGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50Q29sb3I7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEt
PnBhaW50VXJpOyB9ICAgIAorICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0cm9rZURhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9r
ZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlOyB9Cisg
ICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0cm9r
ZURhdGEtPnBhaW50Q29sb3I7IH0KKyAgICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50VXJpKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludFVyaTsgfQorICAgIFZlY3RvcjxTVkdM
ZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRh
LT5kYXNoQXJyYXk7IH0KKyAgICBmbG9hdCBzdHJva2VNaXRlckxpbWl0KCkgY29uc3QgeyByZXR1
cm4gbV9zdHJva2VEYXRhLT5taXRlckxpbWl0OyB9CisgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+d2lkdGg7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPmRh
c2hPZmZzZXQ7IH0KKyAgICBTVkdMZW5ndGhWYWx1ZSBrZXJuaW5nKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0RGF0YS0+a2VybmluZzsgfQorICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9wRGF0YS0+b3BhY2l0eTsgfQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3N0b3BEYXRhLT5jb2xvcjsgfQorICAgIGZsb2F0IGZsb29kT3Bh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eTsgfQorICAgIGNv
bnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9taXNjRGF0YS0+Zmxvb2RD
b2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9taXNjRGF0YS0+bGlnaHRpbmdDb2xvcjsgfQorICAgIFNWR0xlbmd0aFZhbHVlIGJhc2VsaW5l
U2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmJhc2VsaW5lU2hpZnRWYWx1
ZTsgfQorICAgIFNoYWRvd0RhdGEqIHNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93RGF0
YS0+c2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjeCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5b3V0RGF0YS0+Y3g7IH0KKyAgICBjb25zdCBMZW5ndGgmIGN5KCkgY29uc3QgeyByZXR1
cm4gbV9sYXlvdXREYXRhLT5jeTsgfQorICAgIGNvbnN0IExlbmd0aCYgcigpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0RGF0YS0+cjsgfQorICAgIGNvbnN0IExlbmd0aCYgcngoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dERhdGEtPnJ4OyB9CisgICAgY29uc3QgTGVuZ3RoJiByeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5b3V0RGF0YS0+cnk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dERhdGEtPng7IH0KKyAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dERhdGEtPnk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGNsaXBwZXJSZXNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5jbGlwcGVy
OyB9CisgICAgY29uc3QgU3RyaW5nJiBtYXNrZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXNrZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1h
cmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZFJlc291cmNlRGF0
YS0+bWFya2VyU3RhcnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlck1pZFJlc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlck1pZDsgfQorICAg
IGNvbnN0IFN0cmluZyYgbWFya2VyRW5kUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVy
aXRlZFJlc291cmNlRGF0YS0+bWFya2VyRW5kOyB9CisgICAgRU1hc2tUeXBlIG1hc2tUeXBlKCkg
Y29uc3QgeyByZXR1cm4gKEVNYXNrVHlwZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5t
YXNrVHlwZTsgfQorICAgIFBhaW50T3JkZXIgcGFpbnRPcmRlcigpIGNvbnN0IHsgcmV0dXJuIChQ
YWludE9yZGVyKSBtX2luaGVyaXRlZEZsYWdzLnBhaW50T3JkZXI7IH0KICAgICBWZWN0b3I8UGFp
bnRUeXBlLCAzPiBwYWludFR5cGVzRm9yUGFpbnRPcmRlcigpIGNvbnN0OwogCi0gICAgY29uc3Qg
U1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBm
aWxsLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlu
a0ZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludENv
bG9yOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua0ZpbGxQYWludFVyaSgpIGNvbnN0
IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7IH0KLSAgICBjb25zdCBTVkdQYWlu
dFR5cGUmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tl
LT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1N0
cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRD
b2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtTdHJva2VQYWludFVyaSgpIGNv
bnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQorICAgIGNvbnN0IFNW
R1BhaW50VHlwZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZExpbmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRM
aW5rUGFpbnRDb2xvcjsgfQorICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtGaWxsUGFpbnRV
cmkoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50VXJpOyB9Cisg
ICAgY29uc3QgU1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KKyAgICBjb25z
dCBDb2xvciYgdmlzaXRlZExpbmtTdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZp
c2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZp
c2l0ZWRMaW5rUGFpbnRVcmk7IH0KIAogICAgIC8vIGNvbnZlbmllbmNlCiAgICAgYm9vbCBoYXND
bGlwcGVyKCkgY29uc3QgeyByZXR1cm4gIWNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKTsgfQpA
QCAtMzgzLDEwNyArMjEzLDMxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGaWxsKCkgY29uc3Qg
eyByZXR1cm4gZmlsbFBhaW50VHlwZSgpICE9IFNWR19QQUlOVFRZUEVfTk9ORTsgfQogICAgIGJv
b2wgaXNvbGF0ZXNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGhhc01hc2tlcigpIHx8IHNoYWRv
dygpOyB9CiAKLXByb3RlY3RlZDoKLSAgICAvLyBpbmhlcml0Citwcml2YXRlOgorICAgIFNWR1Jl
bmRlclN0eWxlKCk7CisgICAgU1ZHUmVuZGVyU3R5bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUmKTsK
KworICAgIGVudW0gQ3JlYXRlRGVmYXVsdFR5cGUgeyBDcmVhdGVEZWZhdWx0IH07CisgICAgU1ZH
UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5cGUpOyAvLyBVc2VkIHRvIGNyZWF0ZSB0aGUgZGVm
YXVsdCBzdHlsZS4KKworICAgIHZvaWQgc2V0Qml0RGVmYXVsdHMoKTsKKwogICAgIHN0cnVjdCBJ
bmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRG
bGFncyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoX2NvbG9y
UmVuZGVyaW5nID09IG90aGVyLl9jb2xvclJlbmRlcmluZykKLSAgICAgICAgICAgICAgICAmJiAo
X3NoYXBlUmVuZGVyaW5nID09IG90aGVyLl9zaGFwZVJlbmRlcmluZykKLSAgICAgICAgICAgICAg
ICAmJiAoX2NsaXBSdWxlID09IG90aGVyLl9jbGlwUnVsZSkKLSAgICAgICAgICAgICAgICAmJiAo
X2ZpbGxSdWxlID09IG90aGVyLl9maWxsUnVsZSkKLSAgICAgICAgICAgICAgICAmJiAoX2NhcFN0
eWxlID09IG90aGVyLl9jYXBTdHlsZSkKLSAgICAgICAgICAgICAgICAmJiAoX2pvaW5TdHlsZSA9
PSBvdGhlci5fam9pblN0eWxlKQotICAgICAgICAgICAgICAgICYmIChfdGV4dEFuY2hvciA9PSBv
dGhlci5fdGV4dEFuY2hvcikKLSAgICAgICAgICAgICAgICAmJiAoX2NvbG9ySW50ZXJwb2xhdGlv
biA9PSBvdGhlci5fY29sb3JJbnRlcnBvbGF0aW9uKQotICAgICAgICAgICAgICAgICYmIChfY29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9PSBvdGhlci5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cykKLSAgICAgICAgICAgICAgICAmJiAoX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID09IG90
aGVyLl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCkKLSAgICAgICAgICAgICAgICAmJiAoX2ds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9PSBvdGhlci5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2Fs
KQotICAgICAgICAgICAgICAgICYmIChwYWludE9yZGVyID09IG90aGVyLnBhaW50T3JkZXIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdz
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgX2NvbG9yUmVuZGVyaW5nIDog
MjsgLy8gRUNvbG9yUmVuZGVyaW5nCi0gICAgICAgIHVuc2lnbmVkIF9zaGFwZVJlbmRlcmluZyA6
IDI7IC8vIEVTaGFwZVJlbmRlcmluZyAKLSAgICAgICAgdW5zaWduZWQgX2NsaXBSdWxlIDogMTsg
Ly8gV2luZFJ1bGUKLSAgICAgICAgdW5zaWduZWQgX2ZpbGxSdWxlIDogMTsgLy8gV2luZFJ1bGUK
LSAgICAgICAgdW5zaWduZWQgX2NhcFN0eWxlIDogMjsgLy8gTGluZUNhcAotICAgICAgICB1bnNp
Z25lZCBfam9pblN0eWxlIDogMjsgLy8gTGluZUpvaW4KLSAgICAgICAgdW5zaWduZWQgX3RleHRB
bmNob3IgOiAyOyAvLyBFVGV4dEFuY2hvcgotICAgICAgICB1bnNpZ25lZCBfY29sb3JJbnRlcnBv
bGF0aW9uIDogMjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlvbgotICAgICAgICB1bnNpZ25lZCBfY29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVycyA6IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KLSAgICAg
ICAgdW5zaWduZWQgX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsgLy8gRUdseXBoT3Jp
ZW50YXRpb24KLSAgICAgICAgdW5zaWduZWQgX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA6IDM7
IC8vIEVHbHlwaE9yaWVudGF0aW9uCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhl
cml0ZWRGbGFncyYpIGNvbnN0OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJp
dGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisg
ICAgICAgIHVuc2lnbmVkIGNvbG9yUmVuZGVyaW5nIDogMjsgLy8gRUNvbG9yUmVuZGVyaW5nCisg
ICAgICAgIHVuc2lnbmVkIHNoYXBlUmVuZGVyaW5nIDogMjsgLy8gRVNoYXBlUmVuZGVyaW5nCisg
ICAgICAgIHVuc2lnbmVkIGNsaXBSdWxlIDogMTsgLy8gV2luZFJ1bGUKKyAgICAgICAgdW5zaWdu
ZWQgZmlsbFJ1bGUgOiAxOyAvLyBXaW5kUnVsZQorICAgICAgICB1bnNpZ25lZCBjYXBTdHlsZSA6
IDI7IC8vIExpbmVDYXAKKyAgICAgICAgdW5zaWduZWQgam9pblN0eWxlIDogMjsgLy8gTGluZUpv
aW4KKyAgICAgICAgdW5zaWduZWQgdGV4dEFuY2hvciA6IDI7IC8vIEVUZXh0QW5jaG9yCisgICAg
ICAgIHVuc2lnbmVkIGNvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIEVDb2xvckludGVycG9sYXRp
b24KKyAgICAgICAgdW5zaWduZWQgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA6IDI7IC8vIEVD
b2xvckludGVycG9sYXRpb24KKyAgICAgICAgdW5zaWduZWQgZ2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgorICAgICAgICB1bnNpZ25lZCBnbHlwaE9y
aWVudGF0aW9uVmVydGljYWwgOiAzOyAvLyBFR2x5cGhPcmllbnRhdGlvbgogICAgICAgICB1bnNp
Z25lZCBwYWludE9yZGVyIDogMzsgLy8gUGFpbnRPcmRlcgotICAgIH0gc3ZnX2luaGVyaXRlZF9m
bGFnczsKKyAgICB9OwogCi0gICAgLy8gZG9uJ3QgaW5oZXJpdAogICAgIHN0cnVjdCBOb25Jbmhl
cml0ZWRGbGFncyB7CiAgICAgICAgIC8vIDMyIGJpdCBub24taW5oZXJpdGVkLCBkb24ndCBhZGQg
dG8gdGhlIHN0cnVjdCwgb3IgdGhlIG9wZXJhdG9yIHdpbGwgYnJlYWsuCi0gICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IF9uaWZsYWdzID09IG90aGVyLl9uaWZsYWdzOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBOb25Jbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIF9uaWZsYWdzICE9
IG90aGVyLl9uaWZsYWdzOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhl
cml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGZsYWdzID09IG90aGVyLmZsYWdzOyB9
CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIGZsYWdzICE9IG90aGVyLmZsYWdzOyB9CiAKICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBfYWxpZ25t
ZW50QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFzZWxpbmUgCi0gICAgICAgICAgICAgICAg
dW5zaWduZWQgX2RvbWluYW50QmFzZWxpbmUgOiA0OyAvLyBFRG9taW5hbnRCYXNlbGluZQotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIF9iYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2VsaW5lU2hp
ZnQKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBfdmVjdG9yRWZmZWN0OiAxOyAvLyBFVmVjdG9y
RWZmZWN0CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50QmFzZWxpbmUgOiA0OyAv
LyBFQWxpZ25tZW50QmFzZWxpbmUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkb21pbmFudEJh
c2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUKKyAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBiYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2VsaW5lU2hpZnQKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCB2ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0b3JFZmZlY3QKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsgLy8gRUJ1ZmZlcmVkUmVuZGVyaW5nCiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbWFza1R5cGU6IDE7IC8vIEVNYXNrVHlwZQogICAgICAg
ICAgICAgICAgIC8vIDE4IGJpdHMgdW51c2VkCi0gICAgICAgICAgICB9IGY7Ci0gICAgICAgICAg
ICB1aW50MzJfdCBfbmlmbGFnczsKKyAgICAgICAgICAgIH0gZmxhZ0JpdHM7CisgICAgICAgICAg
ICB1aW50MzJfdCBmbGFnczsKICAgICAgICAgfTsKLSAgICB9IHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3M7CisgICAgfTsKKworICAgIEluaGVyaXRlZEZsYWdzIG1faW5oZXJpdGVkRmxhZ3M7CisgICAg
Tm9uSW5oZXJpdGVkRmxhZ3MgbV9ub25Jbmhlcml0ZWRGbGFnczsKIAogICAgIC8vIGluaGVyaXRl
ZCBhdHRyaWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZUZpbGxEYXRhPiBmaWxsOwotICAgIERhdGFS
ZWY8U3R5bGVTdHJva2VEYXRhPiBzdHJva2U7Ci0gICAgRGF0YVJlZjxTdHlsZVRleHREYXRhPiB0
ZXh0OwotICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGluaGVyaXRlZFJl
c291cmNlczsKKyAgICBEYXRhUmVmPFN0eWxlRmlsbERhdGE+IG1fZmlsbERhdGE7CisgICAgRGF0
YVJlZjxTdHlsZVN0cm9rZURhdGE+IG1fc3Ryb2tlRGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlVGV4
dERhdGE+IG1fdGV4dERhdGE7CisgICAgRGF0YVJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0
YT4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGE7CiAKICAgICAvLyBub24taW5oZXJpdGVkIGF0dHJp
YnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlU3RvcERhdGE+IHN0b3BzOwotICAgIERhdGFSZWY8U3R5
bGVNaXNjRGF0YT4gbWlzYzsKLSAgICBEYXRhUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gc2hhZG93
U1ZHOwotICAgIERhdGFSZWY8U3R5bGVMYXlvdXREYXRhPiBsYXlvdXQ7Ci0gICAgRGF0YVJlZjxT
dHlsZVJlc291cmNlRGF0YT4gcmVzb3VyY2VzOwotCi1wcml2YXRlOgotICAgIGVudW0gQ3JlYXRl
RGVmYXVsdFR5cGUgeyBDcmVhdGVEZWZhdWx0IH07Ci0gICAgICAgIAotICAgIFNWR1JlbmRlclN0
eWxlKCk7Ci0gICAgU1ZHUmVuZGVyU3R5bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUmKTsKLSAgICBT
VkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0VHlwZSk7IC8vIFVzZWQgdG8gY3JlYXRlIHRoZSBk
ZWZhdWx0IHN0eWxlLgorICAgIERhdGFSZWY8U3R5bGVTdG9wRGF0YT4gbV9zdG9wRGF0YTsKKyAg
ICBEYXRhUmVmPFN0eWxlTWlzY0RhdGE+IG1fbWlzY0RhdGE7CisgICAgRGF0YVJlZjxTdHlsZVNo
YWRvd1NWR0RhdGE+IG1fc2hhZG93RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlTGF5b3V0RGF0YT4g
bV9sYXlvdXREYXRhOworICAgIERhdGFSZWY8U3R5bGVSZXNvdXJjZURhdGE+IG1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhOworfTsKIAotICAgIHZvaWQgc2V0Qml0RGVmYXVsdHMoKQotICAgIHsK
LSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSBpbml0aWFsQ2xpcFJ1bGUo
KTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JSZW5kZXJpbmcgPSBpbml0aWFs
Q29sb3JSZW5kZXJpbmcoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fZmlsbFJ1bGUg
PSBpbml0aWFsRmlsbFJ1bGUoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fc2hhcGVS
ZW5kZXJpbmcgPSBpbml0aWFsU2hhcGVSZW5kZXJpbmcoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fdGV4dEFuY2hvciA9IGluaXRpYWxUZXh0QW5jaG9yKCk7Ci0gICAgICAgIHN2Z19p
bmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gaW5pdGlhbENhcFN0eWxlKCk7Ci0gICAgICAgIHN2
Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSA9IGluaXRpYWxKb2luU3R5bGUoKTsKLSAgICAg
ICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uID0gaW5pdGlhbENvbG9y
SW50ZXJwb2xhdGlvbigpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzID0gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKTsKLSAg
ICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgPSBp
bml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gaW5pdGlhbEdseXBoT3JpZW50YXRp
b25WZXJ0aWNhbCgpOwotICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLnBhaW50T3JkZXIgPSBp
bml0aWFsUGFpbnRPcmRlcigpOwotCi0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuX25p
ZmxhZ3MgPSAwOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJh
c2VsaW5lID0gaW5pdGlhbEFsaWdubWVudEJhc2VsaW5lKCk7Ci0gICAgICAgIHN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFudEJhc2VsaW5l
KCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCA9IGlu
aXRpYWxCYXNlbGluZVNoaWZ0KCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5f
dmVjdG9yRWZmZWN0ID0gaW5pdGlhbFZlY3RvckVmZmVjdCgpOwotICAgICAgICBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcgPSBpbml0aWFsQnVmZmVyZWRSZW5kZXJp
bmcoKTsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlID0gaW5pdGlh
bE1hc2tUeXBlKCk7CitpbmxpbmUgU1ZHTGVuZ3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxCYXNlbGluZVNoaWZ0VmFsdWUoKQoreworICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKKyAg
ICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCAwKTsKKyAg
ICByZXR1cm4gbGVuZ3RoOworfQorCitpbmxpbmUgU1ZHTGVuZ3RoVmFsdWUgU1ZHUmVuZGVyU3R5
bGU6OmluaXRpYWxLZXJuaW5nKCkKK3sKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7CisgICAg
bGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7CisgICAg
cmV0dXJuIGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEN4KGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+Y3ggPT0gbGVu
Z3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLmN4ID0gbGVuZ3RoOworfQorCitp
bmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Q3koY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7
CisgICAgaWYgKCEobV9sYXlvdXREYXRhLT5jeSA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91
dERhdGEuYWNjZXNzKCkuY3kgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0
eWxlOjpzZXRSKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0
YS0+ciA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkuciA9IGxlbmd0
aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFJ4KGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+cnggPT0gbGVuZ3RoKSkKKyAgICAg
ICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnJ4ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBT
VkdSZW5kZXJTdHlsZTo6c2V0UnkoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgaWYgKCEo
bV9sYXlvdXREYXRhLT5yeSA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNz
KCkucnkgPSBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRYKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+eCA9PSBsZW5n
dGgpKQorICAgICAgICBtX2xheW91dERhdGEuYWNjZXNzKCkueCA9IGxlbmd0aDsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFkoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7Cisg
ICAgaWYgKCEobV9sYXlvdXREYXRhLT55ID09IGxlbmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0
YS5hY2Nlc3MoKS55ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6
c2V0RmlsbE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIShtX2ZpbGxEYXRhLT5v
cGFjaXR5ID09IG9wYWNpdHkpKQorICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLm9wYWNpdHkg
PSBvcGFjaXR5OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0RmlsbFBhaW50
KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJp
LCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUp
Cit7CisgICAgaWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKKyAgICAgICAgaWYgKCEobV9maWxs
RGF0YS0+cGFpbnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3Mo
KS5wYWludFR5cGUgPSB0eXBlOworICAgICAgICBpZiAoIShtX2ZpbGxEYXRhLT5wYWludENvbG9y
ID09IGNvbG9yKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRDb2xvciA9
IGNvbG9yOworICAgICAgICBpZiAoIShtX2ZpbGxEYXRhLT5wYWludFVyaSA9PSB1cmkpKQorICAg
ICAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5wYWludFVyaSA9IHVyaTsKICAgICB9Ci19Owor
ICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgeworICAgICAgICBpZiAoIShtX2ZpbGxE
YXRhLT52aXNpdGVkTGlua1BhaW50VHlwZSA9PSB0eXBlKSkKKyAgICAgICAgICAgIG1fZmlsbERh
dGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBlOworICAgICAgICBpZiAoISht
X2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0gY29sb3IpKQorICAgICAgICAgICAg
bV9maWxsRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50Q29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgaWYgKCEobV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaSA9PSB1cmkpKQorICAgICAg
ICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50VXJpID0gdXJpOworICAg
IH0KK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZU9wYWNpdHkoZmxv
YXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIShtX3N0cm9rZURhdGEtPm9wYWNpdHkgPT0gb3BhY2l0
eSkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5vcGFjaXR5ID0gb3BhY2l0eTsKK30K
KworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZVBhaW50KFNWR1BhaW50VHlw
ZSB0eXBlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5
VG9SZWd1bGFyU3R5bGUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpCit7CisgICAgaWYg
KGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT5wYWlu
dFR5cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkucGFpbnRU
eXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9zdHJva2VEYXRhLT5wYWludENvbG9yID09IGNv
bG9yKSkKKyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5wYWludENvbG9yID0gY29s
b3I7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+cGFpbnRVcmkgPT0gdXJpKSkKKyAgICAg
ICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS5wYWludFVyaSA9IHVyaTsKKyAgICB9CisgICAg
aWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0
YS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX3N0cm9rZURh
dGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBlOworICAgICAgICBpZiAoISht
X3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9PSBjb2xvcikpCisgICAgICAgICAg
ICBtX3N0cm9rZURhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludENvbG9yID0gY29sb3I7Cisg
ICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaSA9PSB1cmkpKQor
ICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1
cmk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFz
aEFycmF5KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGFycmF5KQoreworICAgIGlmICgh
KG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5ID09IGFycmF5KSkKKyAgICAgICAgbV9zdHJva2VEYXRh
LmFjY2VzcygpLmRhc2hBcnJheSA9IGFycmF5OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBsaW1pdCkKK3sKKyAgICBpZiAoIShtX3N0
cm9rZURhdGEtPm1pdGVyTGltaXQgPT0gbGltaXQpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNj
ZXNzKCkubWl0ZXJMaW1pdCA9IGxpbWl0OworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHls
ZTo6c2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3RoJiB3aWR0aCkKK3sKKyAgICBpZiAoIShtX3N0
cm9rZURhdGEtPndpZHRoID09IHdpZHRoKSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2Vzcygp
LndpZHRoID0gd2lkdGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdHJv
a2VEYXNoT2Zmc2V0KGNvbnN0IExlbmd0aCYgb2Zmc2V0KQoreworICAgIGlmICghKG1fc3Ryb2tl
RGF0YS0+ZGFzaE9mZnNldCA9PSBvZmZzZXQpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNz
KCkuZGFzaE9mZnNldCA9IG9mZnNldDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6
OnNldEtlcm5pbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGtlcm5pbmcpCit7CisgICAgaWYgKCEo
bV90ZXh0RGF0YS0+a2VybmluZyA9PSBrZXJuaW5nKSkKKyAgICAgICAgbV90ZXh0RGF0YS5hY2Nl
c3MoKS5rZXJuaW5nID0ga2VybmluZzsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6
OnNldFN0b3BPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9zdG9wRGF0YS0+
b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAgICAgICAgbV9zdG9wRGF0YS5hY2Nlc3MoKS5vcGFjaXR5
ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0b3BDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCEobV9zdG9wRGF0YS0+Y29sb3IgPT0g
Y29sb3IpKQorICAgICAgICBtX3N0b3BEYXRhLmFjY2VzcygpLmNvbG9yID0gY29sb3I7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgb3BhY2l0
eSkKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5mbG9vZE9wYWNpdHkgPT0gb3BhY2l0eSkpCisg
ICAgICAgIG1fbWlzY0RhdGEuYWNjZXNzKCkuZmxvb2RPcGFjaXR5ID0gb3BhY2l0eTsKK30KKwor
aW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmZsb29kQ29sb3IgPT0gY29sb3IpKQorICAg
ICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmZsb29kQ29sb3IgPSBjb2xvcjsKK30KKworaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQoreworICAgIGlmICghKG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3IgPT0gY29sb3IpKQorICAg
ICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmxpZ2h0aW5nQ29sb3IgPSBjb2xvcjsKK30KKworaW5s
aW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEJhc2VsaW5lU2hpZnRWYWx1ZShjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgc2hpZnRWYWx1ZSkKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5iYXNlbGlu
ZVNoaWZ0VmFsdWUgPT0gc2hpZnRWYWx1ZSkpCisgICAgICAgIG1fbWlzY0RhdGEuYWNjZXNzKCku
YmFzZWxpbmVTaGlmdFZhbHVlID0gc2hpZnRWYWx1ZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVu
ZGVyU3R5bGU6OnNldENsaXBwZXJSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQorewor
ICAgIGlmICghKG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5jbGlwcGVyID09IHJlc291cmNl
KSkKKyAgICAgICAgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkuY2xpcHBlciA9
IHJlc291cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TWFza2VyUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX25vbkluaGVyaXRl
ZFJlc291cmNlRGF0YS0+bWFza2VyID09IHJlc291cmNlKSkKKyAgICAgICAgbV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGEuYWNjZXNzKCkubWFza2VyID0gcmVzb3VyY2U7Cit9CisKK2lubGluZSB2
b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRNYXJrZXJTdGFydFJlc291cmNlKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2UpCit7CisgICAgaWYgKCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlclN0
YXJ0ID09IHJlc291cmNlKSkKKyAgICAgICAgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEuYWNjZXNz
KCkubWFya2VyU3RhcnQgPSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5
bGU6OnNldE1hcmtlck1pZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAg
aWYgKCEobV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlck1pZCA9PSByZXNvdXJjZSkpCisg
ICAgICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlck1pZCA9IHJlc291
cmNlOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TWFya2VyRW5kUmVzb3Vy
Y2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIShtX2luaGVyaXRlZFJlc291
cmNlRGF0YS0+bWFya2VyRW5kID09IHJlc291cmNlKSkKKyAgICAgICAgbV9pbmhlcml0ZWRSZXNv
dXJjZURhdGEuYWNjZXNzKCkubWFya2VyRW5kID0gcmVzb3VyY2U7Cit9CisKK2lubGluZSB2b2lk
IFNWR1JlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cygpCit7CisgICAgbV9pbmhlcml0ZWRGbGFn
cy5jbGlwUnVsZSA9IGluaXRpYWxDbGlwUnVsZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY29s
b3JSZW5kZXJpbmcgPSBpbml0aWFsQ29sb3JSZW5kZXJpbmcoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmZpbGxSdWxlID0gaW5pdGlhbEZpbGxSdWxlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5z
aGFwZVJlbmRlcmluZyA9IGluaXRpYWxTaGFwZVJlbmRlcmluZygpOworICAgIG1faW5oZXJpdGVk
RmxhZ3MudGV4dEFuY2hvciA9IGluaXRpYWxUZXh0QW5jaG9yKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5jYXBTdHlsZSA9IGluaXRpYWxDYXBTdHlsZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
am9pblN0eWxlID0gaW5pdGlhbEpvaW5TdHlsZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY29s
b3JJbnRlcnBvbGF0aW9uID0gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpOworICAgIG1faW5o
ZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpOworICAgIG1f
aW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gaW5pdGlhbEdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MucGFpbnRPcmRlciA9IGlu
aXRpYWxQYWludE9yZGVyKCk7CisKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdzID0gMDsK
KyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lID0gaW5p
dGlhbEFsaWdubWVudEJhc2VsaW5lKCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERvbWluYW50QmFzZWxpbmUoKTsKKyAgICBtX25v
bkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQgPSBpbml0aWFsQmFzZWxpbmVT
aGlmdCgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0ID0g
aW5pdGlhbFZlY3RvckVmZmVjdCgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
YnVmZmVyZWRSZW5kZXJpbmcgPSBpbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcoKTsKKyAgICBtX25v
bkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gaW5pdGlhbE1hc2tUeXBlKCk7Cit9
CisKK2lubGluZSBib29sIFNWR1JlbmRlclN0eWxlOjpJbmhlcml0ZWRGbGFnczo6b3BlcmF0b3I9
PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbG9y
UmVuZGVyaW5nID09IG90aGVyLmNvbG9yUmVuZGVyaW5nCisgICAgICAgICYmIHNoYXBlUmVuZGVy
aW5nID09IG90aGVyLnNoYXBlUmVuZGVyaW5nCisgICAgICAgICYmIGNsaXBSdWxlID09IG90aGVy
LmNsaXBSdWxlCisgICAgICAgICYmIGZpbGxSdWxlID09IG90aGVyLmZpbGxSdWxlCisgICAgICAg
ICYmIGNhcFN0eWxlID09IG90aGVyLmNhcFN0eWxlCisgICAgICAgICYmIGpvaW5TdHlsZSA9PSBv
dGhlci5qb2luU3R5bGUKKyAgICAgICAgJiYgdGV4dEFuY2hvciA9PSBvdGhlci50ZXh0QW5jaG9y
CisgICAgICAgICYmIGNvbG9ySW50ZXJwb2xhdGlvbiA9PSBvdGhlci5jb2xvckludGVycG9sYXRp
b24KKyAgICAgICAgJiYgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9PSBvdGhlci5jb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzCisgICAgICAgICYmIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
ID09IG90aGVyLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCisgICAgICAgICYmIGdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCA9PSBvdGhlci5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwKKyAgICAg
ICAgJiYgcGFpbnRPcmRlciA9PSBvdGhlci5wYWludE9yZGVyOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
cGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaApp
bmRleCA2ZDc2N2FlMjM3MzdkYjZmNzgzZjIyNDllNDkwZWM5MDZhMzNiOGU4Li5iNzQ5YTI2YzBj
YTVhY2ZjNjJlZjJmM2VjYmJlZDNlNDk1NzhmN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTaGFwZVZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcGVWYWx1ZT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZlB0cjxCYXNp
Y1NoYXBlPiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBzdGF0aWMgUmVmPFNoYXBl
VmFsdWU+IGNyZWF0ZShSZWY8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZVZhbHVlKFdURk1vdmUo
c2hhcGUpLCBjc3NCb3gpKTsKICAgICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShib3hTaGFwZSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGlt
YWdlKQorICAgIHN0YXRpYyBSZWY8U2hhcGVWYWx1ZT4gY3JlYXRlKFJlZjxTdHlsZUltYWdlPiYm
IGltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShX
VEZNb3ZlKGltYWdlKSkpOwogICAgIH0KQEAgLTcyLDE0ICs3MiwxNCBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIFNoYXBlVmFsdWUoUmVmUHRyPEJhc2ljU2hhcGU+JiYgc2hhcGUs
IENTU0JveFR5cGUgY3NzQm94KQorICAgIFNoYXBlVmFsdWUoUmVmPEJhc2ljU2hhcGU+JiYgc2hh
cGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgICAgICA6IG1fdHlwZShUeXBlOjpTaGFwZSkKICAg
ICAgICAgLCBtX3NoYXBlKFdURk1vdmUoc2hhcGUpKQogICAgICAgICAsIG1fY3NzQm94KGNzc0Jv
eCkKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQgU2hhcGVWYWx1ZShSZWZQdHI8U3R5bGVJ
bWFnZT4mJiBpbWFnZSkKKyAgICBleHBsaWNpdCBTaGFwZVZhbHVlKFJlZjxTdHlsZUltYWdlPiYm
IGltYWdlKQogICAgICAgICA6IG1fdHlwZShUeXBlOjpJbWFnZSkKICAgICAgICAgLCBtX2ltYWdl
KFdURk1vdmUoaW1hZ2UpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcAppbmRleCAxYmEzNmM0YThkMGQzYmVj
MzFmNDMyYTA2ZmZmM2M4M2YyYWRlNGJhLi5hZTM4MzVjNzliYmE4ZDA5NmIxM2I3MGRkNTZlOTVm
NDgxZjE3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVCYWNrZ3JvdW5kRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDE2ICsyOCwxNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmRE
YXRhKCkKLSAgICA6IG1fYmFja2dyb3VuZChCYWNrZ3JvdW5kRmlsbExheWVyKQotICAgICwgbV9j
b2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tncm91bmRDb2xvcigpKQorICAgIDogYmFja2dy
b3VuZChCYWNrZ3JvdW5kRmlsbExheWVyKQorICAgICwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRp
YWxCYWNrZ3JvdW5kQ29sb3IoKSkKIHsKIH0KIAotaW5saW5lIFN0eWxlQmFja2dyb3VuZERhdGE6
OlN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykKK2lubGlu
ZSBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFj
a2dyb3VuZERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZUJhY2tncm91bmREYXRh
PigpCi0gICAgLCBtX2JhY2tncm91bmQoby5tX2JhY2tncm91bmQpCi0gICAgLCBtX2NvbG9yKG8u
bV9jb2xvcikKLSAgICAsIG1fb3V0bGluZShvLm1fb3V0bGluZSkKKyAgICAsIGJhY2tncm91bmQo
b3RoZXIuYmFja2dyb3VuZCkKKyAgICAsIGNvbG9yKG90aGVyLmNvbG9yKQorICAgICwgb3V0bGlu
ZShvdGhlci5vdXRsaW5lKQogewogfQogCkBAIC00NiwxOCArNDYsMTggQEAgUmVmPFN0eWxlQmFj
a2dyb3VuZERhdGE+IFN0eWxlQmFja2dyb3VuZERhdGE6OmNvcHkoKSBjb25zdAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlQmFja2dyb3VuZERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBT
dHlsZUJhY2tncm91bmREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEm
IG8pIGNvbnN0Citib29sIFN0eWxlQmFja2dyb3VuZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYmFja2dyb3Vu
ZCA9PSBvLm1fYmFja2dyb3VuZCAmJiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX291dGxpbmUg
PT0gby5tX291dGxpbmU7CisgICAgcmV0dXJuIGJhY2tncm91bmQgPT0gb3RoZXIuYmFja2dyb3Vu
ZCAmJiBjb2xvciA9PSBvdGhlci5jb2xvciAmJiBvdXRsaW5lID09IG90aGVyLm91dGxpbmU7CiB9
CiAKIGJvb2wgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6aXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoY29u
c3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYmFja2dy
b3VuZCAhPSBvdGhlci5tX2JhY2tncm91bmQgfHwgbV9jb2xvciAhPSBvdGhlci5tX2NvbG9yKQor
ICAgIGlmIChiYWNrZ3JvdW5kICE9IG90aGVyLmJhY2tncm91bmQgfHwgY29sb3IgIT0gb3RoZXIu
Y29sb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fb3V0bGluZS5pc1Zpc2li
bGUoKSAmJiAhb3RoZXIubV9vdXRsaW5lLmlzVmlzaWJsZSgpKQorICAgIGlmICghb3V0bGluZS5p
c1Zpc2libGUoKSAmJiAhb3RoZXIub3V0bGluZS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmV0dXJuIG1fb3V0bGluZSA9PSBvdGhlci5tX291dGxpbmU7CisgICAgcmV0
dXJuIG91dGxpbmUgPT0gb3RoZXIub3V0bGluZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dy
b3VuZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91
bmREYXRhLmgKaW5kZXggMTQ0Nzc3YWEwZWI5NWMyNWE0YWZkMTIzZDQ4ZGJjNTdiMzZkYmQ3My4u
OWI5NWVlMGNhYjk5MWQ2ZmRmYjBiNTZkZWRhMWM4MGFlZTg5NDQxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC0y
LDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBE
ZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM2LDI5ICsz
NiwxOSBAQCBjbGFzcyBTdHlsZUJhY2tncm91bmREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVCYWNrZ3JvdW5kRGF0YT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVCYWNrZ3Jv
dW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmRE
YXRhKTsgfQogICAgIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAg
flN0eWxlQmFja2dyb3VuZERhdGEoKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZUJhY2tncm91bmREYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3Jv
dW5kRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUJhY2tncm91
bmREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAg
IGJvb2wgaXNFcXVpdmFsZW50Rm9yUGFpbnRpbmcoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYp
IGNvbnN0OwogCi0gICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZ3JvdW5kOyB9Ci0gICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvcjsgfQotICAgIGNvbnN0IE91dGxpbmVWYWx1ZSYgb3V0bGluZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3V0bGluZTsgfQorICAgIEZpbGxMYXllciBiYWNrZ3JvdW5kOworICAgIENvbG9y
IGNvbG9yOworICAgIE91dGxpbmVWYWx1ZSBvdXRsaW5lOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBSZW5kZXJTdHlsZTsKLQogICAgIFN0eWxlQmFja2dyb3VuZERhdGEoKTsKLSAgICBT
dHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKTsgCi0KLSAgICBG
aWxsTGF5ZXIgbV9iYWNrZ3JvdW5kOwotICAgIENvbG9yIG1fY29sb3I7Ci0gICAgT3V0bGluZVZh
bHVlIG1fb3V0bGluZTsKKyAgICBTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dy
b3VuZERhdGEmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAppbmRleCBmNzA2
OTFiYzZhMTUzMzU3NGFlMWZiMTVkMjcyYTIxMTNmNzM1YWRjLi42OTIzOTViMWUzNTBmMWNhMGQz
ZmQ5M2IxZDVlNTRkMTZiZmI1ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIENhY2hlZElt
YWdlKiBTdHlsZUNhY2hlZEltYWdlOjpjYWNoZWRJbWFnZSgpIGNvbnN0CiAKIFJlZjxDU1NWYWx1
ZT4gU3R5bGVDYWNoZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBjb25z
dF9jYXN0PENTU1ZhbHVlJj4obV9jc3NWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fY3NzVmFs
dWUuY29weVJlZigpOwogfQogCiBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6OmNhblJlbmRlcihjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhLmgKaW5kZXggYzZmZmE3NTY5NTk2YzNlOTRiMWNkM2JjMzI2MzdjMDEyMzJkMzBmOC4u
ODhmMTgzMWM0ZDUxY2I3Mzk2OTUwOWM5YzI1NTUzMmEyYjAyN2QyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
LmgKQEAgLTM1LDUwICszNSw0MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YSk7IH0KICAgICBSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGNvcHko
KSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCp0
aGlzKSk7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NvbnRhaW5z
VmFyaWFibGVzICE9IG8ubV9jb250YWluc1ZhcmlhYmxlcykKKyAgICAgICAgaWYgKGNvbnRhaW5z
VmFyaWFibGVzICE9IG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWVzLnNpemUoKSAhPSBvLm1fdmFs
dWVzLnNpemUoKSkKKworICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAhPSBvdGhlci52YWx1ZXMu
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgZm9y
IChXVEY6OktleVZhbHVlUGFpcjxBdG9taWNTdHJpbmcsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPj4gZW50cnkgOiBtX3ZhbHVlcykgewotICAgICAgICAgICAgUmVmUHRyPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IG90aGVyID0gby5tX3ZhbHVlcy5nZXQoZW50cnkua2V5KTsKLSAgICAg
ICAgICAgIGlmICghb3RoZXIgfHwgIWVudHJ5LnZhbHVlLT5lcXVhbHMoKm90aGVyKSkKKworICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogdmFsdWVzKSB7CisgICAgICAgICAgICBhdXRvIG90aGVy
RW50cnkgPSBvdGhlci52YWx1ZXMuZmluZChlbnRyeS5rZXkpOworICAgICAgICAgICAgaWYgKG90
aGVyRW50cnkgPT0gb3RoZXIudmFsdWVzLmVuZCgpIHx8ICFlbnRyeS52YWx1ZS0+ZXF1YWxzKCpv
dGhlckVudHJ5LT52YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhICZvKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAg
ICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mIHZhbHVlKQorICAgIHZvaWQgc2V0
Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgbV92YWx1ZXMuc2V0KG5h
bWUsIHZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQotICAg
ICAgICAgICAgbV9jb250YWluc1ZhcmlhYmxlcyA9IHRydWU7CisgICAgICAgICAgICBjb250YWlu
c1ZhcmlhYmxlcyA9IHRydWU7CisgICAgICAgIHZhbHVlcy5zZXQobmFtZSwgV1RGTW92ZSh2YWx1
ZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBnZXRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZXMuZ2V0KG5hbWUpOyB9Ci0gICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgdmFsdWVz
KCkgeyByZXR1cm4gbV92YWx1ZXM7IH0KLSAgICAKLSAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuY29udGFp
bnMobmFtZSk7IH0KLSAgICAKLSAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQotICAgIHZvaWQgc2V0Q29udGFpbnNWYXJpYWJs
ZXMoYm9vbCBjb250YWluc1ZhcmlhYmxlcykgeyBtX2NvbnRhaW5zVmFyaWFibGVzID0gY29udGFp
bnNWYXJpYWJsZXM7IH0KLQotICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAgbV92YWx1ZXM7Ci0g
ICAgYm9vbCBtX2NvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2UgfTsKKyAgICBDdXN0b21Qcm9wZXJ0
eVZhbHVlTWFwIHZhbHVlczsKKyAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2UgfTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpCi0gICAg
ICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKQotICAgIHsgfQorICAg
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCkgPSBkZWZhdWx0OwogICAgIFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikKICAgICAgICAg
OiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpCi0gICAgICAgICwgbV92YWx1
ZXMoQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcChvdGhlci5tX3ZhbHVlcykpCi0gICAgICAgICwgbV9j
b250YWluc1ZhcmlhYmxlcyhvdGhlci5tX2NvbnRhaW5zVmFyaWFibGVzKQorICAgICAgICAsIHZh
bHVlcyhvdGhlci52YWx1ZXMpCisgICAgICAgICwgY29udGFpbnNWYXJpYWJsZXMob3RoZXIuY29u
dGFpbnNWYXJpYWJsZXMpCiAgICAgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGEuY3BwCmluZGV4IDMyZjc4MDVlYmNmNjU2MGFhZDQ2OWVmYWZjNWFlZDMyY2M5NmE1ZmYuLjFm
YWZhMmQ4ODk2ZDcxMzIzODI5MjYxNWY1Y2Q0MGRlY2RlNTY5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGEuY3BwCkBAIC0yOCw4ICsyOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEoKQogICAgIDogZmxleChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEZsZXgoKSkKLSAg
ICAsIGZsZXhfZ3JvdXAoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hGbGV4R3JvdXAoKSkKLSAgICAs
IG9yZGluYWxfZ3JvdXAoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRpbmFsR3JvdXAoKSkKKyAg
ICAsIGZsZXhHcm91cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEZsZXhHcm91cCgpKQorICAgICwg
b3JkaW5hbEdyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94T3JkaW5hbEdyb3VwKCkpCiAgICAg
LCBhbGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEFsaWduKCkpCiAgICAgLCBwYWNrKFJlbmRl
clN0eWxlOjppbml0aWFsQm94UGFjaygpKQogICAgICwgb3JpZW50KFJlbmRlclN0eWxlOjppbml0
aWFsQm94T3JpZW50KCkpCkBAIC0zNywxNSArMzcsMTUgQEAgU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoKQogewogfQogCi1pbmxp
bmUgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEoY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvKQoraW5saW5l
IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVC
b3hEYXRhKGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3RoZXIpCiAgICAg
OiBSZWZDb3VudGVkPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4oKQotICAgICwgZmxl
eChvLmZsZXgpCi0gICAgLCBmbGV4X2dyb3VwKG8uZmxleF9ncm91cCkKLSAgICAsIG9yZGluYWxf
Z3JvdXAoby5vcmRpbmFsX2dyb3VwKQotICAgICwgYWxpZ24oby5hbGlnbikKLSAgICAsIHBhY2so
by5wYWNrKQotICAgICwgb3JpZW50KG8ub3JpZW50KQotICAgICwgbGluZXMoby5saW5lcykKKyAg
ICAsIGZsZXgob3RoZXIuZmxleCkKKyAgICAsIGZsZXhHcm91cChvdGhlci5mbGV4R3JvdXApCisg
ICAgLCBvcmRpbmFsR3JvdXAob3RoZXIub3JkaW5hbEdyb3VwKQorICAgICwgYWxpZ24ob3RoZXIu
YWxpZ24pCisgICAgLCBwYWNrKG90aGVyLnBhY2spCisgICAgLCBvcmllbnQob3RoZXIub3JpZW50
KQorICAgICwgbGluZXMob3RoZXIubGluZXMpCiB7CiB9CiAKQEAgLTU0LDExICs1NCwxMSBAQCBS
ZWY8U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGE6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YSgqdGhpcykpOwogfQogCi1ib29sIFN0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6
b3BlcmF0b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG90aGVyKSBj
b25zdAogewotICAgIHJldHVybiBmbGV4ID09IG8uZmxleCAmJiBmbGV4X2dyb3VwID09IG8uZmxl
eF9ncm91cCAmJgotICAgICAgICAgICBvcmRpbmFsX2dyb3VwID09IG8ub3JkaW5hbF9ncm91cCAm
JiBhbGlnbiA9PSBvLmFsaWduICYmCi0gICAgICAgICAgIHBhY2sgPT0gby5wYWNrICYmIG9yaWVu
dCA9PSBvLm9yaWVudCAmJiBsaW5lcyA9PSBvLmxpbmVzOworICAgIHJldHVybiBmbGV4ID09IG90
aGVyLmZsZXggJiYgZmxleEdyb3VwID09IG90aGVyLmZsZXhHcm91cAorICAgICAgICAmJiBvcmRp
bmFsR3JvdXAgPT0gb3RoZXIub3JkaW5hbEdyb3VwICYmIGFsaWduID09IG90aGVyLmFsaWduCisg
ICAgICAgICYmIHBhY2sgPT0gb3RoZXIucGFjayAmJiBvcmllbnQgPT0gb3RoZXIub3JpZW50ICYm
IGxpbmVzID09IG90aGVyLmxpbmVzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxl
eGlibGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKaW5kZXggN2YwMDBiYmViZjdjZmRhZTRkNmRhOTk3N2Iy
NDBjODVmYzI0Y2YzMC4uMzMwY2Y2NDczNGRjYTc1ZGI1Zjg5ZWU3NjZjYjRkYzkxNzFhZWM3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1Ymxp
YzoKICAgICBSZWY8U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YSYgbykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG8pOworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAg
ICAgfQogCiAgICAgZmxvYXQgZmxleDsKLSAgICB1bnNpZ25lZCBpbnQgZmxleF9ncm91cDsKLSAg
ICB1bnNpZ25lZCBpbnQgb3JkaW5hbF9ncm91cDsKKyAgICB1bnNpZ25lZCBmbGV4R3JvdXA7Cisg
ICAgdW5zaWduZWQgb3JkaW5hbEdyb3VwOwogCiAgICAgdW5zaWduZWQgYWxpZ24gOiAzOyAvLyBF
Qm94QWxpZ25tZW50CiAgICAgdW5zaWduZWQgcGFjazogMjsgLy8gRUJveFBhY2sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKaW5kZXgg
YjBkM2JlMTEwMTVlNDc5ZmZhYzBhYTE1MDE1MGZmN2QxODVjMjBjMi4uMjBkYmMwOGU2NjI3Mzg2
ZGFlMzM0NWEzZjUyZWZmYTI1YjJiMzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKQEAgLTI2LDE5ICsyNiwxNSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0eWxlRmlsdGVyRGF0YS5oIgogCi0jaW5jbHVk
ZSAiRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKCkKLSAgICA6
IG1fb3BlcmF0aW9ucygpCiB7CiB9CiAKLWlubGluZSBTdHlsZUZpbHRlckRhdGE6OlN0eWxlRmls
dGVyRGF0YShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG8pCitpbmxpbmUgU3R5bGVGaWx0ZXJEYXRh
OjpTdHlsZUZpbHRlckRhdGEoY29uc3QgU3R5bGVGaWx0ZXJEYXRhJiBvdGhlcikKICAgICA6IFJl
ZkNvdW50ZWQ8U3R5bGVGaWx0ZXJEYXRhPigpCi0gICAgLCBtX29wZXJhdGlvbnMoby5tX29wZXJh
dGlvbnMpCisgICAgLCBvcGVyYXRpb25zKG90aGVyLm9wZXJhdGlvbnMpCiB7CiB9CiAKQEAgLTQ3
LDkgKzQzLDkgQEAgUmVmPFN0eWxlRmlsdGVyRGF0YT4gU3R5bGVGaWx0ZXJEYXRhOjpjb3B5KCkg
Y29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbHRlckRhdGEoKnRoaXMpKTsK
IH0KIAotYm9vbCBTdHlsZUZpbHRlckRhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWx0ZXJE
YXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZUZpbHRlckRhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVGaWx0ZXJEYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcGVyYXRpb25zID09
IG8ubV9vcGVyYXRpb25zOworICAgIHJldHVybiBvcGVyYXRpb25zID09IG90aGVyLm9wZXJhdGlv
bnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaAppbmRleCBjOTZlMzFlZTAzY2VlZDQ4YjUx
ZDQyYTMxNTdhYWE4ZmU5MjFjNTNkLi5hOGJhODMxZTJjMjU1ZDdlODJiZTgzZmE1NTkzMjhjMTJm
NGFmY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVG
aWx0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmls
dGVyRGF0YS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gbyk7CiAgICAgfQogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBtX29wZXJhdGlvbnM7Cisg
ICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogCiBwcml2YXRlOgogICAgIFN0eWxlRmls
dGVyRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlRmxleGlibGVCb3hEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKaW5kZXggOTllNTVlYjdlNjQ2OWQ5ZDY1NDU1ZjY5ZTFj
MmQyOGEyOTdjYmI3NS4uYTgyMTg0NDVhMTc2NzIxZWI5YWJkZDJmYzI4ZTg0ZWY0OWYzMGUwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVC
b3hEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4
aWJsZUJveERhdGEuY3BwCkBAIC0zMSwyMSArMzEsMjEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hEYXRhKCkKLSAgICA6IG1f
ZmxleEdyb3coUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4R3JvdygpKQotICAgICwgbV9mbGV4U2hy
aW5rKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFNocmluaygpKQotICAgICwgbV9mbGV4QmFzaXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4QmFzaXMoKSkKLSAgICAsIG1fZmxleERpcmVjdGlvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhEaXJlY3Rpb24oKSkKLSAgICAsIG1fZmxleFdyYXAoUmVu
ZGVyU3R5bGU6OmluaXRpYWxGbGV4V3JhcCgpKQorICAgIDogZmxleEdyb3coUmVuZGVyU3R5bGU6
OmluaXRpYWxGbGV4R3JvdygpKQorICAgICwgZmxleFNocmluayhSZW5kZXJTdHlsZTo6aW5pdGlh
bEZsZXhTaHJpbmsoKSkKKyAgICAsIGZsZXhCYXNpcyhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhC
YXNpcygpKQorICAgICwgZmxleERpcmVjdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhEaXJl
Y3Rpb24oKSkKKyAgICAsIGZsZXhXcmFwKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFdyYXAoKSkK
IHsKIH0KIAotaW5saW5lIFN0eWxlRmxleGlibGVCb3hEYXRhOjpTdHlsZUZsZXhpYmxlQm94RGF0
YShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykKK2lubGluZSBTdHlsZUZsZXhpYmxlQm94
RGF0YTo6U3R5bGVGbGV4aWJsZUJveERhdGEoY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG90
aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZUZsZXhpYmxlQm94RGF0YT4oKQotICAgICwgbV9m
bGV4R3JvdyhvLm1fZmxleEdyb3cpCi0gICAgLCBtX2ZsZXhTaHJpbmsoby5tX2ZsZXhTaHJpbmsp
Ci0gICAgLCBtX2ZsZXhCYXNpcyhvLm1fZmxleEJhc2lzKQotICAgICwgbV9mbGV4RGlyZWN0aW9u
KG8ubV9mbGV4RGlyZWN0aW9uKQotICAgICwgbV9mbGV4V3JhcChvLm1fZmxleFdyYXApCisgICAg
LCBmbGV4R3JvdyhvdGhlci5mbGV4R3JvdykKKyAgICAsIGZsZXhTaHJpbmsob3RoZXIuZmxleFNo
cmluaykKKyAgICAsIGZsZXhCYXNpcyhvdGhlci5mbGV4QmFzaXMpCisgICAgLCBmbGV4RGlyZWN0
aW9uKG90aGVyLmZsZXhEaXJlY3Rpb24pCisgICAgLCBmbGV4V3JhcChvdGhlci5mbGV4V3JhcCkK
IHsKIH0KIApAQCAtNTQsMTAgKzU0LDEwIEBAIFJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gU3R5
bGVGbGV4aWJsZUJveERhdGE6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlRmxleGlibGVCb3hEYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wgU3R5bGVGbGV4aWJsZUJv
eERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0Citi
b29sIFN0eWxlRmxleGlibGVCb3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmxleGlibGVC
b3hEYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mbGV4R3JvdyA9PSBvLm1fZmxl
eEdyb3cgJiYgbV9mbGV4U2hyaW5rID09IG8ubV9mbGV4U2hyaW5rICYmIG1fZmxleEJhc2lzID09
IG8ubV9mbGV4QmFzaXMKLSAgICAgICAgJiYgbV9mbGV4RGlyZWN0aW9uID09IG8ubV9mbGV4RGly
ZWN0aW9uICYmIG1fZmxleFdyYXAgPT0gby5tX2ZsZXhXcmFwOworICAgIHJldHVybiBmbGV4R3Jv
dyA9PSBvdGhlci5mbGV4R3JvdyAmJiBmbGV4U2hyaW5rID09IG90aGVyLmZsZXhTaHJpbmsgJiYg
ZmxleEJhc2lzID09IG90aGVyLmZsZXhCYXNpcworICAgICAgICAmJiBmbGV4RGlyZWN0aW9uID09
IG90aGVyLmZsZXhEaXJlY3Rpb24gJiYgZmxleFdyYXAgPT0gb3RoZXIuZmxleFdyYXA7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhp
YmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGli
bGVCb3hEYXRhLmgKaW5kZXggMzIzOGI4NmYyZmI1MDBkZGY0YTgwMmVhMzkwMmIwOGE2MTcwZDg2
OS4uZjU0ZDg1OTA0Yjk0YjRlYWY3MzcyNDA3MTcxYmZmZDNiZmUzNWY0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgK
QEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OwogICAgIH0KIAotICAgIGZsb2F0IG1fZmxleEdyb3c7Ci0gICAgZmxvYXQgbV9mbGV4U2hyaW5r
OwotICAgIExlbmd0aCBtX2ZsZXhCYXNpczsKKyAgICBmbG9hdCBmbGV4R3JvdzsKKyAgICBmbG9h
dCBmbGV4U2hyaW5rOworICAgIExlbmd0aCBmbGV4QmFzaXM7CiAKLSAgICB1bnNpZ25lZCBtX2Zs
ZXhEaXJlY3Rpb24gOiAyOyAvLyBFRmxleERpcmVjdGlvbgotICAgIHVuc2lnbmVkIG1fZmxleFdy
YXAgOiAyOyAvLyBFRmxleFdyYXAKKyAgICB1bnNpZ25lZCBmbGV4RGlyZWN0aW9uIDogMjsgLy8g
RUZsZXhEaXJlY3Rpb24KKyAgICB1bnNpZ25lZCBmbGV4V3JhcCA6IDI7IC8vIEVGbGV4V3JhcAog
CiBwcml2YXRlOgogICAgIFN0eWxlRmxleGlibGVCb3hEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXgg
MmM4NGIyZjU2N2YwN2ExOTU4YzcwZTY2YjZmM2Y0ZmM3ZDY4ZmUyMi4uYjAwNjM3ODE0ZWEzYjRi
NzE2MDE3OTAzZGZjZGRmZTI0YmEzMGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtMzksNyArMzksNyBA
QCBTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdlKFJlZjxDU1NJbWFnZUdl
bmVyYXRvclZhbHVlPiYmIHZhbHVlKQogCiBSZWY8Q1NTVmFsdWU+IFN0eWxlR2VuZXJhdGVkSW1h
Z2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdl
bmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4g
bV9pbWFnZUdlbmVyYXRvclZhbHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHlsZUdlbmVyYXRl
ZEltYWdlOjppc1BlbmRpbmcoKSBjb25zdApAQCAtNTYsNyArNTYsNyBAQCBGbG9hdFNpemUgU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBmbG9hdCBtdQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgaWYgKG1fZml4ZWRTaXpl
KSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBmaXhlZFNpemUgPSBjb25zdF9jYXN0PENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmZpeGVkU2l6ZSgqcmVu
ZGVyZXIpOworICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gbV9pbWFnZUdlbmVyYXRvclZh
bHVlLT5maXhlZFNpemUoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKG11bHRpcGxpZXIgPT0gMS4w
ZikKICAgICAgICAgICAgIHJldHVybiBmaXhlZFNpemU7CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2
b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikKIFJlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKIHsKICAgICBBU1NF
UlQocmVuZGVyZXIpOwotICAgIHJldHVybiBjb25zdF9jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFs
dWUmPihtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCkpLmltYWdlKCpyZW5kZXJlciwgc2l6ZSk7
CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1hZ2UoKnJlbmRlcmVyLCBzaXpl
KTsKIH0KIAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKaW5kZXggNTQ4MDYwNDQwMzBhNmE5ZGM4MGVk
NzRiMjQ4N2Y4MzdkNThmMzQzNS4uYzE0MWVmN2VhYWI3YzQ5NWEyOGFlNGQ4NjMzZTk4MzMzZjMz
MTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRE
YXRhLmNwcApAQCAtMzMsNTkgKzMzLDU5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxl
R3JpZERhdGE6OlN0eWxlR3JpZERhdGEoKQotICAgIDogbV9ncmlkQ29sdW1ucyhSZW5kZXJTdHls
ZTo6aW5pdGlhbEdyaWRDb2x1bW5zKCkpCi0gICAgLCBtX2dyaWRSb3dzKFJlbmRlclN0eWxlOjpp
bml0aWFsR3JpZFJvd3MoKSkKLSAgICAsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKQotICAgICwgbV9uYW1lZEdyaWRSb3dM
aW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0gICAgLCBtX29y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1l
ZEdyaWRDb2x1bW5MaW5lcygpKQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkKLSAgICAsIG1fYXV0
b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlk
Q29sdW1uTGluZXMoKSkKLSAgICAsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKLSAgICAsIG1fYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1l
ZEdyaWRDb2x1bW5MaW5lcygpKQotICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0g
ICAgLCBtX2dyaWRBdXRvRmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpKQot
ICAgICwgbV9ncmlkQXV0b1Jvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1Jvd3MoKSkK
LSAgICAsIG1fZ3JpZEF1dG9Db2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Db2x1
bW5zKCkpCi0gICAgLCBtX25hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdy
aWRBcmVhKCkpCi0gICAgLCBtX25hbWVkR3JpZEFyZWFSb3dDb3VudChSZW5kZXJTdHlsZTo6aW5p
dGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQotICAgICwgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKLSAgICAsIG1fZ3Jp
ZENvbHVtbkdhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5HYXAoKSkKLSAgICAsIG1f
Z3JpZFJvd0dhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dHYXAoKSkKLSAgICAsIG1fZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFj
a3MoKSkKLSAgICAsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEF1dG9SZXBlYXRUcmFja3MoKSkKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkK
LSAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChSZW5kZXJTdHlsZTo6aW5pdGlh
bEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVt
bnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkpCi0gICAgLCBt
X2F1dG9SZXBlYXRSb3dzVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlw
ZSgpKQorICAgIDogZ3JpZENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1ucygp
KQorICAgICwgZ3JpZFJvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93cygpKQorICAgICwg
bmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5M
aW5lcygpKQorICAgICwgbmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1l
ZEdyaWRSb3dMaW5lcygpKQorICAgICwgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRl
clN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCisgICAgLCBvcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlk
Um93TGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJT
dHlsZTo6aW5pdGlhbE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCisgICAgLCBhdXRvUmVwZWF0TmFt
ZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKQor
ICAgICwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6
aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpKQorICAgICwgYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcygpKQorICAgICwgZ3JpZEF1dG9GbG93KFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEF1dG9GbG93KCkpCisgICAgLCBncmlkQXV0b1Jvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlk
QXV0b1Jvd3MoKSkKKyAgICAsIGdyaWRBdXRvQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvQ29sdW1ucygpKQorICAgICwgbmFtZWRHcmlkQXJlYShSZW5kZXJTdHlsZTo6aW5pdGlh
bE5hbWVkR3JpZEFyZWEoKSkKKyAgICAsIG5hbWVkR3JpZEFyZWFSb3dDb3VudChSZW5kZXJTdHls
ZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQorICAgICwgbmFtZWRHcmlkQXJlYUNvbHVt
bkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCisgICAgLCBn
cmlkQ29sdW1uR2FwKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbkdhcCgpKQorICAgICwg
Z3JpZFJvd0dhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dHYXAoKSkKKyAgICAsIGdyaWRB
dXRvUmVwZWF0Q29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tz
KCkpCisgICAgLCBncmlkQXV0b1JlcGVhdFJvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0
b1JlcGVhdFRyYWNrcygpKQorICAgICwgYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAs
IGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0
b1JlcGVhdEluc2VydGlvblBvaW50KCkpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc1R5cGUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKKyAgICAsIGF1dG9SZXBlYXRS
b3dzVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpKQogewogfQog
CiBpbmxpbmUgU3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRh
JiBvKQogICAgIDogUmVmQ291bnRlZDxTdHlsZUdyaWREYXRhPigpCi0gICAgLCBtX2dyaWRDb2x1
bW5zKG8ubV9ncmlkQ29sdW1ucykKLSAgICAsIG1fZ3JpZFJvd3Moby5tX2dyaWRSb3dzKQotICAg
ICwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1fbmFtZWRHcmlkQ29sdW1uTGluZXMpCi0gICAg
LCBtX25hbWVkR3JpZFJvd0xpbmVzKG8ubV9uYW1lZEdyaWRSb3dMaW5lcykKLSAgICAsIG1fb3Jk
ZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMp
Ci0gICAgLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLm1fb3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoby5tX2F1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcykKLSAgICAsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJv
d0xpbmVzKG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMpCi0gICAgLCBtX2F1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMpCi0gICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMoby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpCi0gICAgLCBtX2dyaWRB
dXRvRmxvdyhvLm1fZ3JpZEF1dG9GbG93KQotICAgICwgbV9ncmlkQXV0b1Jvd3Moby5tX2dyaWRB
dXRvUm93cykKLSAgICAsIG1fZ3JpZEF1dG9Db2x1bW5zKG8ubV9ncmlkQXV0b0NvbHVtbnMpCi0g
ICAgLCBtX25hbWVkR3JpZEFyZWEoby5tX25hbWVkR3JpZEFyZWEpCi0gICAgLCBtX25hbWVkR3Jp
ZEFyZWFSb3dDb3VudChvLm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50KQotICAgICwgbV9uYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoby5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCkKLSAgICAsIG1f
Z3JpZENvbHVtbkdhcChvLm1fZ3JpZENvbHVtbkdhcCkKLSAgICAsIG1fZ3JpZFJvd0dhcChvLm1f
Z3JpZFJvd0dhcCkKLSAgICAsIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKG8ubV9ncmlkQXV0b1Jl
cGVhdENvbHVtbnMpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Um93cyhvLm1fZ3JpZEF1dG9SZXBl
YXRSb3dzKQotICAgICwgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KG8ubV9hdXRv
UmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KQotICAgICwgbV9hdXRvUmVwZWF0Um93c0luc2Vy
dGlvblBvaW50KG8ubV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KQotICAgICwgbV9hdXRv
UmVwZWF0Q29sdW1uc1R5cGUoby5tX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSkKLSAgICAsIG1fYXV0
b1JlcGVhdFJvd3NUeXBlKG8ubV9hdXRvUmVwZWF0Um93c1R5cGUpCisgICAgLCBncmlkQ29sdW1u
cyhvLmdyaWRDb2x1bW5zKQorICAgICwgZ3JpZFJvd3Moby5ncmlkUm93cykKKyAgICAsIG5hbWVk
R3JpZENvbHVtbkxpbmVzKG8ubmFtZWRHcmlkQ29sdW1uTGluZXMpCisgICAgLCBuYW1lZEdyaWRS
b3dMaW5lcyhvLm5hbWVkR3JpZFJvd0xpbmVzKQorICAgICwgb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzKG8ub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQorICAgICwgb3JkZXJlZE5hbWVk
R3JpZFJvd0xpbmVzKG8ub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKQorICAgICwgYXV0b1JlcGVh
dE5hbWVkR3JpZENvbHVtbkxpbmVzKG8uYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKQor
ICAgICwgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKG8uYXV0b1JlcGVhdE5hbWVkR3JpZFJv
d0xpbmVzKQorICAgICwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLmF1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpCisgICAgLCBhdXRvUmVwZWF0T3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8uYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
cykKKyAgICAsIGdyaWRBdXRvRmxvdyhvLmdyaWRBdXRvRmxvdykKKyAgICAsIGdyaWRBdXRvUm93
cyhvLmdyaWRBdXRvUm93cykKKyAgICAsIGdyaWRBdXRvQ29sdW1ucyhvLmdyaWRBdXRvQ29sdW1u
cykKKyAgICAsIG5hbWVkR3JpZEFyZWEoby5uYW1lZEdyaWRBcmVhKQorICAgICwgbmFtZWRHcmlk
QXJlYVJvd0NvdW50KG8ubmFtZWRHcmlkQXJlYVJvd0NvdW50KQorICAgICwgbmFtZWRHcmlkQXJl
YUNvbHVtbkNvdW50KG8ubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KQorICAgICwgZ3JpZENvbHVt
bkdhcChvLmdyaWRDb2x1bW5HYXApCisgICAgLCBncmlkUm93R2FwKG8uZ3JpZFJvd0dhcCkKKyAg
ICAsIGdyaWRBdXRvUmVwZWF0Q29sdW1ucyhvLmdyaWRBdXRvUmVwZWF0Q29sdW1ucykKKyAgICAs
IGdyaWRBdXRvUmVwZWF0Um93cyhvLmdyaWRBdXRvUmVwZWF0Um93cykKKyAgICAsIGF1dG9SZXBl
YXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoby5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
KQorICAgICwgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLmF1dG9SZXBlYXRSb3dzSW5z
ZXJ0aW9uUG9pbnQpCisgICAgLCBhdXRvUmVwZWF0Q29sdW1uc1R5cGUoby5hdXRvUmVwZWF0Q29s
dW1uc1R5cGUpCisgICAgLCBhdXRvUmVwZWF0Um93c1R5cGUoby5hdXRvUmVwZWF0Um93c1R5cGUp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5oCmluZGV4IDE0NGVmYWI4YmM4ZmFjN2ZjN2M1N2YzNDMzZDMyY2NiYWFhODk4NGMuLmIxMWYz
MGE1YzZmNDRlNmM3MjQzOGM5Y2ZmYjkzY2RmMTJkYzFmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtNDgsMTggKzQ4LDE4IEBAIHB1
YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVHcmlkRGF0YSYgbykgY29uc3QK
ICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBjb21wYXJpbmcgdHdvIGhhc2hlcyBkb2Vzbid0IGxv
b2sgZ3JlYXQgZm9yIHBlcmZvcm1hbmNlLiBTb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGdvaW5n
IGZvcndhcmQuCi0gICAgICAgIHJldHVybiBtX2dyaWRDb2x1bW5zID09IG8ubV9ncmlkQ29sdW1u
cyAmJiBtX2dyaWRSb3dzID09IG8ubV9ncmlkUm93cwotICAgICAgICAgICAgJiYgbV9ncmlkQXV0
b0Zsb3cgPT0gby5tX2dyaWRBdXRvRmxvdyAmJiBtX2dyaWRBdXRvUm93cyA9PSBvLm1fZ3JpZEF1
dG9Sb3dzICYmIG1fZ3JpZEF1dG9Db2x1bW5zID09IG8ubV9ncmlkQXV0b0NvbHVtbnMKLSAgICAg
ICAgICAgICYmIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX25hbWVkR3JpZENvbHVtbkxp
bmVzICYmIG1fbmFtZWRHcmlkUm93TGluZXMgPT0gby5tX25hbWVkR3JpZFJvd0xpbmVzCi0gICAg
ICAgICAgICAmJiBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fYXV0b1Jl
cGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVz
ID09IG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMKLSAgICAgICAgICAgICYmIG1fYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93
TGluZXMgPT0gby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMKLSAgICAgICAg
ICAgICYmIG1fbmFtZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJlYSAmJiBtX25hbWVkR3Jp
ZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEKLSAgICAgICAgICAgICYmIG1fbmFtZWRHcmlkQXJl
YVJvd0NvdW50ID09IG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQgJiYgbV9uYW1lZEdyaWRBcmVh
Q29sdW1uQ291bnQgPT0gby5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAotICAgICAgICAgICAg
JiYgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgPT0gby5tX29yZGVyZWROYW1lZEdyaWRSb3dM
aW5lcyAmJiBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fb3JkZXJlZE5hbWVk
R3JpZENvbHVtbkxpbmVzCi0gICAgICAgICAgICAmJiBtX2dyaWRDb2x1bW5HYXAgPT0gby5tX2dy
aWRDb2x1bW5HYXAgJiYgbV9ncmlkUm93R2FwID09IG8ubV9ncmlkUm93R2FwCi0gICAgICAgICAg
ICAmJiBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyA9PSBvLm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5z
ICYmIG1fZ3JpZEF1dG9SZXBlYXRSb3dzID09IG8ubV9ncmlkQXV0b1JlcGVhdFJvd3MKLSAgICAg
ICAgICAgICYmIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCA9PSBvLm1fYXV0b1Jl
cGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCAmJiBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9p
bnQgPT0gby5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQKLSAgICAgICAgICAgICYmIG1f
YXV0b1JlcGVhdENvbHVtbnNUeXBlID09IG8ubV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgbV9h
dXRvUmVwZWF0Um93c1R5cGUgPT0gby5tX2F1dG9SZXBlYXRSb3dzVHlwZTsKKyAgICAgICAgcmV0
dXJuIGdyaWRDb2x1bW5zID09IG8uZ3JpZENvbHVtbnMgJiYgZ3JpZFJvd3MgPT0gby5ncmlkUm93
cworICAgICAgICAgICAgJiYgZ3JpZEF1dG9GbG93ID09IG8uZ3JpZEF1dG9GbG93ICYmIGdyaWRB
dXRvUm93cyA9PSBvLmdyaWRBdXRvUm93cyAmJiBncmlkQXV0b0NvbHVtbnMgPT0gby5ncmlkQXV0
b0NvbHVtbnMKKyAgICAgICAgICAgICYmIG5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubmFtZWRH
cmlkQ29sdW1uTGluZXMgJiYgbmFtZWRHcmlkUm93TGluZXMgPT0gby5uYW1lZEdyaWRSb3dMaW5l
cworICAgICAgICAgICAgJiYgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzID09IG8uYXV0
b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5l
cyA9PSBvLmF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcworICAgICAgICAgICAgJiYgYXV0b1Jl
cGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLmF1dG9SZXBlYXRPcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMgJiYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyA9
PSBvLmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIG5h
bWVkR3JpZEFyZWEgPT0gby5uYW1lZEdyaWRBcmVhICYmIG5hbWVkR3JpZEFyZWEgPT0gby5uYW1l
ZEdyaWRBcmVhCisgICAgICAgICAgICAmJiBuYW1lZEdyaWRBcmVhUm93Q291bnQgPT0gby5uYW1l
ZEdyaWRBcmVhUm93Q291bnQgJiYgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50ID09IG8ubmFtZWRH
cmlkQXJlYUNvbHVtbkNvdW50CisgICAgICAgICAgICAmJiBvcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMgPT0gby5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgJiYgb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzID09IG8ub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzCisgICAgICAgICAgICAmJiBn
cmlkQ29sdW1uR2FwID09IG8uZ3JpZENvbHVtbkdhcCAmJiBncmlkUm93R2FwID09IG8uZ3JpZFJv
d0dhcAorICAgICAgICAgICAgJiYgZ3JpZEF1dG9SZXBlYXRDb2x1bW5zID09IG8uZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zICYmIGdyaWRBdXRvUmVwZWF0Um93cyA9PSBvLmdyaWRBdXRvUmVwZWF0Um93
cworICAgICAgICAgICAgJiYgYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCA9PSBvLmF1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgJiYgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Q
b2ludCA9PSBvLmF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQKKyAgICAgICAgICAgICYmIGF1
dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLmF1dG9SZXBlYXRDb2x1bW5zVHlwZSAmJiBhdXRvUmVw
ZWF0Um93c1R5cGUgPT0gby5hdXRvUmVwZWF0Um93c1R5cGU7CiAgICAgfQogCiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CkBAIC02Nyw0MyArNjcsNDIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICAv
LyBGSVhNRTogVXBkYXRlIHRoZSBuYW1pbmcgb2YgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMuCi0g
ICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fZ3JpZENvbHVtbnM7Ci0gICAgVmVjdG9yPEdyaWRU
cmFja1NpemU+IG1fZ3JpZFJvd3M7CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRDb2x1
bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkUm93czsKIAotICAgIE5hbWVkR3Jp
ZExpbmVzTWFwIG1fbmFtZWRHcmlkQ29sdW1uTGluZXM7Ci0gICAgTmFtZWRHcmlkTGluZXNNYXAg
bV9uYW1lZEdyaWRSb3dMaW5lczsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRDb2x1
bW5MaW5lczsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRSb3dMaW5lczsKIAotICAg
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsK
LSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7
CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
czsKKyAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
OwogCi0gICAgTmFtZWRHcmlkTGluZXNNYXAgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXM7Ci0gICAgTmFtZWRHcmlkTGluZXNNYXAgbV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXM7
Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lczsKLSAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9hdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE5hbWVkR3JpZExpbmVzTWFwIGF1dG9SZXBl
YXROYW1lZEdyaWRDb2x1bW5MaW5lczsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0
TmFtZWRHcmlkUm93TGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVz
TWFwIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7CiAKLSAgICB1bnNpZ25lZCBt
X2dyaWRBdXRvRmxvdyA6IEdyaWRBdXRvRmxvd0JpdHM7CisgICAgdW5zaWduZWQgZ3JpZEF1dG9G
bG93IDogR3JpZEF1dG9GbG93Qml0czsKIAotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dy
aWRBdXRvUm93czsKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b0NvbHVtbnM7
CisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvUm93czsKKyAgICBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gZ3JpZEF1dG9Db2x1bW5zOwogCi0gICAgTmFtZWRHcmlkQXJlYU1hcCBtX25h
bWVkR3JpZEFyZWE7Ci0gICAgLy8gQmVjYXVzZSBtX25hbWVkR3JpZEFyZWEgZG9lc24ndCBzdG9y
ZSB0aGUgdW5uYW1lZCBncmlkIGFyZWFzLCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sKKyAgICBOYW1l
ZEdyaWRBcmVhTWFwIG5hbWVkR3JpZEFyZWE7CisgICAgLy8gQmVjYXVzZSBuYW1lZEdyaWRBcmVh
IGRvZXNuJ3Qgc3RvcmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBrZWVwIHRy
YWNrCiAgICAgLy8gb2YgdGhlIGV4cGxpY2l0IGdyaWQgc2l6ZSBkZWZpbmVkIGJ5IGJvdGggbmFt
ZWQgYW5kIHVubmFtZWQgZ3JpZCBhcmVhcy4KLSAgICB1bnNpZ25lZCBtX25hbWVkR3JpZEFyZWFS
b3dDb3VudDsKLSAgICB1bnNpZ25lZCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudDsKKyAgICB1
bnNpZ25lZCBuYW1lZEdyaWRBcmVhUm93Q291bnQ7CisgICAgdW5zaWduZWQgbmFtZWRHcmlkQXJl
YUNvbHVtbkNvdW50OwogCi0gICAgTGVuZ3RoIG1fZ3JpZENvbHVtbkdhcDsKLSAgICBMZW5ndGgg
bV9ncmlkUm93R2FwOworICAgIExlbmd0aCBncmlkQ29sdW1uR2FwOworICAgIExlbmd0aCBncmlk
Um93R2FwOwogCi0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fZ3JpZEF1dG9SZXBlYXRDb2x1
bW5zOwotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRBdXRvUmVwZWF0Um93czsKKyAg
ICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1dG9SZXBlYXRDb2x1bW5zOworICAgIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiBncmlkQXV0b1JlcGVhdFJvd3M7CiAKLSAgICB1bnNpZ25lZCBtX2F1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQ7Ci0gICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0
Um93c0luc2VydGlvblBvaW50OworICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0
aW9uUG9pbnQ7CisgICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludDsKIAot
ICAgIEF1dG9SZXBlYXRUeXBlIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlOwotICAgIEF1dG9SZXBl
YXRUeXBlIG1fYXV0b1JlcGVhdFJvd3NUeXBlOworICAgIEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBl
YXRDb2x1bW5zVHlwZTsKKyAgICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0Um93c1R5cGU7CiAK
IHByaXZhdGU6CiAgICAgU3R5bGVHcmlkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKaW5kZXggMTAyYmU5MDhkNzZj
ZGQ2ZmZhMTcyZDRhMmEyYTIyNmRlNWIzYjVjZC4uYzJkYjhlNzQ4MjViMjAxZTQxNzQ0NzFkZmQy
MTQ1NjYzNjc0N2VkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR3JpZEl0ZW1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlN0eWxlR3JpZEl0ZW1EYXRhLmgiCiAKQEAgLTM3LDE5ICszOCwxOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEoKQotICAgIDog
bV9ncmlkQ29sdW1uU3RhcnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbUNvbHVtblN0YXJ0
KCkpCi0gICAgLCBtX2dyaWRDb2x1bW5FbmQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkSXRlbUNv
bHVtbkVuZCgpKQotICAgICwgbV9ncmlkUm93U3RhcnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlk
SXRlbVJvd1N0YXJ0KCkpCi0gICAgLCBtX2dyaWRSb3dFbmQoUmVuZGVyU3R5bGU6OmluaXRpYWxH
cmlkSXRlbVJvd0VuZCgpKQorICAgIDogZ3JpZENvbHVtblN0YXJ0KFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEl0ZW1Db2x1bW5TdGFydCgpKQorICAgICwgZ3JpZENvbHVtbkVuZChSZW5kZXJTdHls
ZTo6aW5pdGlhbEdyaWRJdGVtQ29sdW1uRW5kKCkpCisgICAgLCBncmlkUm93U3RhcnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxHcmlkSXRlbVJvd1N0YXJ0KCkpCisgICAgLCBncmlkUm93RW5kKFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dFbmQoKSkKIHsKIH0KIAogaW5saW5lIFN0eWxlR3Jp
ZEl0ZW1EYXRhOjpTdHlsZUdyaWRJdGVtRGF0YShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykK
ICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVHcmlkSXRlbURhdGE+KCkKLSAgICAsIG1fZ3JpZENvbHVt
blN0YXJ0KG8ubV9ncmlkQ29sdW1uU3RhcnQpCi0gICAgLCBtX2dyaWRDb2x1bW5FbmQoby5tX2dy
aWRDb2x1bW5FbmQpCi0gICAgLCBtX2dyaWRSb3dTdGFydChvLm1fZ3JpZFJvd1N0YXJ0KQotICAg
ICwgbV9ncmlkUm93RW5kKG8ubV9ncmlkUm93RW5kKQorICAgICwgZ3JpZENvbHVtblN0YXJ0KG8u
Z3JpZENvbHVtblN0YXJ0KQorICAgICwgZ3JpZENvbHVtbkVuZChvLmdyaWRDb2x1bW5FbmQpCisg
ICAgLCBncmlkUm93U3RhcnQoby5ncmlkUm93U3RhcnQpCisgICAgLCBncmlkUm93RW5kKG8uZ3Jp
ZFJvd0VuZCkKIHsKIH0KIApAQCAtNjAsNCArNjEsNCBAQCBSZWY8U3R5bGVHcmlkSXRlbURhdGE+
IFN0eWxlR3JpZEl0ZW1EYXRhOjpjb3B5KCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaAppbmRl
eCA4YjI4ZDk0YjQxYjI5YjAwMjE0Y2RjNjRlYmYxNjE3NDA3YWUwZGQ2Li44MGM4NGZjNzMxZTJm
Y2JmZmRmZjUwODNlMjNjYzIwYTE0ZTg0YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVHcmlkSXRlbURhdGEmIG8pIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9ncmlkQ29sdW1uU3RhcnQgPT0gby5tX2dyaWRD
b2x1bW5TdGFydCAmJiBtX2dyaWRDb2x1bW5FbmQgPT0gby5tX2dyaWRDb2x1bW5FbmQKLSAgICAg
ICAgICAgICYmIG1fZ3JpZFJvd1N0YXJ0ID09IG8ubV9ncmlkUm93U3RhcnQgJiYgbV9ncmlkUm93
RW5kID09IG8ubV9ncmlkUm93RW5kOworICAgICAgICByZXR1cm4gZ3JpZENvbHVtblN0YXJ0ID09
IG8uZ3JpZENvbHVtblN0YXJ0ICYmIGdyaWRDb2x1bW5FbmQgPT0gby5ncmlkQ29sdW1uRW5kCisg
ICAgICAgICAgICAmJiBncmlkUm93U3RhcnQgPT0gby5ncmlkUm93U3RhcnQgJiYgZ3JpZFJvd0Vu
ZCA9PSBvLmdyaWRSb3dFbmQ7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
eWxlR3JpZEl0ZW1EYXRhJiBvKSBjb25zdApAQCAtNTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQogCi0gICAgR3JpZFBvc2l0aW9uIG1f
Z3JpZENvbHVtblN0YXJ0OwotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRDb2x1bW5FbmQ7Ci0gICAg
R3JpZFBvc2l0aW9uIG1fZ3JpZFJvd1N0YXJ0OwotICAgIEdyaWRQb3NpdGlvbiBtX2dyaWRSb3dF
bmQ7CisgICAgR3JpZFBvc2l0aW9uIGdyaWRDb2x1bW5TdGFydDsKKyAgICBHcmlkUG9zaXRpb24g
Z3JpZENvbHVtbkVuZDsKKyAgICBHcmlkUG9zaXRpb24gZ3JpZFJvd1N0YXJ0OworICAgIEdyaWRQ
b3NpdGlvbiBncmlkUm93RW5kOwogCiBwcml2YXRlOgogICAgIFN0eWxlR3JpZEl0ZW1EYXRhKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0
ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRl
ZERhdGEuY3BwCmluZGV4IDYzMzlmNmRkZWIxN2M5NzVhMTc4OGFiMWM4ZGE0MzI2ZWYxZTg1OTEu
LmE1ZTM1N2VlOTMxMjNmMTJkNzQyNmYwNzMwMDY3NWExMjFmYWI1NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCkBA
IC0yNyw5ICsyNyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlSW5oZXJpdGVkRGF0
YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKLSAgICA6IGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmco
UmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKQotICAgICwgdmVy
dGljYWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNw
YWNpbmcoKSkKLSAgICAsIGxpbmVfaGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdo
dCgpKQorICAgIDogaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxI
b3Jpem9udGFsQm9yZGVyU3BhY2luZygpKQorICAgICwgdmVydGljYWxCb3JkZXJTcGFjaW5nKFJl
bmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCisgICAgLCBsaW5lSGVp
Z2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKQogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCiAgICAgLCBzcGVjaWZpZWRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFs
TGluZUhlaWdodCgpKQogI2VuZGlmCkBAIC0zOCwxNSArMzgsMTEgQEAgU3R5bGVJbmhlcml0ZWRE
YXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogewogfQogCi1TdHlsZUluaGVyaXRlZERhdGE6On5T
dHlsZUluaGVyaXRlZERhdGEoKQotewotfQotCiBpbmxpbmUgU3R5bGVJbmhlcml0ZWREYXRhOjpT
dHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKQogICAgIDogUmVm
Q291bnRlZDxTdHlsZUluaGVyaXRlZERhdGE+KCkKLSAgICAsIGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcoby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKQotICAgICwgdmVydGljYWxfYm9yZGVy
X3NwYWNpbmcoby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykKLSAgICAsIGxpbmVfaGVpZ2h0KG8u
bGluZV9oZWlnaHQpCisgICAgLCBob3Jpem9udGFsQm9yZGVyU3BhY2luZyhvLmhvcml6b250YWxC
b3JkZXJTcGFjaW5nKQorICAgICwgdmVydGljYWxCb3JkZXJTcGFjaW5nKG8udmVydGljYWxCb3Jk
ZXJTcGFjaW5nKQorICAgICwgbGluZUhlaWdodChvLmxpbmVIZWlnaHQpCiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKICAgICAsIHNwZWNpZmllZExpbmVIZWlnaHQoby5zcGVjaWZpZWRMaW5l
SGVpZ2h0KQogI2VuZGlmCkBAIC02MywxNSArNTksMTUgQEAgUmVmPFN0eWxlSW5oZXJpdGVkRGF0
YT4gU3R5bGVJbmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKIAogYm9vbCBTdHlsZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogewot
ICAgIHJldHVybiBsaW5lX2hlaWdodCA9PSBvLmxpbmVfaGVpZ2h0CisgICAgcmV0dXJuIGxpbmVI
ZWlnaHQgPT0gby5saW5lSGVpZ2h0CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAg
ICAgJiYgc3BlY2lmaWVkTGluZUhlaWdodCA9PSBvLnNwZWNpZmllZExpbmVIZWlnaHQKICNlbmRp
ZgogICAgICAgICAmJiBmb250Q2FzY2FkZSA9PSBvLmZvbnRDYXNjYWRlCiAgICAgICAgICYmIGNv
bG9yID09IG8uY29sb3IKICAgICAgICAgJiYgdmlzaXRlZExpbmtDb2xvciA9PSBvLnZpc2l0ZWRM
aW5rQ29sb3IKLSAgICAgICAgJiYgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmcKLSAgICAgICAgJiYgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcg
PT0gby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZzsKKyAgICAgICAgJiYgaG9yaXpvbnRhbEJvcmRl
clNwYWNpbmcgPT0gby5ob3Jpem9udGFsQm9yZGVyU3BhY2luZworICAgICAgICAmJiB2ZXJ0aWNh
bEJvcmRlclNwYWNpbmcgPT0gby52ZXJ0aWNhbEJvcmRlclNwYWNpbmc7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUluaGVyaXRlZERhdGEuaAppbmRleCAyOWJmY2I0NDNhMGRlMDgwOWY0NGVjYTRkZjEzZGMy
MjZmNzJhODI4Li5kNjU1NTgzNWFjOGUwOTMwNTA2MDU1ZGZjOGIxOWEyODg5MjgwMTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0
YS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAg
LTI3LDkgKzI3LDYgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM3LDIwICszNCwxNCBAQCBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZUluaGVyaXRlZERhdGEpOyB9CiAgICAgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4g
Y29weSgpIGNvbnN0OwotICAgIH5TdHlsZUluaGVyaXRlZERhdGEoKTsKIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlSW5oZXJpdGVkRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZUluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsgfQogCi0gICAgZmxvYXQgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsKLSAgICBmbG9hdCB2
ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZzsKKyAgICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3BhY2lu
ZzsKKyAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmc7CiAKLSAgICAvLyBjb3VsZCBiZSBw
YWNrZWQgaW4gYSBzaG9ydCBidXQgZG9lc24ndAotICAgIC8vIG1ha2UgYSBkaWZmZXJlbmNlIGN1
cnJlbnRseSBiZWNhdXNlIG9mIHBhZGRpbmcKLSAgICBMZW5ndGggbGluZV9oZWlnaHQ7CisgICAg
TGVuZ3RoIGxpbmVIZWlnaHQ7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBMZW5n
dGggc3BlY2lmaWVkTGluZUhlaWdodDsKICNlbmRpZgpAQCAtNjIsNiArNTMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFN0eWxlSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlSW5oZXJpdGVk
RGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25z
dCBTdHlsZUluaGVyaXRlZERhdGEmKSA9IGRlbGV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11
bHRpQ29sRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0
aUNvbERhdGEuY3BwCmluZGV4IDVjOTBlMjBhMTgwZDJhYWQ2YTRmOTc5MGQwZDRhYmU3NTRmNzY0
NzQuLmI3ZTc5NGY4NGIzOTdjZmQ4YjZhNDlhYWZlMWY3ZmI5OGI3NzkyMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNywzMyArMjcsMzEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVN
dWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKCkKLSAgICA6IG1fd2lkdGgoMCkKLSAgICAs
IG1fY291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Db3VudCgpKQotICAgICwgbV9nYXAo
MCkKLSAgICAsIG1fYXV0b1dpZHRoKHRydWUpCi0gICAgLCBtX2F1dG9Db3VudCh0cnVlKQotICAg
ICwgbV9ub3JtYWxHYXAodHJ1ZSkKLSAgICAsIG1fZmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbENv
bHVtbkZpbGwoKSkKLSAgICAsIG1fY29sdW1uU3BhbihmYWxzZSkKLSAgICAsIG1fYXhpcyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbHVtbkF4aXMoKSkKLSAgICAsIG1fcHJvZ3Jlc3Npb24oUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQorICAgIDogY291bnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2x1bW5Db3VudCgpKQorICAgICwgYXV0b1dpZHRoKHRydWUpCisgICAgLCBh
dXRvQ291bnQodHJ1ZSkKKyAgICAsIG5vcm1hbEdhcCh0cnVlKQorICAgICwgZmlsbChSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbHVtbkZpbGwoKSkKKyAgICAsIGNvbHVtblNwYW4oZmFsc2UpCisgICAg
LCBheGlzKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQorICAgICwgcHJvZ3Jlc3Np
b24oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQogewogfQogCi1pbmxp
bmUgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlD
b2xEYXRhJiBvKQoraW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YShj
b25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlTXVs
dGlDb2xEYXRhPigpCi0gICAgLCBtX3dpZHRoKG8ubV93aWR0aCkKLSAgICAsIG1fY291bnQoby5t
X2NvdW50KQotICAgICwgbV9nYXAoby5tX2dhcCkKLSAgICAsIG1fcnVsZShvLm1fcnVsZSkKLSAg
ICAsIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yKQotICAgICwgbV9hdXRvV2lkdGgoby5tX2F1dG9XaWR0aCkKLSAgICAsIG1fYXV0b0Nv
dW50KG8ubV9hdXRvQ291bnQpCi0gICAgLCBtX25vcm1hbEdhcChvLm1fbm9ybWFsR2FwKQotICAg
ICwgbV9maWxsKG8ubV9maWxsKQotICAgICwgbV9jb2x1bW5TcGFuKG8ubV9jb2x1bW5TcGFuKQot
ICAgICwgbV9heGlzKG8ubV9heGlzKQotICAgICwgbV9wcm9ncmVzc2lvbihvLm1fcHJvZ3Jlc3Np
b24pCisgICAgLCB3aWR0aChvdGhlci53aWR0aCkKKyAgICAsIGNvdW50KG90aGVyLmNvdW50KQor
ICAgICwgZ2FwKG90aGVyLmdhcCkKKyAgICAsIHJ1bGUob3RoZXIucnVsZSkKKyAgICAsIHZpc2l0
ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKG90aGVyLnZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKQor
ICAgICwgYXV0b1dpZHRoKG90aGVyLmF1dG9XaWR0aCkKKyAgICAsIGF1dG9Db3VudChvdGhlci5h
dXRvQ291bnQpCisgICAgLCBub3JtYWxHYXAob3RoZXIubm9ybWFsR2FwKQorICAgICwgZmlsbChv
dGhlci5maWxsKQorICAgICwgY29sdW1uU3BhbihvdGhlci5jb2x1bW5TcGFuKQorICAgICwgYXhp
cyhvdGhlci5heGlzKQorICAgICwgcHJvZ3Jlc3Npb24ob3RoZXIucHJvZ3Jlc3Npb24pCiB7CiB9
CiAKQEAgLTYyLDEzICs2MCwxMyBAQCBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IFN0eWxlTXVsdGlD
b2xEYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRp
Q29sRGF0YSgqdGhpcykpOwogfQogCi1ib29sIFN0eWxlTXVsdGlDb2xEYXRhOjpvcGVyYXRvcj09
KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZU11bHRpQ29sRGF0
YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fY291bnQgPT0gby5tX2NvdW50ICYm
IG1fZ2FwID09IG8ubV9nYXAKLSAgICAgICAgJiYgbV9ydWxlID09IG8ubV9ydWxlICYmIG1fdmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
Ci0gICAgICAgICYmIG1fYXV0b1dpZHRoID09IG8ubV9hdXRvV2lkdGggJiYgbV9hdXRvQ291bnQg
PT0gby5tX2F1dG9Db3VudCAmJiBtX25vcm1hbEdhcCA9PSBvLm1fbm9ybWFsR2FwCi0gICAgICAg
ICYmIG1fZmlsbCA9PSBvLm1fZmlsbCAmJiBtX2NvbHVtblNwYW4gPT0gby5tX2NvbHVtblNwYW4K
LSAgICAgICAgJiYgbV9heGlzID09IG8ubV9heGlzICYmIG1fcHJvZ3Jlc3Npb24gPT0gby5tX3By
b2dyZXNzaW9uOworICAgIHJldHVybiB3aWR0aCA9PSBvdGhlci53aWR0aCAmJiBjb3VudCA9PSBv
dGhlci5jb3VudCAmJiBnYXAgPT0gb3RoZXIuZ2FwCisgICAgICAgICYmIHJ1bGUgPT0gb3RoZXIu
cnVsZSAmJiB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciA9PSBvdGhlci52aXNpdGVkTGlua0Nv
bHVtblJ1bGVDb2xvcgorICAgICAgICAmJiBhdXRvV2lkdGggPT0gb3RoZXIuYXV0b1dpZHRoICYm
IGF1dG9Db3VudCA9PSBvdGhlci5hdXRvQ291bnQgJiYgbm9ybWFsR2FwID09IG90aGVyLm5vcm1h
bEdhcAorICAgICAgICAmJiBmaWxsID09IG90aGVyLmZpbGwgJiYgY29sdW1uU3BhbiA9PSBvdGhl
ci5jb2x1bW5TcGFuCisgICAgICAgICYmIGF4aXMgPT0gb3RoZXIuYXhpcyAmJiBwcm9ncmVzc2lv
biA9PSBvdGhlci5wcm9ncmVzc2lvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaApp
bmRleCAyOTM0Zjk4NTU2N2U3ZDExMTMzYTRjNmRlNTNmZTFhNThkNDUzMjcwLi41YmRmODFkNTE3
YjkwZDE5NjhjZDIyZDM3NjE3N2MyN2JiZDY5M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaApAQCAtMiw3ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0u
ZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zOCwzMiArMzgsMjkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEpOyB9CiAgICAgUmVmPFN0eWxlTXVsdGlDb2xE
YXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
TXVsdGlDb2xEYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVN
dWx0aUNvbERhdGEgJm8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
KTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHVuc2lnbmVkIHNo
b3J0IHJ1bGVXaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9ydWxlLnN0eWxlKCkg
PT0gQk5PTkUgfHwgbV9ydWxlLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgaWYgKHJ1bGUu
c3R5bGUoKSA9PSBCTk9ORSB8fCBydWxlLnN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAg
IHJldHVybiAwOyAKLSAgICAgICAgcmV0dXJuIG1fcnVsZS53aWR0aCgpOworICAgICAgICByZXR1
cm4gcnVsZS53aWR0aCgpOwogICAgIH0KIAotICAgIGZsb2F0IG1fd2lkdGg7Ci0gICAgdW5zaWdu
ZWQgc2hvcnQgbV9jb3VudDsKLSAgICBmbG9hdCBtX2dhcDsKLSAgICBCb3JkZXJWYWx1ZSBtX3J1
bGU7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsKKyAgICBmbG9hdCB3
aWR0aCB7IDAgfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBjb3VudDsKKyAgICBmbG9hdCBnYXAgeyAw
IH07CisgICAgQm9yZGVyVmFsdWUgcnVsZTsKKyAgICBDb2xvciB2aXNpdGVkTGlua0NvbHVtblJ1
bGVDb2xvcjsKIAotICAgIGJvb2wgbV9hdXRvV2lkdGggOiAxOwotICAgIGJvb2wgbV9hdXRvQ291
bnQgOiAxOwotICAgIGJvb2wgbV9ub3JtYWxHYXAgOiAxOwotICAgIHVuc2lnbmVkIG1fZmlsbCA6
IDE7IC8vIENvbHVtbkZpbGwKLSAgICB1bnNpZ25lZCBtX2NvbHVtblNwYW4gOiAxOwotICAgIHVu
c2lnbmVkIG1fYXhpcyA6IDI7IC8vIENvbHVtbkF4aXMKLSAgICB1bnNpZ25lZCBtX3Byb2dyZXNz
aW9uIDogMjsgLy8gQ29sdW1uUHJvZ3Jlc3Npb24KKyAgICBib29sIGF1dG9XaWR0aCA6IDE7Cisg
ICAgYm9vbCBhdXRvQ291bnQgOiAxOworICAgIGJvb2wgbm9ybWFsR2FwIDogMTsKKyAgICB1bnNp
Z25lZCBmaWxsIDogMTsgLy8gQ29sdW1uRmlsbAorICAgIHVuc2lnbmVkIGNvbHVtblNwYW4gOiAx
OworICAgIHVuc2lnbmVkIGF4aXMgOiAyOyAvLyBDb2x1bW5BeGlzCisgICAgdW5zaWduZWQgcHJv
Z3Jlc3Npb24gOiAyOyAvLyBDb2x1bW5Qcm9ncmVzc2lvbgogCiBwcml2YXRlOgogICAgIFN0eWxl
TXVsdGlDb2xEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggZmEyOWFmMGRjZTcxNjBiOTU4
YTM1N2NkZDI4ODc3ODFhYjk3ZmRmNy4uZmM2MDVkNDhmY2M4NTkwNTgzOTBkZjM5ODJiNWJkYjA1
OTg4YjVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgR3Jl
YXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8R3JlYXRlcgogICAgIHZvaWQqIHJlZlB0cnNbMl07CiAgICAgTGVuZ3RoIGxlbmd0aHNb
Ml07CiAgICAgZmxvYXQgc2Vjb25kRmxvYXQ7Ci0gICAgdW5zaWduZWQgbV9iaXRmaWVsZHNbNF07
CisgICAgdW5zaWduZWQgYml0ZmllbGRzWzRdOwogICAgIHNob3J0IHBhZ2VkTWVkaWFTaG9ydHNb
Ml07CiAgICAgdW5zaWduZWQgdW5zaWduZWRzWzFdOwogICAgIHNob3J0IGh5cGhlbmF0aW9uU2hv
cnRzWzNdOwpAQCAtNzMsMTIgKzczLDEyIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGEoKQogICAgIDogbGlzdFN0eWxlSW1hZ2UoUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaXN0U3R5bGVJbWFnZSgpKQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0eWxl
Ojppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0SW5kZW50KCkpCi0gICAgLCBtX2VmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6Omlu
aXRpYWxab29tKCkpCi0gICAgLCBtX2N1c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGE6OmNyZWF0ZSgpKQorICAgICwgZWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5pdGlh
bFpvb20oKSkKKyAgICAsIGN1c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6
OmNyZWF0ZSgpKQogICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAg
ICAgLCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKQotICAgICwgbV9oYXNB
dXRvV2lkb3dzKHRydWUpCi0gICAgLCBtX2hhc0F1dG9PcnBoYW5zKHRydWUpCisgICAgLCBoYXNB
dXRvV2lkb3dzKHRydWUpCisgICAgLCBoYXNBdXRvT3JwaGFucyh0cnVlKQogICAgICwgdGV4dFNl
Y3VyaXR5KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNlY3VyaXR5KCkpCiAgICAgLCB1c2VyTW9k
aWZ5KFJFQURfT05MWSkKICAgICAsIHdvcmRCcmVhayhSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRC
cmVhaygpKQpAQCAtOTEsNTAgKzkxLDUwIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNG
aWxsRmlsbGVkKQogICAgICwgdGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrTm9uZSkK
ICAgICAsIHRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciB8IFRl
eHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQpCi0gICAgLCBtX3RleHRPcmllbnRhdGlvbihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oVGV4dE9yaWVudGF0aW9uOjpNaXhlZCkpCisgICAgLCB0ZXh0T3JpZW50
YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQpKQogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCi0gICAgLCBtX3RleHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dEluZGVudExpbmUoKSkKLSAgICAsIG1fdGV4dEluZGVudFR5cGUoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0SW5kZW50VHlwZSgpKQorICAgICwgdGV4dEluZGVudExpbmUoUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0SW5kZW50TGluZSgpKQorICAgICwgdGV4dEluZGVudFR5cGUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50VHlwZSgpKQogI2VuZGlmCi0gICAgLCBtX2xpbmVC
b3hDb250YWluKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUJveENvbnRhaW4oKSkKKyAgICAsIGxp
bmVCb3hDb250YWluKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUJveENvbnRhaW4oKSkKICNpZiBF
TkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKFJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpKQorICAgICwgaW1hZ2VPcmllbnRh
dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSkKICNlbmRpZgotICAg
ICwgbV9pbWFnZVJlbmRlcmluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkp
Ci0gICAgLCBtX2xpbmVTbmFwKFJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkKLSAgICAs
IG1fbGluZUFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWduKCkpCisgICAgLCBpbWFn
ZVJlbmRlcmluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCisgICAgLCBs
aW5lU25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCisgICAgLCBsaW5lQWxpZ24o
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQWxpZ24oKSkKICNpZiBFTkFCTEUoQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgogI2lm
IEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291
cmNlKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCi0gICAgLCBt
X2ltYWdlUmVzb2x1dGlvblNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25T
bmFwKCkpCisgICAgLCBpbWFnZVJlc29sdXRpb25Tb3VyY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxJ
bWFnZVJlc29sdXRpb25Tb3VyY2UoKSkKKyAgICAsIGltYWdlUmVzb2x1dGlvblNuYXAoUmVuZGVy
U3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgICwgbV90ZXh0QWxpZ25MYXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dEFsaWduTGFzdCgpKQotICAgICwgbV90ZXh0SnVzdGlmeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRKdXN0aWZ5KCkpCi0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgLCBtX3RleHREZWNvcmF0aW9u
U2tpcChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpKQotICAgICwgbV90
ZXh0VW5kZXJsaW5lUG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9z
aXRpb24oKSkKLSAgICAsIG1fcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBv
c2l0aW9uKCkpCi0gICAgLCBtX3RleHRab29tKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20o
KSkKKyAgICAsIHRleHRBbGlnbkxhc3QoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QWxpZ25MYXN0
KCkpCisgICAgLCB0ZXh0SnVzdGlmeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRKdXN0aWZ5KCkp
CisjZW5kaWYKKyAgICAsIHRleHREZWNvcmF0aW9uU2tpcChSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHREZWNvcmF0aW9uU2tpcCgpKQorICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkpCisgICAgLCBydWJ5UG9zaXRpb24o
UmVuZGVyU3R5bGU6OmluaXRpYWxSdWJ5UG9zaXRpb24oKSkKKyAgICAsIHRleHRab29tKFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCB0b3Vj
aENhbGxvdXRFbmFibGVkKFJlbmRlclN0eWxlOjppbml0aWFsVG91Y2hDYWxsb3V0RW5hYmxlZCgp
KQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICwgdHJhaWxpbmdX
b3JkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYWlsaW5nV29y
ZCgpKSkKICNlbmRpZgotICAgICwgbV9oYW5naW5nUHVuY3R1YXRpb24oUmVuZGVyU3R5bGU6Omlu
aXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSkKKyAgICAsIGhhbmdpbmdQdW5jdHVhdGlvbihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpKQogICAgICwgaHlwaGVuYXRpb25M
aW1pdEJlZm9yZSgtMSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcigtMSkKICAgICAsIGh5
cGhlbmF0aW9uTGltaXRMaW5lcygtMSkKLSAgICAsIG1fbGluZUdyaWQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaW5lR3JpZCgpKQotICAgICwgbV90YWJTaXplKFJlbmRlclN0eWxlOjppbml0aWFsVGFi
U2l6ZSgpKQorICAgICwgbGluZUdyaWQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpKQor
ICAgICwgdGFiU2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYlNpemUoKSkKICNpZiBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogICAgICwgdGV4dFNpemVBZGp1c3QoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0U2l6ZUFkanVzdCgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVU
SU9OKQotICAgICwgbV9pbWFnZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJl
c29sdXRpb24oKSkKKyAgICAsIGltYWdlUmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbElt
YWdlUmVzb2x1dGlvbigpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAs
IHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3Io
KSkKQEAgLTE1NSwxMiArMTU1LDEyIEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB0
ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8u
dGV4dFNoYWRvdykgOiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAg
ICAgLCBpbmRlbnQoby5pbmRlbnQpCi0gICAgLCBtX2VmZmVjdGl2ZVpvb20oby5tX2VmZmVjdGl2
ZVpvb20pCi0gICAgLCBtX2N1c3RvbVByb3BlcnRpZXMoby5tX2N1c3RvbVByb3BlcnRpZXMpCisg
ICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKKyAgICAsIGN1c3RvbVByb3BlcnRp
ZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3Jw
aGFucyhvLm9ycGhhbnMpCi0gICAgLCBtX2hhc0F1dG9XaWRvd3Moby5tX2hhc0F1dG9XaWRvd3Mp
Ci0gICAgLCBtX2hhc0F1dG9PcnBoYW5zKG8ubV9oYXNBdXRvT3JwaGFucykKKyAgICAsIGhhc0F1
dG9XaWRvd3Moby5oYXNBdXRvV2lkb3dzKQorICAgICwgaGFzQXV0b09ycGhhbnMoby5oYXNBdXRv
T3JwaGFucykKICAgICAsIHRleHRTZWN1cml0eShvLnRleHRTZWN1cml0eSkKICAgICAsIHVzZXJN
b2RpZnkoby51c2VyTW9kaWZ5KQogICAgICwgd29yZEJyZWFrKG8ud29yZEJyZWFrKQpAQCAtMTcz
LDUyICsxNzMsNTIgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUlu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIHRleHRFbXBoYXNp
c0ZpbGwoby50ZXh0RW1waGFzaXNGaWxsKQogICAgICwgdGV4dEVtcGhhc2lzTWFyayhvLnRleHRF
bXBoYXNpc01hcmspCiAgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihvLnRleHRFbXBoYXNpc1Bv
c2l0aW9uKQotICAgICwgbV90ZXh0T3JpZW50YXRpb24oby5tX3RleHRPcmllbnRhdGlvbikKKyAg
ICAsIHRleHRPcmllbnRhdGlvbihvLnRleHRPcmllbnRhdGlvbikKICNpZiBFTkFCTEUoQ1NTM19U
RVhUKQotICAgICwgbV90ZXh0SW5kZW50TGluZShvLm1fdGV4dEluZGVudExpbmUpCi0gICAgLCBt
X3RleHRJbmRlbnRUeXBlKG8ubV90ZXh0SW5kZW50VHlwZSkKKyAgICAsIHRleHRJbmRlbnRMaW5l
KG8udGV4dEluZGVudExpbmUpCisgICAgLCB0ZXh0SW5kZW50VHlwZShvLnRleHRJbmRlbnRUeXBl
KQogI2VuZGlmCi0gICAgLCBtX2xpbmVCb3hDb250YWluKG8ubV9saW5lQm94Q29udGFpbikKKyAg
ICAsIGxpbmVCb3hDb250YWluKG8ubGluZUJveENvbnRhaW4pCiAjaWYgRU5BQkxFKENTU19JTUFH
RV9PUklFTlRBVElPTikKLSAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihvLm1faW1hZ2VPcmllbnRh
dGlvbikKKyAgICAsIGltYWdlT3JpZW50YXRpb24oby5pbWFnZU9yaWVudGF0aW9uKQogI2VuZGlm
Ci0gICAgLCBtX2ltYWdlUmVuZGVyaW5nKG8ubV9pbWFnZVJlbmRlcmluZykKLSAgICAsIG1fbGlu
ZVNuYXAoby5tX2xpbmVTbmFwKQotICAgICwgbV9saW5lQWxpZ24oby5tX2xpbmVBbGlnbikKKyAg
ICAsIGltYWdlUmVuZGVyaW5nKG8uaW1hZ2VSZW5kZXJpbmcpCisgICAgLCBsaW5lU25hcChvLmxp
bmVTbmFwKQorICAgICwgbGluZUFsaWduKG8ubGluZUFsaWduKQogI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
KG8udXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZykKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1B
R0VfUkVTT0xVVElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlKG8ubV9pbWFnZVJl
c29sdXRpb25Tb3VyY2UpCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNuYXAoby5tX2ltYWdlUmVz
b2x1dGlvblNuYXApCisgICAgLCBpbWFnZVJlc29sdXRpb25Tb3VyY2Uoby5pbWFnZVJlc29sdXRp
b25Tb3VyY2UpCisgICAgLCBpbWFnZVJlc29sdXRpb25TbmFwKG8uaW1hZ2VSZXNvbHV0aW9uU25h
cCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgLCBtX3RleHRBbGlnbkxhc3Qo
by5tX3RleHRBbGlnbkxhc3QpCi0gICAgLCBtX3RleHRKdXN0aWZ5KG8ubV90ZXh0SnVzdGlmeSkK
LSNlbmRpZiAvLyBDU1MzX1RFWFQKLSAgICAsIG1fdGV4dERlY29yYXRpb25Ta2lwKG8ubV90ZXh0
RGVjb3JhdGlvblNraXApCi0gICAgLCBtX3RleHRVbmRlcmxpbmVQb3NpdGlvbihvLm1fdGV4dFVu
ZGVybGluZVBvc2l0aW9uKQotICAgICwgbV9ydWJ5UG9zaXRpb24oby5tX3J1YnlQb3NpdGlvbikK
LSAgICAsIG1fdGV4dFpvb20oby5tX3RleHRab29tKQorICAgICwgdGV4dEFsaWduTGFzdChvLnRl
eHRBbGlnbkxhc3QpCisgICAgLCB0ZXh0SnVzdGlmeShvLnRleHRKdXN0aWZ5KQorI2VuZGlmCisg
ICAgLCB0ZXh0RGVjb3JhdGlvblNraXAoby50ZXh0RGVjb3JhdGlvblNraXApCisgICAgLCB0ZXh0
VW5kZXJsaW5lUG9zaXRpb24oby50ZXh0VW5kZXJsaW5lUG9zaXRpb24pCisgICAgLCBydWJ5UG9z
aXRpb24oby5ydWJ5UG9zaXRpb24pCisgICAgLCB0ZXh0Wm9vbShvLnRleHRab29tKQogI2lmIFBM
QVRGT1JNKElPUykKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoby50b3VjaENhbGxvdXRFbmFi
bGVkKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICwgdHJhaWxp
bmdXb3JkKG8udHJhaWxpbmdXb3JkKQogI2VuZGlmCi0gICAgLCBtX2hhbmdpbmdQdW5jdHVhdGlv
bihvLm1faGFuZ2luZ1B1bmN0dWF0aW9uKQorICAgICwgaGFuZ2luZ1B1bmN0dWF0aW9uKG8uaGFu
Z2luZ1B1bmN0dWF0aW9uKQogICAgICwgaHlwaGVuYXRpb25TdHJpbmcoby5oeXBoZW5hdGlvblN0
cmluZykKICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoby5oeXBoZW5hdGlvbkxpbWl0QmVm
b3JlKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKG8uaHlwaGVuYXRpb25MaW1pdEFmdGVy
KQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVzKG8uaHlwaGVuYXRpb25MaW1pdExpbmVzKQog
ICAgICwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCi0g
ICAgLCBtX2xpbmVHcmlkKG8ubV9saW5lR3JpZCkKLSAgICAsIG1fdGFiU2l6ZShvLm1fdGFiU2l6
ZSkKKyAgICAsIGxpbmVHcmlkKG8ubGluZUdyaWQpCisgICAgLCB0YWJTaXplKG8udGFiU2l6ZSkK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICwgdGV4dFNpemVBZGp1c3Qoby50ZXh0
U2l6ZUFkanVzdCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAg
ICAsIG1faW1hZ2VSZXNvbHV0aW9uKG8ubV9pbWFnZVJlc29sdXRpb24pCisgICAgLCBpbWFnZVJl
c29sdXRpb24oby5pbWFnZVJlc29sdXRpb24pCiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50YXBIaWdobGlnaHRDb2xvcikKQEAgLTI1
MCwxMSArMjUwLDExIEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShj
b25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogICAgICAgICAmJiBhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKHRleHRTaGFkb3csIG8udGV4dFNoYWRvdykKICAgICAgICAgJiYgYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShjdXJzb3JEYXRhLCBvLmN1cnNvckRhdGEpCiAgICAgICAgICYm
IGluZGVudCA9PSBvLmluZGVudAotICAgICAgICAmJiBtX2VmZmVjdGl2ZVpvb20gPT0gby5tX2Vm
ZmVjdGl2ZVpvb20KKyAgICAgICAgJiYgZWZmZWN0aXZlWm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20K
ICAgICAgICAgJiYgd2lkb3dzID09IG8ud2lkb3dzCiAgICAgICAgICYmIG9ycGhhbnMgPT0gby5v
cnBoYW5zCi0gICAgICAgICYmIG1faGFzQXV0b1dpZG93cyA9PSBvLm1faGFzQXV0b1dpZG93cwot
ICAgICAgICAmJiBtX2hhc0F1dG9PcnBoYW5zID09IG8ubV9oYXNBdXRvT3JwaGFucworICAgICAg
ICAmJiBoYXNBdXRvV2lkb3dzID09IG8uaGFzQXV0b1dpZG93cworICAgICAgICAmJiBoYXNBdXRv
T3JwaGFucyA9PSBvLmhhc0F1dG9PcnBoYW5zCiAgICAgICAgICYmIHRleHRTZWN1cml0eSA9PSBv
LnRleHRTZWN1cml0eQogICAgICAgICAmJiB1c2VyTW9kaWZ5ID09IG8udXNlck1vZGlmeQogICAg
ICAgICAmJiB3b3JkQnJlYWsgPT0gby53b3JkQnJlYWsKQEAgLTI3Niw0NCArMjc2LDQ0IEBAIGJv
b2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhJiBvKSBjb25zdAogICAgICAgICAmJiB0ZXh0RW1waGFzaXNGaWxsID09IG8udGV4
dEVtcGhhc2lzRmlsbAogICAgICAgICAmJiB0ZXh0RW1waGFzaXNNYXJrID09IG8udGV4dEVtcGhh
c2lzTWFyawogICAgICAgICAmJiB0ZXh0RW1waGFzaXNQb3NpdGlvbiA9PSBvLnRleHRFbXBoYXNp
c1Bvc2l0aW9uCi0gICAgICAgICYmIG1fdGV4dE9yaWVudGF0aW9uID09IG8ubV90ZXh0T3JpZW50
YXRpb24KKyAgICAgICAgJiYgdGV4dE9yaWVudGF0aW9uID09IG8udGV4dE9yaWVudGF0aW9uCiAj
aWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAgICAgJiYgbV90ZXh0SW5kZW50TGluZSA9PSBvLm1f
dGV4dEluZGVudExpbmUKLSAgICAgICAgJiYgbV90ZXh0SW5kZW50VHlwZSA9PSBvLm1fdGV4dElu
ZGVudFR5cGUKKyAgICAgICAgJiYgdGV4dEluZGVudExpbmUgPT0gby50ZXh0SW5kZW50TGluZQor
ICAgICAgICAmJiB0ZXh0SW5kZW50VHlwZSA9PSBvLnRleHRJbmRlbnRUeXBlCiAjZW5kaWYKLSAg
ICAgICAgJiYgbV9saW5lQm94Q29udGFpbiA9PSBvLm1fbGluZUJveENvbnRhaW4KKyAgICAgICAg
JiYgbGluZUJveENvbnRhaW4gPT0gby5saW5lQm94Q29udGFpbgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAgICAgJiYgdG91Y2hDYWxsb3V0RW5hYmxlZCA9PSBvLnRvdWNoQ2FsbG91dEVuYWJsZWQK
ICNlbmRpZgogICAgICAgICAmJiBoeXBoZW5hdGlvblN0cmluZyA9PSBvLmh5cGhlbmF0aW9uU3Ry
aW5nCiAgICAgICAgICYmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsgPT0gby50ZXh0RW1waGFzaXND
dXN0b21NYXJrCiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEocXVvdGVzLCBvLnF1
b3RlcykKLSAgICAgICAgJiYgbV90YWJTaXplID09IG8ubV90YWJTaXplCi0gICAgICAgICYmIG1f
bGluZUdyaWQgPT0gby5tX2xpbmVHcmlkCisgICAgICAgICYmIHRhYlNpemUgPT0gby50YWJTaXpl
CisgICAgICAgICYmIGxpbmVHcmlkID09IG8ubGluZUdyaWQKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKQotICAgICAgICAmJiBtX2ltYWdlT3JpZW50YXRpb24gPT0gby5tX2ltYWdl
T3JpZW50YXRpb24KKyAgICAgICAgJiYgaW1hZ2VPcmllbnRhdGlvbiA9PSBvLmltYWdlT3JpZW50
YXRpb24KICNlbmRpZgotICAgICAgICAmJiBtX2ltYWdlUmVuZGVyaW5nID09IG8ubV9pbWFnZVJl
bmRlcmluZworICAgICAgICAmJiBpbWFnZVJlbmRlcmluZyA9PSBvLmltYWdlUmVuZGVyaW5nCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgICAgICAmJiBtX2ltYWdlUmVzb2x1
dGlvblNvdXJjZSA9PSBvLm1faW1hZ2VSZXNvbHV0aW9uU291cmNlCi0gICAgICAgICYmIG1faW1h
Z2VSZXNvbHV0aW9uU25hcCA9PSBvLm1faW1hZ2VSZXNvbHV0aW9uU25hcAotICAgICAgICAmJiBt
X2ltYWdlUmVzb2x1dGlvbiA9PSBvLm1faW1hZ2VSZXNvbHV0aW9uCisgICAgICAgICYmIGltYWdl
UmVzb2x1dGlvblNvdXJjZSA9PSBvLmltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgICAgICAmJiBp
bWFnZVJlc29sdXRpb25TbmFwID09IG8uaW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAgICAmJiBp
bWFnZVJlc29sdXRpb24gPT0gby5pbWFnZVJlc29sdXRpb24KICNlbmRpZgogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCi0gICAgICAgICYmIG1fdGV4dEFsaWduTGFzdCA9PSBvLm1fdGV4dEFsaWduTGFz
dAotICAgICAgICAmJiBtX3RleHRKdXN0aWZ5ID09IG8ubV90ZXh0SnVzdGlmeQorICAgICAgICAm
JiB0ZXh0QWxpZ25MYXN0ID09IG8udGV4dEFsaWduTGFzdAorICAgICAgICAmJiB0ZXh0SnVzdGlm
eSA9PSBvLnRleHRKdXN0aWZ5CiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgICYmIG1fdGV4
dERlY29yYXRpb25Ta2lwID09IG8ubV90ZXh0RGVjb3JhdGlvblNraXAKLSAgICAgICAgJiYgbV90
ZXh0VW5kZXJsaW5lUG9zaXRpb24gPT0gby5tX3RleHRVbmRlcmxpbmVQb3NpdGlvbgotICAgICAg
ICAmJiBtX3J1YnlQb3NpdGlvbiA9PSBvLm1fcnVieVBvc2l0aW9uCi0gICAgICAgICYmIG1fdGV4
dFpvb20gPT0gby5tX3RleHRab29tCi0gICAgICAgICYmIG1fbGluZVNuYXAgPT0gby5tX2xpbmVT
bmFwCi0gICAgICAgICYmIG1fbGluZUFsaWduID09IG8ubV9saW5lQWxpZ24KKyAgICAgICAgJiYg
dGV4dERlY29yYXRpb25Ta2lwID09IG8udGV4dERlY29yYXRpb25Ta2lwCisgICAgICAgICYmIHRl
eHRVbmRlcmxpbmVQb3NpdGlvbiA9PSBvLnRleHRVbmRlcmxpbmVQb3NpdGlvbgorICAgICAgICAm
JiBydWJ5UG9zaXRpb24gPT0gby5ydWJ5UG9zaXRpb24KKyAgICAgICAgJiYgdGV4dFpvb20gPT0g
by50ZXh0Wm9vbQorICAgICAgICAmJiBsaW5lU25hcCA9PSBvLmxpbmVTbmFwCisgICAgICAgICYm
IGxpbmVBbGlnbiA9PSBvLmxpbmVBbGlnbgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkK
ICAgICAgICAgJiYgdHJhaWxpbmdXb3JkID09IG8udHJhaWxpbmdXb3JkCiAjZW5kaWYKLSAgICAg
ICAgJiYgbV9oYW5naW5nUHVuY3R1YXRpb24gPT0gby5tX2hhbmdpbmdQdW5jdHVhdGlvbgotICAg
ICAgICAmJiBtX2N1c3RvbVByb3BlcnRpZXMgPT0gby5tX2N1c3RvbVByb3BlcnRpZXMKKyAgICAg
ICAgJiYgaGFuZ2luZ1B1bmN0dWF0aW9uID09IG8uaGFuZ2luZ1B1bmN0dWF0aW9uCisgICAgICAg
ICYmIGN1c3RvbVByb3BlcnRpZXMgPT0gby5jdXN0b21Qcm9wZXJ0aWVzCiAgICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEobGlzdFN0eWxlSW1hZ2UsIG8ubGlzdFN0eWxlSW1hZ2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuaAppbmRleCAxMmI3ZTM5YTNhYTljNGViN2Y4ODJiZmFjNjA5YzdmMjky
MDk4N2Q3Li4yZmYyN2M5ODUwZjNhMDYwODAzYzRhMDQ1NGI2ODdhNzU4NTNjZjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmgKQEAgLTcyLDE3ICs3MiwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVmUHRyPEN1
cnNvckxpc3Q+IGN1cnNvckRhdGE7CiAgICAgTGVuZ3RoIGluZGVudDsKLSAgICBmbG9hdCBtX2Vm
ZmVjdGl2ZVpvb207CisgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKICAgICAKICAgICBMZW5ndGgg
d29yZFNwYWNpbmc7CiAKLSAgICBEYXRhUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBtX2N1
c3RvbVByb3BlcnRpZXM7CisgICAgRGF0YVJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gY3Vz
dG9tUHJvcGVydGllczsKIAogICAgIC8vIFBhZ2VkIG1lZGlhIHByb3BlcnRpZXMuCiAgICAgc2hv
cnQgd2lkb3dzOwogICAgIHNob3J0IG9ycGhhbnM7Ci0gICAgdW5zaWduZWQgbV9oYXNBdXRvV2lk
b3dzIDogMTsKLSAgICB1bnNpZ25lZCBtX2hhc0F1dG9PcnBoYW5zIDogMTsKKyAgICB1bnNpZ25l
ZCBoYXNBdXRvV2lkb3dzIDogMTsKKyAgICB1bnNpZ25lZCBoYXNBdXRvT3JwaGFucyA6IDE7CiAg
ICAgCiAgICAgdW5zaWduZWQgdGV4dFNlY3VyaXR5IDogMjsgLy8gRVRleHRTZWN1cml0eQogICAg
IHVuc2lnbmVkIHVzZXJNb2RpZnkgOiAyOyAvLyBFVXNlck1vZGlmeSAoZWRpdGluZykKQEAgLTk3
LDM0ICs5NywzNCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dEVtcGhhc2lzRmlsbCA6IDE7
IC8vIFRleHRFbXBoYXNpc0ZpbGwKICAgICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNNYXJrIDogMzsg
Ly8gVGV4dEVtcGhhc2lzTWFyawogICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc1Bvc2l0aW9uIDog
NDsgLy8gVGV4dEVtcGhhc2lzUG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX3RleHRPcmllbnRhdGlv
biA6IDI7IC8vIFRleHRPcmllbnRhdGlvbgorICAgIHVuc2lnbmVkIHRleHRPcmllbnRhdGlvbiA6
IDI7IC8vIFRleHRPcmllbnRhdGlvbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgdW5zaWdu
ZWQgbV90ZXh0SW5kZW50TGluZSA6IDE7IC8vIFRleHRJbmRlbnRMaW5lCi0gICAgdW5zaWduZWQg
bV90ZXh0SW5kZW50VHlwZSA6IDE7IC8vIFRleHRJbmRlbnRUeXBlCisgICAgdW5zaWduZWQgdGV4
dEluZGVudExpbmUgOiAxOyAvLyBUZXh0SW5kZW50TGluZQorICAgIHVuc2lnbmVkIHRleHRJbmRl
bnRUeXBlIDogMTsgLy8gVGV4dEluZGVudFR5cGUKICNlbmRpZgotICAgIHVuc2lnbmVkIG1fbGlu
ZUJveENvbnRhaW46IDc7IC8vIExpbmVCb3hDb250YWluCisgICAgdW5zaWduZWQgbGluZUJveENv
bnRhaW46IDc7IC8vIExpbmVCb3hDb250YWluCiAgICAgLy8gQ1NTIEltYWdlIFZhbHVlcyBMZXZl
bCAzCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB1bnNpZ25lZCBtX2lt
YWdlT3JpZW50YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQorICAgIHVuc2lnbmVk
IGltYWdlT3JpZW50YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQogI2VuZGlmCi0g
ICAgdW5zaWduZWQgbV9pbWFnZVJlbmRlcmluZyA6IDM7IC8vIEVJbWFnZVJlbmRlcmluZwotICAg
IHVuc2lnbmVkIG1fbGluZVNuYXAgOiAyOyAvLyBMaW5lU25hcAotICAgIHVuc2lnbmVkIG1fbGlu
ZUFsaWduIDogMTsgLy8gTGluZUFsaWduCisgICAgdW5zaWduZWQgaW1hZ2VSZW5kZXJpbmcgOiAz
OyAvLyBFSW1hZ2VSZW5kZXJpbmcKKyAgICB1bnNpZ25lZCBsaW5lU25hcCA6IDI7IC8vIExpbmVT
bmFwCisgICAgdW5zaWduZWQgbGluZUFsaWduIDogMTsgLy8gTGluZUFsaWduCiAjaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICB1bnNpZ25lZCB1c2VUb3VjaE92
ZXJmbG93U2Nyb2xsaW5nOiAxOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVU
SU9OKQotICAgIHVuc2lnbmVkIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlIDogMTsgLy8gSW1hZ2VS
ZXNvbHV0aW9uU291cmNlCi0gICAgdW5zaWduZWQgbV9pbWFnZVJlc29sdXRpb25TbmFwIDogMTsg
Ly8gSW1hZ2VSZXNvbHV0aW9uU25hcAorICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNvdXJj
ZSA6IDE7IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1
dGlvblNuYXAgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25TbmFwCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgIHVuc2lnbmVkIG1fdGV4dEFsaWduTGFzdCA6IDM7IC8vIFRleHRBbGln
bkxhc3QKLSAgICB1bnNpZ25lZCBtX3RleHRKdXN0aWZ5IDogMjsgLy8gVGV4dEp1c3RpZnkKLSNl
bmRpZiAvLyBDU1MzX1RFWFQKLSAgICB1bnNpZ25lZCBtX3RleHREZWNvcmF0aW9uU2tpcCA6IDU7
IC8vIFRleHREZWNvcmF0aW9uU2tpcAotICAgIHVuc2lnbmVkIG1fdGV4dFVuZGVybGluZVBvc2l0
aW9uIDogMzsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV9ydWJ5UG9z
aXRpb24gOiAyOyAvLyBSdWJ5UG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX3RleHRab29tOiAxOyAv
LyBUZXh0Wm9vbQorICAgIHVuc2lnbmVkIHRleHRBbGlnbkxhc3QgOiAzOyAvLyBUZXh0QWxpZ25M
YXN0CisgICAgdW5zaWduZWQgdGV4dEp1c3RpZnkgOiAyOyAvLyBUZXh0SnVzdGlmeQorI2VuZGlm
CisgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25Ta2lwIDogNTsgLy8gVGV4dERlY29yYXRpb25T
a2lwCisgICAgdW5zaWduZWQgdGV4dFVuZGVybGluZVBvc2l0aW9uIDogMzsgLy8gVGV4dFVuZGVy
bGluZVBvc2l0aW9uCisgICAgdW5zaWduZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0
aW9uCisgICAgdW5zaWduZWQgdGV4dFpvb206IDE7IC8vIFRleHRab29tCiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdW5zaWduZWQgdG91Y2hDYWxsb3V0RW5hYmxlZCA6IDE7CkBAIC0xMzQsNyAr
MTM0LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHRyYWlsaW5nV29yZCA6IDE7CiAjZW5kaWYK
IAotICAgIHVuc2lnbmVkIG1faGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsKKyAgICB1bnNpZ25lZCBo
YW5naW5nUHVuY3R1YXRpb24gOiA0OwogCiAgICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3Ry
aW5nOwogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRCZWZvcmU7CkBAIC0xNDQsMTUgKzE0NCwx
NSBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNpc0N1c3RvbU1hcms7CiAg
ICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlczsKIAotICAgIEF0b21pY1N0cmluZyBtX2xpbmVH
cmlkOwotICAgIHVuc2lnbmVkIG1fdGFiU2l6ZTsKKyAgICBBdG9taWNTdHJpbmcgbGluZUdyaWQ7
CisgICAgdW5zaWduZWQgdGFiU2l6ZTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgVGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0OwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgZmxvYXQgbV9pbWFnZVJlc29sdXRpb247Cisg
ICAgZmxvYXQgaW1hZ2VSZXNvbHV0aW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDRhN2Y3ZTY4NzAxOThjYzA5ZjI0NmIw
NmQ3NGMxOTliYzgxNTI3ODcuLjY1MTQyMDA5OWY5NzgwMDUyYWJlMGU0MjYxNGJkMGQ0MzdhNGZm
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzcsMTc0ICszNywxNzQg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCi0gICAgOiBtX29wYWNpdHkoUmVuZGVyU3R5bGU6Omlu
aXRpYWxPcGFjaXR5KCkpCi0gICAgLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpCi0gICAgLCBtX2FzcGVjdFJhdGlv
TnVtZXJhdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSkKLSAg
ICAsIG1fcGVyc3BlY3RpdmUoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZSgpKQotICAg
ICwgbV9wZXJzcGVjdGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9y
aWdpblgoKSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFs
UGVyc3BlY3RpdmVPcmlnaW5ZKCkpCisgICAgOiBvcGFjaXR5KFJlbmRlclN0eWxlOjppbml0aWFs
T3BhY2l0eSgpKQorICAgICwgYXNwZWN0UmF0aW9EZW5vbWluYXRvcihSZW5kZXJTdHlsZTo6aW5p
dGlhbEFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSkKKyAgICAsIGFzcGVjdFJhdGlvTnVtZXJhdG9y
KFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSkKKyAgICAsIHBlcnNw
ZWN0aXZlKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmUoKSkKKyAgICAsIHBlcnNwZWN0
aXZlT3JpZ2luWChSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpKQorICAg
ICwgcGVyc3BlY3RpdmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmln
aW5ZKCkpCiAgICAgLCBsaW5lQ2xhbXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQ2xhbXAoKSkK
LSAgICAsIG1faW5pdGlhbExldHRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0ZXIo
KSkKLSAgICAsIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94KFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxl
Qm94RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2ZsZXhpYmxlQm94KFN0eWxlRmxleGlibGVCb3hE
YXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fbWFycXVlZShTdHlsZU1hcnF1ZWVEYXRhOjpjcmVhdGUo
KSkKLSAgICAsIG1fbXVsdGlDb2woU3R5bGVNdWx0aUNvbERhdGE6OmNyZWF0ZSgpKQotICAgICwg
bV90cmFuc2Zvcm0oU3R5bGVUcmFuc2Zvcm1EYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fZmlsdGVy
KFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBpbml0aWFsTGV0dGVyKFJlbmRlclN0
eWxlOjppbml0aWFsSW5pdGlhbExldHRlcigpKQorICAgICwgZGVwcmVjYXRlZEZsZXhpYmxlQm94
KFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBmbGV4aWJs
ZUJveChTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtYXJxdWVlKFN0eWxl
TWFycXVlZURhdGE6OmNyZWF0ZSgpKQorICAgICwgbXVsdGlDb2woU3R5bGVNdWx0aUNvbERhdGE6
OmNyZWF0ZSgpKQorICAgICwgdHJhbnNmb3JtKFN0eWxlVHJhbnNmb3JtRGF0YTo6Y3JlYXRlKCkp
CisgICAgLCBmaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkKICNpZiBFTkFCTEUoRklM
VEVSU19MRVZFTF8yKQotICAgICwgbV9iYWNrZHJvcEZpbHRlcihTdHlsZUZpbHRlckRhdGE6OmNy
ZWF0ZSgpKQorICAgICwgYmFja2Ryb3BGaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUoKSkK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgLCBtX2dyaWQoU3R5bGVH
cmlkRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2dyaWRJdGVtKFN0eWxlR3JpZEl0ZW1EYXRhOjpj
cmVhdGUoKSkKKyAgICAsIGdyaWQoU3R5bGVHcmlkRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBncmlk
SXRlbShTdHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQotICAgICwgbV9zY3JvbGxTbmFwUG9ydChTdHlsZVNjcm9sbFNuYXBQb3J0
OjpjcmVhdGUoKSkKLSAgICAsIG1fc2Nyb2xsU25hcEFyZWEoU3R5bGVTY3JvbGxTbmFwQXJlYTo6
Y3JlYXRlKCkpCisgICAgLCBzY3JvbGxTbmFwUG9ydChTdHlsZVNjcm9sbFNuYXBQb3J0OjpjcmVh
dGUoKSkKKyAgICAsIHNjcm9sbFNuYXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6OmNyZWF0ZSgp
KQogI2VuZGlmCi0gICAgLCBtX3dpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWxsQ2hh
bmdlKCkpCi0gICAgLCBtX21hc2soRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQotICAgICwgbV9v
YmplY3RQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCkpCi0gICAg
LCBtX3NoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgpKQotICAg
ICwgbV9zaGFwZU1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCi0gICAg
LCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZUltYWdlVGhy
ZXNob2xkKCkpCi0gICAgLCBtX2NsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgo
KSkKLSAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRp
YWxCYWNrZ3JvdW5kQ29sb3IoKSkKLSAgICAsIG1fb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxP
cmRlcigpKQotICAgICwgbV9mbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVh
ZCgpKQotICAgICwgbV9yZWdpb25UaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJl
YWQoKSkKLSAgICAsIG1fYWxpZ25Db250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFs
aWdubWVudCgpKQotICAgICwgbV9hbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsRGVmYXVs
dEFsaWdubWVudCgpKQotICAgICwgbV9hbGlnblNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxm
QWxpZ25tZW50KCkpCi0gICAgLCBtX2p1c3RpZnlDb250ZW50KFJlbmRlclN0eWxlOjppbml0aWFs
Q29udGVudEFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5SXRlbXMoUmVuZGVyU3R5bGU6Omlu
aXRpYWxTZWxmQWxpZ25tZW50KCkpCi0gICAgLCBtX2p1c3RpZnlTZWxmKFJlbmRlclN0eWxlOjpp
bml0aWFsU2VsZkFsaWdubWVudCgpKQorICAgICwgd2lsbENoYW5nZShSZW5kZXJTdHlsZTo6aW5p
dGlhbFdpbGxDaGFuZ2UoKSkKKyAgICAsIG1hc2soRmlsbExheWVyKE1hc2tGaWxsTGF5ZXIpKQor
ICAgICwgb2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigp
KQorICAgICwgc2hhcGVPdXRzaWRlKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVPdXRzaWRlKCkp
CisgICAgLCBzaGFwZU1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlTWFyZ2luKCkpCisg
ICAgLCBzaGFwZUltYWdlVGhyZXNob2xkKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRo
cmVzaG9sZCgpKQorICAgICwgY2xpcFBhdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxDbGlwUGF0aCgp
KQorICAgICwgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxC
YWNrZ3JvdW5kQ29sb3IoKSkKKyAgICAsIG9yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIo
KSkKKyAgICAsIGZsb3dUaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFkKCkpCisg
ICAgLCByZWdpb25UaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJlYWQoKSkKKyAg
ICAsIGFsaWduQ29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKSkK
KyAgICAsIGFsaWduSXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxEZWZhdWx0QWxpZ25tZW50KCkp
CisgICAgLCBhbGlnblNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisg
ICAgLCBqdXN0aWZ5Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQo
KSkKKyAgICAsIGp1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQo
KSkKKyAgICAsIGp1c3RpZnlTZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgp
KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgLCBtX3RvdWNoQWN0aW9uKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQorICAgICwg
dG91Y2hBY3Rpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVG91
Y2hBY3Rpb24oKSkpCiAjZW5kaWYKLSAgICAsIG1fcmVnaW9uRnJhZ21lbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxSZWdpb25GcmFnbWVudCgpKQotICAgICwgbV9wYWdlU2l6ZVR5cGUoUEFHRV9TSVpF
X0FVVE8pCi0gICAgLCBtX3RyYW5zZm9ybVN0eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFu
c2Zvcm1TdHlsZTNEKCkpCi0gICAgLCBtX2JhY2tmYWNlVmlzaWJpbGl0eShSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eSgpKQorICAgICwgcmVnaW9uRnJhZ21lbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxSZWdpb25GcmFnbWVudCgpKQorICAgICwgcGFnZVNpemVUeXBlKFBBR0Vf
U0laRV9BVVRPKQorICAgICwgdHJhbnNmb3JtU3R5bGUzRChSZW5kZXJTdHlsZTo6aW5pdGlhbFRy
YW5zZm9ybVN0eWxlM0QoKSkKKyAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eSgpKQogICAgICwgdXNlckRyYWcoUmVuZGVyU3R5bGU6
OmluaXRpYWxVc2VyRHJhZygpKQogICAgICwgdGV4dE92ZXJmbG93KFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dE92ZXJmbG93KCkpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShNQ09MTEFQU0Up
CiAgICAgLCBtYXJnaW5BZnRlckNvbGxhcHNlKE1DT0xMQVBTRSkKLSAgICAsIG1fYXBwZWFyYW5j
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkKLSAgICAsIG1fYm9yZGVyRml0KFJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCi0gICAgLCBtX3RleHRDb21iaW5lKFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dENvbWJpbmUoKSkKLSAgICAsIG1fdGV4dERlY29yYXRpb25TdHls
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkKLSAgICAsIG1fYXNw
ZWN0UmF0aW9UeXBlKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpCisgICAg
LCBhcHBlYXJhbmNlKFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKQorICAgICwgYm9y
ZGVyRml0KFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCisgICAgLCB0ZXh0Q29tYmlu
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRDb21iaW5lKCkpCisgICAgLCB0ZXh0RGVjb3JhdGlv
blN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpKQorICAgICwg
YXNwZWN0UmF0aW9UeXBlKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpCiAj
aWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICAsIG1fZWZmZWN0aXZlQmxlbmRNb2RlKFJl
bmRlclN0eWxlOjppbml0aWFsQmxlbmRNb2RlKCkpCi0gICAgLCBtX2lzb2xhdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbElzb2xhdGlvbigpKQorICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKFJlbmRl
clN0eWxlOjppbml0aWFsQmxlbmRNb2RlKCkpCisgICAgLCBpc29sYXRpb24oUmVuZGVyU3R5bGU6
OmluaXRpYWxJc29sYXRpb24oKSkKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAg
LCBtX2FwcGxlUGF5QnV0dG9uU3R5bGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsQXBwbGVQYXlCdXR0b25TdHlsZSgpKSkKLSAgICAsIG1fYXBwbGVQYXlCdXR0b25U
eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0
dG9uVHlwZSgpKSkKKyAgICAsIGFwcGxlUGF5QnV0dG9uU3R5bGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBwbGVQYXlCdXR0b25TdHlsZSgpKSkKKyAgICAsIGFw
cGxlUGF5QnV0dG9uVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRp
YWxBcHBsZVBheUJ1dHRvblR5cGUoKSkpCiAjZW5kaWYKLSAgICAsIG1fb2JqZWN0Rml0KFJlbmRl
clN0eWxlOjppbml0aWFsT2JqZWN0Rml0KCkpCi0gICAgLCBtX2JyZWFrQmVmb3JlKFJlbmRlclN0
eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCi0gICAgLCBtX2JyZWFrQWZ0ZXIoUmVuZGVyU3R5
bGU6OmluaXRpYWxCcmVha0JldHdlZW4oKSkKLSAgICAsIG1fYnJlYWtJbnNpZGUoUmVuZGVyU3R5
bGU6OmluaXRpYWxCcmVha0luc2lkZSgpKQotICAgICwgbV9yZXNpemUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxSZXNpemUoKSkKLSAgICAsIG1faGFzQXR0ckNvbnRlbnQoZmFsc2UpCi0gICAgLCBtX2lz
UGxhY2Vob2xkZXJTdHlsZShmYWxzZSkKKyAgICAsIG9iamVjdEZpdChSZW5kZXJTdHlsZTo6aW5p
dGlhbE9iamVjdEZpdCgpKQorICAgICwgYnJlYWtCZWZvcmUoUmVuZGVyU3R5bGU6OmluaXRpYWxC
cmVha0JldHdlZW4oKSkKKyAgICAsIGJyZWFrQWZ0ZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxCcmVh
a0JldHdlZW4oKSkKKyAgICAsIGJyZWFrSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsQnJlYWtJ
bnNpZGUoKSkKKyAgICAsIHJlc2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFJlc2l6ZSgpKQorICAg
ICwgaGFzQXR0ckNvbnRlbnQoZmFsc2UpCisgICAgLCBpc1BsYWNlaG9sZGVyU3R5bGUoZmFsc2Up
CiB7Ci0gICAgbV9tYXNrQm94SW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7CisgICAgbWFza0JveElt
YWdlLnNldE1hc2tEZWZhdWx0cygpOwogfQogCiBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhJiBvKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPigp
Ci0gICAgLCBtX29wYWNpdHkoby5tX29wYWNpdHkpCi0gICAgLCBtX2FzcGVjdFJhdGlvRGVub21p
bmF0b3Ioby5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3IpCi0gICAgLCBtX2FzcGVjdFJhdGlvTnVt
ZXJhdG9yKG8ubV9hc3BlY3RSYXRpb051bWVyYXRvcikKLSAgICAsIG1fcGVyc3BlY3RpdmUoby5t
X3BlcnNwZWN0aXZlKQotICAgICwgbV9wZXJzcGVjdGl2ZU9yaWdpblgoby5tX3BlcnNwZWN0aXZl
T3JpZ2luWCkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5ZKG8ubV9wZXJzcGVjdGl2ZU9yaWdp
blkpCisgICAgLCBvcGFjaXR5KG8ub3BhY2l0eSkKKyAgICAsIGFzcGVjdFJhdGlvRGVub21pbmF0
b3Ioby5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKQorICAgICwgYXNwZWN0UmF0aW9OdW1lcmF0b3Io
by5hc3BlY3RSYXRpb051bWVyYXRvcikKKyAgICAsIHBlcnNwZWN0aXZlKG8ucGVyc3BlY3RpdmUp
CisgICAgLCBwZXJzcGVjdGl2ZU9yaWdpblgoby5wZXJzcGVjdGl2ZU9yaWdpblgpCisgICAgLCBw
ZXJzcGVjdGl2ZU9yaWdpblkoby5wZXJzcGVjdGl2ZU9yaWdpblkpCiAgICAgLCBsaW5lQ2xhbXAo
by5saW5lQ2xhbXApCi0gICAgLCBtX2luaXRpYWxMZXR0ZXIoby5tX2luaXRpYWxMZXR0ZXIpCi0g
ICAgLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveChvLm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94KQot
ICAgICwgbV9mbGV4aWJsZUJveChvLm1fZmxleGlibGVCb3gpCi0gICAgLCBtX21hcnF1ZWUoby5t
X21hcnF1ZWUpCi0gICAgLCBtX211bHRpQ29sKG8ubV9tdWx0aUNvbCkKLSAgICAsIG1fdHJhbnNm
b3JtKG8ubV90cmFuc2Zvcm0pCi0gICAgLCBtX2ZpbHRlcihvLm1fZmlsdGVyKQorICAgICwgaW5p
dGlhbExldHRlcihvLmluaXRpYWxMZXR0ZXIpCisgICAgLCBkZXByZWNhdGVkRmxleGlibGVCb3go
by5kZXByZWNhdGVkRmxleGlibGVCb3gpCisgICAgLCBmbGV4aWJsZUJveChvLmZsZXhpYmxlQm94
KQorICAgICwgbWFycXVlZShvLm1hcnF1ZWUpCisgICAgLCBtdWx0aUNvbChvLm11bHRpQ29sKQor
ICAgICwgdHJhbnNmb3JtKG8udHJhbnNmb3JtKQorICAgICwgZmlsdGVyKG8uZmlsdGVyKQogI2lm
IEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgLCBtX2JhY2tkcm9wRmlsdGVyKG8ubV9iYWNr
ZHJvcEZpbHRlcikKKyAgICAsIGJhY2tkcm9wRmlsdGVyKG8uYmFja2Ryb3BGaWx0ZXIpCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICwgbV9ncmlkKG8ubV9ncmlkKQot
ICAgICwgbV9ncmlkSXRlbShvLm1fZ3JpZEl0ZW0pCisgICAgLCBncmlkKG8uZ3JpZCkKKyAgICAs
IGdyaWRJdGVtKG8uZ3JpZEl0ZW0pCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgICwgbV9zY3JvbGxTbmFwUG9ydChvLm1fc2Nyb2xsU25hcFBvcnQpCi0gICAgLCBtX3Nj
cm9sbFNuYXBBcmVhKG8ubV9zY3JvbGxTbmFwQXJlYSkKKyAgICAsIHNjcm9sbFNuYXBQb3J0KG8u
c2Nyb2xsU25hcFBvcnQpCisgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQog
I2VuZGlmCi0gICAgLCBtX2NvbnRlbnQoby5tX2NvbnRlbnQgPyBvLm1fY29udGVudC0+Y2xvbmUo
KSA6IG51bGxwdHIpCi0gICAgLCBtX2NvdW50ZXJEaXJlY3RpdmVzKG8ubV9jb3VudGVyRGlyZWN0
aXZlcyA/IGNsb25lKCpvLm1fY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKLSAgICAsIG1f
YWx0VGV4dChvLm1fYWx0VGV4dCkKLSAgICAsIG1fYm94U2hhZG93KG8ubV9ib3hTaGFkb3cgPyBz
dGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fYm94U2hhZG93KSA6IG51bGxwdHIpCi0g
ICAgLCBtX3dpbGxDaGFuZ2Uoby5tX3dpbGxDaGFuZ2UpCi0gICAgLCBtX2JveFJlZmxlY3Qoby5t
X2JveFJlZmxlY3QpCi0gICAgLCBtX2FuaW1hdGlvbnMoby5tX2FuaW1hdGlvbnMgPyBzdGQ6Om1h
a2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLm1fYW5pbWF0aW9ucykgOiBudWxscHRyKQotICAg
ICwgbV90cmFuc2l0aW9ucyhvLm1fdHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCpvLm1fdHJhbnNpdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIG1fbWFzayhvLm1f
bWFzaykKLSAgICAsIG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2UpCi0gICAgLCBtX3Bh
Z2VTaXplKG8ubV9wYWdlU2l6ZSkKLSAgICAsIG1fb2JqZWN0UG9zaXRpb24oby5tX29iamVjdFBv
c2l0aW9uKQotICAgICwgbV9zaGFwZU91dHNpZGUoby5tX3NoYXBlT3V0c2lkZSkKLSAgICAsIG1f
c2hhcGVNYXJnaW4oby5tX3NoYXBlTWFyZ2luKQotICAgICwgbV9zaGFwZUltYWdlVGhyZXNob2xk
KG8ubV9zaGFwZUltYWdlVGhyZXNob2xkKQotICAgICwgbV9jbGlwUGF0aChvLm1fY2xpcFBhdGgp
Ci0gICAgLCBtX3RleHREZWNvcmF0aW9uQ29sb3Ioby5tX3RleHREZWNvcmF0aW9uQ29sb3IpCi0g
ICAgLCBtX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcihvLm1fdmlzaXRlZExpbmtUZXh0
RGVjb3JhdGlvbkNvbG9yKQotICAgICwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihvLm1f
dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yKG8ubV92aXNpdGVkTGlua091dGxpbmVDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3Jk
ZXJMZWZ0Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQotICAgICwgbV92aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcikK
LSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJU
b3BDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihvLm1fdmlzaXRl
ZExpbmtCb3JkZXJCb3R0b21Db2xvcikKLSAgICAsIG1fb3JkZXIoby5tX29yZGVyKQotICAgICwg
bV9mbG93VGhyZWFkKG8ubV9mbG93VGhyZWFkKQotICAgICwgbV9yZWdpb25UaHJlYWQoby5tX3Jl
Z2lvblRocmVhZCkKLSAgICAsIG1fYWxpZ25Db250ZW50KG8ubV9hbGlnbkNvbnRlbnQpCi0gICAg
LCBtX2FsaWduSXRlbXMoby5tX2FsaWduSXRlbXMpCi0gICAgLCBtX2FsaWduU2VsZihvLm1fYWxp
Z25TZWxmKQotICAgICwgbV9qdXN0aWZ5Q29udGVudChvLm1fanVzdGlmeUNvbnRlbnQpCi0gICAg
LCBtX2p1c3RpZnlJdGVtcyhvLm1fanVzdGlmeUl0ZW1zKQotICAgICwgbV9qdXN0aWZ5U2VsZihv
Lm1fanVzdGlmeVNlbGYpCisgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xv
bmUoKSA6IG51bGxwdHIpCisgICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3Rp
dmVzID8gY2xvbmUoKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGFsdFRl
eHQoby5hbHRUZXh0KQorICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHdpbGxDaGFu
Z2Uoby53aWxsQ2hhbmdlKQorICAgICwgYm94UmVmbGVjdChvLmJveFJlZmxlY3QpCisgICAgLCBh
bmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4o
Km8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9u
cyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVs
bHB0cikKKyAgICAsIG1hc2soby5tYXNrKQorICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveElt
YWdlKQorICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKKyAgICAsIG9iamVjdFBvc2l0aW9uKG8u
b2JqZWN0UG9zaXRpb24pCisgICAgLCBzaGFwZU91dHNpZGUoby5zaGFwZU91dHNpZGUpCisgICAg
LCBzaGFwZU1hcmdpbihvLnNoYXBlTWFyZ2luKQorICAgICwgc2hhcGVJbWFnZVRocmVzaG9sZChv
LnNoYXBlSW1hZ2VUaHJlc2hvbGQpCisgICAgLCBjbGlwUGF0aChvLmNsaXBQYXRoKQorICAgICwg
dGV4dERlY29yYXRpb25Db2xvcihvLnRleHREZWNvcmF0aW9uQ29sb3IpCisgICAgLCB2aXNpdGVk
TGlua1RleHREZWNvcmF0aW9uQ29sb3Ioby52aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3Ip
CisgICAgLCB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihvLnZpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yKQorICAgICwgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ioby52aXNpdGVkTGlua091dGxp
bmVDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8udmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ioby52aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9y
KG8udmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3Ioby52aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKQorICAgICwgb3JkZXIoby5v
cmRlcikKKyAgICAsIGZsb3dUaHJlYWQoby5mbG93VGhyZWFkKQorICAgICwgcmVnaW9uVGhyZWFk
KG8ucmVnaW9uVGhyZWFkKQorICAgICwgYWxpZ25Db250ZW50KG8uYWxpZ25Db250ZW50KQorICAg
ICwgYWxpZ25JdGVtcyhvLmFsaWduSXRlbXMpCisgICAgLCBhbGlnblNlbGYoby5hbGlnblNlbGYp
CisgICAgLCBqdXN0aWZ5Q29udGVudChvLmp1c3RpZnlDb250ZW50KQorICAgICwganVzdGlmeUl0
ZW1zKG8uanVzdGlmeUl0ZW1zKQorICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgbV90b3VjaEFjdGlvbihvLm1fdG91Y2hBY3Rp
b24pCisgICAgLCB0b3VjaEFjdGlvbihvLnRvdWNoQWN0aW9uKQogI2VuZGlmCi0gICAgLCBtX3Jl
Z2lvbkZyYWdtZW50KG8ubV9yZWdpb25GcmFnbWVudCkKLSAgICAsIG1fcGFnZVNpemVUeXBlKG8u
bV9wYWdlU2l6ZVR5cGUpCi0gICAgLCBtX3RyYW5zZm9ybVN0eWxlM0Qoby5tX3RyYW5zZm9ybVN0
eWxlM0QpCi0gICAgLCBtX2JhY2tmYWNlVmlzaWJpbGl0eShvLm1fYmFja2ZhY2VWaXNpYmlsaXR5
KQorICAgICwgcmVnaW9uRnJhZ21lbnQoby5yZWdpb25GcmFnbWVudCkKKyAgICAsIHBhZ2VTaXpl
VHlwZShvLnBhZ2VTaXplVHlwZSkKKyAgICAsIHRyYW5zZm9ybVN0eWxlM0Qoby50cmFuc2Zvcm1T
dHlsZTNEKQorICAgICwgYmFja2ZhY2VWaXNpYmlsaXR5KG8uYmFja2ZhY2VWaXNpYmlsaXR5KQog
ICAgICwgdXNlckRyYWcoby51c2VyRHJhZykKICAgICAsIHRleHRPdmVyZmxvdyhvLnRleHRPdmVy
ZmxvdykKICAgICAsIG1hcmdpbkJlZm9yZUNvbGxhcHNlKG8ubWFyZ2luQmVmb3JlQ29sbGFwc2Up
CiAgICAgLCBtYXJnaW5BZnRlckNvbGxhcHNlKG8ubWFyZ2luQWZ0ZXJDb2xsYXBzZSkKLSAgICAs
IG1fYXBwZWFyYW5jZShvLm1fYXBwZWFyYW5jZSkKLSAgICAsIG1fYm9yZGVyRml0KG8ubV9ib3Jk
ZXJGaXQpCi0gICAgLCBtX3RleHRDb21iaW5lKG8ubV90ZXh0Q29tYmluZSkKLSAgICAsIG1fdGV4
dERlY29yYXRpb25TdHlsZShvLm1fdGV4dERlY29yYXRpb25TdHlsZSkKLSAgICAsIG1fYXNwZWN0
UmF0aW9UeXBlKG8ubV9hc3BlY3RSYXRpb1R5cGUpCisgICAgLCBhcHBlYXJhbmNlKG8uYXBwZWFy
YW5jZSkKKyAgICAsIGJvcmRlckZpdChvLmJvcmRlckZpdCkKKyAgICAsIHRleHRDb21iaW5lKG8u
dGV4dENvbWJpbmUpCisgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKG8udGV4dERlY29yYXRpb25T
dHlsZSkKKyAgICAsIGFzcGVjdFJhdGlvVHlwZShvLmFzcGVjdFJhdGlvVHlwZSkKICNpZiBFTkFC
TEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICwgbV9lZmZlY3RpdmVCbGVuZE1vZGUoby5tX2VmZmVj
dGl2ZUJsZW5kTW9kZSkKLSAgICAsIG1faXNvbGF0aW9uKG8ubV9pc29sYXRpb24pCisgICAgLCBl
ZmZlY3RpdmVCbGVuZE1vZGUoby5lZmZlY3RpdmVCbGVuZE1vZGUpCisgICAgLCBpc29sYXRpb24o
by5pc29sYXRpb24pCiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9hcHBs
ZVBheUJ1dHRvblN0eWxlKG8ubV9hcHBsZVBheUJ1dHRvblN0eWxlKQotICAgICwgbV9hcHBsZVBh
eUJ1dHRvblR5cGUoby5tX2FwcGxlUGF5QnV0dG9uVHlwZSkKKyAgICAsIGFwcGxlUGF5QnV0dG9u
U3R5bGUoby5hcHBsZVBheUJ1dHRvblN0eWxlKQorICAgICwgYXBwbGVQYXlCdXR0b25UeXBlKG8u
YXBwbGVQYXlCdXR0b25UeXBlKQogI2VuZGlmCi0gICAgLCBtX29iamVjdEZpdChvLm1fb2JqZWN0
Rml0KQotICAgICwgbV9icmVha0JlZm9yZShvLm1fYnJlYWtCZWZvcmUpCi0gICAgLCBtX2JyZWFr
QWZ0ZXIoby5tX2JyZWFrQWZ0ZXIpCi0gICAgLCBtX2JyZWFrSW5zaWRlKG8ubV9icmVha0luc2lk
ZSkKLSAgICAsIG1fcmVzaXplKG8ubV9yZXNpemUpCi0gICAgLCBtX2hhc0F0dHJDb250ZW50KG8u
bV9oYXNBdHRyQ29udGVudCkKLSAgICAsIG1faXNQbGFjZWhvbGRlclN0eWxlKG8ubV9pc1BsYWNl
aG9sZGVyU3R5bGUpCisgICAgLCBvYmplY3RGaXQoby5vYmplY3RGaXQpCisgICAgLCBicmVha0Jl
Zm9yZShvLmJyZWFrQmVmb3JlKQorICAgICwgYnJlYWtBZnRlcihvLmJyZWFrQWZ0ZXIpCisgICAg
LCBicmVha0luc2lkZShvLmJyZWFrSW5zaWRlKQorICAgICwgcmVzaXplKG8ucmVzaXplKQorICAg
ICwgaGFzQXR0ckNvbnRlbnQoby5oYXNBdHRyQ29udGVudCkKKyAgICAsIGlzUGxhY2Vob2xkZXJT
dHlsZShvLmlzUGxhY2Vob2xkZXJTdHlsZSkKIHsKIH0KIApAQCAtMjE5LDEyMyArMjE5LDEyMyBA
QCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjp+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgp
CiAKIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdAogewotICAgIHJldHVybiBtX29wYWNpdHkg
PT0gby5tX29wYWNpdHkKLSAgICAgICAgJiYgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yID09IG8u
bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yCi0gICAgICAgICYmIG1fYXNwZWN0UmF0aW9OdW1lcmF0
b3IgPT0gby5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yCi0gICAgICAgICYmIG1fcGVyc3BlY3RpdmUg
PT0gby5tX3BlcnNwZWN0aXZlCi0gICAgICAgICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5YID09IG8u
bV9wZXJzcGVjdGl2ZU9yaWdpblgKLSAgICAgICAgJiYgbV9wZXJzcGVjdGl2ZU9yaWdpblkgPT0g
by5tX3BlcnNwZWN0aXZlT3JpZ2luWQorICAgIHJldHVybiBvcGFjaXR5ID09IG8ub3BhY2l0eQor
ICAgICAgICAmJiBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yID09IG8uYXNwZWN0UmF0aW9EZW5vbWlu
YXRvcgorICAgICAgICAmJiBhc3BlY3RSYXRpb051bWVyYXRvciA9PSBvLmFzcGVjdFJhdGlvTnVt
ZXJhdG9yCisgICAgICAgICYmIHBlcnNwZWN0aXZlID09IG8ucGVyc3BlY3RpdmUKKyAgICAgICAg
JiYgcGVyc3BlY3RpdmVPcmlnaW5YID09IG8ucGVyc3BlY3RpdmVPcmlnaW5YCisgICAgICAgICYm
IHBlcnNwZWN0aXZlT3JpZ2luWSA9PSBvLnBlcnNwZWN0aXZlT3JpZ2luWQogICAgICAgICAmJiBs
aW5lQ2xhbXAgPT0gby5saW5lQ2xhbXAKLSAgICAgICAgJiYgbV9pbml0aWFsTGV0dGVyID09IG8u
bV9pbml0aWFsTGV0dGVyCisgICAgICAgICYmIGluaXRpYWxMZXR0ZXIgPT0gby5pbml0aWFsTGV0
dGVyCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICAmJiBtX2Rhc2hib2Fy
ZFJlZ2lvbnMgPT0gby5tX2Rhc2hib2FyZFJlZ2lvbnMKKyAgICAgICAgJiYgZGFzaGJvYXJkUmVn
aW9ucyA9PSBvLmRhc2hib2FyZFJlZ2lvbnMKICNlbmRpZgotICAgICAgICAmJiBtX2RlcHJlY2F0
ZWRGbGV4aWJsZUJveCA9PSBvLm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94Ci0gICAgICAgICYmIG1f
ZmxleGlibGVCb3ggPT0gby5tX2ZsZXhpYmxlQm94Ci0gICAgICAgICYmIG1fbWFycXVlZSA9PSBv
Lm1fbWFycXVlZQotICAgICAgICAmJiBtX211bHRpQ29sID09IG8ubV9tdWx0aUNvbAotICAgICAg
ICAmJiBtX3RyYW5zZm9ybSA9PSBvLm1fdHJhbnNmb3JtCi0gICAgICAgICYmIG1fZmlsdGVyID09
IG8ubV9maWx0ZXIKKyAgICAgICAgJiYgZGVwcmVjYXRlZEZsZXhpYmxlQm94ID09IG8uZGVwcmVj
YXRlZEZsZXhpYmxlQm94CisgICAgICAgICYmIGZsZXhpYmxlQm94ID09IG8uZmxleGlibGVCb3gK
KyAgICAgICAgJiYgbWFycXVlZSA9PSBvLm1hcnF1ZWUKKyAgICAgICAgJiYgbXVsdGlDb2wgPT0g
by5tdWx0aUNvbAorICAgICAgICAmJiB0cmFuc2Zvcm0gPT0gby50cmFuc2Zvcm0KKyAgICAgICAg
JiYgZmlsdGVyID09IG8uZmlsdGVyCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAg
ICAgJiYgbV9iYWNrZHJvcEZpbHRlciA9PSBvLm1fYmFja2Ryb3BGaWx0ZXIKKyAgICAgICAgJiYg
YmFja2Ryb3BGaWx0ZXIgPT0gby5iYWNrZHJvcEZpbHRlcgogI2VuZGlmCiAjaWYgRU5BQkxFKENT
U19HUklEX0xBWU9VVCkKLSAgICAgICAgJiYgbV9ncmlkID09IG8ubV9ncmlkCi0gICAgICAgICYm
IG1fZ3JpZEl0ZW0gPT0gby5tX2dyaWRJdGVtCisgICAgICAgICYmIGdyaWQgPT0gby5ncmlkCisg
ICAgICAgICYmIGdyaWRJdGVtID09IG8uZ3JpZEl0ZW0KICNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi0gICAgICAgICYmIG1fc2Nyb2xsU25hcFBvcnQgPT0gby5tX3Njcm9sbFNu
YXBQb3J0Ci0gICAgICAgICYmIG1fc2Nyb2xsU25hcEFyZWEgPT0gby5tX3Njcm9sbFNuYXBBcmVh
CisgICAgICAgICYmIHNjcm9sbFNuYXBQb3J0ID09IG8uc2Nyb2xsU25hcFBvcnQKKyAgICAgICAg
JiYgc2Nyb2xsU25hcEFyZWEgPT0gby5zY3JvbGxTbmFwQXJlYQogI2VuZGlmCiAgICAgICAgICYm
IGNvbnRlbnREYXRhRXF1aXZhbGVudChvKQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKG1fY291bnRlckRpcmVjdGl2ZXMsIG8ubV9jb3VudGVyRGlyZWN0aXZlcykKLSAgICAgICAg
JiYgbV9hbHRUZXh0ID09IG8ubV9hbHRUZXh0Ci0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEobV9ib3hTaGFkb3csIG8ubV9ib3hTaGFkb3cpCi0gICAgICAgICYmIGFyZVBvaW50aW5n
VG9FcXVhbERhdGEobV93aWxsQ2hhbmdlLCBvLm1fd2lsbENoYW5nZSkKLSAgICAgICAgJiYgYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShtX2JveFJlZmxlY3QsIG8ubV9ib3hSZWZsZWN0KQotICAgICAg
ICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fYW5pbWF0aW9ucywgby5tX2FuaW1hdGlvbnMp
Ci0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV90cmFuc2l0aW9ucywgby5tX3Ry
YW5zaXRpb25zKQotICAgICAgICAmJiBtX21hc2sgPT0gby5tX21hc2sKLSAgICAgICAgJiYgbV9t
YXNrQm94SW1hZ2UgPT0gby5tX21hc2tCb3hJbWFnZQotICAgICAgICAmJiBtX3BhZ2VTaXplID09
IG8ubV9wYWdlU2l6ZQotICAgICAgICAmJiBtX29iamVjdFBvc2l0aW9uID09IG8ubV9vYmplY3RQ
b3NpdGlvbgotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fc2hhcGVPdXRzaWRl
LCBvLm1fc2hhcGVPdXRzaWRlKQotICAgICAgICAmJiBtX3NoYXBlTWFyZ2luID09IG8ubV9zaGFw
ZU1hcmdpbgotICAgICAgICAmJiBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5tX3NoYXBlSW1h
Z2VUaHJlc2hvbGQKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2NsaXBQYXRo
LCBvLm1fY2xpcFBhdGgpCi0gICAgICAgICYmIG1fdGV4dERlY29yYXRpb25Db2xvciA9PSBvLm1f
dGV4dERlY29yYXRpb25Db2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRp
b25Db2xvciA9PSBvLm1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAgICYm
IG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPT0gby5tX3Zpc2l0
ZWRMaW5rT3V0bGluZUNvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29s
b3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRl
ZExpbmtCb3JkZXJSaWdodENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IK
LSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yID09IG8ubV92aXNpdGVkTGlu
a0JvcmRlclRvcENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
ciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcgotICAgICAgICAmJiBtX29yZGVy
ID09IG8ubV9vcmRlcgotICAgICAgICAmJiBtX2Zsb3dUaHJlYWQgPT0gby5tX2Zsb3dUaHJlYWQK
LSAgICAgICAgJiYgbV9hbGlnbkNvbnRlbnQgPT0gby5tX2FsaWduQ29udGVudAotICAgICAgICAm
JiBtX2FsaWduSXRlbXMgPT0gby5tX2FsaWduSXRlbXMKLSAgICAgICAgJiYgbV9hbGlnblNlbGYg
PT0gby5tX2FsaWduU2VsZgotICAgICAgICAmJiBtX2p1c3RpZnlDb250ZW50ID09IG8ubV9qdXN0
aWZ5Q29udGVudAotICAgICAgICAmJiBtX2p1c3RpZnlJdGVtcyA9PSBvLm1fanVzdGlmeUl0ZW1z
Ci0gICAgICAgICYmIG1fanVzdGlmeVNlbGYgPT0gby5tX2p1c3RpZnlTZWxmCi0gICAgICAgICYm
IG1fcmVnaW9uVGhyZWFkID09IG8ubV9yZWdpb25UaHJlYWQKLSAgICAgICAgJiYgbV9yZWdpb25G
cmFnbWVudCA9PSBvLm1fcmVnaW9uRnJhZ21lbnQKLSAgICAgICAgJiYgbV9wYWdlU2l6ZVR5cGUg
PT0gby5tX3BhZ2VTaXplVHlwZQotICAgICAgICAmJiBtX3RyYW5zZm9ybVN0eWxlM0QgPT0gby5t
X3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAgJiYgbV9iYWNrZmFjZVZpc2liaWxpdHkgPT0gby5t
X2JhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGNv
dW50ZXJEaXJlY3RpdmVzLCBvLmNvdW50ZXJEaXJlY3RpdmVzKQorICAgICAgICAmJiBhbHRUZXh0
ID09IG8uYWx0VGV4dAorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGJveFNoYWRv
dywgby5ib3hTaGFkb3cpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEod2lsbENo
YW5nZSwgby53aWxsQ2hhbmdlKQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGJv
eFJlZmxlY3QsIG8uYm94UmVmbGVjdCkKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0
YShhbmltYXRpb25zLCBvLmFuaW1hdGlvbnMpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEodHJhbnNpdGlvbnMsIG8udHJhbnNpdGlvbnMpCisgICAgICAgICYmIG1hc2sgPT0gby5t
YXNrCisgICAgICAgICYmIG1hc2tCb3hJbWFnZSA9PSBvLm1hc2tCb3hJbWFnZQorICAgICAgICAm
JiBwYWdlU2l6ZSA9PSBvLnBhZ2VTaXplCisgICAgICAgICYmIG9iamVjdFBvc2l0aW9uID09IG8u
b2JqZWN0UG9zaXRpb24KKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShzaGFwZU91
dHNpZGUsIG8uc2hhcGVPdXRzaWRlKQorICAgICAgICAmJiBzaGFwZU1hcmdpbiA9PSBvLnNoYXBl
TWFyZ2luCisgICAgICAgICYmIHNoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5zaGFwZUltYWdlVGhy
ZXNob2xkCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY2xpcFBhdGgsIG8uY2xp
cFBhdGgpCisgICAgICAgICYmIHRleHREZWNvcmF0aW9uQ29sb3IgPT0gby50ZXh0RGVjb3JhdGlv
bkNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciA9PSBvLnZp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua0JhY2tn
cm91bmRDb2xvciA9PSBvLnZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yCisgICAgICAgICYmIHZp
c2l0ZWRMaW5rT3V0bGluZUNvbG9yID09IG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IKKyAgICAg
ICAgJiYgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgPT0gby52aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJUb3BD
b2xvciA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvciA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IKKyAg
ICAgICAgJiYgb3JkZXIgPT0gby5vcmRlcgorICAgICAgICAmJiBmbG93VGhyZWFkID09IG8uZmxv
d1RocmVhZAorICAgICAgICAmJiBhbGlnbkNvbnRlbnQgPT0gby5hbGlnbkNvbnRlbnQKKyAgICAg
ICAgJiYgYWxpZ25JdGVtcyA9PSBvLmFsaWduSXRlbXMKKyAgICAgICAgJiYgYWxpZ25TZWxmID09
IG8uYWxpZ25TZWxmCisgICAgICAgICYmIGp1c3RpZnlDb250ZW50ID09IG8uanVzdGlmeUNvbnRl
bnQKKyAgICAgICAgJiYganVzdGlmeUl0ZW1zID09IG8uanVzdGlmeUl0ZW1zCisgICAgICAgICYm
IGp1c3RpZnlTZWxmID09IG8uanVzdGlmeVNlbGYKKyAgICAgICAgJiYgcmVnaW9uVGhyZWFkID09
IG8ucmVnaW9uVGhyZWFkCisgICAgICAgICYmIHJlZ2lvbkZyYWdtZW50ID09IG8ucmVnaW9uRnJh
Z21lbnQKKyAgICAgICAgJiYgcGFnZVNpemVUeXBlID09IG8ucGFnZVNpemVUeXBlCisgICAgICAg
ICYmIHRyYW5zZm9ybVN0eWxlM0QgPT0gby50cmFuc2Zvcm1TdHlsZTNECisgICAgICAgICYmIGJh
Y2tmYWNlVmlzaWJpbGl0eSA9PSBvLmJhY2tmYWNlVmlzaWJpbGl0eQogICAgICAgICAmJiB1c2Vy
RHJhZyA9PSBvLnVzZXJEcmFnCiAgICAgICAgICYmIHRleHRPdmVyZmxvdyA9PSBvLnRleHRPdmVy
ZmxvdwogICAgICAgICAmJiBtYXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBvLm1hcmdpbkJlZm9yZUNv
bGxhcHNlCiAgICAgICAgICYmIG1hcmdpbkFmdGVyQ29sbGFwc2UgPT0gby5tYXJnaW5BZnRlckNv
bGxhcHNlCi0gICAgICAgICYmIG1fYXBwZWFyYW5jZSA9PSBvLm1fYXBwZWFyYW5jZQotICAgICAg
ICAmJiBtX2JvcmRlckZpdCA9PSBvLm1fYm9yZGVyRml0Ci0gICAgICAgICYmIG1fdGV4dENvbWJp
bmUgPT0gby5tX3RleHRDb21iaW5lCi0gICAgICAgICYmIG1fdGV4dERlY29yYXRpb25TdHlsZSA9
PSBvLm1fdGV4dERlY29yYXRpb25TdHlsZQorICAgICAgICAmJiBhcHBlYXJhbmNlID09IG8uYXBw
ZWFyYW5jZQorICAgICAgICAmJiBib3JkZXJGaXQgPT0gby5ib3JkZXJGaXQKKyAgICAgICAgJiYg
dGV4dENvbWJpbmUgPT0gby50ZXh0Q29tYmluZQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvblN0
eWxlID09IG8udGV4dERlY29yYXRpb25TdHlsZQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0g
ICAgICAgICYmIG1fdG91Y2hBY3Rpb24gPT0gby5tX3RvdWNoQWN0aW9uCisgICAgICAgICYmIHRv
dWNoQWN0aW9uID09IG8udG91Y2hBY3Rpb24KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9T
SVRJTkcpCi0gICAgICAgICYmIG1fZWZmZWN0aXZlQmxlbmRNb2RlID09IG8ubV9lZmZlY3RpdmVC
bGVuZE1vZGUKLSAgICAgICAgJiYgbV9pc29sYXRpb24gPT0gby5tX2lzb2xhdGlvbgorICAgICAg
ICAmJiBlZmZlY3RpdmVCbGVuZE1vZGUgPT0gby5lZmZlY3RpdmVCbGVuZE1vZGUKKyAgICAgICAg
JiYgaXNvbGF0aW9uID09IG8uaXNvbGF0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQotICAgICAgICAmJiBtX2FwcGxlUGF5QnV0dG9uU3R5bGUgPT0gby5tX2FwcGxlUGF5QnV0dG9u
U3R5bGUKLSAgICAgICAgJiYgbV9hcHBsZVBheUJ1dHRvblR5cGUgPT0gby5tX2FwcGxlUGF5QnV0
dG9uVHlwZQorICAgICAgICAmJiBhcHBsZVBheUJ1dHRvblN0eWxlID09IG8uYXBwbGVQYXlCdXR0
b25TdHlsZQorICAgICAgICAmJiBhcHBsZVBheUJ1dHRvblR5cGUgPT0gby5hcHBsZVBheUJ1dHRv
blR5cGUKICNlbmRpZgotICAgICAgICAmJiBtX2FzcGVjdFJhdGlvVHlwZSA9PSBvLm1fYXNwZWN0
UmF0aW9UeXBlCi0gICAgICAgICYmIG1fb2JqZWN0Rml0ID09IG8ubV9vYmplY3RGaXQKLSAgICAg
ICAgJiYgbV9icmVha0FmdGVyID09IG8ubV9icmVha0FmdGVyCi0gICAgICAgICYmIG1fYnJlYWtC
ZWZvcmUgPT0gby5tX2JyZWFrQmVmb3JlCi0gICAgICAgICYmIG1fYnJlYWtJbnNpZGUgPT0gby5t
X2JyZWFrSW5zaWRlCi0gICAgICAgICYmIG1fcmVzaXplID09IG8ubV9yZXNpemUKLSAgICAgICAg
JiYgbV9oYXNBdHRyQ29udGVudCA9PSBvLm1faGFzQXR0ckNvbnRlbnQKLSAgICAgICAgJiYgbV9p
c1BsYWNlaG9sZGVyU3R5bGUgPT0gby5tX2lzUGxhY2Vob2xkZXJTdHlsZTsKKyAgICAgICAgJiYg
YXNwZWN0UmF0aW9UeXBlID09IG8uYXNwZWN0UmF0aW9UeXBlCisgICAgICAgICYmIG9iamVjdEZp
dCA9PSBvLm9iamVjdEZpdAorICAgICAgICAmJiBicmVha0FmdGVyID09IG8uYnJlYWtBZnRlcgor
ICAgICAgICAmJiBicmVha0JlZm9yZSA9PSBvLmJyZWFrQmVmb3JlCisgICAgICAgICYmIGJyZWFr
SW5zaWRlID09IG8uYnJlYWtJbnNpZGUKKyAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCisg
ICAgICAgICYmIGhhc0F0dHJDb250ZW50ID09IG8uaGFzQXR0ckNvbnRlbnQKKyAgICAgICAgJiYg
aXNQbGFjZWhvbGRlclN0eWxlID09IG8uaXNQbGFjZWhvbGRlclN0eWxlOwogfQogCi1ib29sIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgQ29udGVudERhdGEqIGEgPSBtX2NvbnRlbnQuZ2V0
KCk7Ci0gICAgQ29udGVudERhdGEqIGIgPSBvLm1fY29udGVudC5nZXQoKTsKLQorICAgIGF1dG8q
IGEgPSBjb250ZW50LmdldCgpOworICAgIGF1dG8qIGIgPSBvdGhlci5jb250ZW50LmdldCgpOwog
ICAgIHdoaWxlIChhICYmIGIgJiYgKmEgPT0gKmIpIHsKICAgICAgICAgYSA9IGEtPm5leHQoKTsK
ICAgICAgICAgYiA9IGItPm5leHQoKTsKICAgICB9Ci0KICAgICByZXR1cm4gIWEgJiYgIWI7CiB9
CiAKIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6aGFzRmlsdGVycygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZmlsdGVyLmdldCgpICYmICFtX2ZpbHRlci0+bV9vcGVyYXRpb25zLmlz
RW1wdHkoKTsKKyAgICByZXR1cm4gIWZpbHRlci0+b3BlcmF0aW9ucy5pc0VtcHR5KCk7CiB9CiAK
ICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQorCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6Omhhc0JhY2tkcm9wRmlsdGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYmFja2Ry
b3BGaWx0ZXIuZ2V0KCkgJiYgIW1fYmFja2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9ucy5pc0VtcHR5
KCk7CisgICAgcmV0dXJuICFiYWNrZHJvcEZpbHRlci0+b3BlcmF0aW9ucy5pc0VtcHR5KCk7CiB9
CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApp
bmRleCAwNGMwOWJhZGZmZjg5OWYzNzRhMzQ4NjVlYWVjYWY1OTNhYjU5ZTBlLi5iZjliYTIwNzQ1
MGM1ZGFiYzQ5Njc3N2ViMWQzNmY1N2I5Yjk4NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFt
IERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDQsMzQg
KzQ0LDI3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkxpc3Q7Citj
bGFzcyBDb250ZW50RGF0YTsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGE7CiBjbGFzcyBTdHlsZUZpbHRlckRhdGE7CiBjbGFzcyBTdHlsZUZs
ZXhpYmxlQm94RGF0YTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogY2xhc3MgU3R5bGVH
cmlkRGF0YTsKIGNsYXNzIFN0eWxlR3JpZEl0ZW1EYXRhOwotI2VuZGlmCiBjbGFzcyBTdHlsZU1h
cnF1ZWVEYXRhOwogY2xhc3MgU3R5bGVNdWx0aUNvbERhdGE7CiBjbGFzcyBTdHlsZVJlZmxlY3Rp
b247CiBjbGFzcyBTdHlsZVJlc29sdmVyOwotY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1jbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xh
c3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKLSNlbmRpZgorY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9y
dDsKK2NsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKIAotY2xhc3MgQ29udGVudERhdGE7CiBzdHJ1
Y3QgTGVuZ3RoU2l6ZTsKLQotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIHN0cnVjdCBT
dHlsZURhc2hib2FyZFJlZ2lvbjsKLSNlbmRpZgogCiAvLyBQYWdlIHNpemUgdHlwZS4KLS8vIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om1fcGFnZVNpemUgaXMgbWVhbmluZ2Z1bCBvbmx5IHdo
ZW4gCi0vLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjptX3BhZ2VTaXplVHlwZSBpcyBQQUdF
X1NJWkVfUkVTT0xWRUQuCisvLyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpwYWdlU2l6ZSBp
cyBtZWFuaW5nZnVsIG9ubHkgd2hlbgorLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6cGFn
ZVNpemVUeXBlIGlzIFBBR0VfU0laRV9SRVNPTFZFRC4KIGVudW0gUGFnZVNpemVUeXBlIHsKICAg
ICBQQUdFX1NJWkVfQVVUTywgLy8gc2l6ZTogYXV0bwogICAgIFBBR0VfU0laRV9BVVRPX0xBTkRT
Q0FQRSwgLy8gc2l6ZTogbGFuZHNjYXBlCkBAIC04OSwxNDQgKzgyLDE0NyBAQCBwdWJsaWM6CiAg
ICAgflN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQogCiAgICAgYm9vbCBjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGaWx0ZXJzKCkgY29uc3Q7CisKICNp
ZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXJzKCkg
Y29uc3Q7CiAjZW5kaWYKLSAgICBib29sIGhhc09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29w
YWNpdHkgPCAxOyB9CiAKLSAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9hbmltYXRpb25zIHx8IG1fdHJhbnNpdGlvbnM7IH0KKyAgICBib29sIGhh
c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBvcGFjaXR5IDwgMTsgfQogCi0gICAgZmxvYXQgbV9v
cGFjaXR5OworICAgIGJvb2wgaGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBhbmltYXRpb25zIHx8IHRyYW5zaXRpb25zOyB9CiAKLSAgICBmbG9hdCBtX2FzcGVjdFJh
dGlvRGVub21pbmF0b3I7Ci0gICAgZmxvYXQgbV9hc3BlY3RSYXRpb051bWVyYXRvcjsKKyAgICBm
bG9hdCBvcGFjaXR5OwogCi0gICAgZmxvYXQgbV9wZXJzcGVjdGl2ZTsKLSAgICBMZW5ndGggbV9w
ZXJzcGVjdGl2ZU9yaWdpblg7Ci0gICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5ZOworICAg
IGZsb2F0IGFzcGVjdFJhdGlvRGVub21pbmF0b3I7CisgICAgZmxvYXQgYXNwZWN0UmF0aW9OdW1l
cmF0b3I7CisKKyAgICBmbG9hdCBwZXJzcGVjdGl2ZTsKKyAgICBMZW5ndGggcGVyc3BlY3RpdmVP
cmlnaW5YOworICAgIExlbmd0aCBwZXJzcGVjdGl2ZU9yaWdpblk7CiAKICAgICBMaW5lQ2xhbXBW
YWx1ZSBsaW5lQ2xhbXA7IC8vIEFuIEFwcGxlIGV4dGVuc2lvbi4KICAgICAKLSAgICBJbnRTaXpl
IG1faW5pdGlhbExldHRlcjsKKyAgICBJbnRTaXplIGluaXRpYWxMZXR0ZXI7CiAKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBt
X2Rhc2hib2FyZFJlZ2lvbnM7CisgICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBkYXNo
Ym9hcmRSZWdpb25zOwogI2VuZGlmCiAKLSAgICBEYXRhUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YT4gbV9kZXByZWNhdGVkRmxleGlibGVCb3g7IC8vIEZsZXhpYmxlIGJveCBwcm9w
ZXJ0aWVzCi0gICAgRGF0YVJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gbV9mbGV4aWJsZUJveDsK
LSAgICBEYXRhUmVmPFN0eWxlTWFycXVlZURhdGE+IG1fbWFycXVlZTsgLy8gTWFycXVlZSBwcm9w
ZXJ0aWVzCi0gICAgRGF0YVJlZjxTdHlsZU11bHRpQ29sRGF0YT4gbV9tdWx0aUNvbDsgLy8gIENT
UzMgbXVsdGljb2wgcHJvcGVydGllcwotICAgIERhdGFSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBt
X3RyYW5zZm9ybTsgLy8gVHJhbnNmb3JtIHByb3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNrZXcs
IGV0Yy4pCi0gICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IG1fZmlsdGVyOyAvLyBGaWx0ZXIg
b3BlcmF0aW9ucyAodXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gZGVwcmVjYXRlZEZsZXhpYmxlQm94OyAvLyBGbGV4aWJs
ZSBib3ggcHJvcGVydGllcworICAgIERhdGFSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGZsZXhp
YmxlQm94OworICAgIERhdGFSZWY8U3R5bGVNYXJxdWVlRGF0YT4gbWFycXVlZTsgLy8gTWFycXVl
ZSBwcm9wZXJ0aWVzCisgICAgRGF0YVJlZjxTdHlsZU11bHRpQ29sRGF0YT4gbXVsdGlDb2w7IC8v
ICBDU1MzIG11bHRpY29sIHByb3BlcnRpZXMKKyAgICBEYXRhUmVmPFN0eWxlVHJhbnNmb3JtRGF0
YT4gdHJhbnNmb3JtOyAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyAocm90YXRlLCBzY2FsZSwgc2tl
dywgZXRjLikKKyAgICBEYXRhUmVmPFN0eWxlRmlsdGVyRGF0YT4gZmlsdGVyOyAvLyBGaWx0ZXIg
b3BlcmF0aW9ucyAodXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKwogI2lmIEVOQUJMRShGSUxURVJT
X0xFVkVMXzIpCi0gICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IG1fYmFja2Ryb3BGaWx0ZXI7
IC8vIEZpbHRlciBvcGVyYXRpb25zICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQorICAgIERhdGFS
ZWY8U3R5bGVGaWx0ZXJEYXRhPiBiYWNrZHJvcEZpbHRlcjsgLy8gRmlsdGVyIG9wZXJhdGlvbnMg
KHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9M
QVlPVVQpCi0gICAgRGF0YVJlZjxTdHlsZUdyaWREYXRhPiBtX2dyaWQ7Ci0gICAgRGF0YVJlZjxT
dHlsZUdyaWRJdGVtRGF0YT4gbV9ncmlkSXRlbTsKKyAgICBEYXRhUmVmPFN0eWxlR3JpZERhdGE+
IGdyaWQ7CisgICAgRGF0YVJlZjxTdHlsZUdyaWRJdGVtRGF0YT4gZ3JpZEl0ZW07CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNu
YXBQb3J0PiBtX3Njcm9sbFNuYXBQb3J0OwotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJl
YT4gbV9zY3JvbGxTbmFwQXJlYTsKKyAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcFBvcnQ+IHNj
cm9sbFNuYXBQb3J0OworICAgIERhdGFSZWY8U3R5bGVTY3JvbGxTbmFwQXJlYT4gc2Nyb2xsU25h
cEFyZWE7CiAjZW5kaWYKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gbV9jb250
ZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJE
aXJlY3RpdmVzOwotICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnREYXRhPiBjb250ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZl
TWFwPiBjb3VudGVyRGlyZWN0aXZlczsKKyAgICBTdHJpbmcgYWx0VGV4dDsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBtX2JveFNoYWRvdzsgLy8gRm9yIGJveC1zaGFkb3cgZGVj
b3JhdGlvbnMuCisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJveFNoYWRvdzsgLy8g
Rm9yIGJveC1zaGFkb3cgZGVjb3JhdGlvbnMuCiAKLSAgICBSZWZQdHI8V2lsbENoYW5nZURhdGE+
IG1fd2lsbENoYW5nZTsgLy8gTnVsbCBpbmRpY2F0ZXMgJ2F1dG8nLgorICAgIFJlZlB0cjxXaWxs
Q2hhbmdlRGF0YT4gd2lsbENoYW5nZTsgLy8gTnVsbCBpbmRpY2F0ZXMgJ2F1dG8nLgogICAgIAot
ICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IG1fYm94UmVmbGVjdDsKKyAgICBSZWZQdHI8U3R5
bGVSZWZsZWN0aW9uPiBib3hSZWZsZWN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlv
bkxpc3Q+IG1fYW5pbWF0aW9uczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4g
bV90cmFuc2l0aW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gYW5pbWF0
aW9uczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gdHJhbnNpdGlvbnM7CiAK
LSAgICBGaWxsTGF5ZXIgbV9tYXNrOwotICAgIE5pbmVQaWVjZUltYWdlIG1fbWFza0JveEltYWdl
OworICAgIEZpbGxMYXllciBtYXNrOworICAgIE5pbmVQaWVjZUltYWdlIG1hc2tCb3hJbWFnZTsK
IAotICAgIExlbmd0aFNpemUgbV9wYWdlU2l6ZTsKLSAgICBMZW5ndGhQb2ludCBtX29iamVjdFBv
c2l0aW9uOworICAgIExlbmd0aFNpemUgcGFnZVNpemU7CisgICAgTGVuZ3RoUG9pbnQgb2JqZWN0
UG9zaXRpb247CiAKLSAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gbV9zaGFwZU91dHNpZGU7Ci0gICAg
TGVuZ3RoIG1fc2hhcGVNYXJnaW47Ci0gICAgZmxvYXQgbV9zaGFwZUltYWdlVGhyZXNob2xkOwor
ICAgIFJlZlB0cjxTaGFwZVZhbHVlPiBzaGFwZU91dHNpZGU7CisgICAgTGVuZ3RoIHNoYXBlTWFy
Z2luOworICAgIGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQ7CiAKLSAgICBSZWZQdHI8Q2xpcFBh
dGhPcGVyYXRpb24+IG1fY2xpcFBhdGg7CisgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBj
bGlwUGF0aDsKIAotICAgIENvbG9yIG1fdGV4dERlY29yYXRpb25Db2xvcjsKLSAgICBDb2xvciBt
X3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7Ci0g
ICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0
ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOworICAgIENv
bG9yIHRleHREZWNvcmF0aW9uQ29sb3I7CisgICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0RGVjb3Jh
dGlvbkNvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yOworICAgIENv
bG9yIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVy
TGVmdENvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsKKyAgICBD
b2xvciB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9y
ZGVyQm90dG9tQ29sb3I7CiAKLSAgICBpbnQgbV9vcmRlcjsKKyAgICBpbnQgb3JkZXI7CiAKLSAg
ICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwotICAgIEF0b21pY1N0cmluZyBtX3JlZ2lvblRo
cmVhZDsKKyAgICBBdG9taWNTdHJpbmcgZmxvd1RocmVhZDsKKyAgICBBdG9taWNTdHJpbmcgcmVn
aW9uVGhyZWFkOwogCi0gICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBtX2FsaWduQ29udGVu
dDsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fYWxpZ25JdGVtczsKLSAgICBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhIG1fYWxpZ25TZWxmOwotICAgIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEgbV9qdXN0aWZ5Q29udGVudDsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlm
eUl0ZW1zOwotICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5U2VsZjsKKyAgICBT
dHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGFsaWduQ29udGVudDsKKyAgICBTdHlsZVNlbGZBbGln
bm1lbnREYXRhIGFsaWduSXRlbXM7CisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnblNl
bGY7CisgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBqdXN0aWZ5Q29udGVudDsKKyAgICBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhIGp1c3RpZnlJdGVtczsKKyAgICBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIGp1c3RpZnlTZWxmOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB1bnNp
Z25lZCBtX3RvdWNoQWN0aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KKyAgICB1bnNpZ25lZCB0b3Vj
aEFjdGlvbiA6IDE7IC8vIFRvdWNoQWN0aW9uCiAjZW5kaWYKIAotICAgIHVuc2lnbmVkIG1fcmVn
aW9uRnJhZ21lbnQgOiAxOyAvLyBSZWdpb25GcmFnbWVudAorICAgIHVuc2lnbmVkIHJlZ2lvbkZy
YWdtZW50IDogMTsgLy8gUmVnaW9uRnJhZ21lbnQKIAotICAgIHVuc2lnbmVkIG1fcGFnZVNpemVU
eXBlIDogMjsgLy8gUGFnZVNpemVUeXBlCi0gICAgdW5zaWduZWQgbV90cmFuc2Zvcm1TdHlsZTNE
IDogMTsgLy8gRVRyYW5zZm9ybVN0eWxlM0QKLSAgICB1bnNpZ25lZCBtX2JhY2tmYWNlVmlzaWJp
bGl0eSA6IDE7IC8vIEVCYWNrZmFjZVZpc2liaWxpdHkKKyAgICB1bnNpZ25lZCBwYWdlU2l6ZVR5
cGUgOiAyOyAvLyBQYWdlU2l6ZVR5cGUKKyAgICB1bnNpZ25lZCB0cmFuc2Zvcm1TdHlsZTNEIDog
MTsgLy8gRVRyYW5zZm9ybVN0eWxlM0QKKyAgICB1bnNpZ25lZCBiYWNrZmFjZVZpc2liaWxpdHkg
OiAxOyAvLyBFQmFja2ZhY2VWaXNpYmlsaXR5CiAKIAogICAgIHVuc2lnbmVkIHVzZXJEcmFnIDog
MjsgLy8gRVVzZXJEcmFnCiAgICAgdW5zaWduZWQgdGV4dE92ZXJmbG93IDogMTsgLy8gV2hldGhl
ciBvciBub3QgbGluZXMgdGhhdCBzcGlsbCBvdXQgc2hvdWxkIGJlIHRydW5jYXRlZCB3aXRoICIu
Li4iCiAgICAgdW5zaWduZWQgbWFyZ2luQmVmb3JlQ29sbGFwc2UgOiAyOyAvLyBFTWFyZ2luQ29s
bGFwc2UKICAgICB1bnNpZ25lZCBtYXJnaW5BZnRlckNvbGxhcHNlIDogMjsgLy8gRU1hcmdpbkNv
bGxhcHNlCi0gICAgdW5zaWduZWQgbV9hcHBlYXJhbmNlIDogNjsgLy8gRUFwcGVhcmFuY2UKLSAg
ICB1bnNpZ25lZCBtX2JvcmRlckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQKLSAgICB1bnNpZ25lZCBt
X3RleHRDb21iaW5lIDogMTsgLy8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcworICAgIHVu
c2lnbmVkIGFwcGVhcmFuY2UgOiA2OyAvLyBFQXBwZWFyYW5jZQorICAgIHVuc2lnbmVkIGJvcmRl
ckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQKKyAgICB1bnNpZ25lZCB0ZXh0Q29tYmluZSA6IDE7IC8v
IENTUzMgdGV4dC1jb21iaW5lIHByb3BlcnRpZXMKIAotICAgIHVuc2lnbmVkIG1fdGV4dERlY29y
YXRpb25TdHlsZSA6IDM7IC8vIFRleHREZWNvcmF0aW9uU3R5bGUKKyAgICB1bnNpZ25lZCB0ZXh0
RGVjb3JhdGlvblN0eWxlIDogMzsgLy8gVGV4dERlY29yYXRpb25TdHlsZQogCi0gICAgdW5zaWdu
ZWQgbV9hc3BlY3RSYXRpb1R5cGUgOiAyOworICAgIHVuc2lnbmVkIGFzcGVjdFJhdGlvVHlwZSA6
IDI7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIHVuc2lnbmVkIG1fZWZmZWN0
aXZlQmxlbmRNb2RlOiA1OyAvLyBFQmxlbmRNb2RlCi0gICAgdW5zaWduZWQgbV9pc29sYXRpb24g
OiAxOyAvLyBJc29sYXRpb24KKyAgICB1bnNpZ25lZCBlZmZlY3RpdmVCbGVuZE1vZGU6IDU7IC8v
IEVCbGVuZE1vZGUKKyAgICB1bnNpZ25lZCBpc29sYXRpb24gOiAxOyAvLyBJc29sYXRpb24KICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICB1bnNpZ25lZCBtX2FwcGxlUGF5QnV0
dG9uU3R5bGUgOiAyOwotICAgIHVuc2lnbmVkIG1fYXBwbGVQYXlCdXR0b25UeXBlIDogMzsKKyAg
ICB1bnNpZ25lZCBhcHBsZVBheUJ1dHRvblN0eWxlIDogMjsKKyAgICB1bnNpZ25lZCBhcHBsZVBh
eUJ1dHRvblR5cGUgOiAzOwogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX29iamVjdEZpdCA6IDM7
IC8vIE9iamVjdEZpdAorICAgIHVuc2lnbmVkIG9iamVjdEZpdCA6IDM7IC8vIE9iamVjdEZpdAog
ICAgIAotICAgIHVuc2lnbmVkIG1fYnJlYWtCZWZvcmUgOiA0OyAvLyBCcmVha0JldHdlZW4KLSAg
ICB1bnNpZ25lZCBtX2JyZWFrQWZ0ZXIgOiA0OwotICAgIHVuc2lnbmVkIG1fYnJlYWtJbnNpZGUg
OiAzOyAvLyBCcmVha0luc2lkZQotICAgIHVuc2lnbmVkIG1fcmVzaXplIDogMjsgLy8gRVJlc2l6
ZQorICAgIHVuc2lnbmVkIGJyZWFrQmVmb3JlIDogNDsgLy8gQnJlYWtCZXR3ZWVuCisgICAgdW5z
aWduZWQgYnJlYWtBZnRlciA6IDQ7CisgICAgdW5zaWduZWQgYnJlYWtJbnNpZGUgOiAzOyAvLyBC
cmVha0luc2lkZQorICAgIHVuc2lnbmVkIHJlc2l6ZSA6IDI7IC8vIEVSZXNpemUKIAotICAgIHVu
c2lnbmVkIG1faGFzQXR0ckNvbnRlbnQgOiAxOworICAgIHVuc2lnbmVkIGhhc0F0dHJDb250ZW50
IDogMTsKIAotICAgIHVuc2lnbmVkIG1faXNQbGFjZWhvbGRlclN0eWxlIDogMTsKKyAgICB1bnNp
Z25lZCBpc1BsYWNlaG9sZGVyU3R5bGUgOiAxOwogCiBwcml2YXRlOgogICAgIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKaW5kZXggZWFmMzEwYjYzZDYxYWQxY2MxMDQ4YjBj
NjgyYWNmZWQ1MmQ5YWZhNi4uZWFmN2E2YTQzN2U5MzYxMTY4M2JlNmExYTllNDNiYTAwODBhMzk1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJh
bnNmb3JtRGF0YS5jcHAKQEAgLTI3LDE5ICsyNywxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNmb3JtRGF0YSgpCi0gICAgOiBtX29wZXJh
dGlvbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm0oKSkKLSAgICAsIG1feChSZW5kZXJT
dHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSkKLSAgICAsIG1feShSZW5kZXJTdHlsZTo6
aW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSkKLSAgICAsIG1feihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRyYW5zZm9ybU9yaWdpblooKSkKKyAgICA6IG9wZXJhdGlvbnMoUmVuZGVyU3R5bGU6OmluaXRp
YWxUcmFuc2Zvcm0oKSkKKyAgICAsIHgoUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1Pcmln
aW5YKCkpCisgICAgLCB5KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpKQor
ICAgICwgeihSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblooKSkKIHsKIH0KIAot
aW5saW5lIFN0eWxlVHJhbnNmb3JtRGF0YTo6U3R5bGVUcmFuc2Zvcm1EYXRhKGNvbnN0IFN0eWxl
VHJhbnNmb3JtRGF0YSYgbykKK2lubGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNm
b3JtRGF0YShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRl
ZDxTdHlsZVRyYW5zZm9ybURhdGE+KCkKLSAgICAsIG1fb3BlcmF0aW9ucyhvLm1fb3BlcmF0aW9u
cykKLSAgICAsIG1feChvLm1feCkKLSAgICAsIG1feShvLm1feSkKLSAgICAsIG1feihvLm1feikK
KyAgICAsIG9wZXJhdGlvbnMob3RoZXIub3BlcmF0aW9ucykKKyAgICAsIHgob3RoZXIueCkKKyAg
ICAsIHkob3RoZXIueSkKKyAgICAsIHoob3RoZXIueikKIHsKIH0KIApAQCAtNDgsOSArNDgsOSBA
QCBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBTdHlsZVRyYW5zZm9ybURhdGE6OmNvcHkoKSBjb25z
dAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSgqdGhpcykpOwog
fQogCi1ib29sIFN0eWxlVHJhbnNmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5z
Zm9ybURhdGEmIG8pIGNvbnN0Citib29sIFN0eWxlVHJhbnNmb3JtRGF0YTo6b3BlcmF0b3I9PShj
b25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3gg
PT0gby5tX3ggJiYgbV95ID09IG8ubV95ICYmIG1feiA9PSBvLm1feiAmJiBtX29wZXJhdGlvbnMg
PT0gby5tX29wZXJhdGlvbnM7CisgICAgcmV0dXJuIHggPT0gb3RoZXIueCAmJiB5ID09IG90aGVy
LnkgJiYgeiA9PSBvdGhlci56ICYmIG9wZXJhdGlvbnMgPT0gb3RoZXIub3BlcmF0aW9uczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCmluZGV4IDJlYTA3OTViNmFlZGMxNTAzNGY3
YmYyOGYzZDhmYTM2MjJlZWQ4Y2EuLjZiNDZhMzU2YjQxZmMxYjYxMjNlODJjNDdkMjEwNjAzYWFh
YzkyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRy
YW5zZm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVU
cmFuc2Zvcm1EYXRhLmgKQEAgLTM2LDE4ICszNiwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVUcmFuc2Zvcm1EYXRhKTsgfQogICAgIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBj
b25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8p
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8p
IGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVy
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6ZSgpOyB9CisgICAgYm9vbCBoYXNU
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBvcGVyYXRpb25zLnNpemUoKTsgfQogCi0gICAgVHJh
bnNmb3JtT3BlcmF0aW9ucyBtX29wZXJhdGlvbnM7Ci0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5n
dGggbV95OwotICAgIGZsb2F0IG1fejsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlv
bnM7CisgICAgTGVuZ3RoIHg7CisgICAgTGVuZ3RoIHk7CisgICAgZmxvYXQgejsKIAogcHJpdmF0
ZToKICAgICBTdHlsZVRyYW5zZm9ybURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAKaW5kZXggMjU2YzE1NDk1ZmE2ZTAwYzdh
Y2MwYjFkZGI3YjcwZmZjODIyMGIyZS4uMTBmZDU4ODhmN2Y3YjY3ODc1NDRkZDExZWI4ZjdlZWFk
YjAxODBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VmlzdWFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VmlzdWFsRGF0YS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3R5
bGVWaXN1YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoKQogICAgIDogaGFzQ2xpcChmYWxzZSkKICAg
ICAsIHRleHREZWNvcmF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKSkK
LSAgICAsIG1fem9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKKyAgICAsIHpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9CiAKQEAgLTM3LDEyICszNywxMiBAQCBTdHls
ZVZpc3VhbERhdGE6On5TdHlsZVZpc3VhbERhdGEoKQogewogfQogCi1pbmxpbmUgU3R5bGVWaXN1
YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKQoraW5saW5l
IFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYg
b3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlVmlzdWFsRGF0YT4oKQotICAgICwgY2xpcChv
LmNsaXApCi0gICAgLCBoYXNDbGlwKG8uaGFzQ2xpcCkKLSAgICAsIHRleHREZWNvcmF0aW9uKG8u
dGV4dERlY29yYXRpb24pCi0gICAgLCBtX3pvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkp
CisgICAgLCBjbGlwKG90aGVyLmNsaXApCisgICAgLCBoYXNDbGlwKG90aGVyLmhhc0NsaXApCisg
ICAgLCB0ZXh0RGVjb3JhdGlvbihvdGhlci50ZXh0RGVjb3JhdGlvbikKKyAgICAsIHpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAppbmRleCBhNmY2OGVmZDA1MGE3ZGEwOGU2
NTU3MDE2NTUwMDBhYTA4YWRmYjQyLi5kNDE4YWNiNTBhMjRmOGEzYjIxOGRkZTE4YzMzZTFhYTg4
YThjYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlz
dWFsRGF0YS5oCkBAIC0zNywxOSArMzcsMTkgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVZpc3Vh
bERhdGE+IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVWaXN1YWxEYXRhKCk7CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNsaXAgPT0gby5jbGlwCi0gICAgICAgICAgICAmJiBoYXNDbGlwID09IG8uaGFz
Q2xpcAotICAgICAgICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gby50ZXh0RGVjb3JhdGlvbgot
ICAgICAgICAgICAgJiYgbV96b29tID09IG8ubV96b29tOworICAgICAgICByZXR1cm4gY2xpcCA9
PSBvdGhlci5jbGlwCisgICAgICAgICAgICAmJiBoYXNDbGlwID09IG90aGVyLmhhc0NsaXAKKyAg
ICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uID09IG90aGVyLnRleHREZWNvcmF0aW9uCisgICAg
ICAgICAgICAmJiB6b29tID09IG90aGVyLnpvb207CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7
IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIExlbmd0aEJveCBjbGlwOwog
ICAgIGJvb2wgaGFzQ2xpcCA6IDE7CiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb24gOiBUZXh0
RGVjb3JhdGlvbkJpdHM7IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhp
cyBlbGVtZW50LgotICAgIGZsb2F0IG1fem9vbTsKKyAgICBmbG9hdCB6b29tOwogCiBwcml2YXRl
OgogICAgIFN0eWxlVmlzdWFsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UGVuZGluZ1Jlc291cmNlcy5jcHAKaW5kZXggZjc0OTMzOTAzNDIwOTVjZTMxNzQxY2NkMmMwMDNh
M2YyYjY0NzI3Mi4uMTAzMTlmODIzZWQwMzE0YjJlYjM4MjU4OTBiZWMzNTcwNzAzMTVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHN0YXRpYyB2b2lkIGxvYWRQZW5kaW5nSW1hZ2UoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjCiAKIHZvaWQgbG9hZFBlbmRpbmdS
ZXNvdXJjZXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRvKiBiYWNrZ3JvdW5kTGF5ZXIgPSBzdHls
ZS5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFja2dyb3VuZExheWVyID0g
YmFja2dyb3VuZExheWVyLT5uZXh0KCkpCisgICAgZm9yIChhdXRvKiBiYWNrZ3JvdW5kTGF5ZXIg
PSAmc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7IGJhY2tncm91bmRM
YXllciA9IGJhY2tncm91bmRMYXllci0+bmV4dCgpKQogICAgICAgICBsb2FkUGVuZGluZ0ltYWdl
KGRvY3VtZW50LCBiYWNrZ3JvdW5kTGF5ZXItPmltYWdlKCksIGVsZW1lbnQpOwogCiAgICAgZm9y
IChhdXRvKiBjb250ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBj
b250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKQEAgLTg0LDcgKzg0LDcgQEAgdm9p
ZCBsb2FkUGVuZGluZ1Jlc291cmNlcyhSZW5kZXJTdHlsZSYgc3R5bGUsIERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgRWxlbWVudCoKICAgICBpZiAoYXV0byogcmVmbGVjdGlvbiA9IHN0eWxlLmJv
eFJlZmxlY3QoKSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFnZShkb2N1bWVudCwgcmVmbGVjdGlv
bi0+bWFzaygpLmltYWdlKCksIGVsZW1lbnQpOwogCi0gICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIg
PSBzdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpCisgICAgZm9yIChhdXRvKiBtYXNrTGF5ZXIgPSAmc3R5bGUubWFza0xheWVycygpOyBt
YXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKQogICAgICAgICBsb2FkUGVu
ZGluZ0ltYWdlKGRvY3VtZW50LCBtYXNrTGF5ZXItPmltYWdlKCksIGVsZW1lbnQpOwogCiAgICAg
aWYgKHN0eWxlLnNoYXBlT3V0c2lkZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZTI4ZmQ0ZWE1
ZTUwN2ViODZiODNlNzFhZDY4MDlmMzA2NjkzODc0Li40ZTliMmUyNzJkMmQzOWRhYTgwZGEwY2Nh
NDNkZDJmYTA5ODljMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTg0OSw3ICsxODQ5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKICAg
ICB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsK
KyAgICAgICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KCp0aGlzKTsKICAg
ICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMGM1ZmRhMDFmMDhhOTA1ZDE2YzkzYzRiNzM4
MmI2NDJkODJlZjVhYS4uYzkxMTU1MjBmMmM4OTUyMzllNDE0MmNhODY3YTdmNmQ0ZjYwNjJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzQ3MCw4ICszNDcwLDggQEAg
LSAodm9pZClfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OihGcmFtZVZp
ZXcqKWZyYW1lVmlldyBkYXNoYm9hcmQKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtba2l0
KCZmcmFtZVZpZXctPmZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgd2lkZ2V0OiBmcmFtZVZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAg
aWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkpIHsKLSAgICAgICAgICAgIFtzZWxmIF9hZGRTY3Jv
bGxlckRhc2hib2FyZFJlZ2lvbnNGb3JGcmFtZVZpZXc6ZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRn
ZXQuZ2V0KCkpIGRhc2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CisgICAgICAgIGlmIChpczxGcmFt
ZVZpZXc+KHdpZGdldCkpIHsKKyAgICAgICAgICAgIFtzZWxmIF9hZGRTY3JvbGxlckRhc2hib2Fy
ZFJlZ2lvbnNGb3JGcmFtZVZpZXc6JmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBk
YXNoYm9hcmRSZWdpb25zOnJlZ2lvbnNdOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggOWE4NzM1OGIwODU0MzUxOGQ4MDQ2NjMxYjUxOTMwM2UwYTMxYzRhNy4u
ZGYxYTU3YmE0OTRjYjA3MjMyMWE2NzJiOTkwMmMwODNiYThlM2E1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00NTcs
NyArNDU3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dHUKICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhbmltYXRpb25PYmplY3QtPmZpbGxNb2RlKCkpOwogICAgIGVuY29k
ZXIgPDwgYW5pbWF0aW9uT2JqZWN0LT5kdXJhdGlvbigpOwogICAgIGVuY29kZXIgPDwgYW5pbWF0
aW9uT2JqZWN0LT5pdGVyYXRpb25Db3VudCgpOwotICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVu
Y29kZXIsIGFuaW1hdGlvbk9iamVjdC0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKSk7CisgICAgZW5j
b2RlVGltaW5nRnVuY3Rpb24oZW5jb2RlciwgYW5pbWF0aW9uT2JqZWN0LT50aW1pbmdGdW5jdGlv
bigpKTsKIAogICAgIGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMgPSBhbmltYXRp
b24ua2V5ZnJhbWVzKCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtleWZyYW1lcy5wcm9wZXJ0
eSgpKTsKQEAgLTUyNyw3ICs1MjcsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0dXJlTWFwcAogICAgIGFu
aW1hdGlvbk9iamVjdC0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogICAgIGFuaW1hdGlvbk9iamVj
dC0+c2V0SXRlcmF0aW9uQ291bnQoaXRlcmF0aW9uQ291bnQpOwogICAgIGlmICh0aW1pbmdGdW5j
dGlvbikKLSAgICAgICAgYW5pbWF0aW9uT2JqZWN0LT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdG
dW5jdGlvbik7CisgICAgICAgIGFuaW1hdGlvbk9iamVjdC0+c2V0VGltaW5nRnVuY3Rpb24oV1RG
TW92ZSh0aW1pbmdGdW5jdGlvbikpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHByb3BlcnR5KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbQppbmRleCBiYWU5NmI2YTJjZGRmOWJiMmM4MDkxMWY3NmE2ZjQ0OGFjZGRmMjRiLi44
NTA5YWU2NTAyNGQ0ZWU1OTJlZDEyNWExMjEyMTQwZjA3ZmNlMzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERG
UGx1Z2luLm1tCkBAIC02NjYsNyArNjY2LDcgQEAgUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpj
cmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZS0+
dGVzdFRyaWdnZXIoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcGx1Z2luVmlldygpLT5mcmFt
ZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5wdHIoKSk7CisgICAgcGx1Z2luVmlldygpLT5m
cmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldDsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>298566</attachid>
            <date>2017-01-11 03:10:37 -0800</date>
            <delta_ts>2017-01-12 22:37:21 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>612302</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
+LeF20lyLmyGNaEDZs+4BLirYNIelR5QgTWc/SyXxFTCZmimE++zsica6c3THw+TChdioFR1TFnp
wR7nFVEKWPJeM0Fi5pzDyxJmTjU1bacRwDLeEYCNJszn/07m7CJUPwisFerwLKzgGwZQ7uosCdQx
Y3NkfW/6qdWr/wFQSwMEFAACAAgAiRArStkG4sjgQAAA4SYBADcAHABjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNzA5Ni1zYW1wbGUudHh0VVQJAAMhA3ZYIQN2WHV4CwAB
BPUBAAAEFAAAAOxda2/bxpr+rl/BAywWdhPKnAtnOEI2Aa+tz9qtN3KTAkUgUOTI5olEqpTkxufX
7zukLqRIyXZjd5st/UGSyeF7vzzvSCDtNJzeL5KFlk20RTibT5P0RouyWT+cz6ey/1GO/ztZqjc3
S5cyXfY9eSen2XwGn7WTeRJr3BDsVIOj+b2GDG2WTKfJQkZZGi96V3kWycVioG3+Hkv5V0X1U+8q
XN7uLoa/sw/ZdDWTizMvXIZn/sfhWUln/easkml89l5OZbiQ62P9SR7O5O9Z/vnsg8wXSZYuzuyz
X67coczvEhDv7JhQX+bR2frz4uwyjH4anj1Sh95FFsaaHcf5xgLGF2QgbpqGYfTOY1iSTBKZDx60
TG8t984SzKCvtBN47aM+eXXac7NYatf3c7lZ8ovFdEbBfrmy5s4N7969035Fn3o9sJ88u05m2ysw
iKYbSEdIM/DAIAOC+xajmm5YIO5FuEqjW213wd5yNKCkz8Vm+U9DrS4zWE6Dg79AhPQR6jPtBJnf
I4zwae+9nGf5srKe9+xNUF5n2VRROFst8rNxkp4VISp7Ovz1em44nWo3eTi/HfQUE2Fx7fo2l2E8
IpSZphBw0EsW83AZ3f7PSq7kCA0qhp6FSaoviws07WQh8yScnhaUXhW0FssQBNNOklSbJuP4fhr3
4SUZn8J5pGm/Gl/4ZDIRYhLGZhh/Wl9ZyqFol5c+MlwUUYpxQbYIE8Yj4xN4chuol0CyP5sNEDG2
rEpmEKSjHUOQEA7sRKXglq2whBrj8Vh+qlAoaYwUkWz8r2OUuDBrlGIkaJ1SSevHoQ0KJ1G4BI9e
bsnBQdC/sB7ibEeJmmJMmLVPqaSl/1qjpuWr9NM+OWbhKrUYxZbRpNZOb5TKL0v/DjxwqcIEyt/6
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
DStGMSGcajTQaz0sUSLWsC2v5iGf9N9KvqzuChdXblLzfQLeDyGZmJmXmMDUQdxEpLPE+ahAuWmw
kk2RiclFyfceeIeeVr3ub47qFP7iFLqBXMDVOcKoCBy+VxIWdL+NgTjHPclMhwRWOgXbsB9SN7Y2
FWLFzPK4asUWqYpodN9sHysH1MOmwtsBJgzH99lqQO/wIR3F8w6rsYo0qHjJddYpMR9fplKRbCAd
uzkPWxePNUPqkK66lbFj6sWv/r2Pf1u4nSTnwmZYEzpg9oxLgLsKJu1R6QEVWMPZz3JJTCVshmY6
8T4re6KR3jz98TCpcCEGSlXHlJUe7HFeEaWAJe81EyRmzjm8LGHmVFPTdhoBLOMdAdhownz+72TO
LkL1g8AqqQ7Pwgq+YQDlrs6SQB0zNkfW96afWr36H1BLAwQKAAAAAAA8ECtKAAAAAAAAAAAAAAAA
BwAcAGNyeXB0by9VVAkAA5MCdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAADwQK0oAAAAA
AAAAAAAAAAAOABwAY3J5cHRvL3N1YnRsZS9VVAkAA5MCdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAgAAAGwTK0ol4NMILAAAACwAAAA+ABwAY3J5cHRvL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5
LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAkAA4sIdliTAnZYdXgLAAEE9QEAAAQU
AAAAQ291bGQgbm90IGdlbmVyYXRlIGEga2V5IHBhaXIsIHN0YXR1cyAtNDMwNApQSwMEFAACAAgA
bBMrSjA7uLFLAAAAaAAAADwAHABjcnlwdG8vc3VidGxlL3JzYS1pbXBvcnQta2V5LW1hbGZvcm1l
ZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAkAA4wIdliTAnZYdXgLAAEE9QEAAAQUAAAAbcuxDYAw
DETRniluHxpWsGRLsYA4ci5EbA8NHfV/f0u/hIbd7o7pLDEIUXV6VDmgQoGkoQbRR2uRNF3Wj+OM
N7JIBWegpZ/Wf4YHUEsDBAoAAAAAADsQK0oAAAAAAAAAAAAAAAAPABwAY3J5cHRvL3dvcmtlcnMv
VVQJAAORAnZYMgl2WHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAA7ECtKAAAAAAAAAAAAAAAAFgAc
AGNyeXB0by93b3JrZXJzL3N1YnRsZS9VVAkAA5ECdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AgAAAG0TK0ol4NMILAAAACwAAAAxABwAY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1nZW5lcmF0
ZS1rZXktc3RkZXJyLnR4dFVUCQADjgh2WJECdlh1eAsAAQT1AQAABBQAAABDb3VsZCBub3QgZ2Vu
ZXJhdGUgYSBrZXkgcGFpciwgc3RhdHVzIC00MzA0ClBLAwQKAAAAAABCECtKAAAAAAAAAAAAAAAA
DQAcAGRpc3BsYXlsaXN0cy9VVAkAA5wCdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAHET
K0qjV/3oUAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1z
LXN0ZGVyci50eHRVVAkAA5YIdlicAnZYdXgLAAEE9QEAAAQUAAAAcy9KLMjITC52zs8rSa0osbJK
Ty1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJzEsHyoC1FetxuaMbVIxm
EDGGAABQSwMEFAACAAgAcRMrSvKWldVHAAAASQAAACkAHABkaXNwbGF5bGlzdHMvbGF5ZXItZGlz
cGF5LWxpc3Qtc3RkZXJyLnR4dFVUCQADlgh2WJwCdlh1eAsAAQT1AQAABBQAAABzL0osyMhMLnbO
zytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4vSsnMSwfKgLUV
63EBAFBLAwQKAAAAAABxECtKAAAAAAAAAAAAAAAACAAcAGVkaXRpbmcvVVQJAAP1AnZYMgl2WHV4
CwABBPUBAAAEFAAAAFBLAwQKAAAAAABxECtKAAAAAAAAAAAAAAAAEQAcAGVkaXRpbmcvZGVsZXRp
bmcvVVQJAAP1AnZYMgl2WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACiEytK2WKMF9kBAAAKFAAA
KAAcAGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWVtb2ppLXN0ZGVyci50eHRVVAkAA/AIdlj1AnZY
dXgLAAEE9QEAAAQUAAAA7ZjNitswEMfP9VMIH0NiZiR/yKYNtFmWQmEPTZYelj0ozjg1xB/YSkm7
GEpfYM99kz5PX6CvsNJ+tBQMvbSuD/bF1lj6a/znxzAyB4wWgAtEBjzhUeKjJwNgaVV4qq4P5L2j
7Ztc29uqKjWV2jujD3So6sI8X3FEGSciQIkxXLNV1dCGTjphs9mMXZaF0aAdc79//fzj263Lnq82
50YlYXCKMkkCYyQEWN6UqiD2gq0366rc63yxWS3e0v54UM2ctfkn+w5DD+6vOSuUbvKTicHJjHbU
pk1e66oxkccdzn7GnvbiClCo0OyltFm9PWpq7+efv1Jtnr5W7ftfM8EnBezKjrMsilBI34fr5Y3+
WNtUiqNW2wOxXZ7qufHqWGqb4NwxljS51V06zzhLrPraRMo9e5QKYuFHWZ90+uCuzcm9WNtvuDCe
vHzK1e0ekv1dLoIs8uWf5HpcdTunc5Zd5/A+AEL59wH40gcADwIeE58AGBcAMYiBKgDnOyliMQEw
MgAwGqoCKIEYTgCMDQAxWAVQHONg6gHGBsC/aAL7K4BMQVE4ATAyAORwPUAWBMKfABgTANzaPNgp
wCxHOQEwMgAwGPA/wG46BYwOAB4P1gMQEGQTAP8PgDtQSwMECgAAAAAARRArSgAAAAAAAAAAAAAA
ABQAHABlZGl0aW5nL2V4ZWNDb21tYW5kL1VUCQADoQJ2WDIJdlh1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAdBMrSt0hw+1CAAAAhgAAAEEAHABlZGl0aW5nL2V4ZWNDb21tYW5kL2NsaXBib2FyZC1h
Y2Nlc3Mtd2l0aC11c2VyLWdlc3R1cmUtc3RkZXJyLnR4dFVUCQADnAh2WKECdlh1eAsAAQT1AQAA
BBQAAADLzS8tTvXNL0sNyVdIS8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksUjI30DMBAR9fQ
0NwUyuHKJcEIuC5UIwBQSwMEFAACAAgArRMrSupozqKQIAAAo6gBAA0AHABlcnJvcl9sb2cudHh0
VVQJAAMGCXZYlgh2WHV4CwABBPUBAAAEFAAAAOxdbW/bOpb+vr+CCPaiLTB6IylRNLBYdNLeud3t
7XSbdvqhKApZYmw2ehtJTtpZ7H/fQ8l2nNSi5ciKHSe4F2jiyId8Hj485/BVXz6LCP1XkCLHQTYe
2c6IMJMQwnwHYdthX9GXsoxHV0GRwo+5jBCzHfwVvfzDdrjNR8jBzLThP2dEKRnZqBTFpShQKIpK
nsswqASKMlGid3//iGQaxrNIICjuzSt0NZXhFCVBFU7h79VULL6bBon4ty/rKkZd7HPcXjHSVMxn
ZITepLIaoTNRljJL0WkApSBZojSrUJil53IyK6CEL1OZqsfO3s6frB/82la8YmZj8fvgBQpZNliS
J9/yQpxnxcUI4MpQ3K6i7XjA0MtcYbWwSU3HR88/pfLHC/T+j/eWa7om8dFbOS4EMANPYJOtsmYY
qBDlLJHpBAgtkiBGWS6KoAICy/YqenxRxTArRFvdbE5H6DRLkiCNUCxTMULPrFlZWOVYpta0qnKo
wDmy/pHFs0SU1qugCqzXn8+sz2L837Ka//PXmYwj64OIRVAKKw5+ZrPKqERZGarmcVU2lkyFChmn
6FUWgrW0+pCBQE5ajb+tDX0EO40BS5ksT5ARoo8/c1Ge1iRtY0BVwEpkIsxKGahNQSO8effmlSy2
NVR/+3RWVlnyNtNVoytJQRhCv/gWZxOz+lGdgAiSBLoTlPK6KLJiN4UIZeq6DEWAjH6XsUBWleQL
a017Ka3AAy9jGZTI+l4uLWWzAqrakbDl8ycrxhIRyWBrU/W3bpjJIlGkRmMNGqUqsrirMdO0zurS
1R9PoZNYf2bRLIZvrbW6Wuyy3rUkp+CYoOHMsNyaktvf31zI935lfN9cRCHyrKh6FrQ0cqI6/Cfw
quhkrMQ5zqr6o7eyrES64rp98EYrf/gyGjlfb3+4+rS/7mm/5Wlw2b8+XX8Yqnh0eh0pmq6wnUe5
EuMLWRnzTiOSZ7+4ZTIivuk5mHhk4ZZHdU9ceGTs1646luAWVyruOi73vqIyLGRegWvezlVaoKiV
5okEOAQRncoijIWZT/NndYQ+z2bg/LMCzdJgDOCrDJVVUP0Fws65KEQxQsriyLJutlVtPBt/F2Fl
nAP6uXVDJhOjvJyY0yqJ1/BAIeABC2SZWaRiArGpDmc3KXG5v54SRpqkyPZ8NkLvVr6PIlmGGcRv
KPUcGvJ5+aIJ7ip4FuKfM2BlhLZlMQGjKzQGoYyIVc5ypXAjMHOw/fxdlgpw2LM4QmOBFphE9MLc
yGNtvjbayplneoy4PluvnZqPtUQxdnft3NCNqISRA4n9VZMGl3JSt5alDBpBVRVyPKuEFaThNCvA
32YXUrRS4ZuOzZjrr6eCOG4LFdz5qkI9+gz+CcodIag4JDwXz63LoLDOsxhcfmmx1Co9HGJn6tLc
pTwO89S9hCw8CaHy9iS1PlrGNQTjJgRjAaHIytLICjmRqXFeZEntGsoak1nTCLH3BUgXOJtB/qmk
qqiMZAG9KSt+Qpa6tUpXiG1tOgTphMryEL3VTuXNhgLP2KGhNCjXtxzGtkvcu4h4Hy13wM11l251
G1lLE3kMY/IY/EzzaRoZoKA4u4JctGlP42oqUqMUaaQeqCvTRhc3MeeEO4es6BIGskcp6NvA1jcQ
oTAYdo5bz4UINkVNblIMYbM1gWjLtHxnz0RsF5hqJrYMS0CN79rcfwQa6RICuOlibnvu8dPRzYF4
3LWZv2667wYx9Yzac+K++DDHgiqRwAAhKGT8U1X8MpCxqv2omRN0+QjVVtCnJSj1OwwdrlBeZGom
aH2FmO1id+nRwom8WRHqsq4VWdeOHoMeX49j0mcVCoGnCsY1Uxi4L2o1QsQdobIJmU0RZh5v0xjX
zQ2Ir4IiMqoMemowUXOCMJaEvxtZGmdBZGBNywARBLNBiVAzzJAOja4ZKfPgKr1NyE5C5QEw6mOP
27yVUd+mfRj1Me8mrdk4kdUqgi3ZmMpSJTHGOAgvjKDxesBLYtSW65WHG9b1hLjuoITcq8QOhFkX
rFPCCWln1unHLHE7Se1SRiIzqmmRVVUsIkP1EBMqs3nORk0NW83X64obwVjNd+oAUwfTQQEPJKVV
rPdEFXPs9gjnYdyHKkZpJ23Uuq6CYiI69ZJShLNCVj/VjHAFZZ7Nf3+fxTL8aTmmY9UWg7AerJVF
aETiPJjFlSEnaQajzw2MuN6gjNynHzooaj0HxtbtWQQj/fqld3COyHM83xsU8LE4IuL7xG8PUvWa
TY8Mk3bLhyCawkClHszCD7vqMLXRIIViIKKXt383UvgXyG1CPJRdD5ZKEZ8b4zgLL/SkUdcelLSB
9LWBthX/9bBahEKiidtlzNRIZ21fttmcawdk+KkUKDuHFpKprGQQy39BUZdBPBPo31+/+8f/nvzx
8eP7b5/e/+3Dy1evv715d/b69NOH198+vP6fT6/PPp6d/J+aVAT4apE1rSMCem6+UMP6Eobl6QQF
1a5bbJZPiiBSLVU/KIz5EuDqjIMIp1kzQ2RMBTxcQHM2c5S+OTqUCvXVV3u5qwWpLH45AG2Tk2P6
lHmkPT2rl217JCNqhqmDV5RJMAH9w6C5Cz/1GmsYpJdBaeRBVantHfXcoEyhCDVWCWKjNrkBuE8H
BT5U5Ly5gn3v3GHT4ZRyTzOSdnplHV63Was0nxpXWXEBWj8Hg4C+tbbu9RLzILUdOoapzwzb5CvN
3hU9Jja2mQa91w897txW82p2d39L1D+mkN6VP9MQ8sQ0m5VNkNSMBBrYDA8Ke0+Nfr80upxrwgNT
k149vCTj96SeDkg9WzdPsQukD1Iwm5kjLrepZjLM3nqMMBo1nazb3E6z03axtdMYB6UMjUBtA+g0
klzClmUWq11en7MijqzxzzwAq0kA2fmV+sQIy1zNjxqKlcX+Aj0tGHsD0TKQlH4ksfptnlDe2CZ3
kBxTbFNNp8Wsl5d3ffdQBajnxGVsUE4egfq0BDNit3ds5vVLLWzyIEXHiEcH5eSRi45QX5PP3mF9
fBFN2EOUG6GcOQOx8ciFRrFL+C5Hywtq/YcoNGDDIwOx8biF5mPbs91dhow5tR0HlbtiY9P6wnyS
ZjWjvbmtsS4TRlj5NP9PoO4/wGCqHiqL8Ddsq9J/Iy9/w7/D/8s6wCeqFvDRoh7w49qawOfLutQ/
QxVUUe2NQuyBGuWh6v2IWpiYNvaw2+7fIXb2mufoOGRS8xKhOkRde4sdLIrMjTXrbMpkm+OpGdBt
NdwFA/te09wrvcRlmnkPRvttb/HJ4QuMuL5maWkXDDxmgWGbUW+wSR+fdctT80Km1WLHOVSiva4+
HrSuQ0uhgfhHvai8ooBu+IlNbaLztaRfV+g2Q1zfdKCy0p2twV8bM2SpzpdVGsEqErg3KAn79gd7
Z5h7WJO2Uq8fw97DkBn3NL5mFyQ8cplRx3d9W7Ptu1dg9/1uU3H1nqLmdJYaQeyAhGbMIi+FkQdF
qU5X2Y6eBo94g9Kwb6Htn2PqEp3Ueh5W4fbhSA3raaC2PygNj0JqWo4Z1m2av8NC9U2OncORGtlA
A3MHpeFRSE3HsQvDIac9RSE9d2VxfDhSoxto8PxBaXgUUtNyzAkMrIbrzvRwpOZuoMHzB6XhUUhN
x7HnudwmwyUpfnepJbO4knks5mOachAyfilETw32B6XmIOR3aLxz4nt++7yb5/Rb4yB0qGMdURFM
jDSr6pOA9QWEuqMINVCmSV53AfRgj3FsxxU1He7ZmqU/4vQ68sLtjom+KpNC7M7bqwl8D1rNIZt0
Iz5XTcXxoZaHuN0tCV4ETBCc01lxE5Gqy6rVqk/js9QhNBkJo1IV0khPYeZ0UMz3003vlzaPONxp
zywItnvR5tjb9thueGW9jEc1+XkDTbOFbxfQ7qmX744Tn7nM0d0MQe+2+4Z5W6SQKrlQe2UgzQBc
WyUyP8ry5SySVVZYSwPL7TfhNCg2YGdDYR86R1wBfvvs737YBI9oa85t9Y2hTscTms3ZZ2OOuG2Z
uKmuiwet7lASKOPVbRHdAROONXsY/F5nUj13i3vfmojWRZkqzYRxiJUXor59LJdhpc6fy/QyiGWk
lSPh/rBwB2rfW1e63Q9ZFCxoOsMd9xxzjO8aBYz5Saze7mvDia4aPNdszusH/lDCwD3SSWzmubt0
rAs6yf4yinQWbw6AAFwz4OgH/HjSiU5Uuli3r4R6/e4A6njKd0fut7l4R4+W6W5k3QHahxKqNnPl
M5+3O2vX7jWG83x+n8oo5b9EqQfLNdtOdwH2oQhDT5Vr2tCF/PZZf2b3u0vBs+9DF9crSsaVrKb1
trM0SzW3KdXAPWoPCvzQNXIn2ohNXHeIpI/uL0spw6lI1OVccaBWcfTwKRsK/vHkKlsQSn3CXc1c
kt2vGzr363/0SKlLBkX6cByOjifX45ot+HcI3osu5u3Nw2jhMt0SWj+4R+NRdARCqHY1ryPw+t0O
2PHWtJ31jFJsvj1ZgXZszWrTLkA/HGfSkTLuedzZ/aoFx1us2Mi0EkUVTO7cIdQVX4Z6qXKzm0AE
FwZ8VF/rqsfOHDoQ9v05mT2x6WBwOLo9oXe80oQTe79Kqs2oxRAtdg+7A2E/LiV1YdP1KecD9Evi
7FdJ1TSojFxtk7oKlpdXGrN6bxxAqH4aEbSdMStiPTsupgOxc1xa2wnf6iJWzRwh6Tclwh285XUA
dyVo9YC6Hi7R7EfcBdy9iOweCWQuobucDLlBIGaHphemu2BqF3CPXC+U0gE3tXa8wD4M4li9R6s0
gkIY6je1Hzc1wqxorgNS+/5+VN3uHQL04HRXyOxo3QAas7QTZRAEB6VsKM3dlZoDId7FBDtDzdZx
Qo5Qq0AZHZayJ62uJ97nmqOaPbds8Y4nSB4YZdy2yaCUPWl1LfEe1u2b7rnsyju+f/LBUUbwoJQ9
aXUt8czGmpuyezsJ7wi1CpRptpPsgrInra4nnjsOH85JsGPUKnc01w7sgrInra4l3meOdg2hJ/H8
CLUKlFE2KGVPWl1PPASdIVZo6D2u9YVZdiHVeZbvItywtqnw+t5AeB/umss2DHIXa0Y4fbsqdY7Q
uwFlmpmjXVD25N3WEU+AFH+4GXl6hDPyQBlxnEEpe9LqWuIdh2mu2ey55Y3TI5yRB8p86gxK2ZNW
1xIP4Uyzk6Lv0JIe4Yw8UAY6GpSyJ62uJZ5gl/vDOYkjnJEHyjzHHZSyJ62uJ557mjum7zA6vUm8
d4xa5d5uN1H+QtmTVtcST6luN2VvJ3GEM/JAGYyfBqXsSatriXcp0Z1o6Lm1kfpHqFWXUhsPStmT
VtcRzx1fd3C/9xLzPZ7mEskYqAADwEEkjKCqCjmeVcLAG/APd0FXjf/hztPfjVFKPYp3Of28WPPg
+9fSBtzadxv0wX18GtIxyVy82+XZOZMu3Y+COtxc2aBm9kCoj0M/HXj0TNsmzB3iFkGX7UM9ENrz
oJoaM2UxkWmgu5mqRu97fCD0x6CibfkkDtHsBLvDIGrB514yo+9QoflRf93pxRo33e1ixwruY9BR
dyZd3/cH6ZF7yYc2X5xYQ+YOHQjyMYinE4lcnf9vJdF27rp3yLP3oBs9UMrIQECPQC0a6hzsY80t
t3cYvS6ow/enkfNg9mN+/4yjx0psbyCsD1cmXdnzbGxrdrTzu44uPLIXpWA9VuKxgbAehVK07HHH
Z+4u7wFesEf3ohSyAat2tb4P1qNQio49jB1bM9bsEbi9e1RKViRGoN+G3EDVXKzZD+oDFkon8gj0
Mc1wALN+N4u7bvc7BYOpSIz53XedFmCuxPg8SyvoEs2yi6F+M67AvFja0SPX7LLcBfKBxLPAff+s
MVO9IIst9ZLkybccysuKi1GaVTIU172uice243G13jmbTCt09uZvH19/+PMvqJzOqgoKQlF2ld4u
CLOR7ZvMsSlZNk9ZxqOroEjn5rHjLDont8H+NURKychGpSguRYFC6EDyXIZKdeoWKfTu7x+RTMN4
FgkE5b15hQB3OEVJUIVT+Hs1FYvvpkEiWmrG3ZXbcdbUbD6L4jNo+TeprEboDNoZ+iE6VdfHIFki
IAtEkZ7LyayAIr5MobfDY2dv50/WD35tK9+zr5Pt9vL3wQxzrkeLreK4riOoAzh6mSu0Fjap6fjo
+adU/niB3v/x3nJNF7opeivHhQBu4AlsslXeDAPUXs4SJaUU/F0QoyxXb7UDCsvWOmJ8PVTJCtFa
OZvTETrNkiRIIxTLFLr6M2tWFlY5lmndIaEG5+3dt/nnrzPo7NYHEYugFFZcd2lDdWRDVT2ed+3I
VLCQcYpeZSFYS6sPGWjkZEvfcIKMEH38mYvytGZpGwOqAlYiE2FWykBtClrhzbs3r2SxraH626ez
ssqSt5muGl1JCkLlLL/F2cSsflQnoIIkgR4FpbxWbns3hdQR4LoMRYCMfgfPiKwqyRfWmvZSYoEH
XsYyKJH1vVxaaoJ4R8KWz5+sGEtEJIOtTdXfumEmi0SRGo21+QpNV2OmaZ3Vpas/nkIvsf7MolkM
31prdbXY6zxGMTIF3wQNZ4bl1pTc/v7mQr73K+P75iIKATlA1bOgpZET1eE/gV9FJ2MlznFW1R+9
lWUlUnQzcq/84QtkqF9vf7j6tL/uab/laYgMvz5dfxiqkHR6HSuarrCdR4F840JWxrzTiOTZL36Z
j2zPZC4k8cutCTdyMezUg701aRZx1F1JzWgIfPOWeRRIaqV9IgEeQUSnsghjYebT/Fkdpc+zGXj/
rFApH2R7qMpQWQXVxjRLGc/G6hClcQ7w59YNmUyM8nJ9hgVEOMS0fZ9eB6hUTCA61QHtFieuOsq8
lpP5VIjt+WyE3q0YQJEswwxiOBR7Dk35vHzRBHgVPwvxzxnQ0vtltEEoI2KVs1xp3AjMHGw/f5el
osmC0VigBSgRvTC7vai0NtpKmms6DqY+aVGPr94YsI4pTHuo54ZyRCWMXGXOvXUDAws5qZvLUgav
N2VYQQrDwsJoDui2cuGZtmPj6/HwbS6Y38IFg2EyhHv0GXwUFDxCUHNIei6eW5eBGk3G6u3uFkut
0sMhdqYuzV3K4zBP3UsY5iQh1N6epNZHy7jGYNzEYCwwFFlZGlkhJzI1zossqd1D8/Yes+YR4u8L
EC+QNoMsVIlVcdm8Wi4rfkKuurVOV5htbTsEKYXK9BC91VDlzZYC79ihpTQo1zedo46x8TvJeB9N
d8DtdZeOdRvZ+jbCtke5/ShcTfOp2qmaxWquAeJG3aDG1VSkRilSNVnQVKaNL2Zi5jnXbyM4SE2X
MKI9SknfBra+hQjQjfGRK7oQwabQyUyq3kLjtzJhtzDh8T0zsV10qqnYMjYx01UvFSGPQSVd4gAz
IQo49DH0mg5OBNumqxZMWAsd9c6ydXQQhw/h5mWiXhBQvzyn3lM4EVMZCWMKsSyev6biAfr4/2/v
XHobR444fs+n8GVuod3vxwLBYg95HQIE2SxyDDiSbGlHEgWSGs/k06eblGV5LJVaapbEtggsMJZn
h+r68d/V1Y/qCrBq37uh986nOdL71mXfviYafnKwWbyV9qe75jF3v20V5z+7Cd7zy/bGgRZRpQ7n
vznBqJgkeM4Z9n52k8qzrH/dfP5nMZ+Nvj/Qe/rQZPX4yGLiE4SqHz/7V7eY1HnmFOGXecF6Tq+w
NDIs7H3O/by62PK87JswStvDb6Jx++e/CRZ4NcuqqNoFtaqpPuf6fjyw9eqpdI9yUJr/0Ze0bNaD
2tf58kVZvv42m8/y8jtMyRw+HdkNpevo9TCkVyX3+uWwe6GEUgx4OT7PPeLlnFDL5NE96SQ4/q8z
cm8fZm1X3lT/ga3VVONaiy3FrdVvC5lcgp4L+EF3J3QcPROslSb2OdPcJmwKslYwZGuvpJUL0JPE
UgLRk3E9jYdr5dmFoM4bnt9BNg9wvnjpV7t82fAwAIriAriSfK4ElBJKJBpQLsNyLZptfV8wvrPR
/PVh2azyy6j1EQrQTKkLCtcO/q+NmAtGBIQ4zvEHXtP9vqcdbu7hnJxumtsLR3PAfKG4hcw3LKpD
EJ6EWxBKaolL4dbdguRKWTzEkvd5jao9o5QVy/n3owsjDStNCC6rG12iOvlFGApN76WJW3shF5je
f5uWWV59X46mZbEs1lVIsOjshqPveLuTm+ifw9FqZUCnF8dRn3C1wqI5cbpJdvKTho463ZvnLgvX
2cLAaKVwwfTCw/WKuiJcGDDMiYt1tU5Ujj6NVghcMIMc31M3hoJLEjZulKEXGl2DTLXG4Jqa5IAa
gI5yBjutOHTapuq0KBeC4IIZnNY76oxwzjul3iRIc67CRs92UtOcM/MXnl5m5rR0f07Gm8Nc/g7W
5gfHbIPsCDCpsYBdW6DpvQ2qKeg04vZVtErVmzaDMC6YwZv+SF1TqsDl59j9GBoux06JtIceZ18n
2SovK38OlFCYg2YEl0Mv1HdVyFJocJU/bquHS9YfsTGYgyEMl8NNiA2GbLTt9gTHJuzRYTsdbYr/
9i7hz3k1G2W5zzwKu4//hcasKuY+ufQ/RTkfP3z+vsrdUxe5Czue/W+aLaXHosz8bO4lpQnmYjr2
dDtckGT3bTH3nzbnBN+k5/YTsuGGa7SpIVf9nDPPll/z+WzcfIihE+n/tOjPOMCPcIC3ZONVcmsh
7wkSNAxXgjcxBIP6tsJwRH33dK4bKkFHRwlcOkPvP4DeaHCtIbb3675GiEegGI4L5QbCQ4CwIZwy
hrbpzgOvve0fFCFxody67KTlwFmPuPKMrmOblIdhT8dKXDrDMLwfPaVA/bazRpzNUoQhKXpCn7Eu
sXDcuA+kgoCrXpGjzCmHGLCnZOIIB8FwOdzEvPcI5J07tbrfTDI06QHXhXsUmc4w4B5Ab7RivbzV
xj3R//Sh7rTZY9Oh92I15JXPrYHnOgNLMhCyWqHhuPFAiHFqENOQDU96bGKcwflG8XSGsWk/es4U
x0tb5kYkLUxHRxpcOoMw96MXDgqmMJPexfJ0UIU57GIdRq+UQDy7aWR/1jTkEQ7K4nK4iTUNELIU
lENxI4/s5zppL+joWINLZ/CC+9ErJTVBHIDS3t1ydKzEpTMIcz96LYCKjPFL7TbtVWAtLJG4dAZh
HkBvNTN4O96WnCDM9byerZwd7T1GFUpg8+5LYDZS4bLphyx7Bt5SSSgwy7ZxN940exihyb3VpD54
X5tvp1W47UQSyN5tjyMG83siuBWINzbasFnmohh9yVbztS/b0I0DbR/WFAfN8sdHJ90qa774oEpb
GJrhwkB6+625u1d79wSpNoziJYMIckKYtKlwOHZEEYhshucjLATBZdGL0efqoC2B71fjJg40T0h0
lhIjcFkMonOgKWGS4YUOgoh0ROdYKOjUdxcsBtF50JQRhTfZE0QmJDrqqwvhshhE50E7zgxzeFUJ
ic6xAPNbOmAxiM6D5pRSi9i7dUKicyw4MotBdB60izSEQuzdJiHRORbgTlwHLAbRedBSEVRPZxMS
nWMBHYLpgsUgOg9aKaEQ16YoSUh0jgViqnzDYhCdB62FlLzTXeI2E0BQetHEiGO0N6WCdq+XelvU
vPnOydinpvw8qlZ/2ik+9okR/+2f+C+f2F/cf9s2uN/4VrhfvbTD/bi3Je7327Y0P7sm+K86/Fag
Cr5xbyXV/IwP9YoZN8RQtOMZgoYtkH+djSdFVk/Loq7nk3GTWRX0VhbOvPyh/edNy7P8c1HWgKtx
Frv5I67FSNLeNfYirLhQkmm0bVBBWBeb9W07EYtYNu3s1Wa9kJQRvBu3BA1beKucI8temh0SOOxY
uz0z8jkfffEJbc95Oc5cS8rZpAI06U3v+F74d6Zf8l1fh6E5UvU2Mq5lfYnx1+Ucuqu4RYGY9dOg
uIEQ/zhnZQxUak8oFsdZpyM5ZaxCRjFIznHWWkPXz8YuGVGbjuQcCihA6gLFIDnH2bjhxOJ1bUbS
kZxDISguikFy/N5N0LhFnKMx2ivJMRiFYBIXxa1IDuTsi/VyxK7N0pGcQyEtLopBco6zsNRwxK7N
05GcsIwoXBSD5Pi9EZpDh/QliysOb8OmD6vStXizdeCXeQ82VkBpll00FlsUrY1/a1LIdrQQAkDc
G2uYwhyTrlVrxOv2lFpvLQqjcFF8vHsyTudsiTaI95G4UDYZyXkUFhnFIDnhs1IZVFHOzYCiOHOS
juSo5FDv6wLFIDnHmQkJ5QVHcw47+drcsJovx1lV5/N50H73zkbZyl/XOspH0wl4bWZrraa41iKp
6lU2l2OloItPYnO7mEnHGTEBFlvsAsXgjBxnrilDPBHNbDqS45pRZBSD5OQ9J5xTxPFPhIVcj0W5
yOq8fGpOBZ3iz3dm0t6z19O8zlaFew9HjLYS1+iLHqi6KD3hq05avFsCbdhi5e/uOZvOsy7nHXSe
tw/cnmMFQQiqcEFc20ddn7JkzEjonAPnZ16jL084VOOvfvKHqifZ1Nl/EodvVfXLejyri/Jh+4Dt
Oe3RNC9h4y20Gh5nPLa4diz/YdS7Gk4poEBWRB6HE7wnAVbQHXotDy1weXz8KCsQthISLIwmJY2B
TQOLpDQnctvmh7Dws+3Z8ulhVU6aifdqNqrX5eRo1lNjr5bI9qIvNlyQlpGqW1qbbKTzh7msze+J
d8+b58DWQxvgcdb3ZZy7HE9NrITOsEghovpe4K29HfWepcMNxojeXItsbiqu5jgsrgR4dFHH+eXA
Kf/S9Q5nWLYx89Ded9NeSQRue7E8RDXfecEnWKwl4Z1a/OINzfWmPMv1/GiA7i2HaovHWf5x5jtB
LDVVYP1OL/zz+w1jF403q9n/JhVsrVYC19pUhoBjrIwlCtwGFHHnGaRKaxrseBhohOmCxzAN3sC2
iivoUi8jaFxH5ZdwS68ks+dZPW3KVoZYDp7y7cDyvruo07mpe0IkA68rFyyOm7isYmBTBSG4pqYj
ERCUggv2xYESKqmV3JaHVrg8hiHsBbZQYFqMETyul8rLOqRqUmezp2VRAusGjdWMGlyr0/FNgcyM
5kRD65rszPmsotebyVej6WQxyRyT3BfKge0XTGDZ/3Hm8+FEBXOzkW0wtFgt/uu0+ViUX35aFvVs
NNmipapd8SBUWUcoXz9N67tf//7Xf//5X//44101Xde1U/bduHhe/uH/UEsDBAoAAAAAAG8QK0oA
AAAAAAAAAAAAAAAFABwAZmFzdC9VVAkAA/ICdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAA
AFUQK0oAAAAAAAAAAAAAAAAMABwAZmFzdC9jYW52YXMvVVQJAAPBAnZYMgl2WHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACACEEytKbMSqPYwAAAA0AQAAJgAcAGZhc3QvY2FudmFzL2NhbnZhcy1saW5l
RGFzaC1zdGRlcnIudHh0VVQJAAO3CHZYwQJ2WHV4CwABBPUBAAAEFAAAAM2OMQrCQBREe08xF3DJ
bqMsYpNIINpZWIjFj/ngwub/sFmDenoTT2E1M49hmIYE1qJw3m19sQHu2hsahsjmwu0x5EVKlcyS
TcUTRx362V+ddc7esDukpGnvUda/1iufOZ+CcEXjwyPIRDF06OYESoneHpQRmcYMFQZHXubQP2fQ
MkRl/eGkZtX87bMvUEsDBAoAAAAAAFQQK0oAAAAAAAAAAAAAAAAJABwAZmFzdC9jc3MvVVQJAAO/
AnZYMgl2WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACDEytK2wjTQjsAAAA/AAAAKQAcAGZhc3Qv
Y3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0VVQJAAO1CHZYvwJ2WHV4CwABBPUB
AAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCory
k1OLi1NT9LgAUEsDBAoAAAAAAGYQK0oAAAAAAAAAAAAAAAAMABwAZmFzdC9ldmVudHMvVVQJAAPg
AnZYMgl2WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACLEytKWCpndTkAAABDAAAAMgAcAGZhc3Qv
ZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1cy1jcmFzaC1zdGRlcnIudHh0VVQJAAPGCHZYzwJ2
WHV4CwABBPUBAAAEFAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUS
SxQMDQwM9AzAQMcUzuQCAFBLAwQUAAIACACVEytKMLVt4zkAAABDAAAAKwAcAGZhc3QvZXZlbnRz
L21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAkAA9kIdljgAnZYdXgLAAEE9QEAAAQU
AAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFMwNDPQMwEBH1xDO
5gIAUEsDBAoAAAAAAFsQK0oAAAAAAAAAAAAAAAALABwAZmFzdC9mb3Jtcy9VVAkAA84CdlgyCXZY
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAIoTK0oqacw+agAAAGwAAAA7ABwAZmFzdC9mb3Jtcy9j
aGVja2JveC1hcHBlYXJhbmNlLWNoYW5nZS1ieS1jaGVja2VkLXN0ZGVyci50eHRVVAkAA8MIdljM
AnZYdXgLAAEE9QEAAAQUAAAAMzIwNNc1MNQ1NFQwMLIysrAytNQzMLZQSM7P1UssKMhJ1QtPTfLO
LAFRzvl5Jal5JXouqWWpOfkFuUB2tJGhoaW5lbGpoYWRhWWsgl+wU2lJSX6eY15mbmJJZn5esWte
YlJOaoqtnz8XAFBLAwQUAAIACACLEytK41CSXasAAADqAAAAMwAcAGZhc3QvZm9ybXMvZm9ybS1h
c3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQADxgh2WM4Cdlh1eAsAAQT1AQAA
BBQAAAB9jb0OgkAQhHufYmsSLuwZ5aczamG0spDCUJywwiVwi3erxrcXjbXVTCYz3+gE0zjBGBES
Xeis0FrhEqHmQZlx7EmVdNlb+cianZATtaEH9TwOkz9rxDwt5gvMdJZXEEURxOfVaRUCyZEC331N
BzaNde2RbncKAlfrbOh+YWml23rPvqjgaQKECQrCYBxYF8S4moCv8J8onZHv2vSeTPP6XVCjYNc6
9lNVzd5QSwMECgAAAAAAWxArSgAAAAAAAAAAAAAAAAwAHABmYXN0L2ZyYW1lcy9VVAkAA80Cdlgy
CXZYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAIsTK0rbCNNCOwAAAD8AAAAvABwAZmFzdC9mcmFt
ZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAkAA8YIdljNAnZYdXgLAAEE
9QEAAAQUAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUK
ivKTU4uLU1P0uABQSwMECgAAAAAAZBArSgAAAAAAAAAAAAAAAAwAHABmYXN0L2ltYWdlcy9VVAkA
A9sCdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAJETK0ohj704MgAAADMAAAAsABwAZmFz
dC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkAA9IIdljbAnZYdXgL
AAEE9QEAAAQUAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVFqcklCimJJYkKyRmp
ydl6XABQSwMECgAAAAAAYxArSgAAAAAAAAAAAAAAAAwAHABmYXN0L2xvYWRlci9VVAkAA9oCdlgy
CXZYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAIwTK0rbCNNCOwAAAD8AAABSABwAZmFzdC9sb2Fk
ZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4t
cGxhY2Utc3RkZXJyLnR4dFVUCQADxwh2WM8Cdlh1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJV0jN
KyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQUAAIACACM
EytK2wjTQjsAAAA/AAAAUwAcAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQJAAPICHZY0QJ2
WHV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sV
klIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIAJETK0rbCNNCOwAAAD8AAAAtABwAZmFzdC9sb2Fk
ZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQJAAPSCHZY2gJ2WHV4CwABBPUB
AAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCory
k1OLi1NT9LgAUEsDBAoAAAAAAGkQK0oAAAAAAAAAAAAAAAANABwAZmFzdC9yZWdpb25zL1VUCQAD
5QJ2WDIJdlh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAaRArSgAAAAAAAAAAAAAAABcAHABmYXN0
L3JlZ2lvbnMvc2Nyb2xsaW5nL1VUCQAD5QJ2WDIJdlh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
lhMrSjkBy91AAAAAegAAADUAHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1h
YnNwb3Mtc3RkZXJyLnR4dFVUCQAD3Ah2WOUCdlh1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQoo
yq+otLJKzs8rycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM3IKc1FygptQULldKNAMAUEsDBBQA
AgAIAJYTK0o5AcvdQAAAAHoAAAAuABwAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3Jv
bGwtc3RkZXJyLnR4dFVUCQAD3Ah2WOUCdlh1eAsAAQT1AQAABBQAAABzLUvNKwlOzUtJLQooyq+o
tLJKzs8rycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM3IKc1FygptQULldKNAMAUEsDBBQAAgAI
AJcTK0rkisdDPAAAAD0AAABAABwAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGxh
YmxlLXNpbmdsZS1yZWdpb24tc3RkZXJyLnR4dFVUCQAD3Qh2WOUCdlh1eAsAAQT1AQAABBQAAABz
LUvNKwlOzUtJLQooyq+otLJKzs8rycwrzS8t9gXi1ODkovycHKdKhcxihbz8EoXM3IKc1FygptQU
LgBQSwMECgAAAAAAbxArSgAAAAAAAAAAAAAAAAoAHABmYXN0L3RleHQvVVQJAAPxAnZYMgl2WHV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACACdEytK62SR0IUBAAAKCgAAIwAcAGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItMi1zdGRlcnIudHh0VVQJAAPpCHZY8QJ2WHV4CwABBPUBAAAEFAAAAO2UT0rDQBTG
1+YUQ5alDTOTiRODFjSlCEIXtuKidDFJXmog/0imEi0Bb+Dam3geL+AVnGlrUSi4q100m8l7mfne
Nx8/QjHhPUx6hCBMPep6DrcYYSgsMkuUZQrWPQQ3idSLX+QScmkN4BHSoszU+5QSRqhnO/YpdvEM
+UUFE2ikhzqdDrrLM6UBETI/3l4+319NdO5PhkrFQ7jhcWi7AigLMO4vc5EBukDjybjI5zLpTfze
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
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKATK0pO+yD4iAAAAOcAAAAlABwAZmFzdC94c2wvdHJh
bnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUCQAD6wh2WPICdlh1eAsAAQT1AQAABBQAAACljrEO
wjAMRPd+hX+geGDLDBNsIDq7rSsiOXHlOFL5ewLlD1hOJ9/J7yZNaxTyqBnYTC3AEoW/EhDxoVIT
FzyRE56HGw48XqLjlV5a/c7FCy5UHLciaFy02tTq29P6WadDu4LEzHAEFk6cHWJa1bxrSdgtBKiZ
xgZ1BVGaf/D/0P3+nOfPhu4NUEsDBBQAAgAIAKATK0r9oi5kjwAAAO4AAAAnABwAZmFzdC94c2wv
eHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQJAAPrCHZY8gJ2WHV4CwABBPUBAAAEFAAA
AJ2OMQ7CMAxF957CFyge2DLDBBuIzm7rikhOXDmOVG5PoJyA5cv/f9t6k6Y1CnnUDGymFmCJwl8J
iPhQqYkLnsgJz8MNBx4v0fFKL61+5+IFFyqOWxE0LlptauvNeT/S3Me0qnlfLR5aBhIzwxFYOHF2
2NuuNWEfIUDNNDYAVxCl+QfyJ0bWUqfn50W7E+neUEsDBBQAAgAIAKATK0rPj2YOUAAAAKAAAAAk
ABwAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQJAAPrCHZY8gJ2WHV4CwAB
BPUBAAAEFAAAAK3MsQ3AIAwF0Z4p/gZR2myDwAhLNkaWiTJ+yA5prrtXTCdLDrYBcje/0FgIEB6E
EySkNAK2Yq5IPO4sXLG7CM0cStGt7ssslb+wp4fK8ZEvUEsDBBQAAgAIAKATK0qBSnetSwAAAKwA
AAA0ABwAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4
dFVUCQAD6wh2WPMCdlh1eAsAAQT1AQAABBQAAAC1zLENgDAMRNE+U9wKtGzjwAVZcmxkLOZHomAD
6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdXxMBh0cW+juJVbfvl+gBQSwMEFAACAAgA
xBMrStuKLEvaAgAArgwAABEAHABmdWxsX3Jlc3VsdHMuanNvblVUCQADMAl2WDIJdlh1eAsAAQT1
AQAABBQAAAC1Vk1vGjEQ/SvRnloJh6+kUdITUlDVNm2jQJveVoN3lnXx2lt/EFYR/71jL6SRwg1z
Asz4vec3Hs9Mbm/zh+ns59189u45c2idzW6es8q5Jny+LNRYCIj/yPh7LQrUjGvljJaWSbFGZp1B
qM8rV8sQYrDRxmU32cP0E1HMPv/4nvUy3DTIHRa0fj+ZzWgFuPNAO7L59Pc82263vcwi90a4di+F
Dc6vw/dNZRjYVvHKaKW9ZQup+QqLYzl7ETkZmCgN1JgKL6izduIL4bQJOAuwyCqD5d5/xiswx8v+
j1sIQ8EJhAeBqNxsl897LQWPWe0Ywq1pwFihlqz20olGkgKEAo09/jx/YA2WG9E45o1kIKV+SpHe
4fkw7O+SDIpTjWhjDywxoVjHwrSSLRNLpU0KBQd4anTAUGJNdqciIqZG+qVQrm3QRhMHw+PVv8YU
ag1SJLCkS7TS5Em6Qn5z+lFaTChLCrdUv0ImkFvrwlMBvbZi52/8cRKCdI/c2ychxWU7gDo+HpXb
ZvdOMWGZpZo7idLLk6COToJ6keAKCKslUMyjNrKIra5twFpWA71wT2GRBedLbVho2PTEJWlUvT0P
UawopYc4GDeaIrQRVL3JCA8fLMUIpWAtluCEVgGogSUyDrzCFPivW6sUasViP0rQsUMTezE8DWg0
owTr4vxYyzBOGvzr8dAKozcNN8KGmYWVQmISdrsSTROCRhdXHy4pNb7ODS4NWkvpocFhPOhl2lVo
cm7AVhhmiVANNDsZ45tI4IzHbmstbKi47IZ2SWi1d3kc03PyjYj7v7T0ZFz/Fhz0p4+z/iMuvgrX
v4ux8zjR97I1jVjxclx0qOE6BuLR8Ho8pi4lNih3uKhgIYOGEqQlEQWVKBENRiR88u1Mq7MvoDyY
9mw47J2NBsMrwq/A5mSrcy1BO17tT1CKTUCLZlzvzCglrNp4Hk8a8s7VeHdtHrLQ7d2+//gPUEsD
BAoAAAAAAHkQK0oAAAAAAAAAAAAAAAAFABwAaHR0cC9VVAkAAwUDdlgyCXZYdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAAKoTK0oAAAAAAAAAAAAAAAALABwAaHR0cC90ZXN0cy9VVAkAAwAJdlgyCXZY
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAKoTK0oAAAAAAAAAAAAAAAARABwAaHR0cC90ZXN0cy9t
ZWRpYS9VVAkAAwAJdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAKsTK0oAAAAAAAAAAAAA
AAAVABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQJAAMBCXZYMgl2WHV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACACqEytKPswRmC0AAAAuAAAAOgAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNv
bnRyb2xzLWxpdmUtc3RyZWFtLWFjdHVhbC50eHRVVAkAAwAJdlgACXZYdXgLAAEE9QEAAAQUAAAA
43INc/UL0SguSczJSU3RVAhxDQ7RSEvMKU7VVHBz9PThcvVzUfB3A4tzcQEAUEsDBBQAAgAIAKoT
K0ql1xOhJQIAAF0HAAA4ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2
ZS1zdHJlYW0tZGlmZi50eHRVVAkAAwAJdlgBCXZYdXgLAAEE9QEAAAQUAAAAvVXBbhoxEL3zFb4F
RIZt1J4iRaItGylKlVQNSipVPRjvABZee2WPgUj5+I4XEpECZUmknlhm57158zyeBQCR3TsTSwzZ
QJLM8oe77AFH15rWP1+iNkX2Aw3KgJmRjy4SEAYCjyEaCtmUqMpSJGQlFlpmUxOyuS7QgXKWvDMB
jJ4jBPIoS8BlhYqw6NGSWt1u9/8rkIqiNHX9fl/A2enHD6J7dvpJ9Pst0YL8Pr8ZtpW0FRejqXdx
Mu08h1Ms/fn5Pf86zAeiXdfpFdFL0s6KiwtxcmXH2mp6POmI2+sWwAJHM01Qa2PlS5bvpZrV4qS2
6M+FMjIEDOfi11QXBdrff8PC1C1eutnM38p8aVlF79FyMV0iFDok6ZtIZZxFEfSSX070Km8/W83i
sWTB2k7ez7fQno80BEg0o2RHIEkxNPDiHxzJ3Wbu7MYCuepd+JEjcmUzikpaNJup6ZBFJWPA4gAK
UsUJj6Ytdo9Rc/wbBZC2DZ1OBsEosi92E3CozGocdg0aYyyP2maojITs/XI/3bxeMhAM31e/27N1
CtMIlsY7gzzwgwduFf1YKoT1+in48FW670fX22P88TzN/X/F0AyysnPryI65DZVWs9TuFsmhS01u
MjEIvE14PEDJKvkc3kA0jsYE5RHt7laG+d2wnZaUYUPT4rYMEE9P4jnW49mTI4NFvce7qw8Aj6Wp
QzV8LE3Ajrj8fPWtJfKbgbi9rF/wd+QPUEsDBBQAAgAIAKoTK0oJftllogEAAAsGAAA8ABwAaHR0
cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tZXhwZWN0ZWQudHh0
VVQJAAMACXZYAAl2WHV4CwABBPUBAAAEFAAAAKVUwWrjMBC9+yt0a3KYfkChp9YLy0K7sKEsLD3I
0sQRkUdGGiUp9OM7Slrwtk7jtDczfu/N6OmNqvqhvlvMjKbe6ydexZDb1bw6VEtJvv/+rm8W9a2a
bZzFcGlz1OwCqetrdfGTlo4cP13M1f2vCrbYrB1Dh9ZpYNwxcNRmDSYQa0cYr5TxOiVMV+rfylmL
9PiOlVZhu8fH4NMQ/h74hgGTY0SSVq5DsC6VsYdE4wOhSm4nP1t3wB0V24tE7GRaR+235bYuoseU
oKg0xYrEmnM67cMnEsXYSc6MU4FD/x16E5hDN0mh14R+iCy3q3qdE9rPSVD6tRJHsuPpmUz/Wnt2
NM3j4g00WSyhIf5Ek0MKxuL1WJHka1jpMqOYvjsqtgk+S2qTl/2M4269QkRFyVwJPEeQjwhyTIxL
bRBkjpBZRopoyn6f2+6I5WfLTHb+P4FJjIOTH+7qjAXonVmXo37QOLHEHNrWI8jbIakAo/vicDpf
Z5m9TyYi0ug5FvWfxaw8SF6sLA80CV49P6u32qUkTjce7f69ru9u1f0PVVhV9QJQSwMEFAACAAgA
qxMrSuxt6R1qCQAA9S4AAEAAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb250cm9scy1s
aXZlLXN0cmVhbS1wcmV0dHktZGlmZi5odG1sVVQJAAMBCXZYAQl2WHV4CwABBPUBAAAEFAAAAMVa
a2/bRhb97l9BxNg6KUxST9eSH4vGlrFFu2mxNtoFFovFkByKEw85Ws7QktP0v++dF0VSpOwCpjZB
InKe99znmZEuE5HS66PLBKMIPlIskBMmKOdYXJ0UInbPT6CZi2eKr4/mlGSPp878iXAicOT8fuTA
H4E3wo1wyHIkCMvmTsYyfKG6ApZHOHcDJgRL585wtXEieMbRxdEfR3o5s0jIKMvnzvFgPFN93h2h
+JbEsekPUPi4zFmRRa4dGp/Lv9WN9A6cURI5x1EU6b6YZcKNUUro89xJWcb4CoVGwBTlSwIiD3Hq
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
feUFKJ0WenGlYujFj3aVHCVj+IgoxhuiZ64XgODzbq+D/wBQSwMECgACAAAAqxMrSn3Z71spAAAA
KQAAADwAHABodHRwL3Rlc3RzL25hdmlnYXRpb24vamF2YXNjcmlwdGxpbmstZnJhbWVzLXByZXR0
eS1kaWZmLmh0bWxVVAkAAwIJdlgCCXZYdXgLAAEE9QEAAAQUAAAARmFpbGVkIHRvIHJ1biBQcmV0
dHlQYXRjaCwgc2VlIGVycm9yIGxvZy5QSwMEFAACAAgArBMrSkxy2UWBAQAA2AIAADQAHABodHRw
L3Rlc3RzL25hdmlnYXRpb24vbWV0YXJlZGlyZWN0LWZyYW1lcy1hY3R1YWwudHh0VVQJAAMDCXZY
Awl2WHV4CwABBPUBAAAEFAAAAJVR32/TMBB+919xj1AxJy1MqyYVBBIIpCJVlD2hPVyda2KI7XC+
dOy/55yu0Ek8jEtkJefvvh/2pyjEEXvYEh+I4T1zYmO+dgT52KHo0lhQ1ABG8KcBKkjQN/jsUtz7
dmQUn6KiGrjDDGPEXU8gCVwKQ09CcJ9GBqafI2Wxxmx6wky6HQWdgPxVxSb46LMopUqgwLeYtNkw
5QytP1C8LcQ+7hOHMhgg7ScC8UGXzueTQ+dGVvMvJl8FoVJqMxczMBAXBs32fcwCO9K/83E1+bl0
jkIP+XZplHOJgPc6CXhA30+RfTzPcgT1qVWytwO6jqqFfWXnS3h2E/2v57D5uKku7aV9uYS13zFt
t2tFLOzV6VY0/3xxZWt95rBJLLCsjVk9KniH7gd8SHyH3CiPpnkMMPBQnchwXVV/GK+XdV1XEQ++
nQJWgQT1xDyTk4s9Y6BsOwk9wGymMNDdlmQ2M+VkL14/gVGvTW/eUa6OdCR26N9M3zdf1qtzwX8r
rf6vzG9QSwMEFAACAAgArBMrShqPBTIOAgAAogQAADIAHABodHRwL3Rlc3RzL25hdmlnYXRpb24v
bWV0YXJlZGlyZWN0LWZyYW1lcy1kaWZmLnR4dFVUCQADAwl2WAMJdlh1eAsAAQT1AQAABBQAAAC9
UsFu00AQvfsrRj21cey1Q6tGlQqhogjUIEUNpQfEYWJPnIX1rtkdp+nfM3YaSAGpwIGx5bXXb957
szNJkoD64ExbU1CvkFFd3s7VLS2uND8sF602pbomQxhIGbx3LSdMgRNPoTUc1Iq5Ud1OUBbXukLW
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
AwoDdlgyCXZYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAK0TK0oAAAAAAAAAAAAAAAAqABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJAAMFCXZYMgl2WHV4CwAB
BPUBAAAEFAAAAFBLAwQKAAAAAACsEytKAAAAAAAAAAAAAAAALgAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9VVAkAAwQJdlgyCXZYdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAAKsTK0oAAAAAAAAAAAAAAAA+ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9VVAkAAwIJdlgyCXZYdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAKsTK0pK3ckVrAEAAKwCAABwABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMt
aW4tbWV0YS1lbGVtZW50LWlnbm9yZWQtYWN0dWFsLnR4dFVUCQADAQl2WAEJdlh1eAsAAQT1AQAA
BBQAAABNUl1v2zAMfPevuPUlG1A7H1vRYCgKBGuKFchQA8mehj3QNu1wsKVMkuPl349y0i2SXkTd
kXekduyDR9hTQGupEtOAcKCGIQZk8CC1o44fMUjY44s1gU3AlsveSTght62UJ9yMoJRMqems85gY
a3hyA/GgtrUDVxl2e70FBSBfbbfrJ0iNk+3hmVUAY7CuGp9QsFIyvGrUDeL5FhLwvHrZrJ+yRFd6
WclzLPsZk4d3aTpKyElVTqf/7rM0fdQz+U95UQfOUKse3JEd1s5ZlyQ7FeDPETal7SOKq9gBeSNw
REJPJ760ppamdxTExj5VGMijN1S0asaitN2h5cDRoIPj3736Vu15y+RZn02gMoy2L1Wp6sSID5pS
S+g4fhirwcqx92jkyOZnTCymtq6LxA62HhME6WIDtbkXhaUOR8XfjroiQkupTD92+8AuZlBvv3od
RcF6u6aryG8xci508VfYPlyX6OikTNCRpB0t62e58nIGtbbRZKsDlXueLrJP2XyJ99+N/PmA/Gs+
vcvuso9LbKRwvN1uFLHI7t+mov7ni/tspnuun8wFLGfJX1BLAwQUAAIACACrEytKunDcNnMCAADN
BAAAbgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFt
ZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLWluLW1ldGEtZWxlbWVudC1pZ25vcmVkLWRpZmYu
dHh0VVQJAAMBCXZYAQl2WHV4CwABBPUBAAAEFAAAANVTwU7bQBC9+yumXNLKWS8OUBBCKCm4BTWU
qKblUPWwsSfJVOvddHdNyN931jFVhNQPaGwpmsnMvDfvTYQQIL9b3Tbo5bUKShaPpXzE+WcK/deH
lnQtv6JG5VFqtbVtEAF9EA59q4OXqxDWMma89Fi1jsJWVtYENKHs45nVVG1lnuVy4VSDQpmKG6zz
r2NBRjQYlGDAhicIWhrrsBb4vMYqYJ2F55Ckafq/8FZVaJXuWI/HIPLhMaT58AjG40Rc3X8p76cF
3BVlOflUnMPDCuFqRwFeOMCOBNTkWAB6Qhi8wh4AeejxYLNCAzVqLozhEylQBm4e7qYQ+UHPL0vg
Ia4OYaUCaKtqMktQsFZLBDKx54I6nEvYUFj9k9bBKzIwMNbg4CByUlrbDVvGe3EUpYbZpCyLa6AF
sCHgEZkAwsa6uvsJ5sgtGdxz1m3I4xAowMfJ7bS4Zsr8RBHfRxFPhvkoqgii/yTwMVI5h8HFGyE6
WjPFzKX8Gx8KccnvYK9JRNgkveXtnFGa93OsHBTOWZekSRot8bscmsq2sY51ZX3opQVjLfDbkOcD
WtCydSqQjSqyIcpDa9Rc86oWKtusNQaM6ztw+LtlVbIINOsuFeIF8s10svS4qm7IkA88lEHYrh/G
crLmQ/awZKPNzziazMK6JjY2YBfdgEBNFJjF7zlWbB7TH3bMYgVDMVHfubFGFyfwdr9atmqOHO23
dzTvYm4H1e8453/WPkijttwL6kmR7tbmc9rbZlek7bIbN1mraoVylB1n+Rm8/Wbo+R3MbmbyJDvJ
js5gSnOHZTnlilF2+uIOa5CPTrNDfnI+RBfg7DD5A1BLAwQUAAIACACrEytKeJ7YhfMAAABzAQAA
cgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFtZS1h
bmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLWluLW1ldGEtZWxlbWVudC1pZ25vcmVkLWV4cGVjdGVk
LnR4dFVUCQADAQl2WAEJdlh1eAsAAQT1AQAABBQAAAB1j8FqwzAQRO/+imkuutROzyEETOKkBac2
2D+gWht7QZaKpMT47yub0kKhy15Gu7PzdKzem6oscC2aJr8UO7QD4WhNIBPQUHd3HGbUVnM3Q7Gj
LvCDIG5OjpRK05EP1nkB9uDeWEcK00AGinRcXOSDJaTBa3stMVKQIE1jPJ8lbTR7hEEGaCsVmx4S
n7InsFkse15jDpg4DP9Sbf6wQBhrSGwWJKm1nUhl8VtRhbiAOm+a4gS+YbZ3eKIIQJisU+sIHxQt
Gar46ib29AwOOOdvZXHKkljpdyXnJXYHsX9K0xWhlpFyu/3RL2l6iC1+LUtA8gVQSwMECgACAAAA
qxMrSn3Z71spAAAAKQAAAHYAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1pbi1tZXRhLWVsZW1lbnQt
aWdub3JlZC1wcmV0dHktZGlmZi5odG1sVVQJAAMBCXZYAQl2WHV4CwABBPUBAAAEFAAAAEZhaWxl
ZCB0byBydW4gUHJldHR5UGF0Y2gsIHNlZSBlcnJvciBsb2cuUEsDBBQAAgAIAKsTK0pGnyFatQEA
ALoCAABvABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2Zy
YW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtaW4tcmVwb3J0LW9ubHktaWdub3JlZC1hY3R1
YWwudHh0VVQJAAMCCXZYAgl2WHV4CwABBPUBAAAEFAAAAE1STW/bMAy951dwvWQDaudjKxoMRYFg
TbECGWrA2WnYgbZph4MsepIcz/9+lJNukXThxyPfI3UgHzyEIwYwghXbBhA6bAjYAlp44NphS48w
cDhqyFEnLiRizQhfxAayAXIqe8dhhEwMlyPcTJAEbanFxXmYW7E0vwH2gMbIQFUKh6NaQRMg2+b5
7gm4hlF68ERKh2AQV00hKEghKbyq1w3s6RY4wPP2Zb97Smd6ksuZPce2n2H+8C5JJgoZKufF4p+9
TJJHffP/kBdV4Cwa1eBO5GDnnLjZ7KAE/NlDtpQ+ZlEV58FvAIqZoK9lX4qtuekdBpY4tQoG9NBb
LIyKESil7QwFigKdjvB3r7qVe2YIPWnYBizDJPvSFauWLfugJbWFLueHFXVWjryHhk9kf8bCbGtx
bQS2IPVUIHAbB6jDvTAsdTlK/nbiFTO0ldL007Q7crGCavvV6yoKUusariS/Rc+50UVfIX24btHi
qEjAE7KZJOvXudJyTjLSaLFth+WRFuv0U7rawPvvlv98gOxrtrhL79KPG9hz4SjP95qxTu/ftqL6
V+v7dKl3pZ/MBdgsZ38BUEsDBBQAAgAIAKsTK0p7UisabgIAANgEAABtABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1h
bmNlc3RvcnMtaW4tcmVwb3J0LW9ubHktaWdub3JlZC1kaWZmLnR4dFVUCQADAgl2WAIJdlh1eAsA
AQT1AQAABBQAAADVU19v2jAQf8+nuPWFTcFxQ9u1qqoK1qZbNbqipVsfpj2Y5ABPjp3ZToFvv7NJ
J4S0DzASCd1xf35/DsYY8O9GdQ06fiu84MVzyZ9x/ln6/utDJ1XNv6JC4ZArsTWdZx6dZxZdp7zj
K+9bHjKOO6w6K/2WV0Z71L7s45lRstryPMv5wooGmdAVNRjrDmMmNQ1ujfXMaLVlcqmNxZrhpsXK
Y535jU/SNP1PYIvKd0JF0OMxsHx4Cmk+PIHxOGE3j1/Kx2kBD0VZTj4Wl/C0QrjZIYBXCLDDALW0
xF++IAwOVg9AOuj3wXqFGmpUVBhCqUHAHi5o47QsgadAHPxKeFBG1FIvqbIVS4w9Gq5kXHMNa+lX
B0P+hfHoABkMtNE4OAoAhVJmTfYRSYqC7DCblGVxC3IBZA44RIKDsDa2jj/BHKklg0fK2rV0OATp
4W5yPy1uiQA9QdH3QdGzYT4KkgLrPwncBSiXMLh6w1iENRPEg/O/8TFj1/QO9ppYWJuk98TOaqGI
nyUZobDW2CRN0uCP2+VQV6YLdSQyqSVfWzDUAr2NdHRMC7nsrPDSBE3JHeGg02KuiKqByjStQo+B
viWBf3ekShYWzeLVQrhGOqAoS79X1I3U0nkaSkvIvB/aULKmo3awJNf1zzBa6oWxTWhswCziAC+b
IDCJ32OsyDyCP4zIQgWtIqAuutGiDROI3a+OrJojRfvtEeZDyO1W9Rzn9C/bX9KILfWCeBFSRdp0
XHtsdkXKLOO4SSuqFfJRdprlF/D2m5abdzD7NONn2Vl2cgFTObdYllOqGGXnr+6QBvnoPDumJ6dD
tB4ujpM/UEsDBBQAAgAIAKsTK0rFjD2n8gAAAIABAABxABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMt
aW4tcmVwb3J0LW9ubHktaWdub3JlZC1leHBlY3RlZC50eHRVVAkAAwIJdlgCCXZYdXgLAAEE9QEA
AAQUAAAAdY/BasMwEETv/oppLrpUTs8hBELilEJaG5QfUK2NvaBIRlJq/PeVTWkh0EWXkWZ2ng71
h6rPFd4rpfav1QaXnnDwLpFLUNTeA6cJjbfcTjAcqE38RRDXoG8ktWspJh+iAEdw53wgg7EnB0M2
G2fJDhqBBh+S9M5OGJZtZXHJ2YjU6wTrtWHXZeOgO1oiDlteWnYYOfUPO/5DXD2AQTjvSKxmPm2t
H8mU+Y9ZpWxAs1eqOoKvmPwdkSjjEEYfzPKET8qREnW+DSNHegYnnPZv5+pYFnnkzxSnuXYDsX2S
ckFodGZer3/1i5S7fMRfZC4ovgFQSwMEFAACAAgAqxMrSpYkgkWaAQAAiQgAAFMAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNl
LWJsb2NrZWQtYWN0dWFsLnR4dFVUCQADAgl2WAIJdlh1eAsAAQT1AQAABBQAAADtUU1r3DAQve+v
mJ7SQu39SEKWUgo5NLSQUoPbU8lBK4/XCrLGGY022X/fkeNtAjnl2qwsG0u8efPevJ/B70E6hNZx
FJB7AmrzRUSIlt0gEWJHyTeAD2iTIOAOgyIobbsMZASj72BYS5CZOIILI+dA3tl9OdNVTGt2xabH
T3Dy+V1RtPm/MtLBfP7vvCiKL7pPnkqqy7p+DcPyBcP3IMjBeKiRd8jwNcuczX6pxvh4g8FSyihs
wAQ1MBWMhkB376Kl0LptYiOOgqIauDcRUjAbjyAElvrBo05oT4mB8S5hFHVfeTQ6Gy0XY2WczNTV
NL0LLopSagsj8CeQXjaMMcLW6aBvMrELLXGfC/spHRDX66dz8aDQ2sQq/uOoKyO0lcqMWQwMyJlB
vd0mTXmDenperiJ/5JvHRpO/DSV53qI3e60EszPOj5anlA8THEGetkp2ORjb4XxVnpXLNbz/HdzD
B6i+VfPz8rw8XcO12zDW9bUiVuXFIRX1v1xdlAt9llARC6wXr8l9dcz9TeZ+esz9TeZ+dsz9/8n9
L1BLAwQUAAIACACrEytKLNPwm4ECAABwCwAAUQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmxvY2tlZC1kaWZmLnR4dFVU
CQADAgl2WAIJdlh1eAsAAQT1AQAABBQAAADtU01z2jAQvfMrtqe0A7IwCRPKdDqkKf2YJg0Tt82h
04OQF1AqS64+CPz7rmycya3TW6cDNjYrdve91XtijAH/ZnWs0PO3Igg+vyv4HS4/qXB4vYlKl/wW
NQqPXIu9jYEF9IE59FEHzzch1DyteO5RRqfCnktrAppQHOKF1UrueZ7lvLJl1Mi8dKoOxhqJbKmt
/Iklw12NMmCZhV3o9fv9f4iakCEK3RCbzYDlgzH088EpzGY9dnnzubi5msP1vCgu3s+ncIur6LGE
YEFbUUJiMeU8H51nQ7ry6WQ4HP6JEI1go5M0fMsnu/ewRCmoM6gApUUPxgYQdY3CgTIQNghtLvNO
Qqkc7abaIthV899liwMdELRI2X8wAdwYvW9SVsr5AOHBHmp819GD39ioS8AdVQcE3GJCtHG9SYkO
QdC3Fo5K0DnrfEep7lDoatQfDfKXpP9wMM6TA4AdPj1450SFUzh59YyxVfq9EGEDnD/GOWOv6T55
UsQWF0XR63+k2ZwRmqZzW3QwTxx6/V7/S9qVdg2NtDHlkTbCEL9DScMX6K6UJzFWah2dCMoayirh
QXiIRiw1JkGlrWqNtAF0XBw4/BXpfGQJaNEcJEhqkt9bNVpcUVbKKB+oKYGIAN+NpcWSJPawJoXM
j9RamZV1VSqsOsmCquixUb7jKEk6oj9omKUMgiKiPtGBGl3qQNPdR5JxiRQ9LW9oXqe1Fuow45IO
/lOQSuypFsRWKN2M3XnrsItNkrbrpt1FLeQG+Sg7y/IJPP9q1O4FLD4s+DgbZ6cTuFJLh0VxRRmj
7LxTh/bg8TSQDV2AyTAZ5C+sMDpa4WiFNj49WuFohTY+O1rh/7XCb1BLAwQUAAIACACrEytKkpP/
MQQBAAAzAwAAVQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9tb2R1bGUtc2NyaXB0bm9uY2UtYmxvY2tlZC1leHBlY3RlZC50eHRVVAkAAwIJdlgCCXZYdXgL
AAEE9QEAAAQUAAAA1Y/BToQwEIbv+xTjaU9QWE00xJhsCHpRIfIEtQxSg5TMDKv79pYF9OLFcNpp
J+mk///9bZo/l/ljBk9ZWe4fsgResB4YKxAHrdMVNCJ9olS8uw4jv+LkJooixWgGsnJUxnWCnZTz
XLjWmqMiZDeQQVZsyPYSvjO8otGeDFagcsjQOQHd96gJbAfSIEzagMlAZQmN2AOCq0936ZQDSxBM
SeEmPfcP5F17PClqSywgn2628AJk4MYNbQX45c2CgAccA93w1oxCQtC+e03egkSOeHlRP4f4Cuba
3JP+wAS2txdBUI/nQksDSv3MURDc+b39tRT7svwPIV5N2K0mXK4mXP1N+AZQSwMECgACAAAAqxMr
Sn3Z71spAAAAKQAAAFkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWJsb2NrZWQtcHJldHR5LWRpZmYuaHRtbFVUCQADAgl2
WAIJdlh1eAsAAQT1AQAABBQAAABGYWlsZWQgdG8gcnVuIFByZXR0eVBhdGNoLCBzZWUgZXJyb3Ig
bG9nLlBLAwQUAAIACACrEytK+OsupqABAAD3EwAAWAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaW52YWxpZG5vbmNlLWFj
dHVhbC50eHRVVAkAAwIJdlgCCXZYdXgLAAEE9QEAAAQUAAAA7ZFPbxMxEMXv+RTDqSB1N3/aNAEh
JA4gkApaKeWEOEy8k6yR1w7jcWi/PeN0C7n2ytprrdbWm5n39vc1eIKwA+koEkTD9iARYheSa4Hu
ySShS8AI6FwWgQ/ekB6ZwPojOtvWE13VsCYfGXt6AxdvX1TVLn83KB1Mp3/Ps6p6p/viX8lnL8Qe
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
D23bNilMRx+lySQ8ZUvSnNh+LG7PdQoYyBrlwBfB9nnbocyJ4JgEkQtMSmQyfEQZCTfb4jIicD6T
Lf5M4MNVXXMsFAt6slP2Zcaeg7dzXb2PXlBINKKMRqH/gqJqhdMi0JkCkjkSZOQpOO2pJUZSru48
zDq3vzKe2E6nSyqdBnJOxZ+uaq7xG613EQ3zB7VajsKBQDlzhpj5u9jfjvg0giHoX5Grq6r6AlBL
AwQUAAIACACsEytKjT5YSNIBAABhEgAATAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9wbHVnaW50eXBlcy1pbnZhbGlkLWFjdHVhbC50eHRVVAkAAwMJdlgD
CXZYdXgLAAEE9QEAAAQUAAAA7ZFPb9NAEMXv+RRDLwUJO3/aNBFCSFUFAqlIllxOqFI33rE9aL1r
Ztdp8+2ZjR2aK1fstS/2zrx5b34PNXkI6IMH1zHUympDtgJXAtm9MqThqTVdRTYJhxb9E9zlGWhi
LALt0adw56wnjQzhJAWt8j6KUAmoijqKhRqhdMa453hRsmrQQ+FsUGQ9IMk9w0V2m+cX4BisE6WX
AEpeY9KZnGQ4sy+x+QNcfnyTJEehTIUa5vO/34sk+STv5WvLNxuQrTKQI+9l0Gdmx7PZg5jy/R+0
hetiFWpQVrIPDRgro6OGvNgtqepYBXJWqjQ8Kw+dVTuDEJzEaVqDAeEQV8n4u5NliPfMoPLYpy3C
cRXDVKUbsuSDSMoICftTgiutGb2HSvZrH6Mw2dJxExub0y4DNdhvfHBYFB2L+fdHX7FCRolNH81A
ixwVJNuvTvjsUL7O28Xk9/inHzTk27kunI9o1EE6Qe0VmWNksudZ+iLjKhG7bQU7zlfpdbrcwtsf
ll7eQfY1m6/TdXq1hXvaMeb5vVSs0s2JiuRfrjbpQp4lZI4DbBf/wn05cR8l99XEfZTcrybuo+R+
PXEfJff1xH2U3G8m7qPkvpm4j5L7duL+/3D/A1BLAwQUAAIACACsEytKTFe1hz4DAAC4HQAASgAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9wbHVnaW50eXBl
cy1pbnZhbGlkLWRpZmYudHh0VVQJAAMDCXZYAwl2WHV4CwABBPUBAAAEFAAAAO2YXY/TOBSG7/sr
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
xnR+RGDjas9dbOyOVgfT0RjIgWFZDqzkR0NjhY5SmhLJQE8cEVTbz0HjK0hPp+1K8lu8GQcd9BV+
CKcjOtxpJ+AGjd1LNu5Uy1hkfaNg973+FTRdpO/T+RLePjvz8g6yL9n0Jr1Jr5ewMgVTnq+0YpHe
HlNR/fPFbTrTbw6Z5wDL2b/kPj/n/ipzX5xzf5W5X59z/39y/w1QSwMEFAACAAgArBMrShsVi7ni
AQAAXQkAAEkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEv
cGx1Z2ludHlwZXMtdXJsLTAxLWRpZmYudHh0VVQJAAMDCXZYAwl2WHV4CwABBPUBAAAEFAAAAO1S
wY7TMBC95yuG04JSx02XaCuEUBexCMQiRQTYA+LgJtPWyLGDPd5t/55xm0IlTogDHJpESWb0ZubN
8xNCgPzsTOwxyFeKlLy5a+QdLt9pGj8vozad/IAGVUBp1M5FEoSBhMcQDQW5IRpkygQZsI1e0062
zhJaasa4dka3O1kWpRxMXGtLuwGDiN6IaSlwO2BL2BW0pSzP8/+AkmopKrMntFiAqCazCvJqUpWw
WGQgxiuD1171+Awunj8SYpX+a0UbkPJnPBXiBT8XJ0Wivm6aIsvfMh9vlYEG/T16uPHe+Qyy/OMG
IRxyaFsXEw47UBb0sQQTFvjpdeDFVnodvSLtLKM6eFABolVLg0AOWtcPBgmBdfLg8XtkYYo0qN4r
CEkZXhjo11zV9drqQNyUhyiCL9ZxsmOBA6z1PdqvqbW2K+f7VNiDW+0bkO75tdHhyLFlvZn+ZM8s
IXgUEw2JDgzoUwfe7lsMBEvk6LScZcry9yl3GDXuuOQTPx3Sqx3XgrpX2uzX1vZ0mwPIuPW+3fWg
2g3KWfG0KOfw+JPV2ydQv6llVVTF5Rxu9dJj09wyYlZcHU+HNShnV8WU7xJq5wnmU9bwT7xQnr1w
9sIYz85eOHthjC9/98K/NkF+NsFfm+AHUEsDBBQAAgAIAKwTK0rzok+h1QAAAOIBAABNABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5cGVzLXVy
bC0wMS1leHBlY3RlZC50eHRVVAkAAwMJdlgDCXZYdXgLAAEE9QEAAAQUAAAArc49TwMxDAbg/X7F
S5cuDS2wVagSqsTU4cTBfuYud4kU4ih2Kfx7EsTHwIRUy4vj+LEfnReoFRXwMcNRHIOPM3hCP5LS
tsfTw0FWmP2rjSD0KRxnH42+Jys99l2L0Wc7aOlfYs9R/Ggz9NtFIpEq+gmWBldldRYTh8Cn2pgy
vVjBwFHJR8Giveu6BTgjciHeFFQyhBXKcfWt/BQOFifKsQACSslSBj1zuaEpYb6iua/2FsvbC2M+
97SkDuv1T70xZldy+TtSt/8TuToHcn0O5OYP0nwAUEsDBBQAAgAIAKwTK0o9aQtpwQEAALQGAABL
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5
cGVzLXVybC0wMi1hY3R1YWwudHh0VVQJAAMDCXZYAwl2WHV4CwABBPUBAAAEFAAAAO2RT2/bMAzF
7/kUXC/dgNr5sxUNiqJAUbRYgQwwlvZUDAht0zYLWfJEOV2+/Sg72XLdtavsiyTy8ff0HhsWCCRB
wPUeGrSlYVuDq8A6m2xKDHi5gafvKzmDmrdkAWHTmb5mm4RdR7KB23UGJXsqgt6ncOuscEkewkEb
OhSJqjyoUlQPDUHljHGv8aLy2JJA4WxAtgIn9zcPqxNQGi1SLqEIWMUCcYbAuFoAu47QA+ZOx050
Jfs1uY9yl3B69SFJBukMQwPT6Z/9LEmu9T/92/JgA3mLBtbktwp/573zk8mjYsp4QrZwfayiUsGA
Dw0UK0H/lkX5Kq57j4GdHfBfUaC3mCt0cMrfdoYCwS668vSz1+dR9swQCo3+izA8zn4qli1blqCS
OgIDPFunh6UnkTGQH1GYbeV8Gxvbw+sGbmnMYE9YFL1X+LOBK1boKMWUCAMd+aig3l56TSwn3R23
K+S3eDIO2vvLXR+OR7S4007ALbIZLLM99jIWaXYqdtNh0dB0kX5J50v4+GT51yfIvmbT8/Q8/byE
Feee1uuVVizSi0Mq6n++uEhn+s0hcz7AcvYvuc/fc/8vc1+85/52cv8NUEsDBBQAAgAIAKwTK0ox
LRwU9QIAAJgKAABJABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
MS4xL3BsdWdpbnR5cGVzLXVybC0wMi1kaWZmLnR4dFVUCQADAwl2WAMJdlh1eAsAAQT1AQAABBQA
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
FAACAAgArBMrSu+YZeWDAgAAaw0AAEoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYmxvY2tlZC1kaWZmLnR4dFVUCQADBAl2WAQJdlh1
eAsAAQT1AQAABBQAAADtU01v2kAQvfMrpqe0MuvFBBqEqoo0pR9q0qC4bQ5VD4s9wKbrXWc/CPz7
zto4yq3qrYrAxmaWmXlv9r1ljAH/YVSo0PH3wgs+v835LS6/SH94vQtSlfwGFQqHXIm9CZ55dJ5Z
dEF5xzfe1zyuOO6wCFb6PS+M9qh9fogXRsliz7M0466wsvba6ALZUpniN5YMdzUWHsvU73wvSZL/
gZMofBCqYTSbAcv6Y0iy/inMZj12cf01v76cw9U8z88/zqdwg6vgsARvQBlRQoSfcp4Nz9IBXdl0
MhgM/saEuJtgC5q65ZPeOVhiIagzSA+lQQfaeBB1jcKC1OA3CG0uc7aAUlraRrlFMKvmv4sWBzog
aJHSZzABXGu1b1JW0joP/sEcalzX0YHbmKBKwB1VewTcYkQ0Yb2JiRZB0LcWlkrQWmNdR6nuUOiK
6p/1hyNIxv3Xo6g/sMOnBx+sqHAKJ29eMLaKvxfCb4Dzx3jA2Fu6T54UscV5nveSzzSZ1ULRbHaL
FuaRQS/pJd/inrRrqAsTYh4pIzSxO5Q0bIHuSjqSYiXXwQovjaasEh6Eg6DFUmGUszBVrZDGp1Ni
weJ9oGORRqBFc34gaklub7VocUVZSS2dp6YEIjz81IYWSxLYwZr00b9ia6lXxlaxsOoE87Kix0a6
jmNBwhH9fsMsZhAUEXWRDtRoYwea7i6QiEuk6Gl5Q/MqrrVQhxmXdN6fglRiT7UgtkKqZuzOWYdd
bJKUWTftzmtRbJAP01GaTeDldy13r2DxacHH6Tg9ncClXFrM80vKGKZnnTq0B49ngUxoPUwG0R7/
YIXsaIWjFdp4eLTC0QptfHq0wtEKbTw6WuH5WuEPUEsDBBQAAgAIAKwTK0qSk/8xBAEAADMDAABO
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5v
bmNlLWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQJAAMECXZYBAl2WHV4CwABBPUBAAAEFAAAANWPwU6E
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
pfVTTuXb6qxdJtzfb7T3/0Zb8nKmzfe6UZ+dm1vNy1v5dS/+6l8AxU9QSwMECgACAAAAexArSn3Z
71spAAAAKQAAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9j
YWNoZWQtZnJhbWUtY3NwLXByZXR0eS1kaWZmLmh0bWxVVAkAAwkDdlgJA3ZYdXgLAAEE9QEAAAQU
AAAARmFpbGVkIHRvIHJ1biBQcmV0dHlQYXRjaCwgc2VlIGVycm9yIGxvZy5QSwMEFAACAAgAqhMr
Sl5bSCdzAAAAdQAAAFcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9jb25uZWN0LXNyYy1zdGFyLXdlYnNvY2tldC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAAwAJdlgJ
A3ZYdXgLAAEE9QEAAAQUAAAAMzIwNNc1MNQ1NFQwMLIysrQyMtAzMTNTSM7P1UssKMhJ1QtPTfLO
LAFRzvl5Jal5JXouqWWpOfkFuUB2tJGhoaW5lbGpoYWRhWWsgrObX2pJeX5RtkJwsI9HYl5KcUZi
dqpCWmJmTmqKgoaupYWBuSYXAFBLAwQUAAIACACrEytKK9eIo3IAAADFAAAARwAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2NzcC1oZWFkZXItaXMtc2VudC1hY3R1
YWwudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAKWNQQrCMBBF9znFP4EHcFcEQXBRyAEk
pL8mUDJ1ZoL29lYEL+Du/cX7L5yHyxWnOKIwTVRUQxOHsTmkQWnSNXOHR6e5YRbFs9Rc4IXKr4BV
lpq3A5IZ1W+unUfwtTI7J3wm7vvtnBZjGIcY/22mXzKEN1BLAwQUAAIACACrEytKcQegdeYAAABG
AgAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2NzcC1oZWFk
ZXItaXMtc2VudC1kaWZmLnR4dFVUCQADAgl2WAkDdlh1eAsAAQT1AQAABBQAAADFUMtOwzAQvPsr
5h62FhInTikvCcEhIhI9IuNssSUTB+9atH9P0hbxA5W47GO0szuzRAT7mlP9ZLF3Tp293/R2w+9P
UU/ppsY02BdO7IRtcvtclZRFqbDUpGKD6mQXRKywryXq3vo8Ko/an/oup+hnVCYK7AYuFIVkHiDe
TeyVh5Xu1DRN889ynNfq0kFM24IuL67QLKFtDQx1677Hbd/hyEIUjFmxMJFHzApyLZ7n4qsuArDN
Bd8h+gANXPhIwHQ4v4JpHtaPz2dc6ES46JuWytf4/SyWFh/z2q1LwgbncOH+TMD8AFBLAwQUAAIA
CACrEytK96Dwb1QAAAChAAAASQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2NzcC1oZWFkZXItaXMtc2VudC1leHBlY3RlZC50eHRVVAkAAwIJdlgJA3ZYdXgLAAEE
9QEAAAQUAAAA4wpwDA5WcA4OUMhITUxJLVLILFbIyy9RKE7NK1HIz1MoSi3OLy1KTgUyCktTi0uK
FdLyixTKMzKTMxRKMlKLUiEaFAryczKTK/UUuKhhXiLCOC4AUEsDBAoAAgAAAKsTK0p92e9bKQAA
ACkAAABNABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY3NwLWhl
YWRlci1pcy1zZW50LXByZXR0eS1kaWZmLmh0bWxVVAkAAwIJdlgCCXZYdXgLAAEE9QEAAAQUAAAA
RmFpbGVkIHRvIHJ1biBQcmV0dHlQYXRjaCwgc2VlIGVycm9yIGxvZy5QSwMEFAACAAgAqxMrSvIW
V/ZzAAAAdQAAAFcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9k
ZWZhdWx0LXNyYy1zdGFyLXdlYnNvY2tldC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAAwIJdlgJA3ZY
dXgLAAEE9QEAAAQUAAAAMzIwNNc1MNQ1NFQwMLIysrQyMtIzM7NQSM7P1UssKMhJ1QtPTfLOLAFR
zvl5Jal5JXouqWWpOfkFuUB2tJGhoaW5lbGpoYWRhWWsgrObX2pJeX5RtkJwsI9HYl5KcUZidqpC
WmJmTmqKgoaupYWBuSYXAFBLAwQUAAIACACrEytKZvhEEWgBAABLAgAASQAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2RpcmVjdGl2ZS1wYXJzaW5nLTAxLWFjdHVh
bC50eHRVVAkAAwIJdlgJA3ZYdXgLAAEE9QEAAAQUAAAATVHLTsMwELznK5YTIJH0ARUVQkgcQCCB
FKnlhDhsnW1jlNhhvS7t37NOA9RxHt7M7MzYy9oGCIZtJxBqH5sKnBegHZkoBLQlB6L1Ta0vYgLU
u0MO+o/ZcwCbAFrzjTX7ItORDyN7ZGzpBk5vT/J8nb5LlBpGo7/1OM/vdJ7+U56dEDtsYEG8JYaH
JJJlS1UIhwo542NCUQXoVH4g9HZAZ2uD8W5tN5FRrHeKquAbA0SHq4ZAPBjfdg1pvr2PDExfkYKo
97Ih1GRKFzTS5xpUsWqts0G0pUqgwLvzWqyYQoCN1W36SI2tW3tuE7EFv+4biG31kbZ5cGhMZDV/
0ftKCJVSmyGZgY44ddBsnzEIrEhXx3Q1+ZoqB6Eh38pHOZZoca9MwC3apo88nNHvDvagxm+02X2H
pqbRtLgqJnM4e3N2dw7lUzmaFbPicg4vdsW0WLwoYlpc/56K5p9Mr4uxXhMoPQvMx9kPUEsDBBQA
AgAIAKsTK0ruxlG7iwIAAO0EAABHABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctMDEtZGlmZi50eHRVVAkAAwIJdlgJA3ZYdXgLAAEE
9QEAAAQUAAAAxVNNb9NAEL37VwyngJz1JqFRowihlBI+REujGugBcdjY43ir9a7ZjzT598zaTpUD
Ekf8IXvXM2/ezHtmjAH/YVRo0PH3wgu+fsj5A26/SD883gWpSn6PCoVDrsTRBM88Os8suqC847X3
LY87jjssgpX+yAujPWqfD+uNUbI48lJaLLzcI2uFdVLv2GTK8NDSJpaZP/gkTdP/TkgUPgjV0Vmt
gE3Hc0in49ewWiXs+u5rfnezhtt1nl99XC/hW40wEkqZpxE8o0EtHGwRNVhslSiwhCfpaxiVWAmi
yJwtRhlsuhYg0O1r4c/ypXYeRTkGwjmhR0xtAKuKgrK/ULnHiqBK8AaUESXEMSw5n84uswmd0+Vi
Mpn8ayI0QxNsQdN3hZWtzx5jJ4WIJCVRNBhZeBBti8ISUaKO0MfGts6aMFX37bqvA6dC0FfKEpqd
dEMquNoEVXbQeKBIj4B7jOgm7OoIZBEE3VEo+matse5Uvj0h0hkluxxfQDofT2dRM2DDkcAHKxpc
wujNC8aq+L4RpArnz+sJY2/pGp0lsc1VnifpZ2rCaqGoDbtHC+tIIEmTNBrA9XuoCxNiHIkgNJEb
UjqyQFcjHU29krtghZdGUxQ5g3QNWmwVRuUK07QKqXuytSX7/A7k4ywWGtwSZSOH9mPv64qykVo6
T6BUhIz0k3wiypK0dLAjKfSvCC11ZWwTE5uTNl420Xskw8CxII2I/rhjFiOoFBF1kQ60aCMCdfcY
nCdb0Oo8vaN5G/f6UkOPW/pBz4s04ki5IPZCqq7tk4mGKXZByuw6uKtWFDXyWXaRTRfw8ruWh1ew
+bTh82yevV7AjdxazPMbiphllyd1aAbPtie/WQ+LSfIHUEsDBBQAAgAIAKsTK0r1ptk9JgEAAOAB
AABLABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZl
LXBhcnNpbmctMDEtZXhwZWN0ZWQudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAF2QwU7D
MAyG730Kc+qFNh0XUIWQpmlwAVbRvYBJXBIUmihxN/b2JFsHE0ksxYr9/b+z2rz2m+c1vKz7fvm0
bmGrCUq01u1LUCaQZLMj0BjhnWiEQN6iJAV7wxpKRQNOlqsYZFlDZwkjwZSCNfJFvxkjE6prSJwz
PTNHBzQMqaguVv+dvNGQSArYgXWoQDP7VojFzW3dpL1o75qmEZHkFAwfhHQj08j9nHfOGnkQgaKb
gqQoogzGc/2ZB5GYPZrk0FE2wYDeE4bkMzknONXmqS5mcMPxbXXSgbMQnJTqYqtNnDshajdZdSTT
dypkAtpRhrvpQ2dOIMAUHkNyQiG4EM/qfgamVc2reAz4RS2U91dVNeR7h+n/hfjNm6p6SKf8a+mW
fV/8AFBLAwQUAAIACACrEytKZvhEEWgBAABLAgAASQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2RpcmVjdGl2ZS1wYXJzaW5nLTAyLWFjdHVhbC50eHRVVAkAAwIJ
dlgJA3ZYdXgLAAEE9QEAAAQUAAAATVHLTsMwELznK5YTIJH0ARUVQkgcQCCBFKnlhDhsnW1jlNhh
vS7t37NOA9RxHt7M7MzYy9oGCIZtJxBqH5sKnBegHZkoBLQlB6L1Ta0vYgLUu0MO+o/ZcwCbAFrz
jTX7ItORDyN7ZGzpBk5vT/J8nb5LlBpGo7/1OM/vdJ7+U56dEDtsYEG8JYaHJJJlS1UIhwo542NC
UQXoVH4g9HZAZ2uD8W5tN5FRrHeKquAbA0SHq4ZAPBjfdg1pvr2PDExfkYKo97Ih1GRKFzTS5xpU
sWqts0G0pUqgwLvzWqyYQoCN1W36SI2tW3tuE7EFv+4biG31kbZ5cGhMZDV/0ftKCJVSmyGZgY44
ddBsnzEIrEhXx3Q1+ZoqB6Eh38pHOZZoca9MwC3apo88nNHvDvagxm+02X2HpqbRtLgqJnM4e3N2
dw7lUzmaFbPicg4vdsW0WLwoYlpc/56K5p9Mr4uxXhMoPQvMx9kPUEsDBBQAAgAIAKsTK0pxJd60
aAIAAKwEAABHABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGly
ZWN0aXZlLXBhcnNpbmctMDItZGlmZi50eHRVVAkAAwIJdlgJA3ZYdXgLAAEE9QEAAAQUAAAAxVNL
b9NAEL77VwyngJz1OmlDowihlBIeoqVR3dID4rCxJ/FW9q7ZR0j49cz6UeWAxJHYeex45nvMTBhj
wL/pytdo+XvhBF89ZvwRN1+k67/eeVkV/A4rFBZ5JY7aO+bQOmbQ+spZXjrX8BCx3GLujXRHnmvl
ULmsP691JfMjL6TB3Mk9skYYK9WOpVOGh4aCWCTu4KI4jv+7IJE7L6pWznIJbDJ+DfFkfAbLZcSu
br9mt9cruFll2eXH1QIeFCHonZK/sYCrjoQNLKyjgWcaGAkhRknE/oJ0h1tvCcRpqLQoILhYcD6Z
XiQpXZPFPE3TfxmiFmhvcmqezY1sXPJkYYO5IGSQDgqNFpR2IJoGhQGpwJUIXS6zJj+Rqrfts94T
DETQMSUR3JfS9qVgS+2rooXGA2U6BNxjQNd+VwYggyDoHfpMz4zRxg70zYBIV+j4fHwO8Ww8mYaW
A+tfEXwwosYFjN68YGwbfq+FK4Hz53PK2Fu6RydFbH2ZZVH8mUwYJSqyYfZoYBUERHEU3wf7XQxV
rn3IoyEIReL6klYs0F1LS13fyp03wkmtKKuAX8KCV2JTYZhcruumQnJPW2nA4E9Pa5gEonW7rxDG
RgvWtb3jFUUtlbSOQIlEOPiuNAULmqWFHY1C/QjQUm21qUNhPczGyZo+whh6jTnNiOSPW2Uhg6hI
qA1yoEETEMjdk7eO1oJOp+WtzJsQ66h6jxv6f52S1OJItSD2Qlat7WGJ+i62SZXetXCXjchL5NPk
PJnM4eWDkodXsP605rNklpzN4VpuDGbZNWVMk4thOtSD57WnfTMO5mn0B1BLAwQUAAIACACrEytK
hnpszgABAACeAQAASwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2RpcmVjdGl2ZS1wYXJzaW5nLTAyLWV4cGVjdGVkLnR4dFVUCQADAgl2WAkDdlh1eAsAAQT1AQAA
BBQAAABdj8FOwzAMQO/9CnPqKU3HBVQhpKkqXIBVFD4gpO4SVJLIcSfG15OuHSCcWEoU+z2n3j11
u4cGHpuu2943Fbw6Qu33zn5hD7V3jI5Fh3oiy0fR+tHqI/Q2FbE9IORKqbzIsvo/5xmHKSYEexi9
6sEwh0rKzeVVUaa1qa7LspRxBUu9mM6ixSMJo59IY5RRkw1cvEd4Q60SGSxD7zGC8wwqBFQE1gEb
hKVWRNJ/BvXD6W39EZxFsJiK7MXYuHZCNH4a+xMZP1MhI+ABZ7if9mbmEIJKGRSlSZDIUzzbwwpM
IdbI7kh9YAX5zYUQw3xuFRuQ8udeCnGbdv7b0m67LvsGUEsDBBQAAgAIAKsTK0pm+EQRaAEAAEsC
AABJABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZl
LXBhcnNpbmctMDMtYWN0dWFsLnR4dFVUCQADAgl2WAkDdlh1eAsAAQT1AQAABBQAAABNUctOwzAQ
vOcrlhMgkfQBFRVCSBxAIIEUqeWEOGydbWOU2GG9Lu3fs04D1HEe3szszNjL2gYIhm0nEGofmwqc
F6AdmSgEtCUHovVNrS9iAtS7Qw76j9lzAJsAWvONNfsi05EPI3tkbOkGTm9P8nydvkuUGkajv/U4
z+90nv5Tnp0QO2xgQbwlhockkmVLVQiHCjnjY0JRBehUfiD0dkBna4Pxbm03kVGsd4qq4BsDRIer
hkA8GN92DWm+vY8MTF+Rgqj3siHUZEoXNNLnGlSxaq2zQbSlSqDAu/NarJhCgI3VbfpIja1be24T
sQW/7huIbfWRtnlwaExkNX/R+0oIlVKbIZmBjjh10GyfMQisSFfHdDX5mioHoSHfykc5lmhxr0zA
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
LTA0LWRpZmYudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAMVSYW/TMBD9nl9xfCoocdx2
qzZNCLWMAhMbiwhjHxDS3OTaGjl2sS9l5ddzTrLRf0AcKfbl7r13zyeEAPnNmbbBIN8pUnJ5X8p7
XH3SNHzettrU8gsaVAGlUQfXkiAMJDyG1lCQW6KdjJEgA1at13SQlbOElsrhXDijq4OstceK9B7F
Tvmg7UaMTwU+7jiIdU6PlKRp+t8FqYpaZTo58zmISTaDdJKdwHyeiMvbz+Xt9RJulmW5+LC8gDvL
CG5j9R+s4bInEU8soqeBZxoYhcrrHYngq4tRnogEFvBbecvUELauNTWsEIzbbBiOHNAWgaUHZzAD
FeDhqB5G1lkcPQyFdkQxlZS2oHhnnM2h1LbCDuWfBh1A270yus66Pz3kE71vbZ4Ar9j7WXYK6Syb
TGPzIIYngfdeNcgCXr8QYh33haItSPl8Hgvxht/RUZEoFmWZpFdskbfKQIl+jx6W3jufpEn6NUrp
Y2gr18Y8NkFZVjuUYMwFfhsduNW13rRekXbcsK3ZxwCtVSuD0bnKNTuDhMDz4cHjr5YHIo9ERTc5
vVcV9Rb0vKputNWBGJRJFMF36zhY82AF2LB39keE1nbtfBMLG3DrDoB0E21maweNFU8Ay886ZTGD
qVhoiHJghz4icHc/20B843w6Lu9k3sRYTzX0uOJJPyZp1CFOi9orbbq2+eaPuumTeJY6uMVOVVuU
0/w0n5zDyzurH19B8bGQs3yWn5zDtV55LMtrzpjmZ0+3wx5Mpmf5mNcECucJzsfJX1BLAwQUAAIA
CACrEytKQ4KPfskAAAApAQAASwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2RpcmVjdGl2ZS1wYXJzaW5nLTA0LWV4cGVjdGVkLnR4dFVUCQADAgl2WAkDdlh1eAsA
AQT1AQAABBQAAABNTj1vAjEM3fMr3CkLAWZUVTqhg6WUk6LupDn3zlKwq8RHRX99A6Wllodn+X2t
9y9+/9zCrvW+2bYreOWMUQamL+xhLazI6jzGKZOeXSeJ4hl6qiSlE4ItMdOHupLjys6NaeAzZCYe
oIwypR7eEJIMQzVTAR0RonCRhDMIBQ7/1GBZGO3hJmSrF6oGYggVJeE5eOKIV5d7AypAfAqJ+tn1
82P5G58nrq2McbcxmxyOWMMeH5x7v+Au6AiLxd+9dO6prr1LusZ78w1QSwMEFAACAAgAqxMrShCH
Zm5oAQAARgIAAEkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9k
aXJlY3RpdmUtcGFyc2luZy0wNS1hY3R1YWwudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAA
AE1R227UQAx9z1eYp4JEsheouqoqJCRAIBUp0pYnxIN34k2MEs/i8Wzp3+PJbulORlHGOT6X8SdW
CsZHSpAM1Vh6eGQbAAVYjjhyB2FAxWCkkIaYxw52BGPse+oc1QH3EpW6pvJVn1f1RXGiW7i6e1XX
+/LdopMuFv/Py7r+4PvqpeWbuITgCFvSo4t9Vo1aVQ8DQTpVSELMBTUru79zAxUk+J44hSh77rOi
cZTZ3yMmyIK7kcAihDgdRjKCp5gVlP5kSube25Ewkf8W86xgL6rYTSyczCldAg1+SvRip5QS9H51
8qsQs+yjTqVxgrifCYwnfw2cnh2GkNXNv519FYRLuc1UzMCBtDB4tt85mV+yny7b3eT3UjkJnfPt
YrZLiQmfynjwiDzOkVkus5xAPjwn+3jAMNBi3bxvVht4/UP47xtov7aL6+a6ebeBe94pbbf3jlg3
N89T8fyr9U2z9GcFbVSDzbL6B1BLAwQUAAIACACrEytKPg+WASQCAADtAwAARwAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2RpcmVjdGl2ZS1wYXJzaW5nLTA1LWRp
ZmYudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAMWSUW/TMBDH3/MpjqeCUsdtt2rThFDH
VmBiYxFh7AHx4CbXxMixg33pVj4957Qd/QbEVhJfzvf/nf8RQoD87kzfYpDXipRcPhbyEVefNe0f
73ttKvkVDaqA0qit60kQBhIeQ28oyIaokzESZMCy95q2snSW0FKxX+fO6HIrK+2xJL1B0SkftK3F
ZC7wueMgVhk9U5Km6X8HUiX1ygw4iwWI6XgO6XR8AotFIq7uvxT3t0u4WxbF5cflBTxYruBqq/9g
BVc7EXFQETsZeJGB0UUove5IBF+OskQkcH34FiCQ8sQQ8KSpAWVB240yuoKyUZ6p0ENoXG8qWCEY
V9csqWwFurbO8wEmwCMin41PIZ2Pp7PIDGJ/JfDBqxYvYPT2lRDr+J4rFpLyZT0R4h3P0dEmkV8W
RZLecGfeKgMF+g2DLL13PkmT9FuDEHYxtKXrY97AxfT7LRhzgWerA/uw1nXvFWlnB/onFaC3amUQ
yEHp2s4gIbCtHjz+7tnHLArlg+EQjeSzAPqnq6pWWx2Ii7KIIvhhHQcr/h8C1Hy09mcsre3a+TZu
bMGthwKkW741OhwYSzaO8ccDWcxgKQYNEQc69LECd/erD8Qm8Op4+4B5F2M7qX2PK/5Bj0VatY0G
qo3SZmhb2+Nudkls71DuslNlg3KWnWbTc3j9YPXzG8g/5XKezbOTc7jVK49FccsZs+zs4A6fwXR2
lk14TCF3nuB8kvwFUEsDBBQAAgAIAKsTK0r9zKeVrAAAAOAAAABLABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctMDUtZXhwZWN0ZWQu
dHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAEVNy2oDMQy8+yuU057c7XkpgbDd9pI2C6Yf
4NiKV+DKQVZS0q+vA00i5jDDPDTuPt1uO8HH5NzmfRrgiwVDSUy/GGEsrMhqHYaTkF7sXDKFC0Rq
IaUzQjfUIHRUWyV0T8a83pwKVb0ocYIf0gU8A/HZZ4oQFi8+KArUpZxyhD1CLim1h54jUOIiGNuY
Mfb/zJv4bxyge1lZe7jy2bfRvr/rZ2vXDd2jMm+cM39QSwMEFAACAAgAqxMrSpBdUSFnAQAATAIA
AFcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUt
cGFyc2luZy1tdWx0aXBsZS1oZWFkZXJzLWFjdHVhbC50eHRVVAkAAwIJdlgJA3ZYdXgLAAEE9QEA
AAQUAAAATVHdS8MwEH/vX3E+qWC7Dx0OEUFEUVAobD6JD1l6WyNpbl4um/73XuqmS0PbpL/PdN66
CNGyWwvElpJvIJAAfqFNgoAbDCAtU1q1+kSIaCk0cDeroUXTIMO2JxnvaQtOqkJHuRvFA5sOr+D4
+qgsl/m9NtLCYPC3Hpbljc7jf8pTEORgPMyQNyp/z0xcFPPeu9/BYCllFKptALcnYEaCzs5FDbl0
q8RGHAVFNbA1EVIwC48gBJa6tUct+E2JgfEzYczZa48mon4OYqzsGveupulccFFUUi2MwFsg3WwY
Y4SV03N6z8IuLIm7TOyAlr2AuE5v+Zx3Ca1NrOHP+lwZoVYaM+YwsEbOCtrtI0WBBerqkK4hX/LO
r9Gu34KSHFp05luZYDbG+b6yC4ddfkGeVip2uza2xcG4uqhGUzh5De7rFOrHejCpJtX5FJ7dgnE2
e1bEuLrc/xXtPxpfVkO9RlATC0yHxQ9QSwMEFAACAAgAqxMrShDW6SqkAgAAKAUAAFUAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy1t
dWx0aXBsZS1oZWFkZXJzLWRpZmYudHh0VVQJAAMCCXZYCQN2WHV4CwABBPUBAAAEFAAAAM1Ty27b
MBC86yu2J7eQKdpOjBhGUThN3QeaNEaUNoeiB1paWQwoUiUpP/6+S0kOdCjQayUZFsnd2ZmdFWMM
+A+jmgod/yC84OunlD/h9qv0/d/7RqqcP6BC4ZArcTKNZx6dZxZdo7zjpfc1DzuOO8waK/2JZ0Z7
1D7t1xujZHbiubSYeblHVgvrpN6xihBkrZCVKHK0juGxphDME3/0URzH/xk9kflGqJbcagVsOp5D
PB1fwGoVsZv7b+n97Rru1ml6/Wm9hMcSYSSUMocRvGBDKRxsETVYrJXIMIeD9CWMciwElWPOZqME
Nq0gaOjnS+EH+VI7T2zGQDhn9ICpDWBRUFDyFyoPWBBUDt6AMiKH0JQl58pkQpXG+eViMpn8qz/U
UdPYjLxwmZW1T56DkkwEktKDqGukvhFB0EiS0BJ1hC42yBqI0KY7HIgenJqiPbzpWMCZBnQ8kog6
K10PDK40jcoJ0QMeKdIj4J7a60trml3ZcUBSlMNNuoHOSTi0SW37iDtB0h0cvRpfQjwfT2fBUmD9
FcFHKypcwujtK8aK8L4RZBrnL+sJY+/oGQ2S2OY6TaP4C6mwWijSYfdUem2tsVEcxY8ts3YPdWaa
EEceCU0t7FMwxAI9lXQkoZC7xgovjaYoGhyyvdFiqzAYm5mKRpXk0zdgabp+NzT0SSjUD1NwlQa4
70hbV+SV1NJ5AqUiNGc/aYxEnpPVDnbkhf4VoKUujK1CYnU2x8sqjCb50HPMyCSiP26ZhQgqRURd
oAM12oBA6p4b52lqaDVMb2nehb2uVK9xS1/zsEglTpQLYi+kamVLPVTTBSmza+Gua5GVyGfJZTJd
wOvvWh7fwObzhs+TeXKxgFu5tZimtxQxS67O7lAPprOrZEL3lAbOelhMoj9QSwMEFAACAAgAqxMr
SghO0IQwAQAA/wEAAFkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9kaXJlY3RpdmUtcGFyc2luZy1tdWx0aXBsZS1oZWFkZXJzLWV4cGVjdGVkLnR4dFVUCQADAgl2
WAkDdlh1eAsAAQT1AQAABBQAAABdkcFOwzAMhu99CnPqhTY9ogohTdXgAqwie4GQuCQoJFXibuzt
cdcNKqxEimX71/c73e5V7p638LKVcvO0bWFvEUrlfTyWYFxCTe6AYFWGd8QACUevNBo4OrJQGhzU
5KnKSZc19B5VRpj4klW0mnchEypzC6xzVZ81QwQcBm6qi+4/yRsOrGSAIvioDFiisRXCR628jZna
u6ZpREY9JUcnoWMgDCQveR+90yeRMMcpacwi6+RGqj9nI1rNjI5AjSOqlJkPArIjTEyOsPTOrlYe
QlyKK8+rahzOxW6hgCsGLBx1sbcuX3Qh2zh5w4IE+M2NhIAHXi7ZFKcPuyAgGzLQyR4sb47Bjueh
8/IYvS44qksUj0l9YQvl/U1VDfO7V/w9QvzmTVU98Cn/RvqNlMUPUEsDBAoAAgAAAK0TK0qTBtcy
AQAAAAEAAABLABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvamF2
YXNjcmlwdC11cmwtYWxsb3dlZC1hY3R1YWwudHh0VVQJAAMFCXZYBQl2WHV4CwABBPUBAAAEFAAA
AApQSwMEFAACAAgArRMrSiyMCAwBAQAA+AMAAEkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9qYXZhc2NyaXB0LXVybC1hbGxvd2VkLWRpZmYudHh0VVQJAAMFCXZY
BQl2WHV4CwABBPUBAAAEFAAAAO2QMW7DMAxFd5+CmwdHFjIVyGS3MTo0bYwoaGZGomEVqm1IVBLf
vo6RAh1ygA4ZCIIE/8f7FEKA/Oxd/KYg18goq4OSBzq+Wb6152idkTtyhIGkw7GPLJgCC08hOg6y
ZR7kdRNkIB295VHqvmPqWN3mundWj/ILTxi0twOL6J1A5/ozGUGXgTSTyfnCSZZl/wAJNUd0M1BR
gFguniBbQlEk4mX7obabCt4rpcrXagX7liCddSkY66ck9kTQYoAjUQeeBoeaDJwtt5AaanBCFMHr
NId6jgBxKm6R/+htF5jQLGDy+XW/enY9UNNMR/kD5T5Kual2+xXUpVKPF91FgeQHUEsDBBQAAgAI
AK0TK0rbEzpTiQAAAL8CAABNABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvamF2YXNjcmlwdC11cmwtYWxsb3dlZC1leHBlY3RlZC50eHRVVAkAAwUJdlgFCXZYdXgL
AAEE9QEAAAQUAAAA7ZBBCoMwFET3nmJ22bQewF2Q0I2tYrzAr/mSQNCSfOv1axeFQnsEF7ObeTym
bm+2bQyuxlp9MRUGz1AU47IpuJB4lPBkeMq4M89I/Ig0ssMWxEM5nmiNcs5pVCW6yJQZ6x7xJF/7
MGdhcifsnA/9zZwX8DTtpbKoD5MfE92YfqjQaWuPf/6YFC9QSwMECgAAAAAAqxMrSgAAAAAAAAAA
AAAAAB0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2h0dHAtMC45L1VUCQADAgl2WDIJdlh1eAsAAQT1
AQAABBQAAABQSwMEFAACAAgAqxMrSuqiloymAQAAJwQAADYAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2h0dHAtMC45L2lmcmFtZS1ibG9ja2VkLWFjdHVhbC50eHRVVAkAAwIJdlgCCXZYdXgLAAEE9QEA
AAQUAAAArVJLb9NAEL77Vwy9FCTsOIGoUYWQEDQqUhAWKSfEYWKP40X7CLNjQ/89s05DU4lXAXsP
3vE332N2W0ZHcPLsQZ636bNC6WAy+b4v8/y5rhPIoTHNWpCl4jCYaIJHuwrYLAMvEzJzaDyMTXvw
0ngTu1eh7h15uQNt76X6Mjhn/oXgHdVkBroyYukc5mUJr70QawBYEw/EcMEc+J6s/y3fJfrG0ltv
leJiUK7405n+Avo35v/g/O5Asiy/ebKxcA6nv9M7vW358dCzq44g7ivk69AnFDWAHsyhgRISdDkT
6+Bbs+0ZRa+gohr4ghF6jxtLIAHq4HaWhOA69AxMn3uKUmRZZQkj6W8vWAvIrSo2LkUVpVQJFPjg
gxYbphhhqxfHf0zExreBXWp0ENqRQIwOSzoTDw7rumc1/3j0lRAqpTZjMgM74sSg2T71UWBDujtu
V5NvUmUvdJNvE3o5lnB4rZ2AAxo7RtZDO8qyB9mwVbIXO6w7msyKp8V0AQ/fe/P1EVSX1WRezIsn
C1iZDdN6vVLErDg7nIrmn87OilLfKVSBBRZl9g1QSwMEFAACAAgAqxMrSg+MOMQlAgAAlgUAADQA
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2h0dHAtMC45L2lmcmFtZS1ibG9ja2VkLWRpZmYudHh0VVQJ
AAMCCXZYAgl2WHV4CwABBPUBAAAEFAAAAL1UbW/TMBD+nl9x7MtAqeOmo1qZECqwVpsooloH/YD4
4CbXxuDYxb6U9t9zSVvoEG/VELGlxKfnnudefBFCgHznTFVikJeKlBxMJ3KKs1eadq8XlTa5vEGD
KqA0auMqEoSBhMdQGQqyIFrK2hJkwKzymjaNTbSTJ1LPvSpRzIzLPmEucL3EjDBPaE1RHMf/V11l
VCnTaPf7INJWmkKctjpn0O9H0GDh5OkDIZrPsaICpPx2bgvxjPcJCMh1PiHlaezdSgftrDIjp/Kh
88MaGUGptN0RNuihtjoUly7jXC3dwcbH6b50ZanvxXCDGeoV3moyeAHddhuuLaHnHGCCfoUeBt47
fyztv0vxStnc4BtrmGOwYrLw68L+BiuOjF9p80M/p5qKe9Tib67EXUy9xO6JoDFewOmfRE8PnOKf
9xKi+LZACFsb2sxVNQ5zUBb03gVrLPAudcicnetF5RVxORiVwxcVoLJqZhDIQebKpUFC4JH04PFz
xTOYRHEUj5thZYAlHjig77oqL+ukiUlZRBG8t46NOc9ygAXfSfuhptZ27nxZO5bg5g0BaS4bFTrs
Y8x41Dn8VhNZjWApDjTU4cASfc3A2X2sAsEM+XTo3oT5urZtpXY5zvjncihSqg37glrxzWjS5gYe
ZLMFGbdo6J4vVVag7CSPk7QHD99avX4E46ux7Cbd5KwHIz3zOJmMGNFJzvfd4RqknfOkzSuFsfME
vXb0FVBLAwQUAAIACACrEytKfBhJ7pIAAABOAQAAOAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvaHR0
cC0wLjkvaWZyYW1lLWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQJAAMCCXZYAgl2WHV4CwABBPUBAAAE
FAAAAJWOwQrCMAyG732KustOZZ5FPLniYeDAg+dgWxroGkjrnt9uykRBxZBDEr6ffI5hsLLarpRy
09hD9rJpln2t1K50JZU0aE4ZOPdMIyakCKEjMJpYT6QYAKOcQ3dYY8Tk93S5Djbmr+gBogn2GEOB
2rHQaUHdX4IaMLz5nTH7lpn4g+CLmBDqUWI+bGT963P9jIgbUEsDBAoAAgAAAKsTK0p92e9bKQAA
ACkAAAA8ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS9pZnJhbWUtYmxvY2tlZC1wcmV0
dHktZGlmZi5odG1sVVQJAAMCCXZYAgl2WHV4CwABBPUBAAAEFAAAAEZhaWxlZCB0byBydW4gUHJl
dHR5UGF0Y2gsIHNlZSBlcnJvciBsb2cuUEsDBAoAAgAAAKsTK0pZi8KNDQAAAA0AAABAABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHItYXN5bmNocm9ub3VzLWJsb2NrZWQtYWN0dWFs
LnR4dFVUCQADAgl2WAgDdlh1eAsAAQT1AQAABBQAAABBTEVSVDogRkFJTAoKUEsDBBQAAgAIAKsT
K0owzLopnwAAADoBAAA+ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHItYXN5bmNo
cm9ub3VzLWJsb2NrZWQtZGlmZi50eHRVVAkAAwIJdlgIA3ZYdXgLAAEE9QEAAAQUAAAAxY4xDoJA
EEX7PcX26zBqpxUYMTFSGDBaL8skEFeWMLMJ3N5AvIPNf/mvegCg8Rl8/BDj2YrF/FXhi+pbJz+c
YucbLMmTZUJv5xAFhFhgJI5eGFuRARfDyOTi2Mm8OtgmB5zaESzPvWvH0IfIUPvg3tQATQM5oSaR
SZQx5l8d1km0fq1IUw27zV6bZdJUQVbk5eOo71lVKfM7l+xaKK2+UEsDBAoAAgAAAKsTK0ppOZNw
DQAAAA0AAABCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHItYXN5bmNocm9ub3Vz
LWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUBAAAEFAAAAEFMRVJUOiBQ
QVNTCgpQSwMECgACAAAAehArSn3Z71spAAAAKQAAAEYAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2h0
dHAtMC45L3hoci1hc3luY2hyb25vdXMtYmxvY2tlZC1wcmV0dHktZGlmZi5odG1sVVQJAAMIA3ZY
CAN2WHV4CwABBPUBAAAEFAAAAEZhaWxlZCB0byBydW4gUHJldHR5UGF0Y2gsIHNlZSBlcnJvciBs
b2cuUEsDBAoAAgAAAKsTK0pZi8KNDQAAAA0AAAAzABwAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRw
LTAuOS94aHItYmxvY2tlZC1hY3R1YWwudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUBAAAEFAAAAEFM
RVJUOiBGQUlMCgpQSwMEFAACAAgAqxMrSj5kVFGWAAAAIAEAADEAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2h0dHAtMC45L3hoci1ibG9ja2VkLWRpZmYudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUBAAAE
FAAAAL2NMQ6CQBBF+z3F9uswaqfVYsTESGHASL0sk0AcA2FnE7i9gXAGm//yX/MAQOO75/ilgFcn
DrOqxIrqRycbLrHjBgticoGQ3dxHAaEgMFKILAFbkQEXEzCQj2Mn8+pgn5xwakeoufcfaoCmgbxQ
k8gkyhjzx7TzEh2vYWs1HHZHbZaxVkGaZ8XrrJ9pWSqznVt6z5VWP1BLAwQKAAIAAACrEytKaTmT
cA0AAAANAAAANQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvaHR0cC0wLjkveGhyLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUBAAAEFAAAAEFMRVJUOiBQQVNTCgpQSwMECgAA
AAAAehArSgAAAAAAAAAAAAAAACIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQv
VVQJAAMIA3ZYMgl2WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACrEytKAHpLYAQCAADYBgAASgAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3At
Zm9yLXhoci1hY3R1YWwudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUBAAAEFAAAAN1UTWvbQBC961cM
vuRSSU4JtPgmhJoE7NpYPuS6Xo2tpesddz/i6N93VrJpE+KapLSHIlgW9vHmvZk3Kudf6/m0gllV
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
b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC1hY3R1YWwudHh0VVQJAAMCCXZYCAN2WHV4CwABBPUB
AAAEFAAAAF2QzU7DMBCE73mKfYH8lAsotygqFCklUsOhV9deGgvjLV6nhbdnnaQXZMkH7+x8M277
t6HvtrDfDkPzsq2hD/ZsPYwxXuqy3Dw8FpWcTf1UVRVYBk8RlHN0QwOnX2i0Rua8JR8DubxJk3zx
KLL2v/lx3+3E+IDfE3IErXyyc6TMHehIKzcSxxlY/ny5NAjLQhmQaQpCLNXC1Sv3pNjqfM5V6LMF
MyFEgkUFqwr0iPqTi+x9lCJRDOUeVQTpq7yUI6ei1LpRcCa9HHcHWNGp+r22GM+R8Yqy9QE2isrY
gDoZChV0IAlHy1feQ6+s5Qud5YRSnNTkvezmHHSRZc/NawfGmlkmnmivuCbhC3nGIvsDUEsDBBQA
AgAIAKsTK0oW7HQskQEAAB4DAABRABwAaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxk
L2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLXJlZGlyZWN0LWRpZmYudHh0VVQJAAMCCXZY
CAN2WHV4CwABBPUBAAAEFAAAAM2Ry27bMBBF9/6K2SsU7RZFC6+spm5T1KkLK6izpclJRJQmVc4w
sf++pB67fEChBYF53HPnSggB8ndw6YwkvyhWcnts5RFPPyxPz+dknZEHdKgIpVPXkFgwEouIlByT
7Jh7WSokCXWKlq/SUnCK0RxDzNuna6+IxFlZL15LRWjqxVOI4tLFrGNsRM0CL31+0NR84UVVVf+R
NaU5KTcY22xArG7eQ7W6+QCbzaK63f9s97st3G/btvm2XcM+2mfrocDXUq7efayX+VutPy2XS7AE
PjAo58IrGjhdodEas4Xb4DkGJ5rSEaNG/Yb64/3uLisf8G/Kh4FWvui5oMxMdEEr1wXigSgvZ1ca
cVyQOZuQYkZKNYL1BD4psloMxmr9bMEkBA4wTsE0BbpD/YfqBTx0+ZQhW+BOMeSLlYc5XRjCLJXH
uwNM7HL8fHhWHjzjC+atJ7AMc9o0YEHHkN2FMczZ9cQaQ3SWCkpRmQ7elz9FUWdzC/GraVsw1uRN
jfYFJx/UB0+Yc/3afN8N/SL09sw/UEsDBBQAAgAIAKsTK0ppAumyhgAAALwAAABVABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhy
LXJlZGlyZWN0LWV4cGVjdGVkLnR4dFVUCQADAgl2WAgDdlh1eAsAAQT1AQAABBQAAAAtjjsOwkAM
RPucYi5A7kBHiQgFrbVriKXVGmwnuT5eKY0Lz5vPcxVHsEfelQLSQR3i2ii44lBrdXxetweMf1uS
qYJa0yP1UDSlCt45XW9IJFXFuIxABaGYul/U5JPRxq6bFT67HF0DTXxUkQ9ae0/vxa3M03S/Lguq
1PQVlp3PFf7V7jxPf1BLAwQKAAIAAAB6ECtKfdnvWykAAAApAAAAWQAcAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVj
dC1wcmV0dHktZGlmZi5odG1sVVQJAAMIA3ZYCAN2WHV4CwABBPUBAAAEFAAAAEZhaWxlZCB0byBy
dW4gUHJldHR5UGF0Y2gsIHNlZSBlcnJvciBsb2cuUEsDBBQAAgAIAKwTK0rwuerDEgEAAJ0BAABc
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZv
ci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFjdHVhbC50eHRVVAkAAwMJdlgIA3ZYdXgLAAEE
9QEAAAQUAAAARY/NTsMwEITveYo9wiFpygXILQrhR2obRHrgapwttnC9Ze008PasG6CyZFnrmW9m
m27Td6sW1m3f1w9tBR3bd+vBxHioFovl1XVRyllWN2VZgg3gKYJyjiYc4O0baq0xhLwhH5lcXqef
fGYU2daIIWKIchsVQbjKC4ScimKfiN2QJq+PL8D4OYoS9mpA2DHtQSXBB3JK/UuMBI7UAHhEAe3A
RjEOllGnDBKPZpI+NG/BGGhkjb/xc3tnQ0pXIanJe/HmgXVqFw1C0z8D7U7POb/Isvv6aQXB0Ch9
E8KoY2IyTaeN8EvjIVryBWwN43QewAZjorTMxHBx162h/f9b3l5WADX4WQN4EpHWI8tSRZH9AFBL
AwQUAAIACACsEytKGfFJt6EBAAAdAwAAWgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRX
b3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1kaWZm
LnR4dFVUCQADAwl2WAgDdlh1eAsAAQT1AQAABBQAAADNkt1u00AQhe/9FHMJMutNEBLgq5jU/Ii2
qWrU9HaznuAVG4+ZHdfJ23fXaYBHQJbs1fycc76VlVKgH8iPBwz6yojR9bbRW9x9d/Ly+TQ63+p7
9GgCam9ONIoSDKIYw+gl6E5k0KkSdEA7spOTdoG8EWy3xHF7dxpMCGoi/oWsbBjUnlgdO44arWO0
oixTnCB2P12v8DjEGraFHCXL8/x/zGisjMbPCVcrUMs37yBPr9Uqy9eb22ZzXcNN3TTVl7qEzbwD
KUWp9fLt+2IRn2X5YbFYgAvQk4DxniZsYXeCylqMTmvqhcmrKnXUWaPI4EcXN2YWkM4IRGHTw4UG
poSTKo9f74Hx9xgn4WBahD3TAQycEZPtxVIIPJkW8Amj0B6cwAU6pKaBf9FjL9DIFl/sz/G9C8nd
hDRNfZ8uLLBN6aRDWDd3QPv5ePaPIJm6q5qmhPUs3tLBJJSZ/RKtyFSWf66+XUPoaIxcyaozT8mb
aZrJ8WhxEEd9Ea+GcfpbgFuU5FYzE8Orq80N1H96y4+vS4AK+vMM4DxENv4dEb4osmdQSwMEFAAC
AAgArBMrSsdhRWehAAAA7QAAAF4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQv
YnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQu
dHh0VVQJAAMDCXZYCAN2WHV4CwABBPUBAAAEFAAAAD2PMQ7CMAxF957iX6AcgA11YUSUgdVKXBqR
xsJO6fVxCmKxLOs/P/s2J0Nlq15nqkgFVJBMMlWO2ERzbJP7+Qrl1+pJLBQZk8oCaoEnqwOgnGVz
pAqyUAS/2RdNSNXBmJRDc4gzQcWsF00PtymbrBr4pzcUqcjJmp2spaUUZ3vT0K6rM2MYL5Bpb7/+
Q9ddTuN4xLCvjrJQeyQEtv9hnvkAUEsDBAoAAAAAAHwQK0oAAAAAAAAAAAAAAAAfABwAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL1VUCQADDAN2WDIJdlh1eAsAAQT1AQAABBQAAABQSwME
CgACAAAAfBArSpMG1zIBAAAAAQAAADMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
YmFzZS1ocmVmLWFjdHVhbC50eHRVVAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAClBLAwQKAAIA
AACtEytKkwbXMgEAAAABAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9iYXNl
LWhyZWYtY29udHJvbC1jaGFyLWFjdHVhbC50eHRVVAkAAwUJdlgKA3ZYdXgLAAEE9QEAAAQUAAAA
ClBLAwQUAAIACACtEytKjgVrrnEBAAC3AgAAPgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9iYXNlLWhyZWYtY29udHJvbC1jaGFyLWRpZmYudHh0VVQJAAMFCXZYCgN2WHV4CwABBPUB
AAAEFAAAAMWSwU7CQBCG732KuRAOuN1WTDQkRFAbD6IYStTrsjukm6xd3J0VeHuniJyMV9MmTSfT
b///S4UQIF+8S+8Y5Z0iJavXWr7i6sHS8XGTrDNygQ5VROnU3icShJFEwJgcRdkQbWQ3iTKiTsHS
Xu5inCZjyQe54u9EE3AttG8peCd0o4LA3QY1oclpR9lgMPivHEpTUu6QYjIBUZ4NYVDCZJKJ2/lT
PZ9V8FjV9fS+GoGzLcLFCJYNwltdw5EMzEwRDZAH3PHJhKAg6mA3BLaFfhdsJKXzWrnGRxpdFUXx
a0au4lPQLAF140WDyohT7nzjrj/GveFtN+mdF91s/AMvzy/zgq/yBO8V5R/8E1X2e8OqDyvUikuA
pQjfO6C9QdiqCGufWgNbSw23IS4f8COx5/xgQh0tdJvYqpVjEz+0bjli+MQAxhpoPfErsxRbeRPs
UDwHT/wfWN/2oauLIc/EdFYtlp1nG4FvlqnWeDSaZ5B9AVBLAwQUAAIACACtEytKuX5kHQwBAACY
AQAAQgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9iYXNlLWhyZWYtY29udHJvbC1j
aGFyLWV4cGVjdGVkLnR4dFVUCQADBQl2WAoDdlh1eAsAAQT1AQAABBQAAAB9kMFqwzAMhu99Cl1C
TonddrARKKWUsEu3jqWHXh1bwYYQt5aydm8/ZWt7HNbF4ucT/7fdvzf7XQ1vddNsXusK+jAgPFVw
8AjHpoHN6ALHBAm7kdABR8Ar2pERDJBN4cQQBsg986lSqo/W9D4SVy9aa0WSTIG/1ZXoRlIJKY7J
Iim0PhYejStaQ1h4uVGe+vV5lS230yZb6Gm3usPni+dSy5s/4Jme/8N/UFWeLescWrRGSkBggr8M
2OgQLoagi+Pg4BLYSxuW8gnPIxKXvybMzcKUxMG0vZi406YwYfrCBC44GCLLV1hGrBwLcVh8pMho
OcQhh6kupnK22dWfh0lzIJARl6bDm9ByNvsBUEsDBAoAAgAAAHsQK0p92e9bKQAAACkAAABGABwA
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jhc2UtaHJlZi1jb250cm9sLWNoYXItcHJl
dHR5LWRpZmYuaHRtbFVUCQADCgN2WAoDdlh1eAsAAQT1AQAABBQAAABGYWlsZWQgdG8gcnVuIFBy
ZXR0eVBhdGNoLCBzZWUgZXJyb3IgbG9nLlBLAwQUAAIACAB8ECtKi2NuomUBAACaAgAAMQAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9iYXNlLWhyZWYtZGlmZi50eHRVVAkAAwsDdlgL
A3ZYdXgLAAEE9QEAAAQUAAAAvZE/T8MwEMX3fIpbqg7FcUqRQJUQLSVi4E8RQdDVta+KJROn9hnS
b8+ltEwMTMiWLJ/O7977WQgB8tW79I5R3ihSsnyr5Buu7ywdjutknZHP6FBFlE7tfCJBGEkEjMlR
lDVRK/tKlBF1CpZ2sotxnowlH+Sa34k64EZg16ImNDl1lI1Go38crTQl5faDZzMQ45MJjMYwm2Vi
sXyslvclPJRVNb8tp+Bsg3A2hZcaYVVVcBADlkkRDZAH7HgYISiIOtiWwDYw7L1MpXReK1f7SNOL
oih+tcXufQqac6OuvahRGfFjNW/d1fZyMFn0lcFp0dcuj+Lj0/O84DX+i/iPpBwOJuUQ1qgVJwBL
Eb57QHuD8KkibHxqDHxaqjkKcfKA28Rc8z0GdUDQd2Kj1o4xHNX65ojhAwMYa6DxxFfWUoxkJRig
eAqe+N+tb4bQZ8WQZ2J+Xz6/9JBtBN5MUm3wgDPPIPsCUEsDBBQAAgAIAK0TK0px2SUjPwAAAEcA
AAA6ABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jhc2UtaHJlZi1kaXJlY3QtYWN0
dWFsLnR4dFVUCQADBQl2WAoDdlh1eAsAAQT1AQAABBQAAAANiM0NgDAIRu9M8U3gOp6xRYMhpSmo
68vp/ewCNvMPXZe0hI67oD6iNB0HhyD5ClQs6U8TnGw1p4emvhIbEf1QSwMEFAACAAgArRMrSu4p
AHXDAAAAagEAADgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLWRp
cmVjdC1kaWZmLnR4dFVUCQADBQl2WAoDdlh1eAsAAQT1AQAABBQAAAC9jrFuAkEMRPv7CveHsVCo
Uh1RqJKKi7i0y60Jjhz2tPbC8fdZknxD5OLZI82MERFon7R8sdFz8EDboaeBDy/if3gqopF2rByM
ScMtFUdnc8xsRd3o5D7RXTEyHksWv9FstilRPGU6VB+eMh8xSubRkeepguPSZ2/atv3/D8LoJehP
f9cBrhZraFeLB+i6Bjev293bI9B731MDA0NQTVf4dYKcPyskna2unuAeDR4+DOqROZaR4Ri0ilMy
cbmwLRuo8w1QSwMEFAACAAgArRMrSq363gJQAAAAVAAAADwAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLWRpcmVjdC1leHBlY3RlZC50eHRVVAkAAwUJdlgKA3ZYdXgL
AAEE9QEAAAQUAAAADYg7DoAgDED3nqInkN3Nwc1JTHRFqKaGUEOrXl+m9xmmcV56dJv3DlbCkLN8
mLhSNORyNbAUbWqCe1BCC6dii0rpiYRHyG3eomz8knYA8ANQSwMEFAACAAgAfBArSmQv23MIAQAA
lQEAADUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLWV4cGVjdGVk
LnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1AQAABBQAAACNkMFqwzAMhu99Cl1CTonTdrARKCOUsEu3
jqWHXh1bwYYQp5aydm8/ZUt3HtbF4ucT/7c/vjXHQw2vddNUL3UJvR8QHko4OYRz00A1Wc8hQsRu
IrTAAfCGZmIEDWSiHxn8AKljHkul+mB07wJx+VQUhSJJRs9f6ka0kFREClM0SAqNC5lDbbNWE2ZO
buRj/3zZJdv9vEk2xbzb3eHrzWNeyFv/B/6HVGmyrVNo0WhpAJ4JfjNggkW4aoIuTIOFq2cnVVia
R7xMSJz/aNCLgjmJg2570XCnzWHC+IkRrLcwBJavsLQoOWciMHuPgdGwD0MKc1eM+ao61B+n2bEn
kBGRusPFZr5afQNQSwMECgACAAAArRMrSpMG1zIBAAAAAQAAAD0AHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLW51bGwtY2hhci1hY3R1YWwudHh0VVQJAAMFCXZYCgN2
WHV4CwABBPUBAAAEFAAAAApQSwMEFAACAAgArRMrSvY0XlRvAQAAsQIAADsAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLW51bGwtY2hhci1kaWZmLnR4dFVUCQADBQl2
WAoDdlh1eAsAAQT1AQAABBQAAADFkk1Lw0AQhu/5FXMpPdTNplZQCmKqBg9+0ojtdbM7JQtrtt2d
1frvndS2J/EqCYQMk2ff9yFCCJBv3qV3jPJWkZLVopYLbO4t7R/XyToj5+hQRZROfflEgjCSCBiT
oyhborXsJ1FG1ClY+pLbGGfJWPJBNvydaAOuRJecE7pVQeB2jZrQ5LSlbDQa/UsIpSkpt4tQliDG
JxMYjaEsM3Hz/FQ/P1TwWNX17K6agrMdwtkUXluEZV3DHgsMTBENkAfc8rGEoCDqYNcEtoNhn2oq
pfNaudZHml4URfFrQO7hU9BsAHXrRYvKiGPofO2uNpeDyU0/GZwW/ezyAB+fnucFX+MjfFAUf/CP
VDkcTKohNKgVlwBLEX52QHuD8KkirHzqDHxaarkNcfmAm8SS850JtbfQb2KnGscmDrR+OWL4wADG
Gug88SuzFFtZCnYoXoIn/gms74bQ18WQZ2L2UM1fe882At8sU61wbzTPIPsGUEsDBBQAAgAIAK0T
K0ohtQRJDAEAAJgBAAA/ABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jhc2UtaHJl
Zi1udWxsLWNoYXItZXhwZWN0ZWQudHh0VVQJAAMFCXZYCgN2WHV4CwABBPUBAAAEFAAAAH2QwWrD
MAyG73kKXUJOid12sBEopZSwS7eOpYdeXVvFhhC3lrJ2bz9lS3sc1sXi5xP/t9m9t7ttA29N265f
mxq60CM81bD3CIe2hfXgAscECU8DoQOOgDe0AyMYIJvCmSH0UHjmc61UF63pfCSuX7TWiiSZAn+r
G9FEUgkpDskiKbQ+lh6NK4+GsPRyozp3q8syX2zGTT7X4255h8/mz5WWN3vAc63/4T+oqsgXTQFH
tEZKQGCCvwzY6BCuhuAUh97BNbCXNizlE14GJK5+TZjJwpjE3hw7MXGnjWHC9IUJXHDQR5avsIxY
OZTisPxIkdFyiH0BY11MVbbeNp/7UXMgkBGX5oST0CrLfgBQSwMECgACAAAArRMrSpMG1zIBAAAA
AQAAAEMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLXNjaGVtZS1y
ZWxhdGl2ZS1hY3R1YWwudHh0VVQJAAMGCXZYCwN2WHV4CwABBPUBAAAEFAAAAApQSwMEFAACAAgA
rRMrSoIljdpuAQAAtQIAAEEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1o
cmVmLXNjaGVtZS1yZWxhdGl2ZS1kaWZmLnR4dFVUCQADBgl2WAsDdlh1eAsAAQT1AQAABBQAAADF
kk9LAzEQxe/7KeZS9lCz2VpBKYitunjwL66o1zSZsoG4qZmJ1m/vbK2ePHiTBEKGmZf3fkQpBfox
hvyCpM8NG908tfoJl5eed8dp9sHpewxoCHUwHzGzYiRWCSkHJt0xr/VQIU1oc/L8oTdEi+w8x6SX
Mqe6hCtFtsMXlLlg2L+hws0aLaOreMPFeDz+RyvGcjZha2Q+BzXZm8J4AvN5oc5ub9rbqwaum7Zd
XDQzCL5HOJjBQ4fw3LawEweRzYQOOAJu5HFGMEA2+TWD76EcvM20DtGa0EXi2VFd17/alDQxJysc
0HZRdWic+rFercPJ6/FoejZURvv1UDsutZ7sH1a1rMlfdH/UdDmaNiUs0RoxD54JvnrARofwbghW
MfcO3j13koIldMLXLIirLQGzSz90Ym+WQQh8qw3NhOkNEzjvoI8sV9EyQuNZCTt1lyLLF/CxL2GI
iakq1OKquX8Y+HoC2QLRrHBHsiqg+ARQSwMEFAACAAgArRMrSiPU1bUIAQAAkAEAAEUAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLXNjaGVtZS1yZWxhdGl2ZS1leHBl
Y3RlZC50eHRVVAkAAwYJdlgLA3ZYdXgLAAEE9QEAAAQUAAAAjZCxasMwEIb3PMUtxpMtJym0GEIw
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
z07QC6L8J5X7us3T3KmvG+XE+qZJ2NXY622TdAvxerV5SLZJD6D3HVBLAwQUAAIACAB8ECtK5M/v
0b0AAAAIAQAARgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9ibG9jay1kb2VzLW5v
dC1sZWFrLXJlZmVycmVyLWFjdHVhbC50eHRVVAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAfU9N
i8IwEL3nVzw8L7X1ovTmatiL2kL6B0IabTDJSDJB/PcbtvdlDm94X8ychpsaLhJXqdTxR/bwLlrs
ukOPb0/maWdo3JMOFm/HCyi5h4vYLMyvfrvtdvumrdP1h7ZtN9VJAdoYm7OLj3+jtV37hTKv0QZj
IiZDPn9hpqBdrIuOM16UOCOUzAiazdKI8ajU2twYimwjn8mUUBEuIxbvV0suf5fcK/EZdcr1mapz
KlaISaoJp+E6XuQkhfgFUEsDBBQAAgAIAHwQK0o2o8Mp5gEAAIsDAABEABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2Jsb2NrLWRvZXMtbm90LWxlYWstcmVmZXJyZXItZGlmZi50eHRV
VAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAxVJda9swFH3Pr7gEurQksuKmYyFQljQNe9hHwzzW
virydSwqS6l01Sb/fteuNxiUvQ6DJOxzdM49x0IIkD+9TQ1GeatIyc19Ie9x99lQv90kY0v5HS2q
iNKqk08kCCOJgDFZirImOsj2TZQRdQqGTvIY4yqVhnyQO+v1oyg9RuE8Cb7nkakVhoBB4PGAmrDM
6EiD8Xj8f90oTUnZzstyCSKfXME4n8xguRyI9d234u7LBr5uimL1abMAaxzC1QJ+1AgPRQG9AnQK
WILSGmME8jBqPS2k5A/K1j7SYj6dTt+0x1P4FJgoUddeGEcYSO2zg/2ITu0siipZKzqN6/zd0/XZ
bB11MAc6m22UZfB5QcG4fVYF36xrFda+xPPp8f18wsusWy4umCX/0EawQ61SRCAe5VUfNNPAV6Dg
FQcvKkLlkyvhxVBtXAcO+JQ46qwLIWJ4xsCbI1AORg+CYxHb4IkrNt6NoEZVMqJnsUu+xESWr9Wz
8SEbwNspX+bzBdz8zhWqoBrsbIAPZs9ehn3C+eWHbMpP3iU8hDaEvohW7V/Uv8sZZtAa99rbOIHS
N8o4Pige/+ADRWhSJGgU6Zpdb1fcf3d1pj1X5ujWa/6LOQgez3FjPSamzkvb4WmrQuRxGEAh4eAX
UEsDBBQAAgAIAHwQK0oZZSppigEAAG0CAABIABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2Jsb2NrLWRvZXMtbm90LWxlYWstcmVmZXJyZXItZXhwZWN0ZWQudHh0VVQJAAMLA3ZYCwN2
WHV4CwABBPUBAAAEFAAAAH1RXWvbQBB8169YDKkTiCQ7bqkRhOKqoi9JbZAf8no+rayj0q2zt5eP
f9+V7BYKpRzsHdzM7uxMuf1Rbx8qeKzqevO9KqB3HuFjAfsO4amuYRMbJ8Rw6Mn+xAaMtRgCCMG8
EzkVea4fpu8oSLFeLBZ5QBvZyXv+FsKFnDMGiqzEHG1HqfOCLOaYnfov6M2hx7SNfZ9OM+6XH57v
r1ZlsOxOcrWqTK/g61rY+WPWMg1lZ7ikBq8Xb5/Wt1pWU7m5UVb+hzaHA1oTA4LoKuf5YJUG1IKB
Mw5eTYCWom/g1Unn/ARmfI4YJJtMCMgvyHp5AeNh/pSqLemOSdCKIz+HDk2jiAtLVWoTF3R8Z14c
cZaU/zT5brku4OtvW6FlM+CkAojdUaXMLgYv7z5nCz3LyeAZjB5cchiH/Y/6dzazDEbdZKkPt9DQ
YJzXh9HtT8QSYIhBYDBiuyzZbTT9qXNmSQPz8o1sHEYbdDmveZ0hIU5KxgDfd4aDLqP/whGTZF/V
eyi3j7uHal8lyS9QSwMEFAACAAgAfBArSn8R3SPMAAAAOwEAAGgAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvYmxvY2stZG9lcy1ub3QtbGVhay10aGF0LXBhZ2Utd2FzLWJsb2NrZWQt
dXNpbmctZW1wdHktZGF0YS11cmwtYWN0dWFsLnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1AQAABBQA
AABlkDFuwzAMRXed4kNzkAN0KwpvKWLU7gEYm7KFKlYg0jF8+1JNMxRdCJB8//OD/RwFyqJWZ1Ir
jM+PE3IALYih0JWxzVkYN5oYWuI0ceERhLCm9JheUh6+YE5LVviRlF4O/ujceYGsw8AiB+x5xRZN
IcwmFi6Rpd7x7WvXeVyNMi8jQ04pb3bissP3Tdfj7fzenpq+qZ6u4ig8cLwbkzKN4DsvarryTExB
2ZolaqT0HP6gyTSa/6c/Pnx/49bl3lIRo+uDysrO/Yni3DdQSwMEFAACAAgAfBArSjBlmMraAQAA
agMAAGYAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmxvY2stZG9lcy1ub3QtbGVh
ay10aGF0LXBhZ2Utd2FzLWJsb2NrZWQtdXNpbmctZW1wdHktZGF0YS11cmwtZGlmZi50eHRVVAkA
AwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAzVLNbhoxEL7zFCOklFZgDCKHaqWoULrqoaSgLG1yNbsD
a8XYG884wNt3dkE99QF6sjye+f7GSinQv4NLRyT9zbDR+XOhn3H3w/Lt+Jqsq/QTOjSE2plLSKwY
iVVESo5J18yNbiukCcsULV/0mWiRKssh6p0L5auqApLygZXgvCquDavGHFCdDKmuAyuVyPqDwmPD
F1WJGJWiU3husGSsxnzm3nA4/N/1mpKTcZ3a+RzUdHQPw+loBvN5Ty3XP4v1KofHvCgW3/MMnPUI
9xlsa4SXooCbBrgxgClLJAIOMGhVZ1rLg3F1IM4+TyaTfxoQnyFFGdRY1kFZzxjZHMaN+4Le7Byq
fXLu6uJh+uHt4W62pDLahu9muXHS/FGLGP1J6vrvwwB2WJpECCxirwxQhgoh7MHAtQ8kHtiH5Cs4
Wa6t75ojviWJe9zZJIzvGOXwDMbD4EUJl9rEwLJmG/wAajSVdNymJGIBsST0tXm3IY57giP3boPQ
bqYj+fW06pR4sPtojggnSQmhXRpwtIcDxjZQaL1fq10AIEiyZui3C8xGfUHvwdoDpS76Ecj/ES8y
Q4itT4wWqWXqbxZF0Qf5iSRo0rkPzoWTkOwu0N/mxRaW68fNKt/mgvoHUEsDBBQAAgAIAHwQK0qv
808/mwEAAIICAABqABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jsb2NrLWRvZXMt
bm90LWxlYWstdGhhdC1wYWdlLXdhcy1ibG9ja2VkLXVzaW5nLWVtcHR5LWRhdGEtdXJsLWV4cGVj
dGVkLnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1AQAABBQAAABlUt9r2zAQfvdfcRjabFDbGd3DMJQS
gulLuoTZg75e5LMtqkqpdEqW/74nJyuMvcjo7rvvx8nr7c92u2nguWnb1VNTg9GW4HsN3UTw0raw
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
jhKM7sEEi/CsEzyE3Ft4dtRxD8S1RZZlqvLcob70NyCx13vPHf5mG8AJ4xNGsM5CH4hH5tLc573g
9sVNDDQGnkKH2mIsC9Fs29tdBTeNUgUUvwBQSwMEFAACAAgAfBArSlJZ66ktAQAAwAEAADwAHABo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvY29va2llLWluamVjdGlvbi1leHBlY3RlZC50
eHRVVAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAbZDNbsIwEITvPMVeAqf8FHqoIkVVhNKqEi2o
5sDVOEvt1thgb4C+fTeEqpceVzM7s/vNl29iuWjgtRGifm5KsMYh3Jew1ggbIaDuWkM+QMBdF7EF
8oAXVB0hSIgqmAOBcTDRRIcyz61X0mofqXwoiiKP7AyGvvNLjLekPGD0XVAYc1Tap8YRBpIf2cE+
Ekaq/l1S3n8ZZPMnKjLeZZr2diwtr6aDVt2Nj1Uym++RZDIt+ntSPHbmVCXTqUBK51cbD6wqz62O
eumvZM3tg6l6ql8WgzNPZs0Etqgkvw+GIgzXg/ItwllG2PnOtXA2pJkDMbbAtRyVXRnKG7/eiU5u
LTP8TevNEcMJA7SmBeeJR86SzHOTMv10FTwND09Ao2wxZKN60byvS1jVQoxGP1BLAwQKAAIAAAB8
ECtKkwbXMgEAAAABAAAAMwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10
YWctYWN0dWFsLnR4dFVUCQADDAN2WAwDdlh1eAsAAQT1AQAABBQAAAAKUEsDBAoAAgAAAHwQK0qT
BtcyAQAAAAEAAABEABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1j
b2RlLWF0dHJpYnV0ZS0yLWFjdHVhbC50eHRVVAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAClBL
AwQUAAIACAB8ECtKJpAWBIABAADXAgAAQgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9lbWJlZC10YWctY29kZS1hdHRyaWJ1dGUtMi1kaWZmLnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1
AQAABBQAAADFkE2P0zAQhu/9FXMpPRTHaReJVaWKLkvEgY9FBLF7ndhTYsmNu54xbf89k7bcuOwJ
+RA7ejXzvI8xBuzPFMuO2H5AQds8tvaRuk9Brp/3JURvv1MkZLIRT6mIEWIxmbhEYduL7O34hy2T
KznIyR6Z74oPkrKlXUfeCP4yLnkyKJJDV4TM0tBxT07IV3KUyXw+/58s6KRgPJNsNmAWr5cwX8Bm
MzH3D1/bh88NfGna9u5js4IYBoI3K/jREzy1LVynQ6ZtYfIgCeio24UAgV0Oe4EwwGyEW1m7WL6t
aj2L1W1d1//k1DqpZKciyPXJhEEoK3W1j+/GcusXlqt62cVXz+vpzf05NF3WY2RtbUwOY59YLizb
4CSkQT3wYaspjDEdLg3QKQ6vMR7wxNObRmddNup9Bh051O4QhOGCDuMGOCDDNpXBwyFIrxJEnWV6
LtqiOgvEq7wxSQN2UQX+nTaGmfJvyuCDhyGJPnUWqswno+rNt5yEzswz6Ak95WoCkz9QSwMEFAAC
AAgAfBArSuS0Wk0mAQAAsQEAAEYAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1i
ZWQtdGFnLWNvZGUtYXR0cmlidXRlLTItZXhwZWN0ZWQudHh0VVQJAAMLA3ZYCwN2WHV4CwABBPUB
AAAEFAAAAG2QsWrDMBCG9zzFLWkmW05SaDGYEoLp0jYFd8gqS+daoFiO7lwnb99znG5FiwSf/vvv
2x8+qsNbCe9lVe1eyxy86xAec/hqEY5VBbvBOg4RIjYDoQUOgBc0AyNoIBNdz+A6WLXMfa7UevOU
ZnLW+XOWZYqEjI6v6kJ0T1IRKQzRICk0bUhcxxhZf6e9f2EkLv79hKcabSJYYoLFRDNHV0uJZJO2
fPIP52K53d+g5SabkEIpH4z2bSCeuzTOsAud9imNjVDa+zDOG2gjdajQftRXWm5LyZonyn0FNRot
u4Njgrk6TBNg1ARNGDoLo+NWJLA4i3geZIv0JlDf5U0kdrr2IvAvbYIJ4w9GsM5CF1iekqVF5jER
9clnDIy3zitoUVuM6WLxC1BLAwQKAAIAAAB8ECtKkwbXMgEAAAABAAAAQgAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctY29kZS1hdHRyaWJ1dGUtYWN0dWFsLnR4dFVU
CQADCwN2WAsDdlh1eAsAAQT1AQAABBQAAAAKUEsDBBQAAgAIAHwQK0rbBcjKjQEAANQCAABAABwA
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb2RlLWF0dHJpYnV0ZS1k
aWZmLnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1AQAABBQAAADFkkFP4zAQhe/9FXPp9lAch8KuVpEq
CiViJZZSEQS9OvbQGLlxscc0/fc7Kd0bF06cbI+e3rz3yUIIkE/epQ1Gea1IyfK5ks9Y31o6HlfJ
OiMf0KGKKJ3a+0SCMJIIGJOjKBuirewnUUbUKVjayy7Gy2Qs+SBxU6MRpNZCe4NCEQVbJ0KB3RY1
ocmoo8F4PP6+JEpTUu6QYzYDcXoygfEpzGYDMb9fVPd/S7grq+rypizA2RbhvIDHBmFVVXD0hoAv
KaIB8oAd7yYEBVEHuyWwLYz6aIWUzmvlGh+p+J3n+acpuYxPQTMG1I0XtiUMnDnbuou+2vRL1bKG
Nu7H23R4Nj9IhpO8F0wNEy4IO5K9YHhW18z01/nJ8s/iVW/czlz/bOqbp72Zr7vbx927niz2anWV
L9dT9irZ7mMl30dQo1ZcHixF+MgO/RLYqQgvPrUGdpYapkAMLeBb4hrZgaA60uuV2KraMcH/br04
YnjHAMYaaD3xk70U01wJZi+WwRP/IOvbETSoDIZsAIN/UEsDBBQAAgAIAHwQK0q0i6/OMgEAALIB
AABEABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb2RlLWF0dHJp
YnV0ZS1leHBlY3RlZC50eHRVVAkAAwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAbZBNT8JAEIbv/Iq5
IBf7EUBjmjQGscFERZISw3U/BnZN6cLulJZ/7xTw5m0meeadmWf+tSy/Pgr4LMpytigyqGyNMM1g
bRA2ZQmzRltyHjxum4AayAF2qBpCEBCUtwcCW8PIEB2yJKmcEpVxgbKnNE2TwKS3dE66EG5Jicfg
Gq8wJKiMi2xN6Ens4kP1TBgo/3cI9xJ1xFiknMZIEHkr+YjY0L66O+bDyfyCDMdpD+RakMgIO0p6
YDiRUgR8nN6v3pY/al+1+vXByMX3Wc933fu6Panx8iw2L+lql3NWwXHXlVyPQKIS/DxYCnC9Hfol
0IoAW9fUGlpLhi0QS/N4bPiN+GJQ3Oz1JNZCVmzwL62HA/oTetBWQ+2IW84SbHMTsfto5R2hIuvq
ERgUGn08GPwCUEsDBAoAAgAAAHwQK0qTBtcyAQAAAAEAAABAABwAaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb250cm9sLWNoYXItYWN0dWFsLnR4dFVUCQADCwN2WAsD
dlh1eAsAAQT1AQAABBQAAAAKUEsDBBQAAgAIAHwQK0o/sQjumwEAAA8DAAA+ABwAaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb250cm9sLWNoYXItZGlmZi50eHRVVAkA
AwsDdlgLA3ZYdXgLAAEE9QEAAAQUAAAAxZI/b9swEMV3f4pbXA0uRdlpkcKAUaep0aF/UlRFk/VM
niOiFKmQx9r+9jk5ztYhnQoN5BGPx997J6UU6F/Rl56y/oiMenPb6lvafnZ8Xj4U563+QZ4wk/Z4
jIUVU2aVKBfPWXfMgx5Pss5kSnJ81Iecr4p1HJOmfktWMd4rEwOn6JXpMCk6DGSYbM0Hnsxms//F
gYYL+hPFeg1q/noBszms1xN1ffOtvfmyga+btr36tFmCd4HgzRJ+dgR3bQvnzpBoVzJZ4Ah0kJeZ
ACGb5AYGF6AawZZa+2jQdzHz8l3TNH9lFCuxJCMhkOmicoEpCXE9+PejsdU/GKs77v2rh9X04vok
mC6agD2tqsGXexcqqfk4SI3D4J1BdjHog9rT9rc7BxuIs8GBRm1OZvVsZL64rBv55i8xYkvfH+u8
302bt9X0YiM8T8Syr2BLBiU7cJzh6QaYaAn2mGEXS7Cwd9xJiCyZJ3oowlWfBoDn8EclBdx6GcBz
t1GcKf2hBNZZCJGllF4ow7hTMjr1PUWW3088V9ARWkr1BCaPUEsDBBQAAgAIAHwQK0rwVQYHPwEA
APEBAABCABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb250cm9s
LWNoYXItZXhwZWN0ZWQudHh0VVQJAAMLA3ZYCwN2WHV4CwABBPUBAAAEFAAAAI1RPU/DMBDd+RW3
hExO0hYEihShqopYgCKFoatjX2sLx3btC23/PU4/Ngbk5U569/w+VuuPbv3WwnvbdcvXtgajLcJD
DV8KYdN1sBylJhcg4HaMKIEc4BHFSAgcogjaE2gLuSLydVkaJ7hRLlL9XFVVGRMyaDqVxxivTGXA
6MYgMJYolGPaEgbiu8KbF8JIzZ9HOPQoWYIx4SwFZ5hQPBSKBnO/b7LF6gzI5pXlAza5N+NO2zzt
dPJp594bLThpZ8sjO2D/rYlNvzGLFAX3OGFjEM3NyGz+VFTpzf5jRI7DcCriYZtVj3m2aJOei+I0
59Cj4Ck70BThcgHCSYQDj7B1o5Vw0KRSiJQyD7gfk67iXAC/hj8h0fLepAJubBM4YvjBAFJLsI7S
mrh4KmPDUnXsMzhCMXnOQSGXGIq7u19QSwMEFAACAAgAfBArSls+gfaPAQAA5QIAADEAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLWRpZmYudHh0VVQJAAMMA3ZYDAN2
WHV4CwABBPUBAAAEFAAAAL2ST28TMRDF7/kUcwl7CF5vUiRQpIiUsuLAnyIW0V699qRr4bVde0w2
357ZNL0hxAn5YI/1NPN7zxZCgPwRXBkxy/eKlGzvOnmH/UdLl+1dsc7Ib+hQZZROnUIhQZhJJMzF
UZYDUZTzTZYZdUmWTnLK+boYSyFJHHs0gtSDwCmiJjQ1TbRYrVb/cbTSVJQ7D97vQaxfbmC1hv1+
IW5uv3S3n1r43Hbd9Yd2C856hFdb+D4g3HcdXJpBwkPJaIAC4MTDCEFB1slGAuuhmlm2UrqglRtC
pu2bpmn+iMX0oSTNvlEPQVhPmBiyju7t7GX3dy/1QKN78bhbXt2c75abxqsRd1V05cH6ims6Ra5V
jM5qRTZ4OYkj9j/tJT6PlLWKOGtz0rtn9vXmdd3wWv8LuynjeKrz8VAtr1qGeSLkcwU9asVZgaUM
T3LQwSAcVYZDKN7A0dLAoRFnnPCxMFR9Dlxdwp6V6FXvOPDnbrM4Y/qFCYw14ANxyb0Uh38v+KnE
1xSIfxgbrmBAZTDVC1j8BlBLAwQUAAIACAB8ECtKpJ3/YTQBAADhAQAANQAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctZXhwZWN0ZWQudHh0VVQJAAMMA3ZYDAN2WHV4
CwABBPUBAAAEFAAAAI2RvW7DIBSF9zzFXVJPNk5SqZUlq4oiq0vbVHKHrBhuYlQMBC518vbF+dk6
VCwcdDj38LHZfrTbtwbem7ZdvzYVaGUQHiv46hF2bQvrKBVZDx73MaAEsoAnFJEQOAThlSNQBrKe
yFWMaSu47m2g6rksSxaS0ys6s1MItyTmMdjoBQaGore5MoSe+KFw+oUwUP3nJRw6lPlk62nQD8d6
vtpczubL0vAB68zpeFAmS5rOLmnunFaCk7KGnfIRu29F+TQgN0hBcIeTN3hR37svlk9FmdbiP91l
HIZzEcZ9Nl81qcy1Ydpn0KHgiRUoCnC1g7ASYeQB9jYaCaOiPkGjxNjjMaZSxQU4v8GenGh4pxPw
e9pkDuh/0INUEoylJFMWT/B3efqq/NNbQjE9OIMeuURfzGa/UEsDBBQAAgAIAHwQK0r/B1w8QgAA
AEYAAABIABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1pbi1wYXRo
LXVudGVybWluYXRlZC1hY3R1YWwudHh0VVQJAAMMA3ZYDAN2WHV4CwABBPUBAAAEFAAAAA3EwQ2A
IBAEwD9VbCvGEvj4vRyrZ1QgsPav85g16BcUpj9iy3l5y6k24CYPTgzuN10skB0TZ0U3Bbw9vVVW
zZTSB1BLAwQUAAIACAB8ECtKW5bZD68BAAALAwAARgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9lbWJlZC10YWctaW4tcGF0aC11bnRlcm1pbmF0ZWQtZGlmZi50eHRVVAkAAwwDdlgM
A3ZYdXgLAAEE9QEAAAQUAAAAxZJNb9swDIbv+RW8ZDmkspyPYUWAAumyYId9dJiHtVdFZiphsuSJ
1JL8+9Feeut9EGCLNsX35UMppUD/TKF0SPqDYaP3j41+xMMnz9fX++JDq79jQEOog7mkwoqRWGWk
Epi0Y+718IU0oS3Z80Wfie5L6zlljd0BW8XmWfmoesNOlciYOx8Nyw8892hlU/GZJ/P5/H/7MZaL
CaOb7RbU4mYN88XNCrbbido9fG0ePu/hy75p7j/uNxB8RFhv4IdDeGoauGpAxmMhbIET4Fk8MIIB
stn3DD7CbLC40Toka4JLxJvbuq5fdesHbxZ71mhdUmMo3qs+6OlqN/YyXdYO/bPju+ly+bau5UnZ
DsEgQ6KzWL6ralmLze16vXpVR+ClIkKk29J1l4pORylQnbvwxobCononev10tZ/BAa2R9sAzwb9T
YFOLcDIEx1RiCyfPTvpkwZLxd5FZVCMjc+UzZGI0hyCMXqoNyYT5D2ZofQsxsYRSywivJyV01bec
WO6KT3EGDk2LuZrAzqH9JYcNjxUk72UI1rB1SMMwwnjFQMDRwH+Yulju+hQxMk1A1l9QSwMEFAAC
AAgAfBArStfzzphBAQAA2QEAAEoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1i
ZWQtdGFnLWluLXBhdGgtdW50ZXJtaW5hdGVkLWV4cGVjdGVkLnR4dFVUCQADDAN2WAwDdlh1eAsA
AQT1AQAABBQAAABtkUFvwjAMhe/8Cl86TjSlMA1V4oBQtcs2JnWHXUNiSLQ26WJ3wL+fy+A2RYpk
6fk9+/N299bsXmp4rZtm81xX0PqAsKzgwyF8Ng1sBus5Jkh4GAgtcAQ8oxkYQQOZ5HsGH2DqmPtK
qTYa3bpIXK2KolAkyuT5os5ENyflA2My2LNC4+LsWrI+5n2rssUWuz3arCwc+qPjdVaWj0UhPyUz
FmMMSc68fMoLefNqtVwu/s1JSHGQIFJ26LpLTqeDGOTnrn0w7cCSupa8PlvUU9ij0bIeeCb46wIT
LcJJExziECycPDvZkwVLwu8BifMrI33jMyox6H0rjO5uo5gw/WAC6y2EyFKKlxZenzOhO3tPkdGw
j2EKDrXFlE+2Ds2X9Gq+GojsfgOj2Tik8RatdI3X0Eca8feanUzc9TFgYJpMJr9QSwMECgACAAAA
fBArSpMG1zIBAAAAAQAAAEIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQt
dGFnLWphdmFzY3JpcHQtdXJsLWFjdHVhbC50eHRVVAkAAwwDdlgMA3ZYdXgLAAEE9QEAAAQUAAAA
ClBLAwQUAAIACAB8ECtKnznr/XIBAAC6AgAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9lbWJlZC10YWctamF2YXNjcmlwdC11cmwtZGlmZi50eHRVVAkAAwwDdlgMA3ZYdXgLAAEE
9QEAAAQUAAAAxZJPTxsxEMXv+RRzCVsUvA7QQ7VSRICuOLQU1EWF68QeWCPHDvYYwrfvbBLEhQsn
Tv6j5zfv/WSlFOh/0ZclZf0TGXV72+lbWvxyvFvOivNW/yVPmEl7fI2FFVNmlSgXz1n3zCs93GSd
yZTk+FWvcz4t1nFMmpYLsorxQT3iM2aT3IpVSV7RekWGyda85tFkMvm6JGi4oN/kmM9BHR4cweQQ
5vOROr/60139buGy7brTi7YB7wLB9wZueoK7roOdNyS6L5kscARay2wmQNiOABegGqI1Wvto0Pcx
c/NjOp1+mFLKxJKMYCDTR+UCU5LM9cqfDNVmn6pW97z0e0+z8fH5RjI+muZkZtW7qkEv/t9sNII+
cG3jEl3Yr8bHrTzaGsu+ggUZlIrgOMM2IZhoCV4ww30swcKL4166sqBJ9FQkbL3hhDtGg5ICLrxw
enMbxJnSMyWwzkKILEfxQmF2p4Swuk6R5Z+4GCroCS2legSj/1BLAwQUAAIACAB8ECtKupNWBRYB
AACYAQAARAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctamF2YXNj
cmlwdC11cmwtZXhwZWN0ZWQudHh0VVQJAAMMA3ZYDAN2WHV4CwABBPUBAAAEFAAAAG2QPU8DMQyG
9/4KL+VguA9RBnRSharqxAIU6Ri65hKXBOWS1nHa8u9xPxALmy09fm0/y9Vbv3rp4LXr+8Vz14J3
AeGhhQ+LsO57WGTjOBIQbnJCAxwBj6gzIyhImtyWwQUoLPO2rWsftfI2Jm4fm6apk5Dk+Ls+pnRN
qglTzKQx1ahtLF1gJFaf1dY/MSae/zuE44CmFKz8Unt12Vtm8pXl0d/s5tPZ8oxM75tEel78Ua3y
kn9ros4jBq5MHJULd8V01snQJVjqAgbUSl4ExwkuF4KOBuGgEmxiDgYOjq38yqKGcJfl2OrsSV0d
nUgMavDi6TftBCekPRIYZyBEllaylDhbl2K4fKfIqNnFUIBFZZCqyeQHUEsDBAoAAgAAAHwQK0qT
BtcyAQAAAAEAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1u
dWxsLWNoYXItYWN0dWFsLnR4dFVUCQADDAN2WAwDdlh1eAsAAQT1AQAABBQAAAAKUEsDBBQAAgAI
AHwQK0oOje6FmwEAAAYDAAA7ABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVk
LXRhZy1udWxsLWNoYXItZGlmZi50eHRVVAkAAwwDdlgMA3ZYdXgLAAEE9QEAAAQUAAAAxZJPbxMx
EMXv+RRzCXsIXm9SJKpIESkl4sCfIraivU7sSdfCa2/tMUm+fWfTlBNC3JAP9thP4/d+tlIK9I/o
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
c3NBdWRpdG9yL2ZhdXgtc2NyaXB0MS1leHBlY3RlZC50eHRVVAkAAwwDdlgMA3ZYdXgLAAEE9QEA
AAQUAAAA4+LShQIut6LE3FQrBXUbRV3dNBA7ILEkQ0FfH8430NW1AyJ1hBYbpeLkosyCEiW7xJzU
ohIN9cy8vPzk1LwSheT8lFR1TS4AUEsDBBQAAgAIAHwQK0oBdf/nNwEAAPkBAAA2ABwAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ZhdXgtc2NyaXB0Mi1hY3R1YWwudHh0VVQJAAMMA3ZY
DAN2WHV4CwABBPUBAAAEFAAAAE1R3UvDMBB/z19xPk3Bttt0bIgIPigKEwpzT+LDtb2ukSaZl2S6
/97LPtyaUJLr75MqlR0e9cxo6A4G9xdZ1qZziaGDovi/D7PsQfbgRHm1gdhiDwviDTE8MTtW6r0j
8PsJ2drFhKIG0II+EighQbbRvna21avIGLSzgmrgBz1Ei1VPEBzUzqx7CgRbFxmYviP5kCtV9oSe
5LMNWAcIJ1dsjLbaB5EUCwzwYZ0MGybvYaU3ZD+TsLatY5OIBly7EwjayKvT/piwriNL+OtdroQQ
K4npUxhYEycF6fYVfYCK5HZOl5BvabI3OvSrXAznFga3wgTcoO53lbU977IH9W4lYo9rrDsqxvlt
PprB5dLq3ysoX8pikk/ymxnMdcW0WMwFMc6nx78i/UfjaT6UNYLScYDZUP0BUEsDBBQAAgAIAHwQ
K0o6qdFUwgEAADADAAA0ABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ZhdXgtc2Ny
aXB0Mi1kaWZmLnR4dFVUCQADDAN2WAwDdlh1eAsAAQT1AQAABBQAAAC9UduO0zAQfc9XDE/ZVeq4
l11thVarLmIRiEWKKLAPiAcnmbRGjh3scWn/nnHaQr8Ax3Ls0Zk5Z84IIUB+cyb2GORbRUo+vazl
C9YfNZ1+b6I2rfyMBlVAadTBRRKEgYTHEA0FuSUaZIoEGbCJXtNB7kN4jK0m52Wn4l6ExuuB5gL3
AzaEbUl7yoqi+L/sqqGozMi9WoFYTG6gWExmc1itMhCnlcE7r3p8Dfn9KyG6dK8UbUHKv++pEA+8
84skcZ8fWfIHZdDTVa6tdQ1agsa1mF9nxQdL6K0ysEa/Qw9P3jufFVnxZYsQjjG0jYsJhy0oC/qc
ggkLvHsdGmc7vYlekXaWUS38VgGiVbVBIMd8/WCQENgsDx5/RXanTETVaCMDLLEVQP94VdtrqwNx
USZRBN+t42DLLgfY6B3aH6m0tp3zfUrswXVjAdI9H1sdzhobHgLLn4zKEoKpWGhIcmBAnypwdz9j
IKiRX5fpo8xPKXakOvVY89gvSXp14FxQO6XN2La2l90cQcZtxnKPg2q2KOflTTlbwtVXq/fXUL2v
5G15Wy6W8Kxrj+v1MyPm5d15OuzBbH5XTvmbQeU8wXKa/QFQSwMEFAACAAgAfBArSsQNJ+1IAAAA
XwAAADgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZmF1eC1zY3JpcHQyLWV4cGVj
dGVkLnR4dFVUCQADDAN2WAwDdlh1eAsAAQT1AQAABBQAAADj4tKFAi63osTcVCsFdRtFXd00EDsg
sSRDQV8fzjfQ1bUDInWEFhv14uSizIISdbvEnNSiEg31zLy8/OTUvBKF5PyUVHVNLgBQSwMEFAAC
AAgAfBArSgF1/+c3AQAA+QEAADYAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZmF1
eC1zY3JpcHQzLWFjdHVhbC50eHRVVAkAAwwDdlgMA3ZYdXgLAAEE9QEAAAQUAAAATVHdS8MwEH/P
X3E+TcG223RsiAg+KAoTCnNP4sO1va6RJpmXZLr/3ss+3JpQkuvvkyqVHR71zGjoDgb3F1nWpnOJ
oYOi+L8Ps+xB9uBEebWB2GIPC+INMTwxO1bqvSPw+wnZ2sWEogbQgj4SKCFBttG+drbVq8gYtLOC
auAHPUSLVU8QHNTOrHsKBFsXGZi+I/mQK1X2hJ7ksw1YBwgnV2yMttoHkRQLDPBhnQwbJu9hpTdk
P5Owtq1jk4gGXLsTCNrIq9P+mLCuI0v4612uhBArielTGFgTJwXp9hV9gIrkdk6XkG9psjc69Ktc
DOcWBrfCBNyg7neVtT3vsgf1biVij2usOyrG+W0+msHl0urfKyhfymKST/KbGcx1xbRYzAUxzqfH
vyL9R+NpPpQ1gtJxgNlQ/QFQSwMEFAACAAgAfBArSgl554vJAQAAOQMAADQAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvZmF1eC1zY3JpcHQzLWRpZmYudHh0VVQJAAMMA3ZYDAN2WHV4
CwABBPUBAAAEFAAAAL1R227bMAx991dwe0kLR1YuLRoMRZEO67BhHRAs2/pQ9IGxmViDLHkSlSZ/
P9pJtnzBZEGWiEOew0OlFOif3qaGov6AjPrhaamfaPXF8PH3Phlb6W9kCSNpi3ufWDFFVoFishx1
zdzqLhJ1pDIFw3u9i/E+VYZ90GtMOxXLYFqeKtq1VDJVBe84y/P8/7JjyQltzz2fg5oOryCfDscT
mM8zUMeVwceADb2Dwe0bpdbdfYFcg9Z/3yOl7mQPzpLU29vn1xqZthReDnx3aCnwxcA450tyDKWv
aHCZ5Z8dU3BoYUlB4PAQgg9ZnuXfa4J4iJErfepwVAE6MKcU6rAguzGx9G5tNikgG+8EVcErRkgO
V5aAvfA1rSUmENcCBPqdxKaiI1r0fgrAsXgC/I8Xq8Y4E1mKCgkyPDsvwUrsjrAxW3IvXWnj1j40
XWIDft0XYNPIUZt40ljKNET+sFfWIYRKhMZODrQUugrS3a8UGVYkr/P0XubXLnagOva4kvmfkzS4
l1zALRrbt23ceTcHkPWbvtx9i2VNelJcFeMZXPxwZncJi08LfV1cF9MZPJpVoOXyURCT4uY0HfFg
PLkpRvKNYeEDw2yU/QFQSwMEFAACAAgAfBArSi2DT3NRAAAAaAAAADgAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvZmF1eC1zY3JpcHQzLWV4cGVjdGVkLnR4dFVUCQADDAN2WAwDdlh1
eAsAAQT1AQAABBQAAADj4tKFAi63osTcVCsFdRtFXd00EDsgsSRDQV8fzjfQ1bUDInWEFiWb6PKM
xJLUstSi2OLkosyCErvEnNSiEg31zLy8/OTUvBKF5PyUVHVNLgBQSwMECgAAAAAAfBArSgAAAAAA
AAAAAAAAABMAHABodHRwL3Rlc3RzL3N0b3JhZ2UvVVQJAAMLA3ZYMgl2WHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAB8ECtK+vBCBY8CAADkKgAARQAcAGh0dHAvdGVzdHMvc3RvcmFnZS9jYWxsYmFj
a3MtYXJlLWNhbGxlZC1pbi1jb3JyZWN0LWNvbnRleHQtYWN0dWFsLnR4dFVUCQADCwN2WAsDdlh1
eAsAAQT1AQAABBQAAADtmlFv0zAQx9/9KY69DKQtaQvTpiqqtK2dNqmDiHYPCPHgJtfGkNjFdrr1
23NO0lEYSLyhTddKSWzfnX3/+z3kpAhx3P3ElZUVDuHQ1H5d+2Z0+HN1XigHHp1vLvRYSA+yLGF8
ARndFzL75kBabEaYg9JkQyOjPT748LyFewzrFqXH/AispEkbIv1qel8EszBDsWkxLxHupds5RiI9
n82GMCcDb6V2MvPK6MdTtLa/HcJazPxuh0h8xCXSlB1C8mr84XL+KZ3A9fx2CundxfTmEg6O4/hm
Mr+K4/F83K4Mol4cT94fjERS+KocJQXKnAZe+RJHJ70e3FBwq2UJM7QbSmxirbFJ3BqIJG4ckoXJ
tyFGf/QXe1oRyXoU0nPtAurM1MGYMiKt1M4PgwMYKyrlKLWlWtWkadCCRGtkqLVckHreUOrVukSP
YmtqCxa/11TGKInXzWZpidK1FSA1G826vWVeKa0cCe1pL6q5gM/a0HRu0TlYqQ3qL2EDpZfGVsG1
ArNsQnhVhToSON1Js6wm1fMj0RwwmLS1c0CngjXaEIKS/FoTZwuk0b7/42lvw3y7X5fugqDd36mS
W/IHuZGqDAqIDoSdoI1RaVZdyMLSpUtpdL6WWYHxIHoX9c/g9Z1WD28gvU7jk+gkensGU7WwOJtN
yWIQne6KR8r0B6dRj/59SI31cNZL4l1Mqn5Td6puYEfsIew8QV2h9uDqLAuaMsgM8rMGuT0VY8wY
P0OM918pGGQG+UWAzK8WjPILQZkRZoS5zWOQGWRu8xhjxpjbPAaZQeY2j1HmNo8RZoS5zWOQGWRu
8xhjxpjbPAaZ2zxGmVH+/yiLp1+aLpV1Tz40/YOdQypT/g+GpId9avcDUEsDBBQAAgAIAHwQK0pP
FWVqHgMAAPYyAABDABwAaHR0cC90ZXN0cy9zdG9yYWdlL2NhbGxiYWNrcy1hcmUtY2FsbGVkLWlu
LWNvcnJlY3QtY29udGV4dC1kaWZmLnR4dFVUCQADCwN2WAsDdlh1eAsAAQT1AQAABBQAAADtm91v
2jAQwN/zV9z6tCkkDnSoCCFEW5hajW6o0FXTtAeTHOAtH8x2Wvjvd06AskmT9qXt5YiUxPb57nx3
Pyk6iSAIQLwr0jJDI4bSSjG6n4p7nL9Wdve4KFWaiFtMURoUqdwWpQ0sGhtoNGVqjVhZuxZuxghj
Cy2XKGKZpnMZfzaB1Bi4ESaByoO40BpjS8/c4sYGuFnTEJPQbqzn+/5/dUbGtpRp5cpgAEG7cdoG
v91onbVhMPAg2P08mK2UAWejutHrSlogtTC8gIMxIGNQGwOVkwyNakPufQuP6NY1Sjp+A7SkSe00
fSv6uHJiboZ002KSIjxKs98YejA5n0675BJJaZkbOoQq8oMbtfB3XlTH3psIveAWF0hzugsuel0h
mq2zMKKr2e1EUXQIJMW4KHVM2fnZkBqktyRYaJlhuLJZ6vlPxnrPhm8vZ+8nI7ia3Yxhcncxvr6E
k0CI69HslRDD2bBeaYWREKM3J33P7zkl/d4KZeJGVtkU++0ogmsyqHOZwhT1A0VypHWhe6IWIElR
benNi2RbqWn2f7CDVmh93XcRNfUK5nFROmkKIuVH7Tei2wGF9vxMGTroQi1LSqSLP2WqCn2Zyzml
zBYU7mydokXPp6LVoPFLScUT9sS6tjeparrKCuWwytTOvEwylStD6aU8AJWa58OHvKD5hDJiYKke
MP/obKh8UejM7c2gWFQ6rMpc/VDB7ryN45LCnzRIiXPSydQ1Y4AcgzVqp4NO+qmkAp8jjY4VPDl8
4xZqi7szz4nGY1uZ3JICkA9SpS4Mnr8rwX1cK6m0WO6VrrS7787VP1/LeIWiFb4Mmx14fperzQuY
XE1EO2yHpx0Yq7nG6XRMEq3wbJ9Gis+hfGFSaAudqCf2Ol0lVDVAiXaV5PnHBBlLUGWYWzBlHLvY
MkfMEXP0+xzVrjFFTBFT9KsUHX/PMUfMEXP05xzxdx2TxCT9DZKYICaICeIOA3PEHHGHgSliirjD
wBwxR9xh4O86JolJ4g4DE8QEcYeBOWKOuMPAFDFF3GFgjpgj5og7DEwSk/RvSXLX4Q8cXwFQSwME
FAACAAgAfBArShOwtqccAQAAqQsAAEcAHABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tzLWFy
ZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LWV4cGVjdGVkLnR4dFVUCQADCwN2WAsDdlh1eAsA
AQT1AQAABBQAAADtVk1PhDAQvfMr5rYXC6wXDTeN8Wzc/QMVZm0jtJuZIei/d/jYdRUPXonQBObj
8fra9CVNEjM9ySPZBgvYxFaOrQzZ5qu7d55BkGV4aeisgK1reLiHUr8vtnxjsIRDhhX4oBjNYhB8
lz7+gA77PqEVrK6ArBapZ/oO7VwP6yvKrc2qRugsn35Mk6e73a6AvQKEbGBbio/hrGLE/hBBhKWc
ZkiTZzyglqgAJ3Issmx7fZPmOrbFbZ7nGUsk+4oZIceWSuTsvEajazQjvfHBTNRmojaMGlXm0G9f
6qSpL9SyqP4GgwC3pZLyojTr5JEWoPjyTCxR83LOxuq+1X2r+1b3re5b3fc/3JfMr8sHTzy7Lf+C
G8n+ABTnaY77BFBLAwQUAAIACABkEytKWwRYDqIFAABNEAAACgAcAGh0dHBkLmNvbmZVVAkAA3wI
dlgGCXZYdXgLAAEE9QEAAAQUAAAArVdtb9s2EP6uX0G4MLAVk5y4cecVQQDXcZYsSZ1ZTgMsSQ1a
oiTWEqmRVGJ76377jpTlF8lRA2wOEInH57k7HY/Ho0vEExEjzhVqtDIpGpZ1nSkyRwGNyYeWStLW
HZleUmXdUP8MZADbCFuRUqnvpNRvWK7HBfnIsXgRJjViqhFgZUwTwjOF3h0cWJeEpL2YPhE0ZNY1
nq/HI/JnRqSS6HAbVVAPO+AsZW6KBXHNdwBQ83ckHctVWKgdwErvHRczI+scaGmfM0Y8RTmTN0T0
Ixr72jD8LOuKY/+a+xl8Gc4Up8wn80mSC2I6JXPitXCKvYi0WyCerEGO5NvkjNG5X0c0gBIJex6R
cuLxJMWq1uo2sKwkUxGb6CX4jt8r1B768lX05cv0iEv1fbpGleiUeXHm15peQUrEmIfgDgtoWMfd
oEr0iGAfMqSOu4KUiFLGdSSYLhESSOo6hp4vx1TSWs/0fInihbSOAdMlAiMhVxTrTVFH3IJpBW+2
ly7BIUlwWrt2K0wl781mrM94AykTY4rraRpQIgnyLKiqXYQVpERMo7RTsFa/MhnGGqWJVl6JPuGE
oMP2z84B/B1a1vEpFVB8uFig1omldQxT82noQpcRItEZj2P+7C6SK8pmEl1nsaKfKXmWaACm+r9e
ANJsAWnoPY0egiVBfaJHuVIByQrxgbmffMIWGygKBE/0jHXcWvtyYlk9U1N0TTcuO5HKqwy4rIUS
/YMaXx6cH+7Po8f7sXr8+/7Uf7x35eNE//uxcfKy3VN42ZjVEhdSSAYL4+5xy+gHF24l6WPGGfVw
bJyAY+IcigSD9yvOZ1kq0TAIdJUOr8gTidEzFsyyBkJwAbLdw4hoqd7yjpqrhiGdcZFgOAGbEWrG
qJmhpkIPjaZ4aKDmiUTNqR79NSIBEUR8oyDWY3BL2L2QMKVFDQRld0oZ8V+nsXlqGAlnO/iNFWSf
oOZtA/LSCHZRxjbObTeQeSkyy6UhwyoTJkzW8UVQVJh13nsnENxCflLGmErj5cvW8/0rzMIMDCAf
I8efVcQsRg6LK2LCkENYVaxATCriQCAnEFWTkG9+FQ0L7JCqyUhn5xrdj7CQYO7CHdrdbucXu4sc
Knn+WuFS8AuanLL4K3zzV7xPZfug3bZ/u4FpKiu0GXzOTLxIuxwZV+xZ9YsZhI1Vw8Y4iHlFnEIg
Uv7iF7dzM2k1VCl8bqr2iO2p0DPwqEzGaomcOKvIPYiRh6uLJGGRqqGRT8iRT1UlgPZAv1dliAw5
omp2GdnjO+TAQz2XI/CRhp2iFCOnGDlTeClD7y4+nQ7vXPuw3TkE86l5KYP6N93379f6vBRGLwZd
mzJh3/hcYC6HF117VKiZcdq1K0ly23dh3QpM5sn2PsTRNuKoghifQbavESroWgayu8+3z+zVdte/
IsA3gnI47BZ6J8PWh20OmmGf+mb/wX6BvQF5DpkJWQj5lOcOLJbOE8gJWH9Y69Xa7JSblbfjRQon
dZrGUNa1E625DY06clS4XGMGzOM+ZSGa27qpFXDuIOePPbPhkqbICZe79HPM/BjOHehrbOkJqtMe
3iHD41034MajbykJ7CepH2UF0lRWO9Xx9QtMFcR8G0ubStOa1dVY0wxsauyeUJgrkw04cDZKXwec
YvUaoC15JjxiFMt9meFTsZ0R627AdCIov9aYYOWvhX+VRYaJSRDj0HTh5tiViLPdKRlxoSY8JWyi
YAjTNWEr+q+Vc6N8OGAhHLv6tNsSwmXOR3CaDn6/HbjjyfVgfD48/Ya+jEe9/mAbONLKnbfIRvdn
jyXjn6lQGY51r4HefugeHb3LDe9t4cyEe7Xx5ri1xQd1b6w3qAdLQmyZEo8G1DO3bLmQiiQoFVzl
t08HkKveqiGk8P6PFmqrvdQNm/P2wXlwdP/kB3AJ/i8WtnrFfwFQSwMECgAAAAAAZRMrSgAAAAAA
AAAAAAAAABoAHABweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUCQADfQh2WJYIdlh1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAAZRMrSgAAAAAAAAAAAAAAABoAHABweXdlYnNvY2tldC53cy5sb2ct
b3V0LnR4dFVUCQADfQh2WJYIdlh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAZRMrSgAAAAAAAAAA
AAAAABsAHABweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAkAA34IdliWCHZYdXgLAAEE9QEA
AAQUAAAAUEsDBAoAAAAAAGUTK0oAAAAAAAAAAAAAAAAbABwAcHl3ZWJzb2NrZXQud3NzLmxvZy1v
dXQudHh0VVQJAAN+CHZYlgh2WHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADEEytKRSYdOdEnAADL
qgAADAAcAHJlc3VsdHMuaHRtbFVUCQADMAl2WDcDdlh1eAsAAQT1AQAABBQAAADNffl328iR8O/+
K9pyEpARD8kzzk5EiX6Oxo616+tJ8ib5NFo9kARFjECCC4A6MtH//lVV3wdAUnbe29msbQLd1dXV
1XV1ofrw+c+fj8//8eUtm1XzbPjssKwesmT4bJRPHthvzxj8N4+L63RxwPYG9HOaL6ruNJ6n2cMB
e59kt0mVjuMOK+NF2S2TIp0a7cr0n8kB299fVoNnj8841CH7owW5myXT6oD9uLwfmE+rfCkeQsfZ
vuhiQv0Robo99nuvkjn1WdqjjPKqyucwjd4PokFVHCzyqtUrknKVVWW3yO/arJqIbneztEq65TIe
w1iL/K6Il029DqZpUVbdfNqtHpZJGEYxjzMOY0Iw7D5t0alK7qtuVQA5p9DjgGX5XVKM4zIRXUWz
ZTyZpItrmPHyXtGpmh0k82X10EGM6F9u6z3RTjzv3iWjm7TqrmDlYPWyZFwhpouEU7Y7z/8Zegcg
emNYigRWA/+O00VSSHoDsWdJej2r5Gg9mKwkyTjP8uKAXRfxg8cnJdAnSwrex6Cv6DqKxzfXRb5a
TLoCCtHXb55Oi3iedJj9cH4tVyWdAJ3YT3t7kuUkun/ijxx4F5O4irvJ/TJeTJLJ0c40zspk51JA
m6TlMosfDMq8qPI8G8WSHsu8TKs0hx00Te+TCR+RePWlHL/gw6vfxAJxll5DJ3rHcZpmeVzBKnYB
kyRzV1ZtIJ9OxfUobr189arD9B97vT+3Rfu8mCQFZ6Qyz9IJK1PY1oX5tlvEk3RV6h3Z4/Tojlaw
rRbrVsggOwgDh+r7at4+JppPFJ3TRQbc1h1l+fhmYEso9gN03JOSShO+SDIg3K1AZLwqSsRtkkxj
WGPBzauiAG62ubTA5TLfhmfNKeT2sZp2cUk9hohHMMuVJBDxRFfIJ3zABeO+3NskPYEJ4uta1qM2
1OQ6mYTbcvJxFEsYcplMusVqsUC+SuIie+jOk7KMrxNrdgdEWr4mLyZ7pi64E8s4yrPJ2qVS3PqD
vdE8KdIAo4lLJCv8WAveEQ7mGyUh5AhimrAXUMdlcksC1fhGz5e4juUG8kk2BeIuVs4oah4BbSZ3
hqLbSyntOYT7bjmLJ/kdfyH//8VPP/00sOQ76RPBdTnooxQ0Q+9l6Ysb5LlBI5sKYdUgbuqmncUj
JbbU+oqFxbWapZNJsjBJtMxTUDJFN7mF3VeamklMQqkYE7YgljAsfpCI1nCrq4DqZiWFIo62BEme
df+Z53OPcevF/Z65q/csofjnP/3e5t/9PW/l9SNFO7m6wAfuG1Tc6nE9GeunGZD9L/c2EdQmU4Is
Zq+gDSmgPVA6/H+9/3jVbiCkthCNCXanWXIPIxqGiffUR2uUxa6WUIybwzxBpQKanPHWs3MY3V4J
sgGkaDoHqdnAD7YWCo8uleTe3u9tJfmjNk1qhhsaAqxRxYT4kAMDHQf0I26TlMcNPIfNQQMVccnV
5QuhYkCtldVmW0Da3z86Ro/6Lab+Ss4c7Ujx7Edtqm1q3EgOq8N0yGYvXQcH/u9HNCD8jqVnRiNb
D0L+kVyw/5BaXC50F7ZlOS7yjHyAw77wtLjHxVIwLFcLsBnAyoZB6eHOULWCZuMiXVbDZ+mUte7S
BWyvHmJ2Cqo7KdpCjsvfvclqvnxTnoNgbwEdnt2CNXp9VVYxMsJ0tRjj8rDrLB/F2Rk+bbWf8Rki
+OeiqfRI8D/xiB0Zz8hSAp6YnSOJDtjFZcd/97ma4ZZ03wF1bx6+xGVZ03cWl++raineksntNThB
pn0Xp9kKdHldI6RBY5t5Wpawpqfc4PcxKeSL3x7tF+UsX2WT8/z6OksIFWhTFSsH/BTGBvA10yTm
+ltazc4q2HkBOsHuS/JVVdNdc4xFStXm8Zn+s0iqVbHQbAA8rjjhzc8/X52+Pfv64fyslS6Wq0qy
g8Ui0ikCJqBGgo8FY0oWZWUxBidplWVXon3v1zJfEDM7TYcaA9BbafX2HjzKEn62kC4SB2ReYPjk
HsbF56Dry+oEH3yetqJeJNwY5FzR7Ih1903mFVO/wN4dtrNzOfDpQi975WpUVigBUVsRtHaHOW/4
ILtsv31pUxHfL8Nz6PfZOfjjeREXDygVOwwYMYcR2Dk4i2X/jOhR9rnUXT70QYvDsl8Rf/RBbAHs
HJ3jso+PBGWv7gpQTUVvCQ4/Wsnsz696crh3J3//+PaAnYKTM67yAkQ/i29zUIkAbLpCjoeZTxMQ
+eMEX4J8ntFMGXgtbFnkY3AD2AJs5bKn6BtapYv9y16WLK6h+5C9artExzYDk9BBGHsOKedxNZ4l
5RlFHfKitcgnYLOX4qcprPBNTzT3BjdftlRvEIhWb070j/aQYVjBpvWQwUrZCKzfzoRpEmYZoyP6
eXr+sExqqAL2CigUegk7huDzXp/gn+a2QDTXELrtiEKFcmAHLVZctWlki2QO2o9gSuQcdHq8yTGg
POHtbAjTvHgbj2f06kOKu3cG7JklarJvCjA8e8CuVY5BtJ7o0AMbKQv0cvHDXXRCHmELxJaxW8X2
WZUJi1eTNGdVfF0iOuzN159PPnPB/VrJJ75dSQCfCFEF8HqplFIf9Hspr7Abbi8tvTwgz11Bhn1Q
pxXx2B0BjLOxYM9eXlxHbd57YPVdwpZPETkJ5DVzO/Z7vV4/YgcsinRfxBN6ie67NLIWiB7eu8yc
cD8S8kFM/JEloISdWaFM/xnMBZN6lpzvwuBV9SCpp2lm9SOCWTy7HrAJUkzUnZ8JAgW/5H61kMAd
n3jXljdAb7nA5RBaCSjOQxBEYzDZI0NoSDCwdPRKTwWgsl14+hqDwnF1VN1XkSVWo8NJesvGMHJ5
5IY2hsY7cpSHEUyD5gpLddiHt8NDfCTHh6dcjUd8sfEBKnCnzZB3jexdVaFFBHQjm6jFeUburC2R
3eFuPXknaMjtiBEP0dXhTeIFvAUDiEZjFKrlQxLyin6KdWke0L0B9+QtGVUxhS5aIArnIK1Ma4SH
9j6kixtYcPFeb2P9tkcoqhX1I4LGAtswNYj/XSXFgxLPUS8ExOAgoye+O+ZBemS+aNcbzZ6n6inY
G3ep6gDOVhYvy6S+i0nGda0FLeuQRVwHBrVBhGsL/TS/Q1Fk6kENpwPyDGOgUdsjnBHRN01GH7qm
0moJ/ISToMg/t4L99h3uVTgkCPUtsHFayodqU4AvVybVmwrEDaxr0oqsE4fI6sMx59CJ58/FdjsH
T6FoOVjEyyX49O/PP34Qmh2P+TzzKV2USVG9mfwaj4Go2FrToKZBKxolIIqStwvEj6AGuEZ0hl2N
fVCAYUsbxWZWNHZdsW7hC1O18nbnFDQ/IhJrq2Mj3qKum3CRBrZALYHs+8vq5d7+D4KHa7mct29k
RUNLbsqM6IIaGo1LXNNc09ZHcscnPMnHK5RhvXGR4BhcorUMivKmhjyDSZqkGJhAj5Msa4I6MaBi
2x6IizOYllgni+RvwIyjHsKGGGidy8dHupa1PWWUHzbIjckdaP+Yagoh0C6WMeGCtcjvhOd7A/jr
0BxO4sLS3V3XPMu4BDdaX6SXthXG3zl2TEhik94Dg9GJuYSQx1UfBOIW+MrSxzTQtS9tuIKM2gbr
PNqb2QJqmc4EcwYApCbC/0zRw9e5I3q1B4oNhQkl2It3Ec4A79OWUXC9JZ1WuE3EsKEtwluobbGV
9KxvZ4glWI3/Tst0lCVvLFPE2AANQsQ9XEY0dy5ZzzJrTH31vGY8k0nGWRIXJxjyv42zlh3DsbhB
tjEWfYPW6FWu5EGJL2OMOOIGIxtoV0YorbU1SqBB1ZRNSB32cm9vT5nslnYsHxbjFv7ssLi4LuWy
AqhzHndrybYtQJThD2S/7KGFBBCdBuyxgxF7h3lu+SKRC9TKl9WVsnBN7tER6SNmNWL/+pdiIL36
+SJ7OJvld19V4E/GNlttL7SgYIVEKm4lnskiIbWjkArfFFYUnv5bpfxKK8a81UTCG6l2HqzGSK6b
WwP4Gki+/QKtLRMm7C6gpA4RJqR1Ogy0jOULGHoH9BH8mysgLXGJnX17qsMuDCCgji5rzPX/O5MI
ORBrp8ED8l/LBEMbNsuJlX4ejGf3zGDr1SSlvfc8y8c0LgicMx4HaOtoyzTNkoN+n7v1ezYaRjjk
L3GZfImrmUXJkXiod3UIcdeuKBKkeY7EDE9CNtByUw6ExtqsqpaAsBslCjTePdJjvWatqA9Ez4uK
fH/5oo2xi/4I9Bf4BTVAIhhstbjpW5EgMwIUwnPD9QE3vm+HPzRRLXceeiA9rVi8ikHEIoRAR4Nk
t6ENw4MewUXE6AdGyCmKEBm/Dvvx8LBEE5ZDpMSbfDHO0vENnuvh71Y1S8v2zpCBc/CnP+8f9rG9
G38QTfEPk2U4g7xDqJadivh9im/T6xgEFqX74JOW5SPhU+0WdwxY7TCx8DiKb+y/kNQLE8+YrZ0U
paYdiKUIEtR2JgE73BW0kSQShNYL6eP9fxXnULxZzeMLmdywIqsp/S0yKstaRjWcGYNVNSgM1hEs
4lAvGGa3FCwsB5VszByOTEuhmN8K9dqSehbMn3G1ijPrnK6UzSyfBIUcb0yBsLP/OvkSuQJOgqWI
PlcZ9LtHB0atiJlxWuzAAcrm/FewccibMzrXeXP2OP8dZ6tEjUMdLcfOCMDpaSiFYcAQkWD2hz9Y
ffG/ms7RuzcnH2QEGXST14+Z8InC52//fh7BEMx9cfLxzV/f7ta+psMNcALb3hjWyhoiqOaYWTd3
zq/4weJftZx/By4RMubn0a/Q3mQmkq78zJe/7NnnJcYLcIquSjpCb9e5DfZJe2+5KmfmuMI1tDuZ
WQiedrJegsVAx8RqzVDhavvgmc1M9qz4s4EdSzK2kW6pnsJw0Zc3Z2eRpkZYda7KpLxKDHl2haaL
JpIB3FrhDba9EXWWswIO+nhydnby6a/W9tbnafP4JgEZVSSsmsUV+v2YfKqyFImU5TKFP0H7MhC4
XbGvq/uKIea4mU24vMsdrCsTI8uEjV4NI9j5HgE+aPBq9Qqe5zfJoqyXOzwEWZbJBHmOPNHP4PII
op4sTpOq0GKLQ7vYuyQSOrtTvNznL2kDR65Y1W1UN82KxCjiPBA5p1VjBlN2m7CykkUM9v0Ewa2d
hmWr2qDtNJ/tiO0wFs0C8VGb4Ll86h5qWy04wWjem09bbGexM0BlUtYFfabhqggbaCAjp2HWj1vM
//j0zdn7qJ7UOhPrm8h8fvLx7eev5w0DmSlJGw+lhJvDH0Z2VACWfzQno0OmzSFjoE1+fDCepnrj
2eI6CKph1OjpcmzCTq5j8aQiTsi7eGFi+mTgyEDQasEV4H3lBY2VEBdTddjV7wNany8/7+CYNPis
h0fAApOm2DHakFJg46G3G0reABUH+29FRhmRDjqBYCAicqqj9s7BNUV6q3lmhfZFm445EB7Md+is
l34jHs/s6LnTUys47Md/re81SadT2Qf/bR0Ch+Uc2kg8ieJqiVk/2gigie3WzIx34QNiQxyRP2Nb
DHyHbTcc8c4a684aRZiX/jEi8YNQ6nhwYAiSDjO9LWG9MPdgMYo8g0arUK5E2uGMHISuEtowEu1n
uBn2KybM1cW23aRW5UQ52z6omVA31rzSE3l+FJqFOIV2VqQpBvLF4/wuGFaUTdaTrqYiQQcPC6dM
NjB9s/DI9giGRDF2yBrh8q2EOqol1PcgVh2NeD6mS6BHb2Y22/iZyJvhbOOG+6xU206ePTqYhEi9
CXBLEFvycbA1rHX8YBg35jbF+dnuFM3xCp9fLZNirE5atqGYRIOgt3BZ6V+gfH7fjtq+yqkVMdpx
ei7iA7ZzdiUclyvC2jgj2YpaS8r7xaauSAU4Tu4l2O7pApx1zFIY5XEx+Xr6Abx1fqKlcStdnx1T
LoHQOzv1h+lGb2Uq7e6m1mmghLRrrhkaQSIMYMnEFKnmQ2Vd5uQDmmB3OjuWKSwDbiJYbnilXanL
jETJiSRL2VekulIPaSO9gJ15B+bj6WpRHqEk/wO5GUfIJrDR80ny9fTkOJ8v8wWmRkjcXMsXfZLT
/M4Ok1jhAqHCDnmU9xtjAoKjIpmEh9i2woGC18ZOppxRMrt2omCQ5luUlY+c1CaiK5FXngmINsPD
qhhKtS4fHlYTK6QcDB2b+ppHRrGXEccxQqlHocR/E8DAH9/JHGqICtXKC4oSBFSUZ1GYX8B4mSIC
K9f41dNrex5cCBkRN/Sx2Vgv3MW3pl7gWdemAN1Qzgk4gqJbQzHtaiQKApEG6HYC3A1KhIU5Idh+
ijkkJ0rZ6Vqkrx8Sp/WkEQVZ7LE2jIz1fyl3+4bbPeY5Ylta7SpOZibEECgnWqa/SDFExyZjwuxg
MydlP3JsNyfO1nalCgoIKVpoIFdqbCuPMQblshirl4dybMH43zp6/QANfM8PKF4HI9ZKOVhomcAP
Y+NQq9n4uNAjXHKNM5yB3syLBzqJDY7QB10Af6CCHNpnx77lwz8iobNU8eVIh7JzqiJJ+L/86AC+
E0k89E9YvjDByQQwosRSi2iwFN6XE1Dm003ygB+MIXDXA10kd0oZCRCvWUvnvBM3Q388t4e/bCkh
LWgJ/AJaXIYOwjTRSY2IlgPPvDJ0H6aKSdwGThIj0bUmLupnHgbXRCHR0cMEM72gN32IeoxBUid+
KBYuvFg59roa826DjRbk28hlLU9NlJemUhN6tecN6l9nWFFj93SZnvXKfJ6oXDeuODDhTabN8KMt
faTHHoOZkrg4GezD43y1qDSR5UdcTdFVkYNB32hDZ0xUUKl39MRleTNxzsp3oNbkkN26J8Y4yLHs
V9q7YLOENLlmGgoM/9Q8Oy8f7WnQIzPrlmbvBFVtkCqRmril7bp81wh4lsSTpHAT8CtxDGplNlq0
1/3kAuhYObEAgTCWlnOks7RWtottrtYkvAiwVmpLYHrSv3pPaL4HB01g7GVczPZJ1/G39DlUy0wA
cbhVZn20D5hSYi92jFygbgwGgUoykVQWmSWULAQNuOrCkQdBrOUsOVId7haeqK9I5EYuKmMjxx02
MjZyTFKmh6ltWYJ+JyxeayTcnMe24d+IWDd9qEVanxKPPVlCbhzHgw7b+Bl8lx5F9LGbTplxvUSs
ecA/KOP98YMy85Ot+tUiM4K6KTWvj5jjyYSBfNTHhFO+jzHLcTUnVYDUpjaUYYDrWKIM2MY+Mj7Z
49jj0QudlJZy9l6wG3DGCYCZOBviyGCNzOiHiyp/0eetPTvACaM0fo1g6yBsHThmqs+ycLAnaWOL
zafZlBZcK8xQE2dYy2YNUQhrMAoJGC74FstownHz0Uxx7sEjG6JLmpunOKwFHU5na9AaLl51AAKr
qhwX95TBmIFN7+DIhvMYqoOAbiSHIt1I/itaR7wNF8NxN566Iuypc+OwsvxaTo8eMHiwdoYhNH77
9+Kx7cLF82WWqIWjX4EDGHdiIlGgcWpabqMBBub0OFtNEln2RHizfQqpy+ojsHQ01l0iXkM/zBmi
lCHZCKWlBMKlZA3r2HGvEAWsIH5wizzfepPrbffv8XrdsTzXl8fzzCakTtVH0Y1nrVVOCYqqvoJj
Prk1GUowexK7IoMb4S7SeYt/be/A4g9BsSyzeJy0+v9z8Uv5y328d7n7L/Wv3/UxwVl8lwEM9Z8r
rGLCa5dg7VViBgy2s3m8iK/pM8Qe1UQ6x0mfgclEbsRvj0A941HvCjrewSLAhER8vby9ZlSS6WiH
16aiqmyi5hP+e2d4uMyzh2tMdcSqa6DX9jp7bB//eNXZ39uR3UEhZgcvxuMxFca5vaalswbHUlff
Y/R9Gn4fx99meLQkk8mxTA8+0ka7NEBjRMxZL3pG1h2ZdriuvLnpk7RVA2pO62aNzd1Jbvgdy29O
LRzA3X9vme7kOEB3/rTp6zvdyvyuTj91A7cmVApn+M10+vObrIC3D6fJLbhalEmpu/PPZ5H9e8Kp
K1tRIVq64pkOtVxwflpuELqou1IL2zMfaiGBMR0GEzwINkDYHmj4xeDZxjPx1+zJBHh0PjwNz9ke
0OVPe3bam0UJS1+bcl/DDbWI1zVfOF/wTpc2iR4D2xJghDcDfmErOcXx2wmIuS2uk0p8kv2XhxNa
Zf5RqlBbxrfSBJqOjoTc1wBDU5kpr1/uyWPueR1JUCp2rDeT+V03n91mg/EAiBGNd1xg6QGbOcOY
wQorD7uzylm5WuLnTSxL7tNxfl3Ey1k6JqxJbSxgueyvDs55Wl4dP+CAes5OAGq0rvOoprOVSs2V
Escx+V+M9t9iAn/JRg/cmyMn35NhYhXwpISjccTxCX7zwAMtFJFsmumesxvFJNf3Hfl96UxN9z3S
gHyxJ3bU3iBUn0oDOTSQeY1nE6pUaMCaK4JCVsMEkh2KFXzNEJRZXSnwpXywn4mDCrgEyw0gK5ue
vRUXERvC/BQeO4Bz70srawcaQVV88mk1H9k6VG3JLWRFjRS4MMcQUQdPllkywMGcx/mPMWpmop7U
4QsuSlwArlqra/lOMS9VigfRC2Yqb4UfNWi0SjawaqwB7KQObUSE9FS9DSHlrrQcFaDXrMHCPGC1
tu/AUZa6pMsRazAaTcWk8DFnGdRsQXVGtMd5fcFs/f+X53NtshuPMBXu7vPi5ySjj8J48Nh8f4XF
e9/xkohH7E+iNuoN9wH/hkY1PP4JC5wbz9+ThY3t8QV/Q/Amdj8LzB9ZzbgDH4AawB6wAYQ/KUr8
OzZORRRXroqsruRAXY0W4/BEnz9Y1V+oCLJTg9hKkEkrsjdgcF6BsdX/pdu6+J9fupd/bP+C6Wh9
nQlr1NHDel8b4UVNbZzoUWS+NgWkAxMFMhYDahGmbW+2ZlcC5m7P1CX4BkjbfWzsw3Wdo9CoXCLw
HPmWCVokxwPRrYfo8/XuJJf6rAvu2PI+8rvMFF8GuLWuE6/CjTNy6nBHQRqYdOapjU0rYXc2l8Qt
VEESw9olfFmCW8RSKZUoGmWXmhK6RX9KPXCy76pQwSi7KBVh/3M6nTZXLYovMCT0u6Md3CY7l16h
qe+zg0PFzF1uk8dA7nOrCIsoWufNxZiIkVys50MhNBeQe4Kh0iO8lk0ffwyMA9EQG62RnkbqhJ25
3P6ekI3M3LafZhcyCm3+CZuHT0PLhoxJtlTPSVqoisu8CkxjZy9aA02KGNNfRV0l75W5A52N7X7f
JfO2jsOn4S1eLnPgb5G/YK340u8OzEOvgKPAwISpnQIgR5aSOMM6+VjX04EoxGmfvWRde9Iilfzv
oL59UduuFZtVvgwNI0Rw/Tj/cMfh4lkPFKL8G8qE08WNtsjU2OYOBEzj8Mb2mYHb+R/zVZl8XlVB
uUyfdfboCoVkck6SmL4FtR/1zAKqJ+9O33x8G7Dz5YHxydTtz9KS8cpOd0l0m7A5ojShg4V8SifG
ijLNwtiNOQZlrSEGjdpQGluKYZn7q55sH6GpTTem6WatwFw2FxWu2nbVMFn3qrmPkVRYpyRrplyz
Gt+FkE5lQFPRK8xMFahqGJqg2Gvt04s+4BnVztIHYGSmunhgWSHnWVCMuRHoAHfUcMiab9c53h9E
ZSPDY24Wh2HxRlQdU+O/g2yyYZPYbIPYch6T1KyH+g8T6j98qCAkA0C5jDSY8rmmiUPKGl/RjYE1
sj8vNheqEOfFqZrsz1bifrPUwZtO2qGYVjBotTHwmk+xG1S12n/xZPIWbw3CiEOCcCOiBjJeZMt2
RxrpqrjrYAER60GBPtCQ+JmdmQKmTu2svDDYY4mlRuTS2M3ErW74UFYHlyE9P8/sGnSEyH/DER/d
MTnO/5U80BQtWXxrlI8mPYYPevOkiqE5CgX+oJyl08p6Mq6KDB7UyMzyLgW3mrV4dbLetMjnx7O4
OEafVvQXPy2BgldJsiiNDiw2sydzxS+qOc/f4Q2VlGLnsOUI2O1m4AD9dTOgn8Dz3hjmzWYwv2Bp
MmCYjeFmm8H9EG8x/6QZJi8bday5biOg42agslLetmCrZrC82sK2QKdbAn3HN1YD7Ed/p/nMGTJl
caO5/ZLKnNCeYYzUjODMvx4VySYhTGRVYC911jAVmjHNDG+Pvmj8fojLvbgZCX2JaX+MsqkUUelC
zfNeM/jud6WEKUH+rdRwRcr3Icb3YQsDrIjqbM3OIg5HTS6akb5cg8Jb804EDxExUPMMWu0Nb1Dw
EfHEdQiJQPX6TebTaofJ7wvz0KDB6xW+YVhPLocGDZRG/J5DClVQx3GV5sh1C95YGlPC6fCPWvQt
Hc6RmjD5orbKKhNpiuf8gF3an/yTg0VUsZtFfsfixUM1w7u14hE6CgQFjTN2UommWAFvFI+yBzam
jwIwPzFnmgIFQ6hgBhOc3rPwPKysE/hNldGtDyAc2omgr2rr7QpVBDVq8+M9PB8Z2F/9GuCdD/U5
TCeHRtGw6fsNaVdfSCwvAc39mpuCQkPJXJ/AaBOYXpVsNKjlKtsd+LHtO6NbUHb6zep42cAAiTzK
75vO2q17KK3wgg/HDZ4bLbY8qBJ3NHq9eylu0Sh8q2a0pq91/GDfZr6uq3niHB3OXg6lvCBKH/bh
yeGy4PdoWhTbkRVO305SmeMKDc38//rgdggVM4v+O6ykEZ1x3EyR0n6TPPAitBbnyu+qjEc88clM
AUiWcSG85FqkwMfuLpI7vD4QcAKXMRnf8MIOvyzoYwoWeUOJuVqLYmHya54uWmp4gdJGdDEjaSIw
Li41dscQ5jAgSmjincZR0L6zzChXcJIdso2lrjqxQ7Yn6wTyB8MjZlrqXhl7UTVVBzwttDY0mFRM
UL8yQrj6YUBCirfqe8G10RA1NdHhyQiH8SIl4SIlcyUpc6PeWl9jrBjBzm2MBhKrul9DsLrI707F
V1WqeXMQFUwI2Skt8bthHuQE8ZQXk5K10l7SU3dEo01wmyZ3mJqINbtz/NrhV8xrv4sXZDHgZ25Y
JxWPjeAnnk2ISYlbhtU1zL3ACZ4k45K+AOFo9eS99jat6j+MPZ7FiwaTzeaW2oi+wQA6fBti7sDx
Tb6yhxklY9Qu/EZtum4mqUzSKL7sbXQRBZ4whVlXG4q6kNUT3WArNRXWIZ8vV57R4uLvXTlUJ7I2
2udcasmkXJP4RhCmIYwLKgpUallGHdYUFDUCufrTjyb6245evQrT92aLxEStyAbO5/CIjx5KVgEh
RlbjfV5i47/xu3XL+Fal2Kj7hRw8a25+C89mk2mQ4ovaThZ9I6vqY6tIF934jQnlecBQPw7Yo7zZ
05iP+9V+yH9aKwRaOkPPJJ+Mz1skvcLCCXj45lR+psvmwa+M3A64BnVSRvRpLt4qrpHES6vNJAFM
GREY1hd0FQNsVNGVt9WdrI9tcbQL/gKs6EvVSrOqPp+hbNUzQJ/yA5LqpErmLY+IHfafZ58/9fg3
Uun0oYVDCI/Vakx3FtVREG/nRiFgDnldN6QppbGjf0MdEJz3smRQzYGkWAGaBliLZdIioO56TFBf
0uTcErq4pA3mbTpxSiKJ282tvHN8pAzfI75OsEDmeoSm5u958/3mGRUvBLN04f1KMqlRI4GjDHuZ
I5ovxkJc+WU4uHzjhSC/lsknYdevl2wberzBgXjFye1kqH1/XZiabhvvPhQ+fJNzw6NMXVnL0t5p
62po4jGv8TAYC+GvTK7cYMHJDaWaIC9ETS6eSN9mulrIhVPe7rLNvKxAujHkNimq81zS6r2oqqOY
R9Qpcmu9isJHdZWFm8qAPrbtqzX+TbNN59cXZTHebLpWbmC77p7pDZCtS1g0xv6UL9zhNR23pI1b
lrx5GKOsx6jMM7AS7RtkGldZXNVo91QXxoTW93G7yxJh753auS3Wxe8CGX7hrLoum+rz/5VKOARu
tg+l17ADcf+8fYHZJozxTjR3UNJfbyC6joJZFZgoV481vcCka44WZU3aGkcnwNu5pL+L2sF0njo6
hsoImLB1Nunvonbomy55iXuAznV3JptB4doPN+sQ7uXAZzI8FFwI93N7qkPTbi7Tvn4fPmWZVZYx
LeJGicUbTdvGKFQv3quHTNes1fRqqnz8GLgtQVgjH8GwsPQnWRoNetO0SCR8/LcVwW25T/CaOfK8
RT8VmzOfhuwIyvT5Ob9z8j2f12XdvbDx44mgIpEtFeUYRAvOvH6ot3nGdqTaQ39dRtMEpoK3YtuT
M9xfXXDLuP+CPoaSRZ7oo5QOWL4WQcx6P154MTI/v1nQR3f51HfYKJvcCJLx2sLv7UT/zYoNGQcz
Jhisq2GWLBafJZpC8bl8bhT5saVh/QR2dz03Yia/AOT1quzbcr2iVUZlJlHf68ivUyVoabQwqgZb
Ran490NG4SpRm4rOIrBPOuHFOlT5p8KqcxVZ9aDcNwQFZa+MbXQ5SjtD8bu+F0/GdrvxdHqr8zfX
CDWohJMRNUitalZ1Za4ChMa2W5RFEZXIAvVQ7KmlvCoNXUlUU6LFQULgWdYiKgqrWHW6ZNUUWTrO
3hqBUisBzwc5yhLY+JTn+dVWqsQm7lc64hu82pvY8b2U7/TDvY6FX97JD71PZWmdIp9T8Q6NlHPA
g3O3ztH4FnHtRRCYAOFLbLiN1vyt0oH8YsvQ7XG6nV3i069mhxXp13B6ildIF6ulJY9kmZydw6UQ
ExGwGcxvgreXLdClSeIiewAVUZZoyA8RW1ys5D5Fhqe3vcP+crhTh4BxfZMr3+3iXkCGup6gGvnh
IV2uxouWTlQRKJvnB42I8AqjT0GEesKQ9DcTi4E41BZIkvtKAPdVYv2VUR0t9IyJYwss7gCs3Kfv
Bfq8SDbV8VYFrJ86vn1/XBiDWTwBS1KXIJRVqVoq+WOR3LURF8slblgV69KtLdfF7GuzCL6hz1uo
3HmoXFc9Qs59itviZHfveOTj5eEQt+XKqBf3VKax7qEzFu0dvhCVTVuScWYJm+JZDYPdzcCIE1fg
MbrCFS+8Q3wCeuSplb7Bfl1/i9yWBA6AUERWfFnlRDkGjo6YI90RYpXcq52Uef+l6U/pomLLId6k
MWHxGKU2FqEzCqTyh1eiVN3O0P7NNfjSMmy4cSOBAjOAkWrDpGcapPVTQbSsx1qHYA4uXVekjsiU
KOHUzZQmFxpcEWjTghkmuTYusuE7G1RPFg/dwjUztMOhTgKDZUFae651/vSqnpbLttWJXUd+v+/n
fcjkjgYcnXsubKTq48O+Xe2dukVrB7au7HIjL7Vjh6zzxsE3J68T9t6Cso9+5M8/HgycGNBJu7TY
/KMnHis87JfjIl1Ww2eH9IV9vsjyGPwU2xLcGWojFr05WR5W7EUdCxQNVTtylPI8G8WFrL28YyeZ
uT1Eo0VeJTvDr2VCkj/tsF877Ibkfobl2DHHQmZ8gksO/xvjE575S81kPm6Hfk1JrGbxNZcPekgp
pX6Nb2NOiYPbPJ3AlHVtaA71TZZZibZAFDkcrxO9HVCJXwCsfLUVYKC0GV9xr0+3ok47Q9HUhi4X
zIy7qFUzAi7GklE/YuThIT/3QwC+KNlhWHUSZo2HPaP8HsCKsz15dAYjNCcC7AypRpiGrf1ljsAa
pKwNuDk+ofO0naE45uLAGhDgHtzRDjKyzOhj6QKUBZhT+ZRRLUxiZpGZl8iEOm7/7FhkNdICt52A
dfLIN5aBjxoUhcphn4Y0GEPvGfHPZ4pXTJW8M1Sv+1TX9Nn/B1BLAwQUAAIACADEEytKEFoC/IN1
BAAPXRgACgAcAHN0YXRzLmpzb25VVAkAAzAJdlg3A3ZYdXgLAAEE9QEAAAQUAAAAvP1bkyu5lSYK
/pWyfj3FNMfFHe7zppJUXdkmZWqUUne1jbVtY5AeEdRmkCySsS86Vv99HBd3LDixPiCydM6cqd07
U+mLwMK6X//v/7a73dR/+//80//9327vl8v5er9t9ue3zfZy+OH1/nZ0/8t1vL0f77fp7/+/4Z//
SQj5z/8khRTqn/9Jien/5P/5z3/+p//2fjrszvtx83TYHzaH0+183N7HzWV7vY08pG6BZP8q+gyk
AGj7ur2eTzwks0CSxv2hHazd+Xi+ug9229OX7S0LQP/zPw32GyGG9p//Sdu/66GN32+e30+7++F8
2uzOb5f3+7jf3O7fjyMLTC/AzPRX40E9nb9tbq/b/fkrfwq5fCi1sH+o3CksUg+nFxZKS6BM/zff
5O1yvh3c4c/Hw37ztN19frme3097/jxdhNRYUE24Svx0sz1NoM7X/XjlwYgFjLC4EQG59/Hbnf3G
xJ/uGvvHRGb+Hqf9waJh6z/7qnbu/93eNwsFN7LJwrVU0g6OUix6Re+IzlNd8n2j2O+1Wr6XvT1d
bx6/F4L/fRF/3773hJHH76Vkv+/i99JRbUBm8r3iz29k/N793eR+nz+/e4zwfWu/b1UGfz2Pv77m
9/nzd5LgzxFTl7k/f34Tz6+ktH9kfl90/Pu15P4eCZnvW/57Hb8XDlaGfpqBx1+kX9W4PzK/Lw2P
vy5+b7lL5fAnePprCf20lv7aHP3x35tIv0pZFaJy3/P825H7q8b+kcM/j7+2J/Rj+X/I8L8A8oPQ
v6Pltsngn6f/zhD5Y1XXkPle8PTfEvnjhOQwZH6fp7+O0F9raaHN0J/k8dcR/pX2LZTIfM/zT0f4
x1hYJnN+weOvNWv+z9CP1PzvK/K9/f0mg/+G/15rwn+DNYEy92/4++uugn8Ez78t+d7bTzn9xfOf
Jvyr7F1Uhv8bXn5qsabf3P3582tD+MeZKLnf5+lXE/pxb9lN+HOWwfP5dN88j9v7+3Xc3Mb7fbKR
bhv/b7e7cXMdT5OVwhlO01X6IZqjQnXuT4/cyUjefNleD9un47jZj8+HkzNBWEDRrk3suOPhNJm1
13H72X0U/3Gzfb+fN6/b4/Pm8/a03TDsLxf1K9WiProV6M3xfL6NERgLynQLKGO1ojFyDcof6/vl
dTzd+CPpeCR382BRPRzpcp0w923kIfUiQjLelheagXW+3QvACKa0s9R0MNUIsNv9ethNlGdt2c3b
9vqZhyeafgEoBuNMN6MLyN+0PPrbeL7Fwk2Bnc7Xt+1xsxtP9/E6Ge6Sv6yKZxPSuD975rIV4IZI
GoNVMsPQM2crk1ngKgurtcZH23GvUH5T0cSDCWPFt+iD/H54g4prmoZgzSr26U/BHK7EBaIhT9Ba
K2/6s+NuWuIE0ZgFmjL23yiWFSaf7rp1jiEmYBMfQnpGzXCq4/jyQ3TkeNr90TJXrT2daCI/iN64
pw2mASsn+eMpclVnqSiGfg+n2zj501aw82cbolxSqjfuz4EBWCNKBnJVaQ2C6c/8S8xEzIJqiVDq
3R8tc7AizQ1RjuvWKofpT47ta1/VRzTC8Vr/Z5u9adVDdC05orR/FAUw4H5ytslidX8ahsVqDmfi
U8hBNu5PVppUKAjRRLLrLLxOytJtNX+6+LqdtaE6bUoiHZghfbcW6j2Wwvy54iWFdkaXVqZ0Tf5g
RhGc2WtKU3wCoAcJd0n3JpNRlyXfGrbvogBWlt6ULD8BTx49IbfGUlsjGLQVNJcxRFgq6f7UnDSv
YQTRRFqbxKVxf3LysqxrBiLMhbupaEqmEo81TbS0NW2mP0uGEn+yiLnJU2jcn3kbuih8u54oVOtW
PhoiKx+BZ/WOmNEu3NQyPkIN0faSmNFOIulGlVgKkIYs8qdXB5UKpusIT2n7R1vkKR5zfXzQzt61
K18VQAvE6qWkjZW0qvSoPLt3EXHKGoeq6YtH48XkEEVRZ6MAneoKJ+OFZEvsSkcgjSo+AfBkWqqV
27xWTmwjdDRipkof8eWOVhCSQ0PVVOP+FD4j8eUwfrVxi81lvNozbV/GzXE8vdxfbw5S7n//Ml7v
h930u9vj4eXEJUGUGEjmhASrwE9uJqg7HiDJDVmC0kVwE4DD30ceYB9zXTaGIOZ4idogqF/ett82
26fb+fh+54E3Mf8knHjta8F/LQMXzQJcWRtcBYOo4uyHU8XZI2KE9bzmsyPI29P59P3t/H7bPB3P
u8/80WOC0Uqs4MXlIB/e7J/4BWPqUyrLLzHmVX5D/vqGPJ37w2P3y2uRoiR5F+H8y8rzvPKnIWTv
RZSsJST+nILAdLw51MF8Ge+/oPSxakgyurcZh3q65GEOeXKswGoFrWsC3AdlirQe/pWjzc3u9XDc
85iOYsCa96ZGaB0n4+HL6KO/mNwiodpAZteFNLPFy9t5fxuPG9WxgV4VI8ZW4XtKfT4cJ8Xkhf/7
KZh+jBU5ncDHTx2XKBu4mP6FAzM+P4+TOn+6Hl5e76fxduMgSG+jeT4Tq2NMuLhsD6c7+/M+oe0+
dpUU9Ldfrtvvt0mhTE7EV/bXvWr0vx6rOMKv7163p5exeAipAYzr+MIF2+cs4uPtww0m5E82wmln
w/bH8T6R2nV7e2VheZfbw7IKJ4gJ+80mnGZ7moSqs0wPpy9bW0nxfj2yyPE+n39cG8VLnvZ82e4O
9+8QuV08kPVWhszTevbZHLffuSIMh6Y2QrLRyS6PpvHbBPm0PfIoQujend+eJttqz5OqTr9O8DH5
loctwMasq7xCsSLXff162F8O8/McbpvpaW7vT5eJ6Zx7yadqLMg2Uu9g8/lDm3BPfG10LPLI1pIw
BMJknx5O1t7kGdDES0Uh8vru2AZSfqtS4vJfXse3sxV9dezfEYp3/nBwh2fpc3y/so/pI16RpNqH
x+RRlmV4+2vzwS/Octldz8fjBOv4zLMYIQrHJvn3e76e3yZrHzyEiNexPlEoTJiPcz1PimZi1ooa
MCfRKE00DtHZc/EAolBXLoSS59elrotn2Ejh3ot3gPbTfUI9mnvkzXW7P7zzOsYQLdW7vHvCJxOC
J6K7Ph8ncBM/7kdwsYhm6QyzJhFFN5vA3YL7iIgYa2s0jyLaKx3+Kg0g291kMUyw7rwE63Lyj5TX
7d9tkrn8wrKLjG/D+G0i2z8qxyRVFFaMzHVVKQO4zPXkd06a6328bb4e7q8bX144/VfXwzf2sG2k
Z+lCj31WFQWKcroImHVO7pFnoM7tWrlFzD5vj0dbe1hQ4oqgQi3vSwQqgcnLVplTlw9S5W365sA/
iiBMY2ut8jw8fTXevTypNFMGQMEUrtUE+83X6R3GyU4+7S1hTrDO75PJzJsKTSRMGdxkevu37W16
guPhsnF1n/ztCRhf6mHy5wSqtSFiZ7DVJ4Tba+wvI2uMQ17WNLmfz9q2NUQlVar1EnwQicwLnyFH
2rY8ZbYlHUfXgDLkLIOIAj2cZkLupO6gaUpUuDsWxc34dpkOM9Hym3XyMDXLNmd0r80YVLwjgpKl
ZpTmxRMvkiK1OPWrkFXCy3UNTrISHYj2ZZMzK91nl+OMmdvMBtiaaLOP5cXhbTL6L1snHPjvhxo/
5FFU80La5Ky2B9HgJIyVWkhGRPpxFaUtw1Wb0/jiwwIFW6enFopx8R0H8nZ4i4ivIUmVs+wzBwNc
1hveuvUmwpdJpJ/PwMEnmtvZXqHiNCI5XOj9sretFhPM7X2yBZ7erR6CppRqiQdgE30i5Pm8gH79
urnZ///hvnvl5ZBIL8j4pdvnO69q5EDOMahYFXp+fp6YdRxPC7e8TWLl+n3zftuia2Uts9N4c6Tt
IPHftoR41mJxZSZdz/ct0hdaJP6uGB4lNI+SNlUVOsoyq7sv1i6wumI223lxJog1oGPJIe9hQV85
HssagIlGnY40ixDL8vvxtpt4bIuCV13OEFohG/mwSmlyO8sha+8XMaeJdKJdbX60NN2nzsrmKYUg
Vrl6XAm94Mt2YoU7L7Y6mXtx3mOEyp0IDdeDQxHr6SYYHLYByBn6V+Dz6az6YaU9L+qz4bCHSCkU
qCLV8Xrtv03HOU7gQBCr63O+wXa/r1YNkghOR3aJanh9H4No4N8nF7WtMvsiBlt7+DYVuHMAD2IQ
BVyWOEnoUpvNE54BmxwPrbxxeBwicF358aOw5l2dduXNy5x6DWYsT9193vdOhO2TZZXJ67qfeTVG
bVhaXM/glscp0RvWbxFa5OkLigCZC9GtojRQ1AtAJ06GTG97uj2fr288atucdUBtp0SJFWJP0hBa
cREt0+UQzCM2K2LdE1taX44RJLY7mw/gTM6M/S/myP8pSHOeFMjFaWHn2pCAUVZFpExsBc3ECU7b
NxBA7PMGwDpJxFOSSIRVwwjt3XH7dsG2vjRDjtl5WLzUaID3mrNpiu6aiKJEtassAA+RB2dy3h+T
1uLfjhAszcPn7dEgq3h6iti3Gj0ULf8a8ufpviPq2f3hD3x7Pb8f9xPibIHTlzExFF20kffCJHAw
ghXDk67J+fLWs7UyyH0x/8OGSjbfEh0cTWcjBbOCc9L1Ujfp8+idio+V/YUKeKROxDcjrY7vAX05
3A5Ph6NLRDrp6Z0+0GEuSEbemWE9f0yEiBCg5PFBSlNcjrtXNfgIYDfzf8Zfg/TbD17l1eCHh0eK
XqIxUTqtcxKQo+1AE1S4jL1ua3FeBZ9UyCQOdBa+DQDzJ21I5c9iolefs0QSZCSBU2nBM5nh1yhy
7eq44yljaIaBUmXLurvHKhubP2g1f3cXP79s76/8VftcrR4L7DqREw+LFhIuiXOcotJzmaivxYqj
PkriQ/L4oXVYrl40f6n9ebw5Ue+qg/wzHL/P9GKFyGXytpCEagRixV+R03XHjy/iHAfV9h85fqmO
KtQLR6IMmdrvk3V22NWSjVRrHLeLexoEo/3r6swsBZAyRpolKHAKfzp6RWsMKvkrdcd0CR6RRLA7
/3LoqkQxRQxPBWItiom3dzhNhDQdHI1VETIer3fNm5Uo4O9LpqW47GdqLb5+5Y9CTA4/DsGEduqn
o88X+uFAkxfsR/FYNO3H5+0EJG80dUvS0JeT0gZoB9OW1U3K+bz/HgqX4jgZn4pm4Qpvfzq4D1oq
QCA/4YtffXY7MBEP2r+JB21D0sI8HNl7bJvzM010uP/dxku2N2SHumyfij9BdA458ILh5+P2ZaL4
i83ZTkJpup5VPzYaMn67b+an4X8qtAW6ByC6I/5USPzHooUl1roJlrazsgs36hV55yVKmL3R/f16
mlD37Gp5Ns7rKJju9gc68uAx0kZ+IKRkSrnXLlSmzoe1RGoA6ZB/e56cysNpZsSn8zf+F0ILq3Jj
DmwDpTFF8pw4CxBlBOgyWxqA841Z9/Bm04NOLvAVJAW7IIEXom9c9GqNYKdwtrvd5GZa6PuF+DwJ
Tbr/aOcs8L+h428kA2+sSPG/Y93G6dC8OCF4TVIZ6SGtAZQ9KWATQUhiHiaRnG38tju+3yASB5U7
XQRxOz/fN0cbmQA3zNJ55J55DNosbUBljeNLE+/l9J+SJVnj+fP0IGwAb7apjHkQZ3O4c7MECArc
7gt3PBbaHLfHQ9N3rgr+uefuCnSUR8oktMqk1EmC8iXUFuIrPk4Qf2eBu/xgFnC3OCrOksuf+RHW
ZHqGQAsPtYlQgSoa68ihW1yfYHH6PFpO48NQuhMXhKqcFuuaOjk9oXrc3u3d/d+AmCbc4SdviHqp
B+YI+vN3RNwtXBGlwWUSJ14aAE6Q5IjkfSIU37UGvtfxe5G4txnFgTSQImaRb8GSq6N4dYOS4l0o
LaYXAqxXzc4dQbUrJtRp8jZ72/vhiIyEnpJfNBLi9zhd3oUM0KNcTC1ob7YAA5pao6Sj5sOmlQDo
M6nE0nV8tr1PIuHV13WBxpYuNvt6THhfjHcDAEsRMD4owoCJ5mwJoiaUM7hJflmqdn8HRN0W9BUQ
I4UDkrfxkze71QH32+tnxByDqJcAwZ9D5QrdEr3x1mjsZYl0CLOSftQmESZLFCp/pqXMjfzPqMPF
abUugR9CjwRnh2dY8NmFmZzURkAOpqM6l8MMrqEz6QECZV5grbSDe1qkHLoPHDH+27mEnDTMAdYl
stXVy4fOXoaAAmIDBjY2pbu9g5cSKy0pAfDd9Xy7PW9njwkAJYY4HQ1KuNrp3RNALeGaGCd98DeB
8B8KjjdrYn7A8F553S2IrSyOQ3WMRTcEBY6LhroYC+BL8jDCx4GrBPhHTs28Pf2J4DvNRcne7fSO
CZ2O7D3aJAxSmWx0BhORcbHEe61Y2AyKl0EERiyIznI1OIgpRJuoXvJpnVnkrkkRMLIiKjDNBDLi
ssTDlPqGONWmwnOt8NF0IVyF6z/cc2bNe2RxAnXYpQGpnnHC9hsL9MKN83CebZvTfMACLupSpRij
Kwvz5fAcAq0SvG2kyNYir5WyMgJ6ygQmasI71Ipaajyq7LP9+f0JyXkdWdQ1pClRaT6HBI7LXhWi
iZFalXFzAGH4b4J3nIN/kxNcxo5qsmbEKkZMsRNEI6BoUQBZDLDYo+OgiOfk+EPWO9CVyPfDBib6
2R4A8IYEip3/q1QWNVaeAVzQgBCZq4H1tAX3EbUn1hZl3pGBZS7dLGuRyqF0MCdCah11ReSuL3Qu
xCOKeSCRMrYsWigFtSN16vZ3AGBZScg+e7wIoiR8jciax0BwLZWUdXFvmp/r3GhcJNxt9tG1ceFX
EUPBeC6ULPmrm6xSxFoHnInI6VhFF9nDK62nSQwBTh6ybn6lsPmCrMWGJkf8TOeSyAw5/F+rEoec
77AWF6iGvJvnDaJAuhNjs6HtO3DAmaKkDCsJ1q8ULNPvm+3x8roF55K5oEeE87q97gupGDHorEX7
yP91Fe6OpnWBMVaGHrChWl1v6O239+3m/XpwErVkd+vU65ubsdecsj/vEZihwRGY0BcOi1g8oC59
SVkKf54+llg2TfrKw0fCPB4Vth6lhFUix+kkRpIcxLwhiS2yqmMCcrqk7MipbFf6rwwtAyrt+lwy
7JGfwb0VlwB5SIoGrgHBdGotmDipi2dAEDVv48Hc+hFREg+ABkk8Nc4bKbzt/BfwvE29Bl07Jk6R
2JY56JgQ19ClPbuyF7zoKqBmowiySUDdVWrCX6EFu6aQul7MKTTlpQs5MZq4NxWGY5kypCEa0TZK
+mSq42s/V8wFRTcuKmqZgnbksSnaELtwSV9a4kRgrcwXHlTMHxMDlQDi02zEyHMniRYVPQd6QmIh
uwPQNTYERrEvniTrQqW5s8LWcEDIlyh3j9VFkyTf/x3epE0T/O36+8XNgjNgSIEZRauTmvNeFX4M
wxBDb379yaJq7K9/vdpu0Vk2uJGlbBJ/iIPLhUpMKDeLz21RcUCO3OdDHKrnx5+FiVRul2D8dVuH
Z/veZzPzxh+HrGMZFpGdXxeDWHNYxsC63YdWZHfLyZwAskMDT/dXPrk3xPDCgmdPcJ/Xnr9zH5pv
zebp7cLDIm8W64YIpuZX4yFEbLuWng4gp7hBZ4gPry0F6iAP7Uzad69gv54nE/xmJRVYxBNv5QwU
/2A2Zj7Xoy4WpJtIbi2y64nzqEmm1l3WFUeF6UURTlprHKv9Nk3TsGB7Kgb931dgd4fr7jjaIda+
iPAbD6uPzBvJws3aCaUtIf/+fj9LDookhT3K5qJUKBw4TgcYC4Y3sZXcKWKKNt6nFLkksSRfCkTs
rQgFFlGQDIhHLPGLyUHOx+8vkykwfhlP5z2ramZXtVGr8kOHWKs6T+fN83X7YkXIjzwYGTVWMrs/
Hsg3u0Hckrexal3N04wWGLGt7/02Xn+ZuGT8+fTX28jfLqr0sE0RkY3gjxafTPuAqob8QcgAM0jU
SEk334L9yf85XO6bywTrfubH83XztrlwRrr8YyULeJoiuPLdZOvvcT8MqSF2T0hG8qxu47o77dR/
Xu1LGSFpyzBtcLjpy1kxOUIJ3s1tUOFMNHzywCs8FUUIoQ9OrcVYwS8glRP+fXqrStbCw6nrZTYv
aJIgJbGecUnXsUPQ8f3tcLL1pdgf6ham98dS7o82Bwe9laCUY9Gzutd4nP7Kc+lcIexeSLiMEaN9
EHrNQOxMb0QzInGZjPx+OtwBgglv0ol+j7IDNVs5CiT3s1Sgwk5bB+lpexs7zeOWGOC0oY+TPIQS
2T2FJP3SqKD954KAB9Vco9F6gvuY1K8TjuCIOm+UPIqA4gMQGre+re54zTKZzc/bz94W+BNSV02b
u3Reb2J/T8rIQNriUg+CIbUnfqRgNy/zms0blxglKAu1KMcDHjnXLTYF/6A1qS1S1uqekBYSPlDZ
IvXKpg+xErQk8+/XICtkRt+lNqVksF5UMZGZlB9madZoTwaLlrCv0+pznRPIXFmyA0CsMUumquke
bmZ18O58+c4DIbpcuA7X7oFpbPsCsL6IlRo6bLNPxb+1SGMH/QdEHzC6SGzEGWB9+wDX7aK/uGFv
fjw1frK5LnoJLXC6ZzJ9/j5ezzzKyNmcTf2gTEElOUnPuFezVqBqFXOUQpkjyRf5KJIL0g+c3ORh
mEofsMaG6s0DZzyETuJGWxRE0YsL3fmdUGrxxMN/vnS9VnQ/k0aulYNablAl+XUvbwcXv/Nu6fjN
D/if/nvbZbVpTduLjeQPQTgmDnxLM9TTPc4X/ixqIMJDuhmzMebhoi6TXnOYYTosSN2be3XSTDjx
VUAsj4qOMXi2993rZn/4crDxz+8bnr+J60ByI7v3p8Nu8zT+/bCMaZjr+eyj0+gffyuiFmMVSMWy
ItKO4UMHZHjVEku/+bD6kZtrRiLz3qF1f7RxT4l95ekY82uDJyZSxtX607DW2/l0dmYV/zkxzEh6
AJomgthgRJa/jPffBvZyS1/mSFBZOM2VpKvA8t3toHYvyn7ZEvUYxzY45PsKcEcKPJN1BH1mySA9
tNryVawkUeaAqDb2pC9DWAtG7dwD4R9Rxj57z+OvN56MSaSACAmPOT+YeDe5bAB/RK+7DuQgrSbT
xO6tGq/XM4g1asLgMfnJSDrFg5G5xr88GB6IymJiRQk8Iejc538/n9+8hBnf+E9NigWd/WXNf6+y
aRH39teXJ55rSGdjrLUgMogfVUbqY7wQ086ETojfSVK40of0FXubwBHTMM9bnt+tm8yfjgcQbxEn
prmlYH76emiZDrb3+f2OAl/EPfcrO+bdT9NlSsScxD2XFSPZrhKQOSEDFh6M5UgS/Cm6Nj2FDmmO
ggAhbExqnfxLel7mHyCrApyh/DqyBUSkt2z5MhoXPM2anDfqDnp4njQvDEm2bU5OTPryzDOnkrkf
9AIyGHQoRUN6qQuShRdvnczxKd7XRXrEaZ+xc/ysVuXfhNBPTNtRnubvSRPEgwtB+La3txd8UE0s
GfdGbUeM+Tm3Fo35ibm3rDnfx5xhopGSNWWG/To6A4REaJaQXbAzxLEWLqvXLxNa30+HnSshOewP
pM3oxgxZGWIxplDB0xFh3tr065PFPIkh5b76Fr5OLid/+JYplhAxWTgkioZ+O9kDT9zXcxzeP23+
cz1yXwc57z6OhhL9uBu4b2crZTl4mzl4x5+b/LTOf60Uf+3ARsvn3SM59SzGi99OQpD95WCcuq+H
pfqMfr0X7LnDrgj3tdWR7SMb6HbHonxOdg9p2Qo9ea+f+R+Pnzu7Wj18bjr26LNAQO/d8u9tTIlO
e8n/9FC6t1bcx0Ob/rDKkCn/2sKUOEQb/rm6MmsbnkNUkbN7vWUfWxDBEJuHEoQb/rGD/SCGpBA2
+fGGfWxBOYw7uuJPXiSVSS3xLybj13ECQsrdQLC08ehaLZ056cVb/uI6JVSV45EdzyRDkWBEwz8a
JfU2L9iE4L/uSgQjDP/jkvw4I1wES+sE6cRKT19c8C+uSoJpL3mZGH/aevzt48eS/bgrCodJaAJS
a0qSqeNZjCgS5tJqYIVD31fYHLxgMiVCAQYL0QNkpVjKX7xE7cvWTjMABlFl9mRpNMoVyynDo1xp
WZEmqFBieKvh1Z/pi2pfAJHWiBKpGJ7O1FDEuJG8vdM0qVR4PLrh761EooTko6nV8ubpWv9lbAZW
pAyiRCdDz1OZEUXuMnLLC9KIcVKjs9JA/K/3bZFYTAN+XRftcp5H5kocaCPygqWPXOJ6Ex6PztIp
JVMTS1xSd4L3JtripRsFUC5K3K3YS/dRHtrAq87oEMPbaUpE/rJR367JUDn72IMsEmrLv7WRRWtD
8V9XyJWWV/ldX3puHme66PQaXgHpstuqBVD5smgxtD3PH6Ks/YBN3w8lqaaB+9e0qd8rcqYtf/Ma
HcbfnJA5R2sdwNtQwrrk0WZq3DDAoEPJHdG8Dmv6IrXxmqAtGjt7zZvF8ZddWX3GLGaPbbpUgfUZ
ccj6QAMxGOLI2JWlBHTvUNL6kzXFP1ZkMMvoOvM1H1aSmnBIl2duAY5O9D4TlhqA79cORfY0Cthp
UTDZYG+bcx0BdzemZOYNLK3NqTJgNPQ9f++2pHs7/pdpiKVhYkM9iL12JQ5TfHymHISUvPYURYnW
8c6ILKr9AeiBzpS8Vt7Q6kWRxHlvoBNFDdJ1vGFLYlKkUSjV3BJobl06OnCD5oQVQJrR4OtVeCQX
FuIjryQKaS/R5ix63jSmDlxemAvTArnSlUx6EIwbKuKn/MlFW1LcikVar4sswgcBu/jDZDVX8tjA
mVDxp0muL/lp3jztioGdgbc2qEHPmWga6ABVdMEAkSvqOvbZvArvTfSqGONveHlIMnAklZv8Mhtu
JmYtaadPccaH+Ju+eG7+p6UsGgyCj4V1KyWQs6j5gxOvlXaUpF8DWdyXzAUh+DCBKLpBfHJBtGVf
nb12X7Q1BB9TkvSX854AnxJpi26jAtaZlmVfu+Vfi3pAedOSxRjNGTJMzZNon2ZDcrzV9SCS1RSR
Brwn2bQlUdoLkCwtRh+FMuDFdEltTp4OyP2p0tUHECWn7814nYZPUqvGFPVAN4BnkyVjB5jkhiSh
TDa7oFgGJa4jZ2W1vDAmZjHZnpl8zWIs4tvaHX1GFLO/SwiF8zkNz9qKEDnj5k/2CB/DKyZqeRfG
NKmZk/nlvgEUHu9t64lMJu6p93xcpSk5bpLXXqaYy5GC5Y6uK1sqvLO7FmmP5N3z5h0pXGHMHD4y
MhfiInnGE6mgSYU8oWg+ITIUbXHeCVjFiTM83QFXl/j3DMZEr3lBKONrWd+1y1EZS2RFT1mDHFBT
VvgNSGANoijB+WKdsEcYGne89mh1RckMiMgU6y86nkpJUIXx2zTv9DWixNg977a1qqL0Ys+rTJJD
6m1hWc6+A6F5XQwdCl4JEFpjfpwvr+qGYs1IK3mVW1bYAphoBGutC5dnhBIrk1RR7bY8yghzczFu
Y4DSHorPzecUJIlOWMe3z9IaX6JEYjJutFfm8563dEhMhvuaF6ikCtBeojOZIDOIW+qi5tV8bL8r
psX3/K1l+af5IiMpipFHoUDgUhVT8j0IXLbF2IjgLWqpilpsUqB7Hm8kHWOWwu1UjYEX78t+DPA+
JXXh8jnHjg9WS1GylwZeEbVl51ECd1/K0ucGKH9dJNaBryHsiiVtIFg8dwwi5d/wyZxelnQ/r0sE
jSnlBTqfKzUlMtO8TBvK+cqGR7fpyhQOChBVUwz4KpD+0hW+DNC/plhGyMcAu2JJm+AjQ4S9uAIr
1qGgd86bxuyZqQuVj5lqXpgNxfIJvlpGiKasf4B9KMtkwh9c96VIluEFoSq2HPR85WJbFIOC726R
Q7nQRwBHpCnW2gi+JkxqU+EP8EcvV7nymS+py9WLvF0sW1UK+Ape4RNjwwaOc9YhX6mqmopUDEul
xeIm3pwXotyVw+cUJBELDIMMPI13XcllbUFBmKggM9BhQhJ+jDHPF+13uiQMWVtcy2KzAF+JLU2Z
xhpQZmPK1bWS9yJkW5GIAe0hxR83fICCmikMXytQuaiK1pWQoAZddKWjd/zRK/wnAyptSGiGzTby
liHRvM5Zf1QEHa95ZVHzap65aUacUWAaqCBSVsUcfPqcz8PQBHG+z5HPhogK9adBxpFYaKRjN1Xd
vP7ri/lKnkVJLMyJhwyL8YpAFbNPogHh5t6UvWVWdZpSJI1vmevK9gLfiCRJUpzBmACharmuW2wy
rRa8NG6KRVlA/emigcgHhATNcnIUzmuhttwsx2K8LXZ+sZKUOth568zw+SPdlu1pPhTUrxKVubZM
EIzpVmHHJtfFC9RPsW+M7/geigWPPQintF0Ra/zXNUW9PMqpz8h8zV5al5P4LSgPKvttvM7UpmTT
7vlCGdKbaDHf9rkGQV7XFyUCnw0vh5+EAhRaEfvq+axyUxZGoDSWfM4Y8gNfUNUVm7YM/zEpfeCq
Jnp+fIUikU7jWjUytZIgIzAUHUbQECNJDMo+Xk4kad5I0cVWb76hRchVNChnywOdq4vvzZf+CVnu
zm94w9CUTXl+VIpUxU4BXigJUZTEPX9uXWyO5zvlhCgntXm9q8oDDfhcfLGmlp/YIURR30veX+za
oi3btnxG2zx2Vtjvvy2TeSpm66jY4CENcNcZq0PFRC36nJFOaqlbkYYVL0z4UcVabGnYfETP33qI
HzN90+xsHRWnUEgDWr4b9nMVNJm7N+NuM8aWig3j0vD1uVvuY3JwJlnJDddRkcWl4SO+3HAdt04h
fk5W+tYM11ExVykNaMXt2N+WTYnUGF9Exawbei+uOljFch9ELVx/pENbpFUmHsc46yoGMN3HKl++
yI3Icb+9Ym9VO0RKxfFX4MU6/mMqWLgRVLxcmitApOFn3PSKvzZhMcYvYIIFKrqu0vCpNw2Ey1A+
OjNfR8XRI0A6cGWfKhYxInEueMEmCaOwuVoeb6J4dC65rWLkGP02E2xXcaiR45N8IcVe8uQSX4xJ
l0peFYmmxGLsiBwVU1mLbFLVySgVa5WAWBz492pESR3wCJ+jQ4C/gdkhqDhvsy1gLXvuOe2JKIUX
x4MoMncD7CXVFV+b5e0hUrgN6xlRXVKnYj24++V8x0PLa0Aq0jiZxFOZFCXG5jX3XOoDRFLLG4lU
fzGTLPhf7mXZypO8CtJFg8XwUsHokqEGfnrOwQEq46bzxF1MkEa56TzzSpOC8uSm86g4rnO5uaif
zuNs6yhXmJLXlhdKrSq7BYY9ed+VTq75n1a6KJSU4h2SCsULTA5ZpLahA/TSlISD4jlUNUU7j8tQ
uJRdfDGb4Gn76mFMKlaRIHOnbXmJWrbzFP/bVLpwvy34346CTQ/ZKanG8IJNFwVb2/OuVPzauibd
B2bsqJgmR1wCvEBdlg4t/7mSRZOFm7GjYukO4jLB8yjVB1z3t+EFG7FamCiy5LEuqA/KKCPeYDKr
e6vaCT0qthMjpPHaYChGHPa8xWNE6c6SP7YgNj2TqdZALjVln7+RQCDLshLkObSNHMqleFirZyCa
hOlbF+DgWhZtB8F7YaoirqaAxdWWuRvosTaqImb+ycC7n01XEuc9H+wYiuq707yNuyK1tn5Ej4o9
QsA456Z1O9e3T3V//ZAeFStoUISI90m6tmSsDbytJopSibe2hCzqz4F3hhpdtDF7PmSuyK2tZ9QO
tcWQcSsHFCuK9/dN0W82GvgkQ+qym+oBdc6sLwvEhlfcqmjXg4CcoFKJiwbyar8t8rbiXdB1NE/W
TtlRcXaKu7XJTigHwnRuPnDvlS+OGwaevdqSQ9EDY2UwyXOJD8zJcWqAxLxdV0H1mDgVuzVReqXl
36ur8MN4ra9K9+a5U9SYtrw8bItf8/aGII4vV7kEYnkNkWgy22XKNqmqmKoHwpib76piQSJ6sA4Y
5aocDWRTcV0prcMnKMSgS+KQj1MIEmFh+zx5G20oKj/22CRKwc1sUcA+69tiqECAIIfWJf9LASpV
ZcOWG7XjCEUVcxvADZK6qER6AeRp2QVTwGPvTTHzyo3acYqjK6pPwyedVVvkb3ZYjkN8WzJQgXE8
j0h3sskO/TS103JUnCIJvZkWqLGV2dHU96SpWNwOVRH3cW/KEWCQ8KbUyugDxXtSfTEhxnsUc6cR
zLWD6HFbjB6z20lUrLYDTqDklYkQbUlGcGNzVGwoQBJGAzU6FH3nnjf3SEkK59PwlTyKhr6Z5BJP
qpIE/Ll4ogT6vxgB5k17QZ1IydXD8NRCOJTxiCSvxIUu5vlbEEZtixzagJiBKv644IuvVDuUSG0A
GVTRFX8bBELnKWTAM2ELgVXs6ANGRMeb6F059M1LNq2LASaeWoauVCzHjs9xAr0pBgVboMmEKRtu
vD7QxWSm5INjQqaypa+en6NiYSm6d2d4udaUFDhfmSFIoYBFQCYY2YE0CQnqufWfffVKNxWr3WFN
CS/Om7KVz43PcVgjcaL8dF9ufI6TLfHHub64RoO4ezGKO4CvmwrZwoe4GlPyJff8vYlYsyFZ01QP
0FFxYyMSDwoE/U3RQehBscJQjHoI3siWplys0PMFb6rTaR61qZ+Ao+IMBOQaATWsGln0xFtevpBw
EbsTDrjTXdGdNsAzKrsIA/9oRIsyipBlExoE4Dqd2dxWMQTN6wLR6tIPswK1b0oUrjWoui6XqzU8
qsVQ9v1BNNSUC0IVMBT7YmUkOwBHxbkqyNbjM7hNMUYm+ICNIMWN3FR/1jHoiwkD4PfPu7JgSo1P
8RCBxkgkDZI0ulx1rUDMoVclHuH22qjY6oaCqXzeWupia0PP51mGYi7R8JZ5OWDBDsJRceMV0iF8
/dQ8wxsxKF/ZoVRXfm8e5X2R1gTPn5IIVE598YqbGA1s2RjfDUKzHdxwSr47gMaY8s4zX4Yr2qL7
2vMOJBEsXJyl4Z+L9mMwlbQgKdcVqVwNIM5SxngHunf6ciQVdLHorhxJ5enUFDmMxxrlkPwvs8YK
kaXc+G8+PCS7cpSkAWpflOtJ+aYj2ZW/bkHEn/y4LWQ2Xf0cHhVnACFSkyBN1Bb1SMergs4Uk7BG
AULV5Rwu78VpUeKSjk9WdKrYGcirT13OF/BF+op07thkTyvqx/CoOKEfdmTwjEIEE+d9apDqoD0w
zDQ3PiCoZFd2H4HfTeokmPCU4RURTcYyqY4GeI+qGPJnyaUvN9/ytQYk1cCIRb4zTzRdiVR4JSS6
YiNKx3uP1CzP2wwDL09F0V0GJfJi7THr2iE+Kk43hlklvqBlKFcHGl4ukKYj1gXjkdYXlRArxvti
Uzt/atEXq64EL4aVNEWjGDSnSd2Vu/nB56Rdiom98n3pQjflClgQBRyKchh8TQJpXLEa+9jlki3D
vxfVuR+aIKSWRa7AW+YD3YJ8zOjrPe/BEJOWHfHIG8SqmKfms/tCFqUROwRIxQXPKPzXgxx5UZDy
xel9X2yV5QVhU6yHNHya2XTFhEoHUpbU7WNWXYHohCi3KYF+HdUUR3xwI4BU3HQF7GHN5zx1sdiZ
z90JU+RNwQ9VkabY5cuH9UVbLtLmo8VDMaPAN7SJttyAz7ttQ7lKjO/JVuUeQhbbJPtkUdc11VN4
VFwgDlMwLZ8/IuF163J3vR/Dk53C03c/LP+ewNFLgboLQ9qhbiLvMHNf+wii+9riUcicWct97G1i
/7Gj/Gyimf3alH7aRnyZr0PkNH4t8gU03I/7cJj/3IJr82Vq3Oc+UOA/F9mz2wQY97UkX0t7gJwW
5C5uZPrTKqcPuF/2pT8+Zs1NHgTXbpv0wdt8jRv7eVfCWt/zdF78WAoWaS25N1MIMrDvFUIzCGv8
c/n4o/82771NqoRlkb701pL/5XZIqUxlXT+WRlXKILniVx5hEd1cgMAAoWRMibdtIoqVDEWk2Wgz
y17k6y7vTEy6iDu5bksyTRoea6IgyW09APfxIFPW1LnqMpbOmhJv6Zb/ZVHCd8//sjQlUegKnVlK
6UpinCdSojiZc4uBZy5RPLfmJUpoKIAULnka7XVRFCr+5H2JUAyv8SUhlDar8W0nHvd115XVB0/h
unjrPSsMw7QiSKRAGKoiWwsgkNRQ4GteJChR/OFe8EZOW3pqO6yB1dZ9iUZtaRaLsqJUcHWf7I+L
VGGb7BAb1swpsvaex9oQP2bCDEbyv1y0p2XDs6YqCRXDS1JRRHjL2wpr9tDZhDrLmSXF5ao2WRmu
SraZ4E8e2psgh/CqS6sig9gRhyx/EbuQ81sHnsSHkoUFRGkzlCUS7zzppkilvOojUpzrueh4AysM
DYC2hgCqr+j99DzGVV/02viPZVd0V3k5bsoKhNfYypQNWv6XTUnnIvtKDKn30ufq0Nm3Womz3O4+
/uPVpdtsLoQlMpFa8ZmJdbzHNpTQ3fFUIoqWtG3jYllLllTunlc9Q1uWwnteCutiQAR4yCSMxPW2
8EGJpmyIGyBQ+qKnKoCL3RWtSjcVihXihLHzCWnFM4hZhVO6bAUAe/Km/N4ggiXKbgCIDoiiJQ+Y
pCvrbM2rPl0OgPHmgugSQlXZAgJWbZrUUpHZEdisjaWKNhZvGqq2KMZ5GpeyZFdqYN0NTZE9e+C1
DSU6U7w8lEXl1fPyUBX5o+VR1ppygJfHty4GBzoDLKRieNiOFmTZYyg/F49xak7nHXw7LYC9eNGk
5Q0VpYu2OEB5L8rRYZ41SWCayQPxoWVZTAUAO6WJx54Qn6v34F+qLYV3e17lKlmU3z0vEuRQTL5o
3pzt23JkgMeYLprhvL4lJjw3fKsBMbsK0w7kEFQJZR2vtRrCG/kaAMWrDqptGT+TF6INIRSTNaQH
3kJRRVdPgFijKVsJPR91kxVpAJ5GqXXEpQdBvLBvSrKs51WPKlukBpCpkWXl0wPlYyp+nf/xIo+4
NR+sXJFlw3DkJWLxaw1iIn2RWBWvBGhQo8/P3wA2ElH4vnE6O9eWtc/K8pR3s1WRSwQoAKD+KiOX
eAW29jhzrf38ubti+p+PxlAdwrBID4yFsh4QwFMueum2IItFeNnXNcCyNGWB3PK6QJuiywiSIJJa
OqLJjeJnKbwcMlQgH7zKEfa5FQLsTxeVUMeb4k2RM0HyRvblAhfg3/e6HBdveQuvVUVZyjMnMcaZ
KYqSN9JaU0oHKD52Z1Sx5oF/LtGXPlYgBGaGooeuQKC1LRbmAHO+70onFyCyXY6p25kdrFQoUork
36trygof5H5ERQ3YyFsbxYwZLxdUMRGugVApxgdaUG5hyuEvQGemFNDvQeGaMkU642WpbMsJfBBb
WCMtu0+MZc7H4rH/rBQrQ9w+qxLWvmyvt3Hzt/fb/fD8fbM7n+7j6c6BWFZaqzCUxxPM0/6wGY/j
G/gyDD92JaOD287syfz5OH57On9zX9i/b7bHw8tpc7tfx/vuNQvNqr+543xIAtbX8bI9nO6b6/04
3eT4/nZiASyLcYa03eJ6vt0222+H2+Y2/f14fNpeWRjzjKFhrusL0x2e3u/3M//Tc6PhkPTHvE3/
yeF4OI0BA+glhCZ7Qwa/kd60Cz435+t+5I+9dJANiQXkvqyhAwtjrnVOd7SGx9ycv4zX5+P562b7
fj/z5xDxCULe34M5nBweLDT+Y6nIx0sUm5DQ25b/em79GxLH2H18uZ4v4/X+fWMZ43B6AWiMJyAr
cv2Pb59uE/3dx83u9XDcszDmCQDpYuQZjU/biaEnTIAjdPH7OKfK3cPin38+gjy9JL8D+wCekfGz
2G45H9ce9bZ5myho8zTOHDzuN0/fN/vxeTtBAqRASDJmOt1FDvfxzaNxoSv+XhGfRLpG1rqOE4RJ
3H29bi8V6J37fIZQLyA6j6jt6Xz6/nZ+v22ejufd583beH2Znvq6vfESq+1yR1ueaiLX68vhdHMs
s7kd/s4fq4/Ea9Pixr/CRLS7iWO300Hs1zf+Vu0K12Y5iUN1ALR5HQ8vr/cJ89vTC8CRUBw0SsLz
9QApE1y3i0/oJNnGkSXkRU0efnAFr/M5ztv7Zvrhw94LFHtFcBki1tzjx3k9X18WHTVd7JN7uJ82
zeYnTuPN2xxjc1/TUNxEEA0Pol1A+HxKl6D3Ey/oh7ikd2msV7pNvvYq8rbg5cYEnYfYHb+sdlFN
/3iZ6Sq8yB/iCgQLpbVFmC0V2/vDddzdD4zmHOI+1WVDqeoSI+LTy3gar9v7JHNY3THELUZxkGdo
80ywupn+xmO2jxCc/T0kCvCTNUAcVweBwwIiNpn3s5vMA1ttcjlPFsllu5vMg+v5/bTnj2bIQ7mG
/OHxoQ6nw/2wPbJAQlPnsohPmC5HutP/N0uL2+v1cPrMAlTknk51qMgLQTZsTmdrtB23Fx5f85K4
uIO6b1ZytGkE/7Ugp3DpE/N4LVEg4nnW77KKWhFTdj6D4c9AGMnpbbWSCofrpEBZvTTExd/OCJfu
jzb/OvAaqiVv7KxgkUNGAYogD+JUXNvnhdxMKTykyNyu5kr06a2ccpq46X7YbY/exmNhdQ0RvY3r
K2Dot0i4BJJ1OkQvMSfwkBQ5k3T+cwIpcAHENnl5NyRGyZR4gvkerHcvMJ7G+9dxnNhrfNneD194
WdQZwluuV7Z/fACnUHnJSuSi8wtSx+CTs7uKMrEjiHIOUnqO89PfJj3B46gjFOm6KYecphK1smve
u+7ZzTaLB6V1v399ni7zfB8nhiWOx4z9EUjpgUgiR6wrTZZCsv8WQBNEXPtcfJMlUlEmUtlhfbRA
8mYq5h1JDKDO19w+CEre4qAqg3qHJbR7LRmonn8Awkk2Oq6GIceNx+l3NsCUMJqAsbogJ2isRikJ
mnkAX5xjpFPWeX563vEaIRJAayVWqwQnW7ATNSw1dR6Y/6NlEL9YbCjaMsQt23EBtOoz5O5tUPvv
bvftlQ9CUfstVKrWSkFe+A0Epi+xy5xwcmaeKw5I1I+yPrPq9CNVnLb39+ukyd4O36yTvL0dbrw9
RkJ31vYUZuBOB73aIfa4x+GmRuct+Z94cqNuSedKIR9olWdsE7GjLdq1EYzJUBIwgpCV9EYdIgQH
GEnljoocv8UrCiwLZfJDJ3PccxPvpZBTuWobnTWs6mRoQ7WZW7GgeYHMS+J+bc+3LP+FwA3wBVti
87mAcJPVsD/xju08PNnRgNUzeqVnCEGjUPAQA7nLWEvVrnyx89dJAvCc3xMLz11t+nNtT1tPbvo/
a77wtg+1zQa3ajdvTxfJuhnWyMl4X1hgKGKIqYGhwYaY5SX1RK0q/+Z93vXm8UOopvc2EI5G8C8e
IWnhdtwNPIPxWDZrR0w8+PDFkMQ8jmcZXaXkAAy5Ei1rgmXnD8nEtQwROhcMLQgh4rd4g7rvGSVu
FQavuMmjuVJN3T2yhn+5TZVxr4mXZxSWREVVpg0vrxNBVCFpBbEIk2zOyoYqhSjmgeHLHijVNowc
4PUadTpdcopEOVIXeDM+PwNvaN6i4WWJrWJo1KNTtzuOWz6MSA2GwS/AcyBWuSIUeZnHoMdFwfnw
YVk4ztPlYnxLNMhQQ25TSw41uBRMCsrnoXi8tETxNE775O0YrJoF9naXAAMfJSZhUTfGQKTRSM/m
jjudCGHi6ENcBhV3vbcgslQMnWjM6g86iFc+5FiNd01xkKloOBJ7aPCdwwnAWsdGkJhJK9zoVlHn
pCL/IfRu8zFcQuP2tnwKQJCAjFsEqBQT8eSNfeK7IRB1NCHU2qmXfBqhaJOQywk3W60O+Rhn80B5
smvL5ANIwLylDqCVLCsXJ9LXtZwkmOeuLsuBlG7y9k7ZspTr8DnjmvDCphGkAkTaP1TZlUfOBHFt
e1ebPzwqqKfz/X4uBh87bIol1gBP7oRCXY9Hz5A7QBF5r9atWhkeoqC8pjRYNEXzoRhQp7ml4TFM
krg1RcOtFXnzKGUtlH0hms4Hirsmk/zbfD3cX+dqIpu5HUGgRVJMD48JwVwAAItekucMxk6bzezx
70cANJrVVcj8o2mq3MNRFivIf03DWo4eNLTf+ecnJqlxpYIGsj20u2h2sXEJrbLPBESIJuEoB5uI
JF+V4r5yZSDunz3FO0Iryd8u7pJr4l4AUrJFAM7VJVUw+wVmLFjIW8S8liFxAuUqlFUx6sujURqa
15Ru1WNl3LcoPEhw2+2iUJpRqVA0k8SQtmVLWnaP2aXjmbdv5wXaLBXH3FDRDSE82vvi5WIM2mfu
N+fT8Tsvf1oS23CTiUUlXB5kl89f7W6eVa2LUDBzJVElzrYhdsMGFqEI1eLw3P5wuxy333njhxC5
JR2tOc+x5EXQnJuPFvNReT5+QSnI1Tv1fGj/y/Z62D4dR8+ChRA/SQ8b8xjiT7zJYuatwbl9QJ3l
NDEJCTnfYOgZHuKZh5CTC992qgKJfx+vRSTqirqVUPwCJKFusE++Ql/BnyAB6pAPeOQ/K1uB5aRx
9IT4g1CAUgvZJrnUKslljRtcUtYTBA8qLWKwFVPQiJhHn7OK/yE1z1MQwYgzl5RkXKLKiEDzUMdi
mGBF0SulKWEr8AZVSO3jZCLN/Xli9ILhX20sx/IFlr9UFOT8K2oB0vJYnjl6HNZxDtv9fCl5azRo
1TFxr9MZxN90ty6o4cJepzMkS5oscdjWemVXHGz16ae38378NIdfP01K6/bp/H7/FJ7y9un5en77
NN18+r9P3mPl+YggsffKCZnAZS0vqP5IK2CT9AqvZ4nhYRGic0EGJ32LcT8SrVN+XUIVxZVzB6aC
ZMQHqhIFlcy983JgGLAcqSGmljV8tGLKZ0AwV5b4ldQoFnMaAxb4i1TjQ1kkndFq90fLRBCL9leP
i9cWSPxhaDoqVw/9UOhUNJTaCqsLl1F269orVXDWkSfbV1D4T8i2ksRWcDNKRD5+VVEL1lC3unEZ
7upiQ+zj9OtMcMPcsvh8qgb5dXaaeLT6UlpwfhLKlImOFpVZD3pV4pkJkqDIaFOR9WjqxZ0ggW1l
L6u0LCmdQtmUIAZ36HdYWaZzH9R20oYHvoBNDfmwG7WRr3zUTVBCYOsdxAfqHQaixFxIth9KFTP8
QxJG8q0lgo9+FAMPRE9bP0r3uaAPH+ShpVvSuXOPZ3k+X9+2d2vzTM7SxDJn3hqkD+fsKMXUYvAS
q6EV8a4LTsbeH/eB74KoitfZIOfcajXvo5x8jRhbI8GryZ6b5BdPUybTs+ACYtf3MQgT2JTUxW4i
GyogkQJf/Xq+HmzHlj0L3xg1NCkQL81nL90buc4ytK+1vbHhchFnePs2qdi7vAAr9tct67HT3lVH
t6UOr64hzYMuhuR//XIdn8frddxPD7y/v94mtNxfzy/nExOFEXH+yLr/dA4Vb5+tmr1N3pFFim2H
K7ax0abctCPUip6J18/XCdm2N+MP4/0Ou2v7XCPbuj1v8x/vh+tn0A+nh2x/8iQPQ4fqAfT4mYhr
ayZ1c3/n5LNMHsvm8GbPMblne4DhPsWwTjqs9++W9CdOdMg9nQvNuuTtyfyt6RaXSQUedu/H7cTe
3suyXDmhh7TsbXDPXku6iMn6ulBNFroYb+N98+WwdX4pcM0cnXZsb7DvgHBEYIP+XyYlwGNwaLmG
z0IPYvx9S5RBPp/Gm+1rK/XFz9GC3OlpmynfXErJjjimjjcDF222k92yEJOrRruOqNW+z2Eisvkq
qYCYomXoyKn0Yo+pNrle1RCBXuwMSysvIy9FjUhR3K2b1n0nsAS960Smx/3OS5sykN8Ek9bxEKSO
frM9vkwa5f765jVlCRtG5fiGaKdis3XEg40xhxAzEXSe99B79LkpDky7dlk5qS5HHX+fZMkeCSci
LJMMw6IWl9bsgnbVTUrnOvM2/HOsRgGIQFX2Jzf38du90F++7JVMuYyQ5YMig6QmdTpfgaRUH554
wvDmbmP0QCsSuUT76Cob+zuCHbeYlbTshuqetG+dx/OQG36xNkKAuiFE5vAcIExa8WqV1m7zdjh5
KJvt5XKc1LTnx2fX5+H+B4D1Lh3M0OZlCwBAx5r0afjI6y9HS0/b3eeXkPA5372VP7m2X0agz8jR
fFhPPxyOp4ziucloibgo+XK+HZypns7T8AgNjuq4PxRoryW0R+sj1yNXbAIFSJeI2YfG3bkW98Sj
z0TdY007Uiu6mO+Ae3TOpoyyusoA79sVaYSwi6VXZ8bhaS2SCOs4JdH9cnjr/ffTlnPy3QiMyHrW
vQ6xrfgK9iArRgTPwaDkvPT/cw383srqc6NMllqOC3wOGd+SrGCfvY/b4W1i++fDdAxvIgHLqE11
sEjtdBJkANSdNWrmKE54Gscwy0Qj4KSRARjeEB14RwiPphnYeSd877Yj08it2iX911xWmOxkupx5
FqmsdsTR3KkfxhP50VvE3LKFJq/WEi4NChoIqcX9OqsZMjzT0OftQzCDzms5zZw/tyZA0hURu66Y
dy1J0GQI9zqGmx3lDjPzgPMwwSk0O+7HneIJT7DqyRO3bpSZJrWIxbk+bbtCaTcP/5pU1GR0vp2/
WEfUcuD52R8Ij3HqVqKRyPaSazyszJE28V7Lw4CoBIkGQ8TkZbuHqmUgeteXK675xccjJ8954nrE
LWY9K6lHKhw6jGQslrEEZ4IRk4QIgFQdiEFvK5QT8Xw4Xd6dXVKcEEcsYOPXNPrxbtZHPPzdHeTg
5owVJi6RUXNu2fza0+I9xV6hMWtBGMfG1Lr4FFFealFec2CnItEpNNnRnQYCb/fvx4pYG7Ek4/TG
BxlyLQyeavMeBdEUS6sUJRwe2eSZ5KJ4lsLJz+N4CSp0omngBZKZbLbU0TwYJoX4z0CMi1X/2KO1
ZwXM9sv2cHRGtsvZ8BfU6cs/aNai5DQR55bJTINGF25eJ5f375Y4y9MYJRWDvfOlV6ADYWIbVclc
TIPaqHOts7WHnsJ0JafDsZgk0VDXcCw6iaQb4BvC0a3xO1raGtfa1q2f9tvr/oapWDTEA6RTN6LY
4gWVTC2VNsRBvvqHdRX5X7bHdxefddHPzeF583I9eC9yPNmDgstrlTp5Jhe8CjKVp0H5YDM7KGd3
uOthO/2/yCQbFlfW52mXyY0VSxWGRUr4LPGi62/vl8v5er9tJiB82Y+gBSc93du0WQDsz7t3h2g3
mPXqmekbm6XvaXntIm2ie+8+Id7+JOfH7TIkhTezljmDfv01TRc/QvP/gAzqxWgL47RttbrgwPnD
lcCRnX5OLBkDwSEOX9JsHpyLVTUaXrYAjuz90/biujcQnBVR7CRyshpO24FjusEPUXjWOKNbWQGk
ZrMGHI2dc07ms/sG/7bz7Gi/2h3Pt4nIrhP6b0HKTmbf/XW8jWwdGp2s15DEnrUr/n4+v00qlPct
huh3LlOO5yDVs/VsJud+wo2jCCQeIog45D+RL+4fni1ZWfNgkn/seQamXtx+Z62SMZTtzvKVvxep
C4su03jbbS/jJDTeNtvLgRUSpHBO+YFRqdSy0ns6x7i7n/nqlmTUG2mz8TbR5nbaXtxn5J8n9XDd
vuWR08QlxY7A47x4CmAZx7s7v012u0uBfT+yEFVYReUGyGn3R/sAU+6XRJYd9Hz/fuFPGBjZwWuE
//MR4mwG3GKfjU+N8jcfItyY3qUwZzeJxm78/wJKPJq41qpXYW+BLIC+T4b2zZZ83HiQEatEYWbf
CaneJnQWUVDNAyjqROxBsMhBiwREtTGBFjoJb8RNOk74m/6f+/QL2Blt4jIf9wtxRH5Ix87AefLp
Ss+MAi5N3IfaqyRQmSU+HkuRIsis7BVLnJ+fb6PDU2A0mzaz+fnpgkwxXxMXVAUG0QyDpBSHlGez
TIuI51WA4d6mNy0ImXhCEiKh0MLVeQhRCJDkRMKSh9vblkvMN8sENEQIlM0LCFJhk5pjIutj9hmy
eh2vTLymiXsIejcxzobEvNrOaoSSUUtr7yJ+XyfF5Bsv3V9tOM2WdJB/4xT5+p83DbPySMY1nK4u
2refkB+bv2/A9w35njRXp7+v+O/b5ftQkqkz33f89338fVpu/HLd7m0tWAZfrr90e93M/8l0P8XT
BdFWfp0VvR8PUfAQW0K3pJw4hWghTV4+gShZiCIKI5KlL51Q8yckAsi/aVsFkT9hQ3jVFnsIo6ru
zJ9RRCVC8jwleOBVooAkkZwSPJ5uRNTvvgAhSIOErTRL1mGhiiVrbUWTbnJsKfnvCVv54EOTYauW
ZytD2JLMP02/H9jvW0G+lxxb8+fXOn6v/bCEzP3586soFvwAgi73+z1//ijWfPdNKMJNvpf8+dt4
fqXcH5nvBf/+YROdfz8Xd8vgv2n4+6soFmnRWXp+Xiy3hH7ohKr0e8F/H3/fsdY8Uyq9P/+9jt8n
w0PT+/NqQUW1FmaOZL6XPP20Ef+qc1k9k/mex3/Ye+9+33d65OiXv7/SRK09CMz5e55+NeU/0t+a
fs/zrybnp3Pg0u95+lEEf0tnUgQw7ydK5auNp3K2huvcn/udrFT02ewmI6Y9GAXAtAuYkJLvWTAS
gNERTIiRsGA0ANNFMI+iJgXTATAmgnmUGCmYHoAZFjDKppKUzSVZOD5K/WBb3l8nCK/n454VRx7D
3qJ1olAua3XSs+0O192RZ2sHJwxhdHiKNdQpnMv5+P3lfGL5ywEKGURlgM00Ho+Hy41XNA6Qjjez
ZY/mUU5TFCmAoq58Ilu8eOd5pIuzBR2mxbIAiTuPBOdpU1TTJwvlERAxof7M3SeWoubIEdCNjNgl
JVLce2vw3noBZDNPHQYEKLCLz0QWTKWAArbDVAR4QSPKF4x0CMhHR0C25KjDBA0uqCOmaASRAQRQ
riMB+JjPYBDXD4DrFYG0VPJyRwKAtEkfDwMCXKbb8omWmwEmk5GaXPpX5JgM4FgS8omlasw5EJ/p
VPgMLFXbAQIFkpa8IHuUQEBGC12WIIs9YVdaXfHBQhULVB7x9QGg0DTgnbQY/WMAgefXUZ2RxWOc
VEJXaxJUZd9vpgMBUK7a9GZZoY/0vEnpsUf0iOiaYNjZ70MD1GEP1GEERGpzmAMBxEiCGC7eEF8K
qMWuAtB8L4CgVqdgZO6hkHYfPmL/AARrog/1Uv6Yvw8gnLapRwt4ppbKQxNrO5kHR+YLERY6jcE+
chSSFbosK5bzAP0uI2d1rqcOPRg6kCYcQdJF+QMBFagiqmkIP6VAJN173r58OAcgQCXL9or/p+lQ
7z5zhWWp4WXgWhf6XuOCPlRl2TyTNiDIlggOxWivmNJ1/xorMeJvtIzpECUA0hmRU1wfRlNzMATP
1DtCQMK1kS5c8aGCEhtwXkesz54hsPk8wPZshwRMErpY+AUJgCb1FEQVnSMXuC/TZZQoAJAeUh2r
AYKA49F2ZUaODwZevpNlY3Y+D0B4S/hW+iYV4Ou55GBBEDQP5yIZwpk5fIzFnS8TIwvnFoLfhx6L
zJLNNHk4DQ+H7HTnczYzHM3BmetHPBzpDgXgKB5O85HztDwcGeF0bVxBnIcjefwM5DxdmHzqig+d
0sq83azNFEMjZmkWd868K9zqkXqWmgekFkBJaxpjwBgWUOiyc4CGPs7wYU7U8yeKgMJAGXgixZ8o
Xi1ZlsQAGnhAA8GRdDMQ0dU6/mptPBEdR8OciAcUOq1qnx/QUfOhqwkekIiA6HxfBpDkAUkCSHJi
aQHEE2RPcOT/QCY1k+NxgDQ5ESkdYJiWx9HQkFdzfyBbVvIEGWYYard43oXJESDBc7+JV1OWOFXf
IUA8jgyhbL/BFPIaz/2mXz+/9tIyaPSMuIy63vBpdlKtRlfccpAGHlJVWcYCiWFiP2yJFDuwdBUh
gcIOUojRd+UzNTwkUoBBV+VyeOp5SJrcjgxC5s7Ev50kpaqPOd5HSC0PiZSo0gmPHCRQtkGLSJ3w
hG6D4AtUJCnKsZKmQJmCL00RpATJt2WFBo1gnGdYZzHbORVhF+s0MWMIeCeCEgBUTzKqZMsaB4pP
h7ZzQ4dZNaFxfkkHTqUiKJ4RF1AK4EookhYlq+24U4ELNuSCXqPiUM4AQHUEV7r8ggpcsCGgnKiB
EUHRg1O15IKsoR5BgVM1zRpXMErBKXt3QbnGFUS7AtQuSOKfjsrmLghO1ZBTLU4EAGUAKE1A6SJd
SQlADZkCif/8z5yX5HvWUCmL6EkpUEyVXcbdZvy2fbscczWtPIVZYyaIe9u9Y/8vd082eG5D1P3y
fTKZfH2CgT+BXCCQnv/1CSR/gm75HpjnbBjXthipiAMVO7JX33f890PEARdvZ4M+oc9pxoBg0uCs
GLTfG/IGq+hxxCBPAya+AJCibADbLRAjGHAU0WQh8DjoWnIG1hRiY172DE08gxdQKgtB8WcgeKTr
5dcvwdOiibdgw5uskHbNbulL5n+ff4c+4oCtgGAD42Eb3IJDslxufQIegiHyIGQieFFXyKbLpd88
FO+xAezQ7QvjkHKZkuShdQVopQIPuUwdCqWBbKZtDY+X71Kl5zNV8PjSV9ml8IYK7IHT/Yq3AGXV
pNuhrzwbKPKWvwZz/Omkrj9dIeUolwFioYaVYezH4wF4saaYjBEqHA/cVtRjr5Dhl8sESQ+uLZyu
VBgol4lWyfGWptfbd9ezaxc/vG2Px81ue2Hbd8kSZaX8xtCk05RvIiJ97LHk0v3+Vz8IwY2CuBzH
pS2JP4RJW/S9jLbdw5vd+Xzd3374xh4jtv6SCidyDPY3Sd9yTJy7Hv7iGK8hTnjza668leh++f14
vO2u4+hDTvYfN/6fN9fxP97tRrbr+LcJHdzYBRf4mOeV2eifveT/mUHPsO5fD9zcEL/mRS0ASC3S
l4nKzq6v8no+3jb76/YFwJinYxo/oHver0NOsdueduORB9HNIwjTalEKwnUC3rjhrX7vkF6AuOGr
j+fw4xrx5GGPlgiKVFcmV3IjpXx/4R/G5zu6XHwkN21sGTZGwPl26jDf1c2TnBjSbvAcnz4f7v7v
2/v9enh6v6P3DGELmWabfXv+PAfMz8Jzc1LsgDI02MQjY4g0Em3k5HHciS/nWxgEgB6JEFw08/Lk
/3b+gqm/j4glk+gSWBbGxpLfzfY7hunWrjHatZki6BGVZAquHfKzeXw59PyEluIgDwri7z/yc2z9
C3Q5Lk343E+S8XOWESQZIUVpFvj9/XqbcOSH6nCTDwLLxzv5Qt15dww50ufx+9N5e93j6TGeatsS
hQWqvV2OBzgv14PT6SVZusADyzwVEHqNZiqFdTm+c0374TiRf8IANZOTsvfDG5jR5NEeDxOmRIem
dTunaKbxEkEaFdlm7glE0mj7LQy9RfN3/UWb9BkNB9jJs39dNCASF5Ey6GSr/Fn9ZM1EVPp/tuO5
rpORUJROQpb0UPg520UdQKPTk5cf/I5t8vI29uSnifKDAP2zRyTYqrn28cEcczydv423MnMQWdJl
H+l23+4+WzGJJhQFUiLqJobAMtIccRhBUiwAW03R3LyN15exdLlukCXtQikQv51JuUQwQgTdrCXP
n5UdQQ6FhRYIVBRpxH/MXOw4vmx339G9Ivc7FWckS+RFvSRUyi6qgG43BNjaCuh8XWp6iZysvN6P
iF8iFdiC9E4U7QK3VwShn0g2sww2HN8u9++bNaXaQx5O774is0iwqiSLV0dFh5QlVXU6hxkskz95
xQQnIvm70fmPBDdvcnfiAl1xSCGZzBVPdlyf1/Hogl1Jr3uKLT6nIvZGHGyRXM6aeV9frXo/X94v
iF4JscWNLAmsov3TiJJ9t7vdEIojT5O5qKmRst2NttUF4kVEOK6Kss/xHhyMFRgw3seWv7Y68+S3
SUOjrSD+oSLf2WrKLr74jBc3NZ5o46L+U0Su6+zbc/O2Aq7bVF113HtXCbsmJcRQjDL5y1+2Ph11
mS548OO37Cph/y/l/ofL9v76w9P498N4/e379cv4l/MPdodnfka7pYtgYzcm2WExQbI10XbozvjD
+2lnH3d00CcOOv2wn37ycPKibHtntoVZiMGta+YeKTFDnyH52W7vE3s+T0y+5wDNCeAmiWg4+2ix
6W4/8JPCXPGajmeJk5fJWXbX8+3mccyeo+GAuIv8bnvf/nB+svGZHwpbm8xSQJPB/fPhePzFXcYF
lH6YXDBnoSLf18S1S03qxmUAhlDhD6+346ZjwQ0qvWxHwf3ZXnIZJcbCaMmR9GJXJvTlgAQb/HZ+
v+5GSFShVK9JLbAJol+a8j6pwzc/sM8uvAKMb6WHiuTfWROjawwF98P+uv36g5+yG6atjz/wQ3ct
lNDG1zghZ9PVkegXbDnO+eFq+zPGH5Y9SCzInhBdjG/O3I4Gipmw3HfGV0N5MF7QvucPk0f3v9wK
Bhf1ZQ/TEqJtKVGsbhdJ4/Z5/MoT7awpm7TTZr7dpA/On62E2D4/82FP19yhGG66OTTftlaGWVtp
XB+VuyrlT0UhPjA7F4E0S/lXBgq93+X6fnJ8/oWlLN0PzAXnkT8/uLUul/PR3nci14mXOGDzYIAm
9fcKcj9wJ7fiwkn8LsKNJvEE1xlxu+3lh0lW88jSIqWuzLGChKY6yB6Tl2IMxPlSbg76D34E6g8u
XyBZ8S+z4v9BD4333yxB2fEbK8lMKxFpHG5/Ok9H+/H0J/tP02vY8ao8/VNgCXk4PvdjFRe5z4lD
E2HEfZGPsoJztJwAjBKfZIQJwgOq30+T3Du/nA7gUi0RXiQrl9LDZAhVUKbSjDIjct7zIjSYOiMY
+RdPdDtbHIcjHVj5YiSDqIWf/UivCfLEOi7Xx1KmJGonNUzszX50Vtbfx+sZmzfzNkHEflRb19qB
JpKV7QxuMzjzhuD8jICf2zZVhiLhGUcM/gEFyylridwmILbXnUc2D0H1plrXvBzPT9vjb46X1y1L
U82KddsHSgh6xuJrQj1LBW2X2tsNfy4rj//HmafOrmkZ1luwtD29TBZly2LJdAw1PZ6GjxY4RUxU
u6HXelDERU8i1HVnFJS7lpNuXw9+Pdft/Wmi9gmq4o0rwxgvTt39zeL3afwyHnmpxPEtMtlZMSCo
jZA8WsTU5I1O2JcluzHMAPagmsXnyoinaOmxeJJ9+yuuKfhr9tWUZR/it9sLT+Y65b0H+8BLk9MZ
hb1NrJxu0jDUTApvBxt7Kuhf1Q6MQRCl+Lyl0otKFkNKpYSwIHwSbfvz18Rccf/mt5O9WDxgq7P0
5SZqT2r9CBwjQ2Vm+yBPUmPndA7z21nG0x1zv91x3F6dc1oEQoIKZEpFwQbenS/feYCSkb+R/S6T
ieK0FCugOoaFH2lgch15ApAMmDXHYU7rVNEAs3EO70jVmHQkDJPGKBwZWF4pxqxajWk7GDnUUhG8
OdEzkslbg56SAr7ZOxG/IPWmIrIDZ9n4JhNhN3HbaD648cPbuL29TzLNr0rEcQgSJmmtedkmku31
Bxt0cCbhDx3vcaoiKartlb9NQ0IPcajAoyuw295G3gVQjE+SNZN33492jjnv+HYdMv5WkQE3lB68
1zwesUlrTYBeu748bXg12XAuQY5pd8ft2wXYAqap9C+KglJSS65bKcklhuHyXjwtaR4E8cPPV3uy
gH0ci5XNr7ApWj5OwAnMIFW8h1InVMyQc1JmCyIRk0/b/e39+fnwjQ+QDYx3ELnw6/V8emH3Wphl
5GrkIvXoNlXE2GTLB1OcTzDJbu87catxXc6hyUUkM1EUFiW6/3gcBlGnaUW1Q+euylqTabwiGgBl
Bxo5vX3DOL1rVh7/4x2Y9DR2ESUCR5Ynrl7IEWWP6Ml6h/ev58th/IGVT4oEbFPfKSvYn8Ybl100
cYLmQpn9o7LDRkU3MOYp7+7w0Zhe59TC/WwtwL/++Q9lb8KQkEn64kixCF6xNKlh+mAyLeTJKqe2
41KF0bh9GQtoDnNJMl5SOEjQJTZQzIdhh1XK4PGt/Pj/qrdqde5aTpheruf7GYlV03fpSXTe4Ic4
UVSqGkq7uZSKC+5DeKbhfD/iQZzt1mveeeBOtKa+25cX3gKRxHRLHazZCXVRMf6didJKU1eRqQtB
cWoDaSbqu8ru3bfXOx/9bYhV3TrTGrix4/4FeLC6mHmPntXr4eX1yNZZmmXnLGPWBq6yKubIP7vu
2+roUYHLm1zs6Hlrt5HvPv8wt3awFCwUY/LECO14fHbpLlvcjCK1nNCKJGRNFclTkCzixEq9svEU
ZlNwR/HG03iyDt7t/cn9O/5UJDjrfM+uQj1seeNXCgFS/SvHYxs8D8V7HoYxE1OpuD9cJ5PMvgH/
foqj6+AcXMfnyTI7gUgYE8WMcSJk0AkuHznrTWs48wKMcKV1ofom8+RW8nhtxYeZqUT3w97KggxY
4B1xgtdFCusHt3ZFwdOUtIgotvalMRQXatB85pHLPMX7+RSmvRZKP5LEdmsP0+ZscO/LfTvzWaaO
iVLlaziKHnTHitY0ZgXFatsaJry4RtKRaz1yGNIrDMX3miTZbJjaWlBemM1jNZs5zCNEAyhou3E5
URD5UMQnVNRATcPwOCSgh6HgnyKuUNTLQnbYbbc91rz5oJk3zxZs+KwxW69Rzu8eTpbAj6Ojx9uV
JSMhO8YGzzupzu4AvqngIvFpir4ARoEymYc6jW8/hKZXPjjE4St/RxTVJ8EvUhoaWXd5zS1K8rYr
51vqstPC+3Ot+kDZppd26IrUoRLZswXnN6Cd52PDZbDWIuoKrVndEhmlnbG9cqEvp5cfPL1/86VO
N96XjrEK0juADC++doCkCx9C2mvz39fh8g6AZEiUSOHx2+F2v/FSkzO0cvFiPlLc6VKq3wf1+FgO
m5DNce/3IvcSa4B0/s0H+o/37d76Rbu5xLnWau5ahjjXZH44FahcI2/LeRVzEQHrVxjkmdr61dnF
tlHNyRHc2bg47092pmfkcKpBUTijpfmHJNcSRN3T0ZYUTpzLmyirWtViCbKNMgLSHAwizZTftrzO
02qoTNRYe/f0zhY0S5p1aKkNlmM5PtvQrUw5+eiXYFuQMVVWmTUY9W5pTVyfj1avtUhtydegGNAP
VYCl0n9lUF1jzvOZLLNCjbbJa5d1AmFyLo+hvPewPzoPhs1IdJXxcM3Hw7OhiqjxlsHpvHoyRMKl
EbelZB9SlSC+QRpXSOX46VxXLytoPengxvFkqlILNalcpoGrZPnZTV8olrK0Erv2vl/nh/PzM0j0
dQalHZLibqcVWMdFfKQW9Ol8v595EdVxxVbpzXi5YJoPCvHX8RvfRtLDjHuo+Ki1v9pyiDINLfE2
C1shky8i880RbOJvlSEfSiWufKVyqxlaWEroz5fxxFcUasbIiSfxNam/Xf6ZRfYCyfUPwh4BVzlZ
qx2ouWiSgJGnUD9A5Qe/9f3L+L9ZVPUry9WUnSreqmvboqZJO2Wezu8gyNZSH2ZIgmzruJjgK4uG
D2e6v75OLwMVoOlk0WePLxuTlfR5+cphGoQho69WR54UKl8Yb+oKtPnS44ELSrBdSiEnwUcBmqYU
zQmkVi6naWVtFyEuFwvDvHHNqXO0fak2B6aTTO67oGILCpYzAcnhJud9HPcgaULL8x4rj1b+9uEF
uQAkMlx2ln3IG9RFDoziX1uluJuke4hzdI+uZLka1rR8bW0meOasNt6okT1TexBjjYMt+8OmJK3y
SWoiF36BzomkFUvJKdYaNSmieQc2Fmdi0XDLJBCmq4GIS884XhE3NjXJS3Sh+o81EMHGGgHMfU/S
Njl5GyduI9FOtvpU5YjaRQxwIMr0inGv0yxpKFpnB9u4ODBnCtOC3GLsXbZM6UBqA/uABmfcd2kU
KncSVMrdScHY0ZlqXiwnelp3IN3Idy45Md7/slZqIEXRlYP3j/2WsOe/43RJRBq+q2xyxuHafvCi
+ry78/Vu84C0Rz3LFtYUCcs0pVjpUgIJK0m04PId2WRT+SG5ymHWVkf5ANKrse6MmDSHJQNsYIrG
MIZJzk0rldcrOVT2MrhUYylbTTrAUpNi7SD5pj134lmPsoWxoP6/qoVA6K66NvP9dNid96B6RhT7
1ucyHhTTCrvackmmJUYJxV/xFJYEJqq0RfbABCSh23xq+LBOfzrDAmRAW+qtD7m5JLkwF28wibIU
pRTlJWqBpFSPdAfJDxTalTWjmB+DHJGZ2CBHw/Rh1sWLgcuouULBx1OeeQOma9JynXk5KvKWz6fj
d+wst1lZFqyiOygoML2u7FAgVVUgjtYwVBZ7TWFgqOVsNPf9fnze2v+ajyv1TCUVUezBuGI1u8nd
AD7P68g3RrQKxdy9kvPlobj0Wwkm+50ar+59WPQ0DWP3gJgpaHCVTF1xbNeYE4ygz70k5d7O+8Pz
d39NIN1U5ZiipNYQ1KKbVFn2TO4Fzjoy2nBhzlk5/V+L8nWFGQ0fLorItu2OXVtTa6/5+6kcOc3t
1lc3rhrVHBq56o9R5ZElwJlX5YkqlpxqW1FUU4xdWWaZzjTB2J2PvEBpuEkOUZ75IBEr0GSOkPLz
BUjY6t/5GuooCOz0cq0KrjnCE1W8SYibn+7Bs0zXF/38B0UCGgOjXHCz94txbqtzn1FCtaX1pNIN
yqma8wXCNb1m6HYVaOGvSVP+cfjcAx8iI8xIwYT5+DJZXjCQbCiZxxhjEhWFX+3aYTelUO2/2AhH
sa2/K5SmO0fBEuw7z8/UXehRZcQ8zg7HD0Fj9sM8r4lu/2V74+dkO+aGqdp0ZmI54irS1uYwUjgm
62ta4Q0tnUzqplcd2i3fsSE/2H/sBAQot2nTkJdhQr+efyfG5sO/Ue/YMhM1cFWTlR21tcH7yIh8
ok90xaEGj/4aP+YmdU9z6n4ys1ybAt/vJ3qULPEhQjw7xHDuQaqYi6StGo6msprr+QocMtmZ6hy7
dyOwA0obDZIs++NsjF8chf6bG07P07ssj/izSJsso+98wJobvJYZ2MHNPDfLKq2MxRDV8tMs5Ozs
3ek5Lq/A9Sc9zaFXzTAjnDqeqLJDW/Kx2ImRD3Ze+d/eT595q0jkOrvWAF9A7/faq5EwcIqjIwM3
MJX4tLDfW3KDEbAJ+r95Cpd1U7cU/2Tl+o/YV3iyM5Ph+IGOSzFD74+PvtKZIAnK12HBYj+dAgWv
VHvyDrKBEHws34HgS4qF4lIMlmkjvxYGL+omN5WMyXkUI1bKMEZiVeEOH6Yj08Xw4IYYvynUoTQg
tBDLY1gTUTDjpaHTAe6ncjH4/CtUVNmwBf5Ep5cmgnVchX8mzIGjXHWpsNDbVBp4NBTGi4UCrhkO
KOAisReXXivbdbybLDQ3m5hxbBF1de3AWOeoAAGlRknIiuST8+T1djjxrpYh/flcB9dDUAedTLI1
1tl2RzQ7oOuz9nDOywUDHlZjFYOVME6e4+H+/Ye9c7J+5E0EzURPiVr3Bj5s2eqkLCXAHmKMHB8j
RbOqYnJczGscLYqZ3uCwVESp1phSTJm+tRP4Cn04FSj1rJ18AaOBBn54MFMrzGOq5dL/+XYf3mYx
XMY428hZaG6SuqvM/NNKjopuU1MZI5zDL4W8qyDyL+WiNUCiY4FwVqWWFS9MnyyHnvjMLdfCtcwD
mITMiS/jjAZHb0H1YTl66q4X1xoYGlUfMuVF4TS4I5Q2mcfEdnqUGxrCJCXTRJT11KH8b5gVA+uS
AQEbyGSfbdbIVjGUXQ8jGs6OXQoQoH2ocYfHTHj4leiIn6Tjk096l6PbQ4fkXHTz+MEYRn6ol5Hn
S8OlGtdJj0IDt2mY8AUe3Q92CXBJj4f5hQVrVZo2p35nRsObEoxoi0UPztZC9VTyo2MiX8dv/HiV
XuNZEp6eWz7arxkLjRRm27+i8UWqaz7QQuCs7gquEAyqYawBJFwaJprNNOUgE7nULuaRzgewdVOp
nm/fb9wWYvdgujhieC7ugpKaNtYm5RwPPQinLV9TIkxxYLXLF1iWR1W/gsS93EbPNjsp53DaWcuK
l4rDgDZqXMuDaHS/GpS57sL822V8+eFynbB0/V4cPCCK9Jea6nxoQsqa0hlPQaFZnPcee4Qkj+ty
BoyUcXDyniZRQn0R/3KolifdknO+nsBYhb6vnF1HzVYww65DAVnfnzF+nZ0R1vPPzv4C/cbOZAJv
qHVhtF42D1zIAhvmDdaWQG2tCDtTMz5FgSwE2yqVcVCxNdmqrN9VGBrLF5+tIrYD03qBpvqIVjPb
0YLn/HLwMQHWXdZFsz0W41zPX0ExjkEygaxV4d1tyS3y4qQdjEiJ4oAbr7oLVmkrSkZk0HLBpCis
zWrLY4VyjZM1i7ME2muTBlFqAyBEO1uZH3LwyxjG08TGoDqBEpfIFoWUZDqbX4nWASogF7QQTjKG
6nb3DnLZranfsFVRfqPZMVxJoQwaemyY2j4Sop6rrYJoY3sHFds7uK4RD4OS+Crxtti+FdikFF9R
YmBGyMABMHwl7NAhZ8VVCV5RG7Zq25p2ZH+m/bibbgwakwcmIBH7PIpLR9jC1cSR0LyW5mLJyxng
QEvdo4RlWmWA50x0hBncpI+W9Opl+/j/nQ+yFOJp7LoauMOo1WBK+UMFNBhjoutJCJgMdMZhEknK
oB6oxo7UvfPVlnQtHlK0+cGb67sVJL2RLTP3/mG7Xjmx3xmJNgU9TP8qzHVXRY39aNQihNGu0KTX
Ky1gQEyo2LltjFUS+IiNLnGht1xnO99g0vWMdFuUW7FTry+bbQ+9dbz5wphuyxyU20QL/DY8pUvb
Kqy0hk3oitZXJs5kamCjKLQS2ZE1MaJQ4q1uKJUE4TuQkYzp/Ep+7oHma8fTPtP4KNGk254m5Fj+
fjk88/EewxovdEp9SZkqzg1eLdxyETGwFNCg6INtRCkvpeKqBR52OIb0G+ticPMBcq2zkPDYHXCk
/sTnYwt2fNcXAwMP5QYglNUzxmZ8+PJecc3NC073nRa25GnF1FGweXngGuRW1Gc7toALbar3Gq5m
OP0cVwVwvZGK6XIDOQh+fiE7zzpXZQhjRKoYRnxcwldHaKLRpSybL3cC6wN0dX2nnWR4fT6C9kcx
MEP2ma5jPABStJUbYqxY55NJXfkhS6Og4BxIMnu3tcqoOIjpsJ+k44HXZx2O8ZNRi3yN7KDRVKFV
xYob5sByLBeiIPoQpZcFecYUQQ9RMzCuXraVHf+iuPa1Z0UQrNxp1fCBSv/t7vN+vIC66pXHFf2J
fMWN32vCB/G1KRf6lmxbTYYGJAKeBKPOT/f3G8iZVo5Kr0yQ02hEQ0MtD6RTCJKihtOH5BtYStIg
ccsF2/itFy23s26JdOB+c6FXlm+fMYCWgwDzsOMkjvdEJjMDtM3Xrwp3NPSHw/T/8Erc1O5pmQDw
Vvx6Zv8C5sv5sL+O93fQEklXz8jMBq9ZmdX1dbHZukf0PB3ub3zdabtqP1y1z6TDlqDD1PWCHbZE
CkiLNmpHDF2bewqifZk15oaUwPl+pjGAA9hgKq/sCY7Sjmm2dhRIH8W8HJzPBizBtim5614VgwnK
5RY46zpBhaykzvkETLDvGz+ajR0vS/TF18P9lbdfVacrZ0pYE4/n9q4rrTakyrQ0akpqrgkvO+ut
UA2rRIOmkng0FVok1EcmaR23VzBEfxB4dHJpccF6z32Xq18+Tex/sbqQ13xc2+Tb4XabBAYaUajY
oYDBEz3fRr9kvXgMlVXoq1oYyE3GpGny1ULrJdxd6I4SH5xAMrmufM9nD51+OjamYiMuu7cKzQ7p
eEMsq1xhjUIpZ6WH4tKo5RncWz6Nd9AySVIq68AdGEbB5/dM1v/MTQu+FQKtZt3MW7MUD+zEazRq
33KZRyyY2o6pzkg2StsFhiBu05q+coiUK4Y8vb+h0Xfc5I/sFqnSGDVB3E7bImEeU5Ewvb9WJH2N
k8erJc6SJPNd30+H/3gHmq1haiLBnEG+sJqW7A1st6QHiHdLKEYbZF8tDE6C72Y4022pqy9HYBVj
BaT1T1VjZzk6eCxpLZZ6D6rYHZWbQ4N2b7dppLkri2TcvJcvSMDykw/E0oVbzNSA1XqU8/0VhGO7
Pr/hlst2o63qauVm9lxO5P2y34J56Z0sFqfFXbBspE4Xgy8xYg0GEHRNcfdTMZRkFF718nR+eb/B
xdNdubQKd1IJ0aMse8iOFkaF9GXJtJR/w2Ex4oNWFHZ4Bo7ulsxxqe0aFtkwyy2B2uW6GjMm2Nth
vwcTUEg9LD8wPl2OzBJhdpRU2n4m9z4Ow9YIdsjXWDlgJc9SD+YDWw1pTwmYLNoUx99RfVAZeTUD
Gtw0u3nFEvq2L/ZyWEF0HE8voJikEVg6zv4elNVa9h+h+EKLgZSG6XygCfUyglaCP5MGCC1g9/P7
7pUf+ETHaT4WEVqBUBAH3Hw09/1kVZ5BEIdT9xnrprg5ZNDFFTWfbfB1MnhvhxvqIOg6Lge2GpZQ
UbDVCRS5i103YMs6rKstLHzkc/IdN4TxEfcwLiQHyW24Dv2+izQBu8K4pfb5oj0QF+QG+T6MoN9Z
fIFlpj3e+5JujmRjXobBDXFP1k7K+e1wBxQlZNn3LqnwVhQ3iqfDQHBkkIbkmKnx5T27mvO/c9NO
ijJWMEItTwYgb5dNb+UWD0reHu2YfRv8BJHikJm+L/S5spv/cFVwK5gAIJ4i95vTHu6AE6r58Hhr
6Pd3WT5nev6OaFzMUHQWno/n7b1QLSXlRyJR3igG4ZG+fiZKIeyutSlsGz18PErSNlmg8Dnh6LuW
092ptXe1Uzl4Y69n2iton6TLdPD8PsiaRrjQjYwnXDVphnNd/+/0GdCIDTO/KwmQUvucr9HvG94T
eRyaXVwf3zELqEnnEpwKKgTnImSZZTw/84zCTrVKRavv8mOFaXnrCehcQ0V2TdHGIunAYgV5M3x8
oi3KeDdMvXIgscAxzqIAU5fT6bOyMB/LOSWnG/8W3QcVm+92Kazbayr3fvrSe2f7sBZBTU9Iuh2Z
lxEtauKzvlfItrHOl8Q52cUXxGaqkUyLSmRp2DilTOU4kiBbwDipnq3yTdeCSr5oNrttIppsl1P1
kIK+yU2yfrST8SRV2smcdMXkp3X/xi1+Zqv/uuKS37kdEbb+yQZFRpaGJOC960HXRTi9eMMjLrhm
7WKHL+/BrbetmaoCIRA5HarWK7u2uQOazaqxZxlwjzl2SDdIKsU63bxZ0Oli/C9G/Qt9EC1nsWaj
UTz/94LbALmk30pqcuADLrlK8pK5k2/ahaZu1bTnLltOk4aYF+SxMeahOM2WmoigTJroXbeAoaua
L8SHFZuh1F8QKtHBwJrssPXZ+tptbxOOTr57lq8S7OracyqSnYpbgR1Yzu3LBD0Obdsy1mAaS7Lq
DRvQbaMqG8nhrKyOW+CRuBgFy6E8Ae6xhZS3mMlI33TUESigBX7PgG3JQ7kHoTVt7WyqLy9owiM3
Kjxbz+Has4C+lDiAR6Yb4IlZnRkKTeC5ZX+Kl5V9qXeX3hIiXury1k7HuUCmqY7plMhHzgvzVzt2
OMHKNG1501RVRoloFRaYFy8Y5ns0LFGxUTtwWiS1bMo5byoioWNPihENX4xoPtC6XdhrIkxB2FFn
Fwxf1rzV/BBJ+V6Qnaop6AMvn+B84aZn+lwe3AG8oo8ayyaTxKHo4fmfrMix7Ktz+14QJRphUD83
1yYDxhw3xerYQIqookS0hhvftFilhXYbWVmluxQqguBwRLK1lnt2FBnKtnTZicPQqi2NziMuQNp2
zO37+BewYLxbx7oqEgZ44XXb1SwwSG+MEgftgPaCpaSKywt0ixK8LsAwt0dv96DcWvNFS8xqRJ6T
JdfIkB2f/DS+HvhYg+yy8dVVrfykjo+2tfV0vk/0/wSG6dIKsZh8iOAmG3wi1ck9+GF72x0OPJyW
UXsxurN1sRi/rfx456mVJC9D6VEmKztx+PZ4HI+8g6Gr17rR2CcbKmrSFr8OzNNiyxdoTdVgCUPE
Fb8nNIC7b3/NalTDD71TWEOt1mqAeUqC6ejMGqk+RFgwVfUHY9Zh8WBhQBM3ooVtDy8aaKYRldvi
J8MMDMNZzVZXOOQPN4n0Q3kQBzSjVNcVhufXDF3RQ882Nq7npaCWVpq5fSxnXCoZC9G0TnFdtQ/+
ndVfQTP7hkIM2JjiNLs4FRM3AzblnO0ybRnsiJNDNkSTT7nCiBqrAKMILqRTqLnIRIuSodh8IKNV
xQU5j6M7KhKKLR9Vo0PbfPwI7K0WxaEIcZBOqU1RNR+aSYaHRrDzdEAHABjJ1Ber7+ySerAGTZT2
pFBlMT3ndFEwQaLlxgCQ8hrg7gnV4RhkoE7XzclGtEwxjzEPxICCV9JULWwJck8F2twUSv7EEkl+
GkJfk8wKE7KhBNC9Kc15w3vz1FB4oexuVz7gQIZjuxEo/aMiKIp8xeWbyFbRokLSlaUHNmKFKjbE
gFYNJ0+FVhbroeHdr0dvBwdipMS9vBcwhsAMxTBlMtUPV2Zq9atmKCNPfzD4crGCUfG5KsNcElS3
8asnSOsTCfIz7mBQPrDyyxhdeb5k1TMYrMsZ9A7b3iksckyHyxCSW0L6NHQNTRLnTWn9fLWCxZve
cHpkS8tjmVkXzN4e0E3SFjO3FXvlDF++/cDV30psbUo9tHNOujzdWtLO+NxoFxfW5OMpxGVK5Tht
+ig2AXUNijklwnPLV29qorgtLypUXjpHntgIa9Ytz1vvr/yYbaNUrWeKt7QbXUj/JxYymGssi423
ZH3AyxPvJgH3lK6z4ueiG1VZWxFkJdhnZYojW2fTDzntsucKEdMVb3UmDg2kPk73X4UU8KDRoS32
NdCI3vV+5CN6ZAirjZ61smM3ZUapyY47UsVSm4AzpMrXYw3Xgc9S2tj0slgHyXX88YKf+FhpmDHv
/lV0tnX1Y9jtnkYgnjricCXxy8IsJv62ui869rFoqqpGhd3DsM7nlOdOsaZ+mlHEk7XaZmCWW8DI
LT+4RUjUETqP0Dva99xegS++bubsuJZ5PKVN0roXJmc6B65gDaUc2sLoxBDr4Idt9gMjkGM8oLUl
lGw8aGBaix5TR7f3p4m3d2DgnFbwPnNnanmjUydqlvDxxtK69MNgnwr6BlqzMwbTqg3FW/KCod80
WPb1ej69oDSy0k0xYurqLEAESKkOjeOmE6y+Qv9ZZjfYLvtvsEPCprPTagFbwA4aB7iKDFQMw+eH
mg7NrXXMmLT+8/YW24KQrWUFLkPDeZG54WswSzJk0/W5lOf76bA774GrXMqWpBUsLk3Mv+F6iol5
nD5SaK1XzKow3G/I11kMiApS16YkxnSP98iNp+3T9HDn52dUZN2XJjd685+f3GhaNLyT5IIKsaXO
dHx/HKk/xaGDpinvrSqZw0JyC73gPlyQFzEoqOjUYGFElib+J67ztFKoMHhIkjpIK/N1rv0Yx5H1
ymhaBcXXRhNoYJYok0hcIpsHgSUOkrWkH9Y42BQpLmGWrSnGTb3VC+o7TXl8hPXRJ4/jch3f3nml
2qgPzD96Pk+mBz+plZ05BTbY3z6PX8EMiaGvxFXliJau5yb3J4KNXxdJhj5bgatEHvHQGKL1HM3D
Uoi86cqTueJ67NfRx6Jw6hnTBkxsgCpOSFWEuFQobEGqQZAaTRfBbW0Qcvr/Wbtt0gI39837bdxM
eD9v3sbJy9vdmCi3dKOg3MlCna2999zHPV6ZSgn/mVg+c6sZReP5xR5iM1uQm4nlnidTa3M57O7n
SUJcXm88SF/G6kHa0Qai93yze7/eONfZf9guH7oxi56UnR7c3O7b03573W+cjuSvo8lvL5L27Xw6
8w3e/reH5UPbBDuEVtCJqTclDDbxJz3xz+b36b69fQc/aeJ1Wxt6cZ+hVIT/rFs+s/Kp88otmIqb
3evWctd4dYja7K7b2ys4u4xnD0EoC+z1fr+4//5u11m7v0224+fD6P8+ibuN/+fNJJuu4/5w5eZv
9aTsbLBBvcGZHSGubFkuQLpt3rbfNpyx0pM5PnYngVXwIoS6b99Pu8231+uGHCtYTxMb3ja77e4V
QO0WqA6bIne08dvlcGVkek82VLqjWYoPG0jnHMAMiAfQRACDK9H0xHC5Hr5Ml5ivZcsFIYpEBGMl
lZDzyANrlm7+4/08yaXNhJp3AKNdYBg3AcxB+NttMymBzcSDDs2WQDZ2PWY4GQtt1qApevfn96fV
eTZ2RPgE++2wsVV6Jx6iidTkbTKPKnekl0gC9piH0+ZvPNLnGmer9MyyNfb+epikzGQe3ufLTRR+
3H7jgmwOZ/FMwqpTYYRnpLfDbefZZ2LLzThpGasD7bleD/v9eHLsak/6fBiPe4+DX14Pz/dP/+PH
X7I/ZwWcCXUJzj+KU8c+8Bvn0+j/EfzGEH8jphU/8Bv2LSa99XpGP9LHH4m2h+PYidB218PlfuO/
7uMRrU89eJ98+35/tZt1dt50msXTRjkYq//1Zpei38/xv7rZvuHz9fAy3c1d43gO/+lu+m/sl9sj
cyT7+CbIdPsqjTtfMwRa4M4lP3qu/K/7zmuPTzdH3AvMScD5n09f7ra7vW+ejpNuPx7Y5cgWyX0I
1JZozXogOSrghY2H3kToZqEy3YjN9mjdWBcs2MxL4i+vlywhhFSYgxJz6hzC9YcJ4f16ZHm/J2qp
sRbM9KfxKP+Xn//omlCvtuDukqdhQ9hMLK7qB9hsu9uNlwX1gNVMjp+3u8NeTmbdN6aS3fOZXD61
5YGBS7dO8VqNsLfGYWBXAKVdoIjGOqDTnz7g+buf//hb/8J/OG/3E+ePX7jeFA8pEo2y8U4VEvi/
/M///q/W6NlP8vr7BOY4QQNQREI0IVpVh3lkpHlsR5SRXZQeZR5RmzCZCRywI2i3xDH9+WHy+JfD
SwuOqdJjdh8F//u//nbzP/4EfkCn0iP8gAsnbEKoavN8Pb9NPzMJWFu7tD1u+KiVB0qERuPyHI3q
HhAMEGsIJQrv+RB2AB+qlIdystCiZXLXU2QBAShzL2DPocA5IlZF1/uVtv4CT9v98suTBbxF2pPo
Xj8DrG1ySv7pvHvfiCplYYbIU1YHBf7+AD39+MvPGzmROSaqNvcMnLgXVeLehbmQgu3JbKkhTKbp
lHiU9EXyMz0RX37chzeKv56sxHLfuOjtBrY8CboJyvaXhDEP2+u43czAwMekO9+uzlCt15pHu4lm
4sH3+/OmB58PD4PDfHvowsXeVTyev1pQ/cZCyijBZmkPdPtKbNdUGwaxX6ajbF7Hbxu3J9G6T/nP
ZwfclRe49kJPdpetjZ9M5BYE7nh0J+MOYRYorpAxOPFXawY8Tyxw2zyNz+fryGsVB6UjZ3E2QSuC
t7tgYse0nLjv+/g9UZLRmZz8Evdd8HC9qNzsbZQuS3CtMwu9JnFhcZcgDArTXmVz3N7um9PEE/b7
jbtw1tDykMwCyS1a7UK4aDncxFGXSVKMESIy3hzMUNbhfHo3e1HMfuvlfDzsvm8OL3ZmQYhl8GBk
BBNTK/FgngDZi/XxYsI13IWe0vv5AqIo4afV8nHrKhumP+Xq54FO8wcYFhhuwYsJVuzjQ4dY2PF8
gvBa8uZ+DuXqRF+3E38Fon6ytRHb63d0SREB+n62VgeuvxzfJ7Hpg0NfDrfD5Nx/Cv+OdZXMHHtq
E9Pff7b523YyEDzbWgP3BuDM0qNNTQxX9LH50s/c79MZwHUbIhxhQwOTjHOQrB87OQA4zuVPohYI
Th6bwGS7SZy+2DKWozd1rOXHxKw9HOJExvkiXkN5geQvU0ZNEw8kF3V8umwvh+kQt8v5NAnI13Gy
ua8ISr9AIev9MnGS4Ip4rgUPLxZ41nHrmxnNE4JO5/vh+btH0+ly2dgkyPVs1weO2zdwxDa+ne1u
mGOD67fbePgAUCRK6x8MQZOcbx7O8+EI3k1EdLv/mxcNTAr1+n6xoa5wHvD7XXx6Z9kGw3a+iGfX
d6fbF+RsPNMAqBHjysXNKEzwmY7kY605GXS8lUSe2SdDbiKl23XnY69MtaM1nUwMtunOGSv+YpfJ
Irxczy/Tf26TA7x2dfZXjCSrxkql6U8TwUy0eJhYDYOIIdJW+DE3WQATpWz44nYHqSGQyIYK2wtQ
dxZDgqMWyW2/WFG3y0St52sIvZ9u5+Po/+6EwP78tj3YHLr7z0Z72P0IpYGMG1ptYHiw8mnQIU7x
9Xz9PPrfejqen2aJ6Qzy9AffLufrvRSac7/VL7/lKsBamzZ3wme825+bP/JVkPfDGxdeDcos6p7e
Zs56YRYD5s/j0s5wG3fvVxuvBQOeA8Boc7SWbduQsrR5hEUyPp33SCHqaHC4DRe6a8JQs8v3yXTf
7Fjmcp+raHEM2v0RTM7xvnutPoQayEXcH3p2J97cF/vDbSKgkxV+07/aTIJ0opRnmyByT+r1yWn7
5fCyZdezucSyDqyjXO6zc0UnNvnkc5bvx+NEFON4ct/GfwxG92Z/eH4ebSFyyccykce7ZskYPAIs
BUR70i03+FJfPYRQqAs/eH7ykYi7rZOa6NojxuZygb1mIevI/MptGFIi5Bovr4fjYZ09c4Rpe4Pm
6hxvngD3SqbrJOdc7gMY0L8u6Dhf4igvUPwMH/7rLlfO9XCGpQx56T/kIba5qTKPt/LVJrFYhwVI
Sm5JUHMBWD3Emu52UFo7/0+3HDBYVCXoqmeyr4DBW8UlSQMb3ZXJYA3IUg9N5CZ+c9DqnrV5qCDx
emV8evFfhDi6rd84WYfQlc6cOAmtXOtPiH66p3WWiPM1/3MW+9MlPWhvC325TRz7Npl51uq/js8T
vNeMp29tTu9vuhGwNgiypFpHB+jw9jIbNLb9Ik8z7bLezoERonFua6MTUJOjH5To7WL9Yea+Dpii
wHwpQagHOFujdTPDDLp5OuFm0tW7z5PQevpuf4AFrRsCWroChVBR83hl/nzd4/mG3PnsnSsP5lVX
gCkGcrDnyVjfTEbz+epTARtXlLPRjUbBNXdZucBsXVVNHl7A4mTjhejEhi1vapfFlA6q1SMhUub0
52LD7CfF9OIKDs6njSuaKShVB9hQFDgMPLyM1SL8u0QAWg2ueGqIkeDbeP1iMzPvTz6sw75EfF1r
m3deT5xGG+z9NAH6NDvPmfBJu6ze9VhvlwDefInt5TLauoFJpHAAfGzB46Hxwa9epyUUl+thkiL3
w98LGO0jQmy1poiBLhpTCAbQ6butHOF5XEce165fyJcaOK9nvp6tibJWJ5YWvnXBz51unF5uhnaJ
D7iY9Ov2Zu0+z0bfd0dAj/G95gjyIzvzNKMJsgeXsQypc89mRXLRIsVxnKLsrZ14EBuycv9+I7/x
zkIIAFpl6bpidbeWTwscAEQsQEKT0hxXH21d337zap14yrHBh/Zsu9nN3RIsk/SEV12FTfMg7TGv
Ssrs2v3ZBl7lGjTcDxMe7xYiVI0JZKwaFf5m4xQ8GKKvnBoIwnaVGfGQYhrcTiib1Jjth6ElELmk
SuWnwGscIiGEhIaPL55dEMXWYnjP8eDdltv2tH86f+MyUs5rCTawmpu1g2zyEJ2iqnQoArg2gtML
uPV5Nl52Tl7PbSKr89eNxdPG/5VeBv2QjD/UL4Isc+4qzyrA1AtMEqB8OPzHztksMP0GF4lR8jHg
0eUkM0iv43+8T8D+5GH8YQIxce/JmSG+MHsC/DTev07e4uTz7sJEDPArXYrqUAXprMnwhVdk3juc
aPj8AgRRDH30jUvxeoQ4cMt5wPdtFGSDr0wIrpeH4KWX+9T9iyDNLsftd09mt3H87C0QZ3z6aLMz
dK5nUOXRxkoU7abGWwco/qyD7+Owm93r+8kaeGyYV8at8N7Rc3Xcy7xBWyvkbJO9jZO45gUeTJQJ
onP1NV1A6Otxzjjsx/N8v+P0Qi/j/RfbE/47zsVuQpInZNq0lcw6ZA0nqCGSdniy4zxslHUyGp4m
SeZ+iAcoCED3h6dWf7z9+zUIyQD74GaFsMBiSlR2wv/ZLufzIK/8Go5mWS7iE5qdm603kPMEdN02
Rxt1BfF1B6onuVHL8KoL1ZIOW+/7w9ly3u4zn9icC7NtoMsS9RBCGmsA1gry/4IHJeNpGntLNZdv
PABzuRdbC2oX+HBmo4OpYt411M+GiKCFOQeo+c/b+PY2gKWNorwzM/3GldEz01A9teuF2t2qQdOF
7kB7Hx9UujrOHp++3CcmsrI0eMPMHI0Qq4wZStF0/s82Qs7BQ9A0gSaN/9Nf2FOXNQz4S3bR3lO9
I83eiFCov7cFQR5rM4n6CNrnw8ULtdv7xUah8/928/R+v9tizeOBUSxO4s8NWZ75Xb5uvoAdz/p+
S38l+VcQP34VgyLbL+0Mk+nPEExaQbK893Sd4O22tzsASAbOuKFkynl53jbaPxNZOv0TIK6YAHC9
lSLwoGur+Tx+9xFR+w+b6Z82jpvGm5A9UBqxlkU7PM5oDLrKyZVVHHo6qbcNtsfpf+Wi2xZ6Rwq9
nGOnvdQZTxM7Xa3Vvh+/HCZ5uplTAHu7TRRtBPZwYx2XC6CLYF25jNjNeoZe5V3Pb6iQp8vWIYHD
AVCxoku72IWPrTzibLre22HSHxONT/b0ARVjdbEYSzgmDeHRR6gAhiQwrMsi5xicK9KeY+i78Wg1
nJVCz9vD8X2p1mCz7TrmFkkj1dHXf7r0r/uBxadwBpi1Z2waChzawm5JZcHcEBUiw+9Pi/s3AXlx
QvngHJPnAyeXLcguFgcQj/vL9vrdY/A4uiwZsu1ceXhMxJJQ7rc5q3+xOuo2OXQagIiXc/OeQk7f
p9VCkCs8xXUMXTBsXsdhy5D0vnNpliJN+6wxAGP9ZzZa4h81Zq/pIHobPb69jjai+rplp5V4PJPS
B5e9MTWEAS5HSjKi70yDfqG6aP8xpGlD4NrceKco0jKwJqE/WX6TEwxOq2MZg3dGQrjJetLfSTzR
Bi4XOq48MKluaVyEvQkGpUtV248nHHjUFvkrFoRYi6efvbLg90Mjxz2yJlzQkdKkyVOZ7ukPYSef
QVJpI7G58cUquAWTePu8idIp/mOhgkcvgcxQGWyB2pL+9Ha7Vxv2PR7eDqg1pW1J7XbjSrdXh9vY
AE6wB9ghD/5QEdZgrYnBdI/oSkjt/eJb3+KvgZOSWuLWFRQ365M6MQcavTycqFMDRzzcODnjafwa
+upCBRIAHRWZsx1VJx6PuADe3u/Tv3qDBkArSZ2ydfnlw6VdsqHqeUiZvg3aqEE/XjwQz/0MSjX1
Er72wKx0z+DQxT5w1ZZeslyeaqz2H6L2jxQoK69IrBOlXCVZ0Dv0ZOzkHg8jFt27Esm5QtKWsLwf
fZ9PfMVgWExwbfd6gXNlnNXufAo3zHj6s4/9w3NNuEMeD0VFz6R1pSuxtRC7NJJEKRpXhNzYj/9z
rinhqzicTo9aavKtnEEackzB8ElSTdkiVidXo/qgHS0JCVoDA2gJYlx4Vpt5zV7CjhF9e7OZCsCw
7j5EwMcMeIgI7kfLn0CuC2IZhj+7pRb3MmmpOo3XkVK6WBswK1PfvBoaDYlVaNENENQ25KXcCI6F
2V2AzKcq3k++/2Lypm/zj/j/BVsruk+qD3tSfejzyA/nvfHEQGr+2qVqk151sewOJ1tRvBtRXyO5
d+v+6BaycOqhSBKRNlurudvWsDr/g/ZrhGwbIoYhIm2Ru3aABYsoUiQbs1lLVse6w0tlkJ0aY0/m
zTyf4v4bQFsnCdpMrCm282I2x/H0Mj3qhEKANmJR68VNCnSQSgWeqlSuQPo6hnkMmypmIjBim1Li
Tk1+n22BsToueCMAXE+sUd/rkEmpT2Zd2cAnNaqhxCtn0wIA0TA2zuP18Qtb6bu9HELRpasld7WR
SxG3q8RHjaFdrO4UzsUNj+dHFZzsJItrAGN/zC0sHm+76UdBp7khgwKUGxknOaBvh7fROTgnW2xz
RIlzBzkWxhI2Wu5s22hQXtjdONb4zr2sxNuyItIOa5kOEU20kB4ita2hVMj9krNgrQHA19DqWC5I
ZsWE5oOKz+P4B7dVUBgVuMP5MEGs2TjWwakeJ4YnvG5nL2eidW7NrIMfiYA0uIfy2fLx2jiMgfS0
fOBwZ/9X+/evry4d9vVkJzyBiQ2ksjFGOup/ErXGOoyQqQsxH1sPf3v8uv3OD3XQJgfeccVEv0vo
rEgXsaubmFL1pywUprYyRbKXDNt7qLDexJBJDQ2L3JXHb65//vhBWGSSSZxK7AzgyXY+fKmA0KYQ
gvn4Rg9iI6suC+baQSc0vnvDtIIhuoQhZPPrGYL/DZGbC1L/G5P1t30eoW5oVSoW4DV4KPoBint5
W+JGssTkn3352y1YM27AKEjzyIE05rl6lUBaBOBkRszV5d5oC1Gqsdg0p2JNv1A+FB/wQOHvzte5
iLJUQeLPHBsUXRK7DczgUwIbCjq4vj5kGpyT4qFJJ2WchuEbKG4P2PZjhPi8Dp2/6OS7fHxCjwHf
TXm/oJvHo5F50dm3QheMTQ1Kumj3IxxuJUw4R+xrIO1i9HtrTyz7BNBZSAtjdCMfcMNXT4UDxWyl
sgUlKnR1ZZAcKiYRMHKmaG9QUG6y5FxnCvrW/BWbHD2lJyOxajjlw58vJnpJfRIFaAtDrW3Il7wG
SKSfNg4qtIT4j+MmQ3pUsw98He+Tdzg5Y7vDjXVQPCyVaYRZQSPBLvf3EUkSFcnGtnr1odX/Ml7n
6nVf7Bj/ebNqaLKN69cDcqsH0rcYcVwBcuO69J9AN2I3kAxbVOUItl9ieT87NbkMruF/wJCmy2XQ
JvoB56X4WWT2HiAiNvQfPXzwicsoJ7G2aFLXoWV3Q4CJqx7kL/F+JhdverG5acHvLdmQlImP6uKO
MUk0pq3CEYN3/nxJXVp9CcAIotYbF21sQr7ZFe7XA5Kkcd8XNgcecWU37pvj4fQ5Nfy89YUqNvtY
pTidzyVhdLuY8da3DT1Vibvr58e5ZQhOZm4PLpTEzl/3FREqxntdw1lohnmE7EujnTs8e+sArIyl
b300zOyHTvm56SPbG86UeVyQ6tWYDyAIdRP5fFG7i1e5HTbAVPBQTcSw60IVXb9QwFPErru+/Vcg
zdCRTErn0ikRh7fjYTfWgSHTqVy3ciPncpzpqqFobh5WQK7v88Loqh0hJjebrzFhPNjT7XycDBD/
ItbWnlzkSazyg0IDxFiYS0RT8UnmkpIDl5fywHtyXBfgaSrfHAEdKFD/Z08CEb7JNwReXADc0fj0
G6/jG0RFLIa2ma8htJ5OYtJ3gfoZslbxXne4rMxFGmIKJ8lEhmEHz4c42cu1OHwBsHRM5KQzaG+3
4GPfyOwfttnCn4sU5GoSP30ORYWbt+3tM4nvw0vq2KZAUvzzrtGNG9+9mTfiBFFcSh04uLHaVgwm
ThB98tRXeTolHgrwF6TVAVBpAi2UvdnNKQEEP0LBXSNKTuEEUz/3WtWjWJEuArUUjdvSE5s7iWz0
9u736znz8hzCEOBoimDYTc8NKVAfCD44MgCnMqQ/xVGUoWM9JjEGY90OREQOmXdZSztcfai7Wyw7
lX7cR/Mx2ArAJuzjxlvMU8YIK/qouq/HAvfvcowYqdPNmtxv+J3EHoomqVpf6TGP8QpJH1838n3S
8Yfdp+3eUtunC3gcX1LaLSWlcQaslV4n5xJ94mcaus+DLeVGyPTuor2aB0JPMs8ewXe6frIm1Xyc
T+4hPrmKvumtvoPjqQV+Z32tLtSezdf00wgXuK+TeAPATLxrtPzD+UoXFfFbZ4CLuY/UTyz7FFOb
/O+3EYZrYAvjuk/n+6cFXXbg/PnrjDVvOlRhaoi1wdKNPZGPmKojiT6+qUuJhyrgj7zoJ77Z3P+G
jqcVQ6hkCbg4PIfOLBqZ4h2YvsmNHaJwFj8lVqECcPLBH3Ji+PwVfKNzaUYfS3GzB082bIkrS01P
Ms1LM6rt8tt9r8MDneG7GHgFPPjWmzn4CYD3uRlRGCuDSB9G0i4o18SMehf9zw45rzfM4S68yaqo
c6C/Dg7dJL8YsOiZ0v3iBpbpexgyTc0HMV387V6lLyh/xW/3MTTjrIiWRJNsNnR/cMbfFkUxzJA7
R4mS6h5UPLyKHzj+Ns49C35fgm2p2OzP4831x/kZAtEGcr6t68e6HG3u3boWVqHa7NGJ5283xrIh
hYMLfy+Rxc3tdHh+BpXlsdLNVuqEnvP02N4XyR7XHtIedh6Pxwcz3VnJ7OG4JOXX4Qj8Cim4j+t5
3i8Xv86rFHXVcaOXTPNvYVD+HP3lxmB3pHo1bnKtQWlxerRRuavVgPaBk+KYBf8rsc6QzOD8wAU+
RL/y4UrJ3KS5Zysc/S/syZ2vMpdb2oF2tulzHh5zj81fsdH/fLu7co/7OczMm7cg3NAvyOUXSGaL
/4UPQhcLdFeeZajIPF9s9/KTHWv8dNyePjs0h5gMbnrwsFWE7eZntA0D/ev49PlgG5lfPvoTLfmJ
If5E7hVdthZNnukXWG5ankghxU3YLri4eZ1OemQdUg/RkFk2rplT86dj68E8qCFSQWxoeMRklDq/
6sU0QafHaVhicLnE0nprUVu38BlpK+8px1U3YXdLrt5rWTf0bFMQSUdLYY+N7sgOHuJUuBLHivO1
cfMQefK57XN6nnfbac5/38X7kazgjJ+QDXvjlIdHUdya5Bhw3oSgI358iNvG+ov1wH67T8SKcj6b
WqKzfGLafWniGiXS2RbmTcKuMfe5JM/tR2UIMl/kbTtZBpz95nERn2MePOkCtrY0xleKnk/Tn7vP
HNv568eVTiR9TPpmQILDYyHuxiKtVi5IbJ2R6T2O+92kmHgIfYRA+r3WExtqMEKXTJlI4HbmYZht
PM+3DhUpRZBa5UHagceeYMG2MUMYJq6EWOTZ1+uEo/RUElyOrC6LyxLmG1Q8VBvXWJGSA+Cee6bt
c1/Rca2+jwagMLKJq9eWcxzExsgWOgEniK9KKrceLo5w10YKs8XGoQ3NHxyUvvpHjAziRi3K1fsr
8GnkcD9HqEmPTkw/NuDrz6/SMyydPXwdmKcZmSx6C7Q7t8idJvvh6/a7fYPjODcM3u/2QNZ3g/38
/lhEoTRuWk4TZNg81/yHb/zHVPypxhc70b1ioUneLqsAKI43JA5oKgTLF5GENfqlmM33YNhESkmS
92Sr4CLAKhQ+wZ/2Y/DnsdyhiIvNdfvfbbOi140Suk06dWtHbgG5q9Njy0fsF5Cvcgpw3ah7uYZ4
gP3XVhdxmrhvc6LGS/9Q3jZbVkBadLkzUQsB6EJioMSCw3m90Y0LMfrfbXMkZH+3rGQENazcrI5h
XrWSEPIc/YUKXUZZl0wDspHrkqzrBkKQboyMbkzGBn3FdmZEI+l8tZsL2VEsXiLo1L5s4iQWQMRR
O/TWa+iD1xAFNNALpktViykpaMDLOm9cT6d/u5ydW19UlE3u5YrGC7qgJgrAT7QIWYjnZ5+i4qdh
+yfp14tP5XyrMA2An+bmD0A2p7qgksjRU9l40fEgtjF67r7/fj0cj4edzSwCjmD8nkgiGpBIn+Nr
v65gXtrBn5owdutLaZL+Oow7RUxz1yMV7Jbl4UOjFXg+YjrFOscg0Gy8zM+POZxsRnCWLrHlbf4h
QCAd0b96odlou9sam6VdJTbVQSdPknu74HbIIRfODQ5J9FTsUwgj90oxNy9lZM51faBfKGviW9i/
muCu+WjDl8M2MgGnH6XKydVgSC9hAVv7ccVUQaQ8HewS8OtHQQJsrhy+sG3Nxh58+8zavnRJH2wJ
SWqKuL93K0ICZTaeWYgTGWuEbS3lHGAo6/8+CorOLQ1/IDuAlXgDNwTVAG88MoJugOgRfY7oVuYd
IrlePSwupuKDFAAe7rfxCNY36yHFboetk6ib4AVl8+Af+27X22RrzVWgyW4F/z/NheO2WW5759qk
dZgO9pjSyIK0tXgAUCy9c5I0TP2bJ4I/bH8O3ZAwimjiNJjQ3WAVdJi94ncq+8cOJ72Of/PjiDyM
nJwwcWqQB6mXwoPtzdJMDINznoUDoYbcqWxlC41wg1s1ufnpy2/bECz4OI6ZJ0lRiBIeF3GYPsm/
hVU8k2B6DsYUGXs8nRKcLU4t0652KgTMvr0drapDSVcTm9f9eeh0Mb49w8SRA/FJu/ge9y0YsqbF
AynM1Vh//fMf3CffJlb43e9/+vH3v5sHb/haz/en2X7eHCd2O/LVFW2sriB+JIGbtALTXwEwG1Io
ZIMD3QNUelrbCxvEfKAM2IfrfyIW+xA9VkIHgEdqmyLZfvjAZJfyKzssxP8gmc8XA8As3iuuoIcP
veQHaETHYigSvayA/MFH0LGaiAQLizS+JIIAtmM5FdHGDORy87uHScq8fACowXj5NXSuO1Jg5Ud8
rDelBSvUlhnyhcxtG4cYu8RzS9fUhgG6dlbh/Hdfb+j6LuYW0GJ7ovshQSYwk3lkjwdeFArqwnAg
VSzmX63QPp5fJoXmvor/yMeozEMklsyaSJrzQy2tTbTHRDw4YhPrxL1wsjQ3o9iWXDjcTuCu78cR
oa+Jleyknd61Jzc/DF7oT3axi6y+Ttr0/L5so+CpqCOk2i5vEpJ2xa9bUgtpFnvAd4SG+tZfQrt/
+SRNVkjZ+UHFT2Xyaajc9nRavkMULWQYY7jD3N9LVo4ASMNDZShD4H7AA3hr3eTe2tdx+rUAYcK4
X3KB+5U89cRp4rR+OEOCVdBIq4abKDr9GYjaNpOmA2hUIwEoSYbKx3EAWfETB4lRUYQkTuwgIlnQ
gmhDZyWiMoayK0UlOifBQWyMCDGMX4Iz8ie3WjLM9XPjrL6My1CeJbiDZqNJty28SXy+kF0I5DSR
eVLqEoT80/eCoy4bmjSK4y8PPooRGpnm4pHNnEZioQ19mjvWM0IWbkwtc4hjB5EkAehynPOJECri
cH9JmV5yeDjW7b61w2jcKr6v49PNAqw5HXHpoz9TJh/3sclGsfbvl6MttBw3C7UAohBpuUD7KEGt
kUJpw5fdgFORyEnU9jNBhFU0pasNTYqX0CL+9jTuH55NguvpXLQ3ffxwFgCFhF1JvNHPXF+D4aE0
JKPg0ks2uRX2/J18T9XSkHO+luGRuB2ps7Vbt8IojcPN9VzyEEi8xicfbSwxjo7Z+kNZ6v4IsrLB
2UfB1bTgYEOa9BsIVTrbeXJ2F/LcHu/8NgVPkVREaVfqFeqaXZOPF3Uu+uDm0LgpebbskrEaZUMy
O8Q1jKI0sRtRLHtC15CLvqbcUhRPA5EiMSxGr8d/q7PVOlkWAbcgMeSox1IxUvFOhHScNJrF0SkE
ylKtUjoUse3JzR6E9kekNQlrx+WQDs/zdKvbeP/L4W304rLwbDQKGzk4wyoCsEqbaHUtskf60db3
1JFDl4sxB6tzTRDWPlioHkiqPpfDr4EJ5AytPuyJjHhZCO503rzscBHlRCQ6VwTpKde5uD7j5aa3
xANaKRs2jjkiAvBVyaCJ9FckGEELTBZrwQ7v/82LNRhft5Nm/t3Pf/R7qtyABOuu+jEM1vgq9FVJ
nbh1c9GCA5SIJB6EEmUQ2Hv2YFTqnCkC5vblZfM8+idCeXwPqMsB8jMf5uyG236wfXFj8X27rtvE
bmdKx/8FJYd9XKbJ/VKYDOdeOvR0L9GfomOpdS5GVQFSApjRZyZFjI8PBFAqSTPjkkwIEArBK9mn
N6Lf+ruA3235k1syt6M9z1fw24SmIvfE70Mdfli8h6hTth99aiR3/bOI9HIJUjHXqgbzyvuthk/6
NIah179fMyHFI2fgn9gb8H5QJYBAIpz9UrdFiaQIQhHOiWJ3tQWq/CjtQ6g1oRibBH+5nt9PAIaU
ubZhIsnO8FlMSrNtrQRQ4FaED7oVH8QBigU5L8nB3L2Si7n9SuBWQ/LAcpiXVsZrfdQ0oxUH0ZF9
gPhxD12ubGsY3yj7tbR2aZGdWXN/83I+P38HoEQudJD3SoEd1dAqlM7+kYSCJ8ztz7squvA2vEht
vT6dqPtm8/txOxA7H8cfrcvdsOSbAi9FZ+v3CY2EhygThciV2gbjwfVHnUmrREUkx+TiS+EJDqfb
JLfYrdLeGiZXiwNs1yY23VH9Oh2uYLZH98TGv1qVPuXSOuredH5RVHcyvWhL7qmiJx7yLWGAHrpo
E30JsurYY74+ntdnYyd5NiSlBKB6e+LHbIwwTBebSOLtYBeCBjPSL3Q9BXEUwLummHkMNCjmIIvR
iLM9A/O4mMB8ux1Jm+SyQsq7NYfT62jLYSdt7MLL/M/JWL5BtPHjzx0Kx5akjIV4lgucmdiLgMSQ
K0ZJjuNtlfeLm/oc6aICuIoFHdRXfbhtnBFefW5Jizf8KKkPBWz95dukmIZ0RLnzuWGDJA9Yc+O2
8l1qaFPGQiGX3GhF8XVqjmjSF189ihuGU3c+EZ+XLgNeQVrk5hIPBBBjwZerxBxCN0+GuX8d/ylS
exUTeI8Umcqpj9BlJADiZSYktV3RVJWYivxOJTUjNz4slWLhVpJ2yj0keDyTEyXw6kVajQejGRXA
oFXIjFRGeikWqN4dqnpsIt9ighm/yniabC4709D2UwemcO/DzRz1vyRTuVJgC3B3kT71wBy5Sj7V
4rEKWFRENkUUUouxuOdDklNEdnHyrlP9MkuVS36WA4Z9vhX3IcIMHATSbuFgoJh82fDqc0aSC1cz
6UbcrCcb2hIzkOrStyd7LLLIEdCrtyyHnLdBjwYO0eYaM0GEu8b87nIBbh9BsbRQiiD6BKjJldFT
kkoHT8dKizJtZbPPHyOHYUic61CCtkrzFr0n0kpNsrzA+anIWZhVLbusLC3yH7dZ93AurrJkbV/P
NbJu3yb/yY4bPH7fbPf7ek+7y2YWVlZACXeiadKjeqoXPwg/UMlBsu2Bli3PpzHqAq+gN6dx0hA2
2WzHKJ3dXx/+k/M10Rr87ChDFmaRzlsvlW1Hj13i8Dw95s0zEA+ILGV1Tot4AGSxw9UnxeEqfqKa
WLbiUQiT/i5gWMQRNg9bpFIn03Yr3KK08uhi95wZsr/JtWl1+esJcKo4dM4WEoQiLgrh7XDz0Zo9
P6E7Dmfx91tv+zmd7Wxxv2w2rAjxAoIHRya4a5us1/0jQMLKfsTdA81ZS4X8Vyn5cVgdsi/1+OSI
/0Wc/RO2tC7Cwx/CVRe4PpXJTAhreBEZmnQXGqUex5dEqfwKXEgWGWSLG9EcrkXBzn11P8sfW9Kl
vu4PU8ABQEGfm8VHUPD/EDnQvdWxxj2P+n8QzrNb+Sjl/9dem/1hMjuQlFu9nffvx9lS97+PS0Sd
OGjTbd+aA1XkItUTZeAewSB8/GMQIXIDHDOn/39FHWqR48GPS0KCpUpKJKMzieOQ/LLtcCo/Ihmk
SSpxP8y83A14VspqpcxDxrnyr2jCqlFdjkX+YVKIfwqyhZQwFPlhksAAlhUR57F06dcgok/XtywF
Y2lWZj5UUbqreD3TLutf/19ntWE18LX/B4tewGr5kcH/dSEHfjI79HjR7dVvJ7t0GY7+B2lInquz
+31z4vkjJqfKTqzNyYqSra/IWt6wG2IxehxqR+e+2NBLjPWzRn7Erms66NfYfT8d3Fan8q5TLwKI
02CH7Qkgwf4xMtiksr/NSooiUmW0A9ykhYdz1wV5PA5Mbqo0NfHDbF2glOkGKBHXG9MDbY/2luhS
qx3HUuTEXu4VbMY1rVUGQi07zvm//uLAgu1y7sr6yUmQomwFEtPUFeBOf3asTVlnlCiT20D2j7Or
eA+zyXmYefPyv/r4uiFr7ZdQ9z/OjeaJYMiarUvI049RzQbn8rfxw4Z8FsB1RkdaDt11j61LAFJo
/HPGtXJRXyUEbf4rg/CxNwdiHh+RNADct59HNyltZ/tjJ1S7JeE46Bsgy3jNbklQhoN9BF1tPGGc
Kl1u7wxfN/HrmCYJp6j4XKc/nrxV+X2G5et5uiOg3H+Qv0MkQmwGzTKmUw/uHwDvEZvOj4XIxZLc
xHgYW2tFpRfzARWoVRI7fDQDPmQ7GZUTpSBysLm5YYL8qmh/SJ0zHf4BJMBTQJ9zswLNTj9oJ3zd
iOha/t26cwhazYIUSbghwa0bldmGyccZ0C5GNg+KK8MOxTHu//HBQzM3ta+18Euh/NGrykiB1nYa
mrWrcAIqSK64Sv4f7hxllU04arUj7h8VC+WNGpV4HYkm9WZUndnRtXwgszImRhZ5Ws4zD1GIOzvf
zbMroXJ3nLCCYv0mxYPIgZplLTHL2PrM8huT5a2ucWb6s/vHxouA5drzNiElLvC8OrV9YUrFVgkA
8dcnFlTwczPaA4NpiQko4lK4j3i0ZDlRHi3/AEvVPC5AQlnqcptek2uTWvV0/RdaurKJ72IjfYiq
gPLk7HjxWCYXalRC8YfXRV7yhP/mB9erhuyyaPlaCtNDnFW1lOM9tHkUQHbRWLNr1nQGpB0NUQZk
coCcMInXYz+OJqOb+e9G/q9epVgdbnKT89elKdXpeTpp/mEugp9355ZoRIN6XjDoKmvcbIeRn1A4
keGQa/p9qMupbCEmsxJpa2u2EgM13JP5obG+0oNxrHc6rxlv3aMBgPfrPu4ONuCWm12zExlBwdXH
CmSG3AwDXxCeFINvXg97Owlvez2BQZ+yaUyu1CmSeH39O5nBT7o0VlX05QbrBvWu0ybteSb98ezG
U/qeJVCLNawarfssL8JZWf6Bda6KJ2KsPPijz3X/cJqpTBLZnp1MPZ4C9XgmXRxBtdtH206yt8uO
oyiTlMxOMqkogUNN3m1SAxd6DzL40gBffYovgzvky7V+Ky4UZRFXEGtD2ruDWsTLtk+b2j4t1+NU
vCdZokCSRIx+KcuKNleJmh/oAlDVpiPVFZBbgKzIDhA6OyDf01cuYqR7nkh98kdmVQzZAtJssSfS
vt3DAgl2NJdB467IdL2IHzLsz5v2dpTzFYGJg+vI8rbMWLTQwzqx4Z+u57vzbH5+RlPS4vkIGZTG
cVWMNxPkxGIB7Az6f7H2vC+KDHO5vPr+BmphpMoWP6y+30zW7WnvxOF1PIUtBcfxmy0K5WELkh3s
Y1BiDdtBO4JIm8wXBlSc8XiqOGWMALkSeVEDvQyV5LXi+2OoAFqfYqAHmAR4zO6rLdx0ezxsQbRG
6DSR0j3svbPtlsURzv58NKJqiVEx1EjAg5MN6btKDtbdRcf4scb+bCROEdMpD9BK2FIPtVtOEN/O
x+2ksf7X+Xr0W87nnbjRU5jMHM7ypkMUba80WRRZnn/tu/zIaIdYnv7VHmeSSe9gSG3bxOEBZEXA
jI+wmo7/ZUOm55r4yw/Xny0+cJA4Y4Ls63j6ftlO4tu1t/j72CiKXWTI7XP0YzvjsVo3eHXZweHM
zst1wuf1fkDL0Ps4QYDsu86fZ5U8A+iKgxFI+WVAV82phngqt3BgSMnkMis3cK94BOt6dM0DhDJq
yICXONEooGYeb1rzTCaO4XAZV13GseuKpfNfo8VBZ6KB32wS0mjjZpcq/JsclXrtX4P8SJduY2tT
vnA66/ajlyUDv80yKZF9qQ+Dj9NLXP9+m2KjTEgRm2R/kW1l/wBLdNlBTvvD/rfHcXv9Xw7Qz4XB
P2ZIxZjH08tEa5O/9mV7Pdi1eegiERFkXeDpfbKurzV0MRDpH40YKPwqpE1HRqgPS2zCa6KqU3U5
UXGbzIun8ze85c5/H1/G7XFUD1K4eALCrGppkbGZy1oSG3TK7v0y0Oy/T7rt/Tr+3kVXAAAytqhx
xUGU5/1S89fz+9EnJLJPBuiGYDiOjp23lLijgY8jctxu5kA05/33GtR22eUDYwEbfUSni6G36wcp
vmjkFFJ9Mh+6zOxtcurgxaYSwx8BAVmNblKVagfrsiwL746H3WcfwQOfmpxVUD6PjTCBWxKZFidK
I6jghBFjdC1YmJRV8eoypXMUNuiRvx+Hg5PZGbnFBFu3A2r8ZgdfHO5h9wFy+PvcuP9kzCpcJRkW
HsSp4GTbNB+PwKgLJ+sWmJbGjFp1YdK1LL/5wx9+/l/zDohVo2ayIYP73/jucaNzEzKSY0zonhyq
ObDrHIg448l6A7+ZQ14//cL/UEeGr0Q3t/RD8XdeyO9Muvv4Di7VNblRCh+41Id+rMuNgvi1GDzv
0WOt7qU/iEMLeGIZcJc4MSHbGlz6gfVVIEG0Ocqj5P5I0DMDFMYqeWT16XQS+QA/x07+N6vg/yPf
HaCpz/FNum5mPcHlY8th3M/05OVjNO9Xvjx6dfWP+x3wKzIdfdNW0FaNsBxyk0nWS3r+Ea/R/Bos
HT7C6SYlK1XFHaUQn8dSBE1i4fV6DO2Q8j+gcpz966UUwJLO0dF/QbYj1jAinbDTZH5sop7T+LU4
+cbIMigOQ4sjV6Shdsipo+qHBsdvH9QQztP4+awVeRoZLTllQ4FqEFwKKI7jqU4CiezymJyxWbHi
JWx1cxtzfLHSQEce2hGwpDLNzTEm6yzRKp6O7pdyPsX/qUEvGY/ufgmVYntkC3oD6f7UnOlsB5mg
vV0RlnXdRSMekRsw47DifIUJ5IiAtmSLzuD+GLjjVYY3gm0fn47Obi/g1+2StoUYCKWS0G/viLjg
i7xU50YJMmLpaAbwbTyOfNQ/YFZk/a5CojWucSvRsOhz667+/V/tOX++2MP5Msdv4ehn/+/mFgVb
fe4L5O/bl9mrJP0FYEqF2/42ZIcGr3/M0yNYy0vmpEa3cg3FndXvYt4sg8FcgIqPP/hDNrnRrmvw
H728bBqRm5qUPfbSXbI7HtgIlD8sARrDGjXPB2B2uWlKa5jrRVgOFcsK7BMYpExGIJGw/68lOfRb
013a3NCmh98CPagejMntW8m9HYAh02XybS1dFbApc0WBxdeajJfn42GH+KCv4QNH9JwO8uza50pU
P0JOJaky/FoecINlz3v0aOqhSNlL5OPRpg2+TCd9d5sQrpxMCcZDrKChO5kLgn02HdwG+IrtdiaN
B7LxtpP9+6Th7rCcSOukKilYw8fD7T6exusSZfv3P/7h3+73y5/nBXH7vYvU/yH8d8BbIwNL41Ct
b26S6NbXG+6O59v7FXl8ZL5k1L4WxuxznXzQ+QPHMtyx/scvf9leJ7RZj2QBfHs9X++TRwAARr+L
dGdmzlgBiozTjSli9mwfuLTkzrh63ooztg9+rMtKnHbTp5t5y72n7TqLeM7zq9Qve9zS6dVl1V7N
JjW0WHPw+XCdbn0/vCHDVWXNqlrurnYMRJdurxyQU2B3Zawj/jbe8r/RPVTl2s3UyUNHJoZ3LAjP
rSJ2lho6W7w8qTVYU1XY87HoDkRUdLWqdP1wJd/IYwLZ71Fkkgytzen8cbrkBMNvFR2Pk3C7fp9+
ZM9JYBUb+6V0dZcuF+YpKxzu/eSnM/qiZ1z2peKsPwePWENZaFU+hYpDLzzQqHXiknA3afFklzSg
J1FxXMP6fME6m5/k/no9f71NpL0bL7w7peKAQQePMMzdCcqK03Tx65jmI2GZi1tcdD8c51uWQaoU
ZNhcPMnZ37zvD/ez16qBqP3Sh7e5QDV40qBmzOQy4BCYBNBiuYJLtMnYiPx6HZ/nrT6b3ev2CqD0
aapTr6AUijbmXdy+nMV2boeIK7wVDZ399c9/ANBJ1r9zq3lMBfSkp8wRdgEHdMub6xz76K8A2KQC
wKa5hBHsMuzXg61M+F4XiiGBiBallnfvE9A3JLfbXIm3g/HT9svhxd02rOcIVt/SEDNx++V8eb9M
Bqv7L0cwhtaHVulQ76UgYwnUTtiOYdqJ/ACgmElwk1BEJ3lQ29tt8i54YDoGfImLZrMByCRrO7La
YVkHQw9QlVZoZW6dQe4eAMYqvxkKus6+EhdeIhqDVrgP4jGj5KSxjcyG9M782C7E/ro9vQDzv+1T
zGY0ePGE0Tp3dsVjziu45B85VnQhZjuKLfAQKGxJPDDHR6lF5uC5MPb969n1oiHbRESTl1Q/5qpF
bAf5B2pFhqyJ5w2n5Cku3lq3/9rGQ/FaSkG1kEpZBwaa3xE8HeG5Mcwy9ohOxzqfqnyHVZhacWf6
3c9//PHt4keJbAuRX9Xkanny5i27xUvQqlyVZt9yvo39B7SpMBxtyHoFGV3gOgzrKUfpbLQ7xyUK
cUn3QQK0kZt6CoyHFG6DsGhCxNL1FP82t1/KddHjTRuNJb4QGVNJMnlpPkxhxp7EygUXQ5Nuy1jt
A0nglRKj/ZDspJoXCH5g/Yu7bxfv6+q41uuAqjd4WGjzpBznZ8Vy68d9J84VyYGGrYbuJ9rlJ5zI
HFauTc1KFXdxFS8e8x5xpVUZQLwrcUU+to7GXUhHODHM86HdYg6MjPfJrSirWYXk4DQLHFu60c+t
vZf7d7+wYblXAT3kWs3jkh2/o9FnC+toS8aHl4OLOK1AzhxeA2uIdJrhw2oiUl16SRl7JZPVLbXH
asgVLXkN6tft+XFniwROjPwPLgxzpzIRUFxi9fEVPw5WpFJXXN2znhEbL3MmINJg8iHi7izj1LFx
ykw1ZlJot8v5xDSgTYxk5lWxQ1KiE74XFd83y/ekSTV8ryq+l/H3o+kQrJCX8xO3Zdb2Q8yx6SEV
lnMcaTHQzs6UYcHMJfFDUg1yOvv+5+t49bkx7/uwF5mXKA5pfNfa7Vb7+9d/PYzX7XX3+t2PvMbH
EgtA4dYPTX92D0cLoSW+NdSdbVhAuSBhyyAKTLxxJ+riieLUJZvaWuwm/GJGxtcmIdVJtH210yzu
Z4umF3em5wnerYAi00RwqnNaqk1bXG6jSw/FSMThPr6x4ESkJ0V2rlih5GuBJsfOmXKx94SFpSKu
lBvwFVTWDGI5ovfsrEc/Xu88uPiCwvKZCHLq8/j96Wxx5xtHNvv3ubnoy+E2gd8eiRfJX1zHZ2kW
H8XNc3IRkQUD/EvE60oXEmlXL+EjFh95DMKVMR4UBIusECwiFSyPrDN9MPIYl12OVINgctx827w8
AeHUpecPLRveqyKefVAwkn96ImFjSHm6wvmqGx2OwvNsJByiwx9Z36XveCgqFW59+rjX8XLc2rlt
9a9rUpm7rtc8HibrAl/NCKI6+mWe2IKYgihqIlqTSWmTTp7k0M16vbyydziJAKTwUdHGE+nLeTPD
cadxDMQfJDIfmcS7VCc4SLOEnJ7segAokSqnTQm17Q+3t8Mkam4bl+Hw//Lp/Yltr3RQ4wltF0rY
6JzIfTcOjgdASFgtgpUcK46OtS60HSy7u3IrKhzANgGoOIX2dn6/jXYyM/+KOgvp+2n7dtjNzDn/
o7PBvdk2PcR3HmiWuoki4TrZHL8bwu/OrJJQdPCACH/EHDE5RbgdVRZYpxFcxdIH0ohJSuY37/64
YQIeT/1EPkknoEQqW1zS5oN6nIjemNTz6mxSABbCGA9aqeBMIoUDlybqgFcFJj2PQjLYZf7P78AK
Wz1rchLIh0uhRJCYUYx/HvcLZjFRCWKIdAtug1ruK9SyJlJzwcX84463tsFfssw2vZKVVxY7xDrk
X6klp5MuMJ6h0UrSFERqxaldKx1V0DIiCuTOHfBRdBa0nBTExl0Ib9Fy+MEH4iHFMTqrK2DZLeLv
63apnbRj2ZYO9I/KR6P6FLOqbGjP/8P2ej9AW1a1OXyxdleB24wiZqT0mwQe3UPUJuTesE/4bpbE
9obLFDKahy8OUPdT9OOKAtuil1qoxQESAUbcuTC4in0P4zpuaw8Rh7oK646JRkUQSSjctZiUZsS2
camBcAEPkaQlPMpO+4nSXF5iYaKvr25UkqeaCzfpJ/yGJEd2U0abYNL4Q5/Pnw9oFG0bdx/YKPWQ
CODi1zoOshXarVTSeYShE8SRvMQgy7x8JdLjLojebegyIX34aCvYyjFfejqr4h+RJlYqiQ4F3+V5
Dn6FE/scCS/URc6FCS6Yo1IbqNvZmfoFA6aJxxGDQ/4wz7yxx7H0s3A1r0SHXMQr1TAWcXbka9n8
6cmJrLyaTjQP8x/vu1f3ja1JtXTtR6y6f89RuMudNDEFLqz6mEtY3JeTJ86n8/znJJcc8W2jTLN2
dyXM4TghvQXWnseskHbpLD2ns2bufbMVpJarL4ASPKxs82tyLzRLwV8vVjk4ESrmEqHpTn+9jeDX
G5m2Mwry636cg5vnw3ouHghpTVVuXo4mYGKCHdKhh0QajskwhqNdpZe8FAChCaW408i5omHriMyf
ZX94tpMg3Rw0V9sOIMbiBqdQhgS35ccRDynEOAkoSBz34Wwx2ipOV6cTYhC3+/bO++wmWuIu/ZNa
nwssP9x8MjSOABQxNePYIwaUj1iBPL+DmA0EPEC8vN9eC7eM/o/9qwk5Aoq+RXH+jRQy+PJmXoT6
isLQWy3ToddZgM53q4Pax8JJMqh4ger6JyZo03evm2aS1LvzaX9D8GIpJRlUw59S1sCMxbGycXZ5
EyQrqRuQAEAXC1fJTLtEYc+htPnZQ3MgWIau4gZlX+YZq1acVgsh4WABT9bmy8vEy6GAl3FdAtCO
FAMvtf8Uh48+bM3bdPGwpN0r+zYhbFxJmQRuk4X7eN6ad+8G+u6tH9HNn3l+wioyVemRBQ+2Bpwh
5dYx6A1PWUX4BGzjZps0ZnVS2TQLf0aQFw6j9NouhdhomQRgbUQhu8lFxZ3p7nsnx8sUVIW9LldX
PnNi9B3dOHGsoMM1Y3U5qWOix4xBjnvdEUXuiOXiPhXX13h+jrO/yjVPKu599LIrFhUglNdQljGU
tZT7UwPRX0WtCUztmXZe07rYCL7ga6K0F64YS8U12f4JY6iC1yNVTB/JgiwOwXKqUgI2Od1coWCQ
FiDSL9rcWcZvyowf1bzLNAIqqiKflj61/3OATFaJR5VqqActbxCnmDyb5WlvgwyGPmo018kaMtLn
iwfjk+TORJ8jZvPuIHQ+kSqJFiKs6hnko2Eky6qn0jJsU8vQxib+c6koP92fD8f7aE0cvy7JNfn5
PTtf5z6ZGSv5X2n99FRbVTPXRS6DUM9fJ/mzP2wXjmRBzDWrfqmZDas0ZBsMcyDSZ7t5P7n/lD9j
E88Y4/6T73x4/r7AY3dNtr5mcQbgrBhpHk74fDgdbraKdbt35MRvHws7pinWZBW4j9xZ0yOv3sUX
7ZXfpY/vYvwscgLko4QSknNKJbVCFNZ0U4w1pVOsqQesLc67w5TrHy8iKt6SGH4e6GnkEqCOKlTt
cfgfH9JXegRRRIpW5JUWlZgD8SHyETmW8d9irOiGcHPnQsQfIO66J2vj4aLpT0mpiHjVpVgbaiVO
1QFbwdNUjlAr38Twb/IrZJBqcxKCJ5y6p4nqwPp+c4fby/ZtvGz9hoHwd7sQ0c1l8HWd7OqCTsfl
EcpmcNXgTzrD2V4O4OPmYUmwzyC/+XUlX7zuc9PYlB+TcNneffD43/80/e3PDuCn0Nf644SW7WT8
/WKNiE9//ennP//u93/+/e8+/fTz737/6ce//P7Pv/nLz3/+9Jf//aff/zCDpiey1n+omRTzFARP
G/S3/PDt/+lGcrJQhgUKqepOTuyOOv40frt/+vGn//mbP/z4u0+//OU3f/n9p9//+c88XMPC/emX
CfL5OPH+p+P5/Pn98pNNI1wmc+Svf/7x02WyZA/fWLghSJWD+3s7fNQi9dPo/zZ+mlXT70O/Cwc1
uJ1uq2GsQP7t2e7cfLNZjU+v29u/jls7LfuTYsG0EQyx01eH211Hi86IhEV/cmC79I0CWOZ0Tifz
JyTPEgtSGFC2zZWH1OcORQnHT1mH5DeH4lfn+SjD/PLTb/70y7/9/JcCw/Cvg37rX37++Q+//81P
GHYf70F6Ev9iecYO57jxbyvih02KAMwn3974twkhLZF6zJ4Ov00M5qo5fgWXrC4pGVlxvjph8Wtk
Wp+Sw6M0up22l9vr+W5znpAMIPXOGSiRzmX67fnNIqDwZG3ELgkAcSLof/3555/++6ff/fzbv/7x
9z/9BcrMEDq0gK2YC6mRZSamP5Z9+BM4XJSPZGhVkcj/9cc///KX9MXwQzU5/GUlHaG4n37zx9//
8qff/Napjk+N4LlC/yqx8Mtf/vzjhGx8cs0yXI7EAIH5QR4shWlWPtZjSPIYaiv04AP40/nTT7/w
ME2OsP90PVu7ahLln34MqyrdSbFYi/RBSsdLmnAL9E3Xp4czD+/2dD4fx+3JKZxPz9vjjbd6+jZV
BZVc8muUjiqRW/mXKmWnZGUnEvq8NOpTJaJrNRM0G3pRkvBZfPzmp/+9lvZYH5etk0oux2pEFTUi
dxt8fJNSjcTEPjEloPUuR+srrcLrk/heJJKaQ+QfxtPL/fVXmWZzHYVIx2T+Or2/O7/zVD0X5giT
NKyV5Obs9/z+3//059//8suPP/8EFXmnSuprhbRfgzLDKvqMFZLoFZ7lZY5rgllYIpShZF1bFXJ0
k7091X7Q5phrf0Q6mon+gv/iL3bKDQukYZ+mwkUrWshN0bhYIeGDgm2uzhFpPpM6cJFswWPpkv5z
rIRopdcJy2rsiH+QgYz4VcYTMG26MsDfbm93ZJNKVh/m9OtH7H7zq3TiT3/947/8vmQUiFLo4Mff
8VTSprTWV1sAh9v90/7tdt/x5NOk4muA5FOkRqM+Ig3Ltg/REqFo3ye8vi0BQhfpE7449Hz1teOv
u8nC3rufGZv+h29cva8SmlQgL2284XPbQX+9+8zcdXx2dUfOCmHhyT7WoZNlGxbe9Cx7C/RtO5Ho
/f16KkCSpDI7FoGFk9npUfb/XSrmwRUb7op2btp2N1GyjQj7CZD2by/j/eiU4fa0d+FmFrRQsfaa
ZCom0GGsjR1a+SUe0sWgvbAAF29EenFDL27n396vWzv51/0dwBliJTdxzNb33l5strh0T8Gg0F7N
X9IRhwQwZHwGUpAVYNwu4+7wfBj3fm0TgEIq5uMk4wy9nsav7ki2XHXhMh5Zwcd4pFt7Oo8jB07w
MAadEsOQXHC8u6sJdDcDeJGc4YNXUwow0vy9YyprrvBwaHdHT++XMGIlV0pFmjtaSuX2Y1e3bCEh
dDUyRVdLz2OZeNKiNSKr6wC/vW5vHoYzOQH9KEYS2A+DNFgkMjqMZIgowLDD6vzfbk/fJ1llxSrA
UT8wTLciqQms/TcYmqRioF1jyr2ZC3aczrvz5bsV0QCWjggjLfEZYrf/eLK1MucrOpoG5BRqTEoM
LGSLkR+Mn0V+xiGwPMyhq2Nq98f47WDLdYBSHBhedlyzECqSw83qEZcDzaLAK6hw5d32Nk4vejvY
0ZgAamcYJlo0oXsCd8HJ8VgkxEuRI5qWufJ83ol2D+mcO/6YhE1TfnhgL5+9ApzVA2lo2Wki/9vh
yeaDS/KnB1xldbw3l9wocNfqDKyvHnDB6OYrT89Y0rFNx1BI+pbLG9qas8kaeUaPqBiQax1UozpI
XyAZkT9DYZnU0/XlADS4ApqgSg2oIb1nQhV+kqeTs5giBs70tdezO3m9yeVMaksRQKZJIYBV4mjK
txMAcjAAK1kXYVIE39zMf6QAesmSvWfj22Qz1VxRiQ6w4s5n0mrsG85edrLVEc9MY0vvOcAaR0sW
WqVVIZqBYRvHJgT1SOALwdl/Dy5ZjYyRDfNulQw4T/wEQrqvOnDCAogD+gpHEls+iiqhBy0eZbQ1
OUsiemDQZ09yuxwPd/uXiYPAaeRKhfcVRqKvSZqPiwyWhiFcom+nv2JmEh1HuYnzeThNJs/t8Pdx
vF6jA35+frasbzvcsNGhJeCxWmkrpMDqbjpL4t0UhDfLswR/D6/jAw6IJziuozxxOL3fogadcIq4
oq17ICtj7N/eDvv9ET1GqyplVYdkVcuIcpZsbu9PvrzHZVtqiGbl6Tesu+czt8Dn00CwTK88yagv
h/P7rc4MNBKY9gU3j4g4UnwdTkK9nxpRJ1MTWXHqHt2lBeZeykwFj7Njwj0VYqSaIDiBR1lrwd7V
zV4HfKUqA6qVjm1PrBIyvyiQRa2TIQQJBJB2trVpSxxS5Ls3BZfMa/pgeiEtoUueRhI/tUdEkld+
TKQ9jS+H08nOKwBSTTBBJpYAA7t9iAK5uMMqRjCht2x5StV8gAIL/NejiA8VLOfjvt72V2t3cMiH
MWD0r0G6/yOSV0jOE0nemLzr9B6IZFpGZq0VoUL8ypk2TPDeGmWFGD4yljzDzsYwDB+hhNGj0kNK
YuWXDEzIHdgLA8oGuICkLUipiUYawIE+i6aRB4pYbq1/y0JfkRgdHYz2EE0ucG/XAJOCYBhcbTB1
mR8YVkXBH4/cFiFXAMOS3ALAGHrmeZkUYNHYVQbKxQUtHxKLcuACGeHJt7fbeXfYujMWw2SiR3mf
RKcWAiP0sklubI4Ru6nFC8RSeLHX+JYnWxBwnJQpEkODKXupD17W/Xy3y8VLrhYXL4ne9Qf8wbDI
OEN7ViS50XmH0/1snfLz83xixA1DjbKqUAc9g8AkDnH/ekZxCJWKX1lUnN9247i/+Sc4P2+v0PTq
gNiI3j3iJ1EIVXm1V8NMncKZfjbohQTjwOVA5zhvZQRUEmshdRJAQMil3LfHErcOVUb1UjOBKA7l
rl4q8uNNn3qm4mNxf5S6R7YRNdkMMtm6agMLXbIFWW1n0lgjy1M/DihoDQIdS4a9FOTQvz4i4+N4
L+7mV8ToNbEtygr31wliMVXa1gRan8/vyBBjg93rGgNkhbUVua/Zr6vJU6SiKH3Xo8uvTo8x/sf7
9vj38XpG3p1m/fi3NKX67BvxbKsX0HR1meUPJFG6lpG6Nd53LflpVP9BjXekacx/NdxdcU7xQTfV
xTcK4Q2N1VpOcZzOb9uJ6JHOEBiqp4PT+LXKjG0/FCNC8aEGpXdjnnCBhcSLRll7AqxU3kADTIkL
m9phr9cRZoS44DFLfzEMVk1/CliMtgbAEsb18/sFnbMQMicBTSRRTU1Qjrc7C6Zxa4DiTEz/0uOq
niu/eki9unAuNmdZ039d4wTLMLvKNA2yxESDXaSv1/PpZZbzhTxUw6QuKu265T3QeU37X8tZ18gp
09WUGUNdVRMq5gIPQeRMPFQRdpdAdpHwUpUgbAeOWxjrzdN7iXVoubBe1wdSOq0LipPXeQQ3Ie38
9TQ9ULmYlua1edFzG2tkv2iHkmqzG16+jMU6T9lw5ctpeqdQ1CY1VyxE3/J0tlbzRMeYrztQELtY
qROsko1qgLVL6SCwcIUBbQxWQjVVUbJDeT4f1JQowjsw11qLYY3EMKpX82foUCiJLaAmr/0BUU7q
19OoNRNlrbBPFRd28eoyBAqRumtAhiCJzIei+pJfqZqmxgyPt0xsD3TV9iN1uUi6d7gUt4p/xYAq
x3Nea0FCtZLJ9lBieyFqAskWXWd7F46kB+QPzAES19IMgBSxXSbSoWcjBKEUsr7gU9ESmgdVQCm+
XmCS85F+1welN8d9Smqv49xDzmJAMiebW3osVZug3oE4HwQT5XpsTvLZDpQAVk1Fww1lnaKPqEF2
klZPl3iwS4tAckmT6/lcClGu655MrqASk5RqkBsyN0tBP6avrmqtqMqUAnPxByrrxKBrFEQ2Yjo7
AN4dQG7AwL5kPnJXSlI1dV0q9TKDlhs8iKHF/qvIG8i+ZUwlJh+HrtmBvDplpCJH9oxZUWh3QSa8
rrVKS/0kHP3NWeT9vjb0RtJKcURBiPhQAvb0en6/n5+frGkBE5g9CIeT1Hkpt9eCwgRCsUCGDFx0
GeWQS8qNLeOM1Fpu2xsUMHC8YW8QihU+w+xXbo/HKhe/6YAR/cjL52fnZxbak/sO3HHWIgVsq8Z8
MCZeLmPua0t5PtaFOwwVRo+fk3l+LrUZCbYVl7GgXHh2/FoMunRMY0EuSlKqZ26A60YYFFTBDYhE
6kpVZY9bJRZWmA5V7EQ0QHt4rkSGedOXumcjM+7Ol8MIS3BlLhf+4S4cGDQ1MC+2COq63uGBqxtc
65JaG0gJFMYhUcyCodLxWUvGlLI7hG+FPtPho8HgdT6mJhasGSNw9UDoVVCNWG6cQjHtboaaTBQJ
j8BaWlU1u2Oxn0OspeiANpU5kBYF3/THqs0LRcNcLC6N/lQUkHRokkVFvYIQj3zvJs64OTMyO2fm
0akNQQ9Gvtgggq/PcDVQa6c2H/Q43RA0E6FFE8Uj7XfhdHYcF1fGq5ckqoexclkyHan4OH16uZ4c
Zxl499MvXHhWL6UnvkYskfBMEzA+j8qhp/R6EgDschdkStfw0XSK9dzLcSOM9NIMuT7J9PMEz6IB
3w8PdOg3hIf//N/+8sc//GX7dBzDyLVGsbDCipb1WRYIv4xuYukMiCfFvo2PT6SoAzRJgN9MyJmB
tDyQXuYe3QL5V7svdYbA02CY9+0guE77doEQPm55EtFty90hfCwE/3UrVl8P66/7gf/pQXI//cuk
eHbz9DwBnlLJHPuR35fg98nHRLa533ertmfUG/73xVDAnuZpWmuVo8OJF+7nE6DfoSE/Gk1U+6P/
NrrNrvPBeX4Os7kjjO7x2TV4dsNhbka7AWhnuWYWJBIgrYmPRgYa2q//5bz/Pt8cyMS2S3/eIO4X
vEjru6xIXBj3l/Fe8w7kOnEw9lqaAclohsiCTn9ECD+eLu8LE/EY6YgOIxrVb3oGmOwHk9XEy0IA
cO9BEBmsc/TXAgrqiNKN1SgJ8fIfC829/yyyeNbTfcexnnuu347HY4XUIiRIXAIL5Q/bp/FYVmGd
6jn2pVygABcYqAP/fP4634N/h17L9BEfFI/QvOJrdZ8qPvH4NXjFrAQKNCsAzXaF1xfg4VpR/BpQ
rWy4j//1MB73RF4AhbsyOYjQCR+bHlCvSEWFfpC8Api6Q3wvskCGE5wdEJwlpd0D+d8rjmp+dmsR
yxIgrJTO0f4fx/u2gvvaPif41kIbmB49FUIZ9gsQFNA+K1+BqGBqdxogAZqcBL7bn9c8AQ5GQ/X5
2/MivgZggctaMQp8CtOKghUyADUw6JIVIlrAC5GEyOBm8tNABulGc/Sf8z+A69AKjop+4wRhmReU
bgp2oOyARBs4eVK2W7RQnBJfO0/AAyMSbXX8NRDAjAWlvnoPwJOt5njyx7fty1g+Shg3v6ZKx5RA
Kwxq4Agh9WQ64Mmw2njhB2BOECOUbBByUvlCkQes0KHJvYK7ugRXpzhvcyp54GVg2zQ1glwBXSZF
pR2FCFDpDwQkpAKadeAMy0QgIMOQ96ipcgTvSC3LaBS6dwQSddBZneo/a8BnXU6KEB8E+NE0dpdi
a9JiR490hCojOOopG0FaDJzyolILmGN6SB9KsjpU8gI0bD7OObEPDo0AmlhDCVrhSjSyoIcGoEoG
VYjCDD2QAewrJkIb2OQD68s+vARwCruOiwMuLjyPgpaYg2ShK+EDwHpSFkSoAKZsSwVGagT84XD6
XCbkjhCyWx/94EWCj3XDar45jgDopo1II2tkvLbtgMyRrLalcUtkutJESD78pkD4TcWvyTrw5Gsg
eLqc4AlRRxCxaQxn3KQqXgMVzzL52ncAqKNOrMwZneBjLQQWd/EEPL8Y0+eA7M87GPAyHJMlYsYA
21DV+IzAXu/p7SOnnZ3fjM4uWV9pHSwCproaClLGAKI1KxOdSxUAHaVYT+cvh3vMG6HYkeIk9NrW
A4pOyZLfiZKfPeH8uDUpq2qArd8NBce5BxK3Hzgs/HE8vZfR2NGMU6ouidkFUomGDcKt0h9AgtIA
RF7ngECeyOZ8Axshe7OD4m/2NgAFUtlNuviilgeOkhhY+Z0EznjB11HRm/oGVNWDp9eas7VWTwdi
sNTlz2YOgObUVHM+PJ0GT2dSN0PxfAdUF3UYemhso/Q1cXkK5iZ4S9P2BcNJoJRzw0qQyMMo7ETS
j2Tfp/3+T9cKUWxEw+Wd//W8rF1DVNTy0aeVSmuALG9zRjfntwNAXbZOI2QzgE4dhlqCAq6oaVlP
8neH63SH8/V7+UkUH4pbvAjghSlRY9wIEERpNPf7NfUpJPq0CmAtJjXwvpSqFg8gk9uplCk6QtTX
t7JiarusiROk2wDCh2wg/U/b6/blur28VvBkw1aS0IgGyMzrtkY/ShAQX2tmmYUAajJ6Uu+2kgsL
FYG0AKksIuvzHn0koCJ71kym8TdkXtWrB0CLrYImP6VoUB5jmpJ33gLvvGcfcxXbBxYT9dVSY5EY
m0CqdayETawmFBDt2Fx9ShQ9cJwLZQfRbQVi3rDB4ZXxBfR+rwt2swBav11lPcmLUh8YkGXXdJyk
+rc/V0TqTMsd/4GqJZDTbSHuawBV54MHIfwCgk4iG5d3sSoQ4hr6bI1bUAk9UAkNp9FoVRFKZYlV
re+jJAXaXJOoLNn3+aALQDJOKI7zf0wKK5Gr0XPFWWmgDxjr62pllQeBzAI1sDlBDZQ6b4+lhwcS
Q7ac2EmFHwhaGcUG3FZCHMRM+qxp52kf+Nt9ywVLFgoE9RHEtraFmrqFWWEQdWtlWWaBUIUxXJHV
v2xvFb6Soq5OPksP0NDSJJlOjNK1owR4kVS6kl3Ij3lJEPkiJvaaFp0WvVXp827ouUBiIhTAe5CM
GVlARUNHII5J9BepGwni2ID4QynNIRRQe9RP1YnmT/QusGGavlD4ZkC8rG84N/nnPxxuVSZUWyo0
BBqXVDbgQhMUvR4E55ulohAoRNPm3tDLcaDBDZuQ/7fpi4oS456V4tStBADy2V0vfkHWoM+6EIHW
QaBSVp0XcGhrCpmGDhArcVkch/JpdUAuhh4h8kuw8oDSFm0pSQIi8+ugGiuqUU0ZTZP0udwA0Li6
7QofgyCKVmxF47/8uUbNZfvCPLmhChK+C2R5Z8AbJKLtZFubUe7AwqS5jIxDUlFKSeoYiXQLlAYi
2oLtwkjMY+TODR2MPs5PDuqVVkVnBPdJITxIKatSH0sHep+IWlkxzFw3AlIJAytlEq0Gyog7NpFl
w25vZb1omrSSmbzAEq0C9Uuk7pEE4QPpAN9Q6ALOQdW/JnVeq3aVBG3AhOtYlltoFgSa5SqHlVQq
/vfr+f1SE6QrlW8AvahXVaJrtlk5FiDivW7dI61Q7g0rqv061klOnUSQSFoXB3B5ReAk9qokgoEQ
aVVX6mAE5lW7asJjSkCRl0xNwxgqceYRSEUOHRvKyrVTADKgxnG2cKwDcRYjOQn8kJIEcd6Wra1Y
t8Kh4JziLK9yZlyTEtqVm0oTgqixRqbdLT3wL4Hh15R6EhR4DF39GIAeTMeWp/3xvK9RS7IqFQeC
XrRTSCTJtLUhCroLpWEbTVZuGzAwBtbKSUUkiAN1bK9rGkcEOocUDrlbMZVb4B4NX2K6QgYw7QfJ
JVSSmC7ww0VTlQ0BL9IZtmM6aVcFJp+UBSdDgwJA0jKzkhOLxQRogSTnHGFHDP5hfBlP+wqDVZd0
XQ+Mp55NiaVlcEBdr3sNmMA6YMzGsOEAVP2ks7nA7US6KBjQZJ1Cr1zBZ13JRG0BjXSiQGCAU7XM
WiOhlANJqqqeQhRkbRR3Z1qdhUjT1HE3ANE3H7BtkeBuh9qMJ1DGJkupjuRQobOs/GkQMDV9W8Nm
yKYqFUsTywwYp7pUdSuAKdESUZuvtRYKNHirnsPB2tUCKqdns+eJvgDOGil8XF2C8gUI3Lay0Kiu
QVBOl3okNRAmtLsp/TgRCoAOSZRidfk/bmvQ32ru+weTFBQ+UonacSYpiv+zZfvlTmmt2dIyYtIP
oFbRsDYkmbUAqoKoLBv4lnXUI2NWwc0Y8/jdsSpqonpV06IF2LmXTVV5FijGIdmvVd/KOpcINIPq
P9A9jVrOOlVzHxR+6w3bswgQOXSmurYKGHJdX9mNgFwCzc6kWMxhULBHE+z9YzdCxSiIRrBVLUCq
DXlLJcT6AeZVfmqINQjQvCXNhSznpAyIMZOsn/113TAuA6qazz7S3jI+7DjqauxBUO6v+0JvLShX
kqy4SSL7QOYrAwxp8MYNrgH97bayEtNoVTCdevDsfVuTG0HGaz+w6WJUKaBVSVWCUyu2si0xtkCB
nmDdGEp0oNSRH+qR9MkBXdnIUjwYhOBksT0L2Dma0J5lnvYB+WiymSzRG9AGWvYwdFhujekFX+n6
EAAFDkezoj8+fw5ywcbweYlkoAVQzvycryTaBZxZWnIZA/uhgAH1U2eLZbxZAHL/hrVTE+YDAps2
gae5rVWFL3DaqJ0obbSRCTEBzCvBETIhIRBlM20uLxm0O1B4tAujS8KspCkJmTMNK3FBoenQNaWI
HshbkNLGtQm1CuwCu7rvOaFFhS7QtbotZS2Ah6vY9qFE1QMDR3VVgScgPLu+K3UagFR+a6BLQfIV
4BFkV9kkjSYIKcWZmolFDSx6ooIsK/eajV4B06fX0DVa+VignaZlk5yJTAP5Asm6/n/4sYa02Mkk
JPKAig2aXOWh8xhAbrcp1isChmopQ2W6yYhnB8hRdRVRDyAMaR2cLk37Qz1ZRnDll4keBmpNKDx5
4lalVsy6QTCrHsAIatPXdD8DUtbsEIMEE6BQQrBeRWIco5ottpo8gQAM9OZDw6qArOMnCf54+9Hu
XKhxEtnivTS0BqhrZXbl5u4Ac0mybdS0WBXkhvnQZm12mVxg1bqaQAA1/pTXu6T2Ia0FBGU0dArx
kBuIKIDSagWbKUgHGQLuLBYCCg1KhvUqkkdMdvDZwI+ieJRMaPTdUFWLicx2UuhASgxCtATEaRo2
H25dhpoB1j2eB0rSVKBmpWVzbn+taxHohxbmT1diCfjBJhttC94HiBKuYycN4zgBLKi+NAIM4LAV
7CKBH2s3CdBStkyhyqo0EQTp+bTjuu0LPCmtZ09Pk9THgkKkpueOQXun0LB4zcanQVX4QMMXqZZN
1RIIPpgGuhPpU4BQSm9KNfkGhMN6WTdtGXhmvIxM+QLElFRbNecWJfFUz3bRJYVggBY6dtr5uiQB
eFZGw4wuAQICLKb9AG2ghFxnYNSQ+KyA12UPrxSBoAkoumWnCCZpEmReS64QeX0ZkJBSoopzAbV2
vWT7dYHwH1pRW/wJpjEaI2uiniiSIns4GYcqdJQ80ZzgWBMFIE/Nio6UKFBkS7BD94l9DlRiO9R5
GKigduD6kEkNBproUUoMdKCEJD9ayAc1ATV2gh+UhTKzStf1JKCRG6KwHkAA862VfE5eoLTZALlv
JVJBVYEBBYugC62TkOtWlhcwmnRfWTaNRDpfxrc4U6AhQ3c4k1RRcjWwJRJp/gfYfoKNaS+ZPNBu
TnrbyGhY2hoGIuIDW3G2/DSgf1otnqmqWFl+aPYNi0TiloK6JcMOHE11IXhHWiHSLJjw0gfYz20p
id2BlEqnWYkHysQG0xR+04DcrVF1hdkgPMkHbBPvDbji5OKr1Vh1q+iUZt2lf/tzTShAQwN5lTUA
MqzFC/qIkQz432Qnw3vXDZBBz2bzfnf4UlNnJ9m1KkBtDC074GEttoHxWlfjh/rWB77oBCjdge/7
zmkvoD1btgfs//t+vtfU5AkJio6rBrZ0g+bL+oDQqqsnRK66YBs6k+A8UL3rSGJeBICGUN0VbM0W
RAuoEZMaurRSFvXwt1zmi1rrIAbWSa5PKjU/gebvNFu9gZqiNbsNMKFcNNNUFGasgGlPupW5xLE3
e8Gp26YqPwvSQbK0tqADhlKXtbqDlwHkjeoKjfsCtXo2Lfa0zzUDEntVN14LPLhMkY/Hx6LSA20+
4DygpHGLK5MrKgeGjnV/QNBhaNmwRRrhAxNcFXv21FoFwQLD76AB49SHtq9rogdhG8lW8KRaC+Qx
B1WzuAdEnNtsmCKMgwDlbkLU7KIEErdiFDVQeU1pJ2MLBFA7FKQXOLdu2N05SawNRHbkUJqXA0o+
VV9aP6RAzleXqtYGUCc8tJy7U7e3TWlTqNHtgLPVKdhbRyOUwFDUbU1kEKRcwXxaau8BP0fUNVyi
agw+n1CWd1qwOdM0ygIchvVGgoe52T0olx5KbV3g/XTDrpxLqmkA9zUDr6tAordlib888UirDqap
Ke0CrGsDZzyvFD5IdndVPV3IiOlZU2xVcwwMsp5f/Qfq5AbaAZUdRgxKN7RmxzqsHW5QwtS37GBS
ECAdDFsq8GNtyc4gYaaeJLvA60u27iQ1XAAlSsVVT6VXQa9v4Ni6malA1EBKrn4pKRRAs+tLSXKB
Bg42JldEEywnEPQRbID1l/v3qg5EzZbap3FH8IJKgX1gaDLDivuYRgF0ella5SVQyZlgN0GnBwAx
13XNNhi4A6Dw6+gfoABk1E7zAvHbjq2T+GvdbLV+YAu/kwgUcEMaVqcns2aRWjYFyxT8vG76YvIQ
RLD5RWc/1gbhqT7ke2JBH1AvdSmiAkwqI7gW66r2LWU0n74EkowGclDBE6q0L7kEAvjgLT8gORWE
IKIj2QrSNIAArPFes/HLypHzJF1vPTRNQhCo4UDX9Y6BoLfUBa4DI4G0bOuC7qBIYmCz/mkJMNof
w06ZWBWUo34RFkaiktF6LslV+c8eEZg+zM8rq7NIVStqUkBov+bAJpESvwqQktCFeA6QJFqzpQfU
LUebvTrOPaOTANG467qGFUDLQvCTvkEgzZhCJGsAjuXAtp+lEVTQd6m6mtoxlO6Xps4bQJsZB66J
M7FAQByzaWqC2KgYsWkLKwYFiA+0fCPgvx7G454Mw0RzpYe65wTiULFx2RQEyMfxw8BXEhUww3px
Qya6C/xc0RSCnBrIkrbhCiJmSwoECNZzH5luLWANiI5r5oyti6i3qUSFGmhkXRoKC7IRWsjCmlG0
KVPU7goGgVFVmuAvGuAYNqpycRg6Qj/U9FSDXr22KdizPSC+3lSxv0CZ/MpCCHCFoS0NVweeWMeG
x2sDQ106OkdxRYAop65KTgXwpfjW49SnAMaUYoXIY4MY6mNpqoamgqeUbY1ZheYj1y1nBFE6Iev0
EfBO8yLRG1bAOzUDmxo918xs7YpUBJyjlq6UTPfuJS4FKqZv+IEiIMzcsctEaGIWoLtr2GAAGHk4
mL46xwHmm+m+aIQBu0E1BVtaoJZaITg/fvkaJAabvjhDCDSyksg+mTHss1LAeVjPsJC5wA/IyBqJ
KxBuVTXDhh+eukT+QBRHDIVJayB4p6VmjVWajkcWFxnf1Fkt/PDzQGVLU1nBieZl9IZblbXM40O1
p6QAWCVr1lL3CxTQ0XUyQ7LdLDU8UG5ffaAaCQ2a7vpSRTZ4DlNnQaFwOj87ZDG/gAzRIveUfmsW
SKv0um7yFeBBfvNm7gFAPXFpOcS5ZjdE3+BibtLXBlRgxzJ3bYd8t1pKoLOhNcBdWhfy/gPgqybr
Uj1NehiOombTkmlOCAQEu75gu4A+Zq01x8oLB4AYhtK1c2xANkRr1uRDi9R0WzNOHXFRfqICV2MB
BuDkhx/7G6BpZiX7x4CHM7oqBgZqA5ryPA1g8+pi8xVq1qa5gOyKTYFCZw1bEjX/NrIiSPBgtfM3
JzwB4fJN2osVCIJ3az38EPcagOs9lHhegPxjq1drQviNr0B1aFEQlmAykFaiTuwh14Udfkv8XVRd
0LFpkKSmBK0CGh6C4RbE+GX67uY+2B9ul+199/r7L0CHNtGksjXnRJodToe7/7TlPw0TLNynZHgw
/WUODU3sB1k+7zOfC/C5yf36blK499EfXfEfK3L0aDnEW2twa5X7NMU3+uUhd+v4y+DGIeyH8M2F
WZo4p8J9HuM0Kb7BwfWQEkrzgG9AKqrL/Tb9GB1clV4aPFeI66yei34MMB5mgLHMAdDVyuTGQdCk
j9UDbGtMJh345TZ36FkzuM9/u73hezc5EOnhwQl0vDux7eLhwVuHDCmkcXTwrFBwn/1le30ZyzcX
RaGEqE0TxLXM8QfweVuULQIgT/fp5zmaA0yqxQOHO7VynPTKUbkvdufr6P5yOu/Hw+k2Xu9P4/P0
L7mcp4zGug1AEIW5P7/d7tfD6cUOmz/cxzfuWWwFdsi8OxDR77x/v0yHeD4fbvvxevgy7p+v5zcO
QTLW4axOMnqFexvvh/32Pp3p6f0+nm4AkBoIoFiUZJFyHd/OX8bd6+G454KIMg7AzwCgWOXi/w6r
coFAyrH2gc0nUj/Y0NR42p1tqTRArpTkLCQGnEMuV3osY63i8kaCR64ATx2iK8tphplaDm8XD2tr
zeTr+DLRzfU7R9CSaPn0Yg7Jt/E/3rdH+1eOnWUs+Fjoxcxn2Z1Pz4eX96s7ym47Pdn9Ym238T6y
M/HsicSQ4GgOe2dRbQCqde5c9ja789t0kHEmg8v5drBHVDyWNH03TdnTX3I3Pdv25n2TG6CiIb6b
E/p6OdNEi+8TTVs44LVakb1UoJ8Jxm33Or5tZ1whLHfx2axM0yq90Wl6p0kk7sYb4PCGvBTZ52Ep
+HbYN/zjiFAnufBBsHW2p/PpsNseJ75+A2gQpuPelhCtBHg0Ondyi7OJSsHBtSKEEJseJuQf7t8f
5AmPurl5zR/A6SIi3SYSf95O//XyCAJoDp2VTHl5PQEHoFRvclSe1yAN0CCGEykc5w2A81RevHgI
2/35cnePzWsBSQUKWWUykynPryKk8HLCkWggwGbzCrcVoQWOf/b1HECJ6kHWa2MsqFUv0qP0kXQP
4w2gQTfkEKQxN0cXHVB+/Yp3AnmN3+5fX8/H0f4FsMzcoL+gos/IDAVkRmR5koWeKNJhElFBHzmM
phJy15c8mHm8qAVDhmus7CFwjo7YIMRlCLRksTeJ7jswvh09mRQLEkidBlhWusvR9SIHv70dv4zX
G0h62sMIw13ocLtNp3AUzT/pvCxjxRyWIT6iCkXH8ih5GCDw5lKxhbA1kJstIJDsOfJ0BsSvMjlx
F8jkaTJT3q8HASQuYdO80Tw97u2+Pe23x/NpREazGnJyY7Ex4gsBU1dk33it6iVQ9YrzIgg6eHRq
YqpoGzbQrVnk1nQEL4kD5319nZw0zztAEDSsZXpL+Zi/1TwrIYOWFQzgX1H2iUbYr7jRPEJgkSqp
kj5Nknl7PPx90fvAtZHUnYgqlxQ/8vJAS5lDbF5P9UBPtSnF9Ni7kkDntqLKegH0JxuVY+cZxHU8
BUEJRII0fQ4G6zYAd5FaRIm3l8eN4F9rCaU8GlfH8/nz++VyHZ8P34ASmvcxLPKlyR8mWlqAo5Ts
csooTzwdIB6V8/An/O4+714n93c3eb8zQ2zRZHpneXSctqYoQqpJmOq4BXh2szJjA6ZXQhT4z4Yi
14m/7tF6EwgTKvfUTFQKPXM/cNqRcU5AfGneLrzC7iNvAiks8z5G9oVaYB13Q9a4zpIvAGPSG8kO
S3J0sTZrzsxfTm9mQ5uWHa7nq+MP7DJLYobTbMGDJwiOJHru8YkxAciwpd6oSQBQGx6ILKVyLvaK
kYArZiJSXXmI1l0SugDWtmTtwsSZHYAz2+aCH6kHhoI+fc7eWPxwEO/phtyXhJSIvwEoaIjIJzUl
a0MfeGCq40Pal+NkJDkICkAg74di2uARlOIDtovTBCISfcdZjonaBXajYEPGNLDfgcC+4eKGH7FF
RBcNCFKk8SAQlAJhfcXEdVdpF6BQWpO6SyZLEwLgMy9UWOsMmFTdSktK6hVUxJe7oSlY3yBUJUVO
vuTj9sD67lbWdzF6CGxMTSmt4BGA8L9pZS709PDGGrzxyqnucCZKA6da5OJYrNeGqKXJ3yro+MVc
vYHjdEMPFNpsdgMTimr1xIb3MYIlY+SiUsgHFfXkB+5j5Aq9KmsiCGAiSBB+oZ45kPFNNuqbv8sA
7tJxR0lEPZDUQtXYDIADW4kCFYtIGgCBKWRj3z4QjhoaLu5C1T8Q1Cp7l9n0Au5PPnvMRF0BbemG
Mz/9gy5ArBUJmLYRFfkzdJBWVxOoBt5GO3BuJSPrQaxF0zMNCbBH5CADachyTSHcB5RHw8b9VwIB
mP2DzpmN+dAwEG7rkMuQt1+B/2J0jUgRQKQQk2sd9KcixQALWOTC7Y8IBRzQNiZfb7OyHVFaaGjr
nH8U7eyYAAIXagTJW531bdMAC0pyyZxo4UtKgCZWDdCAi8gHHChazqagZIqskjbrqDFpeiBT1hUO
UOACeTkM+SDuQ7UFQGvTw0KboIYQgA4Fox8SO8CRXuuhgSN9AMM0ueQQn9lG5VA9Ok6MsgOrmsgD
Ms7UEqoVsknAFgQExcC6xjG8gwyFjjiTztFXbd5mAz6ckNUBReCkG03ktFomqWXUFnC/hq7a/ZKg
cEA3+XI3Lig5gKCkzpMKJ+YMEHMF6zqxN4AqGjRnISdKGSUDVfWLd6Birtec501TrUAxm45LpCcR
RlBWILPmRZ4NQa1HnxXbeTCgMGDIlo8+GDvAY5Aa1g2G4sgXWhmJUlQiFwFnKA5Uvw1tTjs+Gj8a
oKZHxk8EAViROrk9UiIgsdn1vEtHAjOAd0jqemVMZsrwUBks41I9BlMABxK/jFYaYdcD2PtrK5dR
jCD0JWVbLcJbEIowHSdbVvUKwPfos8qV1hwtJh3QSUJy1YCPoVaQkFyXPIhcIgfEvUiizVU8KwKB
cX6Rg6gMKAx+yI8OoGq/+wAgVExKKs2KjIWElVZMZwRTcQCqMTSTkSTR/unxJip6ub/CcpeWC1vQ
LCAw0ZSoL1QBhUSmzzHVHI9Cofo254PzVlAPrKBVDZ/K60jA1msJU0o5A2HVClDn8kC8QEg02TLv
hyAFKMuWXd6ffijbAU5JDwoTo3ZDLTTdwNmWXIANOCcrsi+a4aAku4VFTdF8ALn8puHCfaSyGtT1
raPBoLIaeQEmW58+RzleJ2/6OBl1QEcPWav70XkFllQ+9fGITZBLHYaKwgYFCo1aUVMqj3oyVH3f
D6qu5Gs8SEIKaNJe1sfqQclT20rONF35z4DjBrYD7lbrg3dmqLaaAFZEg2JHpNIJSOdO1Xeq3FD7
29DXeMwShbGbKvcFBCWk0NXV2i0IsxD5QUr82OQ/wEqXlQJeArkiK2QRiKGq0wXQuxT1KSEgDjuR
q2NbsS9o0KI9TKlaoKktEMRo+2obAibXB8QwackSylnKXDlpnspADmpddpQanFYg2bjIYo6DWJzo
6vqxgNNOPDBC8l/Ho0tSjHuoLfsceZS6TYFPILJFaXmtAzx3qWs6EkHOw7S5cHhaWwcCz0TKeyu4
VYVUEippygr7rMpA3T1ZG2/pN0PNkaomqoNapVq2a4QYhyjfmrVm0lY1xCSw7zzGXVDDuQDK8lEv
AAu1Mx9qEEWgel3ZiwCsgB4Gq4koQmIgX4J4uxwP96QXG7bhKDZAQS1WEPNTfZXSBNUxYmDbiS2P
oMxkm4YKdU7gAAJrTbZ5OyVxZGY3FQIP2ccdmz6hVaQgcksDQ3IVYIonAMmGLuvzrF03UL5ClXMa
JUhiH6C4iTadeF0IFLwBTX/r1m1GLQMPTsomX4n3wNzAr+/busQw6JOVVJU15f5DYKJrUdEJCaJA
RlfYkhLxmKzs9EMV46bKsQanoO2padqIMgqwTbr6uQAGaEUacZEPaSeS8AGhDoINMptwlWAHza3E
8dO2slAPbUEdAjvJDLn0ykP2CUVNDEcgmfoSEG0ccG1INvOJBnsIEHdYKngA0fZdtXMMAvZGfaCk
HAjHNisc8y4dcBXyQYOVawrESa9rzFrAyV3XclE6brIGCICuB/cEYDPFTTCPW+9OQWNd6YoxT6iV
WQ414glUS5umquwAtHWJPqfI804gaF2QbT25gpBQlzalkMQgRQgIYXT9h5p0Ec0rlXNLM1FMNMOk
/VgGDyQV1ZDLui5yzoW5guGGxFtbUaUFvMMO1CdGkgfliaqpK8AAJS7DB3qoQNyATskqhD9aoNpN
eqFgs61NaeBOUIf70TZ4yTeLotETdR44iMhI0jpN1lfluRncrO253iEakATCqW0/Ok4JkG7LN4HG
7kHgteUN/IfEKLhOvg01bxoAilNNle8NpKTMRpmWdlRQF0aNSLslVIIpfkCY0ZqY6MCmIT9QgmXa
XOY9ykKmXggVCMu68A5w66VRnM90q017db2o0l9V+Twl2+rJAajOwTCVfNQrrRj8JokzRnasPMQM
QEJPNnD0Uu1IS910NfM5wUG0zsXxSbMo+HHZlFUwMHG0oU017g+2fBAUWBi2V29FrKCfpZc5DYrE
M+phGrgW+Y+EfEWn6korkfrrda7I6bEuAcRfahoO5hwYCuN0uOw1sAywt6TIMS9NjaLUd3b8G0lX
oQhhx2UzEy0FgjfCcAp3e5kc+n3JvdKq43xGCgCVFragw7du1FTbNHywl7i+IFLS6WqzATi9Rqeh
gKXyjekmRcMk6mv4QBTbrKpeokfDOEdA02nGq5iH1PIziFACmu3v5trxASnprCeIhiOhIn/zwUk+
qGxAi5reYDTYZahyconNAqZs0UmPJum9oRIPsYs02e6qXAoXVYWImtAMiEt22SzmXKEKyqOVQOYW
0WBoYFB22Ha+CwQo00HB3r15gijioQEM2suEnIEZ2teEHiTIOLU1hlcHDK9IWNZY6cot24C+Wlmd
WABWk2lFbmAfE0UHBi3RUqua/ugcwyh8w5RVe0qJJgNyVzTXHp0YOyBITO2VNEXCSWwkF7OtlVzN
HspXi4L/9MFpYCrrZ9Ym/8XKuoXBb2QbxVOodokRIW4A+YEWjDp9qDxFUyKyAXVisKI4XJs3R7ga
b+BcEUmzosMkVATqK+SAMtKPY0UBubSsGU3iXgCnvahq1K9KBClpUJb8A2PkpRzqOp9RHT2o/CZJ
TOABd/KDWSk08Fx3YLjDXLmFWo5VOm2j1FYOrLBeVsRKgdPTm6oyZYTZvi77gqRBo7nXodMYUI2S
5LQiF+AA+qSrmIePKuL7tlzSgcqmulXMVSUGKZot3HGGF02JgxhEP1SVnCvE7TKRqLLQvA64XmnY
Alxd5ClVttx6xiewI/OSa02WgLtEdlD0Er4HrZtdNiJC9COqYVl1NRrgU6B2m6xjlQ9KgyUu+fgl
L+xA3yc/FpI6FsAB1iCNv0hLUI3X93xB4YP1A8RV21T7FC3I5Zs2FyjK9XOD0oahA2XIdfFlPQz1
Sw6Awduaj7V8gvR5fgJh/kQgf9U1jDQL+atQBIvyVaq6OQJoSCM/4uOgYomhJoiEZt3xy7g4VYuc
676uAxWl0ds6pYWaWEX7oRFXyG4mSX2rdxSIAbfgvbs+K8NpG7jly+0B+n5q1cP6kMlLog4g29n8
/2n70x1ZkiNNEH2gCy/YvvxkJYtdnCaLHCa7e+4FCgkLd4sIz+Ph5uXLWRKYdx8VUTVTUXOVTy2y
5zbQpzIP09R1kV0+ESlQjAxgGctiU0NsEDkpimqDOQZoLN6WPR7AAVp1XXDSR40rYCj3OUjkbTBy
m67Djb5c2yUQdsmitrrIhqLW3OX2mjPgsLTR9iHP3iAwMbN6S64NybBczTdF9DgAHdclhLRKqBdS
EVHvJ95pAUQYuxx1oBKyFPBaA/kc5cpxE6GvxiAx9IGAHUX0p0OkCTCY288U7iKR2XUIYLLyOgDI
pOyUwUJKrRvgmdWUAmcXhVcDzKo2Wsu4eCEgfdWoEalIMydg7/bR7uHhAXoQCJWNqWmpqlYtXSA/
+/aTaUKA165krjcxT6sBPYe6Rut2+nzDKJeWtVoARLpGwPWvaiWDpPjtwOOrqgQHhaFDgKoQADpW
HGVbghJlwIxxeG8YkgHXWwnZKlovRkA4KLiSxVBVKLGMcgM6xlEgNpHqajekTQuEaO8+0VoQtR2V
BkHJ3bwUAx68b94AG1EGIQHoM6s3NweoAXqjiUZf4pBcUA3fFDrA/qk1FQhBVXWqTjpd4V/l1bZO
xKDqLsvjJtezBEejH/rtTSTB3XbFlt69gN6apo27NZq0BEGtKt7lORqtQ80Oo62CEm35QIGHSLmw
ZYZG/6IxAfE5KvGyFTRYtddKiW+bQrFNXyRwfvM/YnFVFFsmVwI3qq3TLbAzIPfzWEAqHk4CrSDi
QZz4MoBIynJDgTWI/9Rdttn1AS3E2qrS6hfeNiU+6vwT3WmB7I/PvNecEACh6aMQmgQ3A/bJag1H
reHQEFqz02xWkd8C0eKm00uWlyg8IpqoP6M2ikENAmp13PRKOSIAWi0qLXruQxUvfwZHEgDYlX0p
rTEA62nzDZApcAjZ4qleZv+sUXTAxWuqLc3ZUDsUNEX8M0H7sqm2NbKXABoUnmmRO3PbihDvo1j1
uHkJRF0bFXXxxAbw7Ot+SwsqoNdFZoSUSYnKUUFUVa+x0HAZwEurKg2XEfTkASGCekPKecMQv6re
jpJCTloVVdPrkkWUCi43dCpDc7b7zT4RyLu2q+CCcGaCiC1wnvMcJYqeMV/ocbqNzX2SratzZUAL
bvQFspbCjaXQcp1U0wUqo8y3zAFFo6Rgqd3znQOrWXgBrF6UHujI48o3NDYARocItFFTgXrTxCTA
WVmzGS8NGyJ2CHKqDKAFWkYwrCi4jCe7QFiybuKtejT/FpiyVROfi4rafiBtnCVwiWFxDIgZVeXm
Xq7AbmmrLhaoiYtIEJOoiq2DDoEN1dfKgCR718+9x9Cswu29Q1EcYV3BDHHvQBiJJBmoSUVAlziI
dOljhjptV9vhOkBdtPnm8dcgYNSWUcBOmExBheHttuaYQJrHveUloYTwNN32hBKC8wpUjQgHxeER
qIlkaExHR8ajiqwGDEgQviwwozsV2Ry4jsDxKrf3KmiBGOu6z460BWZjnW0vhARRiyo66H3tlIKw
ThMtZE8ZaEgo1ij0EAp7wMJVyMJwrhiSTGX/WfepRHGZfGP/bFCRHe/VggJNoMCuKraMAAV4zVrt
GB0RNwA3mqkVbRF/DoR5RAXnqnBKZmlBmrfa1kUfNb8QGKBNIEuQuii7zRM/wbzOtq5jE8F1PwOV
4fdhUWq63hZIMW2qi1baA/ZVdxtLRZFpnyuTYaAwA8Ijb7fMwEQtyZBPJrOugEWzLpbQUMN+QJk3
0bBwZDcgjJqVG/GooP3jGjSjzKMGYZ8y2wRwA3GsXGk39+xNoBRgtNlqLDqORlk10XFhkVbKqFd1
iSTE7dOdt7r2Exgv1MGr0mrgI3oB2ClVsbnDWQvspa7f3O4B1D+1tTLtZY6fP1MRsphUC0VGfgDS
qmkbJDufxTBoH1yv7MFqVSYfZGFBKL+BCYYZ7Hh8tcILgR5LVD36FM0AyM2q0DJ8b5vaodZ5tqXG
EgSNmvbTSUaQJy97UBIopTlwjTK1tCVi/oGDxbtQxbMCKAhabYLYbYpnlqI2LSDltSUI9pNtSdmh
Vq8Vah090xxqLayPlb1tskCaDs0N+EyGvKxDelNSFChCXRTb3Ceg+Yu20jR/gExCTJhvgmoBk6zQ
JcGK9UBcQwTbRGNKzcMF2Od++6RocKa21DNysskVKvTHnYusqD9N+1QAOz76OmJighdqmi2yGsF9
xQrCUYqnL4AH2NboMJsHnhZl1EqMFCEiT0Kf7uZDceCBOwhyFD4asP27ZtvjIl+xzT8BrAXIz77d
5sugxgvt5wrjgHgsKxUrplkHIFRVZRsGc6AActluKSUG0r5qPnUzBeqJ1sfKO56Sowi20G8d7AxE
pDbrWgsMAeOkrLexEkrTN9kGhDsAHdRtG4M0aSoI9CHoo7CSCCMBia2PnY8wNQi5yHHvzZJIh8Pa
kfuRbWrNAoLGRdFsa+OJpH/zmZG4iO76ckO7WGTpV9lmawNcSluXsVbj8RoAkCZooll4pYsuyl92
W8wFZGfXFdZJzjoGK6yHN6baQIC4ZZdtymCiasG4B6/vBtBcfFbYc2kQkt/d82A98/+oNHf+4DR+
HU85/+PeGKr8D+/7XxbJTo7S8XwYv9+MvB+vV/Mwhvnpb6fXV7ORt6txKcfrv8R2kAt3uw4kwfoX
/KrLDPLhfKB/1xeu/MJi4uf+F7pg0d211FZYxO/TCmvr3dAgL3V+nE7aakuTrDpsCP10lbQs/dPH
8XA4jerxarGcx9u4zVEa2hySQgP8z/qmOn9EH/9zqwSUSDJEXWZWu3VAimYZH06fSfzlh3lDks3D
fj/ebvNu1XPKHbbrR5BSRN1cX4Obmpn39Tq82ajeYfw6nB76WWe4cHRDwZUt/6LfW6lRmLmgA63x
MVy+XY1enfdpOExdrahDCsvVneETzj5RdB1J9+oKbRmQlWdqZ3XPN03HVBeZoXtPRDXfxfHMAc+F
f8bv+/HCqSiWOY7iVMpqG2WTAUNaSeEkDxY4GeAlcWh8+VWvUKssYw3sYv2A+QbqMiKa//V4Hz90
yhLCxpsVz7K00WWpeExvmLsV7HutWVE9VybO1cuL9tImoHZdtlThXRe/j8Jy/QVq5QcCEqMnSNHF
MpvkiRvWcnA62bc4T+fxu5Gs4CabLAcazp0uEB43XSy24aPk0aO6jdI/GprRD4vkB7nsdlu6Wutj
Emzjq16OuU7GmSL8n7xVF0lHJsEyp+HJ9hG8fp0meNaqLZRFVrxZ6IcqQ97sVvx0PD9ungSABqp6
qBv9Xvhfz0b/3yddnZXaYgthuiiDvp0GXE0Ac9NlTa9QIhnYhhJvRiHeJ7JgptfZxFHZLW8VE9B9
aX3FTbJrGRpQB0BEYf+xUb5Yy2Z3H5f7D2wMIov5dhn3x9fjeMBiqtDkvDS2kvZkXW/QXAslXYfz
m75WrukuudZ1NMx6hvZ7kYHbeR9uy3ZuOjEhGc73mlW6rO4UAft8DtoRJJ68BWeRjKFup8pzcBbB
6vp9NsoCK7lV63LLr0Bd90rNo4o5p/vpYehwfDOy+qtOzWUHLOFNb15LIyywCumYr8fr7Q6vaRll
HVXRhr2nb2dzzpmxEAE3KgGFYSrdkcoVccoGbvoqypVs8F6ig8LbTSzmaK4Lv16RMovGUjS8bqpJ
JRjTNtY2OI/fkl7d0vctyhp7wlN4e2o/XYxM1b2BDLy+v/It/CZpObBF116dOSOvxNYjIOwW2Gik
Z6wsOg1GFSHfomsBgxiB9vU4PW6348vpeH6D1pQU0D3wv6DmqTpw4QHHvw6nG/CAC3AqY5jft5xI
2gs+5v7kPjxebPFBwoHoN3Evmwk6EWmLLBaM2clobJjTaYPPkFUKoyghMegyZMD0NHJS3LkuIWtt
jScVmyTrvAfsIf21md0Ox9fXWY7rIlhQRL+MDfD3PxwO20SUsB5rSVlzXWNSMS3Ta6L0FCyBtZJm
5dMhxtdXqhf7mvCNJR3Va4FLhnoq1rSU9aSsmbcxHbcqeuVEqlkivOJtQfOq2kpcWxyt3m+YApJl
9WyW1vrNCVe7lOb1IhF4N6xMDO+lY6JZoZgpa7dPd9pExPc52CRVXamLXqR4pR+TPtAqmPEUrlpk
plkJxwaFLSiwM5vDGrohnSv3pUU1vn+AoEYP7Hq7lZklgdtdYAMvllA4Tx+DETi6zFtRapXKA0Au
rzONBYWu2Bw5WfoAQdUjY7Xfjvd3I+oxwRTVBj/6bUsEOEdiWiJXdPOsACLWx/SgsuizjXLP8ULS
3BMuJBWQNXVSVntrZKOozsM4Tal4XZ8I29YyMdk+X8Oy5hZt1RcgFCDBC/rD5or25bDReGcSBXTR
ALM9NNywIdGEcZ4m+pRLQEz3+VEEa+1w67tplTTOKrpR6UJZc/y1gPrL+HY8A/O2qovPpdqTC5b5
lgya5J7FV5lDL5aJdO7x18jtqarElknnjYdb6olLoKLeHMXqBJ8124zFT1n2Zb7FakzmIJtERsEq
YOcNq8s0BRAw0vpJpMobFL2gQAgL6CtKh1abXLIgbqQrsSYZf811Q7fBAaLNafqs+6Sqtx5nQtMX
ihnOjWYEB25jvCavtVgdNuvfEiSRlXjd2yp3C0V+1gK/T5IptuSqLYJWyBgQhSgLoAspZoCDvXkN
CHRJ6jAI9bfxOukxNY0aVhJqS5yv2JorqPVjFUAOzM5A0pFqskRCcJU+G17N01l5p3uKUWclbM5q
mwQd7uqzlV0PEEbz+SBfNFkNVFJQW6EbUsgqDAK8W4ICam5aCxdv0nIrzE0MuuG8Of3JciUns9lk
T6Z9qkLJ067YZ6uXUWYb3LDz4+PF8PQrzqEICUEB/SqMKycz4nkH3DgfBAYAiA5IKIEYwVqgydLA
hyf/PmHUNd3ngsls3ULztuoBfMBfFgBW9Mq7Lxd1f50ehlIRpELLGZNc4b5a9A9mmauuy1dZzCrl
SaSgpw0ItVszqtU349lXDAX27lVSSdZNmVIDfJBFD1Ck5DaeXnUzIgce36J1zWNhnVsDofEMyNDX
0dA4Kw7DNk2nItsUnNLk6oj1uF6rKgS70k3arLodnVfANqH6ke0pv7rVIJcbY6LpREm7MUUVDeZv
AxlUGgg49NnSe20QJGM2Q5CiakQiRVQu/Y77BJDIzwY67+9m4YSJWgKtFgKXzM7Pb3rCvSo0QLwC
CtYX6oE4EGyMcVA9MJytpG10RtMyomuX0FpF0+M+vb6QOgIANgSo2xbDrfI+Aeveht5uqk1csxlU
LLSK6KgCsgP44TZFcyQaVgauptfhCsJ4FVC/AuewIQFfNQqRytAtiPzWSWt+szNfCf0ZxoFXEVNg
m+roU6ehtgKMmrwEjBeeCanhUnPJAuPt/n4ddZlcpHRczFbG+XKhNkNI5IwiuN2m/XHgcEcSSZCA
AazUuW7V9amAU+Dc6/ZylzROC13/tVukPyp3S2v7bEvMXJcMUOnUqNRpHQKAlCuzuE/cGGZx9Th5
CcJzHP615cIp4GJVgHXWaAcM88gUSz+dsNiY7esQ7AuFNfJGrSzQ2fxuBNsp5Rf3iisAUuk6t7e4
0M+aVwuXYjHUFRCQ+gyRSpiBfados0DaGrLTxT6yt0QyFIKr+5XuUIT+t0kX+fnGkGurk9On/ZaF
0jd6LSgI4OGfjALD+M9mi8z1cjYRnChrQFTy7gxfpYzCWvX+nngHwiYrccaQB9cPCpKOHUZeqp6Z
rikrBQ/DIn7OzoEdZcpNRw35/XAbb+OZOqwAqhIITJDEX0jV6cYE8LVTULTPYX59X1oShFiZoTjT
x3D98rjoPF0oqnk7KjDNkygEJclsa+C6rT9bAb8BvdJpFtCaGRpdupXJRG6nC3mMeBGNb3THp8TM
GNOpHIcYTphWe42nnF9nFk7m7lUY/BOIOS2c8w5h6klGUPZ+P11+ECPoFlyUjvI6z+r6l+E2nPXU
mt8At3PTKgq3SPNVbGeFgJ8FHsb1V+Wm6EXSNm4aDFdfwuAY87QFHbEhy1Cr5sJcmrMptlvLkFMV
gW3OUNeEmVlDhA2/FL/SeUpT3jM4jfubcFuT4qmtSey4Zy0dli0w/yIPx1+bz/8w28D/8XOe6d/b
pC1/L4fPMxGJJbQwX7akBP0WCrHEHx1V/tNIea22MFsKAu02Wg3u7KNfLs0I7sVeht3UCvYYj8XA
W7bK028P5x7wUmVsqfC2NOWRLRiiyFaUIjZMPZ1f7Em8qtdegNPlT7QQdPP593/+9S//HF5O4892
Ds+/Wb4slD2as3aWp4sybDW9LPSP6ZtbJOvVRdx8Ul5EGPm0yHzneat+7ea689dc6FkuX//t5Vdz
kHkDlbqEC+jZDfhnoyX+ZK41fQKHNbIL+CAEL0D9zuYVan0FsQUeXNgsK7iP87JRv3a9KuzvN8Hv
p6i2Wfri2d9uFzUqfrsp9J8WFCCEg9w4eDxn0sdu/m/sn9x+mk4nS42ZvgnX8tef/3kTBbi9ttI2
8Uc/REGnP38BnLNuosRTAeIpQuLxC/z5Y3hbiEd/QFduEHv+fzWO1byAfn+FxSLEFvjDef8+Xedb
1E9RWFss9gQhG/aADbvgHYQcCJbIdXnk4uExaowItly/0m7N0U38RjJ9L65LaUysBUKhAUKhSgiF
Qr/NUkrVKGPW+mtWmcpQli/TNNWUZez37/QMuS4IO4vgWm5NMOP8apl+5rr7xPMXJdBr4vxV8PzL
LnTicRiYGCHzNn4aT6d5GV02tlkZ0k+urlKAVaRuC1XTv06HH2kiLLNau1Mp31og38QCfXAO93Gn
U7EruIixwL8+7ndPiOAAeQ6JwmiYRUno11h0MYJgai51PuqzPvysfmJCcPYsxcGVLn0c7NRaZj5Y
FlAw0OpCo4gGMs/SvAHS3D87S+VSebkCkF4bU0t86bXOvL18q/r5wYVRqt9f2/Qxo2Bg4Q+O3Qlz
VFjt4t6BHVfqdty/jwP1U92gNEpVBf7B+DHzAiUwBvKE7GuAQSdefaU4FlsKEG3Zhdzu2eWfxo8X
+0capKxjL8BUU2RA8dQpbgOU2mcxXc+/WbWAUgvN8gx5BBjvUr436nMDw60vQlYvxXUBDdl3moG0
fipw55JW6xipgQdzQ4pjMurP1II4bbPWTafpxsXpKoHTlYcCbqWflyV0GVPlqtsoVKvOL5W026P3
hxznRrVPfx5PwtwGjnPbxGhnbVwAhs8yTVoGNjKwLoTAIfRgWz27fsBSa1eWWv7svQLHsalCCiie
dSx4vKrX7n8l7PU1XFdX4PgCFi7bPOW6lzUg/zKm363IA8pZOnmhfR94u+DMlfjhMuD7gG5BtKVp
2hjrTmzagJ/u5HfhTy/ElgFy6TSDXopq4FF2vSYvwpMDqywu8l4Mt6JzV72mpxY2AYReq9GFhU2A
FVy3mvuwUjTIKisa7eb+/R9b2CzTGF2KehTjLFuNUVfMXoJdCF/Il/c8xyRqEJPoNdsu9OsBBZXR
WKf1hADfZ532y/+64QWKXvxquThSjmOBmdL02r0HLwccgaLfpiZboCajS9jNI/NIRJBW0fW//eV4
u28IwmSqlRYamEBLZJ1qHwL/s8+bhG1V1EAzqUGLP/p5iroXIfikD/gkFgXqQRSo0wTXUxwHxCQl
6XrKf+H7ByKjq1Xr1P76EHAs2ECXegqg5stupW2fIhgdsBHiMcBAX4Kv29C1EZI/jAeXIB5cxDjP
efHAh6z0jJC0S0FMXtB/zdNz5asDTVXXCWUJfLmyLjRzmrTMFkVXqQ74iuKByGi6lbzzZtIfj183
eAVC0Qk41LPIBRaeiH4LFPuBsIfI0NFNFZGIAtwCrNuAcICWL/0TUHOw+snGBAGFsq8ThloP3BkR
umJWb/TH74C4q0Jp08MUjC7G275PKQEgPcvS8x83hykjL4lCUUWFZf+0QfS3RatFIqV/jJRvNDgz
GKMXiIGu6hIxyA5Y60WfcimBAGoLzViaY4cgoJKrAZWf99fjZYu9U0fNbCfvC3BjmWadSjMRnLyt
1VBeKLOAZd2qCj8IaAHZ0bQpTwvQWpPH7u59uP3Jzf1FjnGunf4vx/OX9MPVXactEPo2HfCOi1Qw
DCR4HDIy6mZKR6EGLl6Z/H0QiWqaBNu1IOpe1KmkKTBzq1aVUs8gDBAMlJmPeK4LXH+WQT/N52xA
OLLtilTuBQTSu0azVWVgCpCQ6xUUTVeB3EGfq+Ch5+sHTmbVJkRvB6hPaMtVYEsqKmD4ZJV2e2L3
QN0KqAOn7/q47AMYrDbKfi5CAEz9Nk+ZTCCkJxJWq8DQJp4p8/YzgAWAV8lTkr8HzFetUHyd9FWA
1qxz7Uf/Mr6N5y0OR1dujIsB7JywWMhvqyrF6AZZBJl4zOhd4rmcBuRyqpSrC36/qlc5y0I5AnA4
S3EL9P87JTgMAFitaoD5KClIpxVlwMNlFmMGIIGLPHT7ntMpQIxWfabxcaDAwROW1RaoDODmTI0a
hAYscJ1rFUYXIvFQliCVE8oBYqXqCniNoURCcVPxHiuVEhNtQMrkeUyws1pFTpDAUogIgOaHAts2
U5PUa08QOLPFKtFYSMcE/HjZb0yzoyB4UX7iTQFStpPojoibtCIOAKdKYkxK4Np3bczaZacY5bBq
Lag0a0hgIlctTAAJ87QD5mmzxcksAZhPpOxXke0wIgrMxKJRYZkgFtvrTBD+MggMFa2W/ny2c0Fk
T7yj4maVwGBr1YTIn47j6fDzeN8Cu6gSW2jBx3n/GYgyMFwzFbb+fz6m+7glWlKroboVhgcIF+H2
xuTsBqDr+kUj+WGgsOoi5r2KsAXKDpZqOjSAOQKFnasRr8BxyUDQRo00yhWQASyj1jRHvNQ0FNLX
eQvVnBBxIAayNudbFXoJFhGeHBvjxVPgF5QklSL4KabgPD0IsKRlELMMAhnBgwB3olGRNaEtDuhK
iPoVW0lsGIhGZJlGmP9jW/K4K7tNMh8FJWQWOIzIyMoUlPfvEsYsip7XqVqCBoRE5Na7Z6NJJn+B
T7Eu7mmjgVFAjH2VyqMDWGqLy2HEGYDObHPVbvnreN9gf7pJwmomW4gWcJPCnic8RZcrLjKCRqvA
gABPgU6i5qSE8QJM16LQosyCq5GyWMNoOsXFRBCwaNTGRXuAsqyLTRVeCC+qOyJhlB+g09s2FmV2
WBrgDgoMzsqC/+u0IVDVZKUKewJpoa7vNyWWAHKsViN70vsDeZE+Bf9oQVSlyDQpuCRhgfwR+G7W
xRJniVzuttHY5NlVANxalVssKyBAa7ERCvBVTYgD2eQu1AIUQKZuJUkHXML63Zq4GYISEg30+4Vd
CKyxItfsiJDtgcQp1OhmILnBFQq5y9n8WjFFgLOTKANb+V0Al5WpGI8QQwlc4bLfCiwD0Zg2V+3U
JwsFJM3WduJT1BVsoWyrLTUQFTAumk5bISQvEBFYQzW6uMUPyKupNeXw7+aTDfRZpqD0FbjEXk0d
CNWEQJ5V2igBecuyiIKGbJldBoqXasAH/+06PS5bqoRzlYZX8U0QCYnv5DDtIWQhg9yzimUCNpSY
q3Ahuf0WKOhaN2mQf9aoMJ/13bXg7totaW/k7FapIiSQbij1dEOa8cum3ATuBiFZmfdeQY4C1A4w
DEW0YlUDFdq0oP1C22x10yDMt4WmptD24EKKCoCVAQvWKTc1B0XqlQS6F0sXvugFgGBDX2o4lhkB
AcBn5cor0t19YLO1Wau5Z7MeAOTcl5ql9ZfhZdwAvK27PImbB3pImMti1G9MoAMqXJd0CmMX6KCu
V/E/fx+MjbihiU+ttmzYirwVFiIFEWutvgaI8kRN6MrIBJm2rNaKWxe/CwS+BDGv0DTrMCyoTm3z
FEuD+o9K9h8Ik/khNgTgCboGJ16FfQssjHihssgPAO+9qTSaktE7oBv7UsPErR4CCZV1KwfdzgfV
nm22CoBUMSsThb7qreoFOBuFirOVEAvUEkJlsFnAArboc83MDz03oGPKLtVpC2QWSpHp4l5lEYQL
sHaKTSISgUtUY3tGaIJqnEyt5QmlI2g1IJOvuqUMyhcFO2kIIZD71VtU/XlrHKIsUm3aQGaqVisJ
ZUoHxK/jjp4zzoAYq8sYvi9QJsAsEQlehWiBjV41pepcAqRDnxd6lSmoOswajT2DFwYwUpEGJcem
zqPJDuSNqyIudCky4FIUibxVD2zpqta8wsCKRFh8/QRBjgFYgesOWKW4xfNjA6Ml834dCFqX2ZaA
EDI99NrLP2/t6ChcS4FKdbFvYAmv+7Y9Jy2BiFvFJp9B4Mj+bzYF85B6L4tU8SL4+TrVOakH7pto
pbLywhcIC8j1ds2m4h3E9k2V6HKWl4BiuwxmSNOGSVvWuFpYGMsg2ZStesKUUYMXiM++xsUMG5pz
lGriPRBgQHi0W6o4gZGZ1xs7xiGIY97h5It4EGCy9f3WuhjgQOj3sQLZA6UgcIMcHKjVTBhYRGDf
CHtWN8/WM0ieV42GL//Ln7dQRbSRiMURA3ncpWRaDt6valSXI5QsQJeuQWqt0sMBAdP7jQAMFOdu
U6hHlGNoMk0+B3lw4L9K5yUUsIFKRuAJoSQsBkR3pEFCNFcjhYsTAuCKst1aH1SaLLcIoirrdibP
xgH46TwVa0fFGXouOSxMANCNrt3WVBZFFwu1FqAGbkHRfKbMCmRLdDxb4IODE8hsSdQH74BtX9aq
CEMVFH2b6mYLfKpqjZzJFfmD2rw1egkHSNF1qlEX2PHAHGnKrZocGEUFNq1W1AP8cL0X7xx/AZok
w/iFDWaAXksS6iIQ/hLyR4xLktQLnJNis0UEuqi1mQpnCskRdenIIPwijQtqa9XD/ONJIAlRfwk1
kBiGCYBtuG4PpQHygNdS5Jv6lSDshOi9X/MgHRHVOm8wCishnVY0Fd4EKFyM571s0glI8z7Z5RtY
o7IXYIgzX+4dHHqFzJ0bE1ENE2pT0WhZocX0AKE4PT8akD1wMus6EV4AJcplq3Y48NWlqPtdocV+
g+opEJ3QA+iBOgG0Xqs4ob8OG9Audd/CdNB8BiB4Gj29Cqy3rmsTsZUcyMuqVjtbLPFjJOl6LX4c
kB0AJdTNlugIaKzdNtVWBDrQPC3oAQ/6O2RqY4af7z9O45Z+Wqtk8JOcQtef7N0J9H1Z1zGmc9Ak
gJFsq82IFoAb7aOlXfbCQa2iPpIm9DMAmKBMdWFrQR+tovpEuS3ST8LUiXVjE247kBhtlsiYAtot
uywVjAZiQ5q7occeZgx74DJGEV6O/oC8a3FRouB3oO06vQRL5gBQvCvTkkkBuA44MDUGlEhGAmbe
OvOpdFcBQIY211SAQA8AhspS7Y1qwFAy77nun4rynpL0Q5PBWxwo5JknZxmAmJvMSIT2YaC0QMSr
UZH3ETkCPPiuyDZUHSHbK8s3eY7AbWu6YmOjF9RgpFNhTSvAK1BNq36+Gi+AzF7Tf6YLArBr+hb6
oauFgKSKl/i4XCNAbcbFu7UmwRUKcVLxxFslFpgBwa7ryFXpOeDvMpUxbEBYS+KhfGNba1z0wLhI
5fkAAqUUFyd6UNjfBEj7bGNSDXjIVbY1EAYEUt4n/OUKuH+CRkXxpY1dNuDsecLl7EHEu9rkM6Ia
m7pKNdPJQMSr6jbVYKP+L602xunv13ELEKPUR4ycN1S8Vn2X6tQCfI+2V5uNgHR8n2Ncv0ydAo3T
N6rRs9V+k70twmSNvD3UKQRDWFehY9AKPuvVCHoFpFXCFREeBNAubQ0KhoH7UjefUW9A7vTF1iZI
QFkU1db+FmAnItAoJo5rRwJJxL7SSiLX+g8JB+wciCOB7EbXbu2Ig2K4tR6ABVQdB4k7wx5QVpua
94pq8Os28TGwycsuT3VHBtGUVo0qBO4gsICrRu02I1cAIq3CbLCBYKp2ExAYpB2KRCesVYQEBMSz
XGvqFdwHwNRWXYwErVkCVJTe6m8DiL3e3JYDmXR6r/cgF436P2WJjs+gQKVRM+ESKYZqlfotnVGA
G9bnse5VrqUe6GNRpVDwwBQv2+4TPjlAkXR51LC0Ch3ENvVJRB4DhfoZdDABsdJfQAj0+j2sVDKI
0hVdYn4aSuLWanOHEKWMstmFlkCdg1KAEvouBfgEQrRqVknPSGwJ9dXoE2UIDfjpvE229ABhLYHA
WW18joyDn5aDPcKBRrMzB8LJVQk7tEupCdClfb5tqAxwLKQbvBowikaKy/QryZ2n5G0L3DARi6QS
pDIU9m/X4fK+BXyE2V86VsB21ds5hTgS0ACjzbZ1jkb6o96Y0kNgkq5L5XkAalygylbUHLNigGuS
lckBeSA6ruPmZXQXKNJMxQWEzVXAe+oyJbDDwHNWKrQg6GaJQh2paGAO3qBqCtxyaEOatlSd7eAe
UZRcD04HSQPAnE2pQhRE/RKqvFER5yF3g2RP02zBV6FWuVWzcfoOilsUUdiCi1sAQS0cxBXKRjIU
6Nknkl0styvFNEHV7CpkP+RJoOlylRzD+BdwN0UafNVTfjEVgLsr+MHqrWi5J3AT+2zTQBzg3bWZ
pnNjIho4DVmxbQok8LbaCoTR0EwyPUkDcg19XqvTSFBopWti/vAfLpfTeBdt10CRb6WB7GeVCqRw
ES22YFgc8ugSnU+EWQNkTqaG5J6bziEbK99aiIUApuvBnZG8A7AW9cEcQd4DYIWrUP5ElClIklWd
Oic5aLwHSjVkYzEvgy3RV4Do+8S1gY/LfluDS/T4+bbKU2AH1alBLh0wBctKMx82zRAqiywx3xo1
Xm70ZA+Y/NQX6oH/ti1H1mQ6+69iEQgjkW+oGQSB4bzR5qTKcBZQVToYOeBZ4MxUXSKcB8JRsgNe
uH1pNiKAT6FVqaVFb9lsAniioiw9zxnDyoCUhN6ef5YgILXQt1t7RqOr7DPtKv94vJqDTNcfWwoM
omW0VoKCwHah5l4lHaOJTm2i3w7qaFfA+1uFJwHUuy83jdoA1oDuwyzeJEj818m4Agh0FWUK8gAy
zqUK9w1sZhAjbhq1VPN43zIyvSubRKUoqNUr+37THD5gO9RqX9QwuIRaYFS4VFHaggDArLuxojMn
iDEX5eY+sSBWn6eGAucVAoDkmjcsah5QPKHZ4sQVqHC7VrEPqE9vfEqLdYCAM9GVWkpxbU0AQVYU
GhFvdb1FsS63u48OUwPdNPJ+K/IDCMFWLfoNWjGgHm6poawd8AbLYotZAGRZW2Vbst1o+EHdqeQg
9wB0kQSh1Ut9m8tToinOyeo0UC5f6WMtg44i4O7KTXeHCmbKaJLQmiAA8lfkWzLDgOj0uNGSXAOJ
RXHvq/EzQSwbBNSrTS37GxD4qtRKI5ST72poPgmeB+TaqqIrKFdCjWhB0QaKsbUdtp6nDTVDbZFs
1wHajlVdvW2KN0iFdNGZBxbzCIg+z1Pj6UAmqmq2DZ4E0eImU8OFwLboMzXpElZjg6BDXmyRMwgf
WOZboX1A3HVZwuquwQPo5S1/3tp4TqiqFbQwCB2BCIJ8wnAMWLACSFw0quUcJscBKqnoVFwLgMb1
+pyksFYMCM112zrQJhWYPHmVkB9AfJRdncCE1ED2ZMmaQ+Bw6t2mAq8J1TaXm2qTgZ/RpDrX5aA5
RtUWWwwtgDZva7U5zjI3DvhaQmlT2qtUzB0Qg6rKjZgohGgs1SY9gfpFxX6VFj564gNgBuRZwnBv
QBw6Am6jr8ev5rsbf3E8H+//9hVwdEYkafeQh3dxON4uw33/bj8v9c9dNDwPjxB+noPPC/+5Z4jw
817/vFptvnv+PAe/XhWxze8NEd3H5NZdTD0PhbD8GFybwyDkoRALN16AjZfpWwefl2V46/bzmYH5
85+GGz59He7AMoCnuApsvvOfdnGK0xyezDcYW53d/zK49co/GU84qiLXBjZe1rEX97+MKK1OEUsN
fjePPZf8GG06CyktW20a/G7Vp6kMSJayTX+OTt3Eriz8vAWfd6lLAwxSdDHq5s/+OVzfxjR7iM17
TERI44hQq/TZO3D2PnZ2/+ZIsjRPj0b/z3z+Nk4f4/36gz/749/++vfpeL7vMu0WCj/0iCKswss3
3/7D2LmJT5vl0xn3R9++jub8/MH7OBzG624/nW/364MSNrvb42V/Gm63+Kp0osxpO5IhZIc39l1u
78Nh+nY8v+1ejRU87N/RCvmyQsuu/H8u+9p9m65faE/X4YaWcGKIBRmHvmorAven6Uab+PZ+PI07
XpL+9eU0vaDVqmW1nCz8PLNWXeSCjrfdcL0OP9Bq3bKamKNnjzder2aRj/F2M9YuumUn7fiWO0q2
aRuavpo1j4fxjBbrl8XqbOl9ZXf0uJ52t/F6HE7H3wYdMmPXafw9kd2QU0m1jRIeP/hjazV9GX+8
kju5Gx73iZ5k3L1ch/0YXbomk5TWzTml4mMRy6K79+N9dx9v5o/rcL4ZAvvQVrLswisJ2/Y0nd/e
h/Nhdz9+MIk+zjo6qKaY/LKKsLH3Zom30Vz+B4GMxsPObzC5L2sm8YqMfqjcmvfr8e3Nvuh9OJ7N
P9321+lknuRIv6Itlxd+h3xku5r5j+7D9b4bXu/LSuoSmViCbUiny80S+y90S7Qn4xDsztN993o0
ezIH/DZcDzd1SQsusPdG5n3Z2X29jeZkx/3u9Tp97O6TSgb58rkg08tp+LEzm7qPO3u6y/C4jQf9
XH4TXDxf5WtyOnB6mv7pakz9q6FOPt7HdAAX7ukqJ9WW565TBj/9kVcjCvO/UupreSItOIvZtKsd
3t6n650p9jp+GA5XT1v6wwoYraPUmQ3VB6sEt2QdS7/OrnB73C4jMcxM2P5g+rHy9bGszv043lgm
fx1Oj/G2M+rlvmxNW8wiFOwjkhy18pif6XG+jYYIrtNlvN6P+uEsptIu0Syg0OWl57fXPm/kDmr+
s0kT0rvhD8Mj4266DPvj/Yd6WaVfvV4GtuoSRn1Bv05ZsE3u7JzH5XTcE8+Ym1avqPZyN6eoXN44
liMOAzqY2awU37KZ0wSv7XjdU5C6i97TDYlJN4Hg5fi2u053fHr/xKK+6GU6/LB8M5zwISr/yyIS
+WH+i6N5gDT/5JmgMRqeUHsam4XljtiIxZf6CkIQWwnq3Lkf5+HDSM0bBVRu76Oh+tPEPWjUlYTo
a2z7RmeyT7fb7tXYDrtv48sXo00/htuX3cv0fXeksJu6nqAuj5EVAvkoRJV+SUK72wZLTdYlOelM
et9xk7p0HdufX3U/nE4vRpuR3ifV+HFRuV2QYEd/9OuLe5muZHrxfe1u0+OqmzO1EIQenogOu7JL
bumTC03L9Z4B7y32V1pK9nWMgiN7VXcibCXyOiwP3S7XLYZWLuQgN10s4ybIRvNDkAN1BCxrey0n
Y1i9j8e393taoNpKq7Xp9zhfruPr8bsRyWmhUAr17ts/iSVsfHH3wf/y7Xh/383/k76mtz+sQ+eI
atmNYcVX8k4NTxrbz9ri6hmLULkWKfpUt9UJK5RXrbsqaoHszkDZV15A8Fyj2jnr5/HNbOjruDuM
p0FXpVke06WbzL00n+WCPpnEM9VUoyPuWEqo1prQt0TuuaP3mN2+O5u/RGauuHvOSbSlE1lG4e34
sEYDEhMlab72WozA0W2+spRmxitU6ZkJO5LCFObPcnVP5v9cj993y5vejHAejTFn/169sSz0DO3t
lwf+T71xOhk3yuiirzcvQqMrkk5kF5atFx5M7Dxrv5YRmMb23dMmtTXqZQ2Oydj7cgf0C91/XMbE
5VNgyq/l06lWuw53Nh5YXCRcTPrUL0QRq9IlAq6j0dd7S/NEDcl1Cn9B7B+4+IXjaH88c9/L7rS1
smUtw6XsX5TdKmKQNiDKNvRx8pXkmx733fSKOa+rQy1VSS11Ga43YFXleRUqKeciHclQHM7j9Lg5
zzQZBsilPPG1ZsJiMebG9WEYg4hHF+Ce3XxUOKajeC1dqVQx8/kzdoq6tH8yMYXHrzwcFi14JDPv
fDjpb+d3KZqT+rU8ixyMxLxOZPufDSnoCxYZVqbP5ljyYdsu9GHW0u/beDJenZF6w+twPaqU3sso
Q8V/rq/O2aEU9ns9Td9UmR4zY9Ro0/hxAb5qIWyifjlchP5P4+tdJ/0sdkXqll6mx/lg7goYWoWn
Mhqa5LCnzvP+VOgi8xYR+f0ucCE4Km1I5yIUk9fsnLSKHt39Nl6n3eFxhZtqhBeRcSw/c6akZ2/n
IqpyIo9RwZb4hXrKKrS12tWGkLzpmpirISzY2XA1xPA439kDPBr7/w2Idb+dhtZsXPBgpqqUZBfm
hVALof9OMeyddR9UZhMMQmxbFo0SwVZFUhMT6f57uofreTiZ7VxU8SH4VKS8hHIxPEa8ZS7mQNam
vlIr5BDxrfnTRRanjxcR07ERmvH/w8acKr+FbMwWd2MRtjdGLE5XbxoaTtsbeQ4CE20Tc7GcBUYH
Vt3dLBRla1vCnO9jMFsyhDMA67vLYk6v0Wrk0HHqyQVQ9SWkxKnoj3YdXEnFuWUU2fbbd2AkEAYw
jH4ZzS3rPNGX4Q2t/Z3p9dVI6HE8U3DP6Eb+Z1Wh+VMS2tY5h+aejvzQERGtytcy9nCPs/1wPNgo
mc7oQhL6NOqzaFaFsT9IT4K+r54iazRQx+4iEVQTrryvXH8KeRjbgy3umaCuj/MZGqnCSuaIootW
L9FMf8Vb02C9Z1xacV4wDPCqHxehtF8HwZz5Z9EEKpOItEsreqc9237sRWyIfYgkheTciDvvEqvg
zkWgh52bULDp1nsbUzqCw0jcU8wKB69LzxEN5yueAkJfh9PxABMAXSkiL0vGLWYgDCdWQPdk3qSP
OeyLJFqo8XeY2P62Kd7wlIx5NZpt+mb45cXZfkdE24UIxZA/kBf5U34IZt4aoYI4u1slnAg1etKK
TBNPYFhtZJ1RSRJYI/w6S+TV2p5NR+2F1004ICdw57wg/ccfQqY4dtZNdaEw6fXKlTCJqaqtUqoK
Q+HW6vnp55//+3xP/yCHmqNz54eeEPc7bMkdaJ1oeIrb6jdWCsFe+zyOeMnNmaVGxiv4HbPVWkl+
aYRRytb/Kkng0rGvx+uWfGwT8ySSafNGJAfI9isdGR0/Lob+VIYQUokLK1WpdDbnHwDEQapEixJy
0b6tcQyhgERu8kmLEURiP5z344mgy6rMEUlfDrw7U5i97zRN1G2YrVxHBrz/9MlwiBDZfN4iiI5R
NvqRtrAEQkJotYj1oZJYH9NFLuw4nUdo11eNMDQz+mOOrJMQ391+nPebQuF5Ji+Z4/QZFusqEYvj
lJRqRx7dJySDCHrIwhUNhZLrpC3sh4q1RhtCBw4b0zd1HYZHq5Wk+h1+fSM4paH3NH9KyYEto7YI
wVHtKtK0iZ6FR87B0VYJzOsMIWQf+xzuBE+aiXzNj9Fcki6GRNpoQcIKm5WDb59j+rILgHJOVS1e
yOHBvD/H0tJ8k69i0i0my0K/dxFhIvO06uo58rDh2ao+dK7sVX07Hu7vuwervfEDaPAulo0WOayZ
S2dgwS2NLBCeZ0VkXTVVPJ9iXUd38WngjwzRNPwANrGyv91ymx0zXuQv3pziv/tK/2w2/4vxDN7i
a/dzdKVgWuPczfyatOJh3E8gcNnP6ps/J1+3rv3H2GjpZyOfvxUpiW/T9fDLjWhRccb62YrmLy0Q
yv8qPmzhDyva1tF3R8NCCoP3M2jV/qBvRXQa74aTk5vN/DG9siSf7xcQaexniKT9sLexNBa2ZAfd
KazzC4nck4N300q/TK+/0MJqQtQh3emhOTzn2G0w7qP+TeuThD4l93qaOLT0y2hLr/TPO58XrPmP
uQ6EryD1eeVzpmwb2x0vtO0vQ12gFDnORUG4TOkh/fsiRepbjRiP6vgbZTE27cBnRsltILPYwtcH
Y5y/kvo1DMbfUVjpF13m9TN+zBKin73jv/vlMgFfuJ8zDZYFvEkhFtDjWf2c/Lc/70Wu+JpSmerH
nvs4uVcsVRoa4qOfw+32Fz1c/Nu7MTSY8fRf85KJybZytz6dpusvRkH9QjL97UqZJ/7a/+svNm4a
x8YvCIiC3pJ253CU4nv4BvmCAuQVKKTtzE6xgv4I+ZKCsJ9nS1mq+NzQ47B//9AEWr7AB+0hyAJ/
WoMvSv+89VvwbIG/mWcHljOYaPWT+o/Vy4dMOJl9ypfp+1rnsVRaeNoI9V+o3EErvmgWTcLdZJsl
4Wzzrr9cWaayQfGLFVegOW7YkaiW67xM9/v0YRcCjW1jtcZ8IFDeHKvuDX4VdPOJjUB2396ny7Zz
i5YuLI86uQqliDdeXx62+mvkMrpAtF0iwnNU6x2ARkBhd4P++e1T2y7D+myHgR+ub4by6A4T34um
MIKL3A4AMzWeJ8KSuxcdGGO7QMfayLjfS+y1bmM/6M4K71nOrO2XX71QZsjYD0wkqXsKu9qX2YpW
QeF5jMjdphMMItpEMU32wbYdT6c2XsZG5c1rbKAQhzq3AipbkvCSRJIP18Sa51hJaW8CNCDxP154
yDt/OhkKJ8MZGlC28eGyCNcQdk9sBjp3xBp3BM+XOr1o/MO1WHXwAqnnE32jPbTJ8zdo9BZ8WAXy
DOsB2XOiX/zS/WkcrqDNQ9jOq1uTmX7CPpCBLtPpTpi62ioYfRtypTMmE/KzBfJPas0kjUebDBu3
7PCLisSwnQTDZvJ9VAmCltgxEfGk/UCH2pg8drePWUO0NBXgnPnJN2kvMS3oWXcL2wf0kvTbL9bs
sUWud9EGxUzrvyQsnzo25yQ4vn7uVVeV4OpAN6ykrZWk0mgfsFCjgBZ0MfsQP1AuZ9F1UQJLPtGq
12D9pLz1HdexrmOSO1L3FW2eI7gzJV7CfpOFFG6g23JM5oNIjZ3FAMz/bYZ0+cQKfNG38XGY+APb
nVH3rorFSZJUzd+vPCKLwbrpSwnnzj8cJw9tyGt3e1yv05sG5shrbxrzGqwdsvUq+reV/9Yzt/1S
vcPaO2FlMAdsDuT+sroLfZnm6fg2SnbbD4fRtgrizMSgBwxrH6EU0sIt8YtupfeLvZaXHkJn/eTb
cc//uYPPfgAsfumjZuzdz+75Bw7V+UBVwfTYWjom9/wCAlxlKUJ8i1zj+NYvw20hOLUIwQcl8561
d+8ihO/Geb9TqlX95TpWUeFgVY/hlCD2ZkatLcE5x+7Gbtiw8dLXl8yPbFEER9dRyoMbf+G/VCOE
zbIQF+U0PpqS+LAKq1PshwHkmIvOqGwCL9THnpDDMiiy6UPDYnDd43rSf8dHgwWY8zSe34yIxDv0
T8359DkFMp05AmuIxEaALLjvF0ohmfO/EN8DYHAzl9Xbyyf/pJnD7OenlAr/3dfhegSc34iApU9I
8pffYLi/6cOkRuY/fB0+jic1RNqIPIqvjKUP1S98OiOvOIuX+x+D8ecmKtfsd8ff9M+ETHPQCvt6
1x+Xu1Vv9h931+F8mD6W/gHHD40kiqUEugs9W7fQ2179rFw+a5oFTGeb0dh3vj1ejI7if1zSgJfp
dv+r7eXiGtfEFUi5hPLoFcmba630vd6G3TSMl51La38Zf+wOI+9WXckp9YJPR6Kxc54NYf7sMtfh
Gy2lLuFSPkU4l5M284kTufezJ+I//D644Qdlysfvy7l+/fZF31C9rMVaul1W+sSGKn8xlXfr3z+G
fXQ/5pL0pfx+yPbrymU/+5e9fKxv1+GCr7rSTrZaaTzjZy/96VgpeQJyi5j73V0eL6fjHm6oFm/v
/cvIhh7n9OE8UZO12+VzK6iiqHaH45vqZpdLTCNCg24Ply/7Wwd/3rnKRThs1Px8nvzx3H/pY4BM
KhtZqPa/LeDNcgW6w5uWeGYi68IXjdEr2kLlGVAAgGMiJfmQTa0RxWc5p2zCmy3nTd1IupgnzXdf
819qubuvxqJ71ffWilf2rQ4EodwuX474dLm2wvqiNtB8IxjaojwXyiVxFT1hUqS3fk1ukJH5LW4i
hdovsGpPRMxYN0l+KGOvRgf68u2T91NlIV/X6mWnJF5ThkSZe/74jOL1jy/aANF+HEWn5Uxdidvt
uByqy5/4neQvvBj/RtzdKtcEb4paSn8i17UnTzMZlESN1wkFB6TqMknTydcT0s0jhg05ll1aN1Qx
cnzbJy0ATzE9N5GK6sjr8WuSn/zmC343RzaqMYGMm8qfhtZ1nQoFBSYFWF2LFydpZv4sn0U0VNVt
TN2+f9Lmq73S7snj6qtCkRRpOSGEciEVxafvt/Yqp+Cum0Uxd+nwJnGKO8su3M7S1bLOiyS51jGR
t7YFEmqu8jxYMxbjP//vwHNBT9PMjQ+fAyZRFyqxlPDHffui6ELcpSC1nA8IkNnVFvpy1rVLrdeE
6C8XYbGNrX72XppgsJmiQDFUsfQh69hM4D+6UHddTsPRFufZ4IS20NwWjPMxbBDN6OH3YWe0sfqd
w9B3YUtrIl1HR9SWzd6Vegjx06KVprlcz03at62/AJGZtjr/vxsK3r+P+y9mDxoOqfAtIO0axUpy
el7UvncF3V2YPWMJfj6M38fD4UU9ebt8WpPTVrtWhoZ1CvXEnXf7fecbeqZSGfhU+KZVXRs03+QT
2isaTm/T9Xh//1CP6W9ahEx4hfQzdZ5KRIKSNl3nhb5pcbMepvdsM0htYptTnUZuOsddC7iukPd4
1kLNha9N5i2W3L9xVuHqoTzddpzKDKwjZ2zMppFrmgWyc8XSP2HFTE8mDbK2Ct/n0FIkF/E0wdby
vlhvTw0y9X4pgRtdGbTqDdXhAzoDgJoR714er6/jdff1OH7jAu1R3UMr4mM+qOv0Nz35x3A+Xh4n
HeFdLAUWXTjwYL6Rb9fJVvTt9FbSxdKfk2nEIfjWrM6lIpYhqK5qNt1UCeBJvC0ZoR3a2M57MT+h
0oyXITNA9DkOpR6oUpk6aaIVSy1uN0eK+uR9qPfgKYUHVNdtHVkrdZmeUBqyahrhyW24jLmlCn9P
1D43Jzgcb4Mr1DWSBKj6YqmM5RstbVGqIrXIvUEWVuEbHlsGogcqMuw3keK9fZjdomebK8a6sE89
WlRfqhM75HK8XLInU68j4kE3AdoyJOJi0Q+5rh2yGO1KLznhNRVL5whhP/Wh/bRx/3NDPz6AzTlW
iyHktpM2hLpe7GZJAy572Srqer9MzlSTz2W9bMwVwErIo/J6EZIJSdSHctoVwnzGEmsDM0HIV76A
RSRZmXK/DnsrZNELd4JKKCpi/qyDY1GsaaM2bLLQ1Kvj+nkz0Qj7hs0rZ/4JGkYnEzZVtlS7rx9r
fVfq0bqYfmRNIATVbqn7VWm4CQzNMoups9fheHpc9b0Ihe8BRtju0y/ZL9b2jOPsZFUmMuyFaGtF
U1Ruc08IBKMP3IH02s7CN3ldJFWODEX1UorQ0wmJeMtVNGXMulw/sXobbSgbokkYcJtNFbMkjadT
qkqhF97RMk9i+UXXKwT7tU0dI6Xh+sYzj6hzDXUGQXajX4B7SmRBjCMSWlAt6Tb0wFoZUyDRvnhg
KOfrL1G0wRV53kg+aLd/3O7Tx/G3EV5WKRry5MHUoHUgPMza7Wx8VF1zLrXOA/AzNGDCxTWFxWGj
NrZ4PIy1s5Ex/fCNX0v0M7N2TOhiukBhKrdQ+iZMeRCfSIa9dzYHoq1azJ3sWWkw6LXe+FToBmpx
Ax6I8Jykn5UTClCWvrX7xpcPXwqQVDGPAXl+qUAUhrFYR/u7XBlRWfpJLHngaD55Q0lpWfrmI3mQ
Q3+2ZFZ7pESw+jzz6ADblNY6+lUsCmOsxBOhiagJJC7UL33DxdxaFD1Oo6wIypoDD30yEJcoV+q1
/i66Wgr382DQVSSxtcn4KcVQhHwdeNkqpJAE7Ptw8Vj+Yd5wmkibKsZVazGl0H6vMn/tN8nqudwo
T3RyrYuYNIEsQFklnfw9S/WUGurL3xluKEXDe1KiFH+u+vyT8YZS9E+liVc89qoqPiWK9OcomhjP
rNKCgmVwRrgUzUFy17AiX1mQMmXOWo1+gX6Q/sa+ubZ2Vca459k0tLLpaAzox4e2lrhSwduf4ESd
IIVMFtZNGm1QLkNOLHt4X+BZNWy2tbqVDKuV7N9WXVuG7FupIjEhrDIhXoLQUFJxoVUlhZRkzBvW
ySBALaA+zIaV33LBBnIdN4bSPNKUMSGom5PARFs6sCvi7xk8sTsNL+NJF6etoMCMJyhsFNHIgJZ0
8+zVJeQXslDbGHlvsnuh5SeemjElOhYQudOlbyaUB80HDuZpv47/Shndz9hQbRETgBHDEZJMX4aa
vd0IP+HP2k8rW8e2iIYrcS4ePZEXbRa3D2O/wAynM5t/gbbgPwoVkIgFe9bGLk4lthm7ssl6LfJi
Kx/PgZwEH/cxBTdHST9DdUVRhDRcRGGGOB1Qii6QT0fc4qjlOrN6nSnbMq/CXp86cfXpjc7UA/ze
IquFaM39XBqNEmEUIQ/1Z72NFnXyKzWfPJAsn7lFYZiL+rLPRGSAyOg7jSYTSgqsWVexNVWQROn7
07L53DHXre2rT9+aIJJSevSKHLS2W9r1bD3BcNvApsyTuL3EhXXVBns8BYgs/WyPfJ6O8v8v/AUT
jqfKmpKKdQ7diLQJUtafc6FSrJgXUTUD4hgIkF+KdosbZcVm27PIOsWSSBQ5lAtA3AucHnkSyLTM
ipiiWz3nfGPpuEfVKSEaxH8bUivMgyL8w9ka86fd7u/RUm0d88VSNR589ytBlydIdv5X7J7nMq5Z
+GacAcDuc7IwD6PadcpPAmQiFVwtHf5nc21bdLDMVTZF4lTfYud3KIpetAhp2ssUEVdRFjUzxuwN
fsouKmMKks2VTy0jBNLKG9wQW9RZt+5CPZIhwb4xZFu2SnJBFwc6+3tJ1ZCH2WSN8AY/a5a3ZSxU
JPEwn2U3KZ665Vk8yPVzTkMm3pj/KFNq/XNOY+fN/rrkibytmqreEAmV7PyE/ltvMaFxm1zxH7bk
OhKBy7xttMA80Hf6uateO3cyXIaDtXUou10HbVZMn6PKSonU/q76G6acTA2jxPKjyPbotET2Wkpv
1SqFfw5yLlo3s/x3COs2/3RKeJMmLbI2Zrktrtfv2Wsuw2TWMqw/oROAmGgyNWAN5A7wvLtGsSO2
erUwQpB9KpWdtAEKESYQM2f0VHtCsNX46X9P4CsXiUYRDMfyDDx4nW0L0v3ODEPnb6Ar+I9yi7e6
IZU/q0or6Go2oOsaiyagHrOojRXzrxIKR6aVP3uhODLbSdVTcvhe6PC4K5Ii0CqMBeYbcuC6bmxq
RfVo1dG09LS/4+SPYEn3SFDlJplcJKxXDBStUE7ZLm1IN6sE/e9xVHMR4BFVgDjigky1rXEn8Spb
c3xCXdg/iu2xXxCilrqYqycKPXWjLtPninaIdzXYRIxFzIB53tY7T05/+XXcq2ZVFzUk02Wi5Vxz
ENMrWwzmreCbNhpX+52hCWGFC5hlyq5Qn7YrYhEZpXY4xcFdzDEMwd6f41+RAOpoe52IGIFw+yb1
X+eKevldLSP4nYXmY1s167fIGz2uIPNWVVDT5R8n9SaaEk3nTYH7UckkUMtVNm0cmvqp5xYJNRHm
0cNuesY0j2YOoYcOniHbdoeRiGwiV1pJnWdVQJV/3m5E+TqBw+ko9tNlLTTtkA2aZ7HwQsy02+Z0
9lqM6/eVG7LG9yq6Idxb0xebBCQ4dveZhAF6iux/Cym+Saj19e8mVZ1IpYtsvdCuTVg+adsxD3VF
lwxgpOPOkk/r58NvahXAtkkU2xwByqtCt/wkNEpXUvLubQZFFvd8XqGKa2f4et0lAVFaa6nSTzcP
Ey8b8jkJLg5wEBZivbHpQCnGpFKA1o6mzT5RlYACUEX89jSj4XPxCGmKecfZabvPhcDzzRiFRAkp
06CMZNGpC9B4J2GOdFHYXNQbAZK0r0Ely6fz6E2DAtG/R2QWPbz/zwcsREw7L+0IzDJPKd/EUwgg
S1henMa9aVVwLDyFScOmIf2JGk2Ufi5nHnTPWHda+6SkK8OATPepdoKlmI+cB8MKPts1rXQdwaIr
bTDxYMlAL/P6pf2zShjN0MCrVQP8d7+E2KNoXbSJzuDZpWdT9bZFbg3DwvpSdUzywijABrkp86Ss
0IpGt8Z01vfHrAvCEJk/P1PCpG+vixkpv/uZZW6raFoLqE1YiamHqaJBIi1emVzNSybuv/xkcn5e
xnTBilWGPAMA7/1UJGLlFkgkmv7WdUwAaZgnFNwvY8AYAGZJ8l5ZqN7VE7RcN8367asA+ddX20D9
mxhXot0rcv3Mn+0Gj2+DZOmrrZLlc7ECUWjSU/a7b+vPByN0OpewzYaSB/k83zplQOtLRiuz1KL7
cmkvxvKUiu6zz2SnUQo1jyp5FHJC2M5iW6jgd8bvZEijam0kqgoK/1lKs7+CqvVF7wCf9Iq1DlBX
EF052Lh1Tf2H230ZmLz8w+71OrxxWwOeMbJzQ04elwPdgN6ioidjV0xE9T79/p2m8I47aozP89R3
w+k43JT98pBg0cTf/lEvc4J3L9dx+LJ7Ge/fxvG84y2fpwNRwK9ftBW7qheTXtmbcSP7jgeasewW
pcnU6hKy2z/r3xm74aZC33bzIF6jeQ/jVZ3OwpOiMzF8mUeRWxYZP6Zfj0RwZgEFmM79vfznDSm2
MiufdsMQar6e/fTxAjcjxuBmtqVMMCzGLHAYaR6FOOHlisY3dGLOM9eq5E4E8JTanT6oiaioElO4
c2467PIl99tjLkTZDxcjyh7n/f3hRsGjgQud3M3iyv76uN1J5BwP4/RmbJv35Xjqsco2NqWbyIas
A7kfbvVlfJaDulZWiOnFImu4f1xvx6/j7rd3fXK3mMBt22Zb0TWZA7zS75Kppv5wJ6ecV5wRcEhP
akmz45nZO544tuPBIVf1YvtgI+zPlOKprvfTjrZ0NTe8s/Nj0DDm1vOoQMgu3xH+/2iI8GjIbzh8
pSEnu+v4BlbsxRWLztPwuXY8Wkh/tGw9LMQP/di9Em2zhASsK4bEi1l1NPj3dqIvjVD/MZ5tpGx8
7HWaLsXwkZpzECsZedsNryS6F/o2xixNPTLmy3X3+jBcdNOmIdJR6zocb12sicSphsTE9z7vhOgt
2B5xdE5FzlYrGN0yYN3SFp5quen/DK697bkFz+l4IQK5Ge5lt+INiDt/czUFDWo3tPr9x+V9PJOW
43a8O314PF2POJbo4nW/DscTERdpFe3bPBOEyeXC851YkXQ0J/Bkb9hwPOjH6Uqxlq+1fjkejrvx
42XkVqG7y3TZGVPB0LwhsRvp4EKnrC5csFa5xhCsrgIyoXI7S6X2ioRKStgTYnxQ2bL/Z1/qy/uH
oevTMO3QYJ+uEjdDqeLcpYpvd0Mku3+affxl+EHToF6vRIjW3AGKspdWRMYjBWNWhOU6/mfOpu3f
h6tuVVThZPbCTfsyS5z5kgf7Gb8nzZZ/mb6rrbTzWjSQF14uf2xsugctgL6uw687/zXdiz1eluVo
CT8FQSQrjAVo1kCSwrJC5nujixGNhl3AL4o5BzIObHTPx3D9An4sl7MjrFlM8tPQueG+M02t/2qN
1htaJIs3zH8x5z2PDyMPTqyNL+MBnUFshTIUuRu8Q6f49n40IskaTpfrqOt2t6FOLLV4SMZ6IyNu
x2/pc3RHa0AbFT+AJcUEHgFBsxLmQUPBBlrm+nE0FKuOUrStoQSB+QjC7cf5/j7euN/F0fCm0VOL
oUlNKs9gb4WYCeGl38HIusHeGdhNn8fm0PC5jPadrmY7r6QqWTAYL+ZEnVv1oYv2hG1w/c5X5jVn
Uwh83WUh/WdC3GEDyvGPGN/AsDznLS7Xya/+Md6vx/1td0e9/c2zi8fygUEyCU/jd5Zqw54lnfHl
zE0ZE4qsGHQ6vztuzOnM+uvwYl78PpBDd9r9OqH3rsVEiCAqExD48TaduMOnOaDZGntCV+NafR0R
K4vxIqK7eaCuaHqeOXHi4ooqJkYN153HAnFuFbtvPtAsSQ7Hq6UBwyT3Hxw9tZ6LUWlXKNnbcG1B
ltZgNRJg/27uikzg6XWXovIq5GOhKD6O16thmnfj5V/RhppwPJgYxL4bbrvpfPrhWM7sZn5P3Vpw
DF3GlA9v6y9//Nddsfv3f/71L+hYngJqbh/t1A9SeGIelghnJkXa7jA9NDijoyKpWYhznKthRZAU
4rf5gg5INJRCTXYeN/dymvZfduw1bqLuuitib2+kwevL47ffdtfHHHs4T7u3k7Gp0YPJcTOLEY14
WQpjOj26QCkMrUQUVG/0+nU6sRgzktCQP61uKO//979+RhQibtFb/eYKyaL8hNUgRE3g+zs5M1hD
1BmUKbLvPC+J3HqWlYhshU73QPCtUtS8rWHTw6/DXivGdyI1i4k0TiT99H/8d2xKNmKimuAstEXr
nCKSEPOeZJ9x575bDUYuOPnJFFXaX48XxAy9HIpW+aFo72Qsf9t9nb6NJ0QIWaYK0j/8h/MkkMQS
85rWcv0vBfGieTEesAzt7lrMRhQwBY57G8nlbofGru7IPH7QwCSjjw5Hq4rQ/Qgxz4LDGbaW0Mmf
JCOdpwwcsW1Td23IepULmBoX1xIDz2rlKNFWdVHEJnVZd8c6hsP+Ot1u3vlBkqEPF2sXN8Ao7d1h
fB3Mf0+kNTzuE3oKQfUsHh2uav9unNTj42M3G2Au8n2mZNZZx8a7yxN0yjiXyh6W4gKPy+7lcb9P
LphulNUbz9PmgMFicSBpVocjIeu4nrqO7laD5h7OtIFMIjbPQt3ZxTFXbff94/Qv38FaQgIwjFW+
+mxmGRr6OH4fxemZlVL01Haq+fFp2uyEX5Mt2QbIkSz9OHqEaF7Yz7YdoSXUXy/DLO524389jl+N
Qjsj76nJ2rjoE+bWTz9DXZoF4+HcML+XyWj2l/H8ZugQ3U8ZDhUsIn4OWx9JL0eM3POAhfv7cHQD
Zf40Xf/upJN5wBvFshffB6maJnSaq9BMcoNr2Cd8ILHXi2v29R7s2t5mv4QnigRnR9zah9aCfTVD
l7uuq/tdh568iU2PdQ7c4fh2REZPLSZBM6Yqd6hxq8nPhrLxzuumi2mAgHPxXbb+6D3HYQsZ4OLY
2o5TF2iNMjYvL/ASjx+sIBNOopiLnS0TuOJxGkS+wiDl6ErTxIN2KIQmpgI/Be04/JSIpDRZETOL
mYlehvd7KhLTFHXoBwRG1IbAR93L4c40M9U9LQmT++P6helzgyYTtylRuI7EXcYQ0XgVuwjgDaJL
EeaJzIKT60LqeRH8rE+pff/whvivFw6lC1va9X79Yu6Yc/5DygaLDny8/TDW98eyH/70MO5PA6Wi
jWKe/4f4wjSv1D0fR+F6Bjr0Mm5s12elJ9IP6nJ55uLIJYOWeMpJJXf6mZUKsTMirH5JIu7+6zHd
tYiS/ThbPs5bHhROX/vg6Xejr/fHu8/TIOHXqNEhq2wJUTfc72RTLfoJxmI9eZH579Tvk9XGxOXn
SDriQ7JAhg15p3mcbPkVtjB3J2w2DtE0ZVzGIYdXjF0X3iRDHPjEZOzaEthZy2801Zq8SEbcV35q
asVCmlaFL0ihdMB+uI5QvTdPwUc+qHGzjK913xs5ZCzxM3AJOS0lssu1reAXif3z+GY522V0dq/j
YKSsni1t2iaW5ppdmct1NMYQxdtP0xvbMIwQ0QFCeRXLTT+nvm1K15iThjnM7T8Mn+mpuFqcWYwB
ieQ9bRCKKIYyoMapexuNfNdXzmSuPvfpnSCZ7nwjyhWxXzyDb+xjGV6G8KQ+F/Akghjmzg0zUpiN
EWufGD+b6A9lJCuRHidntG5TF2HIUj96tQY65SD7r8MmCo9GEOaSDyP4dMTNuC/kuvh4DgYWZP7i
eAJW4SNCPgnP//p1uB4HPd/cdpIqM9/74fXIuJL9l2/D9aATdd2JjVT0h5BR1pdJCHbmXJl2X/TE
62l421lwmecSHaPiUS49kUBfB2bQ/fhBIUBjml2nj0EH9Mj0fba4CzabBd+kqzwijXoHucDtLC7W
vrk/ERBpbe7puuCrbgTkTkfa1QIsQo6qlzQc6b5OjzPHMSR6Shcx4nEovJk7d9PDh4zDuTtMeztY
apEBaNQZP5gAoxShZ/RsZOwuJLQANK3pBcqJAXjuoqi+7vY+HKZvOhHXQoh23BXzP5/0z4JTI9iO
Tsl5CLh0MtMc507YDSIAsx944X3lL8b8kyUjH+e9DtSj/fX4/XHRD9SGuCPX+OLrm7NfhAjHYJba
q0AiP9dLmBf5NhKYUpcMfSHYgc3jzHudizK3ptrxfHnc02i7XggrW9TkJhVLSWcWM2rtCCSegApV
jL5v/cZo4OnlMg7XneHRw2i3pO5HkDAPfcnrFQiV17TU5wnIac0rWLlrxUkZEO8gGtfHy4/ZpaP0
87h/f/yYvkzqQr3gXqZI50AFzr+N9O1JW9KISbdD/dj1enOts8NDpCODHwlkMR6OZElyPNLKQ3W/
hdS9nQcZ836/Hm/HlyOlkdW99QIoaguE62egKC9mOOl8IwdEXauUe8m4XebcQYYe1FzUi5FwOpKz
DSVSsQnkpkPc/EvW3GEy0C/WXTfu+Y6DkRswy23exGxHay1/Ga9sorC9eHxLWcpVDKvMJoQN+ql7
kAB1v4fgsZ6NSv3BijhsUwo8hyYZbg8vfxYEpB7zYeSwUDGk4vMqEwgAG9E4vvBC/CvE8ScCfX97
n1H/Huzu2E2/mlaoEpLDudPj84uvuE1/ZnEpthzGKaX79Xj5j8fp9CdjEf1Ti9ixFsifFdIsg9xc
dxKcZr2XB5LfXdnHPKrb+/QwJEtTgvVAJjNUH5KZkNu/TcYwN//5qJ+iF6RGjvXcOkD3Eb7pRlEm
TQZuxFZ7mv8ynAed4iWNZkyoEKuKPZV2Le2qZ4WY5N+2kyZexrV3QhZsZ8BGaAY5+OJ2G693wQUW
ajE75MbMeiMYtGOdw+Ry9a+6Em9acYtVKHH2A9ftnA7IsJZGbeFxlAwON5797WYI+4hgurLapxW1
Is/eMZ94zhU7KXG/Tl90OSMiBTxMaW7J/jp8GV0sVj9YEwNCa9uyG0nUtuTirD57YCzr9+F2FBVE
JO52sMSmraVMqznE5R7O8Bvtjj/CQbGqD4NizQbAU9XGMpM4wVB1IdS2sEGpw3X49q9GhyOJ2ZZN
yAe5l1RLEdg3Yz5ceULEeWJ0yWwg6tDyVsrh3FGcry36Nr5AcHlfCqlV8CyyDLhyumbyzEMmWuu6
FlAKluNhKXnT9dKO77ltmAudHy5HR5lLGOPNXM18aYRYB+UNXiiw19q5+LAvcBCw5AJUOoiSQDGw
OIB/YPnQClUVQj65JPE/xm9/Au9kdtCF4sl1HiGUw47gS8Ro95M5yfF00kMZVaza4za93ucY43Bz
mm4OROymC1WLUt2cbmJX+bqiwBkmV9uS8bY3j69ndDkyVsRsWeec/jbqNeusrZqYj22PpBNHkcdi
TLbrE4cbF33kqkfnODFL7In+BdxJ51fvF9YUcDgb2rXRCJeusJlCXcM0YYgvf0oGpQLYfSPs1YJF
WCkKNkmQ6SZBKb0NYgLn+0vyqXRB08eCMTb44Y5PN0+5axzoFBJLgC3p+CyuruPLg1CVB2vMGzsc
av1eBMY4VGzzrU+Qif3JWLfmvYxVjyixi9doLprR2f+6NhSfi66xtjpsOJCJzSE1I9eRWG9E6LOy
AFLX9+hyOf2wMGur4h0Z3r4cqbYDsmjT1DFbnXDz/HzuFS0S1/7JAFdjI+oerPTNK+GbC5r6OJ5F
aiVRdFvE7SSf/rcV4oF3NydWXq6ketlcsfAxdCG0ejMDDnvXTi/vrVg+T7bNyFxtwWg591fm2Yye
0EA3tKori+ZVuWGmU6fxXbt4JgGfcn3NRqxpy9iszZYVjf7RDO7oA9BOVrTgk8r/jnfIqODnPH6z
9DF9B6ASPn/n1/CWuGqaVa5127xTHznOsl7/lRkF1Adm8Vya5GNzidQuk0EpLndRJFlWgV/P/Sc+
j5vltf7JnKBVNsyeoZoSsxfbhz/ayFy5ZxGfvcsBRbkicnvowlOU35CV6eil6zx8NvfSBbi4Qnzi
Ky7AGTpwhFqwLzfNdZ5DAT4q6tjLgQ2UYAOCKyXIIMsB4eZNyGJuzzlg5LwMSadKPnwBNi3Ys2Ok
gKP3HDxbnsdIT3XRmKc7TO+Tq09O56wsrQn24Z5TTZ+6BSDnSiHnJAoQrAZYu/R7c9NrZ1EL6KDw
dNCxU558VLCWuGsbCfO3bVX5mXA5p1nJW8MeLFh5LhG2wvJ4DvhpjY9ZM2x8x0rcFU+AylYqnkPU
LoTEv2Z/hqCR7KjBvK3VllFRex9ewnrB4x7t01+p8LXUQAYrBS8OxCAUeGng9+vYYrGwjzkWLlzg
5RohqvlFkwQPxEEpxEHPMmQBBHOHDMvXvNx+eNxEshXsUCgknzjIciDLcyHLfSHvswbbSprSyOIt
uBomJE6zPiabmfHYT1RbMFg+a8MTzIcGVJZnUVFcgE+KLLTInHlVZuATsTHvkmc5kKl5FVVsGVBs
WRl7QBc9e3K2RbAH3GgZu1G3pAwX7acTpXLQUlJJ5F5JOFnqGNmuDIEfdjXPM6IbWYZstKyL0VaW
gUfI5J4XDxRwOSDtQpB2Zy/BbQDowqyI0RrYACCPslRMlQJcWt6Fqsvu+fxyu+w+CAppE6BG/poN
AGFQCpckFy0x1HMAVV8K4WvNP8fnBbjIoghfcvZKgDzM6ii9FOCN8z7kcxdHL4BoyNu47wM+ydrA
wxKCWrdOwKarJvY2jhP3JwJ7cAYXrCAu14ezkh462FMjVGLLTU8c5nUJHr1P1+NvFD447U7j6z2R
WJFdXnjs99y+kGtfOYo1NxfUyk3YsiyDMGaOMj3cME6PbSmp+GWx4et0POwIz6IfagXAzZdo0ctw
/uKggQRXmRMORBkzdEGPGlXP2ewA6fVCOTGH0NuAOpbdtUqPYeXI8tJUz0Js9Ny0SIg0jW/157DX
AR4boxDbGHjsyEWRw/56tO+nNpnhBLXIftiyyzbSVOJkSB4liXoJX5Ag2uNl2N0n34lLD9h3sdDv
YTTfjTtjmM+ti3BhGweRixjy2rfOSq7QyYys15Mb8Fd904RfZmsYl3kQCzk4PcCz9l081HkerleG
Ip19DgeCWDoJ3rKi3x7GiJu5mGZHpQTfhh83LHQ62c7Nzg5v9SCxHhVuRbaN/6gTCDUerZUEqckc
IwcWK+3qX/SHl6ARNlCcafvt5Uphaj2DJ5C7wrAJzhSE5MX59CPJ3D7/oWb3OWnFUt9WcMG0sACC
xSWih2tuQgxLiItsOLi/3WzmyuVpdoZ4hx+2qlRPFQqVRFVRVUy6LprJN0QTUCtd7EoUj4gSua6d
WwtFRPJP9KVYurxSA4rheL458K99cLNZazs8rgzH/slWGunJPMlshR2FIvYq+4PoeaJSgFYWbDu/
SEJptvLXLWi2CcBoFu+Gk6StKPcgi6qK8MThSMTAnXwndBuiYkAUX/p4DfUBxRUUVawzrtS3zEJ0
pcezg2MlNG8fSQFbGyWVCJSJLOm5iO6O3K1F109RZJwPKeAmbAyfF1KYWc7p23kLdP7H+Yuxms+p
zUiYpL/aGVHK1+r7GOr5b5lb5brvfl0wpZcstJGnsHBUn2rUDSBhdvoJVARv/DLe3w23vhFiHcAl
hQHFujrrgqw1YWw+m7gWYIB2mVki0eXGDJ77deyn06SjkoNOusvrhN0gnSvDsumNyO8yHEE7yCba
zHOgxlz7CZ2r6eoQolKtyN7hMEFf0i6POgmhgp9BquaUeDHZVdoHpfx+rNMyXY0PQ/livLEyBptb
MsI26TzXP0CF2sp2tN4hfkLwGaVyNBr/MAEtEsWkk6p0ZXazOTLsv4zCadD3Jsx0EUF7QlzTcC5k
gvTxEpz9my+Je0lgOmWDWi935hLe14naJRMVOKt09qecnLfhvUOqdwA/Rx/zTGIoM4DwitoMG9hQ
B651ArIhorC229Bwn9vkhQHvLQZdW7ZxOynA6RuReH0crIg3Ro8FxR9+nIcPHa7aF/26qXAdQSSa
2zj8IGGgv0kXrb6TZMjYwUTfZ2FsBk6DKyL87duvHBD87dv5Vx04I6hD9utamiGZ3Ty+b670bGJV
cis/whDwcmG69yAeseZIXDMrtgkVIfZ11GyUbfuXUprxoMuJPiYOg8iGiJPCcDvbK1XcXtkPF0ZI
/8aNZ2/j9eu4o2iufsF5zFGzUETXAuPGXQahedxG4eTrlISTPNxMMdctH9Gw33flWth2kTP34UV3
zfuYxog4itzD5p8ClP8NdpPO87gLauT01xsu32hFRbnIEtsWECnfpZX2qZeXHiXMcFzuQU4NRu/j
ScdqStPf60B+cVdTo79zEXtntYJEr9sQJpPMlXix9+vwdQCd/BiG7Rch3nYl74fjyQVxhq/ket7u
ExCbosSNO+rUrSDdpcLoTD0sz+afbt+MrEK1wqEx4KTVc4+DDSqyq5uYOufA47uxBAgCzWEJGzo5
02wA2Fk9zqOBAKKHnPmAezPp4keEFG3nnX71gC4PcEfB41YG49pVCZ6hY779DUMo2pgBPjfzuHLM
LE1PxiYRXkazeBlzpReSol3ZRRIHEXET6RCxPXbZy1I2WTdAgaBX7ilmWw7YZn0uKwDOWykVYRH/
YwWdxaQrKmac79qtlZMlD9+jJkEowQyPJYv2pGD+62H4nZgfRfg7UWDecIn4szH3zikeXlQ3lpp4
RIp5YJ4I41pHgTlHrazlCspsnzeUHFLUF4qV48Y7S2S/7iQVMV1D3ZOeexkegdncy3JHvvNMlJkt
8cWl8CARP+uqaBZClgTYovxEjVjfRM9n5N0Xs4X78cPQ51/Gt0SltWEfYRe23uQWYO5aT8JF6TmB
6wcTaoQ52PRLqxXo+ug6sYvVFto0s2xiya2ngcGbx8JIhL9i8ZRKU0pnLuv9RCmfILZvjd0Hweos
0tvljf4dBsH6qsSREDtuxnmoUE50eRtzSz+m8ySq1Hd76uWuu7ZdzEr3vUZsiN488HShVAAwUWRe
0lbuNloViIttwykBbFnkMS3OkEFXz1iDOkM5skACoVr0TRtOkKgxEMwKwyLW4X+RaJamUVG6W6aO
/jQspRTDOGT5ZY6upYoOJFABLfZ3uth0FLUwwH7Tx7+p0DdV2HuyxNg1+00T+2Z1/XoFu7uUJtZY
VUWF2W+y+IMhWhEdOoMHQ5dSldG63BzW2OZx2kfniYy8gPXzqIq/i4+zo7Uep89p+066xrIJ9hxf
EQlJPT4rYDNyFLFF8fiMIjcQnL5zmbzNKuLclHBXfEIkCI6RSvpEp42iiLfCsNXIrr4RgQf6son3
8lkamvi6ZvYQPi47bz7rodl6ZXJlclzP0h5lQ8Cqr5XOOdZyf5mnkOgIqCpWA2m9Md8F4dlH0h8x
ajO5/A+f6PTY2yGoelVwL0uLPcstCXTqDzosLsQNABz8blrSo23zXMxX6K8fy9Ct2k5+v/s+mYlm
Yk1fRjvIUcrv+rjdjgNI94kufTnZbQ66+dVQ2iGZ62xjt2ltxZmS57Qpik60ImlasGGdRVAwAt2A
+3bJZngL6R1vf3F2tLNlzZ0moCGdjNquIAPzvBRrxOlTU9g8F89jC2hyZXynLnGEPWzh9l0MCbI0
2rg9XnC8o++l38nzwUu4IgQ89vKIdnpsPges3MSy3ZbUtehOJtKZByM1PFyEckEgIdcmQr+xlkq4
uWIv86IlGxJ9bISo7uJHe5+GSE7dFalj4a3nSbip1mIi1km3LPvRRV7bNmzEKJQ+X4Nc12FpmoVp
FP/dDqq6X0c9crEOjz9796fxbdj/4HHUutuYx6Kcc7v7B/VVJOlq42Swqlx0GyFIqGtT5I/GEEw8
ZYSP5TdEzmjVx22PFxBnkkn5jFvt+a6KrkssU993lYLaGAjzOXCi3+oql1+GDRVfrRu7wasXRoFo
LRLhR17NqNGRaeiFIGLDVQ8NyRhazsUUmUN13t+nNxp4s/tGiXwCQZAB6WAI9O9umNbVUNX/PFJ/
VG76vkw+0SWVZMvKp4K0Phpfj7eHw46jLjedRDmSmTl3rfCYYW++JcxeEcgzFNDpvRmH0+V90HdU
xiy5sIkgGanePk/Qo2xBKbqEzuR0vx7f3qiGcSIMzVeEmxBIJwFFsP00be39dxoVO3Cn/MWOEDyj
Kv5o440YSFi//Sq2BJ5knUDCdBI2wfXUDr283N1st1kBdxnu7ynbsZftX2XImJ1xG6j/B6qZaGJg
swC/sL/dpg9dOQpb2JrWgSNkjT6R2Njc+C+LN/57Zc1mXKn9ezBSDjdpbpso0YqUhhNSwEduRESc
p2lmUju9nIb9F6rb1Z2yRmLz2Act5oqxWXbaLh6wa55wXnlGQrXqPmQsfr3BWhcdMT57LXYGq26C
ZPGMk9eq1BV2adCsK9U65u4wtH1LUUKQTcq5cOXZAfM9SqGkaKQRlAnYlaVeNs3Gj3HpqfM5Ehbs
ztnJLMiQTsfz/T7ZyC0jqm+7vQ42lN16s9L+qbeA5O6JNAp7oQs98iN9N/pnN8jlOr7xrDkCv5HZ
NRll+ONjejmBzmhR8y1wApMlSX1gDHTeGJCueanb+l2ky1yYTDYq80zKCeSG6hiLPWf0dKOvi/fx
ZZfeJZOxz9FERyPwU+iSQdjgvt/Is6sBhjYym68QxH0YY2HXAtydCDyRyTyXT0iDhUpgiKuMsnvo
mk3IqpKgGWWTxUwXHjZ0e2ecx/CboS19QdkotGZnMDza9cSN6ZJugVFyoqlsRXAP5arnmXvj94vZ
L+wuW8f63dFZ/3ynLPt0/Y/j6R/OwtZ9Ok94YsSMhpwSkTzbHB6MmmEEQxZLvVrlnph6yXGULgah
EjCApbvkbIoCrI7ivK4c4k9W1EjNUnjNEhZzvZtDftlxiu1khGKq7GnFyK1sKmsWWShjS/fCRub/
ROfYwF7bAL6Srd8kUtSa3q5jm9Ed+weocGxizuCc4NUDy2Vs+IcsXbF3o/szUbxQIJytnOdu9Vti
+XJMReVL+J6BX/vTdFtpWkChRbStuJg+sPsNxByF7cBFD3Pf6/H+RxresmUUQxYtlqAcvk0tETDI
m57XZJlN38ikANeG1NImd8EnesdrSr31sUa/zze+SFJC4UwfH8POcNwroeVu9+kC0OR1FbP378f7
KRV97vto43vc4IRNyWidg62hIrI58TT7cYFg6LCHSvTf7XyrLUrj304U/L5Pux8jObFvoF9hFeMT
tkDej4eDE7P6C+UxKyCJmde5THEeFkTIMlkTbksEw3gKaVAwwwjaBN6wK8sY6Vl3+XAd3kgof0zU
z50MRd3WrUNjq/U+yHU0FsXNjatJuB8rgLyvz7WdJPHnxg4pgsOUeYLmAAhJYGYqTnAVofHMLoWN
nfAd61VaxggU0dd8wejB2VFwPCODCAVIk4LqfeUHw/h0qx4n6eK6PcpUqcqPRoLsfAUnvz4PmBXT
7PS3l7646KQWtL+/vVMQdNBHB7V9FnPpLQm8sWhXmsPxo4vCE1JYZS3EBJi22Lu86fOwqW2w2dnm
BAIjqEFnQSxmv6TMjL6VLfIZtdKlrc1UbYNsebv0KeEMlyUX/saWDjnQw/BCf/KPKkgS7m7MN5l3
PBJ9qZnghbhUYhK6FazSL6sIDyK+CtxNt6wjvHhnSdsQ9lOXOn01a4TY1bxWtDlcOeTycb6DZSwm
xS3jzej9+7j/QpFiH4IC7fJ4ndqv46U/hXGo1ICnxb8Yvn0ofGvXyP1F+9DwibyC9+v4ijwC28e6
iu3B0g1RzYE1D4+uoxmjRoK/Hc9gbCo/WrGsWdny9AojmDi64t9mBiMtG3kiYPDb4k49slfFDXKr
DU+rMuzGVEFzda+jbwbBvd6pKTGHN8czxbUAG2T+JkSfNY7X0M1yNlP/uhCs6GHBasMnvkXxnN7Q
n0/h1O+N8g773Q/9l+smpIoKo8n4FpsYIaloRv6kDfmoe2buw/F2MXefJOOsjckJFa/IV1XGzuhI
7XjmCVlUDkP2hpsJm+hpzMB9QcY2reKqbby4ox+w3chJ8Yj/Abb9tqtXMXriHfM+LRAqvcuyDq+r
wqhXvi5/wyLeEnR1sPSclHptTAjPJDrnZ3eX8coQLOAwW1KNPqMl8f8v+CyPHmelCtjqAFSXeUFH
pmotSeizhOOvpbSZ8dILixkevmAqnnvdACVa+LNSSLpKdEDk146qJgvYm5WSjdvREjYCajsUgNbv
fGV+4ZI62pR1jlHavJs8JtW+Uo4d9zelX2yy2MdWsbxepw9XQITVSiZ0hI91bX0b8DRFTH0bqqGI
nFv4zskTKmIjR0xyHFhXiKFu6WI7nKfzD/InHVRhab8AGrQyy1YxllWR3Szbu9iF2YP94fDrQLz9
T0gppX83geLZG3P57q13tklEtfN0Nn5lggJL1TTlFnjTmRAD9LIumQWMDb8UN47pnJt6od67DnDA
Koy6PwHWFxQqs0xraXT8GN6QKShs7n7xv43ZMl7//Z9//Yv5HByl7GIawahemqPN4KDbPSHZi9IT
M5dbz1XxxAjDfk+zwDgfyn9zex9H278KCOkiZpmFRERHA3zQx5hfTmcHv97HbIrnX7egCwo6snl1
A7vphGG86AtLesM9NZvZUm+Ur+quLZoWyPM+i2nJeYDMNM8dwe9b1OH2G1xIwtQs5JuP3D1hphJi
Mu+bmLaebYbH+TpNd2SH111oN3VR/krIjTxme/36fz5GY60MZ8OcG3y+ooz6azaCbgmBZPxpHM4p
jRR13BYlZMPgwoWMW5up7VZlzNWdL96ISwqEE9jCPMAWvyJqVoQs9W8nvR2mJcOo26DWQDEZ9qEu
sYLk2/FMGeDb/jpRXdr1BsZusCUhKMDH8a2M9JrDeciIHMsyJOcnQKgxeU92ng7PLgLv08eU5EJI
YScd1+XfxkuGmxQ4MAaTxUSOWsLE993FVJGYRDfeb7ZhMPcJGs/WvJled0bV8P9ojWhwh5X4CQYo
uMCuMXGsWHsZDsaoAdK4bGLy3XkOHEuy49JZqJsNvdE0S2h11VlMzHgNfJj2YDttTAP7ibg0ZWw4
wYdqYhLqOs4V5ACGaq+0jm1/ZnZrhu7H0yntk7UxbbM+CjhIGxOSalUgU1wWuz1vk89S0EhEKxpT
gi+PEf3nGQscMo8FWtcmupUupwkIgbwvoSpwvV6Tr1/EXn84798n2sD+C9jAyosJo05CRQCSqWKy
1bOOka9jSjGUfYwGrJNmrVDDC8Npn7RzythxjJ3gWov+caRKxB8/JcM1RRY+setMvuCFbvzV7Yvx
Y1k7E97iRGayOiuPk5WzoR/WevpVXc/aSUHK8tCpOUbbBjj8w3EwT3XQf3qO0raBPeABUMK+mOPY
+h7mWEC4mO/rtwWcbnclFvIPv4wimyeTgyH19l7L8F7Xh4OxBnuiKraRKxUCjqJW0oiKV6MJb870
0IcM2W2JRb1Yt5/++XyfuNYgVYdpV/KvJxsprAgHNc+wtJPje1r8xdcT93gB9yVWWhdi3sA5Ok+8
vq+X38Dt6xv4TXEJ1vpypcrzru0Q05tarWhJrvU7F9OhFwuH45g3pyrml9lRyAocy68pjDnKbFFa
CfJz2/WxNzE+yfX4facE4e2P5iHJOi+XekwaItjZFcDvdrHPBc+cXSUCeJAyJs62MA06VlQkzPeB
uC2LfSgfcZ7qDBWSPVkfkncjN5EW0m1fxIjsPl0+Jho1TL1GacrCdL9P/DcUDFtuB2wrC+Vu93RE
RtvNBQAMxAPSIMPSwNqNVyg2PeFz9j5fLeGi6H62JJ8RrFdALUXWn7Hq0cN1och1fUhcMYEtLUjw
oxDaLmS6OItW7TuYof0bbehXTShFCx8oQyyXnfAdLmLTP4+Xi7FwTxRye3w8TiBSXPt5J7Q6j8Zr
XKx4b2Q3HzRoSqm5H7UH7ZQhIlesY8GUeDeFP6tP3zqN5Ddy01dwdS1lGZuDZOMsv+0YHsyYAbCS
g/Uy6r5ZOkgYEf9qeyTylO/HXQ/T1B7dWs4IvnIedEv3wvOLFqp2SLjB/Dk3ScNGiz2v/4GC8yRd
IcISnMXk7lNEF/x34MD+AYW4WnGdS39/O6ohbd5V65cql6V8qM3ubom8IIucyaL2hxTxmyvNslwu
8jZ+HO2NuTy3/RFbwW5ZAs/r4/eq/KPTJZRu679R2+Xvi2kDFvBbFbLHlYLaHfHklUSssPa13mUI
w79cbV5hsVfm1l7Av+PVPKGI6LxLVtq8yfvx5rb4uBw0uJhdbMWnMnl+2L38mImF0GInRHPtSmgU
K0h6yG7zGDCWc1DRWbLJYm9hJach6enqO8btzb8dOG5nK0FuFCmgYRPkiyxlZCRAUCK39o3C7I9a
ZJYrFkFcTzXg34arTZScxmtCajeF4Hr6ZzdF2AgP94Ku+ebNtkQc9l/gTZVtTGq6Rwz9p11CirTi
/AKCwkv964+/MFp3OT2FTRPL9aFQCnLsv+eorRfrojdnSpbYtu627vt3yRVP5xXlUaoZpnmitg1z
a3UOhdrAvP0RGu9191T6cnzbnR8fL+jCqlyYC7WfpjkDWsSdOdqzRwR7L2LEEZoeJVArgiC8/2q3
MR9c6CmUC6r9PLRyRtPXgFTnV5v3CaiijVGtFRWBN+PSJm7f5n0+jrcUIpK3LWRR6f6s5VhLJw1S
+qUpw412K4HpJqTwKsuUEO5JcJvt6P10enycgeVT9qF0zxwBHcYku3aCu3xJjQgLuT1wwsj2yuKJ
w8ii62NmSUh+Obj4Jvaya/MIfO+1MHc16gOTNC1vmjqk11LSq5F/M1/OJPXyuC9/dxhv+/F8GBB3
tsI2YvPZgckdSdgyvb8Irb5IK0QBXWzTzgg6nt/H6xEJjCb29aeM3oQ4bfK4/nPXyg7afblbcHl+
p+x5Vs5ONY71/UrRj4vgfkoNja4/mOvsdbx9DNAQrqJXYeUKRXUEZ0yvr2Q5TTzndBSBI5Iy3IIf
kUElNTjFuPK5xHsm1aSv0lThXivgCIKNCAuabc0IuwIvsm5j2mLWwk/0c7TGBLVkMdxD9+cEtPsv
wWk7wTd2RGPYdcXR0gZuqetwz53kluvxMJ2/PE7TA6zQtaEZXNlwwfeP0/v9bt6e21Hzl+FfUY+Z
i9nbeP9xGZfIlD4ttYtO7lbW/L/++pcdw/uWiFfwa9Roew9+q23CSe7V/8Zv/dfjqPXQs78lprZ7
vNvqt0jd7K8jhzaH023G102XEQxw76vYCN3Vyrcf5z0BvQAcvPK99VaTuldrzX1XrBsCBt9GB6Cv
FqPZUR/HD75EsJQ4o+0GH72/eSzWcDcvb9QU3F39icfnJ9bRN5XvjYGf4YmYjMqRvwHop40NrwbL
z69k/hOwaveJTfMl/HrjhhlmZcDDXWzU+GrVtz14mxVj1sltbeKUrorNp14tezbq7Tt1prHdNdGT
+FHRDAVtuug5x3u8O5Q9qXhWXxiJTkqVlwOhzgcaiEF6bzx+RTzd9Z+gHP/Gj/trDiawdyt6dJXp
VGy8CMjVb+DHacrYVHO0zdRIUbtP/0gUX3ItPyM7m2uo2ROhcBN15HJePMV4AB2shGb0DX27cvrH
+5Tg9moDWbAAmW8ED+CzN7yF2Y3ByFX7RPq78ft+vOh2Lu8023D48NlepisyAIQcbbQFz5PdoAXt
gt35xUTbBSA1v2sKHvxG/wnCnX/DNq7atH6XbbiQUESQsnf/C1BYWUAOGxhOCNmNv9GV4d6jEtKO
fdtyFX3x2atgUeZUIdhm87TNpXiWsgm3ozGV3/jTj8EWrtoOPRQytwhI+6Jqys31Mxf92Tsb/rK/
dJxsyk104Nitfh0sW/h27MK2BMkj+5XvbM+1QVUM3gW+z0UHflGraoME4+HIaVX0+/4yhAFGpzau
1LAUMdqg9i21mG/tz82LrRc7l2i5JzqN5zeeFoTbnLgVm9j1rFa0oc6tK/pJDmK+n6wmRB9H2+fj
4iL7YR0QRzi8yg6CGG5cBzZyUOMrvOYivOYidinzv268lS4c/uBQhpbu3cQQRIVipsMSTPYttASD
utQM4+zQguKVOHVJ3XBFhpbZwsLitvVz56BKI4rn+PaKGft6sr68CLNQVy0MACybJloeCcpfyyos
LXcG24t5e5+x4inydkbLdeTxaw6Fry8rYZEtoxF6AUSdO3olJq3aldooihvUcJVVH/+kAJ+0MSjq
Smrt5msBu61jdSOSRvykeh7/Cx6zjOFawVIAYl02RfjMmQjn2UD2jnoBhUAM9uS5J9wq7Al+xyNH
+8yOiwzL1DY9ebR5AkVtvvzY8AaNQNgXCwxWHXfCz9/Fyq3WmOYE98mKXs99eVX13cLHf5quPy0Z
2xtYK/peftoRXafDzWy50SZaf426C5R1psP6X6aNvyvr8SUnNuCTPFbyYn83gl4HC/UxMP9CyRRo
BRcWlhS4+w+Yz413pM5zYB0Blid0V5m5CCl33ZjbM4zX68SlOKkIFQNHrcrnrq3etfo2UQsRay7a
f+YWq2rkNs+zMkRpVGIdm9T5rodjuLKxL2I4D7fC4i6d1GoCu4hIA8kOPvNGTtNtRJ8LGFHGXJPV
y5z12/36oCZL1rcGq4gsKjUWKYOTMNftLqp7am9TROVFE6rrcLnQEsMFXmWey7wV/4181t3SgIYb
3qJtZLGkoVvFKe/d22l6MUpDXBDaWQ5WNK9zHvHNZJ0/GgNDW9eFzy1h7NsPi18hL/LrCPdSx1B2
8zMZl394G1PvJF7aTwlfaPbjcT0hamtCPFf+TCc346fcHxe0BZ8X7rj3qcfnvQ+3v307/90GhX6g
SxV5RN91ZqYWw/m39wRKy2yjDyF+81Rv7lRM9W12tdPxddz/2J8QF0rsDKMxzZ/tnEG//9W+zBJE
ovnMH+MdPXUm8IfCkHJbWgJQM4bsPHylWa8o9WrOKzfJfkUnF6U5P3iFPBOyqltvCvJ35kWlmH1u
2I+qZn69mRON+0di/wKKY5vWmT8rhQMSu5FYUzG3Vcrc3YfWxtztRlAPWX25Gw/yx5l+/hcv9t9Y
1vy8NxTtI5yElTmiowoEYU4eSl7NXb+nl93LfRrQt/5worvhSq9tkelZX8aYjLoafgzG/2GvUZsK
6S5plaa3VxS9mY1hYHtET4dkubru0PMRhxMSYTJjW6zV/gZezzORJ++XrixuAatQaBCnI0YkzatY
xtyaVW6585QSYgJmx5q78cL0Pv2sj1R2l1EgKfPVhiso6QNlVd8CsWC7CFsTD12G3wkRcNtGdSRa
QPB0Rrhv82cbyqcCvWoeO8P8wyRqXR2+kS3uaW/oYuPA54UJ04ZH1udrIRVYZffjx4hww+ZG/LOI
/uKeUFUQgP26jFUvzCfgDgxukIEfE5dSQFWocPOnOx6H6wmqfYl0qdhWlNtyahATmlesczMMG/mb
yzrnjJGO5ytkU4E28FB55K1rG6UXwuWiQIg3MtfZD1fqw3Uyjj73biVr9X06aUPXCm4h6QtWZA3v
8NWCau8U6Jsu9//wQ3nUpVpRx+Zt+NlqGXT8NH+drb52lVvj+cE9Ho13l6zDrGQlpy9FoagnVzZR
juU67LTgVyE76bWrsBE1Jf8Yvrtg9/FjdNPS7qDOsex8jZTw8Oxi9pGp0fmX431ntOJ1/ivKletn
FDVKcra6RazOYf7NIGXeZimKGrPK/tkHW73bWBbuZ8bbk2VhomrVkmYYcINFdLWo5AvujiYR7Dm4
y4LDMj6x33lyfzGC6CrvsRbP4vPAy+X54z5ePo76Ftsqi/HO8zok6ChOcUWjE+yKeawmcmECu6Fl
vfRz1KLSVpT+OkKziWPCPNg+qnYg7oZlm1rUg3tPkhpOULQgRXBLz4Ewe3JzcSXFJOQfbotY3enr
cTwdzHXb5rfuXzAwq/FTRiiSQw5hZxcTZHWkhjp2NXURV7qWhVNSrLwR36d34wD8WRkEppbvXdXp
TT9Nu3wvO/jO3+vCu/GjHbMQr7p8rBrUvPFs+VbU8izfqtMW+Xd7/7u9GDvrvnVo/tMy3Gk4mP9j
Bzjf9DdxMGZateXJuuGq81MoEf/Gj0LJxPgdN/xmxNaknWSxqkJ2FVzD7cYDD4RidkP0qFcLqr2v
hWBwY7tc6/DH/e4IlSv5/V3p3Cc0rYgqz/XmlOhn1O9lsMOrbJ2xLk3bJla+ThVJVpAQxPkCd5S3
UWPISal5FV0oVE3s82e1XwC1X8Q6EkTJb4fpj69YdFygl3PQ/PmKiZus2GVvTb9a0eBCXK1VyhQZ
Ha7UbWN3uxzPjhDUMVuFzAy14VApq1W4HRxVJfkBj8bM0a3QRvYAqDmcXsK8CF90Iewr2duPjsSw
zYSKLPuwij3QaDwZgAKIPArR6OADFTjqJ2j8ZkTi3YiInx43Q/P/kzQBYksHxl0vMM8EvI7WTUrm
7AvZeigsqLc3IyWGS3rAnhJlL816/kMadJyRdoAYfcIOk2BVhpo+Cyh5g0HYldK49ANbrEyYuxS5
QRFJXq+LOuZkzC/1832p5Pyr8zsg29d+NdEi94nBdLhEIbPD7uWKUq5CUuh4OiE3oSnDfg9ypOEy
dXYpQTUK9f64DidgnfVhX4ViZZe6Gl1Mj20Z7UKxaGC2GL+9U6iTxaSzT/ysZm6ye5g+1JnN/J6C
g8TAODftyrKRu4iX0+N6RWpA9FGRI+zN5u7U2kUA2G1vC9BHpCw9M4oonf2MfTXnGQ00h/G3AbOA
uElmzLKvAy6yI6dUOAOv0bSxDdkGKbfbtD9yzmF+BEbYAhIpZEOnSgw/WrG1Ut9pGVuYJD68G3Ii
T8H6HyTSoeOeV9GnC6iAJv1QEeHeciPQS0L5lhQpMXcuGWru+wz0d5N3sbO5piS7j+Hk2mJQt0Al
WcVkJL1hX1o1iz6RYd0g+JqYIH7SVTsHs9+PQGuJ0/Ue2TjSqJa5Y++XEdglQsAIi184Ti+PF65j
NIY2S9GbLW2zTDNLCF30tP7a5AhB+35HmjlOI3PeuDxfRyLwWaW94YFwriLS9gGfBZfNhRFaaZnZ
ivpzNV1MX7tNLjbU7La5olc71Ok66G16mkDuWmEUoldWwynQdGamnDxfd74qV2EF27OcRgmCSEIW
7T63dAoCc7b5urIsFlgLeNLxRUIxNUWmyfmP8f4+HT4j54sytIhrVwh6d/4Ud9KlW2bTGOiLMhaV
e7bUk/bSAtgLT/e00hKLBCs99yLyoThuRkIVpwT439OSp53zITgEg0SRcEsIK1jLLXKz8lTkrBQ+
I2ntvhNbsyhQF8u2G7tPb2Qdim4Bbv7x6Qes9SVPvvfxmZIi9mXVBNHy4OhzAbaQVnO7rWT8putE
KKPw08LDH3Ke+ng9/RDTRlBLMT6EDLHw3XXB2q6G/HE9JeI8LiebhZgjt8ztffgCRznwCiJiQ367
MRTnyKzTz241i3hlsefnnu5ebA8mF1zQL7OJxYXcynNkwl2p+9S9oR4g62uxcyGBeE2GRjvD2Nam
i0373pT4djsfghMNbN0vzNt0yyfeqQF73cAVAGja+CnZzBQZuwmBcHinVg2/4/y9jyKKtOVMXRZ4
HpCD+ljzhPUlABcwrbF62LLEhOr5kRy0pvpdbA+DCPzmgh/IJM678NT/uzTVtyIy23Csao5FRlMh
TqPiXF1VN6E7kS861ObphA7lJ7MKWh+WbZVpFoarCpHTnL1PlNWUHTr5e9Wl+NvXpEfRxHzqxQeW
ARWqFmBLCjeqYytGWOGiZaG3mY3hdx+QHZ83dcx2nm1bbh1w08tWrAFURNvNcttdYWMsnanVIgqb
tvVHonBIvc45jYQ3YxSoa8cF8q997NKt28R2gbuolx96VoApSXbQ9PklF6i0Ti+G+toAZRnrF2tj
wlYQuTFjelEWO8ttF0SJHOjRyY5wFLy+SN6GQaL50ajFwShtVhSwqtsqlrqEGW1h4gYjeUjKMUMP
N1dw9TjfHjwAHNBvVa6aCfcLY3F+ZW70YxuI64xUFzEf9DLc2Go3ZvfMqiAnUsdiGCtp4VrTuSgC
kBcrj19GX+24zzPiySrvYylN13NuTjzF0vJW6TjnO9Hxxboagl/JLqwXO5P4nj+xjtTNihOaULPg
46LLMpjXvgcZBsJPXqSASBXTXFZ1GccqbF/IjMVsG34cz84wNL7MiQB7tlEV9+bXw6xsAfilS0by
53NLpjtFAi4ud6AJKD5k5g/pXfY56kUTJOi5X49amJFPWPtteKHi5Dd0EngH/mvRJ8s5vk5yowPk
setdXmnjCdrYIrPdYOPx/N4MrNCyA7ydyq8k5vOsfHp+HX2NRuyGLYc+yP45Nmbdpi/iaUOUlS6U
kXwWNwvU0tZS6Gq3wGOdae77GU2PYDinIC/R8ssexBgXVGRGvRz0Y5R+ATGNy9GnBXYRncz9U3Ve
6QGR+vQjPk7Xh3RSBLv5f4WnW0FADFXJVqGpJVUPUsi8kKAirvCpw5Trsg5VCS2unr5cJuiJ+NSn
BudBxkG/Hp0k8lCsduGuaNa7ub0z9RRz4T19T15Ci+Stfw4HyrZd/vRVBInZnj8B+0Mbj4lCCA9e
q63jF+073U1n0NuR9+QvifRHl80ODqdY7uPFsDD9HxpJDDRwGQt3aRkS7B8VIsTFEegVGtEJbKpP
AtZwoxteZP4eHCZyGdd+262dLwAt9PYGj7dXAo44u1tKKyxbrBaavPI3PqEbyvXLaXgZT8qoTjaf
JISQHe8sW9mFDooBPJFW4PJkjmu2nqyMOU9U9nE3rvXxlZAqR/O/HwDOVth1LCTabtURAebdWjna
o18rSzLVQKC6qmIZgqopukqZUGzvMtMhqIa9jCl7trAal7Ew/tkNUIrEKPQCLMwnkOPPOYYIvM48
OpVguUejHtn5ZSD2V855ECGe8XRYe8k1SIAfpgfFZqAUsUm7JooqFE6jc/quxH3rCMcyf9387xsY
sBFAYYmlccoeElXdR/NnrjjYtoOBuEPrlUYnVizccrmNj8NkI0OgPYNlEs+9dnC7LSUhj8daHTi4
atcQ4pf7Rrj7F9YLkJWCSAMEmM1VzDolieipZV5bVj0IR27Gx5ObCrRJHcMx22VO3FrC3q998OkK
hGzrz0Y17nUtwwd2N3/8218BXi8a7pkBX0n7uJAja9ugC7y4FS75YZP9aBtig4BIJZKqQQwrElq1
kgA8WBYbSKVpIBDmKCXiiTtTBVUR1/sJ8GMRux2rsXw4DQ9EKWROi+wPpwF9i2Z3266AD4myXMKc
WwEqZjiixUNsNGQkKIYzpxQ+9KvNq8ytb0FIrgxkRJ2HGM27HQsOlGEbo+JFkdpxBBgn2lR5PKOZ
yAZY5LgUlx2fKJ6ee8rKIeot17DcagVH5AbzKnzawjG8qCFB7MpqRUx5UyshG1wuY0UTMthNanpu
6InD+XUtcANWHDZPy90krAqgvGTKnv2gTkHEJmb8VELAp0SPhTXc3ocrClrXXTg1aFY9G80G47px
x8Dk2LtGgnk9pshTCp4xYSlFbLXn1Gi1hE3Zpbhxq4Tb+/Q4kat7n7NMrEKfnCBA2BL2KQYA22ve
MnSulghUPwv2gyPue55q/mZv9zq+GSq4DolCliZEUkl/R4hUYuDpbCW3YZ2XabiCWHbRxU4ZRpDJ
8fwr6vdtw8d9yHirdBMGkLYiWSVAkON5b8OuSf4qmiIGYwkTJaIH695hNo/Aceqj08LCKOFlItf8
Pu2W4gFCZJnfA4AsOWMrhPpJPxGybFuv5gd2Hpq6484wrpCB82Hbajbqpo0OD5tfMI23aUWGp+HG
qKIge1nHJe1hRNI+aRbbjyX42Q52xgkoFpSOVcUef+QZFyk82RcFj9fEMrwzmo5HZXw7Mzp2Z/Mu
M1ZtSa3OcDWALG2baGJHGKvpx6hELpqVaq/nf0mHYVXYFqI41Q5b8KlNOihCmK0S0W2Y72XARrpk
rhFZPBG0F7WGsxrh/NH1KxanrYjXiMi94ZH/RZLq77bXIJDG0QKn2eT3fiNwaqpYNMFhL3wtC3Cr
BJWIGLd82E8ac7XMzFv4ybO9Q8INzTatm6jpHiU8gdwBIy2LPrRP/MSn4XzYaDnnTbTyR+DZP6bD
8RVAfgXAURqp83xt0Whxz3jkXWiSYS8lF5cmqjpg7LYAwVtZcsKuWB/XhzzTG05PsKowj8UC4O5K
sDtB+bYJQRO4UrbhRTrcJdLfsnJ/QXAxyEwaxMAE7mLmw1PMZHrcE0GTJlbDP2c3+WD6JkTJxZPC
ExHtBDp4aSPYBh1NnsuoONNhJ0KCMqqotxGDSQEFkAdhyWXOJg18sdua/YskwqpYi23Xc2r6uHGr
lqVFWSIoUJfRKblL0m10tAjGAdoMRxYzyg2ZWCOFncNA8SPBWUaHrz5XcYLiwvhAcGZUgnTbFNtw
BdSTRQvbLTfxBzI/buyleY4RI634uugZ9Fekk80zwTia4Z0Ft1QymmGX8F0MZ/1t/enzyFCGZU7O
2ZueM2xWdNgFhX8Sp8bR2TZXW2EYm4PKJkC2Ko/WCC9v616YTNoJla7ksseId6IFmAloMGEvUBAr
BH8smGIYpm5FWtBOp2hhvBLQainDARyrqYPiUbiRQrSeYB2iH8ZNhgOqvZWx4do3G3ZCYD0I1o0B
Q5V4kpUjqSL6h5QzJQIQZbtg7tYF2adpQvVXRR9NLEl/xZsDqbHerQyuee12uz9eXym8+5EAu9gg
UBY7loiiOq5Kr1R18UYr9s0MO0yvfhr9YfwOXquNefrrq14KmbDKLEQPHtpi1W+IGwCHczXfvosb
BXNE8+ULrmIqRZxGaixrodhuLYYePuwUEO6QCxyGso3ldzcU0OWNVzOUHepyKEVyIEWEYOUMSNnE
in1p1nKy3reMqT53NRRW8zg7XFxaF23Mf18CM0nTtihrzeBWKnlpJYCYLEKTcFXs6uZbswqfkZMO
NwqEZqvnB133oG21wVU0KiyzeqiYw6Y26pjJezZezfW433nACSgRjKbOI1XYeHy1Lb/tYrAXZw2m
q+HrtlZzXxyUv93SmyhFLE40DH32Aja54KXM1zPrNq3f1FNiAFiXRSzqsrkYFQQJmj5WnenErYv1
coePcfc4H/+LxBzBjkWWQ+dGUW5AeKG6WnuHFrW9JSjnVxJdGhdZdZ2+cQebGxBSeaz0cJmjLAbL
zkD0hO9blBL4zUVbYakRJZFQmqPc5nIA6sqqmPftgmAWSknIEJDc79dpoVpIEerlR8bA0pghhYVv
2j5W5ELP9AfzTDTK+99t75BNnkQr8Qstz0XKUtQJiLGMFUA8GQSJCb+FbC4fWqmOJebNXYc3aBU2
In1YyH4067p8Q5UPHIBsmmhjpmcPuAQecBk70xyBoeBlqvm/tWxAzchloOokUMHclzCTYvWtoUOY
FW9lnUm93OtTwg80qAiC9qsAmc01WZMIWHh9dInPJQ9qSWeMDOl7bxAt9IGetSiaGPBha8OFszG0
J3NXV1gsbTsvFLEwr2xpONvabroJW02J7IkQscL+0sZY2KKlaArIgw2vRlek2pZb4eN/W1QGuMSz
HW1GDDY38wQWhZKwiBZhuqg8dwozprOh1MMJVQ+JUn2KqfU5nDxkbyiLmevr6IxVzfuTkUU015Ly
csaYPCFgcRQp5n13HoWHHaNWhKafLYYBEWAlrrkoFzzY4jsIEe8kNI9+HmHDgkJ6Sdy7pMklwotx
Ig6pCvBd0cYMszOz1N3yYJKvqc5hdRFN7y5TP6jr05hoD1fINHi+9FKzxXz8gavr4zdzViZfF29Y
79fBo6nl4AofFXArbq4SoqUaMcJCVNe4pSZSb1fVH+QFxOgBAWtyC4jud7jbeSvmDzzdV7DM3EHZ
ji0FC65mnldywdN0syF529FuNy8MjtkEwzUc/t0tJyhfwzLay/aNtznMGSwy06WtosZz7pgIqtjE
ELeY5WdLCpiYGtGMfO6aHb15YzLfRM3PFSN+7RuIS+MyBPNnL5envmG7+7fjHhBY1267ebHVbaBk
u3oVaw4PV0/Yr3ZZcXK208uAoKWVwl7E40yhqYudxQZSFPxgfi6ARXY3Ac+d8gzhYe0S/tSEb6oC
AZLOcvDbiikmuRiHbJfQWl3aTz3FSTRulA8esEGZZYQ61s5+vdoLzeVDl9KKtvgCtCDXsQZEavxD
KwYebKWp0/ADzGFoxMwB4cnOlx1WYdlgBWzWaV9BTDkhAzovmlCCKNaTLYoHtCXGPeTL/OmZOClG
CDvM2DX8eWsu8wLnBe+QhTsJdNu2vjx2N2LylPe4PGH4Mn2wF6RnjTq6nSgwTZMWTiguaffTxkY1
Lef6IB/Z1pYkZJ+nAOo+22SK5N9Sv2hJqhUqSVSauSWN2zOekrZND+yJhZvJuvlAyE+7VgtsgGUt
IqQNazWxmXIRA2W43B9wNku7nphUKktxjAgsIywvj+KN7MgahIRIEt3gbmDhMhzYEmiHL+MPjnUk
SLR8mjrHEyON5w8iJALzOxebrlz6s+vqwTECABeLYkPmiQm2URXPpxpv5r1G3FFR4A7YQJIIHFv3
6Nr1+r4nT2MFGNB0moYDo6uHN5QLjyYPnyNNwEPvoiEJsWPUVLiIZVKjGLmD0TMXNNDNYuTK2HlC
bwr4UUXMlX7Oxs1NOgF1lX1sPkGY/eRGWC7Aj+tzmzzqJfp3cib4bXZik3VF0TTBMncEZ4masoqF
OhfYEIZOdNGfdvEKVPtuoxKd2p89CLOXIMxex/x3B5cd/2SW+iO/yT/G2/HwGE4/w5rJuol20O2K
OgOyp42hMPkU71z/jYMjpZz94vXW74JfVyCX1MRoeIU8Pxw/UPlHlRVRGB53gXpJoO7KaDHF7zkm
OGQ01u7LEBifByJcXdj4Xd7RbCRBAHQpQKWiPZ1iEVscJxCobThvoFjkxBzY3N2nLyOo381FZyn+
//2qrw03yqISEidqzPfT6Ssqx442OlvMvTO75jQJ+Do+QP16kXUxCEgA5Uyh52vRVFXMRnkGSYAY
tr+eql1gLVGVNVcGQ/nRrhvZV6teRAlRXolIvaBA16JatJhIpp1K0R9YzgtfWGEBgL04fGoKF9qK
6xZy6mAOdLJKT1SeJqCqAgcmWkE/5fvSwJ8oFXlNaqyzN4CxyLto+2NHzbjcv8gyvXZtEaiJOQxZ
vJlvgBO5T2y7BmwPU/tNuyr8L5/ThY/zcU9pjCQYytMjjwsU/aGXHFnisdssOgIjPKSbG35HBNi0
VTwpC4vXjq5aPZmuaeQEnVL0aUqDbwHetolmTYeXpXX4gVqdXFHj+yoGLly2EJT90lxxxoiex2+0
cVDWlmuNv7W+H+CBo4c0wvPo5soSpeXA6BJSuFkwvOtEKigNKaJT5V4Hkv5GFc0BGw80AgV6Vaxp
hnCAgLrOsfHh+kIZ2kzWCbYC0SiSq7KRrysCSZsRdRcdHOKKsgbDPohQyiZstT/fLck18CJCj5FJ
FDQzTLfRt/8+o/Y4vnU37IvnIDUiH0hH7vMVoimAy+PK30qk5m2e0d2alVNvqINL3cds5BCWDIC2
RZjZrldERNWc88QxmKOzKruPmRNOv70erzc3xcj9I+5QW0hfK2wSbgdA4FR7Ex8kOvuZnxqrVMkG
GF75WhwpT6kh7N4Gfm8ElvzJ5BeWiKPUP12nj79PR9TIs85j0DE2/nnuKnVqmJNMyerFvInqJO4N
dZVlag76kIDwltF+PGtBmwNBW8UQpfFGBQT7uo02kmxxK9Z25Ukfx1siDV5XRawoeZ4alBJbTRat
O/tuJMnwMOekjlDTeJstVWIl42/ck8NBuwI0DnMWloWKc4sPjKktozP2wkYFEC1S5TFQLRybBaJc
Wuhzy2zWAqjFPibRZgxsojROVO/KTou2r+7tY1gg3hYfOvfZcvMI3qfr8TfqlXFiGwSYabLNEBH2
Mv0iengfkbDOk70DPRtt78EfhYRO/4w62xQVresqNjLoGYhnbohF6d78NSoQqGN8FjSXWWD5fKuw
7YpsPdjYIrPfE/PeGO8GaH0huy9XNmD/aA1lILnrTcsl25WVddgcoHiO24CATTSeGTpLty/Hi/WV
yDQC/lITix89jwMDzLuubOoCFDNhTncYdFrkYVIiaJCzOGnWW3fxKDgpu1njP72BxP85OxyOwt6u
SvKf2MalQvM1FsJh362VePhhdNZxjyLwvFa3rOWzl5Ha9KS+L7o+6snQMp9o/VfKxnAe623jtL+j
2eR6JPY8+ZYhw1ub3FfR6Wvc3sX+99zoxbV2nnM8h9EOU9NsOJql0RbhUBEx0nCnl9vxl352jAiU
8Je/IPghTwjJYzN3grY0drKsukJTx0ZD232nm3nx/sVwaW8dyoukTgjL6EYtaMRLlWLgySL8gqv4
xXGDfiVFsEYw5Eq08SGQ+PCiX0vzNKQZGzWJW/bTawRgyUF57a7meB9rdf10lf5c9rLn1lRpLCbf
uNiYR8/Z9dz2FvGhb0qMkPIGuV3ktJ4ho8oM3o6/9jV74rg1f9zHhoXbj2n/oLyU36gLr7aJEB8c
ON6VYvLRIu8EzTn0J3tf2pw+Poi4Tz/AIlS/WyRLJyaN+xHC86RpKtP6GJPjstouNi4roNnztI3Y
GjHPqApveHc25zI8yVWp+pytVkwsakTNLsR6pXhTTNZyU0eCmIAYHU28sHucx+8Xq7j278fT4Qpi
+5WIm8qB6MNvP1xA+MRd0wjxsp9s5ckRLCembAs7GXYggcWH0uzOuFG+2595Bf6C/2mZWOWHWfFo
P6Jmkn0MAHxRon+2p0Qda0thH3vu6gOdDl6l8c0tBJLFrUJdi4wFwXea2Eznl+mXdqNuGUoo0Jd/
mlKtmu2W/Fo84ahdb2leK7Wn1q+Trffkx3Oa26cLB1xid1X4E/pRIG41J9Y3bswpQlqKzuo8KbeU
u28SaJu3Vi3riYFH8a1tuf9afcsh2ZrL3nwTElUT2dA2umrEG1JpShkQuRWQnziaDZvajXm70C1n
UQpcBGQcwYvWMsPuqwTMZwNhahcHu4DvCDP7pIG3n87z9OlmmFYK/Nv1ClKteQU6MBlz92P4DnA+
cYSMHwGQroZt+ljDPapUPe6Pm1I7pYyWcdDYRY3nEckyjvSV4jv74bQMak/Ej2Q3KP5j3SZ9HK7J
ft6VHGtgK9K7pS1c0BLO5Q33Ij8HQgpZrMYtyCdPr6/zEEeZTaQQqW04S/sHvxCdt+tqbq3G+jE9
UsHVRjSeEvldxYe2Khb1i2ujM+iHlxd6TzfXVi8FsjsqY9nAkHvu0/SXyQ1DgKPN8jo6fj6+Gm5L
ntfRjjNhJD+RFywEZjaF16SRKBfYvFWMtyi4t6EznZmt51kRNoU1T2YE2cM8trOn0hfRnjDV5qeW
gwzIrp7L1ZfRWkv+a4ebXrWyZSdp1KyODcTcVkWfy/QTcX8Z9OP6bbxOyayzLK3MfKbyedjSDHRN
tZWs+jyWqVs+t+MsceC+aaLJ8Od+HyMrIM6TfNfDWZ2OSl6Ol4AKCdkqoF721VJjMHIhmWw1WTrR
AoYa1EpSL9Xum2wOflKyHECgrQKgpi1T4QtZrputq/QpPuqmtyQGSsh2LevxFOti5i01zNHEB3wE
0KlN+HOUUamf4tI7UtwsZ5Kj65uwurkRUy/ZgeA8DF8cFut1Fe3EvIjkubEwp3TSAMk2j86vFxjA
ucyZc/dwqToKbOROyeP9fZKjTu/GzAGNM0UVuS/Q8j3VjabZgJNoBTZW5E51dD8wbIV5RJM08t8P
v0atfCrYnFNGOqYzI2HwXLS+hnXropQb9IeK1oucR+q+8HX8bEeYWlKbnNWy2PnO0J6TK48z1RZc
KDI9/xcJDHkh4HTBREc77P3lRjyxtT2unP/bLDJda5AHEDtVrDXeU0PNMxMLW3ZpSVfE2uHMzoTN
oqaQxLK2Ypkwzu0nUBlVofY9Mo82MvwIVzMUXVTxO7lqt/46ne+p/Td1pw/W2BGs743HEuxwtjDL
QOXO1+PtYaTp+/hyHb+BnURFzVxeQ5iWPyN93JRljFVXQOHE+EqLFpaYzY6Ph4KwLu+N6jlEy2BK
R7SN0ogxhVcs6yyK8Z216WcmazWiNToH5KID53cUYP6y2cwWoon7MfQyDXSY55jfNsAvhDctIqFL
RQW1e3YxK3P/r6miuSaPEodV8Gi6VVFEb/zDmT52C4tKwUCkOos291vas8zjQ501BORzMEa89nMZ
lzmio++HDkld3LKIVdrOfMN92I3n/QSR12WWxy422nAQxelFvYsIbWRoamYRrSFbyvEIB8esuky2
3jIkSDbPrJ/bb92vw/G0CfhdodGXe8oU0yv9MIbEdTqnGl02GWgpZqsEbB/O0/jK09KobQdA3YJ5
dolKhSrPIbzUo13weM9KNrr0yFKtiSsopZW8YJOiqy2dbb+rhH8vAMFPIzXmahtjLw80lQF3z2wx
5J/Ihq1vlOa3bkUdu2pfdZM233MBTXrCWimdPHOQTItGsmhDO+pL6kxB/tSBzKnbhTPR+C+u5ipp
Htv6Gz0yX/n0kzAfGZq/XkR2bZvzeVCl2h8QoX8e7NxHK4xIoFhU+if27tMl3FO1nOdAvRt63E/X
K087jZ7i6W9F1z6Q6ql8RqVgy66WL84Bjj2Nlt1+BJ/MwkbVxuUa0XlfTInZ/J64XxD/hM8MWhx1
0OZ+CWN9Ys+1yA1xB86gjG77Oj5JNasW2371NNmGY1r/YxBGyuUA2jqY1vRkXaZWqf0q5toaZ5zQ
R8GMuGUWJ+jJIit8aheA6MR66QZGci5bHQlH2nUWPxy0LJH+7Hy2Wu7l8WZYylryx/2X2Yqjc+L2
lLkc3Mt75E0KSOJTv21H14mG21lYptVBzVgAzSjd25zxl9IImbXahplxTR6dHLG0N0cd8usiqul9
apUyvLODwJ2RFlRiouCxyHWjaMlYurjA6fgBsw3tel5H5uuvQAIlOor6w9iIdwu25DmP60mEqbbr
BNmpuhgKjmsnLHKWqv7c7G3uS0bsedUsLgYBFTHwF69oJ40bV29UZtjS93UbQpssDxF9U8mmbbmY
WKEJYZQedKtdUaHfTxuD0fFpFiwJhe9vu++7b9++2QDj43pihwbATRsBTBMmzuEridCDWpHGW6pC
GFm+XBDXFd/2x6N4O/2WqtgtLTvQ4tq8A4F0DZu/P19wShTxek0MrBq75C3n6mMoO99/5Hc+WJ1p
ZOlvfTh9G37cdo/7667TF4qiaoOF9G/r2JtFzrbhnqo+BAC26qUvfVt2i8Ou71DIE9+9cyVPdK4o
Y7JDI+3diVLRiiPBmym1NwtPqC+Qq7Js4wqNX0G2v1onWUAsp4wNUJxVKzsK6TE0EjXkBxHNXaSc
7WcnSJB5gqp0ClHRQv0n8xnoyMkAi3S0eQGIT6/KEJibr4BQn3Ya22IVYG4jAP7LdXrjbl/H85ay
1LKKYk5hihJEEGT1rgd5PNnPomEbeNNSrCbC2HNamKIrNE8mMeAzj87BLOq8RlmFPpbOmM28lx+4
QVVRN/HRIw5iLMtPQJOBttTxuywiHF0nypgrYdwRg7pmBc9NPin385fEOCzR0EJ0C1qheKhl0X+Q
LZroqSJvuRIFKfsr3/Nw2lZfWFbRJ16CwdvGzBfxWQORhjozGbDJ+G18+XK0kfMjsNxFbijnnraB
TAn6GgGwXRkfR0QybhZuXG0PhVsVy2YHk6cIoqvDV21ddrSBhg8JUAUFP0CyA3khEARBLzjOkLrw
CEgr1Guky9PQUO48QHFCwCJhrBqUi5UAChHtLLf0PrAIFFvVscR2wWpZLGQJBXMHqvKzGK7iad4b
SCkCYcSRg3RpdNlExaIHrIdor5ttzkXeOsjgR5GiboSlCzmfE5nAMgp0EBCWpY8oCDBXsSrI5+iw
g9Qc0GKlaBVR0o5K5+hbQe+I+sgp+rnI4gWkuEQZt/Cm4nml24NbAbw+TvNMpgQooZQju9qlnkvM
R7ENddjFhmmDMteTzq6TCK10vz7O+wHliMs2HG81l0QFg6DDfrEJkJMMTvjRuXIaCZMqDEa15cqa
qX5HmTm4PdAyJz0RqxRdVEs+ojvj0uj3TLC+l9GVXoGOK9FmImFjJnOc/XDaA64uYoeJPiAnQ4AR
WQt0hyi6ERBTr2cAC0XbLDqlacueto9rLHo92KYQAgDTZrG6aTFPbZnqvHE4XCNJwRfQP2OswPNF
E7bGiNtzVzN3OIr2z+gaRjCxAQPurY4eNTprNomhq2RnNjuwsv7ULCM8lrEVmUsSv9Uq+W2RlsnM
dxGd6bU08/ZwPonVom5dgzGejwDT2AooWdBbNQrL8V1TAC6niPmmNlLGZSouNv4gRf9+PZ6/JPRB
20RXdDjeRDQ53nEkLIp9uVIn0mQHvzIG64BpXzAKLMtic7yWChkjyhKd62qR0hCjC8OOgjNLkC/A
zQUZd0ZdFAEsoo4B1n+bpg8/qQ+07erKGIJkbkI+AxkSA0SrrNeRA9zbMtFfpaxWHbuCEYZvVDrL
vadcez2gxUKjplxDce48lcc2p3ApFmAh9duamlg+IZYZ3scByC4BtuSKzRAQczqa3Tgha7vUzQa2
WpdvI2hFTO67J7yPFwKbWe4DkBYxojNfgHDPY6Xdvu5yShkYMS3gdeyz1p00CAI2tO09mQ/QtEwZ
EuE/es3bx31L6rqPD/ebH/XVWKvszYDCkzKWEXxugg/cuy4aGXSkasQADf7YMELSn4X21MzIMZAY
LfJYYcjziE7QirMELVJtY2aPnQXyq4h23h9fzUtaZDx1wvu3RNFVEa9EofPMIwy59IqbxO0Iqsoo
e2w9tk0W00ZPIyR5uPXZvjnrAhCviLbFm5tVDt+T7rwsfvNemwslLeiEL+MPHh0Bokly7Ky9Qd+n
wVf/sKTE0P6mi8EFw3iHC8j8FQ0wsRUSdQwpL4Bjn4H3tsLFfZK3fL4PmvGLGn3GW9nLxuq2rQEa
t2TtNn/f5Nh0QRxnafibwKo2ZR+7aw8BYbpO1L7WeR8LKYVqzWhtBJntY63y4rYMvt+sipkfYiai
HRNqFLhhqytwzfKYHI0DuQF2W47orBgSKeXx+XhyesqGNUAXHyuWW7240dd9WVRgYo7HKs45dxhZ
7MWL7yM2uTJq403p+T9rjlRxJD0r56Bj/8Y6F3ngPpj7zNz7MVLbVcSvQpSQXZtngZWMSUm4DjZW
3jZqMBgkb6o2ZspSGGzu7bzR682iLcRlZSO1H8alV3l0Xod7IWvjA1upic0smJMgifInWTgqWlCN
Fu3/yTqGKK7YNc60CLRkoXYugbfO3Qh4YA6oQiKpuhYUj1ifi7IwRn8CZpQRfqtiWrW7AxvMv7dV
qHCkWfK7Mn4NB4fGCgljjWWJk5ALQnxTpVctjTW21haTiHPWxtGbnIll7wI4fE0MEWf8zMtR1O+L
4ivztiMuwxAzqXh6WZutmn8kpiw0oe1RiXA7JdZso+cl0sLuD9VK36xOQJ0Wi1goYgY1cwcbdlbA
EjJY34SDf+YE4owftE0wfGDJlQglUrqyFuFZpUvX1E5HxLJYVkh4RbD4s+sUhhEhd+d2Yfu5zlae
jhtw57sDb4CtxGsKuL7YXCAYACX6gYry3Whh8iaUq4wStkETkk8dqIw7FZZwcbKy6LIYejPt91ui
Aso4jymuKITGCn4jv0FhZCu7gcuC3wgYggxF27QGzHtr5RgH+udylV5Y6qITCcRC2gvrMerCRwQJ
oCwODljXn4HSsaLvY0HABUgxz6MWeCMAp4jGruehxQ6ScT/eUWWurNVqlv0s/XSO54W8XX/vAPbq
HxXYJ13Mppidl7ktOjCOuhgOYjYm3in6Mhq1mLCxqjbaFn1TI3MQks9joannuBJo196p4R2rWE/D
7e58rG/GhiOegb1o2lqpl8M9GWcKBGetY9NH1nMCKoBFarVuETzYj46sAztt+WaUg7k4Q9SkXO3M
H4/SO1BPLK2ahGyQVnRkY+ekdkRqjmVEFHfc4VGOoIqEwgWZKL6RDTVF8wVyT7S2aHYvouiIM71Z
KVbZNKyY55362iqOYhRikbBAxv1Doa/V+6Iz0f/0Ovv9ieIY3k0TFGYFxTHBxGP7eOB26lh/x+jd
bBlczXvzNXuUYukqpcO764myN+4UaqjY+qaYgXOrLKjhruxa/uKDGPr93VyWI84USfqqvud8z2oz
YCO+TI2wyHNpjt0B72Z3ex9IjuixfLudIuCQOapqF5pluTrtmIlR8IdsSWxfJwVDtKdpYz0v59OY
pW5chXAAx6iequOWTdi4E7tC+CBiDfJT8yoo5ZzX2jQmnk8lOnn6MdBXD75ZGtdPZzC6nllCVJl6
F8PdsdYp2W7Cix1ihDZPiB1wPYJSZJ9j7to5K33b8Q2Nf+fjeJaUCV373jaoh2ZY8256wYminbwT
gVv6h3ai524WKq/V1SRepy9jVa7uOKnL6LJcJ13Lyc57dGASSHO9v1kOugdq04UasIBq+07fz9I7
3d0JqpzkKy4Cxq6yFd1adMl9ensjxyFdbd2KvZEtlc/TRIX8PU+z327/Atx89KShEDXSc7AYB7BO
GVOmbh1ZQpu4+Dpk8jZ8O5vTpqDf4wPYGb3QLwX/UUSySqST55RSStc0oircFwY4bam2abDvX8Vk
hjvSlvJbvl6hwLuVtZOeVs/b8A/EXQW7wJjU/RT7801MYTtJQ5knJuT7tBsP6Ba7dt0ooLDFMd45
8RXx6dYMaKT3sg4e3lVl0a42enc2VCwc7U0THZFKztIWfE0j8FoiBflyGs5f0q0go5PnVk02fQ4a
VSAX1Srp56oHzm6RZEfZWjRMEcGq9QQxcLuy2ONpfvvSvOxxvj0ul+kKccJdtEMNZySsx8a5iW1O
RO3ZijS6a2xgw+EU9nV6a3r1000SmrSuYrak3dNIna8dmNYNZL05PY3lai1sZQfxQFPDbJeWBWcI
YKg+sExW1tLXIT5FnKHmLz9ca09KW1+PKIMh4LfcuH2Fv95fT68gG5jFg1pM7sEI6I3V8oXIEot2
X5yMs2GROd+cGqfXRwvcvh1Pp2R0pxWhGTGvw4/D9aoWlr602SrZmikBUZBvFa1xSrL/yr5aNwGX
93yjic48IRW13cxF/3RiLhf1mKjDLLWcBYH5Nmxana8myLsSpeWCQP6hikUHo5H6RCMCG2AXc5GL
9WzTBNyiEOkGzho8dUZ93DGYeD0ssX5CvFm+ZLdlmURPzXXOCDIRj+jF68lmYB7x/q8I5BoVzEHz
w51nN8Ajq7REFSmY9SF2MJq+KgEEQ8tvgLRGEQOELVrU/h8Enall20tvrnjzyZjIN3PtS0Ngs5jF
BR0vaHhruwIKxMo73VRyh6ojTOgHyAJk8fanqcQQhhU0dRRHbeP1ZAfz7B0atblhXq2sh+you04e
Zj3coHeUqCzKSjdKZOdpgfZ9Gy67lwfIQ7eh3oq6LqsCwB4cM4+pGlco5/IVICdeB/g1WULGrQIS
3SUsDDo6iFYIMIdeAxKsi93IrPKWYYpzTRa22tganjtVkNlCAZhVQx3pjvCgYpcV579b2kvqUUX+
jbn/jNIH8XOTmFo/SoFXtFXLZfW5fYPN9n6zvrlFarNgq/myXsNNteZOXRZswPCy5MMXZTQvaREE
1LUDgNMEAEmUkgWoNIbdOntwDuqAjGEGulFyCGC3qmjlWtZqRxcv/w4Ag8r0BBxSWEvQwrAf6MlQ
xnKLjKl8N77xt7T9nQs7VXboYOt9U+l6s04kBoUZJFsRaCW0dOcB88NLGnrd9NHWAKvBECkApsRv
V6EZiOoWyiIaCHg1nGg7Wh1P48b+ba3vS8ddj+tlJT/3Z0Zugo7kuey0VfPQH7L6cxEQoBV43ZfH
7cfuNE0X0LGt8x3bfGBhHu5Fru5sbL9aLJHq7zKGxHfNE3F9/2UiJCrR6PXThUt/aEmiUHh0fH01
pHADa2b+upgxq3q9sTniDxbxHfyEXRWUqdN64HL8LsqGJzbUz9eDWvLabfg2gBxFqvwalpmP5/fx
eryrXpFdxT+7mKvFq1j5dzwjtIpdoxFrkNtZLxGDK4Hp975ifJFPN1AxaC+pFJfU8Hya9SVxOQNn
AjXnOpcdgGL9Enk1MN1NtpSvA9xSoHUeFxoZDltdyilidYgy45GKcxglWDe1YCu21ogmQsvRCPY9
XcbzUnxOPR0fV0ScnqxqWrN2i/IqvOZlOMPrqp4OKfoPzuDG/WgM+vOU6jIhfRg27psVaszB8BMt
EasiVpXFGBDb0YAa3IDh0QIGWpc84a9MqfGR2h0CRV7E5r8EsVfsD9cS/uZn74r+kXPz61Tf67bI
YqrNR+TChkD4puNVn7bogkkAxbZXTSNyZUQWIJcq5lQ404inpozfjY/zuKIi4TzWgiaG4xag7Y1z
+uSEOTH03UJHbBQk0Stf1qL7kXDPODDQIF7i3b0F5IOEf03WLfkFqnLZg6wPJppLTGfK2lgDgAjE
8Wz+yuzN9fxl/fFAyK0sFgJdKo+WUJjsTEXCG+D5OuAkzAsvboLhO34J3Di26GIhn69mX9zZwbhU
r+b6WF7aaCtnB1y0BrxMD3usv1OGe2m0jpNorXDxhbIKjaTUxJxSYmp9ihP0kAMNh7JooP74MZsD
t69vPNsF1G5GJyC68KblvhOoq69lZEjYyG7QJFd1DDc0zzFHjZtgbXKjT8BSp1MCiHcXKwNyVhW3
s3icDxNoaiS0F6nDSnqAW1oVFlJPyIGIi+/N0YnUrMBGJhC1joerQtNN6cS8ihYhwoAdgN6KOjSy
r7o19NYIDbq1F8OkX0DITLY5EaEid+9+HiVwv59VPeuP8/GD5av76L8exNzL37o6l8fZV3rZv8EJ
yrJdjQ/ultaJseXn4TFGuT7w6OZSjLkWQRVtYZe2shUrYNEqNmRcW9R46ScqRdoddYhFWdcxeJtf
yjpqbtibGpW2S4kjZ0T25s8K7tDmpmeZUIClPVyI43oNWha8tsA22wQXXIhmze6MHkL3JyCuOftu
znlTl3y/Tvc7ecCPF/s3C6IavHsc57n1J8DCHhnDHevbTzwXeC0BfKSKtipBplSlix5fjp4QhYva
gsfUoQWEW/ZiUu/TKHDjwH9cbjvXzBus7QmVnSa78pfxh13KDvKm6W4MoT/SZBIjtI5Ikghghijm
T28WbFKgymzOudlwoeCFGgET4756Lu6tLQjal9r1ytgtaqvRpVIMyIk7wKtiwIjN2ncbKBO8TPu5
e3zm/WQ0216HQMv6xrWysRnHGI+u7fSHsZGMAsTA71IgiHjYUE6TyGyw5/t4cPVtLnDs/yK6Hvmg
DtDW595ZCuP+AuLk/zK+PS5osG/F7owkKaoQvYsVbmCJyi8h+jmzo5/8uBK/7+NWIo2xf1zJ0gCz
WXiZelkmyNSGh9hR/5IHOkrpd+NN69uF4IbSsSM/VF+lqcLNtKJ62TUWFnsyRHoxL3/CY3Tt9nK/
Pe/RirWShQR8V714ctHUVIW55q5B0/yRx1yInzYG4c12quP4Afj51UphZMYOjxuu9+PrsAf7afxV
CGkt9sMqgHV+8tEzvxSFLPOukS0I7Oe7l+MbOJOnG1H7u6abxBU3YhEBjuZFwFd17CKMG0GRPv/b
0+ur+XF0C51fR5RMOr4ZOS0MdpGFu3gij3nC7u101Lpo2psUwoRh+r2Dmts0q+WUlFBrvFCR6e4l
QfRKIRm1YoFXaBLnmV5uRjKNsgkBOpVYjty+vCuFgHJL2sS3fSjwTnWM1D4h46ouJLNO7ISZxvii
18HQ/vE8XH/wckfGeqEMJO+siS18M/YCXdMWXeQF04yfms92GPfT1fXvJNeYv4/9D7ZNvY086E40
/1wpf47rkH0O/WlZJ97AtXoO4GBxpa+1zNsEqwlJbz0oB7GwYUvzLX/m4vrWAJquO6t0QWFRTwBh
J2fKINFnl+KMDEcIl65TbPiIPpig2yOtXvvVZaXIavWlLAyBRHiz3bKcaN10vZO6JKAKYQV0P4RW
KAq/obr3w4rXW1p5iSmSp6UrvzlZ+xFd2OVgyWDcfJczhZZh+ZY5/BK9JtTtcf/lB25YyfcgbpJr
Y7tO365+ZL8lweSrFmV2MU6QqJ4CLZZ7WmGclpu5Q1XUwweZ9HsP3van1pdrBK3QP7tS3dSCfz7f
p/+pNZjghdvYO8TfebmKxNvO8iKcz7VmaFqNHBfx3u/0d4p9x0RTefb2BWnUt8hN1eVY1erF5goW
/Qpqv6oHOfskiu+IgVp3s4BYEXWxEPWRJjoO86tge5gpOvcr8XVWRYxBXByFGkX+fToiDvHkKKz/
9U1RVFwtp+er8gKnIr1SOb0SkOGy6mfIsNdFK5UeGTf6fZqrvXbUbBbIrtLTtMi6uWjuJ9nYvwNP
jyljrzBTMtUuPm7vc780XU0Vgps5+ufEA1RUOtX51WT1lraW6xemL9fpEsFzr2zml1LKgr+8+YCV
8hruCNru8J6zLVcgCcAmXZ8V1m7/fjzpEqgqY2qR6IHrCBdom/0RQKOFkJEe2PBJS2XLzRThzdRA
zzoOKfRNC/nG0KUuvZxOFlJL0D/XBXi1Tz9UG1Pm8Y1u6ULKOy4E23JEp/3cqyVZrw6k4NIEnnfJ
o4a/A+3YlLGvA9EswBwvonosZXxIQ5XRRd1KRdIOP4brlxslzVVgIW9SKDYf50lx6g87zRsHOvnZ
65ieUx+IkGOaS8oPIqjIx96wlYr4RxhbNhRbqhfJWTPw2IKvBUxYtduuRwYPf95Qr/LYD62uwEmO
2azZDS+36aRVQPNNVDET8USp65UDOCsa+p+oPdlwPOtypfNuVcYREnZ+Z+/Xreg2C7uLd15A2YWa
zNakyIXsZBkk53iZxi/DDm8+Z5/cMofj1+V45p/VhYpGHoyHefZ15GDHM/Y9eVP5shYDtqpGCt/5
0l+mO/V4Vhm688aW3VXLu2qryK4+8YClWJGjlnPYMr5i6v4L+YxMD416/+ndFeK886Pm6+UI6uBo
WV9I0GlRcywv0IC8EEetHJ0ZwSf4O3Fqp6ppdepM0TfCBv7leP4l9XntP+9oqGjk/m28P19OqhaH
dd51c2Ri26gGXDm/gDssYoTSb67kYqVy6VcdlRn2X/Xleklvlrtc7ikq5nShVofGYb7VCv3fE9BF
7Fcj3rW7HFAey8q+WsdS2u2mE9B9pVD8DJlpy43Xo5+8ivl5ccf965j03htvkDLqVO7PqzYu9mQg
vNZrrPdCn08r+lenzRz9sM2W4KPuRek2Tr7FklBtWliLxetXoQ3VztOWD8eByuqHD/7qr/TvP/O/
m+UPo59aer9SVOd21wp7CG8mWgu5AYRWB4lV/8nLcAxdX0e0PBJ2yT/++dPfx/H603Q+u1rY437c
D+eDbeWJO+D0osGQCAUOl8vpB4UKzB1QAupmT60vUwhslIXUdsrmTpNxQf842tpp1Fqnz3rRNI3/
sJsbz8aUpcA+jSeD8Le+aGPdeZ7u/W28/zzeacEbuH3Rc02OhuMqaX0LpcB6+AGxT1v4cjyDRkGy
n5jn2OfL9S0ieFV9QdHMSxzmeUGW1Eae8BhR1wwJHDYvQxxbuz5syD3gwFkcE2X0EXdBeWVo6suv
muq0V1+E3R5rhbaHx+GIaFt2Ucu48OPpWHa5x35O5Z3pxlg2AIoSXfxEMOv5Ed4HoyCYb3YXyqV+
A53HetHSSgCLea9/HL9SEpjJfcbf/uTvQd+oQH2JwJLZ6D/ul59t5YSDC2Oy63PRqYqaX+WZJibo
n96m+5Ep7jyOB9BHq8/9C5GR70z850X35q3u499eX1HrNtl00s/yeVoM7MYvQPjDpkPPStzKc+aT
71qEjVk1Yjmebxfutpxarw4Ff6msd+NqMXBavw7hb5oa3v0f8K460ahOlDyspeW/cS3GwnOg3W/X
rTSAfU3qQWw7ktPKcqCBOS2QBAJYyIUeXaYL4n/Sk+7H41d43jIGUJWShRNIH4876iPXRkmWu1qB
w3QhivXpqklO/DMlwuptJokQYVOC/fqQAqqo/Pof5vH474DQ6sOr7eaXp4f/gN/2pegiSgXiy7H+
vB9/mk0rQHTC4POz/+TVil5O54ex4A3pja/H8xalkcc6Qj7ZE9giFT2aebCgxvwf1FzP8gi12HMS
GUkDf3EUzXCyL6JyLdAYyPTCr1RREqlycd0DzaQx93ShlkN2UAV344FryRa+NZeTKge24niTeZpX
MfrSRMGe4CfUffbG+hLQv5fzwtGLnNq43Ud4aFH5IPEXglR+2iRB81hRRsCQs0U+ur8ATCkNAI5m
ZM6mx+1Z+6KJde5es5RlHqLV49k1yrNeHOCnIlYg8vyMv952L4/jiZAvN1uQu7u/H4EtLLpxs1Gi
KcY/HA7/YEnwc2Knos27yE7E3b/l37gyf1Mz1F40uhao9IgmP02Jmn+m4yqk48Um+3lk+t3GY902
44LqVemQZwBn70T72iJjVZ6pdxj1eyidOXwg90c66LT1Jttg+2GF2IsmzqKA84MmeVrJfJseV1Cz
0Zd+ARKkDpwz13iBXm2W8QSOvuAEQaM60T8NF9vR+IhkgGiZK2w8G7D9b0K1O9wiufn39xFQSbmR
cGmH0/n1+PZIdPXtZKNq1rJF9uzy4WCNrMXyA1vMpj5pwfZ5H6sNkzvhf3YddXe36/5v2C/u2rDr
sebhLK5EikCFMeHLgvWQmQv8kTzFpmAr+02XfhpqVMdus8zEeAth9EaiVOPbsP/hlAfXFFOLyyO4
hC5WE6Zfgv03p6+Wxj5E57uULuxE4/2Sozel6/fs4OL8kWtgaUOiHJSYJyb4LroW8wxR5lymWoue
a97/5+U57GrLvoy8NJZdqy8zJxvnvle9nFI37ze5mcyv4jrKtH6O2Z5HriVWkF3ZKjG28zzi3KT9
OBc/v8KeWgyE2cCra4hFRpvezs0N7rNr+SFTx4/L6bg/3o3J7AuK3exmdzaugjqN3y3eGpQu2Rvz
De6CAZ7nSZRwmRVuhiZ54heFhnB1pSWLalm3KvgP3wGFewucKVV2vf/gbd70e2iysKdfHwIAmYRF
4tj+hUMxHfT9NSuytSGTXx+3+/H1hx3DOjM6aLDES7koRxY2VZlplui/uHy3+5qf6KrJYLu3Ovb0
ywk3c0O7omXXK4XoDvaw5f/e6fblVM26psHBxdUVyrKIM6OlVjdEbh4OQZioK/UwIkmRKpbn5QvP
bBLuF3T93JblY9IqsvDSO3FZr4/TBtEhV5C1C/ZI5/Eb0SkfXj9UJw8lpj65MZtLtYztYmwrb9zG
IE2VfSU2R9Uu/QpJ++qKgWSvnMRu3Sy1tbAMn2Be14o/HfvW+kHXdkFf4mM/XRKZfAuMHjTMyeol
KZnnKnJ7rxkb+QGX6mVgliPzGIv753BK2hG17v20friub/zpQCdf32aeuE6TazjCzUNcBwJ9wSoL
b61c9TGwcGFLygAxx4fLSyG3yaWfm+FbPrW8m9aEWfSM9iE5smX3lNpNXBK6HmWU5r3cRlgR0voB
0etVnBjzHURp1PVdIA2BrGhjZLqqMuBzqpksyz9VrAWsoW1ja15do2ZuZqVvRQpZPzbQvRbNaOZA
xwZ5WmVCI5J2zFvfnIm28QV2yq2qKmb7hLhNL46R7VD2bYzb4iZlD0xKfyAuj3CvdBn23CltnrK0
EyLQLAlMmjbWXdhyRCjzjAA4ucoOoL/8crJlkLHceCo2aVpPUWmiLFuxvWYFh7BXJiqR51lFKSO0
C/dY6nsEG+tizyn7Euvf1mVcbXGil0Mc91nq4toUa6kVcQ3N9ZA2m3J7vx7PQOX1KyKQ+D5GPxk1
v8lccIOR7d36zgY88ZrI6TVld5Z5HmN9ka/6MFqJlkNWVC49Ju701It9WDt4IcPkjjIoF6Mmhp5C
tCKyiInI2S9M66Eoz0IjEYj9PPb2riR9Vkeug6Zxn6lf6HRGEkBQgBxpXLVt0za1/mFWx9jS/jBX
Cs8AWEMI34Be7EKJsb6cK7qLKrS+3fgCI1Xui7uYsHWlxkiJeaB4Sv8qoiOkNTXY5VrpQDelwQG9
ExZpKVS0BcXltbjstcqXjqj7q6QrWovG7dLIWYzLZatH2UWMi7WMhEHiu43HIx4v3GzTmplfmCeB
gaEHRI7+dEsvgYTHUEUlxOwWHx5Ugb2TOosK54A0LmPBp6XnuAOeIIejiN3Q2Tj+TDMcraDO5ed7
6GkgbGvrJ0KvD2oMg/0XBgkPexKCexD4KMuAO2FgLQfs4W+cMT+dYA/We8D6Fk/fc+ylEbR/E+kQ
KITn9ghRr26bH7AOMnYRMb6Ro2up8by3NEd+WPNuVXhV3sXWcpzJyHK2DhfRk1KgMvrYNR4q6Swc
O9iOZ+xtseiLej28IpCNoQT7TR9HZwWhYju5mlGC3k0bjMFaBjhoyWzukvj229Fo0F1ZZz2IKUk/
nrmiky4hta1eShnThFlFCdOuJY2U2+4roG7xZplvbGJv98GFuin/tI/ZFcGbWwaxMfkSvLiw123B
m1UmrvzYPry3EPUtdVEmETEcmjnweXc+qo/WGtNOeiE+ZK3AUF7+SeysVG0Tc4C8dfeODMWujH3s
lfCsSmD3LKt0m5jJuT5kOngrQx/8R7+OwL4DPvHH4cRwDiJzmwVnB617FgBOGoBjdTEScFkRju6J
QBpQ/NGQl8URukhX6obLuorLkiDUZT7S2lO2fpipe6aK+8A+65OkGmljp4nJoXcgh7pYtH+Rq62R
/kDxSLHMBfTPWYz8k1mMMCA0D4OciKMfMjCZSkWUYnRUMEbFk7NdyILmAAFXUR73qmMdUkx6hNUq
B1E481GUV87W7PGMTPVKntEPaxWxN2BTR/NPs5UvQtI+AASszhoyOU+RCpcGFNBHAz/D+etw210e
9z9TR8Q/DvcB0KVnLzFvPfBgYACpFkFA2RQ8FISbUhNtTM3Hon9H24iSDLRkmrcsZF6m8jb2OnP1
Mh1+uJ7sQImJaWWig7nMP1vZyCrWC10QpJLzz5YglRt4RmIpKWW7OiYG/t9wnKu2jGlaF9hN03pZ
CU3d8gIttrxAFEJGc+0olLDy98wRES9rwJU32hA7QWckeoNLA5lNKYh9qptbFu2MsHscJifubiAk
38UdE5vbTJv9wrwSg2LtdVwTzQxbP/t0HS2HqeSk918WRTR/OT9ZEDBPRcrrGOtJg/kzdnIWjVoq
fPw7wvp5uFlXO3cdbuMWF06m0zpvmT45XqjFi/Uy8phwFgoZ6/OqjAXOhC05GypqHwArNaMwidny
sY+XNNflkz1lXxYL+3PSt+qjxnI8BNSBEFAbOgNZaBk2RdsBT0K4lDbjsHQztdHe+ZINv5y5B7ON
B4yHowtInxJZ0LqJ6Rglc5gI1/Z1zCCzYoLrA/0iVxC+KwX6JRjmYJmPuxdRsigRPytjMmEhhlVU
CJxKZjECX9ANdbw8rsfJaGQnCN+hQq6EpWm5v4xE9dICuYnJTnonOg3PNmTd4BrnJxmoq6LZVZ/N
Mv779U4zdizZv1ETVCI0+hvXD9xeJFBjucxnMn1YRSTC6ks3nCTddtHcElvIvEP3GofxBC1cwZyy
m5SDC/K5XDZnK9m1IT+50PPpyFOs3h8fL4lMd11G4zT2PYnNx2/OO/7EOVuZ7OI/+lhMSSqzz2jM
aByfLLjjnrJAG8KldRl1DwNjcE4mATtQCDOOvxay0/gyJHwBbznKJcFEI76BZMtDgGzzHKCyOZTx
th/Ph0Er2rUxqjqGnaMCrNPCuTfrXtlYyJZEf930MXW+AGxEV2aHbkrFReT0Zd+I3tIhE4dLGCUc
0bKTyDzOE2XCj2GlDG5eSiYfnVESMRlQw30sJjd33bXid7GhOP/OciiVM5CCuGFJ7IcwErdGQEDO
VAYvWcac3TViahNUahWU7UPbw9AMivZLiAz/sR0FfaP/aNwIgha85TseLDaHkWzj3S4FnNEslkzn
Rxg/Lu/D7QijdzI0LsILQv0ZqkDzxMs8qo5clu0swryL3ZH0sEuZ2+jkMF0jy3zih13bubfVOHwd
bzsWJUiaeXktmm+sCWzmBkBe0RCTDCWgJ4sDutyIAUdHb6fjfY8i7XkcoWQbipuFjEDmOh7uNf5j
nsVghP3PizevdyqxbkDUTfX2e9WWwL4QdCknKfgYDpB8bUygr/DnqRuqhG5mZSMIE5gLQo8yTqXO
4qG/XQk0ehSnuXRXdnLRSt7PRGjaELllL5ShX4JhX6/GZOOwHYjNyOiYGO7qPeANScwqdsi4emqA
dqrDSGsTRmiAI1DFiESkqb4C5qljNzkTmMXiIQqtmjKqXvwrMImoE9+t4Iwe4CqmvywacyPcvOpX
SLGlPH1kGA/Xy3OOIAGRqutY1IuzAgTN243/9aCevcKYIi83XeQUVe8zhCdp5JbVUzSwfbJGV0YH
sEWrqCMpEk/lJxNPTSziPI++teNEJYWoU4xs3D+KzrqNw9V4tXY+JJiVZZcQEBzf/d1R1GLxna5b
8Ix9TGUFJT1bzLKqCKvLZg8vAgwBIrpcW9XOmbZVaBwcMvan6AbpUFUWUAUc67hQXIhrU4q4brsY
clTiWlOWdRbFZTwXT9qiydN4M3aPWXIn0iO/o56yj0Ww7As7LzlVuiWraGS4SD4v1HBlqxg11vJ7
siTNqnPt6rfrRHgNI0o4ReEmcqMwbinir8QeZR9J0cmwwKZ0nSxf868fvIwkyY2vU65xMdWaNOmf
Trj8J1rjZMxC22PbdS67gecVR+tyP7ho8Xy+vs1Rk01edi/OxHeVF8F6FgJx2KL2otFXn0+ZNUwq
PVFGs+qoIhXwU70OdxYRzwzgu5oi5mIkyj6AzVdKl7jVxrUEyb25O2wyI9oVsaUN+zGs1k3Joiji
HdjrVRfTnzYB6YBHGxz/JhofvozXPYmJD2oYy5GvFMCmk4g/3lm2JSEKNhaFS7ChLqwCntYI3rCL
oyEBmARY8NHg5XM6DVZN1fLtn5wdmlTv84aA9apYzdSyFb70ZGqgi+Y9wtrqJCSqiiblVhxhLWpA
PFHjbU4Uk+GX3Ii4kbzlWXE5cLAq4GCVIcKnfw7L8ygOYzqP2px669VmsXy+lh2eZ4VwxWQCnNf3
sdd3ZoPRbGCKpTUb6jVgvA3Q5laKcWAOLJLFMP1Lzecm+GoVh68GYAWbWwGqXoSo8qXZ1tpqv25w
0SvhAAiF9jF8EWiFMzdVwYZd1cTI2aqi4/nyoDd6SzcGKGWlOhI4CRtLhtWF57+8z89GsP8jtZfA
WBX8ZU3NAzcNcyMmbasV6QTaJikwhiVKRAhj59rZKdnlBGCh7KOqWwGBbTG0iyg6yiWLXIqNPAjn
3Lvo6v76eEW79O/SEt6+rdeot/0J4cjqPOqABcAKI6oQmrqLOjHU6eMTOcOqKnRc7P3bRGO/lqQ3
vWEqZR0NB1pZSZHi3TdqsUMNZW/JlIHsPhFM7otXlW+IZEdLSUQ56PYqzCLGlhrsYLeuVgH+cIP9
8rl9Qco+aMtY4eqc0L/RXHhqUXnb4I51cQRf1bZVWVfgKFXcKxBhSzt9NbmFsop37JD5+62J+w09
abaXJkVVoE8amLsDh5JCmSKEbZEsu8ZA3ErG0Uhx5F2xqh9ih+5p8jaek2KjpCK+Rn2viliF5u9s
FFTXUV355FKlqzEr2Yaii8Wq38Yzd8pE5dqyKiT3DyPDpU9IWgpP3u4gyFk1MhPWsG5P5DRyYBZU
0YKo53rWhHnRZlHjPUDVJ9lTmLTcrbeN0cb/hstdS+C+77wZrWgFhnelVIAZzeRHVgBtJGsteHZy
vg7ITwxgoUhkqkyijbbfEP4/8K3bmGSnT3kWBwnUuZ8dWKSLpsKDye9psSzZVkz3fqpZ+zL+eJmG
6yENMVq5xqWSjwTZvrLB3Qiuj5cfuOo+mi/TQ6VbWU2mA/yVqzh4QIgiei3H/ca95Rp4y1UsHfls
xNBLIuSk2tQmth9QWVkWMQxttNKHiz5BQLIMgVyt9CvjfgmITqzKdRrRhiEEhw8wC1eKIiIBtVpX
WCXiLXX+jMgOddyNP1uwm0K1GI/kixZyo2XntllFmAvNslz/xJVnFSt8/3Q6HuboD1kfHNPSRy3z
Uk5CF3PCbBX45yhfEEEESzV+Ke+GhPLtdjECf9NqTloWmkxZZzoJZMnBTTsCl1MEYK95sLrDZkdR
uS7lMMpt/6yFdu3WS/+ivtesdX4XW2gXIxbZ/g5mmC3l9Mvv8JiG3nEvIMMd7wIs6e9FNB15Igf6
fhtNtMFVzBB9v69F4AFyr9soYX2Cx2pP5axqXPfU4faFIaB6UJy/dvEg+rpm9lMPYcFRWtzGEodf
rGDWbyv10YBZYl9LHMs6ajpOhGiL3g5IlXpZTXQvny7Dfz1G3xDF2n9b3r5rxEk7PzmE8iL8wWW4
3siKdEP24itxiNLNu+2DllIhO2at/r2DENqw6+KAht/ntf79PEewDxDU4ffcBDMiP8CpymVVhknW
TSzQmHdgX116X1kF7qWK3cv8LPI0dMCvw+mh9Tjn84hb9mJvdZoenKZPnyYvwff+PmUpXfh9Dr7P
N9wm2H/eb6CyBvx+E35fxL7PwPfZhvsvwPeFP78P07gAAHtY+0kd7MME4A+QW5M7toUCbKEUW+i0
KwAEXXiCljnQ8AnBE+RNmoQKQEKlICEPP1rtHwiqQrCQz6U9PcHO9j0B+/ACi8dxxd4hA4IlFwK3
1O4BkGKZBffgWOm38TqBbwT7+Ozqas+AdnJPO8LSX30P3i73byfGOq2+B0oir2NnXn0PxFfuxZfs
whcqmRkX8neLNyCLjhMp4Fo9S3ATXB7EuTISrN3MQv4wPSwy1vw9tGNqbyk2FEBvsk41i2aNUoDl
vLkvZglEDRlbaGTLIHB40po1TWjSOhg7xTXkXq/G0HljZxLsshNOiU9BuLTW8f4xXAJr/np8O54/
a9RLY5euIp8H88p45dH448ROdhYsmAjKN+D9BFEWvRlMbNdowzWetuR8r+H6Nu7mirr7laLf+x2P
HgFv703iAHQCSAks1ic8juFOhZsM6uPhbODMwje2sbYk7QDS8fsSIUSVdD5HM8LzZqOO0iRJVxDQ
eZvFnG+9aHUlpRLOd+PvVeCGJXkPxoMnMJdncw3LbB+qi4VQpNdqHdbNkYxV7GHOE1/GwQ4aieAr
zf8kQ5TRxalP4Vy3UroRar0DAf6Dl/hpulL+/yct5cQrFMsK1lBxziw11E74HfT5XPheBkN6Ika/
PZS+jdKvEzNX50vZsKM2tiP2zuMXra/Ux1b65CJz86PSA3U0Vvokm/q4ELfCKJtCrySlVjs0ATPF
TJ1fVMxajrD7Qpw3IDzLWJwEB902hduKMGCpy/e04dFEg59LZ6Ld+/Ht/WTT07e5Kg2s1sc0unxi
G/+YIb5LNh9cYi0MDorxuyD/9HLbP65Bo0KHfE/ime1Li2gPx+mcXfBfj+P1y812nV6qmgUpgRWF
rdGIQkEjJn2c0ir2Wce55sNGA4I7bdRo2/JMYFP+fe0gPZ1HhtttvIKNdEXUaIER6VQwsFnd2RMp
O6uPjQQ485tpRWhugXkkpLt5UXNjgKfqmKGjGRROGH9SYHk92LQ827wVIziIG46vtNEtOrWSbyEa
Ts9zC2ii4ZYWFfZhBYt5ZIQup8AtColn62Jc2Obtp5lUf5ouIGra1GFwugxvaNNTVqWIvPYcR5CP
uTay53iAjQXYJv8W3cWza6lC5XjDDys2nXH+MHuKEcwks1URNULGe0AJOymrSCJ4DWG8syHf5H6Q
QTRlAtYSgXYb13liVRd4drrs5YHcCkG+bhS5g8VdRpv8439cCjhs5lX9H3b2L53R5qoH4r/eiAls
pcfHlP+5/P6y9lKdyK68IT2wojPC2fbi9IgbIRnd7eFIUwttHZRo2wmWdwlcXp5t8rldS7B8cAtL
FQxY1iVLy7nfWqbvORTzMxyLdGOWZfpPzBXa/BM5/9HrP7I/XveG+zItyt4IqC6vSOG0MnoXlrdf
DTmqud9GgKUtKRQaKcjVSrRa51fjORn977zSAl1pJ4iBtl90+o8cP94cRnGx2x1WWI9yNKL2s1zV
x8Z/gyfMW7rDF5Q3az5pIuuS3TVcFwEF1nPJzHJd5Qb2iekhF8eWxQnRBS/T6cfbdE4sWUqiELCr
DURxGQ4H9iOZKMCPzCWHfLEcoarBj8wDBhKsUQrW4KbFjcoaUvSg5xJLVhy3iYnJDaJrbhJespNm
bKnYaReKnxt/JUjeJZPL1aSTzz5TiZ5J8K5sth/9EWKD+3TZDQdC95KrM96/jSPNln29O9Cw/U8R
9QmCbvlU3WZOLhCjCJXkA/zhqjN/sNlC4HZldIC7fk8cBauNtlVkw46Gn934uvfT9az1ZXI0JyW8
qHOOX4A64c/dZiZOLfqw6YtZH5yrrSiYaykGyd1W3IJANGz4BaIVIg20uqC/nv2cmIKaF0zdRiP2
aqNWxWbaqhBtyXU739Epuu4ybvZxPkJOqGrB3vQ3TZvWFZAFBMEym5VJ5XN/N6u8T6dDYulCiCLb
8Pnz9uQspAybINMyF4pDttAJfmk8kKekFRw6u6QQvCHGSkT3fDb+/ADqTB27yScTwMxwSUdT5pzm
0PheXT5jmzDw6h0tWfolA9hQdMnxdDrS+K9PGmO5IId6rZlWOH5YROTsfrFlG/SOqc/5PpE+a4TZ
wS5rU225zwzdpzDpuHFwt9mG9gSfMqGl8hIA5Jg/teEa5rZu7JNU/EeMBoS0Nrx02iefva5Dg6Tb
4DohI7EX2ySXsszarbrFNRdNqRcpEUX7Tt2batDxhZsui4HC1R5n7qVw2OIutJWgrfWFbhjaZVfp
pHDufKPITwlnL7SQcBb3KaMuip1rweEbjV0h9/10wIS7gORgJe+29DNOPsu3iIDF+xWca2jz3+df
wx8R1gdzDPLXnp/3cLy6uOmWJ55LjxKhnZX6WFYmpkT0I93jkiesbzbQoJdcCUHiI8bRLX9c7j8W
0Z9UdPlmF2yReEjQ94LKOXAUtaOkQKqRQJKMX2pW2awwEI3JeGHfa3b4y9H6lCElJ1YWVphH9yLF
hh66kbEL0cMtXG/uTusFKSXfEItlW6IV2vHRgwsnkkeHllWzVcVpkjql87ySFh0gFGExfEw0ctcF
qi1TIPIV5lWpPObK+kWvWXdbTCvGL1m8yIiGD7gL9yKGVEpTpqUXtv8yGSKstRCh6gDr/Trccwl5
y4mvKEV7syftUzSrR6q2qiT/cokgujA4gjkDMa5e+5mb8gBCSoqyrt/PMslHEFkBjyLcEAT7wPZd
KeKLTZ1w8YENAjMa5RbnSaoUaDW1axs3B74dB/6SUVaRc3FKr9qgRmskh4Rt19tOjpEVbWGM2fKJ
5wZqwwPcJsU12hGf5YZNIl+0F5pPdmtAug/y9SbLTD40imlV/RbbIdSkqZcu5Ra5WUXWAIME6s16
i+cWPsfid8wmNjbu5rErce8r/AWujv2YbpDZG+hwrEdpsleU5p1ui4cRPBOSFUKwcuh/ez4wUA4w
pSAYiVmg38JIUN1Iwq84y/iZuCZ0HAQXSBAw4oLVLyAiFo8nUTFYt0P715OsmKfx2edD6exOeAKc
Kfy9WXhEI6289loz44MX/fo2XJAGzz+RhPYBBGT4VSJT1fRasJcMkKttX5rgvqqu1gv+zsQrZBYh
OCsbRP9dNIKEcydwGhLqmsbCpPztKgtFcv/JeGDS0Ks+Ed3YuOey2kInG54VXrkIAnFkC/mRKAgk
fhI5PU+Rhd/nRUCIwGdYdhVpSvjAmRe8DMNvf99dbUlYlb14Gc4Ple02i3lTZqReO5+xo0xn12wQ
aY5ibd/q1iPOstYyg98/uQjw3VL8mfVhFv93PpzQROjlhHpmwVMVn4+bb/qpKitWWc1qO34JRQBz
EUGh2HDeFxttzk3U1wpoW6FB22bH2PbdsQ01jmdzRzQewHVbG24QEyIkAVvRZff5h9go2KR5k3Gi
3GI99zenqgzNnvVeT5Tu7GcMSxk4Dq7IJmh+EJwALNj4BYkF8jws1rfLnMbz2/39BpaplmVEGCNc
ZJP1youVy2KRSqK0Q8hr1H4NV5v4fy9FCKKwjj9eI6H5L42xujuM+9NwtdM9vmtP20v3y/fORyqo
F+gZUR6C7ONegud8t5Isa3e8M7A/iewsxI/1+o/JhGMmjlQmf0zaJPLHCnCyIn6yeuv9C5u+FN83
G7+X5rY8bJe+WfEmvmbIHDZ9TXn4ZT3TTPJLEbYNvizBBdfxCyq3XnAZf9M6fUFZ9Ms8S34pdb28
Wj1N3su8q+TDFnzSxn+l3Uo6tXIz4CfzGJSBqDV5mcoz9OnLzOIcVqXptI2TTgcO2EdlW54BcVM+
vZxsX+/ksd4koRYNPkRF1jYRTt+LBhnBMVvwk6JJjhThzcafFG16tmgN3mUea0OSgVY8tWx+U3yS
9fn7Kr5LTDn8ZRf/5Tr5pex2EjJl8ss2bLXTbpKqvNssTgBl+ss6fs4GkE4dJ50CvGMZ/kqJpT5/
0sSP1KSvsQofoP6EQubvs1jLkZRa5D0X8WO2W3+5efp+3ZOCarLSAkV0bVlJzG0byWTPIsE36cuX
/Vokk2+VK6JfDf9yvsma4S+7OPekeSCr4s+WfvBMvefkl22cidLyJc/iMg2wX1bEP+kABfVxCkjK
onmsCLfW6biZRZcW9FkX3yEQQ7ki27fqhuzzMimr4z8J9Kxoshfc41ZhlPVxOklrE9G1a/XlRk5U
xDzQ8NmzGmIB9v1m/3vzf++78XynyubxvP+X75F1qG23U0pF2LTq+MHlATZQsp8+GEOgLeEkWBH2
rbrRAtzfZlS/dPy1+vGlCvv1cbZQGvWXC/+9bxHue3N/f79STbdy87yDallB9Es7v9x40AgXHN/e
Ry3WyHvoY6cX169fvbg3j1TiLz+Ot4/hzhDd+/BGiYQd/b26VCku0jdY4qUu12k/3m5aCTp/7S+B
Z0b3/uvbuJ+4hcfX8bSzVKFvog1fs/PLmEfYnSdIh5l+jd/Niy5BzIHu9aCv08ZIaiGJf05/ug5v
TF3/11//4tlTw/owjXgWEdLr9nhxg7kNjScWSJDpfdpZAaN9X4aEYlXf4/7a7fbvj/OXm/5lE/5y
Ll72zg30LwMd4q7Wg/HDdv4CvJXnSHyfN/cpb/QH8YcXI+D548dVP/PcYboPsNb8mesN7plTP39Z
xM5vCer0OtOSztt1IB3yLuBQDjKeze3dLsN+TPOoP5GYAcaLsXza3cePC0+4VO+kCHmkDd5Bf4Eq
JhxGe5fUs4VyKaqIrdR3eJ05yZzcQpZJ1qqXWXQxNqKVfnmcj3uzEf3gZbgJcXVOUx3Gy/1dv4E+
JhRurgIO/nQuXo0trFCooXvPxa/6Xpr8qRNm//yhJeP5+y6kvt4NSLFzZu6GC3TCz/y3ov8m/3Yg
d5Y3BBlkfoEsfDzxAn4i9QCeoGxU5bBoKM8BuigSlJCFiu5lOMzU8LgewbWuNEQvLZ6z7AJzZsLQ
pYNfSPhf7k72j+sNmS5lrd6H3geRP/RUxZ1nypUw1pkgj8nCw/3Als70uO7H5eg6XemcaH59t/9x
1X+/jEmvw/g6mP/MKkD9qvNQAzUuITZNX46u+wmbmtSXkoouz9wu3/3PuhHdht1+56kKx/N5vP77
P//6F/5o+Tc0LolshFnCr3Ju/vvbZdxTxtF1F7qBlaqnpFSw0v5xIyiJsQ3BGpnfjRyHPK9BRq5C
3bVXncvnCZ+k9jYcfyKHW4t9q+WwtdcQ/L33+Y4005zHJ3487mxpgYubS8GpuSHDKlxprhrCqb2C
XP3ur8PX4ba/Hi/WUNEvyidGhXVHmV7a63BywydR96LaewM68ditmCd3sho8XRk7j+rh194N5C85
VeGwO+LpqD6FIQyzeKTkKCXoDYfpe5mTUOUqbFOAvXg2Krj8oslwvKD2ZqZrEOEhLhQKAbsr8aUb
RUITTGg0jmrh116a8zpSkFCO2IonBnrPPgw/oNL+lOJp2TzJugwC29/GlzceFczrFgfwvW+xKdqT
Xc5vv5gX++U6fftlOF3eh1+M/zOpzQ55pTwPd2KV3I/9y96Nwd1//Pji+lcZgiD5C7blu2MKaOiM
JbnsgmFrbhgpdbEDw5EoKdSIppuyQ4ix7M671BH7eY55SRkp8/8t3VzfXna/XsY3chCORp8wdukG
7smvUnN82h+NTjYX870a5qFaD7CfTry9N/vMfzTeHTIC16fY7VSiD6koMgcTszllLFqzelm2nMJB
oTccovUdVQlS2jTO5zi+UntCahyO9j8naLlHbUVS/LnrH+MzaGyS7Qm5qX8iLS0eyjXgcNCw0/SN
BzFZctlRx1h/03hRQ9miJS55jXnWaB1G9ctvxOXbKsfnYxsZ8OUojHh9Nc+4wRzVhbCZyYbD9MIY
mS/m7NP59AOQlNieD1cttOGJYmFjvfMh07mQLD7383YdfriOgkZcORGzRbrMSBRezyclXoevLAaG
W4IuKn88buyWC9nkvNtBGanLv97HuNaOSZjb/qqtB/l+S79/4bI90/yMNZubuOiULgQJRUpzB6f8
3L2ah/cNo0W3bLcx232XRqjOwolboiI6z0tVyOxOk/Hixq8uqjB7p7rkr2I0ZLuL7mmCtduUYMM1
A4HZsXz6zIvEyo4sL9aE6tlpI6X6CxWekFeDc6tZ/dheuooOtRezlzuRyicZp+9jfbTtt589Wrlq
DS656PZ4uQ3GwYd6Qwj+jIjW/FmpgoabZHmjQRtDwdKmCCmljSok3x74oAsKz6ccx5vblvK96+K4
DaWnY8XD6yKZDMFOFxUaamlRyHSu2nZ1S5G70S+iDgVVN49t/GLFyzI2mNb849GwH8UxfuLW0AcQ
JmJKymJC8HC8XU7D3nxN0RXXecScXCcioWmc8Hm+rdNwPhj2uyDW9W9Op3YFPOPHy5gyEkSPfI7C
1chQtUIgrZFbuahtd+lGR3M8e/pqfMXDNNpGT3aQm05Ovc5nywy4HU+VNqYnNrbaQlw3U1j5rHrc
JM7N5kcuLEmJl55efh33d9al5FZzRIDrZM5kHX3VhvEydQmbdsFFr8nCWjXn84RCBZY6KuEjUdsD
59tYv8MIK0Lq65sRaqFeyjdYfVH/UN6GNRtu172+imBoP3b2SRVirmvKmBKcByW7g+zerkfgMAqd
PI8coKuwbYHn/jgJGzhrYyLWd4y+Tifq1H076vdRC5Ol9PrcPvD9eAoMfbATsYwIfcU0iDHQQGSG
BaYwV7ha0tVOPeuO200XKILH2sXz9dpmFzDbZhOvFHtjteIkFVkAt4dZ2MUebvpk4bwVs5MbDjY0
InrB4o5uSRcfeYx0HJ9jMdvXgZidB5HP7wQGR/PDtLoMlGYUgm8w/wjLv1pGjtokoV3t6Pw/Hx9X
39mfiO6lLf5Tn3Rlxy3cyMrdu1Bh2kcU3qtNZPTLSMvd63A8Pa7ISxWGp0/mhf7l8XyYvlHQ6/gb
MiOkw1tyWD5wo73jzH704lWn3GhBSyUjYVytkA1+7s0VcunO520TI+K6mOFjrYFF7S5TJnaHefkb
5ckcOQ/nPc8z1hlS6GXZuHimIx4Ggj3JpojF7laPZLSLdSp1kVNEx+M8xyHBawgG87Akw5S32+tg
u97YNBmZKzwvPKGpSqHBPfjaOcmkNhMechZa3qVilXGfIMtItCU4oY1vXNgqFmRhH+2zzk8noq4e
6mCJdQ6a3493sELbhCsUUHHpG1nd8zx1/jqLntnhQI/ViWCtz3wHdHieXPWcbgbKRdidK5YolHdT
PxFCztsYd9j5NcOe8si7w+O6iJqNsqGoghCH8+k4Vip1s2tcQpawzne9f8OKYlxVJ+l0vF7NMa1Z
R4zzeoTeWiNI3pfL8YV92jX3srUql5jqYVryEbzW+XE68dsmTilGZokbC6iDSBSqEEGldtZGJs29
TYZeFkqoJc/hQGNXo8oST5/1sQSH81LnoUvQWxVKNehGwQMEaCiKqzAlsUQmOc639DKQzINRXE9g
6eaA49Qx1ndWh03yg6FFLIPK0Eionr0i6Ez0fRsTgwejOK/Tj4WLvHuj36zIqZDqqEvphxtzu1w0
GY7NerncN0uGx+sNo9XfDQPxKKzrqBtfTR3LygXu532aqAcfeJ8ydjkB31zZxDD/8no1zsnLK9Oi
zkWCBYj88irbFphn8eMG0Mw/9jFcdH0QNR6vIwW+aFziSKOnXncvD6p9BgQeDcSR9bBcoWGbb2lT
uy9Deeam2JsLPE3TxdqKup3uSaLpeeRrQFrT5cfuw5g01x+7xw15MLWgdQoalTJvQLc/9+XhMamP
i6FTIFRbYaJaWJGMjT9uNpUIBpDyIsIFof/v+vncJ5Zk3jCn3Nk9FQkzqlFEBthudh6HHQ3lZrPN
w/N42a/H/ZjIl851fLxJSty0delntFFfji0WSl/E+HFx2RAxN3mMCg/X4W23Rc72YoZlTnw8OypM
fmxnGZ7dfxmvL9NwBbFkTz4UxWnqeGRhq/PpL5VMWpdB4vRXxiwP3qMKw1nNNrPK/gev13FEdrt0
Wv1c+kDm2fGom3O4Iphux7RvlXnj98vpuDc2+I/PiL62jxmdlgNsR4/TD5E6cO+1edSdqGK2KISO
k0QLQfEA091wuZBVY51SB9/WSSFq1SxX/jzRDTJaLkOlnZtIZbOrRvB/TC+EurPRmrm7xKs5tpiq
iQbqcYaafyGneKiodTb+RXydm75Q7RfqXDsHtueM622ROMXhXxhhaZj927/QHOt/+Ri+/y9OHn0d
rz/+QtyrRcu62VVsXZK2+0+/ur3Knz+m6f5uruHfQIuOVkAk2gCP6ZiNM1vkqlHbe1pc3dEcfgt7
EriACU2/Poxuid3rcDrRy+uxwFnYt0FJIN2UYyly+oxNOx5mjI6ScuMF5lRTOA/LbYabXhob0AgW
s/yf6er+ZPjwH1rQvZUZnXnEn90fPaIzS914Pnt9RuXd9LV6f/8iSOx2txh0zOTq5c82UfiGbg22
Tb8bo3ngPvMfR/VgC/SD1jR7cR6jW4f7CvN1H8/m+imctsSm9OPl/ikFzHmmBBrfjh5v0UyU8c4W
OMRysnnWLS/kUg366cQtefnv1lIDGXyKOR8cdjK4vr0M0A6yxOyJhfxwNwnB/axhTR7zO48R/jqH
FdW37itxoSIPsDeW3Z3R7/fxevahRF2kWuYQrCb9Tt7d23hnjvgjpcmWnqHWf1OvufHsxq51G2c3
45f+/D4cpm+AzQTj9usHk3vT9+LJRwSynvZC5PNPDe7eSn+pDXDyMx2exuGKJEYvucC7w893YlzT
L2NiJ0JeF0tOeBb9t79PhgX+fP67ZVZ9hHQrcvBtkDJZU6azIpKU2WeeMrm1ehU+vc1P01XTVVFb
JPj4hVdxjGQsFx3wZxtFuO55HY6NIAbMOiFhZTNJpC5nPrrperMKKaJ18Qn+bJZH2nh1Fgx5E2qR
4PrnbnBlkyXfcY72hwPd3EJ+3Pn2uxfmBQNkg3ck1c19rSg6YA75uOnCSkoXWikPl7Jp/L8Yu/iP
UEhJ48Jr8EXNDofDXCF6uw9XGwMgtavfvdDgNY+1jZL+8gtbqF9oF9lNdPWeq87LuuIrY8Qxm05z
wAmYFZ48Ke7kgnc21zebBODCV0ZhplCUc8aw/SWEsKjrtTQ4YxIb/anKIsZobi+cICQq1IDZrYyr
h4JuOcdi3SbWySv/xgJYNMu3RXgvCbbFold3VvUxFWc2wd/9g7bzB6p+/9NkVO7hHzoax5oaK9Xb
JCxdoGVyIFJOCYZd8CSsCZYY/5p8drcv4zfdMzGEIwSkR5TMmyAHiU6i81AnLtd7c8tzkblklOWw
nzsMXB5pkyLPyiZUwIHBfvtyHIx7TM7TPH8arCT0r6/ce6VUiA3RAfnlKZHQbq6XpVMURv49PkZQ
T26J2Z/DjpEOrKtF8nkwIlJBTQ84w7+48RrAc1ehKdqopqjjL303XmSI4kS3kjchjmc6GoUfddXa
bjGRZqOb1YT7F11R+KvieWSVawp7n+hs/+Mff9lxUQwQiA3wZ82ZrhybGNIOkXAbeQBM8eTuGUVh
xNpjf9eCdq3MXYVjVBYnjRyb/Wn4QFbaEksL5+XMF8tuJ0b7WZOqBvb+cN3Tgc7U+dY8GkkxPZzR
xXxFTzoWcflh1PHOkOJjRA5+HrJGF1F/NXjtHKhixVJJkqBck73yLqJUnVDkjBudl5KHIM/eSuRM
VA4ou9XrM9jf7YSQZIRPYACwtBy/2xGy2NldiiPaoDjqyRNPOBSdfNCa4YF1SB2AFopYHCEwIDho
9LO5//+GhiJa/dEDB2K2Qcjo15GFrcCkR5chpuEwlp3mozOMkGpU8No9u36W5P/19LgC+hHL9NRf
KK5HHKbuB1AmpQhlVfRH8/TaiUiLMB+KvvaT3lZS4O00vQynP0CZnXUdkNmxINBb4vW73h+Qgvah
B/MxDrfH1Rmjh3Eyq13ej/ufqUOIbrXVoWFTxsgJS7sF8sNjUxZp9V+P4UDmyP6nx/Xr+M8pVpxv
5bd4fj+Rjb1pxx084sxWIWKvQ54mW4dcHBABusELID2qTLy2ZgBMIspW++fvuS9YJpXA+4NqgxBf
5EUTM2WLw784b/xncsb/Tjmef5DZpycOooGoOXL9y1tS5vSr0ECTihmlluxlaI39zjZ0q8b7P5OK
P5NOoj8X/fRwmgUpxa2p2/qYUtm5jBQ/+VHLIR1ZAtHa9U0siBWNhTJ5/4RUoQeUt0ErF28h/+RC
/Un72J+PwlguN78ke+Zw+h65wi2IG8/x1M26rK87oIO83DcHG683oGCF5Z83NuAXGKMcJP+7syq/
kmhMXlaZAUEyG6hp2zQT4T6xDnMKl6E4gOht9zAGV8cGs/kfrtfhB7B3/d4kLs+/Aof7tr9CDay3
WQNYQZwwKUqg7gicZMEJ94m9MSA3hYVTM5np+QmHd4AWYFPGspRP6SQc6ZM2LtFb3lSh9UxBGrKU
R2ToZLEAy1MO8hcyMf4565o/3H6GuRcjnksQMrHi0FvftwvBpv46GtMeRGGETn4WhlYdPwAp5DXI
us1RUarof3zwsApgoFR5YFyE4m9b8Cb3coZ0TahqPC29jO/D1+Oka+SurWNBzVWALClb+izm9c58
QhL0ZbiNyFM1PFIBM0UEJbf7FXXUYwXGasLf7KQtxtjyto8JKl0uNSAKs7CtzrCSBJmas6dIovWT
dIHWxYJloRNfASc+CxV39xRpWTJ31hAAFJyD3IxIj2HbthQAEt8YY37i8ZVSO1ohGftGVSx0uQ4e
zlEDmOJvs9B0m8s7iH/oWsnDB45VDqTTkmyZGfJvegeXVlRTrrbiklUMfThRp4+TcYvfQMhHeg7F
Kv74i/Gof2GSG85vJxQ4alH4Ox57hKGUXpqPbAI2+ZMsh0+Viwyv74cSckELuKAEXGAlFeetU+lJ
kRsTcBd64+H6eWM/L0KISUR+fsqKMvtrw4drZ2dtwRkkvXsBonjmcmM2YTSWEeF1zJ6+eHAAuI8W
QB3EfXgzIvVcYi+kWvI6wlfn/XRl8FSCs0poNrnikRCpsiPM//GM0yFZnwGlJ1PNP9NMa66f0c3M
LkYAzil2Fann1BvmAukhkOUht+XAiW2Bp+5t3cVzIfbXVajMzfAfoVEw/nY04udGtflGLjGd6bqj
Bl6stSpu49VYqsff4Jv1wpgj/7HJFEolyfB/TEfw+DIX5u9qeXW2xGzIH9N6nlUgWU14/r/rgPRW
9OdgyuE/+ll4ILToz5SJ0IWJt+BJ2YbwF+lcs8REQdU81PpVGkeTykG10YzN4lZLV9E670BwVZ/e
3RLy0PcnlLAv7fLRv9vjQqXx44Ga6AJmFrF6WfYWg7Ry7RtCKlvDpwLWQdSvYhNXd66ymMseSpsS
SJsepKmEbufcZlpl+M1QkrLLYzGXj+lwfAXUmtdAotNd8IY2qrFeOEWUAOrD1E3iPMLyeQ6s8JU8
+Z7A9WxAnN5ySxqZ2wtUnEj+GjlznHfy73/UJQrCQKxnaeI+ga0soLStBHw3PBBXTpi6Ih5sG4kG
r29Jx3ZGQdZQL9DZIp/hEqTf3rnggHDV1DrhK5BNMmbkE3+P8/403Tz8qADx1jImhySOGkZhqg4A
UK1gTaNpBSRT4nFt1S7fxdyvIWmfipyj7ApAuog6b+8gPC0XgSCxEaAjZ4tQJ+g2VJHPUAhrtwFp
U4SWaYsz6iAyWICnsr18XLlbIssvjJpnPM3CUh7Np9tZfkdk2TrAudeBBDPnjQH11wHdTPYZv1MI
x/IWnM6eBYjNiySovkADQorMnNYjPZKvvoN2bZ83W7BCiLL7XEILSKvXjWKrHdxUF91WEzmeflGh
DJe4GeOCID2prGUv8BK9t6+nD1BDYryWflOMHUuIXkadLRuUM5P7gJ9Mvc8KXWfxKmYOSM+Os2/s
3jmf1CY8oKYxJn8JUIYsmTfnX6oVYLFNILt0hdHLV/DMP1z3ZZPplkUR+yhmpALJ3oB4/xzPsxds
QY4HnEP1/VaiAe7Z0t2AUVna+YboAgAw3NkFXDF5KreUx1w/W505v9d0Nv9IsYjdaTRmgxELhFoy
Ft/xfAAU1ohgLVXVOu9hbT6AYEBVgHitK8+b23zt7sZ6vNLg6+l+P8ECkhXON7jQFx1BJdEweoIh
RImlATFCWmWUb9dw4rYoHOIkfL15NBS8MVjfC14QzXxDuBdGsQi9+RyMOyYtNhEuewpE4+pyfqYi
Fq/94xxs+5mVIgc0zD2M970ue4MYP69aKf7hfrjsfsWxmjwE94YovjdYydfJWqAnO4TDPIbv387Y
9a5LEDFeXO9tSNNeciZFxnLXH3TN3MD3rqLJGGmfwaRoLkHOT76FLSxHYTiBR36u0fSxWBRlEbz7
jGPwAoHVPYZHd8JjEwjC9W2CXJ0MVz/dhqGvpZ8fNxsb9LCb4P685dkuyQK7JHBXZJ1JF1ZlTKRY
JwFFe4xgaYHVEk8upZFcMnOQc3PgYHfkKLuuMlvqtguEHBAiY3siQrBazUNjc70aLZW7N4buyi5R
y1N33OIAlk80wI8RsXoroAD597J0vuLGTVUdB5sm4l0CWkTx41Y2ELxMVHxGWJK5mTYqVfG8zbne
vlWAlCkMZRsYDYUW7d8YYZQJDdYEdTQ8mIoKlhshKdZAxZUdmUi95RT3zOfAJzVxoYol8kE34VzW
9QsxFaWrpDqWZOOxL/yf2wEw15F7Z+mvRh5EbhuK5IyfZuTEXGfkoIoce6KWGsP5wIk6qjbRtE3l
20HyikaMVbYkKxxMczduvzGt/x/a/q3JkeVGE0V/EcfifnnslkYzOqdv09Kc2S9tskgyMjNUTAbF
IKuyltn+78cBuIfDg3B4ZEmzbU/1WqUVoF/guOODlWFg9N2+R3wWWmTlSXIUUSRYWPN/iX9PVhp+
j3ON69zn6nCYB0Ecvfy0IDYRd7Ly7SJIiwXSaWvQWHaN40nTXjL/vc+uPS7mGAjERGv+pN3402AB
KKxEtI4QxSFgVMerg1SObyj35DAQYRGKzgejU8xCDkbF3KaX+PeN5yBWdEAH4kXjx3walVOpasaG
PaJkuWUAn9hFrENUD1GsYlwSO2OWeKQlgbeMZ7WkngZ5+7SxwiOHnRfY1wXCPEOsGq7y/XJ0sHBI
ra1DxChV3N6qPCYK7aCBEXTuNIzeUjB9aPeNP0uPyOketDGzlJMrPXdjYqfwEQaHqQNQSYjgBkoz
fqU2R0RbgOhUoH4LnLDhpYHCnn14ErQbhJ203G4FyXJ4XAbzF0dEyb9Yl1JZHxMqNHLcokNdTobr
0bZwwx6u0whe+Gk6Kjxs22GJX3wK8XGZqJkW1fBt0Vk3ZxeAHaCunWojNWGz4/7N5uwUsZ6sDnjC
qIoRAPYfVyQFekNhEaYxwNcrqzLYKD6ug7Fi3iAqb3NN8ZUVXjazxiTgOLNNJ8/U116xIwOXOO8q
9lqMRxErHKx8eSb9frv+vvk22I9GwB8teBR2WoO7L0o84bUpt+NVJla9dqIIJhNlWpaHyoX+NBi6
W6ApD3dIQt41hekXBJVOtvwQlsLGJ6AEvKNhcI9NqK28hUkKi09k8PSAhjFV7b8VFjbKzql4e6mb
WlHI3N6gEOcu6thdoCy6YXcCTRhts4usC2i9vQx1XefKumtJPu4nrx9K6Ym3q9TcfeCppffsyOkR
EP2fiB1J2nW6HH7MMDBM4TNmKxZo1pSNN2YwGr1T2eTMqvIJb0/GBYwN4z/iyHCV75YmUt40F+0Z
tXqm8qEfa+11vrIabsKf//GB09WuykkxK40BCjgBTgLiYeSk4sJUfmQkSW+4utJOoMOiFlv7plfX
Vx6AhF4HmDZVsBwP4qubWLadlISvH49ihdXtcYFI9+H1PLwpJ5wx6b+6ndTkgRMGTkaKXk7zzWIh
KjffZ+xs1sjlKobpkNF6G5WjaUr2OEgobU384TItszmh63T0WI2KNGaPGVpJg+ibXiJV+Yw1nbKf
A0aPk0bsQGohYZjU7Kl6p9McC3q7f1a/zRnT+fI9tCqtsNj5zEtmDHpYoPWZ3zVhYysAvKMSGlbD
GSJpAwaEL9dZ200XOkwZW0QyE1V59BZiER/cIwpgMd0g3RMrhK/8uLkt1xNqvBFK8+2uughVIXGU
dZCMC/uetMttg6Fl8wzZLOCI4vdrGCTBHHW4ltK9OkBJsfPr48YXexrVyhD79Vxl/j9FIPhT7jvf
Fkxg1lgoergC2pOek6h8g/nWsfJl1U507hfBjT83VhLz7L140H7LnHAeUSD0yiNC0Vv3qVJjEF+m
O9b9GhmWcGMKJi3YcGYosf1nXMafHi+/VxfBwhwWh6VlzwTwJFLMkTNJXOAfzBg+PIdcDpMWg6p5
WMuPyXTDJw82mKQPtqx8f8RWHu9iWsVezbZqhwfd6NDWtDlOFFLedsmiMeuoo52aImPRNozr5N6n
okcDCYZJedNMvparbfEFuzvxqCuJ/OvjgnFNsOmM4LsQgl7CYKiaUB1VqxUMLAWt0MlYVc4MsgLN
YRtRXLP9ZmEWRtu657qnX7I1eRCVQL8ac+HjccbSDrJs/gktmwxjY/+UcHc7f3wsZe2zBPisbA5u
Gk//pJqjeVGxyOy6WrLerLhahc6gv6qOOSXUxrLayMt9UE1+vop8vUcbbcNnrWCqVr6fh540y7Eu
LmullVNVHrVs++RYhCvx6JiJxcLKsfCp6yA07gyUhSbiK32oYy1+vpUlVxB48H9uw4eyv5Yp6poH
NEcs9ffKXjnjQjIUcAhDXDgoJx6x00lUfozLQkWcy6KaUhmzg+CkHNsBvq+zLd+H86txY+bhzmWV
wspeliPePzfPVrmAJz6CybsrhcL4y5e6yItUFlZuY3+FncdwP0K6+M0B6C9RJBviBhbuh3L50oW8
jKtuI2YJnmQBKp/9dCG7lc9tFBJRtbUwRB8aZ7ljTmuN7QkjMjYAfyu3IQh6wQTQbFxs5PXAVYD7
VJ51xwIkawO6nMmIVBuSRu8kjoqFD6wPsBjP9DgZ4wFzyZPGsQW7UNDfpe1X8DZDwiViEUdWMu4D
OGyWnXJauSQEvT76SbvTWatjkhQ7s1rBwfNbOvx4H0Erg5x4uyhP0KLS2yymLwPyQVW4VcXAY2YV
TX3Jk4JGj3HaKn9LEjRQ7ubvPrkRSI5sj5M2vIf8h16S1PbokCX4YSr32YZxg1ZemzFipldI0UA7
2sdw+bkjV9OFgadGiMoVWsSemfC+immjbj8GnKVziU5Iqzyaw9YX3y7lAJPDo723lW+U9pkMN2vN
Pl4CHo0Pm6jWOi+fjGmDYcyQJifrIR0fZMYYZHgcs+JDpFQYcNN8/o6m8jKhrPmpEGSvssLodtVX
QQBHD9qwGBi44n22P0eQCrbbCnNnSdCfrad/uRrj27OrcoEsLASvPc8zHg81xABGTPUCWS6M2Wru
iLAuwNgN4K7a+AVz6ZXD8xtsMZvtQ8ZblavcYBdaIPtuYC1lOv/0xUynpDPsj6HHt2r+rAKz9X//
+Q+HvFFWywIYvnBoK3qU7zMWvVgfIynu5ToejcA6Ktbaxlpuvsatevomz2puq6Cx4uqnn6p+VstA
0f2dFIjyGVRjHN6mz+r1uyKOMykJrGk2nQEs7AgxQAElU1YWQpfQhP7g0WeqdgWfe5ZntKCsvVDB
nkp4ZJKM5tUMCbu3DmPYDRcQ29tTggS95G1apUwxAhURuPJNodsqG3dhKnRz5XsuySb1Ha4RM0tZ
BpO+rNHa/Lz5LxeMVH6m2IUJODQ0rOrceM37vImMBbTRNyk355Kawlp5iEMikq2Hsy8IpsS+GqkM
xLg3QUyWLFEl/8u8CQj2VdxAftuftGUpdmbzP5bx/0Cz6n+M8ZpcYuI6yIHkvXBETj25YsOXh2ZB
MV++geRoY/PaT3GcZOI3Y4srsKbHDWletE7Vyg8z8nVE++Kfy/e3pFZk5j6WHtvKY7o4hiWuXFkl
Za6cRDV3rouvdmPrFrwM07zX44QRU6osUdi4kOKu5k29GUGacu+eykV6qbjl7Tb+JFjkxKGyygOU
YuVTtd06qVXhlmybTCMy/2d8+R//YlFD//t3JcHU85fty37WxhntRJgcBsO6D2IMRi29HdZs+nR5
VUpmWDicTb3bbSHm/BSwtSMvNvYvStDHlYYCXx4fWg6DFzbXvqKU9oXoj9oUBzLD/MmwViYv5/Al
mv/7gRCNasNJ5QdmPUms24SGiaIM6tDbzBVrJs4hLH7AoVf3W5VqXiVnoqEE+iXcv4D+xEpxNACC
XmnXXxvS4w1LpdiEZl8lNSr9zhXz/PvVDuPAEJ2yJm1A3dqR4HpyUp0JvtkFPKMuC9yTtRFXb7rI
WUM60xXbJe1puejrTFoQLEQZCtv6JA59mW/BGd4nKJRKzZTs5fmUCqZlYioBbyVCDNhMB6b9t/kC
dT1GgZx/nwZnaTYw6hYVifeTPC4+CabcXyfPPjML/A9G7T+G6Ratomi9x2vPj5XkbTB5ksCprh8g
0jJDuPzLrDRedQFoKjzjsO9YwnjWoYJ6hh5eF2g7tJti8rXV1pI/XGaLLxjvea2UJmfW9QSF0UbI
AktgYuLDsEe03rX1BfgkfLrt5J7zbMS2oXNKTfnqez7UEv/otpMfdkyf6/issCcETjJx9sKSuvLB
bRP3ZXyYy3RhmZPazJqXimAHQ9tIvN8UVuA4Ozhs3EcBd416yEutbREWwKBg3sfp7d0IQBrLhurr
NC1XYz0cXs/jZ3yV7A2h0s+aJ8Ca4XRSgR5tjZcdRLSFMD4+bhDGUwHpe7ZV5uYH6DSH23zXJ1kx
ZN3Gd5M8TY6C+eNQ8nCfXjSwCAac+Qx64+OTx59ojSSxg12uIYLJsY6S+MLYpa7TYKxplHmAg6OP
6qsL6fkx3OePCTPMuj2UM47CARVyc6XST9kpoGR+9OcufFeOXPkk30LxvnOkZc/g6bCeuBTQ7RT0
LYZ89QxZSXE5esJ0Y6kpSeywZTCvL00R7OtWQWPbe0IcRty34AdQzgcNItSFfSNjwOSW8sRITSag
IOFTBTiAv6cWnj9e7vOfxvOr0guriYRgCMcfzFmlRnBUSt+8L9+3nfiJXm0+DQpLioo6acrAYtVh
sF66NBg2DS3TEAfzfz0Mh8VRpPpWfNUrh6YeMh9/Um1nFDERZUdKJOnVmTJWIoRR11VfninjLREi
5jZfQdeMFp84VD+H412bRZNL8NQ4fU5ztrq2fDIYbfDrSnBdFmsUv31cjsMDbIfT/FH6xmCReI6D
dykEjY2f1VrpgYU14wmwAxfl22z9lg174UvIdy2h8Etg4LjLYuzg//WY79oSbMpfWUK3awmVJ+Of
bxyAij7Kw6Nr6GKOj+U+f6x9q/jpaTReAZSrLePjNEOSIwKiDzdcW4w2rHRi8Z/TfMU2gdebIY+5
G3M7i9nj8REtAkd6dooOFv16YBpjUVowGsQ/sROEp8vhNBor4x3MavwRZZ3FSpfxjhFOtqTVWGgu
fr22m2jbrsNt2/INs6rH1R3n4W+P8aEsyU6GwSV5ZeOOP4qFSb+fs29RrNHXv//3f/0jJJXQjrPF
7SCAf58++NZT9CaduzBL5r8T5X/7k7Ky0p+Mb2QJjsTNXF6Jp0ATiHDlF2ifHj3/BaaH4SfGLl7c
/EMrTG9yFXW57jhHtALm5azfQjkJIu/HKZSegrda3CpgZdFPXTo3D6JS/FMH/R51pMuVh5AMB4Na
90A4ibFzRQqNp8BRRJ7P0qg2bSWd35DvU/NfG1ZcHi9YUnGgWbzaomq/KCy4sW0l7GIvoOMIKhgM
POWaK39JNhNhhZ8xdczzx2+yTAanAtu2tv4TdsD7wFuW5conrf/Eu1xZViifdP4Ta+PZFwgcYGUz
/cvBXo5IrFgnuedd6Ct8wn9OxgD+48c1zw+W5H/7jNIqVloM99ethLwFANSMSZdiRbQiGnnyBIs1
Orn9VWEHxY4dlNKvP9PaQalSz+IOkwPiW+rkQ6jiX9TrF8AVefBrRvtpCOvFiifof7FUubBYR3I+
f1HGvxCP5NMcbfo0/fbwXeX2x2qKKNqSbYXP7XBCT4GOFC/W/Xr0x/Pt2aJfcB4/X+ZP/AD8KnCJ
0Y6BspoFYYIxhaX27YLv2VRMrK7GXlY00S9KrxHwICv1jZS2OdlJNoasiCW3tnIQXG/DKOjfQxts
lFbVSorE+CE3gNY8Hj6gVx0BjocrBOytU0HNYT+ivj2G1Jie9ZZFjO9xY/4LZlRmWR/9whV2hrYU
HcXL43432ufb+PNtvMQPgF2Yr5ExvECHh5mP8aajdeA1duE12hdUFNEvCqaB/ZsDTjz8uA1Xqp62
52/8hIncuzi9OmN2Df5h15DX8fPrQktm3xrirFkxuwQUW24rxGOyB2+9lh4ANQsezNVBBhJqhccf
B/tM45dQxi5zvp2mC04QnB/X+PebKykYOw3Gkf75MT+Wg7aCqghXYA2APM7CRSG9wCyPS4ycHbKP
JWR5/GHl4iu/GPMbky3nxwfECPibN55XvB4aBR17eZjW6l2DGuEFL8fbDP7aLU6hkazo6QIp7MPx
fTqfbuMlIW4DK3a9cKIAVXqQD/9mjRXCjpuW+IL8A2KlpcBzoArW2RC0s8N0Hz/i62KXyjJosKmD
JRhnwj6Uabbf7TxDO/Wnsv6SPSSvV58e0mmEciL8x+R72vBmzd4TxlZJxsa/b6VjiJkVKAzEC83y
Lv5+cknw0pu1+zP62wa2ia/ir9f/OutVzPL4evMmPHOrsvK4uMtryUJAkQtWR3xtTMF414KxujNQ
Tj8vw8cE0ZKfcVbPmQkBTGbrHY0RFr+aThKONmU2GpfV8MPH8Gkzg/Gn4feP8ra0vStZEf/popdU
5bthwt9mTFzBJVMJdEJeeG3P8jNZERedRSc9AeKm/7ku4J/N7yd+uZOFdlyX5lX4eJz91Ma/EE1J
wnFfJuwsQX6xb4EsOftEEKsKkoyqh16y0Aemzzvbnmj0KyRF7iBj1PEMyH1lGIFxJUjn8wD4017T
gg1yhTZOHTqgtD2Xkv0Vf7rFRinaSPp5HLy559qBrcxXquJwDZn0QrIifsdFLQrIPH7HBfsNP6rD
/AY2rMOzj39aScfuGOB1mM4wq4xCRzQQLwr/jazAThw9sc5xaFxY57ko3rO4sZOJTz+w8KmNaHjc
Zxz1EL+eUmIRJkETL7gX76rI4gfO+NznagT/0oru+IOpJdkPO3Z1GOtbjuti7jUyiOssj28gLyXh
5xiNpC6UOFgkVcW0aiU/I7jF26jknvH65EPAFNMBqxSZDTuc/vpY4rRKpv/WGS2ELbE8Bt9KTt/e
z5BFA3R+HAt4jLQ4IMBi7kNeLIW2/3Mf2WBOs/3WWZ4Xc+/Y/4FueJxY4aM6bPSzJUYu/PtI0CxG
+r/Ocwy9i5bmo0ps8HJAzS7wNP+4HO7gOkZ8LVqdD1YydFxOT/k2l9Zyn6ABzgJk4nfC6nCsAdQ4
Qx43Js3pRzZXmcU2DD9qtqxQanYenaW04/B8DM3NL3lmFMMmw+VozCQIGrrge/JofWAPRIZN5MAb
2MnBPtzJvKh93xY++usQWmyetcRaIvyIBkH9vJgzinlzgIbrSm8xLNT4OXrh5xhSH+NEypVIWa/t
PLieH8bkQTAHLA0h+9eYwgQzzv+3uFap7awskER9YLNFiMeptJ4KBEfzvtPoKLum0V0rNTZBJtwU
FQ1FJ5wjmYotqsKVbe7T+KLHmQrMkcDm7w7Lt+ka/R/Mv78O5veil+cGl5aBpyWSgigBFiVHLR4g
6KYwAMEWozutSjJOqPaEIOOR92WcEBVwAJqJHcrygJYTfaENo4++Q6/v3TjIp3E5YjNL/ElVJds/
qmALSbyhaJ1vl69fvr/F76j1rxTxkzo7wPj88/ruxjulN+yGDQEZDI9nTXzDxl87e5rKdj3/FAWB
UOmnqG20YuII3dky14kd/6rwT8aIAVMWVZwYjvAwdtE1Ts6fHtPE8ZXh9SKaxFsMmRXJ5ivZTRfs
E1kKJ9FfPK63aAABybbCtbDQo/2GwpDbX4v3RiAb5ezd+LZLxyrQvYkMOb86H/oWKy1Fco185ymC
qj+AhGuZ3WO71t8Ol2prnCFGKl5whLSYhPDh7+R+EWFU228l8LvITFCue4pqJJeeQI2UxeXuab5j
pNTwuUbN67cKJW7kFUZPnxAAva7FQrdWfn2ptZR+LRQta1y3DDRzPcx2/gQ3h99u//KLl1wwuejt
4iRRlQkL/1RYPX56oca4vb+D94IBqFhYHX+hld72/l+IE+a6Zw2rJAnrkqjwL5y5bjJR/7zUAht8
SExx2Ll44jOK3r+DEHSvKOguf6ZhXtIDqk4R9Ixe5xKnm3m6LUZZ2Ot83qQ3DJ//N4wGyTU3iPFF
cr5oA4zgGC38K9e5H00CE+HCE/bRqugiIy2VSMpar0VYGq+uUVlX9fUNf7eQZy/jPQLIQqTLlXSF
KQKrizxdG1NZY6rUlL+rKIx+oV5/gYGPxw91x5ozfxw2HxoT3EmV4n0l5i5vKd3fp+M3Y2sqzF+w
R4UhVdvo8Ry33xCPL82/04IkUyEuLi6JkIpfWIFxyKaNajmcvPp4e4fOHXch2tm1bIGKTezwiOOH
57WfLfXV9Hp8Pd4XrxCVunpyWAHmyJqY7N+JpYeXZT4b2Qy8qCQaiQNb9iDZdXOiZGdPhnume6wo
GGk1npaNa/+/a8oYv4D4rLHmEOYD88jkvkdN97LhhjCLJ7g8H0yaNp9A6HXBegEl6YetccyAq33J
Es/42JXZQDak8pbp5YwDfeZLJJXZrGF5Io1uoNWVL/MJ0O6QLe2mo4GYZs1L0pa9VluMHPn200uX
55NUifZNaFvbU7TUXJQyq+R8T2fdd6DQB/W1WRH/ovVfMB20Mud0cacCMb0iRqZw/ddWyzvZcRsm
DKGSRo/CZ8AX3WYhdulVF9+s/00+uphiTU9HD7X7/M1p4gYZo/bUfX9trDSpW4Uy7YClq4r4Dlp2
arxLw8ifIxTVICCFw29zK4YoLQKhxI+ylO40K6voQtyL64PsJiRZsFWb/biruKHjHeOLaEuVsXBT
WIP5Qtngvz2m27clSs65EWF5tXbZFCnfc9PNSpo1I6ybXy0R4+SehyMWwsTAfXHjuXSWsYKFzkYH
3RcsG12X0d/IyvA3aluiZWcQ31KWUufGCbBfrbSXX8UvJgvfiU3rlvF30vl3wkqWnt5mYiIz/nYT
8lit1tPAbzdF+OJ8btRW+NfR2vuKV/izar1IiQV+Ynkh7wNLWmsKqGzT0PorTZhFvZ3TC7XvfyXR
pxfasV/ltVfKQlt2HIU//EjFLv1KEX5SqQl9+qQKGx66ZI9EZeFl1r30ah0ZfZIHnRhwT8nN8FYM
Xya5XtT5lr4oAmMNujmSHMV+1Qcm9IsqZL5V9tYyduAV/spFtW24lzp9UW0ZskOZvqi2euKg9Mqy
4BGu/KCsrPEXw0bDqisTmnlc/xBU6zEVCtHaaEcGOhKZJN0ZSvazPn6HxmD/t3F/onNOzxP9VQBD
FZXxKU6QESbycbOvCk2eOqZDzvebZj3WouWUxVVmXYeSXy+e6myM6FndsTOz6MwUzliu5+lujQkL
9Bu33XEuDzNf/SN7nxALwGamjFp+urm4ei5EoyCLG3F1JX5RNnFN3IjnXsV/o692ugsYCYVrjyvv
UBWvA+fM80icWeIquEvjTcXQHPQ9wfGWYHwqjJbXi6cJUD5hlT9uE2ZZ42OZkUol+RKyqRU/rzy8
LIspjpge/zK+3i28x5+Ns43JaarUjzOsJ2fDhp1a4YXWUyY99/fpDp7dwZZlbT0GV5wf53RvzAJa
nYUU39yX8YWO3wi6LI72hGfdS2uMKchujVBvbcJYIxHhfYovrYjbnW0hSZ+s7uMmfi9aqrJ5HvcU
8l564gEeU/xicon5ZekeX4B/QSzhkdV1fOdetmPXc+OmT7za5rLEsptOuh0/oQz9VjeIwfEryvg4
U7FggMXUsNvo4tvoQi1b7WHruI6sOklps3dGYTAb9aUmFiq3j46hxsNqxOtpFGUdUUxl/LmU4pMs
4+q9q0UfOo+HUvile+kIbyM88VjSj2bK+kAAJHwrO5pudfytTiKKENV8me/3+SNOMFyUO9w8Ho5r
xHDcl5yKPpNtd8VD6BrZENdcuf7LHkKfh59UO1y5iFOhuXLdk7fju6nm10MYgWJV0fH4UCs95Fgz
Bt6iaGu6muWDbaVjb9dhq6gDiJCjdIP7KaoGo/eOytYyKQAZc0C7tXbwKbZYxQ+jF72NILxGkNkg
lxVB1UsGNjN/Vop3hUgZarR+61l5IL5JL7RHkRwNJgWF9iAooOggISzKUpJ5RkEYO3p6u8xob1KH
STzyW4RheJtfxGlZx/F8PtjYcjI4yD2DemWMsznnj+H2Blmm+Ur/FLceGklPGFbVfa5fMPjLXLrV
5fFyv42j7QZ6cpwd2MxpIvirbQw5fjR18GuFAxzGXwmWznqT9A1wb5b1BZZxldqVkrqL9QGjTGqk
Z5g1eVzR51J+BWBS5x+HfRZk1wWhXtejX8U31pdyLLyN21mttDHRLyKhGPfTGjHwkpVxT6ATPYEI
y9mi2eGCvfEAE/E23u/UYjCdDrF2ls7BN9nf6ZmzvM1R6KzbZuFq7f7qJn64jRg1YYndMx6x4PrF
T5lxOwKUda3aHEXIAJLa2a1R4ydSBwLTig7RV3DJ3YSnwO1pVmyZ1fGHlvmHhmNAinBzM2vHSLy3
tgk1kg11VnEG7ntJdl6H04k1AcSvUgwHBXl0Js/j8q+S+HK1auy8GGO8Xca3Q4P/XzxMUovWWhZ3
HXgijPHW/UlbUljK7y0u9jJ2oTiji94rmBPM7owjouChyGZnFX8kfSY91if/x6MtwBiX+O/LUWhn
R69kra+ZjGqXnSTCYmA3ne0aEIImTRZXWZlsncY9zb7ef/nx+84D/V2UX8/Z9Szj4OGNVa+tL2QX
TPHa+k1ep9jhtbVhmmtHXqcv5cyg4rX1lfQr+1x3IuDdvgojR7nL4eXxy2/kxHsRj3+3VSRp7mID
Lig3xgO5eSl5MlkVjx72heim5XGxzr0lxht5fGdNJeYC6rgvmsmBoCK+qnbjw9nfKOPOY5dLq4rE
39cKjbh29kfP8K3jpR5xRVtI9rfXWF+MwhUsQeCBR7M6XnaRVQmrd93UpGc4eEUEy5bncRO9kfm3
jGvYrlMTjtwh3BkNKFq9AAadE0M3rt36ndUvkLlUwutyBq2MK+luo6LseGsK19h6ptX0UyvmSsY0
WMPkAEqyuErlTjn3NOMBH16Xx5RwFf+NvhG9jCLOUa1YzpTVcUWfiacYzUOqeTUx7vLEnCBlLnMC
qQrpdeERl/8V1AH4ttpU2LGX3G9rldjd+XQmwfjELZQqTLbaugnrN7m5ZPES37ZnHTcIxuPwQOaB
CpwdPhggokCFYhSj19ktlQW3ccIuUqSaY0MLQ0FmGDCAwwHLx9cer8rDX809dDHDu+LwGtjpGTfs
EV84Y1RKhoqyzlP1IZ/rbYQJQYurTI4vrWK7o6BL6clSoACPFbPV88fh7QbhRHJE4/DTFQNrDqL6
RfycW49YzWz01ZBF/0WF3sBDKjzcNz7OXi2ExbVm7JN2LWsChI7HaYU+CZA1ueaX0UORcJeFh1CF
isJGM/F4FY7NQ95pk6vDe7og5j/dvhKHyFtfTVdtwNNubiCFur68Dg+8lHOD+hLqrA93WVgwEsR2
JKSjFeBTOSuPzY7L0ouP6fKbcPkFw1YybvLrpDxrzms+Bm9fDq48NMytFyLSatg7RDOs0Gt3STSx
V+YtALsAO3GFLECscFaeK/91Knl25RUHV1+BUzyG69WjASkcVUoyM1aYSxfh0dPZVOTl/QaN3HQT
ieuvuZj1iQM7wm20jJj06FqfYVzR8zu1uBfvoqslibcVxAfKQRw0SVjnDDsf4xAOumyLx2SfvB1i
EGb3U8qkCd98J4oVt2oUBErOhQ6tZqqEFSrwiPRaMAgCa7xgCxY1aEAsV+GOPuT0WuB0oA1ATzZ2
mjiBisP1Y4FeG2g+hJnzPU7K2ykl6RkNuKCq6ySZGasgpKfOXpRvsuQcEUw7O40wD2FRBjRwrVeu
itJYmc9cllAfvcj5/wC9VOWi/pyp338dA2X+3DOfoeLS0geoKUGZNizyjZJs1Yo1EgmltP6oeEYG
Vgxz4jbGOi35dHq0Dvmtkm6IFSABaoth9x+TYjvXeRWMA7G9KlVe1XVZ/06/yqyT9DvxiBFWgPzt
WDdamUo8UYcGvB1b/n2emNgCLycK00BWy+bRVmrdHd1mIVkK9IPA4MvhZbz/GK2QU5RjWUpaO1bB
R6+/+oWXoCjbvgknu/yqflGUWLaRCj1Dcv4n56j8MxBRjorvu10Nustwu80/7LaNTaD5e5nk79Hm
kGl0d7HwbAsmUlMGAPa2MstNk0zom6KQhL6zFr2ChbDB43xC0QlGpKLB2C16eIuNfOH5MKrI2SVn
+JQcBKCtMj2SjnKmEVVhWSuCoZU+cQ/4sLmpgw1lxOap0dtmx5IzqPikPlLchLIX32zeKW92o2Cb
pHfQKgY1mw6F9TFdG3PTE0q1biRRkjQkLD9pb7UP+buKHHtifWUt8lCuRGiYtR6EkRWN2FXSYxxP
E5kDaPg9OTzK265D00KvZaMVhJLJJb+3/gKdn+4uMNOQZjXnUUPjKxKADU4D56zMAg62kQtr0qeY
rpZu6FnfDCesXdqkP5O+TCH5fSSlAWdDCKcqV5lLYahYDp+uMo8aN+LxK2fOPD9CVu25wsLmKGpq
SJ140Ybj5JrQ4CKMq5fx58JKTWzlhWJ8sVfTNR5I2W71NONDd9dKAnZtiv4YqN5Ia6IgZqlCVyeR
W0bFI2oRrzZc0ZCt4Ye5Wlq4Vozr+FAE0nWmZloh1UwhQS2VNZy3vja3tdzrp8NzUKgrAyuWHfc5
8mQ5H6ngWtJtNqp/eFxs3GTtgVCYrpKu4TlwRObOmvF8n06nURmsl3WSZqEYnSulvM9Y0zJi+/2u
ekq66k4M//miXFwwTtWgclFWmhsP/BZi+CseC8oV3smYcEfkkDppR+TxKGPLrDrC2ra8eBqx8RK8
ifP0dtknK9s6GpUBoEQj2OnscF0nc1X3tP6vGslX9Y9ln7Pq2goqi2huU0Yw9cHKAOQeljzZy42u
yJ/MS+xgyzUD09x6igmrMh3cCuz4/eECNlW0KsmQ/QXVq7l5mxiNXk5JhnEh2efrIEiA6qShjpiF
nmCoVSJ7wHIQwXCo9XJfbzRGdTgfkgEWrv8xMLZVJrGELgmUQpJVX5L1T/aKwouFkgAQZUMVlQ1t
Jmcgtmt3jLJd9oZzFB0lu4naqhuFWC4/Rz2Y8Yz4kWT0MurePAWLDzeFQ+pCmmMb8ZOUUywr2VFS
4s5dF4ZTeAjrPC2upP7khom4UUQJj81vCIHl6r3+tmKTlJ3E2MmsJ6tyT+U8O8kN/kVeV36mlWN9
jSIeu8D6LFhUB4ybI14PKKr5/j7ekqm4opc8Xep3cXUqdnsEGplO1uZhmnW9nGSGqK3kvIdi2fei
rCAdTkNu3IRXNU1dFxs9pZcx0k/n4mpzZbUds6/aFYU/VpZI1ncux8xy5RPRvDSH/7fHCFVHgp+i
MEi3KSvh/DZZA/jgEsGqOViyiIFPEMS8sJQvzLKgLF0TDZBoNjSTuBjVaPK9IkqTv3Lyfbr/BR7V
X/CN/iX5OhspcKTnNRXwDrL52Oj3Gv8omcO0LT+5z0qEOecT4FtW5pcrUeCuiecDV4ZCM17npjzk
cn5nG2P9GYQt4ahWcnlSmSmPrpDCuX+fYaf58bmUoPo7YgbKT4nJJc3oKltRqYjJHS0LtTGpuue6
o4PyOctHPnmfT4/6dboZ+8Z4oLHJQcRzjRSn9DwH5tFyuM2zIrcqMdUZK0ElTVPHs6OqeFISK1Wm
JJ9FI7uIhw2Yy4uVfXW/d4XKAkXf5ZfMdsVq3/B2nfQMDwzwQDHiefQe62fq//JQtkR6bceweUI7
VHU+G8GFNZ+xKGizzmW140bW3N5xPi/XweFe23lkOrBrk4Vo8tlzTY6db2C42vWG2lxSlCgb21L2
q51jb0qYioi/40J1FtIXi7psqCgFldl4c2xzIgxuGj9ycZL50/26cj7mJlvXhNUGUoSI3MbhGwT+
iAcNSyRINZ4UqwckyWMLwiGz+wIDDC1K+zNqdpx8tZIPzBgfOXk3DHxGJrYx1xitztWwtw4/1/KF
RcH/te2Xfvu+N2PFhp7M0x3uz5Cycbw4JFpIRNn63NouWLFpnpRh3CG10nYlymY4MMtInQ2LFDq/
LC9dpZtIrKT3dGz8GSHpybP5mE7XeYJOYohqr4jGhrnHJYXnzIZIeJVCx+6NP0J42JqEkGSiKDDl
4eM/woY0IPNb8G3bUUIlmwB1hCeBJKNtms06JNuKlQq9v825Wp2189U0vnTGiQ0bbnGuyJrlXuMG
+1LVjU/7reM0cvGIHYw5yH5+qNEwYuP9SHL0UEC1T83vFhrwS+DmhTSrI0AaxPvCciyHdxV7nagH
egmKfPcRGC17jC+WMQP9YevSh2U62qbWaPNev4GWypO4OQxtACdqV0kkNt4Gx+FQo41zvN89HbGD
n2A9xajz8hQQeN9KfZHGabgcabCA0o2UM0hj/MdOeir2BXolr7aj54XYRKm1j+ZyQ5YCL8LAQuyI
gj7Zcsog7hgQ9I/36e5mwEDiBkyIJb63VgJwUNDI+k5CUBo/rvef2wN1Zq8KIZHncoOcglXGENR4
Zb7Scsmw5CB+1zZJoOstKgrJLpBPDEjP9nYoARJcbi9izShoHbmI5/A6jecTBFOW+228HwEYyTiD
b+PlFCfUhSdFZ0upt82b8CBHcV7Z9Mz2SbSrTIT0p9/X2/dyDm/Ku/PjgibL5H7quLzMa7F3V8G6
YMDxjPWCtIkmnGqRE5R+00wUPYYNU6eXSXLdopKgmblX+PEOXQbBrqCcZrXEvSLTYSeeCracFxuk
pp6sy7dx/hjvt59GP1/9wHoLGAaNiFiio9hpDTMuvaOzmpFkVVrlHyh8DdOl8XU8NN+xwIojCbkS
Rv6RtbLiptH/kABOa9YJ5da0YpM7JltyGybv6WdsBDZpdNd8wBrGLdfQvDmKBbYPVRbT8XEedlap
4Knk0hg7Wz1iq8HWIi7nXeP6PS7dbHNWcVOuYrZ3jh0nz+E4DOPbfAuNxFknrMQPhd0pSMHK5pVJ
zf29R84mgrIAOivg2bzV5WDoHz7GG6Q5CVtpvy/RlJK5a5dqr4Aakuc4unZeicMvnNbXwR9yhmSD
tWQh6tH8uYav4j9fSYAeOMY2rodluEEYzkzARMYDn+KLrkSgJ112boHoK7bR+Edt/KP02VYi5g+O
4U5/KyJNsntJUyjjbEG3s4M7GOCxlxTJzzjckg8W8FDmaZyNvgEO+Yz+tr9kEFjtljPjG3/GQYu0
fm5h0dbiPBXnu/ER9s3LDS1tFKRUpXZYry0h8DNVEQZRlq1XPMYndbpGCpSZQLha+zOp2tpul2K2
a35QjwN30sBb2xcy/Tbi5G6otXK5tfim85BSs1P7x3fL1CaWqFgYdhYkpHV65DId8qvx/bgU66Bf
IV0Moj/qbSVKq5EOUwKs0VecN6cHEhvfI0jacQ077I2gxMnGLJHp4qw7ZG9z88ooWtc4SMkDtNtz
ZtA4G4Bm9eaRqASEmysfcOU5sYifCl/kZRiW1+MG+EUlRYpjpTb4RS+uKhJVwrB57sPmLKwUwRSF
L8o6DBTrqHD4RRuGhOmLXFlV1UhfxAJRuI/qKeysRKLwrHzCIGiYjN955iP3/Yp5soznV246Po1S
dOYsMdbJPoAl+iu15xOCcqxrFfEDvily6d5/jC/fplVwrRMf9WlzuASfCwiaNmIhKzzOPDzOWlvC
Au7OkCoIBbINuyUWkqzjZ1Hl0qvZd03xE/HshQ27VZUku63ogIrKXT/Viq++jL+WopKOPgYSgl+0
UoowBhqEX2Ti+yri0qsoRFlUx3+jYr/hjeoYC7kJpS/3OPNw4VYjurHae4d8XIiip4wLxKIRj79R
lEcZitBaBUbBVXXyquJfFOwLFqmpFTHNXr0PIMcgTvA36jA93KkIz/gbuZRljKHd4ReZdLoUYaaC
mpd4yzW+p1zaVoKr4ixVsJQ1/tGpsM+4hT68ilyNqqOmKSUdu0+GxZwGPIuarX7Nh8SCz8h4dXj8
OiQfMkUpsmqu2CCdZBnR7oKSHsqRxVqUcw/7s50BmCuQrLUMyVpoUyULaapkFEwn9/2iT8Cvyq9U
fmEEEqf3DeceS+Np+8qv1JU4VDNX0HXrRp4jon3ip5UwsBcVKrcuxMGThTZosAzHOWZ6607u+1O/
Ms6xzr48m7Hq5NtXMHyrXpwhmit7qUtxmmWhTWGtxO3Hishz30Wds2ibhnqJIqGXREJEBCv5MxRh
nhaNDKmcOxEXSVUtCZhcEcCVF0lQGdpVKoujEKulUqmYGEHR2khCfhNqUQ5Ctq+KuLrOW0n55opX
VfWiz1rFf6Pc2KKtOgQRv2hEkyCL69OsES3kOm52VEW4jy5iRLjm5/ihsyoz7BIqHYy6wkuVaCXl
cX7NZPO8in9RFqKazhVntpfd+Di/lmIAI2mU+EokhZcb5nBiqDcnqXI2r+H4kzrRwjZeBQAQ4zys
kAv99qxkVgV0Qe2JjFUsLdgyTDlmkyz4HVbu0Uih9+H7FB8nn5e8AKZAMNkQ3IFVV+rzKXI2qQeo
2lqay/gDYTzPX1gYaRyvcG3goWHPRClLzn3HLyl4LEHJRPaIYjATFW9ZlFjLmNmKHUSFwho85WNv
YtHUwjYLc5WP5Z1OArxyBf8k98AQNEGgxKGFQQqBKslG9UiYzYN6tqmjoUbFGWh7JnPoaPNUOKzt
mdNDJnyTCgW2HfP/SFV0qZBY2zFtjIHB0poDWNN2cC0y99tjiXZs5L62n6xQFJKWTor58B0UbEBI
hZHyXVyD37JUTY/j3Zuv8S0SaVgKEzExSNjM1+E4meXPl8R84pyjj/Pq5a/yLtJiVSkowKr+C6yL
VRaslIzH//ZfKlLh5UYYgtlRrXGbHxdblmLtoPfh/BrPATVh6sIil6OmWANwiYpPllbJVlyFVNdD
PJfk0x9Y/VvWnVKovC/14WtSA8QMwseL1Rskkme9lOfzZclHmOcM1SfT5TjfbgAUgsUHF4BHn/Df
7e8A9mmcIRuP9Im/5c0ZB8fipiO9xB8qLtgnbsDLrb9c9VzEzzcLC2iKzVnYjDWAOOgV6kVoLdh5
iDO0BT6oWDVxKayaOd/NipA29RD9wPFx5Pma1Y6j0WW58wN7nV1ub1uYpXN8yx4QFHBUX8pKxq+l
LZ7YhmXRodbSfmV4kf2lrGQMgdp6M6RDHawYVuzN38bL9NtI82CNrTneoH1qOd6mq2Gq+fjANh8A
SY90qdZYnUfCqAzTyNEYD35jI31lafEUKxsa+ZgWqkS6/zyP2L9wH95ivYNIqfC/jlUPChltQTam
68jopobdQ8P2AD2HPLNvDxEXsLyPY/oYbeKgDI1uovMXczm34S/H87xoJEp/qmw8wQOk7AdA+Jin
87fHTKMtLjOR1sjVErloxIcOpfLf+ISJPQ0qOMNRMsuo/nIh/fLlcT7D0uOoY/Rx5j9mwEOI22Z9
3zgsAl1FvlJgE37ccApQESd7wYtGpfPr8PIffTojx2LwCrSFKlxAZ3u6jvefV0gjDrcj4Jbqh2hd
3TLsHEI2PGwf+3wd1fW0npRPGhMpAKGLjSWir6tMWoh4nJgu9I9GO122JK/JQ6F1uBlD1IiBE3Sc
Ho/jol1XnkmcGw1W0hHX0rmY359wHKz6be4fK1O//ltNWuW5JHJfhlPyTWedtEs6rRVgP83bpchb
ugr5iyY38lY/SfVbLy1QjDvwJOM8QCwBGoOhd9VIjv06rZdkiF+OphfyKuTMbudyDuP36azR9VfH
zCT7jL5wd0UvKRpaQqi9UlKhk5gAxuncFnjHYO5fx+NkGMKoX40p/eWzNk4jA5b7+wDy3qqvBeiQ
jBju95u6yUpUAhHlrBEqwwdTstMyrsAddod88VOTgLmkCqLPJXHueR3Vjp+qiCtz6UPai0OK0kV5
2UjiAyeLj3Q5YJLHh8XZM2Wi1iffaB2PC1o5TiNoh1qEV2zHUY3GcwPPCj8y7GPctQnM8LeyOLwe
C4h1x2zvlpcE+qcLPtX7/X49jH97TN9TTRUtL1H1munz44yvH3qXHvfXSGq2YWmjkFk+xvuALyp+
LPDjHfN0CtYVAc0uZH0NC/iwMGVqOU4T4ELPJ6V0sGWtoYhQXLvOeqjYzY2DdsF/iq8ok7ZjK80P
//vPfzh08ftgcQ6P1XZdxsdpPsCJltFTzEupuBUK3ccbhrWWQ5tFv868EwZ9xzY6hsfo+Cu6aBYK
AVboXbvSYr1XWLc59TOUgsUCSQ0LMoY7MLxzMJx8nu53cm0mIyFf4jy91umEmlUkc5mB0GeETitx
lvG7b8P4eTX/8XK4PeI3mUsRK2Q+cx8DQGkcUILhG4mSYYEv8E5Kfy+ErRlvX8Cb8S8T0oh1FXz9
uEywmvjXXciMBWdGJ/tAL00vj/u4xDkzj11I3hxepjd7G/EL9bwJsQwbygh48/AxHOP7YAEGSqP2
jkM/hjta49ZjjrNmJ/VejctxgFF6L8bE+TbGZVQjMrb9Ch085acr8Rb+xz//f/E/fnuRw7v1OjIe
y5/ZuR+Xt5eijGQM8bPcf+Ytif/+v393+N2/RT+i6hoqtfYVR6jZDmaNoEOgvycS+KvX2aL0s95K
+zyoO+ykpR7fIV83xn+pk34pdSql/4hBBy7zYbodImWq+F3jD8Z7PZ+H8XE8HC/xz1pxZ/buuiz+
YSFd+tvLX+C7g/ZhJXLLxVxA/JvsaZU0megNuXoyojYuFTqpsQW1PkT0bw9jqmLfRPxRtlI897gs
q90BDgZ+uf1LkWaBooG4H2lb38ppM9/UAauMm0Mb/e/an2ew59PH0kjGVKDGa0WNZ7KoA2HbYVAf
jaC4qN2I6jpQGN/mqTvEVR4DQeH1fV7MJUy5qpWMUesrIEbIcIqfWyvJ2F0GaFv3oYgtn8+8yOL3
7X8Z1IRtAUL1lLQ1WUcSYtKUvXVyIWKIYA46q+XSiQem5qGImyi19LXVy4GhFOcXb/pByqF+Njrj
rOrfPzy2zgHwfBx8p0+cVRpJKT5u58P7bMx9OL493J5JhslPyNIt0d9e62NCT/uvw3UArcNMkukz
fvQh/EyRBdxq8z5al1jLmpN5Mxfn2UrhWf/7KLyzbOtoFPGXVkinFvxyr0go768B1E3fOnBUcMST
vsbazeNiOS2/sviay0LyyVArUDhWcSjaJpf0jHtlGIg6vPyEyPB3bC+/LI+Pq+rptK3kHLwMl9Mw
GQKHv0Ir3hmmF8U9A9b2zjFv+DWUCgP419d3ngEA/cuY5PcDObvxDVSSxAS+IU1zGl8H89/HXKsy
CxOgAvPG6jwbVoMJi0enk3t43qFIuHcMTgH+sQ2iDqqSbrtak7vmB+MHx6Qe/L96++6qOOtXEg9f
5tWw8RPNXYAtGtxqGOrdxnyyxI7XvKjjDFBvwi7Ovb3AuJzzBPGs7/ME3v8qGBOObheiPeZPxtya
4xw/4JGcZ+q1uow/oiU3SLiUsvU/h/d5Nl7jdI7LjFziccvZB+wm9/LqM/rzrWRRIZvZjcW5rJCc
Tow1ugcGC4jzWiFVNT4/EzWYUknCnl/L+tSjJ8C2Ua2NOYF9pLvvXljAP9Y2+jvvMwxbBqPHDMOT
EdH/tPx5/CTwTWv0mMcUkRjkGxSrbwC+dWN9g0+z+tv8MVy87lcNiKKTGOt9fLmNP/C/77q6jwQJ
MUFqfcNw9A99H/+o9x/5i6RfOkzxzxrpt47LH//07/Bt98f4l53/0sfez/NbFOMDu+hz6SvrZudl
/FC6LPyw4Psb46us188cyGIokOPiuJZ0uNMfL/PpZ/xhl6KXZR7VGapbUnKBAQGhPdTlrrd9OgN4
/vnH8HMhRRxfQi6B64bWd8JrqmpJH7mSIoyNaZZc1ksCH0IHaL2fprcp/oTyPukl57liQDRSxHp8
HL/d8NfjIjWTLn1juMRFUSNa3S/GQV7OUBa+yo+/XuPHztS2L5UY3o1aOMw3I9SVUGIhCR7va97n
83iLzpVtGKitYvs3yrHnod32pEziLF8l77tTftcfGaSLujCq8flYcPzw66SAOLcMjZplA8KbL5Ql
MCypHhRZIC1Qd8Y1aPdc/eoO7m28jDcsdLKPFr+noqckcnzjh5+SegRPoMl4A8Wr9i0HkfHZKsIU
JIQqoxfP5xeEDLtd4pTqXIzATJcJ0820BQ/kFV0Q86vQt+996C04Db0+s2LOUdCqFPUvK5Zzwn+0
xTm34Q3Ry+IrZqEnVuPwjp6kUkve+Mm6Gy1iyyPwEuy4QpvpduhnJNv1E+h6JYZ5HuJivWaJxAb4
qXH8NH/CZD0lpFGxPGKBpRYW5nfDBhajWZv52fhZXVtRbbNXHnlv/K6taQO/5GbMcF7CSlejdzEQ
YPySx0ei/rdqGuV0wQnEE/6MHjH3aMDWaUu1Dazxw4lXBqWTRR/GHglooTcsy0fnKv7que8PVlfe
FUGhd3A4rNIc++8SB5NH+rAA8p+VloLfZ5ed4ONKcv6wJNG+CouAOp91SjWPFXLInTouE/rwfXYS
M9tKdkXItqIwIplmByC8zsdHAm6wzkTAryxurVTbOGftwBs3gyyCNrkotSqTJHysaLrxo6mfmCE4
v9sAsYb4/WfS841hYzd+Jtxm198nQIwYf0fC838i0st/YF9EnGE24YMAV++ExRE/D1DeusRXX0hy
InhfUNhMEp/4Of60RHfF1YfBUDXEo0OFYQtnEhPVGj+0F6W92WRT8oZbq2k4cIX++otQexfMnAh1
GMGJnU5xbm/DkxMVCevAxIkbqjZhj7nFcaEVy3DTa1xbmU7j9R7fJkuTBeMqY5W3jR+KLR4NFOUt
6wFBqaBmtNXbCLpt+Xq89XldtfFVbwJ+YXOPOb3zT8c3c9J04aNd2txrsM0FLY/Ltzg0YtWJ2S+O
vedVmhsDl7L8WKgft2ntfHu6q/EU9Pq8D/FqsKpqpKQmlrKv5IzxYHceZ+haMrXtsuiF7bH2qw2W
Yi8bRfHzacSwAfkKlxMi86Um7jUeJ2TDzzEAk8YPDV21KRsYSw2TwQXhieBg0I/h9i1p8DO33vfU
rCzz5GPF6eSykos/q3KjFls+MzMwpBwOlq2kIabRX5mXWVW5+pwe8n1zaHHe6yVHAwq/XEw+zm97
dDi2m8bPdNO3Wbq0BxQNM/Eb59mN5ZYzHRUcMaFFowG/pFRVKeWfY+1TKMFDuOcVf6eJs0ZYNWYl
EV3fbf5xAMl25R5eXOTX4gWitFa7MSseMWpWqU9f8k5FLhDjxKKYnGez/A/zvh63c1za11K6yjYa
nqbvdlreefyc0GCAOVoB1O4X/N86qyTV8vx0dtsjIti3AH0Vl5jMOKL9l1x2uxFl6M3GLUo+U8jD
LG95Kila6rySjNvYDIXGD8Xc2NUOUZgbjHEOYMqnRR+m27Jj8J732JyV+JCNNXTIs6bs4u+5riV9
tFwNcxhm+/M8n/88ua73OFs0shqMO5VlJx2jv8Av8mVeRJ1LivMcjsMCvLmMF+prj+8ll2061V0h
9zsuZsUyg9h0nMbPtqUYks/q29Sx3RiyijNdk1zHTW/8I8jZD5fpQxd7cp7dHgN5Dh94FND6cx2m
m+IQcjGCcqlh8UJq/lXAZFCdlpIF98MNS9hpEhSFzoa7tJIYoIsN9Gn8kNPNm/O/Slx/SQSF6lyE
AXeK4XozhsUNxJF+kDWvPiWKzCb/p1did/On63KKy6BNeXj3/G6Y5gFVacSaBdbWrRSxxFYWFvHT
KqXV0VGfHtfzdETTmP4CAwnxjYbhvYLnC37Jzc83xRWt5Kw9+QITzdbYdYSVWKkV3A0fGpu6kFYs
NPUeK9gxv2y1VCw7V5UrJPtpvA/TeTHe9Ic5gJ+7br2qOylwxlI7qcctGjwk7QgCqy/beCFz1T+X
81pBThP00DGbX4x2/T6+yc5DhbOebNlDbXtH6Aksj5f7bXTx00X5vFs/zxscdW7nXEJllcWRgKrT
03AfXNnmYc3nyr18DaKD2Q7QdlNE+n2wZS1A1TDq/PLXMTZrvsHpXPlKiMHamA2a/3J+3I7U4Xh4
NSygzoUkalZXlW2gHR4XomEkj/Ztv37L6nxcURwrUrM7xLWAmYFHqRB2sAzhopYJEi7DZQTUESof
XTR7i2hZG7Jsg2Ii35dsJyu/4b/BHeRxYrm1poEYvOymC4mdDI/eHscV9GiC8cfxflMi6S+gQo0f
pKox3ax8zXbHmMFeX8hcGm8W4Xnnru6MTuUyfJ/eKPT1Asbhi7ETvylHnntyLHN+G1/Nf/lue2f3
UWrbcHs53977T6O2sX7mbpyK8T6etC1mnhJi0BCOF1F6GaAZ9904VBjLVJp7cVW153sRmOGJpUrt
/htpi+9Ge81GdJvl/BhuJ7XmjRZVsIfs/Ro66+NttCM1aQKxdneeDBsb8bjA8ZweYEaMNgdFeirF
32XG9udBhBAehNAfVWuJFmXNGlxU79nAnCy+D+3Jlpn/FhMWtp4NTmSkm4bD/f2//6tN9fwLCCft
wXa9tCFbzn6djXn0E0fzvMWqACxrsz3la37WGCjD2Zaa4t6MObRo1SKWIzPp8u0Ud9wjAGPSjYGy
cnylbbMN5WbxX04L/vHyH7f57RbFGiEt5fkI4nlt8N5+TOfzn8bL6T/Hvz1ArWNb7J6X1zDdB/+v
c1PNYDrb4X//579oK2JCrmVx+avhhMOCFWjuBXuBpykWJuV8OT4W+DhR931RgA7o4rymC1rPjTqn
e7NLMYt73Khu1nAr/U/6wys4n/qSe1DpxjB8QQcZBLoHRTi8jdojzDaPkJTy5CSMBTl1jjeCEWks
W3hVytD7sXaGTCDCX73OV/w7y7y4TsLyBUSH+fTT9yPHSj7rovIlnz7oAsiLRBoENkg0K3SjdCpf
cQpRmcqNfrIrND6CCzVcAYkJG03ii/LVspBetLETu9frhLX9hpewV4WdcXxxrEaYFWeumzQcaR7b
5RjfXlmsFLBiLecT2fYSqRgRmKDY8G25mzqsZxavxQFita8N5iV4wcXBqF5HzfjvpzM028eNQtyo
WBkdbPQOkIjrD8V3W+uchWQ44fiafNk1a04hKqDojDFIxcLLAUoTYsYOnpq/AoYg4BeFdTnLalqk
uL70XA/JRIs5ur1RerNKeUO54vTRwfdsDL3yxI3eQh4Bd36MFRTieyo9be+/ytyr4bfgOj3fQd6n
qQS+Cyw8Qux5N+9TiSHhYfIaeWzX7WLvNLXIki3SGzbrYU7G//95Ob7f5ovxl+LH5q8ET3C7VR3s
BtdRhRTq54NPE6n87UGYs9lKr8f1hOhIYB9F9TKuholBr+VVFvsxXU4QS0zrkSZk30x8Cc50f4sn
5nHHnUQsre5s/m3HakXZ9PRuL2eAMYYSFiMzJ+O5/6YfcJ2JIi9UgkZ5uWO434bvgJZ1ji/UXxmr
b/d3v0u0lH63DDLEGIXryhDlFo1fO2F4BPgtQLZShF9R6HwJEGcQCcKQ0HiZFLFcMgFVyFpnN5dX
TZIWhJIuineGZCqJB8NwxvzTGCCrFYrnF4o/KvmO/kbuBQzr+k79RvxCstC+qL90z/utMy9cIQ3d
tRQEBB/FigvUSgfr0KiQdGQ9e3OXqSevMSw9m4uYRo1W4b0g9mBYzA5KNY2D/gJGbSrE0reSWb/e
Lsmh22ihod/ADMHDjb8bG0jIQ/ejWP1bjETAzg/Yh/FmOOBxU+MtRehxl9zzCByuXUGlwvtcoLus
fUSOEXKQ+eLuq6wQy1W72VoKMG5vQ7sB71jhBEIy/Sybgf9I6XmKqoKgOQ5nY3HsDjWUOQunenuX
3i2fVI+7Ph3mS/wJWtfSMzMz8p24OXgf856MPzeMlLcuXbUsQdo+Llg7N7gEDv0tWFzwdzbyAn7A
OTbc3YbaPB9heVTOC0osO1k322kvFvo8Ta+v400PVHU+DsOafhaYtGteNhjuM6AhYuhaI+M5gs3B
wSjJzYZMXAlEEEjR3lAbZ3o5GpDg2owF/7s1fsXTEFKUR3sGnhMQIrN6ekc7BVoTSFqbA+U8aehA
Aa0dCa/JsCyMUVT8ZaIbpX5f5mxL/Row2Mtwix4L6/Iwyh7EIX8bbzNBVFzPj7dJC0G17CL5EILX
6TxCSM3qTHNk5gY/XtTETRa+MJuPpKDm/2f4PvyJshFYuIV/q8XrajmLYDXRRiY+MOoUKIMvismi
LSUxmQpZaiCeJOHE5Iq+D5a5MaIQsQO1mHTRMg1Zb7Mb9gQshOmuMGsmJfYMuxtfgVwSaMo7a6LW
MxVEzSobkMbPiITle+QrEuv36UNjrryrJZrEXL/70592clXFtDXwlfmzTKivGDo/ndUmYVJYYsy0
896Wi2Jowr/upMD72wyN3safx1r7VyioddlsTYB1knZF+9fwFUh9c3Yf88n8eTK+3/ymLaxppIA3
E8pk1CkREHuPpZTxWh8EzVgGs8cFwTXGZ9ldYNXatlYQV0C/rH08iEZmrsH8wEcMAtNySCPlCdaA
PM0Pio8pIB2USzrIFaBZyY8TD4J0zMFc6of2qjrpXT45EQMEfjQDOJN8ERoMo+Ix2furpFTqtpKB
9mh1ndFmzr3TTj6TzJ4gSaj37djDr6XEBwVRoTcRyo53OR4ls3EYave6tePDGBBmdyzOlkrKFI2k
Y9YQwgoHgAk/hREy6SlOjkPvawRhp0fUSrkYOObDeLvNmsZvWFkLXlrOH+Dy/Y2lMc2//Tfz/yKX
30s1H3ZHt+PBydLTCZqdZzVsbYVfHVpfucSn79N4g1kTgFFiXqS500Tar+ykp21VB1lfGkdV4i43
ZrhN1KIxbimnNG7B6ouCavmdZsaXjaVceqs0+8r5Y6nagILlmFldJrHO9Ae6evIl9un2Vs7wRhWL
qthbnprtMJIlsySAp3+FLUU1mvLGEdyQoOu0Ay3DUAId6NvN+MpueBgFk9G/uGMfoTsfbcl9GHCy
vt47xCdc/DjgVjImtIXWYQQhkKxwtoxZNcHVyb6e2egrFOZhm4H2aEopkPEsjkFyKdI4l9QEZupX
vQXkwPSGa0Sk/VQMoK4k31MpMqq0FbaBs26DfKgSjU0E488Oxqq5Dy+aM5tJ/uZ8HYxDRGpGv6um
ls6awmu0HVfXRVlchM5NhGote/rdVe1q5WKUCOK+UMJ6+kcFkYqykMp/NlplZRxNwJQbW6Bm42Ip
lA8UvCZPja8g46yTFMxGrh8GqlFcGx5/m+cPVbA0PbOzV1z57XgPiBaouQv76vKY2Hfttajp90Zp
6lzywB7Ob8dgTXpVJYvjhnW14Aeihv7xPlH3NSrPXKtuYaFGXtW3sdQ1yeYJgDfeWFi0y9U4W671
yz+OZJi1rKTN0RvY+8wKZqEhw+ZJmVRoMmkThq/ZkkAD4BtSmbIU/ZhVuZPvYcTIHXw2zWHI5JpH
ZKCPxz014dHyTynpoohg0HbVSuxsu4fWs0YhmXgXTRgvsdtaXOMQIaus01I00V9ICSfq4Rs/XmCU
jbkwPSVtn37GjKo1uOEv3Q95uibEcC45Uq4wLpQkXzXQKilz5d09K4idYZ54ea3fMfBZX3w1jLkv
AFhJ1n80aHlNOiq8DtjXI60nC2E7jfXYW6DZz0Xg6jyn2UAnWwCHNRoC0TKNlxrJa7XeA3LUPq+h
Czmp2TyTA72TsLsC3CXs+tCOMJcC2HKcJCm/WTw1Z5M438cbRCltt4BhJtvlngiblex+fLGgknLc
w4Ql82xYC9C2Wl8TofmT8UJq82bEH9WDgrj6gKUcgYkMg0zHReuZAcTxTJxxsFyGq3FhwCa8Qhxo
Qd8I/a84vkHPwFQoXmXD0Hds/bhcoMFeX43cjGj/o/geuhAE0oYdJmIl6BYD/9E2KJl/NcIK/b3H
dMBm82SFQs79UmZGBd8boXcb3yCIfVufgEayFWMl+5fUS6mTzZIIxGHHYrqn/aEDA6NHgNxvv/2m
DBzFOxAR+D+MmXH7OV1e5yQf1hKWJokqyC4bW9w45wp4YM+A4Jilgk2nxgxPP4RK2gC6yz9oIPTL
HJ8H3WccG6LAjmQvK41KeTUnaWQ4dJE/hngjbZ+LKFfLAJGJg5vRBPpPA1XuGUgJ1eFagCYjZvBD
khfmTS4w9fqwjOZVYISdhpKpfMcsAHCXiW+3pNQIR86ij+iUduviDlZOgLiBpJAXZBq58il/H3Av
Hb8xL0dFhjRPiHYOVdSw0A1gKY6GET+g898cEMnb6e5aUT9gYjz9IxUhLtNv1HSLZh+YBZf5so4w
Rzc7siUoqrWvCaUZxnGsTIMJQDCy/B/6Wxn7LTgFa8+8Tp+YGtr7C7FOI/yNbv2NskC70cF80+T1
tec3TsJeMi4Tl5wVnARAnbzMn8r3Ofue6u6cgLC3C5tMH5d1Pos2wKHfUlnPxiEEahTrlSKL97Fb
/gczl/VV6cIR1suidVvIzviXJbuD1tfDGUv6YCy36ewborHG4sd0irlOyBSeGvUU2/En27OEq8Xs
n7anyq+sWocA8zP8xz6aomMngRi3nbh2i4C6awvscP0cY3P3qXMs2QNGcy7zs78I+Va5gyK4UStm
8AeNbX/Dnorh+zydqAdfoVS27DZX9WuOnZaPk2Dut2FSH7lNASIRAhYs3Sn8X7rIMmfLxkBJxsWK
RQ4213g2FrEqnxomF/Aqq0DEOSAN4zc8RoVMJR1jbKepSykYayA5S88uyp2SshwvmzAIWGbN04X8
Y6VTWbADaPBWGE/uPcaS3Yb3Lz03Pi77+JHpYezeslVbpIf/wTqfKSi02apf1MOF8htM9JOl6SA8
7v+X3lfWMAbC/uTgfXkZteuNMXbGXLOtGjS++WjLftzEhX/wNnIm77HRtpH1/h51n7MTWcPf0hb+
sfyVs7vHEHxfrerba+9/NFPXjKkxJJDLht8eWcR0FQambAkxveidWqreKpjK01A+89dvkU/Es/sH
Px2uCsAn6RnQrbZHZgv5JDqduHK67VZV2AgTZSHxGxuQI0gJkRS8cFtknIejUJbhcjIGOogy23Xv
O15t1igCf917wLx8gzyPSxstGjpUHQ3nY3RdNtqcO7i/oDDoND/gChdDYQVLWuKkGmk5w2m+3l1L
lpEMs5ZewX6SciXDI/7BiswxDcf3+EpqvxLf7fR02BQPwkOuoofcMFoeu8NSSMGq42Jaf8I+0r4m
nQh4ZaE+DY2Qm+aQh7Gc2MwJPEp/ubCKLpPPwQ3Kip8Bo4Pt5xwO7f9gEPgvf4hGkFHBleEpdpvK
GD0VBBTqVuKuPQ+ojj8gdre+Jomg8rC4OHW1BfseQS7LbV3dYncYFwx1yB5i0B9SMJCLv7ve/uiW
svpX5UwbP6ZWohnURyY4l0kGX2PgChcg6XrS+n2Rgbrwqsji/oR63cdpupvzoSqQ5YBtCNBiHV9O
Fy6HId/8d5spT6zGNiHl4XRKdutGYmIZ0LfIvDXk6Era0jMRsHvGW8QIQEJMD3i89i/woC2lxO14
nAqcioy5mBVRQq2K6D1Mdl4GdhwUfM+vPhdtmfB9WA4MciZKNPfsw4IAO3g6AhTZe1TXjUBaFQMo
PECsnyAH/GM6xlmh64PDX2EESEUlqhphJUUpifU9u4tbBlUusdYTTddDpDQi936IE2rkHmwwnjof
L29UxIEVQpHEKTKZF5asupaEwGqzQFvGFmYzLhMaSXy78zoeoYvXCNFxvCD3kfyMC3ORI56Vpe+3
us/X+Jl5GcMrILfUCJ0c2v0uc7xHoPdTAnIP7Foz+2pywFQ77KtC5A3CjsP+bKOPWYX6+WfcLggF
acna1QYPgE0PQdcQBROovpdv/LwaN+iCSPBKWy38NLeF+xoHetQR3QcVBYsD942ft98b739EChjN
heYo8mWgRBCrE8jbJZjTkaalXOb/pP/KXMzrcF4UncLMO++h0A/y0pG4uVd30nsA8/9xRlyEKJA7
Xp7X8tilYbt1EBnnQEN8zD+Npz8aHvu9BsGGxCrJAj8G6ETz43LX1sMsmb6gP2vfjvQOSaxVo0RR
s1DS+HNhI+g3RT9xi6oLPSRXloKW/5pGt41fyWI95NVCYnZXPeFkYXxBjFFs8IcLPurfPNj2AsK+
d8ekm7MdEzFQH5S3nOlpxy/nx23BclBD19YVxjfaS4bJBqUKz+pfNLSeHnNjoc2WP9tsCZPNE8BK
925NB5CffBqP54EyvYdpmc+qnVMW+S4PM1QWh5efFPEfEDLuYyzi6mNjFLgiMCuiV6vCKctT4kG6
4RIbE9w8ouvE5nTRqhFJ7Lsxeg7X6XOMa/SW252YrGpttoqUElZTEXDi6XBKioyNFduFvVPIyCRb
CStWebNlJ3os9n0AFuHwAZDsx1WIx60W7iIiKZuJnE/T60QSBAvPHWBwwtrLc2YXYI6s5a8//ug9
Q0BptY3QgdYOeiCwMBdFo65vGxaU8KVwa1hkxhEFO7xyZpWwklHvevx4n+52dOxKLK7EayaA/AS9
lSu5SMOuShXHHfmgkp4R6o+w/WSfHmGH5hsauBu76dG3US/6KY0tSkbadsW17CRd/fZFE3BlFwq4
1u8VZ9NN5wkg63UzjEUDPUaDOWYLwYsWRNyxjkR5jCw1MsocCH5D7IWxYVufsM43YdYV5sptQBx6
Li7jeDK+PSFaXIdJVWZYcO7GGLTPISfgTL+qAysAj8oCaldsV5LwgNo8iAV6gtbf/T6NP3DxCuIR
0m08XRYifKZLWS8b2gf8ODofcz/rm1V+JPc/4r3ov5t76WDYWfOmTi9KdKByurB6JVJCu1fZtb9+
DsRFf0XUwiPWmEU73+l0Mn86vntq908ju+rM42YXht076i8oxCpPzNsfRthid457SNh+wmd+LKlH
40D9W8mlTh6Dsl7GIN4SfKabWl7vyXQKGeuZUXc7OhrK0jzNFooduizb8axt+yXs3QFcKz/RSe+b
nh6ij7nZEM6NXxjMGY3JDsYR3OZZ+bXavyNe+v20HTZ4NyFJM+XyjJf7U/m0YIe7ZiCEtUxQy6nQ
yaUl0AlCz7hqXdKp+BfDoBB+QRmhQ4x1JsN0jsEB0KLZI2VlK0+bt7/oFkCzh4CpRqc6LNCfwmH+
zlmF7PNPUVeQQqfxp1SEduFWaSZurG5CgdqyxOk63PYCjcDoWMbNmjZ0v1sxw5IKTJd9pRi8Ptge
N01ryX9izRNpB6fopUyiGnj7jNrv/a40D/M/qVdDtW/rnh11hhURu7NHTTx71IRWc7lhKfgHO7Dd
FScv1tKMO/O9lDQz52cugYxM/EcMzek4Ir73kuCCMga4BDYPukEHS251E2iUCCCDvcUmu+Z+lghR
LjbrtES0OVq5hzkjGr6K08UXLS033USfjeCh4pAcy9AwcoaGuYDLDEjZbwqd1i+LpbVpOS/G51+i
Kafc91Di95yD7UGPrwP81xaR83IabmZzcRweP5iGCHrbwBKM5gNzDwATuSYb3jUG7N8et2/JVeTK
KtZjMWf8oRxtH9BwNSd7UkLxOoaqkoLDVnSN6Fi/aQKU5coZpiYXgFqGscykLBlgQfxu/gCG/ePl
j3/Qk4B1KMDdpLJvLjKJ0SY9b1vxHA/4y3kVKyN43Gcim8iNVWJ5yBM9d0EUCoH2u+F411zpxseJ
2OCKK6FbfiVm4SUleK92upXPCaAhH4/JedmN5lsZMM14daMaE0E0pgLgqfXb+Te3iWN+u0hPPNFR
iPU9okqxHY8AhhPXJj5yArgXPQ9THwKXWDdVChaYZ+OtnCr+IPSISUlB9lIqeBMvT6ZFWS6NdY2d
ZzD/EDvDj9h0kQ8lpJOFuXebU7rNEDifcGLBpJxIFi1xWBharr0rNLPDbFr8zjxLMQBDz9c40z0e
bmPrghBm7tIBQUnTlKhpqoJgWZnFufBlns+j2RgWaMePi0VlMdaU132yci2eQ2AZj+eokm3d1Rm6
Fx9GPIkdl5J+YxAGsYWiWby20Y2KQ8nTrOOA9Bg5q7QDQd9yG991Pq9ZW5oFnci1lVUWFvoEZ+iq
9s4T8kwsYIMvu5PuIhiMxWbBxbMAjZSUnp6dqvhCKqWccfsi44zRSxVUX01/xR2RKvT58q3PN2E/
ZBTzDpdY7lLMgg2Vxdk4E/OZCT1WxsVjE+qxcu8xXkgB61U7dVAwaRfrgueBB55ICrRK7eZuB5zX
U3i/w1O5zRY25X1SnmMradjnkjkkptSSltLR7K7tcAUu82s6f8jsOO697bvi+N02cWP8OMN0mWTm
ruiU4qnLrOeaOlYRBsMz2mA+8myMXMg15XHVmUs/brMQgcWFL0gtp6iKWjIypmgyE8MMr+f5h5KW
QQmSR0sOdPgyNHlLiVM1RR6v5mOVQTzqTXNd1sp6iiEmi0eYCPPzhaevZ377InBQqvz5CilyjTRf
YIBUQsw0kor8sqZlpY/MMNQenIZTgo/NU9xglBOyzeMeyoX42fdhhRd3wS82/6jZIlWY4G0iBWJx
sdfHS9psMmLHtBPkbr8UiCd1Nk8MWHFQF2QOwigZfL5UHqrffF5I1dQJtRoXbK0kW/bEMOPVwqWo
MEI1D77daf64zKfRlcrF5Wcp1brYitrpQ9OArIypRaiIbvf+4q5CWUh1Epq0ijdVMM+MQ46sigWj
3AxxOH5IcplcQIjAm+bbBCVv+JDj5PIwCNFsk3BUiu6LRI8wWIksdKuMHv6mXcbOV7J/jKcJoC1v
SsFyH9pA+8Prffzq+l9l93iskD1v1mvzjJJGvRZUaR2Xeq3kQgVeKPQBaHg8aEhlYfyviph+mvlY
F5L9zoIG4xkFWDwe1oeqwNXYTL6pATbxpkYfKl48+OSapFVvVYhllXuuvItfebePjRITVZBUJolz
RPW+QVPFePGBJyU5jzstJAfp+dJLpTkmk5pHWKPHWiySMgezUK4FltN8ZYn0z6gIqiUevt+Gy+JS
gM5aigc5KjH1tcOvjYt/1pqxLZd0xbVY6qFUeeATraUc69YriId1mR2QEwZg2iGmc4vbboxkifZu
KbRfkhL4iKXy8Ni/bFaCH5dy0VvpIW96/4bFWvUAIK7aUbzo/qkIwNUOkx6bAINZd/GYQGix7KJX
2inirNWHtfc1HzQTlp0ljMRK8fJw5EOyQbnfBDI2SPzuCXLNHueHmtlhazm5ZjHFrUvWTcgrnzf9
ACv813jSuhVYvIEjOnklZ5EUBqV8mrU8MPBmeiVB4GhTMHjZU+nKvHXcLVzD2sFPaIQjANvfxldb
YGZPIm4tIuBZ7YEWmdFiEx0OPoIj2ERJOfDqLFSG+NFhMboC2plGDr7/MqgVhohV2TMwNSizc8F9
InsDMwi9SGuGXhKLdFmrzX6J2mBu5+cHjBcBui+PtziZgmEM+uje/WRLMI7zeb4lbBJMoGTh8a9B
CmwfwlVQOxiIi/jJV7WEdbnd1GLr1vSN+fNmiv86nGheii8tXiHxFPXGB6hlYewkK4s4UzL8RfYJ
vSQK17m9wAP953jUveHVdGFmL8vjC8i6Qlxz0R2+QxlbDOkWv+0ZhKgvi7AWHDyARdl5UUrsmUUc
R/y91l8+64ADtFU4oPGCeaYF7ws8EBTSAG0SX0Tld0+jFrucMRS+YdelSG/P2ioDGvCH9WnGuaxs
pCuBGOx1uBzeH+AnxYfgNbwwu3yePwhSAIc421V+TIsVaKTxqOdsWeI8m/fi+rzXS3vEVuwZrIOH
DYpd1t6igxrOoCEC4uOnIuG7B8BzUtiJdQpZslLihFxmCJ7MwImlEYmn2OH2DDSjVz7pJbZ/m4bL
/XfA9FecsxBfZVFJq1zvE49DuU/ZfeDT2bLQcXTh7K2Su41vhsCiKU03wpAuDlpu3AOB5bxO4/mE
oW6INCuin4HMlmsifCu0aYqGrWtWjD0S3p4ki5RkuXLTXS4JHOpwW2G0rFazo31OJ+pwU6rtOXY8
kG6gOKvp843qpiJ7wI2nSl1btm2vWavxw+0yKc2rU9n7sYGo+/z2hlg858SSueJh3QaUM6DhqFjI
rGxalBzJLQeCVNlxLl3wiuZvhb7NGdSKqeYfm3keuGR3OSdmq8IUOIWBN4qd1+fj1NY/+VL5DSct
irbOQzlQc9WDXZEk3OOHVG/gl12jsJ3JNFreMFJlHaJRKBfahKLQaeRKEYVsAd5BzcpSsXgqifEs
E99vq71zu58V25aZgT3+cG8LJpY7qe35FZgQlSzIvzMN+Ts4xQv/TfwkAlcBDrazahEpO3GKFe7T
6zQmbfu8YiqDe13+tVAxIU0whXBhfO9tK7ENMSPJEzITDXffvP2osGEmXYgbLemsK2MWO3fcCS3w
Q+LKyA0OEk112LE5MBQ2qe2KbowzCkCgAKwkYbbT5SrGThF3id5tF+p5ertYSB3l4XWSQLA1Ad54
jBNg3hCzIbIqi99TXkk6AFnyOA/ncVGtjrxqpCXjWv+Ihtbv6KYVB1W2rqos7So4tPEsTHe/GT4A
k+kP8+2PAFr/vx7T7VuamoPi3HpN5wnG2hlxzKwK3WLMmQRlI4CBPfeY1nHuLzk0/1a4r1ZeYO8q
0k506551oVVnioHYNNKbtDaPVV2uD/dJk9FLxQmCx5EQPxB1HmxeuVgda3ntlISwZ3v822PAGM5x
PAHGPE5DORPco3r/SNNNKg9LAWJ2Pn5SsWUwFU6Fs/iIyG+NU2j8j7KzcxQo5WU5Zj3P2KRTPJhK
onceX++OgDuIw/l22K8g6YTYdlv8o1a1OX5U+xUhzFdusRr+OiCXwquAzNVVuW03Iqp0GPzW2Ne3
Zbayb1tusBYKcIxGddItkAvlLPkoSCneQskOylswkVw47TFLXdzzrszFKZflDy2A0z7N9zvBoQcP
UdlMH761XH7exgHEqeSRJlHapGcglqTD2rPNLd7OX2XOnu0XEBjMVdJCH295VbQah4obDG/f7BO5
dCcDNIyk12qKfFLusQhJrU9uh0irPR+CoLFIyVlW7vmWSSY293F7KnsPpJUOBJj5mZHSa+uZqGaG
Tlbs+LbyV8NqI2VfHfa33nzUCqRX0oTHVYlkF2Py/nWebCf0kTQsY3qFfivSj4uolKIoJHpZJGFE
HME+8Y6h+np3S6veb69AqKmsFDaIEf19EjiXtvc63ZwrxyXr+3Q6rUHJ/dqQC3lM2LQbd/Ef8BtM
nbcYfAtUU9MXfaM8uowd6hqG5OYJOV8KBZFLnBvHr0IDR6KtZGlLh2Lju/i3KaWV+eMFP92Y1+DQ
0QxDVcj2FTspmkuTMsRSDFhLYltXKqktd5JE3m8E6eYC01gd5oP7uIhWDrIILZ/uazJC1/DdVkZU
uk5KnWcjXZFucumvlQsxIJ51CSZPac1qBxMBuWX3nhlb+sTr8573SyhGkKDxc11wp/SSKCaMF7ZH
tbfSAxFcDRrgqmi6Whbtnh+A1n7pwsnlOO9gfVv2uJ80hUKt3FIrUxb5HnPPnx2N4qX6CB8H2+R5
0tEZlr/gdY/ArhbCx9BWgii5FBiCI0MSQUVIIqtQsnGY7B0FkTU138pC9QxXl1LpYdAlkc13I+6z
rVV9tcPT7z8AONjOqiLlQElR+AslDscif+j4WRd2dz5XCe8UYig3kjSplKQJy64VFXVU81ipuc8p
mENim0wSSbu+lPjERm3/dbpg48YOdmXLY1WfWakET7ds0YXDvmAKSZIhWEoKpE7NBY0/WqzOQUC9
85g6kLKQNuJD5OnaAz3K3G6izNa0hpoII3T+DBT+A2J6/6zXJPMh1ptck8unUCQeSp7s64pHBRsO
dhayguWubeJQ4SgfZYV60Gyd/uaHVvkxotE+PMr5VJLggbSHu4U1pkyZj3isW0yM7s7vJ+o12kg9
id0u3sb4af5UVlg3oby3xYmI2PSXRD4mF7OE0VIOW8Th/jVVwFFLD8LB1iGmJy5Pra8oufRa+0Ky
olMqmXqJuZ1V9XffWpmLzGX7MfWX0vtP2ewFOm+mFKk12/9tKsFecImITUN2hGZWKBVYbDHs8p+r
pfbWKLIaApbTcolb6psInRFF83dioeKmyoRWqdYFijnt2wNmh0CdIyDDk62cKxeex+UbVX7gtpDe
5aHJ8F5M92aFUunSZ5KMiNmHilnIqk58KwEoprWCKDo7iq5kU6WTs3aYtUbTRttgZVDBgs+Bu8dK
vSWrB6QhvJ1kUShaSKzEcm+bJuwR2t70/TC/viqzvPNCzqOv1QL2kTxFGVeXf/i5unSBoKP/Rfnd
Vir6ihh9hZYczCUhGEi+ve+66CQFE/KdouRY6QDrg/lPKxYQJOXwAeu5vwOAG9ZPuooPUPiLJvly
pkIZ3D8TYmjexjdXtdKzsDcHsheypG8Wru71rHkrfaaYQWhkW/2ZOO9eNCSlMmJSEbZaDF7vP91u
w0+lOqQUK3xyRZnywg/WZqJVJYE4VRR6K5XbP8mhQhFEG0lWhGOCcaIm1R8mDJTaixyQPhaBWKxj
UMoXuvC2XB+UDTGqXYYNR+GVVF3wUsmUVsBB6bWK7QxnGFi4FlHpnkzB3gSf4DWfnU9MWyMZqlg7
7HwRCKj8usa4KYUjHav5R3sh4z0W7gcS779jRovHdboAK5ql0UQuWBE1DW+zVRZoWXG+uexkqXsL
Zgtr+x0FHZTq+raRbGAm477WS1JWUt2IrQcLCimVOuCCmzLdau19qdYeH6myzlqyJ1fVi5EaGCNi
nsOyu0jIQdOQ9KBRn4Q25ViOisZ2FEJ3Uhn8WmpnjsC2nyhBiF7S9i4qpUJNU/ip+ns9HaXoKa+l
xS13mJb2dptOyaruLC7XtlYzdLwZgzZhPLMD9/UCTi//z3j4lqRFJsUSs7LeEaPK2APsV7ftB07e
0COEFQ+B+kWHTIzS9FdY+akQNQsK02iYEwf2h+eduDZeY+3DTM7zOkEP7n1x9Z7K7ReSkLFregrC
AGIjTKdTJGnFig49akWgIC/z5RAKf4j4uBpsbdc5kzWQvW1cEZpiGbWdZIb4KCQZI4zTD2l5wFws
7D0OJkW7qIs5KcW8Ymzu0dQIbNGVS6tHUTFvt18ZFv3NPMt2VjnmRS9HdXvFki/CC7bNO4XySSb6
xlmZK5+Iv+IjjLvN/aIupR934S3kAZtyvN/nj3gjL12bf3VsDrISi0npzi7ez+H0CwRl3UDWVGw7
F4MQqClvyJ3A5zCIDBJq+PeYovuucEgmlf0+hR6XDx6ITvTB5JlUFh16BrYrJuUaeIkPZqZN63hK
8OFOJ8PbSVBV0j05qDZVi+Ur4AYRJh1MwAEv5D/RG0oW/pdVGe/EkEuUecbyRe9FdXgsm/uPmEyG
qYbTXx+KlHIwMWLbw0b9uU74f5nf4LdSQSDP94h65QJsmeLh9hIjPl+QFcO/eD2FZEz97THfLZ6B
NYwVSOvGo9dvjSqeEV2MG3WGJ/SNcJOgEUIJSDMlhnVmdfVlO14RG61kn67RrG0Lo/FOFU+qFa0/
9EERfmO6HM+PxDgBirGJFfhrryIlykH07BiZQmq73tf7dVh3nmoFKzW/YL4ZV/kNxu8iWhq8X4Cp
h3CV3jQiUg1kAsxHvI0AeZDu2+CesweLdvEOD5eQChMULO/Hq/ldmMHW7Z4QUTbR1pLXYkYtVl5J
dlwptuKgbU4rsGE79leKAKp3qTWxOVrTl0XWShYVBOJuN0zX83pZDXua7A3RPqBlvt0G44gNWNKi
5bJ6qf9qoyJ3alu/GsjLd185NLRMU5lIsV0qyzWtkIkZ8qewjdIc2Yq8eHft76/TqxHabk87+rer
jOfZQdBU9RcOymiZ23CgQKDOaZ0U/ntcHssTtsqiLFbM/kYyGaUi9wuWdoI2G/NnvSmtABMBxQ1O
A0sNDKRqiiaexEWSusiXZdaz8Fvuw/GbmuDuGykmTwtB3rZRAnThzL1NJ02dl3FbhtWg7I0UtrIe
+rv663NmS1IE3tbecC4GTx4VsVmjViFWZFVc9Yp960okuJQCH8mUH2EDJesYWtFGsPBtMFcOUtJK
loG5rVh0ZjGosrxVZJhc9IYR4xfsgBlT5S9VHc9p7XUrDn+DDIoyS4dsHgW7hAlcRdx2ok9hdvvH
y2n8hJSit+1O0+vriAhgBASmZTEKMWlWKUEGFjoFOW3Be4U4zp722E0+x2XFSeuvPpcdRM/GPyov
sN12xJdfS28LKe1fSnZryFtw5UoSsM8l3t6ZlskZOgLLGgcmFPYK2bJl/XHmdS+FJqk4FlprXQ2b
c54SxlleNNLesrxRnnoTLz50+Zz7z6vyqyUznVlz1xfrO1Skh6JjsWWM3WUuzqpIMRkigQNTKScp
4lO4UPsp6U8UhVjlmhXtHkStRip8IAMsEciqelGWBRWuCTXLUGZYz6eVp65MhWIqzgGnZ3PaRjcU
kStq32ckG/zY+HF4ZZOrW4gbH3RXVopCtgbOo863mXUazBC31IiMxZEqWsHAiodMgtoKbZHlSr2g
yHnJ/EfYbJDlAcxf8tMPz8ek/UzhfwZzFW4GEkWYf42oNfQpHQY/0Adr/ztXnHviyIsd9zFdzQr9
0lp4fJtx2OhvKltU4X12fM2/vNpsJVpm6GQ8FfmlY9CWVOM3bqvTkeFO5tknSyZ6MU7IvWjExqd/
p/gzBo69HQChWEWwMLeWNzZmhQIM1JdytfhTXNZZ7yA//kQyJiVCOIiF33CWK3WrQaWgnzFqS7KZ
m/NVwDXRJYz0iPjukEMiIsTLYml+kh1DiCVhzt9ZZTL5KSn3NRcVhNn7BLauUjvllSlOGnSouC+3
cfhG7AU1TwvZ7Ip3X0nZdG/yXLB+wfgY31dX7DR9jBc1wJEXbTyJEVgxOyqIWQaHQ2fjoTOcuvkT
Mu4BAuS+AEIuFsZluRJpZB4mQ0/Jyk7xJLyZyyajEVZL6HbBIFcIzBu/5nhfE+qWR7W8OkejY5pF
OvXlfpuOSjEVK/jihvAaoWNif68OpyeU6ehTqRqvTDp3WxvjBOebmn4oGWtS5teCW6PYsWOknD/s
Do2Xex5GwlbXfPxcQkTNMsXs51EsvzMBSpCszn0VAEVWSJXeYfJ4X9pYvLe/y83cEWkRy5WzQnmY
fRECWjVCHSGMejkM0Ci3Qzgwd4xPM7msrWRotu1o1OJAX77IjJcP2VpXHKpxTK2rzkRtWyjuF6vz
Y1j4z2UOrNBl2VnzwKIkzYqqTpy6vN+my7cDIDleHWCsckpdvFIQg7n/gAxuK4JVy9aBYuBVDAqz
xxagTIvR7qv55X4Yu9ZMgYpuC+mVWAWOxa6GVwE2Z32t00LwmBo0cCEqxT0xBD1uwEKzGEOwVRRZ
2f63z1ihTy9WApSVUhukwrzxyrULgiYHYLdK8YQIjm1DVYB1zVxROow9AdOcJdcLLAStmm3I9LAV
YQ59JOHWa/lshqJg6J3mI5gGSuFDLjscLMqnBPkqKaq1xq5tUeLdihvFihJLdS2zg3mClKyq/Bg+
bVwkVeNWK5i5O/A/SFPwJjzYY195BGrbJKPAvBaixXULZNqB4HewAiEx/IQyUqWU2LdG8ZOyZjtV
HjA3MmHHpXvAjfIcOz2388WSuFasSHX12qdxMcb0CabV+pkZaVgBUZ8+pwEh8mvO70Nt4pS5PV7m
nyoBjIBCI9Pzyp7EkAaxre5j/m0ynADNl3lW9M1hUwuWK8n+XsSnEGu/UgXwTQK2+msn1oi9YPwl
Kg+xCR9i6cNz6aCE2m+cV60CLLADI4fkDAdZxqz+7v5N5Vm326zk6tLugZEVZ7hkZa2IhFYqf/ta
jvaXMlWVtFRjDJ1/7uTUPheb+vbxhwLMzExf5qtJAQKKDGDpvvnfEDciUaNbMOVt8zV5ADpxUItx
xfro7QtfmZcKkRVtW0igw0J3uRL80vKNvF1MyTt2bRzBmu5N8auVBtEUQkhKdImYB7xg3wMAKS8y
DisdDgwJ4L6TTmeu1KLDqtZRsst9uIEBdqMBn3vAu1mBQpBmILkaq+JVbF+xcQFaxnFoyvmgqoFc
zsPC5MHxsJlOtVZLaFAT7A31+AfxjAsSr0ghWEJiO/jYnvVOj21ZnC3RwuNfjISY0PdGMaSjbZFe
z+V60Ot5OD4VjilWUCcKyrCtRrmAKgxwd0Grlnp5VdaLRV0CWIQiIPLi1x95qhwrj3fUBXXG4+e0
kHxO1BmLldCX+UVThXk8Rs+dw7RnyOrAOGrfF0EWdgQExQq7rFCiI72IoSaNUdg7P6GNR7AD1fO1
uSqi8g/w1V6my8l1MSuPrpcGJ8Fr+Xeat/GfYwpJSAauSLgJimfLywS9vs8KJRrei7XXcoG7chb+
hyEQYuMVLrUGtaaIcgDxYEVyyy2jrAZib5dnwXgREhldkS7B21Vw14hq+YWmY5LMtpl0j7rlCkbo
LJXYVLkjYaMI0bYXo5Mb2/Ey78175yy3gnA+pWWO8HsHkKBsrBKTC7mSPe+UIhl55smOqsBcmX/l
35jhtPf5Nv0G0Qe0XPRZZgwiqIVYVNtzUy0NgMJz+QCg4/A2I0XfGnqNMhnSTgTCvp/ErA05e3Ic
Lt/JmBMqdJSrF1smnLVkHiC87OloOycw3oM1sKrhXtRiHH5rw1FE/jTeCd3V2MlaOoCHbLwc3DsH
RQc/Y4l/FlaHleqVB7ncLruzaiMBo1dLqsJGh78EjVHkUuvDZnZnojOgeYrIklJ+Gz/tKJaL0UGP
4z0Gx1ug1Kcios0gAww4mFd8Kg9dE//atusW4fP522MwlhKOuKLQNzzFOBFrnxXh47keAUUAUn+5
8vvd+ik2WpR2nDTVWr+Py6j8rs1rFG7YsrW95g/8ry84BvxuLvUCLt1tON5jc9ngPfWWWoX2PAWt
bMnLdJxhTtICE5OgMCWK0kN0+pVOWIB3mxc7sxsysOd4TSNSqf1qINuU2zKz5aeRF58Ho2RndTPd
+jl2iZcr8P0fo4+PPmzWD3EghWVKN3X6hq4xSEJDS7ua0rOENxNXZlLY2TMEBkpb62hcUCXQQGlI
h99vSrsMLaGWHoaqm+i7JnwSFs1E/caWxsA34PVYbeZfQKX8nH+/kHdoHfLx1Xhph48BOix/DOfT
aNSH8vv+GTOEidN8hziJ8tv+4TLT82M4g7A1j39czKGrL7CSrvk+/+l+U++m8uzBIgDDGR4rBXjO
4+XN2DlGxLsR5TrbeFHAWnLG48dwQHlqHN0BYMi0vRSBFCssvvaVBpePN/wIs+xRjO6uasQZQdPl
m/JNLg3tMNu+UCLu9TZ/EFA4TY1XKImjpR4X8IXvxsRb0Ag2mu1NodFKq3Fj629H46zHPy7bELu+
tWx4fKAjBD3IYIun9lF6/HQmA2xu0u7gAAd0QcP4siikammqzYZUgkQjYdYn76KWBkxhyeThNNyH
w0OZJdOVbJACGirWUkmfXVXIq33mpunjOt80SmXITa6g8PrQPspC9in9tpXdirOYQrZRvmZcn+FK
M6BAUxOGbwt+FB0S55GXsDk/mIBaKJ/k6ydQPgqNiatbhR/QTYPn4Yu3DjYsJJPl2Kv4kPoVZE4k
RipCo1V5Wr5WzdK6HYHcK1hFUcHKUf6BCu60e6aC/Gz+WaHinkNr2VJYizMxkMMWI7CP4xUqhEdt
cX6LwPhVFV8c/DP/AW2xbbhYgSqBZh+KT4WMm17SBkMm/cRXbQnWDKLK61UzB0v4Po0/4AVD8AZs
9ZtGz42IUw5q+f5WaBT8boLhuAGNtZ7BENNOhnE5Hxeo8PmaaI73fPB4kmP6shQ2ejsyxI5cu8KW
PSFvVrBlUgTb/gXyhLY2z1cYhBXWdoUALEYdNK73zBHMQnq5zd+M808EjdOC4aGfBxRKGq/5F175
FkdRThhXrtbOy81IbANYsuN5upKLbhyH5GrYBXbrBHDp8U0AXnGb0HlXb7Fh79nL9y3za2zADhwt
zaJPsxXUmr1rRP1GoXHRRo9fJzCCISJ7u77P5/ntp3ZW/k1iF0MpSWeb7LO6xzie1gj4q8ZiDbsF
X+ASYXzo7zEXsah6pPQaACwLC0jxzLJJ/vAshj1Y7WZlICPmVyXBn/NeGyTjPZDg4GweWDg4nd0q
L904oOG6wmFJFXTnfDxPGXY1bnQmOFrLdEyJxdqvCbLDfS3wLzYzLo/X1+nTGOlOq2gcnKeVChJF
rLddJJuNniK+AyiLGUOlt/m87JEind8v/KOkq8L3qmrylvFuvq4qZmZorOEFCYu3imYQlBmCqT9r
x1X7Z4p4vyVP6x3n24WmVelHlYcCNxO1krYI9pQw6Js1u2S2bjx1krh4uw2nibJXALsFxRKntYNJ
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
SwECHgMUAAIACAC2EytKUrlpcno/AACyEwEAOAAYAAAAAAABAAAApIFwtwEAY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTIxMjAxLXNhbXBsZS50eHRVVAUAAxgJdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACvEytKCZFGE/83AABvyAAAOAAYAAAAAAABAAAApIFc9wEA
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTIxMjM1LXNhbXBsZS50eHRV
VAUAAwkJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACJECtK2QbiyOBAAADhJgEANwAYAAAA
AAABAAAApIHNLwIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTcwOTYt
c2FtcGxlLnR4dFVUBQADIQN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIEQK0rFfuMyHTgA
AGfJAAA3ABgAAAAAAAEAAACkgR5xAgBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxv
cG1lbnQtNzEzOC1zYW1wbGUudHh0VVQFAAMSA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
PBArSgAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BrKkCAGNyeXB0by9VVAUAA5MCdlh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAA8ECtKAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UHtqQIAY3J5
cHRvL3N1YnRsZS9VVAUAA5MCdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABsEytKJeDTCCwA
AAAsAAAAPgAYAAAAAAABAAAApIE1qgIAY3J5cHRvL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LW1h
bGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAUAA4sIdlh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABsEytKMDu4sUsAAABoAAAAPAAYAAAAAAABAAAApIHZqgIAY3J5cHRvL3N1YnRsZS9y
c2EtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy1zdGRlcnIudHh0VVQFAAOMCHZYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAOxArSgAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BmqsC
AGNyeXB0by93b3JrZXJzL1VUBQADkQJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAADsQK0oA
AAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQeOrAgBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvVVQFAAOR
AnZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAbRMrSiXg0wgsAAAALAAAADEAGAAAAAAAAQAA
AKSBM6wCAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LXN0ZGVyci50eHRV
VAUAA44Idlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABCECtKAAAAAAAAAAAAAAAADQAYAAAA
AAAAABAA7UHKrAIAZGlzcGxheWxpc3RzL1VUBQADnAJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAHETK0qjV/3oUAAAAI4AAAAyABgAAAAAAAEAAACkgRGtAgBkaXNwbGF5bGlzdHMvZXh0ZW50
LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUBQADlgh2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHETK0rylpXVRwAAAEkAAAApABgAAAAAAAEAAACkgc2tAgBkaXNwbGF5bGlzdHMv
bGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUBQADlgh2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAHEQK0oAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQXeuAgBlZGl0aW5nL1VUBQAD9QJ2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHEQK0oAAAAAAAAAAAAAAAARABgAAAAAAAAAEADt
QbmuAgBlZGl0aW5nL2RlbGV0aW5nL1VUBQAD9QJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AKITK0rZYowX2QEAAAoUAAAoABgAAAAAAAEAAACkgQSvAgBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1lbW9qaS1zdGRlcnIudHh0VVQFAAPwCHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAARRAr
SgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BP7ECAGVkaXRpbmcvZXhlY0NvbW1hbmQvVVQFAAOh
AnZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdBMrSt0hw+1CAAAAhgAAAEEAGAAAAAAAAQAA
AKSBjbECAGVkaXRpbmcvZXhlY0NvbW1hbmQvY2xpcGJvYXJkLWFjY2Vzcy13aXRoLXVzZXItZ2Vz
dHVyZS1zdGRlcnIudHh0VVQFAAOcCHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArRMrSupo
zqKQIAAAo6gBAA0AGAAAAAAAAQAAAKSBSrICAGVycm9yX2xvZy50eHRVVAUAAwYJdlh1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAABvECtKAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UEh0wIAZmFz
dC9VVAUAA/ICdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABVECtKAAAAAAAAAAAAAAAADAAY
AAAAAAAAABAA7UFg0wIAZmFzdC9jYW52YXMvVVQFAAPBAnZYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAhBMrSmzEqj2MAAAANAEAACYAGAAAAAAAAQAAAKSBptMCAGZhc3QvY2FudmFzL2NhbnZh
cy1saW5lRGFzaC1zdGRlcnIudHh0VVQFAAO3CHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
VBArSgAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BktQCAGZhc3QvY3NzL1VUBQADvwJ2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIMTK0rbCNNCOwAAAD8AAAApABgAAAAAAAEAAACkgdXUAgBm
YXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUtc3RkZXJyLnR4dFVUBQADtQh2WHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAGYQK0oAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQXPVAgBmYXN0
L2V2ZW50cy9VVAUAA+ACdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACLEytKWCpndTkAAABD
AAAAMgAYAAAAAAABAAAApIG51QIAZmFzdC9ldmVudHMvZGlzcGxheS1ub25lLW9uLWZvY3VzLWNy
YXNoLXN0ZGVyci50eHRVVAUAA8YIdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACVEytKMLVt
4zkAAABDAAAAKwAYAAAAAAABAAAApIFe1gIAZmFzdC9ldmVudHMvbW91c2UtZm9jdXMtaW1hZ2Vt
YXAtc3RkZXJyLnR4dFVUBQAD2Qh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFsQK0oAAAAA
AAAAAAAAAAALABgAAAAAAAAAEADtQfzWAgBmYXN0L2Zvcm1zL1VUBQADzgJ2WHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAIoTK0oqacw+agAAAGwAAAA7ABgAAAAAAAEAAACkgUHXAgBmYXN0L2Zv
cm1zL2NoZWNrYm94LWFwcGVhcmFuY2UtY2hhbmdlLWJ5LWNoZWNrZWQtc3RkZXJyLnR4dFVUBQAD
wwh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIsTK0rjUJJdqwAAAOoAAAAzABgAAAAAAAEA
AACkgSDYAgBmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoLXN0ZGVyci50
eHRVVAUAA8YIdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABbECtKAAAAAAAAAAAAAAAADAAY
AAAAAAAAABAA7UE42QIAZmFzdC9mcmFtZXMvVVQFAAPNAnZYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAixMrStsI00I7AAAAPwAAAC8AGAAAAAAAAQAAAKSBftkCAGZhc3QvZnJhbWVzL2ZyYW1l
LWRpc3BsYXktbm9uZS1mb2N1cy1zdGRlcnIudHh0VVQFAAPGCHZYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAZBArSgAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BItoCAGZhc3QvaW1hZ2VzL1VU
BQAD2wJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJETK0ohj704MgAAADMAAAAsABgAAAAA
AAEAAACkgWjaAgBmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVU
BQAD0gh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGMQK0oAAAAAAAAAAAAAAAAMABgAAAAA
AAAAEADtQQDbAgBmYXN0L2xvYWRlci9VVAUAA9oCdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACMEytK2wjTQjsAAAA/AAAAUgAYAAAAAAABAAAApIFG2wIAZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJy
LnR4dFVUBQADxwh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIwTK0rbCNNCOwAAAD8AAABT
ABgAAAAAAAEAAACkgQ3cAgBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxv
Y2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUBQADyAh2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAJETK0rbCNNCOwAAAD8AAAAtABgAAAAAAAEAAACkgdXcAgBm
YXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLXN0ZGVyci50eHRVVAUAA9IIdlh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABpECtKAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UF33QIA
ZmFzdC9yZWdpb25zL1VUBQAD5QJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGkQK0oAAAAA
AAAAAAAAAAAXABgAAAAAAAAAEADtQb7dAgBmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL1VUBQAD5QJ2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJYTK0o5AcvdQAAAAHoAAAA1ABgAAAAAAAEAAACk
gQ/eAgBmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1hYnNwb3Mtc3RkZXJyLnR4
dFVUBQAD3Ah2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJYTK0o5AcvdQAAAAHoAAAAuABgA
AAAAAAEAAACkgb7eAgBmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbC1zdGRlcnIu
dHh0VVQFAAPcCHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlxMrSuSKx0M8AAAAPQAAAEAA
GAAAAAAAAQAAAKSBZt8CAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xsYWJsZS1z
aW5nbGUtcmVnaW9uLXN0ZGVyci50eHRVVAUAA90Idlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABvECtKAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UEc4AIAZmFzdC90ZXh0L1VUBQAD8QJ2WHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ0TK0rrZJHQhQEAAAoKAAAjABgAAAAAAAEAAACkgWDg
AgBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItc3RkZXJyLnR4dFVUBQAD6Qh2WHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAG4QK0oAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQULiAgBmYXN0L3ht
bGh0dHByZXF1ZXN0L1VUBQAD8AJ2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ0TK0pgU3Uv
LQEAAGACAAA+ABgAAAAAAAEAAACkgZDiAgBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LW5vbmV4aXN0ZW50LWZpbGUtYWN0dWFsLnR4dFVUBQAD6Qh2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAJ0TK0qTw4trCwEAAPIBAAA8ABgAAAAAAAEAAACkgTXkAgBmYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW5vbmV4aXN0ZW50LWZpbGUtZGlmZi50eHRVVAUAA+kIdlh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACdEytKf/IP3PAAAADmAQAAQAAYAAAAAAABAAAApIG2
5QIAZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlzdGVudC1maWxlLWV4
cGVjdGVkLnR4dFVUBQAD6Qh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ0TK0qhcbfL3gcA
AO0YAABEABgAAAAAAAEAAACkgSDnAgBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LW5vbmV4aXN0ZW50LWZpbGUtcHJldHR5LWRpZmYuaHRtbFVUBQAD6Qh2WHV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAHAQK0oAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQXzvAgBmYXN0L3hzbC9V
VAUAA/MCdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACgEytKTvsg+IgAAADnAAAAJQAYAAAA
AAABAAAApIG/7wIAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQAD6wh2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKATK0r9oi5kjwAAAO4AAAAnABgAAAAAAAEAAACk
gabwAgBmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAUAA+sIdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACgEytKz49mDlAAAACgAAAAJAAYAAAAAAABAAAApIGW8QIA
ZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQFAAPrCHZYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAoBMrSoFKd61LAAAArAAAADQAGAAAAAAAAQAAAKSBRPICAGZhc3QveHNs
L3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA+sIdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADEEytK24osS9oCAACuDAAAEQAYAAAAAAABAAAApIH98gIA
ZnVsbF9yZXN1bHRzLmpzb25VVAUAAzAJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB5ECtK
AAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UEi9gIAaHR0cC9VVAUAAwUDdlh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAACqEytKAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UFh9gIAaHR0cC90ZXN0
cy9VVAUAAwAJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqEytKAAAAAAAAAAAAAAAAEQAY
AAAAAAAAABAA7UGm9gIAaHR0cC90ZXN0cy9tZWRpYS9VVAUAAwAJdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAACrEytKAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHx9gIAaHR0cC90ZXN0cy9t
ZWRpYS9obHMvVVQFAAMBCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqhMrSj7MEZgtAAAA
LgAAADoAGAAAAAAAAQAAAKSBQPcCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xz
LWxpdmUtc3RyZWFtLWFjdHVhbC50eHRVVAUAAwAJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACqEytKpdcToSUCAABdBwAAOAAYAAAAAAABAAAApIHh9wIAaHR0cC90ZXN0cy9tZWRpYS9obHMv
dmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tZGlmZi50eHRVVAUAAwAJdlh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACqEytKCX7ZZaIBAAALBgAAPAAYAAAAAAABAAAApIF4+gIAaHR0cC90ZXN0
cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tZXhwZWN0ZWQudHh0VVQFAAMA
CXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSuxt6R1qCQAA9S4AAEAAGAAAAAAAAQAA
AKSBkPwCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFtLXBy
ZXR0eS1kaWZmLmh0bWxVVAUAAwEJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB7ECtKAAAA
AAAAAAAAAAAAEAAYAAAAAAAAABAA7UF0BgMAaHR0cC90ZXN0cy9taXNjL1VUBQADCgN2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAHsQK0qmB11HHQIAANYFAAAjABgAAAAAAAEAAACkgb4GAwBo
dHRwL3Rlc3RzL21pc2MvZXJyb3I0MDQtYWN0dWFsLnR4dFVUBQADCgN2WHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAHsQK0ohLKfvrAIAACYHAAAhABgAAAAAAAEAAACkgTgJAwBodHRwL3Rlc3Rz
L21pc2MvZXJyb3I0MDQtZGlmZi50eHRVVAUAAwoDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAB7ECtKX6rXy7AAAABEAQAAJQAYAAAAAAABAAAApIE/DAMAaHR0cC90ZXN0cy9taXNjL2Vycm9y
NDA0LWV4cGVjdGVkLnR4dFVUBQADCgN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAHsQK0p9
2e9bKQAAACkAAAApABgAAAAAAAEAAACkgU4NAwBodHRwL3Rlc3RzL21pc2MvZXJyb3I0MDQtcHJl
dHR5LWRpZmYuaHRtbFVUBQADCgN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHsQK0pXx0mi
UAQAALoPAAAkABgAAAAAAAEAAACkgdoNAwBodHRwL3Rlc3RzL21pc2MvaWZyYW1lNDA0LWFjdHVh
bC50eHRVVAUAAwoDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7ECtKRBXlGVIDAADyCgAA
IgAYAAAAAAABAAAApIGIEgMAaHR0cC90ZXN0cy9taXNjL2lmcmFtZTQwNC1kaWZmLnR4dFVUBQAD
CgN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHsQK0rwqjzr6QIAAEcKAAAmABgAAAAAAAEA
AACkgTYWAwBodHRwL3Rlc3RzL21pc2MvaWZyYW1lNDA0LWV4cGVjdGVkLnR4dFVUBQADCgN2WHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKwTK0oAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQX8Z
AwBodHRwL3Rlc3RzL25hdmlnYXRpb24vVVQFAAMECXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAqRMrStsI00I7AAAAPwAAADcAGAAAAAAAAQAAAKSBzxkDAGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mYWxsYmFjay1hbmNob3ItcmVsb2FkLXN0ZGVyci50eHRVVAUAA/0Idlh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACrEytKNCzbEYoCAAD3BgAANgAYAAAAAAABAAAApIF7GgMAaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2phdmFzY3JpcHRsaW5rLWZyYW1lcy1hY3R1YWwudHh0VVQFAAMCCXZYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSnUHRBcECAAAjCQAADQAGAAAAAAAAQAAAKSBdR0D
AGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9qYXZhc2NyaXB0bGluay1mcmFtZXMtZGlmZi50eHRVVAUA
AwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKpbWXrgoGAAC5HQAAOAAYAAAAAAAB
AAAApIHnJQMAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2phdmFzY3JpcHRsaW5rLWZyYW1lcy1leHBl
Y3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACrEytKfdnvWykAAAAp
AAAAPAAYAAAAAAABAAAApIFjLAMAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2phdmFzY3JpcHRsaW5r
LWZyYW1lcy1wcmV0dHktZGlmZi5odG1sVVQFAAMCCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgArBMrSkxy2UWBAQAA2AIAADQAGAAAAAAAAQAAAKSBAi0DAGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9tZXRhcmVkaXJlY3QtZnJhbWVzLWFjdHVhbC50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACsEytKGo8FMg4CAACiBAAAMgAYAAAAAAABAAAApIHxLgMAaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL21ldGFyZWRpcmVjdC1mcmFtZXMtZGlmZi50eHRVVAUAAwMJdlh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACsEytKW88GJLQAAADRAQAANgAYAAAAAAABAAAApIFrMQMAaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL21ldGFyZWRpcmVjdC1mcmFtZXMtZXhwZWN0ZWQudHh0VVQFAAMDCXZY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArBMrSgTRiXzBAAAAGgEAAC8AGAAAAAAAAQAAAKSB
jzIDAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci1hY3R1YWwudHh0VVQFAAME
CXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArBMrSn9KFE8zAQAARgIAAC0AGAAAAAAAAQAA
AKSBuTMDAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci1kaWZmLnR4dFVUBQAD
BAl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKwTK0oITJoI/AAAAKwBAAAxABgAAAAAAAEA
AACkgVM1AwBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0
VVQFAAMECXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAexArSgAAAAAAAAAAAAAAABQAGAAA
AAAAAAAQAO1BujYDAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQFAAMKA3ZYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAArRMrSgAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BCDcDAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQADBQl2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAKwTK0oAAAAAAAAAAAAAAAAuABgAAAAAAAAAEADtQWw3AwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvVVQFAAMECXZYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAqxMrSgAAAAAAAAAAAAAAAD4AGAAAAAAAAAAQAO1B1DcDAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFtZS1hbmNlc3RvcnMvVVQFAAMC
CXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSkrdyRWsAQAArAIAAHAAGAAAAAAAAQAA
AKSBTDgDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFt
ZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLWluLW1ldGEtZWxlbWVudC1pZ25vcmVkLWFjdHVh
bC50eHRVVAUAAwEJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKunDcNnMCAADNBAAA
bgAYAAAAAAABAAAApIGiOgMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtaW4tbWV0YS1lbGVtZW50LWln
bm9yZWQtZGlmZi50eHRVVAUAAwEJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKeJ7Y
hfMAAABzAQAAcgAYAAAAAAABAAAApIG9PQMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtaW4tbWV0YS1l
bGVtZW50LWlnbm9yZWQtZXhwZWN0ZWQudHh0VVQFAAMBCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgACAAAAqxMrSn3Z71spAAAAKQAAAHYAGAAAAAAAAQAAAKSBXD8DAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0
b3JzLWluLW1ldGEtZWxlbWVudC1pZ25vcmVkLXByZXR0eS1kaWZmLmh0bWxVVAUAAwEJdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACrEytKRp8hWrUBAAC6AgAAbwAYAAAAAAABAAAApIE1QAMA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2Vz
dG9ycy9mcmFtZS1hbmNlc3RvcnMtaW4tcmVwb3J0LW9ubHktaWdub3JlZC1hY3R1YWwudHh0VVQF
AAMCCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSntSKxpuAgAA2AQAAG0AGAAAAAAA
AQAAAKSBk0IDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9m
cmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLWluLXJlcG9ydC1vbmx5LWlnbm9yZWQtZGlm
Zi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKxYw9p/IAAACAAQAA
cQAYAAAAAAABAAAApIGoRQMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtaW4tcmVwb3J0LW9ubHktaWdu
b3JlZC1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytK
liSCRZoBAACJCAAAUwAYAAAAAAABAAAApIFFRwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1ibG9ja2VkLWFjdHVhbC50eHRV
VAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKLNPwm4ECAABwCwAAUQAYAAAA
AAABAAAApIFsSQMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L21vZHVsZS1zY3JpcHRub25jZS1ibG9ja2VkLWRpZmYudHh0VVQFAAMCCXZYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAqxMrSpKT/zEEAQAAMwMAAFUAGAAAAAAAAQAAAKSBeEwDAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2Ut
YmxvY2tlZC1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACr
EytKfdnvWykAAAApAAAAWQAYAAAAAAABAAAApIELTgMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1ibG9ja2VkLXByZXR0eS1k
aWZmLmh0bWxVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytK+OsupqABAAD3
EwAAWAAYAAAAAAABAAAApIHHTgMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1pbnZhbGlkbm9uY2UtYWN0dWFsLnR4dFVUBQAD
Agl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0r1yKhODQMAAGIkAABWABgAAAAAAAEA
AACkgflQAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9k
dWxlLXNjcmlwdG5vbmNlLWludmFsaWRub25jZS1kaWZmLnR4dFVUBQADAgl2WHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAKsTK0pKZ8l/egEAAA4RAABaABgAAAAAAAEAAACkgZZUAwBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNl
LWludmFsaWRub25jZS1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACsEytKo9M+IIkAAADDAAAAUgAYAAAAAAABAAAApIGkVgMAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5cGVzLWFmZmVjdHMtY2hpbGQtYWN0
dWFsLnR4dFVUBQADAwl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKwTK0pGlipqbAEAAMUC
AABQABgAAAAAAAEAAACkgblXAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvcGx1Z2ludHlwZXMtYWZmZWN0cy1jaGlsZC1kaWZmLnR4dFVUBQADAwl2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAKwTK0pnIvnV/AAAAH8BAABUABgAAAAAAAEAAACkga9ZAwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvcGx1Z2ludHlwZXMt
YWZmZWN0cy1jaGlsZC1leHBlY3RlZC50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACsEytKjT5YSNIBAABhEgAATAAYAAAAAAABAAAApIE5WwMAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5cGVzLWludmFsaWQtYWN0dWFsLnR4
dFVUBQADAwl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKwTK0pMV7WHPgMAALgdAABKABgA
AAAAAAEAAACkgZFdAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvcGx1Z2ludHlwZXMtaW52YWxpZC1kaWZmLnR4dFVUBQADAwl2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAKwTK0o6zyN8qwEAAFMMAABOABgAAAAAAAEAAACkgVNhAwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvcGx1Z2ludHlwZXMtaW52YWxpZC1leHBl
Y3RlZC50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACsEytKm8Bw1s0BAAC1
CAAASwAYAAAAAAABAAAApIGGYwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL3BsdWdpbnR5cGVzLXVybC0wMS1hY3R1YWwudHh0VVQFAAMDCXZYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgArBMrShsVi7niAQAAXQkAAEkAGAAAAAAAAQAAAKSB2GUDAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9wbHVnaW50eXBlcy11cmwt
MDEtZGlmZi50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACsEytK86JPodUA
AADiAQAATQAYAAAAAAABAAAApIE9aAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL3BsdWdpbnR5cGVzLXVybC0wMS1leHBlY3RlZC50eHRVVAUAAwMJdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACsEytKPWkLacEBAAC0BgAASwAYAAAAAAABAAAApIGZaQMA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5cGVz
LXVybC0wMi1hY3R1YWwudHh0VVQFAAMDCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArBMr
SjEtHBT1AgAAmAoAAEkAGAAAAAAAAQAAAKSB32sDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5LzEuMS9wbHVnaW50eXBlcy11cmwtMDItZGlmZi50eHRVVAUAAwMJdlh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACsEytKUs2SBYMBAAD5AwAATQAYAAAAAAABAAAApIFX
bwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3BsdWdpbnR5
cGVzLXVybC0wMi1leHBlY3RlZC50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACsEytKIIF2tpUBAAA/CgAATAAYAAAAAAABAAAApIFhcQMAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWJsb2NrZWQtYWN0dWFsLnR4dFVU
BQADBAl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKwTK0rvmGXlgwIAAGsNAABKABgAAAAA
AAEAAACkgXxzAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEv
c2NyaXB0bm9uY2UtYmxvY2tlZC1kaWZmLnR4dFVUBQADBAl2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKwTK0qSk/8xBAEAADMDAABOABgAAAAAAAEAAACkgYN2AwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYmxvY2tlZC1leHBlY3Rl
ZC50eHRVVAUAAwQJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7ECtKmqP/AToBAAAyAgAA
RQAYAAAAAAABAAAApIEPeAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvY2FjaGVkLWZyYW1lLWNzcC1hY3R1YWwudHh0VVQFAAMJA3ZYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAexArStukoxMkAgAAQAUAAEMAGAAAAAAAAQAAAKSByHkDAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2NhY2hlZC1mcmFtZS1jc3AtZGlmZi50eHRVVAUA
AwkDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7ECtKsaKNym8BAAAYAwAARwAYAAAAAAAB
AAAApIFpfAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY2FjaGVk
LWZyYW1lLWNzcC1leHBlY3RlZC50eHRVVAUAAwkDdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIA
AAB7ECtKfdnvWykAAAApAAAASwAYAAAAAAABAAAApIFZfgMAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvY2FjaGVkLWZyYW1lLWNzcC1wcmV0dHktZGlmZi5odG1sVVQF
AAMJA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqhMrSl5bSCdzAAAAdQAAAFcAGAAAAAAA
AQAAAKSBB38DAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5l
Y3Qtc3JjLXN0YXItd2Vic29ja2V0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADAAl2WHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKsTK0or14ijcgAAAMUAAABHABgAAAAAAAEAAACkgQuAAwBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jc3AtaGVhZGVyLWlzLXNlbnQt
YWN0dWFsLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0pxB6B15gAA
AEYCAABFABgAAAAAAAEAAACkgf6AAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9jc3AtaGVhZGVyLWlzLXNlbnQtZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACrEytK96Dwb1QAAAChAAAASQAYAAAAAAABAAAApIFjggMAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY3NwLWhlYWRlci1pcy1zZW50LWV4cGVj
dGVkLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKsTK0p92e9bKQAAACkA
AABNABgAAAAAAAEAAACkgTqDAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9jc3AtaGVhZGVyLWlzLXNlbnQtcHJldHR5LWRpZmYuaHRtbFVUBQADAgl2WHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKsTK0ryFlf2cwAAAHUAAABXABgAAAAAAAEAAACkgeqDAwBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kZWZhdWx0LXNyYy1zdGFyLXdl
YnNvY2tldC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACrEytKZvhEEWgBAABLAgAASQAYAAAAAAABAAAApIHuhAMAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctMDEtYWN0dWFsLnR4dFVU
BQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0ruxlG7iwIAAO0EAABHABgAAAAA
AAEAAACkgdmGAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJl
Y3RpdmUtcGFyc2luZy0wMS1kaWZmLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAKsTK0r1ptk9JgEAAOABAABLABgAAAAAAAEAAACkgeWJAwBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy0wMS1leHBlY3RlZC50eHRV
VAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKZvhEEWgBAABLAgAASQAYAAAA
AAABAAAApIGQiwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGly
ZWN0aXZlLXBhcnNpbmctMDItYWN0dWFsLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKsTK0pxJd60aAIAAKwEAABHABgAAAAAAAEAAACkgXuNAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy0wMi1kaWZmLnR4dFVU
BQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0qGemzOAAEAAJ4BAABLABgAAAAA
AAEAAACkgWSQAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJl
Y3RpdmUtcGFyc2luZy0wMi1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACrEytKZvhEEWgBAABLAgAASQAYAAAAAAABAAAApIHpkQMAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctMDMtYWN0dWFsLnR4
dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0qVSXHLawIAAK0EAABHABgA
AAAAAAEAAACkgdSTAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9k
aXJlY3RpdmUtcGFyc2luZy0wMy1kaWZmLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKsTK0pHj+mNAgEAAJ8BAABLABgAAAAAAAEAAACkgcCWAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy0wMy1leHBlY3RlZC50
eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKqZhPyI0BAACPAgAASQAY
AAAAAAABAAAApIFHmAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
ZGlyZWN0aXZlLXBhcnNpbmctMDQtYWN0dWFsLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAKsTK0r7gxBBQwIAADYEAABHABgAAAAAAAEAAACkgVeaAwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy0wNC1kaWZmLnR4
dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0pDgo9+yQAAACkBAABLABgA
AAAAAAEAAACkgRudAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9k
aXJlY3RpdmUtcGFyc2luZy0wNC1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACrEytKEIdmbmgBAABGAgAASQAYAAAAAAABAAAApIFpngMAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctMDUtYWN0dWFs
LnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0o+D5YBJAIAAO0DAABH
ABgAAAAAAAEAAACkgVSgAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9kaXJlY3RpdmUtcGFyc2luZy0wNS1kaWZmLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAKsTK0r9zKeVrAAAAOAAAABLABgAAAAAAAEAAACkgfmiAwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9kaXJlY3RpdmUtcGFyc2luZy0wNS1leHBlY3Rl
ZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKkF1RIWcBAABMAgAA
VwAYAAAAAAABAAAApIEqpAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvZGlyZWN0aXZlLXBhcnNpbmctbXVsdGlwbGUtaGVhZGVycy1hY3R1YWwudHh0VVQFAAMCCXZY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrShDW6SqkAgAAKAUAAFUAGAAAAAAAAQAAAKSB
IqYDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2RpcmVjdGl2ZS1w
YXJzaW5nLW11bHRpcGxlLWhlYWRlcnMtZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACrEytKCE7QhDABAAD/AQAAWQAYAAAAAAABAAAApIFVqQMAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGlyZWN0aXZlLXBhcnNpbmctbXVsdGlwbGUt
aGVhZGVycy1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACt
EytKkwbXMgEAAAABAAAASwAYAAAAAAABAAAApIEYqwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvamF2YXNjcmlwdC11cmwtYWxsb3dlZC1hY3R1YWwudHh0VVQFAAMF
CXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArRMrSiyMCAwBAQAA+AMAAEkAGAAAAAAAAQAA
AKSBnqsDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2phdmFzY3Jp
cHQtdXJsLWFsbG93ZWQtZGlmZi50eHRVVAUAAwUJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACtEytK2xM6U4kAAAC/AgAATQAYAAAAAAABAAAApIEirQMAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvamF2YXNjcmlwdC11cmwtYWxsb3dlZC1leHBlY3RlZC50eHRV
VAUAAwUJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACrEytKAAAAAAAAAAAAAAAAHQAYAAAA
AAAAABAA7UEyrgMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS9VVAUAAwIJdlh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACrEytK6qKWjKYBAAAnBAAANgAYAAAAAAABAAAApIGJrgMAaHR0
cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS9pZnJhbWUtYmxvY2tlZC1hY3R1YWwudHh0VVQFAAMC
CXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSg+MOMQlAgAAlgUAADQAGAAAAAAAAQAA
AKSBn7ADAGh0dHAvdGVzdHMvc2VjdXJpdHkvaHR0cC0wLjkvaWZyYW1lLWJsb2NrZWQtZGlmZi50
eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKfBhJ7pIAAABOAQAAOAAY
AAAAAAABAAAApIEyswMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS9pZnJhbWUtYmxvY2tl
ZC1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACrEytKfdnv
WykAAAApAAAAPAAYAAAAAAABAAAApIE2tAMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS9p
ZnJhbWUtYmxvY2tlZC1wcmV0dHktZGlmZi5odG1sVVQFAAMCCXZYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgACAAAAqxMrSlmLwo0NAAAADQAAAEAAGAAAAAAAAQAAAKSB1bQDAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvaHR0cC0wLjkveGhyLWFzeW5jaHJvbm91cy1ibG9ja2VkLWFjdHVhbC50eHRVVAUAAwIJ
dlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKMMy6KZ8AAAA6AQAAPgAYAAAAAAABAAAA
pIFctQMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHItYXN5bmNocm9ub3VzLWJsb2Nr
ZWQtZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACrEytKaTmTcA0A
AAANAAAAQgAYAAAAAAABAAAApIFztgMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHIt
YXN5bmNocm9ub3VzLWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQFAAMCCXZYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgACAAAAehArSn3Z71spAAAAKQAAAEYAGAAAAAAAAQAAAKSB/LYDAGh0dHAvdGVzdHMv
c2VjdXJpdHkvaHR0cC0wLjkveGhyLWFzeW5jaHJvbm91cy1ibG9ja2VkLXByZXR0eS1kaWZmLmh0
bWxVVAUAAwgDdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACrEytKWYvCjQ0AAAANAAAAMwAY
AAAAAAABAAAApIGltwMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94aHItYmxvY2tlZC1h
Y3R1YWwudHh0VVQFAAMCCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqxMrSj5kVFGWAAAA
IAEAADEAGAAAAAAAAQAAAKSBH7gDAGh0dHAvdGVzdHMvc2VjdXJpdHkvaHR0cC0wLjkveGhyLWJs
b2NrZWQtZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACrEytKaTmT
cA0AAAANAAAANQAYAAAAAAABAAAApIEguQMAaHR0cC90ZXN0cy9zZWN1cml0eS9odHRwLTAuOS94
aHItYmxvY2tlZC1leHBlY3RlZC50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAB6ECtKAAAAAAAAAAAAAAAAIgAYAAAAAAAAABAA7UGcuQMAaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL1VUBQADCAN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0oAektg
BAIAANgGAABKABgAAAAAAAEAAACkgfi5AwBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZvci14aHItYWN0dWFsLnR4dFVUBQADAgl2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0q9RV/ccAIAACUHAABIABgAAAAAAAEAAACkgYC8AwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZv
ci14aHItZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKQiob
JJsBAAD4BAAATAAYAAAAAAABAAAApIFyvwMAaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdv
cmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLWV4cGVjdGVkLnR4dFVUBQADAgl2WHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsTK0ovysO2EAEAALUBAABTABgAAAAAAAEAAACkgZPB
AwBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3Nw
LWZvci14aHItcmVkaXJlY3QtYWN0dWFsLnR4dFVUBQADAgl2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKsTK0oW7HQskQEAAB4DAABRABgAAAAAAAEAAACkgTDDAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZvci14aHItcmVkaXJlY3Qt
ZGlmZi50eHRVVAUAAwIJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACrEytKaQLpsoYAAAC8
AAAAVQAYAAAAAAABAAAApIFMxQMAaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5
cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dFVUBQADAgl2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAHoQK0p92e9bKQAAACkAAABZABgAAAAAAAEAAACk
gWHGAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQt
Y3NwLWZvci14aHItcmVkaXJlY3QtcHJldHR5LWRpZmYuaHRtbFVUBQADCAN2WHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAKwTK0rwuerDEgEAAJ0BAABcABgAAAAAAAEAAACkgR3HAwBodHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4tYWN0dWFsLnR4dFVUBQADAwl2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKwTK0oZ8Um3oQEAAB0DAABaABgAAAAAAAEAAACkgcXIAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tZGlmZi50eHRVVAUAAwMJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACsEytK
x2FFZ6EAAADtAAAAXgAYAAAAAAABAAAApIH6ygMAaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRl
ZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4
cGVjdGVkLnR4dFVUBQADAwl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHwQK0oAAAAAAAAA
AAAAAAAfABgAAAAAAAAAEADtQTPMAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvVVQF
AAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAfBArSpMG1zIBAAAAAQAAADMAGAAAAAAA
AQAAAKSBjMwDAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9iYXNlLWhyZWYtYWN0dWFs
LnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAK0TK0qTBtcyAQAAAAEAAABA
ABgAAAAAAAEAAACkgfrMAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVm
LWNvbnRyb2wtY2hhci1hY3R1YWwudHh0VVQFAAMFCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgArRMrSo4Fa65xAQAAtwIAAD4AGAAAAAAAAQAAAKSBdc0DAGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9iYXNlLWhyZWYtY29udHJvbC1jaGFyLWRpZmYudHh0VVQFAAMFCXZYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgArRMrSrl+ZB0MAQAAmAEAAEIAGAAAAAAAAQAAAKSBXs8DAGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9iYXNlLWhyZWYtY29udHJvbC1jaGFyLWV4cGVj
dGVkLnR4dFVUBQADBQl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAHsQK0p92e9bKQAAACkA
AABGABgAAAAAAAEAAACkgebQAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1o
cmVmLWNvbnRyb2wtY2hhci1wcmV0dHktZGlmZi5odG1sVVQFAAMKA3ZYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAfBArSotjbqJlAQAAmgIAADEAGAAAAAAAAQAAAKSBj9EDAGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9iYXNlLWhyZWYtZGlmZi50eHRVVAUAAwsDdlh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACtEytKcdklIz8AAABHAAAAOgAYAAAAAAABAAAApIFf0wMAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jhc2UtaHJlZi1kaXJlY3QtYWN0dWFsLnR4dFVUBQAD
BQl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0ruKQB1wwAAAGoBAAA4ABgAAAAAAAEA
AACkgRLUAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLWRpcmVjdC1k
aWZmLnR4dFVUBQADBQl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0qt+t4CUAAAAFQA
AAA8ABgAAAAAAAEAAACkgUfVAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1o
cmVmLWRpcmVjdC1leHBlY3RlZC50eHRVVAUAAwUJdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAB8ECtKZC/bcwgBAACVAQAANQAYAAAAAAABAAAApIEN1gMAaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2Jhc2UtaHJlZi1leHBlY3RlZC50eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAACtEytKkwbXMgEAAAABAAAAPQAYAAAAAAABAAAApIGE1wMAaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2Jhc2UtaHJlZi1udWxsLWNoYXItYWN0dWFsLnR4dFVUBQADBQl2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0r2NF5UbwEAALECAAA7ABgAAAAAAAEAAACk
gfzXAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLW51bGwtY2hhci1k
aWZmLnR4dFVUBQADBQl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0ohtQRJDAEAAJgB
AAA/ABgAAAAAAAEAAACkgeDZAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1o
cmVmLW51bGwtY2hhci1leHBlY3RlZC50eHRVVAUAAwUJdlh1eAsAAQT1AQAABBQAAABQSwECHgMK
AAIAAACtEytKkwbXMgEAAAABAAAAQwAYAAAAAAABAAAApIFl2wMAaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2Jhc2UtaHJlZi1zY2hlbWUtcmVsYXRpdmUtYWN0dWFsLnR4dFVUBQADBgl2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0qCJY3abgEAALUCAABBABgAAAAAAAEAAACk
gePbAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmFzZS1ocmVmLXNjaGVtZS1yZWxh
dGl2ZS1kaWZmLnR4dFVUBQADBgl2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK0TK0oj1NW1
CAEAAJABAABFABgAAAAAAAEAAACkgczdAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
YmFzZS1ocmVmLXNjaGVtZS1yZWxhdGl2ZS1leHBlY3RlZC50eHRVVAUAAwYJdlh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAB8ECtKd84SWhEBAACcBAAARgAYAAAAAAABAAAApIFT3wMAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jsb2NrLWRvZXMtbm90LWxlYWstbG9jYXRpb24tYWN0
dWFsLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQK0ol0CYP1QEAAO8E
AABEABgAAAAAAAEAAACkgeTgAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmxvY2st
ZG9lcy1ub3QtbGVhay1sb2NhdGlvbi1kaWZmLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHwQK0r3Z6CO7wEAAD4GAABIABgAAAAAAAEAAACkgTfjAwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvYmxvY2stZG9lcy1ub3QtbGVhay1sb2NhdGlvbi1leHBlY3RlZC50
eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtK5M/v0b0AAAAIAQAARgAY
AAAAAAABAAAApIGo5QMAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Jsb2NrLWRvZXMt
bm90LWxlYWstcmVmZXJyZXItYWN0dWFsLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHwQK0o2o8Mp5gEAAIsDAABEABgAAAAAAAEAAACkgeXmAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvYmxvY2stZG9lcy1ub3QtbGVhay1yZWZlcnJlci1kaWZmLnR4dFVUBQAD
CwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQK0oZZSppigEAAG0CAABIABgAAAAAAAEA
AACkgUnpAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYmxvY2stZG9lcy1ub3QtbGVh
ay1yZWZlcnJlci1leHBlY3RlZC50eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAB8ECtKfxHdI8wAAAA7AQAAaAAYAAAAAAABAAAApIFV6wMAaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2Jsb2NrLWRvZXMtbm90LWxlYWstdGhhdC1wYWdlLXdhcy1ibG9ja2VkLXVzaW5n
LWVtcHR5LWRhdGEtdXJsLWFjdHVhbC50eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAB8ECtKMGWYytoBAABqAwAAZgAYAAAAAAABAAAApIHD7AMAaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2Jsb2NrLWRvZXMtbm90LWxlYWstdGhhdC1wYWdlLXdhcy1ibG9ja2VkLXVz
aW5nLWVtcHR5LWRhdGEtdXJsLWRpZmYudHh0VVQFAAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAfBArSq/zTz+bAQAAggIAAGoAGAAAAAAAAQAAAKSBPe8DAGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9ibG9jay1kb2VzLW5vdC1sZWFrLXRoYXQtcGFnZS13YXMtYmxvY2tlZC11
c2luZy1lbXB0eS1kYXRhLXVybC1leHBlY3RlZC50eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAB8ECtK9cG7Em0BAACOAgAANgAYAAAAAAABAAAApIF88QMAaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2NhY2hlZC1mcmFtZS1hY3R1YWwudHh0VVQFAAMLA3ZYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAfBArStrDYACbAgAAjQYAADQAGAAAAAAAAQAAAKSBWfMDAGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9jYWNoZWQtZnJhbWUtZGlmZi50eHRVVAUAAwsD
dlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtK+G9qrvABAAB2BAAAOAAYAAAAAAABAAAA
pIFi9gMAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2NhY2hlZC1mcmFtZS1leHBlY3Rl
ZC50eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAB8ECtKkwbXMgEAAAABAAAA
OgAYAAAAAAABAAAApIHE+AMAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Nvb2tpZS1p
bmplY3Rpb24tYWN0dWFsLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQ
K0qkQrl4iAEAANMCAAA4ABgAAAAAAAEAAACkgTn5AwBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvY29va2llLWluamVjdGlvbi1kaWZmLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHwQK0pSWeupLQEAAMABAAA8ABgAAAAAAAEAAACkgTP7AwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvY29va2llLWluamVjdGlvbi1leHBlY3RlZC50eHRVVAUAAwsDdlh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAB8ECtKkwbXMgEAAAABAAAAMwAYAAAAAAABAAAApIHW
/AMAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1hY3R1YWwudHh0VVQF
AAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAfBArSpMG1zIBAAAAAQAAAEQAGAAAAAAA
AQAAAKSBRP0DAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctY29kZS1h
dHRyaWJ1dGUtMi1hY3R1YWwudHh0VVQFAAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
fBArSiaQFgSAAQAA1wIAAEIAGAAAAAAAAQAAAKSBw/0DAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9lbWJlZC10YWctY29kZS1hdHRyaWJ1dGUtMi1kaWZmLnR4dFVUBQADCwN2WHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQK0rktFpNJgEAALEBAABGABgAAAAAAAEAAACkgb//AwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLWNvZGUtYXR0cmlidXRlLTIt
ZXhwZWN0ZWQudHh0VVQFAAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAfBArSpMG1zIB
AAAAAQAAAEIAGAAAAAAAAQAAAKSBZQEEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9l
bWJlZC10YWctY29kZS1hdHRyaWJ1dGUtYWN0dWFsLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAHwQK0rbBcjKjQEAANQCAABAABgAAAAAAAEAAACkgeIBBABodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLWNvZGUtYXR0cmlidXRlLWRpZmYudHh0VVQF
AAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfBArSrSLr84yAQAAsgEAAEQAGAAAAAAA
AQAAAKSB6QMEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctY29kZS1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0VVQFAAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA
fBArSpMG1zIBAAAAAQAAAEAAGAAAAAAAAQAAAKSBmQUEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9lbWJlZC10YWctY29udHJvbC1jaGFyLWFjdHVhbC50eHRVVAUAAwsDdlh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAB8ECtKP7EI7psBAAAPAwAAPgAYAAAAAAABAAAApIEUBgQAaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1jb250cm9sLWNoYXItZGlmZi50
eHRVVAUAAwsDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtK8FUGBz8BAADxAQAAQgAY
AAAAAAABAAAApIEnCAQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1j
b250cm9sLWNoYXItZXhwZWN0ZWQudHh0VVQFAAMLA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAfBArSls+gfaPAQAA5QIAADEAGAAAAAAAAQAAAKSB4gkEAGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9lbWJlZC10YWctZGlmZi50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAB8ECtKpJ3/YTQBAADhAQAANQAYAAAAAAABAAAApIHcCwQAaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1leHBlY3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAB8ECtK/wdcPEIAAABGAAAASAAYAAAAAAABAAAApIF/DQQAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1pbi1wYXRoLXVudGVybWluYXRlZC1h
Y3R1YWwudHh0VVQFAAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfBArSluW2Q+vAQAA
CwMAAEYAGAAAAAAAAQAAAKSBQw4EAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJl
ZC10YWctaW4tcGF0aC11bnRlcm1pbmF0ZWQtZGlmZi50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAB8ECtK1/POmEEBAADZAQAASgAYAAAAAAABAAAApIFyEAQAaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1pbi1wYXRoLXVudGVybWluYXRlZC1leHBl
Y3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAB8ECtKkwbXMgEAAAAB
AAAAQgAYAAAAAAABAAAApIE3EgQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVk
LXRhZy1qYXZhc2NyaXB0LXVybC1hY3R1YWwudHh0VVQFAAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAfBArSp856/1yAQAAugIAAEAAGAAAAAAAAQAAAKSBtBIEAGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctamF2YXNjcmlwdC11cmwtZGlmZi50eHRVVAUAAwwD
dlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtKupNWBRYBAACYAQAARAAYAAAAAAABAAAA
pIGgFAQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1qYXZhc2NyaXB0
LXVybC1leHBlY3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAB8ECtK
kwbXMgEAAAABAAAAPQAYAAAAAAABAAAApIE0FgQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2VtYmVkLXRhZy1udWxsLWNoYXItYWN0dWFsLnR4dFVUBQADDAN2WHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAHwQK0oOje6FmwEAAAYDAAA7ABgAAAAAAAEAAACkgawWBABodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLW51bGwtY2hhci1kaWZmLnR4dFVUBQADDAN2
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQK0qF4hKkQAEAAO4BAAA/ABgAAAAAAAEAAACk
gbwYBABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLW51bGwtY2hhci1l
eHBlY3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtKAXX/5zcB
AAD5AQAANgAYAAAAAAABAAAApIF1GgQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Zh
dXgtc2NyaXB0MS1hY3R1YWwudHh0VVQFAAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
fBArSmxYYpvDAQAAMAMAADQAGAAAAAAAAQAAAKSBHBwEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9mYXV4LXNjcmlwdDEtZGlmZi50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAB8ECtKschBM0gAAABfAAAAOAAYAAAAAAABAAAApIFNHgQAaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2ZhdXgtc2NyaXB0MS1leHBlY3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAB8ECtKAXX/5zcBAAD5AQAANgAYAAAAAAABAAAApIEHHwQAaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ZhdXgtc2NyaXB0Mi1hY3R1YWwudHh0VVQFAAMM
A3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfBArSjqp0VTCAQAAMAMAADQAGAAAAAAAAQAA
AKSBriAEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9mYXV4LXNjcmlwdDItZGlmZi50
eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtKxA0n7UgAAABfAAAAOAAY
AAAAAAABAAAApIHeIgQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ZhdXgtc2NyaXB0
Mi1leHBlY3RlZC50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtKAXX/
5zcBAAD5AQAANgAYAAAAAAABAAAApIGYIwQAaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2ZhdXgtc2NyaXB0My1hY3R1YWwudHh0VVQFAAMMA3ZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAfBArSgl554vJAQAAOQMAADQAGAAAAAAAAQAAAKSBPyUEAGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9mYXV4LXNjcmlwdDMtZGlmZi50eHRVVAUAAwwDdlh1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAB8ECtKLYNPc1EAAABoAAAAOAAYAAAAAAABAAAApIF2JwQAaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2ZhdXgtc2NyaXB0My1leHBlY3RlZC50eHRVVAUAAwwDdlh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAB8ECtKAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UE5KAQA
aHR0cC90ZXN0cy9zdG9yYWdlL1VUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQ
K0r68EIFjwIAAOQqAABFABgAAAAAAAEAAACkgYYoBABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJh
Y2tzLWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LWFjdHVhbC50eHRVVAUAAwsDdlh1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAB8ECtKTxVlah4DAAD2MgAAQwAYAAAAAAABAAAApIGUKwQA
aHR0cC90ZXN0cy9zdG9yYWdlL2NhbGxiYWNrcy1hcmUtY2FsbGVkLWluLWNvcnJlY3QtY29udGV4
dC1kaWZmLnR4dFVUBQADCwN2WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHwQK0oTsLanHAEA
AKkLAABHABgAAAAAAAEAAACkgS8vBABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tzLWFyZS1j
YWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LWV4cGVjdGVkLnR4dFVUBQADCwN2WHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGQTK0pbBFgOogUAAE0QAAAKABgAAAAAAAEAAACkgcwwBABodHRwZC5j
b25mVVQFAAN8CHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZRMrSgAAAAAAAAAAAAAAABoA
GAAAAAAAAAAAAKSBsjYEAHB5d2Vic29ja2V0LndzLmxvZy1lcnIudHh0VVQFAAN9CHZYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAZRMrSgAAAAAAAAAAAAAAABoAGAAAAAAAAAAAAKSBBjcEAHB5
d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQFAAN9CHZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAZRMrSgAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBWjcEAHB5d2Vic29ja2V0Lndzcy5sb2ct
ZXJyLnR4dFVUBQADfgh2WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGUTK0oAAAAAAAAAAAAA
AAAbABgAAAAAAAAAAACkga83BABweXdlYnNvY2tldC53c3MubG9nLW91dC50eHRVVAUAA34Idlh1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADEEytKRSYdOdEnAADLqgAADAAYAAAAAAABAAAApIEE
OAQAcmVzdWx0cy5odG1sVVQFAAMwCXZYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAxBMrShBa
AvyDdQQAD10YAAoAGAAAAAAAAQAAAKSBG2AEAHN0YXRzLmpzb25VVAUAAzAJdlh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABnEytKs4kBxiICAAD4DgAAGQAYAAAAAAABAAAApIHi1QgAd3B0d2tf
cHJvY2Vzc19sb2cub3V0LnR4dFVUBQADgQh2WHV4CwABBPUBAAAEFAAAAFBLBQYAAAAABAEEAWF/
AABX2AgAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298747</attachid>
            <date>2017-01-12 18:53:56 -0800</date>
            <delta_ts>2017-01-13 09:27:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166809-20170112185215.patch</filename>
            <type>text/plain</type>
            <size>955551</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NGM1ZjIzZTA3NjcxM2JiNGJlM2RkYmUxMzE0ZjVjNTNjZWJiYjUzLi43MDMxYjM5YjhkZGFlNzE5
YmJiYmM4ZTQwZTg3NzY5NGMwYzI0ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbXBsKTogU2ltcGxpZmllZCBjb2RlIHNpbmNlIHdlIGRvbid0IG5lZWQgYQorICAg
ICAgICBjb25zdF9jYXN0IGhlcmUgYW55IG1vcmUuCisgICAgICAgICogcnVudGltZS9Qcml2YXRl
TmFtZS5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZTo6dWlkKTogRGl0dG8uCisKIDIwMTct
MDEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSAvIEtFWUJPQVJEX0NPREVfQVRUUklCVVRFIHRvIEZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlhYWM0ZTY2OTNhMTA3NjdiYjhmNzRmZDIxMTYwYWI1NzFm
MTczZDAuLjhmMWNjNTRiZDI3NDM5OGQ3ZDU4Yzg0YzY3MDBmZWI2OGRlMGJlMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTctMDEtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gbW9yZSBvZiAicGxhdGZvcm0iCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SZWYuaDog
Q2hhbmdlZCB0aGUgdGVtcGxhdGUgc28gdGhhdCBhIGNvbnN0IFJlZjxUPiBkb2VzIG5vdCBwcm9o
aWJpdCBub24tY29uc3QKKyAgICAgICAgdXNlIG9mIFQuIFdlIGNhbiBzdGlsbCB1c2UgY29uc3Qg
UmVmPGNvbnN0IFQ+IHRvIGV4cHJlc3MgdGhhdC4gVGhlIGVhcmxpZXIgZGVzaWduCisgICAgICAg
IHdhcyBpbnRlbnRpb25hbCwgYnV0IHdhcyBub3QgY29uc2lzdGVudCB3aXRoIGVpdGhlciBhY3R1
YWwgcmVmZXJlbmNlcyBvciB3aXRoCisgICAgICAgIG90aGVyIHNtYXJ0IHBvaW50ZXIgY2xhc3Nl
cyBsaWtlIFJlZlB0ci4gT25lIHdheSB0byBzZWUgaG93IG11Y2ggYmV0dGVyIHRoaXMgaXMsCisg
ICAgICAgIGlzIHRvIHNlZSBhbGwgdGhlIG1hbnksIG1hbnkgY2FzZXMgd2hlcmUgd2UgaGF2ZSBj
b25zdF9jYXN0IGp1c3QgdG8gd29yayBhcm91bmQKKyAgICAgICAgdGhpcy4gSSBzZWFyY2hlZCBm
b3IgdGhvc2UgYW5kIGluY2x1ZGVkIGZpeGVzIGZvciBtYW55IGluIHRoaXMgcGF0Y2guCisKIDIw
MTctMDEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgS2V5Ym9hcmRFdmVudC5jb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNmZGNlZDBiOWZjZmQwOGYwZWRlOGY3OWRmNGY4Zjc2YTA2YjI4Ny4uNWNlNTY0YTc5MjBhYWIz
NzkyNzhiMTI2MGY4ZDRmODQwYTcxNTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0NSBAQAor
MjAxNy0wMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbW92ZWQg
RGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAgICAgICAgQWRkZWQg
bm93LW5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgUGFzcyBhIHJlZmVy
ZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBUd2Vha3MsIG1zYWRlIGEgZmV3IHRoaW5ncworICAg
ICAgICBtb3JlIHByaXZhdGUgYW5kIGZpbmFsLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OmdldFB0ck9yUmVmKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6OndyYXBwZWQp
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjp+U2NyaXB0TW9kdWxlTG9hZGVy
KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6
ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKTog
RGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKTogVGFrZSBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyk6
IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRl
clJhZGl1c1Nob3J0aGFuZFZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmaWxsU2l6
ZVRvQ1NTVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUpOiBVcGRhdGVkIG1hbnkgcHJvcGVydGllcworICAgICAgICBz
aW5jZSB0aGUgbGF5ZXIgcHJvcGVydGllcyBub3cgcmV0dXJuIHJlZmVyZW5jZXMgcmF0aGVyIHRo
YW4gcG9pbnRlcnMuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0
ZWRJbWFnZTo6aW1hZ2UpOiBSZW1vdmVkCisgICAgICAgIG5vLWxvbmdlci1uZWVkZWQgY29uc3Rf
Y2FzdC4KKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NLZXlmcmFtZXNSdWxlOjppdGVtKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmluaXQpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAqIGNzcy9D
U1NTdHlsZVJ1bGUuaDogUmVtb3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisKKyAg
ICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhTaXplKTogVXBkYXRlZCBmb3IgTGVuZ3RoU2l6ZSBzdHJ1Y3QuCisKKyAgICAgICAg
KiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZhbWlseSk6
IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRlZCBjb25zdF9jYXN0LgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OnN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6d2Vp
Z2h0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dmFyaWFudCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncyk6IERpdHRvLgorCisgICAg
ICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaXplRm9y
TGVuZ3RoU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRTaXplRm9yTGVuZ3Ro
U2l6ZSk6IFVwZGF0ZWQgZm9yIExlbmd0aFNpemUgc3RydWN0LgorICAgICAgICAqIGNzcy9MZW5n
dGhGdW5jdGlvbnMuaDogQWRkZWQgc2l6ZUZvckxlbmd0aFNpemUuCisKKyAgICAgICAgKiBjc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBh
aW50T3JkZXIpOiBDdXQgZG93biBvbiBjcmVhdGlvbiBvZiB1bnVzZWQgb2JqZWN0cy4KKyAgICAg
ICAgV2Ugbm93IGNyZWF0ZSBvbmx5IHdoYXQgd2UgYWN0dWFsbHkgdXNlLgorCisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKTogVXBkYXRlZCBmb3IKKyAgICAgICAgTGVuZ3Ro
U2l6ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTaGFwZVZhbHVlKTogUGFzcyByZWZlcmVuY2VzCisgICAgICAgIHdoZW4gY3JlYXRpbmcg
U2hhcGVWYWx1ZS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZvcndhcmRJbmhlcml0ZWRWYWx1ZSk6IEFkZGVkLiBUaGlzIHNldCBvZiBv
dmVybG9hZGVkCisgICAgICAgIGZ1bmN0aW9ucyBhbGxvd3MgdXMgdG8gdXNlIG1vdmUgc2VtYW50
aWNzIGZvciBzb21lIHR5cGVzLCBidXQgY29weQorICAgICAgICB0aGVtIHdoZW4gaW5oZXJpdGlu
Zy4gRG9pbmcgaXQgd2l0aCBzcGVjaWFsIGNhc2VzIGhlcmUgYWxsb3dzIHVzIHRvCisgICAgICAg
IHJlc29sdmUgdGhpcyB3aXRob3V0IGFkZGluZyBvdmVybG9hZHMgc29tZW9uZSBtaWdodCBiZSB0
ZW1wdGVkIHRvCisgICAgICAgIGNhbGwgb3V0c2lkZSB0aGUgc3R5bGUgYnVpbGRlciwgYW5kIHdp
dGhvdXQgYWRkaW5nIHNwZWNpYWwgY2FzZXMgdG8KKyAgICAgICAgdGhlIEpTT04gZmlsZSBmb3Ig
ZWFjaCBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVdlYmtpdERhc2hib2FyZFJlZ2lvbik6CisgICAgICAgIEFkZCBXVEZNb3ZlIGFzIG5l
ZWRlZCB0byB3b3JrIHdpdGggcnZhbHVlIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRJbmRl
bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0TGluZUhlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDbGlwKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKTogRGl0dG8uCisKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpTdGF0ZTo6Y2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKTogVXNlCisgICAgICAgIHJl
ZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOiBVcGRhdGUgZm9yIGNoYW5nZXMgdG8gdGhl
CisgICAgICAgIGN1c3RvbSBwcm9wZXJ0eSBkYXRhIGluIFJlbmRlclN0eWxlLgorCisgICAgICAg
ICogY3NzL21ha2Vwcm9wLnBsOiBVc2UgYXV0byBxdWl0ZSBhIGJpdCBtb3JlIGluIHRoZSBnZW5l
cmF0ZWQgY29kZS4KKyAgICAgICAgVXBkYXRlZCBzcGVjaWFsIGNhc2VzIGZvciBsYXllcnMgdG8g
ZXhwZWN0IHJlZmVyZW5jZXMuIEFkZGVkIGEgV1RGTW92ZQorICAgICAgICBzbyB3ZSBjYW4gZ2V0
IG1vdmUgc2VtYW50aWNzIGZvciBjb252ZXJ0ZWQgdmFsdWVzIHRoYXQgY29tZSBvdXQgaW4KKyAg
ICAgICAgYW4gb3B0aW9uYWwuIEFkZGVkIGNhbGwgdG8gZm9yd2FyZEluaGVyaXRlZFZhbHVlIChz
ZWUgYWJvdmUpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6IFVzZSBhdXRvIGFuZCB1
cGRhdGUKKyAgICAgICAgc2luY2UgTGVuZ3RoU2l6ZSBpcyBhIHN0cnVjdC4KKworICAgICAgICAq
IGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpjb21wdXRl
UGF0aFVuY2xvc2VkVG9UYXJnZXQpOiBVc2UgYXV0by4KKworICAgICAgICAqIGRvbS9MaXZlTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6b3duZXJOb2RlKTogUmVt
b3ZlZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6c291cmNlKTogUmVt
b3ZlZCB1bm5lZWRlZCBzdGF0aWNfY2FzdC4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0
b3IpOiBUd2Vha2VkIGZvcm1hdHRpbmcuCisKKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJhbmdlOjpvd25lckRvY3VtZW50KTogUmVtb3ZlZCBuby1sb25nZXItbmVl
ZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgICogZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y2FsbGJhY2spOiBE
aXR0by4KKyAgICAgICAgKiBkb20vU2NyaXB0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFJ1bm5lcjo6flNjcmlwdFJ1bm5lcik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRN
TENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpvd25lck5v
ZGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjpub2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZCk6IEN1dCBkb3duIG9uIHRo
ZSBudW1iZXIKKyAgICAgICAgb2YgZGlmZmVyZW50IGZ1bmN0aW9ucyBoZXJlLiBBbHNvIHVzZSBy
ZWZlcmVuY2UgcmF0aGVyIHRoYW4gcG9pbnRlci4KKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAq
IGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKTogUmVtb3ZlZAorICAgICAg
ICBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0pOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om93bmVyUmVuZGVyZXIpOiBVc2Ug
YXV0by4gTGV0IHRoZSBpczw+IGZ1bmN0aW9uIGRvIG51bGwKKyAgICAgICAgY2hlY2tpbmcgZm9y
IHVzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KTogVGFrZSBhIHJl
ZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgICogcGFnZS9GcmFtZS5oOiBV
cGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmludmFsaWRhdGVSZWN0KTogVXNlIENocm9tZSBk
aXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIEhvc3RXaW5kb3cuIEhvc3RXaW5kb3cg
aXMgYW4gYWJzdHJhY3Rpb24gZm9yIHRoZSBwbGF0Zm9ybSBsYXllciwgYW5kIHRoZXJlCisgICAg
ICAgIGlzIG5vIGdvb2QgcmVhc29uIHRvIHVzZSBpdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY2hlZHVsZUFuaW1hdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQpOiBVcGRhdGVkIHRvIHVz
ZSByZWZlcmVuY2UKKyAgICAgICAgd2hlbiBjYWxsaW5nIFJlbmRlcldpZGdldDo6ZmluZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6IFVzZSBD
aHJvbWUgaW5zdGVhZCBvZiBIb3N0V2luZG93LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojpob3N0V2luZG93KTogVXNlIGVhcmx5IHJldHVybi4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxsIHRocm91Z2gg
dG8gYmFzZQorICAgICAgICBjbGFzcyBmdW5jdGlvbiwgd2hpY2ggd2FzIGVtcHR5LgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKTogVXBkYXRlZCBzaW5j
ZSB0aGUgY2hpbGRyZW4gc2V0IG5vdworICAgICAgICBjb250YWlucyBSZWYgcmF0aGVyIHRoYW4g
UmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYXJlbnRGcmFtZVZpZXcpOiBV
c2UgZWFybHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVXaWRn
ZXRQb3NpdGlvbnMpOiBVc2UgcmVmZXJlbmNlIGluc3RlYWQgb2YgcG9pbnRlci4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZS4gUmVtb3Zl
IG5vdy11bm5lZWRlZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdpblZpZXdzKTogVXBkYXRlZCBzaW5jZSB0aGUgY2hp
bGRyZW4gc2V0IG5vdyBjb250YWlucworICAgICAgICBSZWYgcmF0aGVyIHRoYW4gUmVmUHRyLgor
CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpwYWdlUHJvcGVydHkpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4K
KworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKTogVXBk
YXRlZCBmb3IgY2hhbmdlcyB0bworICAgICAgICB0aGUgdHlwZXMgaW4gYW5pbWF0aW9uIGZ1bmN0
aW9uIG1lbWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0
U2VydmljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cHJvZ3Jl
c3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRU
aW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOiBVcGRhdGVkIGZvciBMZW5n
dGhTaXplIHN0cnVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFByb3BlcnR5V3JhcHBlcjo6
TGVuZ3RoUHJvcGVydHlXcmFwcGVyKTogVXBkYXRlZCBzaW5jZSB3ZSBub3cKKyAgICAgICAgdXNl
IHJ2YWx1ZSByZWZlcmVuY2VzIGFuZCBtb3ZlIHNlbWFudGljcyB3aGVuIHNldHRpbmcgbGVuZ3Ro
IHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1
dGVFdmVudFRyYWNraW5nUmVnaW9uc0ZvckZyYW1lKTogVHdlYWtlZCB0bworICAgICAgICB1c2Ug
YXV0bywgcGFzcyByZWZlcmVuY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aDogUmV0dXJuIFJlZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9MZW5ndGhCb3guaDogQWRkZWQgYSBjb25zdHJ1Y3RvciB0aGF0IG1vdmVzIHRoZSBsZW5n
dGhzIGluLCByYXRoZXIKKyAgICAgICAgdGhhbiBhbHdheXMgY29weWluZyB0aGVtLgorCisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoU2l6ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KTogVXBkYXRlZCBzaW5jZSBMZW5ndGhTaXplIGlzIGEgc3RydWN0LgorICAgICAgICAqIHBs
YXRmb3JtL0xlbmd0aFNpemUuaDogVHVybmVkIExlbmd0aFNpemUgaW50byBhIHN0cnVjdCBhbmQg
cmVtb3ZlZCBhbGwgdGhlCisgICAgICAgIGdldHRlciBhbmQgc2V0dGVyIGNvZGUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oOiBSZW1vdmVkLiBVbnVzZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
Y3JlYXRlKTogUmV0dXJuIFJlZiByYXRoZXIgdGhhbiBQYXNzUmVmUHRyLgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKTogVGFrZQorICAgICAgICBhIHJlZmVyZW5jZS4gSW5pdGlhbGl6ZSBk
YXRhIG1lbWJlcnMgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6IFJl
dHVybiBSZWYgcmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6YWRkQ2hpbGQpOiBUYWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgUGFzc1JlZlB0
ci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1Njcm9sbGJhckludGVybmFs
KTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGFkZENoaWxkCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKTogRGVsZXRlZC4gVGhpcyB3YXMgbmV2ZXIg
Y2FsbGVkLAorICAgICAgICBzbyBtYWRlIGl0IHB1cmUgdmlydHVhbC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKTogVXNlIGEgbW9kZXJuIGZvciBsb29w
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2xpcFJlY3RDaGFuZ2VkKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOiBEZWxl
dGVkLiBUaGlzIHdhcyBlbXB0eSBzbyBtYWRlIGl0IHB1cmUKKyAgICAgICAgdmlydHVhbCBhbmQg
Y2hhbmdlZCBGcmFtZVZpZXcgdG8gbm90IGNhbGwgaXQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRQYXJlbnRWaXNpYmxlKTogVXNlIGEgbW9kZXJuIGZvciBsb29wLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6aGlkZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcu
aDogQ2hhbmdlZCB0aGUgY2hpbGRyZW4gc2V0IHRvIGNvbnRhaW4gUmVmIGluc3RlYWQgb2YgUmVm
UHRyLgorICAgICAgICBDaGFuZ2VkIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbmV2ZXIgb3ZlcnJpZGRl
biB0byBlaXRoZXIgYmUgZmluYWwgb3Igbm9uLXZpcnR1YWwsCisgICAgICAgIENoYW5nZWQgZnVu
Y3Rpb25zIHRoYXQgd2VyZSBuZXZlciBjYWxsZWQgdG8gYmUgcHVyZSB2aXJ0dWFsLgorCisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVt
Q29udHJvbFNpemUpOiBVcGRhdGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKworICAgICAgICAq
IHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaDogQ2hhbmdlZCB0aW1pbmdGdW5jdGlvbiBh
bmQgdHJpZ2dlciB0byByZXR1cm4KKyAgICAgICAgcmF3IHBvaW50ZXJzIGluc3RlYWQgb2YgUGFz
c1JlZlB0ci4gQ2hhbmdlZCBzZXRUaW1pbmdGdW5jdGlvbiBhbmQgc2V0VHJpZ2dlciB0bworICAg
ICAgICB0YWtlIFJlZlB0ciYmIGFuZCBSZWYmJiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuIENIYW5n
ZWQgaW5pdGlhbFRpbWluZ2Z1bmN0aW9uIGFuZAorICAgICAgICBpbml0aWFsVHJpZ2dlciB0byBy
ZXR1cm4gUmVmLgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3Qu
Y3BwOiBSZW1vdmVkIHJlZHVuZGFudCBjaGVjayBpbiBGSUxMX1VOU0VUX1BST1BFUlRZLgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uTGlzdDo6QW5pbWF0aW9uTGlzdCk6IFVzZSBtb2Rlcm4g
Zm9yIGxvb3AsIHJlc2VydmVJbml0aWFsQ2FwYWNpdHksCisgICAgICAgIGFuZCB1bmNoZWNrZWRB
cHBlbmQuCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaDogQ2hh
bmdlZCBhcHBlbmQgdG8gdGFrZSBSZWYmJiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisgICAgICAg
IGNoYW5nZWQgdmVjdG8gdG8gY29udGFpbiBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuIEFkZGVkIG1v
dmUgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQKKyAgICAgICAgb3BlcmF0b3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b0FuaW1hdGlvblRyaWdnZXI6OmNsb25lKTogUmV0dXJuIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y3Jl
YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlcjo6Y2xv
bmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXI6OmNy
ZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6
Y2xvbmUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5j
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6
IFJldHVybiBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6Q3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGltaW5nRnVuY3Rpb24pOiBSZXR1
cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGVSZXZlcnNlZCk6IFJldHVy
biBSZWYgaW5zdGVhZCBvZiBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6Q3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbjo6Y2xvbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBz
VGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNU
aW1pbmdGdW5jdGlvbjo6Y2xvbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNwcmluZ1Rp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNwcmluZ1Rp
bWluZ0Z1bmN0aW9uOjpjbG9uZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogUmVtb3Zl
ZCBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcpOiBSZXR1cm4gUmVmUHRyIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOiBVc2UgZmluYWwgaW5zdGVhZCBvZiBv
dmVycmlkZS4gTWFkZSBldmVuIG1vcmUKKyAgICAgICAgcHJpdmF0ZS4gQ2hhbmdlZCByZXR1cm4g
dmFsdWUgb2YgZmluaXNoRW5jb2RpbmcgdG8gUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
Lmg6IFJlbW92ZWQgaW5jbHVkZSBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOiBSZXR1cm4gUmVmUHRyIGluc3RlYWQgb2YgUGFzc1Jl
ZlB0ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDogVXNlIGZp
bmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIE1hZGUgZXZlbiBtb3JlCisgICAgICAgIHByaXZhdGUu
IENoYW5nZWQgcmV0dXJuIHZhbHVlIG9mIGZpbmlzaEVuY29kaW5nIHRvIFJlZiBpbnN0ZWFkIG9m
IFBhc3NSZWZQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3V0c2V0U2l6ZUZvckJsdXIpOiBT
aW1wbGlmaWVkLCByZW1vdmluZyB1bm5lY2Vzc2FyeSBmbG9hdGluZyBwb2ludCBtYXRoLgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6RmlsdGVyT3BlcmF0aW9ucyk6IERlbGV0
ZWQuIExldCB0aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhpcy4KKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPSk6IERlbGV0ZWQuIExldCB0aGUgY29tcGlsZXIgZ2Vu
ZXJhdGUgdGhpcy4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9y
PT0pOiBTdHJlYW1saW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Om9w
ZXJhdGlvbnNNYXRjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
czo6aGFzUmVmZXJlbmNlRmlsdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpoYXNPdXRzZXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjpvdXRzZXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zOjpoYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5o
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmg6IFJlbW92ZWQgaW5jbHVkZWQgb2YgUGFzc1JlZlB0ci5oLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOiBUd2Vha2VkIGZvcm1h
dHRpbmcuIFJlbW92ZWQgbmVzdGluZworICAgICAgICBmcm9tICNpZiBzaW5jZSBvdXIgZm9ybWF0
dGluZyBtYWtlcyBpdCBoYXJkIHRvIHNlZSBuZXN0aW5nLiBMZXQgdGhlIGNvbXBpbGVyCisgICAg
ICAgIGdlbmVyYXRlIHRoZSBkZWZhdWx0IG1vdmUgYW5kIGNvcHkgY29uc3RydWN0b3JzIGFuZCBh
c3NpZ25lbW50IG9wZXJhdG9ycyBleGNlcHQKKyAgICAgICAgaW4gdGhlIFVTRShGUkVFVFlQRSkg
Y2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6IFVwZGF0ZWQg
c2luY2UgY2xvbmUgbm93IHJldHVybnMgYSBSZWYKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpGbG9hdEFuaW1hdGlv
blZhbHVlKTogRGVsZXRlZC4gTGV0IHRoZSBjb21waWxlcgorICAgICAgICBnZW5lcmF0ZSB0aGUg
Y29weSBjb25zdHJ1Y3RvciB3aXRob3V0IGRlZmluaW5nIGl0IGV4cGxpY2l0bHkuCisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUpOiBVc2UgYSBtb2Rlcm4gZm9yCisgICAgICAgIGxvb3AsIHJlc2VydmVJbml0aWFsQ2FwYWNp
dHksIGFuZCB1bmNoZWNrZWQgYXBwZW5kLiBBbHNvIHRlbGwgdGhlIGNvbXBpbGVyIHRvCisgICAg
ICAgIGdlbmVyYXRlIHRoZSBtb3ZlIGNvbnN0cnVjdG9yLCBzaW5jZSB0aGUgc3BlY2lhbCB3b3Jr
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUKKyAgICAgICAgY29weSBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Q6OktleWZyYW1lVmFs
dWVMaXN0KTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1T
ZXNzaW9uLmg6IFJlbW92ZWQgaW5jbHVkZSBvZiBQYXNzUmVmUHRyLmguCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
dGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGluZSk6IFVwZGF0
ZWQKKyAgICAgICAgZm9yIExlbmd0aFNpemUgc3RydWN0LgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZv
dW5kYXRpb25DRik6IFRha2UgYSByZWZlcmVuY2UuCisgICAgICAgIERvbid0IGJvdGhlciBzZXR0
aW5nIG1fY2xpZW50IHNpbmNlIHdlIG5ldmVyIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KTogQ2xlYW4gdXAgY29k
ZSBhIGJpdAorICAgICAgICBieSB1c2luZyBhdXRvIGEgbG90IG1vcmUuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5o
OiBBZGRlZCBpbmNsdWRlCisgICAgICAgIHRoYXQgaXMgbm93IG5lZWRlZCBzaW5jZSBpdCB3YXMg
cmVtb3ZlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLiBUaWRpZWQgdGhlIGNsYXNzCisgICAgICAgIHVw
IGEgYml0LCBtYXJraW5nIGl0IGZpbmFsLCBtYWtpbmcgZXZlcnl0aGluZyBwcml2YXRlLCB0YWtp
bmcgYSByZWZlcmVuY2UsIGFuZAorICAgICAgICByZW1vdmluZyBhbiB1bnVzZWQgZGF0YSBtZW1i
ZXIsIG1fY2xpZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKTogUGFz
cyBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgIGFkZGVkIGluY2x1
ZGUgb2YgV1RGU3RyaW5nLmgsIG5vdyBuZWVkZWQgYmVjYXVzZSBvZiByZW1vdmluZyBhbiB1bm5l
ZWRlZAorICAgICAgICBpbmNsdWRlIGZyb20gYW5vdGhlciBoZWFkZXIgZmlsZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQpOiBVcGRh
dGVkIHNpbmNlIHRyaWdnZXIKKyAgICAgICAgaXMgYSByYXcgcG9pbnRlciBub3cuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUpOiBVcGRhdGVkIHRvCisgICAgICAgIHJldHVybiBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBh
IHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlv
bkVuZHBvaW50cyk6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRw
b2ludHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJh
bnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50cyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25LZXlmcmFtZXMp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcklPUy5tbToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVha1V0
dGVyYW5jZTpdKTogQ0hhbmdlZCBhcmd1bWVudCB0byBiZSBhCisgICAgICAgIFJlZlB0ciYmIGlu
c3RlYWQgb2YgYSBQYXNzUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c2l6ZUZyb21OU0NvbnRyb2xTaXplKTogVXBkYXRlZCBm
b3IgTGVuZ2h0U2l6ZSBzdHJ1Y3QuCisgICAgICAgIChXZWJDb3JlOjpjaGVja2JveFNpemUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJhZGlvU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGhlbWVNYWM6OmNvbnRyb2xTaXplKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpU
aGVtZU1hYzo6bWluaW11bUNvbnRyb2xTaXplKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpzZXRGb2N1cyk6
IFVwZGF0ZWQgdG8gcGFzcyBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
RGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHA6IFJlbW92ZWQuIFVudXNlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaDogUmVtb3ZlZC4gVW51c2VkLgor
CisgICAgICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTaGFyZWRDdXJzb3IpOiBSZXR1cm4gYSBSZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2hhcmVkQ3Vyc29yKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpsb2FkQ3Vyc29yQnlOYW1lKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXI6Om91dHB1dCk6IFJlbW92ZWQgYSBuby1sb25nZXItbmVlZGVkIGNvbnN0X2Nh
c3QuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6b3V0cHV0UmVjdCk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJw
b2xhdGlvblF1YWxpdHkpOiBUd2Vha2VkIGZvcm1hdHRpbmcuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpw
YWludEZpbGxMYXllcnMpOiBVcGRhdGVkIHRvIHRha2UgYSByZWZlcmVuY2UuIEFsc28KKyAgICAg
ICAgdXNlZCBhIHZlY3RvciB0byBpdGVyYXRlIHRoZSBsaW5rZWQgbGlzdCBpbiByZXZlcnNlIG9y
ZGVyIGluc3RlYWQgb2YgcmVjdXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIpOiBUYWtlIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94Rmls
bExheWVycyk6IFVzZSBhdXRvIGEgYml0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpn
ZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudCk6IFVzZSByZWZlcmVuY2UgZm9yIHRoZSBsYXllcnMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1
ZUluUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5k
SGFzT3BhcXVlVG9wTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
cGFpbnRNYXNrSW1hZ2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1h
c2tDbGlwUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEZp
bGxMYXllcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxs
TGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxheWVyc1VzZUltYWdlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2Up
OiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZCk6IFVzZSByZWZlcmVuY2UgZm9yCisgICAgICAgIHRoZSBsYXllcnMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRl
QmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpnZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJveFNoYWRvd1Nob3VsZEJl
QXBwbGllZFRvQmFja2dyb3VuZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojp+UmVuZGVyRWxlbWVudCk6IFVzZSByZWZlcmVuY2VzIGZvciB0aGUgbGF5ZXJzLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2VzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZSk6IFVzZSBSZW5k
ZXJTdHlsZTo6cmVwbGFjZSB0byByZXBsYWNlIHRoZQorICAgICAgICBvbGQgc3R5bGUgd2l0aCB0
aGUgbmV3IHN0eWxlLCBhbmQgZ2V0IHRoZSBvbGQgb25lIG91dCBhdCB0aGUgc2FtZSB0aW1lLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UpOiBVc2UgcmVm
ZXJlbmNlcyBmb3IgdGhlIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Om11c3RSZXBhaW50Rmls
bExheWVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cmVwYWlu
dEFmdGVyTGF5b3V0SWZOZWVkZWQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlQ29u
dGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0aW9uT2Zmc2V0KToKKyAgICAgICAgUmVmYWN0b3Igc28g
d2UgZG9uJ3QgbmVlZCBzbyBtYW55IGZ1bmN0aW9ucyBpbiBSZW5kZXJTdHlsZS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRl
U2Nyb2xsYmFyKTogUGFzcyB3aWRnZXQgYXMgcmVmZXJlbmNlIHRvIGFkZENoaWxkLgorICAgICAg
ICBBbHNvIGRpZCBhIGZldyBvdGhlciB0d2Vha3MgYW5kIHVzZWQgbW9yZSBzcGVjaWZpYyB0eXBl
cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FuQ3JlYXRlVGlsZWRJbWFnZSk6IFVwZGF0ZWQgc2luY2UgbGF5ZXJzIGFy
ZSByZWZlcmVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UpOiBEaXR0by4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6IFBhc3Mgd2lkZ2V0IGFzIHJlZmVyZW5jZSB0byBhZGRD
aGlsZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6
IFVwZGF0ZWQgdG8gdXNlCisgICAgICAgIHJlZmVyZW5jZXMgZm9yIGxheWVycy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6YWRqdXN0U3R5bGUpOiBVc2UgV1RGTW92ZSB0byBwYXNzIGEgTGVuZ3RoQm94LgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZCk6IFVwZGF0ZWQgc2lu
Y2UgTGVuZ3RoU2l6ZSBpcyBhIHN0cnVjdCwKKyAgICAgICAgbW9yZSBXVEZNb3ZlLCBjaGFuZ2Ug
c2luY2UgbGF5ZXJzIGFyZSBmZXJlbmNlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2l6
ZUNvbnN0cmFpbnRzKTogVXBkYXRlIGZvciBMZW5ndGggYW5kCisgICAgICAgIExlbmd0aFNpemUg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1lUGFy
dCk6IFVzZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uRmFsbGJhY2spOiBVcGRhdGUgZm9y
IExlbmd0aCBhbmQKKyAgICAgICAgTGVuZ3RoU2l6ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUpOiBEaXR0
by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpib3JkZXJSYWRpaUZyb21TdHlsZSk6IFVwZGF0ZSBmb3IgTGVuZ3RoIGFuZCBMZW5n
dGhTaXplIGNoYW5nZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6
IFVwZGF0ZSBmb3IgTGVuZ3RoIGFuZAorICAgICAgICBMZW5ndGhTaXplIGNoYW5nZXMuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6aXNDb250cm9sU3R5bGVkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9yZGVyUmFk
aXVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51
TGlzdEJ1dHRvbkRlY29yYXRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OmFkanVzdFNsaWRlclRodW1iU2l6ZSk6IERpdHRvLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6IFVzZSBtb3Zl
CisgICAgICAgIGluc3RlZWFkIG9mIHN3YXAgYW5kIG1vZGVybiBmb3IgbG9vcCBpbnN0ZWFkIG9m
IGl0ZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOiBU
YWtlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOiBVcGRhdGUgZm9yIGFib3ZlIGNoYW5nZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZmluZCk6IFRha2UgYSByZWZlcmVuY2UgaW5zdGVh
ZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBVcGRh
dGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KTog
VXBkYXRlZCBzaW5jZSBMZW5ndGggaXMgcGFzc2VkIGFzCisgICAgICAgIHJ2YWx1ZSByZWZlcmVu
Y2Ugbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6Z2V0TWF0aE1MU3R5bGUpOiBVcGRhdGVkIHNp
bmNlIG1hdGhNTFN0eWxlIHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UuCisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZSk6IERpdHRvLgorCisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhNTFN0eWxlKTogUmVtb3ZlZCBuby1sb25n
ZXIgbmVlZGVkIGNvbnN0X2Nhc3QsCisgICAgICAgIGNoYW5nZWQgdG8gcmV0dXJuIGEgcmVmZXJl
bmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFRhYmxlOjptYXRoTUxTdHlsZSk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxGcmFjdGlvbjo6ZnJhY3Rpb25QYXJhbWV0ZXJzKTogVXBkYXRlZCBzaW5jZSBtYXRoTUxTdHls
ZQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRnJhY3Rpb246OnN0YWNrUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTE9wZXJhdG9yOjppc0xhcmdlT3BlcmF0b3JJbkRpc3BsYXlTdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnNob3VsZE1vdmVMaW1p
dHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6dmVydGljYWxQYXJhbWV0
ZXJzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZh
cmlhbnRHbHlwaCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0U2l6ZUZvckxlbmd0aFNpemUpOiBVcGRh
dGVkIGZvciBMZW5ndGhTaXplIHN0cnVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQm9y
ZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Qm9yZGVyRGF0YSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6aGFzQm9yZGVyUmFkaXVzKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNsb25lKTogVXBkYXRlZCBtZW1iZXIgbmFtZXMuCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKTogVXNlIGluaXRpYWxpemVyIGxpc3RzIHNv
IHdlIGdldAorICAgICAgICBtb3ZlIG9wdGltaXphdGlvbiB3aXRob3V0IHJlcXVpcmluZyBleHBs
aWNpdCBXVEZNb3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OkRhdGFSZWYpOiBSZW1vdmVkIG5vLWxvbmdlciBuZWVk
ZWQgY29uc3RfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OnJlcGxhY2UpOiBBZGRl
ZC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJlZjo6cmVwbGFjZSwgYW5kCisgICAgICAgIGNhbiBi
ZSB1c2VkIHRvIHB1dCBhIG5ldyB2YWx1ZSBpbiBhbmQgZ2V0IGFuIG9sZCB2YWx1ZSBvdXQgd2l0
aG91dCBydW5uaW5nIGludG8KKyAgICAgICAgdGhlIHJ1bGUgUmVmIGhhcyBhYm91dCBub3QgYmVp
bmcgcmV1c2VkIG9uY2UgaXQgYmVjb21lcyBudWxsIGJlY2F1c2Ugb2YgYmVpbmcKKyAgICAgICAg
bW92ZWQgb3V0IG9mLiBUaGlzIGZ1bmN0aW9uIGlzIGEgbG90IGxpa2Ugc3RkOjpleGNoYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIGNvbnN0IFQmKTogQWRkZWQgb3Bl
cmF0b3Igc28gd2UgY2FuIHVzZSB0aGVzZQorICAgICAgICBhcyByZWZlcmVuY2VzIHdpdGhvdXQg
YW55IGZ1bmN0aW9uIGNhbGwgaW4gcmVhZC1vbmx5IGNvbnRleHRzLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVJlZjo6Z2V0KTogQ2hhbmdlZCB0byByZXR1cm4gYSByZWZlcmVuY2UgcmF0aGVyIHRo
YW4gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6OmFjY2Vzcyk6IERpdHRvLgor
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbik6IFVwZGF0ZWQgc2luY2UgdGlt
aW5nRnVuY3Rpb24KKyAgICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVMaXN0Ojp+S2V5ZnJhbWVMaXN0KTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxs
IHRvIGNsZWFyLAorICAgICAgICB3aGljaCBkb2VzIHRoaW5ncyB0aGF0IGFyZSByZWR1bmRhbnQg
c2luY2Ugd2UgYXJlIGFib3V0IHRvIGRlc3Ryb3kgYWxsIHRoZQorICAgICAgICBkYXRhIG1lbWJl
cnMuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Om9wZXJhdG9yPT0pOiBUd2Vha2Vk
IGNvZGlnbiBzdHlsZSBhIGJpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5oOiBVcGRhdGVkIG1vc3QgZnVuY3Rpb25zIGluIHRoaXMgY2xhc3MKKyAgICAgICAg
Zm9yIHRoZSBjaGFuZ2VzIHRvIERhdGFSZWYuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOiBVcGRhdGVkIG5lYXJseSBldmVyeSBmdW5jdGlvbiBpbiB0aGlzCisg
ICAgICAgIGNsYXNzIGZvciB0aGUgY2hhbmdlcyB0byBEYXRhUmVmLCB0byBlbGltaW5hdGUgdGhl
IHBlY3VsaWFyIG5hbWluZyBhbmQgdXNlCisgICAgICAgIG91ciBzdGFuZGFyZCBkYXRhIG1lbWJl
ciBuYW1pbmcsIG1fbWVtYmVyTmFtZSBpbiBhIGNsYXNzLCBhbmQgbWVtYmVyTmFtZSBpbiBhCisg
ICAgICAgIHN0cnVjdCBvciBzdHJ1Y3QtbGlrZSBjbGFzcyBmb3IgcHVibGljbHkgYWNjZXNzaWJs
ZSBtZW1iZXJzLCB0byBwYXNzLCB0YWtlLAorICAgICAgICBhbmQgcmV0dXJuIG1vcmUgcmVmZXJl
bmNlcyBhbmQgcnZhbHVlIHJlZmVyZW5jZXMsIGFuZCB0byB1c2UgbW9kZXJuIGZvciBsb29wcy4K
KyAgICAgICAgT3RoZXIgY2hhbmdlcyBsaXN0ZWQgYmVsb3cgZnVuY3Rpb24gYnkgZnVuY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxlKTogVXNlIE5ldmVy
RGVzdHJveWVkIGluc3RlYWQgb2YgYWxsb2NhdGluZworICAgICAgICBvbiB0aGUgaGVhcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6IEFkZGVkIGEgbmV3IGNv
bnN0cnVjdG9yIHRoYXQgcGVyZm9ybXMKKyAgICAgICAgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLCB1
c2luZyBhIGNvbWJpbmF0aW9uIG9mIERhdGFSZWY6OnJlcGxhY2UgYW5kIHN0ZDo6ZXhjaGFuZ2Uu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVwbGFjZSk6IEFkZGVkLiBDYWxscyB0
aGUgYWJvdmUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
U2Nyb2xsU25hcFR5cGUpOiBVc2UgU0VUX05FU1RFRF9WQVIgc28gd2UgZ2V0IGVxdWFsaXR5Cisg
ICAgICAgIGNoZWNrcyBvbiB0aGlzIHByb3BlcnR5LCBmb3IgdGhlIG5vcm1hbCBlZmZpY2llbmN5
IGJlbmVmaXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0RGFzaGJvYXJkUmVn
aW9uKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogUmVmYWN0b3JlZCB0aGlzIHNldCBvZiBmdW5jdGlv
bnMgdG8gc2ltcGxpZnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDogVXBkYXRlZCBtb3N0IGZ1bmN0aW9ucyBhcyBtZW50aW9uZWQgYWJvdmUuCisgICAgICAgIEFs
c28gdXBkYXRlZCBtYWNyb3MgdG8gdXNlIHRoZSBkby93aGlsZSgwKSB0ZWNobmlxdWUuIFJlbW92
ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBmcmllbmQgY2xhc3NlcyB3aXRoIHRoZSBlbGFi
b3JhdGUgY29tbWVudHM7IHR1cm5lZCBvdXQgbm9uZSBuZWVkZWQgZnJpZW5kc2hpcAorICAgICAg
ICBkZXNwaXRlIHRoZSBjb21tZW50cy4gTWFkZSBtb3JlIHRoaW5ncyBwcml2YXRlLiBNb3ZlZCBs
YXJnZSBmdW5jdGlvbnMgb3V0IG9mIHRoZQorICAgICAgICBjbGFzcyBkZWZpbml0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dFeHRlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFRleHRTaGFkb3dIb3Jpem9udGFs
RXh0ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRUZXh0
U2hhZG93VmVydGljYWxFeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFzcGVjdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjphbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWxpZ25JdGVtc1Bvc2l0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphbGlnbkl0ZW1zT3Zl
cmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmFsaWduU2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjphbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omp1c3RpZnlDb250ZW50T3Zl
cmZsb3dBbGlnbm1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
Omp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpqdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6anVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2VsZlBvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpqdXN0aWZ5U2VsZk92ZXJm
bG93QWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRBbGlnbkNvbnRlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50T3ZlcmZsb3cpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudERpc3RyaWJ1dGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QWxpZ25JdGVtc092ZXJmbG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRBbGlnblNlbGZPdmVy
Zmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlm
eUNvbnRlbnRPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRKdXN0aWZ5SXRlbXNPdmVyZmxvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SnVzdGlmeUl0ZW1zUG9z
aXRpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRK
dXN0aWZ5U2VsZlBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRKdXN0aWZ5U2VsZk92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwOiBTaW1pbGFyIGNo
YW5nZXMgdG8gUmVuZGVyU3R5bGUuY3BwIGFib3ZlLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZS5oOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
aGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjpjcmVhdGUpOiBUYWtl
IGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlVmFs
dWU6OlNoYXBlVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUJhY2tncm91bmREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmg6IERpdHRvOyBtYWtlIHRoZW0g
cHVibGljIGFuZCByZW1vdmUgdGhlCisgICAgICAgIGdldHRlciBmdW5jdGlvbnMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6IFJlbW92ZWQgbm8tbG9uZ2VyLW5lZWRl
ZCBjb25zdF9jYXN0LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmg6IFVwZGF0ZSBkYXRhIG1lbWJlciBuYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpvcGVyYXRvcj09KTogUmVtb3ZlZCB1bm5lY2Vzc2Fy
eSByZWZlcmVuY2UKKyAgICAgICAgY291bnQgY2h1cm4uCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUN1c3RvbVByb3BlcnR5RGF0YTo6c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZSk6IFRha2UgYW4gcnZh
bHVlCisgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhOjpnZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjp2YWx1ZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Omhhc0N1c3RvbVByb3BlcnR5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhOjpjb250
YWluc1ZhcmlhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YTo6c2V0Q29udGFpbnNWYXJpYWJsZXMpOiBEZWxldGVkLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6IFVwZGF0ZSBkYXRhIG1lbWJlciBu
YW1lcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmg6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHA6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHA6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oOiBEaXR0by4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKTogUmVtb3ZlZCBuby1sb25n
ZXItbmVlZGVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZElt
YWdlOjppbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJ
bmhlcml0ZWREYXRhLmNwcDogVXBkYXRlIGRhdGEgbWVtYmVyIG5hbWVzLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDogRGl0dG8uCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOiBEaXR0by4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaDogRGl0dG8uCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcDog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcDogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oOiBEaXR0by4K
KworICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMpOiBVcGRhdGUgc2luY2UgbGF5ZXJz
IGFyZSByZWZlcmVuY2VzLgorCisKIDIwMTctMDEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgS0VZQk9BUkRfS0VZX0FUVFJJQlVURSAvIEtFWUJPQVJE
X0NPREVfQVRUUklCVVRFIHRvIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0yMTc2LDcgKzI4
MTgsNiBAQAogICAgICAgICB0aGlzIG5ldyBjbGFzcyB0byBoYW5kbGUgdGhlIHNldHRpbmdzIG9m
IHRoZSBhdWRpbyBlbGVtZW50cy4gVGhlCiAgICAgICAgIGNsYXNzIGluaXRpYWxpemVzIHRoZSBz
ZXR0aW5ncyBhbmQgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgogCi0KIDIwMTctMDEtMDggIEtvbnN0
YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVjZSBD
UFUoWDg2X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IGVkODRiOTZlNDAxMDM4Zjc1NTlkMTk0YmM5ZGYwMGU5NTA0NzBiMTIuLmQ4ODU0MDI2
ZTNmZjViNGE2YzhhZDk1NmM4OGI2YzY5ODgzMTg5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3JlIG9mICJwbGF0Zm9ybSIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjgwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChOZXRzY2FwZVBsdWdpbldpZGdl
dDo6aGFuZGxlRXZlbnQpOiBQYXNzIGEgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25z
Rm9yRnJhbWVWaWV3OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2Ug
dGhlIGNoaWxkcmVuIHNldCBub3cgY29udGFpbnMgUmVmIGluc3RlYWQgb2YgUmVmUHRyLgorCiAy
MDE3LTAxLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUgLyBLRVlCT0FSRF9DT0RFX0FUVFJJQlVURSB0byBGZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRmZWYwYmJjOTk4ZDUyMDJiM2FkNzk5
YTdkNTQxMWMwYjZiZjhjMjkuLjMzNjYzNWIyZjZlNWI3MmJiZGUzMmY3OWZkNzkwOTYzMTExMzg5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wMS0xMSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBtb3Jl
IG9mICJwbGF0Zm9ybSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NjgwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0dXJlTWFw
cGVyQW5pbWF0aW9uPjo6ZW5jb2RlKTogVXBkYXRlZCBzaW5jZSB0aW1pbmcgZnVuY3Rpb24KKyAg
ICAgICAgcmV0dXJucyBhIHJhdyBwb2ludGVyLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjpkZWNvZGUpOiBVcGRhdGVkIHNpbmNlIHRpbWluZyBm
dW5jdGlvbgorICAgICAgICBzZXR0ZXJzIG5vdyB0YWtlcyBhbiBydmFsdWUgcmVmZXJlbmNlLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcik6IFVwZGF0ZWQg
c2luY2UgYWRkQ2hpbGQgbm93IHRha2VzIGEgcmVmZXJlbmNlLgorCiAyMDE3LTAxLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEtFWUJPQVJEX0tFWV9B
VFRSSUJVVEUgLyBLRVlCT0FSRF9DT0RFX0FUVFJJQlVURSB0byBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oCmluZGV4IDFiZDRkNzdkNmM1NTkxNzAxMzc4ZGI0YmYwM2Y2ZGRlYTdl
Njg5OTUuLmVkZTc1NDM3YTM0ZjNmNWRlOTJmMjUwZDVkMTBkMWZiOGEzZTJkNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBJbmplY3RlZFNjcmlwdEhv
c3QmIGltcGwoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEluamVjdGVkU2NyaXB0SG9zdCY+
KG1fd3JhcHBlZC5nZXQoKSk7IH0KKyAgICBJbmplY3RlZFNjcmlwdEhvc3QmIGltcGwoKSBjb25z
dCB7IHJldHVybiBtX3dyYXBwZWQ7IH0KIAogICAgIC8vIEF0dHJpYnV0ZXMuCiAgICAgSlNDOjpK
U1ZhbHVlIGV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAppbmRleCA0Yjg2ZGVjNzFhNzIzNzRlNzExMjNl
MjkyNDE2YzkyZjdlNmYzYjdhLi5lYTQzZmYxNWY3YjVmMDdmY2JmMmQ2YjFiNTNmNjE3YzNkYmVi
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFt
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgUHJpdmF0ZU5hbWUoUHJpdmF0ZU5hbWUmJikg
PSBkZWZhdWx0OwogCi0gICAgU3ltYm9sSW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gY29uc3Rf
Y2FzdDxTeW1ib2xJbXBsJj4obV91aWQuZ2V0KCkpOyB9CisgICAgU3ltYm9sSW1wbCYgdWlkKCkg
Y29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2
YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAmb3RoZXIudWlkKCk7IH0K
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVyKSBjb25zdCB7IHJl
dHVybiAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDQ3ZTVmYTA5NmU4MTYwM2MwOGU1
NmJhZjFlOGFiZGRmMDkwMWFiMjUuLmU5NTUzNTJkZmY3YTU1Mjk5OTgwYTljOWM2N2UyZjNlNzVj
NzE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1JlZi5oCkBAIC0xMzMsMTcgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCht
X3B0cik7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgQVNTRVJUKG1f
cHRyKTsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IEFTU0VS
VChtX3B0cik7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0cigpIHsgQVNTRVJUKG1fcHRyKTsg
cmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3B0
cik7IHJldHVybiAqbV9wdHI7IH0KLSAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3B0cik7IHJldHVy
biAqbV9wdHI7IH0KLQotICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4g
Km1fcHRyOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7
IHJldHVybiAqbV9wdHI7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9w
dHIpOyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBwdHIoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7
IHJldHVybiBtX3B0cjsgfQorICAgIFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0
dXJuICptX3B0cjsgfQorICAgIG9wZXJhdG9yIFQmKCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gKm1fcHRyOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWY8VD4gcmVwbGFj
ZShSZWY8VT4mJikgV0FSTl9VTlVTRURfUkVUVVJOOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDM4OTFlNjQzNDYyZWI5YzNhNTk2OWM5NmEyNjBlN2MzMDA5OTEwY2UuLjkwMTQxYTc5ZDE5Y2E0
ZjJmMTNlNzUyZmVjNDBlM2IxYTlmMDllMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjcx
LDcgKzIyNzEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1NEUFByb2Nlc3NvclNjcmlwdFJlc291cmNlLmNwcAogCi0gICAgcGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDBiYjQ2ZWJlNDkyZTkw
MWU2ODU4NjgzN2UzNzhkY2FiNDA1NzNkZmMuLmUxZTczNWE0MGI1NTBmYTYxYWY1MWE2YjBlODM3
OGE0MDJhYzk5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJMZWdhY3lDRE1TZXNzaW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cAppbmRleCBkOGJjN2E1NWMzMDk5OTE4MDUzYzcxM2MyYjZjOThhZTM1N2RkMWEzLi42NzQ2ZjRl
ZjRhZjNlYTY4MGNlNGYxMTgzMTcwYTM2NzBkODhmMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgUmVmPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ28KIAogU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCi0gICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3BsYXRmb3Jt
VXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoKnRoaXMp
KQogewogICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oCmluZGV4IDVmMTQxOTc1OTU3ZTRmZWQ5YzJkZGNmYzI2NjdiZTQyM2FiNThjZjEuLmI1
Y2I1MjAwMjM2MTBhYjEzOGQ0NmNlZmUwNDVhYjkxYmMxNGY1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsCiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICB+U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKCk7CisgICAgdmlydHVhbCB+U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCk7CiAKICAgICBj
b25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT50
ZXh0KCk7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KQEAgLTYyLDIxICs2MiwyMSBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFu
Y2UtPnN0YXJ0VGltZSgpOyB9CiAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGlt
ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQogCi0g
ICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+OjpyZWY7Ci0gICAg
dXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+OjpkZXJlZjsKLQotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OmRlcmVmOwogCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IHBsYXRmb3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5n
ZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKwogICAgIFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsKICAgICBS
ZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0KLSAgICBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDIz
MDdlNTc4ODkzMjAxZDM4MzhlYTZjOTAzNDFhZTdiMWFlODA0MWEuLjk2MGZjZjVkMTk2OTIxYzhi
ZTk4ZTAzZmFhNTYwODA5M2M3ZjVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oCkBAIC00NTAsOCArNDUwLDggQEAgbmFtZXNwYWNlIERldGFpbCB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29uc3QgVCogcCkgeyBy
ZXR1cm4gY29uc3RfY2FzdDxUKj4ocCk7IH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCYgZ2V0UHRyT3JSZWYoY29uc3QgVCYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUJj4ocCk7IH0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyT3JSZWYoY29uc3QgUmVmUHRy
PFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLmdldCgpKTsgfQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8VD4mIHApIHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8VCY+KHAuZ2V0KCkpOyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IFQqIGdldFB0ck9yUmVmKGNvbnN0IFJlZlB0cjxUPiYgcCkgeyByZXR1cm4gcC5nZXQoKTsgfQor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBnZXRQdHJPclJlZihjb25zdCBSZWY8VD4m
IHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlci5oCmluZGV4IDM4NTI5YmI2MWZkNDUyNWJiOTc1NThiYThkZjNjN2RkZTEz
Yjc1OGUuLjZmMzc0NjJhMjgxMjExN2IzYmZmZjIzNGEyMzBlYWY5OTc0NDgyMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uQ2xhc3MgRE9NV3JhcHBlZDsKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNET01XcmFwcGVyID0gdHJ1ZTsKIAotICAgIEltcGxlbWVu
dGF0aW9uQ2xhc3MmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEltcGxlbWVu
dGF0aW9uQ2xhc3MmPihtX3dyYXBwZWQuZ2V0KCkpOyB9CisgICAgSW1wbGVtZW50YXRpb25DbGFz
cyYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZDsgfQogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZXcmFwcGVkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRE9NV3Jh
cHBlcjxJbXBsZW1lbnRhdGlvbkNsYXNzPiwgbV93cmFwcGVkKTsgfQogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApp
bmRleCA2MmE4OTY3YTIzMTM2NmI2NDgzZjQ4YjQ4ZmVhMDg2NmY2OGFiMGNhLi5mNDAwNmZjYmI4
MTNmZjM4NmJjYzJiZDRiMGJhZWFiZDQ0ZWNiNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTUzLDEwICs1Myw5IEBAIFNj
cmlwdE1vZHVsZUxvYWRlcjo6U2NyaXB0TW9kdWxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCkK
IFNjcmlwdE1vZHVsZUxvYWRlcjo6flNjcmlwdE1vZHVsZUxvYWRlcigpCiB7CiAgICAgZm9yIChh
dXRvJiBsb2FkZXIgOiBtX2xvYWRlcnMpCi0gICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyJj4obG9hZGVyLmdldCgpKS5jbGVhckNsaWVudCgpOworICAgICAgICBsb2Fk
ZXItPmNsZWFyQ2xpZW50KCk7CiB9CiAKLQogc3RhdGljIGJvb2wgaXNSb290TW9kdWxlKEpTQzo6
SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSkKIHsKICAgICByZXR1cm4gaW1wb3J0ZXJNb2R1bGVL
ZXkuaXNTeW1ib2woKSB8fCBpbXBvcnRlck1vZHVsZUtleS5pc1VuZGVmaW5lZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDA4ODY0ZmExYTY4ZTQx
YWM3ZWRjZGZkZTdkYjRhYWQwYjFmNDBlMTUuLjVmMjI1Zjc0YWJiNTUyOTBhY2YxMTY5MmM2NmNm
YjgzYjdiYjM1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5j
cHAKQEAgLTE0NCwxOCArMTQ0LDE2IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiBzdGF0aWMg
TGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiB7
CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZp
eGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwg
eyAwLCBGaXhlZCB9IH07CiAKLSAgICBQYWlyKiBwYWlyID0gdmFsdWUtPnBhaXJWYWx1ZSgpOwot
ICAgIHJldHVybiBMZW5ndGhTaXplKGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFp
ci0+Zmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci0+c2Vjb25k
KCkpKTsKKyAgICBhdXRvJiBwYWlyID0gKnZhbHVlLT5wYWlyVmFsdWUoKTsKKyAgICByZXR1cm4g
eyBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRU
b0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKIH0KIAogc3RhdGljIEJh
c2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1ByaW1pdGl2ZVZh
bHVlKiB2YWx1ZSkKIHsKLSAgICBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6RGlyZWN0aW9u
IGRpcmVjdGlvbjsKLSAgICBMZW5ndGggb2Zmc2V0ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLQogICAg
IENTU1ZhbHVlSUQga2V5d29yZCA9IENTU1ZhbHVlVG9wOworICAgIExlbmd0aCBvZmZzZXQgeyAw
LCBGaXhlZCB9OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIGtleXdvcmQgPSBDU1NWYWx1ZUNl
bnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUlEKCkpCkBAIC0xNjYsNiArMTY0LDcg
QEAgc3RhdGljIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3Jk
aW5hdGUoY29uc3QgQ1NTVG9MZW5ndGhDb24KICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0ID0g
Y29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCB2YWx1ZSk7CiAKKyAgICBCYXNpY1NoYXBl
Q2VudGVyQ29vcmRpbmF0ZTo6RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBzd2l0Y2ggKGtleXdv
cmQpIHsKICAgICBjYXNlIENTU1ZhbHVlVG9wOgogICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApp
bmRleCAyZmJlOWMxNGQ0MmVjMWNkYzZmYTE4MjNiODVjYzNlNDcyMjM0Mjc4Li5lODRkNTk5Nzcx
ZWY1N2Y1Zjk2ZWVkYThlMjNhYzBjNjBkZjBmNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3ZWJraXRAbmlja3NoYW5r
cy5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2VuY2hhLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC02MDYsMTEgKzYwNiwxMCBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5ndGhCb3gmIGJveCkKIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBp
ZWNlSW1hZ2UmIGltYWdlKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBob3Jpem9udGFs
UmVwZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZUZvclJlcGVh
dFJ1bGUoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSkpOwotCisgICAgYXV0byBob3Jpem9udGFsUmVw
ZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZUZvclJlcGVhdFJ1
bGUoaW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKSkpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmVydGljYWxSZXBlYXQ7CiAgICAgaWYgKGltYWdlLmhvcml6b250YWxSdWxlKCkgPT0gaW1h
Z2UudmVydGljYWxSdWxlKCkpCi0gICAgICAgIHZlcnRpY2FsUmVwZWF0ID0gaG9yaXpvbnRhbFJl
cGVhdDsKKyAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVwZWF0LmNvcHlSZWYo
KTsKICAgICBlbHNlCiAgICAgICAgIHZlcnRpY2FsUmVwZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2UudmVydGljYWxSdWxlKCkp
KTsKICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShXVEZN
b3ZlKGhvcml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZlcnRpY2FsUmVwZWF0KSkpOwpAQCAtNjg4
LDIwICs2ODcsMjAgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNv
bnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QKICAgICByZXR1cm4gQ1NTUmVm
bGVjdFZhbHVlOjpjcmVhdGUoZGlyZWN0aW9uLnJlbGVhc2VOb25OdWxsKCksIG9mZnNldC5yZWxl
YXNlTm9uTnVsbCgpLCB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKHJlZmxlY3Rpb24tPm1hc2soKSkp
OwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5
ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9z
aXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5
ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byBwb3NpdGlv
bkxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgaWYgKGxh
eWVyLT5pc0JhY2tncm91bmRYT3JpZ2luU2V0KCkpIHsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKGxheWVyLmlzQmFja2dyb3Vu
ZFhPcmlnaW5TZXQoKSkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uTGlzdC5nZXQo
KS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci0+YmFj
a2dyb3VuZFhPcmlnaW4oKSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsYXllci5iYWNrZ3JvdW5kWE9yaWdpbigpKSk7CiAgICAg
fQotICAgIHBvc2l0aW9uTGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZv
ckxlbmd0aChsYXllci0+eFBvc2l0aW9uKCksIHN0eWxlKSk7Ci0gICAgaWYgKGxheWVyLT5pc0Jh
Y2tncm91bmRZT3JpZ2luU2V0KCkpIHsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZUZvckxlbmd0aChsYXllci54UG9zaXRpb24oKSwgc3R5bGUpKTsKKyAgICBpZiAobGF5
ZXIuaXNCYWNrZ3JvdW5kWU9yaWdpblNldCgpKSB7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb24pOwotICAgICAgICBwb3NpdGlvbkxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUobGF5ZXItPmJhY2tncm91
bmRZT3JpZ2luKCkpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUobGF5ZXIuYmFja2dyb3VuZFlPcmlnaW4oKSkpOwogICAgIH0KLSAg
ICBwb3NpdGlvbkxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5n
dGgobGF5ZXItPnlQb3NpdGlvbigpLCBzdHlsZSkpOwotICAgIHJldHVybiBwb3NpdGlvbkxpc3Q7
CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgobGF5ZXIu
eVBvc2l0aW9uKCksIHN0eWxlKSk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC03NjUsMzkgKzc2NCwzOCBAQCBzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShMZW5ndGggbGVu
Z3RoLCBjb25zdCBSZW5kZQogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVl
Rm9yTGVuZ3RoKGxlbmd0aCwgMCksIHN0eWxlKTsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBib3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHBlcmNlbnRhZ2VPclpvb21B
ZGp1c3RlZFZhbHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSkpOwotICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy5oZWlnaHQoKSwgc3R5bGUp
KTsKKyAgICBsaXN0LT5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVz
LndpZHRoLCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0
ZWRWYWx1ZShyYWRpdXMuaGVpZ2h0LCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1z
dGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShjb25zdCBMZW5n
dGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWU+IGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChyYWRpdXMud2lkdGgoKSA9PSBy
YWRpdXMuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRW
YWx1ZShyYWRpdXMud2lkdGgoKSwgc3R5bGUpOwotCi0gICAgcmV0dXJuIGdldEJvcmRlclJhZGl1
c0Nvcm5lclZhbHVlcyhyYWRpdXMsIHN0eWxlKTsKKyAgICBpZiAocmFkaXVzLndpZHRoID09IHJh
ZGl1cy5oZWlnaHQpCisgICAgICAgIHJldHVybiBwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1
ZShyYWRpdXMud2lkdGgsIHN0eWxlKTsKKyAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFs
dWVzKHJhZGl1cywgc3R5bGUpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9y
ZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IGJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNs
YXNoU2VwYXJhdGVkKCk7Ci0gICAgYm9vbCBzaG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgPSBzdHls
ZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCkgIT0gc3R5bGUuYm9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLndpZHRoKCk7Ci0gICAgYm9vbCBzaG93SG9yaXpvbnRhbEJvdHRvbVJpZ2h0ID0g
c2hvd0hvcml6b250YWxCb3R0b21MZWZ0IHx8IChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1
cygpLndpZHRoKCkgIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCkpOwotICAg
IGJvb2wgc2hvd0hvcml6b250YWxUb3BSaWdodCA9IHNob3dIb3Jpem9udGFsQm90dG9tUmlnaHQg
fHwgKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS5ib3JkZXJU
b3BMZWZ0UmFkaXVzKCkud2lkdGgoKSk7CisgICAgYm9vbCBzaG93SG9yaXpvbnRhbEJvdHRvbUxl
ZnQgPSBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoICE9IHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS53aWR0aDsKKyAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tUmln
aHQgPSBzaG93SG9yaXpvbnRhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkud2lkdGggIT0gc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKTsKKyAg
ICBib29sIHNob3dIb3Jpem9udGFsVG9wUmlnaHQgPSBzaG93SG9yaXpvbnRhbEJvdHRvbVJpZ2h0
IHx8IChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoICE9IHN0eWxlLmJvcmRlclRv
cExlZnRSYWRpdXMoKS53aWR0aCk7CiAKLSAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbUxlZnQg
PSBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKTsKLSAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJp
Z2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQoKSAhPSBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCkp
OwotICAgIGJvb2wgc2hvd1ZlcnRpY2FsVG9wUmlnaHQgPSBzaG93VmVydGljYWxCb3R0b21SaWdo
dCB8fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSAhPSBzdHlsZS5ib3Jk
ZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCkpOworICAgIGJvb2wgc2hvd1ZlcnRpY2FsQm90dG9t
TGVmdCA9IHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0ICE9IHN0eWxlLmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQ7CisgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21S
aWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkuaGVpZ2h0ICE9IHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQpOwor
ICAgIGJvb2wgc2hvd1ZlcnRpY2FsVG9wUmlnaHQgPSBzaG93VmVydGljYWxCb3R0b21SaWdodCB8
fCAoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQgIT0gc3R5bGUuYm9yZGVyVG9w
TGVmdFJhZGl1cygpLmhlaWdodCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0b3BMZWZ0
UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcExlZnRS
YWRpdXMoKSwgc3R5bGUpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcFJpZ2h0UmFkaXVz
ID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCksIHN0eWxlKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21SaWdodFJhZGl1cyA9
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1
cygpLCBzdHlsZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90dG9tTGVmdFJhZGl1cyA9
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCksIHN0eWxlKTsKKyAgICBhdXRvIHRvcExlZnRSYWRpdXMgPSBib3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZXMoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZSk7CisgICAgYXV0byB0b3BS
aWdodFJhZGl1cyA9IGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJUb3BSaWdo
dFJhZGl1cygpLCBzdHlsZSk7CisgICAgYXV0byBib3R0b21SaWdodFJhZGl1cyA9IGJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCBzdHlsZSk7
CisgICAgYXV0byBib3R0b21MZWZ0UmFkaXVzID0gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0
eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpOwogCi0gICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gaG9yaXpvbnRhbFJhZGlpID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgIGF1dG8gaG9yaXpvbnRhbFJhZGlpID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwogICAgIGhvcml6b250YWxSYWRpaS0+YXBwZW5kKCp0b3BMZWZ0UmFk
aXVzLT5pdGVtKDApKTsKICAgICBpZiAoc2hvd0hvcml6b250YWxUb3BSaWdodCkKICAgICAgICAg
aG9yaXpvbnRhbFJhZGlpLT5hcHBlbmQoKnRvcFJpZ2h0UmFkaXVzLT5pdGVtKDApKTsKQEAgLTgw
Niw5ICs4MDQsOSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hv
cnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmIChzaG93SG9yaXpv
bnRhbEJvdHRvbUxlZnQpCiAgICAgICAgIGhvcml6b250YWxSYWRpaS0+YXBwZW5kKCpib3R0b21M
ZWZ0UmFkaXVzLT5pdGVtKDApKTsKIAotICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGhvcml6b250YWxS
YWRpaS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBsaXN0LT5hcHBlbmQoV1RGTW92ZShob3Jpem9u
dGFsUmFkaWkpKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZlcnRpY2FsUmFkaWlMaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gdmVydGlj
YWxSYWRpaUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAg
dmVydGljYWxSYWRpaUxpc3QtPmFwcGVuZCgqdG9wTGVmdFJhZGl1cy0+aXRlbSgxKSk7CiAgICAg
aWYgKHNob3dWZXJ0aWNhbFRvcFJpZ2h0KQogICAgICAgICB2ZXJ0aWNhbFJhZGlpTGlzdC0+YXBw
ZW5kKCp0b3BSaWdodFJhZGl1cy0+aXRlbSgxKSk7CkBAIC04MTcsOCArODE1LDggQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICBpZiAoc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCkKICAgICAg
ICAgdmVydGljYWxSYWRpaUxpc3QtPmFwcGVuZCgqYm90dG9tTGVmdFJhZGl1cy0+aXRlbSgxKSk7
CiAKLSAgICBpZiAoIXZlcnRpY2FsUmFkaWlMaXN0LT5lcXVhbHMoZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqbGlzdC5nZXQoKS5pdGVtKDApKSkpCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHZl
cnRpY2FsUmFkaWlMaXN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGlmICghdmVydGljYWxSYWRp
aUxpc3QtPmVxdWFscyhkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpsaXN0LT5pdGVtKDApKSkpCisg
ICAgICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKHZlcnRpY2FsUmFkaWlMaXN0KSk7CiAKICAgICBy
ZXR1cm4gbGlzdDsKIH0KQEAgLTg4Nyw3ICs4ODUsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBj
b21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHls
ZQogCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gcHJpbnQgb3V0IGluZGl2aWR1YWwgZnVuY3Rpb25z
IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MjQpCiAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKG1hdHJpeFRyYW5zZm9ybVZhbHVlKHRyYW5zZm9ybSwgc3R5bGUpKTsKKyAg
ICBsaXN0LT5hcHBlbmQobWF0cml4VHJhbnNmb3JtVmFsdWUodHJhbnNmb3JtLCBzdHlsZSkpOwog
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCkBAIC05MzQsNyArOTMyLDcgQEAgUmVmPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGMKIAogICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocmVmZXJlbmNlT3BlcmF0aW9uLnVybCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTRnVuY3Rpb25WYWx1ZT4gZmlsdGVyVmFsdWU7CiAgICAgICAgICAgICBzd2l0Y2ggKGZp
bHRlck9wZXJhdGlvbi50eXBlKCkpIHsKQEAgLTk5Niw3ICs5OTQsNyBAQCBSZWY8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgYwogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1
ZTo6Y3JlYXRlKENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChmaWx0ZXJWYWx1ZS5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChmaWx0ZXJWYWx1ZS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKQEAgLTExNjYsNyArMTE2NCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3Jp
ZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSCiAgICAgfSBl
bHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrU2l6ZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGFkZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChj
b2xsZWN0b3IsIGksIGxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQo
c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHRyYWNrU2l6ZXNbaV0sIHN0eWxlKSk7Cisg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHRy
YWNrU2l6ZXNbaV0sIHN0eWxlKSk7CiAgICAgICAgIH0KICAgICAgICAgaW5zZXJ0aW9uSW5kZXgg
PSB0cmFja1NpemVzLnNpemUoKTsKICAgICB9CkBAIC0xMTg3LDEzICsxMTg1LDEzIEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0IEdyaWRQb3NpdGlvbiYg
cG9zaXRpb24pCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzU3BhbigpKSB7Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTcGFu
KSk7Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShw
b3NpdGlvbi5zcGFuUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVTcGFuKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUocG9zaXRpb24uc3BhblBvc2l0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKIAogICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgp
KQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9z
aXRpb24ubmFtZWRHcmlkTGluZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLm5h
bWVkR3JpZExpbmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKIH0KICNlbmRpZgpAQCAtMTIwNywxNCArMTIwNSwxNCBAQCBzdGF0
aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmlt
YXRpb24mIGFuaW1hdGlvbikKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVWYWx1ZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoYW5pbWF0aW9uLnByb3BlcnR5KCkpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVM
aXN0PiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmlt
TGlzdCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9uUHJvcGVydHlWYWx1ZShj
b25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoYW5p
bUxpc3QtPmFuaW1hdGlvbihpKSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRy
YW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGwpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
QWxsKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKQEAgLTEyNDIsNyArMTI0MCw3IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvclNjcm9sbFNuYXBBbGlnbm1lbnQoY29uc3QgU2Ny
b2xsU25hcEFsaWduJiBhbGlnCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPENTU1ZhbHVlPiBnZXRX
aWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZURh
dGEpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB3aWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBX
aWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZURhdGEpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29s
ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBpZiAoIXdpbGxDaGFuZ2VEYXRhIHx8
ICF3aWxsQ2hhbmdlRGF0YS0+bnVtRmVhdHVyZXMoKSkKQEAgLTEyNTMsMTMgKzEyNTEsMTMgQEAg
c3RhdGljIFJlZjxDU1NWYWx1ZT4gZ2V0V2lsbENoYW5nZVByb3BlcnR5VmFsdWUoY29uc3QgV2ls
bENoYW5nZURhdGEqIHdpbGxDaGFuZ2UKICAgICAgICAgV2lsbENoYW5nZURhdGE6OkZlYXR1cmVQ
cm9wZXJ0eVBhaXIgZmVhdHVyZSA9IHdpbGxDaGFuZ2VEYXRhLT5mZWF0dXJlQXQoaSk7CiAgICAg
ICAgIHN3aXRjaCAoZmVhdHVyZS5maXJzdCkgewogICAgICAgICBjYXNlIFdpbGxDaGFuZ2VEYXRh
OjpTY3JvbGxQb3NpdGlvbjoKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbikpOworICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVTY3JvbGxQb3NpdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV2lsbENoYW5nZURhdGE6OkNvbnRlbnRzOgotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRlbnRzKSk7
CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUNvbnRlbnRzKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXaWxsQ2hhbmdlRGF0YTo6UHJvcGVydHk6Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKGZlYXR1cmUuc2Vjb25kKSk7Cisg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShmZWF0dXJlLnNlY29uZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ls
bENoYW5nZURhdGE6OkludmFsaWQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTE0NTYsMzkgKzE0NTQsMzkgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZm9udFZhcmlhbnRF
YXN0QXNpYW5Qcm9wZXJ0eVZhbHVlKEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWEKICAgICByZXR1
cm4gV1RGTW92ZSh2YWx1ZUxpc3QpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0
RGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBkZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewog
ICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlm
IChhbmltTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1MaXN0LT5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShhbmltTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5p
bWF0aW9uRGVsYXkoKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25z
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmlt
YXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRp
YWxEZWxheSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAgICB9CiAgICAgcmV0dXJu
IGxpc3Q7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXREdXJhdGlvblZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGR1
cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0
KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbUxpc3QtPnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KGFuaW1MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmltYXRp
b25EdXJhdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1h
dGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5p
dGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgIH0KICAgICBy
ZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVuY3Rp
b25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCitzdGF0aWMgUmVm
PENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiB0aW1pbmdGdW5jdGlvbikKIHsKLSAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkp
IHsKKyAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5n
RnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24g
PSAqc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1
bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOwogICAgICAgICBpZiAoZnVu
Y3Rpb24udGltaW5nRnVuY3Rpb25QcmVzZXQoKSAhPSBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpDdXN0b20pIHsKICAgICAgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJZCA9IENTU1ZhbHVlSW52
YWxpZDsKICAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rpb24udGltaW5nRnVuY3Rpb25QcmVzZXQo
KSkgewpAQCAtMTUxMSw1OSArMTUwOSw2MCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVU
aW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdAogICAg
ICAgICByZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVu
Y3Rpb24ueDEoKSwgZnVuY3Rpb24ueTEoKSwgZnVuY3Rpb24ueDIoKSwgZnVuY3Rpb24ueTIoKSk7
CiAgICAgfQogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246IHsKLSAgICAg
ICAgYXV0byYgZnVuY3Rpb24gPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlv
bio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0aWNfY2Fz
dDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOwogICAgICAgICBy
ZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubnVtYmVy
T2ZTdGVwcygpLCBmdW5jdGlvbi5zdGVwQXRTdGFydCgpKTsKICAgICB9CiAgICAgY2FzZSBUaW1p
bmdGdW5jdGlvbjo6U3ByaW5nRnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7
CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5n
RnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBDU1NTcHJpbmdUaW1p
bmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubWFzcygpLCBmdW5jdGlvbi5zdGlmZm5l
c3MoKSwgZnVuY3Rpb24uZGFtcGluZygpLCBmdW5jdGlvbi5pbml0aWFsVmVsb2NpdHkoKSk7CiAg
ICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlvbi0+dHlwZSgp
ID09IFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVCh0aW1p
bmdGdW5jdGlvbi50eXBlKCkgPT0gVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKTsKICAg
ICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlTGluZWFyKTsKICAgICB9CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0
PiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQor
c3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0
aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYW5pbUxpc3QtPmFuaW1hdGlv
bihpKS50aW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50aW1pbmdG
dW5jdGlvbigpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBh
bmltYXRpb25zCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9u
VmFsdWUoQW5pbWF0aW9uOjppbml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246OmluaXRp
YWxUaW1pbmdGdW5jdGlvbigpKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKICNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUFuaW1h
dGlvblRyaWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25UcmlnZ2VyKiB0cmlnZ2VyLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCisKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUFuaW1hdGlv
blRyaWdnZXJWYWx1ZShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiB0cmlnZ2VyLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc3dpdGNoICh0cmlnZ2VyLT50eXBlKCkpIHsKKyAgICBz
d2l0Y2ggKHRyaWdnZXIudHlwZSgpKSB7CiAgICAgY2FzZSBBbmltYXRpb25UcmlnZ2VyOjpBbmlt
YXRpb25UcmlnZ2VyVHlwZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlclR5cGU6IHsKLSAgICAgICAg
YXV0byYgc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRy
aWdnZXI+KCp0cmlnZ2VyKTsKKyAgICAgICAgYXV0byYgc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciA9
IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KHRyaWdnZXIpOwogICAgICAgICBpZiAo
c2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgpLmlzQXV0bygpKQogICAgICAgICAgICAg
cmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3JlYXRlKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5zdGFydFZhbHVlKCks
IHN0eWxlKSk7CiAgICAgICAgIHJldHVybiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU6
OmNyZWF0ZSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHNjcm9sbEFuaW1hdGlvblRy
aWdnZXIuc3RhcnRWYWx1ZSgpLCBzdHlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3Ro
KHNjcm9sbEFuaW1hdGlvblRyaWdnZXIuZW5kVmFsdWUoKSwgc3R5bGUpKTsKICAgICB9CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHRyaWdnZXItPnR5cGUoKSA9PSBBbmltYXRpb25Ucmln
Z2VyOjpBbmltYXRpb25UcmlnZ2VyVHlwZTo6QXV0b0FuaW1hdGlvblRyaWdnZXJUeXBlKTsKKyAg
ICAgICAgQVNTRVJUKHRyaWdnZXIudHlwZSgpID09IEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlv
blRyaWdnZXJUeXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUpOwogICAgICAgICByZXR1cm4g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKTsKICAgICB9CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRBbmltYXRpb25U
cmlnZ2VyVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBhbmltYXRpb25UcmlnZ2VyVmFs
dWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YW5pbUxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3Jl
YXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGFuaW1MaXN0LT5hbmltYXRpb24oaSkudHJpZ2dlcigp
LmdldCgpLCBzdHlsZSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlv
blRyaWdnZXJWYWx1ZSgqYW5pbUxpc3QtPmFuaW1hdGlvbihpKS50cmlnZ2VyKCksIHN0eWxlKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRy
aWdnZXJWYWx1ZShBbmltYXRpb246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7Ci0K
KyAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZUFuaW1hdGlvblRyaWdnZXJWYWx1ZShBbmltYXRp
b246OmluaXRpYWxUcmlnZ2VyKCkuZ2V0KCksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9
CisKICNlbmRpZgogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZh
bHVlKHVuc2lnbmVkIGxpbmVCb3hDb250YWluKQpAQCAtMTcwMCw3ICsxNjk5LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRl
eHREZWNvcmF0aW9uKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCk7CiAgICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3JlZC4KLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVVbmRlcmxpbmUpKTsKICAgICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92
ZXJsaW5lKQpAQCAtMTcxNCw3ICsxNzEzLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVy
VGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQogCiAgICAg
aWYgKCFsaXN0LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9u
TnVsbCgpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENTU1Zh
bHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0
aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSkKQEAgLTE3NTgsNyArMTc1Nyw3IEBAIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4
dEVtcGhhc2lzUG9zaXRpb24KICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBU
ZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRF
bXBoYXNpc1Bvc2l0aW9uVW5kZXIpKSk7CiAgICAgQVNTRVJUKCEoKHRleHRFbXBoYXNpc1Bvc2l0
aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0KSAmJiAodGV4dEVtcGhhc2lzUG9zaXRpb24g
JiBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkpOwogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHRleHRFbXBo
YXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyKQogICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU92ZXIpKTsK
ICAgICBpZiAodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvblVuZGVy
KQpAQCAtMTc2NywxNiArMTc2NiwxNSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJFbXBo
YXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1ZhbHVlKFRleHRFbXBoYXNpc1Bvc2l0aW9uCiAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
TGVmdCkpOwogICAgIGlmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0
aW9uUmlnaHQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUmlnaHQpKTsKLQogICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7Ci0gICAgcmV0dXJuIGxpc3QucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShsaXN0KTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gaGFuZ2luZ1B1bmN0dWF0aW9u
VG9DU1NWYWx1ZShIYW5naW5nUHVuY3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9uKQogewogICAg
IGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CiAgICAgaWYgKGhhbmdpbmdQdW5jdHVhdGlvbiAmIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9u
KQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZUZpcnN0KSk7CiAgICAgaWYgKGhhbmdpbmdQdW5jdHVhdGlvbiAmIEFsbG93RW5k
SGFuZ2luZ1B1bmN0dWF0aW9uKQpAQCAtMTc4Nyw3ICsxNzg1LDcgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gaGFuZ2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZShIYW5naW5nUHVuY3R1YXRpb24gaGFu
Z2luZ1B1bmMKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVMYXN0KSk7CiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25l
KTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogfQogICAgIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFs
dWUoRUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGVhdCkKQEAgLTE4MDMsOCAr
MTgwMSw4IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxSZXBlYXRUb0NTU1ZhbHVlKEVGaWxs
UmVwZWF0IHhSZXBlYXQsIEVGaWxsUmVwZWF0IHlSZXBlCiAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUmVwZWF0WSk7CiAKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC5n
ZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHhSZXBlYXQpKTsKLSAgICBsaXN0
LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeVJlcGVhdCkpOworICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeFJlcGVhdCkpOworICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeVJlcGVhdCkpOwogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCkBAIC0xODI3LDQwICsxODI1LDQwIEBAIHN0YXRpYyBSZWY8Q1NT
VmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNvbnN0
IFJlbmRlclN0CiAgICAgaWYgKGZpbGxTaXplLnR5cGUgPT0gQ292ZXIpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUNvdmVyKTsKIAotICAgIGlmIChmaWxsU2l6ZS5zaXplLmhlaWdodCgpLmlzQXV0bygpKQotICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXpl
LndpZHRoKCksIHN0eWxlKTsKKyAgICBpZiAoZmlsbFNpemUuc2l6ZS5oZWlnaHQuaXNBdXRvKCkp
CisgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXpl
LnNpemUud2lkdGgsIHN0eWxlKTsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXplLnNpemUud2lkdGgoKSwgc3R5bGUpKTsKLSAgICBs
aXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGZpbGxTaXpl
LnNpemUuaGVpZ2h0KCksIHN0eWxlKSk7CisgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS53aWR0aCwgc3R5bGUpKTsKKyAgICBsaXN0
LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChmaWxsU2l6ZS5zaXplLmhl
aWdodCwgc3R5bGUpKTsKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAotc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKHN0eWxlLT5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
Ryk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoc3R5
bGUuY29udGVudEFsdFRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQog
ICAgIAotc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NW
YWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29s
ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgZm9yIChjb25zdCBDb250ZW50RGF0YSog
Y29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsgY29udGVudERhdGE7IGNvbnRlbnRE
YXRhID0gY29udGVudERhdGEtPm5leHQoKSkgeworICAgIGZvciAoYXV0byogY29udGVudERhdGEg
PSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50
RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChpczxDb3VudGVyQ29udGVudERhdGE+KCpjb250
ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50
ZXIoKS5pZGVudGlmaWVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7
CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmll
cigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NPVU5URVJfTkFNRSkpOwogICAgICAgICBlbHNl
IGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAgICAgbGlz
dC5nZXQoKS5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5p
bWFnZSgpLmNzc1ZhbHVlKCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGRvd25jYXN0PElt
YWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2UoKS5jc3NWYWx1ZSgpKTsKICAgICAg
ICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PFRl
eHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAgIGlmIChzdHlsZS0+aGFz
Rmxvd0Zyb20oKSkKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJ
TkcpKTsKKyAgICBpZiAoc3R5bGUuaGFzRmxvd0Zyb20oKSkKKyAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb3VudGVyVG9D
U1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCkKIHsKLSAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBtYXAgPSBzdHlsZS0+Y291bnRl
ckRpcmVjdGl2ZXMoKTsKKyAgICBhdXRvKiBtYXAgPSBzdHlsZS5jb3VudGVyRGlyZWN0aXZlcygp
OwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKIApAQCAtMTg4MywxNCArMTg4
MSwyMSBAQCBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpCiAgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxl
bWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0
eUlEKSk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBmb250RmFtaWx5RnJvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBmb250
RmFtaWx5TGlzdEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZS0+Zm9udENhc2NhZGUoKS5mYW1pbHlDb3VudCgpOyAr
K2kpCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHZhbHVlRm9yRmFtaWx5KHN0eWxlLT5mb250
Q2FzY2FkZSgpLmZhbWlseUF0KGkpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0
eWxlLmZvbnRDYXNjYWRlKCkuZmFtaWx5Q291bnQoKTsgKytpKQorICAgICAgICBsaXN0LT5hcHBl
bmQodmFsdWVGb3JGYW1pbHkoc3R5bGUuZm9udENhc2NhZGUoKS5mYW1pbHlBdChpKSkpOwogICAg
IHJldHVybiBsaXN0OwogfQogCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250RmFtaWx5RnJvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBpZiAoc3R5bGUuZm9udENhc2Nh
ZGUoKS5mYW1pbHlDb3VudCgpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZUZvckZhbWlseShz
dHlsZS5mb250Q2FzY2FkZSgpLmZhbWlseUF0KDApKTsKKyAgICByZXR1cm4gZm9udEZhbWlseUxp
c3RGcm9tU3R5bGUoc3R5bGUpOworfQorCiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBs
aW5lSGVpZ2h0RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBMZW5n
dGggbGVuZ3RoID0gc3R5bGUubGluZUhlaWdodCgpOwpAQCAtMTkxMSwyMDMgKzE5MTYsMjAzIEBA
IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTaXplRnJvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHls
ZS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwgc3R5bGUpOwogfQogCi1zdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFN0eWxlRnJvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpLml0YWxpYygpKQorICAgIGlmIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS5pdGFs
aWMoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlSXRhbGljKTsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1z
dGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEZyb21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQorICAgIGlmIChzdHlsZS5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQogICAgICAgICByZXR1
cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb3JtYWwpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOwogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFu
dENvbW1vbkxpZ2F0dXJlcygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1
cmVzOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVy
ZXM6OlllczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb21tb25MaWdhdHVyZXMpKTsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlQ29tbW9uTGlnYXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vQ29tbW9uTGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1
cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkpIHsKKyAgICBzd2l0
Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
KCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWw6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6OlllczoKLSAgICAgICAgbGlzdC5n
ZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZURpc2NyZXRpb25hcnlMaWdhdHVyZXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250
VmFyaWFudExpZ2F0dXJlczo6Tm86Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9EaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxp
Z2F0dXJlcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS52YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcygpKSB7CisgICAgc3dp
dGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcygp
KSB7CiAgICAgY2FzZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlSGlzdG9yaWNhbExpZ2F0dXJlcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVIaXN0
b3JpY2FsTGlnYXR1cmVzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRM
aWdhdHVyZXM6Ok5vOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0
dXJlcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXMpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkudmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcygpKSB7CiAgICAgY2Fz
ZSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNl
IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpZZXM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29u
dGV4dHVhbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250ZXh0dWFsKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOgotICAgICAgICBsaXN0Lmdl
dCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vQ29udGV4dHVhbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb0NvbnRleHR1
YWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnRE
ZXNjcmlwdGlvbigpLnZhcmlhbnRQb3NpdGlvbigpKSB7CiAgICAgY2FzZSBGb250VmFyaWFudFBv
c2l0aW9uOjpOb3JtYWw6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRQb3Np
dGlvbjo6U3Vic2NyaXB0OgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1YikpOworICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVTdWIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dFBvc2l0aW9uOjpTdXBlcnNjcmlwdDoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdXBlcikp
OworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdXBlcikpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50Q2FwcygpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50Q2FwcygpKSB7CiAgICAg
Y2FzZSBGb250VmFyaWFudENhcHM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBG
b250VmFyaWFudENhcHM6OlNtYWxsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2Fw
cykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFsbENhcHMpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudENhcHM6OkFsbFNtYWxsOgotICAgICAgICBsaXN0LmdldCgpLmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUFsbFNtYWxsQ2FwcykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGxTbWFsbENhcHMpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6OlBldGl0ZToKLSAgICAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVQZXRpdGVDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVBl
dGl0ZUNhcHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudENhcHM6OkFs
bFBldGl0ZToKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBbGxQZXRpdGVDYXBzKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUFsbFBldGl0ZUNhcHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGb250VmFyaWFudENhcHM6OlVuaWNhc2U6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5p
Y2FzZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmljYXNlKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpUaXRsaW5nOgotICAgICAgICBsaXN0LmdldCgpLmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVRpdGxpbmdDYXBzKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVRpdGxpbmdDYXBzKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLnZhcmlhbnROdW1lcmljRmlndXJlKCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnROdW1lcmljRmlndXJlKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJp
YW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVMaW5pbmdOdW1zKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmluZ051bXMpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudE51bWVyaWNGaWd1cmU6Ok9sZFN0eWxlTnVt
YmVyczoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPbGRzdHlsZU51bXMpKTsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlT2xkc3R5bGVOdW1zKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3BhY2luZygp
KSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1Nw
YWNpbmcoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6Tm9ybWFsOgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6OlByb3Bv
cnRpb25hbE51bWJlcnM6Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUHJvcG9ydGlvbmFsTnVt
cykpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQcm9wb3J0aW9uYWxOdW1zKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6VGFidWxhck51bWJlcnM6
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVGFidWxhck51bXMpKTsKKyAgICAgICAgbGlzdC0+
YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlVGFidWxhck51bXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNo
IChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSB7Cisg
ICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY0ZyYWN0aW9u
KCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OkRpYWdvbmFs
RnJhY3Rpb25zOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zKSk7
CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246OlN0YWNrZWRGcmFjdGlvbnM6
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3RhY2tlZEZyYWN0aW9ucykpOworICAgICAgICBs
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVTdGFja2VkRnJhY3Rpb25zKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljT3JkaW5h
bCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJp
Y09yZGluYWwoKSkgewogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbDo6Tm9ybWFs
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Olll
czoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPcmRpbmFsKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU9yZGluYWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNTbGFzaGVkWmVybygpKSB7CisgICAg
c3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJv
KCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWw6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm86Olll
czoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbGFzaGVkWmVybykpOworICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVTbGFzaGVkWmVybykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50QWx0ZXJuYXRlcygpKSB7CisgICAg
c3dpdGNoIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYW50QWx0ZXJuYXRlcygpKSB7CiAg
ICAgY2FzZSBGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudEFsdGVybmF0ZXM6Okhpc3RvcmljYWxGb3JtczoKLSAgICAgICAg
bGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVIaXN0b3JpY2FsRm9ybXMpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
SGlzdG9yaWNhbEZvcm1zKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN3aXRjaCAo
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KCkpIHsKKyAg
ICBzd2l0Y2ggKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
KCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsOgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzNzg6
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzNzgpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
SmlzNzgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZh
cmlhbnQ6OkppczgzOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUppczgzKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUppczgzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlh
bnRFYXN0QXNpYW5WYXJpYW50OjpKaXM5MDoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM5
MCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVKaXM5MCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6SmlzMDQ6Ci0gICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlSmlzMDQpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSmlzMDQpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6OlNpbXBsaWZpZWQ6
Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU2ltcGxpZmllZCkpOworICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVTaW1wbGlmaWVkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50OjpUcmFkaXRpb25hbDoKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVU
cmFkaXRpb25hbCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVUcmFkaXRpb25hbCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52
YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0
aW9uKCkudmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50RWFz
dEFzaWFuV2lkdGg6Ok5vcm1hbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250VmFyaWFu
dEVhc3RBc2lhbldpZHRoOjpGdWxsOgotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZ1bGxXaWR0
aCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGdWxsV2lkdGgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoOjpQcm9wb3J0aW9uYWw6Ci0gICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUHJvcG9ydGlvbmFsV2lkdGgpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlUHJvcG9ydGlvbmFsV2lkdGgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dp
dGNoIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblJ1YnkoKSkgewor
ICAgIHN3aXRjaCAoc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblJ1Ynko
KSkgewogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpOb3JtYWw6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpZZXM6Ci0gICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlUnVieSkpOworICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdWJ5KSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1z
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWln
aHRGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHN3aXRjaCAoc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5mb250
RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewogICAgIGNhc2UgRm9udFdlaWdodDEwMDoKICAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlMTAwKTsKICAgICBjYXNlIEZvbnRXZWlnaHQyMDA6CkBAIC0yMTM4LDE5ICsyMTQz
LDE5IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRTeW50aGVzaXNGcm9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChzdHlsZS5mb250RGVzY3JpcHRpb24oKS5mb250
U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzU3R5bGUpCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlU3R5bGUpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3R5bGUpKTsKICAgICBpZiAoc3R5bGUu
Zm9udERlc2NyaXB0aW9uKCkuZm9udFN5bnRoZXNpcygpICYgRm9udFN5bnRoZXNpc1dlaWdodCkK
LSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVXZWlnaHQpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
V2VpZ2h0KSk7CiAgICAgaWYgKHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTeW50aGVzaXMo
KSAmIEZvbnRTeW50aGVzaXNTbWFsbENhcHMpCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21h
bGxDYXBzKSk7Ci0gICAgcmV0dXJuIFJlZjxDU1NWYWx1ZT4obGlzdC5nZXQoKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVNtYWxsQ2FwcykpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQog
CiB0eXBlZGVmIGNvbnN0IExlbmd0aCYgKFJlbmRlclN0eWxlOjoqUmVuZGVyU3R5bGVMZW5ndGhH
ZXR0ZXIpKCkgY29uc3Q7CiB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckJveE1vZGVsT2JqZWN0
OjoqUmVuZGVyQm94Q29tcHV0ZWRDU1NWYWx1ZUdldHRlcikoKSBjb25zdDsKIAogdGVtcGxhdGU8
UmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyLCBSZW5kZXJCb3hDb21wdXRlZENT
U1ZhbHVlR2V0dGVyIGNvbXB1dGVkQ1NTVmFsdWVHZXR0ZXI+Ci1pbmxpbmUgUmVmUHRyPENTU1Zh
bHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIExlbmd0aCB1bnpvb216
ZWRMZW5ndGggPSAoc3R5bGUuKmxlbmd0aEdldHRlcikoKTsKICAgICBpZiAoIWlzPFJlbmRlckJv
eD4ocmVuZGVyZXIpIHx8IHVuem9vbXplZExlbmd0aC5pc0ZpeGVkKCkpCkBAIC0yMTU5LDExICsy
MTY0LDkgQEAgaW5saW5lIFJlZlB0cjxDU1NWYWx1ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFy
Z2luUGl4ZWxWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYKIH0KIAogdGVtcGxhdGU8UmVuZGVyU3R5
bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyPgotaW5saW5lIGJvb2wgcGFkZGluZ09yTWFyZ2lu
SXNSZW5kZXJlckRlcGVuZGVudChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBwYWRkaW5nT3JNYXJnaW5Jc1JlbmRlcmVyRGVwZW5k
ZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsK
LSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiAhKHN0eWxlICYmIChzdHlsZS0+Kmxlbmd0aEdldHRlcikoKS5p
c0ZpeGVkKCkpOworICAgIHJldHVybiByZW5kZXJlciAmJiBzdHlsZSAmJiByZW5kZXJlci0+aXNC
b3goKSAmJiAhKHN0eWxlLT4qbGVuZ3RoR2V0dGVyKSgpLmlzRml4ZWQoKTsKIH0KIAogc3RhdGlj
IENTU1ZhbHVlSUQgY29udmVydFRvUGFnZUJyZWFrKEJyZWFrQmV0d2VlbiB2YWx1ZSkKQEAgLTI0
NDUsMTEgKzI0NDgsMTEgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9ySXRlbVBv
c2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KGNvbnN0IFN0eWxlU2UKICAgICBhdXRvJiBjc3NW
YWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gcmVzdWx0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChkYXRhLnBvc2l0
aW9uVHlwZSgpID09IExlZ2FjeVBvc2l0aW9uKQotICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMZWdhY3kpKTsKLSAg
ICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRhLnBvc2l0
aW9uKCkpKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUxlZ2FjeSkpOworICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShkYXRhLnBvc2l0aW9uKCkpKTsKICAgICBpZiAoZGF0YS5wb3NpdGlv
bigpID49IEl0ZW1Qb3NpdGlvbkNlbnRlciAmJiBkYXRhLm92ZXJmbG93KCkgIT0gT3ZlcmZsb3dB
bGlnbm1lbnREZWZhdWx0KQotICAgICAgICByZXN1bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShkYXRhLm92ZXJmbG93KCkpKTsKLSAgICBBU1NFUlQocmVzdWx0LmdldCgp
Lmxlbmd0aCgpIDw9IDIpOworICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoZGF0YS5vdmVyZmxvdygpKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkg
PD0gMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ1OCwyMSArMjQ2MSwyMSBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JDb250ZW50UG9zaXRpb25BbmREaXN0cmli
dXRpb25XaXRoT3ZlcmZsb3dBbGlnbgogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCk7CiAgICAgYXV0byByZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGRhdGEuZGlzdHJpYnV0aW9uKCkgIT0gQ29udGVu
dERpc3RyaWJ1dGlvbkRlZmF1bHQpCi0gICAgICAgIHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEuZGlzdHJpYnV0aW9uKCkpKTsKKyAgICAgICAgcmVzdWx0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEuZGlzdHJpYnV0aW9uKCkpKTsK
ICAgICBpZiAoZGF0YS5kaXN0cmlidXRpb24oKSA9PSBDb250ZW50RGlzdHJpYnV0aW9uRGVmYXVs
dCB8fCBkYXRhLnBvc2l0aW9uKCkgIT0gQ29udGVudFBvc2l0aW9uTm9ybWFsKSB7CiAgICAgICAg
IGJvb2wgZ3JpZEVuYWJsZWQgPSBmYWxzZTsKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQog
ICAgICAgICBncmlkRW5hYmxlZCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpOwogI2VuZGlmCiAgICAgICAgIGlmIChkYXRh
LnBvc2l0aW9uKCkgIT0gQ29udGVudFBvc2l0aW9uTm9ybWFsIHx8IGdyaWRFbmFibGVkKQotICAg
ICAgICAgICAgcmVzdWx0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZGF0
YS5wb3NpdGlvbigpKSk7CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoZGF0YS5wb3NpdGlvbigpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlc3VsdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShu
b3JtYWxCZWhhdmlvclZhbHVlSUQpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUobm9ybWFsQmVoYXZpb3JWYWx1ZUlEKSk7CiAg
ICAgfQogICAgIGlmICgoZGF0YS5wb3NpdGlvbigpID49IENvbnRlbnRQb3NpdGlvbkNlbnRlciB8
fCBkYXRhLmRpc3RyaWJ1dGlvbigpICE9IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0KSAmJiBk
YXRhLm92ZXJmbG93KCkgIT0gT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0KQotICAgICAgICByZXN1
bHQuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkYXRhLm92ZXJmbG93KCkp
KTsKLSAgICBBU1NFUlQocmVzdWx0LmdldCgpLmxlbmd0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHJl
c3VsdC5nZXQoKS5sZW5ndGgoKSA8PSAzKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGRhdGEub3ZlcmZsb3coKSkpOworICAgIEFTU0VSVChyZXN1bHQt
Pmxlbmd0aCgpID4gMCk7CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPD0gMyk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ5NCwxMCArMjQ5NywxMCBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvd25lZFN0eWxl
OwogICAgIGF1dG8qIHN0eWxlID0gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoKnN0eWxl
ZEVsZW1lbnQsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJvcGVydHlDdXN0b20sIG93
bmVkU3R5bGUpOwotICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5oYXNDdXN0b21Qcm9wZXJ0eShw
cm9wZXJ0eU5hbWUpKQorICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCkuZ2V0KHByb3BlcnR5TmFtZSk7
CiB9CiAKIFN0cmluZyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVRleHQo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC0yNTYwLDg4ICsyNTYzLDY5IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZUNvbG9yVmFsdWUobV9hbGxvd1Zpc2l0ZWRTdHlsZT8gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgOiBzdHlsZS0+YmFja2dyb3VuZENvbG9y
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxs
TGF5ZXIqIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2Ug
PyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAg
ICAgICAgIGlmICghbGF5ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0KLSAgICAgICAgICAgIGlmICgh
bGF5ZXJzLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobGF5ZXJzLT5pbWFnZSgpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJzLT5pbWFnZSgpLT5jc3NWYWx1ZSgpOwot
CisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Vi
a2l0TWFza0ltYWdlID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobGF5ZXJzLmltYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnMu
aW1hZ2UoKS0+Y3NzVmFsdWUoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1
cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQo
KSkgeworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBj
dXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGN1cnJMYXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGN1cnJMYXllci0+aW1hZ2UoKS0+Y3NzVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrU2l6ZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUgPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5
ZXJzLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTaXplVG9DU1NWYWx1ZShs
YXllcnMtPnNpemUoKSwgKnN0eWxlKTsKLQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsg
Y3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMg
PSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUgPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5
ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVlKGxh
eWVycy5zaXplKCksICpzdHlsZSk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnJM
YXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkp
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTaXplVG9DU1NWYWx1ZShjdXJyTGF5
ZXItPnNpemUoKSwgKnN0eWxlKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0OiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0ID8gc3R5bGUtPm1hc2tMYXllcnMo
KSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIWxheWVycy0+
bmV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShsYXll
cnMtPnJlcGVhdFgoKSwgbGF5ZXJzLT5yZXBlYXRZKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1
dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0ID8g
c3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBl
YXRUb0NTU1ZhbHVlKGxheWVycy5yZXBlYXRYKCksIGxheWVycy5yZXBlYXRZKCkpOworICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChmaWxsUmVwZWF0VG9DU1NWYWx1ZShjdXJyTGF5ZXItPnJlcGVhdFgoKSwgY3VyckxheWVyLT5y
ZXBlYXRZKCkpKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1NvdXJjZVR5cGU6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJz
ID0gc3R5bGUtPm1hc2tMYXllcnMoKTsKLQotICAgICAgICAgICAgaWYgKCFsYXllcnMpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb25lKTsKLQotICAgICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKGxheWVycy0+bWFza1NvdXJj
ZVR5cGUoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0
IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1
cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gc3R5bGUtPm1hc2tM
YXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKGxheWVycy5tYXNrU291cmNlVHlwZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3Vy
ckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKGN1cnJMYXllci0+bWFza1NvdXJj
ZVR5cGUoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kQ29tcG9zaXRlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a0NvbXBvc2l0ZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSA/IHN0eWxlLT5tYXNrTGF5
ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXll
cnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGxheWVycy0+Y29tcG9zaXRlKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAg
ICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVy
OyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVy
cyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5bGUt
Pm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBp
ZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShsYXllcnMuY29tcG9zaXRlKCkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChh
dXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXll
ci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT5jb21wb3NpdGUoKSkpOwotCi0gICAgICAgICAgICByZXR1cm4g
bGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDogewotICAgICAgICAgICAg
Y29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwotICAg
ICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+YXR0YWNobWVudCgpKTsKLQotICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFT
ZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIg
PSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAg
ICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAg
ICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLmF0dGFjaG1lbnQoKSk7CisgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0g
Y3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmF0dGFjaG1lbnQoKSkpOwotCi0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46CkBAIC0yNjQ5LDY1ICsyNjMzLDU5IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kT3JpZ2luOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOiB7Ci0gICAgICAgICAgICBj
b25zdCBGaWxsTGF5ZXIqIGxheWVycyA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0
TWFza0NsaXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pID8g
c3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAg
ICAgICBhdXRvJiBsYXllcnMgPSAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSA/IHN0eWxl
LT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOwogICAgICAgICAgICAg
Ym9vbCBpc0NsaXAgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwg
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwIHx8IHByb3BlcnR5
SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDsKLSAgICAgICAgICAgIGlmICghbGF5ZXJz
LT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBFRmlsbEJveCBib3ggPSBpc0NsaXAgPyBsYXll
cnMtPmNsaXAoKSA6IGxheWVycy0+b3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3gpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkgewotICAg
ICAgICAgICAgICAgIEVGaWxsQm94IGJveCA9IGlzQ2xpcCA/IGN1cnJMYXllci0+Y2xpcCgpIDog
Y3VyckxheWVyLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGJveCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGlzQ2xpcCA/IGxheWVycy5jbGlw
KCkgOiBsYXllcnMub3JpZ2luKCkpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJy
TGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
aXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBjdXJyTGF5ZXItPm9yaWdpbigpKSk7CisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxheWVycyA9
IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gPyBzdHlsZS0+bWFz
a0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICgh
bGF5ZXJzLT5uZXh0KCkpCisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBwcm9wZXJ0eUlEID09
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0
eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKHByb3Bl
cnR5SUQsIGxheWVycywgKnN0eWxlKTsKIAotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsg
Y3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKHByb3BlcnR5SUQsIGN1cnJMYXllciwgKnN0
eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5
ZXItPm5leHQoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlUG9zaXRpb25M
aXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgKmN1cnJMYXllciwgKnN0eWxlKSk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblg6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIGlmICghbGF5
ZXJzLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShsYXllcnMtPnhQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHBy
b3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YID8gc3R5bGUtPm1hc2tM
YXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxh
eWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShsYXllcnMueFBvc2l0aW9uKCkpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAg
ICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVy
OyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5
ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGN1cnJMYXllci0+eFBvc2l0aW9uKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJu
IGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKLSAg
ICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMtPnlQb3NpdGlvbigpKTsKKyAgICAgICAgICAg
IGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25ZID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Cisg
ICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMueVBvc2l0aW9uKCkpOwogCi0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAg
ICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyID0gJmxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+eVBvc2l0aW9uKCkpKTsKIAot
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CiAg
ICAgICAgICAgICBpZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb2xsYXBz
ZSk7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZVNlcGFyYXRlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNp
bmc6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
KSwgKnN0eWxlKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5nKCksICpzdHlsZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNp
bmc6CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKTsKQEAgLTI4MjIsNyArMjgwMCw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1
cnNvcjogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKLSAgICAgICAg
ICAgIEN1cnNvckxpc3QqIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICAgICAg
YXV0byogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CiAgICAgICAgICAgICBpZiAoY3Vyc29y
cyAmJiBjdXJzb3JzLT5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kpCkBAIC0yODgxLDU5ICsyODU5
LDUzIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmZsb2F0aW5nKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDogewotICAgICAgICAgICAgUmVmUHRyPENTU0Zv
bnRWYWx1ZT4gY29tcHV0ZWRGb250ID0gQ1NTRm9udFZhbHVlOjpjcmVhdGUoKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+c3R5bGUgPSBmb250U3R5bGVGcm9tU3R5bGUoc3R5bGUpOworICAg
ICAgICAgICAgYXV0byBjb21wdXRlZEZvbnQgPSBDU1NGb250VmFsdWU6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgY29tcHV0ZWRGb250LT5zdHlsZSA9IGZvbnRTdHlsZUZyb21TdHlsZSgqc3R5bGUp
OwogICAgICAgICAgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50Q2Fwcygp
ID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGwpCiAgICAgICAgICAgICAgICAgY29tcHV0ZWRGb250
LT52YXJpYW50ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVTbWFsbENhcHMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGNvbXB1dGVkRm9udC0+dmFyaWFudCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZShzdHlsZSk7CisgICAgICAgICAgICBjb21w
dXRlZEZvbnQtPndlaWdodCA9IGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+c2l6ZSA9IGZvbnRTaXplRnJvbVN0eWxlKCpzdHlsZSk7CiAgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxlKCpz
dHlsZSk7Ci0gICAgICAgICAgICBjb21wdXRlZEZvbnQtPmZhbWlseSA9IGZvbnRGYW1pbHlGcm9t
U3R5bGUoc3R5bGUpOwotICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkRm9udDsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUxpc3QgPSBmb250RmFtaWx5RnJvbVN0eWxlKHN0
eWxlKTsKLSAgICAgICAgICAgIC8vIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSBmYW1pbHksIHJl
dHVybiB0aGF0IGFzIGEgQ1NTUHJpbWl0aXZlVmFsdWUuCi0gICAgICAgICAgICAvLyBOT1RFOiBH
ZWNrbyBhbHdheXMgcmV0dXJucyB0aGlzIGFzIGEgY29tbWEtc2VwYXJhdGVkIENTU1ByaW1pdGl2
ZVZhbHVlIHN0cmluZy4KLSAgICAgICAgICAgIGlmIChmb250RmFtaWx5TGlzdC0+bGVuZ3RoKCkg
PT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUxpc3QtPml0ZW0oMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUxpc3Q7CisgICAgICAgICAgICBjb21wdXRlZEZv
bnQtPmZhbWlseSA9IGZvbnRGYW1pbHlMaXN0RnJvbVN0eWxlKCpzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb21wdXRlZEZvbnQpOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250RmFtaWx5OgorICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlGcm9t
U3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgogICAgICAg
ICAgICAgcmV0dXJuIGZvbnRTaXplRnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250U3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFN0eWxlRnJvbVN0eWxl
KHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250U3R5bGVGcm9tU3R5bGUoKnN0eWxlKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgotICAgICAgICAgICAgcmV0dXJu
IGZvbnRWYXJpYW50RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250VmFy
aWFudEZyb21TdHlsZSgqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdo
dDoKLSAgICAgICAgICAgIHJldHVybiBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKKyAgICAg
ICAgICAgIHJldHVybiBmb250V2VpZ2h0RnJvbVN0eWxlKCpzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250U3ludGhlc2lzOgogICAgICAgICAgICAgcmV0dXJuIGZvbnRTeW50aGVz
aXNGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGZWF0dXJl
U2V0dGluZ3M6IHsKICAgICAgICAgICAgIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZlYXR1
cmVTZXR0aW5ncyA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mZWF0dXJlU2V0dGluZ3MoKTsK
ICAgICAgICAgICAgIGlmICghZmVhdHVyZVNldHRpbmdzLnNpemUoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1h
bCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBm
ZWF0dXJlIDogZmVhdHVyZVNldHRpbmdzKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChD
U1NGb250RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVy
ZS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5nczogewogICAgICAg
ICAgICAgY29uc3QgRm9udFZhcmlhdGlvblNldHRpbmdzJiB2YXJpYXRpb25TZXR0aW5ncyA9IHN0
eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYXRpb25TZXR0aW5ncygpOwogICAgICAgICAgICAg
aWYgKHZhcmlhdGlvblNldHRpbmdzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDog
dmFyaWF0aW9uU2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRW
YXJpYXRpb25WYWx1ZTo6Y3JlYXRlKGZlYXR1cmUudGFnKCksIGZlYXR1cmUudmFsdWUoKSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdzogewotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICAgICAgICAgIEFTU0VSVChzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25S
b3coKSB8fCBzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4oKSk7CiAgICAgICAg
ICAgICBpZiAoc3R5bGUtPmlzR3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkpCiAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVSb3cpKTsKQEAgLTI5NDMsNyArMjkxNSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmlzR3JpZEF1dG9GbG93QWxnb3JpdGhtRGVuc2UoKSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZURlbnNlKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBT
cGVjcyBtZW50aW9uIHRoYXQgZ2V0Q29tcHV0ZWRTdHlsZSgpIHNob3VsZCByZXR1cm4gdGhlIHVz
ZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluc3RlYWQgb2YgdGhlIGNvbXB1dGVkCkBAIC0yOTc5
LDEzICsyOTUxLDExIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRDb2x1bW5TaG9ydGhh
bmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93OgogICAgICAgICAgICAgcmV0
dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChncmlkUm93U2hvcnRoYW5k
KCkpOwotCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhczoKICAgICAg
ICAgICAgIGlmICghc3R5bGUtPm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdHlsZS0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9uZSk7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHJldHVybiBDU1NHcmlkVGVt
cGxhdGVBcmVhc1ZhbHVlOjpjcmVhdGUoc3R5bGUtPm5hbWVkR3JpZEFyZWEoKSwgc3R5bGUtPm5h
bWVkR3JpZEFyZWFSb3dDb3VudCgpLCBzdHlsZS0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcDoKICAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5ncmlkQ29sdW1uR2Fw
KCksICpzdHlsZSk7CkBAIC0zMTIwLDEwICszMDkwLDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPYmplY3RGaXQ6CiAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vYmplY3RGaXQoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbjogewotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5vYmplY3RQb3NpdGlvbigpLngoKSwgKnN0eWxlKSk7CiAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+b2Jq
ZWN0UG9zaXRpb24oKS55KCksICpzdHlsZSkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUtPm9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwpAQCAtMzIyNCwzMSArMzE5NCwzMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAg
ICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOgogICAgICAgICAgICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOgogICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrVHJpYW5nbGU6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6IHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrU2VzYW1lOgorICAgICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0RW1waGFzaXNGaWxsKCkpKTsKICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0
RW1waGFzaXNNYXJrKCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6IHsKICAgICAgICAgICAgIC8v
IElmIENTUzNfVEVYVCBpcyBkaXNhYmxlZCBvciB0ZXh0LWluZGVudCBoYXMgb25seSBvbmUgdmFs
dWUoPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4pLAogICAgICAgICAgICAgLy8gZ2V0UHJvcGVydHlD
U1NWYWx1ZSgpIHJldHVybnMgQ1NTVmFsdWUuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHRleHRJbmRlbnQgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0
SW5kZW50KCksICpzdHlsZSk7CisgICAgICAgICAgICBhdXRvIHRleHRJbmRlbnQgPSB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksICpzdHlsZSk7CiAj
aWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgICAgIC8vIElmIENTUzNfVEVYVCBpcyBlbmFi
bGVkIGFuZCB0ZXh0LWluZGVudCBoYXMgLXdlYmtpdC1lYWNoLWxpbmUgb3IgLXdlYmtpdC1oYW5n
aW5nLAogICAgICAgICAgICAgLy8gZ2V0UHJvcGVydHlDU1NWYWx1ZSgpIHJldHVybnMgQ1NTVmFs
dWVMaXN0LgogICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0SW5kZW50TGluZSgpID09IFRleHRJ
bmRlbnRFYWNoTGluZSB8fCBzdHlsZS0+dGV4dEluZGVudFR5cGUoKSA9PSBUZXh0SW5kZW50SGFu
Z2luZykgewotICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKHRleHRJbmRlbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKHRleHRJbmRlbnQpKTsKICAgICAgICAgICAgICAg
ICBpZiAoc3R5bGUtPnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVudEVhY2hMaW5lKQogICAg
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZVdlYmtpdEVhY2hMaW5lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVdlYmtpdEhhbmdpbmcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgotICAgICAgICAgICAgcmV0dXJuIHRleHRJbmRlbnQ7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZSh0ZXh0SW5kZW50KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+dGV4dFNo
YWRvdygpLCBwcm9wZXJ0eUlELCAqc3R5bGUpOwpAQCAtMzMyMSw4ICszMjkwLDcgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT53aWR0aCgpLCAqc3R5bGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZToKLSAgICAgICAgICAgIHJldHVybiBnZXRX
aWxsQ2hhbmdlUHJvcGVydHlWYWx1ZShzdHlsZS0+d2lsbENoYW5nZSgpKTsKLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxl
LT53aWxsQ2hhbmdlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+d29yZEJyZWFr
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CkBAIC0zMzk0LDkgKzMz
NjIsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgotICAgICAgICAgICAgcmV0dXJuIGdl
dERlbGF5VmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZGVs
YXlWYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbkRpcmVjdGlvbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAg
ICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAg
ICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQt
PnNpemUoKTsgKytpKSB7CkBAIC0zNDE3LDEyICszMzg1LDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb3JtYWwpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbkR1cmF0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldER1cmF0aW9uVmFsdWUoc3R5
bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25WYWx1ZShzdHls
ZS0+YW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxN
b2RlOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkg
ewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kp
IHsKQEAgLTM0NDMsMTAgKzM0MTEsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsK
LSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlz
dCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50OiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3Qg
QW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAo
dCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyAr
K2kpIHsKQEAgLTM0NTgsMjAgKzM0MjYsMjAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbEl0ZXJh
dGlvbkNvdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lOiB7Ci0gICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0
eWxlLT5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodC0+YW5pbWF0aW9uKGkp
Lm5hbWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRp
b25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKQEAgLTM0ODMsMTMgKzM0NTEsMTMgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1bm5pbmcpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0Owor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJu
IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygpKTsKICNpZiBF
TkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblRyaWdnZXI6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0QW5pbWF0aW9uVHJp
Z2dlclZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1
cm4gYW5pbWF0aW9uVHJpZ2dlclZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCksICpzdHlsZSk7CiAj
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5hcHBlYXJhbmNlKCkp
OwpAQCAtMzUzMSw4ICszNDk5LDggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAg
ICAgIC8vIE5vdCBhIHJlYWwgc3R5bGUgcHJvcGVydHkgLS0gdXNlZCBieSB0aGUgZWRpdGluZyBl
bmdpbmUgLS0gc28gaGFzIG5vIGNvbXB1dGVkIHZhbHVlLgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOiB7Ci0gICAgICAgICAg
ICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGRyb3AgPSAhc3R5bGUtPmluaXRpYWxMZXR0ZXJEcm9w
KCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckRyb3AoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBzaXplID0gIXN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPyBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5bGUtPmluaXRpYWxM
ZXR0ZXJEcm9wKCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckRy
b3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgYXV0byBz
aXplID0gIXN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6
OmNyZWF0ZShXVEZNb3ZlKGRyb3ApLCBXVEZNb3ZlKHNpemUpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgpAQCAtMzU1Miw3
ICszNTIwLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZl
KCksICpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbjog
ewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikg
ewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYm94OwogICAgICAgICAgICAgICAgIGlmIChp
czxSZW5kZXJCb3g+KCpyZW5kZXJlcikpCkBAIC0zNTY2LDcgKzM1MzQsNyBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgKnN0eWxlKSk7
CiAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoc3R5bGUtPnJ0bE9yZGVyaW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6
IENTU1ZhbHVlTG9naWNhbCk7CkBAIC0zNTg1LDEzICszNTUzLDEzIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgogICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+dXNlclNlbGVj
dCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBib3JkZXJS
YWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCAqc3R5bGUp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksICpzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgotICAgICAgICAg
ICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0
UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgKnN0eWxlKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCAq
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxl
LT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Q2xpcDogewogICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
QXV0byk7CkBAIC0zNjA3LDcgKzM1NzUsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtOgogICAgICAgICAgICAgcmV0dXJuIGNvbXB1
dGVkVHJhbnNmb3JtKHJlbmRlcmVyLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VHJhbnNmb3JtT3JpZ2luOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAg
ICAgICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkKQEAgLTM2MjMsNDIgKzM1
OTEsNDEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICBpZiAoc3R5
bGUtPnRyYW5zZm9ybU9yaWdpblooKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCAq
c3R5bGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtU3R5bGU6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZSgoc3R5bGUtPnRyYW5zZm9ybVN0eWxlM0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNE
UHJlc2VydmUzRCkgPyBDU1NWYWx1ZVByZXNlcnZlM2QgOiBDU1NWYWx1ZUZsYXQpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgotICAgICAgICAgICAgcmV0dXJuIGdl
dERlbGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGRl
bGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGdldER1cmF0aW9uVmFsdWUo
c3R5bGUtPnRyYW5zaXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGR1cmF0aW9uVmFsdWUo
c3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlv
blByb3BlcnR5OgotICAgICAgICAgICAgcmV0dXJuIGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVl
KHN0eWxlLT50cmFuc2l0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJv
cGVydHlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0VGltaW5n
RnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4g
dGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlUcmFuc2l0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0
KiBhbmltTGlzdCA9IHN0eWxlLT50cmFuc2l0aW9ucygpOwotICAgICAgICAgICAgaWYgKGFuaW1M
aXN0KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdHJhbnNpdGlvbnNM
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
aWYgKGF1dG8qIGFuaW1MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHRyYW5zaXRpb25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1MaXN0
LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiA9IGFuaW1MaXN0LT5hbmltYXRp
b24oaSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9u
ID0gYW5pbUxpc3QtPmFuaW1hdGlvbihpKTsKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGFuaW1hdGlvbikpOwogICAgICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGFuaW1hdGlv
bi5kdXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYW5pbWF0aW9uLnRp
bWluZ0Z1bmN0aW9uKCkuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoKmFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpKSk7
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAg
ICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFwcGVuZChsaXN0LnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFwcGVuZChXVEZNb3Zl
KGxpc3QpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5z
aXRpb25zTGlzdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2l0aW9uc0xp
c3QpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAg
ICAgICAgLy8gdHJhbnNpdGlvbi1wcm9wZXJ0eSBkZWZhdWx0IHZhbHVlLgogICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
bGwpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
QW5pbWF0aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKSk7
Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmlt
YXRpb246OmluaXRpYWxUaW1pbmdGdW5jdGlvbigpLmdldCgpKSk7CisgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246OmluaXRpYWxUaW1p
bmdGdW5jdGlvbigpKSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2
ZW50czoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnBvaW50ZXJFdmVudHMoKSk7CkBAIC0zNjc5LDMzICszNjQ2LDI5IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQm94Q29udGFpbjoK
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVlKHN0eWxlLT5saW5l
Qm94Q29udGFpbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsdDoKLSAgICAgICAgICAg
IHJldHVybiBhbHRUZXh0VG9DU1NWYWx1ZShzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYWx0
VGV4dFRvQ1NTVmFsdWUoKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoc3R5bGUpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRUb0NTU1ZhbHVlKCpzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlDb3VudGVySW5jcmVtZW50OgotICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1Zh
bHVlKHN0eWxlLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NW
YWx1ZSgqc3R5bGUsIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRl
clJlc2V0OgotICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKHN0eWxlLCBwcm9w
ZXJ0eUlEKTsKKyAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1ZSgqc3R5bGUsIHBy
b3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6IHsKLSAg
ICAgICAgICAgIENsaXBQYXRoT3BlcmF0aW9uKiBvcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBhdGgo
KTsKKyAgICAgICAgICAgIGF1dG8qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgpOwogICAg
ICAgICAgICAgaWYgKCFvcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIGlm
IChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVu
Y2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVmZXJlbmNlT3BlcmF0aW9uLnVybCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgICAgICAgICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikudXJsKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICAgICAgICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChpczxT
aGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewotICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8mIHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgYXV0byYgc2hhcGVPcGVyYXRpb24gPSBk
b3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JCYXNpY1NoYXBlKCpzdHlsZSwgc2hhcGVPcGVyYXRp
b24uYmFzaWNTaGFwZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYXBlT3BlcmF0aW9uLnJl
ZmVyZW5jZUJveCgpICE9IEJveE1pc3NpbmcpCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGVPcGVyYXRpb24ucmVmZXJlbmNlQm94
KCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpczxCb3hDbGlwUGF0aE9wZXJh
dGlvbj4oKm9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBib3hPcGVy
YXRpb24gPSBkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3hPcGVy
YXRpb24ucmVmZXJlbmNlQm94KCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBsaXN0OworICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VC
b3goKSkpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93
SW50bzoKQEAgLTM3MzgsMjAgKzM3MDEsMTggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmlzb2xhdGlv
bigpKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEJsZW5kTW9k
ZTogewotICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBzdHlsZS0+YmFja2dy
b3VuZExheWVycygpOwotICAgICAgICAgICAgaWYgKCFsYXllcnMtPm5leHQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxheWVycy0+YmxlbmRNb2Rl
KCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBGaWxs
TGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5
ZXItPm5leHQoKSkKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3JvdW5k
TGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYmxlbmRNb2RlKCkpOwor
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOworICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5
ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY3VyckxheWVyLT5ibGVuZE1vZGUoKSkp
OwotCi0gICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgog
ICAgICAgICAgICAgcmV0dXJuIGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlID0gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVM
YXlvdXQpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlCb3JkZXJUb3AsIERvTm90VXBkYXRlTGF5b3V0KTsKICAgICAgICAgICAgIGNvbnN0IENTU1By
b3BlcnR5SUQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4odmFsdWUsIHByb3BlcnR5VmFsdWUocHJvcGVy
dHksIERvTm90VXBkYXRlTGF5b3V0KSkpCkBAIC0zNzY4LDcgKzM3MjksNyBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+Ym9yZGVySW1hZ2Uo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiBib3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSgqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hvcnRoYW5kKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CkBAIC0zOTk4LDcgKzM5NTksNyBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9w
ZXJ0eUlEKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlE
KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gRklY
TUU6IFNob3VsZCB0aGlzIGJlIG51bGwgaW5zdGVhZCwgYXMgaXQgaXMgaW4gU3R5bGVQcm9wZXJ0
aWVzOjpnZXRQcm9wZXJ0eVZhbHVlPwogICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOwpAQCAt
NDA2MywyMiArNDAyNCwyMSBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFBy
b3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewotICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7
ICsraSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHlWYWx1ZShz
aG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCk7Ci0gICAgICAgIGxp
c3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxp
c3Q7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCisg
ICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
aV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gV1RG
TW92ZShsaXN0KTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKICAgICAvLyBBc3N1
bWUgdGhlIHByb3BlcnRpZXMgYXJlIGluIHRoZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQuCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB0b3BWYWx1ZSA9IHByb3BlcnR5VmFsdWUo
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVsxXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9t
VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0sIERvTm90VXBk
YXRlTGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9IHByb3BlcnR5VmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVszXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOworICAgIGF1
dG8gdG9wVmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0sIERv
Tm90VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIHJpZ2h0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbMV0sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICBhdXRvIGJv
dHRvbVZhbHVlID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzJdLCBEb05v
dFVwZGF0ZUxheW91dCk7CisgICAgYXV0byBsZWZ0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0
aGFuZC5wcm9wZXJ0aWVzKClbM10sIERvTm90VXBkYXRlTGF5b3V0KTsKIAogICAgIC8vIEFsbCA0
IHByb3BlcnRpZXMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmln
aHRWYWx1ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTQwOTYsMTcgKzQwNTYs
MTUgQEAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NT
UHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGEKICAgICBpZiAoc2hvd0xlZnQpCiAgICAgICAg
IGxpc3QtPmFwcGVuZChsZWZ0VmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICByZXR1cm4g
bGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlz
dD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFy
YXRlZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgICAgICBsaXN0
LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotICAgIHJldHVybiBsaXN0
OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKQorICAg
ICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ld
LCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiB9CiAKIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwg
dW5zaWduZWQgbGVuZ3RoKQpAQCAtNDExNCw4ICs0MDcyLDcgQEAgUmVmPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29u
c3QgQ1MKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoc2V0W2ld
KTsKLSAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3BlcnR5
VmFsdWUoc2V0W2ldKSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtp
XSwgV1RGTW92ZSh2YWx1ZSksIGZhbHNlKSk7CiAgICAgfQogICAgIHJldHVybiBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUobGlzdC5kYXRhKCksIGxpc3Quc2l6ZSgpKTsKQEAgLTQxMzgs
NyArNDA5NSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVy
dHlJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgYXV0byB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHZhbHVlLT5jcmVhdGVEZXByZWNhdGVkQ1NTT01X
cmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5j
cHAKaW5kZXggYzhiNjE1NTBiNmJhN2U2MmMzYjczM2Q0NWFhMDg1NDFhMDg1NTA4YS4uM2M3YzI5
OTU2MGE4MWYxN2FkNjg3YTVjM2M4YjI5NjM5MzQ3OWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FjaGVkR2VuZXJhdGVkSW1hZ2UoQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZSYsIEZsb2F0U2l6ZSwgR2VuZXJhdGVkSW1hZ2UmKTsKLSAgICBH
ZW5lcmF0ZWRJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyYXRl
ZEltYWdlJj4obV9pbWFnZS5nZXQoKSk7IH0KKyAgICBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgdm9pZCBwdW50RXZpY3Rpb25UaW1lcigpIHsg
bV9ldmljdGlvblRpbWVyLnJlc3RhcnQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDA2NDJiODc4Y2U5MzUyM2NmZTBhY2Q5NjFlOTE3
NTRhZWJlMGVhMGEuLjA5ZTdhZDMxMDY1MWQxYTA4N2YyZGI3ZDNmODQ0YjczMTgzMzI1MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTIxMSwxMiArMjExLDEw
IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKIHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09
IG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Q1NTS2V5
ZnJhbWVSdWxlPiYgcnVsZSA9IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF07CisgICAg
YXV0byYgcnVsZSA9IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRleF07CiAgICAgaWYgKCFy
dWxlKQotICAgICAgICBydWxlID0gYWRvcHRSZWYobmV3IENTU0tleWZyYW1lUnVsZShjb25zdF9j
YXN0PFN0eWxlUnVsZUtleWZyYW1lJj4obV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpbmRl
eF0uZ2V0KCkpLCBjb25zdF9jYXN0PENTU0tleWZyYW1lc1J1bGUqPih0aGlzKSkpOwotCisgICAg
ICAgIHJ1bGUgPSBhZG9wdFJlZigqbmV3IENTU0tleWZyYW1lUnVsZShtX2tleWZyYW1lc1J1bGUt
PmtleWZyYW1lcygpW2luZGV4XSwgY29uc3RfY2FzdDxDU1NLZXlmcmFtZXNSdWxlKj4odGhpcykp
KTsKICAgICByZXR1cm4gcnVsZS5nZXQoKTsgCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCmluZGV4IDIwYzU2ZTY2YmU0ZjUzYjdhZTZkYTdlMjM2NTk5NDg5ZmVl
NmEyY2YuLjQ4MmZkM2RhODJjYTJjNjAzMzEyM2E2NjRlZDExYjQ5MjgzM2QzNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtNDI3LDcgKzQyNyw3IEBAIHZv
aWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0CiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19Q
QUlSOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwotICAgIG1fdmFsdWUucGFpciA9
ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgoKSwgc3R5bGUpLCBjcmVhdGUo
bGVuZ3RoU2l6ZS5oZWlnaHQoKSwgc3R5bGUpKS5sZWFrUmVmKCk7CisgICAgbV92YWx1ZS5wYWly
ID0gJlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCwgc3R5bGUpLCBjcmVhdGUo
bGVuZ3RoU2l6ZS5oZWlnaHQsIHN0eWxlKSkubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1p
dGl2ZVZhbHVlOjppbml0KFJlZjxDb3VudGVyPiYmIGNvdW50ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVSdWxlLmgKaW5kZXggODEwYjlhNDU0ZDY1NzZlOGFlNzhlNGY1ZWJjZmYwYjAxMmI3M2YyMC4u
NzFmMzU1MDU1NmM2ODVmOGY1ZjA1MTVkYTAwMzJhODk5MTY3YTcxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVJ1bGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIAogICAgIC8vIEZJWE1FOiBOb3QgQ1NT
T00uIFJlbW92ZS4KLSAgICBTdHlsZVJ1bGUmIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8U3R5bGVSdWxlJj4obV9zdHlsZVJ1bGUuZ2V0KCkpOyB9CisgICAgU3R5bGVSdWxl
JiBzdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUnVsZS5nZXQoKTsgfQogCiBwcml2
YXRlOgogICAgIENTU1N0eWxlUnVsZShTdHlsZVJ1bGUmLCBDU1NTdHlsZVNoZWV0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggMmEyN2RkYjAwOTRlNDg2ZDBlMDQ0NTZm
YjUzNWVhZDJlNTY4MzhkNi4uODVjNDRhMmYzYTliNDlmZDExNmZhZWUxYzM5NjJhN2FkM2ZkZTJi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtMTg4LDEyICsxODgsMTEg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIGMKIHN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0VG9M
ZW5ndGhTaXplKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSwgTGVuZ3RoU2l6ZSYgc2l6ZSkKIHsK
ICAgICBpZiAoYXV0byogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpKSB7Ci0gICAg
ICAgIHNpemUuc2V0V2lkdGgocGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZl
cnNpb24+KGNvbnZlcnNpb25EYXRhKSk7Ci0gICAgICAgIHNpemUuc2V0SGVpZ2h0KHBhaXItPnNl
Y29uZCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsK
KyAgICAgICAgc2l6ZS53aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbnZlcnRUb0xlbmd0aDxBbnlD
b252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIHNpemUuaGVpZ2h0ID0gcGFpci0+
c2Vjb25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIHNpemUuc2V0V2lkdGgocHJpbWl0aXZlVmFsdWUuY29udmVy
dFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7Ci0KLSAgICByZXR1cm4g
IXNpemUud2lkdGgoKS5pc1VuZGVmaW5lZCgpICYmICFzaXplLmhlaWdodCgpLmlzVW5kZWZpbmVk
KCk7CisgICAgICAgIHNpemUud2lkdGggPSBwcmltaXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5ndGg8
QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgIHJldHVybiAhc2l6ZS53aWR0aC5p
c1VuZGVmaW5lZCgpICYmICFzaXplLmhlaWdodC5pc1VuZGVmaW5lZCgpOwogfQogCiB2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExh
eWVyJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
aW5kZXggYzlmYjczMzU5ODViOGJjN2JlNjg2N2I4ZjcxY2YyMTMxNjI1NmEzYS4uYzI4OWY3ODQw
YWE2OGM5ODE3ZWJmNDFkNTUyNzY2ZmEyMTc2MTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
CkBAIC0yNTgsMTMgKzI1OCwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6c2V0RmVh
dHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKQogCiBTdHJpbmcgRm9u
dEZhY2U6OmZhbWlseSgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1f
YmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2JhY2tpbmctPmZhbWlsaWVzKCktPmNz
c1RleHQoKTsKIH0KIAogU3RyaW5nIEZvbnRGYWNlOjpzdHlsZSgpIGNvbnN0CiB7Ci0gICAgY29u
c3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN3aXRjaCAo
bV9iYWNraW5nLT50cmFpdHNNYXNrKCkgJiBGb250U3R5bGVNYXNrKSB7CiAgICAgY2FzZSBGb250
U3R5bGVOb3JtYWxNYXNrOgogICAgICAgICByZXR1cm4gU3RyaW5nKCJub3JtYWwiLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBTdHJpbmcgRm9udEZh
Y2U6OnN0eWxlKCkgY29uc3QKIAogU3RyaW5nIEZvbnRGYWNlOjp3ZWlnaHQoKSBjb25zdAogewot
ICAgIGNvbnN0X2Nhc3Q8Q1NTRm9udEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKKyAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBz
d2l0Y2ggKG1fYmFja2luZy0+dHJhaXRzTWFzaygpICYgRm9udFdlaWdodE1hc2spIHsKICAgICBj
YXNlIEZvbnRXZWlnaHQxMDBNYXNrOgogICAgICAgICByZXR1cm4gU3RyaW5nKCIxMDAiLCBTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTMwOSw3ICszMDksNyBAQCBTdHJpbmcgRm9u
dEZhY2U6OnN0cmV0Y2goKSBjb25zdAogCiBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgp
IGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFjZSY+KG1fYmFja2luZy5nZXQoKSku
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIlUrMC0xMEZGRkYiKTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CkBAIC0zMjAsMTMg
KzMyMCwxMyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAKIFN0cmlu
ZyBGb250RmFjZTo6dmFyaWFudCgpIGNvbnN0CiB7Ci0gICAgY29uc3RfY2FzdDxDU1NGb250RmFj
ZSY+KG1fYmFja2luZy5nZXQoKSkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fYmFja2lu
Zy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiBjb21wdXRlRm9udFZhcmlhbnQo
bV9iYWNraW5nLT52YXJpYW50U2V0dGluZ3MoKSktPmNzc1RleHQoKTsKIH0KIAogU3RyaW5nIEZv
bnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MoKSBjb25zdAogewotICAgIGNvbnN0X2Nhc3Q8Q1NTRm9u
dEZhY2UmPihtX2JhY2tpbmcuZ2V0KCkpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2Jh
Y2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+ZmVhdHVy
ZVNldHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJub3JtYWwi
KTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRl
eCBiMjFkZDVkNTYzNzM5ZmZiZGQxZDg5ZDgxZTVlNDQzMGFhZTZlMTUzLi42OGZmZmRlYjllNDJj
NzE2MjNkODdhNTc1Y2EwZGM1YzcwYWFmNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5o
IgogCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkxlbmd0aFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNiArNTks
MTEgQEAgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5
b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0xheW91dFNpemUgc2l6
ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoLCBjb25zdCBMYXlvdXRTaXpl
JiBtYXhpbXVtVmFsdWUpCit7CisgICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVuZ3RoLndp
ZHRoLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aC5oZWlnaHQs
IG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKK30KKwogLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwg
bGF5b3V0IGlzIHN1cHBvcnRlZCB0aGlzIGNvcHkgb2YgZmxvYXRWYWx1ZUZvckxlbmd0aCgpIGNh
biBiZSByZW1vdmVkLiBTZWUgYnVnIDcxMTQzLgogZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpCiB7CkBAIC0xMTMs
NyArMTE5LDcgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0
aCwgZmxvYXQgbWF4aW11bVZhbHVlKQogCiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6
ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUp
CiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUu
d2lkdGgoKSwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhTaXpl
LmhlaWdodCgpLCBib3hTaXplLmhlaWdodCgpKSk7CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGhTaXplLndpZHRoLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGxlbmd0aFNpemUuaGVpZ2h0LCBib3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3Ro
RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKaW5kZXgg
OWQyMjRkOTExMjdlNWY4M2FhYjEwNDg5MmRlNjgwNDY0MTE4ZGQ2YS4uMWM0ZTA1MGRhNjA0YTQz
YTU2ODNhYWZkMmVlZDQzNmE0NTMxMzVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlv
bnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIFJpayBD
YWJhbmllciAoY2FiYW5pZXJAYWRvYmUuY29tKQogICAgIENvcHlyaWdodCAoQykgMjAxMSBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmln
aHQgKEMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTI5LDggKzI5LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRTaXpl
OwotY2xhc3MgTGF5b3V0VW5pdDsKK2NsYXNzIExheW91dFNpemU7CiBjbGFzcyBSZW5kZXJWaWV3
OworCiBzdHJ1Y3QgTGVuZ3RoOwogc3RydWN0IExlbmd0aFNpemU7CiAKQEAgLTM4LDYgKzM5LDcg
QEAgaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0
IG1heGltdW1WYWx1ZSk7CiBpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5
b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpOwogV0VCQ09SRV9FWFBPUlQg
TGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGlt
dW1WYWx1ZSk7CitMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUm
LCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpOwogZmxvYXQgZmxvYXRWYWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSk7CiBXRUJDT1JFX0VY
UE9SVCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIGZsb2F0IG1heGlt
dW1WYWx1ZSk7CiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhT
aXplJiwgY29uc3QgRmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDUzODM0MjdkOTJhYmZmMTk3
ZTdmYWRkNjg3NDc3N2Q3YTg1NDlkNWMuLmQ3NjlhNWE1ODZjODExMjcxODdlNzU0NDMyYzlmMmM1
ZjhjNzcxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0zMSwzNCArMzIsMzQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBwYWludE9yZGVy
KFBhaW50T3JkZXIgcGFpbnRPcmRlcikKIHsKLSAgICBSZWY8Q1NTVmFsdWVMaXN0PiBwYWludE9y
ZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBSZWY8
Q1NTVmFsdWU+IGZpbGwgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUZpbGwpOwotICAgIFJlZjxDU1NWYWx1ZT4gc3Ryb2tlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdHJva2UpOwotICAgIFJlZjxDU1NWYWx1ZT4gbWFy
a2VycyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2Vy
cyk7CisgICAgaWYgKHBhaW50T3JkZXIgPT0gUGFpbnRPcmRlck5vcm1hbCkKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsK
IAorICAgIGF1dG8gcGFpbnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAgICAgc3dpdGNoIChwYWludE9yZGVyKSB7CiAgICAgY2FzZSBQYWludE9yZGVy
Tm9ybWFsOgotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9yZGVyRmlsbDoKLSAgICAgICAgcGFpbnRPcmRlckxp
c3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUZpbGwpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9yZGVyRmlsbE1hcmtlcnM6Ci0gICAgICAgIHBh
aW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShmaWxsKSk7Ci0gICAgICAgIHBhaW50T3JkZXJM
aXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJzKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVGaWxsKSk7
CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGFpbnRPcmRlclN0cm9rZToKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3Zl
KHN0cm9rZSkpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlU3Ryb2tlKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUGFpbnRPcmRlclN0cm9rZU1hcmtlcnM6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0
LT5hcHBlbmQoV1RGTW92ZShzdHJva2UpKTsKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVu
ZChXVEZNb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN0cm9rZSkpOworICAgICAg
ICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhaW50T3Jk
ZXJNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUobWFya2Vy
cykpOworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTWFya2VycykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBhaW50T3JkZXJNYXJrZXJzU3Ryb2tlOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBw
ZW5kKFdURk1vdmUobWFya2VycykpOwotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdU
Rk1vdmUoc3Ryb2tlKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVNYXJrZXJzKSk7CisgICAgICAgIHBh
aW50T3JkZXJMaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVTdHJva2UpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBXVEZN
b3ZlKHBhaW50T3JkZXJMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAppbmRleCBlNGM3OTQzZjgwODI1NWUyOTE2YTY3MWU0ZjU5NTNjN2RhZmQyMTcxLi5k
NDk1MGEwNjljOWEzZmYzMGVhNjFmNWQxOGI0YTFmYzlhYzFiYzZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yOTQsMjEgKzI5NCwxOSBAQCBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENT
U1RvTGVuZ3RoQ29udmVyc2lvbgogCiBpbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUucGFpclZhbHVlKCk7CisgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgp
IHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQg
fSwgeyAwLCBGaXhlZCB9IH07CiAKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZl
cnNpb25EYXRhID0gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoKTsKLSAgICBMZW5ndGggcmFkaXVzV2lkdGggPSBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29u
dmVyc2lvbkRhdGEsICpwYWlyLT5maXJzdCgpKTsKLSAgICBMZW5ndGggcmFkaXVzSGVpZ2h0ID0g
Y29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqcGFpci0+c2Vjb25kKCkpOwor
ICAgIExlbmd0aFNpemUgcmFkaXVzIHsgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25E
YXRhLCAqcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0
YSwgKnBhaXItPnNlY29uZCgpKSB9OwogCi0gICAgQVNTRVJUKCFyYWRpdXNXaWR0aC5pc05lZ2F0
aXZlKCkpOwotICAgIEFTU0VSVCghcmFkaXVzSGVpZ2h0LmlzTmVnYXRpdmUoKSk7Ci0gICAgaWYg
KHJhZGl1c1dpZHRoLmlzWmVybygpIHx8IHJhZGl1c0hlaWdodC5pc1plcm8oKSkKLSAgICAgICAg
cmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7Cisg
ICAgQVNTRVJUKCFyYWRpdXMud2lkdGguaXNOZWdhdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXJhZGl1
cy5oZWlnaHQuaXNOZWdhdGl2ZSgpKTsKKyAgICBpZiAocmFkaXVzLndpZHRoLmlzWmVybygpIHx8
IHJhZGl1cy5oZWlnaHQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwg
eyAwLCBGaXhlZCB9IH07CiAKLSAgICByZXR1cm4gTGVuZ3RoU2l6ZShyYWRpdXNXaWR0aCwgcmFk
aXVzSGVpZ2h0KTsKKyAgICByZXR1cm4gcmFkaXVzOwogfQogCiBpbmxpbmUgTGVuZ3RoIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExl
bmd0aCYgbGVuZ3RoKQpAQCAtNzY2LDcgKzc2NCw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1
ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVy
CiAgICAgfQogCiAgICAgaWYgKGlzSW1hZ2VTaGFwZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBT
aGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKSk7CisgICAg
ICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZh
bHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsK
ICAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CkBAIC03ODYsNyArNzg0
LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXIKICAgICB9CiAKICAgICBpZiAoc2hhcGUpCi0g
ICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShzaGFwZSksIHJlZmVyZW5j
ZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc2hhcGUucmVsZWFzZU5v
bk51bGwoKSwgcmVmZXJlbmNlQm94KTsKIAogICAgIGlmIChyZWZlcmVuY2VCb3ggIT0gQm94TWlz
c2luZykKICAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDBmZmQ5ZDQ5YmFhNjkz
NzM0YzYxZDVhNTk3ZmZhNDA1NzVmNzIyN2UuLmZiZmJkODIyZmFmZGRkNmJjMDZlM2U2ZGRjYTJh
ZjBkYjI5ZmI3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2
ICs1OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0
aWFsIyNwcm9wZXJ0eShTdHlsZVJlc29sdmVyJik7IFwKICAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlIyNwcm9wZXJ0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgVCBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoVCYmIHZhbHVlKSB7IHJldHVy
biBzdGQ6OmZvcndhcmQ8VD4odmFsdWUpOyB9CitpbmxpbmUgTGVuZ3RoIGZvcndhcmRJbmhlcml0
ZWRWYWx1ZShjb25zdCBMZW5ndGgmIHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4g
Y29weTsgfQoraW5saW5lIExlbmd0aFNpemUgZm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExl
bmd0aFNpemUmIHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQoraW5s
aW5lIExlbmd0aEJveCBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3QgTGVuZ3RoQm94JiB2YWx1
ZSkgeyBhdXRvIGNvcHkgPSB2YWx1ZTsgcmV0dXJuIGNvcHk7IH0KKwogLy8gTm90ZSB0aGF0IHdl
IGFzc3VtZSB0aGUgQ1NTIHBhcnNlciBvbmx5IGFsbG93cyB2YWxpZCBDU1NWYWx1ZSB0eXBlcy4K
IGNsYXNzIFN0eWxlQnVpbGRlckN1c3RvbSB7CiBwdWJsaWM6CkBAIC0zMDEsNiArMzA2LDcgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbihT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc28KIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKKwogc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoY29uc3QgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBj
b252ZXJzaW9uRGF0YSkKIHsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUgPyBwcmltaXRpdmVW
YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkgOiBMZW5ndGgo
VW5kZWZpbmVkKTsKQEAgLTMxOCw3ICszMjQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVXZWJraXREYXNoYm9hcmRSZWdpb24oU3R5bGVSZXNvbHZlciYgcwog
ICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXNoYm9hcmRSZWdpb24q
IGZpcnN0ID0gcmVnaW9uOworICAgIGF1dG8qIGZpcnN0ID0gcmVnaW9uOwogICAgIHdoaWxlIChy
ZWdpb24pIHsKICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24t
PnRvcCgpLCBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgp
LmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29u
dmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7CkBA
IC0zMzUsMTcgKzM0MSwyMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVXZWJraXREYXNoYm9hcmRSZWdpb24oU3R5bGVSZXNvbHZlciYgcwogICAgICAgICAgICAg
bGVmdCA9IExlbmd0aCgpOwogCiAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURh
c2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVn
aW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0
KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpLCByZWdpb24gIT0gZmlyc3QpOwogICAg
ICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6
UmVjdGFuZ2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVn
aW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5n
bGUsIHJlZ2lvbi0+bV9sYWJlbCwgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92
ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpLCByZWdpb24gIT0gZmlyc3QpOworCiAgICAgICAgIHJl
Z2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpOwogICAgIH0KIAogICAgIHN0eWxlUmVzb2x2ZXIu
ZG9jdW1lbnQoKS5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwogfQorCiAjZW5kaWYgLy8g
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVU
SU9OKQorCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEltYWdl
UmVzb2x1dGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpOwpAQCAtMzc4LDE4ICszODcsMjMg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0
aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dEltYWdlUmVzb2x1dGlvblNuYXAoc25hcCk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRJbWFnZVJlc29sdXRpb24ocmVzb2x1dGlvbik7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1JFU09MVVRJT04pCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0U2l6ZShTdHlsZVJlc29sdmVyJikgeyB9CisKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsU2l6ZShTdHlsZVJlc29sdmVyJikgeyB9CisKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKKworICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIExlbmd0aCB3aWR0aDsKICAgICBMZW5ndGgg
aGVpZ2h0OwogICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsK
LSAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5sZW5ndGgoKSkgewpAQCAtNDUzLDEyICs0NjcsMTIgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOwotICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cisg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRQYWdlU2l6ZSh7IFdURk1vdmUod2lkdGgpLCBX
VEZNb3ZlKGhlaWdodCkgfSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0VGV4dEluZGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewot
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPnRleHRJbmRlbnQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRUZXh0SW5kZW50KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dElu
ZGVudCgpIH0pOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRUZXh0SW5kZW50TGluZShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRJ
bmRlbnRMaW5lKCkpOwogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudFR5
cGUoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0SW5kZW50VHlwZSgpKTsKQEAgLTQ5
Niw3ICs1MTAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVU
ZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgIGlmIChsZW5ndGhPclBl
cmNlbnRhZ2VWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnQobGVuZ3RoT3JQZXJjZW50YWdlVmFsdWUp
OworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudChXVEZNb3ZlKGxlbmd0
aE9yUGVyY2VudGFnZVZhbHVlKSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRJbmRlbnRMaW5lKHRleHRJbmRlbnRMaW5lVmFsdWUpOwog
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEluZGVudFR5cGUodGV4dEluZGVudFR5
cGVWYWx1ZSk7CkBAIC02MTEsOCArNjI1LDggQEAgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklF
Ul9IQU5ETEVSKFdlYmtpdE1hc2tCb3hJbWFnZSwgV2lkdGgpCiAKIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TGluZUhlaWdodChz
dHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmxpbmVIZWlnaHQoKSk7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KHN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKS0+c3BlY2lmaWVkTGluZUhlaWdodCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5s
aW5lSGVpZ2h0KCkgfSk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTcGVjaWZpZWRM
aW5lSGVpZ2h0KExlbmd0aCB7IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3BlY2lmaWVk
TGluZUhlaWdodCgpIH0pOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKQEAgLTYy
OCw4ICs2NDIsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVM
aW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgIGlmICghbGluZUhlaWdo
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRMaW5l
SGVpZ2h0KGxpbmVIZWlnaHQudmFsdWUoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQudmFsdWUoKSk7CisgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IGxpbmVIZWlnaHQudmFsdWUoKSB9
KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNwZWNpZmllZExpbmVIZWlnaHQoV1RG
TW92ZShsaW5lSGVpZ2h0LnZhbHVlKCkpKTsKIH0KIAogI2VuZGlmCkBAIC02NjUsMjEgKzY3OSwy
MSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENsaXAoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKICAgICBhdXRvKiBwYXJlbnRTdHlsZSA9IHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKTsKICAgICBpZiAoIXBhcmVudFN0eWxlLT5oYXNDbGlwKCkp
CiAgICAgICAgIHJldHVybiBhcHBseUluaXRpYWxDbGlwKHN0eWxlUmVzb2x2ZXIpOwotICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChwYXJlbnRTdHlsZS0+Y2xpcFRvcCgpLCBwYXJl
bnRTdHlsZS0+Y2xpcFJpZ2h0KCksIHBhcmVudFN0eWxlLT5jbGlwQm90dG9tKCksIHBhcmVudFN0
eWxlLT5jbGlwTGVmdCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAoTGVu
Z3RoIHsgcGFyZW50U3R5bGUtPmNsaXBUb3AoKSB9LCBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xp
cFJpZ2h0KCkgfSwKKyAgICAgICAgTGVuZ3RoIHsgcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKSB9
LCBMZW5ndGggeyBwYXJlbnRTdHlsZS0+Y2xpcExlZnQoKSB9KTsKICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLQotICAgIGlmIChSZWN0KiByZWN0ID0gcHJpbWl0aXZl
VmFsdWUucmVjdFZhbHVlKCkpIHsKKyAgICBpZiAoYXV0byogcmVjdCA9IHByaW1pdGl2ZVZhbHVl
LnJlY3RWYWx1ZSgpKSB7CiAgICAgICAgIGF1dG8gY29udmVyc2lvbkRhdGEgPSBzdHlsZVJlc29s
dmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwotICAgICAgICBMZW5ndGgg
dG9wID0gcmVjdC0+dG9wKCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9u
IHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwot
ICAgICAgICBMZW5ndGggcmlnaHQgPSByZWN0LT5yaWdodCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4
ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+
KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IHJlY3QtPmJvdHRvbSgp
LT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgTGVuZ3RoIGxl
ZnQgPSByZWN0LT5sZWZ0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9u
IHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwot
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENsaXAodG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0KTsKKyAgICAgICAgYXV0byB0b3AgPSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJz
aW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGF1dG8gcmlnaHQgPSByZWN0LT5yaWdodCgp
LT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgYXV0byBib3R0
b20gPSByZWN0LT5ib3R0b20oKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7
CisgICAgICAgIGF1dG8gbGVmdCA9IHJlY3QtPmxlZnQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVk
SW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihj
b252ZXJzaW9uRGF0YSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcChX
VEZNb3ZlKHRvcCksIFdURk1vdmUocmlnaHQpLCBXVEZNb3ZlKGJvdHRvbSksIFdURk1vdmUobGVm
dCkpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUF1dG8pOwpAQCAtNzM1LDEyICs3NDksMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXMKICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9udERpcnR5KHRydWUpOwogfQogCi10
ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KK3RlbXBsYXRlPENTU1Byb3BlcnR5SUQgcHJvcGVy
dHk+CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93
VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQorICAgICAgICBp
ZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KG51bGxwdHIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhudWxscHRyKTsK
QEAgLTc2MSw4ICs3NzUsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAgICAg
Y29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dWYWx1
ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0
eWxlLCBpZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8g
Y29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KQorICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8g
Y29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQg
dG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KFdURk1vdmUo
c2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBp
cyBub3QgdGhlIGZpcnN0IGVudHJ5CkBAIC0xMTU2LDIyICsxMTcwLDIyIEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcihTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsRmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIFNWR1JlbmRlclN0
eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsK
KyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5
bGUoKTsKICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxG
aWxsUGFpbnRUeXBlKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwg
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRVcmkoKSwgc3R5bGVSZXNvbHZlci5hcHBs
eVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9W
aXNpdGVkTGlua1N0eWxlKCkpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEZpbGwoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBT
VkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NW
R1N0eWxlKCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1BhcmVudFN0eWxlID0gc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1N0eWxl
ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGF1dG8mIHN2
Z1BhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOwog
ICAgIHN2Z1N0eWxlLnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS5maWxsUGFpbnRUeXBlKCks
IHN2Z1BhcmVudFN0eWxlLmZpbGxQYWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLmZpbGxQYWlu
dFVyaSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHls
ZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAKIH0KIAogaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRmlsbChTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUm
IHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwotICAg
IGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVW
YWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOwor
ICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHls
ZSgpOworICAgIGNvbnN0IGF1dG8qIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVl
KCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CiAgICAg
U3RyaW5nIHVybDsKICAgICBpZiAodmFsdWUuaXNWYWx1ZUxpc3QoKSkgewogICAgICAgICBjb25z
dCBDU1NWYWx1ZUxpc3QmIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAg
LTExODMsMTAgKzExOTcsMTAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlRmlsbChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIENvbG9yIGNvbG9yOwotICAgIFNWR1BhaW50VHlwZSBwYWludFR5cGUg
PSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHX1BBSU5U
VFlQRV9SR0JDT0xPUjsKICAgICBpZiAobG9jYWxWYWx1ZS0+aXNVUkkoKSkgewogICAgICAgICBw
YWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKLSAgICAgICAgdXJsID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KGxvY2FsVmFsdWUpLT5zdHJpbmdWYWx1ZSgpOworICAgICAgICB1cmwg
PSBsb2NhbFZhbHVlLT5zdHJpbmdWYWx1ZSgpOwogICAgIH0gZWxzZSBpZiAobG9jYWxWYWx1ZS0+
aXNWYWx1ZUlEKCkgJiYgbG9jYWxWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAg
ICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZUEVfTk9ORSA6IFNW
R19QQUlOVFRZUEVfVVJJX05PTkU7CiAgICAgZWxzZSBpZiAobG9jYWxWYWx1ZS0+aXNWYWx1ZUlE
KCkgJiYgbG9jYWxWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKSB7CkBA
IC0xMjA3LDE1ICsxMjIxLDE1IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsU3Ryb2tlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAKIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwotICAgIGNvbnN0IFNWR1JlbmRlclN0
eWxlJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c3ZnU3R5
bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNz
U1ZHU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdQYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICBzdmdTdHlsZS5zZXRTdHJva2VQYWludChzdmdQ
YXJlbnRTdHlsZS5zdHJva2VQYWludFR5cGUoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRD
b2xvcigpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludFVyaSgpLCBzdHlsZVJlc29sdmVyLmFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlU
b1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZVN0cm9rZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwotICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
KiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGNvbnN0IGF1dG8qIGxv
Y2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CiAgICAgU3RyaW5nIHVybDsKICAgICBpZiAodmFs
dWUuaXNWYWx1ZUxpc3QoKSkgewogICAgICAgICBjb25zdCBDU1NWYWx1ZUxpc3QmIGxpc3QgPSBk
b3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAgLTEyMjcsNyArMTI0MSw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb2xvciBjb2xv
cjsKLSAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjsK
KyAgICBhdXRvIHBhaW50VHlwZSA9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1I7CiAgICAgaWYgKGxv
Y2FsVmFsdWUtPmlzVVJJKCkpIHsKICAgICAgICAgcGFpbnRUeXBlID0gU1ZHX1BBSU5UVFlQRV9V
Ukk7CiAgICAgICAgIHVybCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihsb2NhbFZhbHVl
KS0+c3RyaW5nVmFsdWUoKTsKQEAgLTEyNTgsNyArMTI3Miw3IEBAIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0U3ZnU2hhZG93KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtp
dFN2Z1NoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
CiB7Ci0gICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5hY2Nlc3NTVkdTdHlsZSgpOworICAgIGF1dG8mIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICBzdmdTdHlsZS5zZXRTaGFk
b3cobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMDA0Njll
ZTdmYTA5MTY2OGY2Mzg2NmFlY2I0NTRiMDMzNDEyODU3NS4uMzQ5N2IyYTcwN2Q0ZTU0MjY5MzZi
MmQxZjg2ZjUyZWVjMzlhOGNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMTY4LDcgKzE2OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjYWNo
ZUJvcmRlckFuZEJhY2tncm91bmQoKQogICAgIG1faGFzVUFBcHBlYXJhbmNlID0gbV9zdHlsZS0+
aGFzQXBwZWFyYW5jZSgpOwogICAgIGlmIChtX2hhc1VBQXBwZWFyYW5jZSkgewogICAgICAgICBt
X2JvcmRlckRhdGEgPSBtX3N0eWxlLT5ib3JkZXIoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kRGF0
YSA9ICptX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgIG1fYmFja2dyb3VuZERh
dGEgPSBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CiAgICAgICAgIG1fYmFja2dyb3VuZENv
bG9yID0gbV9zdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogfQpAQCAtMTMyOCw3ICsx
MzI4LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0
IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICAgICAgLy8gV2UgY2FuIGJ1aWxk
IHVwIHRoZSBzdHlsZSBieSBjb3B5aW5nIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcyBmcm9tIGFu
IGVhcmxpZXIgc3R5bGUgb2JqZWN0IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGV4YWN0CiAgICAgICAg
IC8vIHN0eWxlIGRlY2xhcmF0aW9ucy4gV2UgdGhlbiBvbmx5IG5lZWQgdG8gYXBwbHkgdGhlIGlu
aGVyaXRlZCBwcm9wZXJ0aWVzLCBpZiBhbnksIGFzIHRoZWlyIHZhbHVlcyBjYW4gZGVwZW5kIG9u
IHRoZSAKICAgICAgICAgLy8gZWxlbWVudCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVz
IG1lbW9yeSBieSByZXVzaW5nIHRoZSBzdHlsZSBkYXRhIHN0cnVjdHVyZXMuCi0gICAgICAgIHN0
YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNhY2hlSXRlbS0+cmVuZGVyU3R5bGUu
Z2V0KCkpOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbSgqY2Fj
aGVJdGVtLT5yZW5kZXJTdHlsZSk7CiAgICAgICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5p
bmhlcml0ZWREYXRhU2hhcmVkKGNhY2hlSXRlbS0+cGFyZW50UmVuZGVyU3R5bGUuZ2V0KCkpICYm
ICFpc0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkpIHsKICAgICAgICAgICAgIEVJbnNpZGVMaW5r
IGxpbmtTdGF0dXMgPSBzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCk7CiAgICAgICAgICAgICAv
LyBJZiB0aGUgY2FjaGUgaXRlbSBwYXJlbnQgc3R5bGUgaGFzIGlkZW50aWNhbCBpbmhlcml0ZWQg
cHJvcGVydGllcyB0byB0aGUgY3VycmVudCBwYXJlbnQgc3R5bGUgdGhlbiB0aGUKQEAgLTE2NjEs
MTcgKzE2NjEsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgU2VsZWN0b3JDaGUKICAgICBpZiAoaXNJbmhlcml0
ICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAgICAgCi0g
ICAgaWYgKGlkID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWUqIGN1c3RvbVByb3BlcnR5ID0gJmRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+KCp2YWx1ZVRvQXBwbHkpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3VzdG9tVmFsID0gc3RhdGUucGFyZW50
U3R5bGUoKS0+Z2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjdXN0b21Qcm9wZXJ0eS0+bmFtZSgpKTsK
LSAgICAgICAgICAgIGlmICghY3VzdG9tVmFsKQotICAgICAgICAgICAgICAgIGN1c3RvbVZhbCA9
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUoY3VzdG9tUHJvcGVydHktPm5hbWUo
KSwgY3VzdG9tVmFsKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGN1c3RvbVByb3BlcnR5LT5u
YW1lKCksIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEN1c3RvbVByb3BlcnR5VmFsdWUo
Y3VzdG9tUHJvcGVydHktPm5hbWUoKSwgY3VzdG9tUHJvcGVydHkpOworICAgIGlmIChjdXN0b21Q
cm9wZXJ0eVZhbHVlKSB7CisgICAgICAgIGF1dG8mIG5hbWUgPSBjdXN0b21Qcm9wZXJ0eVZhbHVl
LT5uYW1lKCk7CisgICAgICAgIGF1dG8qIHZhbHVlID0gaXNJbml0aWFsID8gbnVsbHB0ciA6IGlz
SW5oZXJpdCA/IHN0YXRlLnBhcmVudFN0eWxlKCktPmN1c3RvbVByb3BlcnRpZXMoKS5nZXQobmFt
ZSkgOiBjdXN0b21Qcm9wZXJ0eVZhbHVlOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDdXN0
b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHZhbHVlID8gbWFrZVJlZigqdmFsdWUpIDogQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dl
YkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDg1MTk4NTU1N2MzMzM4NWM2ODM0MTQzOWRhZjRl
NTY2OWMzM2M3N2YuLmU2MTdjMzhlNzlmMjM1MWZjYTg3YThiZGIyNjQxMDQwNzEzYmFmMzcgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTYxNCw4ICs2MTQsOCBAQCBzdWIgZ2VuZXJhdGVBbmlt
YXRpb25Qcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgIG15ICRpbmRlbnQgPSBzaGlmdDsK
IAogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIkFuaW1hdGlvbkxpc3QmIGxpc3QgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRF
bnN1cmVBbmltYXRpb25zT3JUcmFuc2l0aW9uc01ldGhvZCgkbmFtZSkgLiAiKCk7XG4iOwotICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExp
c3QgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRBbmltYXRpb25zT3JUcmFu
c2l0aW9uc01ldGhvZCgkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gImF1dG8mIGxpc3QgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRFbnN1cmVB
bmltYXRpb25zT3JUcmFuc2l0aW9uc01ldGhvZCgkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gImF1dG8qIHBhcmVudExpc3QgPSBzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPiIgLiBnZXRBbmltYXRpb25zT3JUcmFuc2l0aW9uc01ldGhvZCgkbmFtZSkg
LiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gInNpemVfdCBpID0gMCwg
cGFyZW50U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwO1xuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBh
cmVudExpc3QtPmFuaW1hdGlvbihpKS4iIC4gZ2V0VGVzdEZ1bmN0aW9uKCRuYW1lKSAuICIoKTsg
KytpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAobGlzdC5z
aXplKCkgPD0gaSlcbiI7CkBAIC02MjYsNyArNjI2LDcgQEAgc3ViIGdlbmVyYXRlQW5pbWF0aW9u
UHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBsaXN0LmFuaW1hdGlvbihpKS5zZXRBbmltYXRpb25Nb2RlKHBhcmVudExpc3QtPmFu
aW1hdGlvbihpKS5hbmltYXRpb25Nb2RlKCkpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICJ9XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAiXG4iOwotICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIi8qIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqL1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIvLyBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHBy
b3BlcnR5IHNldC5cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBp
IDwgbGlzdC5zaXplKCk7ICsraSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
ICAgIGxpc3QuYW5pbWF0aW9uKGkpLiIgLiBnZXRDbGVhckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtc
biI7CiAKQEAgLTY3NCwxMSArNjc0LDExIEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5
SW5pdGlhbFZhbHVlU2V0dGVyIHsKIAogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIi8vIENoZWNrIGZvciAoc2luZ2xlLWxheWVyKSBuby1v
cCBiZWZvcmUgY2xlYXJpbmcgYW55dGhpbmcuXG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gImNvbnN0IEZpbGxMYXllciYgbGF5ZXJzID0gKnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiYXV0byYgbGF5ZXJzID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4g
Z2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICJpZiAoIWxheWVycy5uZXh0KCkgJiYgKCFsYXllcnMuIiAuICR0ZXN0RnVuY3Rp
b24gLiAiKCkgfHwgbGF5ZXJzLiIgLiAkZ2V0dGVyIC4gIigpID09ICRpbml0aWFsKSlcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIHJldHVybjtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICJcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVy
KiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3NvckZ1
bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
YXV0byogY2hpbGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNz
b3JGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gImNoaWxkLT4iIC4gJHNldHRlciAuICIoIiAuICRpbml0aWFsIC4gIik7XG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoY2hpbGQgPSBjaGlsZC0+bmV4dCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dCgpKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIgICAgY2hpbGQtPiIgLiAkY2xlYXJGdW5jdGlvbiAuICIoKTtcbiI7CkBAIC02OTcsMTIg
KzY5NywxMiBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRl
ciB7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIvLyBDaGVjayBmb3Igbm8tb3AgYmVmb3JlIGNvcHlpbmcgYW55dGhpbmcuXG4iOwot
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImlmICgqc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4iKCkgPT0gKnN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKSlcbiI7CisgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiaWYgKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUo
KS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuIigpID09IHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKSlcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgIHJldHVybjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49
ICJcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiYXV0byogY2hpbGQgPSAmc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlvbigkbmFtZSkg
LiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJl
dmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
ImZvciAoYXV0byogcGFyZW50ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0
TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4iIC4gJHRlc3RG
dW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQg
JiYgcGFyZW50LT4iIC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0
KCkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQp
IHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0No
aWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVy
VHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4iOwpAQCAtNzI0LDcgKzcyNCw3
IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgewogICBteSAkQ1NT
UHJvcGVydHlJZCA9ICJDU1NQcm9wZXJ0eSIgLiAkbmFtZVRvSWR7JG5hbWV9OwogCiAgIG15ICRz
ZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExh
eWVyKiBjaGlsZCA9ICZzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXllcnNBY2Nlc3Nv
ckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiYXV0byogY2hpbGQgPSAmc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNj
ZXNzb3JGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOwogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gImlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSAmJiAhaXM8
Q1NTSW1hZ2VTZXRWYWx1ZT4odmFsdWUpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNy
ZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLlxuIjsKQEAgLTgzMCw3ICs4MzAsNyBAQCBzdWIg
Z2VuZXJhdGVJbmhlcml0VmFsdWVTZXR0ZXIgewogICB9CiAgIGlmICghJGRpZENhbGxTZXRWYWx1
ZSkgewogICAgIG15ICRpbmhlcml0ZWRWYWx1ZSA9ICRwYXJlbnRTdHlsZSAuICItPiIgLiAoJGlz
U1ZHID8gInN2Z1N0eWxlKCkuIiA6ICIiKSAuICAkZ2V0dGVyIC4gIigpIjsKLSAgICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIiAgICAiIC4gZ2VuZXJhdGVTZXRWYWx1ZVN0YXRlbWVudCgk
bmFtZSwgJGluaGVyaXRlZFZhbHVlKSAuICI7XG4iOworICAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgICIgLiBnZW5lcmF0ZVNldFZhbHVlU3RhdGVtZW50KCRuYW1lLCAiZm9yd2Fy
ZEluaGVyaXRlZFZhbHVlKCIgLiAkaW5oZXJpdGVkVmFsdWUgLiAiKSIpIC4gIjtcbiI7CiAgIH0K
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJ9XG4iOwogCkBAIC04NDksNyArODQ5LDcg
QEAgc3ViIGdlbmVyYXRlVmFsdWVTZXR0ZXIgewogICAgICRjb252ZXJ0ZWRWYWx1ZSA9ICJTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVy
T3B0aW9uc3skbmFtZX17ImNvbnZlcnRlciJ9IC4gIihzdHlsZVJlc29sdmVyLCB2YWx1ZSkiOwog
ICB9IGVsc2lmIChleGlzdHMoJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFt
ZX17ImNvbmRpdGlvbmFsLWNvbnZlcnRlciJ9KSkgewogICAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgIGF1dG8gY29udmVydGVkVmFsdWUgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNv
bmRpdGlvbmFsLWNvbnZlcnRlciJ9IC4gIihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7XG4iOwotICAg
ICRjb252ZXJ0ZWRWYWx1ZSA9ICJjb252ZXJ0ZWRWYWx1ZS52YWx1ZSgpIjsKKyAgICAkY29udmVy
dGVkVmFsdWUgPSAiV1RGTW92ZShjb252ZXJ0ZWRWYWx1ZS52YWx1ZSgpKSI7CiAgIH0gZWxzZSB7
CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gImRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkiOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhNTA2MjY1YTNiMGEzYTIyMzYz
OGFmMGE0YTU0MmJkMWJhYzMyZDg2Li4yOWRlMzcxMjRjZGE1MWE4YmMwYjIyZWE1MDVhNTdhZDg4
ZTI5Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIGJv
b2wgRG9jdW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKIHZvaWQgRG9jdW1l
bnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBh
Z2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0
b20sIGludCYgbWFyZ2luTGVmdCkKIHsKICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlU2NvcGUoKS5yZXNvbHZl
cigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOworICAgIGF1dG8gc3R5bGUgPSBzdHlsZVNjb3Bl
KCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKIAogICAgIGludCB3aWR0aCA9
IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCgpOwpA
QCAtMjA4OCwxMSArMjA4OCwxMSBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJ
blBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgICAgICAg
ICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBB
R0VfU0laRV9SRVNPTFZFRDogewotICAgICAgICBMZW5ndGhTaXplIHNpemUgPSBzdHlsZS0+cGFn
ZVNpemUoKTsKLSAgICAgICAgQVNTRVJUKHNpemUud2lkdGgoKS5pc0ZpeGVkKCkpOwotICAgICAg
ICBBU1NFUlQoc2l6ZS5oZWlnaHQoKS5pc0ZpeGVkKCkpOwotICAgICAgICB3aWR0aCA9IHZhbHVl
Rm9yTGVuZ3RoKHNpemUud2lkdGgoKSwgMCk7Ci0gICAgICAgIGhlaWdodCA9IHZhbHVlRm9yTGVu
Z3RoKHNpemUuaGVpZ2h0KCksIDApOworICAgICAgICBhdXRvJiBzaXplID0gc3R5bGUtPnBhZ2VT
aXplKCk7CisgICAgICAgIEFTU0VSVChzaXplLndpZHRoLmlzRml4ZWQoKSk7CisgICAgICAgIEFT
U0VSVChzaXplLmhlaWdodC5pc0ZpeGVkKCkpOworICAgICAgICB3aWR0aCA9IHZhbHVlRm9yTGVu
Z3RoKHNpemUud2lkdGgsIDApOworICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzaXpl
LmhlaWdodCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRQYXRoLmNwcAppbmRleCBjMmJkZDA1Njc3ODY3YTAyOWM1MWFmYTNlN2NmOTczN2Vl
Nzk2ZWJlLi43NzcxMjgxYWI5NDdhMzE0ZjY0MGEwOWFiZDNlNDc4YjcyMjYyM2RmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMjU4LDIzICsyNTgsMjEgQEAgYm9vbCBFdmVudFBhdGg6
Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAog
VmVjdG9yPEV2ZW50VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJn
ZXQoY29uc3QgRXZlbnRUYXJnZXQmIHRhcmdldCkgY29uc3QKIHsKICAgICBWZWN0b3I8RXZlbnRU
YXJnZXQqPiBwYXRoOwotICAgIGNvbnN0IE5vZGUqIHRhcmdldE5vZGUgPSBjb25zdF9jYXN0PEV2
ZW50VGFyZ2V0Jj4odGFyZ2V0KS50b05vZGUoKTsKKyAgICBhdXRvKiB0YXJnZXROb2RlID0gY29u
c3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9Ob2RlKCk7CiAgICAgaWYgKCF0YXJnZXRO
b2RlKSB7Ci0gICAgICAgIGNvbnN0IERPTVdpbmRvdyogZG9tV2luZG93ID0gY29uc3RfY2FzdDxF
dmVudFRhcmdldCY+KHRhcmdldCkudG9ET01XaW5kb3coKTsKKyAgICAgICAgYXV0byogZG9tV2lu
ZG93ID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCY+KHRhcmdldCkudG9ET01XaW5kb3coKTsKICAg
ICAgICAgaWYgKCFkb21XaW5kb3cpCiAgICAgICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgICAg
dGFyZ2V0Tm9kZSA9IGRvbVdpbmRvdy0+ZG9jdW1lbnQoKTsKICAgICAgICAgQVNTRVJUKHRhcmdl
dE5vZGUpOwogICAgIH0KLQogICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkgewotICAg
ICAgICBpZiAoTm9kZSogbm9kZUluUGF0aCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKS0+dG9O
b2RlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5vZGVJblBhdGggPSBjb250ZXh0LT5jdXJyZW50
VGFyZ2V0KCktPnRvTm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGUtPmlzQ2xv
c2VkU2hhZG93SGlkZGVuKCpub2RlSW5QYXRoKSkKICAgICAgICAgICAgICAgICBwYXRoLmFwcGVu
ZChjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHBhdGguYXBwZW5kKGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSk7CiAgICAgfQotCiAgICAgcmV0
dXJuIHBhdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBhMmU5NjExZDZj
NTQ4ODg2MTQ2YmJhOTFhMTA1ZDgwOTFiOGNmYWFlLi5kZWU2NDZjMzdkMTVhZDQ0MzNjMDMxYjVl
M2E1YWM0MWU2MTQyOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29u
c3QgPSAwOwogCiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52
YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0SW52YWxp
ZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQotICAgIENvbnRhaW5lck5vZGUmIG93
bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KG1fb3du
ZXJOb2RlLmdldCgpKTsgfQorICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3duZXJOb2RlOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVD
YWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghYXR0ck5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJp
YnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyTmFtZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCmluZGV4IGNjMWE2YTRhMDY2NjhmNjA0YmNiZGQ0M2M0ZWI2MmM3YTcy
NjZlNjIuLjViYTM3Y2Y4MDZlYmRjZWZhMzJhMzY1ZGU5YzZkY2I2M2I0ZWEyMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC0xNTgsOCArMTU4LDggQEAgRXZlbnRUYXJnZXQq
IE1lc3NhZ2VFdmVudDo6c291cmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZS52YWx1ZSgpLAotICAgICAgICBbXShj
b25zdCBSZWZQdHI8RE9NV2luZG93PiYgd2luZG93KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4g
Y29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFyZ2V0Kj4o
d2luZG93LmdldCgpKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxNZXNzYWdlUG9ydD4m
IG1lc3NhZ2VQb3J0KSAtPiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxFdmVudFRh
cmdldCo+KHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50VGFyZ2V0Kj4obWVzc2FnZVBvcnQuZ2V0KCkp
KTsgfQorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPERPTVdpbmRvdz4mIHdpbmRvdykgLT4gRXZl
bnRUYXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RE9NV2luZG93Kj4od2luZG93LmdldCgpKTsg
fSwKKyAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxNZXNzYWdlUG9ydD4mIG1lc3NhZ2VQb3J0KSAt
PiBFdmVudFRhcmdldCogeyByZXR1cm4gY29uc3RfY2FzdDxNZXNzYWdlUG9ydCo+KG1lc3NhZ2VQ
b3J0LmdldCgpKTsgfQogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwYzI3OTNkMmU3
ZjI2MWUyOGY5NzgyZDk5Mzc5Y2U5ODU1NjhiMzM4Li4wMzhlNzg5MzRhZmM4ZGM4ODg5ZmRmODA4
ZDhkYTMxOTAxZjllMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MzAsMTEgKzQzMCwxMCBAQCBz
dGF0aWMgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2Rl
T3JTdHJpbmdWZWN0b3IoY29uc3QgVgogICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0
OwogICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFudCA6IHZlY3RvcikgewogICAgICAgICBXVEY6
OnN3aXRjaE9uKHZhcmlhbnQsCi0gICAgICAgICAgICBbJl0oY29uc3QgUmVmUHRyPE5vZGU+JiBu
b2RlKSB7IG5vZGVTZXQuYWRkKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUuZ2V0KCkpKTsgfSwKLSAg
ICAgICAgICAgIFtdKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICAgICAgWyZdIChjb25zdCBS
ZWZQdHI8Tm9kZT4mIG5vZGUpIHsgbm9kZVNldC5hZGQoY29uc3RfY2FzdDxOb2RlKj4obm9kZS5n
ZXQoKSkpOyB9LAorICAgICAgICAgICAgW10gKGNvbnN0IFN0cmluZyYpIHsgfQogICAgICAgICAp
OwogICAgIH0KLQogICAgIHJldHVybiBub2RlU2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4IDgw
M2Y4ZmUyM2Y3MzcwYmNjY2QyYTc1ZjcwMzkxNTczZmVhZDNhN2QuLmI5YTAyMmQ1MGQxMzY4ZDkz
NTNmMDJjYjUwMjMzZTc5MDFkZDI4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+UmFuZ2UoKTsKIAotICAgIERvY3VtZW50JiBvd25lckRvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fb3duZXJEb2N1bWVu
dC5nZXQoKSk7IH0KKyAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fb3duZXJEb2N1bWVudDsgfQogCiAgICAgTm9kZSYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7
IEFTU0VSVChtX3N0YXJ0LmNvbnRhaW5lcigpKTsgcmV0dXJuICptX3N0YXJ0LmNvbnRhaW5lcigp
OyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Lm9m
ZnNldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5o
CmluZGV4IDEwYjJhZDk0M2NjM2I5MDMzMWRjN2FiNjhkNTVmY2Y5NDkyZmUwODIuLjJhNThhM2Zh
MGJjMWQ5ZTU0YjZhMWMzNDUxYTk3MjlhNjM3MmEzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoV1RGTW92
ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICB9CiAKLSAgICBFdmVudExpc3RlbmVyJiBjYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RXZlbnRMaXN0ZW5lciY+KG1fY2FsbGJh
Y2suZ2V0KCkpOyB9CisgICAgRXZlbnRMaXN0ZW5lciYgY2FsbGJhY2soKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrOyB9CiAgICAgYm9vbCB1c2VDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV91
c2VDYXB0dXJlOyB9CiAgICAgYm9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzUGFz
c2l2ZTsgfQogICAgIGJvb2wgaXNPbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc09uY2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKaW5kZXggMDQxZTZkMTMzMWY0NDIzYzE1Yzk4NzY5
ZjlhMjI3NGNlZDBhZDBmZi4uMWQ1MmU1ODg4ZTI3MWIwZTgxYjMwNWYxZWYwYzljMjhkYzVmYzRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU2Ny
aXB0UnVubmVyOjp+U2NyaXB0UnVubmVyKCkKICAgICB9CiAgICAgZm9yIChhdXRvJiBwZW5kaW5n
U2NyaXB0IDogbV9wZW5kaW5nQXN5bmNTY3JpcHRzKSB7CiAgICAgICAgIGlmIChwZW5kaW5nU2Ny
aXB0LT53YXRjaGluZ0ZvckxvYWQoKSkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UGVuZGluZ1Nj
cmlwdCY+KHBlbmRpbmdTY3JpcHQuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CisgICAgICAgICAgICBw
ZW5kaW5nU2NyaXB0LT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVu
dExvYWRFdmVudERlbGF5Q291bnQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmgKaW5kZXggNmZhYWQ0MDc1MDUwNDUwZGQzYjkwOWJlZGFjMDAzMDBjYzllMmE4Ni4u
NDgwMTI2YjY1MTZiN2U3OTUzOGI2MjlmYjg2YWVjMDJjOTE3MmYyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlubGluZSBDb2xsZWN0aW9u
VHlwZSBIVE1MQ29sbGVjdGlvbjo6dHlwZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWluZXJOb2Rl
JiBIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxDb250YWluZXJOb2RlJj4obV9vd25lck5vZGUuZ2V0KCkpOworICAgIHJldHVybiBtX293
bmVyTm9kZTsKIH0KIAogaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlvbjo6ZG9jdW1lbnQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNr
SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCmluZGV4
IGVmMjA2ZjZjMWUxYTU2MTQ3NTA5NmUyMmFiNzk3ZDMyMmM5YmUxMGYuLjk4NTMxOTgzMWIxNTMy
OWJiYTk0ZmNmYTkwNTQ0ZThjZjM3Y2ZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU3RhY2tJdGVtLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgUmVmPEhUTUxTdGFj
a0l0ZW0+IEhUTUxTdGFja0l0ZW06OmNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkK
IAogaW5saW5lIENvbnRhaW5lck5vZGUmIEhUTUxTdGFja0l0ZW06Om5vZGUoKSBjb25zdAogewot
ICAgIHJldHVybiBjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihtX25vZGUuZ2V0KCkpOworICAg
IHJldHVybiBtX25vZGUuZ2V0KCk7CiB9CiAKIGlubGluZSBFbGVtZW50JiBIVE1MU3RhY2tJdGVt
OjplbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggM2FjMjg3MDc3M2I4MzQwYWU1ZTNiNGI5NjcyOTJh
ZGNkMmIwOTMxMS4uYzJlNTE0Y2I3YzcyMTFiYzM3YzI0MzI4YmQ0MDJmNDllNjg0NDhhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKQEAgLTEzMyw1OCArMTMzLDQ0IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRK
YXZhU2NyaXB0UGF1c2VkKGNvbnN0IFBhZ2VHcm91cCYgcGFnZUdyb3VwLCBib29sCiB7CiAgICAg
c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChwYXVzZWQpOwogCi0gICAgZm9yIChhdXRvJiBw
YWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFn
ZSwgcGF1c2VkKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3Jp
cHRQYXVzZWQoUGFnZSogcGFnZSwgYm9vbCBwYXVzZWQpCi17Ci0gICAgQVNTRVJUX0FSRyhwYWdl
LCBwYWdlKTsKLQotICAgIHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKLQotICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZy
YW1lLCBwYXVzZWQpOwotCi0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVu
ZENsaWVudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0b3JGcm9udGVuZENs
aWVudCgpKSB7Ci0gICAgICAgIGlmIChwYXVzZWQpCi0gICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVBhdXNlZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVVucGF1c2VkKCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2Vz
KCkpIHsKKyAgICAgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOworCisgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgc2V0SmF2YVNjcmlwdFBh
dXNlZCgqZnJhbWUsIHBhdXNlZCk7CisKKyAgICAgICAgaWYgKGF1dG8qIGZyb250ZW5kQ2xpZW50
ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xpZW50KCkp
IHsKKyAgICAgICAgICAgIGlmIChwYXVzZWQpCisgICAgICAgICAgICAgICAgZnJvbnRlbmRDbGll
bnQtPnBhZ2VQYXVzZWQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcm9u
dGVuZENsaWVudC0+cGFnZVVucGF1c2VkKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQg
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBmcmFtZSwg
Ym9vbCBwYXVzZWQpCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBh
dXNlZChGcmFtZSYgZnJhbWUsIGJvb2wgcGF1c2VkKQogewotICAgIEFTU0VSVF9BUkcoZnJhbWUs
IGZyYW1lKTsKLQotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICBpZiAoIWZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1
dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPnNjcmlwdCgpLnNldFBhdXNlZChwYXVzZWQpOworICAgIGZyYW1lLnNjcmlwdCgp
LnNldFBhdXNlZChwYXVzZWQpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3Vt
ZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKHBhdXNlZCkgewotICAgICAgICBkb2N1
bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwotICAg
ICAgICBkb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpK
YXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5kU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1
c2VkKTsKICAgICB9IGVsc2UgewotICAgICAgICBkb2N1bWVudC0+cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7Ci0gICAgICAg
IGRvY3VtZW50LT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
KyAgICAgICAgZG9jdW1lbnQucmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnJlc3VtZVNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIAotICAgIHNldEphdmFT
Y3JpcHRQYXVzZWQoZnJhbWUtPnZpZXcoKSwgcGF1c2VkKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBh
dXNlZCkKLXsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0
byYgY2hpbGQgOiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghaXM8UGx1Z2luVmll
d0Jhc2U+KCpjaGlsZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBkb3duY2Fz
dDxQbHVnaW5WaWV3QmFzZT4oKmNoaWxkKS5zZXRKYXZhU2NyaXB0UGF1c2VkKHBhdXNlZCk7Cisg
ICAgaWYgKGF1dG8qIHZpZXcgPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBj
aGlsZCA6IHZpZXctPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UGx1Z2luVmll
d0Jhc2U+KGNoaWxkLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPihjaGlsZC5nZXQoKSkuc2V0SmF2YVNjcmlwdFBh
dXNlZChwYXVzZWQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggM2I0OTc5MWVlMjllNWM1
MGYwYTNjOGFjMWM0MTZkYTVhN2M3N2JkMS4uN2Y1OGM2YzhiMDQ4YmYzZGMyNzdhYjlkZjY1ZmVh
MjQ2ODIyYjdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGcmFtZTsKLWNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlR3Jv
dXA7CiAKQEAgLTU2LDkgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkSW50ZXJuYWwoKTsKIAogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChjb25z
dCBQYWdlR3JvdXAmLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2Vk
KFBhZ2UqLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1l
KiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcq
LCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lJiwgYm9v
bCBwYXVzZWQpOwogCiAgICAgUGFnZSYgbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDRlODI3NTQ1ZTJjMDhlNGQzZWZhMjI0YTYz
ZGZkNWViMzU3MGE5Y2IuLjI5NWI5NGExYTU1NWIyYTI4ZTc1MDM2YzZiMWQwMjU3MDcyOTk3Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtNzQx
LDcgKzc0MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lv
bmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGls
ZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBB
U1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9y
eSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4o
Y2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY2hpbGRJdGVtLCBm
cm9tQ2hpbGRJdGVtKTsKICAgICB9CiB9CiAKQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9y
eUl0ZW0qIGZyb21JdAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21J
dGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJU
KGZyb21DaGlsZEl0ZW0pOwogICAgICAgICBpZiAoRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5jaGlsZChjaGlsZEZyYW1lTmFtZSkpCi0gICAgICAgICAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRl
bSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKGNoaWxkSXRl
bSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDBiYjI4OGVhZWZjZjgwODFiMWYwY2Y0MWRjNTZhOWExODc3Y2ZlN2UuLmQ1YTUxMDYwMTc0
YTg3MDZmODk5ZDUyODg0YWQ2YmI0Y2Y2NzAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03
MjMsMzEgKzcyMywyNyBAQCBSZW5kZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29u
c3QKIAogUmVuZGVyV2lkZ2V0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKKyAg
ICBhdXRvKiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKICAgICBpZiAoIW93bmVyRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogb2JqZWN0ID0gb3duZXJF
bGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAvLyBGSVhNRTogSWYgPG9iamVjdD4gaXMgZXZlciBmaXhlZCB0byBkaXNhc3Nv
Y2lhdGUgaXRzZWxmIGZyb20gZnJhbWVzCiAgICAgLy8gdGhhdCBpdCBoYXMgc3RhcnRlZCBidXQg
Y2FuY2VsZWQsIHRoZW4gdGhpcyBjYW4gdHVybiBpbnRvIGFuIEFTU0VSVAotICAgIC8vIHNpbmNl
IG1fb3duZXJFbGVtZW50IHdvdWxkIGJlIDAgd2hlbiB0aGUgbG9hZCBpcyBjYW5jZWxlZC4KKyAg
ICAvLyBzaW5jZSBtX293bmVyRWxlbWVudCB3b3VsZCBiZSBudWxscHRyIHdoZW4gdGhlIGxvYWQg
aXMgY2FuY2VsZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTg1Ci0gICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KCpvYmplY3QpKQorICAgIGlmICgh
aXM8UmVuZGVyV2lkZ2V0PihvYmplY3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PihvYmplY3QpOwogfQogCi1GcmFtZSogRnJhbWU6
OmZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCogd2lkZ2V0KQorRnJhbWUqIEZyYW1lOjpmcmFt
ZUZvcldpZGdldChjb25zdCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBBU1NFUlRfQVJHKHdpZGdl
dCwgd2lkZ2V0KTsKLQotICAgIGlmIChSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKHdpZGdldCkpCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gUmVuZGVyV2lkZ2V0
OjpmaW5kKHdpZGdldCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+ZnJhbWVPd25lckVsZW1l
bnQoKS5kb2N1bWVudCgpLmZyYW1lKCk7CiAKICAgICAvLyBBc3N1bWUgYWxsIHdpZGdldHMgYXJl
IGVpdGhlciBhIEZyYW1lVmlldyBvciBvd25lZCBieSBhIFJlbmRlcldpZGdldC4KICAgICAvLyBG
SVhNRTogVGhhdCBhc3N1bXB0aW9uIGlzIG5vdCByaWdodCBmb3Igc2Nyb2xsIGJhcnMhCi0gICAg
cmV0dXJuICZkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmZyYW1lKCk7CisgICAgcmV0dXJu
ICZkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKTsKIH0KIAogdm9pZCBGcmFtZTo6
Y2xlYXJUaW1lcnMoRnJhbWVWaWV3ICp2aWV3LCBEb2N1bWVudCAqZG9jdW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKaW5kZXggNjgzNDExMDdkOTgxYzRhMzJhYmViOWM1MTA5M2M4N2E4MWRmODY1NS4uOWE4
ZjczY2NiNThkNzdlZGQ0OTE5NmE1N2ZmZGJhZjEzOGExZWM2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApA
QCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGF5
ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZsYWdzID0gMCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Kik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZyYW1lKiBmcmFtZUZvcldpZGdldChjb25zdCBXaWRn
ZXQmKTsKIAogICAgIFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRp
bmdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NzA3NWZkNTc5YmZjYjM5
ZjY2ZjZkOTM2NjlkZWQ1MDc2YTAzNzQ1Li5iMjkxMjM2M2YyMWRkODBkNmJlMDEwZDA4YWNhMjdh
ZTkyZjc1YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zLDcgKzMsNyBAQAog
ICogICAgICAgICAgICAgICAgICAgICAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CiAg
KiAgICAgICAgICAgICAgICAgICAgIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5v
cmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVu
bmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUwNiwxOCArNTA2LDE3IEBAIGJvb2wg
RnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6aW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7Ci0g
ICAgICAgIGlmIChIb3N0V2luZG93KiB3aW5kb3cgPSBob3N0V2luZG93KCkpCi0gICAgICAgICAg
ICB3aW5kb3ctPmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHJlY3QpOworICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Y2hyb21l
KCkuaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcocmVjdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRl
cmVyKCk7CisgICAgYXV0byogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKTsKICAg
ICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IHJlcGFpbnRS
ZWN0ID0gcmVjdDsKLSAgICByZXBhaW50UmVjdC5tb3ZlKHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkg
KyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVy
LT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOworICAgIHJlcGFpbnRSZWN0
Lm1vdmUocmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLCBy
ZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKICAgICByZW5k
ZXJlci0+cmVwYWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7CiB9CiAKQEAgLTU0NCwxNCArNTQz
LDE2IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3UmVj
dCkKIH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKwogYm9vbCBGcmFt
ZVZpZXc6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKLSAgICBpZiAoSG9zdFdpbmRvdyogd2luZG93
ID0gaG9zdFdpbmRvdygpKSB7Ci0gICAgICAgIHdpbmRvdy0+c2NoZWR1bGVBbmltYXRpb24oKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRv
KiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcGFnZS0+Y2hyb21lKCkuc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRNYXJnaW5XaWR0aChM
YXlvdXRVbml0IHcpCkBAIC0xMDU2LDIyICsxMDU3LDIyIEBAIEdyYXBoaWNzTGF5ZXIqIEZyYW1l
Vmlldzo6Z3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0IHBsYXRm
b3JtCiB7CiAgICAgLy8gVG8gZmluZCB0aGUgV2lkZ2V0IHRoYXQgY29ycmVzcG9uZHMgd2l0aCBw
bGF0Zm9ybVdpZGdldCB3ZSBoYXZlIHRvIGRvIGEgbGluZWFyCiAgICAgLy8gc2VhcmNoIG9mIG91
ciBjaGlsZCB3aWRnZXRzLgotICAgIFdpZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRyOworICAg
IGNvbnN0IFdpZGdldCogZm91bmRXaWRnZXQgPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgd2lk
Z2V0IDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgp
ICE9IHBsYXRmb3JtV2lkZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZvdW5k
V2lkZ2V0ID0gd2lkZ2V0LmdldCgpOworICAgICAgICBmb3VuZFdpZGdldCA9IHdpZGdldC5wdHIo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZFdpZGdldCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRn
ZXQ6OmZpbmQoZm91bmRXaWRnZXQpOworICAgIGF1dG8qIHJlbmRlcldpZGdldCA9IFJlbmRlcldp
ZGdldDo6ZmluZCgqZm91bmRXaWRnZXQpOwogICAgIGlmICghcmVuZGVyV2lkZ2V0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlbmRlckxheWVyKiB3aWRnZXRMYXllciA9IHJlbmRl
cldpZGdldC0+bGF5ZXIoKTsKKyAgICBhdXRvKiB3aWRnZXRMYXllciA9IHJlbmRlcldpZGdldC0+
bGF5ZXIoKTsKICAgICBpZiAoIXdpZGdldExheWVyIHx8ICF3aWRnZXRMYXllci0+aXNDb21wb3Np
dGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMTgwLDExICsyMTgxLDExIEBA
IGJvb2wgRnJhbWVWaWV3OjpzaG91bGRTZXRDdXJzb3IoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6
OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0
IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAg
aWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzIHx8IG1fdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMtPmlzRW1wdHkoKSkgewotICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3Jv
bGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgICAgIGZyYW1lKCkucGFnZSgp
LT5jaHJvbWUoKS5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBib29sIGlzQ29tcG9zaXRl
ZENvbnRlbnRMYXllciA9IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CisgICAgYm9vbCBpc0Nv
bXBvc2l0ZWRDb250ZW50TGF5ZXIgPSB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogCiAgICAg
Ly8gR2V0IHRoZSByZWN0cyBvZiB0aGUgZml4ZWQgb2JqZWN0cyB2aXNpYmxlIGluIHRoZSByZWN0
VG9TY3JvbGwKICAgICBSZWdpb24gcmVnaW9uVG9VcGRhdGU7CkBAIC0yMjIwLDcgKzIyMjEsNyBA
QCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgIH0KIAogICAgIC8vIDEpIHNjcm9sbAotICAg
IGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0
KTsKKyAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuc2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0
VG9TY3JvbGwsIGNsaXBSZWN0KTsKIAogICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhl
ZCBvYmplY3RzIHRoYXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKICAgICBmb3IgKGF1dG8mIHVwZGF0
ZVJlY3QgOiByZWdpb25Ub1VwZGF0ZS5yZWN0cygpKSB7CkBAIC0yMjM1LDcgKzIyMzYsNyBAQCBi
b29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgICAgICB9CiAgICAgICAgIGlmIChjbGlwc1JlcGFp
bnRzKCkpCiAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOwot
ICAgICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0
ZVJlY3QpOworICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuaW52YWxpZGF0ZUNvbnRl
bnRzQW5kUm9vdFZpZXcodXBkYXRlUmVjdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNjQyLDkgKzI2NDMsMTAgQEAgYm9vbCBGcmFtZVZpZXc6OnJlcXVlc3RTY3JvbGxQb3NpdGlv
blVwZGF0ZShjb25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRpb24pCiAKIEhvc3RXaW5kb3cqIEZy
YW1lVmlldzo6aG9zdFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZSgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwog
fQogCiB2b2lkIEZyYW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcikKQEAgLTI3ODQsMTAgKzI3ODYsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFRpbGVk
QmFja2luZ1Njcm9sbGFiaWxpdHkoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCiB2b2lkIEZy
YW1lVmlldzo6dW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpCiB7CiAgICAgYWRqdXN0VGls
ZWRCYWNraW5nU2Nyb2xsYWJpbGl0eSgpOwogfQorCiAjZW5kaWYKIAogc3RhdGljIExheWVyRmx1
c2hUaHJvdHRsZVN0YXRlOjpGbGFncyBkZXRlcm1pbmVMYXllckZsdXNoVGhyb3R0bGVTdGF0ZShQ
YWdlJiBwYWdlKQpAQCAtNDA4Miw4ICs0MDg2LDYgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNj
cm9sbENvcm5lcigpCiAgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92
ZSgqY29ybmVyU3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihjb3JuZXJS
ZWN0KTsKICAgICB9Ci0KLSAgICBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKTsKIH0K
IAogdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKQEAgLTQxNTcsMTUgKzQxNTksMTQgQEAg
Q29sb3IgRnJhbWVWaWV3Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBib29sIEZy
YW1lVmlldzo6aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiB3
aWRnZXQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQp
KSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5oYXNDdXN0
b21TY3JvbGxiYXJzKCkpCisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkp
IHsKKyAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkuaGFz
Q3VzdG9tU2Nyb2xsYmFycygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9IGVsc2UgaWYgKGlzPFNjcm9sbGJhcj4oKndpZGdldCkpIHsKLSAgICAgICAgICAgIGlmIChk
b3duY2FzdDxTY3JvbGxiYXI+KCp3aWRnZXQpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCisgICAgICAg
IH0gZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpKSB7CisgICAgICAgICAgICBp
ZiAoZG93bmNhc3Q8U2Nyb2xsYmFyPih3aWRnZXQuZ2V0KCkpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxNzMsMTEgKzQxNzQsMTAgQEAgRnJhbWVWaWV3KiBGcmFt
ZVZpZXc6OnBhcmVudEZyYW1lVmlldygpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gZnJh
bWUoKS50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnRGcmFtZS0+dmlldygp
OwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogcGFyZW50RnJhbWUgPSBmcmFtZSgp
LnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXBhcmVudEZyYW1lKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKIH0KIAogYm9vbCBGcmFt
ZVZpZXc6OmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpIGNvbnN0CkBAIC01MTgz
LDggKzUxODMsOCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0UG9zaXRpb25zKCkKICAg
ICAvLyBzY3JpcHRzIGluIHJlc3BvbnNlIHRvIE5QUF9TZXRXaW5kb3csIGZvciBleGFtcGxlKSwg
c28gd2UgbmVlZCB0byBrZWVwIHRoZSBXaWRnZXRzCiAgICAgLy8gYWxpdmUgZHVyaW5nIGVudW1l
cmF0aW9uLgogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogY29sbGVjdEFuZFByb3RlY3RXaWRnZXRz
KG1fd2lkZ2V0c0luUmVuZGVyVHJlZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlcldpZGdldCogcmVu
ZGVyV2lkZ2V0ID0gUmVuZGVyV2lkZ2V0OjpmaW5kKHdpZGdldC5nZXQoKSkpIHsKLSAgICAgICAg
ICAgIGF1dG8gaWdub3JlV2lkZ2V0U3RhdGUgPSByZW5kZXJXaWRnZXQtPnVwZGF0ZVdpZGdldFBv
c2l0aW9uKCk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6Zmlu
ZCgqd2lkZ2V0KSkgeworICAgICAgICAgICAgYXV0byBpZ25vcmVXaWRnZXRTdGF0ZSA9IHJlbmRl
cmVyLT51cGRhdGVXaWRnZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGln
bm9yZVdpZGdldFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IDIzYTdmZDFiNDRmNmVlOTA0MjBiMjA1MDg5M2M3ODNhYWU4NTAzYjYuLjcxMWI3NGI0
NjdiMzc1ODg0YTM1NzhhNDAyYTRlNDRjNDYyMzM1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtNCw3ICs0LDcgQEAKICAgICAgICAgICAgICAoQykgMTk5OCwgMTk5OSBUb3JiZW4gV2Vp
cyAod2Vpc0BrZGUub3JnKQogICAgICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCiAgICAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCi0gICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOSwgMjAxNC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTc0LDE2ICs3
NCwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GcmFtZVZpZXcoKTsKIAotICAgIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICBIb3N0V2luZG93KiBob3N0
V2luZG93KCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRGcmFtZVJl
Y3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKLSAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBz
Y2hlZHVsZUFuaW1hdGlvbigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBGcmFtZSYgZnJhbWUoKSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZyYW1lJj4obV9mcmFtZS5nZXQoKSk7IH0KKyAgICBG
cmFtZSYgZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3Q7CiAKQEAgLTk1LDE1ICs5NSwxNSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXJnaW5XaWR0aChMYXlvdXRVbml0KTsKICAgICB2b2lk
IHNldE1hcmdpbkhlaWdodChMYXlvdXRVbml0KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCk7CiAKLSAgICBSZWY8U2Nyb2xsYmFyPiBj
cmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIFJlZjxT
Y3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgZmluYWw7CiAK
LSAgICBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgc2V0
Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzU2l6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IElu
dFNpemUmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2l6ZSgpIGZpbmFsOwogCiAg
ICAgdm9pZCBsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUgPSB0cnVlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGRpZEZpcnN0TGF5b3V0KCkgY29uc3Q7CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXJGb3JQ
bGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
Y2hlZHVsZUxheWVyRmx1c2hBbGxvd2luZ1Rocm90dGxpbmcoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiBhbnkgU2Nyb2xsYWJsZUFyZWEgY2FuIGhhdmUgYSBu
b2RlIGluIHRoIFNjcm9sbGluZ1RyZWUsIHRoaXMgc2hvdWxkCiAgICAgLy8gYmVjb21lIGEgdmly
dHVhbCBmdW5jdGlvbiBvbiBTY3JvbGxhYmxlQXJlYS4KQEAgLTIyNSwyMSArMjI1LDIxIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMoSW50U2l6ZSk7CiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkgY29uc3Q7CiAgICAgCi0gICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0Rm9yRnJhbWVPd25lcihjb25z
dCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBib29sIGNsaXBUb0xheWVyQ29udGVudHMpIGNvbnN0
OwogCi0gICAgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBmaW5hbDsKIAog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBv
dmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmco
KSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBT
Y3JvbGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVz
cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9z
aXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxp
bmcoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxp
bmcoKSBmaW5hbDsKKyAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBT
Y3JvbGxQb3NpdGlvbiYpIGZpbmFsOworICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBv
c2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gVGhl
IHNjcm9sbE9yaWdpbiwgc2Nyb2xsUG9zaXRpb24sIG1pbmltdW1TY3JvbGxQb3NpdGlvbiBhbmQg
bWF4aW11bVNjcm9sbFBvc2l0aW9uIGFyZSBhbGwgYWZmZWN0ZWQgYnkgZnJhbWUgc2NhbGUsCiAg
ICAgLy8gYnV0IGxheW91dFZpZXdwb3J0IGNvbXB1dGF0aW9ucyByZXF1aXJlIHVuc2NhbGVkIHNj
cm9sbCBwb3NpdGlvbnMuCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
RW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQg
cmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkgZmluYWw7CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAgICAgICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvcjsKQEAgLTM3OSw5ICszNzksOSBAQCBwdWJsaWM6CiAgICAgZW51
bSBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCB7IERvY3VtZW50Q29vcmRpbmF0ZXMsIFZpZXdD
b29yZGluYXRlcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU2VsZWN0
aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiwgQ29vcmRpbmF0ZVNwYWNlRm9yU25h
cHNob3QpOwogCi0gICAgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVy
dGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNz
Q29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jp
em9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIGZpbmFsOwor
ICAgIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29u
c3QgSW50UmVjdCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgZG9jdW1lbnRC
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIApAQCAtNDM2LDEwICs0MzYsMTAgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Jl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAg
ICAgLy8gT3ZlcnJpZGUgU2Nyb2xsVmlldyBtZXRob2RzIHRvIGRvIHBvaW50IGNvbnZlcnNpb24g
dmlhIHJlbmRlcmVycywgaW4gb3JkZXIgdG8gdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4K
LSAgICBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3Qg
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5p
bmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29u
dmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
IGZpbmFsOworICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRS
ZWN0JikgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlz
RnJhbWVWaWV3U2Nyb2xsQ29ybmVyKGNvbnN0IFJlbmRlclNjcm9sbGJhclBhcnQmIHNjcm9sbENv
cm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0gJnNjcm9sbENvcm5lcjsgfQog
CkBAIC00NTEsMjAgKzQ1MSwyMCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBTY3JvbGxhYmls
aXR5IHsgU2Nyb2xsYWJsZSwgU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzU2Nyb2xsYWJsZShTY3JvbGxhYmlsaXR5IGRlZmluaXRpb25PZlNj
cm9sbGFibGUgPSBTY3JvbGxhYmlsaXR5OjpTY3JvbGxhYmxlKTsKIAotICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIG92ZXJyaWRlOwotICAgIGJvb2wgaGFzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNTY3JvbGxh
YmxlT3JSdWJiZXJiYW5kYWJsZSgpIGZpbmFsOworICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnVi
YmVyYmFuZGFibGVBbmNlc3RvcigpIGZpbmFsOwogCiAgICAgZW51bSBTY3JvbGxiYXJNb2Rlc0Nh
bGN1bGF0aW9uU3RyYXRlZ3kgeyBSdWxlc0Zyb21XZWJDb250ZW50T25seSwgQW55UnVsZSB9Owog
ICAgIHZvaWQgY2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFyTW9kZSYg
aE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlLCBTY3JvbGxiYXJNb2Rlc0NhbGN1bGF0aW9uU3Ry
YXRlZ3kgPSBBbnlSdWxlKTsKIAotICAgIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24o
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHNob3VsZFNldEN1cnNvcigpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG1ldGhvZCBvbmNlIHBsdWdpbiBsb2FkaW5nIGlzIGRlY291cGxlZCBmcm9tIGxheW91dC4KICAg
ICB2b2lkIGZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpOwogCi0gICAgYm9vbCBzaG91
bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hv
dWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNjcm9s
bGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJp
ZGU7CiAKICAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OwpAQCAtNDgz
LDcgKzQ4Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEqKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYVNldCogc2Nyb2xs
YWJsZUFyZWFzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYXMuZ2V0KCk7IH0KIAot
ICAgIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVD
aGlsZChXaWRnZXQmKSBmaW5hbDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciBw
b3J0cyB0aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAgICAvLyBP
biBNYWMgV2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2VzIHRoZSBz
Y3JvbGxpbmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwpAQCAtNTAxLDcgKzUwMSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBQYWdpbmF0aW9uJiBwYWdpbmF0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRQYWdpbmF0aW9uKGNvbnN0IFBhZ2luYXRpb24mKTsKICAgICAKLSAgICBib29sIGlu
UHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pblByb2dyYW1t
YXRpY1Njcm9sbDsgfQorICAgIGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAgICAgdm9pZCBzZXRJblByb2dy
YW1tYXRpY1Njcm9sbChib29sIHByb2dyYW1tYXRpY1Njcm9sbCkgeyBtX2luUHJvZ3JhbW1hdGlj
U2Nyb2xsID0gcHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9B
REFQVEFUSU9OKQpAQCAtNTA5LDggKzUwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluaXRp
YWxWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2luaXRpYWxWaWV3cG9ydFNp
emUgPSBzaXplOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1h
bmNlVGVzdGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZv
cm1hbmNlVGVzdGluZygpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIHNldFdhbnRzTGF5ZXJGb3JUb3BP
dmVySGFuZ0FyZWEoYm9vbCkgY29uc3Q7CkBAIC01MjMsMjAgKzUyMywyMCBAQCBwdWJsaWM6CiAK
ICAgICBMYXlvdXRQb2ludCBzY3JvbGxQb3NpdGlvblJlc3BlY3RpbmdDdXN0b21GaXhlZFBvc2l0
aW9uKCkgY29uc3Q7CiAKLSAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KKyAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEhlYWRlckhlaWdodChpbnQpOwotICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQorICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Rm9vdGVySGVpZ2h0KGludCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB0b3BD
b250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5cGU6Oldl
YkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGZs
b2F0IHRvcENvbnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBlID0gVG9wQ29udGVudEluc2V0
VHlwZTo6V2ViQ29yZUNvbnRlbnRJbnNldCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB0b3BDb250
ZW50SW5zZXREaWRDaGFuZ2UoZmxvYXQgbmV3VG9wQ29udGVudEluc2V0KTsKIAogICAgIHZvaWQg
dG9wQ29udGVudERpcmVjdGlvbkRpZENoYW5nZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aWxsU3RhcnRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2ls
bEVuZExpdmVSZXNpemUoKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXZhaWxh
YmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2
YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIGZpbmFsOwogCiAgICAgdm9pZCBhZGp1c3RUaWxlZEJh
Y2tpbmdTY3JvbGxhYmlsaXR5KCk7CiAKQEAgLTU3NCwyOSArNTc0LDI5IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0g
ICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHMoKSBmaW5hbDsKKyAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRp
ZXMoKSBjb25zdDsKICNlbmRpZgogCi0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVk
Q29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkpIG92ZXJyaWRlOworICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQo
ZmxvYXQgc3RlcCwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBmaW5h
bDsKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiAKLSAgICB2b2lkIHNob3co
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3coKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkUGxh
Y2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3Qg
SW50UmVjdCYgdXBkYXRlUmVjdCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZXBhaW50U2xvd1Jl
cGFpbnRPYmplY3RzKCk7CiAKLSAgICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNGbGlw
cGVkRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFt
ZVZpZXcoRnJhbWUmKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBp
blByZUxheW91dFN0eWxlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9PSBJ
blByZUxheW91dFN0eWxlVXBkYXRlOyB9CiAKLSAgICBib29sIGlzRnJhbWVWaWV3KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyV2lkZ2V0Owog
ICAgIGJvb2wgdXNlU2xvd1JlcGFpbnRzKGJvb2wgY29uc2lkZXJPdmVybGFwID0gdHJ1ZSkgY29u
c3Q7CkBAIC02MjgsOSArNjI4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBjb25zdDsKICAgICBib29sIGZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gp
OwogCi0gICAgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFu
Z2UoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250
ZW50U2l6ZUNoYW5nZSgpIGZpbmFsOwogCi0gICAgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlh
UGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBT
Y3JvbGxPZmZzZXQmIG5ld09mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxPZmZzZXRD
aGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0
LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIGFwcGx5
T3ZlcmZsb3dUb1ZpZXdwb3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOwogICAgIHZvaWQgYXBwbHlQYWdpbmF0aW9uVG9W
aWV3cG9ydCgpOwpAQCAtNjUxLDM5ICs2NTEsMzkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZUxheWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RU
aWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwogCi0gICAgdm9pZCByZXBhaW50Q29udGVudFJlY3Rhbmds
ZShjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9s
bGJhcigpIG92ZXJyaWRlOworICAgIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3Qg
SW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSBmaW5h
bDsKIAotICAgIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIC8vIFNj
cm9sbGFibGVBcmVhIGludGVyZmFjZQotICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3Qo
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsVG8o
Y29uc3QgU2Nyb2xsUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpc2libGVTY3Jv
bGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgU2Nyb2xsYWJsZUFy
ZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UmVj
dCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENvcm5lcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFy
JiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xs
UG9zaXRpb24mKSBmaW5hbDsKKyAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChj
b25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QgZmluYWw7CisgICAgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5k
aW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzY3JvbGxBbmlt
YXRvckVuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclNj
cm9sbGluZygpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0xheWVyKiBsYXll
ckZvclNjcm9sbENvcm5lcigpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElO
RykKLSAgICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25zdCBm
aW5hbDsKICNlbmRpZgotICAgIHZvaWQgY29udGVudHNSZXNpemVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2
b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVu
b2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSBmaW5hbDsKICNlbmRpZgogCi0gICAgYm9vbCB1
c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdXNlc0Fz
eW5jU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCB1c2VzTW9ja1Njcm9sbEFu
aW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JN
ZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXNlc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHVzZXNBc3luY1Njcm9sbGlu
ZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdXNlc01vY2tTY3JvbGxBbmltYXRvcigpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRlIHNjcm9sbGJhciBub3RpZmljYXRp
b25zIHRvIHVwZGF0ZSB0aGUgQVhPYmplY3QgY2FjaGUuCi0gICAgdm9pZCBkaWRBZGRTY3JvbGxi
YXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQg
d2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24pIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvbGxiYXIq
LCBTY3JvbGxiYXJPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICBJbnRTaXplIHNpemVGb3JSZXNp
emVFdmVudCgpIGNvbnN0OwogICAgIHZvaWQgc2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQoKTsKQEAg
LTY5Myw3ICs2OTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFT
ZXQoKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dFZpZXdwb3J0KCk7CiAKLSAgICB2b2lkIG5vdGlm
eVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBmaW5hbDsKIAogICAg
IHZvaWQgZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRlZCgpOwogICAgIHZvaWQgc3BlY3Vs
YXRpdmVUaWxpbmdFbmFibGVUaW1lckZpcmVkKCk7CkBAIC03MDgsNyArNzA4LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCi0gICAgdm9pZCB1
cGRhdGVTY3JvbGxDb3JuZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENvcm5l
cigpIGZpbmFsOwogCiAgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggOTMzMWIzMDI5MDdlNzliN2MxMWI1ZWMwODQ2YmFmZDVjM2Zl
YzQ5Ny4uNmM0NzY1ZjBjYmM0NTI0MjgyZTA3YzYxODY2NGU3NmEwMjUzMTFlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0xMzMzLDE4ICsxMzMzLDE1IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hp
bmdTdGF0ZUNoYW5nZWQoKQogVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IFBhZ2U6OnBsdWdp
blZpZXdzKCkKIHsKICAgICBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gdmlld3M7Ci0KICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFt
ZS0+dmlldygpOworICAgICAgICBhdXRvKiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAg
aWYgKCF2aWV3KQogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgZm9yIChhdXRvJiB3aWRn
ZXQgOiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8UGx1Z2luVmlld0Jh
c2U+KCp3aWRnZXQpKQotICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKndpZGdldCkpOworICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNl
Pih3aWRnZXQuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQ
bHVnaW5WaWV3QmFzZT4od2lkZ2V0LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICBy
ZXR1cm4gdmlld3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCA0
NDMwNTQ2NzU1NzFiYjkwZDc0MDFmMmJiMTEyM2FjZTlhZmNlMTEwLi42N2NlMzE3MDdjYjIxN2Iz
YjAxNGYxNjlhOTI0ZjRjOGM1ZmQ5YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0yODYsMTYgKzI4NiwxOSBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0TGlua2Vk
RGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwogCiBTdHJp
bmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpOworICAgIEFTU0VSVChmcmFtZSk7CisgICAgQVNTRVJUKGZyYW1l
LT5kb2N1bWVudCgpKTsKKworICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLT5kb2N1bWVudCgp
OwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJhbWUpOwogICAgIHByaW50Q29udGV4
dC5iZWdpbig4MDApOyAvLyBBbnkgd2lkdGggaXMgT0sgaGVyZS4KLSAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0KCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGRv
Y3VtZW50LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZU51bWJlcik7
CisgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CisgICAgYXV0byBzdHlsZSA9IGRvY3VtZW50
LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlTnVtYmVyKTsKIAogICAg
IC8vIEltcGxlbWVudCBmb3JtYXR0ZXJzIGZvciBwcm9wZXJ0aWVzIHdlIGNhcmUgYWJvdXQuCiAg
ICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibWFyZ2luLWxlZnQiKSkgewogICAgICAgICBp
ZiAoc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoImF1dG8iKTsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyAiYXV0byIgfTsK
ICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5tYXJnaW5MZWZ0KCkudmFsdWUo
KSk7CiAgICAgfQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImxpbmUtaGVpZ2h0Iikp
CkBAIC0zMDUsOSArMzA4LDkgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZy
YW1lKiBmcmFtZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGEKICAgICBpZiAoIXN0
cmNtcChwcm9wZXJ0eU5hbWUsICJmb250LWZhbWlseSIpKQogICAgICAgICByZXR1cm4gc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLmZpcnN0RmFtaWx5KCk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVy
dHlOYW1lLCAic2l6ZSIpKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPnBh
Z2VTaXplKCkud2lkdGgoKS52YWx1ZSgpKSArICcgJyArIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5w
YWdlU2l6ZSgpLmhlaWdodCgpLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1i
ZXIoc3R5bGUtPnBhZ2VTaXplKCkud2lkdGgudmFsdWUoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJl
cihzdHlsZS0+cGFnZVNpemUoKS5oZWlnaHQudmFsdWUoKSk7CiAKLSAgICByZXR1cm4gU3RyaW5n
KCJwYWdlUHJvcGVydHkoKSB1bmltcGxlbWVudGVkIGZvcjogIikgKyBwcm9wZXJ0eU5hbWU7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAi
LCBwcm9wZXJ0eU5hbWUpOwogfQogCiBib29sIFByaW50Q29udGV4dDo6aXNQYWdlQm94VmlzaWJs
ZShGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAxYzQ3ZTNkZmM0ZGRkMWJkNDVjMzI1
N2Y3YjRlZDMwZGViOGY5YTY4Li43NmU4MGMwNzhmMWM2NmJkYWQ2YjgwMWY4OTM3ZGJkMDAxYmZj
YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlv
bkV2ZW50c0lmTmVlZGVkKCkKICAgICAgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYg
bV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9
IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkuc2Nyb2xsUG9zaXRp
b24oKTsKLSAgICAgICAgICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmln
Z2VyID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmln
Z2VyKCkuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3du
Y2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1ZSgpLnZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25T
dGF0ZUlucHV0OjpTdGFydFRpbWVyRmlyZWQsIDApOwogICAgICAgICAgICAgfQpAQCAtNTc3LDcg
KzU3Nyw3IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSgpCiAgICAg
ICAgIGlmIChtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLT5pc1Njcm9sbEFuaW1hdGlvblRyaWdnZXIo
KSkgewogICAgICAgICAgICAgaWYgKG1fb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQg
Y3VycmVudFNjcm9sbFBvc2l0aW9uID0gbV9vYmplY3QtPnZpZXcoKS5mcmFtZVZpZXcoKS5zY3Jv
bGxQb3NpdGlvbkZvckZpeGVkUG9zaXRpb24oKS55KCkudG9GbG9hdCgpOwotICAgICAgICAgICAg
ICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3Jv
bGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlv
blRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAgICAgICAgICAgICAgICBpZiAo
Y3VycmVudFNjcm9sbFBvc2l0aW9uID49IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1ZSgpLnZhbHVl
KCkgJiYgKCFzY3JvbGxUcmlnZ2VyLmhhc0VuZFZhbHVlKCkgfHwgY3VycmVudFNjcm9sbFBvc2l0
aW9uIDw9IHNjcm9sbFRyaWdnZXIuZW5kVmFsdWUoKS52YWx1ZSgpKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC02NTMsNyArNjUzLDcgQEAgZG91Ymxl
IEFuaW1hdGlvbkJhc2U6OnByb2dyZXNzKGRvdWJsZSBzY2FsZSwgZG91YmxlIG9mZnNldCwgY29u
c3QgVGltaW5nRnVuY3Rpb24KICAgICB9CiAKICAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQotICAg
ICAgICB0aW1pbmdGdW5jdGlvbiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpLmdldCgp
OworICAgICAgICB0aW1pbmdGdW5jdGlvbiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigp
OwogCiAgICAgc3dpdGNoICh0aW1pbmdGdW5jdGlvbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBUaW1p
bmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewpAQCAtNzQzLDcgKzc0Myw3IEBAIGRv
dWJsZSBBbmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkg
JiYgbV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsK
LSAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0
PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsK
KyAgICAgICAgYXV0byYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRy
aWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpKTsKICAgICAgICAgaWYgKHNjcm9sbFRyaWdn
ZXIuaGFzRW5kVmFsdWUoKSAmJiBtX29iamVjdCkgewogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0
ID0gbV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS5zY3JvbGxQb3Np
dGlvbigpOwogICAgICAgICAgICAgZmxvYXQgc3RhcnRWYWx1ZSA9IHNjcm9sbFRyaWdnZXIuc3Rh
cnRWYWx1ZSgpLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMmQ4OTQwNDUyMDQ4YTI4ZjQxMTBh
NTUyMDM1ZmYxYzcxZmQ4OGQ1NS4uOWY2YjkxN2M2ZWMxYzZmZWJiYTY5NDBhMTY3MDViZGJkNWFj
NzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtOTAsOCArOTAsNyBAQCBzdGF0aWMgaW5saW5lIExlbmd0
aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IExlbmd0aCYgZnJvbSwgY29u
c3QgTAogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFNpemUoYmxlbmRGdW5jKGFu
aW0sIGZyb20ud2lkdGgoKSwgdG8ud2lkdGgoKSwgcHJvZ3Jlc3MpLAotICAgICAgICAgICAgICAg
ICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCgpLCB0by5oZWlnaHQoKSwgcHJvZ3Jl
c3MpKTsKKyAgICByZXR1cm4geyBibGVuZEZ1bmMoYW5pbSwgZnJvbS53aWR0aCwgdG8ud2lkdGgs
IHByb2dyZXNzKSwgYmxlbmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0LCB0by5oZWlnaHQsIHByb2dy
ZXNzKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIFNoYWRvd1N0eWxlIGJsZW5kRnVuYyhjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBTaGFkb3dTdHlsZSBmcm9tLCBTaGFkb3dTdHlsZSB0bywgZG91
YmxlIHByb2dyZXNzKQpAQCAtNDkyLDcgKzQ5MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Y2xhc3MgTGVuZ3RoUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFByb3BlcnR5V3JhcHBlckdldHRl
cjxjb25zdCBUJj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IExlbmd0aFByb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IFQmIChSZW5k
ZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQp
KQorICAgIExlbmd0aFByb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IFQm
IChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0
ZXIpKFQmJikpCiAgICAgICAgIDogUHJvcGVydHlXcmFwcGVyR2V0dGVyPGNvbnN0IFQmPihwcm9w
LCBnZXR0ZXIpCiAgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQogICAgIHsKQEAgLTUwNCw3ICs1
MDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCAoUmVuZGVyU3R5
bGU6OiptX3NldHRlcikoVCk7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoVCYm
KTsKIH07CiAKIGNsYXNzIFByb3BlcnR5V3JhcHBlckNsaXBQYXRoIDogcHVibGljIFJlZkNvdW50
ZWRQcm9wZXJ0eVdyYXBwZXI8Q2xpcFBhdGhPcGVyYXRpb24+IHsKQEAgLTEwNDksNyArMTA0OCw3
IEBAIHB1YmxpYzoKIGNsYXNzIEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBGaWxsTGF5ZXIqIChSZW5kZXJTdHlsZTo6Kkxh
eWVyc0dldHRlcikoKSBjb25zdDsKKyAgICB0eXBlZGVmIGNvbnN0IEZpbGxMYXllciYgKFJlbmRl
clN0eWxlOjoqTGF5ZXJzR2V0dGVyKSgpIGNvbnN0OwogICAgIHR5cGVkZWYgRmlsbExheWVyJiAo
UmVuZGVyU3R5bGU6OipMYXllcnNBY2Nlc3NvcikoKTsKIAogICAgIEZpbGxMYXllcnNQcm9wZXJ0
eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBMYXllcnNHZXR0ZXIgZ2V0dGVyLCBMYXllcnNB
Y2Nlc3NvciBhY2Nlc3NvcikKQEAgLTEwODYsOCArMTA4NSw4IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCFhIHx8ICFiKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGNvbnN0
IEZpbGxMYXllciogZnJvbUxheWVyID0gKGEtPiptX2xheWVyc0dldHRlcikoKTsKLSAgICAgICAg
Y29uc3QgRmlsbExheWVyKiB0b0xheWVyID0gKGItPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAg
ICAgYXV0byogZnJvbUxheWVyID0gJihhLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1
dG8qIHRvTGF5ZXIgPSAmKGItPiptX2xheWVyc0dldHRlcikoKTsKIAogICAgICAgICB3aGlsZSAo
ZnJvbUxheWVyICYmIHRvTGF5ZXIpIHsKICAgICAgICAgICAgIGlmICghbV9maWxsTGF5ZXJQcm9w
ZXJ0eVdyYXBwZXItPmVxdWFscyhmcm9tTGF5ZXIsIHRvTGF5ZXIpKQpAQCAtMTEwMiw5ICsxMTAx
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmlt
LCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5
bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGNv
bnN0IEZpbGxMYXllciogYUxheWVyID0gKGEtPiptX2xheWVyc0dldHRlcikoKTsKLSAgICAgICAg
Y29uc3QgRmlsbExheWVyKiBiTGF5ZXIgPSAoYi0+Km1fbGF5ZXJzR2V0dGVyKSgpOwotICAgICAg
ICBGaWxsTGF5ZXIqIGRzdExheWVyID0gJihkc3QtPiptX2xheWVyc0FjY2Vzc29yKSgpOworICAg
ICAgICBhdXRvKiBhTGF5ZXIgPSAmKGEtPiptX2xheWVyc0dldHRlcikoKTsKKyAgICAgICAgYXV0
byogYkxheWVyID0gJihiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CisgICAgICAgIGF1dG8qIGRzdExh
eWVyID0gJihkc3QtPiptX2xheWVyc0FjY2Vzc29yKSgpOwogCiAgICAgICAgIHdoaWxlIChhTGF5
ZXIgJiYgYkxheWVyICYmIGRzdExheWVyKSB7CiAgICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlci0+YmxlbmQoYW5pbSwgZHN0TGF5ZXIsIGFMYXllciwgYkxheWVyLCBwcm9ncmVz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggZWQ5NmFiMTUzODgyYjU5ZGM5OWNiZGY1YWM5ODY0ZGIwZjAw
NWEwNC4uMjJiZGU0NjhhMDZhYjQ2YzBiYTBlODg4YjliNzM1ZDE0NTEyYzBlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcApAQCAtOTksMjggKzk5LDI4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3Jk
aW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhCiAKIEV2ZW50
VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tp
bmdSZWdpb25zRm9yRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogewotICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBhdXRvKiBy
ZW5kZXJWaWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3
IHx8IHJlbmRlclZpZXctPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJu
IEV2ZW50VHJhY2tpbmdSZWdpb25zKCk7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykK
ICAgICAvLyBPbiBpT1MsIHdlIHVzZSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiB0byByZXByZXNl
bnQgdGhlIHJlZ2lvbiBjb3ZlcmVkIGJ5IGVsZW1lbnRzIHdpdGggdG91Y2ggZXZlbnQgaGFuZGxl
cnMuCiAgICAgQVNTRVJUKGZyYW1lLmlzTWFpbkZyYW1lKCkpOwotCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEV2ZW50VHJhY2tp
bmdSZWdpb25zKCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5ldmVudFRyYWNraW5nUmVnaW9ucygp
OwogI2Vsc2UKLSAgICBSZWdpb24gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247Ci0gICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogZnJhbWVWaWV3ID0gZnJh
bWUudmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gRXZlbnRUcmFj
a2luZ1JlZ2lvbnMoKTsKIAorICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKKwog
ICAgIC8vIEZJWE1FOiBzaG91bGQgQVNTRVJUKCFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpIGhl
cmUsIGJ1dCBuZWVkIHRvIGZpeCBEZWJ1Z1BhZ2VPdmVybGF5cwogICAgIC8vIHRvIG5vdCBhc2sg
Zm9yIHJlZ2lvbnMgYXQgYmFkIHRpbWVzLgogCi0gICAgaWYgKGNvbnN0IEZyYW1lVmlldzo6U2Ny
b2xsYWJsZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFy
ZWFzKCkpIHsKKyAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3Jv
bGxhYmxlQXJlYXMoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNjcm9sbGFibGVBcmVhIDogKnNj
cm9sbGFibGVBcmVhcykgewogICAgICAgICAgICAgLy8gQ29tcG9zaXRlZCBzY3JvbGxhYmxlIGFy
ZWFzIGNhbiBiZSBzY3JvbGxlZCBvZmYgdGhlIG1haW4gdGhyZWFkLgogICAgICAgICAgICAgaWYg
KHNjcm9sbGFibGVBcmVhLT51c2VzQXN5bmNTY3JvbGxpbmcoKSkKQEAgLTEzNiwxOCArMTM2LDIx
IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2
ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB3aWRn
ZXQgOiBmcmFtZVZpZXctPndpZGdldHNJblJlbmRlclRyZWUoKSkgewotICAgICAgICBSZW5kZXJX
aWRnZXQqIHJlbmRlcldpZGdldCA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQpOwotICAgICAg
ICBpZiAoIXJlbmRlcldpZGdldCB8fCAhaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpKQorICAg
ICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgIAotICAgICAgICBpZiAoZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQp
LndhbnRzV2hlZWxFdmVudHMoKSkKLSAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
LnVuaXRlKHJlbmRlcldpZGdldC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAg
IGlmICghZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLndhbnRzV2hlZWxFdmVudHMo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvKiByZW5kZXJXaWRnZXQgPSBS
ZW5kZXJXaWRnZXQ6OmZpbmQoKndpZGdldCk7CisgICAgICAgIGlmICghcmVuZGVyV2lkZ2V0KQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVu
aXRlKHJlbmRlcldpZGdldC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgfQogICAg
IAotICAgIC8vIEZJWE1FOiBpZiB3ZSd2ZSBhbHJlYWR5IGFjY291bnRlZCBmb3IgdGhpcyBzdWJm
cmFtZSBhcyBhIHNjcm9sbGFibGUgYXJlYSwgd2UgY2FuIGF2b2lkIHJlY3Vyc2luZyBpbnRvIGl0
IGhlcmUuCiAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgZXZlbnRUcmFja2luZ1JlZ2lvbnM7CisK
KyAgICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJh
bWUgYXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBo
ZXJlLgogICAgIGZvciAoRnJhbWUqIHN1YmZyYW1lID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQo
KTsgc3ViZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUtPnRyZWUoKS5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIEZyYW1lVmlldyogc3ViZnJhbWVWaWV3ID0gc3ViZnJhbWUtPnZpZXcoKTsKKyAg
ICAgICAgYXV0byogc3ViZnJhbWVWaWV3ID0gc3ViZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYg
KCFzdWJmcmFtZVZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTYwLDcgKzE2Myw3
IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2
ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAgICAgICAgIGV2ZW50VHJhY2tpbmdSZWdpb25z
LnVuaXRlKHN1YmZyYW1lUmVnaW9uKTsKICAgICB9CiAKLSAgICBEb2N1bWVudDo6UmVnaW9uRml4
ZWRQYWlyIHdoZWVsSGFuZGxlclJlZ2lvbiA9IGZyYW1lLmRvY3VtZW50KCktPmFic29sdXRlUmVn
aW9uRm9yRXZlbnRUYXJnZXRzKGZyYW1lLmRvY3VtZW50KCktPndoZWVsRXZlbnRUYXJnZXRzKCkp
OworICAgIGF1dG8gd2hlZWxIYW5kbGVyUmVnaW9uID0gZnJhbWUuZG9jdW1lbnQoKS0+YWJzb2x1
dGVSZWdpb25Gb3JFdmVudFRhcmdldHMoZnJhbWUuZG9jdW1lbnQoKS0+d2hlZWxFdmVudFRhcmdl
dHMoKSk7CiAgICAgYm9vbCB3aGVlbEhhbmRsZXJJbkZpeGVkQ29udGVudCA9IHdoZWVsSGFuZGxl
clJlZ2lvbi5zZWNvbmQ7CiAgICAgaWYgKHdoZWVsSGFuZGxlckluRml4ZWRDb250ZW50KSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBwb3NpdGlvbjpzdGlja3kgaGVyZSB0b28u
CkBAIC0xNzIsNiArMTc1LDcgQEAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmFic29sdXRlRXZlbnRUcmFja2luZ1JlZ2lvbnNGb3JGcmFtZSgKIAogICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIG5vdCB0aGUgbWFpbiBmcmFtZSwgd2UgY291bGQgY2xpcCB0aGUgcmVn
aW9uIHRvIHRoZSBmcmFtZSdzIGJvdW5kcy4KICAgICBldmVudFRyYWNraW5nUmVnaW9ucy51bml0
ZVN5bmNocm9ub3VzUmVnaW9uKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBub25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbik7CisKICAgICByZXR1cm4gZXZlbnRUcmFja2luZ1JlZ2lvbnM7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDllNzBlOWQzNmI5OTVl
ZGNiZWEyOTI1NDM2NzM2NmM0OTE4YTNiYzEuLmIxMTE2NGYwODU1ZGJkZjI1ZjZiMWM2ODZmNzE2
YjQ2NzIzMmM2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMjMs
OCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgS2V5ZWRDb2RpbmdfaAotI2RlZmluZSBLZXllZENvZGluZ19oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTE1
Niw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBU
IHZhbHVlKQpAQCAtMjExLDUgKzIxMCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZENvZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aEJveC5oCmluZGV4IGU3YTk3OGE5YzhjMDUyOGQyOWNhMGUwZDM3Y2M5ZjRjN2VkNzcxMDcu
LjNlMGYyMTg0ZTY4NmQwZWRjMGNlYTM5YjM0NThlNzRmNmM2ZWE3NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aEJveC5oCkBAIC0xOSw4ICsxOSw3IEBACiAgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIExlbmd0aEJveF9oCi0jZGVmaW5lIExlbmd0aEJv
eF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIldyaXRp
bmdNb2RlLmgiCkBAIC0zMSwxMiArMzAsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgQm94RXh0ZW50IHsKIHB1YmxpYzoKICAgICBCb3hFeHRlbnQo
KQotICAgICAgICA6IG1fc2lkZXMoe3sgVCgwKSwgVCgwKSwgVCgwKSwgVCgwKSB9fSkKKyAgICAg
ICAgOiBtX3NpZGVzKHsgeyB7IDAgfSwgeyAwIH0sIHsgMCB9LCB7IDAgfSB9IH0pCiAgICAgewog
ICAgIH0KIAogICAgIEJveEV4dGVudChjb25zdCBUJiB0b3AsIGNvbnN0IFQmIHJpZ2h0LCBjb25z
dCBUJiBib3R0b20sIGNvbnN0IFQmIGxlZnQpCi0gICAgICAgIDogbV9zaWRlcyh7eyB0b3AsIHJp
Z2h0LCBib3R0b20sIGxlZnQgfX0pCisgICAgICAgIDogbV9zaWRlcyh7IHsgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0IH0gfSkKKyAgICB7CisgICAgfQorCisgICAgQm94RXh0ZW50KFQmJiB0b3As
IFQmJiByaWdodCwgVCYmIGJvdHRvbSwgVCYmIGxlZnQpCisgICAgICAgIDogbV9zaWRlcyh7IHsg
c3RkOjpmb3J3YXJkPFQ+KHRvcCksIHN0ZDo6Zm9yd2FyZDxUPihyaWdodCksIHN0ZDo6Zm9yd2Fy
ZDxUPihib3R0b20pLCBzdGQ6OmZvcndhcmQ8VD4obGVmdCkgfSB9KQogICAgIHsKICAgICB9CiAK
QEAgLTEzOSw4ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIExlbmd0aEJv
eChjb25zdCBMZW5ndGgmIHRvcCwgY29uc3QgTGVuZ3RoJiByaWdodCwgY29uc3QgTGVuZ3RoJiBi
b3R0b20sIGNvbnN0IExlbmd0aCYgbGVmdCkKLSAgICAgICAgOiBCb3hFeHRlbnQodG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0KQorICAgIExlbmd0aEJveChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJp
Z2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQpCisgICAgICAgIDogQm94RXh0ZW50
IHsgV1RGTW92ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3Zl
KGxlZnQpIH0KICAgICB7CiAgICAgfQogCkBAIC0xNTAsMTEgKzE1NCw5IEBAIHB1YmxpYzoKICAg
ICB9CiB9OwogCi10eXBlZGVmIEJveEV4dGVudDxMYXlvdXRVbml0PiBMYXlvdXRCb3hFeHRlbnQ7
Ci10eXBlZGVmIEJveEV4dGVudDxmbG9hdD4gRmxvYXRCb3hFeHRlbnQ7Cit1c2luZyBMYXlvdXRC
b3hFeHRlbnQgPSBCb3hFeHRlbnQ8TGF5b3V0VW5pdD47Cit1c2luZyBGbG9hdEJveEV4dGVudCA9
IEJveEV4dGVudDxmbG9hdD47CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IExlbmd0aEJveCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBMZW5ndGhCb3hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
U2l6ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmNwcAppbmRleCAx
NjgzOWNjYmE4ZjAxMTk1ZjdlNDJlNmZjMWZmZWU3MjE1OWFmMWZiLi43ZjM1MGU3NzM4NjNkMTZj
NTMwNzFhMmM0YWMwZmI2OTZjODFmZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhTaXplLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhTaXplJiBzaXplKQogewotICAgIHJl
dHVybiB0cyA8PCBzaXplLndpZHRoKCkgPDwgIiAiIDw8IHNpemUuaGVpZ2h0KCk7CisgICAgcmV0
dXJuIHRzIDw8IHNpemUud2lkdGggPDwgIiAiIDw8IHNpemUuaGVpZ2h0OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgKaW5kZXggZDcx
M2UxODkyYzVhNWM0YjNjYzA1ZjM4OTMyZjJiNjE1NjFiZjE3OC4uNjA1MjNlZWM2Y2IzMmQxMDFi
ZDFkMjQ0MTQwNDVjYTY2MzQ0ZThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUu
aApAQCAtMSw2ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4LDQ4ICsx
NywyNyBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBM
ZW5ndGhTaXplX2gKLSNkZWZpbmUgTGVuZ3RoU2l6ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkxlbmd0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBMZW5ndGhTaXpl
IHsKLXB1YmxpYzoKLSAgICBMZW5ndGhTaXplKCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIExl
bmd0aFNpemUoTGVuZ3RoIHdpZHRoLCBMZW5ndGggaGVpZ2h0KQotICAgICAgICA6IG1fd2lkdGgo
V1RGTW92ZSh3aWR0aCkpCi0gICAgICAgICwgbV9oZWlnaHQoV1RGTW92ZShoZWlnaHQpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoU2l6ZSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX2hlaWdo
dCA9PSBvLm1faGVpZ2h0OwotICAgIH0KLQotICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3RoIHdpZHRo
KSB7IG1fd2lkdGggPSBXVEZNb3ZlKHdpZHRoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgd2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0KLSAgICB2b2lkIHNldEhlaWdodChMZW5ndGgg
aGVpZ2h0KSB7IG1faGVpZ2h0ID0gV1RGTW92ZShoZWlnaHQpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotCi1wcml2YXRlOgotICAgIExl
bmd0aCBtX3dpZHRoOwotICAgIExlbmd0aCBtX2hlaWdodDsKKyAgICBMZW5ndGggd2lkdGg7Cisg
ICAgTGVuZ3RoIGhlaWdodDsKIH07CiAKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVu
Z3RoU2l6ZSYgYSwgY29uc3QgTGVuZ3RoU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gYS53aWR0aCA9
PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09IGIuaGVpZ2h0OworfQorCiBpbmxpbmUgTGVuZ3RoU2l6
ZSBibGVuZChjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91
YmxlIHByb2dyZXNzKQogewotICAgIHJldHVybiBMZW5ndGhTaXplKGJsZW5kKGZyb20ud2lkdGgo
KSwgdG8ud2lkdGgoKSwgcHJvZ3Jlc3MpLCBibGVuZChmcm9tLmhlaWdodCgpLCB0by5oZWlnaHQo
KSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4geyBibGVuZChmcm9tLndpZHRoLCB0by53aWR0aCwg
cHJvZ3Jlc3MpLCBibGVuZChmcm9tLmhlaWdodCwgdG8uaGVpZ2h0LCBwcm9ncmVzcykgfTsKIH0K
IAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTGVuZ3RoU2l6ZSYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBMZW5ndGhTaXplX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDM0MDAxNGFkNWE5OTUzNTlhZjdiNjk5YzUy
OGRkMzgwMzIwOTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaAotI2Rl
ZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc19oCi0KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLWNsYXNzIFNwZWVjaFN5bnRoZXNpczsKLWNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTsKLWNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlOwotICAgIAotY2xhc3MgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXMgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
cz4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzPiBjcmVhdGUoU3BlZWNoU3ludGhlc2lzKik7Ci0gICAgCi0gICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYp
OwotICAgIHZvaWQgcGxhdGZvcm1TcGVhayhTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKTsKLSAg
ICAKLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lz
Kik7Ci0KLSAgICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhlc2lzOwotfTsKLSAgICAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwCmluZGV4IDFmMjA3ZjQ0MzY2OTliNGQxYzg0NWQ3MGNjYzcyOWQzNmU5MGJiYTIu
LjEwYTgzMGUzOWM3YjdmZWQ4OTM4ZWMwYjU0MDAwZWU4NDdjZTBjNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMCwxNiArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xp
ZW50KiBjbGllbnQpCitSZWY8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOwogfQog
ICAgIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBj
bGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3ZvbHVtZSgxLjBmKQotICAg
ICwgbV9yYXRlKDEuMGYpCi0gICAgLCBtX3BpdGNoKDEuMGYpCitpbmxpbmUgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2Ns
aWVudCgmY2xpZW50KQogewogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggYTg2OWJi
ODcyODRkYzU5ZTA3ZWU2NDIzMzZlYWQxOGNhOWM1ZDg4NC4uZTA4Nzc1YjI1ZWY0MDBlNjZiZGMy
ZThkYzQ1YzgyYjZmMTBjODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDIxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2VfaAotI2RlZmluZSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjcHJh
Z21hIG9uY2UKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2VDbGllbnQgewotcHVibGljOgotICAgIC8vIEltcGxlbWVudCBtZXRo
b2RzIGFzIG5lZWRlZC4KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCgpIHsgfQogfTsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlQ2xpZW50Kik7Ci0gICAgCisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50Jik7CisKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBt
X3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9
IHRleHQ7IH0KICAgICAKQEAgLTc0LDIwICs2NiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
bGllbnQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZUNsaWVudCopOworICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Jik7CiAKICAgICBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1f
dGV4dDsKICAgICBTdHJpbmcgbV9sYW5nOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBtX3ZvaWNlOwotICAgIGZsb2F0IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fcmF0
ZTsKLSAgICBmbG9hdCBtX3BpdGNoOwotICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBmbG9h
dCBtX3ZvbHVtZSB7IDEgfTsKKyAgICBmbG9hdCBtX3JhdGUgeyAxIH07CisgICAgZmxvYXQgbV9w
aXRjaCB7IDEgfTsKKyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyAwIH07CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
Ci0KLSNlbmRpZiAvLyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuY3BwCmluZGV4IDU4MGYxOWQxNjc4ZGU5NWVmZTZjOTcyMDA1OWQwZWI2MmIzZDAxYjguLjI0
Mzc2Y2RlOTIzMDhmNjYwMzA3YTNjZDM1ZDZkZmI3MWQ1NTJmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAs
MTcgKzMwLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKK1JlZjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uodm9pY2VVUkksIG5h
bWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywg
bG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQor
UmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UpOwogfQotICAgIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2Us
IGJvb2wgaXNEZWZhdWx0KQorCitpbmxpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJv
b2wgaXNEZWZhdWx0KQogICAgIDogbV92b2ljZVVSSSh2b2ljZVVSSSkKICAgICAsIG1fbmFtZShu
YW1lKQogICAgICwgbV9sYW5nKGxhbmcpCkBAIC00OSwxMiArNDksNiBAQCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmlu
ZyYgdm9pY2VVUgogewogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkKLSAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQotICAg
ICwgbV9kZWZhdWx0KGZhbHNlKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCAzNDNiOWU3
YmFjZjE1ZTQ5OTMyMDhmNTU4MTRmY2UzN2Y3NDUxZDlkLi4wMTU4YjM0OTg0ZGY1NjFlY2E3ZWJm
ZTc0MzBmZTg4M2Y5YTE5MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDE4IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZV9oCi0jZGVm
aW5lIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2VfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4g
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJv
b2wgaXNEZWZhdWx0KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2Us
IGJvb2wgaXNEZWZhdWx0KTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+IGNyZWF0ZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiB2b2ljZVVSSSgpIGNvbnN0IHsg
cmV0dXJuIG1fdm9pY2VVUkk7IH0KICAgICB2b2lkIHNldFZvaWNlVVJJKGNvbnN0IFN0cmluZyYg
dm9pY2VVUkkpIHsgbV92b2ljZVVSSSA9IHZvaWNlVVJJOyB9CkBAIC01NiwxNyArNTMsMTUgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29u
c3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSgpOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSA9
IGRlZmF1bHQ7CiAKICAgICBTdHJpbmcgbV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwog
ICAgIFN0cmluZyBtX2xhbmc7Ci0gICAgYm9vbCBtX2xvY2FsU2VydmljZTsKLSAgICBib29sIG1f
ZGVmYXVsdDsKKyAgICBib29sIG1fbG9jYWxTZXJ2aWNlIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
ZGVmYXVsdCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotI2VuZGlmIC8vIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRl
eCBjYmZmZTZlMWM4MTJiNGRkZDE0ZTQ3MDAzYTg3ODQ4YjRlZjFhZGNiLi5iODlkNTY2MTEzZjVj
YzdmZGU1ZTRlZTRiNThhOGMyOWE5YjY0Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDE0ICs2MiwxNCBAQCBTY3JvbGxW
aWV3Ojp+U2Nyb2xsVmlldygpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoUGFz
c1JlZlB0cjxXaWRnZXQ+IHBycENoaWxkKSAKK3ZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoV2lk
Z2V0JiBjaGlsZCkKIHsKLSAgICBXaWRnZXQqIGNoaWxkID0gcHJwQ2hpbGQuZ2V0KCk7Ci0gICAg
QVNTRVJUKGNoaWxkICE9IHRoaXMgJiYgIWNoaWxkLT5wYXJlbnQoKSk7Ci0gICAgY2hpbGQtPnNl
dFBhcmVudCh0aGlzKTsKLSAgICBtX2NoaWxkcmVuLmFkZChwcnBDaGlsZCk7Ci0gICAgaWYgKGNo
aWxkLT5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBwbGF0Zm9ybUFkZENoaWxkKGNoaWxkKTsK
KyAgICBBU1NFUlQoJmNoaWxkICE9IHRoaXMpOworICAgIEFTU0VSVCghY2hpbGQucGFyZW50KCkp
OworICAgIGNoaWxkLnNldFBhcmVudCh0aGlzKTsKKyAgICBtX2NoaWxkcmVuLmFkZChjaGlsZCk7
CisgICAgaWYgKGNoaWxkLnBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtQWRkQ2hp
bGQoJmNoaWxkKTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIGNo
aWxkKQpAQCAtOTcsNyArOTcsNyBAQCBib29sIFNjcm9sbFZpZXc6OnNldEhhc1Njcm9sbGJhcklu
dGVybmFsKFJlZlB0cjxTY3JvbGxiYXI+JiBzY3JvbGxiYXIsIFNjcm9sbGJhcgogCiAgICAgaWYg
KGhhc0JhciAmJiAhc2Nyb2xsYmFyKSB7CiAgICAgICAgIHNjcm9sbGJhciA9IGNyZWF0ZVNjcm9s
bGJhcihvcmllbnRhdGlvbik7Ci0gICAgICAgIGFkZENoaWxkKHNjcm9sbGJhci5nZXQoKSk7Cisg
ICAgICAgIGFkZENoaWxkKCpzY3JvbGxiYXIpOwogICAgICAgICBkaWRBZGRTY3JvbGxiYXIoc2Ny
b2xsYmFyLmdldCgpLCBvcmllbnRhdGlvbik7CiAgICAgICAgIHNjcm9sbGJhci0+c3R5bGVDaGFu
Z2VkKCk7CiAgICAgICAgIGlmIChjb250ZW50U2l6ZUFmZmVjdGVkKQpAQCAtODI5LDEyICs4Mjks
NiBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9s
bERlbHRhKQogICAgIHdpbmRvdy0+aW52YWxpZGF0ZVJvb3RWaWV3KEludFJlY3QoKSk7CiB9CiAK
LWJvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKLXsKLSAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRv
U2Nyb2xsLCBjbGlwUmVjdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgU2Nyb2xsVmll
dzo6c2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogewog
ICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCh1cGRhdGVS
ZWN0KTsKQEAgLTEwMzgsMTcgKzEwMzIsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3Rz
Q2hhbmdlZCgpCiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2No
aWxkcmVuLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0
ZXJhdG9yIGN1cnJlbnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1
cnJlbnQpCi0gICAgICAgICgqY3VycmVudCktPmZyYW1lUmVjdHNDaGFuZ2VkKCk7CisgICAgZm9y
IChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5mcmFtZVJlY3RzQ2hh
bmdlZCgpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmNsaXBSZWN0Q2hhbmdlZCgpCiB7Ci0gICAg
SGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4u
ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3Ig
Y3VycmVudCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkK
LSAgICAgICAgKCpjdXJyZW50KS0+Y2xpcFJlY3RDaGFuZ2VkKCk7CisgICAgZm9yIChhdXRvJiBj
aGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5jbGlwUmVjdENoYW5nZWQoKTsKIH0K
IAogc3RhdGljIHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcihHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKQEAgLTExNTAsMTAgKzExNDEsNiBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSBuZXdT
dHlsZSwgYm9vbCBmb3JjZVVwZGF0ZQogICAgIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKLXsKLX0KLQogdm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGNvcm5lclJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCku
cGFpbnRTY3JvbGxDb3JuZXIodGhpcywgY29udGV4dCwgY29ybmVyUmVjdCk7CkBAIC0xMzkyLDkg
KzEzNzksOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxl
KQogICAgIGlmICghaXNTZWxmVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGl0ID0gbV9j
aGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRQYXJl
bnRWaXNpYmxlKHZpc2libGUpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQor
ICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKIH0KIAogdm9pZCBTY3Jv
bGxWaWV3OjpzaG93KCkKQEAgLTE0MDIsOSArMTM4OCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2hv
dygpCiAgICAgaWYgKCFpc1NlbGZWaXNpYmxlKCkpIHsKICAgICAgICAgc2V0U2VsZlZpc2libGUo
dHJ1ZSk7CiAgICAgICAgIGlmIChpc1BhcmVudFZpc2libGUoKSkgewotICAgICAgICAgICAgSGFz
aFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7Ci0g
ICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBpdCA9IG1f
Y2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgICgqaXQp
LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworICAgICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6
IG1fY2hpbGRyZW4pCisgICAgICAgICAgICAgICAgY2hpbGQtPnNldFBhcmVudFZpc2libGUodHJ1
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0MTUsOSArMTQwMCw4IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6aGlkZSgpCiB7CiAgICAgaWYgKGlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBpZiAo
aXNQYXJlbnRWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+
OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgICAgICAgICAgZm9yIChIYXNo
U2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0UGFyZW50VmlzaWJsZShm
YWxzZSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKKyAgICAg
ICAgICAgICAgICBjaGlsZC0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAgICAgICAgIH0KICAg
ICAgICAgc2V0U2VsZlZpc2libGUoZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAppbmRleCBkYjU3MGRkOTg1YjE3NzI0MDlhNTE1MGFmZDc2M2MzMGMyNDcxNDhj
Li42YjMxZjk4MmY0MjhiMDhhYWI1NTk2NTg1ZmRmYzcxMWFmNGU3ZmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1ZGUg
IlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJX
aWRnZXQuaCIKLQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CisKIE9CSkNfQ0xBU1MgV0FLU2Nyb2xsVmlldzsKIE9CSkNfQ0xBU1MgV0FLVmlldzsKIApAQCAt
NDYsNiArNDYsNyBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAjaWZuZGVmIE5TVmlldwogI2RlZmlu
ZSBOU1ZpZXcgV0FLVmlldwogI2VuZGlmCisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZCBfX09CSkNfXwpAQCAtNjQsMTAgKzY1LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxWaWV3KCk7CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCi0gICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBzY3JvbGxPZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRp
b24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTY3JvbGxDb3Ju
ZXJWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFy
T3JpZW50YXRpb24pIGNvbnN0IGZpbmFsOworICAgIGludCBzY3JvbGxPZmZzZXQoU2Nyb2xsYmFy
T3JpZW50YXRpb24pIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
b2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIGZpbmFsOworICAgIGJvb2wgaXNTY3JvbGxD
b3JuZXJWaXNpYmxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5n
ZWQoU2Nyb2xsYmFyU3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKQEAg
LTg1LDE0ICs4NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBS
ZWN0KCkgY29uc3QgPSAwOwogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBjaGlsZCBtYW5pcHVsYXRp
b24gYW5kIGluc3BlY3Rpb24uCi0gICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj4mIGNo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChQYXNzUmVmUHRyPFdpZGdldD4pOworICAgIGNvbnN0IEhh
c2hTZXQ8UmVmPFdpZGdldD4+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENoaWxkKFdpZGdldCYpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQmKTsKIAogICAgIC8vIElmIHRoZSBzY3JvbGwgdmll
dyBkb2VzIG5vdCB1c2UgYSBuYXRpdmUgd2lkZ2V0LCB0aGVuIGl0IHdpbGwgaGF2ZSBjcm9zcy1w
bGF0Zm9ybSBTY3JvbGxiYXJzLiBUaGVzZSBmdW5jdGlvbnMKICAgICAvLyBjYW4gYmUgdXNlZCB0
byBvYnRhaW4gdGhvc2Ugc2Nyb2xsYmFycy4KLSAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3Jv
bGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0
KCk7IH0KLSAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIFNjcm9sbGJhciogaG9y
aXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9s
bGJhci5nZXQoKTsgfQorICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc1Nj
cm9sbFZpZXdTY3JvbGxiYXIoY29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaG9y
aXpvbnRhbFNjcm9sbGJhcigpID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0gY2hp
bGQ7IH0KIAogICAgIHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEyMSw3ICsx
MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSkgZmluYWw7CiAKICAgICAv
LyBCeSBkZWZhdWx0IHlvdSBvbmx5IHJlY2VpdmUgcGFpbnQgZXZlbnRzIGZvciB0aGUgYXJlYSB0
aGF0IGlzIHZpc2libGUuIEluIHRoZSBjYXNlIG9mIHVzaW5nIGEKICAgICAvLyB0aWxlZCBiYWNr
aW5nIHN0b3JlLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBzZXQsIHNvIHRoYXQgdGhlIHZpZXcgcGFp
bnRzIHRoZSBlbnRpcmUgY29udGVudHMuCkBAIC0xNjcsNyArMTY4LDcgQEAgcHVibGljOgogICAg
IC8vIEluIHRoZSBzaXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHNj
cm9sbGluZyAoaWUuIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlKSBpdCBpcyBwb3NzaWJsZSB0
byB1c2UKICAgICAvLyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QgaW5zdGVhZCBmb3Ig
dGhlIG1haW5mcmFtZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVkIG1hbnVhbGx5LCBlLmcg
anVzdCBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3aGljaCB1c3VhbGx5IHdpbGwg
aGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9yIHdoZW4g
c2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCi0gICAgSW50U2l6ZSB2aXNp
YmxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdh
Y3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5zaXplKCk7IH0KKyAgICBJbnRTaXplIHZpc2libGVT
aXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0Rv
Y3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpIHsgbV9maXhlZFZpc2libGVDb250ZW50UmVjdCA9
IHZpc2libGVDb250ZW50UmVjdDsgfQpAQCAtMjE3LDEzICsyMTgsMTMgQEAgcHVibGljOgogCiAg
ICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3Vt
ZW50IGNvbnRhaW5lZCBpbnNpZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMg
aW5kaXZpZHVhbCB3aWR0aCBhbmQgaGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICBXRUJDT1JF
X0VYUE9SVCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOyAvLyBBbHdheXMg
YXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCisg
ICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsgLy8g
QWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkvdmlzaWJsZUhlaWdo
dCgpLgogICAgIGludCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXpl
KCkud2lkdGgoKTsgfQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2l6
ZShjb25zdCBJbnRTaXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIHF1ZXJ5aW5nIHRoZSBj
dXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQsIGEgc2l6ZSwgb3IgYXMg
aW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCi0gICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5
SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkubG9jYXRpb24oKTsgfQorICAgIFNjcm9sbFBvc2l0aW9u
IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0
KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLmxvY2F0aW9uKCk7IH0KIAogICAgIFNjcm9s
bFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOyAvLyBUaGUg
bWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAKQEAgLTI1OCw3ICsyNTks
NyBAQCBwdWJsaWM6CiAgICAgLy8gcmVsYXRpdmUgdG8gdGhlIHZlcnkgdG9wIG9mIHRoZSB2aWV3
LgogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIGRvY3VtZW50U2Nyb2xsUG9zaXRp
b25SZWxhdGl2ZVRvVmlld09yaWdpbigpIGNvbnN0OwogCi0gICAgSW50U2l6ZSBvdmVyaGFuZ0Ft
b3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgY2FjaGVDdXJyZW50U2Nyb2xsUG9zaXRpb24oKSB7IG1fY2Fj
aGVkU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbigpOyB9CiAgICAgU2Nyb2xsUG9zaXRp
b24gY2FjaGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNjcm9sbFBv
c2l0aW9uOyB9CkBAIC0zMTMsMTMgKzMxNCwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09mZnNj
cmVlbigpIGNvbnN0OwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gb3VyIGZyYW1lIHJlY3QgY2hhbmdl
cyAob3IgdGhlIHJlY3Qvc2Nyb2xsIHBvc2l0aW9uIG9mIGFuIGFuY2VzdG9yIGNoYW5nZXMpLgot
ICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyYW1lUmVj
dHNDaGFuZ2VkKCkgZmluYWw7CiAgICAgCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlIHRvIHVwZGF0
ZSBvdXIgc2Nyb2xsYmFycyBhbmQgbm90aWZ5IG91ciBjb250ZW50cyBvZiB0aGUgcmVzaXplLgog
ICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogICAgIC8v
IFdpZGdldCBvdmVycmlkZSB0byBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIGEgY2xpcHJlY3QgY2hh
bmdlLgotICAgIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlw
UmVjdENoYW5nZWQoKSBmaW5hbDsKIAogICAgIC8vIEZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRv
IGhpdCB0ZXN0IHNjcm9sbGJhcnMgZnJvbSB3aXRoaW4gdGhlIGVuZ2luZSdzIGV2ZW50IGhhbmRs
ZXJzIChsaWtlIFdpbjMyKS4KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhckF0UG9pbnQoY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKQEAgLTM0MywxMyArMzQ0LDEzIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNv
bnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBl
bnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRv
IGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNob3coKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhpZGUoKSBvdmVy
cmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoaWRlKCkgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQYXJlbnRWaXNpYmxlKGJvb2wpIGZpbmFsOwogICAgIAogICAgIC8v
IFBhbiBzY3JvbGxpbmcuCiAgICAgc3RhdGljIGNvbnN0IGludCBub1BhblNjcm9sbFJhZGl1cyA9
IDE1OwpAQCAtMzU3LDIxICszNTgsMTkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUGFuU2Ny
b2xsSWNvbigpOwogICAgIHZvaWQgcGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYp
OwogCi0gICAgdmlydHVhbCBib29sIGlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQ
b2ludCYpOwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJDb3JuZXJQcmVzZW50KCkgY29uc3Q7
Ci0gICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmKTsKKyAgICBib29sIHNj
cm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdDsKKyAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJl
Y3QoKSBjb25zdCBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IElu
dFJlY3QmKTsKIAotICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdW
aWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29u
dmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0
IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciYsIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFp
bmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IGZpbmFsOwor
ICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNj
cm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252
ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyJiwgY29uc3QgSW50UG9pbnQmKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKLSAgICBib29sIGlzU2Ny
b2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KGNvbnN0IFNj
cm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCk7CiAK
IHByb3RlY3RlZDoKQEAgLTM4NCwyNiArMzgzLDI2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQg
YXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRlZE9yUmVtb3ZlZFNjcm9sbGJhcigpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpID0gMDsKIAogICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBjcmVhdGUvZGVzdHJveSBzY3JvbGxiYXJzLgog
ICAgIC8vIFRoZXkgcmV0dXJuIHRydWUgaWYgdGhlIHNjcm9sbGJhciB3YXMgYWRkZWQgb3IgcmVt
b3ZlZC4KLSAgICBib29sIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCwgYm9vbCogY29u
dGVudFNpemVBZmZlY3RlZCA9IDApOwotICAgIGJvb2wgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIo
Ym9vbCwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCA9IDApOworICAgIGJvb2wgc2V0SGFzSG9y
aXpvbnRhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkID0gbnVsbHB0
cik7CisgICAgYm9vbCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sLCBib29sKiBjb250ZW50
U2l6ZUFmZmVjdGVkID0gbnVsbHB0cik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xs
Q29ybmVyKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpID0g
MDsKKyAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBm
aW5hbDsKIAogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxz
LgotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkgPSAwOwogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBp
bnZhbGlkYXRpbmcgZXZlcnl0aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNT
bG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KTsKIAogICAgIHZvaWQgc2V0U2Nyb2xs
T3JpZ2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QWxsLCBib29sIHVw
ZGF0ZVBvc2l0aW9uU3luY2hyb25vdXNseSk7CiAKICAgICAvLyBTdWJjbGFzc2VkIGJ5IEZyYW1l
VmlldyB0byBjaGVjayB0aGUgd3JpdGluZy1tb2RlIG9mIHRoZSBkb2N1bWVudC4KLSAgICB2aXJ0
dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBDYWxs
ZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxiYXJzIHRvIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgc3Rh
dGUgb2YgdGhlIHZpZXcuCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pOwpAQCAtNDExLDI3ICs0MTAsMjkgQEAgcHJvdGVjdGVk
OgogICAgIGZsb2F0IHBsYXRmb3JtVG9wQ29udGVudEluc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBw
bGF0Zm9ybVNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCk7CisgICAgdm9p
ZCBoYW5kbGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVD
aGFuZ2UoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWZlclNj
cm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxP
ZmZzZXQmLCBjb25zdCBTY3JvbGxPZmZzZXQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
T2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmLCBj
b25zdCBTY3JvbGxPZmZzZXQmKSA9IDA7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVh
bCB2b2lkIHVub2JzY3VyZWRDb250ZW50U2l6ZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpID0gMDsKICNlbmRpZgogCiBwcml2YXRl
OgogICAgIC8vIFNpemUgYXZhaWxhYmxlIGZvciB2aWV3IGNvbnRlbnRzLCBleGNsdWRpbmcgY29u
dGVudCBpbnNldHMuIE5vdCBhZmZlY3RlZCBieSB6b29taW5nLgogICAgIEludFNpemUgc2l6ZUZv
clVub2JzY3VyZWRDb250ZW50KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9
IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKIAotICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxl
Q29udGVudFJlY3RCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCB2aXNpYmxl
Q29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMs
IFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50
UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKIAogICAg
IHZvaWQgY29tcGxldGVVcGRhdGVzQWZ0ZXJTY3JvbGxUbyhjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSk7CiAKICAgICBib29sIHNldEhhc1Njcm9sbGJhckludGVybmFsKFJlZlB0cjxTY3JvbGxi
YXI+JiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIGJvb2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6
ZUFmZmVjdGVkKTsKIAorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQorCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
OwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgU2Nyb2xs
YmFyTW9kZSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlOwpAQCAtNDQyLDcgKzQ0Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcHJvaGliaXRzU2Nyb2xsaW5nOwogCi0gICAgSGFzaFNldDxS
ZWZQdHI8V2lkZ2V0Pj4gbV9jaGlsZHJlbjsKKyAgICBIYXNoU2V0PFJlZjxXaWRnZXQ+PiBtX2No
aWxkcmVuOwogCiAgICAgLy8gVGhpcyBib29sIGlzIHVudXNlZCBvbiBNYWMgT1MgYmVjYXVzZSB3
ZSBkaXJlY3RseSBhc2sgdGhlIHBsYXRmb3JtIHdpZGdldAogICAgIC8vIHdoZXRoZXIgaXQgaXMg
c2FmZSB0byBibGl0IG9uIHNjcm9sbC4KQEAgLTQ4Myw5ICs0ODQsOSBAQCBwcml2YXRlOgogCiAg
ICAgSW50UmVjdCByZWN0VG9Db3B5T25TY3JvbGwoKSBjb25zdDsKIAotICAgIC8vIENhbGxlZCB3
aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoaXMgdmlldyBjaGFuZ2VzLiAgRnJhbWVW
aWV3IG92ZXJyaWRlcyB0aGlzIHRvIGdlbmVyYXRlIHJlcGFpbnQgaW52YWxpZGF0aW9ucy4KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkg
eyB9CisgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhpcyB2
aWV3IGNoYW5nZXMuIEZyYW1lVmlldyBvdmVycmlkZXMgdGhpcyB0byBnZW5lcmF0ZSByZXBhaW50
IGludmFsaWRhdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0
ZXJTY3JvbGxpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5
ZXJzQWZ0ZXJTY3JvbGxpbmcoKSA9IDA7CiAKICAgICB2b2lkIHBsYXRmb3JtQWRkQ2hpbGQoV2lk
Z2V0Kik7CiAgICAgdm9pZCBwbGF0Zm9ybVJlbW92ZUNoaWxkKFdpZGdldCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmgKaW5kZXggNTkxMTk3OGFlZWMxOGYwODNmZGJmODVmMWFmM2VkMjQxNzkwMTE2
NS4uMzE0YThkZjc1OTA5OTE1MzkyNzVhYWQ0YTM5ZGQ5YjZjOGVhNmUwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZS5oCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExlbmd0
aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
TGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0
dXJuIHpvb21lZFNpemU7IH0KICAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHNpemUg
Zm9yIGEgY29udHJvbCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuICAKLSAgICB2aXJ0dWFsIExlbmd0
aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgw
LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOyB9CisgICAgdmlydHVhbCBMZW5ndGhTaXplIG1p
bmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAv
Knpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQg
fSB9OyB9CiAgICAgCiAgICAgLy8gQWxsb3dzIHRoZSB0aGVtZSB0byBtb2RpZnkgdGhlIGV4aXN0
aW5nIHBhZGRpbmcvYm9yZGVyLgogICAgIHZpcnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5n
KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVk
Qm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb24uaAppbmRleCA5YTBkZjE3MDA4ZjIxNzRiZDE3ZmIzNjE2ODM3
NDk1YTQzYzE4YTdjLi44ZjVhZDkzNjI3MzExYmUyMzI2MWYxNDc4Y2M0NmViZWFkM2NlZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCkBAIC0y
LDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBE
ZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIyLDIxICsy
MiwxNiBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlvbl9oCi0jZGVmaW5lIEFuaW1hdGlv
bl9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0K
LSNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSNpbmNsdWRlICJBbmltYXRpb25U
cmlnZ2VyLmgiCi0jZW5kaWYKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5j
bHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKyNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKKyNpbmNsdWRlICJBbmltYXRp
b25UcmlnZ2VyLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MiwyMCAr
NTcsMjAgQEAgcHVibGljOgogCiAgICAgLy8gRmxhZ3MgdGhpcyB0byBiZSB0aGUgc3BlY2lhbCAi
bm9uZSIgYW5pbWF0aW9uIChhbmltYXRpb24tbmFtZTogbm9uZSkKICAgICBib29sIGlzTm9uZUFu
aW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25lOyB9CisKICAgICAvLyBXZSBjYW4gbWFr
ZSBwbGFjZWhvbGRlciBBbmltYXRpb24gb2JqZWN0cyB0byBrZWVwIHRoZSBjb21tYS1zZXBhcmF0
ZWQgbGlzdHMKICAgICAvLyBvZiBwcm9wZXJ0aWVzIGluIHN5bmMuIGlzVmFsaWRBbmltYXRpb24g
bWVhbnMgdGhpcyBpcyBub3QgYSBwbGFjZWhvbGRlci4KICAgICBib29sIGlzVmFsaWRBbmltYXRp
b24oKSBjb25zdCB7IHJldHVybiAhbV9pc05vbmUgJiYgIW1fbmFtZS5pc0VtcHR5KCk7IH0KIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gKCFtX2RpcmVj
dGlvblNldCAmJiAhbV9kdXJhdGlvblNldCAmJiAhbV9maWxsTW9kZVNldAotICAgICAgICAgICAg
ICAgICYmICFtX25hbWVTZXQgJiYgIW1fcGxheVN0YXRlU2V0ICYmICFtX2l0ZXJhdGlvbkNvdW50
U2V0Ci0gICAgICAgICAgICAgICAgJiYgIW1fZGVsYXlTZXQgJiYgIW1fdGltaW5nRnVuY3Rpb25T
ZXQgJiYgIW1fcHJvcGVydHlTZXQKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikK
LSAgICAgICAgICAgICAgICAmJiAhbV90cmlnZ2VyU2V0KTsKLSNlbHNlCi0gICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgaWYgKG1fdHJpZ2dlclNldCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgorICAgICAgICByZXR1cm4gIW1fZGlyZWN0aW9uU2V0ICYmICFtX2R1cmF0aW9u
U2V0ICYmICFtX2ZpbGxNb2RlU2V0CisgICAgICAgICAgICAmJiAhbV9uYW1lU2V0ICYmICFtX3Bs
YXlTdGF0ZVNldCAmJiAhbV9pdGVyYXRpb25Db3VudFNldAorICAgICAgICAgICAgJiYgIW1fZGVs
YXlTZXQgJiYgIW1fdGltaW5nRnVuY3Rpb25TZXQgJiYgIW1fcHJvcGVydHlTZXQ7CiAgICAgfQog
CiAgICAgYm9vbCBpc0VtcHR5T3JaZXJvRHVyYXRpb24oKSBjb25zdApAQCAtMTE0LDExICsxMDks
NyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5
OyB9CiAKLSAgICBlbnVtIEFuaW1hdGlvbk1vZGUgewotICAgICAgICBBbmltYXRlQWxsLAotICAg
ICAgICBBbmltYXRlTm9uZSwKLSAgICAgICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5Ci0gICAgfTsK
KyAgICBlbnVtIEFuaW1hdGlvbk1vZGUgeyBBbmltYXRlQWxsLCBBbmltYXRlTm9uZSwgQW5pbWF0
ZVNpbmdsZVByb3BlcnR5IH07CiAKICAgICBlbnVtIEFuaW1hdGlvbkRpcmVjdGlvbiB7CiAgICAg
ICAgIEFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCwKQEAgLTEzOSwxMCArMTMwLDEwIEBAIHB1Ymxp
YzoKICAgICBTdHlsZTo6U2NvcGVPcmRpbmFsIG5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZVN0eWxlU2NvcGVPcmRpbmFsOyB9CiAgICAgRUFuaW1QbGF5U3RhdGUg
cGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFuaW1QbGF5U3RhdGU+KG1f
cGxheVN0YXRlKTsgfQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkoKSBjb25zdCB7IHJldHVy
biBtX3Byb3BlcnR5OyB9Ci0gICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CisgICAgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5n
ZXQoKTsgfQogICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAgIFBhc3NS
ZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gdHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dl
cjsgfQorICAgIEFuaW1hdGlvblRyaWdnZXIqIHRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX3Ry
aWdnZXIuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXREZWxheShkb3VibGUgYykgeyBt
X2RlbGF5ID0gYzsgbV9kZWxheVNldCA9IHRydWU7IH0KQEAgLTE1OCwxMCArMTQ5LDEwIEBAIHB1
YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZXRQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgZCkgeyBt
X3BsYXlTdGF0ZSA9IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlJRCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0g
dHJ1ZTsgfQotICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gZikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRy
dWU7IH0KKyAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4m
JiBmdW5jdGlvbikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IG1fdGlt
aW5nRnVuY3Rpb25TZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRBbmltYXRpb25Nb2RlKEFuaW1h
dGlvbk1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJ
T05TX0xFVkVMXzIpCi0gICAgdm9pZCBzZXRUcmlnZ2VyKFBhc3NSZWZQdHI8QW5pbWF0aW9uVHJp
Z2dlcj4gdCkgeyBtX3RyaWdnZXIgPSB0OyBtX3RyaWdnZXJTZXQgPSB0cnVlOyB9CisgICAgdm9p
ZCBzZXRUcmlnZ2VyKFJlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiYmIHRyaWdnZXIpIHsgbV90cmln
Z2VyID0gV1RGTW92ZSh0cmlnZ2VyKTsgbV90cmlnZ2VyU2V0ID0gdHJ1ZTsgfQogI2VuZGlmCiAK
ICAgICB2b2lkIHNldElzTm9uZUFuaW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CkBA
IC0xOTcsMjIgKzE4OCwyMiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlsbE1vZGUgOiAy
OwogCiAKLSAgICB1bnNpZ25lZCBtX3BsYXlTdGF0ZSAgICAgOiAyOworICAgIHVuc2lnbmVkIG1f
cGxheVN0YXRlIDogMjsKIAotICAgIGJvb2wgbV9kZWxheVNldCAgICAgICAgICA6IDE7Ci0gICAg
Ym9vbCBtX2RpcmVjdGlvblNldCAgICAgIDogMTsKLSAgICBib29sIG1fZHVyYXRpb25TZXQgICAg
ICAgOiAxOwotICAgIGJvb2wgbV9maWxsTW9kZVNldCAgICAgICA6IDE7CisgICAgYm9vbCBtX2Rl
bGF5U2V0IDogMTsKKyAgICBib29sIG1fZGlyZWN0aW9uU2V0IDogMTsKKyAgICBib29sIG1fZHVy
YXRpb25TZXQgOiAxOworICAgIGJvb2wgbV9maWxsTW9kZVNldCA6IDE7CiAgICAgYm9vbCBtX2l0
ZXJhdGlvbkNvdW50U2V0IDogMTsKLSAgICBib29sIG1fbmFtZVNldCAgICAgICAgICAgOiAxOwot
ICAgIGJvb2wgbV9wbGF5U3RhdGVTZXQgICAgICA6IDE7Ci0gICAgYm9vbCBtX3Byb3BlcnR5U2V0
ICAgICAgIDogMTsKKyAgICBib29sIG1fbmFtZVNldCA6IDE7CisgICAgYm9vbCBtX3BsYXlTdGF0
ZVNldCA6IDE7CisgICAgYm9vbCBtX3Byb3BlcnR5U2V0IDogMTsKICAgICBib29sIG1fdGltaW5n
RnVuY3Rpb25TZXQgOiAxOwogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotICAg
IGJvb2wgbV90cmlnZ2VyU2V0ICAgICAgICA6IDE7CisgICAgYm9vbCBtX3RyaWdnZXJTZXQgOiAx
OwogI2VuZGlmCiAKLSAgICBib29sIG1faXNOb25lICAgICAgICAgICAgOiAxOworICAgIGJvb2wg
bV9pc05vbmUgOiAxOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsRGVsYXko
KSB7IHJldHVybiAwOyB9CkBAIC0yMjMsMTIgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyYgaW5pdGlhbE5hbWUoKTsKICAgICBzdGF0aWMgRUFuaW1QbGF5U3RhdGUg
aW5pdGlhbFBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9CiAgICAg
c3RhdGljIENTU1Byb3BlcnR5SUQgaW5pdGlhbFByb3BlcnR5KCkgeyByZXR1cm4gQ1NTUHJvcGVy
dHlJbnZhbGlkOyB9Ci0gICAgc3RhdGljIGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IGluaXRpYWxUaW1pbmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b246OmNyZWF0ZSgpOyB9CisgICAgc3RhdGljIFJlZjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbFRp
bWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KCk7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICBzdGF0aWMgY29u
c3QgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBpbml0aWFsVHJpZ2dlcigpIHsgcmV0dXJu
IEF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBSZWY8QW5pbWF0
aW9uVHJpZ2dlcj4gaW5pdGlhbFRyaWdnZXIoKSB7IHJldHVybiBBdXRvQW5pbWF0aW9uVHJpZ2dl
cjo6Y3JlYXRlKCk7IH0KICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gQW5pbWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcAppbmRleCA2MjVkNzkwMTVhMDc0MDZhMjk5ODgwMTNh
NjUyMDZiNTA4NDI3MWVhLi4wYTMyMDIyNTQ1OWIxZmQwNjYyNjVlZjJjZDdhNTlkZTcyMjU3MjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bkxpc3QuY3BwCkBAIC0yNiwxNSArMjYsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVm
aW5lIEZJTExfVU5TRVRfUFJPUEVSVFkodGVzdCwgcHJvcEdldCwgcHJvcFNldCkgXAogZm9yIChp
ID0gMDsgaSA8IHNpemUoKSAmJiBhbmltYXRpb24oaSkudGVzdCgpOyArK2kpIHsgfSBcCi1pZiAo
aSA8IHNpemUoKSAmJiBpICE9IDApIHsgXAoraWYgKGkpIHsgXAogICAgIGZvciAoc2l6ZV90IGog
PSAwOyBpIDwgc2l6ZSgpOyArK2ksICsraikgXAogICAgICAgICBhbmltYXRpb24oaSkucHJvcFNl
dChhbmltYXRpb24oaikucHJvcEdldCgpKTsgXAogfQogCiBBbmltYXRpb25MaXN0OjpBbmltYXRp
b25MaXN0KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3RoZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQo
QW5pbWF0aW9uOjpjcmVhdGUob3RoZXIuYW5pbWF0aW9uKGkpKSk7CisgICAgbV9hbmltYXRpb25z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGFu
aW1hdGlvbiA6IG90aGVyLm1fYW5pbWF0aW9ucykKKyAgICAgICAgbV9hbmltYXRpb25zLnVuY2hl
Y2tlZEFwcGVuZChBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAogdm9p
ZCBBbmltYXRpb25MaXN0OjpmaWxsVW5zZXRQcm9wZXJ0aWVzKCkKQEAgLTU1LDkgKzU2LDEwIEBA
IGJvb2wgQW5pbWF0aW9uTGlzdDo6b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoc2l6ZSgpICE9IG90aGVyLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0
aW9uKGkpICE9IG90aGVyLmFuaW1hdGlvbihpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oCmluZGV4IGM4NGNiOWIxZDE1MTYzZDA3Njg5
Mzc0NjE3NDA2ZDg0OTQwZGFhZmUuLmVhN2M5Yjc4YTE5NTBmMTVlOTRmYWFiYWE5NTFiNDgxNTUy
ZjdjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9Bbmlt
YXRpb25MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbkxpc3QuaApAQCAtMjIsOCArMjIsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIEFuaW1hdGlv
bkxpc3RfaAotI2RlZmluZSBBbmltYXRpb25MaXN0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzYsNiArMzUsNyBA
QCBjbGFzcyBBbmltYXRpb25MaXN0IHsKIHB1YmxpYzoKICAgICBBbmltYXRpb25MaXN0KCkgeyB9
CiAgICAgQW5pbWF0aW9uTGlzdChjb25zdCBBbmltYXRpb25MaXN0Jik7CisgICAgQW5pbWF0aW9u
TGlzdChBbmltYXRpb25MaXN0JiYpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZmlsbFVuc2V0UHJv
cGVydGllcygpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25MaXN0JikgY29u
c3Q7CkBAIC00OSwyMiArNDksMTcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzaXplKHNp
emVfdCBuKSB7IG1fYW5pbWF0aW9ucy5yZXNpemUobik7IH0KICAgICB2b2lkIHJlbW92ZShzaXpl
X3QgaSkgeyBtX2FuaW1hdGlvbnMucmVtb3ZlKGkpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRp
b24pOwotICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7Ci0gICAgfQotICAg
IAotICAgIEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiAqbV9hbmltYXRp
b25zW2ldOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24oc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuICptX2FuaW1hdGlvbnNbaV07IH0KKyAgICB2b2lkIGFwcGVuZChSZWY8QW5pbWF0
aW9uPiYmIGFuaW1hdGlvbikgeyBtX2FuaW1hdGlvbnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0aW9u
KSk7IH0KKworICAgIEFuaW1hdGlvbiYgYW5pbWF0aW9uKHNpemVfdCBpKSB7IHJldHVybiBtX2Fu
aW1hdGlvbnNbaV0uZ2V0KCk7IH0KKyAgICBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbihzaXpl
X3QgaSkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25zW2ldLmdldCgpOyB9CiAgICAgCiBwcml2
YXRlOgogICAgIEFuaW1hdGlvbkxpc3QmIG9wZXJhdG9yPShjb25zdCBBbmltYXRpb25MaXN0Jik7
CisgICAgQW5pbWF0aW9uTGlzdCYgb3BlcmF0b3I9KEFuaW1hdGlvbkxpc3QmJikgPSBkZWZhdWx0
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CisgICAgVmVj
dG9yPFJlZjxBbmltYXRpb24+PiBtX2FuaW1hdGlvbnM7CiB9OyAgICAKIAogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBbmltYXRpb25MaXN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCmluZGV4IGZj
YTQ1YzEwZDIxMDRmMDVlZGViYjc4ODAwMTRhMjYzYTY1YjFlMTEuLjVlYTAxYjIwYjI2MjdiOGQ5
N2JhMzVmM2UyZDdjYmU0YTU1Mjk0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaApAQCAtMjMsMjkgKzIzLDI0IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uVHJpZ2dlcl9oCi0jZGVmaW5l
IEFuaW1hdGlvblRyaWdnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1B
VElPTlNfTEVWRUxfMikKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQW5pbWF0aW9uVHJpZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRyaWdnZXI+
IHsKIHB1YmxpYzoKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBj
bG9uZSgpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUg
ewotICAgICAgICBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGUsIFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXJUeXBlCi0gICAgfTsKKyAgICB2aXJ0dWFsIFJlZjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblRyaWdnZXIoKSB7IH0KIAorICAg
IGVudW0gY2xhc3MgQW5pbWF0aW9uVHJpZ2dlclR5cGUgeyBBdXRvQW5pbWF0aW9uVHJpZ2dlclR5
cGUsIFNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlIH07CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBpc0F1dG9Bbmlt
YXRpb25UcmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEFuaW1hdGlvblRyaWdnZXJU
eXBlOjpBdXRvQW5pbWF0aW9uVHJpZ2dlclR5cGU7IH0KQEAgLTYyLDE2ICs1NywxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgQW5pbWF0aW9uVHJpZ2dlclR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgQXV0
b0FuaW1hdGlvblRyaWdnZXIgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBBdXRv
QW5pbWF0aW9uVHJpZ2dlciBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UcmlnZ2VyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdXRvQW5pbWF0aW9uVHJpZ2dlcj4gY3JlYXRlKCkK
KyAgICBzdGF0aWMgUmVmPEF1dG9BbmltYXRpb25UcmlnZ2VyPiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5BdXRvQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgZmluYWwKICAgICB7CiAgICAg
ICAgIHJldHVybiBvdGhlci5pc0F1dG9BbmltYXRpb25UcmlnZ2VyKCk7CiAgICAgfQpAQCAtODIs
MjIgKzc1LDIwIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8QW5p
bWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxBbmltYXRpb25U
cmlnZ2VyPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEF1dG9BbmltYXRpb25UcmlnZ2VyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXV0b0FuaW1hdGlvblRyaWdnZXIpOwogICAgIH0KIH07CiAKLWNsYXNzIFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIgOiBwdWJsaWMgQW5pbWF0aW9uVHJpZ2dlciB7CitjbGFzcyBTY3JvbGxBbmlt
YXRpb25UcmlnZ2VyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZShMZW5n
dGggc3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlcj4gY3JlYXRlKExlbmd0aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblRyaWdnZXIoKSB7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIGZpbmFsCiAgICAgewog
ICAgICAgICBpZiAoIW90aGVyLmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcigpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMzLDkgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtX2VuZFZhbHVlID0gZW5kVmFsdWU7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxBbmltYXRp
b25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEFuaW1hdGlvblRyaWdn
ZXI+IGNsb25lKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0VmFsdWUsIG1fZW5kVmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihtX3N0YXJ0
VmFsdWUsIG1fZW5kVmFsdWUpKTsKICAgICB9CiAKICAgICBMZW5ndGggbV9zdGFydFZhbHVlOwpA
QCAtMTU0LDUgKzE0NSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdH
RVIoQXV0b0FuaW1hdGlvblRyaWdnZXIsIGlzQXV0b0FuaW1hdGlvblRyCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0FOSU1BVElPTl9UUklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlzU2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlcik7CiAKICNlbmRpZgotCi0jZW5kaWYgLy8gQW5pbWF0aW9uVHJp
Z2dlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGlt
aW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdG
dW5jdGlvbi5oCmluZGV4IGY1ZTY2MTZhOTdjZDUzYzZiY2FlMTM1ZGQzNmNjNDdjMmZiN2M4Y2Mu
LmZjYWEzYzNmZmRiNmRlYjJhYmVlYmM4ZDAyMGEwZDM5ZGEzMmY3ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMiw1
NCArMjIsNTAgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBUaW1pbmdGdW5jdGlvbl9oCi0jZGVmaW5l
IFRpbWluZ0Z1bmN0aW9uX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
VGV4dFN0cmVhbTsKKwogY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxU
aW1pbmdGdW5jdGlvbj4gewogcHVibGljOgorICAgIHZpcnR1YWwgUmVmPFRpbWluZ0Z1bmN0aW9u
PiBjbG9uZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7
Ci0gICAgICAgIExpbmVhckZ1bmN0aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0
aW9uLCBTcHJpbmdGdW5jdGlvbgotICAgIH07Ci0gICAgCiAgICAgdmlydHVhbCB+VGltaW5nRnVu
Y3Rpb24oKSB7IH0KIAorICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsgTGluZWFyRnVuY3Rp
b24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rpb24sIFNwcmluZ0Z1bmN0aW9uIH07
CiAgICAgVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
LSAgICAKKwogICAgIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBMaW5lYXJGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247
IH0KICAgICBib29sIGlzU3RlcHNUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBTdGVwc0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFNwcmluZ0Z1bmN0aW9uOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYpIGNvbnN0
ID0gMDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGlt
aW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCisgICAgZXhwbGljaXQgVGltaW5n
RnVuY3Rpb24oVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUp
CiAgICAgewogICAgIH0KLSAgICAKKworcHJpdmF0ZToKICAgICBUaW1pbmdGdW5jdGlvblR5cGUg
bV90eXBlOwogfTsKIAogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMg
VGltaW5nRnVuY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExpbmVhclRp
bWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8TGluZWFyVGltaW5nRnVuY3Rp
b24+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRp
bWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGluZWFyVGltaW5n
RnVuY3Rpb24pOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIH5MaW5lYXJUaW1pbmdGdW5jdGlv
bigpIHsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYg
b3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBvdGhlci5pc0xpbmVh
clRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgfQpAQCAtODAsNjEgKzc2LDU0IEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24p
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAg
ICAgfQogfTsKIAogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1Ymxp
YyBUaW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgZW51bSBUaW1pbmdGdW5jdGlvblByZXNl
dCB7Ci0gICAgICAgIEVhc2UsCi0gICAgICAgIEVhc2VJbiwKLSAgICAgICAgRWFzZU91dCwKLSAg
ICAgICAgRWFzZUluT3V0LAotICAgICAgICBDdXN0b20KLSAgICB9OworICAgIGVudW0gVGltaW5n
RnVuY3Rpb25QcmVzZXQgeyBFYXNlLCBFYXNlSW4sIEVhc2VPdXQsIEVhc2VJbk91dCwgQ3VzdG9t
IH07CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bj4gY3JlYXRlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAg
ICBzdGF0aWMgUmVmPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShkb3VibGUgeDEs
IGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oQ3VzdG9tLCB4MSwgeTEsIHgy
LCB5MikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKEN1c3RvbSwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBS
ZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4g
Y3JlYXRlKFRpbWluZ0Z1bmN0aW9uUHJlc2V0IHByZXNldCkKKyAgICBzdGF0aWMgUmVmPEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKHByZXNldCkgewogICAgICAgICBjYXNlIEVhc2U6Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24o
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKTsKICAgICAgICAgY2FzZSBFYXNlSW46Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oRWFzZUluLCAwLjQyLCAwLjAsIDEuMCwg
MS4wKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKEVhc2VJbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkpOwogICAgICAgICBjYXNlIEVh
c2VPdXQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oRWFzZU91dCwgMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihFYXNlT3V0LCAwLjAs
IDAuMCwgMC41OCwgMS4wKSk7CiAgICAgICAgIGNhc2UgRWFzZUluT3V0OgotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwg
MC40MiwgMC4wLCAwLjU4LCAxLjApKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKEVhc2VJbk91dCwg
MC40MiwgMC4wLCAwLjU4LCAxLjApKTsKKyAgICAgICAgY2FzZSBDdXN0b206CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQotICAgIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRl
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3Qg
ZmluYWwKICAgICB7Ci0gICAgICAgIGlmIChvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24oKSkgewotICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3Rm
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7
Ci0gICAgICAgICAgICBpZiAobV90aW1pbmdGdW5jdGlvblByZXNldCAhPSBDdXN0b20pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgPT0gY3RmLT5tX3RpbWlu
Z0Z1bmN0aW9uUHJlc2V0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gbV94MSA9
PSBjdGYtPm1feDEgJiYgbV95MSA9PSBjdGYtPm1feTEgJiYgbV94MiA9PSBjdGYtPm1feDIgJiYg
bV95MiA9PSBjdGYtPm1feTI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIW90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAgICAgaWYgKG1f
dGltaW5nRnVuY3Rpb25QcmVzZXQgIT0gb3RoZXJDdWJpYy5tX3RpbWluZ0Z1bmN0aW9uUHJlc2V0
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV90aW1pbmdGdW5jdGlv
blByZXNldCAhPSBDdXN0b20pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIG1feDEgPT0gb3RoZXJDdWJpYy5tX3gxICYmIG1feTEgPT0gb3RoZXJDdWJpYy5tX3kxICYm
IG1feDIgPT0gb3RoZXJDdWJpYy5tX3gyICYmIG1feTIgPT0gb3RoZXJDdWJpYy5tX3kyOwogICAg
IH0KIAogICAgIGRvdWJsZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KQEAgLTE0OSwyMSAr
MTM4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV94MiA9IHgyOwogICAgICAgICBtX3kyID0geTI7
CiAgICAgfQotICAgIAorCiAgICAgVGltaW5nRnVuY3Rpb25QcmVzZXQgdGltaW5nRnVuY3Rpb25Q
cmVzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0OyB9CiAgICAgdm9p
ZCBzZXRUaW1pbmdGdW5jdGlvblByZXNldChUaW1pbmdGdW5jdGlvblByZXNldCBwcmVzZXQpIHsg
bV90aW1pbmdGdW5jdGlvblByZXNldCA9IHByZXNldDsgfQotICAgIAotICAgIHN0YXRpYyBjb25z
dCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBkZWZhdWx0VGltaW5nRnVuY3Rpb24oKQorCisg
ICAgc3RhdGljIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24mIGRlZmF1bHRUaW1pbmdG
dW5jdGlvbigpCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbiogZHRmID0gY3JlYXRlKCkubGVha1JlZigpOwotICAgICAgICByZXR1cm4gZHRmOwor
ICAgICAgICBzdGF0aWMgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYgZnVuY3Rpb24g
PSBjcmVhdGUoKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZVJldmVyc2Vk
KCkgY29uc3QKKyAgICBSZWY8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlUmV2ZXJz
ZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZSgxLjAgLSBtX3gyLCAxLjAg
LSBtX3kyLCAxLjAgLSBtX3gxLCAxLjAgLSBtX3kxKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblBy
ZXNldCBwcmVzZXQgPSBFYXNlLCBkb3VibGUgeDEgPSAwLjI1LCBkb3VibGUgeTEgPSAwLjEsIGRv
dWJsZSB4MiA9IDAuMjUsIGRvdWJsZSB5MiA9IDEuMCkKICAgICAgICAgOiBUaW1pbmdGdW5jdGlv
bihDdWJpY0JlemllckZ1bmN0aW9uKQpAQCAtMTc1LDkgKzE2NCw5IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWY8VGltaW5nRnVuY3Rpb24+IGNsb25lKCkgY29uc3QgZmluYWwKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bihtX3RpbWluZ0Z1bmN0aW9uUHJlc2V0LCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24obV90aW1p
bmdGdW5jdGlvblByZXNldCwgbV94MSwgbV95MSwgbV94MiwgbV95MikpOwogICAgIH0KIAogICAg
IGRvdWJsZSBtX3gxOwpAQCAtMTg5LDI1ICsxNzgsMjEgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3Rl
cHNUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CiBwdWJsaWM6
Ci0gICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRl
KGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICBzdGF0aWMgUmVmPFN0ZXBzVGltaW5n
RnVuY3Rpb24+IGNyZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0ZXBB
dFN0YXJ0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0ZXBzVGltaW5nRnVuY3Rp
b24oc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1
bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGVw
c1RpbWluZ0Z1bmN0aW9uKDEsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RlcHNUaW1pbmdGdW5jdGlvbigxLCB0cnVlKSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwg
flN0ZXBzVGltaW5nRnVuY3Rpb24oKSB7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBp
ZiAob3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0
ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVu
Y3Rpb24qPigmb3RoZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gc3RmLT5tX3N0
ZXBzICYmIG1fc3RlcEF0U3RhcnQgPT0gc3RmLT5tX3N0ZXBBdFN0YXJ0OwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1N0ZXBzVGltaW5nRnVu
Y3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgb3RoZXJT
dGVwcyA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPihvdGhlcik7Cisg
ICAgICAgIHJldHVybiBtX3N0ZXBzID09IG90aGVyU3RlcHMubV9zdGVwcyAmJiBtX3N0ZXBBdFN0
YXJ0ID09IG90aGVyU3RlcHMubV9zdGVwQXRTdGFydDsKICAgICB9CiAgICAgCiAgICAgaW50IG51
bWJlck9mU3RlcHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CkBAIC0yMTUsNyArMjAwLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rl
cEF0U3RhcnQ7IH0KICAgICB2b2lkIHNldFN0ZXBBdFN0YXJ0KGJvb2wgc3RlcEF0U3RhcnQpIHsg
bV9zdGVwQXRTdGFydCA9IHN0ZXBBdFN0YXJ0OyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgU3Rl
cHNUaW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCiAgICAgICAgIDog
VGltaW5nRnVuY3Rpb24oU3RlcHNGdW5jdGlvbikKQEAgLTIyNCw5ICsyMDksOSBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZp
bmFsCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rp
b24obV9zdGVwcywgbV9zdGVwQXRTdGFydCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdGVwc1RpbWluZ0Z1bmN0aW9uKG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKICAgICB9CiAg
ICAgCiAgICAgaW50IG1fc3RlcHM7CkBAIC0yNDcsMTMgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBjcmVhdGUoMCwgMCwgMCwgMCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7
Ci0gICAgICAgIGlmIChvdGhlci5pc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9uJiBvdGhlclN0cmluZyA9ICpzdGF0aWNfY2Fz
dDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7Ci0gICAgICAgICAgICByZXR1
cm4gbV9tYXNzID09IG90aGVyU3RyaW5nLm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBvdGhlclN0
cmluZy5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXJTdHJpbmcubV9kYW1waW5nICYm
IG1faW5pdGlhbFZlbG9jaXR5ID09IG90aGVyU3RyaW5nLm1faW5pdGlhbFZlbG9jaXR5OwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvdGhlci5pc1Nwcmlu
Z1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1
dG8mIG90aGVyU3ByaW5nID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24m
PihvdGhlcik7CisgICAgICAgIHJldHVybiBtX21hc3MgPT0gb3RoZXJTcHJpbmcubV9tYXNzICYm
IG1fc3RpZmZuZXNzID09IG90aGVyU3ByaW5nLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBv
dGhlclNwcmluZy5tX2RhbXBpbmcgJiYgbV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXJTcHJpbmcu
bV9pbml0aWFsVmVsb2NpdHk7CiAgICAgfQogCiAgICAgZG91YmxlIG1hc3MoKSBjb25zdCB7IHJl
dHVybiBtX21hc3M7IH0KQEAgLTI3OSw5ICsyNjMsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
CisgICAgUmVmPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IGZpbmFsCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwcmluZ1RpbWluZ0Z1bmN0aW9uKG1fbWFzcywgbV9z
dGlmZm5lc3MsIG1fZGFtcGluZywgbV9pbml0aWFsVmVsb2NpdHkpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3ByaW5nVGltaW5nRnVuY3Rpb24obV9tYXNzLCBtX3N0aWZmbmVzcywg
bV9kYW1waW5nLCBtX2luaXRpYWxWZWxvY2l0eSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBtX21h
c3M7CkBAIC0yOTAsOSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9pbml0aWFsVmVs
b2NpdHk7CiB9OwogCi1jbGFzcyBUZXh0U3RyZWFtOwogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVGltaW5nRnVuY3Rpb24mKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGltaW5nRnVuY3Rpb25faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggNGY5YjVmNTVjYzg0M2Y0YWI4
N2RlMzU1NDM5Zjg2ZDk3ODZkMTZlYS4uZDE4ZGJkZDk0NDI0NjVkMzNlN2U5ZDBlN2RjZjg0ZTZl
MDNjMDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFubmVscy5zaXplKCk7IH0KIAogICAgIEF1ZGlvQ2hhbm5lbCogY2hh
bm5lbCh1bnNpZ25lZCBjaGFubmVsKSB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgp
OyB9Ci0gICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+bV9jaGFubmVsc1tjaGFu
bmVsXS5nZXQoKTsgfQorICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBj
aGFubmVsKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CiAgICAg
QXVkaW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpOwogICAgIGNvbnN0IEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFlYzUzZDhh
MDEyN2ZjMTliYTU4YmE2ZDRkZjJjOWQxOWE5NzU2YmYuLjYxOWEyYzA0MDJlMjE4NWU5MzJkZGEx
ZGUxMTgyYTRlMWU1MGUzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKQEAgLTE0MCwxMiArMTQwLDExIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6
OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVE
YXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3Bl
cnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CisgICAgYXV0byBkYXRhID0g
YWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9y
b290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAs
IG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhLmdldCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZmM1OGZiNjVk
ZmVlZGZjMjU1YjVlOWM3YTJlYzc4YWU2YWU5NTIwMy4uODJiNmI2MTU2ODc3ZTA0M2NjNjFkODM2
YmFhOTJhNGIyYzQ3MTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBLZXllZEVuY29kZXJDRl9oCi0jZGVmaW5lIEtleWVkRW5j
b2RlckNGX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNywyNSArMzYsMjUgQEAgcHVibGljOgogICAgIEtl
eWVkRW5jb2RlckNGKCk7CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKLSAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKLQogcHJp
dmF0ZToKLSAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5n
JiBrZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmlu
ZyYga2V5LCB1aW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBT
dHJpbmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVJbnQ2NChjb25z
dCBTdHJpbmcmIGtleSwgaW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmNvZGVGbG9hdChj
b25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworCisgICAg
dm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3Qp
IGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3Qp
IGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3Qp
IGZpbmFsOworICAgIHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBm
aW5hbDsKKyAgICB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBv
dmVycmlkZTsKLSAgICB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5P
YmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgZW5kT2JqZWN0KCkgZmlu
YWw7CiAKLSAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwot
ICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5
RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5B
cnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIGZpbmFsOwor
ICAgIHZvaWQgZW5kQXJyYXkoKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiBtX3Jvb3REaWN0aW9uYXJ5OwogCkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBLZXllZEVuY29kZXJD
Rl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNQcm92aWRlckVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaAppbmRleCBiMzhkMmNhZmU3YjY5MDNk
ZDQ0ZmE2YzM2Y2UzNDAxZThlNzNiNTZiLi43NzgyMDE3NDEyN2FlNWRhMzVhNjFiYTRhODZhZDBm
YmUzNGYzM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKQEAgLTIzLDEzICsy
MywxMSBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1By
b3ZpZGVyRWZsX2gKLSNkZWZpbmUgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbF9o
CisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVk
ZSA8c3BlYWtfbGliLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDUg
Kzc0LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcAppbmRleCBkNDkyMTM2NDMwOTljMmJhNzQ1ZWJmZDY5N2ViMTUxYTNm
ZTUzZmYxLi44MWNiZWQ1M2QxMTVlNDRmMTM0YzEyMjZkNjM0NjJjNTk4ZTQ0OTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBt
X2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFy
aWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQ
dHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1
aWxkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaAppbmRleCAyZDdiMWMzNGY3MTliMjQ4Njc3MjYyMjVlMTNiOTc3NDJkMmNiM2JjLi5mOTFi
NGRkYjMzMTVmNjZlYzRlMGMxOWZkMjcwNjczYjZjNDc1ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgS2V5ZWRF
bmNvZGVyR2xpYl9oCi0jZGVmaW5lIEtleWVkRW5jb2RlckdsaWJfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTM5LDI1ICsz
OCwyNSBAQCBwdWJsaWM6CiAgICAgS2V5ZWRFbmNvZGVyR2xpYigpOwogICAgIH5LZXllZEVuY29k
ZXJHbGliKCk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKLSAgICB2b2lkIGVuY29kZUJ5dGVzKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2
b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZv
aWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQpIG92ZXJy
aWRlOwotICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIGZpbmFsOworCisgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBlbmNvZGVCb29s
KGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVVJbnQzMihj
b25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50MzIo
Y29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlSW50NjQo
Y29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QpIGZpbmFsOworICAgIHZvaWQgZW5jb2RlRmxvYXQo
Y29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZURvdWJsZShj
b25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIGVuY29kZVN0cmluZyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2lu
T2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2b2lkIGVuZE9iamVjdCgp
IG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpIGZpbmFs
OworICAgIHZvaWQgZW5kT2JqZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luQXJyYXkoY29u
c3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZW5kQXJyYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBr
ZXkpIGZpbmFsOworICAgIHZvaWQgYmVnaW5BcnJheUVsZW1lbnQoKSBmaW5hbDsKKyAgICB2b2lk
IGVuZEFycmF5RWxlbWVudCgpIGZpbmFsOworICAgIHZvaWQgZW5kQXJyYXkoKSBmaW5hbDsKIAog
ICAgIEdWYXJpYW50QnVpbGRlciBtX3ZhcmlhbnRCdWlsZGVyOwogICAgIFZlY3RvcjxHVmFyaWFu
dEJ1aWxkZXIqLCAxNj4gbV92YXJpYW50QnVpbGRlclN0YWNrOwpAQCAtNjYsNSArNjUsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gS2V5ZWRF
bmNvZGVyR2xpYl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCmluZGV4IGQwNTZlYmZlMjJhYWU4MTU5NGU4OGJhNGIyZTc4MjE1MzlkYjc5N2EuLmFmNDhi
MGI5MjQyYzU5NzAwZWVlYjM2MmNhYjZlMDNlNWFmNmQyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yNywxNSArMjcsMTMgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBGb250Q2FjaGVfaAotI2RlZmluZSBGb250Q2FjaGVfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KQEAgLTI5MCw1ICsyODgsMyBAQCBpbmxpbmUgdm9pZCBGb250
Q2FjaGU6OnBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCkKICNlbmRpZgogCiB9Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDkzMDNhOTA1YjA5NzEzYTJkNWNjYjIzOWIyZDk3NzVkZTgxMWFhNTYu
LmFkMzgyZjQxNWEzYjUxMGVmZTQxM2JlZjdhOWRhY2YxZGY5YzM4ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwLCAy
MDEzLTIwMTYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1t
ZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2gg
Q2VudGVyIFVTQSwgSW5jLgpAQCAtMjIsMTAgKzIyLDE1IEBACiAgKgogICovCiAKLSNpZm5kZWYg
Rm9udFBsYXRmb3JtRGF0YV9oCi0jZGVmaW5lIEZvbnRQbGF0Zm9ybURhdGFfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorCiAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSAiQ09NUHRyLmgiCkBAIC00NCwy
NSArNDksMTggQEAKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShDT0NPQSkKICNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0ZvbnQ7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19D
VEZvbnQqIENURm9udFJlZjsKLQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSW1wbC5oPgotCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2Jq
ZWN0Lmg+CiB0eXBlZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKQEAgLTcwLDcgKzY4LDYgQEAg
aW50ZXJmYWNlIElEV3JpdGVGb250OwogaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKICNlbmRp
ZgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAt
ODIsMTAgKzc5LDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CiAgICAgRm9u
dFBsYXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAgIEZvbnRQ
bGF0Zm9ybURhdGEoKTsKLSNpZiAhVVNFKEZSRUVUWVBFKQotICAgIEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKLSNlbmRpZgotICAgIEZvbnRQbGF0
Zm9ybURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1bHQ7CisKICAgICBGb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KTsKICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsLCBGb250
V2lkdGhWYXJpYW50ID0gUmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IEF1dG9UZXh0
UmVuZGVyaW5nKTsKIApAQCAtMTAzLDI3ICs5NywzNiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBmbG9hdCBzaXpl
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgYm9vbCB1c2VHREkp
OworI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAg
ICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBDR0ZvbnRSZWYsIGZsb2F0IHNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBib29sIHVzZUdE
SSk7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKERJUkVDVDJEKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiwgSURX
cml0ZUZvbnQqLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGlj
T2JsaXF1ZSwgYm9vbCB1c2VHREkpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIEZvbnRQbGF0Zm9y
bURhdGEoR0RJT2JqZWN0PEhGT05UPiwgY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXplLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQ0FJUk8pCisgICAgRm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+LCBjYWlyb19m
b250X2ZhY2VfdCosIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogI2VuZGlm
CiAKICNpZiBVU0UoRlJFRVRZUEUpCiAgICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBj
b25zdCBGb250RGVzY3JpcHRpb24mKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRf
ZmFjZV90KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY09ibGlxdWUpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRl
ZmF1bHQ7CisgICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmKTsKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oRm9udFBsYXRmb3JtRGF0
YSYmKSA9IGRlZmF1bHQ7CiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oV0lOKQogICAgIEhGT05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250ID8g
bV9mb250LT5nZXQoKSA6IDA7IH0KICAgICBib29sIHVzZUdESSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlR0RJOyB9Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgQ1RGb250UmVmIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQuZ2V0KCk7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBDVEZvbnRSZWYgcmVnaXN0ZXJlZEZvbnQoKSBjb25zdDsg
Ly8gUmV0dXJucyBudWxscHRyIGlmZiB0aGUgZm9udCBpcyBub3QgcmVnaXN0ZXJlZCwgc3VjaCBh
cyB3ZWIgZm9udHMgKG90aGVyd2lzZSByZXR1cm5zIGZvbnQoKSkuCiAKQEAgLTE4OSwxMiArMTky
LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0jaWYgVVNFKEZSRUVUWVBFKQotICAgIEZv
bnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7Ci0jZWxz
ZQotICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRh
JikgPSBkZWZhdWx0OwotI2VuZGlmCi0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gcGxhdGZvcm1J
c0VxdWFsKG90aGVyKQpAQCAtMjMyLDEyICsyMjksMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgcGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsK
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENHRmxvYXQgY3RGb250U2l6ZSgpIGNvbnN0Owog
I2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBwbGF0Zm9ybURhdGFJbml0KEhG
T05ULCBmbG9hdCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7CiAjZW5kaWYKKwogI2lmIFVT
RShGUkVFVFlQRSkKICAgICB2b2lkIGJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2ZhY2VfdCop
OwogI2VuZGlmCkBAIC0yNTMsMTMgKzI1MywxNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgJiYg
KFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA8IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDAwMDApKQogICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IG1f
Y2dGb250OwogI2VuZGlmCisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEV3JpdGVG
b250PiBtX2R3Rm9udDsKICAgICBDT01QdHI8SURXcml0ZUZvbnRGYWNlPiBtX2R3Rm9udEZhY2U7
CiAjZW5kaWYKKwogI2lmIFVTRShDQUlSTykKICAgICBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRf
dD4gbV9zY2FsZWRGb250OwogI2VuZGlmCisKICNpZiBVU0UoRlJFRVRZUEUpCiAgICAgUmVmUHRy
PEZjUGF0dGVybj4gbV9wYXR0ZXJuOwogICAgIG11dGFibGUgRmNVbmlxdWVQdHI8RmNGb250U2V0
PiBtX2ZhbGxiYWNrczsKQEAgLTI4NSwxNSArMjg4LDE4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIGJvb2wgbV9pc0Vtb2ppIHsgZmFsc2UgfTsKICNlbmRpZgorCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIGJvb2wgbV91c2VHREkgeyBmYWxzZSB9OwogI2VuZGlmCisKICNpZiBV
U0UoRlJFRVRZUEUpCiAgICAgYm9vbCBtX2ZpeGVkV2lkdGggeyBmYWxzZSB9OwogI2VuZGlmCiB9
OwogCiAjaWYgVVNFKEFQUEtJVCkKKwogLy8gTlNGb250cyBhbmQgQ1RGb250UmVmcyBhcmUgdG9s
bC1mcmVlLWJyaWRnZWQuCiBpbmxpbmUgQ1RGb250UmVmIHRvQ1RGb250KE5TRm9udCAqZm9udCkK
IHsKQEAgLTMwNCw5ICszMTAsMTEgQEAgaW5saW5lIE5TRm9udCAqdG9OU0ZvbnQoQ1RGb250UmVm
IGZvbnQpCiB7CiAgICAgcmV0dXJuIChOU0ZvbnQgKilmb250OwogfQorCiAjZW5kaWYKIAogI2lm
IFVTRShDRykKKwogY2xhc3MgU2NvcGVkVGV4dE1hdHJpeCB7CiBwdWJsaWM6CiAgICAgU2NvcGVk
VGV4dE1hdHJpeChDR0FmZmluZVRyYW5zZm9ybSBuZXdNYXRyaXgsIENHQ29udGV4dFJlZiBjb250
ZXh0KQpAQCAtMzMwLDggKzMzOCw3IEBAIHByaXZhdGU6CiAgICAgQ0dDb250ZXh0UmVmIG1fY29u
dGV4dDsKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3RleHRNYXRyaXg7CiB9OworCiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
aW5kZXggZDkxOWZmZGJlNTRmYzI1OWE2MWYxNTFhZGU3NzA1YjczZDgzNjAwYy4uZmUzN2QyNTM0
YmZjMTA3MTJiNjQwMTIxZTJmNWJkMjMyNGJhZWJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEdyYXBoaWNzTGF5ZXJfaAotI2RlZmluZSBH
cmFwaGljc0xheWVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKQEAgLTgwLDExICs3OSwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBB
bmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogbV9r
ZXlUaW1lKG90aGVyLm1fa2V5VGltZSkKLSAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVy
Lm1fdGltaW5nRnVuY3Rpb24gPyBvdGhlci5tX3RpbWluZ0Z1bmN0aW9uLT5jbG9uZSgpIDogbnVs
bHB0cikKKyAgICAgICAgLCBtX3RpbWluZ0Z1bmN0aW9uKG90aGVyLm1fdGltaW5nRnVuY3Rpb24g
PyBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHsgb3RoZXIubV90aW1pbmdGdW5jdGlvbi0+Y2xvbmUo
KSB9IDogbnVsbHB0cikKICAgICB7CiAgICAgfQogCisgICAgQW5pbWF0aW9uVmFsdWUoQW5pbWF0
aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiBwcml2YXRlOgorICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IEFuaW1hdGlvblZhbHVlJikgPSBkZWxldGU7CisKICAgICBkb3VibGUgbV9rZXlUaW1lOwog
ICAgIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKIH07CkBAIC0xMDQs
MTIgKzEwNyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSYgb3RoZXIpCi0gICAgICAgIDogQW5pbWF0aW9u
VmFsdWUob3RoZXIpCi0gICAgICAgICwgbV92YWx1ZShvdGhlci5tX3ZhbHVlKQotICAgIHsKLSAg
ICB9Ci0KICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKQEAgLTEzNCwxMCArMTMxLDEzIEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCiAgICAgICAgIDog
QW5pbWF0aW9uVmFsdWUob3RoZXIpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
bV92YWx1ZS5vcGVyYXRpb25zKCkuYXBwZW5kKG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpW2ld
LT5jbG9uZSgpKTsKKyAgICAgICAgbV92YWx1ZS5vcGVyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKS5zaXplKCkpOworICAgICAgICBmb3Ig
KGF1dG8mIG9wZXJhdGlvbiA6IG90aGVyLm1fdmFsdWUub3BlcmF0aW9ucygpKQorICAgICAgICAg
ICAgbV92YWx1ZS5vcGVyYXRpb25zKCkudW5jaGVja2VkQXBwZW5kKG9wZXJhdGlvbi0+Y2xvbmUo
KSk7CiAgICAgfQogCisgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUmJikgPSBkZWZhdWx0OworCiAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByaXZhdGU6CkBAIC0xNjIsMTAg
KzE2MiwxMyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyQW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVy
QW5pbWF0aW9uVmFsdWUmIG90aGVyKQogICAgICAgICA6IEFuaW1hdGlvblZhbHVlKG90aGVyKQog
ICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3ZhbHVlLm9wZXJh
dGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLmFw
cGVuZChvdGhlci5tX3ZhbHVlLm9wZXJhdGlvbnMoKVtpXS0+Y2xvbmUoKSk7CisgICAgICAgIG1f
dmFsdWUub3BlcmF0aW9ucygpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3RoZXIubV92YWx1ZS5v
cGVyYXRpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvdGhl
ci5tX3ZhbHVlLm9wZXJhdGlvbnMoKSkKKyAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygp
LnVuY2hlY2tlZEFwcGVuZChvcGVyYXRpb24tPmNsb25lKCkpOwogICAgIH0KIAorICAgIEZpbHRl
ckFuaW1hdGlvblZhbHVlKEZpbHRlckFuaW1hdGlvblZhbHVlJiYpID0gZGVmYXVsdDsKKwogICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQogCiBwcml2YXRlOgpAQCAtMTg1LDEzICsxODgsMTIgQEAgcHVibGljOgogICAgIEtleWZyYW1l
VmFsdWVMaXN0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICAgICAgOiBtX3By
b3BlcnR5KG90aGVyLnByb3BlcnR5KCkpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG90aGVyLm1fdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV92YWx1ZXMu
YXBwZW5kKG90aGVyLm1fdmFsdWVzW2ldLT5jbG9uZSgpKTsKKyAgICAgICAgbV92YWx1ZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShvdGhlci5tX3ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogb3RoZXIubV92YWx1ZXMpCisgICAgICAgICAgICBtX3ZhbHVlcy51bmNo
ZWNrZWRBcHBlbmQodmFsdWUtPmNsb25lKCkpOwogICAgIH0KIAotICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCi0gICAgewotICAgIH0KKyAgICBLZXlmcmFtZVZhbHVlTGlzdChLZXlmcmFtZVZhbHVl
TGlzdCYmKSA9IGRlZmF1bHQ7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCYgb3BlcmF0b3I9KGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiBvdGhlcikKICAgICB7CkBAIC0yMDAsNiArMjAyLDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgS2V5ZnJhbWVWYWx1
ZUxpc3QmIG9wZXJhdG9yPShLZXlmcmFtZVZhbHVlTGlzdCYmKSA9IGRlZmF1bHQ7CisKICAgICB2
b2lkIHN3YXAoS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgc3RkOjpz
d2FwKG1fcHJvcGVydHksIG90aGVyLm1fcHJvcGVydHkpOwpAQCAtMjEwLDEwICsyMTQsMTAgQEAg
cHVibGljOgogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5zaXpl
KCk7IH0KICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuICptX3ZhbHVlcy5hdChpKTsgfQotICAgIAorCiAgICAgLy8gSW5zZXJ0LCBzb3J0ZWQgYnkg
a2V5VGltZS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8
Y29uc3QgQW5pbWF0aW9uVmFsdWU+KTsKLSAgICAKKwogcHJvdGVjdGVkOgogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Y29uc3QgQW5pbWF0aW9uVmFsdWU+PiBtX3ZhbHVlczsKICAgICBBbmlt
YXRlZFByb3BlcnR5SUQgbV9wcm9wZXJ0eTsKQEAgLTIyNSw3ICsyMjksNiBAQCBwcm90ZWN0ZWQ6
CiBjbGFzcyBHcmFwaGljc0xheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGlj
c0xheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0KICAgICBlbnVtIGNs
YXNzIFR5cGUgewogICAgICAgICBOb3JtYWwsCiAgICAgICAgIFBhZ2VUaWxlZEJhY2tpbmcsCkBA
IC0yNDEsNyArMjQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUo
VHlwZSkgeyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFBsYXRmb3JtTGF5ZXJJRDsKKyAgICB1
c2luZyBQbGF0Zm9ybUxheWVySUQgPSB1aW50NjRfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXJJRCBwcmltYXJ5TGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEdyYXBoaWNz
TGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC02ODMs
NSArNjg2LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogLy8gT3V0c2lkZSB0aGUg
V2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBmcm9tIHRoZSBkZWJ1Z2dl
ci4KIHZvaWQgc2hvd0dyYXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyKTsKICNlbmRpZgotCi0jZW5kaWYgLy8gR3JhcGhpY3NMYXllcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5k
ZXggODI0NWQ0ZTZkYTczNTM4ODJlYTljZTI3YTUzNzI1ZTFjZmU4MTZkZS4uODU0NmM3MTJmNjRh
MTcwNmQ2MjBiMzUyMzQ2NGJlZjU1YmQ4Y2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMjMsMjEgKzIzLDE4IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1T
ZXNzaW9uX2gKLSNkZWZpbmUgQ0RNU2Vzc2lvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENETVNlc3Npb25DbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkNETVNl
c3Npb25DbGllbnQoKSB7IH07CisgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMKSA9IDA7CiAKICAgICBlbnVtIHsKQEAgLTY0LDcgKzYxLDYgQEAgZW51bSBDRE1TZXNz
aW9uVHlwZSB7CiAKIGNsYXNzIENETVNlc3Npb24gewogcHVibGljOgotICAgIENETVNlc3Npb24o
KSB7IH0KICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIENETVNl
c3Npb25UeXBlIHR5cGUoKSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZVVua25vd247IH0KQEAgLTc5
LDUgKzc1LDMgQEAgcHVibGljOgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggYjE3NjMyNDdjMTAy
ZjY5MGE4NDdhMjY4Yjk5MDYyOTdlYmI3NGU0My4uOTE0YTBhMjc3ZjJhNDY3ODM2NWUzMjMyN2Qw
MjY5YTIwYmY4Y2Q1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTQ4NiwxNCArNDg2LDE1IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6
UG9seWdvbiYKICAgICByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9tUmln
aHQudmFsdWUoKSk7CiB9CiAKLVBhdGggUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFw
cGVkUmVjdHNGb3JPdXRsaW5lKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgY29uc3Qg
Qm9yZGVyRGF0YSYgYm9yZGVyRGF0YSwgZmxvYXQgb3V0bGluZU9mZnNldCwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24sCi0gICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKQorUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0
c0Zvck91dGxpbmUoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBCb3JkZXJE
YXRhJiBib3JkZXJEYXRhLAorICAgIGZsb2F0IG91dGxpbmVPZmZzZXQsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpCiB7CiAgICAgQVNTRVJUKGJvcmRlckRhdGEuaGFzQm9yZGVyUmFkaXVzKCkpOwotICAgIEZs
b2F0U2l6ZSB0b3BMZWZ0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRhdGEudG9wTGVmdCgpLndp
ZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS50b3BMZWZ0KCkuaGVpZ2h0KCkudmFsdWUoKSk7Ci0g
ICAgRmxvYXRTaXplIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKGJvcmRlckRhdGEudG9wUmln
aHQoKS53aWR0aCgpLnZhbHVlKCksIGJvcmRlckRhdGEudG9wUmlnaHQoKS5oZWlnaHQoKS52YWx1
ZSgpKTsKLSAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUoYm9yZGVy
RGF0YS5ib3R0b21SaWdodCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVyRGF0YS5ib3R0b21SaWdo
dCgpLmhlaWdodCgpLnZhbHVlKCkpOwotICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0UmFkaXVzID0g
RmxvYXRTaXplKGJvcmRlckRhdGEuYm90dG9tTGVmdCgpLndpZHRoKCkudmFsdWUoKSwgYm9yZGVy
RGF0YS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkudmFsdWUoKSk7CisKKyAgICBGbG9hdFNpemUgdG9w
TGVmdFJhZGl1cyB7IGJvcmRlckRhdGEudG9wTGVmdCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRh
dGEudG9wTGVmdCgpLmhlaWdodC52YWx1ZSgpIH07CisgICAgRmxvYXRTaXplIHRvcFJpZ2h0UmFk
aXVzIHsgYm9yZGVyRGF0YS50b3BSaWdodCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEudG9w
UmlnaHQoKS5oZWlnaHQudmFsdWUoKSB9OworICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1
cyB7IGJvcmRlckRhdGEuYm90dG9tUmlnaHQoKS53aWR0aC52YWx1ZSgpLCBib3JkZXJEYXRhLmJv
dHRvbVJpZ2h0KCkuaGVpZ2h0LnZhbHVlKCkgfTsKKyAgICBGbG9hdFNpemUgYm90dG9tTGVmdFJh
ZGl1cyB7IGJvcmRlckRhdGEuYm90dG9tTGVmdCgpLndpZHRoLnZhbHVlKCksIGJvcmRlckRhdGEu
Ym90dG9tTGVmdCgpLmhlaWdodC52YWx1ZSgpIH07CiAKICAgICBhdXRvIHJvdW5kZWRSZWN0ID0g
W3RvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgYm90dG9t
TGVmdFJhZGl1cywgb3V0bGluZU9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3JdIChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBkNzU0NmUyNjg3MTNmOGQ0NWNkNWNmOGY5NDZhZWFk
NWY0NDlkZTIwLi44NjE4NWZjMmJjMTgyZTkyZWU5MGJjMjZlMWQ1ODFmZGJkOTgxMTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApA
QCAtNDQsMTYgKzQ0LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YmIHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopCiAgICAgOiBt
X3BhcmVudChwYXJlbnQpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Nlc3Npb25J
ZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiB7CiB9CiAKLVJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCitSZWZQ
dHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRp
b25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQog
ewotICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFVO
VVNFRF9QQVJBTShpbml0RGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsK
QEAgLTcwLDM1ICs2OCwzMCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3JlcXVlc3QgPSBtX3BhcmVudC0+dGFrZVJlcXVl
c3RGb3JLZXlVUkkoa2V5VVJJKTsKKyAgICBtX3JlcXVlc3QgPSBtX3BhcmVudC50YWtlUmVxdWVz
dEZvcktleVVSSShrZXlVUkkpOwogICAgIGlmICghbV9yZXF1ZXN0KSB7CiAgICAgICAgIGVycm9y
Q29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjZXJ0aWZp
Y2F0ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSkpOworICAgIGF1dG8gY2VydGlmaWNhdGVEYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRp
ZmljYXRlLT5ieXRlTGVuZ3RoKCkpKTsKICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZXJ0aWZpY2F0
ZURhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZS0+
YmFzZUFkZHJlc3MoKSksIGNlcnRpZmljYXRlLT5ieXRlTGVuZ3RoKCkpOwogCi0gICAgQ1N0cmlu
ZyBhc3NldFN0ciA9IGtleUlELnV0ZjgoKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJl
Zj4gYXNzZXRJRCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhc3NldFN0ci5sZW5ndGgoKSkpOworICAgIGF1dG8gYXNzZXRTdHIgPSBrZXlJRC51dGY4
KCk7CisgICAgYXV0byBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7CiAgICAgQ0ZEYXRhQXBwZW5kQnl0
ZXMoYXNzZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGFzc2V0U3Ry
LmRhdGEoKSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKIAogICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9
IG51bGxwdHI7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4ga2V5UmVxdWVzdCA9IGFkb3B0Q0Yo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0NvbnRlbnRLZXlS
ZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0YS5nZXQoKSwg
YXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKKyAgICBhdXRvIGtleVJlcXVlc3Qg
PSBhZG9wdENGKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RDcmVhdGVTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHAobV9yZXF1ZXN0LmdldCgpLCBjZXJ0aWZpY2F0ZURh
dGEuZ2V0KCksIGFzc2V0SUQuZ2V0KCksIG51bGxwdHIsICZjZkVycm9yKSk7CiAKICAgICBpZiAo
IWtleVJlcXVlc3QpIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gdXNlcklu
Zm87CiAgICAgICAgIGlmIChjZkVycm9yKSB7Ci0gICAgICAgICAgICB1c2VySW5mbyA9IGFkb3B0
Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKSk7Ci0KLSAgICAgICAgICAgIGlmICh1c2Vy
SW5mbykgewotICAgICAgICAgICAgICAgIGlmIChDRkVycm9yUmVmIHVuZGVybHlpbmdFcnJvciA9
IChDRkVycm9yUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJv
clVuZGVybHlpbmdFcnJvcktleSkpCisgICAgICAgICAgICBpZiAoYXV0byB1c2VySW5mbyA9IGFk
b3B0Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byB1bmRlcmx5aW5nRXJyb3IgPSAoQ0ZFcnJvclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JVbmRlcmx5aW5nRXJyb3JLZXkpKQogICAgICAgICAg
ICAgICAgICAgICBzeXN0ZW1Db2RlID0gQ0ZFcnJvckdldENvZGUodW5kZXJseWluZ0Vycm9yKTsK
ICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGNmRXJyb3IpOwogICAgICAg
ICB9Ci0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMDYsOCArOTksOCBA
QCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaQogICAgIHN5c3RlbUNvZGUgPSAwOwogICAgIGRlc3Rp
bmF0aW9uVVJMID0gU3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtleVJlcXVl
c3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoa2V5UmVxdWVz
dC5nZXQoKSksIENGRGF0YUdldExlbmd0aChrZXlSZXF1ZXN0LmdldCgpKSk7Ci0gICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlSZXF1ZXN0QnVmZmVyLCAwLCBrZXlSZXF1ZXN0QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CiAjZW5kaWYKIH0KIApAQCAtMTE3LDcgKzExMCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGOjpyZWxlYXNlS2V5cygpCiAKIGJvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
Ojp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdl
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4ga2V5RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXktPmJ5dGVMZW5ndGgoKSkpOworICAg
IGF1dG8ga2V5RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXktPmJ5dGVMZW5ndGgoKSkpOwogICAgIENGRGF0YUFwcGVuZEJ5dGVzKGtleURh
dGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihrZXktPmJhc2VBZGRyZXNz
KCkpLCBrZXktPmJ5dGVMZW5ndGgoKSk7CiAKICAgICBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZShtX3JlcXVlc3QuZ2V0KCksIG51bGxwdHIs
IGtleURhdGEuZ2V0KCksIG51bGxwdHIpOwpAQCAtMTI1LDcgKzExOCw2IEBAIGJvb2wgQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhB
cnJheT4mIG5leHRNCiAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAg
c3lzdGVtQ29kZSA9IDA7CiAgICAgbmV4dE1lc3NhZ2UgPSBudWxscHRyOwotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuaAppbmRleCA2NTI0ZDFkZjBiMzEwYjZmZmU5NDY1YzU0Mzg2YWRkYmY4YTRkOWZlLi4x
MmE2YTc5MzFlZWVhZjQwMTVmZmI1NjYwZTNmNzAxNzA1NWNhZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCkBAIC0yMywxMSArMjMsMTEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENE
TVNlc3Npb25BVkZvdW5kYXRpb25DRl9oCi0jZGVmaW5lIENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogCkBAIC0zNywyNiArMzcsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAotY2xhc3MgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGIDogcHVibGljIENETVNlc3Npb24geworY2xhc3MgQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGIGZpbmFsIDogcHVibGljIENETVNlc3Npb24gewogcHVibGljOgot
ICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRiogcGFyZW50LCBDRE1TZXNzaW9uQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbkNGKCkgeyB9Ci0KLSAgICB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xp
ZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9
Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwg
dW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVsZWFzZUtleXMoKSBvdmVycmlkZTsKLSAgICBib29sIHVwZGF0ZShVaW50
OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG1fcGFyZW50OwotICAgIENE
TVNlc3Npb25DbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKKyAgICBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Ym
IHBhcmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopOworCitwcml2YXRlOgorICAgIHZvaWQgc2V0Q2xp
ZW50KENETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmluYWwgeyB9CisgICAgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBmaW5hbDsKKyAgICB2b2lk
IHJlbGVhc2VLZXlzKCkgZmluYWw7CisgICAgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJlZlB0
cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKSBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGJiBtX3BhcmVudDsKKyAgICBjb25zdCBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAg
UmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IG1fcmVxdWVzdDsK
IH07CiAKIH0KIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Zf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKaW5kZXggZDFhMDYzZTBmYjU4N2NmYzBkNWEwMWI0MTU2N2EwYjdi
NmRjMDJlNS4uNDlkMzUwOTIyMTVjNjgxODYyYjMxMWI5NjhhMGYwZTk1NzgyMzY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCkBAIC0xMTIyLDYgKzExMjIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QKIH0K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisKIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0UmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6dGFrZVJlcXVlc3RG
b3JLZXlVUkkoY29uc3QgU3RyaW5nJiBrZXlVUkkpCiB7CiAgICAgaWYgKCFtX2F2ZldyYXBwZXIp
CkBAIC0xMTM1LDEzICsxMTM2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zCiAgICAgaWYg
KCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rj4odGhpcywgY2xpZW50KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOwogfQorCiAjZWxpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKLXN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgLCBDRE1TZXNzaW9uQ2xpZW50KikKKworc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBDRE1TZXNzaW9uQ2xpZW50KikKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KKwogI2VuZGlmCiAKIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmFzc2V0RXJyb3JDb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGRmMDNjY2I2MTI5MDE5ZTBjODg0MjZk
NzgwYWFlZGU1MjZlMjBiMjkuLmJiYzA1ZDUwN2Y0MjU2Njc5ZmI3ZDdiY2Y3MjBkODUyNmMxYWMz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaApAQCAtMjMsMTIgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCi0j
ZGVmaW5lIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKQEAgLTY2LDUgKzY2LDMgQEAg
cHJvdGVjdGVkOgogfQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGJhNDk2MzU5N2RhZGYwZTJmY2M1MjhmYzgxY2Mz
MjE1ZThjZDJiZWUuLmZhNDQ0NGIxZWNmYWEyYzBlNjI5MDc4MDg1ZmZhNmZjMmIyOTZhYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtOTI0LDggKzkyNCw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjph
bmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
CiAKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICAvLyBJZiB0aGVyZSBp
cyBhIHRyaWdnZXIgdGhhdCBkZXBlbmRzIG9uIHRoZSBzY3JvbGwgcG9zaXRpb24sIHdlIGNhbm5v
dCBhY2NlbGVyYXRlIHRoZSBhbmltYXRpb24uCi0gICAgaWYgKGFuaW0tPnRyaWdnZXIoKS0+aXNT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKLSAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
ciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmlt
LT50cmlnZ2VyKCkuZ2V0KCkpOworICAgIGlmIChpczxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPihh
bmltLT50cmlnZ2VyKCkpKSB7CisgICAgICAgIGF1dG8mIHNjcm9sbFRyaWdnZXIgPSBkb3duY2Fz
dDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqYW5pbS0+dHJpZ2dlcigpKTsKICAgICAgICAgaWYg
KHNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0yODA1LDcgKzI4MDUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
QW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdQogICAg
IGludCBhbmltYXRpb25JbmRleCA9IDA7CiAgICAgCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IGNhQW5pbWF0aW9uOwotICAgIAorCiAgICAgaWYgKGlzS2V5ZnJhbWUpIHsKICAgICAg
ICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHByb3Bl
cnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0aXZlKTsKICAgICAgICAg
dmFsdWVzT0sgPSBzZXRBbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGNh
QW5pbWF0aW9uLmdldCgpKTsKQEAgLTI4MTYsNyArMjgxNiw3IEBAIGJvb2wgR3JhcGhpY3NMYXll
ckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1CiAgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFu
aW1hdGlvbiwgcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRp
dmUpOwogICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3Qs
IGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmICgh
dmFsdWVzT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzAyNCwxMyArMzAyNCwxMiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlv
biogcHJvcGVydHlBbmltLCBjb25zdCBBbgogICAgIHByb3BlcnR5QW5pbS0+c2V0RmlsbE1vZGUo
ZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmlt
VmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0aW9uJiBHcmFw
aGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0
aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewogICAgIGlmIChh
bmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1p
bmdGdW5jdGlvbigpOworICAgICAgICByZXR1cm4gKmFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigp
OwogICAgIGlmIChhbmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgcmV0dXJuIGFu
aW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLSAgICAKKyAgICAgICAgcmV0dXJuICphbmltLnRp
bWluZ0Z1bmN0aW9uKCk7CiAgICAgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRl
ZmF1bHRUaW1pbmdGdW5jdGlvbigpOwogfQogCkBAIC0zMDU0LDkgKzMwNTMsNyBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5
ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAog
ICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1h
dGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlv
bi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7Ci0gICAg
aWYgKHRpbWluZ0Z1bmN0aW9uKQotICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9u
KHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24oJnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAq
YW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzA4Niwx
MyArMzA4MywxMyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5j
dGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBj
dXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CisgICAgICAg
ICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1h
dGlvbikpOwogICAgIH0KLSAgICAKKwogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5
VGltZXMpOwogICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKHZhbHVlcyk7CiAgICAga2V5ZnJh
bWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5nRnVuY3Rpb25zLCAhZm9yd2FyZHMpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMDUsOCArMzEwMiw4IEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gIWZvcndhcmRzOwog
ICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsKICAgICAKLSAgICBjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSYgc3RhcnRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpOwotICAgIGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlJiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBhdXRvJiBz
dGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2
YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgYXV0byYgZW5kVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7
CiAKICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm07CkBAIC0zMTQ5LDEwICszMTQ2LDkgQEAg
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBm
b3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhl
IHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNp
bmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5n
IGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9u
KTsKLSAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9y
d2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24oJnRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRz
KTsKIAotICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVu
Y3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zv
cm1PcFR5cGUpOworICAgIGF1dG8gdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1l
Rm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CiAgICAgaWYgKHZhbHVlRnVu
Y3Rpb24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQogICAgICAgICBi
YXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CiAKQEAgLTMyMDQsNyAr
MzIwMCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlv
bnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJW
YWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CisgICAgICAgICAg
ICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlv
bikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVz
KTsKQEAgLTMyNjAsNyArMzI1Niw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJB
bmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAgICAv
LyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ug
c3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5j
dGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5
ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBiYXNpY0FuaW0tPnNldFRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0
KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1
bmN0aW9uKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwg
KmFuaW1hdGlvbiksICFmb3J3YXJkcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMyODgs
NyArMzI4NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25LZXlm
cmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5j
dGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBj
dXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CisgICAgICAg
ICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKCZ0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1h
dGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRp
bWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgKaW5kZXggZDI0OTdjMzFkYWFiM2I0ZmFkOTU5NTRkNzUzZTA2YTMyYTVm
NWQ2Ni4uMjIzYjE1ZmYwZmVjNjEzMDUyZjhmNDM0Mjk2ZTVkZGYwYjEwYzBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiBjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgCi0gICAg
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmltYXRpb24mKTsKKyAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25W
YWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAogICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5k
cG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZv
cm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKaW5kZXggZTFkMGE5NzlhNGU5MThhMmNjNzNiNmU1
MTEwMzlkZjliZTQwMDcxMC4uZGMyYmUxYjg3NWI0YmU3YWRlZmQ2NzJhYmE4MWI2ZGQwN2U5NjNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDQ5ICszNSwzMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgSW50U2l6ZSBvdXRzZXRTaXplRm9yQmx1cihmbG9h
dCBzdGREZXZpYXRpb24pCiB7Ci0gICAgSW50U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJs
dXI6OmNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShGbG9hdFBvaW50KHN0ZERldmlhdGlvbiwg
c3RkRGV2aWF0aW9uKSk7CisgICAgYXV0byBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNh
bGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShGbG9hdFBvaW50KHN0ZERldmlhdGlvbiwgc3RkRGV2
aWF0aW9uKSk7CiAKLSAgICBJbnRTaXplIG91dHNldDsKICAgICAvLyBXZSB0YWtlIHRoZSBoYWxm
IGtlcm5lbCBzaXplIGFuZCBtdWx0aXBseSBpdCB3aXRoIHRocmVlLCBiZWNhdXNlIHdlIHJ1biBi
b3ggYmx1ciB0aHJlZSB0aW1lcy4KLSAgICBvdXRzZXQuc2V0V2lkdGgoMyAqIGtlcm5lbFNpemUu
d2lkdGgoKSAqIDAuNWYpOwotICAgIG91dHNldC5zZXRIZWlnaHQoMyAqIGtlcm5lbFNpemUuaGVp
Z2h0KCkgKiAwLjVmKTsKLQotICAgIHJldHVybiBvdXRzZXQ7Ci19Ci0KLUZpbHRlck9wZXJhdGlv
bnM6OkZpbHRlck9wZXJhdGlvbnMoKQotewotfQotCi1GaWx0ZXJPcGVyYXRpb25zJiBGaWx0ZXJP
cGVyYXRpb25zOjpvcGVyYXRvcj0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpCi17Ci0g
ICAgbV9vcGVyYXRpb25zID0gb3RoZXIubV9vcGVyYXRpb25zOwotICAgIHJldHVybiAqdGhpczsK
KyAgICByZXR1cm4geworICAgICAgICAzICoga2VybmVsU2l6ZS53aWR0aCgpIC8gMiwKKyAgICAg
ICAgMyAqIGtlcm5lbFNpemUuaGVpZ2h0KCkgLyAyCisgICAgfTsKIH0KIAotYm9vbCBGaWx0ZXJP
cGVyYXRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG8pIGNvbnN0Citi
b29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3BlcmF0aW9ucy5zaXplKCkgIT0gby5tX29wZXJh
dGlvbnMuc2l6ZSgpKQorICAgIHNpemVfdCBzaXplID0gbV9vcGVyYXRpb25zLnNpemUoKTsKKyAg
ICBpZiAoc2l6ZSAhPSBvdGhlci5tX29wZXJhdGlvbnMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBzID0gbV9vcGVyYXRpb25zLnNpemUoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgczsgaSsrKSB7Ci0gICAgICAgIGlmICgqbV9vcGVyYXRpb25z
W2ldICE9ICpvLm1fb3BlcmF0aW9uc1tpXSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7IGkrKykgeworICAgICAgICBpZiAoKm1fb3BlcmF0aW9uc1tpXSAhPSAqb3RoZXIubV9vcGVy
YXRpb25zW2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQogICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdGlvbnNNYXRjaChjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QKIHsKLSAgICBzaXplX3QgbnVtT3BlcmF0
aW9ucyA9IG9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgLy8gSWYgdGhlIHNpemVzIG9mIHRoZSBm
dW5jdGlvbiBsaXN0cyBkb24ndCBtYXRjaCwgdGhlIGxpc3RzIGRvbid0IG1hdGNoCi0gICAgaWYg
KG51bU9wZXJhdGlvbnMgIT0gb3RoZXIub3BlcmF0aW9ucygpLnNpemUoKSkKKyAgICBzaXplX3Qg
c2l6ZSA9IG9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgaWYgKHNpemUgIT0gb3RoZXIub3BlcmF0
aW9ucygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSWYgdGhlIHR5
cGVzIG9mIGVhY2ggZnVuY3Rpb24gYXJlIG5vdCB0aGUgc2FtZSwgdGhlIGxpc3RzIGRvbid0IG1h
dGNoCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PcGVyYXRpb25zOyArK2kpIHsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAoIW9wZXJh
dGlvbnMoKVtpXS0+aXNTYW1lVHlwZSgqb3RoZXIub3BlcmF0aW9ucygpW2ldKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04Niw4ICs3MCw4IEBAIGJvb2wgRmlsdGVyT3Bl
cmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBj
b25zdAogCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc1JlZmVyZW5jZUZpbHRlcigpIGNvbnN0
CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9ucy5hdChpKS0+dHlwZSgpID09IEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25z
KSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJF
RkVSRU5DRSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC05NSw5ICs3OSw5IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFzUmVmZXJlbmNl
RmlsdGVyKCkgY29uc3QKIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNPdXRzZXRzKCkgY29u
c3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsr
aSkgewotICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlw
ZSA9IG1fb3BlcmF0aW9ucy5hdChpKS5nZXQoKS0+dHlwZSgpOwotICAgICAgICBpZiAob3BlcmF0
aW9uVHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkJMVVIgfHwgb3BlcmF0aW9uVHlwZSA9PSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKQorICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9v
cGVyYXRpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IG9wZXJhdGlvbi0+dHlwZSgpOworICAg
ICAgICBpZiAodHlwZSA9PSBGaWx0ZXJPcGVyYXRpb246OkJMVVIgfHwgdHlwZSA9PSBGaWx0ZXJP
cGVyYXRpb246OkRST1BfU0hBRE9XKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNiwxMSArOTAsMTAgQEAgYm9vbCBGaWx0ZXJPcGVyYXRp
b25zOjpoYXNPdXRzZXRzKCkgY29uc3QKIEZpbHRlck91dHNldHMgRmlsdGVyT3BlcmF0aW9uczo6
b3V0c2V0cygpIGNvbnN0CiB7CiAgICAgRmlsdGVyT3V0c2V0cyB0b3RhbE91dHNldHM7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24gPSAqbV9vcGVyYXRpb25z
LmF0KGkpOwotICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi50eXBlKCkpIHsKKyAgICBm
b3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykgeworICAgICAgICBzd2l0Y2ggKG9w
ZXJhdGlvbi0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7
Ci0gICAgICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uJiBibHVyT3BlcmF0aW9uID0g
ZG93bmNhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAg
ICAgIGF1dG8mIGJsdXJPcGVyYXRpb24gPSBkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPigq
b3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVG
b3JMZW5ndGgoYmx1ck9wZXJhdGlvbi5zdGREZXZpYXRpb24oKSwgMCk7CiAgICAgICAgICAgICBJ
bnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRTaXplRm9yQmx1cihzdGREZXZpYXRpb24pOwogICAg
ICAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzKG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNl
dFNpemUud2lkdGgoKSwgb3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgpKTsK
QEAgLTExOCwxNCArMTAxLDE0IEBAIEZpbHRlck91dHNldHMgRmlsdGVyT3BlcmF0aW9uczo6b3V0
c2V0cygpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIGNvbnN0IERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24mIGRyb3BTaGFkb3dPcGVyYXRpb24gPSBkb3duY2FzdDxEcm9w
U2hhZG93RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgYXV0
byYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24+KCpvcGVyYXRpb24pOwogICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0
U2l6ZUZvckJsdXIoZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAg
ICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMoCisgICAgICAgICAgICBGaWx0ZXJPdXRzZXRzIG91
dHNldHMgewogICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkg
LSBkcm9wU2hhZG93T3BlcmF0aW9uLnkoKSksCiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwg
b3V0c2V0U2l6ZS53aWR0aCgpICsgZHJvcFNoYWRvd09wZXJhdGlvbi54KCkpLAogICAgICAgICAg
ICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkgKyBkcm9wU2hhZG93T3BlcmF0
aW9uLnkoKSksCiAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS53aWR0aCgp
IC0gZHJvcFNoYWRvd09wZXJhdGlvbi54KCkpCi0gICAgICAgICAgICApOworICAgICAgICAgICAg
fTsKICAgICAgICAgICAgIHRvdGFsT3V0c2V0cyArPSBvdXRzZXRzOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEzOCwyNCArMTIxLDI2IEBAIEZpbHRlck91dHNldHMgRmlsdGVy
T3BlcmF0aW9uczo6b3V0c2V0cygpIGNvbnN0CiAKIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aGFz
RmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9u
c1tpXS0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3Bl
cmF0aW9ucykgeworICAgICAgICBpZiAob3BlcmF0aW9uLT5hZmZlY3RzT3BhY2l0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdAogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKQotICAg
ICAgICBpZiAobV9vcGVyYXRpb25zW2ldLT5tb3Zlc1BpeGVscygpKQorICAgIGZvciAoYXV0byYg
b3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7CisgICAgICAgIGlmIChvcGVyYXRpb24tPm1vdmVz
UGl4ZWxzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBhdXRvIGZpbHRlciA9IGZpbHRl
cnMuYXQoaSk7CisgICAgICAgIGF1dG8gZmlsdGVyID0gZmlsdGVycy5hdChpKTsKICAgICAgICAg
aWYgKGZpbHRlcikKICAgICAgICAgICAgIHRzIDw8ICpmaWx0ZXI7CiAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggY2YyYzViOWI2MjVjYjY2OWM4YzcxNGU3ZDNmYmE3YzA4
M2ExZGQxMS4uNDg2ZjY4NmZhYTY5NDNhNDZiMmI4YjFhYjZjMGM3ZGMxOGRkNjc4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBGaWx0ZXJPcGVyYXRpb25zX2gKLSNkZWZpbmUgRmlsdGVyT3BlcmF0aW9uc19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIklu
dFJlY3RFeHRlbnQuaCIKQEAgLTMzLDMzICszMiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgSW50UmVjdEV4dGVudCBGaWx0ZXJPdXRzZXRzOwordXNpbmcgRmlsdGVyT3V0
c2V0cyA9IEludFJlY3RFeHRlbnQ7CiAKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnMgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEZpbHRl
ck9wZXJhdGlvbnMoKTsKLSAgICBGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdG9yPShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBjbGVhcigpIHsgbV9vcGVyYXRpb25zLmNsZWFy
KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX29wZXJhdGlvbnMuY2xlYXIoKTsKLSAgICB9
Ci0gICAgCiAgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYgb3BlcmF0aW9ucygp
IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPj4mIG9wZXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0K
IAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX29wZXJhdGlvbnMuc2l6ZSgp
OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLmlzRW1w
dHkoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNp
emUoKTsgfQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQoc2l6ZV90IGluZGV4KSBjb25z
dCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29wZXJhdGlvbnMuYXQo
aW5kZXgpLmdldCgpIDogMDsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQoc2l6ZV90
IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29w
ZXJhdGlvbnNbaW5kZXhdLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgYm9vbCBvcGVyYXRpb25z
TWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0OwogCkBAIC03MCw2ICs1OCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNSZWZlcmVuY2VGaWx0ZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+IG1fb3BlcmF0aW9uczsKIH07CkBAIC03Nyw1ICs2
NiwzIEBAIHByaXZhdGU6CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEZpbHRlck9wZXJhdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJBbmltYXRpb24uY3BwCmluZGV4IDBiZWRkMGE1NzRjMjQ5OWU1ZTNhY2U5MjdiNTQxMWY5NDIw
MWE4NTAuLjljYzFkZjZhZDNiZTU3MjlkM2IyYTgxNzkzZTVhNTcwNGFlMWVkYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTEyOCwxOSArMTI4LDE2IEBAIHN0YXRp
YyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNGdW5jdGlvbihpbnQgbnVtU3RlcHMsIGJvb2wgc3Rl
cEF0U3RhcnQsIGRvdWJsZSB0CiAgICAgcmV0dXJuIGZsb29yKG51bVN0ZXBzICogdCkgLyBudW1T
dGVwczsKIH0KIAotc3RhdGljIGlubGluZSBmbG9hdCBhcHBseVRpbWluZ0Z1bmN0aW9uKGNvbnN0
IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiwgZmxvYXQgcHJvZ3Jlc3MsIGRvdWJsZSBk
dXJhdGlvbikKK3N0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBU
aW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24sIGZsb2F0IHByb2dyZXNzLCBkb3VibGUgZHVy
YXRpb24pCiB7Ci0gICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIHByb2dy
ZXNzOwotCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24oKSkgewotICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBz
dGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rp
b24pOwotICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGN0Zi0+eDEoKSwg
Y3RmLT55MSgpLCBjdGYtPngyKCksIGN0Zi0+eTIoKSwgcHJvZ3Jlc3MsIGR1cmF0aW9uKTsKKyAg
ICBpZiAodGltaW5nRnVuY3Rpb24uaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAg
ICAgICAgYXV0byYgY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJG
dW5jdGlvbihjdGYueDEoKSwgY3RmLnkxKCksIGN0Zi54MigpLCBjdGYueTIoKSwgcHJvZ3Jlc3Ms
IGR1cmF0aW9uKTsKICAgICB9CiAKLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1p
bmdGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9
IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7
Ci0gICAgICAgIHJldHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCks
IHN0Zi0+c3RlcEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7CisgICAgaWYgKHRpbWluZ0Z1
bmN0aW9uLmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGF1dG8mIHN0ZiA9IHN0
YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7Cisg
ICAgICAgIHJldHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLm51bWJlck9mU3RlcHMoKSwgc3Rm
LnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9ncmVzcykpOwogICAgIH0KIAogICAgIHJldHVybiBw
cm9ncmVzczsKQEAgLTE5NCwxMyArMTkxLDEyIEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmCiAg
ICAgcmV0dXJuIG1hdHJpeDsKIH0KIAotc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFs
dWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKK3N0YXRpYyBjb25zdCBUaW1pbmdGdW5jdGlvbiYg
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYgYW5p
bWF0aW9uVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewotICAgIGlmIChhbmlt
VmFsdWUudGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdG
dW5jdGlvbigpOwotICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1
cm4gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLQorICAgIGlmIChhbmltYXRpb25WYWx1
ZS50aW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gKmFuaW1hdGlvblZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm4gKmFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbigpOwogICAgIHJldHVybiBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGltaW5nRnVuY3Rpb24oKTsKIH0KIApAQCAtMjU3
LDcgKzI1Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6YXBwbHkoQ2xpZW50JiBj
bGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fa2V5ZnJhbWVzLnNpemUo
KSA9PSAyKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksIG1fYW5p
bWF0aW9uLmdldCgpKTsKKyAgICAgICAgYXV0byYgdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKG1fa2V5ZnJhbWVzLmF0KDApLCAqbV9hbmltYXRpb24pOwog
ICAgICAgICBub3JtYWxpemVkVmFsdWUgPSBhcHBseVRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0
aW9uLCBub3JtYWxpemVkVmFsdWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAg
YXBwbHlJbnRlcm5hbChjbGllbnQsIG1fa2V5ZnJhbWVzLmF0KDApLCBtX2tleWZyYW1lcy5hdCgx
KSwgbm9ybWFsaXplZFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI2Niw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6YXBwbHkoQ2xpZW50JiBjbGllbnQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBub3JtYWxpemVkVmFsdWUgPSAobm9ybWFsaXpl
ZFZhbHVlIC0gZnJvbS5rZXlUaW1lKCkpIC8gKHRvLmtleVRpbWUoKSAtIGZyb20ua2V5VGltZSgp
KTsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5n
RnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmcm9tLCBtX2FuaW1hdGlvbi5nZXQoKSk7CisgICAg
ICAgIGF1dG8mIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZShmcm9tLCAqbV9hbmltYXRpb24pOwogICAgICAgICBub3JtYWxpemVkVmFsdWUgPSBhcHBseVRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCBub3JtYWxpemVkVmFsdWUsIG1fYW5pbWF0aW9u
LT5kdXJhdGlvbigpKTsKICAgICAgICAgYXBwbHlJbnRlcm5hbChjbGllbnQsIGZyb20sIHRvLCBu
b3JtYWxpemVkVmFsdWUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KaW5k
ZXggNTg0ZmRhYmQ5MjQ3ZmE1OGQ5YjBmMGYwNDY4ZDQyNjBhNjZkMjA1YS4uZWZiZTgwZmFlMDNj
NGNhMjg4NGRjMmZiOTJhMTc3ZmZhYWMwMmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KQEAg
LTYwLDcgKzYwLDcgQEAgQGludGVyZmFjZSBXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIDogTlNP
YmplY3Q8QVZTcGVlY2hTeW50aGVzaXplckRlbGVnYXRlPgogfQogCiAtIChXZWJTcGVlY2hTeW50
aGVzaXNXcmFwcGVyICopaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjooV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplciopc3ludGhlc2l6ZXI7Ci0tICh2b2lkKXNwZWFrVXR0ZXJhbmNl
OihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPil1
dHRlcmFuY2U7CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihSZWZQdHI8V2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpdXR0ZXJhbmNlOwogCiBAZW5kCiAKQEAgLTg3
LDcgKzg3LDcgQEAgLSAoZmxvYXQpbWFwU3BlZWNoUmF0ZVRvUGxhdGZvcm1SYXRlOihmbG9hdCly
YXRlCiAgICAgcmV0dXJuIHJhdGU7CiB9CiAKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0dGVyYW5j
ZQorLSAodm9pZClzcGVha1V0dGVyYW5jZTooUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiYmKXV0dGVyYW5jZQogewogICAgIC8vIFdoZW4gc3BlYWsgaXMg
Y2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlzdGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91
dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IC0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+KXV0CiAgICAgW2F2VXR0ZXJhbmNlIHNldFZvbHVtZTp1dHRl
cmFuY2UtPnZvbHVtZSgpXTsKICAgICBbYXZVdHRlcmFuY2Ugc2V0UGl0Y2hNdWx0aXBsaWVyOnV0
dGVyYW5jZS0+cGl0Y2goKV07CiAgICAgW2F2VXR0ZXJhbmNlIHNldFZvaWNlOmF2Vm9pY2VdOwot
ICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gV1RGTW92ZSh1
dHRlcmFuY2UpOwogCiAgICAgW21fc3ludGhlc2l6ZXIgc3BlYWtVdHRlcmFuY2U6YXZVdHRlcmFu
Y2VdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQppbmRleCBhMWQ3ODVmNDU0ZWJlZmFiYjQxMWVmOGFjODlkMmFlZTAz
ZTIyNDVjLi4yZTFiMmNiNjdlMGRhNjIxMTViMGFkODI1OGQ3MTU3YzE5YTQ3MDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBz
dGF0aWMgTGVuZ3RoU2l6ZSBzaXplRnJvbU5TQ29udHJvbFNpemUoTlNDb250cm9sU2l6ZSBuc0Nv
bnRyb2xTaXplLCBjb25zdCBMZW5ndAogICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYpCiAgICAg
ICAgIGNvbnRyb2xTaXplID0gSW50U2l6ZShjb250cm9sU2l6ZS53aWR0aCgpICogem9vbUZhY3Rv
ciwgY29udHJvbFNpemUuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKTsKICAgICBMZW5ndGhTaXplIHJl
c3VsdCA9IHpvb21lZFNpemU7Ci0gICAgaWYgKHpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNp
Y09yQXV0bygpICYmIGNvbnRyb2xTaXplLndpZHRoKCkgPiAwKQotICAgICAgICByZXN1bHQuc2V0
V2lkdGgoTGVuZ3RoKGNvbnRyb2xTaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgaWYgKHpvb21l
ZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiBjb250cm9sU2l6ZS5oZWlnaHQo
KSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRIZWlnaHQoTGVuZ3RoKGNvbnRyb2xTaXplLmhlaWdo
dCgpLCBGaXhlZCkpOworICAgIGlmICh6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRv
KCkgJiYgY29udHJvbFNpemUud2lkdGgoKSA+IDApCisgICAgICAgIHJlc3VsdC53aWR0aCA9IHsg
Y29udHJvbFNpemUud2lkdGgoKSwgRml4ZWQgfTsKKyAgICBpZiAoem9vbWVkU2l6ZS5oZWlnaHQu
aXNJbnRyaW5zaWNPckF1dG8oKSAmJiBjb250cm9sU2l6ZS5oZWlnaHQoKSA+IDApCisgICAgICAg
IHJlc3VsdC5oZWlnaHQgPSB7IGNvbnRyb2xTaXplLmhlaWdodCgpLCBGaXhlZCB9OwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3QgaW50KiBj
aGVja2JveE1hcmdpbnMoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIHN0YXRpYyBMZW5ndGhT
aXplIGNoZWNrYm94U2l6ZShjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVuZ3RoU2l6
ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikKIHsKICAgICAvLyBJZiB0aGUgd2lkdGgg
YW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRv
LgotICAgIGlmICghem9vbWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpv
b21lZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoIXpvb21lZFNp
emUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRy
aW5zaWNPckF1dG8oKSkKICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7CiAKICAgICAvLyBVc2Ug
dGhlIGZvbnQgc2l6ZSB0byBkZXRlcm1pbmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgY29u
dHJvbC4KQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgY29uc3QgaW50KiByYWRpb01hcmdpbnMo
TlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIHN0YXRpYyBMZW5ndGhTaXplIHJhZGlvU2l6ZShj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxv
YXQgem9vbUZhY3RvcikKIHsKICAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90
aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICghem9vbWVk
U2l6ZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0KCku
aXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoIXpvb21lZFNpemUud2lkdGguaXNJbnRyaW5z
aWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRyaW5zaWNPckF1dG8oKSkKICAg
ICAgICAgcmV0dXJuIHpvb21lZFNpemU7CiAKICAgICAvLyBVc2UgdGhlIGZvbnQgc2l6ZSB0byBk
ZXRlcm1pbmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgY29udHJvbC4KQEAgLTcxMyw5ICs3
MTMsOSBAQCBMZW5ndGhTaXplIFRoZW1lTWFjOjpjb250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29ucwogICAgICAgICAgICAgcmV0dXJuIHJhZGlv
U2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKICAgICAgICAgY2FzZSBQdXNoQnV0
dG9uUGFydDoKICAgICAgICAgICAgIC8vIEhlaWdodCBpcyByZXNldCB0byBhdXRvIHNvIHRoYXQg
c3BlY2lmaWVkIGhlaWdodHMgY2FuIGJlIGlnbm9yZWQuCi0gICAgICAgICAgICByZXR1cm4gc2l6
ZUZyb21Gb250KGZvbnQsIExlbmd0aFNpemUoem9vbWVkU2l6ZS53aWR0aCgpLCBMZW5ndGgoKSks
IHpvb21GYWN0b3IsIGJ1dHRvblNpemVzKCkpOworICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9t
Rm9udChmb250LCB7IHpvb21lZFNpemUud2lkdGgsIHsgfSB9LCB6b29tRmFjdG9yLCBidXR0b25T
aXplcygpKTsKICAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICAgICAg
aWYgKCF6b29tZWRTaXplLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6
ZS5oZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygpKQorICAgICAgICAgICAgaWYgKCF6b29tZWRT
aXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50
cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7CiAgICAg
ICAgICAgICByZXR1cm4gc2l6ZUZyb21OU0NvbnRyb2xTaXplKHN0ZXBwZXJDb250cm9sU2l6ZUZv
ckZvbnQoZm9udCksIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKICAg
ICAgICAgZGVmYXVsdDoKQEAgLTcyNiwxNyArNzI2LDE3IEBAIExlbmd0aFNpemUgVGhlbWVNYWM6
OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zCiBMZW5ndGhTaXplIFRoZW1lTWFjOjptaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQg
cGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgU3F1YXJlQnV0dG9uUGFydDoKLSAg
ICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKLSAgICAgICAgY2FzZSBCdXR0b25QYXJ0Ogot
ICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKHN0
YXRpY19jYXN0PGludD4oMTUgKiB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgY2FzZSBJ
bm5lclNwaW5CdXR0b25QYXJ0OnsKLSAgICAgICAgICAgIEludFNpemUgYmFzZSA9IHN0ZXBwZXJT
aXplcygpW05TQ29udHJvbFNpemVNaW5pXTsKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhTaXpl
KExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uud2lkdGgoKSAqIHpvb21GYWN0b3IpLCBGaXhl
ZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgoc3RhdGljX2Nhc3Q8aW50
PihiYXNlLmhlaWdodCgpICogem9vbUZhY3RvciksIEZpeGVkKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6bWluaW11bUNvbnRyb2xTaXpl
KHBhcnQsIGZvbnQsIHpvb21GYWN0b3IpOworICAgIGNhc2UgU3F1YXJlQnV0dG9uUGFydDoKKyAg
ICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgorICAgIGNhc2UgQnV0dG9uUGFydDoKKyAgICAgICAg
cmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IHN0YXRpY19jYXN0PGludD4oMTUgKiB6b29tRmFjdG9y
KSwgRml4ZWQgfSB9OworICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDogeworICAgICAgICBh
dXRvJiBiYXNlID0gc3RlcHBlclNpemVzKClbTlNDb250cm9sU2l6ZU1pbmldOworICAgICAgICBy
ZXR1cm4geyB7IHN0YXRpY19jYXN0PGludD4oYmFzZS53aWR0aCgpICogem9vbUZhY3RvciksIEZp
eGVkIH0sCisgICAgICAgICAgICB7IHN0YXRpY19jYXN0PGludD4oYmFzZS5oZWlnaHQoKSAqIHpv
b21GYWN0b3IpLCBGaXhlZCB9IH07CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBUaGVtZTo6bWluaW11bUNvbnRyb2xTaXplKHBhcnQsIGZvbnQsIHpvb21GYWN0b3IpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggNDMx
NWNjYzU3YTVkMTVmY2RiNTY1OWM3MWYxYmZkOWZkZTI4MjEzYy4uZWQzMGFiMDMyNzAxY2RlM2Qy
YTZkYzY5MTc4MmY3MzJlMTVlYmFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29sIGZv
Y3VzZWQpCiAgICAgaWYgKCFmb2N1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZSog
ZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7CisgICAgRnJhbWUqIGZyYW1lID0g
RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KCp0aGlzKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
TW90aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rldmlj
ZU1vdGlvbkNsaWVudE1vY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjJh
ZDQzOTdhMDRjMDU1NjFjN2MxZDYwNjdhZGVjNTE1OWYyMzU0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
RGV2aWNlTW90aW9uQ2xpZW50TW9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRldmljZU1vdGlvbkNs
aWVudE1vY2suaCIKLQotI2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1EZXZpY2VNb3Rpb25DbGllbnRNb2NrOjpEZXZpY2VNb3Rpb25D
bGllbnRNb2NrKCkKLSAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwgbV90aW1lcigqdGhpcywg
JkRldmljZU1vdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpCi0gICAgLCBtX2lzVXBkYXRpbmco
ZmFsc2UpCi17Ci19Ci0KLXZvaWQgRGV2aWNlTW90aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxl
cihEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAgIEFTU0VSVCghbV9j
b250cm9sbGVyKTsKLSAgICBtX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotICAgIEFTU0VSVCht
X2NvbnRyb2xsZXIpOwotfQotCi12b2lkIERldmljZU1vdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBk
YXRpbmcoKQotewotICAgIG1faXNVcGRhdGluZyA9IHRydWU7Ci19Ci0KLXZvaWQgRGV2aWNlTW90
aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKLXsKLSAgICBtX2lzVXBkYXRpbmcgPSBmYWxz
ZTsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
OjpzZXRNb3Rpb24oUGFzc1JlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBtb3Rpb24pCi17Ci0gICAg
bV9tb3Rpb24gPSBtb3Rpb247Ci0gICAgaWYgKG1faXNVcGRhdGluZyAmJiAhbV90aW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBEZXZp
Y2VNb3Rpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsK
LSAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU1vdGlvbihtX21vdGlvbi5nZXQoKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdjNjI2ODI4ZWE0ZjM5NDFkZTViY2UwMTUzNTg4ZDFiMDRjYWU5OTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEZXZpY2VNb3Rpb25DbGllbnRNb2Nr
X2gKLSNkZWZpbmUgRGV2aWNlTW90aW9uQ2xpZW50TW9ja19oCi0KLSNpbmNsdWRlICJEZXZpY2VN
b3Rpb25DbGllbnQuaCIKLSNpbmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCi0jaW5jbHVkZSAi
VGltZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERldmljZU1vdGlvbkNvbnRy
b2xsZXI7Ci0KLS8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VNb3Rpb25DbGllbnQg
dXNlZCB0byB0ZXN0IHRoZSBmZWF0dXJlIGluCi0vLyBEdW1wUmVuZGVyVHJlZS4gRW1iZWRkZXJz
IHNob3VsZCBzaG91bGQgY29uZmlndXJlIHRoZSBQYWdlIG9iamVjdCB0byB1c2UgdGhpcwotLy8g
Y2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KLWNsYXNzIERldmljZU1vdGlvbkNs
aWVudE1vY2sgOiBwdWJsaWMgRGV2aWNlTW90aW9uQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBEZXZp
Y2VNb3Rpb25DbGllbnRNb2NrKCk7Ci0KLSAgICAvLyBEZXZpY2VNb3Rpb25DbGllbnQKLSAgICB2
b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAg
IHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkg
b3ZlcnJpZGU7Ci0gICAgRGV2aWNlTW90aW9uRGF0YSogbGFzdE1vdGlvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fbW90aW9uLmdldCgpOyB9Ci0gICAgLy8gbW9jayBpcyBvd25lZCBieSB0
aGUgdGVzdGluZyBmcmFtZXdvcmssIHdoaWNoIHNob3VsZCBoYW5kbGUgZGVsZXRpb24KLSAgICB2
b2lkIGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KLQotICAg
IHZvaWQgc2V0TW90aW9uKFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4pOwotCi1wcml2YXRl
OgotICAgIHZvaWQgdGltZXJGaXJlZCgpOwotCi0gICAgUmVmUHRyPERldmljZU1vdGlvbkRhdGE+
IG1fbW90aW9uOwotICAgIERldmljZU1vdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAg
ICBUaW1lciBtX3RpbWVyOwotICAgIGJvb2wgbV9pc1VwZGF0aW5nOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRGV2aWNlTW90aW9uQ2xpZW50TW9ja19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCmluZGV4IDM4ODExZmMxMDgxODhj
ZmUyNmUxODBmMDBmOWY1MGZkNjE1ZGI3ZDMuLjdhOTkzMTM2YmEyYzNhMDVkMmQzMTk2YTU1Njc3
MThhMDBkYWY4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJz
b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3Bw
CkBAIC00MCwxMCArNDAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0
IEludFBvaW50JiBob3RTcG90KQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJl
ZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQ3Vyc29yPiBpbXBsOwotCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9
IGRldGVybWluZUhvdFNwb3QoaW1nLCBob3RTcG90KTsKICAgICBzdGF0aWMgYm9vbCBkb0FscGhh
ID0gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzWFA7CiAgICAgQml0bWFwSW5mbyBjdXJzb3JJ
bWFnZSA9IEJpdG1hcEluZm86OmNyZWF0ZShJbnRTaXplKGltZy0+d2lkdGgoKSwgaW1nLT5oZWln
aHQoKSkpOwpAQCAtNTIsOCArNTAsNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+
IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaAogICAgIGF1
dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsK
ICAgICBpZiAoZG9BbHBoYSkgewogICAgICAgICBhdXRvIGhDdXJzb3IgPSBhZG9wdEdESU9iamVj
dCg6OkNyZWF0ZURJQlNlY3Rpb24oZGMsICZjdXJzb3JJbWFnZSwgRElCX1JHQl9DT0xPUlMsIG51
bGxwdHIsIDAsIDApKTsKLSAgICAgICAgaWYgKCFoQ3Vyc29yKQotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgaW1nLT5nZXRIQklUTUFQKGhDdXJzb3IuZ2V0KCkpOyAKICAg
ICAgICAgSEJJVE1BUCBoT2xkQml0bWFwID0gKEhCSVRNQVApU2VsZWN0T2JqZWN0KHdvcmtpbmdE
Qy5nZXQoKSwgaEN1cnNvci5nZXQoKSk7CkBAIC03MSwxNSArNjcsMTMgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGgKICAgICAgICAgaWkuaGJtTWFzayA9IGhNYXNrLmdldCgpOwogICAgICAgICBp
aS5oYm1Db2xvciA9IGhDdXJzb3IuZ2V0KCk7CiAKLSAgICAgICAgaW1wbCA9IFNoYXJlZEN1cnNv
cjo6Y3JlYXRlKDo6Q3JlYXRlSWNvbkluZGlyZWN0KCZpaSkpOworICAgICAgICByZXR1cm4gU2hh
cmVkQ3Vyc29yOjpjcmVhdGUoOjpDcmVhdGVJY29uSW5kaXJlY3QoJmlpKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGFscGhhIGJsZW5kZWQgY3Vy
c29ycywgc28gd2UgbmVlZAogICAgICAgICAvLyB0byBjcmVhdGUgdGhlIG1hc2sgbWFudWFsbHkK
ICAgICAgICAgYXV0byBhbmRNYXNrREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGli
bGVEQyhkYykpOwogICAgICAgICBhdXRvIHhvck1hc2tEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3Jl
YXRlQ29tcGF0aWJsZURDKGRjKSk7CiAgICAgICAgIGF1dG8gaEN1cnNvciA9IGFkb3B0R0RJT2Jq
ZWN0KDo6Q3JlYXRlRElCU2VjdGlvbihkYywgJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywg
bnVsbHB0ciwgMCwgMCkpOwotICAgICAgICBpZiAoIWhDdXJzb3IpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBpbWctPmdldEhCSVRNQVAoaEN1cnNvci5nZXQoKSk7IAog
ICAgICAgICBCSVRNQVAgY3Vyc29yOwpAQCAtMTA4LDE4ICsxMDIsMTYgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3Qg
SW50UG9pbnQmIGgKICAgICAgICAgaWNvbi55SG90c3BvdCA9IGVmZmVjdGl2ZUhvdFNwb3QueSgp
OwogICAgICAgICBpY29uLmhibU1hc2sgPSBhbmRNYXNrLmdldCgpOwogICAgICAgICBpY29uLmhi
bUNvbG9yID0geG9yTWFzay5nZXQoKTsKLSAgICAgICAgaW1wbCA9IFNoYXJlZEN1cnNvcjo6Y3Jl
YXRlKENyZWF0ZUljb25JbmRpcmVjdCgmaWNvbikpOworICAgICAgICByZXR1cm4gU2hhcmVkQ3Vy
c29yOjpjcmVhdGUoQ3JlYXRlSWNvbkluZGlyZWN0KCZpY29uKSk7CiAgICAgfQotCi0gICAgcmV0
dXJuIGltcGwucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+
IGxvYWRTaGFyZWRDdXJzb3IoSElOU1RBTkNFIGhJbnN0YW5jZSwgTFBDV1NUUiBscEN1cnNvck5h
bWUpCitzdGF0aWMgUmVmPFNoYXJlZEN1cnNvcj4gbG9hZFNoYXJlZEN1cnNvcihISU5TVEFOQ0Ug
aEluc3RhbmNlLCBMUENXU1RSIGxwQ3Vyc29yTmFtZSkKIHsKICAgICByZXR1cm4gU2hhcmVkQ3Vy
c29yOjpjcmVhdGUoOjpMb2FkQ3Vyc29yVyhoSW5zdGFuY2UsIGxwQ3Vyc29yTmFtZSkpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+IGxvYWRDdXJzb3JCeU5hbWUoY2hhciog
bmFtZSwgaW50IHgsIGludCB5KQorc3RhdGljIFJlZjxTaGFyZWRDdXJzb3I+IGxvYWRDdXJzb3JC
eU5hbWUoY2hhciogbmFtZSwgaW50IHgsIGludCB5KQogewogICAgIEludFBvaW50IGhvdFNwb3Qo
eCwgeSk7CiAgICAgUmVmUHRyPEltYWdlPiBjdXJzb3JJbWFnZShJbWFnZTo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2UobmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMDAwODdkMjNmNjI2ODY1Zjk3NmE3NjI4NjFmNjc0Mzlh
MGNjYmJkMy4uZjU5ZjE1ZjZiNGUwNzFmMDM5OTk3MDMzM2UxZGJkOTFmOGMxYzQxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBA
IC0zNjQsNyArMzY0LDcgQEAgTGF5b3V0UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXQKIAogSW1hZ2VCdWZmZXIq
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXQoKSBjb25zdAogewotICAgIHJldHVybiBjb25z
dF9jYXN0PEZpbHRlckVmZmVjdCY+KG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCkpLmFzSW1hZ2VCdWZm
ZXIoKTsKKyAgICByZXR1cm4gbV9lZmZlY3RzLmxhc3QoKS0+YXNJbWFnZUJ1ZmZlcigpOwogfQog
CiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpzZXRNYXhFZmZlY3RSZWN0cyhjb25zdCBGbG9h
dFJlY3QmIGVmZmVjdFJlY3QpCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RS
ZW5kZXJlcjo6c2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQog
CiBJbnRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpvdXRwdXRSZWN0KCkgY29uc3QKIHsKLSAg
ICBhdXRvJiBsYXN0RWZmZWN0ID0gY29uc3RfY2FzdDxGaWx0ZXJFZmZlY3QmPihtX2VmZmVjdHMu
bGFzdCgpLmdldCgpKTsKKyAgICBhdXRvJiBsYXN0RWZmZWN0ID0gbV9lZmZlY3RzLmxhc3QoKS5n
ZXQoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QuaGFzUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgcmV0dXJuIGxhc3RFZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0
YShJbnRSZWN0IHsgbV9maWx0ZXJSZWdpb24gfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggNjNiNzNjNWM1MzI0MjMz
OWM2ZDM2MDFkNmEyYzY1YWVkM2FmNWEwMy4uYzJiMjIxNmE2YTk4Zjc1NjRhZTg5OThlMDIyOGQ3
ZjYwM2M1OGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6b3B0aW9uYWw8SW50
ZXJwb2xhdGlvblF1YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25R
dWFsaXR5CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotSW50ZXJwb2xhdGlvblF1YWxp
dHkgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorSW50
ZXJwb2xhdGlvblF1YWxpdHkgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xh
dGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2JqZWN0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2Us
IHRoZW4gbm9uZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gg
cXVhbGl0eS4KICAgICBpZiAoIShpbWFnZS5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UuaXNQREZE
b2N1bWVudEltYWdlKCkpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGIxZmIzMGEwOWNjM2EyZjU0
YWQ4YWI0NzU4ZmJiNWIxMDc5MmU1ZGMuLjVhMDBmOWVjZTBhYTg5NTFhMmU2ZDgwZWFmZjQxZTZi
YmVjNDNlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAK
QEAgLTEyMzEsMTIgKzEyMzEsMTQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIH0KIH0K
IAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIElubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAgaWYgKCFmaWxsTGF5ZXIpCi0g
ICAgICAgIHJldHVybjsKLSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBmaWxsTGF5
ZXItPm5leHQoKSwgcmVjdCwgb3ApOwotICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywg
ZmlsbExheWVyLCByZWN0LCBvcCk7CisgICAgVmVjdG9yPGNvbnN0IEZpbGxMYXllciosIDg+IGxh
eWVyczsKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPm5leHQoKSkKKyAgICAgICAgbGF5ZXJzLmFwcGVuZChsYXllcik7CisgICAgbGF5ZXJz
LnJldmVyc2UoKTsKKyAgICBmb3IgKGF1dG8qIGxheWVyIDogbGF5ZXJzKQorICAgICAgICBwYWlu
dEZpbGxMYXllcihwYWludEluZm8sIGNvbG9yLCAqbGF5ZXIsIHJlY3QsIG9wKTsKIH0KIAogYm9v
bCBJbmxpbmVGbG93Qm94Ojpib3hTaGFkb3dDYW5CZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3Qg
RmlsbExheWVyJiBsYXN0QmFja2dyb3VuZExheWVyKSBjb25zdApAQCAtMTI0OCwxNyArMTI1MCwx
NyBAQCBib29sIElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3Vu
ZChjb25zdCBGaWxsTGF5ZXImIGxhc3RCYWNrZwogICAgIHJldHVybiAoIWhhc0ZpbGxJbWFnZSAm
JiAhcmVuZGVyZXIoKS5zdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB8fCAoIXByZXZMaW5lQm94
KCkgJiYgIW5leHRMaW5lQm94KCkpIHx8ICFwYXJlbnQoKTsKIH0KIAotdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29s
b3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5
ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3Qg
RmlsbExheWVyJiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQogewotICAgIFN0eWxlSW1hZ2UqIGltZyA9IGZpbGxMYXllci0+aW1hZ2UoKTsK
LSAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltZyAmJiBpbWctPmNhblJlbmRlcigmcmVuZGVyZXIo
KSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgYXV0byogaW1hZ2Ug
PSBmaWxsTGF5ZXIuaW1hZ2UoKTsKKyAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltYWdlICYmIGlt
YWdlLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3RpdmVa
b29tKCkpOwogICAgIGlmICgoIWhhc0ZpbGxJbWFnZSAmJiAhcmVuZGVyZXIoKS5zdHlsZSgpLmhh
c0JvcmRlclJhZGl1cygpKSB8fCAoIXByZXZMaW5lQm94KCkgJiYgIW5leHRMaW5lQm94KCkpIHx8
ICFwYXJlbnQoKSkKLSAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBh
aW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCBy
ZWN0LnNpemUoKSwgb3ApOworICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQocGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25l
LCB0aGlzLCByZWN0LnNpemUoKSwgb3ApOwogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmJveERlY29yYXRpb25CcmVh
aygpID09IERDTE9ORSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsK
LSAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywg
ZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUoKSwg
b3ApOworICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZv
LCBjb2xvciwgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0
LnNpemUoKSwgb3ApOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgewpAQCAtMTI5MCw3ICsxMjky
LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGMKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgo
KSwgaGVpZ2h0KCkpKTsKLSAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVk
KHBhaW50SW5mbywgYywgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJp
cFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6
ZSgpLCBvcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWlu
dEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlw
V2lkdGgsIHN0cmlwSGVpZ2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXpl
KCksIG9wKTsKICAgICB9CiB9CiAKQEAgLTE0NDYsNyArMTQ0OCw3IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzCiAgICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgPSByZW5kZXJlcigp
LnZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0g
Q29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBpZiAoIWNvbXBvc2l0ZWRNYXNrIHx8IGZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycykgewotICAgICAgICBpZiAoKG1hc2tCb3hJbWFnZSAmJiByZW5kZXJl
cigpLnN0eWxlKCkubWFza0xheWVycygpLT5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0eWxl
KCkubWFza0xheWVycygpLT5uZXh0KCkpCisgICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJl
bmRlcmVyKCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCkuaGFzSW1hZ2UoKSkgfHwgcmVuZGVyZXIoKS5z
dHlsZSgpLm1hc2tMYXllcnMoKS5uZXh0KCkpCiAgICAgICAgICAgICBwdXNoVHJhbnNwYXJlbmN5
TGF5ZXIgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVE
ZXN0aW5hdGlvbkluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKaW5k
ZXggODM5MDViZGM0ZTdhN2ViMDdmOTM3ZTQyYTAwY2Q2MjQ1OWMwNDViOS4uNTcyYjAyNTYxYjFk
OTFmNmFlYjBjNDhkMWJlZTI2MzJiMzU2ZWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAg
dm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lk
IHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZp
bGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50RmlsbExh
eWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciYsIGNv
bnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3Im
LCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IFJlbmRlclN0eWxlJiwgU2hhZG93U3R5bGUsIGNvbnN0IExheW91dFJl
Y3QmKTsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIGJv
b2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5l
Qm90dG9tLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggMzQzM2VjNWE4MmNmZjM0MTY1YmMxM2Y5MTRmMWYzODhhN2JkNTkx
Ny4uYzZhYzc2OTIzMTkzZjk4MTU0ZTQzNWFiY2UwMGE5NDk0OWYxMDM2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEzMDUsMTAgKzEzMDUsOSBAQCB2b2lkIFJl
bmRlckJveDo6cGFpbnRSb290Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bykKICAgICBpZiAoIXJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXItPnN0
eWxlKCkuYmFja2dyb3VuZExheWVycygpOwotICAgIENvbG9yIGJnQ29sb3IgPSByb290QmFja2dy
b3VuZFJlbmRlcmVyLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcik7Ci0KLSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBiZ0NvbG9y
LCBiZ0xheWVyLCB2aWV3KCkuYmFja2dyb3VuZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwg
Q29tcG9zaXRlU291cmNlT3Zlciwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CisgICAgYXV0byYg
c3R5bGUgPSByb290QmFja2dyb3VuZFJlbmRlcmVyLT5zdHlsZSgpOworICAgIGF1dG8gY29sb3Ig
PSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OworICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGNvbG9yLCBzdHlsZS5iYWNrZ3JvdW5k
TGF5ZXJzKCksIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKIH0KIAogQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTE0NDksMTIgKzE0NDgs
MTMgQEAgYm9vbCBSZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0ZW50KGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3UKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS0+aW1hZ2UoKSB8fCBzdHls
ZSgpLmJhY2tncm91bmRMYXllcnMoKS0+bmV4dCgpKSB7CisgICAgYXV0byYgbGF5ZXJzID0gc3R5
bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgaWYgKCFsYXllcnMuaW1hZ2UoKSB8fCBsYXll
cnMubmV4dCgpKSB7CiAgICAgICAgIHBhaW50ZWRFeHRlbnQgPSAgYmFja2dyb3VuZFJlY3Q7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5
IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkobnVsbHB0ciwgKnN0
eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludE9mZnNldCwgYmFja2dyb3VuZFJlY3QpOwor
ICAgIGF1dG8gZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxs
cHRyLCBsYXllcnMsIHBhaW50T2Zmc2V0LCBiYWNrZ3JvdW5kUmVjdCk7CiAgICAgcGFpbnRlZEV4
dGVudCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiAgICAgcmV0dXJuICFnZW9tZXRyeS5oYXNOb25M
b2NhbEdlb21ldHJ5KCk7CiB9CkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBib29sIFJlbmRlckJveDo6
YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2Fs
UmVjdCkgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoZSBi
YWNrZ3JvdW5kIGNvbG9yIGNsaXAgaXMgZGVmaW5lZCBieSB0aGUgbGFzdCBsYXllci4KLSAgICBp
ZiAoc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkKKyAgICBpZiAoc3R5bGUoKS5i
YWNrZ3JvdW5kTGF5ZXJzKCkubmV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTGF5
b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdDsKICAgICBzd2l0Y2ggKHN0eWxlKCkuYmFja2dyb3VuZENs
aXAoKSkgewpAQCAtMTU3NCwxOSArMTU3NCwxOSBAQCBib29sIFJlbmRlckJveDo6Y29tcHV0ZUJh
Y2tncm91bmRJc0tub3duVG9CZU9ic2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgog
CiBib29sIFJlbmRlckJveDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIHsK
LSAgICBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciA9IHN0eWxlKCkuYmFja2dyb3VuZExheWVy
cygpOwotICAgIGlmICghZmlsbExheWVyIHx8IGZpbGxMYXllci0+Y2xpcCgpICE9IEJvcmRlckZp
bGxCb3gpCisgICAgYXV0byYgZmlsbExheWVyID0gc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCk7
CisgICAgaWYgKGZpbGxMYXllci5jbGlwKCkgIT0gQm9yZGVyRmlsbEJveCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gQ2xpcHBlZCB3aXRoIGxvY2FsIHNjcm9sbGluZwotICAgIGlm
IChoYXNPdmVyZmxvd0NsaXAoKSAmJiBmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSA9PSBMb2NhbEJh
Y2tncm91bmRBdHRhY2htZW50KQorICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSAmJiBmaWxsTGF5
ZXIuYXR0YWNobWVudCgpID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChmaWxsTGF5ZXItPmhhc09wYXF1ZUltYWdlKCp0aGlzKSAm
JiBmaWxsTGF5ZXItPmhhc1JlcGVhdFhZKCkgJiYgZmlsbExheWVyLT5pbWFnZSgpLT5jYW5SZW5k
ZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKQorICAgIGlmIChmaWxsTGF5ZXIuaGFz
T3BhcXVlSW1hZ2UoKnRoaXMpICYmIGZpbGxMYXllci5oYXNSZXBlYXRYWSgpICYmIGZpbGxMYXll
ci5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgb25lIGxheWVyIGFu
ZCBubyBpbWFnZSwgY2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUu
Ci0gICAgaWYgKCFmaWxsTGF5ZXItPm5leHQoKSAmJiAhZmlsbExheWVyLT5oYXNJbWFnZSgpKSB7
CisgICAgaWYgKCFmaWxsTGF5ZXIubmV4dCgpICYmICFmaWxsTGF5ZXIuaGFzSW1hZ2UoKSkgewog
ICAgICAgICBDb2xvciBiZ0NvbG9yID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBpZiAoYmdDb2xvci5pc09wYXF1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjI1LDE1ICsxNjI1LDEyIEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFJlY3QmIHBhCiAgICAgCiAgICAgaWYgKCFjb21wb3NpdGVkTWFzayB8fCBmbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpIHsKICAgICAgICAgcHVzaFRyYW5zcGFyZW5jeUxheWVyID0g
dHJ1ZTsKLSAgICAgICAgU3R5bGVJbWFnZSogbWFza0JveEltYWdlID0gc3R5bGUoKS5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpOwotICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllcnMgPSBz
dHlsZSgpLm1hc2tMYXllcnMoKTsKIAogICAgICAgICAvLyBEb24ndCByZW5kZXIgYSBtYXNrZWQg
ZWxlbWVudCB1bnRpbCBhbGwgdGhlIG1hc2sgaW1hZ2VzIGhhdmUgbG9hZGVkLCB0byBwcmV2ZW50
IGEgZmxhc2ggb2YgdW5tYXNrZWQgY29udGVudC4KLSAgICAgICAgaWYgKG1hc2tCb3hJbWFnZSkK
KyAgICAgICAgaWYgKGF1dG8qIG1hc2tCb3hJbWFnZSA9IHN0eWxlKCkubWFza0JveEltYWdlKCku
aW1hZ2UoKSkKICAgICAgICAgICAgIGFsbE1hc2tJbWFnZXNMb2FkZWQgJj0gbWFza0JveEltYWdl
LT5pc0xvYWRlZCgpOwogCi0gICAgICAgIGlmIChtYXNrTGF5ZXJzKQotICAgICAgICAgICAgYWxs
TWFza0ltYWdlc0xvYWRlZCAmPSBtYXNrTGF5ZXJzLT5pbWFnZXNBcmVMb2FkZWQoKTsKKyAgICAg
ICAgYWxsTWFza0ltYWdlc0xvYWRlZCAmPSBzdHlsZSgpLm1hc2tMYXllcnMoKS5pbWFnZXNBcmVM
b2FkZWQoKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwpAQCAtMTY2Miw3MSArMTY1OSw2OSBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKICAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdDsKICAgICBMYXlvdXRSZWN0IGJvcmRl
ckJveCA9IGJvcmRlckJveFJlY3QoKTsKLSAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogbWFza0xh
eWVyID0gc3R5bGUoKS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xh
eWVyLT5uZXh0KCkpIHsKKyAgICBmb3IgKGF1dG8qIG1hc2tMYXllciA9ICZzdHlsZSgpLm1hc2tM
YXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5leHQoKSkgewogICAg
ICAgICBpZiAobWFza0xheWVyLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAvLyBNYXNrcyBzaG91
bGQgbmV2ZXIgaGF2ZSBmaXhlZCBhdHRhY2htZW50LCBzbyBpdCdzIE9LIGZvciBwYWludENvbnRh
aW5lciB0byBiZSBudWxsLgotICAgICAgICAgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgZ2Vv
bWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqbWFza0xh
eWVyLCBwYWludE9mZnNldCwgYm9yZGVyQm94KTsKLSAgICAgICAgICAgIHJlc3VsdC51bml0ZShn
ZW9tZXRyeS5kZXN0UmVjdCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC51bml0ZShjYWxjdWxhdGVC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAqbWFza0xheWVyLCBwYWludE9mZnNldCwg
Ym9yZGVyQm94KS5kZXN0UmVjdCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJz
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZp
bGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJl
bmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpCiB7CiAgICAgVmVjdG9yPGNvbnN0IEZpbGxM
YXllciosIDg+IGxheWVyczsKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGN1ckxheWVyID0gZmlsbExh
eWVyOwogICAgIGJvb2wgc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyID0gZmFs
c2U7Ci0gICAgd2hpbGUgKGN1ckxheWVyKSB7Ci0gICAgICAgIGxheWVycy5hcHBlbmQoY3VyTGF5
ZXIpOworCisgICAgZm9yIChhdXRvKiBsYXllciA9ICZmaWxsTGF5ZXI7IGxheWVyOyBsYXllciA9
IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgbGF5ZXJzLmFwcGVuZChsYXllcik7CisKKyAgICAg
ICAgaWYgKGxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgICAg
ICBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIgPSB0cnVlOworCiAgICAgICAg
IC8vIFN0b3AgdHJhdmVyc2FsIHdoZW4gYW4gb3BhcXVlIGxheWVyIGlzIGVuY291bnRlcmVkLgot
ICAgICAgICAvLyBGSVhNRSA6IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9sbG93aW5n
IG9jY2x1c2lvbiBjdWxsaW5nIHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIAorICAgICAgICAv
LyBGSVhNRTogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xsb3dpbmcgb2NjbHVzaW9u
IGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUKICAgICAgICAgLy8gb24gbGF5ZXJz
IHdpdGggbm8gcmVwZWF0IGJ5IHRlc3Rpbmcgd2hldGhlciB0aGUgaW1hZ2UgY292ZXJzIHRoZSBs
YXlvdXQgcmVjdC4KICAgICAgICAgLy8gVGVzdGluZyB0aGF0IGhlcmUgd291bGQgaW1wbHkgZHVw
bGljYXRpbmcgYSBsb3Qgb2YgY2FsY3VsYXRpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBkb25lIGlu
CiAgICAgICAgIC8vIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
LiBBIG1vcmUgZWZmaWNpZW50IHNvbHV0aW9uIG1pZ2h0IGJlIHRvIG1vdmUKICAgICAgICAgLy8g
dGhlIGxheWVyIHJlY3Vyc2lvbiBpbnRvIHBhaW50RmlsbExheWVyRXh0ZW5kZWQsIG9yIHRvIGNv
bXB1dGUgdGhlIGxheWVyIGdlb21ldHJ5IGhlcmUKICAgICAgICAgLy8gYW5kIHBhc3MgaXQgZG93
bi4KIAotICAgICAgICBpZiAoIXNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciAm
JiBjdXJMYXllci0+YmxlbmRNb2RlKCkgIT0gQmxlbmRNb2RlTm9ybWFsKQotICAgICAgICAgICAg
c2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyID0gdHJ1ZTsKLQogICAgICAgICAv
LyBUaGUgY2xpcE9jY2x1ZGVzTmV4dExheWVycyBjb25kaXRpb24gbXVzdCBiZSBldmFsdWF0ZWQg
Zmlyc3QgdG8gYXZvaWQgc2hvcnQtY2lyY3VpdGluZy4KLSAgICAgICAgaWYgKGN1ckxheWVyLT5j
bGlwT2NjbHVkZXNOZXh0TGF5ZXJzKGN1ckxheWVyID09IGZpbGxMYXllcikgJiYgY3VyTGF5ZXIt
Pmhhc09wYXF1ZUltYWdlKCp0aGlzKSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRo
aXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSAmJiBjdXJMYXllci0+aGFzUmVwZWF0WFkoKSAm
JiBjdXJMYXllci0+YmxlbmRNb2RlKCkgPT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICBpZiAo
bGF5ZXItPmNsaXBPY2NsdWRlc05leHRMYXllcnMobGF5ZXIgPT0gJmZpbGxMYXllcikgJiYgbGF5
ZXItPmhhc09wYXF1ZUltYWdlKCp0aGlzKSAmJiBsYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRo
aXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSAmJiBsYXllci0+aGFzUmVwZWF0WFkoKSAmJiBs
YXllci0+YmxlbmRNb2RlKCkgPT0gQmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKTsKICAgICB9CiAKLSAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotICAgIEJhc2VCYWNr
Z3JvdW5kQ29sb3JVc2FnZSBiYXNlQmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVz
ZTsKKyAgICBhdXRvJiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBhdXRvIGJh
c2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNlOwogCiAgICAgaWYgKHNob3Vs
ZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlcikgewotICAgICAgICBwYWludEZpbGxMYXll
cihwYWludEluZm8sIGMsICpsYXllcnMucmJlZ2luKCksIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBv
cCwgYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvck9ubHkpOworICAgICAgICBw
YWludEZpbGxMYXllcihwYWludEluZm8sIGNvbG9yLCAqbGF5ZXJzLmxhc3QoKSwgcmVjdCwgYmxl
ZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25s
eSk7CiAgICAgICAgIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsK
ICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIAotICAg
IFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciB0b3BMYXll
ciA9IGxheWVycy5yZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8Y29uc3QgRmlsbExheWVyKj46OmNv
bnN0X3JldmVyc2VfaXRlcmF0b3IgaXQgPSBsYXllcnMucmJlZ2luKCk7IGl0ICE9IHRvcExheWVy
OyArK2l0KQotICAgICAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsICppdCwgcmVjdCwg
YmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsK
KyAgICBhdXRvIHRvcExheWVyID0gbGF5ZXJzLnJlbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBs
YXllcnMucmJlZ2luKCk7IGl0ICE9IHRvcExheWVyOyArK2l0KQorICAgICAgICBwYWludEZpbGxM
YXllcihwYWludEluZm8sIGNvbG9yLCAqKml0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJh
Y2tncm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogCiAgICAgaWYgKHNob3VsZERyYXdC
YWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlcikKICAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVu
Y3lMYXllcigpOwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxM
YXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxM
YXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZp
bGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJl
bmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBi
YXNlQmdDb2xvclVzYWdlKQogewogICAgIHBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZv
LCBjLCBmaWxsTGF5ZXIsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBudWxscHRyLCBMYXlvdXRTaXpl
KCksIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIH0KIAotc3RhdGlj
IGJvb2wgbGF5ZXJzVXNlSW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5
ZXIqIGxheWVycykKK3N0YXRpYyBib29sIGxheWVyc1VzZUltYWdlKFdyYXBwZWRJbWFnZVB0ciBp
bWFnZSwgY29uc3QgRmlsbExheWVyJiBsYXllcnMpCiB7Ci0gICAgZm9yIChjb25zdCBGaWxsTGF5
ZXIqIGN1ckxheWVyID0gbGF5ZXJzOyBjdXJMYXllcjsgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4
dCgpKSB7Ci0gICAgICAgIGlmIChjdXJMYXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBjdXJMYXll
ci0+aW1hZ2UoKS0+ZGF0YSgpKQorICAgIGZvciAoYXV0byogbGF5ZXIgPSAmbGF5ZXJzOyBsYXll
cjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChsYXllci0+aW1hZ2UoKSAm
JiBpbWFnZSA9PSBsYXllci0+aW1hZ2UoKS0+ZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzYwLDEzICsxNzU1LDEz
IEBAIHZvaWQgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBj
b25zdCBJbnRSZWN0KikKICAgICAgICAgbGF5ZXIoKS0+Y29udGVudENoYW5nZWQoQmFja2dyb3Vu
ZEltYWdlQ2hhbmdlZCk7CiB9CiAKLWJvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0Zv
ckltYWdlKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyKiBsYXllcnMsIGJv
b2wgZHJhd2luZ0JhY2tncm91bmQpCitib29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNG
b3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciYgbGF5ZXJzLCBi
b29sIGRyYXdpbmdCYWNrZ3JvdW5kKQogewogICAgIExheW91dFJlY3QgcmVuZGVyZXJSZWN0Owog
ICAgIFJlbmRlckJveCogbGF5ZXJSZW5kZXJlciA9IG51bGxwdHI7CiAKLSAgICBmb3IgKGNvbnN0
IEZpbGxMYXllciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1ckxheWVyOyBjdXJMYXllciA9IGN1ckxh
eWVyLT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGN1ckxheWVyLT5pbWFnZSgpICYmIGltYWdlID09
IGN1ckxheWVyLT5pbWFnZSgpLT5kYXRhKCkgJiYgY3VyTGF5ZXItPmltYWdlKCktPmNhblJlbmRl
cih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkpIHsKKyAgICBmb3IgKGF1dG8qIGxheWVy
ID0gJmxheWVyczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAo
bGF5ZXItPmltYWdlKCkgJiYgaW1hZ2UgPT0gbGF5ZXItPmltYWdlKCktPmRhdGEoKSAmJiBsYXll
ci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkgewog
ICAgICAgICAgICAgLy8gTm93IHRoYXQgd2Uga25vdyB0aGlzIGltYWdlIGlzIGJlaW5nIHVzZWQs
IGNvbXB1dGUgdGhlIHJlbmRlcmVyIGFuZCB0aGUgcmVjdCBpZiB3ZSBoYXZlbid0IGFscmVhZHku
CiAgICAgICAgICAgICBib29sIGRyYXdpbmdSb290QmFja2dyb3VuZCA9IGRyYXdpbmdCYWNrZ3Jv
dW5kICYmIChpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkgfHwgKGlzQm9keSgpICYmICFkb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpLT5oYXNCYWNrZ3JvdW5kKCkpKTsK
ICAgICAgICAgICAgIGlmICghbGF5ZXJSZW5kZXJlcikgewpAQCAtMTc4Niw3ICsxNzgxLDcgQEAg
Ym9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRy
IGltYWdlLCBjb25zdCBGaWxsTGF5ZXIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gcGFzcyBhYnNvbHV0ZSBw
b3NpdGlvbiB0byBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSAoZm9yIHBpeGVsIHNu
YXBwaW5nKQotICAgICAgICAgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgZ2VvbWV0cnkgPSBs
YXllclJlbmRlcmVyLT5jYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShudWxscHRyLCAq
Y3VyTGF5ZXIsIExheW91dFBvaW50KCksIHJlbmRlcmVyUmVjdCk7CisgICAgICAgICAgICBCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGxheWVyUmVuZGVyZXItPmNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KG51bGxwdHIsICpsYXllciwgTGF5b3V0UG9pbnQoKSwgcmVu
ZGVyZXJSZWN0KTsKICAgICAgICAgICAgIGlmIChnZW9tZXRyeS5oYXNOb25Mb2NhbEdlb21ldHJ5
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBSYXRoZXIgdGhhbiBpbmN1ciB0aGUgY29zdHMgb2Yg
Y29tcHV0aW5nIHRoZSBwYWludENvbnRhaW5lciBmb3IgcmVuZGVyZXJzIHdpdGggZml4ZWQgYmFj
a2dyb3VuZHMKICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciB0byBnZXQgdGhlIHJpZ2h0IGRl
c3RSZWN0LCBqdXN0IHJlcGFpbnQgdGhlIGVudGlyZSByZW5kZXJlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCA0ZjU1NDlkODBkZjViYjNlZGM4Y2M1NTJhMDI1ZDA1NWI5
Mzk5YmYxLi4xMDAxNDI3MjEwYjZkYjc0OTg0ODY1NTE0NzVkN2Q3N2QzOGNjOTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02MjcsOCArNjI3LDggQEAgcHJvdGVjdGVk
OgogCiAgICAgdm9pZCBwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUp
OwogICAgIAotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
Q29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3Vu
ZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVz
ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0
cik7CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2Jq
ZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNlKTsK
KyAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRyKTsK
IAogICAgIHZvaWQgcGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFJlY3QmKTsKIApAQCAtNjY3LDggKzY2Nyw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU2Ny
b2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB3ZSBkaWQgYSBmdWxsIHJlcGFpbnQKLSAgICBib29sIHJlcGFpbnRMYXll
clJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxh
eWVycywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCk7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdl
IGRpZCBhIGZ1bGwgcmVwYWludC4KKyAgICBib29sIHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2Uo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBGaWxsTGF5ZXImIGxheWVycywgYm9vbCBkcmF3aW5nQmFj
a2dyb3VuZCk7CiAKICAgICBib29sIHNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0
Q2FsY3VsYXRpb24oY29uc3QgUmVuZGVyQm94JiBjb250YWluaW5nQmxvY2ssIGJvb2wgaXNQZXJw
ZW5kaWN1bGFyV3JpdGluZ01vZGUpIGNvbnN0OwogICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1YzY1OWI3MmNhOWQwNzdm
YjY3MmE2NzIyNWEzYzUyM2RlMWEwMTY4Li4xZjRkMGM1ZmM5ZDVhNWFhZWM5N2RhYWY3OTZhNjU5
M2FhYmJkYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBj
b25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgYmdMYXll
ciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Ug
YmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0U2l6ZSYgYm94
U2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBiYXNlQmdDb2xvclVzYWdlKQogewogICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CkBAIC02MzUsMTIg
KzYzNSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIGJvb2wgaW5jbHVkZVJpZ2h0
RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UoKSA6IHRydWU7CiAKICAg
ICBib29sIGhhc1JvdW5kZWRCb3JkZXIgPSBzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpICYmIChp
bmNsdWRlTGVmdEVkZ2UgfHwgaW5jbHVkZVJpZ2h0RWRnZSk7Ci0gICAgYm9vbCBjbGlwcGVkV2l0
aExvY2FsU2Nyb2xsaW5nID0gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgYmdMYXllci0+YXR0YWNobWVu
dCgpID09IExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQ7Ci0gICAgYm9vbCBpc0JvcmRlckZpbGwg
PSBiZ0xheWVyLT5jbGlwKCkgPT0gQm9yZGVyRmlsbEJveDsKKyAgICBib29sIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcgPSBoYXNPdmVyZmxvd0NsaXAoKSAmJiBiZ0xheWVyLmF0dGFjaG1lbnQo
KSA9PSBMb2NhbEJhY2tncm91bmRBdHRhY2htZW50OworICAgIGJvb2wgaXNCb3JkZXJGaWxsID0g
YmdMYXllci5jbGlwKCkgPT0gQm9yZGVyRmlsbEJveDsKICAgICBib29sIGlzUm9vdCA9IHRoaXMt
PmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKTsKIAogICAgIENvbG9yIGJnQ29sb3IgPSBjb2xv
cjsKLSAgICBTdHlsZUltYWdlKiBiZ0ltYWdlID0gYmdMYXllci0+aW1hZ2UoKTsKKyAgICBTdHls
ZUltYWdlKiBiZ0ltYWdlID0gYmdMYXllci5pbWFnZSgpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kSW1hZ2UgPSBiZ0ltYWdlICYmIGJnSW1hZ2UtPmNhblJlbmRlcih0aGlzLCBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgCiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRUb1do
aXRlID0gZmFsc2U7CkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28K
ICAgICAvLyB3aGlsZSByZW5kZXJpbmcuKQogICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRl
KSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCByZXVzZSB0aGlzIHZhcmlhYmxlIGJl
bG93IGJlY2F1c2UgdGhlIGJnQ29sb3IgbWlnaHQgYmUgY2hhbmdlZAotICAgICAgICBib29sIHNo
b3VsZFBhaW50QmFja2dyb3VuZENvbG9yID0gIWJnTGF5ZXItPm5leHQoKSAmJiBiZ0NvbG9yLmlz
VmlzaWJsZSgpOworICAgICAgICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yID0gIWJn
TGF5ZXIubmV4dCgpICYmIGJnQ29sb3IuaXNWaXNpYmxlKCk7CiAgICAgICAgIGlmIChzaG91bGRQ
YWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWludEJhY2tncm91bmRDb2xvcikgewogICAg
ICAgICAgICAgYmdDb2xvciA9IENvbG9yOjp3aGl0ZTsKICAgICAgICAgICAgIHNob3VsZFBhaW50
QmFja2dyb3VuZEltYWdlID0gZmFsc2U7CkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY28KICAgICB9CiAKICAgICBib29sIGJhc2VCZ0NvbG9yT25seSA9IChiYXNlQmdD
b2xvclVzYWdlID09IEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5KTsKLSAgICBpZiAoYmFzZUJnQ29s
b3JPbmx5ICYmICghaXNSb290IHx8IGJnTGF5ZXItPm5leHQoKSB8fCBiZ0NvbG9yLmlzT3BhcXVl
KCkpKQorICAgIGlmIChiYXNlQmdDb2xvck9ubHkgJiYgKCFpc1Jvb3QgfHwgYmdMYXllci5uZXh0
KCkgfHwgYmdDb2xvci5pc09wYXF1ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBj
b2xvclZpc2libGUgPSBiZ0NvbG9yLmlzVmlzaWJsZSgpOwpAQCAtNjc2LDcgKzY3Niw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZFJlY3QgPSBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIC8v
IEZhc3QgcGF0aCBmb3IgZHJhd2luZyBzaW1wbGUgY29sb3IgYmFja2dyb3VuZHMuCi0gICAgaWYg
KCFpc1Jvb3QgJiYgIWNsaXBwZWRXaXRoTG9jYWxTY3JvbGxpbmcgJiYgIXNob3VsZFBhaW50QmFj
a2dyb3VuZEltYWdlICYmIGlzQm9yZGVyRmlsbCAmJiAhYmdMYXllci0+bmV4dCgpKSB7CisgICAg
aWYgKCFpc1Jvb3QgJiYgIWNsaXBwZWRXaXRoTG9jYWxTY3JvbGxpbmcgJiYgIXNob3VsZFBhaW50
QmFja2dyb3VuZEltYWdlICYmIGlzQm9yZGVyRmlsbCAmJiAhYmdMYXllci5uZXh0KCkpIHsKICAg
ICAgICAgaWYgKCFjb2xvclZpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTcwOSwx
MCArNzA5LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIFJvdW5kZWRSZWN0
IGJvcmRlciA9IGlzQm9yZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9y
QmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6
ZSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKSA6IGdldEJhY2tncm91bmRSb3Vu
ZGVkUmVjdChyZWN0LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5j
bHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKIAogICAgICAgICAvLyBDbGlwIHRvIHRo
ZSBwYWRkaW5nIG9yIGNvbnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgotICAgICAgICBpZiAoYmdM
YXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CisgICAgICAgIGlmIChiZ0xheWVyLmNs
aXAoKSA9PSBDb250ZW50RmlsbEJveCkgewogICAgICAgICAgICAgYm9yZGVyID0gc3R5bGUoKS5n
ZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyLnJlY3QoKSwKICAgICAgICAgICAgICAgICBw
YWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9t
KCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgpICsgYm9yZGVy
UmlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3gpCisgICAgICAgIH0gZWxz
ZSBpZiAoYmdMYXllci5jbGlwKCkgPT0gUGFkZGluZ0ZpbGxCb3gpCiAgICAgICAgICAgICBib3Jk
ZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXIucmVjdCgpLCBpbmNs
dWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgICAgIGNsaXBSb3VuZGVkSW5u
ZXJSZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QsIGJvcmRlci5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CkBAIC03NDAsMTAgKzc0MCwx
MCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFza1JlY3Q7CiAKLSAgICBpZiAoYmdMYXll
ci0+Y2xpcCgpID09IFBhZGRpbmdGaWxsQm94IHx8IGJnTGF5ZXItPmNsaXAoKSA9PSBDb250ZW50
RmlsbEJveCkgeworICAgIGlmIChiZ0xheWVyLmNsaXAoKSA9PSBQYWRkaW5nRmlsbEJveCB8fCBi
Z0xheWVyLmNsaXAoKSA9PSBDb250ZW50RmlsbEJveCkgewogICAgICAgICAvLyBDbGlwIHRvIHRo
ZSBwYWRkaW5nIG9yIGNvbnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoIWNs
aXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICAgICAgYm9vbCBpbmNsdWRlUGFkZGluZyA9IGJn
TGF5ZXItPmNsaXAoKSA9PSBDb250ZW50RmlsbEJveDsKKyAgICAgICAgICAgIGJvb2wgaW5jbHVk
ZVBhZGRpbmcgPSBiZ0xheWVyLmNsaXAoKSA9PSBDb250ZW50RmlsbEJveDsKICAgICAgICAgICAg
IExheW91dFJlY3QgY2xpcFJlY3QgPSBMYXlvdXRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0LngoKSAr
IGJMZWZ0ICsgKGluY2x1ZGVQYWRkaW5nID8gcExlZnQgOiBMYXlvdXRVbml0KCkpLAogICAgICAg
ICAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnkoKSArIGJvcmRlclRvcCgpICsgKGluY2x1ZGVQ
YWRkaW5nID8gcGFkZGluZ1RvcCgpIDogTGF5b3V0VW5pdCgpKSwKICAgICAgICAgICAgICAgICBz
Y3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBiUmlnaHQgLSAoaW5jbHVkZVBhZGRp
bmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSksCkBAIC03NTEsNyArNzUxLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIGJhY2tncm91bmRDbGlwU3RhdGVT
YXZlci5zYXZlKCk7CiAgICAgICAgICAgICBjb250ZXh0LmNsaXAoY2xpcFJlY3QpOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAg
ICB9IGVsc2UgaWYgKGJnTGF5ZXIuY2xpcCgpID09IFRleHRGaWxsQm94KSB7CiAgICAgICAgIC8v
IFdlIGhhdmUgdG8gZHJhdyBvdXIgdGV4dCBpbnRvIGEgbWFzayB0aGF0IGNhbiB0aGVuIGJlIHVz
ZWQgdG8gY2xpcCBiYWNrZ3JvdW5kIGRyYXdpbmcuCiAgICAgICAgIC8vIEZpcnN0IGZpZ3VyZSBv
dXQgaG93IGJpZyB0aGUgbWFzayBoYXMgdG8gYmUuICBJdCBzaG91bGQgYmUgbm8gYmlnZ2VyIHRo
YW4gd2hhdCB3ZSBuZWVkCiAgICAgICAgIC8vIHRvIGFjdHVhbGx5IHJlbmRlciwgc28gd2Ugc2hv
dWxkIGludGVyc2VjdCB0aGUgZGlydHkgcmVjdCB3aXRoIHRoZSBib3JkZXIgYm94IG9mIHRoZSBi
YWNrZ3JvdW5kLgpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAg
ICAgYm9vbCBpc09wYXF1ZVJvb3QgPSBmYWxzZTsKICAgICBpZiAoaXNSb290KSB7CiAgICAgICAg
IGlzT3BhcXVlUm9vdCA9IHRydWU7Ci0gICAgICAgIGlmICghYmdMYXllci0+bmV4dCgpICYmICFi
Z0NvbG9yLmlzT3BhcXVlKCkpIHsKKyAgICAgICAgaWYgKCFiZ0xheWVyLm5leHQoKSAmJiAhYmdD
b2xvci5pc09wYXF1ZSgpKSB7CiAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCA9IGRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CiAgICAgICAgICAgICBpZiAo
b3duZXJFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFvd25lckVsZW1lbnQtPmhhc1Rh
Z05hbWUoZnJhbWVUYWcpKSB7CkBAIC03OTgsMTIgKzc5OCwxMiBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjbwogICAgIH0KIAogICAgIC8vIFBhaW50IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5lYXRo
IGFsbCBpbWFnZXMsIGN1bGxlZCBpZiBiYWNrZ3JvdW5kIGltYWdlIG9jY2x1ZGVzIGl0LgotICAg
IC8vIEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291
bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0CisgICAgLy8gRklYTUU6IEluIHRoZSBiZ0xheWVy
Lmhhc0Zpbml0ZUJvdW5kcygpIGNhc2UsIHdlIGNvdWxkIGltcHJvdmUgdGhlIGN1bGxpbmcgdGVz
dAogICAgIC8vIGJ5IHZlcmlmeWluZyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGNvdmVy
cyB0aGUgZW50aXJlIGxheW91dCByZWN0LgotICAgIGlmICghYmdMYXllci0+bmV4dCgpKSB7Cisg
ICAgaWYgKCFiZ0xheWVyLm5leHQoKSkgewogICAgICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRS
ZWN0KHNjcm9sbGVkUGFpbnRSZWN0KTsKICAgICAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFw
cGxpZWRUb0JhY2tncm91bmQgPSB0aGlzLT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQocmVjdC5sb2NhdGlvbigpLCBibGVlZEF2b2lkYW5jZSwgYm94KTsKLSAgICAgICAgaWYg
KGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCB8fCAhc2hvdWxkUGFpbnRCYWNr
Z3JvdW5kSW1hZ2UgfHwgIWJnTGF5ZXItPmhhc09wYXF1ZUltYWdlKCp0aGlzKSB8fCAhYmdMYXll
ci0+aGFzUmVwZWF0WFkoKSkgeworICAgICAgICBpZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVk
VG9CYWNrZ3JvdW5kIHx8ICFzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCAhYmdMYXllci5o
YXNPcGFxdWVJbWFnZSgqdGhpcykgfHwgIWJnTGF5ZXIuaGFzUmVwZWF0WFkoKSkgewogICAgICAg
ICAgICAgaWYgKCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAg
ICAgICAgICAgYmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKIApAQCAt
ODI0LDEwICs4MjQsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgaWYg
KGJhc2VDb2xvci5pc1Zpc2libGUoKSkgewogICAgICAgICAgICAgICAgIGlmICghYmFzZUJnQ29s
b3JPbmx5ICYmIGJnQ29sb3IuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJhc2VD
b2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKLQogICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9yLCBDb21wb3Np
dGVDb3B5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBiZ0Nv
bG9yLmlzVmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3Bl
cmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQu
Y29tcG9zaXRlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICAgICAgYXV0byBvcGVyYXRpb24gPSBz
aG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVP
cGVyYXRpb24oKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRS
ZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZENsZWFyQmFja2dyb3VuZCkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFy
UmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nKTsKQEAgLTgzNiwxOSArODM1LDE5IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAKICAgICAvLyBubyBwcm9ncmVzc2l2ZSBsb2FkaW5nIG9m
IHRoZSBiYWNrZ3JvdW5kIGltYWdlCiAgICAgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgc2hvdWxk
UGFpbnRCYWNrZ3JvdW5kSW1hZ2UpIHsKLSAgICAgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
Z2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludEluZm8ucGFp
bnRDb250YWluZXIsICpiZ0xheWVyLCByZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFpbnRSZWN0
LCBiYWNrZ3JvdW5kT2JqZWN0KTsKKyAgICAgICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWludENvbnRhaW5lciwgYmdMYXllciwg
cmVjdC5sb2NhdGlvbigpLCBzY3JvbGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVjdCk7CiAg
ICAgICAgIGdlb21ldHJ5LmNsaXAoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRSZWN0KSk7CiAgICAg
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgICAgIGlmICghZ2VvbWV0cnkuZGVzdFJlY3Qo
KS5pc0VtcHR5KCkgJiYgKGltYWdlID0gYmdJbWFnZS0+aW1hZ2UoYmFja2dyb3VuZE9iamVjdCA/
IGJhY2tncm91bmRPYmplY3QgOiB0aGlzLCBnZW9tZXRyeS50aWxlU2l6ZSgpKSkpIHsKLSAgICAg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291
cmNlT3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7Ci0gICAgICAgICAgICBjb250ZXh0
LnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CisgICAgICAgICAgICBhdXRvIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciA/IGJnTGF5ZXIuY29tcG9zaXRlKCkgOiBvcDsKKyAgICAgICAgICAgIGNvbnRl
eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci5tYXNrU291cmNlVHlwZSgpID09IE1hc2tM
dW1pbmFuY2UpOwogCi0gICAgICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xheWVy
LCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1h
Z2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJl
bGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgp
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCks
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAg
ICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250
ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xh
eW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCks
IGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwg
YmdMYXllci5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVy
cG9sYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtYXNrSW1hZ2UgJiYgYmdM
YXllci0+Y2xpcCgpID09IFRleHRGaWxsQm94KSB7CisgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xh
eWVyLmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICBjb250ZXh0LmRyYXdDb25zdW1p
bmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKG1hc2tJbWFnZSksIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0
aW5hdGlvbkluKTsKICAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAg
IH0KQEAgLTk2MSw4ICs5NjAsOCBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
YWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZQogICAgICAgICBj
YXNlIFNpemVMZW5ndGg6IHsKICAgICAgICAgICAgIExheW91dFNpemUgdGlsZVNpemUgPSBwb3Np
dGlvbmluZ0FyZWFTaXplOwogCi0gICAgICAgICAgICBMZW5ndGggbGF5ZXJXaWR0aCA9IGZpbGxM
YXllci5zaXplKCkuc2l6ZS53aWR0aCgpOwotICAgICAgICAgICAgTGVuZ3RoIGxheWVySGVpZ2h0
ID0gZmlsbExheWVyLnNpemUoKS5zaXplLmhlaWdodCgpOworICAgICAgICAgICAgTGVuZ3RoIGxh
eWVyV2lkdGggPSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUud2lkdGg7CisgICAgICAgICAgICBMZW5n
dGggbGF5ZXJIZWlnaHQgPSBmaWxsTGF5ZXIuc2l6ZSgpLnNpemUuaGVpZ2h0OwogCiAgICAgICAg
ICAgICBpZiAobGF5ZXJXaWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUu
c2V0V2lkdGgobGF5ZXJXaWR0aC52YWx1ZSgpKTsKQEAgLTk4Niw3ICs5ODUsNyBAQCBMYXlvdXRT
aXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmls
bExheWVyJiBmaWxsTGF5ZQogICAgICAgICAgICAgICAgIC8vIElmIGJvdGggd2lkdGggYW5kIGhl
aWdodCBhcmUgYXV0bywgdXNlIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplLgogICAgICAgICAg
ICAgICAgIHRpbGVTaXplID0gaW1hZ2VJbnRyaW5zaWNTaXplOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIHRpbGVTaXplLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
ICAgICAgICAgICAgIHJldHVybiB0aWxlU2l6ZTsKICAgICAgICAgfQpAQCAtMTE3MSw3ICsxMTcw
LDcgQEAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1
bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGMKICAgICBMYXlvdXRVbml0IGNvbXB1dGVkWFBv
c2l0aW9uID0gcmVzb2x2ZUVkZ2VSZWxhdGl2ZUxlbmd0aChmaWxsTGF5ZXIueFBvc2l0aW9uKCks
IGZpbGxMYXllci5iYWNrZ3JvdW5kWE9yaWdpbigpLCBhdmFpbGFibGVXaWR0aCwgcG9zaXRpb25p
bmdBcmVhU2l6ZSwgdGlsZVNpemUpOwogICAgIGlmIChiYWNrZ3JvdW5kUmVwZWF0WCA9PSBSb3Vu
ZEZpbGwgJiYgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpID4gMCAmJiB0aWxlU2l6ZS53aWR0
aCgpID4gMCkgewogICAgICAgICBpbnQgbnVtVGlsZXMgPSBzdGQ6Om1heCgxLCByb3VuZFRvSW50
KHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAvIHRpbGVTaXplLndpZHRoKCkpKTsKLSAgICAg
ICAgaWYgKGZpbGxMYXllci5zaXplKCkuc2l6ZS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBiYWNrZ3Jv
dW5kUmVwZWF0WSAhPSBSb3VuZEZpbGwpCisgICAgICAgIGlmIChmaWxsTGF5ZXIuc2l6ZSgpLnNp
emUuaGVpZ2h0LmlzQXV0bygpICYmIGJhY2tncm91bmRSZXBlYXRZICE9IFJvdW5kRmlsbCkKICAg
ICAgICAgICAgIHRpbGVTaXplLnNldEhlaWdodCh0aWxlU2l6ZS5oZWlnaHQoKSAqIHBvc2l0aW9u
aW5nQXJlYVNpemUud2lkdGgoKSAvIChudW1UaWxlcyAqIHRpbGVTaXplLndpZHRoKCkpKTsKIAog
ICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aChwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLyBu
dW1UaWxlcyk7CkBAIC0xMTgxLDcgKzExODAsNyBAQCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYwog
ICAgIExheW91dFVuaXQgY29tcHV0ZWRZUG9zaXRpb24gPSByZXNvbHZlRWRnZVJlbGF0aXZlTGVu
Z3RoKGZpbGxMYXllci55UG9zaXRpb24oKSwgZmlsbExheWVyLmJhY2tncm91bmRZT3JpZ2luKCks
IGF2YWlsYWJsZUhlaWdodCwgcG9zaXRpb25pbmdBcmVhU2l6ZSwgdGlsZVNpemUpOwogICAgIGlm
IChiYWNrZ3JvdW5kUmVwZWF0WSA9PSBSb3VuZEZpbGwgJiYgcG9zaXRpb25pbmdBcmVhU2l6ZS5o
ZWlnaHQoKSA+IDAgJiYgdGlsZVNpemUuaGVpZ2h0KCkgPiAwKSB7CiAgICAgICAgIGludCBudW1U
aWxlcyA9IHN0ZDo6bWF4KDEsIHJvdW5kVG9JbnQocG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQo
KSAvIHRpbGVTaXplLmhlaWdodCgpKSk7Ci0gICAgICAgIGlmIChmaWxsTGF5ZXIuc2l6ZSgpLnNp
emUud2lkdGgoKS5pc0F1dG8oKSAmJiBiYWNrZ3JvdW5kUmVwZWF0WCAhPSBSb3VuZEZpbGwpCisg
ICAgICAgIGlmIChmaWxsTGF5ZXIuc2l6ZSgpLnNpemUud2lkdGguaXNBdXRvKCkgJiYgYmFja2dy
b3VuZFJlcGVhdFggIT0gUm91bmRGaWxsKQogICAgICAgICAgICAgdGlsZVNpemUuc2V0V2lkdGgo
dGlsZVNpemUud2lkdGgoKSAqIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLyAobnVtVGls
ZXMgKiB0aWxlU2l6ZS5oZWlnaHQoKSkpOwogCiAgICAgICAgIHRpbGVTaXplLnNldEhlaWdodChw
b3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpIC8gbnVtVGlsZXMpOwpAQCAtMTI1MCw3ICsxMjQ5
LDcgQEAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1
bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGMKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEZsb2F0
UmVjdCYgZGVzdFJlY3QsIEZsb2F0U2l6ZSYgcGhhc2UsIEZsb2F0U2l6ZSYgdGlsZVNpemUpIGNv
bnN0CiB7CiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QoZGVzdFJlY3QpOwotICAgIEJhY2tncm91
bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0
cnkocGFpbnRDb250YWluZXIsICpzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRPZmZz
ZXQsIHBhaW50UmVjdCk7CisgICAgYXV0byBnZW9tZXRyeSA9IGNhbGN1bGF0ZUJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5KHBhaW50Q29udGFpbmVyLCBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwg
cGFpbnRPZmZzZXQsIHBhaW50UmVjdCk7CiAgICAgcGhhc2UgPSBnZW9tZXRyeS5waGFzZSgpOwog
ICAgIHRpbGVTaXplID0gZ2VvbWV0cnkudGlsZVNpemUoKTsKICAgICBkZXN0UmVjdCA9IGdlb21l
dHJ5LmRlc3RSZWN0KCk7CkBAIC0yMTcwLDggKzIxNjksOCBAQCBib29sIFJlbmRlckJveE1vZGVs
T2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0
UG9pbgogICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzT3BhcXVlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGNvbnN0IEZpbGxMYXllciogbGFzdEJhY2tncm91bmRMYXllciA9IHN0
eWxlKCkuYmFja2dyb3VuZExheWVycygpOwotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBuZXh0
ID0gbGFzdEJhY2tncm91bmRMYXllci0+bmV4dCgpOyBuZXh0OyBuZXh0ID0gbGFzdEJhY2tncm91
bmRMYXllci0+bmV4dCgpKQorICAgIGF1dG8qIGxhc3RCYWNrZ3JvdW5kTGF5ZXIgPSAmc3R5bGUo
KS5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgd2hpbGUgKGF1dG8qIG5leHQgPSBsYXN0QmFja2dy
b3VuZExheWVyLT5uZXh0KCkpCiAgICAgICAgIGxhc3RCYWNrZ3JvdW5kTGF5ZXIgPSBuZXh0Owog
CiAgICAgaWYgKGxhc3RCYWNrZ3JvdW5kTGF5ZXItPmNsaXAoKSAhPSBCb3JkZXJGaWxsQm94KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRl
eCA3OGY1MmVjNjBlODRlMzI3NDFjN2M0MzA4ZmEyZGM2N2I4NzBlNTExLi45M2VjMmNlOGE4MTA0
ODU3MzQwMjA0MGZhNDI5NzM1YmYyOTljOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91
bmRCbGVlZE5vbmUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKICAgICBib29sIHBhaW50TmluZVBpZWNlSW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgTmluZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgU2hhZG93U3R5bGUsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Ug
PSB0cnVlKTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IG51bGxwdHIsIGNvbnN0IExh
eW91dFNpemUmID0gTGF5b3V0U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRyLCBCYXNl
QmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNlKTsKKyAgICB2b2lk
IHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBj
b25zdCBGaWxsTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBJbmxpbmVGbG93Qm94KiA9IG51bGxwdHIsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0
U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVs
ZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRyLCBCYXNlQmFja2dyb3VuZENvbG9yVXNh
Z2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFk
b3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRl
UGFpbnRQb3N0aW9uLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0g
bnVsbHB0cikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAppbmRleCBlMjdiNDFhYjEwZWE4YTViZmUyZTYzMjcyODViNWE4ZjIxZjFiZjJkLi5mODQ3
ZmZkZThmZTVkMjZkNTNjNjFkOTU0NzU5NGI4ODRhNmM0ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMzUsMjIgKzEzNSwxOCBAQCBSZW5kZXJF
bGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbAogUmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQoKQogewogICAg
IGlmIChoYXNJbml0aWFsaXplZFN0eWxlKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5
ZXIqIGJnTGF5ZXIgPSBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgYmdMYXllcjsgYmdMYXll
ciA9IGJnTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJhY2tn
cm91bmRJbWFnZSA9IGJnTGF5ZXItPmltYWdlKCkpCisgICAgICAgIGZvciAoYXV0byogYmdMYXll
ciA9ICZtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgYmdMYXllcjsgYmdMYXllciA9IGJnTGF5
ZXItPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tncm91bmRJbWFnZSA9IGJn
TGF5ZXItPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlLT5yZW1vdmVD
bGllbnQodGhpcyk7CiAgICAgICAgIH0KLQotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciog
bWFza0xheWVyID0gbV9zdHlsZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0g
bWFza0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrSW1h
Z2UgPSBtYXNrTGF5ZXItPmltYWdlKCkpCisgICAgICAgIGZvciAoYXV0byogbWFza0xheWVyID0g
Jm1fc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+
bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbWFza0ltYWdlID0gbWFza0xheWVyLT5p
bWFnZSgpKQogICAgICAgICAgICAgICAgIG1hc2tJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlID0gbV9zdHls
ZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChhdXRvKiBib3JkZXJJbWFnZSA9
IG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgYm9yZGVySW1hZ2Ut
PnJlbW92ZUNsaWVudCh0aGlzKTsKLQotICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0JveElt
YWdlID0gbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAoYXV0byog
bWFza0JveEltYWdlID0gbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAg
ICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0KICAgICAgICAgaWYgKGF1dG8g
c2hhcGVWYWx1ZSA9IG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpIHsKICAgICAgICAgICAgIGlmIChh
dXRvIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgIHNo
YXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKQEAgLTMwMyw4ICsyOTksOCBAQCBTdHlsZURp
ZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCB1bnNpZwogICAgIH0KICAgICAKICAgICBpZiAoKGNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5RmlsdGVyKSAmJiBoYXNMYXllcigp
KSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpOwotICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0
ZWQoKSB8fCBsYXllci0+cGFpbnRzV2l0aEZpbHRlcnMoKSkKKyAgICAgICAgYXV0byYgbGF5ZXIg
PSAqZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCk7CisgICAg
ICAgIGlmICghbGF5ZXIuaXNDb21wb3NpdGVkKCkgfHwgbGF5ZXIucGFpbnRzV2l0aEZpbHRlcnMo
KSkKICAgICAgICAgICAgIGRpZmYgPSBzdGQ6Om1heChkaWZmLCBTdHlsZURpZmZlcmVuY2VSZXBh
aW50TGF5ZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkaWZmID0gc3RkOjptYXgoZGlm
ZiwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcik7CkBAIC0zNDEsMjEgKzMzNywyMCBA
QCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJl
bmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmKQogICAgIHJldHVybiBkaWZmID09IFN0eWxlRGlmZmVy
ZW5jZVJlcGFpbnQgfHwgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlUmVwYWludElmVGV4dE9yQm9y
ZGVyT3JPdXRsaW5lICYmIGhhc0ltbWVkaWF0ZU5vbldoaXRlc3BhY2VUZXh0Q2hpbGRPckJvcmRl
ck9yT3V0bGluZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVGaWxsSW1hZ2Vz
KGNvbnN0IEZpbGxMYXllciogb2xkTGF5ZXJzLCBjb25zdCBGaWxsTGF5ZXIqIG5ld0xheWVycykK
K3ZvaWQgUmVuZGVyRWxlbWVudDo6dXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqIG9s
ZExheWVycywgY29uc3QgRmlsbExheWVyJiBuZXdMYXllcnMpCiB7Ci0gICAgLy8gT3B0aW1pemUg
dGhlIGNvbW1vbiBjYXNlCi0gICAgaWYgKEZpbGxMYXllcjo6aW1hZ2VzSWRlbnRpY2FsKG9sZExh
eWVycywgbmV3TGF5ZXJzKSkKKyAgICAvLyBPcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2UuCisgICAg
aWYgKEZpbGxMYXllcjo6aW1hZ2VzSWRlbnRpY2FsKG9sZExheWVycywgJm5ld0xheWVycykpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBHbyB0aHJvdWdoIHRoZSBuZXcgbGF5ZXJzIGFu
ZCBhZGRDbGllbnRzIGZpcnN0LCB0byBhdm9pZCByZW1vdmluZyBhbGwgY2xpZW50cyBvZiBhbiBp
bWFnZS4KLSAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3Vyck5ldyA9IG5ld0xheWVyczsgY3Vy
ck5ldzsgY3Vyck5ldyA9IGN1cnJOZXctPm5leHQoKSkgewotICAgICAgICBpZiAoY3Vyck5ldy0+
aW1hZ2UoKSkKLSAgICAgICAgICAgIGN1cnJOZXctPmltYWdlKCktPmFkZENsaWVudCh0aGlzKTsK
KyAgICAvLyBBZGQgYmVmb3JlIHJlbW92aW5nLCB0byBhdm9pZCByZW1vdmluZyBhbGwgY2xpZW50
cyBvZiBhbiBpbWFnZSB0aGF0IGlzIGluIGJvdGggc2V0cy4KKyAgICBmb3IgKGF1dG8qIGxheWVy
ID0gJm5ld0xheWVyczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgeworICAgICAgICBp
ZiAobGF5ZXItPmltYWdlKCkpCisgICAgICAgICAgICBsYXllci0+aW1hZ2UoKS0+YWRkQ2xpZW50
KHRoaXMpOwogICAgIH0KLQotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyT2xkID0gb2xk
TGF5ZXJzOyBjdXJyT2xkOyBjdXJyT2xkID0gY3Vyck9sZC0+bmV4dCgpKSB7Ci0gICAgICAgIGlm
IChjdXJyT2xkLT5pbWFnZSgpKQotICAgICAgICAgICAgY3Vyck9sZC0+aW1hZ2UoKS0+cmVtb3Zl
Q2xpZW50KHRoaXMpOworICAgIGZvciAoYXV0byogbGF5ZXIgPSBvbGRMYXllcnM7IGxheWVyOyBs
YXllciA9IGxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbWFnZSgpKQorICAg
ICAgICAgICAgbGF5ZXItPmltYWdlKCktPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiB9CiAK
QEAgLTQwOSw4ICs0MDQsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKFJlbmRlclN0
eWxlJiYgc3R5bGUsIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaQogICAgIFN0eWxlOjps
b2FkUGVuZGluZ1Jlc291cmNlcyhzdHlsZSwgZG9jdW1lbnQoKSwgZWxlbWVudCgpKTsKIAogICAg
IHN0eWxlV2lsbENoYW5nZShkaWZmLCBzdHlsZSk7Ci0gICAgYXV0byBvbGRTdHlsZSA9IFdURk1v
dmUobV9zdHlsZSk7Ci0gICAgbV9zdHlsZSA9IFdURk1vdmUoc3R5bGUpOworICAgIGF1dG8gb2xk
U3R5bGUgPSBtX3N0eWxlLnJlcGxhY2UoV1RGTW92ZShzdHlsZSkpOwogICAgIGJvb2wgZGV0YWNo
ZWRGcm9tUGFyZW50ID0gIXBhcmVudCgpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGludmFsaWRh
dGUgdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2FjaGUgZm9yIGZsb3dzIHdoZW4gdGhlIGNvbnRpYW5p
bmcgYmxvY2sgY29udGV4dCBjaGFuZ2VzCkBAIC04MDcsNyArODAxLDcgQEAgdm9pZCBSZW5kZXJF
bGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oU3R5bGVQcm9wYWdhdGlv
blR5cGUgcHJvcGEKICAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIGVsZW1lbnRDaGlsZC5zdHlsZSgpLmRp
c3BsYXkoKSk7CiAgICAgICAgIGlmIChzdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkKLSAg
ICAgICAgICAgICAgICBuZXdTdHlsZS5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oJnN0eWxl
KCkpOworICAgICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJv
bShzdHlsZSgpKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50Q2hpbGQuc3R5bGUoKS5jb2x1bW5T
cGFuKCkpCiAgICAgICAgICAgICAgICAgbmV3U3R5bGUuc2V0Q29sdW1uU3BhbihDb2x1bW5TcGFu
QWxsKTsKICAgICAgICAgfQpAQCAtOTk5LDggKzk5Myw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBh
cmVDdXJzb3JzRXF1YWwoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBi
KQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgdXBkYXRlRmlsbEltYWdl
cyhvbGRTdHlsZSA/IG9sZFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkgOiBudWxscHRyLCBtX3N0
eWxlLmJhY2tncm91bmRMYXllcnMoKSk7Ci0gICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZSA/
IG9sZFN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBudWxscHRyLCBtX3N0eWxlLm1hc2tMYXllcnMoKSk7
CisgICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZSA/ICZvbGRTdHlsZS0+YmFja2dyb3VuZExh
eWVycygpIDogbnVsbHB0ciwgbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkpOworICAgIHVwZGF0
ZUZpbGxJbWFnZXMob2xkU3R5bGUgPyAmb2xkU3R5bGUtPm1hc2tMYXllcnMoKSA6IG51bGxwdHIs
IG1fc3R5bGUubWFza0xheWVycygpKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0
eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiBudWxscHRyLCBtX3N0eWxlLmJvcmRlckltYWdl
KCkuaW1hZ2UoKSk7CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0Jv
eEltYWdlKCkuaW1hZ2UoKSA6IG51bGxwdHIsIG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2Uo
KSk7CiAgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5zaGFwZU91dHNp
ZGUoKSA6IG51bGxwdHIsIG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpOwpAQCAtMTIzMSw0MSArMTIy
NSwzOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dCgpCiB7CiAgICAgU3RhY2tTdGF0czo6
TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwogICAgIEFTU0VSVChuZWVkc0xheW91
dCgpKTsKLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwotICAgIHdoaWxl
IChjaGlsZCkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bmVlZHNM
YXlvdXQoKSkKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5
b3V0KCk7CiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KICAgICBjbGVhck5lZWRzTGF5b3V0
KCk7CiB9CiAKLXN0YXRpYyBib29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsbExheWVyKiBsYXllcikKK3N0YXRpYyBib29sIG11
c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
RmlsbExheWVyJiBsYXllcikKIHsKICAgICAvLyBOb2JvZHkgd2lsbCB1c2UgbXVsdGlwbGUgbGF5
ZXJzIHdpdGhvdXQgd2FudGluZyBmYW5jeSBwb3NpdGlvbmluZy4KLSAgICBpZiAobGF5ZXItPm5l
eHQoKSkKKyAgICBpZiAobGF5ZXIubmV4dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgdmFsaWQgaW1hZ2UuCi0gICAgU3R5bGVJbWFnZSogaW1h
Z2UgPSBsYXllci0+aW1hZ2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IGxheWVyLmltYWdlKCk7CiAg
ICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNhblJlbmRlcigmcmVuZGVyZXIsIHJlbmRlcmVyLnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KCFsYXllci0+eFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLT55UG9zaXRpb24oKS5pc1pl
cm8oKSkKKyAgICBpZiAoIWxheWVyLnhQb3NpdGlvbigpLmlzWmVybygpIHx8ICFsYXllci55UG9z
aXRpb24oKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBFRmlsbFNpemVU
eXBlIHNpemVUeXBlID0gbGF5ZXItPnNpemVUeXBlKCk7CisgICAgYXV0byBzaXplVHlwZSA9IGxh
eWVyLnNpemVUeXBlKCk7CiAKICAgICBpZiAoc2l6ZVR5cGUgPT0gQ29udGFpbiB8fCBzaXplVHlw
ZSA9PSBDb3ZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoc2l6ZVR5cGUgPT0g
U2l6ZUxlbmd0aCkgewotICAgICAgICBMZW5ndGhTaXplIHNpemUgPSBsYXllci0+c2l6ZUxlbmd0
aCgpOwotICAgICAgICBpZiAoc2l6ZS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8
IHNpemUuaGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCisgICAgICAgIGF1dG8gc2l6
ZSA9IGxheWVyLnNpemVMZW5ndGgoKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGguaXNQZXJjZW50
T3JDYWxjdWxhdGVkKCkgfHwgc2l6ZS5oZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBuZWl0
aGVyIGFuIGludHJpbnNpYyB3aWR0aCBub3IgYW4gaW50cmluc2ljIGhlaWdodCwgaXRzIHNpemUg
aXMgZGV0ZXJtaW5lZCBhcyBmb3IgJ2NvbnRhaW4nLgotICAgICAgICBpZiAoKHNpemUud2lkdGgo
KS5pc0F1dG8oKSB8fCBzaXplLmhlaWdodCgpLmlzQXV0bygpKSAmJiBpbWFnZS0+aXNHZW5lcmF0
ZWRJbWFnZSgpKQorICAgICAgICBpZiAoKHNpemUud2lkdGguaXNBdXRvKCkgfHwgc2l6ZS5oZWln
aHQuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRlZEltYWdlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKGltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXpl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM2NSwxNCArMTM1NywxNCBAQCBib29sIFJl
bmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcAogICAgICAgICBzdHlsZSgpLmdldEJveFNoYWRvd0hvcml6b250YWxF
eHRlbnQoc2hhZG93TGVmdCwgc2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRl
clJpZ2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlz
KS5ib3JkZXJSaWdodCgpIDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApOwogICAgICAgICBMYXlv
dXRVbml0IGJveFdpZHRoID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJC
b3g+KCp0aGlzKS53aWR0aCgpIDogTGF5b3V0VW5pdCgpOwotICAgICAgICBMYXlvdXRVbml0IG1p
bkluc2V0UmlnaHRTaGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFk
b3dFeHRlbnQucmlnaHQoKSwgc3RkOjptaW48TGF5b3V0VW5pdD4obmV3Qm91bmRzLndpZHRoKCks
IG9sZEJvdW5kcy53aWR0aCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBz
dGQ6Om1heDxMYXlvdXRVbml0Pihib3JkZXJSaWdodCwgc3RkOjptYXg8TGF5b3V0VW5pdD4odmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdp
ZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndp
ZHRoKCksIGJveFdpZHRoKSkpOwotICAgICAgICBMYXlvdXRVbml0IGRlY29yYXRpb25zV2lkdGgg
PSBzdGQ6Om1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLm91dGxpbmVPZmZzZXQoKSwgYm9y
ZGVyV2lkdGggKyBtaW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50KSArIHN0ZDo6bWF4PExheW91dFVu
aXQ+KG91dGxpbmVXaWR0aCwgc2hhZG93UmlnaHQpOworICAgICAgICBMYXlvdXRVbml0IG1pbklu
c2V0UmlnaHRTaGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dF
eHRlbnQucmlnaHQoKSwgc3RkOjptaW4obmV3Qm91bmRzLndpZHRoKCksIG9sZEJvdW5kcy53aWR0
aCgpKSk7CisgICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBzdGQ6Om1heChib3JkZXJS
aWdodCwgc3RkOjptYXgodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1
cygpLndpZHRoLCBib3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMoKS53aWR0aCwgYm94V2lkdGgpKSk7CisgICAgICAgIExheW91dFVuaXQgZGVj
b3JhdGlvbnNXaWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGlu
ZU9mZnNldCgpLCBib3JkZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3Rk
OjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFJlY3Qgcmln
aHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgc3RkOjptaW4obmV3T3V0bGluZUJveC53aWR0aCgp
LCBvbGRPdXRsaW5lQm94LndpZHRoKCkpIC0gZGVjb3JhdGlvbnNXaWR0aCwKICAgICAgICAgICAg
IG5ld091dGxpbmVCb3gueSgpLAogICAgICAgICAgICAgd2lkdGggKyBkZWNvcmF0aW9uc1dpZHRo
LAogICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xkT3V0bGlu
ZUJveC5oZWlnaHQoKSkpOwotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gc3RkOjptaW48TGF5
b3V0VW5pdD4obmV3Qm91bmRzLm1heFgoKSwgb2xkQm91bmRzLm1heFgoKSk7CisgICAgICAgIExh
eW91dFVuaXQgcmlnaHQgPSBzdGQ6Om1pbihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4
WCgpKTsKICAgICAgICAgaWYgKHJpZ2h0UmVjdC54KCkgPCByaWdodCkgewogICAgICAgICAgICAg
cmlnaHRSZWN0LnNldFdpZHRoKHN0ZDo6bWluKHJpZ2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJp
Z2h0UmVjdC54KCkpKTsKICAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCByaWdodFJlY3QpOwpAQCAtMTM4NSwxMCArMTM3NywxMCBAQCBib29sIFJlbmRl
ckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcAogICAgICAgICBzdHlsZSgpLmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50
KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0
b20gPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLmJv
cmRlckJvdHRvbSgpIDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApOwogICAgICAgICBMYXlvdXRV
bml0IGJveEhlaWdodCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVyQm94
PigqdGhpcykuaGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWlu
SW5zZXRCb3R0b21TaGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFk
b3dFeHRlbnQuYm90dG9tKCksIHN0ZDo6bWluPExheW91dFVuaXQ+KG5ld0JvdW5kcy5oZWlnaHQo
KSwgb2xkQm91bmRzLmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0
ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oYm9yZGVyQm90dG9tLCBzdGQ6Om1heDxMYXlvdXRVbml0
Pih2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgYm94SGVpZ2h0KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0KSkpOwotICAgICAgICBMYXlv
dXRVbml0IGRlY29yYXRpb25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVT
dHlsZS5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93
RXh0ZW50KSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KG91dGxpbmVXaWR0aCwgc2hhZG93Qm90dG9t
KTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5JbnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6
bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW4obmV3
Qm91bmRzLmhlaWdodCgpLCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgTGF5b3V0VW5p
dCBib3JkZXJIZWlnaHQgPSBzdGQ6Om1heChib3JkZXJCb3R0b20sIHN0ZDo6bWF4KHZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0
KSwKKyAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQsIGJveEhlaWdodCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0
aW9uc0hlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGluZU9m
ZnNldCgpLCBib3JkZXJIZWlnaHQgKyBtaW5JbnNldEJvdHRvbVNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIExheW91dFJlY3QgYm90
dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIHN0ZDo6bWluKG5ld091dGxp
bmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1heFkoKSkgLSBkZWNvcmF0aW9uc0hlaWdodCwK
ICAgICAgICAgICAgIHN0ZDo6bWF4KG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJv
eC53aWR0aCgpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4
IDI4MDM3NDQxNWRjNjEyN2QzNThlNmZlNDQzMmRmN2M4YmJmYmViOTcuLmM2Zjk3MDE4ZGRiNjky
NjE3ZTNlZmQ1ZjRlZTE5YmU0ZTJlMDY1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaApAQCAtMjk0LDcgKzI5NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91
bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNJbW1lZGlhdGVOb25XaGl0ZXNwYWNlVGV4dENoaWxkT3JCb3JkZXJPck91dGxpbmUo
KSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBj
b25zdCBGaWxsTGF5ZXIqKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExh
eWVyKiwgY29uc3QgRmlsbExheWVyJik7CiAgICAgdm9pZCB1cGRhdGVJbWFnZShTdHlsZUltYWdl
KiwgU3R5bGVJbWFnZSopOwogICAgIHZvaWQgdXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZh
bHVlKiwgY29uc3QgU2hhcGVWYWx1ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKaW5kZXggMTNmY2E3OGVlMzg2MmY4OGNiOWVkOTQyZjE5MjFiYmFiYjM5MjdhMC4u
MjFjZTI2MWNjODlkMTNmNDQ0NTY2MWU2MDY5OWFiNTZjOTc1YjA2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMjc1NSw3ICsyNzU1LDcgQEAgQ29udGVudEFs
aWdubWVudERhdGEgUmVuZGVyR3JpZDo6Y29tcHV0ZUNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1
dGlvbk9mZnNldChHcmkKICAgICBpZiAoY29udGVudEFsaWdubWVudC5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBjb250ZW50QWxpZ25tZW50OwogCi0gICAgYXV0byBvdmVyZmxvdyA9IGlzUm93
QXhpcyA/IHN0eWxlKCkuanVzdGlmeUNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpIDogc3R5bGUo
KS5hbGlnbkNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpOworICAgIGF1dG8gb3ZlcmZsb3cgPSAo
aXNSb3dBeGlzID8gc3R5bGUoKS5qdXN0aWZ5Q29udGVudCgpIDogc3R5bGUoKS5hbGlnbkNvbnRl
bnQoKSkub3ZlcmZsb3coKTsKICAgICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlIDw9IDAgJiYgb3Zl
cmZsb3cgPT0gT3ZlcmZsb3dBbGlnbm1lbnRTYWZlKQogICAgICAgICByZXR1cm4gezAsIDB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAwNTFkNDRiZjU2
Njk2N2NhYWRhZjk3NDIwMjk4MmNiOTE4YmZlODUxLi5hY2VlZDdkNTkwZGUyNWNjNDM5OTg3ODQ4
M2I4OTg3N2FmMjk1NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTMxNDMsMTcgKzMxNDMsMTggQEAgc3RhdGljIGlubGluZSBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlckZvclNjcm9sbGJhcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXIKIFJlZjxT
Y3JvbGxiYXI+IFJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwotICAgIFJl
bmRlckVsZW1lbnQqIGFjdHVhbFJlbmRlcmVyID0gcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVy
ZXIoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IGFjdHVhbFJlbmRlcmVy
LT5pc0JveCgpICYmIGFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9M
TEJBUik7CisgICAgQVNTRVJUKHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpKTsKKyAg
ICBhdXRvJiBhY3R1YWxSZW5kZXJlciA9ICpyZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigp
KTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gaXM8UmVuZGVyQm94PihhY3R1
YWxSZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuc3R5bGUo
KS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOwogICAgIGlmIChoYXNDdXN0b21TY3JvbGxiYXJT
dHlsZSkKLSAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3Jv
bGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBhY3R1YWxSZW5kZXJlci0+ZWxlbWVudCgpKTsKKyAg
ICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRo
aXMsIG9yaWVudGF0aW9uLCBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5lbGVt
ZW50KCkpOwogICAgIGVsc2UgewogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5h
dGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAg
ICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LmdldCgpLCBvcmllbnRhdGlvbik7CiAgICAgICAg
IGlmIChwYWdlKCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQogICAgICAgICAgICAgc2Ny
b2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2Vy
KCkpOwogICAgIH0KLSAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCh3
aWRnZXQuZ2V0KCkpOworICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxk
KCp3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQucmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBj
OGM0MGM1Y2YwMzA0M2I5MDVlZDlhNGMxZmZmOTlkZTkzMTUwM2Y0Li4zZWM3ZmRkODA1N2M5MDc0
YTAyMzRjNzcwYWY0Nzk0YTdkOTNkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTcyNiwzMCArMTcyNiwyNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaGFzVmlzaWJsZUJveERlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKIAogc3RhdGljIGJvb2wgY2FuQ3JlYXRlVGlsZWRJbWFnZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiB7Ci0gICAgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIgPSBzdHlsZS5iYWNr
Z3JvdW5kTGF5ZXJzKCk7Ci0gICAgaWYgKGZpbGxMYXllci0+bmV4dCgpKQorICAgIGF1dG8mIGZp
bGxMYXllciA9IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoZmlsbExheWVyLm5l
eHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFmaWxsTGF5ZXItPmltYWdl
c0FyZUxvYWRlZCgpKQorICAgIGlmICghZmlsbExheWVyLmltYWdlc0FyZUxvYWRlZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmlsbExheWVyLT5hdHRhY2htZW50KCkgIT0g
U2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpCisgICAgaWYgKGZpbGxMYXllci5hdHRhY2htZW50
KCkgIT0gU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKTsKLQogICAgIC8vIEZJWE1FOiBBbGxvdyBjb2xvcitpbWFnZSBj
b21wb3NpdGluZyB3aGVuIGl0IG1ha2VzIHNlbnNlLgogICAgIC8vIEZvciBub3cgYmFpbGluZyBv
dXQuCi0gICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKQorICAgIGlmIChzdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmlzaWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gZmlsbExh
eWVyLT5pbWFnZSgpOwotCiAgICAgLy8gRklYTUU6IHN1cHBvcnQgZ3JhZGllbnRzIHdpdGggaXNH
ZW5lcmF0ZWRJbWFnZS4KKyAgICBhdXRvKiBzdHlsZUltYWdlID0gZmlsbExheWVyLmltYWdlKCk7
CiAgICAgaWYgKCFzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEltYWdlKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmlt
YWdlKCk7CisgICAgYXV0byogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFn
ZSgpOwogICAgIGlmICghaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xODA5LDI1ICsxODA2LDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UoYm9vbCBpc1NpbXBsZUNvCiAg
ICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOwotCisgICAg
YXV0byYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CiAgICAgaWYgKCFpc1NpbXBsZUNvbnRh
aW5lciB8fCAhc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKICAgICAgICAgbV9ncmFwaGlj
c0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBiYWNrZ3JvdW5kQm94Rm9yU2ltcGxlQ29udGFpbmVy
UGFpbnRpbmcoKTsKKyAgICBhdXRvIGRlc3RSZWN0ID0gYmFja2dyb3VuZEJveEZvclNpbXBsZUNv
bnRhaW5lclBhaW50aW5nKCk7CiAgICAgRmxvYXRTaXplIHBoYXNlOwogICAgIEZsb2F0U2l6ZSB0
aWxlU2l6ZTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBzdHlsZS5iYWNrZ3JvdW5kTGF5
ZXJzKCktPmltYWdlKCktPmNhY2hlZEltYWdlKCktPmltYWdlKCk7Ci0gICAgLy8gRklYTUU6IGFi
c29sdXRlIHBhaW50IGxvY2F0aW9uIGlzIHJlcXVpcmVkIGhlcmUuCisgICAgLy8gRklYTUU6IEFi
c29sdXRlIHBhaW50IGxvY2F0aW9uIGlzIHJlcXVpcmVkIGhlcmUuCiAgICAgZG93bmNhc3Q8UmVu
ZGVyQm94PihyZW5kZXJlcigpKS5nZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZSgmcmVuZGVy
ZXIoKSwgTGF5b3V0UG9pbnQoKSwgZGVzdFJlY3QsIHBoYXNlLCB0aWxlU2l6ZSk7CisKICAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVNpemUodGlsZVNpemUpOwogICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlUGhhc2UocGhhc2UpOwogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNSZWN0KGRlc3RSZWN0KTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENvbnRlbnRzQ2xpcHBpbmdSZWN0KEZsb2F0Um91bmRlZFJlY3QoZGVzdFJlY3QpKTsKLSAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5nZXQoKSk7CisgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2Uoc3R5bGUuYmFja2dyb3VuZExheWVycygp
LmltYWdlKCktPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworCiAgICAgZGlkVXBkYXRlQ29udGVu
dHNSZWN0ID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCmluZGV4IDIyZWU5ODExMDc3ZmZkODA4YmZiYTEzOTQwOWI2Yzk2MGY2MzRmYWYuLmNk
ZjgwNjBiY2I1ZWQ4YThmNGY5MzdhN2U0OTdlMTQ2N2Q2ZWJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTkwMiw3ICs5MDIsNyBAQCBSZWY8U2Ny
b2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQogICAgICAgICBpZiAocGFn
ZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKICAgICAgICAgICAgIHNjcm9sbEFuaW1h
dG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UoKS50ZXN0VHJpZ2dlcigpKTsKICAg
ICB9Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7CisgICAg
dmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKCp3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQu
cmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKaW5kZXggZDM5ZjY0Njk1ODdjNzQ0MmYzNzI0NDczYjY4NTgwOGE5N2ZhNjdm
Yi4uZDJjMDJlZjlkNjBlMDZjNjg2NjcyM2U0NzQwNzM3YWQ4YzBjMzgyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
dm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgLy8gVXNlIG1hcmdp
bjphdXRvIGluc3RlYWQgb2YgYWxpZ24taXRlbXM6Y2VudGVyIHRvIGdldCBzYWZlIGNlbnRlcmlu
ZywgaS5lLgogICAgIC8vIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzLCB0cmVhdCBpdCB0aGUg
c2FtZSBhcyBhbGlnbi1pdGVtczogZmxleC1zdGFydC4KICAgICAvLyBCdXQgd2Ugb25seSBkbyB0
aGF0IGZvciB0aGUgY2FzZXMgd2hlcmUgaHRtbC5jc3Mgd291bGQgb3RoZXJ3aXNlIHVzZSBjZW50
ZXIuCi0gICAgaWYgKHN0eWxlKCkuYWxpZ25JdGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9u
Q2VudGVyKSB7CisgICAgaWYgKHN0eWxlKCkuYWxpZ25JdGVtcygpLnBvc2l0aW9uKCkgPT0gSXRl
bVBvc2l0aW9uQ2VudGVyKSB7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0
aCgpKTsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRNYXJnaW5Cb3R0b20oTGVuZ3RoKCkpOwogICAg
ICAgICBpbm5lclN0eWxlLnNldEFsaWduU2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlvbkZsZXhTdGFy
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IGUxYTdlYWE3NTlhZDMzMTY5YmExMTFhMzVmOTE1YTRjMWU4Yzc1MjEuLjNlNzAzMjBkNjk1MjI4
YzJkYTZkNzZhMGQxZWJmMjE0NmEwOTNjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjc2LDkgKzEyNzYsOSBAQCB2b2lkIFJlbmRlclRh
YmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheQogICAgICAgICBhZGp1c3RlZFBhaW50T2Zmc2V0Lm1vdmVCeShsb2NhdGlvbigp
KTsKIAogICAgIENvbG9yIGMgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgY29uc3QgRmlsbExh
eWVyKiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7CisgICAgYXV0byYgYmdMYXllciA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCkuYmFja2dy
b3VuZExheWVycygpOwogCi0gICAgaWYgKGJnTGF5ZXItPmhhc0ltYWdlKCkgfHwgYy5pc1ZhbGlk
KCkpIHsKKyAgICBpZiAoYmdMYXllci5oYXNJbWFnZSgpIHx8IGMuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gY2xpcCBoZXJlIGJlY2F1c2UgdGhlIGJhY2tncm91bmQgd291bGQg
cGFpbnQKICAgICAgICAgLy8gb24gdG9wIG9mIHRoZSBib3JkZXJzIG90aGVyd2lzZS4gIFRoaXMg
b25seSBtYXR0ZXJzIGZvciBjZWxscyBhbmQgcm93cy4KICAgICAgICAgYm9vbCBzaG91bGRDbGlw
ID0gYmFja2dyb3VuZE9iamVjdC0+aGFzTGF5ZXIoKSAmJiAoYmFja2dyb3VuZE9iamVjdCA9PSB0
aGlzIHx8IGJhY2tncm91bmRPYmplY3QgPT0gcGFyZW50KCkpICYmIHRhYmxlRWx0LT5jb2xsYXBz
ZUJvcmRlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4
IGZhNTk5YTcxODcyYjQ5OGE1NDYzMmVkM2RlY2ZlNjZlNmYzMTFjMWUuLmMzMWE5YWE2Y2YyYjA2
OTgyMmI2ZmY1MDY3YmZmYWM1MzdmZjJiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwK
ICAgICAgICAgLy8gUGFkZGluZwogICAgICAgICBMZW5ndGhCb3ggcGFkZGluZ0JveCA9IG1fdGhl
bWUtPmNvbnRyb2xQYWRkaW5nKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnBhZGRp
bmdCb3goKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgaWYgKHBhZGRpbmdCb3gg
IT0gc3R5bGUucGFkZGluZ0JveCgpKQotICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChw
YWRkaW5nQm94KTsKKyAgICAgICAgICAgIHN0eWxlLnNldFBhZGRpbmdCb3goV1RGTW92ZShwYWRk
aW5nQm94KSk7CiAKICAgICAgICAgLy8gV2hpdGVzcGFjZQogICAgICAgICBpZiAobV90aGVtZS0+
Y29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShwYXJ0KSkKQEAgLTE1NSwxOSArMTU1LDE5IEBA
IHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgLy8gV2lkdGggLyBIZWlnaHQKICAgICAg
ICAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgaGVyZSBhcmUgYWZmZWN0ZWQgYnkgdGhlIHpvb20u
CiAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBpcyBmbGF3ZWQsIHNpbmNlIGl0IGRvZXNuJ3QgdGFr
ZSBtaW4td2lkdGgvbWF4LXdpZHRoIGludG8gYWNjb3VudC4KLSAgICAgICAgTGVuZ3RoU2l6ZSBj
b250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRyb2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRl
KCksIExlbmd0aFNpemUoc3R5bGUud2lkdGgoKSwgc3R5bGUuaGVpZ2h0KCkpLCBzdHlsZS5lZmZl
Y3RpdmVab29tKCkpOwotICAgICAgICBpZiAoY29udHJvbFNpemUud2lkdGgoKSAhPSBzdHlsZS53
aWR0aCgpKQotICAgICAgICAgICAgc3R5bGUuc2V0V2lkdGgoY29udHJvbFNpemUud2lkdGgoKSk7
Ci0gICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWlnaHQoKSAhPSBzdHlsZS5oZWlnaHQoKSkKLSAg
ICAgICAgICAgIHN0eWxlLnNldEhlaWdodChjb250cm9sU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAg
ICAgICAgICAgCisgICAgICAgIExlbmd0aFNpemUgY29udHJvbFNpemUgPSBtX3RoZW1lLT5jb250
cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCB7IHN0eWxlLndpZHRoKCksIHN0eWxl
LmhlaWdodCgpIH0sIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIGlmIChjb250cm9s
U2l6ZS53aWR0aCAhPSBzdHlsZS53aWR0aCgpKQorICAgICAgICAgICAgc3R5bGUuc2V0V2lkdGgo
V1RGTW92ZShjb250cm9sU2l6ZS53aWR0aCkpOworICAgICAgICBpZiAoY29udHJvbFNpemUuaGVp
Z2h0ICE9IHN0eWxlLmhlaWdodCgpKQorICAgICAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KFdURk1v
dmUoY29udHJvbFNpemUuaGVpZ2h0KSk7CisKICAgICAgICAgLy8gTWluLVdpZHRoIC8gTWluLUhl
aWdodAogICAgICAgICBMZW5ndGhTaXplIG1pbkNvbnRyb2xTaXplID0gbV90aGVtZS0+bWluaW11
bUNvbnRyb2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLmVmZmVjdGl2ZVpv
b20oKSk7Ci0gICAgICAgIGlmIChtaW5Db250cm9sU2l6ZS53aWR0aCgpICE9IHN0eWxlLm1pbldp
ZHRoKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChtaW5Db250cm9sU2l6ZS53aWR0
aCgpKTsKLSAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLmhlaWdodCgpICE9IHN0eWxlLm1pbkhl
aWdodCgpKQotICAgICAgICAgICAgc3R5bGUuc2V0TWluSGVpZ2h0KG1pbkNvbnRyb2xTaXplLmhl
aWdodCgpKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndp
ZHRoICE9IHN0eWxlLm1pbldpZHRoKCkpCisgICAgICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChX
VEZNb3ZlKG1pbkNvbnRyb2xTaXplLndpZHRoKSk7CisgICAgICAgIGlmIChtaW5Db250cm9sU2l6
ZS5oZWlnaHQgIT0gc3R5bGUubWluSGVpZ2h0KCkpCisgICAgICAgICAgICBzdHlsZS5zZXRNaW5I
ZWlnaHQoV1RGTW92ZShtaW5Db250cm9sU2l6ZS5oZWlnaHQpKTsKKwogICAgICAgICAvLyBGb250
CiAgICAgICAgIGlmIChhdXRvIHRoZW1lRm9udCA9IG1fdGhlbWUtPmNvbnRyb2xGb250KHBhcnQs
IHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSkpIHsKICAgICAgICAg
ICAgIC8vIElmIG92ZXJyaWRpbmcgdGhlIHNwZWNpZmllZCBmb250IHdpdGggdGhlIHRoZW1lIGZv
bnQsIGFsc28gb3ZlcnJpZGUgdGhlIGxpbmUgaGVpZ2h0IHdpdGggdGhlIHN0YW5kYXJkIGxpbmUg
aGVpZ2h0LgpAQCAtNzA5LDkgKzcwOSw5IEBAIGJvb2wgUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0
eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvCiAgICAg
Y2FzZSBUZXh0RmllbGRQYXJ0OgogICAgIGNhc2UgVGV4dEFyZWFQYXJ0OgogICAgICAgICAvLyBU
ZXN0IHRoZSBzdHlsZSB0byBzZWUgaWYgdGhlIFVBIGJvcmRlciBhbmQgYmFja2dyb3VuZCBtYXRj
aC4KLSAgICAgICAgcmV0dXJuIChzdHlsZS5ib3JkZXIoKSAhPSBib3JkZXIKLSAgICAgICAgICAg
IHx8ICpzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkgIT0gYmFja2dyb3VuZAotICAgICAgICAgICAg
fHwgIXN0eWxlLmJhY2tncm91bmRDb2xvckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zpc2l0ZWQoYmFj
a2dyb3VuZENvbG9yKSk7CisgICAgICAgIHJldHVybiBzdHlsZS5ib3JkZXIoKSAhPSBib3JkZXIK
KyAgICAgICAgICAgIHx8IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKSAhPSBiYWNrZ3JvdW5kCisg
ICAgICAgICAgICB8fCAhc3R5bGUuYmFja2dyb3VuZENvbG9yRXF1YWxzVG9Db2xvcklnbm9yaW5n
VmlzaXRlZChiYWNrZ3JvdW5kQ29sb3IpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNw
cAppbmRleCAxMTI2MGZhOWNiZjQxNzk1ZDNkOGI3N2Q3YmQ5MWE5MDVjYjI2OWQ1Li5jZDRhODM5
NjVhNTVjODUzOGM0ZTliZmQ1NDEwNjZjMDgyNjMxODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTE0NSwyMCArMTQ1LDI2IEBAIHZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJhaW50cyhSZW5kZXJTdHlsZSYgc3R5bGUsIEZv
cm1UeXBlIHR5cGUpIGNvCiAgICAgLy8gVGhlc2UgYXJlIGFsd2F5cyB2YWxpZCwgZXZlbiBpZiBu
byB0aGVtZSBjb3VsZCBiZSBsb2FkZWQuCiAgICAgY29uc3QgVGhlbWVQYXJ0RGVzYyogZGVzYyA9
IG1fcGFydERlc2NzICsgKHNpemVfdCl0eXBlOwogCi0gICAgaWYgKHN0eWxlLm1pbldpZHRoKCku
aXNJbnRyaW5zaWMoKSkKLSAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoZGVzYy0+bWluLndpZHRo
KCkpOwotICAgIGlmIChzdHlsZS5taW5IZWlnaHQoKS5pc0ludHJpbnNpYygpKQotICAgICAgICBz
dHlsZS5zZXRNaW5IZWlnaHQoZGVzYy0+bWluLmhlaWdodCgpKTsKKyAgICBpZiAoc3R5bGUubWlu
V2lkdGgoKS5pc0ludHJpbnNpYygpKSB7CisgICAgICAgIGF1dG8gY29weSA9IGRlc2MtPm1pbi53
aWR0aDsKKyAgICAgICAgc3R5bGUuc2V0TWluV2lkdGgoV1RGTW92ZShjb3B5KSk7CisgICAgfQor
ICAgIGlmIChzdHlsZS5taW5IZWlnaHQoKS5pc0ludHJpbnNpYygpKSB7CisgICAgICAgIGF1dG8g
Y29weSA9IGRlc2MtPm1pbi5oZWlnaHQ7CisgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChXVEZN
b3ZlKGNvcHkpKTsKKyAgICB9CiAKLSAgICBpZiAoZGVzYy0+bWF4LndpZHRoKCkudmFsdWUoKSA+
IDAgJiYgc3R5bGUubWF4V2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQotICAgICAgICBzdHls
ZS5zZXRNYXhXaWR0aChkZXNjLT5tYXgud2lkdGgoKSk7Ci0gICAgaWYgKGRlc2MtPm1heC5oZWln
aHQoKS52YWx1ZSgpID4gMCAmJiBzdHlsZS5tYXhIZWlnaHQoKS5pc0ludHJpbnNpY09yQXV0bygp
KQotICAgICAgICBzdHlsZS5zZXRNYXhIZWlnaHQoZGVzYy0+bWF4LmhlaWdodCgpKTsKKyAgICBp
ZiAoZGVzYy0+bWF4LndpZHRoLnZhbHVlKCkgPiAwICYmIHN0eWxlLm1heFdpZHRoKCkuaXNJbnRy
aW5zaWNPckF1dG8oKSkgeworICAgICAgICBhdXRvIGNvcHkgPSBkZXNjLT5tYXgud2lkdGg7Cisg
ICAgICAgIHN0eWxlLnNldE1heFdpZHRoKFdURk1vdmUoY29weSkpOworICAgIH0KKyAgICBpZiAo
ZGVzYy0+bWF4LmhlaWdodC52YWx1ZSgpID4gMCAmJiBzdHlsZS5tYXhIZWlnaHQoKS5pc0ludHJp
bnNpY09yQXV0bygpKSB7CisgICAgICAgIGF1dG8gY29weSA9IGRlc2MtPm1heC5oZWlnaHQ7Cisg
ICAgICAgIHN0eWxlLnNldE1heEhlaWdodChXVEZNb3ZlKGNvcHkpKTsKKyAgICB9CiAKLSAgICBz
dHlsZS5zZXRQYWRkaW5nVG9wKGRlc2MtPnBhZGRpbmcudG9wKCkpOwotICAgIHN0eWxlLnNldFBh
ZGRpbmdCb3R0b20oZGVzYy0+cGFkZGluZy5ib3R0b20oKSk7Ci0gICAgc3R5bGUuc2V0UGFkZGlu
Z0xlZnQoZGVzYy0+cGFkZGluZy5sZWZ0KCkpOwotICAgIHN0eWxlLnNldFBhZGRpbmdSaWdodChk
ZXNjLT5wYWRkaW5nLnJpZ2h0KCkpOworICAgIGF1dG8gcGFkZGluZ0NvcHkgPSBkZXNjLT5wYWRk
aW5nOworICAgIHN0eWxlLnNldFBhZGRpbmdCb3goV1RGTW92ZShwYWRkaW5nQ29weSkpOwogfQog
CiBzdGF0aWMgYm9vbCBpc0Zvcm1FbGVtZW50VG9vTGFyZ2VUb0Rpc3BsYXkoY29uc3QgSW50U2l6
ZSYgZWxlbWVudFNpemUpCkBAIC0zNjUsNyArMzcxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6
cGFpbnRUaGVtZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUs
IGMKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGJvb2wgaGF2
ZUJhY2tncm91bmRDb2xvciA9IGlzQ29udHJvbFN0eWxlZChvYmplY3Quc3R5bGUoKSwgb2JqZWN0
LnN0eWxlKCkuYm9yZGVyKCksICpvYmplY3Quc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIENv
bG9yOjp3aGl0ZSk7CisgICAgYm9vbCBoYXZlQmFja2dyb3VuZENvbG9yID0gaXNDb250cm9sU3R5
bGVkKG9iamVjdC5zdHlsZSgpLCBvYmplY3Quc3R5bGUoKS5ib3JkZXIoKSwgb2JqZWN0LnN0eWxl
KCkuYmFja2dyb3VuZExheWVycygpLCBDb2xvcjo6d2hpdGUpOwogICAgIENvbnRyb2xTdGF0ZXMg
c3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIob2JqZWN0KSk7CiAgICAgYXBw
bHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCAmc3RhdGVzLCBoYXZlQmFja2dyb3Vu
ZENvbG9yKTsKIApAQCAtNTQyLDExICs1NDgsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6bG9h
ZFRoZW1lKCkKIAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRpb25GYWxs
YmFjayhUaGVtZVBhcnREZXNjKiBkZXNjKQogewotICAgIGRlc2MtPm1pbi5zZXRXaWR0aChMZW5n
dGgoMCwgRml4ZWQpKTsKLSAgICBkZXNjLT5taW4uc2V0SGVpZ2h0KExlbmd0aCgwLCBGaXhlZCkp
OworICAgIGRlc2MtPm1pbi53aWR0aCA9IHsgMCwgRml4ZWQgfTsKKyAgICBkZXNjLT5taW4uaGVp
Z2h0ID0geyAwLCBGaXhlZCB9OwogCi0gICAgZGVzYy0+bWF4LnNldFdpZHRoKExlbmd0aCgwLCBG
aXhlZCkpOwotICAgIGRlc2MtPm1heC5zZXRIZWlnaHQoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAg
ZGVzYy0+bWF4LndpZHRoID0geyAwLCBGaXhlZCB9OworICAgIGRlc2MtPm1heC5oZWlnaHQgPSB7
IDAsIEZpeGVkIH07CiAKICAgICBkZXNjLT5wYWRkaW5nID0gTGVuZ3RoQm94KDAsIDAsIDAsIDAp
OwogfQpAQCAtNTU5LDEyICs1NjUsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0
RGVzY3JpcHRpb24oRXZhc19PYmplY3QqIG9iamVjdCwgVGhlbWVQYXJ0RGVzYyogZGUKICAgICBp
ZiAoIW1pbncgJiYgIW1pbmgpCiAgICAgICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2NhbGMob2Jq
ZWN0LCAmbWludywgJm1pbmgpOwogCi0gICAgZGVzYy0+bWluLnNldFdpZHRoKExlbmd0aChtaW53
LCBGaXhlZCkpOwotICAgIGRlc2MtPm1pbi5zZXRIZWlnaHQoTGVuZ3RoKG1pbmgsIEZpeGVkKSk7
CisgICAgZGVzYy0+bWluLndpZHRoID0geyBtaW53LCBGaXhlZCB9OworICAgIGRlc2MtPm1pbi5o
ZWlnaHQgPSB7IG1pbmgsIEZpeGVkIH07CiAKICAgICBlZGplX29iamVjdF9zaXplX21heF9nZXQo
b2JqZWN0LCAmbWF4dywgJm1heGgpOwotICAgIGRlc2MtPm1heC5zZXRXaWR0aChMZW5ndGgobWF4
dywgRml4ZWQpKTsKLSAgICBkZXNjLT5tYXguc2V0SGVpZ2h0KExlbmd0aChtYXhoLCBGaXhlZCkp
OworICAgIGRlc2MtPm1heC53aWR0aCA9IHsgbWF4dywgRml4ZWQgfTsKKyAgICBkZXNjLT5tYXgu
aGVpZ2h0ID0geyBtYXhoLCBGaXhlZCB9OwogCiAgICAgaWYgKCFlZGplX29iamVjdF9wYXJ0X2V4
aXN0cyhvYmplY3QsICJ0ZXh0X2NvbmZpbmVtZW50IikpCiAgICAgICAgIGRlc2MtPnBhZGRpbmcg
PSBMZW5ndGhCb3goMCwgMCwgMCwgMCk7CkBAIC04MDAsMTAgKzgwNiwxNCBAQCB2b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIFJlbmRlclN0eQogICAgIHN0eWxlLnJlc2V0Qm9yZGVyKCk7CiAKICAgICBjb25zdCBUaGVt
ZVBhcnREZXNjKiBkZXNjID0gbV9wYXJ0RGVzY3MgKyAoc2l6ZV90KUNoZWNrQm94OwotICAgIGlm
IChzdHlsZS53aWR0aCgpLnZhbHVlKCkgPCBkZXNjLT5taW4ud2lkdGgoKS52YWx1ZSgpKQotICAg
ICAgICBzdHlsZS5zZXRXaWR0aChkZXNjLT5taW4ud2lkdGgoKSk7Ci0gICAgaWYgKHN0eWxlLmhl
aWdodCgpLnZhbHVlKCkgPCBkZXNjLT5taW4uaGVpZ2h0KCkudmFsdWUoKSkKLSAgICAgICAgc3R5
bGUuc2V0SGVpZ2h0KGRlc2MtPm1pbi5oZWlnaHQoKSk7CisgICAgaWYgKHN0eWxlLndpZHRoKCku
dmFsdWUoKSA8IGRlc2MtPm1pbi53aWR0aC52YWx1ZSgpKSB7CisgICAgICAgIGF1dG8gY29weSA9
IGRlc2MtPm1pbi53aWR0aDsKKyAgICAgICAgc3R5bGUuc2V0V2lkdGgoV1RGTW92ZShjb3B5KSk7
CisgICAgfQorICAgIGlmIChzdHlsZS5oZWlnaHQoKS52YWx1ZSgpIDwgZGVzYy0+bWluLmhlaWdo
dC52YWx1ZSgpKSB7CisgICAgICAgIGF1dG8gY29weSA9IGRlc2MtPm1pbi5oZWlnaHQ7CisgICAg
ICAgIHN0eWxlLnNldEhlaWdodChXVEZNb3ZlKGNvcHkpKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTgyMywxMCArODMz
LDE0IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmCiAgICAgc3R5bGUucmVzZXRCb3JkZXIoKTsK
IAogICAgIGNvbnN0IFRoZW1lUGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3Qp
UmFkaW9CdXR0b247Ci0gICAgaWYgKHN0eWxlLndpZHRoKCkudmFsdWUoKSA8IGRlc2MtPm1pbi53
aWR0aCgpLnZhbHVlKCkpCi0gICAgICAgIHN0eWxlLnNldFdpZHRoKGRlc2MtPm1pbi53aWR0aCgp
KTsKLSAgICBpZiAoc3R5bGUuaGVpZ2h0KCkudmFsdWUoKSA8IGRlc2MtPm1pbi5oZWlnaHQoKS52
YWx1ZSgpKQotICAgICAgICBzdHlsZS5zZXRIZWlnaHQoZGVzYy0+bWluLmhlaWdodCgpKTsKKyAg
ICBpZiAoc3R5bGUud2lkdGgoKS52YWx1ZSgpIDwgZGVzYy0+bWluLndpZHRoLnZhbHVlKCkpIHsK
KyAgICAgICAgYXV0byBjb3B5ID0gZGVzYy0+bWluLndpZHRoOworICAgICAgICBzdHlsZS5zZXRX
aWR0aChXVEZNb3ZlKGNvcHkpKTsKKyAgICB9CisgICAgaWYgKHN0eWxlLmhlaWdodCgpLnZhbHVl
KCkgPCBkZXNjLT5taW4uaGVpZ2h0LnZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBjb3B5ID0gZGVz
Yy0+bWluLmhlaWdodDsKKyAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KFdURk1vdmUoY29weSkpOwor
ICAgIH0KIH0KIAogYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJP
YmplY3QmIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggZmE4
MGIyODE3M2NjYmQ0NzEwMmY2NDY2OWQwNjBjOGJiNzEwNjU2YS4uYjczN2ZiODIwNjg5OWZlOGRl
YTRiNTg0ZDY5YmE2MzI0MDYwZDBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDE0LDEwICsyMDE0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlCiBzdGF0aWMgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWlGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHJldHVybiBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSgKLSAgICAgICAgSW50U2l6ZShzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCku
d2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCku
aW50VmFsdWUoKSksCi0gICAgICAgIEludFNpemUoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMo
KS53aWR0aCgpLmludFZhbHVlKCksIHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0
KCkuaW50VmFsdWUoKSksCi0gICAgICAgIEludFNpemUoc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJh
ZGl1cygpLndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygp
LmhlaWdodCgpLmludFZhbHVlKCkpLAotICAgICAgICBJbnRTaXplKHN0eWxlLmJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCkud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJCb3R0b21SaWdo
dFJhZGl1cygpLmhlaWdodCgpLmludFZhbHVlKCkpKTsKKyAgICAgICAgSW50U2l6ZShzdHlsZS5i
b3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGguaW50VmFsdWUoKSwgc3R5bGUuYm9yZGVyVG9wTGVm
dFJhZGl1cygpLmhlaWdodC5pbnRWYWx1ZSgpKSwKKyAgICAgICAgSW50U2l6ZShzdHlsZS5ib3Jk
ZXJUb3BSaWdodFJhZGl1cygpLndpZHRoLmludFZhbHVlKCksIHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkuaGVpZ2h0LmludFZhbHVlKCkpLAorICAgICAgICBJbnRTaXplKHN0eWxlLmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aC5pbnRWYWx1ZSgpLCBzdHlsZS5ib3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKCkuaGVpZ2h0LmludFZhbHVlKCkpLAorICAgICAgICBJbnRTaXplKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGguaW50VmFsdWUoKSwgc3R5bGUuYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQuaW50VmFsdWUoKSkpOwogfQogCiBib29sIFJlbmRlclRo
ZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCAxMDBhNWQxNGUxNmZiYmRiNDNkYzgx
YWY5YzQ4YTljY2JhY2Q5ODRjLi4xOTFhZmE3YzNmZDA2YmMxMGNkZDFhNjk4YWUwMGQ5NmUwOWE1
NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0z
NTcsMTAgKzM1Nyw5IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdENoZWNrYm94U3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29uCiAgICAgaWYgKCFzdHlsZS53
aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMZW5ndGggbGVuZ3RoID0gTGVuZ3RoKHN0YXRpY19jYXN0
PGludD4oY2VpbGYoc3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwgMTApKSksIEZpeGVkKTsKLSAg
ICAKLSAgICBzdHlsZS5zZXRXaWR0aChsZW5ndGgpOwotICAgIHN0eWxlLnNldEhlaWdodChsZW5n
dGgpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuZm9udFNpemUoKSwgMTApOworICAg
IHN0eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0SGVpZ2h0KHsg
c2l6ZSwgRml4ZWQgfSk7CiB9CiAKIHN0YXRpYyBDR1BvaW50IHNob3J0ZW5lZChDR1BvaW50IHN0
YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCkBAIC00NDgsMTAgKzQ0NywxMCBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBCb3JkZXJEYXRhJgogewogICAgIC8vIEJ1dHRvbnMgYW5kIE1lbnVsaXN0QnV0dG9u
cyBhcmUgc3R5bGVkIGlmIHRoZXkgY29udGFpbiBhIGJhY2tncm91bmQgaW1hZ2UuCiAgICAgaWYg
KHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBQdXNoQnV0dG9uUGFydCB8fCBzdHlsZS5hcHBlYXJhbmNl
KCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KQotICAgICAgICByZXR1cm4gIXN0eWxlLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuYWxwaGEoKSB8fCBzdHls
ZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmhhc0ltYWdlKCk7CisgICAgICAgIHJldHVybiAhc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5pc1Zpc2li
bGUoKSB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkuaGFzSW1hZ2UoKTsKIAogICAgIGlmIChz
dHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEZpZWxkUGFydCB8fCBzdHlsZS5hcHBlYXJhbmNlKCkg
PT0gVGV4dEFyZWFQYXJ0KQotICAgICAgICByZXR1cm4gKnN0eWxlLmJhY2tncm91bmRMYXllcnMo
KSAhPSBiYWNrZ3JvdW5kOworICAgICAgICByZXR1cm4gc3R5bGUuYmFja2dyb3VuZExheWVycygp
ICE9IGJhY2tncm91bmQ7CiAKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxl
ZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29sb3IpOwogfQpAQCAtNDYx
LDEwICs0NjAsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZShTdHls
ZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdAogICAgIGlmICghc3R5bGUud2lk
dGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTGVuZ3RoIGxlbmd0aCA9IExlbmd0aChzdGF0aWNfY2FzdDxp
bnQ+KGNlaWxmKHN0ZDo6bWF4KHN0eWxlLmZvbnRTaXplKCksIDEwKSkpLCBGaXhlZCk7Ci0gICAg
c3R5bGUuc2V0V2lkdGgobGVuZ3RoKTsKLSAgICBzdHlsZS5zZXRIZWlnaHQobGVuZ3RoKTsKLSAg
ICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoSW50U2l6ZShsZW5ndGgudmFsdWUoKSAvIDIuMGYsIGxl
bmd0aC52YWx1ZSgpIC8gMi4wZikpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuZm9u
dFNpemUoKSwgMTApOworICAgIHN0eWxlLnNldFdpZHRoKHsgc2l6ZSwgRml4ZWQgfSk7CisgICAg
c3R5bGUuc2V0SGVpZ2h0KHsgc2l6ZSwgRml4ZWQgfSk7CisgICAgc3R5bGUuc2V0Qm9yZGVyUmFk
aXVzKHsgc2l6ZSAvIDIsIHNpemUgLyAyIH0pOwogfQogCiBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNTM4LDEzICs1MzcsMTEg
QEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVybmFsUGFkZGluZ0JveChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnMKIAogdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0
Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHsK
LSAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgpID09IE5vQ29udHJvbFBhcnQgfHwgc3R5bGUuYmFj
a2dyb3VuZExheWVycygpLT5oYXNJbWFnZSgpKQorICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkg
PT0gTm9Db250cm9sUGFydCB8fCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkuaGFzSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUgcmVseWlu
ZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBwZWFyYW5jZSBvZiBvdXIgY29udHJvbHMgPHJk
YXI6Ly9wcm9ibGVtLzc2NzU0OTM+Ci0gICAgTGVuZ3RoIHJhZGl1c1dpZHRoKHN0YXRpY19jYXN0
PGludD4oc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5oZWlnaHQoKSkgLyAyLjApLCBGaXhlZCk7
Ci0gICAgTGVuZ3RoIHJhZGl1c0hlaWdodChzdGF0aWNfY2FzdDxpbnQ+KGJveC5oZWlnaHQoKSAv
IDIuMCksIEZpeGVkKTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShyYWRp
dXNXaWR0aCwgcmFkaXVzSGVpZ2h0KSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUg
cmVseWluZyBvbiBib3JkZXIgcmFkaXVzIGZvciB0aGUgYXBwZWFyYW5jZSBvZiBvdXIgY29udHJv
bHMgPHJkYXI6Ly9wcm9ibGVtLzc2NzU0OTM+LgorICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7
IHsgc3RkOjptaW4oYm94LndpZHRoKCksIGJveC5oZWlnaHQoKSkgLyAyLCBGaXhlZCB9LCB7IGJv
eC5oZWlnaHQoKSAvIDIsIEZpeGVkIH0gfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9u
QnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBl
bGVtZW50KQpAQCAtNjU1LDExICs2NTIsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAg
ICAgICBGbG9hdFNpemUgYm90dG9tUmlnaHRSYWRpdXM7CiAKICAgICAgICAgaWYgKGlzUlRMKSB7
Ci0gICAgICAgICAgICB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChz
dHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHls
ZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgo
KSk7Ci0gICAgICAgICAgICBib3R0b21SaWdodFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxl
bmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgo
KSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9y
ZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICB0b3BSaWdodFJhZGl1cyA9IEZsb2F0U2l6
ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoLCByZWN0
LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpKTsKKyAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRT
aXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgs
IHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAt
IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgdG9wTGVmdFJhZGl1cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJU
b3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0
KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgICAgICAg
ICBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVy
TGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMo
KS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsK
KyAgICAgICAgICAgIHRvcExlZnRSYWRpdXMgPSBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5
bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMo
KS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CisgICAg
ICAgICAgICBib3R0b21MZWZ0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxl
LmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkp
OwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCkBAIC02OTIsMTEgKzY4OSwxMSBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZsb2F0U2l6ZSBib3R0b21SaWdodFJhZGl1czsK
IAogICAgICAgICBpZiAoaXNSVEwpIHsKLSAgICAgICAgICAgIHRvcExlZnRSYWRpdXMgPSBGbG9h
dFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLndpZHRoKCks
IHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0
eWxlLmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1cyA9IEZs
b2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lk
dGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxl
bmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0
KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgICAgICAgICB0b3BMZWZ0UmFk
aXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMo
KS53aWR0aCwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZv
ckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgp
KSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1
cyA9IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCkud2lkdGgsIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgdmFsdWVG
b3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCwgcmVjdC5oZWln
aHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxl
LmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJv
cmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRp
dXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsK
LSAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAt
IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJC
b3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVzID0gRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgsIHJlY3Qud2lk
dGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRl
clRvcFdpZHRoKCkpOworICAgICAgICAgICAgYm90dG9tUmlnaHRSYWRpdXMgPSBGbG9hdFNpemUo
dmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwgcmVj
dC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5
bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCkBA
IC03NTgsMTAgKzc1NSw5IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFNsaWRlclRyYWNr
U3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlCiB7CiAgICAgUmVuZGVy
VGhlbWU6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsK
IAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIHJlbHlpbmcgb24gYm9yZGVyIHJhZGl1
cyBmb3IgdGhlIGFwcGVhcmFuY2Ugb2Ygb3VyIGNvbnRyb2xzIDxyZGFyOi8vcHJvYmxlbS83Njc1
NDkzPgotICAgIExlbmd0aCByYWRpdXNXaWR0aChzdGF0aWNfY2FzdDxpbnQ+KGtUcmFja1JhZGl1
cyksIEZpeGVkKTsKLSAgICBMZW5ndGggcmFkaXVzSGVpZ2h0KHN0YXRpY19jYXN0PGludD4oa1Ry
YWNrUmFkaXVzKSwgRml4ZWQpOwotICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXpl
KHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBiZSByZWx5aW5nIG9uIGJvcmRlciByYWRpdXMgZm9yIHRoZSBhcHBlYXJhbmNlIG9mIG91ciBj
b250cm9scyA8cmRhcjovL3Byb2JsZW0vNzY3NTQ5Mz4uCisgICAgaW50IHJhZGl1cyA9IHN0YXRp
Y19jYXN0PGludD4oa1RyYWNrUmFkaXVzKTsKKyAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoeyB7
IHJhZGl1cywgRml4ZWQgfSwgeyByYWRpdXMsIEZpeGVkIH0gfSk7CiB9CiAKIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtODQ4LDE0ICs4
NDQsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gRW5mb3JjZSAiYm9yZGVyLXJhZGl1czogNTAlIi4KLSAgICBMZW5ndGggbGVuZ3RoKDUwLjBm
LCBQZXJjZW50KTsKLSAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShsZW5ndGgs
IGxlbmd0aCkpOworICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyh7IHsgNTAsIFBlcmNlbnQgfSwg
eyA1MCwgUGVyY2VudCB9IH0pOwogCiAgICAgLy8gRW5mb3JjZSBhIDE2eDE2IHNpemUgaWYgbm8g
c2l6ZSBpcyBwcm92aWRlZC4KICAgICBpZiAoc3R5bGUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0
bygpIHx8IHN0eWxlLmhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExlbmd0aCBsZW5ndGgg
PSBMZW5ndGgoa0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIEZpeGVkKTsKLSAgICAgICAgc3R5bGUu
c2V0V2lkdGgobGVuZ3RoKTsKLSAgICAgICAgc3R5bGUuc2V0SGVpZ2h0KGxlbmd0aCk7CisgICAg
ICAgIHN0eWxlLnNldFdpZHRoKHsga0RlZmF1bHRTbGlkZXJUaHVtYlNpemUsIEZpeGVkIH0pOwor
ICAgICAgICBzdHlsZS5zZXRIZWlnaHQoeyBrRGVmYXVsdFNsaWRlclRodW1iU2l6ZSwgRml4ZWQg
fSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CmluZGV4IDM3Mzk1ZTQzNjY2N2EyMTVhYWI2ZTc2MzA1OGQ0N2NiODI2ZDc0MGQuLjYyM2E2Yzc5
NGI5NjEwZTMyYTliMzZjYjU2OTg3YzJmMDY1YzQyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC01MiwyOSArNTIsMjcgQEAgV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXMKIAogdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpt
b3ZlV2lkZ2V0cygpCiB7Ci0gICAgV2lkZ2V0VG9QYXJlbnRNYXAgbWFwOwotICAgIHdpZGdldE5l
d1BhcmVudE1hcCgpLnN3YXAobWFwKTsKLSAgICBXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAoV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXaWRnZXQqIGNoaWxk
ID0gaXQtPmtleS5nZXQoKTsKLSAgICAgICAgU2Nyb2xsVmlldyogY3VycmVudFBhcmVudCA9IGNo
aWxkLT5wYXJlbnQoKTsKLSAgICAgICAgRnJhbWVWaWV3KiBuZXdQYXJlbnQgPSBpdC0+dmFsdWU7
CisgICAgYXV0byBtYXAgPSBXVEZNb3ZlKHdpZGdldE5ld1BhcmVudE1hcCgpKTsKKyAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbWFwKSB7CisgICAgICAgIGF1dG8mIGNoaWxkID0gKmVudHJ5LmtleTsK
KyAgICAgICAgYXV0byogY3VycmVudFBhcmVudCA9IGNoaWxkLnBhcmVudCgpOworICAgICAgICBh
dXRvKiBuZXdQYXJlbnQgPSBlbnRyeS52YWx1ZTsKICAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBj
dXJyZW50UGFyZW50KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudFBhcmVudCkKLSAgICAgICAg
ICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZCgqY2hpbGQpOworICAgICAgICAgICAg
ICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAgICAgIGlmIChu
ZXdQYXJlbnQpCiAgICAgICAgICAgICAgICAgbmV3UGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1BhcmVudFNvb24o
V2lkZ2V0KiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCitzdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0
VG9QYXJlbnRTb29uKFdpZGdldCYgY2hpbGQsIEZyYW1lVmlldyogcGFyZW50KQogewogICAgIGlm
ICghV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6aXNTdXNwZW5kZWQoKSkg
ewogICAgICAgICBpZiAocGFyZW50KQogICAgICAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGls
ZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkLT5yZW1vdmVGcm9tUGFyZW50KCk7
CisgICAgICAgICAgICBjaGlsZC5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6c2NoZWR1
bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7CkBAIC0xNjcsNyArMTY1LDcgQEAgdm9pZCBS
ZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQdHI8V2lkZ2V0PiYmIHdpZGdldCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fd2lkZ2V0KSB7Ci0gICAgICAgIG1vdmVXaWRnZXRUb1BhcmVu
dFNvb24obV93aWRnZXQuZ2V0KCksIDApOworICAgICAgICBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29u
KCptX3dpZGdldCwgbnVsbHB0cik7CiAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS53aWxsUmVt
b3ZlV2lkZ2V0RnJvbVJlbmRlclRyZWUoKm1fd2lkZ2V0KTsKICAgICAgICAgd2lkZ2V0UmVuZGVy
ZXJNYXAoKS5yZW1vdmUobV93aWRnZXQuZ2V0KCkpOwogICAgICAgICBtX3dpZGdldCA9IG51bGxw
dHI7CkBAIC0xOTMsNyArMTkxLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQ
dHI8V2lkZ2V0PiYmIHdpZGdldCkKICAgICAgICAgICAgICAgICByZXBhaW50KCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbW92ZVdpZGdldFRvUGFyZW50U29vbihtX3dpZGdl
dC5nZXQoKSwgJnZpZXcoKS5mcmFtZVZpZXcoKSk7CisgICAgICAgIG1vdmVXaWRnZXRUb1BhcmVu
dFNvb24oKm1fd2lkZ2V0LCAmdmlldygpLmZyYW1lVmlldygpKTsKICAgICB9CiB9CiAKQEAgLTMz
OCw5ICszMzYsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0
aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgIG1fd2lkZ2V0LT5zZXRJc1NlbGVjdGVkKGlzU2VsZWN0
ZWQoKSk7CiB9CiAKLVJlbmRlcldpZGdldCogUmVuZGVyV2lkZ2V0OjpmaW5kKGNvbnN0IFdpZGdl
dCogd2lkZ2V0KQorUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lkZ2V0
JiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIHdpZGdldFJlbmRlcmVyTWFwKCkuZ2V0KHdpZGdldCk7
CisgICAgcmV0dXJuIHdpZGdldFJlbmRlcmVyTWFwKCkuZ2V0KCZ3aWRnZXQpOwogfQogCiBib29s
IFJlbmRlcldpZGdldDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RB
Y3Rpb24gYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4
IDZlMDExZDczOWU1M2M2ZGE5YjExYTdkYTg2ZDhlZGNlYzNlNDQ5N2IuLmM2YTliYzVmOTM1YzMz
OTQ4MDg3MmExMWYzNjA3OTgwZWI0YmEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmgKQEAgLTQ0LDE0ICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3Rh
dGljIGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVybiBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1
c3BlbmRDb3VudDsgfQotICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdpZGdl
dCogd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7IHdpZGdldE5ld1BhcmVudE1hcCgpLnNldCh3
aWRnZXQsIGZyYW1lKTsgfQorICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdp
ZGdldCYgd2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7IHdpZGdldE5ld1BhcmVudE1hcCgpLnNl
dCgmd2lkZ2V0LCBmcmFtZSk7IH0KIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPFdpZGdldD4sIEZyYW1lVmlldyo+IFdpZGdldFRvUGFyZW50TWFwOworICAgIHVzaW5nIFdp
ZGdldFRvUGFyZW50TWFwID0gSGFzaE1hcDxSZWZQdHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj47CiAg
ICAgc3RhdGljIFdpZGdldFRvUGFyZW50TWFwJiB3aWRnZXROZXdQYXJlbnRNYXAoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVdpZGdldHMoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsKIH07
CiAgICAgCkBAIC02NCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXaWRnZXQqIHdpZGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkZ2V0LmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJik7CiAKLSAgICBzdGF0aWMgUmVuZGVyV2lkZ2V0KiBm
aW5kKGNvbnN0IFdpZGdldCopOworICAgIHN0YXRpYyBSZW5kZXJXaWRnZXQqIGZpbmQoY29uc3Qg
V2lkZ2V0Jik7CiAKICAgICBlbnVtIGNsYXNzIENoaWxkV2lkZ2V0U3RhdGUgeyBWYWxpZCwgRGVz
dHJveWVkIH07CiAgICAgQ2hpbGRXaWRnZXRTdGF0ZSB1cGRhdGVXaWRnZXRQb3NpdGlvbigpIFdB
Uk5fVU5VU0VEX1JFVFVSTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0QXV0b1NpemluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXpp
bmcuY3BwCmluZGV4IDFhNTlmNjU1NzQ4OWQwNzdmNGJiZGJmMjhhOGRmYjhiNDZlN2EyNGMuLmFh
ZjcxY2I3OWZjMTYwOGZkYjBmNGE3ODNiOTZjOGExMWQ0YmIxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIGF1dG8g
VGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0VGV4dE5vZGVTaXplcygpIC0+IFN0aWxsSGFzTm9k
ZXMKIAogICAgICAgICAvLyBSZXNpemUgdGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCiAg
ICAgICAgIGF1dG8mIHBhcmVudFN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0eWxlKCk7Ci0gICAg
ICAgIExlbmd0aCBsaW5lSGVpZ2h0TGVuZ3RoID0gcGFyZW50U3R5bGUuc3BlY2lmaWVkTGluZUhl
aWdodCgpOworICAgICAgICBhdXRvJiBsaW5lSGVpZ2h0TGVuZ3RoID0gcGFyZW50U3R5bGUuc3Bl
Y2lmaWVkTGluZUhlaWdodCgpOwogCiAgICAgICAgIGludCBzcGVjaWZpZWRMaW5lSGVpZ2h0Owog
ICAgICAgICBpZiAobGluZUhlaWdodExlbmd0aC5pc1BlcmNlbnQoKSkKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBhdXRvIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdFRleHROb2RlU2l6ZXMoKSAtPiBT
dGlsbEhhc05vZGVzCiAKICAgICAgICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVy
U3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRM
aW5lSGVpZ2h0KExlbmd0aChsaW5lSGVpZ2h0LCBGaXhlZCkpOwotICAgICAgICBuZXdQYXJlbnRT
dHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGgpOworICAgICAgICBu
ZXdQYXJlbnRTdHlsZS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB7IGxpbmVIZWlnaHRM
ZW5ndGggfSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0
ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgIHBhcmVudFJlbmRl
cmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVudFN0eWxlKSk7CkBAIC0xODgsMTIgKzE4OCwx
MiBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KCkKICAgICAgICAgICAgIHBhcmVu
dFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnBhcmVudCgpOwogCiAgICAgICAgIGF1dG8mIHBh
cmVudFN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIExlbmd0aCBvcmln
aW5hbExpbmVIZWlnaHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0KCk7CisgICAg
ICAgIGF1dG8mIG9yaWdpbmFsTGluZUhlaWdodCA9IHBhcmVudFN0eWxlLnNwZWNpZmllZExpbmVI
ZWlnaHQoKTsKICAgICAgICAgaWYgKG9yaWdpbmFsTGluZUhlaWdodCA9PSBwYXJlbnRTdHlsZS5s
aW5lSGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIG5ld1Bh
cmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7Ci0gICAg
ICAgIG5ld1BhcmVudFN0eWxlLnNldExpbmVIZWlnaHQob3JpZ2luYWxMaW5lSGVpZ2h0KTsKKyAg
ICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChMZW5ndGggeyBvcmlnaW5hbExpbmVI
ZWlnaHQgfSk7CiAgICAgICAgIG5ld1BhcmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOwogICAgICAgICBuZXdQYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0
ZSgmbm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgIHBhcmVudFJlbmRl
cmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1BhcmVudFN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwCmluZGV4IGNhNDZjMmViY2QwMmZk
ZTM0ZTVlNmMwYmYwYmQ4YjcyYTA0YTJlMDQuLjYxNjJhY2JiOTNmNzNlYjVmOTk1NzNiZDE1ZGMx
YzYzM2QxMTMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
TWF0aE1MU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0
aE1MU3R5bGUuY3BwCkBAIC00OSwxNCArNDksMTEgQEAgUmVmPE1hdGhNTFN0eWxlPiBNYXRoTUxT
dHlsZTo6Y3JlYXRlKCkKIAogY29uc3QgTWF0aE1MU3R5bGUqIE1hdGhNTFN0eWxlOjpnZXRNYXRo
TUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChyZW5kZXJlcikgewot
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZl
IGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhpcz8KLSAgICAg
ICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihyZW5kZXJlcikpCi0gICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKS0+bWF0aE1MU3R5bGUoKTsK
LSAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTEJsb2NrPihyZW5kZXJlcikpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KHJlbmRlcmVyKS0+bWF0aE1MU3R5
bGUoKTsKLSAgICB9Ci0KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1ha2UgUmVuZGVyTWF0aE1M
VGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3JkZXIgdG8gc2ltcGxpZnkg
dGhpcz8KKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MVGFibGU+KHJlbmRlcmVyKSkKKyAgICAgICAg
cmV0dXJuICZkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4oKnJlbmRlcmVyKS5tYXRoTUxTdHls
ZSgpOworICAgIGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4ocmVuZGVyZXIpKQorICAgICAgICBy
ZXR1cm4gJmRvd25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqcmVuZGVyZXIpLm1hdGhNTFN0eWxl
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTY1LDkgKzYyLDkgQEAgdm9pZCBNYXRo
TUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
ICAgIGZvciAoYXV0byogY2hpbGQgPSByZW5kZXJlcjsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRJblByZU9yZGVyKHJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIG1h
a2UgUmVuZGVyTWF0aE1MVGFibGUgZGVyaXZlIGZyb20gUmVuZGVyTWF0aE1MQmxvY2sgaW4gb3Jk
ZXIgdG8gc2ltcGxpZnkgdGhpcz8KICAgICAgICAgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPihj
aGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRoTUxUYWJsZT4oY2hpbGQpLT5t
YXRoTUxTdHlsZSgpLT5yZXNvbHZlTWF0aE1MU3R5bGUoY2hpbGQpOworICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyTWF0aE1MVGFibGU+KCpjaGlsZCkubWF0aE1MU3R5bGUoKS5yZXNvbHZlTWF0
aE1MU3R5bGUoY2hpbGQpOwogICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJNYXRoTUxCbG9jaz4o
Y2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KGNoaWxkKS0+
bWF0aE1MU3R5bGUoKS0+cmVzb2x2ZU1hdGhNTFN0eWxlKGNoaWxkKTsKKyAgICAgICAgICAgIGRv
d25jYXN0PFJlbmRlck1hdGhNTEJsb2NrPigqY2hpbGQpLm1hdGhNTFN0eWxlKCkucmVzb2x2ZU1h
dGhNTFN0eWxlKGNoaWxkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBiYjE0MmEyNTQyMGEzYTZi
Y2UxNGMxNTRiZGU5MzIzMzYzNDM0ZTEyLi42MWExMmNhNDg3ZjNhNWJiYzU1NGRlZTBjODNhZjY0
NWE2MjFkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJN
YXRoTUxCbG9jayhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ck1hdGhNTEJsb2NrKCk7CiAKLSAgICBNYXRoTUxTdHlsZSogbWF0aE1MU3R5bGUoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PE1hdGhNTFN0eWxlKj4oJm1fbWF0aE1MU3R5bGUuZ2V0KCkpOyB9
CisgICAgTWF0aE1MU3R5bGUmIG1hdGhNTFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9tYXRoTUxT
dHlsZTsgfQogCiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHVibGljOgogICAgIH0KIAogCi0gICAgTWF0aE1MU3R5bGUqIG1hdGhNTFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxNYXRoTUxTdHlsZSo+KCZtX21hdGhNTFN0eWxlLmdldCgpKTsg
fQorICAgIE1hdGhNTFN0eWxlJiBtYXRoTUxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0aE1M
U3R5bGU7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IDM1ZTQ0MTQ1Zjdm
ODYyYzA4YmQwNGUyMTdlZDVmZDBkZTYzMGMxMDguLmEyMGJkMTIyZDg4Y2UwZjA4ZDc0NTc3ZWU3
OTg1YTAzYTU5ODkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpGcmFjdGlvblBhcmFtZXRlcnMgUmVuZGVyTWF0aE1MRnJhY3Rpb246
OmZyYWN0aW9uUGFyYW1ldGVyCiAgICAgLy8gV2UgdHJ5IGFuZCByZWFkIGNvbnN0YW50cyB0byBk
cmF3IHRoZSBmcmFjdGlvbiBmcm9tIHRoZSBPcGVuVHlwZSBNQVRIIGFuZCB1c2UgZmFsbGJhY2sg
dmFsdWVzIG90aGVyd2lzZS4KICAgICBjb25zdCBhdXRvJiBwcmltYXJ5Rm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOwogICAgIGNvbnN0IGF1dG8qIG1hdGhEYXRhID0g
c3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKTsKLSAgICBib29s
IGRpc3BsYXkgPSBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsKKyAgICBib29sIGRpc3Bs
YXkgPSBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHlsZSgpOwogICAgIGlmIChtYXRoRGF0YSkgewog
ICAgICAgICBwYXJhbWV0ZXJzLm51bWVyYXRvckdhcE1pbiA9IG1hdGhEYXRhLT5nZXRNYXRoQ29u
c3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRhOjpGcmFjdGlvbk51
bURpc3BsYXlTdHlsZUdhcE1pbiA6IE9wZW5UeXBlTWF0aERhdGE6OkZyYWN0aW9uTnVtZXJhdG9y
R2FwTWluKTsKICAgICAgICAgcGFyYW1ldGVycy5kZW5vbWluYXRvckdhcE1pbiA9IG1hdGhEYXRh
LT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIGRpc3BsYXkgPyBPcGVuVHlwZU1hdGhEYXRh
OjpGcmFjdGlvbkRlbm9tRGlzcGxheVN0eWxlR2FwTWluIDogT3BlblR5cGVNYXRoRGF0YTo6RnJh
Y3Rpb25EZW5vbWluYXRvckdhcE1pbik7CkBAIC0xMTYsNyArMTE2LDcgQEAgUmVuZGVyTWF0aE1M
RnJhY3Rpb246OlN0YWNrUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6c3RhY2tQYXJh
bWV0ZXJzKCkKICAgICAvLyBXZSB0cnkgYW5kIHJlYWQgY29uc3RhbnRzIHRvIGRyYXcgdGhlIHN0
YWNrIGZyb20gdGhlIE9wZW5UeXBlIE1BVEggYW5kIHVzZSBmYWxsYmFjayB2YWx1ZXMgb3RoZXJ3
aXNlLgogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LnByaW1hcnlGb250KCk7CiAgICAgY29uc3QgYXV0byogbWF0aERhdGEgPSBzdHlsZSgpLmZvbnRD
YXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpOwotICAgIGJvb2wgZGlzcGxheSA9IG1h
dGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpOworICAgIGJvb2wgZGlzcGxheSA9IG1hdGhNTFN0
eWxlKCkuZGlzcGxheVN0eWxlKCk7CiAgICAgaWYgKG1hdGhEYXRhKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuZ2FwTWluID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwgZGlz
cGxheSA/IE9wZW5UeXBlTWF0aERhdGE6OlN0YWNrRGlzcGxheVN0eWxlR2FwTWluIDogT3BlblR5
cGVNYXRoRGF0YTo6U3RhY2tHYXBNaW4pOwogICAgICAgICBwYXJhbWV0ZXJzLnRvcFNoaWZ0VXAg
PSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBkaXNwbGF5ID8gT3BlblR5
cGVNYXRoRGF0YTo6U3RhY2tUb3BEaXNwbGF5U3R5bGVTaGlmdFVwIDogT3BlblR5cGVNYXRoRGF0
YTo6U3RhY2tUb3BTaGlmdFVwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCBlMjEyZTliZjczNGFkMjU1ZjA2
ZTY5MGVjMjVlMTc4NWE5Mjk5ZTA1Li4wMmZkNDRlNTU0NGU5ZjcyMjEyNjczZTkxNmRkNjViODE0
M2JhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc2V0U3RyZXRjaFNpemUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVyYXRvckZsYWco
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKSBjb25zdDsKLSAgICBib29sIGlzTGFyZ2VP
cGVyYXRvckluRGlzcGxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gIWhhc09wZXJhdG9yRmxhZyhN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlN0cmV0Y2h5KSAmJiBoYXNPcGVyYXRvckZsYWcoTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpMYXJnZU9wKSAmJiBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5
U3R5bGUoKTsgfQotICAgIGJvb2wgc2hvdWxkTW92ZUxpbWl0cygpIGNvbnN0IHsgcmV0dXJuIGhh
c09wZXJhdG9yRmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6Ok1vdmFibGVMaW1pdHMpICYm
ICFtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKTsgfQorICAgIGJvb2wgaXNMYXJnZU9wZXJh
dG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0b3JGbGFnKE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9yRmxhZyhNYXRoTUxP
cGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApICYmIG1hdGhNTFN0eWxlKCkuZGlzcGxheVN0eWxl
KCk7IH0KKyAgICBib29sIHNob3VsZE1vdmVMaW1pdHMoKSBjb25zdCB7IHJldHVybiBoYXNPcGVy
YXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpNb3ZhYmxlTGltaXRzKSAmJiAhbWF0
aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2Fs
KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9tYXRoT3BlcmF0b3IuaXRhbGljQ29ycmVjdGlvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IDFh
NjZlYzg3ZTZkOTM0M2JmNWNhNTU5Yjk3ODBhOTAyZjdmMTRlMjIuLjNkNzU3YTdhODU2YWNiNjFm
MGU2ZjgyM2Q5NmE5OTg5NTI5NWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJl
bmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJNYXRoTUxSb290Ojp2ZXJ0
aWNhbFBhcmFtZXRlcnMoKQogICAgIGNvbnN0IGF1dG8mIHByaW1hcnlGb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpLnByaW1hcnlGb250KCk7CiAgICAgaWYgKGF1dG8qIG1hdGhEYXRhID0gc3R5
bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKSkgewogICAgICAgICBw
YXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1h
cnlGb250LCBPcGVuVHlwZU1hdGhEYXRhOjpSYWRpY2FsUnVsZVRoaWNrbmVzcyk7Ci0gICAgICAg
IHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBtYXRoRGF0YS0+Z2V0TWF0aENvbnN0YW50KHByaW1h
cnlGb250LCBtYXRoTUxTdHlsZSgpLT5kaXNwbGF5U3R5bGUoKSA/IE9wZW5UeXBlTWF0aERhdGE6
OlJhZGljYWxEaXNwbGF5U3R5bGVWZXJ0aWNhbEdhcCA6IE9wZW5UeXBlTWF0aERhdGE6OlJhZGlj
YWxWZXJ0aWNhbEdhcCk7CisgICAgICAgIHBhcmFtZXRlcnMudmVydGljYWxHYXAgPSBtYXRoRGF0
YS0+Z2V0TWF0aENvbnN0YW50KHByaW1hcnlGb250LCBtYXRoTUxTdHlsZSgpLmRpc3BsYXlTdHls
ZSgpID8gT3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbERpc3BsYXlTdHlsZVZlcnRpY2FsR2FwIDog
T3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbFZlcnRpY2FsR2FwKTsKICAgICAgICAgcGFyYW1ldGVy
cy5leHRyYUFzY2VuZGVyID0gbWF0aERhdGEtPmdldE1hdGhDb25zdGFudChwcmltYXJ5Rm9udCwg
T3BlblR5cGVNYXRoRGF0YTo6UmFkaWNhbEV4dHJhQXNjZW5kZXIpOwogICAgICAgICBpZiAobV9r
aW5kID09IFJvb3RXaXRoSW5kZXgpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JlZUJvdHRv
bVJhaXNlUGVyY2VudCA9IG1hdGhEYXRhLT5nZXRNYXRoQ29uc3RhbnQocHJpbWFyeUZvbnQsIE9w
ZW5UeXBlTWF0aERhdGE6OlJhZGljYWxEZWdyZWVCb3R0b21SYWlzZVBlcmNlbnQpOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIFJlbmRlck1hdGhNTFJvb3Q6OlZlcnRpY2FsUGFyYW1ldGVycyBSZW5kZXJN
YXRoTUxSb290Ojp2ZXJ0aWNhbFBhcmFtZXRlcnMoKQogICAgICAgICAvLyBSYWRpY2FsRXh0cmFB
c2NlbmRlcjogU3VnZ2VzdGVkIHZhbHVlIGlzIFJhZGljYWxSdWxlVGhpY2tuZXNzLgogICAgICAg
ICAvLyBSYWRpY2FsRGVncmVlQm90dG9tUmFpc2VQZXJjZW50OiBTdWdnZXN0ZWQgdmFsdWUgaXMg
NjAlLgogICAgICAgICBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgPSBydWxlVGhpY2tuZXNzRmFs
bGJhY2soKTsKLSAgICAgICAgaWYgKG1hdGhNTFN0eWxlKCktPmRpc3BsYXlTdHlsZSgpKQorICAg
ICAgICBpZiAobWF0aE1MU3R5bGUoKS5kaXNwbGF5U3R5bGUoKSkKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMudmVydGljYWxHYXAgPSBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgKyBzdHlsZSgpLmZv
bnRNZXRyaWNzKCkueEhlaWdodCgpIC8gNDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcGFy
YW1ldGVycy52ZXJ0aWNhbEdhcCA9IDUgKiBwYXJhbWV0ZXJzLnJ1bGVUaGlja25lc3MgLyA0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcAppbmRleCA1NTViZDY4ZDY1MWI1ZjhhZjA1MWYwMTVkM2VhZmM3N2UwNjhmMzkxLi5h
NWM0YzFjMGQwYzVkOWFlNjBmZTExMjA4NGY2ODRhNjcxOWFmODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAt
NTI4LDcgKzUyOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50
R2x5cGgoKQogCiAgICAgY29uc3QgYXV0byYgdG9rZW5FbGVtZW50ID0gZWxlbWVudCgpOwogICAg
IGlmIChhdXRvIGNvZGVQb2ludCA9IE1hdGhNTFRva2VuRWxlbWVudDo6Y29udmVydFRvU2luZ2xl
Q29kZVBvaW50KGVsZW1lbnQoKS50ZXh0Q29udGVudCgpKSkgewotICAgICAgICBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudCBtYXRodmFyaWFudCA9IG1hdGhNTFN0eWxlKCktPm1hdGhWYXJpYW50
KCk7CisgICAgICAgIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IG1hdGh2YXJpYW50ID0gbWF0
aE1MU3R5bGUoKS5tYXRoVmFyaWFudCgpOwogICAgICAgICBpZiAobWF0aHZhcmlhbnQgPT0gTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5vbmUpCiAgICAgICAgICAgICBtYXRodmFyaWFudCA9
IHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykgPyBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudDo6SXRhbGljIDogTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ6Ok5v
cm1hbDsKICAgICAgICAgVUNoYXIzMiB0cmFuc2Zvcm1lZENvZGVQb2ludCA9IG1hdGhWYXJpYW50
KGNvZGVQb2ludC52YWx1ZSgpLCBtYXRodmFyaWFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRleCAyOTBjNmQ4NWQwZWUzMmQ1MDYzNzM1
MjZiOTA2YjQ4NmZkODMzNTkwLi4wNmIzZTA5MGVhOTdiYWVkMTUwMTE3NDkxMTc3MjJiZTFmNzI5
YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAKQEAgLTM4Nyw4ICszODcsOCBAQCBib29sIEJhc2ljU2hhcGVJbnNldDo6b3BlcmF0b3I9PShj
b25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIAogc3RhdGljIEZsb2F0U2l6ZSBmbG9hdFNp
emVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gpCiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShmbG9hdFZhbHVlRm9y
TGVuZ3RoKGxlbmd0aFNpemUud2lkdGgoKSwgYm91bmRpbmdCb3gud2lkdGgoKSksCi0gICAgICAg
IGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoU2l6ZS5oZWlnaHQoKSwgYm91bmRpbmdCb3guaGVp
Z2h0KCkpKTsKKyAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFNpemUud2lk
dGgsIGJvdW5kaW5nQm94LndpZHRoKCkpLAorICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxl
bmd0aFNpemUuaGVpZ2h0LCBib3VuZGluZ0JveC5oZWlnaHQoKSkgfTsKIH0KIAogY29uc3QgUGF0
aCYgQmFzaWNTaGFwZUluc2V0OjpwYXRoKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRleCAyOTRmYjgy
YTA0ZWRmNGNhMjkxYjgyYzgzZDE5ZWQwYzA2ZjIwYTFkLi4wNmJjYzk5ZjhiMGYxOWRjYTRiZDI3
MjY1MWRhYzMyYmI3ZGQ1NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
b3JkZXJEYXRhLmgKQEAgLTM0LDEwICszNCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCb3JkZXJEYXRhIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKIHB1YmxpYzoKLSAgICBC
b3JkZXJEYXRhKCkgOiBtX3RvcExlZnQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVk
KSkKLSAgICAgICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KExlbmd0aCgwLCBGaXhlZCksIExlbmd0
aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAgICAgICwgbV9ib3R0b21MZWZ0KExlbmd0aCgwLCBG
aXhlZCksIExlbmd0aCgwLCBGaXhlZCkpCi0gICAgICAgICAgICAgICAgICwgbV9ib3R0b21SaWdo
dChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQorICAgIEJvcmRlckRhdGEoKQor
ICAgICAgICA6IG1fdG9wTGVmdCB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAg
ICAgLCBtX3RvcFJpZ2h0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQorICAgICAgICAs
IG1fYm90dG9tTGVmdCB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH0KKyAgICAgICAgLCBt
X2JvdHRvbVJpZ2h0IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfQogICAgIHsKICAgICB9
CiAgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdApAQCAtNTksMTUgKzYwLDEwIEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAoIW1fdG9wTGVmdC53aWR0aCgpLmlzWmVybygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGlmICghbV90b3BSaWdodC53aWR0aCgpLmlzWmVybygpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV9ib3R0b21MZWZ0LndpZHRoKCkuaXNaZXJvKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0Lndp
ZHRoKCkuaXNaZXJvKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gIW1fdG9wTGVmdC53aWR0aC5pc1plcm8oKQorICAgICAg
ICAgICAgfHwgIW1fdG9wUmlnaHQud2lkdGguaXNaZXJvKCkKKyAgICAgICAgICAgIHx8ICFtX2Jv
dHRvbUxlZnQud2lkdGguaXNaZXJvKCkKKyAgICAgICAgICAgIHx8ICFtX2JvdHRvbVJpZ2h0Lndp
ZHRoLmlzWmVybygpOwogICAgIH0KICAgICAKICAgICBmbG9hdCBib3JkZXJMZWZ0V2lkdGgoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAK
aW5kZXggMGJkMGQ3MDYxMWFjMWMxZjBjNDMxMzBiNDAzMWJiZGQyNGVmYzM5Zi4uYzZjMDIyNGJj
ZGI4YTg3ZTVlNWMyMzEwOWE1ZTFkZmVjOTdhNGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCkBAIC0zOCw4ICszOCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50RGF0YT4gQ29udGVudERhdGE6OmNsb25lKCkgY29uc3QKICAgICBhdXRv
IHJlc3VsdCA9IGNsb25lSW50ZXJuYWwoKTsKICAgICBhdXRvKiBsYXN0TmV3RGF0YSA9IHJlc3Vs
dC5nZXQoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRlbnREYXRhID0gbmV4dCgpOyBjb250ZW50RGF0
YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7Ci0gICAgICAgIGF1dG8gbmV3
RGF0YSA9IGNvbnRlbnREYXRhLT5jbG9uZUludGVybmFsKCk7Ci0gICAgICAgIGxhc3ROZXdEYXRh
LT5zZXROZXh0KFdURk1vdmUobmV3RGF0YSkpOworICAgICAgICBsYXN0TmV3RGF0YS0+c2V0TmV4
dChjb250ZW50RGF0YS0+Y2xvbmVJbnRlcm5hbCgpKTsKICAgICAgICAgbGFzdE5ld0RhdGEgPSBs
YXN0TmV3RGF0YS0+bmV4dCgpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCAxNmQ2NTU3NjBkZTc1
MmNmMTYyYTM2ZTUwY2IwMzU2NzZkN2RkMjkyLi45ZTk3YzAyMzVjM2RmZWQ1ZGM4NDk1ZmJmN2E2
OTYwMTA0NmI4ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Q29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPih0ZXh0KCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KIAogICAgIFN0cmluZyBtX3RleHQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKaW5kZXggM2Y5M2E1N2Vm
NTgyNjFkZmFhMmNlZmRmNmRhOWIyYTliMzlmMjM5Yy4uZjU0MmQ2YzJhMTZmY2Y3OGIxNjZlYTI5
ZWVkMGZkOGI0Y2YwZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJl
Zi5oCkBAIC0xLDggKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChr
b2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMzAg
KzI2LDY1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIERhdGFSZWYgewogcHVibGljOgotICAgIERhdGFSZWYoUmVmPFQ+JiYgZGF0YSkgOiBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikg
OiBtX2RhdGEoY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdldCgpKSkgeyB9Ci0gICAgRGF0
YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKSB7IG1fZGF0YSA9IGNvbnN0X2Nh
c3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSk7IHJldHVybiAqdGhpczsgfQorICAgIERhdGFSZWYo
UmVmPFQ+JiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICB7Cisg
ICAgfQogCi0gICAgY29uc3QgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnB0cigpOyB9
CisgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhlcikKKyAgICAgICAgOiBtX2RhdGEob3Ro
ZXIubV9kYXRhLmNvcHlSZWYoKSkKKyAgICB7CisgICAgfQorCisgICAgRGF0YVJlZiYgb3BlcmF0
b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9kYXRhID0gb3RoZXIu
bV9kYXRhLmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAotICAgIGNv
bnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQotICAgIGNvbnN0IFQq
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQorICAgIERhdGFSZWYoRGF0YVJl
ZiYmKSA9IGRlZmF1bHQ7CisgICAgRGF0YVJlZiYgb3BlcmF0b3I9KERhdGFSZWYmJikgPSBkZWZh
dWx0OworCisgICAgRGF0YVJlZiByZXBsYWNlKERhdGFSZWYmJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2RhdGEucmVwbGFjZShXVEZNb3ZlKG90aGVyLm1fZGF0YSkpOworICAgIH0K
KworICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2RhdGE7CisgICAgfQogCi0gICAgVCogYWNjZXNzKCkKKyAgICBjb25zdCBUJiBnZXQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICBjb25zdCBUJiBv
cGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisK
KyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2RhdGEucHRyKCk7CisgICAgfQorCisgICAgVCYgYWNjZXNzKCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9kYXRhLT5oYXNPbmVSZWYoKSkKICAgICAgICAgICAgIG1fZGF0YSA9IG1fZGF0YS0+Y29w
eSgpOwotICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpOworICAgICAgICByZXR1cm4gbV9kYXRh
OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmVmPFQ+JiBvKSBjb25z
dAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmVmJiBvdGhlcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgPT0gby5tX2RhdGEucHRyKCkgfHwgbV9kYXRh
LmdldCgpID09IG8ubV9kYXRhLmdldCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09
IG90aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgp
OwogICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJlZjxUPiYgbykg
Y29uc3QKKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEucHRyKCkgIT0gby5tX2RhdGEucHRyKCkgJiYg
bV9kYXRhLmdldCgpICE9IG8ubV9kYXRhLmdldCgpOworICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcAppbmRleCA3NjUyMzgwNWEyNWM5NDI2YWZlMDNjMzM5
MWMwZTc4OTk4YTUxZDI2Li45NzI5OGFiNDQ3OWE3ZWEyN2RlOWZiZTM4MmUyYjc0NzBiNmY0MDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNw
cApAQCAtMjksMTQgKzI5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGltaW5nRnVuY3Rp
b24qIEtleWZyYW1lVmFsdWU6OnRpbWluZ0Z1bmN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSoga2V5ZnJhbWVTdHlsZSA9IHN0eWxl
KCk7CisgICAgYXV0byoga2V5ZnJhbWVTdHlsZSA9IHN0eWxlKCk7CiAgICAgaWYgKCFrZXlmcmFt
ZVN0eWxlIHx8ICFrZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZVN0eWxlLT5hbmlt
YXRpb25zKCktPnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0
aW9uID0ga2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpLT5hbmltYXRpb24oaSk7CiAgICAgICAg
IGlmIChuYW1lID09IGFuaW1hdGlvbi5uYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gYW5pbWF0
aW9uLnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gYW5pbWF0aW9u
LnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NCw3
ICs0NCw2IEBAIFRpbWluZ0Z1bmN0aW9uKiBLZXlmcmFtZVZhbHVlOjp0aW1pbmdGdW5jdGlvbihj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAKIEtleWZyYW1lTGlzdDo6fktleWZyYW1l
TGlzdCgpCiB7Ci0gICAgY2xlYXIoKTsKIH0KIAogdm9pZCBLZXlmcmFtZUxpc3Q6OmNsZWFyKCkK
QEAgLTU4LDE1ICs1NywxMiBAQCBib29sIEtleWZyYW1lTGlzdDo6b3BlcmF0b3I9PShjb25zdCBL
ZXlmcmFtZUxpc3QmIG8pIGNvbnN0CiAgICAgaWYgKG1fa2V5ZnJhbWVzLnNpemUoKSAhPSBvLm1f
a2V5ZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVmVjdG9yPEtl
eWZyYW1lVmFsdWU+Ojpjb25zdF9pdGVyYXRvciBpdDIgPSBvLm1fa2V5ZnJhbWVzLmJlZ2luKCk7
Ci0gICAgZm9yIChWZWN0b3I8S2V5ZnJhbWVWYWx1ZT46OmNvbnN0X2l0ZXJhdG9yIGl0MSA9IG1f
a2V5ZnJhbWVzLmJlZ2luKCk7IGl0MSAhPSBtX2tleWZyYW1lcy5lbmQoKTsgKytpdDEpIHsKKyAg
ICBhdXRvIGl0MiA9IG8ubV9rZXlmcmFtZXMuYmVnaW4oKTsKKyAgICBmb3IgKGF1dG8gaXQxID0g
bV9rZXlmcmFtZXMuYmVnaW4oKTsgaXQxICE9IG1fa2V5ZnJhbWVzLmVuZCgpOyArK2l0MSwgKytp
dDIpIHsKICAgICAgICAgaWYgKGl0MS0+a2V5KCkgIT0gaXQyLT5rZXkoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlMSA9ICppdDEt
PnN0eWxlKCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTIgPSAqaXQyLT5zdHls
ZSgpOwotICAgICAgICBpZiAoc3R5bGUxICE9IHN0eWxlMikKKyAgICAgICAgaWYgKCppdDEtPnN0
eWxlKCkgIT0gKml0Mi0+c3R5bGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgKytpdDI7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBjZTg0YjE2MGYxOTcz
OWRkOTZiNDgxYjA0OWY2ZmZjMDNmNWJlMDc2Li5lOGM5MjMyYzE2ZTU3OWZmMTZmZjQzNzU2NWU5
ZGUyNjg4MGMwMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9O
aW5lUGllY2VJbWFnZS5jcHAKQEAgLTYwLDIwICs2MCwyMiBAQCBMYXlvdXRVbml0IE5pbmVQaWVj
ZUltYWdlOjpjb21wdXRlU2xpY2UoTGVuZ3RoIGxlbmd0aCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5
b3V0VQogCiBMYXlvdXRCb3hFeHRlbnQgTmluZVBpZWNlSW1hZ2U6OmNvbXB1dGVTbGljZXMoY29u
c3QgTGF5b3V0U2l6ZSYgc2l6ZSwgY29uc3QgTGVuZ3RoQm94JiBsZW5ndGhzLCBpbnQgc2NhbGVG
YWN0b3IpCiB7Ci0gICAgTGF5b3V0VW5pdCB0b3AgICAgPSBzdGQ6Om1pbjxMYXlvdXRVbml0Pihz
aXplLmhlaWdodCgpLCB2YWx1ZUZvckxlbmd0aChsZW5ndGhzLnRvcCgpLCAgICBzaXplLmhlaWdo
dCgpKSkgKiBzY2FsZUZhY3RvcjsKLSAgICBMYXlvdXRVbml0IHJpZ2h0ICA9IHN0ZDo6bWluPExh
eW91dFVuaXQ+KHNpemUud2lkdGgoKSwgIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aHMucmlnaHQoKSwg
IHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yOwotICAgIExheW91dFVuaXQgYm90dG9tID0g
c3RkOjptaW48TGF5b3V0VW5pdD4oc2l6ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Ro
cy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSkpICogc2NhbGVGYWN0b3I7Ci0gICAgTGF5b3V0VW5p
dCBsZWZ0ICAgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihzaXplLndpZHRoKCksICB2YWx1ZUZvckxl
bmd0aChsZW5ndGhzLmxlZnQoKSwgICBzaXplLndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvcjsKLSAg
ICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgc3RkOjptaW4oc2l6ZS5oZWlnaHQoKSwgdmFsdWVGb3JMZW5ndGgo
bGVuZ3Rocy50b3AoKSwgc2l6ZS5oZWlnaHQoKSkpICogc2NhbGVGYWN0b3IsCisgICAgICAgIHN0
ZDo6bWluKHNpemUud2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5yaWdodCgpLCBzaXpl
LndpZHRoKCkpKSAgKiBzY2FsZUZhY3RvciwKKyAgICAgICAgc3RkOjptaW4oc2l6ZS5oZWlnaHQo
KSwgdmFsdWVGb3JMZW5ndGgobGVuZ3Rocy5ib3R0b20oKSwgc2l6ZS5oZWlnaHQoKSkpICogc2Nh
bGVGYWN0b3IsCisgICAgICAgIHN0ZDo6bWluKHNpemUud2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
bGVuZ3Rocy5sZWZ0KCksIHNpemUud2lkdGgoKSkpICAqIHNjYWxlRmFjdG9yCisgICAgfTsKIH0K
IAogTGF5b3V0Qm94RXh0ZW50IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlU2xpY2VzKGNvbnN0IExh
eW91dFNpemUmIHNpemUsIGNvbnN0IExlbmd0aEJveCYgbGVuZ3RocywgY29uc3QgRmxvYXRCb3hF
eHRlbnQmIHdpZHRocywgY29uc3QgTGF5b3V0Qm94RXh0ZW50JiBzbGljZXMpCiB7Ci0gICAgTGF5
b3V0VW5pdCB0b3AgICAgPSBjb21wdXRlU2xpY2UobGVuZ3Rocy50b3AoKSwgICAgd2lkdGhzLnRv
cCgpLCAgICBzbGljZXMudG9wKCksICAgIHNpemUuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQg
cmlnaHQgID0gY29tcHV0ZVNsaWNlKGxlbmd0aHMucmlnaHQoKSwgIHdpZHRocy5yaWdodCgpLCAg
c2xpY2VzLnJpZ2h0KCksICBzaXplLndpZHRoKCkpOwotICAgIExheW91dFVuaXQgYm90dG9tID0g
Y29tcHV0ZVNsaWNlKGxlbmd0aHMuYm90dG9tKCksIHdpZHRocy5ib3R0b20oKSwgc2xpY2VzLmJv
dHRvbSgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBMYXlvdXRVbml0IGxlZnQgICA9IGNvbXB1dGVT
bGljZShsZW5ndGhzLmxlZnQoKSwgICB3aWR0aHMubGVmdCgpLCAgIHNsaWNlcy5sZWZ0KCksICAg
c2l6ZS53aWR0aCgpKTsKLSAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMu
dG9wKCksIHdpZHRocy50b3AoKSwgc2xpY2VzLnRvcCgpLCBzaXplLmhlaWdodCgpKSwKKyAgICAg
ICAgY29tcHV0ZVNsaWNlKGxlbmd0aHMucmlnaHQoKSwgd2lkdGhzLnJpZ2h0KCksIHNsaWNlcy5y
aWdodCgpLCBzaXplLndpZHRoKCkpLAorICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy5ib3R0
b20oKSwgd2lkdGhzLmJvdHRvbSgpLCBzbGljZXMuYm90dG9tKCksIHNpemUuaGVpZ2h0KCkpLAor
ICAgICAgICBjb21wdXRlU2xpY2UobGVuZ3Rocy5sZWZ0KCksIHdpZHRocy5sZWZ0KCksIHNsaWNl
cy5sZWZ0KCksIHNpemUud2lkdGgoKSkKKyAgICB9OwogfQogCiB2b2lkIE5pbmVQaWVjZUltYWdl
OjpzY2FsZVNsaWNlc0lmTmVlZGVkKGNvbnN0IExheW91dFNpemUmIHNpemUsIExheW91dEJveEV4
dGVudCYgc2xpY2VzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKaW5kZXggZmFhYmJmZDVhODZlODEw
MGZkODkxYjBhMDA3NTYzNDM1ZmY0MWE0Yy4uMmI1ZmU2NTU0ZTc2MzFlMTJmNDM4ZjFmOGVlMzBm
ZDcxODk4OGQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmgKQEAgLTEwOCw1MyArMTA4LDUzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmltYWdlOyB9CiAgICAgU3R5bGVJbWFnZSog
aW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmltYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkgeyBtX2RhdGEuYWNjZXNzKCktPmlt
YWdlID0gV1RGTW92ZShpbWFnZSk7IH0KKyAgICB2b2lkIHNldEltYWdlKFJlZlB0cjxTdHlsZUlt
YWdlPiYmIGltYWdlKSB7IG1fZGF0YS5hY2Nlc3MoKS5pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOyB9
CiAKICAgICBjb25zdCBMZW5ndGhCb3gmIGltYWdlU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLT5pbWFnZVNsaWNlczsgfQotICAgIHZvaWQgc2V0SW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNs
aWNlcykgeyBtX2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9
CisgICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0YS5hY2Nl
c3MoKS5pbWFnZVNsaWNlcyA9IFdURk1vdmUoc2xpY2VzKTsgfQogCiAgICAgYm9vbCBmaWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLT5maWxsOyB9Ci0gICAgdm9pZCBzZXRGaWxsKGJvb2wgZmls
bCkgeyBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSBmaWxsOyB9CisgICAgdm9pZCBzZXRGaWxsKGJv
b2wgZmlsbCkgeyBtX2RhdGEuYWNjZXNzKCkuZmlsbCA9IGZpbGw7IH0KIAogICAgIGNvbnN0IExl
bmd0aEJveCYgYm9yZGVyU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5ib3JkZXJTbGlj
ZXM7IH0KLSAgICB2b2lkIHNldEJvcmRlclNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0
YS5hY2Nlc3MoKS0+Ym9yZGVyU2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CisgICAgdm9pZCBz
ZXRCb3JkZXJTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBtX2RhdGEuYWNjZXNzKCkuYm9yZGVy
U2xpY2VzID0gV1RGTW92ZShzbGljZXMpOyB9CiAKICAgICBjb25zdCBMZW5ndGhCb3gmIG91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+b3V0c2V0OyB9Ci0gICAgdm9pZCBzZXRPdXRzZXQo
TGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEuYWNjZXNzKCktPm91dHNldCA9IFdURk1vdmUob3V0
c2V0KTsgfQorICAgIHZvaWQgc2V0T3V0c2V0KExlbmd0aEJveCBvdXRzZXQpIHsgbV9kYXRhLmFj
Y2VzcygpLm91dHNldCA9IFdURk1vdmUob3V0c2V0KTsgfQogCiAgICAgRU5pbmVQaWVjZUltYWdl
UnVsZSBob3Jpem9udGFsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVOaW5lUGll
Y2VJbWFnZVJ1bGU+KG1fZGF0YS0+aG9yaXpvbnRhbFJ1bGUpOyB9Ci0gICAgdm9pZCBzZXRIb3Jp
em9udGFsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxlIHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLT5o
b3Jpem9udGFsUnVsZSA9IHJ1bGU7IH0KKyAgICB2b2lkIHNldEhvcml6b250YWxSdWxlKEVOaW5l
UGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNzKCkuaG9yaXpvbnRhbFJ1bGUgPSBy
dWxlOyB9CiAgICAgCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTmluZVBpZWNlSW1hZ2VSdWxlPihtX2RhdGEtPnZlcnRp
Y2FsUnVsZSk7IH0KLSAgICB2b2lkIHNldFZlcnRpY2FsUnVsZShFTmluZVBpZWNlSW1hZ2VSdWxl
IHJ1bGUpIHsgbV9kYXRhLmFjY2VzcygpLT52ZXJ0aWNhbFJ1bGUgPSBydWxlOyB9CisgICAgdm9p
ZCBzZXRWZXJ0aWNhbFJ1bGUoRU5pbmVQaWVjZUltYWdlUnVsZSBydWxlKSB7IG1fZGF0YS5hY2Nl
c3MoKS52ZXJ0aWNhbFJ1bGUgPSBydWxlOyB9CiAKICAgICB2b2lkIGNvcHlJbWFnZVNsaWNlc0Zy
b20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFj
Y2VzcygpLT5pbWFnZVNsaWNlcyA9IG90aGVyLm1fZGF0YS0+aW1hZ2VTbGljZXM7Ci0gICAgICAg
IG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IG90aGVyLm1fZGF0YS0+ZmlsbDsKKyAgICAgICAgbV9k
YXRhLmFjY2VzcygpLmltYWdlU2xpY2VzID0gb3RoZXIubV9kYXRhLT5pbWFnZVNsaWNlczsKKyAg
ICAgICAgbV9kYXRhLmFjY2VzcygpLmZpbGwgPSBvdGhlci5tX2RhdGEtPmZpbGw7CiAgICAgfQog
CiAgICAgdm9pZCBjb3B5Qm9yZGVyU2xpY2VzRnJvbShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3Ro
ZXIpCiAgICAgewotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IG90aGVy
Lm1fZGF0YS0+Ym9yZGVyU2xpY2VzOworICAgICAgICBtX2RhdGEuYWNjZXNzKCkuYm9yZGVyU2xp
Y2VzID0gb3RoZXIubV9kYXRhLT5ib3JkZXJTbGljZXM7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29weU91dHNldEZyb20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKQogICAgIHsKLSAgICAg
ICAgbV9kYXRhLmFjY2VzcygpLT5vdXRzZXQgPSBvdGhlci5tX2RhdGEtPm91dHNldDsKKyAgICAg
ICAgbV9kYXRhLmFjY2VzcygpLm91dHNldCA9IG90aGVyLm1fZGF0YS0+b3V0c2V0OwogICAgIH0K
IAogICAgIHZvaWQgY29weVJlcGVhdEZyb20oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKQog
ICAgIHsKLSAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5ob3Jpem9udGFsUnVsZSA9IG90aGVyLm1f
ZGF0YS0+aG9yaXpvbnRhbFJ1bGU7Ci0gICAgICAgIG1fZGF0YS5hY2Nlc3MoKS0+dmVydGljYWxS
dWxlID0gb3RoZXIubV9kYXRhLT52ZXJ0aWNhbFJ1bGU7CisgICAgICAgIG1fZGF0YS5hY2Nlc3Mo
KS5ob3Jpem9udGFsUnVsZSA9IG90aGVyLm1fZGF0YS0+aG9yaXpvbnRhbFJ1bGU7CisgICAgICAg
IG1fZGF0YS5hY2Nlc3MoKS52ZXJ0aWNhbFJ1bGUgPSBvdGhlci5tX2RhdGEtPnZlcnRpY2FsUnVs
ZTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hc2tEZWZhdWx0cygpCiAgICAgewotICAgICAgICBt
X2RhdGEuYWNjZXNzKCktPmltYWdlU2xpY2VzID0gTGVuZ3RoQm94KDApOwotICAgICAgICBtX2Rh
dGEuYWNjZXNzKCktPmZpbGwgPSB0cnVlOwotICAgICAgICBtX2RhdGEuYWNjZXNzKCktPmJvcmRl
clNsaWNlcyA9IExlbmd0aEJveCgpOworICAgICAgICBtX2RhdGEuYWNjZXNzKCkuaW1hZ2VTbGlj
ZXMgPSBMZW5ndGhCb3goMCk7CisgICAgICAgIG1fZGF0YS5hY2Nlc3MoKS5maWxsID0gdHJ1ZTsK
KyAgICAgICAgbV9kYXRhLmFjY2VzcygpLmJvcmRlclNsaWNlcyA9IExlbmd0aEJveCgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVPdXRzZXQoY29uc3QgTGVuZ3RoJiBv
dXRzZXRTaWRlLCBMYXlvdXRVbml0IGJvcmRlclNpZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5YzQ3MTI1ZWE3NDBmOTY3MDYwNmZl
ZmFiYjk1ZmY4ZTc2Y2JkMjFjLi44ZmU4MmUxNjViNzNjMmEzYWI3Nzg2MDEwZGY0NWQ3Y2UyZjQ4
ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTcxLDExICs3MSwxMSBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICAgICB2
b2lkKiBkYXRhUmVmU3ZnU3R5bGU7CiAgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKICAgICAg
ICAgdW5zaWduZWQgbV9iaXRmaWVsZHNbMl07Ci0gICAgfSBpbmhlcml0ZWRfZmxhZ3M7CisgICAg
fSBtX2luaGVyaXRlZEZsYWdzOwogCiAgICAgc3RydWN0IE5vbkluaGVyaXRlZEZsYWdzIHsKICAg
ICAgICAgdWludDY0X3QgbV9mbGFnczsKLSAgICB9IG5vbmluaGVyaXRlZF9mbGFnczsKKyAgICB9
IG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIGRlbGV0aW9uQ2hlY2s7CiAjZW5kaWYKQEAgLTg1
LDcgKzg1LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlclN0eWxlKSA9PSBzaXplb2Yo
U2FtZVNpemVBc1JlbmRlclN0eWxlKSwgUmVuZGVyU3R5bGUKIAogUmVuZGVyU3R5bGUmIFJlbmRl
clN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgc3R5bGUg
PSAqbmV3IFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlbmRlclN0eWxlPiBzdHlsZSB7IENyZWF0ZURlZmF1bHRTdHlsZSB9OwogICAg
IHJldHVybiBzdHlsZTsKIH0KIApAQCAtMTI4LDUzICsxMjgsNjggQEAgUmVuZGVyU3R5bGUgUmVu
ZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYKIH0KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHls
ZVRhZykKLSAgICA6IG1fYm94KFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCB2aXN1YWwo
U3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKLSAgICAsIG1fYmFja2dyb3VuZChTdHlsZUJhY2tn
cm91bmREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHN1cnJvdW5kKFN0eWxlU3Vycm91bmREYXRhOjpj
cmVhdGUoKSkKLSAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OmNyZWF0ZSgpKQotICAgICwgcmFyZUluaGVyaXRlZERhdGEoU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhlcml0ZWQoU3R5bGVJbmhlcml0ZWREYXRhOjpj
cmVhdGUoKSkKKyAgICA6IG1fYm94RGF0YShTdHlsZUJveERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV92aXN1YWxEYXRhKFN0eWxlVmlzdWFsRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tncm91
bmREYXRhKFN0eWxlQmFja2dyb3VuZERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdXJyb3VuZERh
dGEoU3R5bGVTdXJyb3VuZERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YShTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fcmFyZUlu
aGVyaXRlZERhdGEoU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX2lu
aGVyaXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKICAgICAsIG1fc3ZnU3R5
bGUoU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQogewotICAgIGluaGVyaXRlZF9mbGFncy5fZW1w
dHlfY2VsbHMgPSBpbml0aWFsRW1wdHlDZWxscygpOwotICAgIGluaGVyaXRlZF9mbGFncy5fY2Fw
dGlvbl9zaWRlID0gaW5pdGlhbENhcHRpb25TaWRlKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9s
aXN0X3N0eWxlX3R5cGUgPSBpbml0aWFsTGlzdFN0eWxlVHlwZSgpOwotICAgIGluaGVyaXRlZF9m
bGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOwot
ICAgIGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7Ci0g
ICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0gaW5pdGlhbFRleHRBbGlnbigpOwotICAg
IGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSBpbml0aWFsVGV4dFRyYW5zZm9ybSgp
OwotICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0RGVj
b3JhdGlvbigpOwotICAgIGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gaW5pdGlhbEN1
cnNvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IGluaXRpYWxFbXB0eUNl
bGxzKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9IGluaXRpYWxDYXB0aW9u
U2lkZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSA9IGluaXRpYWxMaXN0
U3R5bGVUeXBlKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IGlu
aXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0
eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24g
PSBpbml0aWFsVGV4dEFsaWduKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3Jt
ID0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNv
cmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
Y3Vyc29yID0gaW5pdGlhbEN1cnNvcigpOwogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkK
LSAgICBpbmhlcml0ZWRfZmxhZ3MubV9jdXJzb3JWaXNpYmlsaXR5ID0gaW5pdGlhbEN1cnNvclZp
c2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBpbml0
aWFsQ3Vyc29yVmlzaWJpbGl0eSgpOwogI2VuZGlmCi0gICAgaW5oZXJpdGVkX2ZsYWdzLl9kaXJl
Y3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9z
cGFjZSA9IGluaXRpYWxXaGl0ZVNwYWNlKCk7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJf
Y29sbGFwc2UgPSBpbml0aWFsQm9yZGVyQ29sbGFwc2UoKTsKLSAgICBpbmhlcml0ZWRfZmxhZ3Mu
bV9ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOwotICAgIGluaGVyaXRlZF9mbGFn
cy5fYm94X2RpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24oKTsKLSAgICBpbmhlcml0ZWRf
ZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gaW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKTsKLSAg
ICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygp
OwotICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IE5vdEluc2lkZUxpbms7Ci0gICAg
aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uID0gZmFsc2U7Ci0gICAgaW5oZXJp
dGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSBpbml0aWFsV3JpdGluZ01vZGUoKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IGluaXRpYWxEaXJlY3Rpb24oKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLndoaXRlU3BhY2UgPSBpbml0aWFsV2hpdGVTcGFjZSgpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBpbml0aWFsQm9yZGVyQ29sbGFwc2UoKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0gaW5pdGlhbFJUTE9yZGVyaW5nKCk7CisgICAg
bV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPSBpbml0aWFsQm94RGlyZWN0aW9uKCk7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0gaW5pdGlhbFByaW50Q29sb3JB
ZGp1c3QoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMgPSBpbml0aWFsUG9p
bnRlckV2ZW50cygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayA9IE5vdEluc2lk
ZUxpbms7CisgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uID0gZmFsc2U7
CisgICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgp
OwogCiAgICAgc3RhdGljX2Fzc2VydCgoc2l6ZW9mKEluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIklu
aGVyaXRlZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsKICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2Yo
Tm9uSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiTm9uSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3Jv
dyIpOwogfQogCi1SZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90
aGVyLCBDbG9uZVRhZykKLSAgICA6IG1fYm94KG90aGVyLm1fYm94KQotICAgICwgdmlzdWFsKG90
aGVyLnZpc3VhbCkKLSAgICAsIG1fYmFja2dyb3VuZChvdGhlci5tX2JhY2tncm91bmQpCi0gICAg
LCBzdXJyb3VuZChvdGhlci5zdXJyb3VuZCkKLSAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhKQotICAgICwgcmFyZUluaGVyaXRlZERhdGEob3RoZXIu
cmFyZUluaGVyaXRlZERhdGEpCi0gICAgLCBpbmhlcml0ZWQob3RoZXIuaW5oZXJpdGVkKQoraW5s
aW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENs
b25lVGFnKQorICAgIDogbV9ib3hEYXRhKG90aGVyLm1fYm94RGF0YSkKKyAgICAsIG1fdmlzdWFs
RGF0YShvdGhlci5tX3Zpc3VhbERhdGEpCisgICAgLCBtX2JhY2tncm91bmREYXRhKG90aGVyLm1f
YmFja2dyb3VuZERhdGEpCisgICAgLCBtX3N1cnJvdW5kRGF0YShvdGhlci5tX3N1cnJvdW5kRGF0
YSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERhdGEob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFn
cykKKyAgICAsIG1fcmFyZUluaGVyaXRlZERhdGEob3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkK
KyAgICAsIG1faW5oZXJpdGVkRGF0YShvdGhlci5tX2luaGVyaXRlZERhdGEpCisgICAgLCBtX2lu
aGVyaXRlZEZsYWdzKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90
aGVyLm1fc3ZnU3R5bGUpCi0gICAgLCBpbmhlcml0ZWRfZmxhZ3Mob3RoZXIuaW5oZXJpdGVkX2Zs
YWdzKQotICAgICwgbm9uaW5oZXJpdGVkX2ZsYWdzKG90aGVyLm5vbmluaGVyaXRlZF9mbGFncykK
K3sKK30KKworaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwg
UmVuZGVyU3R5bGUmJiBiKQorICAgIDogbV9ib3hEYXRhKGEubV9ib3hEYXRhLnJlcGxhY2UoV1RG
TW92ZShiLm1fYm94RGF0YSkpKQorICAgICwgbV92aXN1YWxEYXRhKGEubV92aXN1YWxEYXRhLnJl
cGxhY2UoV1RGTW92ZShiLm1fdmlzdWFsRGF0YSkpKQorICAgICwgbV9iYWNrZ3JvdW5kRGF0YShh
Lm1fYmFja2dyb3VuZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9iYWNrZ3JvdW5kRGF0YSkpKQor
ICAgICwgbV9zdXJyb3VuZERhdGEoYS5tX3N1cnJvdW5kRGF0YS5yZXBsYWNlKFdURk1vdmUoYi5t
X3N1cnJvdW5kRGF0YSkpKQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShhLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEucmVwbGFjZShXVEZNb3ZlKGIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YSkp
KQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhzdGQ6OmV4Y2hhbmdlKGEubV9ub25Jbmhlcml0
ZWRGbGFncywgYi5tX25vbkluaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fcmFyZUluaGVyaXRlZERh
dGEoYS5tX3JhcmVJbmhlcml0ZWREYXRhLnJlcGxhY2UoV1RGTW92ZShiLm1fcmFyZUluaGVyaXRl
ZERhdGEpKSkKKyAgICAsIG1faW5oZXJpdGVkRGF0YShhLm1faW5oZXJpdGVkRGF0YS5yZXBsYWNl
KFdURk1vdmUoYi5tX2luaGVyaXRlZERhdGEpKSkKKyAgICAsIG1faW5oZXJpdGVkRmxhZ3Moc3Rk
OjpleGNoYW5nZShhLm1faW5oZXJpdGVkRmxhZ3MsIGIubV9pbmhlcml0ZWRGbGFncykpCisgICAg
LCBtX2NhY2hlZFBzZXVkb1N0eWxlcyhzdGQ6OmV4Y2hhbmdlKGEubV9jYWNoZWRQc2V1ZG9TdHls
ZXMsIFdURk1vdmUoYi5tX2NhY2hlZFBzZXVkb1N0eWxlcykpKQorICAgICwgbV9zdmdTdHlsZShh
Lm1fc3ZnU3R5bGUucmVwbGFjZShXVEZNb3ZlKGIubV9zdmdTdHlsZSkpKQogewogfQogCkBAIC0x
ODYsNiArMjAxLDExIEBAIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQogI2VuZGlmCiB9CiAK
K1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpyZXBsYWNlKFJlbmRlclN0eWxlJiYgbmV3U3R5bGUp
Cit7CisgICAgcmV0dXJuIFJlbmRlclN0eWxlIHsgKnRoaXMsIFdURk1vdmUobmV3U3R5bGUpIH07
Cit9CisKIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKQogewogI2lm
IEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCkBAIC0yMTIsNyArMjMyLDcgQEAgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRBbGlnblNlbGYoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFMKIHsKICAgICAvLyBUaGUgYXV0byBrZXl3b3JkIGNvbXB1dGVzIHRvIHRoZSBw
YXJlbnQncyBhbGlnbi1pdGVtcyBjb21wdXRlZCB2YWx1ZS4KICAgICAvLyBXZSB3aWxsIHJldHVy
biB0aGUgYmVoYXZpb3VyIG9mICdub3JtYWwnIHZhbHVlIGlmIG5lZWRlZCwgd2hpY2ggaXMgc3Bl
Y2lmaWMgb2YgZWFjaCBsYXlvdXQgbW9kZWwuCi0gICAgaWYgKGFsaWduU2VsZlBvc2l0aW9uKCkg
PT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoYWxpZ25TZWxmKCkucG9zaXRpb24oKSA9PSBJ
dGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1cm4gcGFyZW50U3R5bGUucmVzb2x2ZWRBbGln
bkl0ZW1zKG5vcm1hbFZhbHVlQmVoYXZpb3VyKTsKICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxp
Z25tZW50KGFsaWduU2VsZigpLCBub3JtYWxWYWx1ZUJlaGF2aW91cik7CiB9CkBAIC0yMjIsOSAr
MjQyLDggQEAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0
aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIG5vcm1hbFZhbHUKICAgICAvLyBGSVhNRToganVzdGlmeS1p
dGVtcyAnYXV0bycgdmFsdWUgaXMgYWxsb3dlZCBvbmx5IHRvIHByb3ZpZGUgdGhlICdsZWdhY3kn
IGtleXdvcmQncyBiZWhhdmlvciwgd2hpY2ggaXQncyBzdGlsbCBub3QgaW1wbGVtZW50ZWQgZm9y
IGxheW91dC4KICAgICAvLyAiSWYgdGhlIGluaGVyaXRlZCB2YWx1ZSBvZiBqdXN0aWZ5LWl0ZW1z
IGluY2x1ZGVzIHRoZSBsZWdhY3kga2V5d29yZCwgYXV0byBjb21wdXRlcyB0byB0aGUgaW5oZXJp
dGVkIHZhbHVlLiIKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFsaWduLyNq
dXN0aWZ5LWl0ZW1zLXByb3BlcnR5Ci0gICAgaWYgKGp1c3RpZnlJdGVtc1Bvc2l0aW9uKCkgPT0g
SXRlbVBvc2l0aW9uQXV0bykKKyAgICBpZiAoanVzdGlmeUl0ZW1zKCkucG9zaXRpb24oKSA9PSBJ
dGVtUG9zaXRpb25BdXRvKQogICAgICAgICByZXR1cm4geyBub3JtYWxWYWx1ZUJlaGF2aW91ciwg
T3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0IH07Ci0KICAgICByZXR1cm4gcmVzb2x2ZWRTZWxmQWxp
Z25tZW50KGp1c3RpZnlJdGVtcygpLCBub3JtYWxWYWx1ZUJlaGF2aW91cik7CiB9CiAKQEAgLTIz
Miw3ICsyNTEsNyBAQCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFJlbmRlclN0eWxlOjpyZXNvbHZl
ZEp1c3RpZnlTZWxmKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbgogewogICAgIC8vIFRoZSBhdXRv
IGtleXdvcmQgY29tcHV0ZXMgdG8gdGhlIHBhcmVudCdzIGp1c3RpZnktaXRlbXMgY29tcHV0ZWQg
dmFsdWUuCiAgICAgLy8gV2Ugd2lsbCByZXR1cm4gdGhlIGJlaGF2aW91ciBvZiAnbm9ybWFsJyB2
YWx1ZSBpZiBuZWVkZWQsIHdoaWNoIGlzIHNwZWNpZmljIG9mIGVhY2ggbGF5b3V0IG1vZGVsLgot
ICAgIGlmIChqdXN0aWZ5U2VsZlBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKKyAgICBp
ZiAoanVzdGlmeVNlbGYoKS5wb3NpdGlvbigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCiAgICAgICAg
IHJldHVybiBwYXJlbnRTdHlsZS5yZXNvbHZlZEp1c3RpZnlJdGVtcyhub3JtYWxWYWx1ZUJlaGF2
aW91cik7CiAgICAgcmV0dXJuIHJlc29sdmVkU2VsZkFsaWdubWVudChqdXN0aWZ5U2VsZigpLCBu
b3JtYWxWYWx1ZUJlaGF2aW91cik7CiB9CkBAIC0yNjksNDMgKzI4OCw0MiBAQCBDb250ZW50RGlz
dHJpYnV0aW9uVHlwZSBSZW5kZXJTdHlsZTo6cmVzb2x2ZWRBbGlnbkNvbnRlbnREaXN0cmlidXRp
b24oY29uc3QgU3R5bAogCiB2b2lkIFJlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBSZW5k
ZXJTdHlsZSYgaW5oZXJpdFBhcmVudCkKIHsKLSAgICByYXJlSW5oZXJpdGVkRGF0YSA9IGluaGVy
aXRQYXJlbnQucmFyZUluaGVyaXRlZERhdGE7Ci0gICAgaW5oZXJpdGVkID0gaW5oZXJpdFBhcmVu
dC5pbmhlcml0ZWQ7Ci0gICAgaW5oZXJpdGVkX2ZsYWdzID0gaW5oZXJpdFBhcmVudC5pbmhlcml0
ZWRfZmxhZ3M7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YSA9IGluaGVyaXRQYXJlbnQubV9yYXJl
SW5oZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRlZERhdGEgPSBpbmhlcml0UGFyZW50Lm1faW5o
ZXJpdGVkRGF0YTsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gaW5oZXJpdFBhcmVudC5tX2luaGVy
aXRlZEZsYWdzOwogCiAgICAgaWYgKG1fc3ZnU3R5bGUgIT0gaW5oZXJpdFBhcmVudC5tX3N2Z1N0
eWxlKQotICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLT5pbmhlcml0RnJvbShpbmhlcml0UGFy
ZW50Lm1fc3ZnU3R5bGUuZ2V0KCkpOworICAgICAgICBtX3N2Z1N0eWxlLmFjY2VzcygpLmluaGVy
aXRGcm9tKGluaGVyaXRQYXJlbnQubV9zdmdTdHlsZS5nZXQoKSk7CiB9CiAKLXZvaWQgUmVuZGVy
U3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikKK3Zv
aWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlcikKIHsKLSAgICBtX2JveCA9IG90aGVyLT5tX2JveDsKLSAgICB2aXN1YWwgPSBvdGhlci0+
dmlzdWFsOwotICAgIG1fYmFja2dyb3VuZCA9IG90aGVyLT5tX2JhY2tncm91bmQ7Ci0gICAgc3Vy
cm91bmQgPSBvdGhlci0+c3Vycm91bmQ7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEgPSBvdGhl
ci0+cmFyZU5vbkluaGVyaXRlZERhdGE7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLmNvcHlOb25J
bmhlcml0ZWRGcm9tKG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MpOworICAgIG1fYm94RGF0YSA9
IG90aGVyLm1fYm94RGF0YTsKKyAgICBtX3Zpc3VhbERhdGEgPSBvdGhlci5tX3Zpc3VhbERhdGE7
CisgICAgbV9iYWNrZ3JvdW5kRGF0YSA9IG90aGVyLm1fYmFja2dyb3VuZERhdGE7CisgICAgbV9z
dXJyb3VuZERhdGEgPSBvdGhlci5tX3N1cnJvdW5kRGF0YTsKKyAgICBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhID0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YTsKKyAgICBtX25vbkluaGVyaXRl
ZEZsYWdzLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MpOwog
Ci0gICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXItPm1fc3ZnU3R5bGUpCi0gICAgICAgIG1fc3Zn
U3R5bGUuYWNjZXNzKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLT5tX3N2Z1N0eWxlLmdl
dCgpKTsKKyAgICBpZiAobV9zdmdTdHlsZSAhPSBvdGhlci5tX3N2Z1N0eWxlKQorICAgICAgICBt
X3N2Z1N0eWxlLmFjY2VzcygpLmNvcHlOb25Jbmhlcml0ZWRGcm9tKG90aGVyLm1fc3ZnU3R5bGUu
Z2V0KCkpOwogCiAgICAgQVNTRVJUKHpvb20oKSA9PSBpbml0aWFsWm9vbSgpKTsKIH0KIAotYm9v
bCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHlsZSYgbykgY29uc3QKK2Jv
b2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25z
dAogewogICAgIC8vIGNvbXBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHBzZXVkb1N0eWxlIHBv
aW50ZXIKLSAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzID09IG8uaW5oZXJpdGVkX2ZsYWdzCi0g
ICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncyA9PSBvLm5vbmluaGVyaXRlZF9mbGFncwotICAg
ICAgICAmJiBtX2JveCA9PSBvLm1fYm94Ci0gICAgICAgICYmIHZpc3VhbCA9PSBvLnZpc3VhbAot
ICAgICAgICAmJiBtX2JhY2tncm91bmQgPT0gby5tX2JhY2tncm91bmQKLSAgICAgICAgJiYgc3Vy
cm91bmQgPT0gby5zdXJyb3VuZAotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBv
LnJhcmVOb25Jbmhlcml0ZWREYXRhCi0gICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhID09IG8u
cmFyZUluaGVyaXRlZERhdGEKLSAgICAgICAgJiYgaW5oZXJpdGVkID09IG8uaW5oZXJpdGVkCi0g
ICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gby5tX3N2Z1N0eWxlCi0gICAgICAgICAgICA7CisgICAg
cmV0dXJuIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncworICAgICAg
ICAmJiBtX25vbkluaGVyaXRlZEZsYWdzID09IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MKKyAg
ICAgICAgJiYgbV9ib3hEYXRhID09IG90aGVyLm1fYm94RGF0YQorICAgICAgICAmJiBtX3Zpc3Vh
bERhdGEgPT0gb3RoZXIubV92aXN1YWxEYXRhCisgICAgICAgICYmIG1fYmFja2dyb3VuZERhdGEg
PT0gb3RoZXIubV9iYWNrZ3JvdW5kRGF0YQorICAgICAgICAmJiBtX3N1cnJvdW5kRGF0YSA9PSBv
dGhlci5tX3N1cnJvdW5kRGF0YQorICAgICAgICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID09
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVk
RGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhCisgICAgICAgICYmIG1faW5oZXJpdGVk
RGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEKKyAgICAgICAgJiYgbV9zdmdTdHlsZSA9PSBv
dGhlci5tX3N2Z1N0eWxlOwogfQogCiBib29sIFJlbmRlclN0eWxlOjpoYXNVbmlxdWVQc2V1ZG9T
dHlsZSgpIGNvbnN0CkBAIC0zMTMsOCArMzMxLDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6aGFzVW5p
cXVlUHNldWRvU3R5bGUoKSBjb25zdAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwg
c3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IG1fY2FjaGVkUHNldWRvU3R5bGVz
LT5hdChpKS5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNl
dWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+dW5pcXVlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMzAsMTAgKzM0Nyw5IEBAIFJlbmRlclN0eWxl
KiBSZW5kZXJTdHlsZTo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKSBjb25zdAog
ICAgIGlmIChzdHlsZVR5cGUoKSAhPSBOT1BTRVVETykgCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gbV9jYWNoZWRQ
c2V1ZG9TdHlsZXMtPmF0KGkpLmdldCgpOworICAgIGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAq
bV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5zdHlsZVR5
cGUoKSA9PSBwaWQpCi0gICAgICAgICAgICByZXR1cm4gcHNldWRvU3R5bGU7CisgICAgICAgICAg
ICByZXR1cm4gcHNldWRvU3R5bGUuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zNzEsMTAgKzM4NywxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpyZW1vdmVDYWNoZWRQc2V1
ZG9TdHlsZShQc2V1ZG9JZCBwaWQpCiAKIGJvb2wgUmVuZGVyU3R5bGU6OmluaGVyaXRlZE5vdEVx
dWFsKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJp
dGVkX2ZsYWdzICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MKLSAgICAgICAgICAgfHwgaW5oZXJp
dGVkICE9IG90aGVyLT5pbmhlcml0ZWQKLSAgICAgICAgICAgfHwgbV9zdmdTdHlsZS0+aW5oZXJp
dGVkTm90RXF1YWwob3RoZXItPm1fc3ZnU3R5bGUuZ2V0KCkpCi0gICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YTsKKyAgICByZXR1cm4gbV9p
bmhlcml0ZWRGbGFncyAhPSBvdGhlci0+bV9pbmhlcml0ZWRGbGFncworICAgICAgICB8fCBtX2lu
aGVyaXRlZERhdGEgIT0gb3RoZXItPm1faW5oZXJpdGVkRGF0YQorICAgICAgICB8fCBtX3N2Z1N0
eWxlLT5pbmhlcml0ZWROb3RFcXVhbChvdGhlci0+bV9zdmdTdHlsZSkKKyAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YSAhPSBvdGhlci0+bV9yYXJlSW5oZXJpdGVkRGF0YTsKIH0KIAogI2lm
IEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0zOTAsNDYgKzQwNiw0NiBAQCBzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGNvbXB1dGVGb250SGFzaChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKIHVu
c2lnbmVkIFJlbmRlclN0eWxlOjpoYXNoRm9yVGV4dEF1dG9zaXppbmcoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBOb3QgYSB2ZXJ5IHNtYXJ0IGhhc2guIENvdWxkIGJlIGltcHJvdmVkIHVwb24u
IFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTEzMT4uCi0g
ICAgdW5zaWduZWQgaGFzaCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2U7Ci0g
ICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2U7Ci0g
ICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZTsKLSAg
ICBoYXNoIF49IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAudmFsdWUoKTsKLSAgICBo
YXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXA7Ci0gICAgaGFzaCBePSByYXJl
SW5oZXJpdGVkRGF0YS0+bmJzcE1vZGU7Ci0gICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+
bGluZUJyZWFrOwotICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKGluaGVy
aXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodC52YWx1ZSgpKTsKLSAgICBoYXNoIF49IGNvbXB1dGVG
b250SGFzaChpbmhlcml0ZWQtPmZvbnRDYXNjYWRlKTsKLSAgICBoYXNoIF49IFdURjo6RmxvYXRI
YXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcpOwot
ICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhhc2g8ZmxvYXQ+OjpoYXNoKGluaGVyaXRlZC0+dmVydGlj
YWxfYm9yZGVyX3NwYWNpbmcpOwotICAgIGhhc2ggXj0gaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGly
ZWN0aW9uOwotICAgIGhhc2ggXj0gaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmc7Ci0gICAg
aGFzaCBePSBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKTsKLSAgICBoYXNoIF49IG5vbmlu
aGVyaXRlZF9mbGFncy5mbG9hdGluZygpOwotICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRleHRPdmVyZmxvdzsKLSAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2Vj
dXJpdHk7CisgICAgdW5zaWduZWQgaGFzaCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGVh
cmFuY2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVD
b2xsYXBzZTsKKyAgICBoYXNoIF49IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVy
Q29sbGFwc2U7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAu
dmFsdWUoKTsKKyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcDsK
KyAgICBoYXNoIF49IG1fcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlOworICAgIGhhc2ggXj0g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrOworICAgIGhhc2ggXj0gV1RGOjpGbG9hdEhh
c2g8ZmxvYXQ+OjpoYXNoKG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodC52YWx1
ZSgpKTsKKyAgICBoYXNoIF49IGNvbXB1dGVGb250SGFzaChtX2luaGVyaXRlZERhdGEtPmZvbnRD
YXNjYWRlKTsKKyAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVy
aXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKTsKKyAgICBoYXNoIF49IFdURjo6Rmxv
YXRIYXNoPGZsb2F0Pjo6aGFzaChtX2luaGVyaXRlZERhdGEtPnZlcnRpY2FsQm9yZGVyU3BhY2lu
Zyk7CisgICAgaGFzaCBePSBtX2luaGVyaXRlZEZsYWdzLmJveERpcmVjdGlvbjsKKyAgICBoYXNo
IF49IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmc7CisgICAgaGFzaCBePSBtX25vbkluaGVy
aXRlZEZsYWdzLnBvc2l0aW9uKCk7CisgICAgaGFzaCBePSBtX25vbkluaGVyaXRlZEZsYWdzLmZs
b2F0aW5nKCk7CisgICAgaGFzaCBePSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZs
b3c7CisgICAgaGFzaCBePSBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHk7CiAgICAg
cmV0dXJuIGhhc2g7CiB9CiAKIGJvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9zaXpp
bmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FwcGVhcmFuY2UKLSAgICAgICAgJiYgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJl
Zm9yZUNvbGxhcHNlID09IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVD
b2xsYXBzZQotICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xs
YXBzZSA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQot
ICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wID09IG90aGVyLnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaXplQWRqdXN0ID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVz
dAotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwID09IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERh
dGEtPm5ic3BNb2RlID09IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQotICAgICAg
ICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrID09IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT5saW5lQnJlYWsKLSAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0
eSA9PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5Ci0gICAgICAgICYmIGlu
aGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCA9PSBvdGhlci5pbmhlcml0ZWQtPnNwZWNpZmll
ZExpbmVIZWlnaHQKLSAgICAgICAgJiYgaW5oZXJpdGVkLT5mb250Q2FzY2FkZS5lcXVhbEZvclRl
eHRBdXRvU2l6aW5nKG90aGVyLmluaGVyaXRlZC0+Zm9udENhc2NhZGUpCi0gICAgICAgICYmIGlu
aGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci5pbmhlcml0ZWQtPmhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcKLSAgICAgICAgJiYgaW5oZXJpdGVkLT52ZXJ0aWNhbF9i
b3JkZXJfc3BhY2luZyA9PSBvdGhlci5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5n
Ci0gICAgICAgICYmIGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9PSBvdGhlci5pbmhl
cml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KLSAgICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLm1f
cnRsT3JkZXJpbmcgPT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcKLSAgICAg
ICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkgPT0gb3RoZXIubm9uaW5oZXJpdGVk
X2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5n
KCkgPT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkKLSAgICAgICAgJiYgcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyA9PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dE92ZXJmbG93OworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
cHBlYXJhbmNlID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGVhcmFuY2UKKyAg
ICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UgPT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UKKyAgICAg
ICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSA9PSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCisgICAgICAgICYm
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcCA9PSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5saW5lQ2xhbXAKKyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFNpemVBZGp1c3QgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QK
KyAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwID09IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAgICAmJiBtX3JhcmVJbmhlcml0
ZWREYXRhLT5uYnNwTW9kZSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQor
ICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsgPT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTZWN1cml0eSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkK
KyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT5zcGVjaWZpZWRMaW5lSGVpZ2h0ID09IG90aGVy
Lm1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodAorICAgICAgICAmJiBtX2luaGVy
aXRlZERhdGEtPmZvbnRDYXNjYWRlLmVxdWFsRm9yVGV4dEF1dG9TaXppbmcob3RoZXIubV9pbmhl
cml0ZWREYXRhLT5mb250Q2FzY2FkZSkKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLT5ob3Jp
em9udGFsQm9yZGVyU3BhY2luZyA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmhvcml6b250YWxC
b3JkZXJTcGFjaW5nCisgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJT
cGFjaW5nID09IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5nCisg
ICAgICAgICYmIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID09IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAgICAgICYmIG1faW5oZXJpdGVkRmxhZ3MucnRsT3Jk
ZXJpbmcgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZworICAgICAgICAmJiBt
X25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCkgPT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFn
cy5wb3NpdGlvbigpCisgICAgICAgICYmIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcoKSA9
PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCkKKyAgICAgICAgJiYgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRleHRPdmVyZmxvdzsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCkBAIC00MzcsMTAgKzQ1MywxMCBAQCBib29sIFJlbmRlclN0eWxlOjplcXVhbEZvclRleHRB
dXRvc2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIGJvb2wgUmVuZGVyU3R5
bGU6OmluaGVyaXRlZERhdGFTaGFyZWQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAog
ewogICAgIC8vIFRoaXMgaXMgYSBmYXN0IGNoZWNrIHRoYXQgb25seSBsb29rcyBpZiB0aGUgZGF0
YSBzdHJ1Y3R1cmVzIGFyZSBzaGFyZWQuCi0gICAgcmV0dXJuIGluaGVyaXRlZF9mbGFncyA9PSBv
dGhlci0+aW5oZXJpdGVkX2ZsYWdzCi0gICAgICAgICYmIGluaGVyaXRlZC5nZXQoKSA9PSBvdGhl
ci0+aW5oZXJpdGVkLmdldCgpCisgICAgcmV0dXJuIG1faW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIt
Pm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhLmdldCgpID09IG90
aGVyLT5tX2luaGVyaXRlZERhdGEuZ2V0KCkKICAgICAgICAgJiYgbV9zdmdTdHlsZS5nZXQoKSA9
PSBvdGhlci0+bV9zdmdTdHlsZS5nZXQoKQotICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS5n
ZXQoKSA9PSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEuZ2V0KCk7CisgICAgICAgICYmIG1fcmFy
ZUluaGVyaXRlZERhdGEuZ2V0KCkgPT0gb3RoZXItPm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCk7
CiB9CiAKIHN0YXRpYyBib29sIHBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkoY29uc3QgTGVu
Z3RoQm94JiBhLCBjb25zdCBMZW5ndGhCb3gmIGIsIGNvbnN0IExlbmd0aCYgd2lkdGgpCkBAIC00
NzIsMTcgKzQ4OCwxNyBAQCBzdGF0aWMgYm9vbCBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5
KGNvbnN0IExlbmd0aEJveCYgYSwgY29uc3QgTGVuZ3RoQm94JiBiLAogCiBpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkKLSAgICAgICAgJiYgIWFyZVBvaW50aW5n
VG9FcXVhbERhdGEocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93LCBvdGhlci5yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hTaGFkb3cpKQorICAgIGlmIChtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkKKyAgICAg
ICAgJiYgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94
U2hhZG93LCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3hTaGFkb3cpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKQotICAgICAgICAmJiAhYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdywgb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPnRleHRTaGFkb3cpKQorICAgIGlmIChtX3JhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLm1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkKKyAgICAgICAgJiYgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEobV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdywgb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFNoYWRvdykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBvdGhlci5pbmhlcml0ZWRfZmxh
Z3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAh
PSBvdGhlci52aXN1YWwtPnRleHREZWNvcmF0aW9uCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSkgeworICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLnRl
eHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucwor
ICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLm1fdmlzdWFs
RGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0
RGVjb3JhdGlvblN0eWxlKSB7CiAgICAgICAgIC8vIFVuZGVybGluZXMgYXJlIGFsd2F5cyBkcmF3
biBvdXRzaWRlIG9mIHRoZWlyIHRleHRib3ggYm91bmRzIHdoZW4gdGV4dC11bmRlcmxpbmUtcG9z
aXRpb246IHVuZGVyOwogICAgICAgICAvLyBpcyBzcGVjaWZpZWQuIFdlIGNhbiB0YWtlIGFuIGVh
cmx5IG91dCBoZXJlLgogICAgICAgICBpZiAodGV4dFVuZGVybGluZVBvc2l0aW9uKCkgPT0gVGV4
dFVuZGVybGluZVBvc2l0aW9uVW5kZXIKQEAgLTQ5OCwxNjggKzUxNCwxNjggQEAgaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJT
dHlsZSYgb3RoZXIpIGMKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQo
Y29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGlmIChtX2JveC0+d2lkdGgoKSAhPSBvdGhlci5t
X2JveC0+d2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWluV2lkdGgoKSAhPSBvdGhlci5tX2Jv
eC0+bWluV2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWF4V2lkdGgoKSAhPSBvdGhlci5tX2Jv
eC0+bWF4V2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+aGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gt
PmhlaWdodCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5IZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+
bWluSGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1heEhlaWdodCgpICE9IG90aGVyLm1fYm94
LT5tYXhIZWlnaHQoKSkKKyAgICBpZiAobV9ib3hEYXRhLT53aWR0aCgpICE9IG90aGVyLm1fYm94
RGF0YS0+d2lkdGgoKQorICAgICAgICB8fCBtX2JveERhdGEtPm1pbldpZHRoKCkgIT0gb3RoZXIu
bV9ib3hEYXRhLT5taW5XaWR0aCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+bWF4V2lkdGgoKSAh
PSBvdGhlci5tX2JveERhdGEtPm1heFdpZHRoKCkKKyAgICAgICAgfHwgbV9ib3hEYXRhLT5oZWln
aHQoKSAhPSBvdGhlci5tX2JveERhdGEtPmhlaWdodCgpCisgICAgICAgIHx8IG1fYm94RGF0YS0+
bWluSGVpZ2h0KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5taW5IZWlnaHQoKQorICAgICAgICB8fCBt
X2JveERhdGEtPm1heEhlaWdodCgpICE9IG90aGVyLm1fYm94RGF0YS0+bWF4SGVpZ2h0KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fYm94LT52ZXJ0aWNhbEFsaWduKCkgIT0g
b3RoZXIubV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8fCBub25pbmhlcml0ZWRfZmxhZ3MudmVydGlj
YWxBbGlnbigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkpCisg
ICAgaWYgKG1fYm94RGF0YS0+dmVydGljYWxBbGlnbigpICE9IG90aGVyLm1fYm94RGF0YS0+dmVy
dGljYWxBbGlnbigpIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbigpICE9IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbigpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChtX2JveC0+Ym94U2l6aW5nKCkgIT0gb3RoZXIubV9ib3gtPmJveFNp
emluZygpKQorICAgIGlmIChtX2JveERhdGEtPmJveFNpemluZygpICE9IG90aGVyLm1fYm94RGF0
YS0+Ym94U2l6aW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHN1cnJvdW5k
LT5tYXJnaW4gIT0gb3RoZXIuc3Vycm91bmQtPm1hcmdpbikKKyAgICBpZiAobV9zdXJyb3VuZERh
dGEtPm1hcmdpbiAhPSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+bWFyZ2luKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJyb3VuZC0+cGFkZGluZyAhPSBvdGhlci5zdXJyb3VuZC0+
cGFkZGluZykKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPnBhZGRpbmcgIT0gb3RoZXIubV9zdXJy
b3VuZERhdGEtPnBhZGRpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhZGQgYW4gb3B0aW1pemVkIGZvcm0gb2YgbGF5b3V0IHRoYXQganVzdCByZWNv
bXB1dGVzIHZpc3VhbCBvdmVyZmxvdy4KICAgICBpZiAoY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJm
bG93KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UgIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZQotICAgICAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPmxpbmVDbGFtcAot
ICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faW5pdGlhbExldHRlciAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pbml0aWFsTGV0dGVyCi0gICAgICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
Z2V0KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkgeworICAgICAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5hcHBlYXJhbmNlCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNs
YW1wCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pbml0aWFsTGV0dGVy
ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmluaXRpYWxMZXR0ZXIKKyAgICAgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uRnJhZ21lbnQg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uRnJhZ21lbnQpCisgICAgICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbiAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbikKKyAgICAgICAgaWYg
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnNoYXBlTWFyZ2luKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gpCisg
ICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5kZXByZWNhdGVkRmxleGlibGVCb3gg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94KQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2ZsZXhpYmxlQm94ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhp
YmxlQm94KQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3Jk
ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIKLSAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudCAhPSBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRlbnQKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FsaWduSXRlbXMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxp
Z25JdGVtcwotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxm
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZgotICAgICAgICAgICAg
fHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQgIT0gb3RoZXIucmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQKLSAgICAgICAgICAgIHx8IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtcyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9qdXN0aWZ5SXRlbXMKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2p1c3RpZnlTZWxmICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxm
KQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXIgIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+b3JkZXIKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmFsaWduQ29udGVudCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5h
bGlnbkNvbnRlbnQKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWdu
SXRlbXMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25JdGVtcworICAgICAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmFsaWduU2VsZgorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+anVzdGlmeUNvbnRlbnQgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+anVzdGlmeUNvbnRlbnQKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pmp1c3RpZnlJdGVtcyAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5SXRl
bXMKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlTZWxmICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlTZWxmKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QsIG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2JveFJlZmxlY3QpKQorICAgICAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym94UmVmbGVjdCwgb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Ym94UmVmbGVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wgIT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbXVsdGlDb2wpCisgICAgICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5tdWx0aUNvbCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV90cmFuc2Zvcm0gIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3Jt
KSB7Ci0gICAgICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5o
YXNUcmFuc2Zvcm0oKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0t
Pmhhc1RyYW5zZm9ybSgpKQorICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJh
bnNmb3JtICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybSkgeworICAg
ICAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNm
b3JtKCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFu
c2Zvcm0oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmICgq
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtICE9ICpvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90cmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGlmICgqbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dHJhbnNmb3JtICE9ICpvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2Zvcm0pIHsKICAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRp
ZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5VHJhbnNmb3JtOwogICAgICAgICAgICAgICAg
IC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZCAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkSXRlbSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbSkKKyAgICAg
ICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Z3JpZAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Z3JpZEl0ZW0gIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZEl0ZW0pCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQogICAgICAgICAvLyBJZiByZWdpb25zIGNoYW5nZSwgdHJpZ2dlciBhIHJlbGF5b3V0IHRv
IHJlLWNhbGMgcmVnaW9ucy4KLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rh
c2hib2FyZFJlZ2lvbnMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJk
UmVnaW9ucykKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRhc2hib2FyZFJl
Z2lvbnMgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJvYXJkUmVnaW9ucykK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgaWYgKCFhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2UsIG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2UpKSB7CisgICAgICAgIGlmICghYXJl
UG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLCBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlKSkgewogICAgICAgICAgICAg
Y2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eVdpbGxDaGFuZ2U7CiAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2lu
ZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChyYXJlSW5o
ZXJpdGVkRGF0YS5nZXQoKSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAg
ICAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmluZGVudCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+aW5kZW50CisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSkgeworICAgICAgICBpZiAobV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW5kZW50ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVudAogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0
QWxpZ25MYXN0ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRBbGlnbkxhc3QKLSAg
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5ICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90
ZXh0SW5kZW50TGluZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEFs
aWduTGFzdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0QWxpZ25MYXN0CisgICAg
ICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeSAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT50ZXh0SnVzdGlmeQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dEluZGVudExpbmUgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEluZGVudExpbmUKICNlbmRpZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
ZWZmZWN0aXZlWm9vbSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVab29t
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbSAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0Wm9vbQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJp
dGVkRGF0YS0+ZWZmZWN0aXZlWm9vbSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZl
Y3RpdmVab29tCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9vbSAh
PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0Wm9vbQogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1
c3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0CisgICAgICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdCAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdAogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+d29yZEJyZWFrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT53b3Jk
QnJlYWsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAotICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5uYnNw
TW9kZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2Vj
dXJpdHkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zICE9IG90aGVy
LnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
aHlwaGVuYXRpb25MaW1pdEJlZm9yZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uTGltaXRBZnRlciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVu
YXRpb25MaW1pdEFmdGVyCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVu
YXRpb25TdHJpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5n
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24gIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzTWFyawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc1Bvc2l0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNQb3NpdGlvbgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c0N1c3RvbU1hcmsgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3Rv
bU1hcmsKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlv
biAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RhYlNpemUgIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPm1fdGFiU2l6ZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGlu
ZUJveENvbnRhaW4gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW4K
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+d29yZEJyZWFr
CisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwCisgICAgICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZSAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5u
YnNwTW9kZQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhaworICAgICAgICAgICAgfHwgbV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTZWN1cml0eQorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlw
aGVucyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zCisgICAgICAgICAgICB8
fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlICE9IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUKKyAgICAgICAgICAgIHx8
IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlciAhPSBvdGhlci5tX3Jh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIKKyAgICAgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nICE9IG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0
ZWREYXRhLT5ydWJ5UG9zaXRpb24gIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBv
c2l0aW9uCisgICAgICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNN
YXJrICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01hcmsKKyAgICAg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uICE9IG90
aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uCisgICAgICAgICAg
ICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrICE9IG90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsKKyAgICAgICAgICAg
IHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbiAhPSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVy
aXRlZERhdGEtPnRhYlNpemUgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGFiU2l6ZQor
ICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJveENvbnRhaW4gIT0gb3Ro
ZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUJveENvbnRhaW4KKyAgICAgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVHcmlkICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PmxpbmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRpb24gIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25T
b3VyY2UgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU291cmNl
Ci0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25TbmFw
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNuYXAKLSAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbiAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb24KKyAgICAgICAgICAgIHx8IG1fcmFy
ZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNvdXJjZSAhPSBvdGhlci5tX3JhcmVJbmhl
cml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICAgICAgICAgIHx8IG1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlvblNuYXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdl
UmVzb2x1dGlvbgogI2VuZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lU25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcAotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFsaWduICE9IG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT5tX2xpbmVBbGlnbgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
aGFuZ2luZ1B1bmN0dWF0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQ
dW5jdHVhdGlvbgorICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZVNuYXAg
IT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZVNuYXAKKyAgICAgICAgICAgIHx8IG1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVBbGlnbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRh
LT5saW5lQWxpZ24KKyAgICAgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmhhbmdpbmdQ
dW5jdHVhdGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRp
b24KICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKKyAgICAgICAg
ICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcgIT0g
b3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZwogI2Vu
ZGlmCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2UgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlKSAvLyBGSVhNRTogbmVlZHMg
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YSgpPworICAgICAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0
eWxlSW1hZ2UpIC8vIEZJWE1FOiBuZWVkcyBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKCk/CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodGV4dFN0cm9rZVdpZHRoKCkgIT0g
b3RoZXIudGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdodCAhPSBvdGhlci5pbmhlcml0ZWQtPmxp
bmVfaGVpZ2h0CisgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+bGluZUhlaWdodCAhPSBvdGhlci5t
X2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQot
ICAgICAgICB8fCBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQgIT0gb3RoZXIuaW5oZXJp
dGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+c3Bl
Y2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPnNwZWNpZmllZExpbmVI
ZWlnaHQKICNlbmRpZgotICAgICAgICB8fCBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlICE9IG90aGVy
LmluaGVyaXRlZC0+Zm9udENhc2NhZGUKLSAgICAgICAgfHwgaW5oZXJpdGVkLT5ob3Jpem9udGFs
X2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZwotICAgICAgICB8fCBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nICE9IG90
aGVyLmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcKLSAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fYm94X2Rp
cmVjdGlvbgotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyAhPSBvdGhl
ci5pbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZwotICAgICAgICB8fCBub25pbmhlcml0ZWRf
ZmxhZ3MucG9zaXRpb24oKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKQot
ICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKSAhPSBvdGhlci5ub25pbmhl
cml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mub3Jp
Z2luYWxEaXNwbGF5KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxh
eSgpKQorICAgICAgICB8fCBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlICE9IG90aGVyLm1f
aW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWREYXRhLT5o
b3Jpem9udGFsQm9yZGVyU3BhY2luZyAhPSBvdGhlci5tX2luaGVyaXRlZERhdGEtPmhvcml6b250
YWxCb3JkZXJTcGFjaW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3Jk
ZXJTcGFjaW5nICE9IG90aGVyLm1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxCb3JkZXJTcGFjaW5n
CisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uICE9IG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MucnRs
T3JkZXJpbmcgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZworICAgICAgICB8
fCBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRG
bGFncy5wb3NpdGlvbigpCisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmco
KSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nKCkKKyAgICAgICAgfHwgbV9u
b25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkoKSAhPSBvdGhlci5tX25vbkluaGVyaXRl
ZEZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogCi0gICAg
aWYgKChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpKSA+PSBUQUJMRSkgewot
ICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgIT0gb3RoZXIuaW5o
ZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UKLSAgICAgICAgICAgIHx8IGluaGVyaXRlZF9m
bGFncy5fZW1wdHlfY2VsbHMgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscwot
ICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgIT0gb3RoZXIuaW5o
ZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUKLSAgICAgICAgICAgIHx8IG5vbmluaGVyaXRlZF9m
bGFncy50YWJsZUxheW91dCgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91
dCgpKQorICAgIGlmICgobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkpID49
IFRBQkxFKSB7CisgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlICE9
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UKKyAgICAgICAgICAgIHx8IG1f
aW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmVtcHR5
Q2VsbHMKKyAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgIT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZQorICAgICAgICAgICAgfHwgbV9ub25Jbmhl
cml0ZWRGbGFncy50YWJsZUxheW91dCgpICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MudGFi
bGVMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEluIHRo
ZSBjb2xsYXBzaW5nIGJvcmRlciBtb2RlbCwgJ2hpZGRlbicgc3VwcHJlc3NlcyBvdGhlciBib3Jk
ZXJzLCB3aGlsZSAnbm9uZScKICAgICAgICAgLy8gZG9lcyBub3QsIHNvIHRoZXNlIHN0eWxlIGRp
ZmZlcmVuY2VzIGNhbiBiZSB3aWR0aCBkaWZmZXJlbmNlcy4KLSAgICAgICAgaWYgKGluaGVyaXRl
ZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlCisgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmJv
cmRlckNvbGxhcHNlCiAgICAgICAgICAgICAmJiAoKGJvcmRlclRvcFN0eWxlKCkgPT0gQkhJRERF
TiAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09IEJOT05FKQogICAgICAgICAgICAgICAgIHx8
IChib3JkZXJUb3BTdHlsZSgpID09IEJOT05FICYmIG90aGVyLmJvcmRlclRvcFN0eWxlKCkgPT0g
QkhJRERFTikKICAgICAgICAgICAgICAgICB8fCAoYm9yZGVyQm90dG9tU3R5bGUoKSA9PSBCSElE
REVOICYmIG90aGVyLmJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQk5PTkUpCkBAIC02NzEsMzcgKzY4
NywzNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCkg
PT0gTElTVF9JVEVNKSB7Ci0gICAgICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVf
dHlwZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZQotICAgICAgICAg
ICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbikKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRG
bGFncy5lZmZlY3RpdmVEaXNwbGF5KCkgPT0gTElTVF9JVEVNKSB7CisgICAgICAgIGlmIChtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0
U3R5bGVUeXBlCisgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0
aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl90ZXh0
X2FsaWduICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbgotICAgICAgICB8fCBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5f
dGV4dF90cmFuc2Zvcm0KLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gIT0g
b3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24KLSAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl93aGl0ZV9zcGFjZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlCi0g
ICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpICE9IG90aGVyLm5vbmluaGVyaXRl
ZF9mbGFncy5jbGVhcigpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlk
aSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpKQorICAgIGlmICht
X2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHRB
bGlnbgorICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0gIT0gb3RoZXIu
bV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxh
Z3MuZGlyZWN0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uCisgICAgICAg
IHx8IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdz
LndoaXRlU3BhY2UKKyAgICAgICAgfHwgbV9ub25Jbmhlcml0ZWRGbGFncy5jbGVhcigpICE9IG90
aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuY2xlYXIoKQorICAgICAgICB8fCBtX25vbkluaGVyaXRl
ZEZsYWdzLnVuaWNvZGVCaWRpKCkgIT0gb3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncy51bmljb2Rl
QmlkaSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGJsb2NrIGZsb3cg
ZGlyZWN0aW9uLgotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSAhPSBvdGhl
ci5pbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSkKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFn
cy53cml0aW5nTW9kZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIHRleHQgY29tYmluZSBtb2RlLgotICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dENvbWJpbmUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dENv
bWJpbmUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgYnJlYWtzLgotICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9icmVha0JlZm9yZSAhPSBvdGhlci5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9icmVha0JlZm9yZQotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9icmVha0FmdGVyICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JyZWFr
QWZ0ZXIKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtJbnNpZGUgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYnJlYWtJbnNpZGUpCisgICAgaWYgKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmJyZWFrQmVmb3JlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmJyZWFrQmVmb3JlCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJy
ZWFrQWZ0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YnJlYWtBZnRlcgorICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0luc2lkZSAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5icmVha0luc2lkZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBPdmVyZmxvdyByZXR1cm5zIGEgbGF5b3V0IGhpbnQuCi0gICAgaWYgKG5vbmluaGVy
aXRlZF9mbGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZs
b3dYKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVy
Lm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKSkKKyAgICBpZiAobV9ub25Jbmhlcml0ZWRG
bGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WCgp
CisgICAgICAgIHx8IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dZKCkgIT0gb3RoZXIubV9u
b25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1koKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyBJZiBvdXIgYm9yZGVyIHdpZHRocyBjaGFuZ2UsIHRoZW4gd2UgbmVlZCB0byBsYXlvdXQu
ICBPdGhlciBjaGFuZ2VzIHRvIGJvcmRlcnMKQEAgLTcxMywxMyArNzI5LDEzIEBAIGJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
dW5zaWduZWQmIGNoYW5nCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIGNv
dW50ZXIgZGlyZWN0aXZlcyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxheW91dCB0byByZS1jYWxjdWxh
dGUgY291bnRlciB2YWx1ZXMgYW5kIHJlYnVpbGQgdGhlIGNvdW50ZXIgbm9kZSB0cmVlLgotICAg
IGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3Vu
dGVyRGlyZWN0aXZlcywgb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVj
dGl2ZXMpKQorICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZlcywgb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Y291bnRlckRpcmVjdGl2ZXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICgodmlz
aWJpbGl0eSgpID09IENPTExBUFNFKSAhPSAob3RoZXIudmlzaWJpbGl0eSgpID09IENPTExBUFNF
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pmhhc09wYWNpdHkoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgp
KSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlvdXQgaGVyZSwgYnV0IHdlIGNh
bid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBT
aW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJlY3RseSBvbiBSZW5kZXJJbmxpbmVzICh3
ZSB3aWxsIG5lZWQKICAgICAgICAgLy8gdG8gYWRkIGEgc2VsZk5lZWRzU2ltcGxpZmllZExheW91
dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNlZCBhbmQgdGFpbnQgZXZlcnkgbGluZSku
CkBAIC03MjgsMTkgKzc0NCwxOSBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xh
eW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0Zp
bHRlcnMoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpKQorICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNGaWx0ZXJzKCkgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
I2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5oYXNCYWNrZHJvcEZpbHRlcnMoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFz
QmFja2Ryb3BGaWx0ZXJzKCkpCisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0Jh
Y2tkcm9wRmlsdGVycygpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0JhY2tk
cm9wRmlsdGVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgaWYgKCFh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMsIG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5xdW90ZXMpKQorICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0
YShtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMsIG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEt
PnF1b3RlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHBvc2l0aW9uKCkgIT0g
U3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHN1cnJvdW5kLT5vZmZzZXQgIT0gb3RoZXIu
c3Vycm91bmQtPm9mZnNldCkgeworICAgICAgICBpZiAobV9zdXJyb3VuZERhdGEtPm9mZnNldCAh
PSBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugd291bGQgbGlrZSB0byB1c2UgU2ltcGxpZmllZExheW91dCBmb3IgcmVsYXRpdmUgcG9zaXRp
b25pbmcsIGJ1dCB3ZSBjYW4ndCBxdWl0ZSBkbyB0aGF0IHlldC4KICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIFNpbXBsaWZpZWRMYXlvdXQgY2FuIG9wZXJhdGUgY29ycmVjdGx5
IG9uIFJlbmRlcklubGluZXMgKHdlIHdpbGwgbmVlZAogICAgICAgICAgICAgLy8gdG8gYWRkIGEg
c2VsZk5lZWRzU2ltcGxpZmllZExheW91dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNl
ZCBhbmQgdGFpbnQgZXZlcnkgbGluZSkuCkBAIC03NDgsNyArNzY0LDcgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNp
Z25lZCYgY2hhbmcKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAg
Ly8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIGEgcG9zaXRpb25lZCBsYXllciBpcyBtb3Zp
bmcgYnV0IG5vdCBjaGFuZ2luZyBzaXplLgotICAgICAgICAgICAgaWYgKCFwb3NpdGlvbkNoYW5n
ZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVyLnN1cnJvdW5kLT5vZmZzZXQs
IG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgICAgIGlmICghcG9zaXRpb25DaGFuZ2VJc01vdmVt
ZW50T25seShtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LCBvdGhlci5tX3N1cnJvdW5kRGF0YS0+b2Zm
c2V0LCBtX2JveERhdGEtPndpZHRoKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNzc2LDkgKzc5Miw5IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
LCB1CiAgICAgaWYgKHBvc2l0aW9uKCkgPT0gU3RhdGljUG9zaXRpb24pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLnN1cnJvdW5kLT5v
ZmZzZXQpIHsKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPm9mZnNldCAhPSBvdGhlci5tX3N1cnJv
dW5kRGF0YS0+b2Zmc2V0KSB7CiAgICAgICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVy
ZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5nIGJ1dCBub3QgY2hhbmdpbmcgc2l6ZS4KLSAg
ICAgICAgaWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBwb3NpdGlvbkNoYW5n
ZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVyLnN1cnJvdW5kLT5vZmZzZXQs
IG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgaWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3Np
dGlvbiAmJiBwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KG1fc3Vycm91bmREYXRhLT5vZmZz
ZXQsIG90aGVyLm1fc3Vycm91bmREYXRhLT5vZmZzZXQsIG1fYm94RGF0YS0+d2lkdGgoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC03ODgsNDAgKzgwNCw0MCBA
QCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNv
bnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdQogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYgY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIC8vIFN0eWxlUmVzb2x2
ZXIgaGFzIGVuc3VyZWQgdGhhdCB6SW5kZXggaXMgbm9uLWF1dG8gb25seSBpZiBpdCdzIGFwcGxp
Y2FibGUuCi0gICAgaWYgKG1fYm94LT56SW5kZXgoKSAhPSBvdGhlci5tX2JveC0+ekluZGV4KCkg
fHwgbV9ib3gtPmhhc0F1dG9aSW5kZXgoKSAhPSBvdGhlci5tX2JveC0+aGFzQXV0b1pJbmRleCgp
KQorICAgIGlmIChtX2JveERhdGEtPnpJbmRleCgpICE9IG90aGVyLm1fYm94RGF0YS0+ekluZGV4
KCkgfHwgbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkgIT0gb3RoZXIubV9ib3hEYXRhLT5oYXNB
dXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHBvc2l0aW9uKCkg
IT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHZpc3VhbC0+Y2xpcCAhPSBvdGhlci52
aXN1YWwtPmNsaXAgfHwgdmlzdWFsLT5oYXNDbGlwICE9IG90aGVyLnZpc3VhbC0+aGFzQ2xpcCkg
eworICAgICAgICBpZiAobV92aXN1YWxEYXRhLT5jbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+
Y2xpcCB8fCBtX3Zpc3VhbERhdGEtPmhhc0NsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5oYXND
bGlwKSB7CiAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0g
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xpcFJlY3Q7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAg
aWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSAhPSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpCisgICAgaWYgKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3BhY2l0eSAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcGFjaXR5KSB7CisgICAgaWYgKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3Bh
Y2l0eSkgewogICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnR5T3BhY2l0eTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBr
ZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAotICAgIGlmIChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmlsdGVyKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlciAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIpIHsKICAgICAgICAgY2hhbmdlZENvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsK
ICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdl
LgogICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2JhY2tkcm9wRmlsdGVyICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2JhY2tkcm9wRmlsdGVyKSB7CisgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmJhY2tkcm9wRmlsdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9w
RmlsdGVyKSB7CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydHlGaWx0ZXI7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsg
a2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAjZW5kaWYKIAotICAgIGlm
IChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX21hc2sKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveElt
YWdlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZSkKKyAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzayAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXNrCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJ
bWFnZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODI5LDI2ICs4NDUsMjYg
QEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVu
ZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKLSAgICBpZiAoaW5oZXJpdGVkX2Zs
YWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eQotICAg
ICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QKLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdz
Ll9pbnNpZGVMaW5rICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluawotICAgICAg
ICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXIuaW5oZXJp
dGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9uCi0gICAgICAgIHx8IHN1cnJvdW5kLT5ib3Jk
ZXIgIT0gb3RoZXIuc3Vycm91bmQtPmJvcmRlcgotICAgICAgICB8fCAhbV9iYWNrZ3JvdW5kLT5p
c0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIubV9iYWNrZ3JvdW5kKQotICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
dXNlck1vZGlmeQotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdAotICAgICAgICB8fCByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJE
cmFnCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhl
ci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3JkZXJGaXQKLSAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X29iamVjdEZpdAotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3Np
dGlvbiAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RQb3NpdGlvbgotICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKKyAgICBpZiAobV9pbmhlcml0ZWRGbGFn
cy52aXNpYmlsaXR5ICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eQorICAgICAg
ICB8fCBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QgIT0gb3RoZXIubV9pbmhlcml0
ZWRGbGFncy5wcmludENvbG9yQWRqdXN0CisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuaW5z
aWRlTGluayAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsKKyAgICAgICAgfHwg
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uICE9IG90aGVyLm1faW5oZXJpdGVk
RmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbgorICAgICAgICB8fCBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyICE9IG90aGVyLm1fc3Vycm91bmREYXRhLT5ib3JkZXIKKyAgICAgICAgfHwgIW1fYmFja2dy
b3VuZERhdGEtPmlzRXF1aXZhbGVudEZvclBhaW50aW5nKCpvdGhlci5tX2JhY2tncm91bmREYXRh
KQorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT51c2VyTW9kaWZ5ICE9IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0
CisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJvcmRlckZpdCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3Jk
ZXJGaXQKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0Rml0ICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdAorICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vYmplY3RQb3NpdGlvbiAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5vYmplY3RQb3NpdGlvbgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5p
bWFnZVJlbmRlcmluZyAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmlu
ZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fc2hhcGVPdXRzaWRlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0
c2lkZSkKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgdG8g
Y2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoKS4KLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fY2xpcFBhdGggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGgp
IHsKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGggIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGgpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUNsaXBQYXRoOwog
ICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2Uu
CiAgICAgfQpAQCAtODU4LDE2ICs4NzQsMTYgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWduZWQmIGNoYW4KIAog
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91
dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAg
aWYgKGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXIuaW5oZXJpdGVkLT5jb2xvcgotICAgICAgICB8
fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0gb3RoZXIuaW5oZXJpdGVkX2Zs
YWdzLl90ZXh0X2RlY29yYXRpb25zCi0gICAgICAgIHx8IHZpc3VhbC0+dGV4dERlY29yYXRpb24g
IT0gb3RoZXIudmlzdWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RleHREZWNvcmF0aW9uU3R5bGUKLSAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25Db2xvciAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90ZXh0RGVjb3JhdGlvbkNvbG9yCi0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3Rl
eHREZWNvcmF0aW9uU2tpcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3Jh
dGlvblNraXAKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IKLSAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFN0cm9rZUNvbG9yCi0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFz
aXNDb2xvciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IKLSAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwgIT0gb3RoZXIucmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwpCisgICAgaWYgKG1faW5oZXJpdGVkRGF0
YS0+Y29sb3IgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5jb2xvcgorICAgICAgICB8fCBtX2lu
aGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRl
eHREZWNvcmF0aW9ucworICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uICE9
IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlCisgICAgICAgIHx8IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Db2xvcgorICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0RGVjb3JhdGlvblNraXAgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERl
Y29yYXRpb25Ta2lwCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29s
b3IgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcgorICAgICAgICB8
fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc0NvbG9yICE9IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc0NvbG9yCisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c0ZpbGwgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC04NzUsMTIgKzg5MSwx
MiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRl
ck9yT3V0bGluZShjb25zdCBSZW5kZXJTdHlsZQogCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VS
ZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25l
ZCYpIGNvbnN0CiB7Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2JhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9i
YWNrZmFjZVZpc2liaWxpdHkKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3BlcnNwZWN0aXZlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZl
Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdp
blggIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0g
ICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5ZKQorICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3Jt
U3R5bGUzRAorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VW
aXNpYmlsaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJp
bGl0eQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUKKyAgICAgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWCAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblgKKyAgICAgICAgICAgIHx8
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWSAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTk0NCwxNjggKzk2MCwxNTAgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9v
bCBpc0NvbXAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldENs
aXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCkK
K3ZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwg
TGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmJiBsZWZ0KQogewotICAgIFN0eWxlVmlzdWFsRGF0YSog
ZGF0YSA9IHZpc3VhbC5hY2Nlc3MoKTsKLSAgICBkYXRhLT5jbGlwLnRvcCgpID0gdG9wOwotICAg
IGRhdGEtPmNsaXAucmlnaHQoKSA9IHJpZ2h0OwotICAgIGRhdGEtPmNsaXAuYm90dG9tKCkgPSBi
b3R0b207Ci0gICAgZGF0YS0+Y2xpcC5sZWZ0KCkgPSBsZWZ0OworICAgIGF1dG8mIGRhdGEgPSBt
X3Zpc3VhbERhdGEuYWNjZXNzKCk7CisgICAgZGF0YS5jbGlwLnRvcCgpID0gV1RGTW92ZSh0b3Ap
OworICAgIGRhdGEuY2xpcC5yaWdodCgpID0gV1RGTW92ZShyaWdodCk7CisgICAgZGF0YS5jbGlw
LmJvdHRvbSgpID0gV1RGTW92ZShib3R0b20pOworICAgIGRhdGEuY2xpcC5sZWZ0KCkgPSBXVEZN
b3ZlKGxlZnQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoUmVmUHRyPFN0eWxl
SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIGlmICghcmFy
ZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEpCi0gICAgICAgIHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gQ3Vyc29yTGlzdDo6Y3JlYXRlKCk7Ci0gICAg
cmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEtPmFwcGVuZChDdXJzb3JEYXRh
KFdURk1vdmUoaW1hZ2UpLCBob3RTcG90KSk7CisgICAgYXV0byYgY3Vyc29yRGF0YSA9IG1fcmFy
ZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0YTsKKyAgICBpZiAoIWN1cnNvckRhdGEp
CisgICAgICAgIGN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVhdGUoKTsKKyAgICBjdXJzb3JE
YXRhLT5hcHBlbmQoQ3Vyc29yRGF0YShXVEZNb3ZlKGltYWdlKSwgaG90U3BvdCkpOwogfQogCiB2
b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KFJlZlB0cjxDdXJzb3JMaXN0PiYmIGxpc3Qp
CiB7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBXVEZNb3Zl
KGxpc3QpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0YSA9IFdU
Rk1vdmUobGlzdCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFF1b3RlcyhSZWZQdHI8UXVv
dGVzRGF0YT4mJiBxKQogewotICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzID09IHEg
fHwgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgJiYgcSAmJiAqcmFyZUluaGVyaXRlZERhdGEt
PnF1b3RlcyA9PSAqcSkpCisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPnF1b3RlcyA9PSBx
IHx8IChtX3JhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgJiYgcSAmJiAqbV9yYXJlSW5oZXJpdGVk
RGF0YS0+cXVvdGVzID09ICpxKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPnF1b3RlcyA9IFdURk1vdmUocSk7CisgICAgbV9yYXJlSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5xdW90ZXMgPSBXVEZNb3ZlKHEpOwogfQogCiB2b2lkIFJlbmRlclN0eWxl
OjpzZXRXaWxsQ2hhbmdlKFJlZlB0cjxXaWxsQ2hhbmdlRGF0YT4mJiB3aWxsQ2hhbmdlRGF0YSkK
IHsKLSAgICBpZiAoYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV93aWxsQ2hhbmdlLmdldCgpLCB3aWxsQ2hhbmdlRGF0YS5nZXQoKSkpCisgICAgaWYgKGFyZVBv
aW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZS5nZXQo
KSwgd2lsbENoYW5nZURhdGEuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV93aWxsQ2hhbmdlID0gV1RGTW92ZSh3aWxsQ2hhbmdl
RGF0YSk7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS53aWxsQ2hhbmdlID0g
V1RGTW92ZSh3aWxsQ2hhbmdlRGF0YSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ3Vy
c29yTGlzdCgpCiB7Ci0gICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhKQotICAg
ICAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG51bGxwdHI7Cisg
ICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEpCisgICAgICAgIG1fcmFyZUlu
aGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vyc29yRGF0YSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OmNsZWFyQ29udGVudCgpCiB7Ci0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2NvbnRlbnQpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Nv
bnRlbnQgPSBudWxscHRyOworICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50
KQorICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvbnRlbnQgPSBudWxs
cHRyOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RGF0YT4gY29udGVudERhdGEpCitzdGF0aWMgaW5saW5lIENvbnRlbnREYXRhJiBs
YXN0Q29udGVudChDb250ZW50RGF0YSYgZmlyc3RDb250ZW50KQogewotICAgIGF1dG8mIGNvbnRl
bnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50OwotICAgIENvbnRl
bnREYXRhKiBsYXN0Q29udGVudCA9IGNvbnRlbnQuZ2V0KCk7Ci0gICAgd2hpbGUgKGxhc3RDb250
ZW50ICYmIGxhc3RDb250ZW50LT5uZXh0KCkpCi0gICAgICAgIGxhc3RDb250ZW50ID0gbGFzdENv
bnRlbnQtPm5leHQoKTsKKyAgICBhdXRvKiBsYXN0Q29udGVudCA9ICZmaXJzdENvbnRlbnQ7Cisg
ICAgZm9yIChhdXRvKiBjb250ZW50ID0gJmZpcnN0Q29udGVudDsgY29udGVudDsgY29udGVudCA9
IGNvbnRlbnQtPm5leHQoKSkKKyAgICAgICAgbGFzdENvbnRlbnQgPSBjb250ZW50OworICAgIHJl
dHVybiAqbGFzdENvbnRlbnQ7Cit9CiAKLSAgICBpZiAobGFzdENvbnRlbnQpCi0gICAgICAgIGxh
c3RDb250ZW50LT5zZXROZXh0KFdURk1vdmUoY29udGVudERhdGEpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNvbnRlbnQgPSBXVEZNb3ZlKGNvbnRlbnREYXRhKTsKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjb250ZW50RGF0YSwgYm9vbCBh
ZGQpCit7CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7
CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQpCisgICAgICAgIGxhc3RDb250ZW50KCpkYXRh
LmNvbnRlbnQpLnNldE5leHQoV1RGTW92ZShjb250ZW50RGF0YSkpOworICAgIGVsc2UgeworICAg
ICAgICBkYXRhLmNvbnRlbnQgPSBXVEZNb3ZlKGNvbnRlbnREYXRhKTsKKyAgICAgICAgYXV0byYg
YWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKKyAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQor
ICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOworICAgIH0KIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFn
ZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICBpZiAoYWRkKSB7Ci0gICAgICAgIGFwcGVuZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1
ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9u
TnVsbCgpKTsKLSAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRl
eHQuaXNOdWxsKCkpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Nv
bnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4
dCk7CisgICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGlt
YWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRD
b250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKIHsKLSAgICBhdXRvJiBjb250
ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudDsKLSAgICBpZiAo
YWRkKSB7Ci0gICAgICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVudCA9IGNvbnRlbnQuZ2V0KCk7
Ci0gICAgICAgIHdoaWxlIChsYXN0Q29udGVudCAmJiBsYXN0Q29udGVudC0+bmV4dCgpKQotICAg
ICAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29udGVudC0+bmV4dCgpOwotCi0gICAgICAgIGlm
IChsYXN0Q29udGVudCkgewotICAgICAgICAgICAgLy8gV2UgYXR0ZW1wdCB0byBtZXJnZSB3aXRo
IHRoZSBsYXN0IENvbnRlbnREYXRhIGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgaWYgKGlzPFRl
eHRDb250ZW50RGF0YT4oKmxhc3RDb250ZW50KSkgewotICAgICAgICAgICAgICAgIFRleHRDb250
ZW50RGF0YSYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KCpsYXN0Q29u
dGVudCk7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50
ZXh0KCkgKyBzdHJpbmcpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbGFz
dENvbnRlbnQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmlu
ZykpOwotCi0gICAgICAgICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2FsdFRleHQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgbGFzdENvbnRlbnQtPnNldEFsdFRl
eHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dCk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCk7CisgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQpIHsKKyAgICAgICAgYXV0byYgbGFzdCA9
IGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpOworICAgICAgICBpZiAoIWlzPFRleHRDb250ZW50
RGF0YT4obGFzdCkpCisgICAgICAgICAgICBsYXN0LnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29udGVudERhdGE+KHN0cmluZykpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1
dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKKyAgICAg
ICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsK
ICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBhdXRvJiBhbHRUZXh0
ID0gZGF0YS5hbHRUZXh0OworICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCisgICAgICAg
ICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CiAgICAgfQotCi0gICAgY29u
dGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwotICAgIGlm
ICghcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4dC5pc051bGwoKSkKLSAg
ICAgICAgY29udGVudC0+c2V0QWx0VGV4dChyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9hbHRUZXh0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChzdGQ6OnVuaXF1
ZV9wdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIsIGJvb2wgYWRkKQogewogICAgIGlmICghY291
bnRlcikKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGFkZCkgewotICAgICAgICBhcHBlbmRD
b250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50
ZXIpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERh
dGE+KFdURk1vdmUoY291bnRlcikpOworICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxD
b3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpLCBhZGQpOwogfQogCiB2b2lkIFJl
bmRlclN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlwZSBxdW90ZSwgYm9vbCBhZGQpCiB7Ci0gICAg
aWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVD
b250ZW50RGF0YT4ocXVvdGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1
b3RlQ29udGVudERhdGE+KHF1b3RlKTsKKyAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8
UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRDb250ZW50QWx0VGV4dChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbHRUZXh0ID0gc3RyaW5nOwotICAgIAotICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50KQotICAgICAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250ZW50LT5zZXRBbHRUZXh0KHN0cmluZyk7Cisg
ICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CisgICAgZGF0
YS5hbHRUZXh0ID0gc3RyaW5nOworICAgIGlmIChkYXRhLmNvbnRlbnQpCisgICAgICAgIGRhdGEu
Y29udGVudC0+c2V0QWx0VGV4dChzdHJpbmcpOwogfQogCiBjb25zdCBTdHJpbmcmIFJlbmRlclN0
eWxlOjpjb250ZW50QWx0VGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FsdFRleHQ7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFs
dFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc0F0dHJDb250ZW50KCkKIHsKICAg
ICBzZXRVbmlxdWUoKTsKLSAgICBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2hhc0F0
dHJDb250ZW50LCB0cnVlKTsKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGhh
c0F0dHJDb250ZW50LCB0cnVlKTsKIH0KIAotLy8gRklYTUU6IHVzZSBhZmZlY3RlZEJ5VHJhbnNm
b3JtT3JpZ2luKCkuCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihj
b25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRp
b25zLCBSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pCiB7Ci0g
ICAgLy8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0cyB0aGUgdHJhbnNmb3JtIHdpdGggdHJhbnNs
YXRlIG9wZXJhdGlvbnMuCi0gICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBv
bmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9uLCBzaW5jZSB0aGUgdHJhbnNmb3JtLW9yaWdp
biBpcyBpcnJlbGV2YW50Ci0gICAgLy8gaW4gdGhhdCBjYXNlLgorICAgIC8vIFRoZSB0cmFuc2Zv
cm0tb3JpZ2luIHByb3BlcnR5IGJyYWNrZXRzIHRoZSB0cmFuc2Zvcm0gd2l0aCB0cmFuc2xhdGUg
b3BlcmF0aW9ucy4KKyAgICAvLyBXaGVuIHRoZSBvbmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0
aW9uLCB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50LgorCiAgICAgaWYgKGFwcGx5
T3JpZ2luICE9IFJlbmRlclN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3JpZ2luKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJh
dGlvbnMpIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUg
PSBvcGVyYXRpb24tPnR5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfWAorICAgICAgICAvLyBGSVhNRTogVXNlIGFmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4oKS4KKyAgICAgICAgYXV0byB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7CisgICAg
ICAgIGlmICh0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFCisgICAgICAgICAg
ICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNECisgICAgICAgICAg
ICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gKICAgICAgICAgICAg
ICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWQotICAgICAgICAgICAg
JiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSAKLSAgICAgICAgICAgICYm
IHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWgotICAgICAgICAgICAgJiYg
dHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRCkKKyAgICAgICAgICAgICYm
IHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWikKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMTExNCw3ICsxMTEyLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1P
cGVyYXRpb24KIAogdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgQXBwbHlU
cmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgYXV0byYgb3BlcmF0aW9u
cyA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJh
dGlvbnMoKTsKKyAgICBhdXRvJiBvcGVyYXRpb25zID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKICAgICBib29sIGFwcGx5VHJhbnNm
b3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihvcGVyYXRpb25zLCBhcHBseU9yaWdp
bik7CiAKICAgICBmbG9hdCBvZmZzZXRYID0gdHJhbnNmb3JtT3JpZ2luWCgpLmlzUGVyY2VudCgp
ID8gYm91bmRpbmdCb3gueCgpIDogMDsKQEAgLTExNTEsNzggKzExNDksOTEgQEAgdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93
RGF0YSwgYm9vbCBhZGQKIHsKICAgICBBU1NFUlQoIXNoYWRvd0RhdGEgfHwgKCFzaGFkb3dEYXRh
LT5zcHJlYWQoKSAmJiBzaGFkb3dEYXRhLT5zdHlsZSgpID09IE5vcm1hbCkpOwogCi0gICAgU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YSogcmFyZURhdGEgPSByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KTsKKyAgICBhdXRvJiByYXJlRGF0YSA9IG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAg
ICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURhdGEtPnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNo
YWRvd0RhdGEpOworICAgICAgICByYXJlRGF0YS50ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dE
YXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNoYWRvd0RhdGEtPnNldE5leHQo
V1RGTW92ZShyYXJlRGF0YS0+dGV4dFNoYWRvdykpOwotICAgIHJhcmVEYXRhLT50ZXh0U2hhZG93
ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBzaGFkb3dEYXRhLT5zZXROZXh0KFdURk1vdmUo
cmFyZURhdGEudGV4dFNoYWRvdykpOworICAgIHJhcmVEYXRhLnRleHRTaGFkb3cgPSBXVEZNb3Zl
KHNoYWRvd0RhdGEpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3hTaGFkb3coc3RkOjp1
bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEsIGJvb2wgYWRkKQogewotICAgIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEqIHJhcmVEYXRhID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCk7CisgICAgYXV0byYgcmFyZURhdGEgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpOwogICAgIGlmICghYWRkKSB7Ci0gICAgICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IFdU
Rk1vdmUoc2hhZG93RGF0YSk7CisgICAgICAgIHJhcmVEYXRhLmJveFNoYWRvdyA9IFdURk1vdmUo
c2hhZG93RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaGFkb3dEYXRhLT5z
ZXROZXh0KFdURk1vdmUocmFyZURhdGEtPm1fYm94U2hhZG93KSk7Ci0gICAgcmFyZURhdGEtPm1f
Ym94U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKKyAgICBzaGFkb3dEYXRhLT5zZXROZXh0
KFdURk1vdmUocmFyZURhdGEuYm94U2hhZG93KSk7CisgICAgcmFyZURhdGEuYm94U2hhZG93ID0g
V1RGTW92ZShzaGFkb3dEYXRhKTsKIH0KIAogc3RhdGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxj
UmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewotICAgIHJldHVybiBSb3VuZGVkUmVjdDo6UmFkaWkoCi0gICAgICAgIExheW91dFNpemUo
dmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpLCBzaXplLndpZHRoKCkpLAot
ICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSwgc2l6
ZS5oZWlnaHQoKSkpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50
b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCi0gICAgICAgICAgICB2YWx1ZUZvckxl
bmd0aChib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAotICAgICAg
ICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSwg
c2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21M
ZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1
ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCkpLAot
ICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCks
IHNpemUuaGVpZ2h0KCkpKSk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNp
emUoYm9yZGVyLnRvcExlZnQoKSwgc2l6ZSksCisgICAgICAgIHNpemVGb3JMZW5ndGhTaXplKGJv
cmRlci50b3BSaWdodCgpLCBzaXplKSwKKyAgICAgICAgc2l6ZUZvckxlbmd0aFNpemUoYm9yZGVy
LmJvdHRvbUxlZnQoKSwgc2l6ZSksCisgICAgICAgIHNpemVGb3JMZW5ndGhTaXplKGJvcmRlci5i
b3R0b21SaWdodCgpLCBzaXplKQorICAgIH07CiB9CiAKLVN0eWxlSW1hZ2UqIFJlbmRlclN0eWxl
OjpsaXN0U3R5bGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5saXN0
U3R5bGVJbWFnZS5nZXQoKTsgfQorU3R5bGVJbWFnZSogUmVuZGVyU3R5bGU6Omxpc3RTdHlsZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGlzdFN0eWxlSW1hZ2Uu
Z2V0KCk7IH0KKwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0
eWxlSW1hZ2U+JiYgdikKIHsKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUlt
YWdlICE9IHYpCi0gICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5saXN0U3R5bGVJ
bWFnZSA9IFdURk1vdmUodik7CisgICAgaWYgKG1fcmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHls
ZUltYWdlICE9IHYpCisgICAgICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkubGlzdFN0
eWxlSW1hZ2UgPSBXVEZNb3ZlKHYpOwogfQogCiBjb25zdCBDb2xvciYgUmVuZGVyU3R5bGU6OmNv
bG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkLT5jb2xvcjsKKyAgICByZXR1cm4g
bV9pbmhlcml0ZWREYXRhLT5jb2xvcjsKIH0KIAogY29uc3QgQ29sb3ImIFJlbmRlclN0eWxlOjp2
aXNpdGVkTGlua0NvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVk
TGlua0NvbG9yOworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQ29sb3I7
CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbG9yKGNvbnN0IENvbG9yJiB2KQogewotICAg
IFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdik7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERh
dGEsIGNvbG9yLCB2KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xv
cihjb25zdCBDb2xvciYgdikKIHsKLSAgICBTRVRfVkFSKGluaGVyaXRlZCwgdmlzaXRlZExpbmtD
b2xvciwgdik7CisgICAgU0VUX1ZBUihtX2luaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQ29sb3Is
IHYpOworfQorCitmbG9hdCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmhvcml6b250YWxCb3JkZXJTcGFj
aW5nOwogfQogCi1mbG9hdCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBj
b25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmc7IH0KLWZs
b2F0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBp
bmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOyB9Ci12b2lkIFJlbmRlclN0eWxlOjpz
ZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBo
b3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nLCB2KTsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0VmVy
dGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHZlcnRpY2Fs
X2JvcmRlcl9zcGFjaW5nLCB2KTsgfQorZmxvYXQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVy
U3BhY2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+dmVydGljYWxC
b3JkZXJTcGFjaW5nOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVy
U3BhY2luZyhmbG9hdCB2KQoreworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCBob3Jpem9u
dGFsQm9yZGVyU3BhY2luZywgdik7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFZlcnRpY2Fs
Qm9yZGVyU3BhY2luZyhmbG9hdCB2KQoreworICAgIFNFVF9WQVIobV9pbmhlcml0ZWREYXRhLCB2
ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHYpOworfQogCiBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6
Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0
CiB7CiAgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNh
bGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBib3JkZXJSZWN0LnNpemUoKSk7CisgICAgICAg
IFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihtX3N1cnJvdW5kRGF0YS0+
Ym9yZGVyLCBib3JkZXJSZWN0LnNpemUoKSk7CiAgICAgICAgIHJhZGlpLnNjYWxlKGNhbGNCb3Jk
ZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihib3JkZXJSZWN0LCByYWRpaSkpOwogICAgICAgICBy
b3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAgICAgfQpAQCAtMTIzMiw0MSArMTI0MywzMyBAQCBSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6
Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sCiBS
b3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExh
eW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKICAgICBib29sIGhvcml6b250YWwgPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0gICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSAo
IWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgo
KSA6IDA7Ci0gICAgTGF5b3V0VW5pdCByaWdodFdpZHRoID0gKCFob3Jpem9udGFsIHx8IGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0V2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0
VW5pdCB0b3BXaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpID8g
Ym9yZGVyVG9wV2lkdGgoKSA6IDA7Ci0gICAgTGF5b3V0VW5pdCBib3R0b21XaWR0aCA9IChob3Jp
em9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlckJvdHRvbVdpZHRoKCkg
OiAwOwotCisgICAgYXV0byBsZWZ0V2lkdGggPSAoIWhvcml6b250YWwgfHwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSkgPyBib3JkZXJMZWZ0V2lkdGgoKSA6IDA7CisgICAgYXV0byByaWdodFdpZHRo
ID0gKCFob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlclJpZ2h0
V2lkdGgoKSA6IDA7CisgICAgYXV0byB0b3BXaWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UpID8gYm9yZGVyVG9wV2lkdGgoKSA6IDA7CisgICAgYXV0byBib3R0b21X
aWR0aCA9IChob3Jpem9udGFsIHx8IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSA/IGJvcmRlckJv
dHRvbVdpZHRoKCkgOiAwOwogICAgIHJldHVybiBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9y
ZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAogUm91
bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlv
dXRSZWN0JiBib3JkZXJSZWN0LCBMYXlvdXRVbml0IHRvcFdpZHRoLCBMYXlvdXRVbml0IGJvdHRv
bVdpZHRoLAogICAgIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IGlubmVyUmVjdChib3JkZXJSZWN0LngoKSArIGxl
ZnRXaWR0aCwgCi0gICAgICAgICAgICAgICBib3JkZXJSZWN0LnkoKSArIHRvcFdpZHRoLCAKLSAg
ICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgoKSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgs
IAotICAgICAgICAgICAgICAgYm9yZGVyUmVjdC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9t
V2lkdGgpOwotCi0gICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3QoaW5uZXJSZWN0KTsKLQorICAg
IFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0IHsgeyBib3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwg
Ym9yZGVyUmVjdC55KCkgKyB0b3BXaWR0aCwKKyAgICAgICAgYm9yZGVyUmVjdC53aWR0aCgpIC0g
bGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgYm9yZGVyUmVjdC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0g
Ym90dG9tV2lkdGggfSB9OwogICAgIGlmIChoYXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBS
b3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBnZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3Qp
LnJhZGlpKCk7CisgICAgICAgIGF1dG8gcmFkaWkgPSBnZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRl
clJlY3QpLnJhZGlpKCk7CiAgICAgICAgIHJhZGlpLnNocmluayh0b3BXaWR0aCwgYm90dG9tV2lk
dGgsIGxlZnRXaWR0aCwgcmlnaHRXaWR0aCk7CiAgICAgICAgIHJvdW5kZWRSZWN0LmluY2x1ZGVM
b2dpY2FsRWRnZXMocmFkaWksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB9CiAgICAgcmV0dXJu
IHJvdW5kZWRSZWN0OwogfQogCi1zdGF0aWMgYm9vbCBhbGxMYXllcnNBcmVGaXhlZChjb25zdCBG
aWxsTGF5ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgYWxsTGF5ZXJzQXJlRml4ZWQoY29uc3QgRmls
bExheWVyJiBsYXllcnMpCiB7Ci0gICAgYm9vbCBhbGxGaXhlZCA9IHRydWU7Ci0gICAgCi0gICAg
Zm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyOyBjdXJyTGF5ZXI7IGN1cnJM
YXllciA9IGN1cnJMYXllci0+bmV4dCgpKQotICAgICAgICBhbGxGaXhlZCAmPSAoY3VyckxheWVy
LT5pbWFnZSgpICYmIGN1cnJMYXllci0+YXR0YWNobWVudCgpID09IEZpeGVkQmFja2dyb3VuZEF0
dGFjaG1lbnQpOwotCi0gICAgcmV0dXJuIGxheWVyICYmIGFsbEZpeGVkOworICAgIGZvciAoYXV0
byogbGF5ZXIgPSAmbGF5ZXJzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKSB7CisgICAg
ICAgIGlmICghKGxheWVyLT5pbWFnZSgpICYmIGxheWVyLT5hdHRhY2htZW50KCkgPT0gRml4ZWRC
YWNrZ3JvdW5kQXR0YWNobWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRlclN0eWxlOjpoYXNFbnRpcmVseUZpeGVk
QmFja2dyb3VuZCgpIGNvbnN0CkBAIC0xMjc2LDEyICsxMjc5LDEyIEBAIGJvb2wgUmVuZGVyU3R5
bGU6Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkgY29uc3QKIAogY29uc3QgQ291bnRlckRp
cmVjdGl2ZU1hcCogUmVuZGVyU3R5bGU6OmNvdW50ZXJEaXJlY3RpdmVzKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7
CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvdW50ZXJEaXJlY3RpdmVzLmdl
dCgpOwogfQogCiBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRl
ckRpcmVjdGl2ZXMoKQogewotICAgIGF1dG8mIG1hcCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2NvdW50ZXJEaXJlY3RpdmVzOworICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCiAg
ICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAg
ICByZXR1cm4gKm1hcDsKQEAgLTEyOTgsNyArMTMwMSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
UmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGh5cGhlbnMo
KSAhPSBIeXBoZW5zTm9uZSk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlbmF0aW9u
U3RyaW5nID0gcmFyZUluaGVyaXRlZERhdGEuZ2V0KCktPmh5cGhlbmF0aW9uU3RyaW5nOworICAg
IGF1dG8mIGh5cGhlbmF0aW9uU3RyaW5nID0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRp
b25TdHJpbmc7CiAgICAgaWYgKCFoeXBoZW5hdGlvblN0cmluZy5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIGh5cGhlbmF0aW9uU3RyaW5nOwogCkBAIC0xMzUwLDYgKzEzNTMsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QK
IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKwogY29uc3QgVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
Pj4gZW1wdHlMaXN0OwpAQCAtMTM2MCwzMCArMTM2NCwyMyBAQCBjb25zdCBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+PiBu
b25lTGlzdDsKICAgICBzdGF0aWMgYm9vbCBub25lTGlzdEluaXRpYWxpemVkID0gZmFsc2U7Ci0K
ICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgU3R5bGVEYXNoYm9hcmRS
ZWdpb24gcmVnaW9uOwotICAgICAgICByZWdpb24ubGFiZWwgPSBlbXB0eVN0cmluZygpOwotICAg
ICAgICByZWdpb24ub2Zmc2V0LnRvcCgpICA9IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zm
c2V0LnJpZ2h0KCkgPSBMZW5ndGgoKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9
IExlbmd0aCgpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IExlbmd0aCgpOwotICAg
ICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lOwotICAgICAgICBu
b25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKKyAgICAgICAgbm9uZUxpc3QuZ2V0KCkuYXBw
ZW5kKFN0eWxlRGFzaGJvYXJkUmVnaW9uIHsgZW1wdHlTdHJpbmcoKSwgeyB9LCBTdHlsZURhc2hi
b2FyZFJlZ2lvbjo6Tm9uZSB9KTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXplZCA9IHRydWU7
CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKIH0KKwogI2VuZGlmCiAKIHZvaWQgUmVuZGVy
U3R5bGU6OmFkanVzdEFuaW1hdGlvbnMoKQogewotICAgIEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlv
bkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRpb25zLmdldCgpOworICAgIGF1
dG8qIGFuaW1hdGlvbkxpc3QgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zLmdl
dCgpOwogICAgIGlmICghYW5pbWF0aW9uTGlzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
R2V0IHJpZCBvZiBlbXB0eSBhbmltYXRpb25zIGFuZCBhbnl0aGluZyBiZXlvbmQgdGhlbQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGFuaW1hdGlvbkxpc3QtPnNpemUoKTsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICBpZiAoYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgYW5pbWF0aW9uTGlzdC0+cmVzaXplKGkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNDAxLDEyICsxMzk4LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVz
dEFuaW1hdGlvbnMoKQogCiB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiB7
Ci0gICAgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbkxpc3QgPSByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsKKyAgICBhdXRvKiB0cmFuc2l0aW9uTGlzdCA9IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOwogICAgIGlmICghdHJhbnNpdGlv
bkxpc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdldCByaWQgb2YgZW1wdHkgdHJhbnNp
dGlvbnMgYW5kIGFueXRoaW5nIGJleW9uZCB0aGVtCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IHRyYW5zaXRpb25MaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAg
aWYgKHRyYW5zaXRpb25MaXN0LT5hbmltYXRpb24oaSkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICB0cmFuc2l0aW9uTGlzdC0+cmVzaXplKGkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDIx
LDEwICsxNDE4LDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKICAg
ICAvLyBSZXBlYXQgcGF0dGVybnMgaW50byBsYXllcnMgdGhhdCBkb24ndCBoYXZlIHNvbWUgcHJv
cGVydGllcyBzZXQuCiAgICAgdHJhbnNpdGlvbkxpc3QtPmZpbGxVbnNldFByb3BlcnRpZXMoKTsK
IAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIHByb3BlcnRpZXMuIFRo
aXMgaXMgYW4gTyhuXjIpIGFsZ29yaXRobQotICAgIC8vIGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBi
ZSB2ZXJ5IHNob3J0LCBzbyBpdCBpcyBwcm9iYWJseSBvaworICAgIC8vIE1ha2Ugc3VyZSB0aGVy
ZSBhcmUgbm8gZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgLy8gVGhpcyBpcyBhbiBPKG5eMikg
YWxnb3JpdGhtIGJ1dCB0aGUgbGlzdHMgdGVuZCB0byBiZSBzaG9ydCwgc28gaXQgaXMgcHJvYmFi
bHkgT0suCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9uTGlzdC0+c2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IGkrMTsgaiA8IHRyYW5zaXRpb25MaXN0
LT5zaXplKCk7ICsraikgeworICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCB0cmFu
c2l0aW9uTGlzdC0+c2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uTGlz
dC0+YW5pbWF0aW9uKGkpLnByb3BlcnR5KCkgPT0gdHJhbnNpdGlvbkxpc3QtPmFuaW1hdGlvbihq
KS5wcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gdG9zcyBpCiAgICAgICAgICAgICAg
ICAgdHJhbnNpdGlvbkxpc3QtPnJlbW92ZShpKTsKQEAgLTE0MzYsNjIgKzE0MzMsMTA3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIAogQW5pbWF0aW9uTGlzdCYgUmVu
ZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMoKQogewotICAgIGlmICghcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucykKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlz
dD4oKTsKLSAgICByZXR1cm4gKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnM7Cisg
ICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCisgICAg
ICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmFuaW1hdGlvbnM7CiB9CiAKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1
cmVUcmFuc2l0aW9ucygpCiB7Ci0gICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV90cmFuc2l0aW9ucykKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fdHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7Ci0gICAg
cmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9uczsKKyAgICBpZiAoIW1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMpCisgICAgICAgIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
cmFuc2l0aW9uczsKIH0KIAogY29uc3QgQW5pbWF0aW9uKiBSZW5kZXJTdHlsZTo6dHJhbnNpdGlv
bkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiB7Ci0gICAgaWYgKHRy
YW5zaXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9u
cygpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uJiBwID0gdHJh
bnNpdGlvbnMoKS0+YW5pbWF0aW9uKGkpOwotICAgICAgICAgICAgaWYgKHAuYW5pbWF0aW9uTW9k
ZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBwLnByb3BlcnR5KCkgPT0gcHJvcGVydHkp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICBhdXRvKiB0cmFuc2l0aW9ucyA9IHRoaXMtPnRyYW5zaXRpb25zKCk7CisgICAgaWYgKCF0
cmFuc2l0aW9ucykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSB0cmFuc2l0aW9ucy0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IGF1dG8mIGFuaW1hdGlvbiA9IHRyYW5zaXRpb25zLT5hbmltYXRpb24oaSk7CisgICAgICAgIGlm
IChhbmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCB8fCBh
bmltYXRpb24ucHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybiAmYW5p
bWF0aW9uOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
Y29uc3QgRm9udENhc2NhZGUmIFJlbmRlclN0eWxlOjpmb250Q2FzY2FkZSgpIGNvbnN0IHsgcmV0
dXJuIGluaGVyaXRlZC0+Zm9udENhc2NhZGU7IH0KLWNvbnN0IEZvbnRNZXRyaWNzJiBSZW5kZXJT
dHlsZTo6Zm9udE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRl
LmZvbnRNZXRyaWNzKCk7IH0KLWNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclN0
eWxlOjpmb250RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNj
YWRlLmZvbnREZXNjcmlwdGlvbigpOyB9Ci1mbG9hdCBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkRm9u
dFNpemUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7
IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4g
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IH0KLWludCBSZW5kZXJTdHlsZTo6Zm9u
dFNpemUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnRDYXNjYWRlLnBpeGVsU2l6ZSgp
OyB9Citjb25zdCBGb250Q2FzY2FkZSYgUmVuZGVyU3R5bGU6OmZvbnRDYXNjYWRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZTsKK30KIAotY29uc3Qg
TGVuZ3RoJiBSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7IH0KLWZsb2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFj
aW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5n
KCk7IH0KK2NvbnN0IEZvbnRNZXRyaWNzJiBSZW5kZXJTdHlsZTo6Zm9udE1ldHJpY3MoKSBjb25z
dAoreworICAgIHJldHVybiBtX2luaGVyaXRlZERhdGEtPmZvbnRDYXNjYWRlLmZvbnRNZXRyaWNz
KCk7Cit9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNjcmlwdGlvbihjb25zdCBGb250
Q2FzY2FkZURlc2NyaXB0aW9uJiB2KQorY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVu
ZGVyU3R5bGU6OmZvbnREZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+
Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkgIT0gdikgewotICAgICAgICBpbmhlcml0ZWQu
YWNjZXNzKCktPmZvbnRDYXNjYWRlID0gRm9udENhc2NhZGUodiwgaW5oZXJpdGVkLT5mb250Q2Fz
Y2FkZS5sZXR0ZXJTcGFjaW5nKCksIGluaGVyaXRlZC0+Zm9udENhc2NhZGUud29yZFNwYWNpbmco
KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCk7Cit9
CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpzcGVjaWZpZWRGb250U2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKK30KKworZmxvYXQgUmVu
ZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBmb250RGVz
Y3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKK30KKworaW50IFJlbmRlclN0eWxlOjpmb250U2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+Zm9udENhc2NhZGUucGl4
ZWxTaXplKCk7Cit9CisKK2NvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7Cit9
CisKK2Zsb2F0IFJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbmhlcml0ZWREYXRhLT5mb250Q2FzY2FkZS5sZXR0ZXJTcGFjaW5nKCk7CiB9CiAKK2Jv
b2wgUmVuZGVyU3R5bGU6OnNldEZvbnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBpZiAobV9pbmhlcml0ZWREYXRhLT5mb250Q2Fz
Y2FkZS5mb250RGVzY3JpcHRpb24oKSA9PSBkZXNjcmlwdGlvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGF1dG8mIGNhc2NhZGUgPSBtX2luaGVyaXRlZERhdGEuYWNjZXNzKCkuZm9udENh
c2NhZGU7CisgICAgY2FzY2FkZSA9IHsgZGVzY3JpcHRpb24sIGNhc2NhZGUubGV0dGVyU3BhY2lu
ZygpLCBjYXNjYWRlLndvcmRTcGFjaW5nKCkgfTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0Cit7CiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLWNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNw
ZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPnNwZWNpZmllZExp
bmVIZWlnaHQ7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHNwZWNpZmllZExpbmVIZWlnaHQsIHYpOyB9Cisg
ICAgcmV0dXJuIG1faW5oZXJpdGVkRGF0YS0+c3BlY2lmaWVkTGluZUhlaWdodDsKICNlbHNlCi1j
b25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsgfQorICAgIHJldHVybiBtX2luaGVyaXRlZERh
dGEtPmxpbmVIZWlnaHQ7CiAjZW5kaWYKK30KIAotTGVuZ3RoIFJlbmRlclN0eWxlOjpsaW5lSGVp
Z2h0KCkgY29uc3QKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorCit2b2lkIFJlbmRlclN0
eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCYmIGhlaWdodCkKIHsKLSAgICByZXR1
cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsKKyAgICBTRVRfVkFSKG1faW5oZXJpdGVkRGF0YSwg
c3BlY2lmaWVkTGluZUhlaWdodCwgV1RGTW92ZShoZWlnaHQpKTsKK30KKworI2VuZGlmCisKK2Nv
bnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2luaGVyaXRlZERhdGEtPmxpbmVIZWlnaHQ7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dExpbmVIZWlnaHQoTGVuZ3RoJiYgaGVpZ2h0KQoreworICAgIFNFVF9WQVIobV9pbmhlcml0ZWRE
YXRhLCBsaW5lSGVpZ2h0LCBXVEZNb3ZlKGhlaWdodCkpOwogfQotdm9pZCBSZW5kZXJTdHlsZTo6
c2V0TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCkgeyBTRVRfVkFSKGluaGVy
aXRlZCwgbGluZV9oZWlnaHQsIHNwZWNpZmllZExpbmVIZWlnaHQpOyB9CiAKIGludCBSZW5kZXJT
dHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29uc3QKIHsKQEAgLTE1MDcsNyArMTU0OSw3IEBA
IGludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4g
Y2xhbXBUbzxpbnQ+KGxoLnZhbHVlKCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRXb3Jk
U3BhY2luZyhMZW5ndGggdmFsdWUpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhM
ZW5ndGgmJiB2YWx1ZSkKIHsKICAgICBmbG9hdCBmb250V29yZFNwYWNpbmc7CiAgICAgc3dpdGNo
ICh2YWx1ZS50eXBlKCkpIHsKQEAgLTE1MjgsMTEgKzE1NzAsMTEgQEAgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0V29yZFNwYWNpbmcoTGVuZ3RoIHZhbHVlKQogICAgICAgICBmb250V29yZFNwYWNpbmcg
PSAwOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaW5oZXJpdGVkLmFjY2VzcygpLT5mb250
Q2FzY2FkZS5zZXRXb3JkU3BhY2luZyhmb250V29yZFNwYWNpbmcpOwotICAgIHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT53b3JkU3BhY2luZyA9IFdURk1vdmUodmFsdWUpOworICAgIG1faW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2FkZS5zZXRXb3JkU3BhY2luZyhmb250V29yZFNw
YWNpbmcpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkud29yZFNwYWNpbmcgPSBX
VEZNb3ZlKHZhbHVlKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGV0dGVyU3BhY2luZyhm
bG9hdCB2KSB7IGluaGVyaXRlZC5hY2Nlc3MoKS0+Zm9udENhc2NhZGUuc2V0TGV0dGVyU3BhY2lu
Zyh2KTsgfQordm9pZCBSZW5kZXJTdHlsZTo6c2V0TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IG1f
aW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5mb250Q2FzY2FkZS5zZXRMZXR0ZXJTcGFjaW5nKHYpOyB9
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRTaXplKGZsb2F0IHNpemUpCiB7CkBAIC0xNTY2
LDcgKzE2MDgsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250VmFyaWF0aW9uU2V0dGluZ3Mo
Rm9udFZhcmlhdGlvblNldHRpbmdzIHNldHRpbmdzKQogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVy
U3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVu
aXQgJnRvcCwgTGF5b3V0VW5pdCAmcmlnaHQsIExheW91dFVuaXQgJmJvdHRvbSwgTGF5b3V0VW5p
dCAmbGVmdCkgY29uc3QKK3ZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExh
eW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QKIHsKICAgICB0b3AgPSAw
OwogICAgIHJpZ2h0ID0gMDsKQEAgLTE4MTAsNTMgKzE4NTIsNTMgQEAgZmxvYXQgUmVuZGVyU3R5
bGU6OmJvcmRlckVuZFdpZHRoKCkgY29uc3QKICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6IGJvcmRlclRvcFdpZHRoKCk7CiB9CiAKLXZv
aWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpblN0YXJ0KExlbmd0aCBtYXJnaW4pCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRNYXJnaW5TdGFydChMZW5ndGgmJiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpbkxlZnQobWFyZ2luKTsKKyAgICAgICAgICAgIHNl
dE1hcmdpbkxlZnQoV1RGTW92ZShtYXJnaW4pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKKyAgICAgICAgICAgIHNldE1hcmdpblJpZ2h0KFdURk1v
dmUobWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblRvcChtYXJnaW4pOworICAgICAgICAgICAg
c2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNldE1hcmdpbkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luQm90dG9tKFdU
Rk1vdmUobWFyZ2luKSk7CiAgICAgfQogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5F
bmQoTGVuZ3RoIG1hcmdpbikKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpbkVuZChMZW5ndGgm
JiBtYXJnaW4pCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblJp
Z2h0KG1hcmdpbik7CisgICAgICAgICAgICBzZXRNYXJnaW5SaWdodChXVEZNb3ZlKG1hcmdpbikp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRNYXJnaW5MZWZ0KG1hcmdpbik7CisgICAg
ICAgICAgICBzZXRNYXJnaW5MZWZ0KFdURk1vdmUobWFyZ2luKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIHNldE1hcmdp
bkJvdHRvbShtYXJnaW4pOworICAgICAgICAgICAgc2V0TWFyZ2luQm90dG9tKFdURk1vdmUobWFy
Z2luKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE1hcmdpblRvcChtYXJnaW4pOwor
ICAgICAgICAgICAgc2V0TWFyZ2luVG9wKFdURk1vdmUobWFyZ2luKSk7CiAgICAgfQogfQogCiBU
ZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QKIHsK
LSAgICBUZXh0RW1waGFzaXNNYXJrIG1hcmsgPSBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJr
PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzTWFyayk7CisgICAgYXV0byBtYXJrID0g
c3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzTWFyaz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzTWFyayk7CiAgICAgaWYgKG1hcmsgIT0gVGV4dEVtcGhhc2lzTWFya0F1dG8pCiAgICAg
ICAgIHJldHVybiBtYXJrOwotCiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAg
ICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrRG90OwotCiAgICAgcmV0dXJuIFRleHRFbXBo
YXNpc01hcmtTZXNhbWU7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiBDb2xvciBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gUmVu
ZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7CiB9CisKICNlbmRpZgogCiBMYXlvdXRCb3hF
eHRlbnQgUmVuZGVyU3R5bGU6OmltYWdlT3V0c2V0cyhjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1h
Z2UpIGNvbnN0CkBAIC0xODg5LDMwICsxOTMxLDMwIEBAIHN0ZDo6cGFpcjxGb250T3JpZW50YXRp
b24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IFJlbmRlclN0eWxlOjpmb250QW5kR2x5cGhPcmll
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU291cmNlKFJlZlB0cjxTdHlsZUlt
YWdlPiYmIGltYWdlKQogewotICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2UuaW1hZ2Uo
KSA9PSBpbWFnZS5nZXQoKSkKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRlci5tX2ltYWdl
LmltYWdlKCkgPT0gaW1hZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzdXJyb3VuZC5h
Y2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2UoV1RGTW92ZShpbWFnZSkpOworICAgIG1f
c3Vycm91bmREYXRhLmFjY2VzcygpLmJvcmRlci5tX2ltYWdlLnNldEltYWdlKFdURk1vdmUoaW1h
Z2UpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3Ro
Qm94IHNsaWNlcykKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU2xpY2VzKExlbmd0
aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdlLmltYWdl
U2xpY2VzKCkgPT0gc2xpY2VzKQorICAgIGlmIChtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLm1faW1h
Z2UuaW1hZ2VTbGljZXMoKSA9PSBzbGljZXMpCiAgICAgICAgIHJldHVybjsKLSAgICBzdXJyb3Vu
ZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0SW1hZ2VTbGljZXMoc2xpY2VzKTsKKyAgICBt
X3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZVNsaWNlcyhXVEZN
b3ZlKHNsaWNlcykpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRo
KExlbmd0aEJveCBzbGljZXMpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRo
KExlbmd0aEJveCYmIHNsaWNlcykKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJvcmRlci5tX2ltYWdl
LmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKKyAgICBpZiAobV9zdXJyb3VuZERhdGEtPmJvcmRl
ci5tX2ltYWdlLmJvcmRlclNsaWNlcygpID09IHNsaWNlcykKICAgICAgICAgcmV0dXJuOwotICAg
IHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRCb3JkZXJTbGljZXMoc2xpY2Vz
KTsKKyAgICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFnZS5zZXRCb3JkZXJT
bGljZXMoV1RGTW92ZShzbGljZXMpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
SW1hZ2VPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckltYWdlT3V0c2V0KExlbmd0aEJveCYmIG91dHNldCkKIHsKLSAgICBpZiAoc3Vycm91bmQtPmJv
cmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNldCkKKyAgICBpZiAobV9zdXJyb3VuZERhdGEt
PmJvcmRlci5tX2ltYWdlLm91dHNldCgpID09IG91dHNldCkKICAgICAgICAgcmV0dXJuOwotICAg
IHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRPdXRzZXQob3V0c2V0KTsKKyAg
ICBtX3N1cnJvdW5kRGF0YS5hY2Nlc3MoKS5ib3JkZXIubV9pbWFnZS5zZXRPdXRzZXQoV1RGTW92
ZShvdXRzZXQpKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBh
Z2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmIHBhZ2luYXRpb25Nb2RlKQpAQCAt
MTk1OCw2ICsyMDAwLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBh
Z2luYXRpb25Nb2RlKGNvbnN0IFBhZ2luYXRpb246Ok1vZGUmIHBhZ2kKIH0KIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCisKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxlOjppbml0aWFs
U2Nyb2xsU25hcFR5cGUoKQogewogICAgIHJldHVybiB7IH07CkBAIC0xOTcwLDIyICsyMDEzLDIy
IEBAIFNjcm9sbFNuYXBBbGlnbiBSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9sbFNuYXBBbGlnbigp
CiAKIGNvbnN0IFN0eWxlU2Nyb2xsU25hcEFyZWEmIFJlbmRlclN0eWxlOjpzY3JvbGxTbmFwQXJl
YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxT
bmFwQXJlYTsKKyAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjcm9sbFNuYXBB
cmVhOwogfQogCiBjb25zdCBTdHlsZVNjcm9sbFNuYXBQb3J0JiBSZW5kZXJTdHlsZTo6c2Nyb2xs
U25hcFBvcnQoKSBjb25zdAogewotICAgIHJldHVybiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
c2Nyb2xsU25hcFBvcnQ7CisgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY3Jv
bGxTbmFwUG9ydDsKIH0KIAogY29uc3QgU2Nyb2xsU25hcFR5cGUmIFJlbmRlclN0eWxlOjpzY3Jv
bGxTbmFwVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3Njcm9sbFNuYXBQb3J0LT50eXBlOworICAgIHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5zY3JvbGxTbmFwUG9ydC0+dHlwZTsKIH0KIAogY29uc3QgTGVuZ3RoQm94JiBSZW5kZXJTdHls
ZTo6c2Nyb2xsUGFkZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3Njcm9sbFNuYXBQb3J0LT5zY3JvbGxQYWRkaW5nOworICAgIHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5zY3JvbGxTbmFwUG9ydC0+c2Nyb2xsUGFkZGluZzsKIH0KIAogY29u
c3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c2Nyb2xsUGFkZGluZ1RvcCgpIGNvbnN0CkBAIC0yMDEw
LDEyICsyMDUzLDEyIEBAIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdS
aWdodCgpIGNvbnN0CiAKIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgUmVuZGVyU3R5bGU6OnNjcm9s
bFNuYXBBbGlnbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3Njcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7CisgICAgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnNjcm9sbFNuYXBBcmVhLT5hbGlnbm1lbnQ7CiB9CiAKIGNvbnN0IExlbmd0aEJveCYg
UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJnaW4oKSBjb25zdAogewotICAgIHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwQXJlYS0+c2Nyb2xsU25hcE1hcmdpbjsKKyAg
ICByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2Nyb2xsU25hcEFyZWEtPnNjcm9sbFNu
YXBNYXJnaW47CiB9CiAKIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBNYXJn
aW5Ub3AoKSBjb25zdApAQCAtMjA0MCw3OSArMjA4Myw3NCBAQCBjb25zdCBMZW5ndGgmIFJlbmRl
clN0eWxlOjpzY3JvbGxTbmFwTWFyZ2luUmlnaHQoKSBjb25zdAogCiB2b2lkIFJlbmRlclN0eWxl
OjpzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSYgdHlwZSkKIHsKLSAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+
dHlwZSA9IHR5cGU7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
c2Nyb2xsU25hcFBvcnQsIHR5cGUsIHR5cGUpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRT
Y3JvbGxQYWRkaW5nVG9wKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsUGFkZGluZ1RvcChMZW5ndGgmJiBsZW5ndGgpCiB7Ci0gICAgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQuYWNjZXNzKCktPnNjcm9sbFBhZGRp
bmcuc2V0VG9wKGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgc2Nyb2xsU25hcFBvcnQsIHNjcm9sbFBhZGRpbmcudG9wKCksIFdURk1vdmUobGVuZ3Ro
KSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20oY29uc3Qg
TGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nQm90dG9t
KExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFkZGluZy5zZXRCb3R0b20obGVuZ3Ro
KTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFw
UG9ydCwgc2Nyb2xsUGFkZGluZy5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsUGFkZGluZ0xlZnQoY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nTGVmdChMZW5ndGgmJiBsZW5ndGgp
CiB7Ci0gICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvcnQu
YWNjZXNzKCktPnNjcm9sbFBhZGRpbmcuc2V0TGVmdChsZW5ndGgpOworICAgIFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5n
LmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsUGFkZGluZ1JpZ2h0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQordm9pZCBSZW5kZXJTdHlsZTo6
c2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9ydC5hY2Nlc3MoKS0+c2Nyb2xsUGFk
ZGluZy5zZXRSaWdodChsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIHNjcm9sbFNuYXBQb3J0LCBzY3JvbGxQYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUo
bGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBBbGlnbihjb25z
dCBTY3JvbGxTbmFwQWxpZ24mIGFsaWdubWVudCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+YWxpZ25tZW50ID0gYWxpZ25t
ZW50OworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNjcm9sbFNu
YXBBcmVhLCBhbGlnbm1lbnQsIGFsaWdubWVudCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNl
dFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0
eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Ny
b2xsU25hcE1hcmdpbi5zZXRUb3AobGVuZ3RoKTsKKyAgICBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBzY3JvbGxTbmFwQXJlYSwgc2Nyb2xsU25hcE1hcmdpbi50b3AoKSwg
V1RGTW92ZShsZW5ndGgpKTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1h
cmdpbkJvdHRvbShjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNj
cm9sbFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3JvbGxTbmFw
TWFyZ2luLnNldEJvdHRvbShsZW5ndGgpOworICAgIFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHNjcm9sbFNuYXBBcmVhLCBzY3JvbGxTbmFwTWFyZ2luLmJvdHRvbSgpLCBX
VEZNb3ZlKGxlbmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFy
Z2luTGVmdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9s
bFNuYXBNYXJnaW5MZWZ0KExlbmd0aCYmIGxlbmd0aCkKIHsKLSAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwQXJlYS5hY2Nlc3MoKS0+c2Nyb2xsU25hcE1hcmdp
bi5zZXRMZWZ0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgc2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4ubGVmdCgpLCBXVEZNb3ZlKGxl
bmd0aCkpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFyZ2luUmlnaHQo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwTWFy
Z2luUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX3Njcm9sbFNuYXBBcmVhLmFjY2VzcygpLT5zY3JvbGxTbmFwTWFyZ2luLnNldFJp
Z2h0KGxlbmd0aCk7CisgICAgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
c2Nyb2xsU25hcEFyZWEsIHNjcm9sbFNuYXBNYXJnaW4ucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgp
KTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9u
bHkoKSBjb25zdAogewogICAgIGlmICghaGFzRmlsdGVyKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMgPSByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXItPm1fb3BlcmF0aW9uczsKLSAgICBpZiAoZmlsdGVy
T3BlcmF0aW9ucy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24gPSAqZmlsdGVyT3BlcmF0aW9ucy5h
dCgwKTsKLSAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246
OlJFRkVSRU5DRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgYXV0byYgZmlsdGVyT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRl
ci0+b3BlcmF0aW9uczsKKyAgICByZXR1cm4gZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkgPT0gMSAm
JiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZF
UkVOQ0U7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9w
ZXJ0aWVzKCkKIHsKLSAgICBpZiAoIXJhcmVJbmhlcml0ZWREYXRhLT5tX2N1c3RvbVByb3BlcnRp
ZXMtPmNvbnRhaW5zVmFyaWFibGVzKCkpCisgICAgaWYgKCFtX3JhcmVJbmhlcml0ZWREYXRhLT5j
dXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgcmV0dXJuOwotICAg
IAorCisgICAgYXV0byYgY3VzdG9tUHJvcGVydHlEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpOworCiAgICAgLy8gT3VyIGZpcnN0IHBh
c3MgY2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlcyBhbnkgcHJv
cGVydGllcyB0aGF0IGJlY2FtZQogICAgIC8vIGludmFsaWQgd2l0aCBlbXB0eSB2YWx1ZXMuCi0g
ICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2N1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCktPnZhbHVlcygpOworICAgIGF1dG8mIGN1c3RvbVBy
b3BlcnRpZXMgPSBjdXN0b21Qcm9wZXJ0eURhdGEudmFsdWVzOwogICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsKICAgICBmb3IgKGF1dG8gZW50cnkgOiBjdXN0b21Q
cm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmICghZW50cnkudmFsdWUtPmNvbnRhaW5zVmFyaWFibGVz
KCkpCkBAIC0yMTQyLDI1ICsyMTgwLDI1IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFi
bGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCkKICAgICBmb3IgKGF1dG8mIHJlc29sdmVkVmFsdWUgOiBy
ZXNvbHZlZFZhbHVlcykKICAgICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocmVzb2x2ZWRWYWx1
ZS0+bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlSZWYoKSk7CiAKLSAgICByYXJlSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT5zZXRDb250YWluc1Zh
cmlhYmxlcyhmYWxzZSk7CisgICAgY3VzdG9tUHJvcGVydHlEYXRhLmNvbnRhaW5zVmFyaWFibGVz
ID0gZmFsc2U7CiB9CiAKIGZsb2F0IFJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgoKSBjb25zdAog
ewotICAgIGlmIChtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgpID09IEJOT05FKQorICAg
IGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmIChvdXRsaW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLndpZHRoKCksIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCkpOwotICAgIHJldHVybiBtX2JhY2tncm91bmQtPm91dGxp
bmUoKS53aWR0aCgpOworICAgICAgICByZXR1cm4gc3RkOjptYXgobV9iYWNrZ3JvdW5kRGF0YS0+
b3V0bGluZS53aWR0aCgpLCBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpKTsK
KyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS53aWR0aCgpOwogfQogCiBmbG9h
dCBSZW5kZXJTdHlsZTo6b3V0bGluZU9mZnNldCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYmFja2dy
b3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5PTkUpCisgICAgaWYgKG1fYmFja2dyb3VuZERh
dGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KG91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICByZXR1cm4gKG1fYmFja2dyb3VuZC0+b3V0
bGluZSgpLm9mZnNldCgpICsgUmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nT2Zmc2V0KG91
dGxpbmVXaWR0aCgpKSk7Ci0gICAgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLm9mZnNl
dCgpOworICAgICAgICByZXR1cm4gKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUub2Zmc2V0KCkg
KyBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Gb2N1c1JpbmdPZmZzZXQob3V0bGluZVdpZHRoKCkpKTsK
KyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5vZmZzZXQoKTsKIH0KIAogYm9v
bCBSZW5kZXJTdHlsZTo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgp
IGNvbnN0CkBAIC0yMTY4LDQgKzIyMDYsMTUgQEAgYm9vbCBSZW5kZXJTdHlsZTo6c2hvdWxkUGxh
Y2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CiAgICAgcmV0dXJuICFpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAor
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0RGFz
aGJvYXJkUmVnaW9uKGludCB0eXBlLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBMZW5ndGgmJiB0b3As
IExlbmd0aCYmIHJpZ2h0LCBMZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQsIGJvb2wgYXBw
ZW5kKQoreworICAgIGlmICghYXBwZW5kKQorICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmRhc2hib2FyZFJlZ2lvbnMuY2xlYXIoKTsKKyAgICBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmRhc2hib2FyZFJlZ2lvbnMuYXBwZW5kKHsgbGFiZWwsIHsgV1RGTW92
ZSh0b3ApLCBXVEZNb3ZlKHJpZ2h0KSwgV1RGTW92ZShib3R0b20pLCBXVEZNb3ZlKGxlZnQpIH0s
IHR5cGUgfSk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGMyOGFmMWFlMDQ2
MGYyZjNjNzI4YTg2MGU5ZjkwMjlmNjRhYzAwNmQuLjk5YzE1NDdiMzgyNGYzZmFhNTQ1ZTYwZWEz
MWZmMjc0NGQ4MWFiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERlbm5p
cyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtODIsMTkgKzgyLDIw
IEBACiAjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCiAjZW5kaWYKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29tcGFyZUVxdWFsKGNvbnN0IFQm
IHQsIGNvbnN0IFUmIHUpIHsgcmV0dXJuIHQgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KHUpOyB9
Ci0KLSNkZWZpbmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBcCi0gICAgaWYgKCFj
b21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKLSAgICAgICAgZ3JvdXAuYWNj
ZXNzKCktPnZhcmlhYmxlID0gdmFsdWUKKyNkZWZpbmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUs
IHZhbHVlKSBkbyB7IFwKKyAgICAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxl
LCB2YWx1ZSkpIFwKKyAgICAgICAgICAgIGdyb3VwLmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7
IFwKKyAgICB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFNFVF9ORVNURURfVkFSKGdyb3VwLCBwYXJl
bnRWYXJpYWJsZSwgdmFyaWFibGUsIHZhbHVlKSBcCi0gICAgaWYgKCFjb21wYXJlRXF1YWwoZ3Jv
dXAtPnBhcmVudFZhcmlhYmxlLT52YXJpYWJsZSwgdmFsdWUpKSBcCi0gICAgICAgIGdyb3VwLmFj
Y2VzcygpLT5wYXJlbnRWYXJpYWJsZS5hY2Nlc3MoKS0+dmFyaWFibGUgPSB2YWx1ZQorI2RlZmlu
ZSBTRVRfTkVTVEVEX1ZBUihncm91cCwgcGFyZW50VmFyaWFibGUsIHZhcmlhYmxlLCB2YWx1ZSkg
ZG8geyBcCisgICAgICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT5wYXJlbnRWYXJpYWJsZS0+
dmFyaWFibGUsIHZhbHVlKSkgXAorICAgICAgICAgICAgZ3JvdXAuYWNjZXNzKCkucGFyZW50VmFy
aWFibGUuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1ZTsgXAorICAgIH0gd2hpbGUgKDApCiAKLSNk
ZWZpbmUgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdyb3VwLCB2YXJpYWJsZSwgdmFsdWUpIFwKLSAg
ICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUuY29sb3IoKSwgdmFsdWUpKSBcCi0g
ICAgICAgIGdyb3VwLmFjY2VzcygpLT52YXJpYWJsZS5zZXRDb2xvcih2YWx1ZSkKKyNkZWZpbmUg
U0VUX0JPUkRFUlZBTFVFX0NPTE9SKGdyb3VwLCB2YXJpYWJsZSwgdmFsdWUpIGRvIHsgXAorICAg
ICAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUuY29sb3IoKSwgdmFsdWUpKSBc
CisgICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52YXJpYWJsZS5zZXRDb2xvcih2YWx1ZSk7IFwK
KyAgICB9IHdoaWxlICgwKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMSwzODYgKzEx
MiwzNSBAQCBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVJbWFnZTsKIGNsYXNzIFN0eWxl
SW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CitjbGFzcyBTdHlsZVNjcm9sbFNu
YXBBcmVhOworY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNsYXNzIFRyYW5zZm9ybWF0aW9u
TWF0cml4OwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLWNsYXNzIFN0eWxlU2Nyb2xs
U25hcFBvcnQ7Ci1jbGFzcyBTdHlsZVNjcm9sbFNuYXBBcmVhOwotc3RydWN0IFNjcm9sbFNuYXBU
eXBlOwogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKLSNlbmRpZgorc3RydWN0IFNjcm9sbFNuYXBU
eXBlOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCA0PiBQ
c2V1ZG9TdHlsZUNhY2hlOwordXNpbmcgUHNldWRvU3R5bGVDYWNoZSA9IFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCA0PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgY29tcGFyZUVxdWFsKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIHsg
cmV0dXJuIHQgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KHUpOyB9CiAKIGNsYXNzIFJlbmRlclN0
eWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAKLSAgICBmcmllbmQgY2xh
c3MgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRp
b25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29s
b3JzLgotICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0eWxlQ29tbWFuZDsgLy8gRWRpdGluZyBoYXMg
dG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCi0gICAgZnJpZW5kIGNsYXNzIEVkaXRpbmdT
dHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCi0gICAg
ZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I7IC8vIElnbm9yZXMgdmlzaXRlZCBz
dHlsZXMsIHNvIG5lZWRzIHRvIGJlIGFibGUgdG8gc2VlIHVudmlzaXRlZCBpbmZvLgotICAgIGZy
aWVuZCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcjsgLy8gVXNlZCBieSBD
U1MgYW5pbWF0aW9ucy4gV2UgY2FuJ3QgYWxsb3cgdGhlbSB0byBhbmltYXRlIGJhc2VkIG9mZiB2
aXNpdGVkIGNvbG9ycy4KLSAgICBmcmllbmQgY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2U7IC8vIEZJ
WE1FOiBOZWVkcyB0byBhbHRlciB0aGUgdmlzaXRlZCBzdGF0ZSBieSBoYW5kLiBTaG91bGQgY2xl
YW4gdGhlIFNWRyBjb2RlIHVwIGFuZCBtb3ZlIGl0IGludG8gUmVuZGVyU3R5bGUgcGVyaGFwcy4K
LSAgICBmcmllbmQgY2xhc3MgUmVuZGVyVHJlZUFzVGV4dDsgLy8gRklYTUU6IE9ubHkgbmVlZGVk
IHNvIHRoZSByZW5kZXIgdHJlZSBjYW4ga2VlcCBseWluZyBhbmQgZHVtcCB0aGUgd3JvbmcgY29s
b3JzLiAgUmViYXNlbGluaW5nIHdvdWxkIGFsbG93IHRoaXMgdG8gYmUgeWFua2VkLgotICAgIGZy
aWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI7IC8vIFNldHMgbWVtYmVycyBkaXJlY3Rs
eS4KLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tOyAvLyBTZXRzIG1lbWJlcnMg
ZGlyZWN0bHkuCi0gICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlckZ1bmN0aW9uczsgLy8gU2V0
cyBtZW1iZXJzIGRpcmVjdGx5LgotICAgIGZyaWVuZCBjbGFzcyBTdHlsZVJlc29sdmVyOyAvLyBT
ZXRzIG1lbWJlcnMgZGlyZWN0bHkuCi0KLXB1YmxpYzoKLSAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVk
RmxhZ3MgewotICAgICAgICBOb25Jbmhlcml0ZWRGbGFncygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBzaG91bGQgYWxsIGJlIHplcm8uCi0gICAgICAgICAg
ICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1goKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRp
YWxPdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxDbGVhcigpKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghaW5pdGlhbERpc3BsYXkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
IWluaXRpYWxVbmljb2RlQmlkaSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsVmVydGljYWxBbGlnbigpKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0aW5nKCkpOwotICAgICAgICAgICAgQVNTRVJU
KCFpbml0aWFsVGFibGVMYXlvdXQoKSk7Ci0KLSAgICAgICAgICAgIG1fZmxhZ3MgPSAwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdz
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgPT0g
b3RoZXIubV9mbGFnczsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9Ci0KLSAgICAgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBOb25Jbmhl
cml0ZWRGbGFncyYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9ubHkgYSBzdWJz
ZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJpdGVkRmxhZ3MgY29udGFpbnMgYSBidW5jaCBv
ZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KLSAgICAgICAgICAgIHVpbnQ2NF90
IG5vbkluaGVyaXRlZE1hc2sgPSBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dYT2Zmc2V0Ci0gICAg
ICAgICAgICAgICAgfCBvdmVyZmxvd01hc2sgPDwgb3ZlcmZsb3dZT2Zmc2V0Ci0gICAgICAgICAg
ICAgICAgfCBjbGVhck1hc2sgPDwgY2xlYXJPZmZzZXQKLSAgICAgICAgICAgICAgICB8IGRpc3Bs
YXlNYXNrIDw8IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHBvc2l0
aW9uTWFzayA8PCBwb3NpdGlvbk9mZnNldAotICAgICAgICAgICAgICAgIHwgZGlzcGxheU1hc2sg
PDwgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCB1bmljb2RlQmlkaU1h
c2sgPDwgdW5pY29kZUJpZGlPZmZzZXQKLSAgICAgICAgICAgICAgICB8IHZlcnRpY2FsQWxpZ25N
YXNrIDw8IHZlcnRpY2FsQWxpZ25PZmZzZXQKLSAgICAgICAgICAgICAgICB8IGZsb2F0aW5nTWFz
ayA8PCBmbG9hdGluZ09mZnNldAotICAgICAgICAgICAgICAgIHwgb25lQml0TWFzayA8PCBleHBs
aWNpdEluaGVyaXRhbmNlT2Zmc2V0Ci0gICAgICAgICAgICAgICAgfCB0YWJsZUxheW91dEJpdE1h
c2sgPDwgdGFibGVMYXlvdXRPZmZzZXQKLSAgICAgICAgICAgICAgICB8IGhhc1ZpZXdwb3J0VW5p
dHNCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7Ci0KLSAgICAgICAgICAgIG1fZmxh
Z3MgPSAobV9mbGFncyAmIH5ub25Jbmhlcml0ZWRNYXNrKSB8IChvdGhlci5tX2ZsYWdzICYgbm9u
SW5oZXJpdGVkTWFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dY
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxv
d01hc2ssIG92ZXJmbG93WE9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dYKEVP
dmVyZmxvdyBvdmVyZmxvd1gpIHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dYLCBvdmVyZmxvd01hc2ss
IG92ZXJmbG93WE9mZnNldCk7IH0KLQotICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93PihnZXRWYWx1ZShvdmVyZmxvd01hc2ss
IG92ZXJmbG93WU9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxv
dyBvdmVyZmxvd1kpIHsgdXBkYXRlVmFsdWUob3ZlcmZsb3dZLCBvdmVyZmxvd01hc2ssIG92ZXJm
bG93WU9mZnNldCk7IH0KLQotICAgICAgICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFQ2xlYXI+KGdldFZhbHVlKGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpKTsgfQot
ICAgICAgICB2b2lkIHNldENsZWFyKEVDbGVhciBjbGVhcikgeyB1cGRhdGVWYWx1ZShjbGVhciwg
Y2xlYXJNYXNrLCBjbGVhck9mZnNldCk7IH0KLQotICAgICAgICBFRGlzcGxheSBlZmZlY3RpdmVE
aXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KGdldFZhbHVlKGRp
c3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRF
ZmZlY3RpdmVEaXNwbGF5KEVEaXNwbGF5IGVmZmVjdGl2ZURpc3BsYXkpIHsgdXBkYXRlVmFsdWUo
ZWZmZWN0aXZlRGlzcGxheSwgZGlzcGxheU1hc2ssIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQpOyB9
Ci0KLSAgICAgICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVBvc2l0aW9uPihnZXRWYWx1ZShwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KSk7IH0K
LSAgICAgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gcG9zaXRpb24pIHsgdXBkYXRlVmFs
dWUocG9zaXRpb24sIHBvc2l0aW9uTWFzaywgcG9zaXRpb25PZmZzZXQpOyB9Ci0KLSAgICAgICAg
RURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURp
c3BsYXk+KGdldFZhbHVlKGRpc3BsYXlNYXNrLCBvcmlnaW5hbERpc3BsYXlPZmZzZXQpKTsgfQot
ICAgICAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkp
IHsgdXBkYXRlVmFsdWUob3JpZ2luYWxEaXNwbGF5LCBkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNw
bGF5T2Zmc2V0KTsgfQotCi0gICAgICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVbmljb2RlQmlkaT4oZ2V0VmFsdWUodW5pY29kZUJpZGlN
YXNrLCB1bmljb2RlQmlkaU9mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0VW5pY29kZUJpZGko
RVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKSB7IHVwZGF0ZVZhbHVlKHVuaWNvZGVCaWRpLCB1bmlj
b2RlQmlkaU1hc2ssIHVuaWNvZGVCaWRpT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaGFzVmll
d3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaGFzVmlld3BvcnRVbml0c09m
ZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdmFsdWUpIHsg
dXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzVmlld3BvcnRVbml0c09mZnNldCk7IH0KLQotICAgICAg
ICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVZlcnRpY2FsQWxpZ24+KGdldFZhbHVlKHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNhbEFs
aWduT2Zmc2V0KSk7IH0KLSAgICAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFs
aWduIHZlcnRpY2FsQWxpZ24pIHsgdXBkYXRlVmFsdWUodmVydGljYWxBbGlnbiwgdmVydGljYWxB
bGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZXhw
bGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGV4
cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc0Zsb2F0aW5nKCkg
Y29uc3QgeyByZXR1cm4gZmxvYXRpbmcoKSAhPSBOb0Zsb2F0OyB9Ci0gICAgICAgIEVGbG9hdCBm
bG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbG9hdD4oZ2V0VmFsdWUoZmxv
YXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCkpOyB9Ci0gICAgICAgIHZvaWQgc2V0RmxvYXRpbmco
RUZsb2F0IGZsb2F0aW5nKSB7IHVwZGF0ZVZhbHVlKGZsb2F0aW5nLCBmbG9hdGluZ01hc2ssIGZs
b2F0aW5nT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaGFzQW55UHVibGljUHNldWRvU3R5bGVz
KCkgY29uc3QgeyByZXR1cm4gUFVCTElDX1BTRVVET0lEX01BU0sgJiBnZXRWYWx1ZShwc2V1ZG9C
aXRzTWFzaywgcHNldWRvQml0c09mZnNldCk7IH0KLSAgICAgICAgYm9vbCBoYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChw
c2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgICAgICAgICBBU1NFUlQocHNldWRvIDwgRklSU1RfSU5U
RVJOQUxfUFNFVURPSUQpOwotICAgICAgICAgICAgcmV0dXJuIChvbmVCaXRNYXNrIDw8IChwc2V1
ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYgbV9mbGFnczsKLSAgICAgICAgfQotICAgICAg
ICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykKLSAgICAgICAgewotICAg
ICAgICAgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKLSAgICAgICAgICAgIEFTU0VSVChw
c2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAgICAgICAgICBtX2ZsYWdzIHw9
IG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZzZXQgLSAxICsgcHNldWRvKTsKLSAgICAgICAg
fQotICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCBwc2V1ZG9JZFNl
dCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHBzZXVkb0lkU2V0KTsKLSAgICAgICAg
ICAgIHVpbnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0gcHNldWRvSWRTZXQuZGF0YSgpOwotICAgICAg
ICAgICAgQVNTRVJUKChyYXdQc2V1ZG9JZFNldCAmIFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9PSBy
YXdQc2V1ZG9JZFNldCk7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHBzZXVkb0JpdHNPZmZz
ZXQgPj0gMSwgIihwc2V1ZG9CaXRzT2Zmc2V0IC0gMSkgc2hvdWxkIGJlIHZhbGlkLiIpOwotICAg
ICAgICAgICAgbV9mbGFncyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhd1BzZXVkb0lkU2V0
KSA8PCAocHNldWRvQml0c09mZnNldCAtIDEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEVUYWJs
ZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUYWJsZUxh
eW91dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRNYXNrLCB0YWJsZUxheW91dE9mZnNldCkpOyB9
Ci0gICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KSB7
IHVwZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0
T2Zmc2V0KTsgfQotCi0gICAgICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1ZShzdHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVP
ZmZzZXQpKTsgfQotICAgICAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUp
IHsgdXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQp
OyB9Ci0KLSAgICAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
aXNVbmlxdWVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SXNVbmlxdWUoKSB7IHVwZGF0ZUJv
b2xlYW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBlbXB0eVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihlbXB0eVN0YXRlT2Zmc2V0KTsgIH0KLSAgICAg
ICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwg
ZW1wdHlTdGF0ZU9mZnNldCk7IH0KLQotICAgICAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RDaGlsZFN0YXRlT2Zmc2V0KTsgIH0KLSAgICAg
ICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZh
bHVlLCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBsYXN0Q2hpbGRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4obGFzdENoaWxkU3RhdGVPZmZzZXQpOyAg
fQotICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9v
bGVhbih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBhZmZl
Y3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlIb3Zlck9m
ZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQpOyB9Ci0KLSAgICAgICAg
Ym9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3Rl
ZEJ5QWN0aXZlT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9v
bCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsg
fQotCi0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBnZXRCb29s
ZWFuKGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlE
cmFnKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeURyYWdPZmZz
ZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGlzTGlua09mZnNldCk7IH0KLSAgICAgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZzZXQpOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNF
eHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQotICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0
bHlTZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQotCi0gICAgICAgIGJvb2wgaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGVPZmZzZXQpOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNl
dFdyaXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzRXhwbGlj
aXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQotCi0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qg
ZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9uSW5oZXJpdGVk
RmxhZ3MsIG1fZmxhZ3MpOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3Rl
ZEJ5QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0
OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3RlZEJ5SG92ZXIoKSB7IHJl
dHVybiBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlIb3Zlck9mZnNldDsgfQotICAgICAgICBzdGF0
aWMgdWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgeyByZXR1cm4gb25l
Qml0TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOyB9Ci0gICAgICAgIHN0
YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdGaXJz
dENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRf
dCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0xhc3RDaGlsZFN0YXRlKCkg
fCBmbGFnSXNVbmlxdWUoKTsgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgdXBkYXRlQm9v
bGVhbihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc1NldCkKLSAgICAgICAgICAgICAgICBtX2ZsYWdzIHw9IChvbmVCaXRNYXNrIDw8IG9m
ZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9mbGFncyAmPSB+KG9u
ZUJpdE1hc2sgPDwgb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVh
bih1aW50NjRfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X2ZsYWdzICYgKG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdXBkYXRlVmFsdWUodWludDhfdCBuZXdWYWx1ZSwgdWludDY0X3QgcG9zaXRpb25JbmRlcGVu
ZGVudE1hc2ssIHVpbnQ2NF90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KCEobmV3VmFsdWUgJiB+cG9zaXRpb25JbmRlcGVuZGVudE1hc2spKTsKLSAgICAgICAgICAgIHVp
bnQ2NF90IHBvc2l0aW9uRGVwZW5kZW50TWFzayA9IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrIDw8
IG9mZnNldDsKLSAgICAgICAgICAgIG1fZmxhZ3MgPSAobV9mbGFncyAmIH5wb3NpdGlvbkRlcGVu
ZGVudE1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihuZXdWYWx1ZSkgPDwgb2Zmc2V0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGdldFZhbHVlKHVpbnQ2NF90IHBvc2l0aW9u
SW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKG1fZmxhZ3MgPj4gb2Zmc2V0KSAm
IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB1
aW50NjRfdCBmbGFnSXNVbmlxdWUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGlzVW5pcXVlT2Zm
c2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyBy
ZXR1cm4gb25lQml0TWFzayA8PCBmaXJzdENoaWxkU3RhdGVPZmZzZXQ7IH0KLSAgICAgICAgc3Rh
dGljIHVpbnQ2NF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwg
bGFzdENoaWxkU3RhdGVPZmZzZXQ7IH0KLQotICAgICAgICAvLyBUbyB0eXBlIHRoZSBiaXQgbWFz
ayBwcm9wZXJseSBvbiA2NGJpdHMuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBvbmVC
aXRNYXNrID0gMHgxOwotCi0gICAgICAgIC8vIEJ5dGUgMS4KLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG92ZXJmbG93Qml0Q291bnQgPSAzOwotICAgICAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3Qgb3ZlcmZsb3dNYXNrID0gKG9uZUJpdE1hc2sgPDwgb3ZlcmZsb3dCaXRDb3VudCkgLSAx
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dYT2Zmc2V0ID0gMDsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WU9mZnNldCA9IG92ZXJmbG93WE9m
ZnNldCArIG92ZXJmbG93Qml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
bGVhckJpdENvdW50ID0gMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGNsZWFyTWFz
ayA9IChvbmVCaXRNYXNrIDw8IGNsZWFyQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNsZWFyT2Zmc2V0ID0gb3ZlcmZsb3dZT2Zmc2V0ICsgb3ZlcmZsb3dCaXRD
b3VudDsKLQotICAgICAgICAvLyBCeXRlIDIuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkaXNwbGF5Qml0Q291bnQgPSA1OwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZGlz
cGxheU1hc2sgPSAob25lQml0TWFzayA8PCBkaXNwbGF5Qml0Q291bnQpIC0gMTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQgPSBjbGVhck9mZnNl
dCArIGNsZWFyQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb3NpdGlv
bkJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHBvc2l0aW9uTWFz
ayA9IChvbmVCaXRNYXNrIDw8IHBvc2l0aW9uQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHBvc2l0aW9uT2Zmc2V0ID0gZWZmZWN0aXZlRGlzcGxheU9mZnNldCAr
IGRpc3BsYXlCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDMuCi0gICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXlPZmZzZXQgPSBwb3NpdGlvbk9mZnNldCArIHBv
c2l0aW9uQml0Q291bnQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bmljb2RlQmlk
aUJpdENvdW50ID0gMzsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHVuaWNvZGVCaWRp
TWFzayA9IChvbmVCaXRNYXNrIDw8IHVuaWNvZGVCaWRpQml0Q291bnQpIC0gMTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNvZGVCaWRpT2Zmc2V0ID0gb3JpZ2luYWxEaXNwbGF5
T2Zmc2V0ICsgZGlzcGxheUJpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUgNC4KLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5nQml0Q291bnQgPSAyOwotICAgICAgICBzdGF0
aWMgY29uc3QgdWludDY0X3QgZmxvYXRpbmdNYXNrID0gKG9uZUJpdE1hc2sgPDwgZmxvYXRpbmdC
aXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdPZmZz
ZXQgPSB1bmljb2RlQmlkaU9mZnNldCArIHVuaWNvZGVCaWRpQml0Q291bnQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uQml0Y291bnQgPSAx
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlv
bk9mZnNldCA9IGZsb2F0aW5nT2Zmc2V0ICsgZmxvYXRpbmdCaXRDb3VudDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZUJpdGNvdW50ID0g
MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXRXcml0aW5n
TW9kZU9mZnNldCA9IGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQgKyBoYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uQml0Y291bnQ7Ci0KLSAgICAgICAgLy8gQnl0ZSA1LgotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZXhwbGljaXRJbmhlcml0YW5jZUJpdENvdW50ID0gMTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgPSBo
YXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZzZXQgKyBoYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGVCaXRjb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0
Qml0Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdGFibGVMYXlvdXRC
aXRNYXNrID0gb25lQml0TWFzazsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRhYmxl
TGF5b3V0T2Zmc2V0ID0gZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCArIGV4cGxpY2l0SW5oZXJp
dGFuY2VCaXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxp
Z25CaXRDb3VudCA9IDQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFs
aWduUGFkZGluZyA9IDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFs
aWduQW5kUGFkZGluZ0JpdENvdW50ID0gdmVydGljYWxBbGlnbkJpdENvdW50ICsgdmVydGljYWxB
bGlnblBhZGRpbmc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2ZXJ0aWNhbEFsaWdu
TWFzayA9IChvbmVCaXRNYXNrIDw8IHZlcnRpY2FsQWxpZ25CaXRDb3VudCkgLSAxOwotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbk9mZnNldCA9IHRhYmxlTGF5b3V0
T2Zmc2V0ICsgdGFibGVMYXlvdXRCaXRDb3VudDsKLQotICAgICAgICAvLyBCeXRlIDYuCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzQml0Q291bnQgPSA3OwotICAgICAg
ICBzdGF0aWMgY29uc3QgdWludDY0X3QgcHNldWRvQml0c01hc2sgPSAob25lQml0TWFzayA8PCBw
c2V1ZG9CaXRzQml0Q291bnQpIC0gMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBz
ZXVkb0JpdHNPZmZzZXQgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgdmVydGljYWxBbGlnbkJpdENv
dW50OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzQml0
Q291bnQgPSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaGFzVmlld3BvcnRVbml0
c0JpdE1hc2sgPSAob25lQml0TWFzayA8PCBoYXNWaWV3cG9ydFVuaXRzQml0Q291bnQpIC0gMTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQgPSBw
c2V1ZG9CaXRzT2Zmc2V0ICsgcHNldWRvQml0c0JpdENvdW50OwotCi0gICAgICAgIC8vIEJ5dGUg
Ny4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUJpdENvdW50ID0gNjsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZVBhZGRpbmcgPSAyOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQW5kUGFkZGluZ0JpdENvdW50ID0g
c3R5bGVUeXBlQml0Q291bnQgKyBzdHlsZVR5cGVQYWRkaW5nOwotICAgICAgICBzdGF0aWMgY29u
c3QgdWludDY0X3Qgc3R5bGVUeXBlTWFzayA9IChvbmVCaXRNYXNrIDw8IHN0eWxlVHlwZUFuZFBh
ZGRpbmdCaXRDb3VudCkgLSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVU
eXBlT2Zmc2V0ID0gaGFzVmlld3BvcnRVbml0c0JpdENvdW50ICsgaGFzVmlld3BvcnRVbml0c09m
ZnNldDsKLQotICAgICAgICAvLyBCeXRlIDguCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpc1VuaXF1ZU9mZnNldCA9IHN0eWxlVHlwZU9mZnNldCArIHN0eWxlVHlwZUFuZFBhZGRpbmdC
aXRDb3VudDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQg
PSBpc1VuaXF1ZU9mZnNldCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJz
dENoaWxkU3RhdGVPZmZzZXQgPSBlbXB0eVN0YXRlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGxhc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zm
c2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9m
ZnNldCA9IGxhc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQgPSBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAx
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBh
ZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGlzTGlua09mZnNldCA9IGFmZmVjdGVkQnlEcmFnT2Zmc2V0ICsgMTsKLQotICAgICAgICAvLyA2
MCBiaXRzIGFyZSBhc3NpZ25lZC4gVGhlcmUgYXJlIDQgYml0cyBhdmFpbGFibGUgY3VycmVudGx5
IHVzZWQgYXMgcGFkZGluZyB0byBpbXByb3ZlIGNvZGUgZ2VuZXJhdGlvbi4KLSAgICAgICAgLy8g
SWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVw
ZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKS4KLSAgICAgICAgdWludDY0
X3QgbV9mbGFnczsKLSAgICB9OwotCi1wcm90ZWN0ZWQ6Ci0KLSAgICAvLyBub24taW5oZXJpdGVk
IGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxlQm94RGF0YT4gbV9ib3g7Ci0gICAgRGF0YVJl
ZjxTdHlsZVZpc3VhbERhdGE+IHZpc3VhbDsKLSAgICBEYXRhUmVmPFN0eWxlQmFja2dyb3VuZERh
dGE+IG1fYmFja2dyb3VuZDsKLSAgICBEYXRhUmVmPFN0eWxlU3Vycm91bmREYXRhPiBzdXJyb3Vu
ZDsKLSAgICBEYXRhUmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE+IHJhcmVOb25Jbmhlcml0
ZWREYXRhOwotCi0gICAgLy8gaW5oZXJpdGVkIGF0dHJpYnV0ZXMKLSAgICBEYXRhUmVmPFN0eWxl
UmFyZUluaGVyaXRlZERhdGE+IHJhcmVJbmhlcml0ZWREYXRhOwotICAgIERhdGFSZWY8U3R5bGVJ
bmhlcml0ZWREYXRhPiBpbmhlcml0ZWQ7Ci0KLSAgICAvLyBsaXN0IG9mIGFzc29jaWF0ZWQgcHNl
dWRvIHN0eWxlcwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQc2V1ZG9TdHlsZUNhY2hlPiBtX2NhY2hl
ZFBzZXVkb1N0eWxlczsKLQotICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7
Ci0KLS8vICFTVEFSVCBTWU5DITogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgY29weSBjb25z
dHJ1Y3RvciBpbiBSZW5kZXJTdHlsZS5jcHAgYW5kIGltcGxpY2l0bHlJbmhlcml0ZWQoKSBpbiBT
dHlsZVJlc29sdmVyLmNwcAotCi0gICAgLy8gaW5oZXJpdAotICAgIHN0cnVjdCBJbmhlcml0ZWRG
bGFncyB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoX2VtcHR5X2NlbGxzID09
IG90aGVyLl9lbXB0eV9jZWxscykKLSAgICAgICAgICAgICAgICAmJiAoX2NhcHRpb25fc2lkZSA9
PSBvdGhlci5fY2FwdGlvbl9zaWRlKQotICAgICAgICAgICAgICAgICYmIChfbGlzdF9zdHlsZV90
eXBlID09IG90aGVyLl9saXN0X3N0eWxlX3R5cGUpCi0gICAgICAgICAgICAgICAgJiYgKF9saXN0
X3N0eWxlX3Bvc2l0aW9uID09IG90aGVyLl9saXN0X3N0eWxlX3Bvc2l0aW9uKQotICAgICAgICAg
ICAgICAgICYmIChfdmlzaWJpbGl0eSA9PSBvdGhlci5fdmlzaWJpbGl0eSkKLSAgICAgICAgICAg
ICAgICAmJiAoX3RleHRfYWxpZ24gPT0gb3RoZXIuX3RleHRfYWxpZ24pCi0gICAgICAgICAgICAg
ICAgJiYgKF90ZXh0X3RyYW5zZm9ybSA9PSBvdGhlci5fdGV4dF90cmFuc2Zvcm0pCi0gICAgICAg
ICAgICAgICAgJiYgKF90ZXh0X2RlY29yYXRpb25zID09IG90aGVyLl90ZXh0X2RlY29yYXRpb25z
KQotICAgICAgICAgICAgICAgICYmIChfY3Vyc29yX3N0eWxlID09IG90aGVyLl9jdXJzb3Jfc3R5
bGUpCi0jaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgICAgICAgICAgICAgICYmICht
X2N1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIubV9jdXJzb3JWaXNpYmlsaXR5KQotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgJiYgKF9kaXJlY3Rpb24gPT0gb3RoZXIuX2RpcmVjdGlvbikKLSAgICAg
ICAgICAgICAgICAmJiAoX3doaXRlX3NwYWNlID09IG90aGVyLl93aGl0ZV9zcGFjZSkKLSAgICAg
ICAgICAgICAgICAmJiAoX2JvcmRlcl9jb2xsYXBzZSA9PSBvdGhlci5fYm9yZGVyX2NvbGxhcHNl
KQotICAgICAgICAgICAgICAgICYmIChfYm94X2RpcmVjdGlvbiA9PSBvdGhlci5fYm94X2RpcmVj
dGlvbikKLSAgICAgICAgICAgICAgICAmJiAobV9ydGxPcmRlcmluZyA9PSBvdGhlci5tX3J0bE9y
ZGVyaW5nKQotICAgICAgICAgICAgICAgICYmIChtX3ByaW50Q29sb3JBZGp1c3QgPT0gb3RoZXIu
bV9wcmludENvbG9yQWRqdXN0KQotICAgICAgICAgICAgICAgICYmIChfcG9pbnRlckV2ZW50cyA9
PSBvdGhlci5fcG9pbnRlckV2ZW50cykKLSAgICAgICAgICAgICAgICAmJiAoX2luc2lkZUxpbmsg
PT0gb3RoZXIuX2luc2lkZUxpbmspCi0gICAgICAgICAgICAgICAgJiYgKF9pbnNpZGVEZWZhdWx0
QnV0dG9uID09IG90aGVyLl9pbnNpZGVEZWZhdWx0QnV0dG9uKQotICAgICAgICAgICAgICAgICYm
IChtX3dyaXRpbmdNb2RlID09IG90aGVyLm1fd3JpdGluZ01vZGUpOwotICAgICAgICB9CiAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgICAgICB1bnNpZ25lZCBfZW1wdHlf
Y2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCi0gICAgICAgIHVuc2lnbmVkIF9jYXB0aW9uX3NpZGUg
OiAyOyAvLyBFQ2FwdGlvblNpZGUKLSAgICAgICAgdW5zaWduZWQgX2xpc3Rfc3R5bGVfdHlwZSA6
IDc7IC8vIEVMaXN0U3R5bGVUeXBlCi0gICAgICAgIHVuc2lnbmVkIF9saXN0X3N0eWxlX3Bvc2l0
aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCi0gICAgICAgIHVuc2lnbmVkIF92aXNpYmls
aXR5IDogMjsgLy8gRVZpc2liaWxpdHkKLSAgICAgICAgdW5zaWduZWQgX3RleHRfYWxpZ24gOiA0
OyAvLyBFVGV4dEFsaWduCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0X3RyYW5zZm9ybSA6IDI7IC8v
IEVUZXh0VHJhbnNmb3JtCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0X2RlY29yYXRpb25zIDogVGV4
dERlY29yYXRpb25CaXRzOwotICAgICAgICB1bnNpZ25lZCBfY3Vyc29yX3N0eWxlIDogNjsgLy8g
RUN1cnNvcgotI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICAgICAgdW5zaWduZWQg
bV9jdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0eQotI2VuZGlmCi0gICAg
ICAgIHVuc2lnbmVkIF9kaXJlY3Rpb24gOiAxOyAvLyBUZXh0RGlyZWN0aW9uCi0gICAgICAgIHVu
c2lnbmVkIF93aGl0ZV9zcGFjZSA6IDM7IC8vIEVXaGl0ZVNwYWNlCi0gICAgICAgIC8vIDMyIGJp
dHMKLSAgICAgICAgdW5zaWduZWQgX2JvcmRlcl9jb2xsYXBzZSA6IDE7IC8vIEVCb3JkZXJDb2xs
YXBzZQotICAgICAgICB1bnNpZ25lZCBfYm94X2RpcmVjdGlvbiA6IDE7IC8vIEVCb3hEaXJlY3Rp
b24gKENTUzMgYm94X2RpcmVjdGlvbiBwcm9wZXJ0eSwgZmxleGlibGUgYm94IGxheW91dCBtb2R1
bGUpCi0KLSAgICAgICAgLy8gbm9uIENTUzIgaW5oZXJpdGVkCi0gICAgICAgIHVuc2lnbmVkIG1f
cnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgotICAgICAgICB1bnNpZ25lZCBtX3ByaW50Q29sb3JB
ZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsKLSAgICAgICAgdW5zaWduZWQgX3BvaW50ZXJF
dmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cwotICAgICAgICB1bnNpZ25lZCBfaW5zaWRlTGlu
ayA6IDI7IC8vIEVJbnNpZGVMaW5rCi0gICAgICAgIHVuc2lnbmVkIF9pbnNpZGVEZWZhdWx0QnV0
dG9uIDogMTsKLSAgICAgICAgLy8gNDQgYml0cwotCi0gICAgICAgIC8vIENTUyBUZXh0IExheW91
dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci0gICAgICAgIHVuc2ln
bmVkIG1fd3JpdGluZ01vZGUgOiAyOyAvLyBXcml0aW5nTW9kZQotICAgICAgICAvLyA0NiBiaXRz
Ci0gICAgfSBpbmhlcml0ZWRfZmxhZ3M7Ci0KLS8vIGRvbid0IGluaGVyaXQKLSAgICBOb25Jbmhl
cml0ZWRGbGFncyBub25pbmhlcml0ZWRfZmxhZ3M7Ci0KLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8
IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQotICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3Vu
IHsgZmFsc2UgfTsKLSNlbmRpZgotCi0vLyAhRU5EIFNZTkMhCiBwcml2YXRlOgorICAgIGVudW0g
Q2xvbmVUYWcgeyBDbG9uZSB9OwogICAgIGVudW0gQ3JlYXRlRGVmYXVsdFN0eWxlVGFnIHsgQ3Jl
YXRlRGVmYXVsdFN0eWxlIH07Ci0gICAgUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFn
KTsKLQotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0eWxlKCk7CiAKIHB1YmxpYzoK
ICAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CiAgICAgUmVuZGVyU3R5
bGUmIG9wZXJhdG9yPShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CisgICAgflJlbmRlclN0eWxl
KCk7CiAKLSAgICAvLyBUaGlzIGlzIG5vdCBhIHRydWUgY29weSBjb25zdHJ1Y3Rvci4gSXQgZG9l
c24ndCBjb3B5IHBzZXVkbyBzdHlsZSBjYWNoZXMgZm9yIGV4YW1wbGUuCi0gICAgZW51bSBDbG9u
ZVRhZyB7IENsb25lIH07CisgICAgUmVuZGVyU3R5bGUgcmVwbGFjZShSZW5kZXJTdHlsZSYmKSBX
QVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICBleHBsaWNpdCBSZW5kZXJTdHlsZShDcmVhdGVEZWZh
dWx0U3R5bGVUYWcpOwogICAgIFJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgQ2xvbmVU
YWcpOwogCi0gICAgflJlbmRlclN0eWxlKCk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlJiBkZWZh
dWx0U3R5bGUoKTsKIAogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGUoKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVQdHIoKTsKQEAgLTUwNSw2ICsx
NTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRpb25IYXNCZWd1bigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVsZXRpb25IYXNCZWd1bjsgfQogI2VuZGlmCiAKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVu
ZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisg
ICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdFBhcmVudCk7Cisg
ICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSYpOworCiAgICAg
Q29udGVudFBvc2l0aW9uIHJlc29sdmVkSnVzdGlmeUNvbnRlbnRQb3NpdGlvbihjb25zdCBTdHls
ZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yKSBjb25zdDsKICAgICBD
b250ZW50RGlzdHJpYnV0aW9uVHlwZSByZXNvbHZlZEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9u
KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNv
bnN0OwogICAgIENvbnRlbnRQb3NpdGlvbiByZXNvbHZlZEFsaWduQ29udGVudFBvc2l0aW9uKGNv
bnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0
OwpAQCAtNTE0LDExICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSByZXNvbHZlZEp1c3RpZnlJdGVtcyhJdGVtUG9zaXRpb24gbm9ybWFsVmFsdWVCZWhhdmlvdXIp
IGNvbnN0OwogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgcmVzb2x2ZWRKdXN0aWZ5U2VsZihj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIEl0ZW1Qb3NpdGlvbiBub3JtYWxWYWx1ZUJl
aGF2aW91cikgY29uc3Q7CiAKLSAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxl
JiBpbmhlcml0UGFyZW50KTsKLSAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJl
bmRlclN0eWxlKik7Ci0KLSAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3Muc3R5bGVUeXBlKCk7IH0KLSAgICB2b2lkIHNldFN0eWxlVHlwZShQ
c2V1ZG9JZCBzdHlsZVR5cGUpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFN0eWxlVHlwZShzdHls
ZVR5cGUpOyB9CisgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ub25J
bmhlcml0ZWRGbGFncy5zdHlsZVR5cGUoKTsgfQorICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVk
b0lkIHN0eWxlVHlwZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFN0eWxlVHlwZShzdHlsZVR5
cGUpOyB9CiAKICAgICBSZW5kZXJTdHlsZSogZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQp
IGNvbnN0OwogICAgIFJlbmRlclN0eWxlKiBhZGRDYWNoZWRQc2V1ZG9TdHlsZShzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKQEAgLTUyNiwxMTYgKzE3OSw5MyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVmUHRyPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+JiB2YWx1ZSkgeyByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLT5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUs
IHZhbHVlKTsgfQotICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBnZXRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPm1fY3VzdG9tUHJvcGVydGllcy0+Z2V0Q3VzdG9tUHJvcGVydHlWYWx1
ZShuYW1lKTsgfQotICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9jdXN0b21Qcm9wZXJ0
aWVzLT5oYXNDdXN0b21Qcm9wZXJ0eShuYW1lKTsgfQotICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5
VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVk
RGF0YS0+bV9jdXN0b21Qcm9wZXJ0aWVzLT5tX3ZhbHVlczsgfQorICAgIGNvbnN0IEN1c3RvbVBy
b3BlcnR5VmFsdWVNYXAmIGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJ
bmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KKyAgICB2b2lkIHNldEN1
c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFt
ZSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKLSAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9v
bCBoYXNWaWV3cG9ydFVuaXRzID0gdHJ1ZSkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzVmll
d3BvcnRVbml0cyhoYXNWaWV3cG9ydFVuaXRzKTsgfQotICAgIGJvb2wgaGFzVmlld3BvcnRVbml0
cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNWaWV3cG9ydFVuaXRzKCk7
IH0KKyAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCBoYXNWaWV3cG9ydFVuaXRzID0g
dHJ1ZSkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEhhc1ZpZXdwb3J0VW5pdHMoaGFzVmlld3Bv
cnRVbml0cyk7IH0KKyAgICBib29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMoKTsgfQogCi0gICAgYm9vbCBhZmZl
Y3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRC
eUhvdmVyKCk7IH0KLSAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9Ci0gICAgYm9vbCBhZmZlY3Rl
ZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5RHJh
ZygpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBtX25vbklu
aGVyaXRlZEZsYWdzLmFmZmVjdGVkQnlIb3ZlcigpOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5QWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5QWN0aXZl
KCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhl
cml0ZWRGbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CiAKLSAgICB2b2lkIHNldEFmZmVjdGVkQnlI
b3ZlcigpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlIb3Zlcih0cnVlKTsgfQot
ICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZSgpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFm
ZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnKCkgeyBu
b25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWcodHJ1ZSk7IH0KKyAgICB2b2lkIHNl
dEFmZmVjdGVkQnlIb3ZlcigpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRBZmZlY3RlZEJ5SG92
ZXIodHJ1ZSk7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoKSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3Muc2V0QWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0
ZWRCeURyYWcoKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWcodHJ1ZSk7
IH0KIAogICAgIHZvaWQgc2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKGNvbnN0IFBh
Z2luYXRpb246Ok1vZGUmKTsKICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVy
U3R5bGUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIGJvb2wg
aXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0Zsb2F0aW5n
KCk7IH0KLSAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0dXJuICFzdXJyb3VuZC0+bWFy
Z2luLmlzWmVybygpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXJGaWxsKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNGaWxsKCk7IH0KKyAgICBib29sIGlzRmxv
YXRpbmcoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmlzRmxvYXRpbmcoKTsg
fQorICAgIGJvb2wgaGFzTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fc3Vycm91bmREYXRhLT5t
YXJnaW4uaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5ib3JkZXIuaGFzQm9yZGVyKCk7IH0KKyAgICBib29sIGhhc0JvcmRlckZp
bGwoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmhhc0ZpbGwoKTsgfQog
ICAgIGJvb2wgaGFzVmlzaWJsZUJvcmRlckRlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBoYXNW
aXNpYmxlQm9yZGVyKCkgfHwgaGFzQm9yZGVyRmlsbCgpOyB9Ci0gICAgYm9vbCBoYXNWaXNpYmxl
Qm9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNWaXNpYmxlQm9yZGVy
KCk7IH0KLSAgICBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7IHJldHVybiAhc3Vycm91bmQtPnBh
ZGRpbmcuaXNaZXJvKCk7IH0KLSAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICFz
dXJyb3VuZC0+b2Zmc2V0LmlzWmVybygpOyB9CisgICAgYm9vbCBoYXNWaXNpYmxlQm9yZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5oYXNWaXNpYmxlQm9yZGVyKCk7
IH0KKyAgICBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zdXJyb3VuZERhdGEt
PnBhZGRpbmcuaXNaZXJvKCk7IH0KKyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmlzWmVybygpOyB9CiAgICAgYm9vbCBoYXNNYXJnaW5C
ZWZvcmVRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpLmhhc1F1aXJrKCk7IH0K
ICAgICBib29sIGhhc01hcmdpbkFmdGVyUXVpcmsoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRl
cigpLmhhc1F1aXJrKCk7IH0KIAotICAgIGJvb2wgaGFzQmFja2dyb3VuZEltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkuaGFzSW1hZ2UoKTsgfQotICAgIGJv
b2wgaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQt
PmJhY2tncm91bmQoKS5oYXNGaXhlZEltYWdlKCk7IH0KLSAgICAKKyAgICBib29sIGhhc0JhY2tn
cm91bmRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQu
aGFzSW1hZ2UoKTsgfQorICAgIGJvb2wgaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLmhhc0ZpeGVkSW1hZ2UoKTsgfQor
CiAgICAgYm9vbCBoYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpIGNvbnN0OwotICAgIAorCiAg
ICAgYm9vbCBoYXNBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gYXBwZWFyYW5jZSgpICE9IE5v
Q29udHJvbFBhcnQ7IH0KIAotICAgIGJvb2wgaGFzQmFja2dyb3VuZCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBDb2xvciBjb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcik7Ci0gICAgICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gaGFzQmFja2dyb3VuZEltYWdlKCk7Ci0g
ICAgfQorICAgIGJvb2wgaGFzQmFja2dyb3VuZCgpIGNvbnN0OwogICAgIAogICAgIExheW91dEJv
eEV4dGVudCBpbWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1hZ2UmKSBjb25zdDsKLSAgICBi
b29sIGhhc0JvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
Ym9yZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVy
bygpOwotICAgIH0KLSAgICBMYXlvdXRCb3hFeHRlbnQgYm9yZGVySW1hZ2VPdXRzZXRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbWFnZU91dHNldHMoYm9yZGVySW1hZ2UoKSk7Ci0g
ICAgfQorICAgIGJvb2wgaGFzQm9yZGVySW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVySW1hZ2UoKS5oYXNJbWFnZSgpICYmICFib3JkZXJJbWFnZSgpLm91dHNldCgpLmlzWmVybygp
OyB9CisgICAgTGF5b3V0Qm94RXh0ZW50IGJvcmRlckltYWdlT3V0c2V0cygpIGNvbnN0IHsgcmV0
dXJuIGltYWdlT3V0c2V0cyhib3JkZXJJbWFnZSgpKTsgfQogCi0gICAgTGF5b3V0Qm94RXh0ZW50
IG1hc2tCb3hJbWFnZU91dHNldHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGltYWdl
T3V0c2V0cyhtYXNrQm94SW1hZ2UoKSk7Ci0gICAgfQorICAgIExheW91dEJveEV4dGVudCBtYXNr
Qm94SW1hZ2VPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaW1hZ2VPdXRzZXRzKG1hc2tCb3hJbWFn
ZSgpKTsgfQogCiAgICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFz
RmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0c2V0cygpOyB9CiAgICAgRmlsdGVyT3V0c2V0cyBm
aWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgPyBmaWx0ZXIoKS5vdXRz
ZXRzKCkgOiBGaWx0ZXJPdXRzZXRzKCk7IH0KIAotICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVy
aW5nKTsgfQotICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgbykgeyBpbmhlcml0ZWRfZmxh
Z3MubV9ydGxPcmRlcmluZyA9IG87IH0KKyAgICBPcmRlciBydGxPcmRlcmluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nKTsg
fQorICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRG
bGFncy5ydGxPcmRlcmluZyA9IG9yZGVyaW5nOyB9CiAKICAgICBib29sIGlzU3R5bGVBdmFpbGFi
bGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8pIGNvbnN0OwotICAgIHZv
aWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKTsKKyAgICBib29sIGhhc1BzZXVk
b1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVk
b0lkKTsKICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCk7CiAgICAgYm9v
bCBoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0OwogCiAgICAgLy8gYXR0cmlidXRlIGdldHRl
ciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsgfQotICAgIEVEaXNwbGF5IG9yaWdpbmFs
RGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5hbERpc3Bs
YXkoKTsgfQorICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKTsgfQogCi0gICAgY29uc3QgTGVuZ3RoJiBsZWZ0
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sZWZ0KCk7IH0KLSAgICBjb25zdCBM
ZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5yaWdodCgpOyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0
LnRvcCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+b2Zmc2V0LmJvdHRvbSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5n
dGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5yaWdodCgp
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0
YS0+b2Zmc2V0LnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBib3R0b20oKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmJvdHRvbSgpOyB9CiAKICAgICAvLyBBY2Nlc3Nv
cnMgZm9yIHBvc2l0aW9uZWQgb2JqZWN0IGVkZ2VzIHRoYXQgdGFrZSBpbnRvIGFjY291bnQgd3Jp
dGluZyBtb2RlLgotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+b2Zmc2V0LnN0YXJ0KHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmVuZCh3
cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNl
dC5hZnRlcih3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbExlZnQo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+b2Zmc2V0LnN0YXJ0KHdyaXRpbmdNb2Rl
KCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+b2Zmc2V0LmVuZCh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQu
YmVmb3JlKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsQm90dG9t
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5hZnRlcih3cml0aW5nTW9k
ZSgpKTsgfQogCi0gICAgLy8gV2hldGhlciBvciBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVx
dWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNvbXB1dGVkCi0gICAgLy8gdG8gZGV0ZXJtaW5l
IGl0cyBwb3NpdGlvbi4KLSAgICBib29sIGhhc0F1dG9MZWZ0QW5kUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBsZWZ0KCkuaXNBdXRvKCkgJiYgcmlnaHQoKS5pc0F1dG8oKTsgfQotICAgIGJvb2wgaGFz
QXV0b1RvcEFuZEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgpLmlzQXV0bygpICYmIGJvdHRv
bSgpLmlzQXV0bygpOyB9CisgICAgLy8gV2hldGhlciBvciBub3QgYSBwb3NpdGlvbmVkIGVsZW1l
bnQgcmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNvbXB1dGVkICB0byBkZXRlcm1pbmUg
aXRzIHBvc2l0aW9uLgogICAgIGJvb2wgaGFzU3RhdGljSW5saW5lUG9zaXRpb24oYm9vbCBob3Jp
em9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsID8gaGFzQXV0b0xlZnRBbmRSaWdodCgp
IDogaGFzQXV0b1RvcEFuZEJvdHRvbSgpOyB9CiAgICAgYm9vbCBoYXNTdGF0aWNCbG9ja1Bvc2l0
aW9uKGJvb2wgaG9yaXpvbnRhbCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbCA/IGhhc0F1dG9U
b3BBbmRCb3R0b20oKSA6IGhhc0F1dG9MZWZ0QW5kUmlnaHQoKTsgfQogCi0gICAgRVBvc2l0aW9u
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCk7
IH0KKyAgICBFUG9zaXRpb24gcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRl
ZEZsYWdzLnBvc2l0aW9uKCk7IH0KICAgICBib29sIGhhc091dE9mRmxvd1Bvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uIHx8IHBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbjsgfQogICAgIGJvb2wgaGFzSW5GbG93UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBwb3NpdGlvbigpID09IFJlbGF0aXZlUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBT
dGlja3lQb3NpdGlvbjsgfQogICAgIGJvb2wgaGFzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uIHx8IHBvc2l0aW9u
KCkgPT0gU3RpY2t5UG9zaXRpb247IH0KLSAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKTsgfQotCi0gICAgY29uc3QgTGVuZ3Ro
JiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT53aWR0aCgpOyB9Ci0gICAgY29uc3QgTGVu
Z3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveC0+aGVpZ2h0KCk7IH0KLSAgICBjb25z
dCBMZW5ndGgmIG1pbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1pbldpZHRoKCk7IH0K
LSAgICBjb25zdCBMZW5ndGgmIG1heFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1heFdp
ZHRoKCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1pbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym94LT5taW5IZWlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWF4SGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3gtPm1heEhlaWdodCgpOyB9CisgICAgRUZsb2F0IGZsb2F0aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5mbG9hdGluZygpOyB9CisKKyAgICBjb25z
dCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT53aWR0aCgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmhlaWdo
dCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94
RGF0YS0+bWluV2lkdGgoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWF4V2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX2JveERhdGEtPm1heFdpZHRoKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1pbkhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWluSGVpZ2h0KCk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIG1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+bWF4SGVpZ2h0
KCk7IH0KICAgICAKICAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB3aWR0aCgpIDogaGVpZ2h0KCk7IH0KICAg
ICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0KCkgOiB3aWR0aCgpOyB9CkBAIC02NDQsNDIgKzI3NCw0
MiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTWluSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1pbkhlaWdodCgpIDogbWluV2lk
dGgoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbE1heEhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtYXhIZWlnaHQoKSA6IG1heFdpZHRoKCk7
IH0KIAotICAgIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXI7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpOyB9Ci0gICAgY29uc3QgQm9yZGVyVmFs
dWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgp
OyB9Ci0gICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIudG9wKCk7IH0KLSAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKTsgfQorICAgIGNv
bnN0IEJvcmRlckRhdGEmIGJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5i
b3JkZXI7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpOyB9CisgICAgY29uc3QgQm9yZGVyVmFs
dWUmIGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5y
aWdodCgpOyB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlclRvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCk7IH0KKyAgICBjb25zdCBCb3JkZXJWYWx1
ZSYgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5i
b3R0b20oKTsgfQogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckJlZm9yZSgpIGNvbnN0
OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZnRlcigpIGNvbnN0OwogICAgIGNvbnN0
IEJvcmRlclZhbHVlJiBib3JkZXJTdGFydCgpIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVl
JiBib3JkZXJFbmQoKSBjb25zdDsKIAotICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKTsgfQotICAgIFN0
eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5pbWFnZSgpLmltYWdlKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdl
U2xpY2VzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLmltYWdlU2xp
Y2VzKCk7IH0KLSAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlV2lkdGgoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuYm9yZGVyU2xpY2VzKCk7IH0KLSAgICBj
b25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlT3V0c2V0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5pbWFnZSgpLm91dHNldCgpOyB9Ci0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBi
b3JkZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BM
ZWZ0KCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsgfQotICAgIGNvbnN0IExl
bmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21S
aWdodCgpOyB9Ci0gICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9Ci0KLSAgICBmbG9hdCBib3JkZXJMZWZ0
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgp
OyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7IH0KLSAgICBib29sIGJvcmRlckxlZnRJc1Ry
YW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuaXNUcmFu
c3BhcmVudCgpOyB9Ci0gICAgZmxvYXQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxl
IGJvcmRlclJpZ2h0U3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0
KCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAg
IGZsb2F0IGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5i
b3JkZXJUb3BXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5zdHlsZSgpOyB9Ci0gICAgYm9vbCBi
b3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50
b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICBmbG9hdCBib3JkZXJCb3R0b21XaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyQm90dG9tV2lkdGgoKTsgfQotICAg
IEVCb3JkZXJTdHlsZSBib3JkZXJCb3R0b21TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm90dG9tKCkuc3R5bGUoKTsgfQotICAgIGJvb2wgYm9yZGVyQm90dG9tSXNUcmFu
c3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tKCkuaXNUcmFu
c3BhcmVudCgpOyB9Ci0gICAgRmxvYXRCb3hFeHRlbnQgYm9yZGVyV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlcldpZHRoKCk7IH0KKyAgICBjb25zdCBOaW5lUGll
Y2VJbWFnZSYgYm9yZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmltYWdlKCk7IH0KKyAgICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZVNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5pbWFnZSgpOyB9CisgICAg
Y29uc3QgTGVuZ3RoQm94JiBib3JkZXJJbWFnZVNsaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
cm91bmREYXRhLT5ib3JkZXIuaW1hZ2UoKS5pbWFnZVNsaWNlcygpOyB9CisgICAgY29uc3QgTGVu
Z3RoQm94JiBib3JkZXJJbWFnZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PmJvcmRlci5pbWFnZSgpLmJvcmRlclNsaWNlcygpOyB9CisgICAgY29uc3QgTGVuZ3RoQm94JiBi
b3JkZXJJbWFnZU91dHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIu
aW1hZ2UoKS5vdXRzZXQoKTsgfQorCisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wTGVm
dFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wTGVmdCgp
OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7
IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnRvcFJpZ2h0KCk7IH0KKyAgICBjb25zdCBM
ZW5ndGhTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJy
b3VuZERhdGEtPmJvcmRlci5ib3R0b21MZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBi
b3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5i
b3JkZXIuYm90dG9tUmlnaHQoKTsgfQorICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5oYXNCb3JkZXJSYWRpdXMoKTsgfQorCisg
ICAgZmxvYXQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEt
PmJvcmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0
U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmxlZnQoKS5zdHls
ZSgpOyB9CisgICAgYm9vbCBib3JkZXJMZWZ0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5ib3JkZXIubGVmdCgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIGZs
b2F0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9y
ZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHlsZSBib3JkZXJSaWdodFN0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJvcmRlci5yaWdodCgpLnN0eWxl
KCk7IH0KKyAgICBib29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5ib3JkZXIucmlnaHQoKS5pc1RyYW5zcGFyZW50KCk7IH0KKyAgICBm
bG9hdCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3Jk
ZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQorICAgIEVCb3JkZXJTdHlsZSBib3JkZXJUb3BTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIudG9wKCkuc3R5bGUoKTsgfQor
ICAgIGJvb2wgYm9yZGVyVG9wSXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5ib3JkZXIudG9wKCkuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgZmxvYXQgYm9yZGVy
Qm90dG9tV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvcmRl
ckJvdHRvbVdpZHRoKCk7IH0KKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVyQm90dG9tU3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbSgpLnN0eWxlKCk7IH0K
KyAgICBib29sIGJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+Ym9yZGVyLmJvdHRvbSgpLmlzVHJhbnNwYXJlbnQoKTsgfQorICAgIEZsb2F0
Qm94RXh0ZW50IGJvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPmJv
cmRlci5ib3JkZXJXaWR0aCgpOyB9CiAKICAgICBmbG9hdCBib3JkZXJCZWZvcmVXaWR0aCgpIGNv
bnN0OwogICAgIGZsb2F0IGJvcmRlckFmdGVyV2lkdGgoKSBjb25zdDsKQEAgLTY4OSwyOCArMzE5
LDI4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBvdXRsaW5lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bWF4PGZsb2F0PigwLCBvdXRsaW5lV2lkdGgoKSArIG91dGxpbmVPZmZzZXQoKSk7IH0KICAg
ICBmbG9hdCBvdXRsaW5lV2lkdGgoKSBjb25zdDsKICAgICBib29sIGhhc091dGxpbmUoKSBjb25z
dCB7IHJldHVybiBvdXRsaW5lU3R5bGUoKSA+IEJISURERU4gJiYgb3V0bGluZVdpZHRoKCkgPiAw
OyB9Ci0gICAgRUJvcmRlclN0eWxlIG91dGxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCk7IH0KLSAgICBPdXRsaW5lSXNBdXRvIG91dGxpbmVT
dHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+KG1f
YmFja2dyb3VuZC0+b3V0bGluZSgpLmlzQXV0bygpKTsgfQorICAgIEVCb3JkZXJTdHlsZSBvdXRs
aW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxl
KCk7IH0KKyAgICBPdXRsaW5lSXNBdXRvIG91dGxpbmVTdHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+KG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUu
aXNBdXRvKCkpOyB9CiAgICAgYm9vbCBoYXNPdXRsaW5lSW5WaXN1YWxPdmVyZmxvdygpIGNvbnN0
IHsgcmV0dXJuIGhhc091dGxpbmUoKSAmJiBvdXRsaW5lU2l6ZSgpID4gMDsgfQogICAgIAotICAg
IEVPdmVyZmxvdyBvdmVyZmxvd1goKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mu
b3ZlcmZsb3dYKCk7IH0KLSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4g
bm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpOyB9CisgICAgRU92ZXJmbG93IG92ZXJmbG93
WCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYKCk7IH0KKyAg
ICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFn
cy5vdmVyZmxvd1koKTsgfQogCi0gICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5Pihpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxp
dHkpOyB9Ci0gICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+dmVydGljYWxBbGln
bigpOyB9CisgICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkpOyB9CisgICAg
RVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJp
dGVkRmxhZ3MudmVydGljYWxBbGlnbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB2ZXJ0aWNhbEFs
aWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT52ZXJ0aWNhbEFsaWduKCk7IH0K
IAotICAgIGNvbnN0IExlbmd0aCYgY2xpcExlZnQoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNs
aXAubGVmdCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBjbGlwUmlnaHQoKSBjb25zdCB7IHJldHVy
biB2aXN1YWwtPmNsaXAucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgY2xpcFRvcCgpIGNv
bnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgY2xp
cEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5ib3R0b20oKTsgfQotICAgIGNv
bnN0IExlbmd0aEJveCYgY2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcDsgfQotICAg
IGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+aGFzQ2xpcDsgfQorICAgIGNv
bnN0IExlbmd0aCYgY2xpcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbERhdGEtPmNsaXAu
bGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBjbGlwUmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbERhdGEtPmNsaXAucmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcFRvcCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC50b3AoKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsRGF0YS0+Y2xpcC5ib3R0
b20oKTsgfQorICAgIGNvbnN0IExlbmd0aEJveCYgY2xpcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
dWFsRGF0YS0+Y2xpcDsgfQorICAgIGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
dWFsRGF0YS0+aGFzQ2xpcDsgfQogCi0gICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkgY29u
c3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCk7IH0KKyAgICBFVW5p
Y29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdz
LnVuaWNvZGVCaWRpKCk7IH0KIAotICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5jbGVhcigpOyB9Ci0gICAgRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0
KCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5b3V0KCk7IH0KKyAg
ICBFQ2xlYXIgY2xlYXIoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmNsZWFy
KCk7IH0KKyAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLnRhYmxlTGF5b3V0KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OwpAQCAtNzE4LDI3NyArMzQ4
LDIxMiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc3BlY2lmaWVkRm9udFNpemUoKSBjb25zdDsKICAg
ICBmbG9hdCBjb21wdXRlZEZvbnRTaXplKCkgY29uc3Q7CiAgICAgaW50IGZvbnRTaXplKCkgY29u
c3Q7CisgICAgc3RkOjpwYWlyPEZvbnRPcmllbnRhdGlvbiwgTm9uQ0pLR2x5cGhPcmllbnRhdGlv
bj4gZm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsKKwogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9O
VFMpCiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdzIGZvbnRWYXJpYXRpb25TZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7IH0KICNl
bmRpZgotICAgIHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRp
b24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAKLSAgICBjb25zdCBMZW5ndGgmIHRleHRJ
bmRlbnQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50OyB9CisgICAg
Y29uc3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+aW5kZW50OyB9CisgICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbik7IH0K
KyAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSk7IH0K
KyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX2luaGVyaXRlZEZsYWdzLnRleHREZWNv
cmF0aW9ucyk7IH0KKyAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX3Zpc3VhbERhdGEtPnRleHREZWNv
cmF0aW9uKTsgfQorICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CisgICAgVGV4dERlY29yYXRp
b25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHREZWNvcmF0aW9uU2tpcD4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lw
KTsgfQorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3NpdGlvbik7IH0KKwogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCi0gICAgVGV4dEluZGVudExpbmUgdGV4dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGluZT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dElu
ZGVudExpbmUpOyB9Ci0gICAgVGV4dEluZGVudFR5cGUgdGV4dEluZGVudFR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50VHlwZT4ocmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEluZGVudFR5cGUpOyB9CisgICAgVGV4dEluZGVudExpbmUgdGV4dEluZGVudExpbmUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGluZT4obV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEluZGVudExpbmUpOyB9CisgICAgVGV4dEluZGVudFR5cGUgdGV4dEluZGVudFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50VHlwZT4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEluZGVudFR5cGUpOyB9CisgICAgVGV4dEFsaWduTGFzdCB0ZXh0QWxp
Z25MYXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFsaWduTGFzdD4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dEFsaWduTGFzdCk7IH0KKyAgICBUZXh0SnVzdGlmeSB0ZXh0SnVz
dGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRKdXN0aWZ5PihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0SnVzdGlmeSk7IH0KICNlbmRpZgotICAgIEVUZXh0QWxpZ24gdGV4dEFs
aWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4oaW5oZXJpdGVkX2Zs
YWdzLl90ZXh0X2FsaWduKTsgfQotICAgIEVUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFRyYW5zZm9ybT4oaW5oZXJpdGVkX2ZsYWdz
Ll90ZXh0X3RyYW5zZm9ybSk7IH0KLSAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihpbmhl
cml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMpOyB9Ci0gICAgVGV4dERlY29yYXRpb24gdGV4
dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4o
dmlzdWFsLT50ZXh0RGVjb3JhdGlvbik7IH0KLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIFRl
eHRBbGlnbkxhc3QgdGV4dEFsaWduTGFzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRBbGlnbkxhc3Q+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRBbGlnbkxhc3QpOyB9Ci0gICAg
VGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
SnVzdGlmeT4ocmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkpOyB9Ci0jZW5kaWYgLy8g
Q1NTM19URVhUCi0gICAgVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERlY29yYXRpb25TdHlsZT4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSk7IH0KLSAgICBUZXh0RGVjb3JhdGlv
blNraXAgdGV4dERlY29yYXRpb25Ta2lwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dERlY29yYXRpb25Ta2lwPihyYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXAp
OyB9Ci0gICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4ocmFyZUluaGVy
aXRlZERhdGEtPm1fdGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQogCiAgICAgY29uc3QgTGVuZ3Ro
JiB3b3JkU3BhY2luZygpIGNvbnN0OwogICAgIGZsb2F0IGxldHRlclNwYWNpbmcoKSBjb25zdDsK
IAotICAgIGZsb2F0IHpvb20oKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPm1fem9vbTsgfQotICAg
IGZsb2F0IGVmZmVjdGl2ZVpvb20oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
bV9lZmZlY3RpdmVab29tOyB9CisgICAgZmxvYXQgem9vbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
dWFsRGF0YS0+em9vbTsgfQorICAgIGZsb2F0IGVmZmVjdGl2ZVpvb20oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29tOyB9CiAgICAgCi0gICAgVGV4dFpv
b20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Wm9vbT4ocmFyZUlu
aGVyaXRlZERhdGEtPm1fdGV4dFpvb20pOyB9CisgICAgVGV4dFpvb20gdGV4dFpvb20oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Wm9vbT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFpvb20pOyB9CiAKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uKTsg
fQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VGV4dERpcmVjdGlvbj4obV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24pOyB9CiAgICAgYm9v
bCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uKCkgPT0g
TFRSOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKTsgfQorICAg
IGJvb2wgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbigpOyB9CiAKICAgICBjb25zdCBM
ZW5ndGgmIHNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBM
ZW5ndGggbGluZUhlaWdodCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IExlbmd0
aCYgbGluZUhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb21wdXRlZExp
bmVIZWlnaHQoKSBjb25zdDsKIAotICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4oaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9z
cGFjZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBhdXRvV3JhcChFV2hpdGVTcGFjZSB3cykKLSAgICB7
Ci0gICAgICAgIC8vIE5vd3JhcCBhbmQgcHJlIGRvbid0IGF1dG9tYXRpY2FsbHkgd3JhcC4KLSAg
ICAgICAgcmV0dXJuIHdzICE9IE5PV1JBUCAmJiB3cyAhPSBQUkU7Ci0gICAgfQorICAgIEVXaGl0
ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFj
ZT4obV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlKTsgfQorICAgIHN0YXRpYyBib29sIGF1dG9X
cmFwKEVXaGl0ZVNwYWNlKTsKKyAgICBib29sIGF1dG9XcmFwKCkgY29uc3QgeyByZXR1cm4gYXV0
b1dyYXAod2hpdGVTcGFjZSgpKTsgfQorICAgIHN0YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShF
V2hpdGVTcGFjZSk7CisgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBw
cmVzZXJ2ZU5ld2xpbmUod2hpdGVTcGFjZSgpKTsgfQorICAgIHN0YXRpYyBib29sIGNvbGxhcHNl
V2hpdGVTcGFjZShFV2hpdGVTcGFjZSk7CisgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBj
b25zdCB7IHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVTcGFjZSgpKTsgfQorICAgIGJv
b2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIpIGNvbnN0OworICAgIGJvb2wgYnJlYWtP
bmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgYm9vbCBicmVha1dvcmRzKCkgY29uc3Q7
CisKKyAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLnJlcGVh
dFgoKSk7IH0KKyAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5k
LnJlcGVhdFkoKSk7IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBiYWNrZ3JvdW5kQ29tcG9zaXRl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fYmFja2dy
b3VuZERhdGEtPmJhY2tncm91bmQuY29tcG9zaXRlKCkpOyB9CisgICAgRUZpbGxBdHRhY2htZW50
IGJhY2tncm91bmRBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxB
dHRhY2htZW50PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLmF0dGFjaG1lbnQoKSk7IH0K
KyAgICBFRmlsbEJveCBiYWNrZ3JvdW5kQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVGaWxsQm94PihtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5kLmNsaXAoKSk7IH0KKyAgICBF
RmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZp
bGxCb3g+KG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQub3JpZ2luKCkpOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kRGF0YS0+YmFja2dyb3VuZC54UG9zaXRpb24oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgYmFj
a2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tn
cm91bmQueVBvc2l0aW9uKCk7IH0KKyAgICBFRmlsbFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZERhdGEtPmJhY2tncm91bmQuc2l6ZVR5cGUo
KTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJhY2tncm91bmRTaXplTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YS0+YmFja2dyb3VuZC5zaXplTGVuZ3RoKCk7IH0KKyAg
ICBGaWxsTGF5ZXImIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKSB7IHJldHVybiBtX2JhY2tncm91
bmREYXRhLmFjY2VzcygpLmJhY2tncm91bmQ7IH0KKyAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tn
cm91bmRMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5iYWNrZ3JvdW5k
OyB9CisKKyAgICBTdHlsZUltYWdlKiBtYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5tYXNrLmltYWdlKCk7IH0KKyAgICBFRmlsbFJlcGVhdCBtYXNrUmVw
ZWF0WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFgoKSk7IH0KKyAgICBFRmlsbFJlcGVhdCBtYXNrUmVw
ZWF0WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXNrLnJlcGVhdFkoKSk7IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBt
YXNrQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0
b3I+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2suY29tcG9zaXRlKCkpOyB9CisgICAgRUZp
bGxCb3ggbWFza0NsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbEJveD4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay5jbGlwKCkpOyB9CisgICAgRUZpbGxCb3ggbWFza09y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94PihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5tYXNrLm9yaWdpbigpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFza1hQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2sueFBvc2l0
aW9uKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hc2tZUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrLnlQb3NpdGlvbigpOyB9CisgICAgRUZpbGxT
aXplVHlwZSBtYXNrU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXNrLnNpemVUeXBlKCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBtYXNrU2l6ZUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2suc2l6ZUxl
bmd0aCgpOyB9CisgICAgRmlsbExheWVyJiBlbnN1cmVNYXNrTGF5ZXJzKCkgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNrOyB9CisgICAgY29uc3QgRmlsbExheWVy
JiBtYXNrTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFz
azsgfQorICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2U7IH0KKyAgICBTdHlsZUlt
YWdlKiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tYXNrQm94SW1hZ2UuaW1hZ2UoKTsgfQorCisgICAgRUJvcmRlckNvbGxhcHNlIGJv
cmRlckNvbGxhcHNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckNvbGxhcHNl
PihtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlKTsgfQorICAgIGZsb2F0IGhvcml6b250
YWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CisgICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5n
KCkgY29uc3Q7CisgICAgRUVtcHR5Q2VsbCBlbXB0eUNlbGxzKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUVtcHR5Q2VsbD4obV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzKTsgfQorICAg
IEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVD
YXB0aW9uU2lkZT4obV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSk7IH0KIAotICAgIGJvb2wg
YXV0b1dyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF1dG9XcmFwKHdoaXRlU3Bh
Y2UoKSk7Ci0gICAgfQorICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obV9pbmhlcml0ZWRGbGFncy5saXN0
U3R5bGVUeXBlKTsgfQorICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHlsZUltYWdlKCkgY29uc3Q7Cisg
ICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVBvc2l0aW9uKTsgfQorCisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5Ub3AoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
YXJnaW5Cb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmJvdHRv
bSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm1hcmdpbi5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5yaWdodCgpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5k
RGF0YS0+bWFyZ2luLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
bWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmFmdGVy
KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5TdGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uc3RhcnQod3JpdGluZ01vZGUoKSwgZGly
ZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVy
biBtX3N1cnJvdW5kRGF0YS0+bWFyZ2luLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUq
IG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uc3RhcnQo
b3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJT
dHlsZSkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5lbmQob3RoZXJTdHls
ZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBtYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkg
Y29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5iZWZvcmUob3RoZXJTdHlsZS0+
d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyVXNpbmcoY29u
c3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5tYXJnaW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KKworICAgIGNvbnN0
IExlbmd0aEJveCYgcGFkZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5w
YWRkaW5nOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nVG9wKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJyb3VuZERhdGEtPnBhZGRpbmcudG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRp
bmdCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5ib3R0b20o
KTsgfQorICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiBtX3N1
cnJvdW5kRGF0YS0+cGFkZGluZy5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdS
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnJpZ2h0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+cGFkZGluZy5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5n
dGgmIHBhZGRpbmdBZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5n
LmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5zdGFydCh3cml0aW5nTW9k
ZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdFbmQoKSBjb25z
dCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGly
ZWN0aW9uKCkpOyB9CisKKyAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVDdXJzb3I+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yKTsgfQogCi0gICAgc3RhdGlj
IGJvb2wgcHJlc2VydmVOZXdsaW5lKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsKLSAgICAgICAgLy8g
Tm9ybWFsIGFuZCBub3dyYXAgZG8gbm90IHByZXNlcnZlIG5ld2xpbmVzLgotICAgICAgICByZXR1
cm4gd3MgIT0gTk9STUFMICYmIHdzICE9IE5PV1JBUDsKLSAgICB9CisjaWYgRU5BQkxFKENVUlNP
Ul9WSVNJQklMSVRZKQorICAgIEN1cnNvclZpc2liaWxpdHkgY3Vyc29yVmlzaWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclZpc2liaWxpdHk+KG1faW5oZXJpdGVkRmxh
Z3MuY3Vyc29yVmlzaWJpbGl0eSk7IH0KKyNlbmRpZgogCi0gICAgYm9vbCBwcmVzZXJ2ZU5ld2xp
bmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZXNlcnZlTmV3bGluZSh3aGl0ZVNw
YWNlKCkpOwotICAgIH0KKyAgICBDdXJzb3JMaXN0KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0YS5nZXQoKTsgfQogCi0gICAgc3RhdGljIGJv
b2wgY29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQotICAgIHsKLSAgICAgICAgLy8g
UHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgotICAgICAgICByZXR1
cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOwotICAgIH0KKyAgICBFSW5zaWRlTGluayBp
bnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUluc2lkZUxpbms+KG1faW5o
ZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0
dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rKCk7IH0KIAotICAgIGJvb2wgY29sbGFwc2VX
aGl0ZVNwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2xsYXBzZVdoaXRlU3Bh
Y2Uod2hpdGVTcGFjZSgpKTsKLSAgICB9CisgICAgYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uOyB9CiAK
LSAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVDaGFyIGMpIGNvbnN0Ci0gICAgewot
ICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAgIGNhc2UgJyAnOgotICAgICAgICAgICAg
Y2FzZSAnXHQnOgotICAgICAgICAgICAgICAgIHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2UoKTsK
LSAgICAgICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIXByZXNlcnZl
TmV3bGluZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAg
c2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+d2lkb3dz
OyB9CisgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPm9ycGhhbnM7IH0KKyAgICBib29sIGhhc0F1dG9XaWRvd3MoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVJbmhlcml0ZWREYXRhLT5oYXNBdXRvV2lkb3dzOyB9CisgICAgYm9vbCBoYXNBdXRvT3Jw
aGFucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmhhc0F1dG9PcnBoYW5z
OyB9CiAKLSAgICBib29sIGJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFBSRV9XUkFQIHx8IGxpbmVCcmVhaygpID09
IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZTsKLSAgICB9CisgICAgQnJlYWtJbnNpZGUgYnJlYWtJ
bnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0luc2lkZT4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YnJlYWtJbnNpZGUpOyB9CisgICAgQnJlYWtCZXR3ZWVuIGJyZWFrQmVm
b3JlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5icmVha0JlZm9yZSk7IH0KKyAgICBCcmVha0JldHdlZW4gYnJlYWtBZnRl
cigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrQmV0d2Vlbj4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YnJlYWtBZnRlcik7IH0KIAotICAgIGJvb2wgYnJlYWtXb3JkcygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gd29yZEJyZWFrKCkgPT0gQnJlYWtXb3JkQnJlYWsgfHwg
b3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dyYXA7Ci0gICAgfQotCi0gICAgRUZpbGxS
ZXBlYXQgYmFja2dyb3VuZFJlcGVhdFgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmls
bFJlcGVhdD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkucmVwZWF0WCgpKTsgfQotICAgIEVG
aWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnJlcGVhdFkoKSk7IH0KLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBiYWNrZ3JvdW5kQ29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0b3I+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgp
LmNvbXBvc2l0ZSgpKTsgfQotICAgIEVGaWxsQXR0YWNobWVudCBiYWNrZ3JvdW5kQXR0YWNobWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQXR0YWNobWVudD4obV9iYWNrZ3Jv
dW5kLT5iYWNrZ3JvdW5kKCkuYXR0YWNobWVudCgpKTsgfQotICAgIEVGaWxsQm94IGJhY2tncm91
bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3Vu
ZC0+YmFja2dyb3VuZCgpLmNsaXAoKSk7IH0KLSAgICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFj
a2dyb3VuZCgpLm9yaWdpbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFhQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnhQb3NpdGlv
bigpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueVBvc2l0aW9uKCk7IH0KLSAgICBFRmls
bFNpemVUeXBlIGJhY2tncm91bmRTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZC0+YmFja2dyb3VuZCgpLnNpemVUeXBlKCk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNr
Z3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3Vu
ZCgpLnNpemVMZW5ndGgoKTsgfQotICAgIEZpbGxMYXllciYgZW5zdXJlQmFja2dyb3VuZExheWVy
cygpIHsgcmV0dXJuIG1fYmFja2dyb3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kOyB9Ci0gICAg
Y29uc3QgRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihtX2Jh
Y2tncm91bmQtPmJhY2tncm91bmQoKSk7IH0KLQotICAgIFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaW1hZ2UoKTsgfQot
ICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sucmVwZWF0WCgpKTsgfQot
ICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sucmVwZWF0WSgpKTsgfQot
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1hc2tDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5j
b21wb3NpdGUoKSk7IH0KLSAgICBFRmlsbEJveCBtYXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVGaWxsQm94PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmNsaXAoKSk7
IH0KLSAgICBFRmlsbEJveCBtYXNrT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZpbGxCb3g+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sub3JpZ2luKCkpOyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiBtYXNrWFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay54UG9zaXRpb24oKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFza1lQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sueVBv
c2l0aW9uKCk7IH0KLSAgICBFRmlsbFNpemVUeXBlIG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suc2l6ZVR5cGUoKTsgfQotICAgIGNvbnN0
IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbWFzay5zaXplTGVuZ3RoKCk7IH0KLSAgICBGaWxsTGF5ZXImIGVuc3VyZU1h
c2tMYXllcnMoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNr
OyB9Ci0gICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrKTsgfQotICAgIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9t
YXNrQm94SW1hZ2U7IH0KLSAgICBTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2VTb3VyY2UoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaW1hZ2UoKTsg
fQotIAotICAgIEVCb3JkZXJDb2xsYXBzZSBib3JkZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3JkZXJDb2xsYXBzZT4oaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29s
bGFwc2UpOyB9Ci0gICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25zdDsKLSAg
ICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdDsKLSAgICBFRW1wdHlDZWxsIGVt
cHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRW1wdHlDZWxsPihpbmhlcml0
ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzKTsgfQotICAgIEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lkZT4oaW5oZXJpdGVkX2ZsYWdz
Ll9jYXB0aW9uX3NpZGUpOyB9Ci0KLSAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KGluaGVyaXRlZF9mbGFn
cy5fbGlzdF9zdHlsZV90eXBlKTsgfQotICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHlsZUltYWdlKCkg
Y29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihpbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfcG9zaXRpb24pOyB9Ci0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4udG9wKCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYm90dG9t
KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+bWFyZ2luLmxlZnQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luUmlnaHQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnJpZ2h0KCk7IH0KLSAgICBjb25zdCBMZW5n
dGgmIG1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYmVmb3Jl
KHdyaXRpbmdNb2RlKCkpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5BZnRlcigpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAgICBj
b25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdp
bi5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgm
IG1hcmdpbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uZW5kKHdyaXRpbmdN
b2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luU3RhcnRVc2lu
Zyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
Pm1hcmdpbi5zdGFydChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJl
Y3Rpb24oKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRl
clN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZChv
dGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAg
ICBjb25zdCBMZW5ndGgmIG1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhl
clN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJlZm9yZShvdGhlclN0eWxl
LT53cml0aW5nTW9kZSgpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXJVc2luZyhj
b25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5hZnRlcihvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQotCi0gICAgY29uc3QgTGVu
Z3RoQm94JiBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmc7IH0K
LSAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdUb3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
cGFkZGluZy50b3AoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0JvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJvdHRvbSgpOyB9Ci0gICAgY29uc3QgTGVuZ3Ro
JiBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmxlZnQoKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ1JpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcucmlnaHQoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0JlZm9yZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsg
fQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHBh
ZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLnN0YXJ0KHdyaXRp
bmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQotICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJl
Y3Rpb24oKSk7IH0KLQotICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9Ci0jaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIEN1cnNvclZpc2liaWxpdHkgY3Vyc29yVmlzaWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclZpc2liaWxpdHk+KGluaGVy
aXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkpOyB9Ci0jZW5kaWYKLQotICAgIEN1cnNvckxp
c3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0
YS5nZXQoKTsgfQotCi0gICAgRUluc2lkZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPihpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmspOyB9
Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaXNM
aW5rKCk7IH0KLQotICAgIGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVsdEJ1dHRvbjsgfQotCi0gICAgc2hvcnQgd2lk
b3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPndpZG93czsgfQotICAgIHNo
b3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+b3JwaGFuczsg
fQotICAgIGJvb2wgaGFzQXV0b1dpZG93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2hhc0F1dG9XaWRvd3M7IH0KLSAgICBib29sIGhhc0F1dG9PcnBoYW5zKCkgY29uc3Qg
eyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPm1faGFzQXV0b09ycGhhbnM7IH0KLQotICAgIC8v
IENTUzMgR2V0dGVyIE1ldGhvZHMKLSAgICBCcmVha0luc2lkZSBicmVha0luc2lkZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJyZWFrSW5zaWRlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9icmVha0luc2lkZSk7IH0KLSAgICBCcmVha0JldHdlZW4gYnJlYWtCZWZvcmUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxCcmVha0JldHdlZW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2JyZWFrQmVmb3JlKTsgfQotICAgIEJyZWFrQmV0d2VlbiBicmVha0FmdGVyKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QnJlYWtCZXR3ZWVuPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9i
cmVha0FmdGVyKTsgfQotICAgIAotICAgIEhhbmdpbmdQdW5jdHVhdGlvbiBoYW5naW5nUHVuY3R1
YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5naW5nUHVuY3R1YXRpb24+KHJh
cmVJbmhlcml0ZWREYXRhLT5tX2hhbmdpbmdQdW5jdHVhdGlvbik7IH0KKyAgICBIYW5naW5nUHVu
Y3R1YXRpb24gaGFuZ2luZ1B1bmN0dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
SGFuZ2luZ1B1bmN0dWF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT5oYW5naW5nUHVuY3R1YXRp
b24pOyB9CiAKICAgICBmbG9hdCBvdXRsaW5lT2Zmc2V0KCkgY29uc3Q7Ci0gICAgY29uc3QgU2hh
ZG93RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U2hhZG93LmdldCgpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hhZG93RXh0ZW50KExheW91dFVu
aXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5p
dCYgbGVmdCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQodGV4dFNoYWRvdygpLCB0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQpOyB9Ci0gICAgdm9pZCBnZXRUZXh0U2hhZG93SG9yaXpvbnRhbEV4dGVu
dChMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3QgeyBnZXRTaGFkb3dI
b3Jpem9udGFsRXh0ZW50KHRleHRTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgdm9pZCBn
ZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQoTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBi
b3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQodGV4dFNoYWRvdygpLCB0b3As
IGJvdHRvbSk7IH0KKyAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNoYWRvdy5nZXQoKTsgfQogICAgIHZvaWQg
Z2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsTGVm
dCwgTGF5b3V0VW5pdCYgbG9naWNhbFJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0lubGluZURpcmVj
dGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpOyB9CiAg
ICAgdm9pZCBnZXRUZXh0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9j
a0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
OyB9CiAKLSAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZVdpZHRoOyB9Ci0gICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29wYWNpdHk7IH0KLSAgICBDb250cm9s
UGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udHJvbFBhcnQ+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9Ci0gICAgQXNwZWN0UmF0aW9U
eXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFzcGVjdFJh
dGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9UeXBlKTsgfQotICAg
IGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gYXNwZWN0UmF0aW9OdW1lcmF0b3Io
KSAvIGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKTsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvRGVu
b21pbmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RS
YXRpb0Rlbm9taW5hdG9yOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb051bWVyYXRvcjsg
fQotICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQm94QWxpZ25tZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGli
bGVCb3gtPmFsaWduKTsgfQotICAgIEVCb3hEaXJlY3Rpb24gYm94RGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9ib3hf
ZGlyZWN0aW9uKTsgfQotICAgIGZsb2F0IGJveEZsZXgoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmZsZXg7IH0KLSAgICB1bnNp
Z25lZCBpbnQgYm94RmxleEdyb3VwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4X2dyb3VwOyB9Ci0gICAgRUJveExpbmVz
IGJveExpbmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveExpbmVzPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmxpbmVzKTsgfQotICAgIHVu
c2lnbmVkIGludCBib3hPcmRpbmFsR3JvdXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPm9yZGluYWxfZ3JvdXA7IH0KLSAgICBF
Qm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmll
bnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JpZW50
KTsgfQotICAgIEVCb3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
Qm94UGFjaz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5w
YWNrKTsgfQotCi0gICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fb3JkZXI7IH0KLSAgICBmbG9hdCBmbGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhHcm93OyB9Ci0gICAgZmxv
YXQgZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zs
ZXhpYmxlQm94LT5tX2ZsZXhTaHJpbms7IH0KLSAgICBjb25zdCBMZW5ndGgmIGZsZXhCYXNpcygp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2Zs
ZXhCYXNpczsgfQotICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGFsaWduQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVu
dDsgfQotICAgIENvbnRlbnRQb3NpdGlvbiBhbGlnbkNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudC5wb3NpdGlvbigpOyB9
Ci0gICAgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgYWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50LmRpc3Ry
aWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25Db250ZW50T3ZlcmZsb3dB
bGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNv
bnRlbnQub3ZlcmZsb3coKTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFs
aWduSXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0
ZW1zOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGFsaWduSXRlbXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMucG9zaXRpb24oKTsgfQotICAg
IE92ZXJmbG93QWxpZ25tZW50IGFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMub3ZlcmZsb3coKTsgfQot
ICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWduU2VsZigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZjsgfQotICAgIEl0ZW1Qb3NpdGlv
biBhbGlnblNlbGZQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduU2VsZi5wb3NpdGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25T
ZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9hbGlnblNlbGYub3ZlcmZsb3coKTsgfQotICAgIEVGbGV4RGlyZWN0aW9uIGZsZXhEaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxleERpcmVjdGlvbj4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleERpcmVjdGlvbik7IH0KKyAgICBm
bG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U3Ryb2tlV2lkdGg7IH0KKyAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsgfQorICAgIENvbnRyb2xQYXJ0IGFwcGVh
cmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFydD4obV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YXBwZWFyYW5jZSk7IH0KKyAgICBBc3BlY3RSYXRpb1R5cGUgYXNwZWN0
UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXNwZWN0UmF0aW9UeXBlPiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hc3BlY3RSYXRpb1R5cGUpOyB9CisgICAgZmxvYXQgYXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmFzcGVjdFJhdGlvRGVub21pbmF0b3I7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFzcGVjdFJhdGlv
TnVtZXJhdG9yOyB9CisgICAgRUJveEFsaWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3hBbGlnbm1lbnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24pOyB9CisgICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94RGlyZWN0aW9uPihtX2luaGVyaXRl
ZEZsYWdzLmJveERpcmVjdGlvbik7IH0KKyAgICBmbG9hdCBib3hGbGV4KCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9
CisgICAgdW5zaWduZWQgYm94RmxleEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4R3JvdXA7IH0KKyAgICBFQm94
TGluZXMgYm94TGluZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94TGluZXM+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+bGluZXMpOyB9Cisg
ICAgdW5zaWduZWQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5vcmRpbmFsR3JvdXA7IH0KKyAgICBF
Qm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmll
bnQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmRlcHJlY2F0ZWRGbGV4aWJsZUJveC0+b3JpZW50
KTsgfQorICAgIEVCb3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
Qm94UGFjaz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5w
YWNrKTsgfQorCisgICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3JkZXI7IH0KKyAgICBmbG9hdCBmbGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4R3JvdzsgfQorICAgIGZsb2F0
IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5mbGV4
aWJsZUJveC0+ZmxleFNocmluazsgfQorICAgIGNvbnN0IExlbmd0aCYgZmxleEJhc2lzKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXhCYXNp
czsgfQorICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGFsaWduQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFsaWduQ29udGVudDsgfQor
ICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGFsaWduSXRlbXMoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbGlnbkl0ZW1zOyB9CisgICAgY29uc3QgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxmKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+YWxpZ25TZWxmOyB9CisgICAgRUZsZXhEaXJlY3Rpb24gZmxleERpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4RGlyZWN0aW9uPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+ZmxleERpcmVjdGlvbik7IH0KICAgICBib29s
IGlzQ29sdW1uRmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZsZXhEaXJlY3Rpb24oKSA9
PSBGbG93Q29sdW1uIHx8IGZsZXhEaXJlY3Rpb24oKSA9PSBGbG93Q29sdW1uUmV2ZXJzZTsgfQog
ICAgIGJvb2wgaXNSZXZlcnNlRmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZsZXhEaXJl
Y3Rpb24oKSA9PSBGbG93Um93UmV2ZXJzZSB8fCBmbGV4RGlyZWN0aW9uKCkgPT0gRmxvd0NvbHVt
blJldmVyc2U7IH0KLSAgICBFRmxleFdyYXAgZmxleFdyYXAoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFRmxleFdyYXA+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5t
X2ZsZXhXcmFwKTsgfQotICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGp1c3Rp
ZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eUNvbnRlbnQ7IH0KLSAgICBDb250ZW50UG9zaXRpb24ganVzdGlmeUNvbnRlbnRQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50LnBv
c2l0aW9uKCk7IH0KLSAgICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBqdXN0aWZ5Q29udGVudERp
c3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3Rp
ZnlDb250ZW50LmRpc3RyaWJ1dGlvbigpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlm
eUNvbnRlbnRPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50Lm92ZXJmbG93KCk7IH0KLSAgICBjb25zdCBTdHlsZVNl
bGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXM7IH0KLSAgICBJdGVtUG9zaXRpb24ganVzdGlmeUl0
ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0
aWZ5SXRlbXMucG9zaXRpb24oKTsgfQotICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlJdGVt
c092ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fanVzdGlmeUl0ZW1zLm92ZXJmbG93KCk7IH0KLSAgICBJdGVtUG9zaXRpb25UeXBlIGp1c3Rp
ZnlJdGVtc1Bvc2l0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2p1c3RpZnlJdGVtcy5wb3NpdGlvblR5cGUoKTsgfQotICAgIGNvbnN0IFN0eWxlU2VsZkFs
aWdubWVudERhdGEmIGp1c3RpZnlTZWxmKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fanVzdGlmeVNlbGY7IH0KLSAgICBJdGVtUG9zaXRpb24ganVzdGlmeVNlbGZQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxm
LnBvc2l0aW9uKCk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5U2VsZk92ZXJmbG93
QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eVNlbGYub3ZlcmZsb3coKTsgfQorICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGli
bGVCb3gtPmZsZXhXcmFwKTsgfQorICAgIGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEm
IGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
anVzdGlmeUNvbnRlbnQ7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0
aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5qdXN0aWZ5
SXRlbXM7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5U2VsZigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmp1c3RpZnlTZWxmOyB9CiAK
ICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgZ3JpZENvbHVtbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQt
Pm1fZ3JpZFJvd3M7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRv
UmVwZWF0Q29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWQtPm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFj
a1NpemU+JiBncmlkQXV0b1JlcGVhdFJvd3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvUmVwZWF0Um93czsgfQotICAgIHVuc2lnbmVkIGdy
aWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50
OyB9Ci0gICAgdW5zaWduZWQgZ3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdENvbHVt
bnNUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1f
YXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9Ci0gICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBl
YXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2F1dG9SZXBlYXRSb3dzVHlwZTsgfQotICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBu
YW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRM
aW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkLT5tX25hbWVkR3JpZFJvd0xpbmVzOyB9Ci0gICAgY29uc3QgT3JkZXJl
ZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRD
b2x1bW5MaW5lczsgfQotICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdy
aWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29s
dW1uTGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVk
R3JpZFJvd0xpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlk
TGluZXNNYXAmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXM7IH0KLSAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRB
cmVhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1l
ZEdyaWRBcmVhOyB9Ci0gICAgc2l6ZV90IG5hbWVkR3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYVJvd0Nv
dW50OyB9Ci0gICAgc2l6ZV90IG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50OyB9Ci0gICAgR3JpZEF1dG9GbG93IGdyaWRBdXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9n
cmlkQXV0b0Zsb3cpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJvdygpIGNv
bnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxv
dyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRv
Rmxvd0RpcmVjdGlvbkNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1
bW4pOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSgpIGNvbnN0IHsg
cmV0dXJuIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRBdXRvRmxvdyAmIElu
dGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UpOyB9Ci0gICAgYm9vbCBpc0dyaWRBdXRvRmxv
d0FsZ29yaXRobURlbnNlKCkgY29uc3QgeyByZXR1cm4gKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fZ3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlKTsg
fQotICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9Db2x1bW5zKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0b0NvbHVt
bnM7IH0KLSAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUm93cygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9Sb3dz
OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBncmlkQ29sdW1uR2FwKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uR2FwOyB9Ci0gICAgY29uc3Qg
TGVuZ3RoJiBncmlkUm93R2FwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9ncmlkUm93R2FwOyB9Ci0KLQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3Jp
ZEl0ZW1Db2x1bW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWRJdGVtLT5tX2dyaWRDb2x1bW5TdGFydDsgfQotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYg
Z3JpZEl0ZW1Db2x1bW5FbmQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uRW5kOyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBn
cmlkSXRlbVJvd1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Z3JpZEl0ZW0tPm1fZ3JpZFJvd1N0YXJ0OyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlk
SXRlbVJvd0VuZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJ
dGVtLT5tX2dyaWRSb3dFbmQ7IH0KLSNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAq
LwotCi0gICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmdyaWQtPmdyaWRDb2x1bW5zOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRU
cmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmdyaWQtPmdyaWRSb3dzOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBn
cmlkQXV0b1JlcGVhdENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5ncmlkLT5ncmlkQXV0b1JlcGVhdENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Um93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvUmVwZWF0Um93czsgfQorICAgIHVuc2lnbmVk
IGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2lu
dDsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdFJvd3NJ
bnNlcnRpb25Qb2ludDsgfQorICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1u
c1R5cGUoKSBjb25zdCAgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0
b1JlcGVhdENvbHVtbnNUeXBlOyB9CisgICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRS
b3dzVHlwZSgpIGNvbnN0ICB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5h
dXRvUmVwZWF0Um93c1R5cGU7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRH
cmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkLT5uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFw
JiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmdyaWQtPm5hbWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3Jp
ZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7
IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPm9y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBh
dXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5ncmlkLT5hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAg
ICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE5h
bWVkR3JpZFJvd0xpbmVzOyB9CisgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBh
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+YXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1
bW5MaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWQtPmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KKyAg
ICBjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bmFtZWRHcmlkQXJlYTsgfQorICAgIHNpemVf
dCBuYW1lZEdyaWRBcmVhUm93Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5uYW1lZEdyaWRBcmVhUm93Q291bnQ7IH0KKyAgICBzaXplX3QgbmFtZWRH
cmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+Z3JpZC0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9CisgICAgR3JpZEF1dG9GbG93IGdy
aWRBdXRvRmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93KTsgfQorICAgIGJvb2wgaXNH
cmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSBjb25zdCB7IHJldHVybiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJv
dyk7IH0KKyAgICBib29sIGlzR3JpZEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVy
bmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4pOyB9CisgICAgYm9vbCBpc0dyaWRBdXRvRmxvd0Fs
Z29yaXRobVNwYXJzZSgpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlKTsgfQor
ICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpIGNvbnN0IHsgcmV0dXJuICht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9G
bG93QWxnb3JpdGhtRGVuc2UpOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBn
cmlkQXV0b0NvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkLT5ncmlkQXV0b0NvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGdyaWRBdXRvUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPmdyaWRBdXRvUm93czsgfQorICAgIGNvbnN0IExlbmd0aCYgZ3JpZENvbHVtbkdhcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPmdyaWRDb2x1bW5HYXA7
IH0KKyAgICBjb25zdCBMZW5ndGgmIGdyaWRSb3dHYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkUm93R2FwOyB9CisKKyAgICBjb25zdCBHcmlkUG9z
aXRpb24mIGdyaWRJdGVtQ29sdW1uU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5ncmlkSXRlbS0+Z3JpZENvbHVtblN0YXJ0OyB9CisgICAgY29uc3QgR3JpZFBv
c2l0aW9uJiBncmlkSXRlbUNvbHVtbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWRJdGVtLT5ncmlkQ29sdW1uRW5kOyB9CisgICAgY29uc3QgR3JpZFBvc2l0
aW9uJiBncmlkSXRlbVJvd1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+Z3JpZEl0ZW0tPmdyaWRSb3dTdGFydDsgfQorICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYg
Z3JpZEl0ZW1Sb3dFbmQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5n
cmlkSXRlbS0+Z3JpZFJvd0VuZDsgfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
CisKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5ib3hTaGFkb3cuZ2V0KCk7IH0KICAgICB2b2lkIGdldEJveFNo
YWRvd0V4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0
JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0IHsgZ2V0U2hhZG93RXh0ZW50KGJveFNo
YWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOyB9CiAgICAgTGF5b3V0Qm94RXh0ZW50
IGdldEJveFNoYWRvd0luc2V0RXh0ZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0U2hhZG93SW5zZXRF
eHRlbnQoYm94U2hhZG93KCkpOyB9CiAgICAgdm9pZCBnZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0
ZW50KExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRv
d0hvcml6b250YWxFeHRlbnQoYm94U2hhZG93KCksIGxlZnQsIHJpZ2h0KTsgfQpAQCAtOTk3LDEz
NiArNTYyLDEzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCb3hTaGFkb3dCbG9ja0RpcmVjdGlv
bkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9t
KSBjb25zdCB7IGdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KGJveFNoYWRvdygpLCBsb2dp
Y2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElP
Tl9CUkVBSykKLSAgICBFQm94RGVjb3JhdGlvbkJyZWFrIGJveERlY29yYXRpb25CcmVhaygpIGNv
bnN0IHsgcmV0dXJuIG1fYm94LT5ib3hEZWNvcmF0aW9uQnJlYWsoKTsgfQorICAgIEVCb3hEZWNv
cmF0aW9uQnJlYWsgYm94RGVjb3JhdGlvbkJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRh
LT5ib3hEZWNvcmF0aW9uQnJlYWsoKTsgfQogI2VuZGlmCi0gICAgU3R5bGVSZWZsZWN0aW9uKiBi
b3hSZWZsZWN0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94UmVm
bGVjdC5nZXQoKTsgfQotICAgIEVCb3hTaXppbmcgYm94U2l6aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9ib3gtPmJveFNpemluZygpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBtYXJxdWVlSW5jcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+aW5jcmVt
ZW50OyB9Ci0gICAgaW50IG1hcnF1ZWVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX21hcnF1ZWUtPnNwZWVkOyB9Ci0gICAgaW50IG1hcnF1ZWVMb29wQ291bnQo
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5sb29wczsg
fQotICAgIEVNYXJxdWVlQmVoYXZpb3IgbWFycXVlZUJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RU1hcnF1ZWVCZWhhdmlvcj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFy
cXVlZS0+YmVoYXZpb3IpOyB9Ci0gICAgRU1hcnF1ZWVEaXJlY3Rpb24gbWFycXVlZURpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVlRGlyZWN0aW9uPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tYXJxdWVlLT5kaXJlY3Rpb24pOyB9Ci0gICAgRVVzZXJNb2RpZnkg
dXNlck1vZGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyTW9kaWZ5PihyYXJl
SW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSk7IH0KLSAgICBFVXNlckRyYWcgdXNlckRyYWcoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlckRyYWc+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT51c2VyRHJhZyk7IH0KLSAgICBFVXNlclNlbGVjdCB1c2VyU2VsZWN0KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KHJhcmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0
KTsgfQotICAgIFRleHRPdmVyZmxvdyB0ZXh0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0T3ZlcmZsb3c+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cp
OyB9Ci0gICAgRU1hcmdpbkNvbGxhcHNlIG1hcmdpbkJlZm9yZUNvbGxhcHNlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcmdpbkNvbGxhcHNlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFyZ2luQmVmb3JlQ29sbGFwc2UpOyB9Ci0gICAgRU1hcmdpbkNvbGxhcHNlIG1hcmdpbkFmdGVy
Q29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlKTsgfQotICAgIEVXb3JkQnJl
YWsgd29yZEJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdvcmRCcmVhaz4ocmFy
ZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayk7IH0KLSAgICBFT3ZlcmZsb3dXcmFwIG92ZXJmbG93
V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvd1dyYXA+KHJhcmVJbmhl
cml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9Ci0gICAgRU5CU1BNb2RlIG5ic3BNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BNb2RlPihyYXJlSW5oZXJpdGVkRGF0YS0+bmJz
cE1vZGUpOyB9Ci0gICAgTGluZUJyZWFrIGxpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PExpbmVCcmVhaz4ocmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayk7IH0KLSAgICBI
eXBoZW5zIGh5cGhlbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIeXBoZW5zPihyYXJl
SW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7IH0KLSAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVm
b3JlKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRC
ZWZvcmU7IH0KLSAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSBjb25zdCB7IHJldHVy
biByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyOyB9Ci0gICAgc2hvcnQg
aHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVu
YXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRp
b25TdHJpbmc7IH0KKworICAgIFN0eWxlUmVmbGVjdGlvbiogYm94UmVmbGVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJveFJlZmxlY3QuZ2V0KCk7IH0KKyAgICBF
Qm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+Ym94U2l6aW5n
KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcnF1ZWVJbmNyZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5pbmNyZW1lbnQ7IH0KKyAgICBpbnQg
bWFycXVlZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFy
cXVlZS0+c3BlZWQ7IH0KKyAgICBpbnQgbWFycXVlZUxvb3BDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmxvb3BzOyB9CisgICAgRU1hcnF1ZWVC
ZWhhdmlvciBtYXJxdWVlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFy
cXVlZUJlaGF2aW9yPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5iZWhhdmlvcik7
IH0KKyAgICBFTWFycXVlZURpcmVjdGlvbiBtYXJxdWVlRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RU1hcnF1ZWVEaXJlY3Rpb24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hcnF1ZWUtPmRpcmVjdGlvbik7IH0KKyAgICBFVXNlck1vZGlmeSB1c2VyTW9kaWZ5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJNb2RpZnk+KG1fcmFyZUluaGVyaXRlZERhdGEt
PnVzZXJNb2RpZnkpOyB9CisgICAgRVVzZXJEcmFnIHVzZXJEcmFnKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVVzZXJEcmFnPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyk7
IH0KKyAgICBFVXNlclNlbGVjdCB1c2VyU2VsZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVVzZXJTZWxlY3Q+KG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QpOyB9CisgICAg
VGV4dE92ZXJmbG93IHRleHRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRPdmVyZmxvdz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KTsgfQorICAg
IEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5CZWZvcmVDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QmVmb3JlQ29sbGFwc2UpOyB9CisgICAgRU1hcmdpbkNvbGxhcHNlIG1hcmdpbkFmdGVyQ29sbGFw
c2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFyZ2luQ29sbGFwc2U+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UpOyB9CisgICAgRVdvcmRCcmVhayB3
b3JkQnJlYWsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV29yZEJyZWFrPihtX3JhcmVJ
bmhlcml0ZWREYXRhLT53b3JkQnJlYWspOyB9CisgICAgRU92ZXJmbG93V3JhcCBvdmVyZmxvd1dy
YXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFT3ZlcmZsb3dXcmFwPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5vdmVyZmxvd1dyYXApOyB9CisgICAgRU5CU1BNb2RlIG5ic3BNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5CU1BNb2RlPihtX3JhcmVJbmhlcml0ZWREYXRhLT5u
YnNwTW9kZSk7IH0KKyAgICBMaW5lQnJlYWsgbGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TGluZUJyZWFrPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWspOyB9Cisg
ICAgSHlwaGVucyBoeXBoZW5zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SHlwaGVucz4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucyk7IH0KKyAgICBzaG9ydCBoeXBoZW5hdGlvbkxp
bWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRp
b25MaW1pdEJlZm9yZTsgfQorICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRBZnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcjsgfQor
ICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
KCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7IH0KLSAgICBFQm9y
ZGVyRml0IGJvcmRlckZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCk7IH0KLSAgICBFUmVzaXplIHJlc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVSZXNpemU+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3Jlc2l6ZSk7IH0KLSAgICBDb2x1bW5BeGlzIGNvbHVtbkF4aXMoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxDb2x1bW5BeGlzPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0
aUNvbC0+bV9heGlzKTsgfQotICAgIGJvb2wgaGFzSW5saW5lQ29sdW1uQXhpcygpIGNvbnN0IHsK
LSAgICAgICAgQ29sdW1uQXhpcyBheGlzID0gY29sdW1uQXhpcygpOwotICAgICAgICByZXR1cm4g
YXhpcyA9PSBBdXRvQ29sdW1uQXhpcyB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IChh
eGlzID09IEhvcml6b250YWxDb2x1bW5BeGlzKTsKLSAgICB9Ci0gICAgQ29sdW1uUHJvZ3Jlc3Np
b24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5Q
cm9ncmVzc2lvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fcHJvZ3Jlc3Np
b24pOyB9Ci0gICAgZmxvYXQgY29sdW1uV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV93aWR0aDsgfQotICAgIGJvb2wgaGFzQXV0b0NvbHVt
bldpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wt
Pm1fYXV0b1dpZHRoOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgY29sdW1uQ291bnQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9jb3VudDsgfQotICAg
IGJvb2wgaGFzQXV0b0NvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbXVsdGlDb2wtPm1fYXV0b0NvdW50OyB9CisgICAgRUJvcmRlckZpdCBib3JkZXJG
aXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyRml0PihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CisgICAgRVJlc2l6ZSByZXNpemUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFUmVzaXplPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUp
OyB9CisgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9
CisgICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3Q7CisgICAgQ29sdW1uUHJvZ3Jl
c3Npb24gY29sdW1uUHJvZ3Jlc3Npb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1
bW5Qcm9ncmVzc2lvbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnByb2dyZXNz
aW9uKTsgfQorICAgIGZsb2F0IGNvbHVtbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPndpZHRoOyB9CisgICAgYm9vbCBoYXNBdXRvQ29sdW1u
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+
YXV0b1dpZHRoOyB9CisgICAgdW5zaWduZWQgc2hvcnQgY29sdW1uQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+Y291bnQ7IH0KKyAgICBib29s
IGhhc0F1dG9Db2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPm11bHRpQ29sLT5hdXRvQ291bnQ7IH0KICAgICBib29sIHNwZWNpZmllc0NvbHVtbnMoKSBj
b25zdCB7IHJldHVybiAhaGFzQXV0b0NvbHVtbkNvdW50KCkgfHwgIWhhc0F1dG9Db2x1bW5XaWR0
aCgpIHx8ICFoYXNJbmxpbmVDb2x1bW5BeGlzKCk7IH0KLSAgICBDb2x1bW5GaWxsIGNvbHVtbkZp
bGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5GaWxsPihyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9maWxsKTsgfQotICAgIGZsb2F0IGNvbHVtbkdhcCgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX2dhcDsgfQot
ICAgIGJvb2wgaGFzTm9ybWFsQ29sdW1uR2FwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fbm9ybWFsR2FwOyB9Ci0gICAgRUJvcmRlclN0eWxlIGNv
bHVtblJ1bGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211
bHRpQ29sLT5tX3J1bGUuc3R5bGUoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGNvbHVtblJ1bGVX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5y
dWxlV2lkdGgoKTsgfQotICAgIGJvb2wgY29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9ydWxlLmlzVHJhbnNw
YXJlbnQoKTsgfQotICAgIENvbHVtblNwYW4gY29sdW1uU3BhbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbHVtblNwYW4+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5t
X2NvbHVtblNwYW4pOyB9Ci0KLSAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1f
b3BlcmF0aW9uczsgfQotICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV94OyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3k7IH0KLSAgICBmbG9hdCB0cmFuc2Zvcm1Pcmln
aW5aKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5t
X3o7IH0KLSAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0
eSgpOyB9Ci0KLSAgICBUZXh0RW1waGFzaXNGaWxsIHRleHRFbXBoYXNpc0ZpbGwoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNGaWxsPihyYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEVtcGhhc2lzRmlsbCk7IH0KKyAgICBDb2x1bW5GaWxsIGNvbHVtbkZpbGwoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5GaWxsPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5t
dWx0aUNvbC0+ZmlsbCk7IH0KKyAgICBmbG9hdCBjb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+Z2FwOyB9CisgICAgYm9vbCBoYXNOb3Jt
YWxDb2x1bW5HYXAoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0
aUNvbC0+bm9ybWFsR2FwOyB9CisgICAgRUJvcmRlclN0eWxlIGNvbHVtblJ1bGVTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5ydWxlLnN0eWxl
KCk7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBjb2x1bW5SdWxlV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cnVsZVdpZHRoKCk7IH0KKyAgICBi
b29sIGNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bXVsdGlDb2wtPnJ1bGUuaXNUcmFuc3BhcmVudCgpOyB9CisgICAgQ29sdW1u
U3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uU3Bhbj4o
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvbHVtblNwYW4pOyB9CisKKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBM
ZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50cmFuc2Zvcm0tPng7IH0KKyAgICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdp
blkoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPnk7
IH0KKyAgICBmbG9hdCB0cmFuc2Zvcm1PcmlnaW5aKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT56OyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KKworICAgIFRleHRFbXBoYXNpc0ZpbGwgdGV4
dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc0Zp
bGw+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwpOyB9CiAgICAgVGV4dEVt
cGhhc2lzTWFyayB0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRFbXBoYXNpc0N1c3RvbU1hcms7IH0KLSAgICBUZXh0RW1waGFzaXNQb3NpdGlv
biB0ZXh0RW1waGFzaXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRF
bXBoYXNpc1Bvc2l0aW9uPihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24p
OyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyazsg
fQorICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRleHRFbXBoYXNpc1Bvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEVtcGhhc2lzUG9zaXRpb24+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uKTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0OwogCi0gICAgUnVieVBvc2l0aW9uIHJ1YnlQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQb3NpdGlvbj4ocmFyZUlu
aGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uKTsgfQorICAgIFJ1YnlQb3NpdGlvbiBydWJ5UG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSdWJ5UG9zaXRpb24+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPnJ1YnlQb3NpdGlvbik7IH0KIAotICAgIFRleHRPcmllbnRhdGlvbiB0ZXh0
T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3JpZW50YXRpb24+
KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbik7IH0KKyAgICBUZXh0T3JpZW50
YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9y
aWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24pOyB9CiAKLSAg
ICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0
Rml0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vYmplY3RGaXQpOyB9Ci0gICAgTGVuZ3RoUG9p
bnQgb2JqZWN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9vYmplY3RQb3NpdGlvbjsgfQorICAgIE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVj
dEZpdCk7IH0KKyAgICBMZW5ndGhQb2ludCBvYmplY3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdFBvc2l0aW9uOyB9CiAKICAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiBhbnkgdHJhbnNmb3JtIHJlbGF0ZWQgcHJvcGVydHkgKGN1cnJlbnRseSB0cmFu
c2Zvcm0sIHRyYW5zZm9ybVN0eWxlM0Qgb3IgcGVyc3BlY3RpdmUpCi0gICAgLy8gaW5kaWNhdGVz
IHRoYXQgd2UgYXJlIHRyYW5zZm9ybWluZworICAgIC8vIGluZGljYXRlcyB0aGF0IHdlIGFyZSB0
cmFuc2Zvcm1pbmcuCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSBjb25z
dCB7IHJldHVybiBoYXNUcmFuc2Zvcm0oKSB8fCBwcmVzZXJ2ZXMzRCgpIHx8IGhhc1BlcnNwZWN0
aXZlKCk7IH0KIAogICAgIGVudW0gQXBwbHlUcmFuc2Zvcm1PcmlnaW4geyBJbmNsdWRlVHJhbnNm
b3JtT3JpZ2luLCBFeGNsdWRlVHJhbnNmb3JtT3JpZ2luIH07CiAgICAgdm9pZCBhcHBseVRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IEFwcGx5VHJhbnNmb3JtT3JpZ2luID0gSW5jbHVkZVRyYW5zZm9ybU9yaWdpbikgY29uc3Q7CiAg
ICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwogCi0gICAgYm9vbCBoYXNNYXNr
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5oYXNJbWFnZSgp
IHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9Cisg
ICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bWFzay5oYXNJbWFnZSgpIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2tCb3hJbWFnZS5o
YXNJbWFnZSgpOyB9CiAKLSAgICBUZXh0Q29tYmluZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0
Q29tYmluZSk7IH0KKyAgICBUZXh0Q29tYmluZSB0ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0Q29t
YmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gdGV4dENv
bWJpbmUoKSAhPSBUZXh0Q29tYmluZU5vbmU7IH0KIAotICAgIHVuc2lnbmVkIHRhYlNpemUoKSBj
b25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV90YWJTaXplOyB9CisgICAgdW5zaWdu
ZWQgdGFiU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhYlNpemU7
IH0KIAogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIAotICAgIGJvb2wgaGFzRmxvd0ludG8oKSBj
b25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1RocmVhZC5pc051bGwo
KTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQ7IH0KLSAgICBib29sIGhhc0Zsb3dG
cm9tKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvblRocmVh
ZC5pc051bGwoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uVGhyZWFkOyB9Ci0gICAg
UmVnaW9uRnJhZ21lbnQgcmVnaW9uRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxSZWdpb25GcmFnbWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uRnJhZ21lbnQp
OyB9CisgICAgYm9vbCBoYXNGbG93SW50bygpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5mbG93VGhyZWFkLmlzTnVsbCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmxv
d1RocmVhZDsgfQorICAgIGJvb2wgaGFzRmxvd0Zyb20oKSBjb25zdCB7IHJldHVybiAhbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cmVnaW9uVGhyZWFkLmlzTnVsbCgpOyB9CisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiByZWdpb25UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5yZWdpb25UaHJlYWQ7IH0KKyAgICBSZWdpb25GcmFnbWVudCByZWdpb25GcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ2lvbkZyYWdtZW50PihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5yZWdpb25GcmFnbWVudCk7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGluZUdyaWQoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lR3Jp
ZDsgfQotICAgIExpbmVTbmFwIGxpbmVTbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGluZVNuYXA+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVTbmFwKTsgfQotICAgIExpbmVBbGln
biBsaW5lQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQWxpZ24+KHJhcmVJ
bmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbik7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxp
bmVHcmlkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+bGluZUdyaWQ7IH0K
KyAgICBMaW5lU25hcCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVT
bmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcCk7IH0KKyAgICBMaW5lQWxpZ24gbGlu
ZUFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUFsaWduPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5saW5lQWxpZ24pOyB9CiAKLSAgICAvLyBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0
eSBnZXR0ZXIgbWV0aG9kcwotICAgIEVQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4oaW5oZXJpdGVkX2ZsYWdzLl9w
b2ludGVyRXZlbnRzKTsgfQotICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRpb25zLmdldCgpOyB9
Ci0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdHJhbnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsgfQorICAgIEVQb2ludGVy
RXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRl
ckV2ZW50cz4obV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzKTsgfQorICAgIGNvbnN0IEFu
aW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5hbmltYXRpb25zLmdldCgpOyB9CisgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdHJh
bnNpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0
aW9ucy5nZXQoKTsgfQogCi0gICAgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FuaW1hdGlvbnMuZ2V0KCk7IH0KLSAgICBBbmltYXRp
b25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Ry
YW5zaXRpb25zLmdldCgpOyB9CisgICAgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7IH0KKyAgICBBbmlt
YXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zaXRpb25zLmdldCgpOyB9CiAgICAgCi0gICAgYm9vbCBoYXNBbmltYXRpb25zT3JUcmFu
c2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNBbmltYXRp
b25zT3JUcmFuc2l0aW9ucygpOyB9CisgICAgYm9vbCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0FuaW1hdGlvbnNP
clRyYW5zaXRpb25zKCk7IH0KIAogICAgIEFuaW1hdGlvbkxpc3QmIGVuc3VyZUFuaW1hdGlvbnMo
KTsKICAgICBBbmltYXRpb25MaXN0JiBlbnN1cmVUcmFuc2l0aW9ucygpOwogCi0gICAgYm9vbCBo
YXNBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5p
bWF0aW9ucyAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbmltYXRpb25zLT5zaXplKCkgPiAw
OyB9Ci0gICAgYm9vbCBoYXNUcmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zaXRpb25zICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5z
aXRpb25zLT5zaXplKCkgPiAwOyB9CisgICAgYm9vbCBoYXNBbmltYXRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9ucyAmJiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbmltYXRpb25zLT5zaXplKCkgPiAwOyB9CisgICAgYm9vbCBoYXNUcmFuc2l0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25z
ICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLT5zaXplKCkgPiAwOyB9CiAK
LSAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGZvdW5kIEFuaW1hdGlvbiAoaW5jbHVkaW5nICdhbGwn
IHRyYW5zaXRpb25zKQorICAgIC8vIFJldHVybiB0aGUgZmlyc3QgZm91bmQgQW5pbWF0aW9uIChp
bmNsdWRpbmcgJ2FsbCcgdHJhbnNpdGlvbnMpLgogICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNp
dGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCi0gICAgRVRyYW5zZm9ybVN0
eWxlM0QgdHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUcmFu
c2Zvcm1TdHlsZTNEPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEKTsg
fQotICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV90cmFuc2Zvcm1TdHlsZTNEID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEOyB9
CisgICAgRVRyYW5zZm9ybVN0eWxlM0QgdHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVUcmFuc2Zvcm1TdHlsZTNEPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
cmFuc2Zvcm1TdHlsZTNEKTsgfQorICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm1TdHlsZTNEID09IFRyYW5zZm9ybVN0
eWxlM0RQcmVzZXJ2ZTNEOyB9CiAKLSAgICBFQmFja2ZhY2VWaXNpYmlsaXR5IGJhY2tmYWNlVmlz
aWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCYWNrZmFjZVZpc2liaWxpdHk+
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSk7IH0KLSAgICBmbG9h
dCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Bl
cnNwZWN0aXZlOyB9Ci0gICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlID4gMDsgfQotICAgIGNvbnN0IExlbmd0
aCYgcGVyc3BlY3RpdmVPcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5YOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2
ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVj
dGl2ZU9yaWdpblk7IH0KLSAgICBjb25zdCBMZW5ndGhTaXplJiBwYWdlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BhZ2VTaXplOyB9Ci0gICAgUGFnZVNpemVU
eXBlIHBhZ2VTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBhZ2VTaXplVHlw
ZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFnZVNpemVUeXBlKTsgfQorICAgIEVCYWNrZmFj
ZVZpc2liaWxpdHkgYmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUJhY2tmYWNlVmlzaWJpbGl0eT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VW
aXNpYmlsaXR5KTsgfQorICAgIGZsb2F0IHBlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmU7IH0KKyAgICBib29sIGhhc1BlcnNwZWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUg
PiAwOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblg7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWTsgfQorICAgIGNvbnN0IExlbmd0aFNp
emUmIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGFn
ZVNpemU7IH0KKyAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wYWdlU2l6
ZVR5cGUpOyB9CiAgICAgCi0gICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4oKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFpbjsgfQotICAgIGNv
bnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9Ci0gICAgY29uc3QgSW50U2l6ZSYgaW5pdGlhbExldHRl
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXI7
IH0KKyAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVCb3hDb250YWluOyB9CisgICAgY29uc3QgTGluZUNsYW1w
VmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmxpbmVDbGFtcDsgfQorICAgIGNvbnN0IEludFNpemUmIGluaXRpYWxMZXR0ZXIoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pbml0aWFsTGV0dGVyOyB9CiAgICAgaW50
IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigpLndpZHRo
KCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaXRp
YWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBU
b3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRvdWNo
QWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90b3VjaEFjdGlvbik7IH0KKyAgICBUb3Vj
aEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRvdWNoQWN0
aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50b3VjaEFjdGlvbik7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTExNTAsNjkgKzcxMiw2MiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgdGFwSGlnaGxp
Z2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxpZ2h0
Q29sb3I7IH0KKyAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBib29sIHRvdWNoQ2FsbG91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biByYXJlSW5oZXJpdGVkRGF0YS0+dG91Y2hDYWxsb3V0RW5hYmxlZDsgfQorICAgIGJvb2wgdG91
Y2hDYWxsb3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRv
dWNoQ2FsbG91dEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykKLSAgICBib29sIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSBj
b25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGlu
ZzsgfQorICAgIGJvb2wgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmc7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBUZXh0U2l6ZUFkanVzdG1lbnQg
dGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNp
emVBZGp1c3Q7IH0KKyAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVBZGp1c3QoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdDsgfQogI2VuZGlm
CiAKLSAgICBFVGV4dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVUZXh0U2VjdXJpdHk+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9
CisgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFVGV4dFNlY3VyaXR5PihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9
CiAKLSAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdyaXRpbmdNb2RlPihpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSk7IH0KKyAgICBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdyaXRp
bmdNb2RlPihtX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlKTsgfQogICAgIGJvb2wgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0hvcml6b250YWxX
cml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKHdyaXRp
bmdNb2RlKCkpOyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgp
KTsgfQogICAgIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVy
biBXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogCi0gICAg
SW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0Ci0gICAgewotI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbWFnZU9yaWVudGF0aW9uRW51bT4ocmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRh
dGlvbik7Ci0jZWxzZQotICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci0j
ZW5kaWYKLSAgICB9CisgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigp
IGNvbnN0OwogCi0gICAgRUltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUltYWdlUmVuZGVyaW5nPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9p
bWFnZVJlbmRlcmluZyk7IH0KKyAgICBFSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW1hZ2VSZW5kZXJpbmc+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVU
SU9OKQotICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbWFnZVJlc29sdXRpb25Tb3VyY2UoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25Tb3VyY2U+KHJhcmVJbmhl
cml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNvdXJjZSk7IH0KLSAgICBJbWFnZVJlc29sdXRp
b25TbmFwIGltYWdlUmVzb2x1dGlvblNuYXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJ
bWFnZVJlc29sdXRpb25TbmFwPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25T
bmFwKTsgfQotICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJ
bmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbjsgfQorICAgIEltYWdlUmVzb2x1dGlvblNv
dXJjZSBpbWFnZVJlc29sdXRpb25Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJ
bWFnZVJlc29sdXRpb25Tb3VyY2U+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1dGlv
blNvdXJjZSk7IH0KKyAgICBJbWFnZVJlc29sdXRpb25TbmFwIGltYWdlUmVzb2x1dGlvblNuYXAo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc29sdXRpb25TbmFwPihtX3JhcmVJ
bmhlcml0ZWREYXRhLT5pbWFnZVJlc29sdXRpb25TbmFwKTsgfQorICAgIGZsb2F0IGltYWdlUmVz
b2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVzb2x1
dGlvbjsgfQogI2VuZGlmCiAgICAgCi0gICAgRVNwZWFrIHNwZWFrKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVNwZWFrPihyYXJlSW5oZXJpdGVkRGF0YS0+c3BlYWspOyB9CisgICAgRVNw
ZWFrIHNwZWFrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVNwZWFrPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5zcGVhayk7IH0KIAotICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFibGVGaWx0
ZXIoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9maWx0ZXIuYWNj
ZXNzKCktPm1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVy
YXRpb25zOyB9Ci0gICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZmlsdGVyLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHko
KTsgfQorICAgIEZpbHRlck9wZXJhdGlvbnMmIG11dGFibGVGaWx0ZXIoKSB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmZpbHRlci5hY2Nlc3MoKS5vcGVyYXRpb25zOyB9
CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5vcGVyYXRpb25zOyB9CisgICAgYm9vbCBoYXNG
aWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyLT5v
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc1JlZmVyZW5j
ZUZpbHRlck9ubHkoKSBjb25zdDsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAg
RmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUJhY2tkcm9wRmlsdGVyKCkgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYmFja2Ryb3BGaWx0ZXIuYWNjZXNzKCktPm1fb3Bl
cmF0aW9uczsgfQotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tkcm9wRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2Ryb3BGaWx0ZXItPm1f
b3BlcmF0aW9uczsgfQotICAgIGJvb2wgaGFzQmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2Ryb3BGaWx0ZXItPm1fb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CisgICAgRmlsdGVyT3BlcmF0aW9ucyYgbXV0YWJsZUJh
Y2tkcm9wRmlsdGVyKCkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5i
YWNrZHJvcEZpbHRlci5hY2Nlc3MoKS5vcGVyYXRpb25zOyB9CisgICAgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5iYWNrZHJvcEZpbHRlci0+b3BlcmF0aW9uczsgfQorICAgIGJvb2wgaGFzQmFja2Ry
b3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ry
b3BGaWx0ZXItPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQogI2Vsc2UKICAg
ICBib29sIGhhc0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2Rl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpOyB9Ci0gICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxl
bmRNb2RlIGJsZW5kTW9kZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2VmZmVj
dGl2ZUJsZW5kTW9kZSwgYmxlbmRNb2RlKTsgfQotICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9lZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5kTW9kZU5vcm1hbDsgfQorICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSk7IH0KKyAgICB2b2lkIHNldEJs
ZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGVmZmVjdGl2ZUJsZW5kTW9kZSwgbW9kZSk7IH0KKyAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKSAhPSBCbGVuZE1vZGVOb3JtYWw7IH0KIAotICAgIElzb2xh
dGlvbiBpc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJc29sYXRpb24+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2lzb2xhdGlvbik7IH0KLSAgICB2b2lkIHNldElzb2xhdGlv
bihJc29sYXRpb24gaXNvbGF0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
aXNvbGF0aW9uLCBpc29sYXRpb24pOyB9Ci0gICAgYm9vbCBoYXNJc29sYXRpb24oKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9pc29sYXRpb24gIT0gSXNvbGF0aW9uQXV0
bzsgfQorICAgIElzb2xhdGlvbiBpc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxJc29sYXRpb24+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmlzb2xhdGlvbik7IH0KKyAgICB2
b2lkIHNldElzb2xhdGlvbihJc29sYXRpb24gaXNvbGF0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgaXNvbGF0aW9uLCBpc29sYXRpb24pOyB9CisgICAgYm9vbCBoYXNJc29s
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pc29sYXRpb24g
IT0gSXNvbGF0aW9uQXV0bzsgfQogI2Vsc2UKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29u
c3QgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CiAgICAgYm9vbCBoYXNCbGVuZE1vZGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTIyNCw1NzMgKzc3OSw1MDYgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0
OwogCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQotICAgIFRyYWlsaW5nV29yZCB0cmFp
bGluZ1dvcmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUcmFpbGluZ1dvcmQ+KHJhcmVJ
bmhlcml0ZWREYXRhLT50cmFpbGluZ1dvcmQpOyB9CisgICAgVHJhaWxpbmdXb3JkIHRyYWlsaW5n
V29yZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYWlsaW5nV29yZD4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dHJhaWxpbmdXb3JkKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQotICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0b25TdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uU3R5bGU+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FwcGxlUGF5QnV0dG9uU3R5bGUpOyB9Ci0gICAgQXBwbGVQYXlCdXR0b25UeXBl
IGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5
QnV0dG9uVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwbGVQYXlCdXR0b25UeXBlKTsg
fQorICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0b25TdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmFwcGxlUGF5QnV0dG9uU3R5bGUpOyB9CisgICAgQXBwbGVQYXlCdXR0b25UeXBlIGFw
cGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0
dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwbGVQYXlCdXR0b25UeXBlKTsgfQog
I2VuZGlmCiAKICAgICB2b2lkIGNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKCk7CiAK
IC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCi0gICAgdm9pZCBzZXREaXNwbGF5KEVEaXNw
bGF5IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEVmZmVjdGl2ZURpc3BsYXkodik7IH0KLSAg
ICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSB2KSB7IG5vbmluaGVyaXRlZF9mbGFn
cy5zZXRPcmlnaW5hbERpc3BsYXkodik7IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlv
biB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQb3NpdGlvbih2KTsgfQotICAgIHZvaWQgc2V0
RmxvYXRpbmcoRUZsb2F0IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEZsb2F0aW5nKHYpOyB9
Ci0KLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0
LmxlZnQoKSwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgpLCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQg
c2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC50b3AoKSwgV1RGTW92
ZSh2KSk7IH0KLSAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5k
LCBvZmZzZXQuYm90dG9tKCksIFdURk1vdmUodikpOyB9Ci0KLSAgICB2b2lkIHNldFdpZHRoKExl
bmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURk1vdmUodikpOyB9Ci0gICAgdm9p
ZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUo
dikpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxXaWR0aChMZW5ndGggdikKLSAgICB7Ci0gICAg
ICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgICAgICBTRVRfVkFS
KG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEZNb3ZlKHYpKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICB2b2lkIHNldERpc3BsYXkoRURpc3BsYXkgdikgeyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldEVmZmVjdGl2ZURpc3BsYXkodik7IH0KKyAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShF
RGlzcGxheSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0T3JpZ2luYWxEaXNwbGF5KHYpOyB9
CisgICAgdm9pZCBzZXRQb3NpdGlvbihFUG9zaXRpb24gdikgeyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldFBvc2l0aW9uKHYpOyB9CisgICAgdm9pZCBzZXRGbG9hdGluZyhFRmxvYXQgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLnNldEZsb2F0aW5nKHYpOyB9CiAKLSAgICB2b2lkIHNldExvZ2ljYWxI
ZWlnaHQoTGVuZ3RoIHYpCi0gICAgewotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgewotICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwg
V1RGTW92ZSh2KSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCYm
IGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBvZmZzZXQubGVmdCgpLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRSaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgb2Zmc2V0LnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAg
ICB2b2lkIHNldFRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwg
b2Zmc2V0LnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRCb3R0b20oTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG9mZnNldC5ib3R0b20oKSwg
V1RGTW92ZShsZW5ndGgpKTsgfQogCi0gICAgdm9pZCBzZXRNaW5XaWR0aChMZW5ndGggdikgeyBT
RVRfVkFSKG1fYm94LCBtX21pbldpZHRoLCBXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0TWF4
V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhXaWR0aCwgV1RGTW92ZSh2KSk7
IH0KLSAgICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21p
bkhlaWdodCwgV1RGTW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1heEhlaWdodChMZW5ndGggdikg
eyBTRVRfVkFSKG1fYm94LCBtX21heEhlaWdodCwgV1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNl
dFdpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV93aWR0aCwgV1RG
TW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBT
RVRfVkFSKG1fYm94RGF0YSwgbV9oZWlnaHQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKworICAgIHZv
aWQgc2V0TG9naWNhbFdpZHRoKExlbmd0aCYmKTsKKyAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQo
TGVuZ3RoJiYpOworCisgICAgdm9pZCBzZXRNaW5XaWR0aChMZW5ndGgmJiBsZW5ndGgpIHsgU0VU
X1ZBUihtX2JveERhdGEsIG1fbWluV2lkdGgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lk
IHNldE1heFdpZHRoKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9tYXhX
aWR0aCwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWluSGVpZ2h0KExlbmd0aCYm
IGxlbmd0aCkgeyBTRVRfVkFSKG1fYm94RGF0YSwgbV9taW5IZWlnaHQsIFdURk1vdmUobGVuZ3Ro
KSk7IH0KKyAgICB2b2lkIHNldE1heEhlaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUiht
X2JveERhdGEsIG1fbWF4SGVpZ2h0LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAKICNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCi0gICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBkYXNo
Ym9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFz
aGJvYXJkUmVnaW9uczsgfQotICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8U3R5
bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9kYXNoYm9hcmRSZWdpb25zLCByZWdpb25zKTsgfQotCi0gICAgdm9pZCBzZXREYXNoYm9h
cmRSZWdpb24oaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgbGFiZWwsIExlbmd0aCB0LCBMZW5ndGgg
ciwgTGVuZ3RoIGIsIExlbmd0aCBsLCBib29sIGFwcGVuZCkKLSAgICB7Ci0gICAgICAgIFN0eWxl
RGFzaGJvYXJkUmVnaW9uIHJlZ2lvbjsKLSAgICAgICAgcmVnaW9uLmxhYmVsID0gbGFiZWw7Ci0g
ICAgICAgIHJlZ2lvbi5vZmZzZXQudG9wKCkgPSBXVEZNb3ZlKHQpOwotICAgICAgICByZWdpb24u
b2Zmc2V0LnJpZ2h0KCkgPSBXVEZNb3ZlKHIpOwotICAgICAgICByZWdpb24ub2Zmc2V0LmJvdHRv
bSgpID0gV1RGTW92ZShiKTsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5sZWZ0KCkgPSBXVEZNb3Zl
KGwpOwotICAgICAgICByZWdpb24udHlwZSA9IHR5cGU7Ci0gICAgICAgIGlmICghYXBwZW5kKQot
ICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZGFzaGJvYXJkUmVn
aW9ucy5jbGVhcigpOwotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9k
YXNoYm9hcmRSZWdpb25zLmFwcGVuZChyZWdpb24pOwotICAgIH0KKyAgICBjb25zdCBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZGFzaGJvYXJkUmVnaW9uczsgfQorICAgIHZvaWQgc2V0
RGFzaGJvYXJkUmVnaW9ucyhjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiByZWdp
b25zKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZGFzaGJvYXJkUmVnaW9ucywg
cmVnaW9ucyk7IH0KKyAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbihpbnQgdHlwZSwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgTGVuZ3RoJiYgdG9wLCBMZW5ndGgmJiByaWdodCwgTGVuZ3RoJiYgYm90
dG9tLCBMZW5ndGgmJiBsZWZ0LCBib29sIGFwcGVuZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVz
ZXRCb3JkZXIoKSB7IHJlc2V0Qm9yZGVySW1hZ2UoKTsgcmVzZXRCb3JkZXJUb3AoKTsgcmVzZXRC
b3JkZXJSaWdodCgpOyByZXNldEJvcmRlckJvdHRvbSgpOyByZXNldEJvcmRlckxlZnQoKTsgcmVz
ZXRCb3JkZXJSYWRpdXMoKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0
Qm9yZGVyUmlnaHQoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJW
YWx1ZSgpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b20oKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2JvdHRvbSwgQm9yZGVyVmFsdWUoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9y
ZGVyTGVmdCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdCwgQm9yZGVyVmFsdWUo
KSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVySW1hZ2UoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2ltYWdlLCBOaW5lUGllY2VJbWFnZSgpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJU
b3AoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUo
KSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyUmlnaHQoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgpKTsgfQorICAgIHZvaWQgcmVzZXRCb3Jk
ZXJCb3R0b20oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbSwgQm9y
ZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyTGVmdCgpIHsgU0VUX1ZBUihtX3N1
cnJvdW5kRGF0YSwgYm9yZGVyLm1fbGVmdCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJl
c2V0Qm9yZGVySW1hZ2UoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2ltYWdl
LCBOaW5lUGllY2VJbWFnZSgpKTsgfQogICAgIHZvaWQgcmVzZXRCb3JkZXJSYWRpdXMoKSB7IHJl
c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpOyByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCk7IHJl
c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpOyByZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZv
aWQgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KLSAgICB2b2lkIHJlc2V0Qm9y
ZGVyQm90dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9t
TGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0
b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQs
IGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cygpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlh
bEJvcmRlclJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BSaWdodFJhZGl1cygp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wUmlnaHQsIGluaXRpYWxCb3Jk
ZXJSYWRpdXMoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tTGVmdCwgaW5pdGlhbEJvcmRl
clJhZGl1cygpKTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cygpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIGluaXRpYWxCb3Jk
ZXJSYWRpdXMoKSk7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2NvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0
YSwgY29sb3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0aW9u
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3lQb3Np
dGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemUoRUZp
bGxTaXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV9zaXpl
VHlwZSwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExlbmd0aFNpemUg
c2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwg
V1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3Ro
JiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgYmFja2dyb3VuZC5tX3hQb3Np
dGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlv
bihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3JvdW5k
Lm1feVBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5k
U2l6ZShFRmlsbFNpemVUeXBlIGIpIHsgU0VUX1ZBUihtX2JhY2tncm91bmREYXRhLCBiYWNrZ3Jv
dW5kLm1fc2l6ZVR5cGUsIGIpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kU2l6ZUxlbmd0aChM
ZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZERhdGEsIGJhY2tncm91bmQu
bV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQogICAgIAotICAgIHZvaWQgc2V0Qm9yZGVy
SW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1faW1hZ2UsIGIpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJJbWFnZShjb25zdCBOaW5lUGllY2VJ
bWFnZSYgYikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9pbWFnZSwgYik7IH0K
ICAgICB2b2lkIHNldEJvcmRlckltYWdlU291cmNlKFJlZlB0cjxTdHlsZUltYWdlPiYmKTsKLSAg
ICB2b2lkIHNldEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJveCk7Ci0gICAgdm9pZCBzZXRCb3Jk
ZXJJbWFnZVdpZHRoKExlbmd0aEJveCk7Ci0gICAgdm9pZCBzZXRCb3JkZXJJbWFnZU91dHNldChM
ZW5ndGhCb3gpOwotCi0gICAgdm9pZCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKExlbmd0aFNpemUg
c2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BMZWZ0LCBXVEZNb3ZlKHNpemUp
KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXplKSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQot
ICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgV1RGTW92ZShzaXplKSk7IH0KLSAg
ICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgV1RGTW92ZShzaXplKSk7IH0KLQot
ICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUgcykKLSAgICB7Ci0gICAgICAgIHNl
dEJvcmRlclRvcExlZnRSYWRpdXMocyk7Ci0gICAgICAgIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVz
KHMpOwotICAgICAgICBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKHMpOwotICAgICAgICBzZXRC
b3JkZXJCb3R0b21SaWdodFJhZGl1cyhzKTsKLSAgICB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSYWRp
dXMoY29uc3QgSW50U2l6ZSYgcykKLSAgICB7Ci0gICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5n
dGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVk
KSkpOwotICAgIH0KLSAgICAKKyAgICB2b2lkIHNldEJvcmRlckltYWdlU2xpY2VzKExlbmd0aEJv
eCYmKTsKKyAgICB2b2lkIHNldEJvcmRlckltYWdlV2lkdGgoTGVuZ3RoQm94JiYpOworICAgIHZv
aWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94JiYpOworCisgICAgdm9pZCBzZXRCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIGJvcmRlci5tX3RvcExlZnQsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3Jk
ZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBib3JkZXIubV90b3BSaWdodCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJv
cmRlckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSYmIHNpemUpIHsgU0VUX1ZBUihtX3N1cnJv
dW5kRGF0YSwgYm9yZGVyLm1fYm90dG9tTGVmdCwgV1RGTW92ZShzaXplKSk7IH0KKyAgICB2b2lk
IHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKExlbmd0aFNpemUmJiBzaXplKSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBXVEZNb3ZlKHNpemUpKTsgfQor
CisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSYmKTsKKyAgICB2b2lkIHNldEJv
cmRlclJhZGl1cyhjb25zdCBJbnRTaXplJik7CisKICAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVk
Qm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBj
b25zdDsKICAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OwogCiAgICAgUm91bmRl
ZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJl
Y3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lkdGgsCiAgICAgICAg
IExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0
cnVlKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFdpZHRoKGZsb2F0IHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0
Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci5tX2xlZnQubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlckxlZnRDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2xl
ZnQsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJv
cmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fcmlnaHQubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9y
aWdodCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fd2lkdGgsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3Jk
ZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90
b3AubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLCB2KTsg
fQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1cnJv
dW5kLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlckJv
dHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2Jv
dHRvbS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0
b20sIHYpOyB9Ci0KLSAgICB2b2lkIHNldE91dGxpbmVXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIo
bV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV93aWR0aCwgdik7IH0KLSAgICB2b2lkIHNldE91dGxp
bmVTdHlsZUlzQXV0byhPdXRsaW5lSXNBdXRvIGlzQXV0bykgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZCwgbV9vdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8pOyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lU3R5
bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3N0
eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91bmQsIG1fb3V0bGluZSwgdik7IH0KLQotICAg
IHZvaWQgc2V0T3ZlcmZsb3dYKEVPdmVyZmxvdyB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRP
dmVyZmxvd1godik7IH0KLSAgICB2b2lkIHNldE92ZXJmbG93WShFT3ZlcmZsb3cgdikgeyBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0T3ZlcmZsb3dZKHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpYmlsaXR5
KEVWaXNpYmlsaXR5IHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ID0gdjsgfQotICAg
IHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2KSB7IG5vbmluaGVyaXRlZF9m
bGFncy5zZXRWZXJ0aWNhbEFsaWduKHYpOyB9Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVu
Z3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1f
Ym94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUobGVuZ3RoKSk7IH0KLQotICAgIHZvaWQgc2V0
SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQot
ICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xp
cC5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldENsaXBSaWdodChMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLnJpZ2h0KCksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KLSAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3Vh
bCwgY2xpcC50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRv
bShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLmJvdHRvbSgpLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwg
TGVuZ3RoIGJvdHRvbSwgTGVuZ3RoIGxlZnQpOwotICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3gg
Ym94KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLCBXVEZNb3ZlKGJveCkpOyB9Ci0KLSAgICB2b2lk
IHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRV
bmljb2RlQmlkaShiKTsgfQotCi0gICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgdikgeyBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0Q2xlYXIodik7IH0KLSAgICB2b2lkIHNldFRhYmxlTGF5b3V0KEVUYWJs
ZUxheW91dCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRUYWJsZUxheW91dCh2KTsgfQorICAg
IHZvaWQgc2V0Qm9yZGVyTGVmdFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0
YSwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0
eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xl
ZnQubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxlZnRDb2xvcihjb25zdCBDb2xv
ciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2xl
ZnQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZB
UihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fcmlnaHQubV93aWR0aCwgdik7IH0KKyAgICB2b2lk
IHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5k
RGF0YSwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclJp
Z2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vycm91
bmREYXRhLCBib3JkZXIubV9yaWdodCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFdpZHRo
KGZsb2F0IHYpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLm1fd2lkdGgs
IHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRf
VkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV90b3AubV9zdHlsZSwgdik7IH0KKyAgICB2b2lk
IHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xP
UihtX3N1cnJvdW5kRGF0YSwgYm9yZGVyLm1fdG9wLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVy
Qm90dG9tV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9i
b3R0b20ubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3Jk
ZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIGJvcmRlci5tX2JvdHRvbS5tX3N0
eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fc3Vycm91bmREYXRhLCBib3JkZXIubV9ib3R0b20s
IHYpOyB9CisKKyAgICB2b2lkIHNldE91dGxpbmVXaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIobV9i
YWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGlu
ZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5k
RGF0YSwgb3V0bGluZS5tX2lzQXV0bywgaXNBdXRvKTsgfQorICAgIHZvaWQgc2V0T3V0bGluZVN0
eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5t
X3N0eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7
IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91bmREYXRhLCBvdXRsaW5lLCB2KTsgfQor
CisgICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zZXRPdmVyZmxvd1godik7IH0KKyAgICB2b2lkIHNldE92ZXJmbG93WShFT3ZlcmZsb3cgdikg
eyBtX25vbkluaGVyaXRlZEZsYWdzLnNldE92ZXJmbG93WSh2KTsgfQorICAgIHZvaWQgc2V0Vmlz
aWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHY7
IH0KKyAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxpZ24gdikgeyBtX25vbklu
aGVyaXRlZEZsYWdzLnNldFZlcnRpY2FsQWxpZ24odik7IH0KKyAgICB2b2lkIHNldFZlcnRpY2Fs
QWxpZ25MZW5ndGgoTGVuZ3RoJiYgbGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsg
U0VUX1ZBUihtX2JveERhdGEsIG1fdmVydGljYWxBbGlnbiwgV1RGTW92ZShsZW5ndGgpKTsgfQor
CisgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZBUihtX3Zpc3VhbERh
dGEsIGhhc0NsaXAsIGIpOyB9CisgICAgdm9pZCBzZXRDbGlwTGVmdChMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV92aXN1
YWxEYXRhLCBjbGlwLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENs
aXBUb3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCBjbGlwLnRvcCgp
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCYmIGxl
bmd0aCkgeyBTRVRfVkFSKG1fdmlzdWFsRGF0YSwgY2xpcC5ib3R0b20oKSwgV1RGTW92ZShsZW5n
dGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcChMZW5ndGgmJiB0b3AsIExlbmd0aCYmIHJpZ2h0LCBM
ZW5ndGgmJiBib3R0b20sIExlbmd0aCYmIGxlZnQpOworICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhC
b3gmJiBib3gpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIGNsaXAsIFdURk1vdmUoYm94KSk7IH0K
KworICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIGIpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5zZXRVbmljb2RlQmlkaShiKTsgfQorCisgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIg
dikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldENsZWFyKHYpOyB9CisgICAgdm9pZCBzZXRUYWJs
ZUxheW91dChFVGFibGVMYXlvdXQgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFRhYmxlTGF5
b3V0KHYpOyB9CiAKICAgICBib29sIHNldEZvbnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJik7CisKICAgICAvLyBPbmx5IHVzZWQgZm9yIGJsZW5kaW5nIGZvbnQgc2l6
ZXMgd2hlbiBhbmltYXRpbmcsIGZvciBNYXRoTUwgYW5vbnltb3VzIGJsb2NrcywgYW5kIGZvciB0
ZXh0IGF1dG9zaXppbmcuCiAgICAgdm9pZCBzZXRGb250U2l6ZShmbG9hdCk7CisKICNpZiBFTkFC
TEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIHZvaWQgc2V0Rm9udFZhcmlhdGlvblNldHRpbmdzKEZv
bnRWYXJpYXRpb25TZXR0aW5ncyk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3Qg
Q29sb3ImKTsKLSAgICB2b2lkIHNldFRleHRJbmRlbnQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSNpZiBFTkFC
TEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRJbmRlbnRMaW5lLCB2KTsgfQot
ICAgIHZvaWQgc2V0VGV4dEluZGVudFR5cGUoVGV4dEluZGVudFR5cGUgdikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCBtX3RleHRJbmRlbnRUeXBlLCB2KTsgfQotI2VuZGlmCi0gICAgdm9p
ZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGln
biA9IHY7IH0KLSAgICB2b2lkIHNldFRleHRUcmFuc2Zvcm0oRVRleHRUcmFuc2Zvcm0gdikgeyBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtID0gdjsgfQotICAgIHZvaWQgYWRkVG9UZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5f
dGV4dF9kZWNvcmF0aW9ucyB8PSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9u
cyA9IHY7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uIHYpIHsg
U0VUX1ZBUih2aXN1YWwsIHRleHREZWNvcmF0aW9uLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dElu
ZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRl
bnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRleHRBbGlnbihFVGV4dEFsaWdu
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSB2OyB9CisgICAgdm9pZCBzZXRUZXh0
VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNm
b3JtID0gdjsgfQorICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVj
b3JhdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zIHw9IHY7IH0KKyAg
ICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgbV9p
bmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2OyB9CisgICAgdm9pZCBzZXRUZXh0RGVj
b3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVj
b3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29y
YXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29y
YXRpb25TdHlsZSwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVj
b3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNv
cmF0aW9uU2tpcCwgc2tpcCk7IH0KKyAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihU
ZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRl
eHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGly
ZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSB2OyB9CisgICAgdm9pZCBz
ZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24odik7IH0KKyAgICB2b2lkIHNldExpbmVIZWln
aHQoTGVuZ3RoJiYpOworICAgIGJvb2wgc2V0Wm9vbShmbG9hdCk7CisgICAgdm9pZCBzZXRab29t
V2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsgc2V0Wm9vbShmKTsgfQorICAgIGJvb2wgc2V0
RWZmZWN0aXZlWm9vbShmbG9hdCk7CisgICAgdm9pZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFpvb20sIHYpOyB9CisKICNpZiBFTkFC
TEUoQ1NTM19URVhUKQotICAgIHZvaWQgc2V0VGV4dEFsaWduTGFzdChUZXh0QWxpZ25MYXN0IHYp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0QWxpZ25MYXN0LCB2KTsgfQotICAg
IHZvaWQgc2V0VGV4dEp1c3RpZnkoVGV4dEp1c3RpZnkgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCBtX3RleHRKdXN0aWZ5LCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEluZGVudExpbmUo
VGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRJbmRl
bnRMaW5lLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEluZGVudFR5cGUoVGV4dEluZGVudFR5cGUg
dikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRJbmRlbnRUeXBlLCB2KTsgfQor
ICAgIHZvaWQgc2V0VGV4dEFsaWduTGFzdChUZXh0QWxpZ25MYXN0IHYpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0ZXh0QWxpZ25MYXN0LCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dEp1
c3RpZnkoVGV4dEp1c3RpZnkgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRK
dXN0aWZ5LCB2KTsgfQogI2VuZGlmCi0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRl
eHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Rl
eHREZWNvcmF0aW9uU3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAo
VGV4dERlY29yYXRpb25Ta2lwIHNraXApIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90
ZXh0RGVjb3JhdGlvblNraXAsIHNraXApOyB9Ci0gICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9z
aXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgbV90ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYpOyB9Ci0gICAgdm9pZCBzZXREaXJlY3Rpb24o
VGV4dERpcmVjdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gdjsgfQotICAg
IHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbihib29sIHYpIHsgbm9uaW5oZXJpdGVk
X2ZsYWdzLnNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24odik7IH0KKwogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB2
KTsKKyAgICB2b2lkIHNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoJiYpOwogI2VuZGlmCi0g
ICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCBzcGVjaWZpZWRMaW5lSGVpZ2h0KTsKLSAgICBi
b29sIHNldFpvb20oZmxvYXQpOwotICAgIHZvaWQgc2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZShm
bG9hdCBmKSB7IHNldFpvb20oZik7IH0KLSAgICBib29sIHNldEVmZmVjdGl2ZVpvb20oZmxvYXQp
OwotICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCBtX3RleHRab29tLCB2KTsgfQotICAgIAorCiAjaWYgRU5BQkxFKENTU19JTUFHRV9P
UklFTlRBVElPTikKLSAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
bkVudW0gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlT3JpZW50YXRpb24s
IHN0YXRpY19jYXN0PGludD4odikpOyB9CisgICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFn
ZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYpKTsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHNldEltYWdlUmVuZGVyaW5nKEVJbWFnZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIG1faW1hZ2VSZW5kZXJpbmcsIHYpOyB9CisgICAgdm9pZCBzZXRJbWFnZVJlbmRl
cmluZyhFSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGlt
YWdlUmVuZGVyaW5nLCB2KTsgfQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQot
ICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKEltYWdlUmVzb2x1dGlvblNvdXJjZSB2
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlLCB2
KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChJbWFnZVJlc29sdXRpb25TbmFw
IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb25TbmFwLCB2
KTsgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb24sIGYpOyB9CisgICAgdm9pZCBzZXRJbWFn
ZVJlc29sdXRpb25Tb3VyY2UoSW1hZ2VSZXNvbHV0aW9uU291cmNlIHYpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRpb25Tb3VyY2UsIHYpOyB9CisgICAgdm9pZCBz
ZXRJbWFnZVJlc29sdXRpb25TbmFwKEltYWdlUmVzb2x1dGlvblNuYXAgdikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVzb2x1dGlvblNuYXAsIHYpOyB9CisgICAgdm9pZCBz
ZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IGltYWdlUmVzb2x1dGlvbiwgZik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRXaGl0ZVNwYWNl
KEVXaGl0ZVNwYWNlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSA9IHY7IH0KKyAg
ICB2b2lkIHNldFdoaXRlU3BhY2UoRVdoaXRlU3BhY2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndo
aXRlU3BhY2UgPSB2OyB9CiAKLSAgICB2b2lkIHNldFdvcmRTcGFjaW5nKExlbmd0aCk7CisgICAg
dm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgmJik7CiAgICAgdm9pZCBzZXRMZXR0ZXJTcGFjaW5n
KGZsb2F0KTsKIAotICAgIHZvaWQgY2xlYXJCYWNrZ3JvdW5kTGF5ZXJzKCkgeyBtX2JhY2tncm91
bmQuYWNjZXNzKCktPm1fYmFja2dyb3VuZCA9IEZpbGxMYXllcihCYWNrZ3JvdW5kRmlsbExheWVy
KTsgfQotICAgIHZvaWQgaW5oZXJpdEJhY2tncm91bmRMYXllcnMoY29uc3QgRmlsbExheWVyJiBw
YXJlbnQpIHsgbV9iYWNrZ3JvdW5kLmFjY2VzcygpLT5tX2JhY2tncm91bmQgPSBwYXJlbnQ7IH0K
KyAgICB2b2lkIGNsZWFyQmFja2dyb3VuZExheWVycygpIHsgbV9iYWNrZ3JvdW5kRGF0YS5hY2Nl
c3MoKS5iYWNrZ3JvdW5kID0gRmlsbExheWVyKEJhY2tncm91bmRGaWxsTGF5ZXIpOyB9CisgICAg
dm9pZCBpbmhlcml0QmFja2dyb3VuZExheWVycyhjb25zdCBGaWxsTGF5ZXImIHBhcmVudCkgeyBt
X2JhY2tncm91bmREYXRhLmFjY2VzcygpLmJhY2tncm91bmQgPSBwYXJlbnQ7IH0KIAotICAgIHZv
aWQgYWRqdXN0QmFja2dyb3VuZExheWVycygpCi0gICAgewotICAgICAgICBpZiAoYmFja2dyb3Vu
ZExheWVycygpLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMo
KS5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAgICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMo
KS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdm9pZCBhZGp1
c3RCYWNrZ3JvdW5kTGF5ZXJzKCk7CiAKLSAgICB2b2lkIGNsZWFyTWFza0xheWVycygpIHsgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFzayA9IEZpbGxMYXllcihNYXNrRmlsbExh
eWVyKTsgfQotICAgIHZvaWQgaW5oZXJpdE1hc2tMYXllcnMoY29uc3QgRmlsbExheWVyJiBwYXJl
bnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFzayA9IHBhcmVudDsgfQor
ICAgIHZvaWQgY2xlYXJNYXNrTGF5ZXJzKCkgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLm1hc2sgPSBGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcik7IH0KKyAgICB2b2lkIGluaGVyaXRN
YXNrTGF5ZXJzKGNvbnN0IEZpbGxMYXllciYgcGFyZW50KSB7IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkubWFzayA9IHBhcmVudDsgfQogCi0gICAgdm9pZCBhZGp1c3RNYXNrTGF5ZXJz
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtYXNrTGF5ZXJzKCktPm5leHQoKSkgewotICAgICAgICAg
ICAgZW5zdXJlTWFza0xheWVycygpLmN1bGxFbXB0eUxheWVycygpOwotICAgICAgICAgICAgZW5z
dXJlTWFza0xheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICB2b2lkIGFkanVzdE1hc2tMYXllcnMoKTsKIAotICAgIHZvaWQgc2V0TWFza0ltYWdlKFJl
ZlB0cjxTdHlsZUltYWdlPiYmIHYpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
bWFzay5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TWFza0ltYWdlKFJlZlB0
cjxTdHlsZUltYWdlPiYmIHYpIHsgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5tYXNr
LnNldEltYWdlKFdURk1vdmUodikpOyB9CiAKLSAgICB2b2lkIHNldE1hc2tCb3hJbWFnZShjb25z
dCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21h
c2tCb3hJbWFnZSwgYik7IH0KLSAgICB2b2lkIHNldE1hc2tCb3hJbWFnZVNvdXJjZShSZWZQdHI8
U3R5bGVJbWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2tC
b3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQotICAgIHZvaWQgc2V0TWFza1hQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5t
X3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFza1lQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5t
X3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFza1NpemUoTGVu
Z3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3Np
emVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRNYXNrQm94SW1hZ2UoY29u
c3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
YXNrQm94SW1hZ2UsIGIpOyB9CisgICAgdm9pZCBzZXRNYXNrQm94SW1hZ2VTb3VyY2UoUmVmUHRy
PFN0eWxlSW1hZ2U+JiYgdikgeyBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLm1hc2tC
b3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TWFza1hQb3NpdGlv
bihMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtYXNr
Lm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXNrWVBvc2l0
aW9uKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1h
c2subV95UG9zaXRpb24sIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hc2tTaXpl
KExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hc2su
bV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQogCi0gICAgdm9pZCBzZXRCb3JkZXJDb2xs
YXBzZShFQm9yZGVyQ29sbGFwc2UgY29sbGFwc2UpIHsgaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJf
Y29sbGFwc2UgPSBjb2xsYXBzZTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQ29sbGFwc2UoRUJvcmRl
ckNvbGxhcHNlIGNvbGxhcHNlKSB7IG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBj
b2xsYXBzZTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwog
ICAgIHZvaWQgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0KTsKLSAgICB2b2lkIHNldEVt
cHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IGluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2VsbHMgPSB2
OyB9Ci0gICAgdm9pZCBzZXRDYXB0aW9uU2lkZShFQ2FwdGlvblNpZGUgdikgeyBpbmhlcml0ZWRf
ZmxhZ3MuX2NhcHRpb25fc2lkZSA9IHY7IH0KKyAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5
Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IHY7IH0KKyAgICB2b2lkIHNl
dENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNp
ZGUgPSB2OyB9CiAKLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RSYXRpb1R5cGUg
YXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0
UmF0aW9UeXBlLCBhc3BlY3RSYXRpb1R5cGUpOyB9Ci0gICAgdm9pZCBzZXRBc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yLCB2KTsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9OdW1lcmF0
b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVjdFJhdGlv
TnVtZXJhdG9yLCB2KTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlv
VHlwZSBhc3BlY3RSYXRpb1R5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBh
c3BlY3RSYXRpb1R5cGUsIGFzcGVjdFJhdGlvVHlwZSk7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJh
dGlvRGVub21pbmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IGFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHYpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051
bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0
UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RT
dHlsZVR5cGUgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSA9IHY7IH0KKyAg
ICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBtX2luaGVyaXRlZEZs
YWdzLmxpc3RTdHlsZVR5cGUgPSB2OyB9CiAgICAgdm9pZCBzZXRMaXN0U3R5bGVJbWFnZShSZWZQ
dHI8U3R5bGVJbWFnZT4mJik7Ci0gICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihFTGlzdFN0
eWxlUG9zaXRpb24gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gPSB2
OyB9Ci0KLSAgICB2b2lkIHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4s
IExlbmd0aEJveChGaXhlZCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoIGxlbmd0
aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0K
LSAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFy
Z2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5sZWZ0KCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpblJpZ2h0KExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7
IH0KLSAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7Ci0gICAgdm9pZCBzZXRNYXJnaW5F
bmQoTGVuZ3RoKTsKLQotICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm94KExl
bmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgV1RGTW92ZShib3gpKTsg
fQotICAgIHZvaWQgc2V0UGFkZGluZ1RvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIHBhZGRpbmcudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRp
bmdCb3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLmJvdHRv
bSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVmdCgpLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KLQotICAgIHZv
aWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9
IGM7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSB2OyB9CisKKyAgICB2b2lk
IHJlc2V0TWFyZ2luKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4sIExlbmd0aEJv
eChGaXhlZCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Ub3AoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNF
VF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbi50b3AoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQor
ICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vy
cm91bmREYXRhLCBtYXJnaW4uYm90dG9tKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lk
IHNldE1hcmdpbkxlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEs
IG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblJp
Z2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4ucmln
aHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luU3RhcnQoTGVuZ3Ro
JiYpOworICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCYmKTsKKworICAgIHZvaWQgcmVzZXRQ
YWRkaW5nKCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0
bykpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCYmIGJveCkgeyBTRVRfVkFS
KG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLCBXVEZNb3ZlKGJveCkpOyB9CisgICAgdm9pZCBzZXRQ
YWRkaW5nVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRk
aW5nLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm90dG9t
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLmJvdHRv
bSgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy5sZWZ0KCksIFdURk1v
dmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGgmJiBsZW5ndGgp
IHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgcGFkZGluZy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0
aCkpOyB9CisKKyAgICB2b2lkIHNldEN1cnNvcihFQ3Vyc29yIGMpIHsgbV9pbmhlcml0ZWRGbGFn
cy5jdXJzb3IgPSBjOyB9CiAgICAgdm9pZCBhZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYs
IGNvbnN0IEludFBvaW50JiBob3RTcG90ID0gSW50UG9pbnQoKSk7CiAgICAgdm9pZCBzZXRDdXJz
b3JMaXN0KFJlZlB0cjxDdXJzb3JMaXN0PiYmKTsKICAgICB2b2lkIGNsZWFyQ3Vyc29yTGlzdCgp
OwogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIHZvaWQgc2V0Q3Vyc29yVmlz
aWJpbGl0eShDdXJzb3JWaXNpYmlsaXR5IGMpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fY3Vyc29yVmlz
aWJpbGl0eSA9IGM7IH0KKyAgICB2b2lkIHNldEN1cnNvclZpc2liaWxpdHkoQ3Vyc29yVmlzaWJp
bGl0eSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGM7IH0KICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgaW5o
ZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQotICAgIHZvaWQgc2V0SXNM
aW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNMaW5rKGIpOyB9CisgICAgdm9p
ZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgbV9pbmhlcml0ZWRGbGFn
cy5pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQorICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikg
eyBtX25vbkluaGVyaXRlZEZsYWdzLnNldElzTGluayhiKTsgfQogCi0gICAgdm9pZCBzZXRJbnNp
ZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbikgeyBpbmhlcml0ZWRfZmxh
Z3MuX2luc2lkZURlZmF1bHRCdXR0b24gPSBpbnNpZGVEZWZhdWx0QnV0dG9uOyB9CisgICAgdm9p
ZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbikgeyBtX2lu
aGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBpbnNpZGVEZWZhdWx0QnV0dG9uOyB9
CiAKLSAgICBQcmludENvbG9yQWRqdXN0IHByaW50Q29sb3JBZGp1c3QoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQcmludENvbG9yQWRqdXN0Pihpbmhlcml0ZWRfZmxhZ3MubV9wcmludENv
bG9yQWRqdXN0KTsgfQotICAgIHZvaWQgc2V0UHJpbnRDb2xvckFkanVzdChQcmludENvbG9yQWRq
dXN0IHZhbHVlKSB7IGluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QgPSB2YWx1ZTsg
fQorICAgIFByaW50Q29sb3JBZGp1c3QgcHJpbnRDb2xvckFkanVzdCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFByaW50Q29sb3JBZGp1c3Q+KG1faW5oZXJpdGVkRmxhZ3MucHJpbnRDb2xv
ckFkanVzdCk7IH0KKyAgICB2b2lkIHNldFByaW50Q29sb3JBZGp1c3QoUHJpbnRDb2xvckFkanVz
dCB2YWx1ZSkgeyBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QgPSB2YWx1ZTsgfQog
Ci0gICAgYm9vbCBoYXNBdXRvWkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPmhhc0F1dG9a
SW5kZXgoKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveCwg
bV9oYXNBdXRvWkluZGV4LCB0cnVlKTsgU0VUX1ZBUihtX2JveCwgbV96SW5kZXgsIDApOyB9Ci0g
ICAgaW50IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT56SW5kZXgoKTsgfQotICAgIHZv
aWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgZmFs
c2UpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwgdik7IH0KKyAgICBib29sIGhhc0F1dG9aSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPmhhc0F1dG9aSW5kZXgoKTsgfQorICAgIHZv
aWQgc2V0SGFzQXV0b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1faGFzQXV0b1pJbmRl
eCwgdHJ1ZSk7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3pJbmRleCwgMCk7IH0KKyAgICBpbnQgeklu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ib3hEYXRhLT56SW5kZXgoKTsgfQorICAgIHZvaWQgc2V0
WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3hEYXRhLCBtX2hhc0F1dG9aSW5kZXgsIGZhbHNl
KTsgU0VUX1ZBUihtX2JveERhdGEsIG1fekluZGV4LCB2KTsgfQogCi0gICAgdm9pZCBzZXRIYXNB
dXRvV2lkb3dzKCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9XaWRvd3Ms
IHRydWUpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB3aWRvd3MsIGluaXRpYWxXaWRvd3Mo
KSk7IH0KLSAgICB2b2lkIHNldFdpZG93cyhzaG9ydCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1faGFzQXV0b1dpZG93cywgZmFsc2UpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB3aWRvd3MsIHcpOyB9CisgICAgdm9pZCBzZXRIYXNBdXRvV2lkb3dzKCkgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGhhc0F1dG9XaWRvd3MsIHRydWUpOyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygpKTsgfQorICAgIHZvaWQgc2V0V2lk
b3dzKHNob3J0IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYXNBdXRvV2lkb3dz
LCBmYWxzZSk7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dzLCB3KTsgfQogCi0g
ICAgdm9pZCBzZXRIYXNBdXRvT3JwaGFucygpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bV9oYXNBdXRvT3JwaGFucywgdHJ1ZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG9ycGhh
bnMsIGluaXRpYWxPcnBoYW5zKCkpOyB9Ci0gICAgdm9pZCBzZXRPcnBoYW5zKHNob3J0IG8pIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3JwaGFucywgZmFsc2UpOyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQorICAgIHZvaWQgc2V0SGFzQXV0
b09ycGhhbnMoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFzQXV0b09ycGhhbnMs
IHRydWUpOyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIGluaXRpYWxPcnBo
YW5zKCkpOyB9CisgICAgdm9pZCBzZXRPcnBoYW5zKHNob3J0IG8pIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBoYXNBdXRvT3JwaGFucywgZmFsc2UpOyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIG9ycGhhbnMsIG8pOyB9CiAKICAgICAvLyBDU1MzIFNldHRlcnMKLSAgICB2b2lk
IHNldE91dGxpbmVPZmZzZXQoZmxvYXQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRs
aW5lLm1fb2Zmc2V0LCB2KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZU9mZnNldChmbG9hdCB2KSB7
IFNFVF9WQVIobV9iYWNrZ3JvdW5kRGF0YSwgb3V0bGluZS5tX29mZnNldCwgdik7IH0KICAgICB2
b2lkIHNldFRleHRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9
IGZhbHNlKTsKLSAgICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgYykgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlQ29sb3IsIGMpOyB9Ci0gICAgdm9p
ZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQgdykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0
IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIGMp
OyB9Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxvYXQgdiA9IGNsYW1wVG88Zmxv
YXQ+KGYsIDAsIDEpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29wYWNpdHksIHYp
OyB9Ci0gICAgdm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBlYXJhbmNlLCBhKTsgfQorICAgIHZvaWQgc2V0VGV4dFN0
cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFN0cm9rZUNvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0
IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9
CisgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0KKyAgICB2b2lkIHNldE9wYWNp
dHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4oZiwgMCwgMSk7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0eSwgdik7IH0KKyAgICB2b2lkIHNldEFwcGVh
cmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFw
cGVhcmFuY2UsIGEpOyB9CiAgICAgLy8gRm9yIHZhbGlkIHZhbHVlcyBvZiBib3gtYWxpZ24gc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy1mbGV4Ym94LTIwMDkwNzIzLyNhbGln
bm1lbnQKLSAgICB2b2lkIHNldEJveEFsaWduKEVCb3hBbGlnbm1lbnQgYSkgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGFsaWdu
LCBhKTsgfQorICAgIHZvaWQgc2V0Qm94QWxpZ24oRUJveEFsaWdubWVudCBhKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgYWxp
Z24sIGEpOyB9CisgICAgdm9pZCBzZXRCb3hEaXJlY3Rpb24oRUJveERpcmVjdGlvbiBkKSB7IG1f
aW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0gZDsgfQorICAgIHZvaWQgc2V0Qm94RmxleChm
bG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0
ZWRGbGV4aWJsZUJveCwgZmxleCwgZik7IH0KKyAgICB2b2lkIHNldEJveEZsZXhHcm91cCh1bnNp
Z25lZCBncm91cCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXBy
ZWNhdGVkRmxleGlibGVCb3gsIGZsZXhHcm91cCwgZ3JvdXApOyB9CisgICAgdm9pZCBzZXRCb3hM
aW5lcyhFQm94TGluZXMgbGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBsaW5lcywgbGluZXMpOyB9CisgICAgdm9pZCBz
ZXRCb3hPcmRpbmFsR3JvdXAodW5zaWduZWQgZ3JvdXApIHsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmRpbmFsR3JvdXAsIGdy
b3VwKTsgfQorICAgIHZvaWQgc2V0Qm94T3JpZW50KEVCb3hPcmllbnQgbykgeyBTRVRfTkVTVEVE
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIG9yaWVu
dCwgbyk7IH0KKyAgICB2b2lkIHNldEJveFBhY2soRUJveFBhY2sgcCkgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBkZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHAp
OyB9CisgICAgdm9pZCBzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBi
b29sIGFkZCA9IGZhbHNlKTsKKyAgICB2b2lkIHNldEJveFJlZmxlY3QoUmVmUHRyPFN0eWxlUmVm
bGVjdGlvbj4mJik7CisgICAgdm9pZCBzZXRCb3hTaXppbmcoRUJveFNpemluZyBzKSB7IFNFVF9W
QVIobV9ib3hEYXRhLCBtX2JveFNpemluZywgcyk7IH0KKyAgICB2b2lkIHNldEZsZXhHcm93KGZs
b2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxleGlibGVC
b3gsIGZsZXhHcm93LCBmKTsgfQorICAgIHZvaWQgc2V0RmxleFNocmluayhmbG9hdCBmKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94LCBmbGV4U2hy
aW5rLCBmKTsgfQorICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJsZUJveCwgZmxleEJhc2lz
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9yZGVyLCBvKTsgfQorICAgIHZvaWQgc2V0QWxpZ25D
b250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkNvbnRlbnQsIGRhdGEpOyB9CisgICAgdm9pZCBz
ZXRBbGlnbkl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhbGlnbkl0ZW1zLCBkYXRhKTsgfQorICAgIHZvaWQg
c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduSXRlbXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9
CisgICAgdm9pZCBzZXRBbGlnblNlbGYoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0
YSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFsaWduU2VsZiwgZGF0YSk7IH0K
KyAgICB2b2lkIHNldEFsaWduU2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFsaWduU2VsZi5zZXRQb3NpdGlvbihwb3Np
dGlvbik7IH0KKyAgICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0
aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZsZXhpYmxlQm94
LCBmbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9CisgICAgdm9pZCBzZXRGbGV4V3JhcChFRmxl
eFdyYXAgdykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmbGV4aWJs
ZUJveCwgZmxleFdyYXAsIHcpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudChjb25zdCBT
dHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwganVzdGlmeUNvbnRlbnQsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5Q29u
dGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbiBwb3NpdGlvbikgeyBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmp1c3RpZnlDb250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQor
ICAgIHZvaWQgc2V0SnVzdGlmeUl0ZW1zKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRh
dGEpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBqdXN0aWZ5SXRlbXMsIGRhdGEp
OyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRh
JiBkYXRhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwganVzdGlmeVNlbGYsIGRh
dGEpOyB9CisKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQotICAgIHZvaWQg
c2V0Qm94RGVjb3JhdGlvbkJyZWFrKEVCb3hEZWNvcmF0aW9uQnJlYWsgYikgeyBTRVRfVkFSKG1f
Ym94LCBtX2JveERlY29yYXRpb25CcmVhaywgYik7IH0KKyAgICB2b2lkIHNldEJveERlY29yYXRp
b25CcmVhayhFQm94RGVjb3JhdGlvbkJyZWFrIGIpIHsgU0VUX1ZBUihtX2JveERhdGEsIG1fYm94
RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQogI2VuZGlmCi0gICAgdm9pZCBzZXRCb3hEaXJlY3Rpb24o
RUJveERpcmVjdGlvbiBkKSB7IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9IGQ7IH0K
LSAgICB2b2lkIHNldEJveEZsZXgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXgsIGYpOyB9Ci0gICAgdm9p
ZCBzZXRCb3hGbGV4R3JvdXAodW5zaWduZWQgaW50IGZnKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleF9ncm91cCwgZmcp
OyB9Ci0gICAgdm9pZCBzZXRCb3hMaW5lcyhFQm94TGluZXMgbCkgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGxpbmVzLCBsKTsg
fQotICAgIHZvaWQgc2V0Qm94T3JkaW5hbEdyb3VwKHVuc2lnbmVkIGludCBvZykgeyBTRVRfTkVT
VEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIG9y
ZGluYWxfZ3JvdXAsIG9nKTsgfQotICAgIHZvaWQgc2V0Qm94T3JpZW50KEVCb3hPcmllbnQgbykg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGli
bGVCb3gsIG9yaWVudCwgbyk7IH0KLSAgICB2b2lkIHNldEJveFBhY2soRUJveFBhY2sgcCkgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVC
b3gsIHBhY2ssIHApOyB9Ci0gICAgdm9pZCBzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNo
YWRvd0RhdGE+LCBib29sIGFkZCA9IGZhbHNlKTsKLSAgICB2b2lkIHNldEJveFJlZmxlY3QoUmVm
UHRyPFN0eWxlUmVmbGVjdGlvbj4mJiByZWZsZWN0KSB7IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ib3hSZWZsZWN0ICE9IHJlZmxlY3QpIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2JveFJlZmxlY3QgPSBXVEZNb3ZlKHJlZmxlY3QpOyB9Ci0gICAgdm9pZCBzZXRCb3hTaXpp
bmcoRUJveFNpemluZyBzKSB7IFNFVF9WQVIobV9ib3gsIG1fYm94U2l6aW5nLCBzKTsgfQotICAg
IHZvaWQgc2V0RmxleEdyb3coZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4R3JvdywgZik7IH0KLSAgICB2b2lkIHNldEZs
ZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9mbGV4aWJsZUJveCwgbV9mbGV4U2hyaW5rLCBmKTsgfQotICAgIHZvaWQgc2V0RmxleEJhc2lz
KExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
ZmxleGlibGVCb3gsIG1fZmxleEJhc2lzLCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBz
ZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29yZGVyLCBv
KTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVu
dERhdGEmIGRhdGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkNvbnRl
bnQsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9z
aXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25D
b250ZW50LnNldFBvc2l0aW9uKHBvc2l0aW9uKTsgfQotICAgIHZvaWQgc2V0QWxpZ25Db250ZW50
T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fYWxpZ25Db250ZW50LnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQotICAg
IHZvaWQgc2V0QWxpZ25Db250ZW50RGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmlidXRpb25UeXBl
IGRpc3RyaWJ1dGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkNv
bnRlbnQuc2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWdu
SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXMsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRBbGln
bkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAg
dm9pZCBzZXRBbGlnbkl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25JdGVtcy5zZXRPdmVyZmxvdyhv
dmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEFsaWduU2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25TZWxm
LCBkYXRhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBv
c2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduU2VsZi5zZXRQ
b3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEFsaWduU2VsZk92ZXJmbG93KE92ZXJm
bG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2FsaWduU2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldEZsZXhEaXJl
Y3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhEaXJlY3Rpb24sIGRpcmVjdGlvbik7
IH0KLSAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3JhcCB3KSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2ZsZXhpYmxlQm94LCBtX2ZsZXhXcmFwLCB3KTsgfQotICAg
IHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYg
ZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlDb250ZW50LCBk
YXRhKTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRp
b24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUNv
bnRlbnQuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVu
dE92ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2p1c3RpZnlDb250ZW50LnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQot
ICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlv
blR5cGUgZGlzdHJpYnV0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1
c3RpZnlDb250ZW50LnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOyB9Ci0gICAgdm9pZCBz
ZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVtcywgZGF0YSk7IH0KLSAgICB2
b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0UG9zaXRpb24ocG9z
aXRpb24pOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNPdmVyZmxvdyhPdmVyZmxvd0FsaWdu
bWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5
SXRlbXMuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNQ
b3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUpIHsgcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldFBvc2l0aW9uVHlwZShwb3NpdGlv
blR5cGUpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeVNl
bGYsIGRhdGEpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKEl0ZW1Qb3NpdGlv
biBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5U2Vs
Zi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmT3ZlcmZs
b3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fanVzdGlmeVNlbGYuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9CisKICNpZiBFTkFC
TEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIHZvaWQgc2V0R3JpZEF1dG9Db2x1bW5zKGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplTGlzdCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRBdXRvQ29sdW1ucywgdHJhY2tTaXplTGlz
dCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6
ZT4mIHRyYWNrU2l6ZUxpc3QpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZ3JpZCwgbV9ncmlkQXV0b1Jvd3MsIHRyYWNrU2l6ZUxpc3QpOyB9Ci0gICAgdm9pZCBzZXRH
cmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQ29sdW1ucywgbGVu
Z3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1
bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucywg
bGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93cyhjb25zdCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVhdFJvd3MsIGxlbmd0aHMpOyB9Ci0gICAgdm9p
ZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChjb25zdCB1bnNpZ25lZCBp
bnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsg
fQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoY29uc3QgdW5z
aWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50LCBpbnNlcnRpb25Qb2lu
dCk7IH0KLSAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoY29uc3QgQXV0b1Jl
cGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsg
fQotICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzVHlwZShjb25zdCBBdXRvUmVwZWF0VHlw
ZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9ncmlkLCBtX2F1dG9SZXBlYXRSb3dzVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9Ci0gICAgdm9p
ZCBzZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRH
cmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
Z3JpZCwgbV9uYW1lZEdyaWRDb2x1bW5MaW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0g
ICAgdm9pZCBzZXROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFt
ZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
Z3JpZCwgbV9uYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9Ci0gICAgdm9p
ZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExp
bmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMs
IG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KLSAgICB2b2lkIHNldE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9n
cmlkLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KTsgfQotICAgIHZvaWQgc2V0QXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE5h
bWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5M
aW5lcywgbmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFt
ZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVz
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1Jl
cGVhdE5hbWVkR3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KLSAgICB2b2lkIHNl
dEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVk
R3JpZENvbHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9Ci0gICAgdm9p
ZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE9yZGVyZWROYW1l
ZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcywgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQotICAgIHZvaWQgc2V0TmFt
ZWRHcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKSB7IFNFVF9O
RVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYSwg
bmFtZWRHcmlkQXJlYSk7IH0KLSAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChzaXpl
X3Qgcm93Q291bnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3Jp
ZCwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQsIHJvd0NvdW50KTsgfQotICAgIHZvaWQgc2V0TmFt
ZWRHcmlkQXJlYUNvbHVtbkNvdW50KHNpemVfdCBjb2x1bW5Db3VudCkgeyBTRVRfTkVTVEVEX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVkR3JpZEFyZWFDb2x1bW5Db3Vu
dCwgY29sdW1uQ291bnQpOyB9Ci0gICAgdm9pZCBzZXRHcmlkQXV0b0Zsb3coR3JpZEF1dG9GbG93
IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9n
cmlkQXV0b0Zsb3csIGZsb3cpOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtblN0YXJ0KGNv
bnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uU3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkSXRlbSwgbV9ncmlkQ29sdW1uU3RhcnQsIGNvbHVt
blN0YXJ0UG9zaXRpb24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtbkVuZChjb25zdCBH
cmlkUG9zaXRpb24mIGNvbHVtbkVuZFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBvc2l0
aW9uKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dTdGFydChjb25zdCBHcmlkUG9zaXRpb24m
IHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZ3JpZEl0ZW0sIG1fZ3JpZFJvd1N0YXJ0LCByb3dTdGFydFBvc2l0aW9uKTsgfQotICAgIHZv
aWQgc2V0R3JpZEl0ZW1Sb3dFbmQoY29uc3QgR3JpZFBvc2l0aW9uJiByb3dFbmRQb3NpdGlvbikg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkSXRlbSwgbV9ncmlk
Um93RW5kLCByb3dFbmRQb3NpdGlvbik7IH0KLSAgICB2b2lkIHNldEdyaWRDb2x1bW5HYXAoY29u
c3QgTGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dy
aWQsIG1fZ3JpZENvbHVtbkdhcCwgdik7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dHYXAoY29uc3Qg
TGVuZ3RoJiB2KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQs
IG1fZ3JpZFJvd0dhcCwgdik7IH0KLSNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAq
LwotICAgIHZvaWQgc2V0TWFycXVlZUluY3JlbWVudChMZW5ndGggbGVuZ3RoKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGluY3JlbWVudCwgV1RGTW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZVNwZWVkKGludCBmKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIHNwZWVkLCBmKTsgfQotICAg
IHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVlZURpcmVjdGlvbiBkKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGRpcmVjdGlvbiwgZCk7IH0K
LSAgICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihFTWFycXVlZUJlaGF2aW9yIGIpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9
Ci0gICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50KGludCBpKSB7IFNFVF9ORVNURURfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX21hcnF1ZWUsIGxvb3BzLCBpKTsgfQotICAgIHZvaWQgc2V0
VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVz
ZXJNb2RpZnksIHUpOyB9Ci0gICAgdm9pZCBzZXRVc2VyRHJhZyhFVXNlckRyYWcgZCkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2VyRHJhZywgZCk7IH0KLSAgICB2b2lkIHNldFVz
ZXJTZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1c2Vy
U2VsZWN0LCBzKTsgfQotICAgIHZvaWQgc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVy
ZmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0T3ZlcmZsb3csIG92ZXJm
bG93KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UoRU1hcmdpbkNvbGxhcHNl
IGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFyZ2luQmVmb3JlQ29sbGFwc2Us
IGMpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBj
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMp
OyB9Ci0gICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdvcmRCcmVhayBiKSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHdvcmRCcmVhaywgYik7IH0KLSAgICB2b2lkIHNldE92ZXJmbG93V3JhcChF
T3ZlcmZsb3dXcmFwIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgb3ZlcmZsb3dXcmFw
LCBiKTsgfQotICAgIHZvaWQgc2V0TkJTUE1vZGUoRU5CU1BNb2RlIGIpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9Ci0gICAgdm9pZCBzZXRMaW5lQnJlYWsoTGlu
ZUJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbGluZUJyZWFrLCBiKTsgfQot
ICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgaHlwaGVucywgaCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRCZWZvcmUoc2hv
cnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEJl
Zm9yZSwgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQg
bGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVy
LCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1p
dCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMsIGxp
bWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25TdHJpbmcoY29uc3QgQXRvbWljU3RyaW5n
JiBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsg
fQotICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2JvcmRlckZpdCwgYik7IH0KLSAgICB2b2lkIHNldFJlc2l6ZShFUmVz
aXplIHIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZXNpemUsIHIpOyB9Ci0g
ICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9heGlzLCBheGlzKTsgfQotICAgIHZv
aWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1uUHJvZ3Jlc3Npb24gcHJvZ3Jlc3Npb24pIHsg
U0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fcHJvZ3Jl
c3Npb24sIHByb2dyZXNzaW9uKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uV2lkdGgoZmxvYXQgZikg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9hdXRv
V2lkdGgsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVs
dGlDb2wsIG1fd2lkdGgsIGYpOyB9Ci0gICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uV2lkdGgoKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBtX2F1dG9X
aWR0aCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRp
Q29sLCBtX3dpZHRoLCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uQ291bnQodW5zaWduZWQgc2hv
cnQgYykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwg
bV9hdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbXVsdGlDb2wsIG1fY291bnQsIGMpOyB9Ci0gICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uQ291
bnQoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBt
X2F1dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX2NvdW50LCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uRmlsbChDb2x1bW5G
aWxsIGNvbHVtbkZpbGwpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bXVsdGlDb2wsIG1fZmlsbCwgY29sdW1uRmlsbCk7IH0KLSAgICB2b2lkIHNldENvbHVtbkdhcChm
bG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29s
LCBtX25vcm1hbEdhcCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9tdWx0aUNvbCwgbV9nYXAsIGYpOyB9Ci0gICAgdm9pZCBzZXRIYXNOb3JtYWxDb2x1bW5H
YXAoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX211bHRpQ29sLCBt
X25vcm1hbEdhcCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX2dhcCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25z
dCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwgYyk7IH0KLSAgICB2b2lkIHNldENvbHVtblJ1
bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxlLm1fc3R5bGUsIGIpOyB9Ci0gICAgdm9pZCBzZXRDb2x1
bW5SdWxlV2lkdGgodW5zaWduZWQgc2hvcnQgdykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9ydWxlLm1fd2lkdGgsIHcpOyB9Ci0gICAgdm9pZCBy
ZXNldENvbHVtblJ1bGUoKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X211bHRpQ29sLCBtX3J1bGUsIEJvcmRlclZhbHVlKCkpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5T
cGFuKENvbHVtblNwYW4gY29sdW1uU3BhbikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9tdWx0aUNvbCwgbV9jb2x1bW5TcGFuLCBjb2x1bW5TcGFuKTsgfQotICAgIHZv
aWQgaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQp
IHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wgPSBwYXJlbnQtPnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sOyB9Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV9vcGVyYXRpb25zLCBvcHMpOyB9Ci0gICAgdm9p
ZCBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtLCBtX3gsIFdURk1vdmUobGVuZ3RoKSk7IH0K
LSAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfTkVTVEVE
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90cmFuc2Zvcm0sIG1feSwgV1RGTW92ZShsZW5n
dGgpKTsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybSwgbV96LCBmKTsgfQotICAg
IHZvaWQgc2V0U3BlYWsoRVNwZWFrIHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgc3Bl
YWssIHMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdGV4dENvbWJpbmUsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRl
eHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHRleHRFbXBoYXNpc0NvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsIGZpbGwpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEVtcGhhc2lzRmlsbCwgZmlsbCk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4
dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc01hcmssIG1hcmspOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNv
bnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzUG9z
aXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgdGV4dEVtcGhhc2lzUG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0
R3JpZEF1dG9Db2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplTGlz
dCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0
b0NvbHVtbnMsIHRyYWNrU2l6ZUxpc3QpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1Jvd3MoY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVMaXN0KSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGdyaWRBdXRvUm93cywgdHJhY2tTaXplTGlz
dCk7IH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlk
LCBncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBncmlkLCBncmlkUm93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdy
aWRBdXRvUmVwZWF0Q29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMp
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dz
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkLCBncmlkQXV0b1JlcGVhdFJvd3MsIGxlbmd0aHMp
OyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChjb25z
dCB1bnNpZ25lZCBpbnNlcnRpb25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50LCBpbnNlcnRp
b25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQsIGluc2Vy
dGlvblBvaW50KTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZShjb25z
dCBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Q29sdW1uc1R5cGUsIGF1dG9SZXBlYXRU
eXBlKTsgfQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzVHlwZShjb25zdCBBdXRvUmVw
ZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBncmlkLCBhdXRvUmVwZWF0Um93c1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsgfQorICAg
IHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIGdyaWQsIG5hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0K
KyAgICB2b2lkIHNldE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBu
YW1lZEdyaWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBncmlkLCBuYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9p
ZCBzZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExp
bmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzLCBv
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9pZCBzZXRPcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZCwgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9
CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRH
cmlkTGluZXNNYXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcywg
bmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlk
Um93TGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXROYW1l
ZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9pZCBzZXRBdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5l
c01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1u
TGluZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVz
TWFwJiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZCwgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcywg
b3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShj
b25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWEsIG5hbWVkR3JpZEFyZWEp
OyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93Q291bnQoc2l6ZV90IHJvd0NvdW50KSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFy
ZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CisgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCwgY29sdW1uQ291bnQpOyB9
CisgICAgdm9pZCBzZXRHcmlkQXV0b0Zsb3coR3JpZEF1dG9GbG93IGZsb3cpIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZEF1dG9GbG93LCBmbG93KTsg
fQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5TdGFydChjb25zdCBHcmlkUG9zaXRpb24mIGNv
bHVtblN0YXJ0UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgZ3JpZEl0ZW0sIGdyaWRDb2x1bW5TdGFydCwgY29sdW1uU3RhcnRQb3NpdGlvbik7IH0KKyAg
ICB2b2lkIHNldEdyaWRJdGVtQ29sdW1uRW5kKGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uRW5k
UG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0
ZW0sIGdyaWRDb2x1bW5FbmQsIGNvbHVtbkVuZFBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3Jp
ZEl0ZW1Sb3dTdGFydChjb25zdCBHcmlkUG9zaXRpb24mIHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRSb3dTdGFy
dCwgcm93U3RhcnRQb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEdyaWRJdGVtUm93RW5kKGNvbnN0
IEdyaWRQb3NpdGlvbiYgcm93RW5kUG9zaXRpb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgZ3JpZEl0ZW0sIGdyaWRSb3dFbmQsIHJvd0VuZFBvc2l0aW9uKTsgfQor
ICAgIHZvaWQgc2V0R3JpZENvbHVtbkdhcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZENvbHVtbkdhcCwgV1RGTW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0R3JpZFJvd0dhcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgZ3JpZFJvd0dhcCwgV1RG
TW92ZShsZW5ndGgpKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisKKyAg
ICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGluY3JlbWVudCwgV1RGTW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFycXVlZVNwZWVkKGludCBmKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIHNwZWVkLCBmKTsgfQorICAgIHZv
aWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVlZURpcmVjdGlvbiBkKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGRpcmVjdGlvbiwgZCk7IH0KKyAg
ICB2b2lkIHNldE1hcnF1ZWVCZWhhdmlvcihFTWFycXVlZUJlaGF2aW9yIGIpIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9Cisg
ICAgdm9pZCBzZXRNYXJxdWVlTG9vcENvdW50KGludCBpKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1hcnF1ZWUsIGxvb3BzLCBpKTsgfQorICAgIHZvaWQgc2V0VXNl
ck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdXNl
ck1vZGlmeSwgdSk7IH0KKyAgICB2b2lkIHNldFVzZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdXNlckRyYWcsIGQpOyB9CisgICAgdm9pZCBzZXRV
c2VyU2VsZWN0KEVVc2VyU2VsZWN0IHMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB1
c2VyU2VsZWN0LCBzKTsgfQorICAgIHZvaWQgc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdyBv
dmVyZmxvdykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRPdmVyZmxvdywg
b3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29s
bGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkJlZm9yZUNv
bGxhcHNlLCBjKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29s
bGFwc2UgYykgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG1hcmdpbkFmdGVyQ29s
bGFwc2UsIGMpOyB9CisgICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdvcmRCcmVhayBiKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgd29yZEJyZWFrLCBiKTsgfQorICAgIHZvaWQgc2V0T3Zl
cmZsb3dXcmFwKEVPdmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IG92ZXJmbG93V3JhcCwgYik7IH0KKyAgICB2b2lkIHNldE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9CisgICAgdm9pZCBz
ZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBs
aW5lQnJlYWssIGIpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbnMsIGgpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5h
dGlvbkxpbWl0QmVmb3JlKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGltaXQpOyB9CisgICAgdm9pZCBzZXRIeXBoZW5h
dGlvbkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsIGxpbWl0KTsgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRp
b25MaW1pdExpbmVzKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aHlwaGVuYXRpb25MaW1pdExpbmVzLCBsaW1pdCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9u
U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3Jk
ZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwgYik7
IH0KKyAgICB2b2lkIHNldFJlc2l6ZShFUmVzaXplIHIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCByZXNpemUsIHIpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4
aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNv
bCwgYXhpcywgYXhpcyk7IH0KKyAgICB2b2lkIHNldENvbHVtblByb2dyZXNzaW9uKENvbHVtblBy
b2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgcHJvZ3Jlc3Npb24pOyB9CisgICAgdm9pZCBz
ZXRDb2x1bW5XaWR0aChmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG11bHRpQ29sLCBhdXRvV2lkdGgsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdpZHRoLCBmKTsgfQorICAgIHZvaWQgc2V0SGFz
QXV0b0NvbHVtbldpZHRoKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBtdWx0aUNvbCwgYXV0b1dpZHRoLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHdpZHRoLCAwKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQ291
bnQodW5zaWduZWQgc2hvcnQgYykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtdWx0aUNvbCwgYXV0b0NvdW50LCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBjb3VudCwgYyk7IH0KKyAgICB2b2lkIHNldEhhc0F1
dG9Db2x1bW5Db3VudCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bXVsdGlDb2wsIGF1dG9Db3VudCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG11bHRpQ29sLCBjb3VudCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVtbkZpbGwo
Q29sdW1uRmlsbCBjb2x1bW5GaWxsKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG11bHRpQ29sLCBmaWxsLCBjb2x1bW5GaWxsKTsgfQorICAgIHZvaWQgc2V0Q29sdW1u
R2FwKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVs
dGlDb2wsIG5vcm1hbEdhcCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBtdWx0aUNvbCwgZ2FwLCBmKTsgfQorICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29sdW1u
R2FwKCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
bm9ybWFsR2FwLCB0cnVlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bXVsdGlDb2wsIGdhcCwgMCk7IH0KKyAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBD
b2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5tdWx0aUNvbCwgcnVsZSwgYyk7IH0KKyAgICB2b2lkIHNldENvbHVtblJ1bGVTdHls
ZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBtdWx0aUNvbCwgcnVsZS5tX3N0eWxlLCBiKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVdp
ZHRoKHVuc2lnbmVkIHNob3J0IHcpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIHJ1bGUubV93aWR0aCwgdyk7IH0KKyAgICB2b2lkIHJlc2V0Q29sdW1u
UnVsZSgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2ws
IHJ1bGUsIEJvcmRlclZhbHVlKCkpOyB9CisgICAgdm9pZCBzZXRDb2x1bW5TcGFuKENvbHVtblNw
YW4gY29sdW1uU3BhbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
dWx0aUNvbCwgY29sdW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KKyAgICB2b2lkIGluaGVyaXRDb2x1
bW5Qcm9wZXJ0aWVzRnJvbShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50KSB7IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCkubXVsdGlDb2wgPSBwYXJlbnQubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bXVsdGlDb2w7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
dHJhbnNmb3JtLCBvcGVyYXRpb25zLCBvcHMpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1Pcmln
aW5YKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCB0cmFuc2Zvcm0sIHgsIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRyYW5z
Zm9ybU9yaWdpblkoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQg
c2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIHRyYW5zZm9ybSwgeiwgZik7IH0KKyAgICB2b2lkIHNldFNwZWFrKEVTcGVh
ayBzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9CisgICAgdm9p
ZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgdGV4dENvbWJpbmUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNv
bG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4
dERlY29yYXRpb25Db2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNv
bnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lz
Q29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0Zp
bGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGws
IGZpbGwpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsg
bWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1h
cmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1
c3RvbU1hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0
RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KICAgICBib29sIHNldFRleHRPcmll
bnRhdGlvbihUZXh0T3JpZW50YXRpb24pOwogCi0gICAgdm9pZCBzZXRPYmplY3RGaXQoT2JqZWN0
Rml0IGZpdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29iamVjdEZpdCwgZml0
KTsgfQotICAgIHZvaWQgc2V0T2JqZWN0UG9zaXRpb24oY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0
aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb2JqZWN0UG9zaXRpb24sIHBv
c2l0aW9uKTsgfQorICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RGaXQsIGZpdCk7IH0KKyAgICB2b2lkIHNl
dE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3NpdGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9CisK
KyAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24sIHBvc2l0aW9uKTsgfQogCi0gICAg
dm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIG1fcnVieVBvc2l0aW9uLCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNl
dEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgZmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAKLSAgICB2
b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZmlsdGVyLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0K
ICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXIo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2JhY2tkcm9wRmlsdGVyLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0KKyAgICB2
b2lkIHNldEJhY2tkcm9wRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBiYWNrZHJvcEZpbHRlciwgb3BlcmF0
aW9ucywgb3BzKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRhYlNpemUodW5zaWduZWQgc2l6
ZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RhYlNpemUsIHNpemUpOyB9CisgICAg
dm9pZCBzZXRUYWJTaXplKHVuc2lnbmVkIHNpemUpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0YWJTaXplLCBzaXplKTsgfQogCi0gICAgdm9pZCBzZXRCcmVha0JlZm9yZShCcmVha0Jl
dHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2Jy
ZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQotICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVh
a0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2JyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVha0luc2lkZShC
cmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVha0JlZm9y
ZShCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGJyZWFrQmVmb3JlLCBicmVha0JlaGF2aW9yKTsgfQorICAgIHZvaWQgc2V0QnJlYWtB
ZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGJyZWFrQWZ0ZXIsIGJyZWFrQmVoYXZpb3IpOyB9CisgICAgdm9pZCBzZXRCcmVh
a0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIGJyZWFrQmVoYXZpb3IpOyB9CiAgICAgCi0gICAgdm9p
ZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1bmN0dWF0aW9uIHB1bmN0dWF0aW9uKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFuZ2luZ1B1bmN0dWF0aW9uLCBwdW5jdHVh
dGlvbik7IH0KKyAgICB2b2lkIHNldEhhbmdpbmdQdW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRp
b24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYW5naW5nUHVu
Y3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQogCiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwogCi0g
ICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUdyaWQsIGxpbmVHcmlkKTsgfQotICAgIHZvaWQg
c2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgbV9saW5lU25hcCwgbGluZVNuYXApOyB9Ci0gICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFs
aWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVBbGlnbiwg
bGluZUFsaWduKTsgfQorICAgIHZvaWQgc2V0TGluZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBs
aW5lR3JpZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVHcmlkLCBsaW5lR3Jp
ZCk7IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIGxpbmVTbmFwKTsgfQorICAgIHZvaWQgc2V0
TGluZUFsaWduKExpbmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBsaW5lQWxpZ24sIGxpbmVBbGlnbik7IH0KIAotICAgIHZvaWQgc2V0Rmxvd1RocmVhZChj
b25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9mbG93VGhyZWFkLCBmbG93VGhyZWFkKTsgfQotICAgIHZvaWQgc2V0UmVnaW9uVGhy
ZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fcmVnaW9uVGhyZWFkLCByZWdpb25UaHJlYWQpOyB9Ci0gICAgdm9pZCBz
ZXRSZWdpb25GcmFnbWVudChSZWdpb25GcmFnbWVudCByZWdpb25GcmFnbWVudCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvbkZyYWdtZW50LCByZWdpb25GcmFnbWVudCk7
IH0KKyAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFk
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmxvd1RocmVhZCwgZmxvd1RocmVh
ZCk7IH0KKyAgICB2b2lkIHNldFJlZ2lvblRocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIHJlZ2lv
blRocmVhZCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHJlZ2lvblRocmVhZCwg
cmVnaW9uVGhyZWFkKTsgfQorICAgIHZvaWQgc2V0UmVnaW9uRnJhZ21lbnQoUmVnaW9uRnJhZ21l
bnQgcmVnaW9uRnJhZ21lbnQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCByZWdp
b25GcmFnbWVudCwgcmVnaW9uRnJhZ21lbnQpOyB9CiAKLSAgICAvLyBBcHBsZS1zcGVjaWZpYyBw
cm9wZXJ0eSBzZXR0ZXJzCi0gICAgdm9pZCBzZXRQb2ludGVyRXZlbnRzKEVQb2ludGVyRXZlbnRz
IHApIHsgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzID0gcDsgfQorICAgIHZvaWQgc2V0
UG9pbnRlckV2ZW50cyhFUG9pbnRlckV2ZW50cyBwKSB7IG1faW5oZXJpdGVkRmxhZ3MucG9pbnRl
ckV2ZW50cyA9IHA7IH0KIAotICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCkKLSAgICB7Ci0gICAg
ICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBudWxscHRy
OwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJUcmFuc2l0aW9ucygpCi0gICAgewotICAgICAgICBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCk7CisgICAgdm9pZCBjbGVhclRyYW5zaXRp
b25zKCk7CiAKLSAgICB2b2lkIGluaGVyaXRBbmltYXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IHBhcmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0g
cGFyZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigqcGFyZW50KSA6IG51bGxw
dHI7IH0KLSAgICB2b2lkIGluaGVyaXRUcmFuc2l0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBw
YXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBw
YXJlbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0
cjsgfQogICAgIHZvaWQgYWRqdXN0QW5pbWF0aW9ucygpOwogICAgIHZvaWQgYWRqdXN0VHJhbnNp
dGlvbnMoKTsKIAotICAgIHZvaWQgc2V0VHJhbnNmb3JtU3R5bGUzRChFVHJhbnNmb3JtU3R5bGUz
RCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtU3R5bGUzRCwg
Yik7IH0KLSAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShFQmFja2ZhY2VWaXNpYmlsaXR5
IGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9iYWNrZmFjZVZpc2liaWxpdHks
IGIpOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVjdGl2ZShmbG9hdCBwKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmUsIHApOyB9Ci0gICAgdm9pZCBzZXRQZXJzcGVj
dGl2ZU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3BlcnNwZWN0aXZlT3JpZ2luWCwgV1RGTW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0
UGVyc3BlY3RpdmVPcmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2
b2lkIHNldFBhZ2VTaXplKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX3BhZ2VTaXplLCBXVEZNb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0UGFnZVNp
emVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGFnZVNpemVUeXBlLCB0KTsgfQotICAgIHZvaWQgcmVzZXRQYWdlU2l6ZVR5cGUoKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBlLCBQQUdFX1NJWkVfQVVUTyk7
IH0KLQotICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRhaW4gYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVCb3hDb250YWluLCBjKTsgfQotICAgIHZvaWQg
c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbGluZUNsYW1wLCBjKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtU3R5bGUzRChFVHJh
bnNmb3JtU3R5bGUzRCBiKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdHJhbnNm
b3JtU3R5bGUzRCwgYik7IH0KKyAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShFQmFja2Zh
Y2VWaXNpYmlsaXR5IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBiYWNrZmFj
ZVZpc2liaWxpdHksIGIpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZShmbG9hdCBwKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmUsIHApOyB9CisgICAgdm9p
ZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblkoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcGVyc3BlY3RpdmVPcmlnaW5ZLCBXVEZNb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBwYWdlU2l6ZSwgV1RGTW92ZShzaXplKSk7IH0KKyAg
ICB2b2lkIHNldFBhZ2VTaXplVHlwZShQYWdlU2l6ZVR5cGUgdCkgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHBhZ2VTaXplVHlwZSwgdCk7IH0KKyAgICB2b2lkIHJlc2V0UGFnZVNp
emVUeXBlKCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHBhZ2VTaXplVHlwZSwg
UEFHRV9TSVpFX0FVVE8pOyB9CisKKyAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExpbmVCb3hD
b250YWluIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQm94Q29udGFpbiwg
Yyk7IH0KKyAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQogICAgIAotICAgIHZvaWQg
c2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXplJiBzaXplKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwgc2l6ZSk7IH0KKyAgICB2b2lkIHNldEluaXRp
YWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGluaXRpYWxMZXR0ZXIsIHNpemUpOyB9CiAgICAgCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdG91Y2hBY3Rpb24sIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih0b3VjaEFjdGlvbikpOyB9CisgICAgdm9pZCBzZXRUb3VjaEFjdGlvbihUb3Vj
aEFjdGlvbiB0b3VjaEFjdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRv
dWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG91Y2hBY3Rpb24pKTsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIC8vIFNjcm9sbCBzbmFwIHBvcnQg
c3R5bGUuCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSYp
OwotICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1RvcChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lk
IHNldFNjcm9sbFBhZGRpbmdCb3R0b20oY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3Jv
bGxQYWRkaW5nTGVmdChjb25zdCBMZW5ndGgmKTsKLSAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdS
aWdodChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBhZGRpbmdUb3AoTGVuZ3Ro
JiYpOworICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ0JvdHRvbShMZW5ndGgmJik7CisgICAgdm9p
ZCBzZXRTY3JvbGxQYWRkaW5nTGVmdChMZW5ndGgmJik7CisgICAgdm9pZCBzZXRTY3JvbGxQYWRk
aW5nUmlnaHQoTGVuZ3RoJiYpOwogCi0gICAgLy8gU2Nyb2xsIHNuYXAgYXJlYSBzdHlsZS4KICAg
ICB2b2lkIHNldFNjcm9sbFNuYXBBbGlnbihjb25zdCBTY3JvbGxTbmFwQWxpZ24mKTsKLSAgICB2
b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Ub3AoY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRT
Y3JvbGxTbmFwTWFyZ2luQm90dG9tKGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgc2V0U2Nyb2xs
U25hcE1hcmdpbkxlZnQoY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFy
Z2luUmlnaHQoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRTY3JvbGxTbmFwTWFyZ2luVG9w
KExlbmd0aCYmKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBNYXJnaW5Cb3R0b20oTGVuZ3RoJiYp
OworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQoTGVuZ3RoJiYpOworICAgIHZvaWQg
c2V0U2Nyb2xsU25hcE1hcmdpblJpZ2h0KExlbmd0aCYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9y
JiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsg
fQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2V0VG91Y2hDYWxsb3V0RW5hYmxlZChib29s
IHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdG91Y2hDYWxsb3V0RW5hYmxlZCwgdik7
IH0KKyAgICB2b2lkIHNldFRvdWNoQ2FsbG91dEVuYWJsZWQoYm9vbCB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdG91Y2hDYWxsb3V0RW5hYmxlZCwgdik7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICB2b2lkIHNldFVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9CisgICAgdm9pZCBzZXRVc2VUb3Vj
aE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCi0gICAgdm9pZCBzZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVz
dG1lbnQgYW5BZGp1c3RtZW50KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTaXpl
QWRqdXN0LCBhbkFkanVzdG1lbnQpOyB9CisgICAgdm9pZCBzZXRUZXh0U2l6ZUFkanVzdChUZXh0
U2l6ZUFkanVzdG1lbnQgYWRqdXN0bWVudCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRTaXplQWRqdXN0LCBhZGp1c3RtZW50KTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFRl
eHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5KTsgfQorICAgIHZvaWQgc2V0
VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgc2VjdXJpdHkpIHsgU0VUX1ZBUihtX3JhcmVJbmhl
cml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIHNlY3VyaXR5KTsgfQogCiAjaWYgRU5BQkxFKENTU19U
UkFJTElOR19XT1JEKQotICAgIHZvaWQgc2V0VHJhaWxpbmdXb3JkKFRyYWlsaW5nV29yZCB2KSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRyYWlsaW5nV29yZCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0VHJhaWxpbmdXb3JkKFRyYWlsaW5nV29yZCB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdHJhaWxpbmdXb3JkLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odikpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgdm9p
ZCBzZXRBcHBsZVBheUJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0dG9uU3R5bGUgdikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FwcGxlUGF5QnV0dG9uU3R5bGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2KSk7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5QnV0dG9uVHlwZShBcHBsZVBh
eUJ1dHRvblR5cGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FwcGxlUGF5
QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0QXBw
bGVQYXlCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxlIHN0eWxlKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0eWxlKSk7IH0KKyAgICB2b2lkIHNldEFwcGxlUGF5QnV0dG9uVHlwZShBcHBsZVBh
eUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFwcGxl
UGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsgfQogI2VuZGlmCiAK
LSAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9z
dmdTdHlsZTsgfQotICAgIFNWR1JlbmRlclN0eWxlJiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJu
ICptX3N2Z1N0eWxlLmFjY2VzcygpOyB9CisgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdTdHlsZTsgfQorICAgIFNWR1JlbmRlclN0eWxlJiBh
Y2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJuIG1fc3ZnU3R5bGUuYWNjZXNzKCk7IH0KIAogICAgIGNv
bnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCkuZmlsbFBhaW50VHlwZSgpOyB9CiAgICAgQ29sb3IgZmlsbFBhaW50Q29sb3IoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWludENvbG9yKCk7IH0KLSAgICB2b2lkIHNldEZpbGxQ
YWludENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0RmlsbFBhaW50
KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhaW50
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0RmlsbFBhaW50
KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGNvbG9yLCBlbXB0eVN0cmluZygpKTsgfQogICAgIGZs
b2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsT3BhY2l0eSgp
OyB9CiAgICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCku
c2V0RmlsbE9wYWNpdHkoZik7IH0KIAogICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgc3Ryb2tlUGFp
bnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VQYWludFR5cGUoKTsgfQog
ICAgIENvbG9yIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0
cm9rZVBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnRDb2xvcihjb25zdCBD
b2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVBhaW50KFNWR19QQUlOVFRZUEVf
UkdCQ09MT1IsIGMsICIiKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VQYWludChTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SLCBjb2xvciwgZW1wdHlTdHJpbmcoKSk7IH0KICAgICBmbG9hdCBzdHJva2VP
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VPcGFjaXR5KCk7IH0KICAg
ICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0
cm9rZU9wYWNpdHkoZik7IH0KICAgICBjb25zdCBMZW5ndGgmIHN0cm9rZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VXaWR0aCgpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VX
aWR0aChMZW5ndGggdykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0cm9rZVdpZHRoKHcpOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VXaWR0aChMZW5ndGgmJiB3KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0
U3Ryb2tlV2lkdGgoV1RGTW92ZSh3KSk7IH0KICAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHN0
cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlRGFzaEFycmF5
KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZURhc2hBcnJheShWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+
IGFycmF5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlRGFzaEFycmF5KGFycmF5KTsgfQog
ICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCkuc3Ryb2tlRGFzaE9mZnNldCgpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VEYXNoT2Zmc2V0
KExlbmd0aCBkKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlRGFzaE9mZnNldChkKTsgfQor
ICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChMZW5ndGgmJiBkKSB7IGFjY2Vzc1NWR1N0eWxl
KCkuc2V0U3Ryb2tlRGFzaE9mZnNldChXVEZNb3ZlKGQpKTsgfQogICAgIGZsb2F0IHN0cm9rZU1p
dGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZU1pdGVyTGltaXQoKTsg
fQogICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxl
KCkuc2V0U3Ryb2tlTWl0ZXJMaW1pdChmKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBjeCgpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuY3goKTsgfQotICAgIHZvaWQgc2V0Q3goTGVuZ3RoIGN4
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Q3goY3gpOyB9CisgICAgdm9pZCBzZXRDeChMZW5ndGgm
JiBjeCkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN4KFdURk1vdmUoY3gpKTsgfQogICAgIGNvbnN0
IExlbmd0aCYgY3koKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmN5KCk7IH0KLSAgICB2b2lk
IHNldEN5KExlbmd0aCBjeSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEN5KGN5KTsgfQorICAgIHZv
aWQgc2V0Q3koTGVuZ3RoJiYgY3kpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRDeShXVEZNb3ZlKGN5
KSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnIo
KTsgfQotICAgIHZvaWQgc2V0UihMZW5ndGggcikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFIocik7
IH0KKyAgICB2b2lkIHNldFIoTGVuZ3RoJiYgcikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFIoV1RG
TW92ZShyKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5yeCgpOyB9Ci0gICAgdm9pZCBzZXRSeChMZW5ndGggcngpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRSeChyeCk7IH0KKyAgICB2b2lkIHNldFJ4KExlbmd0aCYmIHJ4KSB7IGFjY2Vzc1NWR1N0
eWxlKCkuc2V0UngoV1RGTW92ZShyeCkpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByeSgpIGNvbnN0
IHsgcmV0dXJuIHN2Z1N0eWxlKCkucnkoKTsgfQotICAgIHZvaWQgc2V0UnkoTGVuZ3RoIHJ5KSB7
IGFjY2Vzc1NWR1N0eWxlKCkuc2V0UnkocnkpOyB9CisgICAgdm9pZCBzZXRSeShMZW5ndGgmJiBy
eSkgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFJ5KFdURk1vdmUocnkpKTsgfQogICAgIGNvbnN0IExl
bmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkueCgpOyB9Ci0gICAgdm9pZCBzZXRY
KExlbmd0aCB4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WCh4KTsgfQorICAgIHZvaWQgc2V0WChM
ZW5ndGgmJiB4KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WChXVEZNb3ZlKHgpKTsgfQogICAgIGNv
bnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkueSgpOyB9Ci0gICAgdm9p
ZCBzZXRZKExlbmd0aCB5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WSh5KTsgfQorICAgIHZvaWQg
c2V0WShMZW5ndGgmJiB5KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0WShXVEZNb3ZlKHkpKTsgfQog
CiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5mbG9v
ZE9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNz
U1ZHU3R5bGUoKS5zZXRGbG9vZE9wYWNpdHkoZik7IH0KQEAgLTE4MDcsNDAgKzEyOTUsMjUgQEAg
cHVibGljOgogICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmcoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLmtlcm5pbmcoKTsgfQogICAgIHZvaWQgc2V0S2VybmluZyhTVkdMZW5ndGhWYWx1ZSBr
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0S2VybmluZyhrKTsgfQogCi0gICAgdm9pZCBzZXRTaGFw
ZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlID09IHZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zaGFw
ZU91dHNpZGUgPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICB9Ci0gICAgU2hhcGVWYWx1ZSogc2hhcGVP
dXRzaWRlKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRz
aWRlLmdldCgpOyB9Ci0KLSAgICBzdGF0aWMgU2hhcGVWYWx1ZSogaW5pdGlhbFNoYXBlT3V0c2lk
ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFNoYXBlT3V0c2lkZShSZWZQdHI8U2hhcGVW
YWx1ZT4mJik7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVPdXRzaWRlKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVPdXRzaWRlLmdldCgpOyB9CisgICAgc3RhdGlj
IFNoYXBlVmFsdWUqIGluaXRpYWxTaGFwZU91dHNpZGUoKSB7IHJldHVybiBudWxscHRyOyB9CiAK
LSAgICBjb25zdCBMZW5ndGgmIHNoYXBlTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW47IH0KLSAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExl
bmd0aCBzaGFwZU1hcmdpbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBl
TWFyZ2luLCBXVEZNb3ZlKHNoYXBlTWFyZ2luKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHNoYXBl
TWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVNYXJn
aW47IH0KKyAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExlbmd0aCYmIHNoYXBlTWFyZ2luKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVNYXJnaW4sIFdURk1vdmUoc2hhcGVN
YXJnaW4pKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNoYXBlTWFyZ2luKCkgeyByZXR1
cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQogCi0gICAgZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlSW1hZ2VUaHJlc2hv
bGQ7IH0KLSAgICB2b2lkIHNldFNoYXBlSW1hZ2VUaHJlc2hvbGQoZmxvYXQgc2hhcGVJbWFnZVRo
cmVzaG9sZCkgCi0gICAgeyAKLSAgICAgICAgZmxvYXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hv
bGQgPSBjbGFtcFRvPGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xkLCAwLCAxKTsKLSAgICAgICAg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZUltYWdlVGhyZXNob2xkLCBjbGFt
cGVkU2hhcGVJbWFnZVRocmVzaG9sZCk7IAotICAgIH0KKyAgICBmbG9hdCBzaGFwZUltYWdlVGhy
ZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2hhcGVJbWFn
ZVRocmVzaG9sZDsgfQorICAgIHZvaWQgc2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCk7CiAg
ICAgc3RhdGljIGZsb2F0IGluaXRpYWxTaGFwZUltYWdlVGhyZXNob2xkKCkgeyByZXR1cm4gMDsg
fQogCi0gICAgdm9pZCBzZXRDbGlwUGF0aChSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYgb3Bl
cmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQ
YXRoICE9IG9wZXJhdGlvbikKLSAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2NsaXBQYXRoID0gV1RGTW92ZShvcGVyYXRpb24pOwotICAgIH0KLSAgICBDbGlwUGF0
aE9wZXJhdGlvbiogY2xpcFBhdGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9jbGlwUGF0aC5nZXQoKTsgfQotCisgICAgdm9pZCBzZXRDbGlwUGF0aChSZWZQdHI8Q2xp
cFBhdGhPcGVyYXRpb24+JiYpOworICAgIENsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoLmdldCgpOyB9CiAg
ICAgc3RhdGljIENsaXBQYXRoT3BlcmF0aW9uKiBpbml0aWFsQ2xpcFBhdGgoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBjb250ZW50
RGF0YSgpOyB9Ci0gICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVudC5nZXQoKTsgfQotICAgIGJvb2wg
Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4odGhpcyktPnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5jb250ZW50RGF0YUVxdWl2YWxlbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihv
dGhlclN0eWxlKS0+cmFyZU5vbkluaGVyaXRlZERhdGEpOyB9CisgICAgY29uc3QgQ29udGVudERh
dGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Y29udGVudC5nZXQoKTsgfQorICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0
eWxlKj4odGhpcyktPm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvbnRlbnREYXRhRXF1aXZhbGVu
dCgqY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KG90aGVyU3R5bGUpLT5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhKTsgfQogICAgIHZvaWQgY2xlYXJDb250ZW50KCk7CiAgICAgdm9pZCBzZXRDb250ZW50
KGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkID0gZmFsc2UpOwogICAgIHZvaWQgc2V0Q29udGVudChS
ZWZQdHI8U3R5bGVJbWFnZT4mJiwgYm9vbCBhZGQgPSBmYWxzZSk7CkBAIC0xODQ4LDI2ICsxMzIx
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnQoUXVvdGVUeXBlLCBib29sIGFkZCA9
IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAg
IGNvbnN0IFN0cmluZyYgY29udGVudEFsdFRleHQoKSBjb25zdDsKLSAgICBib29sIGhhc0F0dHJD
b250ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXR0ckNv
bnRlbnQ7IH0KKyAgICBib29sIGhhc0F0dHJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+aGFzQXR0ckNvbnRlbnQ7IH0KICAgICB2b2lkIHNldEhhc0F0dHJD
b250ZW50KCk7CiAKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBjb3VudGVyRGlyZWN0
aXZlcygpIGNvbnN0OwogICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIGFjY2Vzc0NvdW50ZXJEaXJl
Y3RpdmVzKCk7CiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMgZ2V0Q291bnRlckRpcmVjdGl2
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKIAotICAgIFF1b3Rlc0Rh
dGEqIHF1b3RlcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0
KCk7IH0KKyAgICBRdW90ZXNEYXRhKiBxdW90ZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhl
cml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KICAgICB2b2lkIHNldFF1b3RlcyhSZWZQdHI8UXVv
dGVzRGF0YT4mJik7CiAKLSAgICBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZSgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2UuZ2V0KCk7IH0KKyAgICBX
aWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPndpbGxDaGFuZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldFdpbGxDaGFuZ2UoUmVm
UHRyPFdpbGxDaGFuZ2VEYXRhPiYmKTsKIAotICAgIGJvb2wgd2lsbENoYW5nZUNyZWF0ZXNTdGFj
a2luZ0NvbnRleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF3aWxsQ2hhbmdlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2lsbENo
YW5nZSgpLT5jYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoKTsKLSAgICB9CisgICAgYm9vbCB3aWxs
Q2hhbmdlQ3JlYXRlc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBoeXBoZW5TdHJpbmcoKSBjb25zdDsKIApAQCAtMTg4Miw0NiArMTM0OSwzMiBAQCBw
dWJsaWM6CiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNp
Z25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29s
IGRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgaXNDb21w
b3NpdGVkKSBjb25zdDsKIAotICAgIGJvb2wgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gaXNEaXNwbGF5UmVwbGFjZWRUeXBlKGRpc3BsYXkoKSk7IH0KICAgICBib29sIGlz
RGlzcGxheUlubGluZVR5cGUoKSBjb25zdCB7IHJldHVybiBpc0Rpc3BsYXlJbmxpbmVUeXBlKGRp
c3BsYXkoKSk7IH0KICAgICBib29sIGlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGlzRGlzcGxheUlubGluZVR5cGUob3JpZ2luYWxEaXNwbGF5KCkpOyB9CiAgICAg
Ym9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxh
eUZsZXhpYmxlT3JHcmlkQm94KGRpc3BsYXkoKSk7IH0KLSAgICBib29sIGlzRGlzcGxheUZsZXhp
YmxlQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVCb3goZGlzcGxheSgpKTsg
fQotICAgIGJvb2wgaXNEaXNwbGF5UmVnaW9uVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sKLSAg
ICAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMIHx8IGRpc3BsYXkoKSA9PSBUQUJM
RV9DQVBUSU9OCi0gICAgICAgICAgICB8fCBkaXNwbGF5KCkgPT0gTElTVF9JVEVNOwotICAgIH0K
LQotICAgIGJvb2wgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgdikKLSAgICB7Ci0gICAgICAg
IGlmICh2ID09IHdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ym9vbCBpc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3Q7CiAKLSAgICAgICAgaW5oZXJpdGVkX2Zs
YWdzLm1fd3JpdGluZ01vZGUgPSB2OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAg
Ym9vbCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSk7CiAKLSAgICBib29sIGhhc0V4cGxpY2l0
bHlTZXRXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKTsgfQotICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNl
dFdyaXRpbmdNb2RlKGJvb2wgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlKHYpOyB9CisgICAgYm9vbCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXRX
cml0aW5nTW9kZSgpOyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUo
Ym9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdN
b2RlKHYpOyB9CiAKICAgICAvLyBBIHVuaXF1ZSBzdHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hl
cyBzb21ldGhpbmcgdGhhdCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgotICAgIGJvb2wg
dW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmlzVW5pcXVlKCk7IH0K
LSAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldElzVW5pcXVlKCk7
IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
aXNVbmlxdWUoKTsgfQorICAgIHZvaWQgc2V0VW5pcXVlKCkgeyBtX25vbkluaGVyaXRlZEZsYWdz
LnNldElzVW5pcXVlKCk7IH0KIAotICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEVtcHR5U3Rh
dGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0RW1wdHlTdGF0
ZShiKTsgfQotICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5o
ZXJpdGVkX2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRGaXJzdENoaWxk
U3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0Rmlyc3RDaGlsZFN0
YXRlKHRydWUpOyB9Ci0gICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5v
bmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRMYXN0Q2hp
bGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRMYXN0Q2hpbGRT
dGF0ZSh0cnVlKTsgfQorICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
SW5oZXJpdGVkRmxhZ3MuZW1wdHlTdGF0ZSgpOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJv
b2wgYikgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRFbXB0eVN0YXRlKGIp
OyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9CisgICAgdm9pZCBzZXRGaXJzdENoaWxkU3Rh
dGUoKSB7IHNldFVuaXF1ZSgpOyBtX25vbkluaGVyaXRlZEZsYWdzLnNldEZpcnN0Q2hpbGRTdGF0
ZSh0cnVlKTsgfQorICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmxhc3RDaGlsZFN0YXRlKCk7IH0KKyAgICB2b2lkIHNldExhc3RDaGls
ZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRMYXN0Q2hpbGRT
dGF0ZSh0cnVlKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgdmlzaXRlZERlcGVuZGVu
dENvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKICAgICBib29sIGJhY2tncm91bmRDb2xv
ckVxdWFsc1RvQ29sb3JJZ25vcmluZ1Zpc2l0ZWQoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdCB7
IHJldHVybiBjb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IoKTsgfQogCi0gICAgdm9pZCBzZXRIYXNF
eHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKHRydWUpOyB9Ci0gICAgYm9vbCBoYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOyB9CisgICAgdm9pZCBzZXRI
YXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5z
ZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcyh0cnVlKTsgfQorICAgIGJvb2wgaGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVy
aXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7IH0KICAgICAKICAg
ICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEVP
dmVyZmxvdyBpbml0aWFsT3ZlcmZsb3dYKCkgeyByZXR1cm4gT1ZJU0lCTEU7IH0KQEAgLTE5NDAs
MTUgKzEzOTMsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBFQm9yZGVyU3R5bGUgaW5pdGlhbEJv
cmRlclN0eWxlKCkgeyByZXR1cm4gQk5PTkU7IH0KICAgICBzdGF0aWMgT3V0bGluZUlzQXV0byBp
bml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKCkgeyByZXR1cm4gQVVUT19PRkY7IH0KICAgICBzdGF0
aWMgTmluZVBpZWNlSW1hZ2UgaW5pdGlhbE5pbmVQaWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBp
ZWNlSW1hZ2UoKTsgfQotICAgIHN0YXRpYyBMZW5ndGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMo
KSB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkp
OyB9CisgICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJu
IHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQogICAgIHN0YXRpYyBFQ2FwdGlvblNp
ZGUgaW5pdGlhbENhcHRpb25TaWRlKCkgeyByZXR1cm4gQ0FQVE9QOyB9CiAgICAgc3RhdGljIENv
bHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBBdXRvQ29sdW1uQXhpczsgfQog
ICAgIHN0YXRpYyBDb2x1bW5Qcm9ncmVzc2lvbiBpbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSB7
IHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0
aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBMVFI7IH0KICAgICBzdGF0aWMgV3JpdGlu
Z01vZGUgaW5pdGlhbFdyaXRpbmdNb2RlKCkgeyByZXR1cm4gVG9wVG9Cb3R0b21Xcml0aW5nTW9k
ZTsgfQogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0aWFsVGV4dENvbWJpbmUoKSB7IHJldHVy
biBUZXh0Q29tYmluZU5vbmU7IH0KLSAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxU
ZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246OgotICAgIE1peGVkOyB9
CisgICAgc3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5p
dGlhbE9iamVjdEZpdCgpIHsgcmV0dXJuIE9iamVjdEZpdEZpbGw7IH0KICAgICBzdGF0aWMgTGVu
Z3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVu
Z3RoKDUwLjBmLCBQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0KICAgICBzdGF0
aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIFNIT1c7IH0KQEAgLTE5
NjAsOSArMTQxMiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEhvcml6b250
YWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFs
VmVydGljYWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBFQ3Vyc29y
IGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDdXJzb3JBdXRvOyB9Ci0jaWYgRU5BQkxFKENVUlNP
Ul9WSVNJQklMSVRZKQotICAgIHN0YXRpYyBDdXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JW
aXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1dG87IH0KLSNlbmRpZgogICAg
IHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAg
ICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsg
fQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm9yZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CkBA
IC0xOTc5LDIyICsxNDI4LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxU
ZXh0SW5kZW50KCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQogICAgIHN0YXRpYyBMZW5ndGgg
aW5pdGlhbFplcm9MZW5ndGgoKSB7IHJldHVybiBMZW5ndGgoRml4ZWQpOyB9CiAgICAgc3RhdGlj
IExlbmd0aCBpbml0aWFsT25lTGVuZ3RoKCkgeyByZXR1cm4gTGVuZ3RoKDEsIEZpeGVkKTsgfQot
I2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxU
ZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRGaXJzdExpbmU7IH0KLSAgICBzdGF0
aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dElu
ZGVudE5vcm1hbDsgfQotI2VuZGlmCiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxXaWRvd3MoKSB7
IHJldHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxPcnBoYW5zKCkgeyByZXR1cm4g
MjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5n
dGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAg
IHN0YXRpYyBMZW5ndGggaW5pdGlhbFNwZWNpZmllZExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5n
dGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSNlbmRpZgogICAgIHN0YXRpYyBFVGV4dEFsaWduIGlu
aXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUQVNUQVJUOyB9CiAgICAgc3RhdGljIFRleHREZWNv
cmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9u
ZTsgfQotI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5p
dGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQotICAgIHN0
YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlm
eUF1dG87IH0KLSNlbmRpZiAvLyBDU1MzX1RFWFQKICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25T
dHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGVTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgaW5pdGlhbFRleHRE
ZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tpcEF1dG87IH0KICAgICBz
dGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24o
KSB7IHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRpb25BdXRvOyB9CkBAIC0yMDA5LDggKzE0NDcs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3hPcmllbnQgaW5pdGlhbEJveE9yaWVudCgpIHsg
cmV0dXJuIEhPUklaT05UQUw7IH0KICAgICBzdGF0aWMgRUJveFBhY2sgaW5pdGlhbEJveFBhY2so
KSB7IHJldHVybiBTdGFydDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm94RmxleCgpIHsg
cmV0dXJuIDAuMGY7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGluaXRpYWxCb3hGbGV4R3Jv
dXAoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBpbml0aWFsQm94T3Jk
aW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94
RmxleEdyb3VwKCkgeyByZXR1cm4gMTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQm94
T3JkaW5hbEdyb3VwKCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBFQm94U2l6aW5nIGluaXRp
YWxCb3hTaXppbmcoKSB7IHJldHVybiBDT05URU5UX0JPWDsgfQogICAgIHN0YXRpYyBTdHlsZVJl
ZmxlY3Rpb24qIGluaXRpYWxCb3hSZWZsZWN0KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBm
bG9hdCBpbml0aWFsRmxleEdyb3coKSB7IHJldHVybiAwOyB9CkBAIC0yMDgzLDYgKzE1MjEsMjIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250
ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQogCisjaWYgRU5BQkxFKENTUzNfVEVY
VCkKKyAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyBy
ZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQorICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBp
bml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5kZW50Tm9ybWFsOyB9CisgICAg
c3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0
QWxpZ25MYXN0QXV0bzsgfQorICAgIHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3Rp
ZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKENV
UlNPUl9WSVNJQklMSVRZKQorICAgIHN0YXRpYyBDdXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJz
b3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1dG87IH0KKyNlbmRpZgor
CisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxT
cGVjaWZpZWRMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIFBlcmNlbnQpOyB9
CisgICAgc3RhdGljIFRleHRTaXplQWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7
IHJldHVybiBUZXh0U2l6ZUFkanVzdG1lbnQoKTsgfQorI2VuZGlmCisKICAgICBzdGF0aWMgYm9v
bCBpc0NTU0dyaWRMYXlvdXRFbmFibGVkKCk7CiAKICAgICBzdGF0aWMgV2lsbENoYW5nZURhdGEq
IGluaXRpYWxXaWxsQ2hhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMjEzOCw3ICsxNTky
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29s
dW1uRW5kKCkgeyByZXR1cm4gR3JpZFBvc2l0aW9uKCk7IH0KICAgICBzdGF0aWMgR3JpZFBvc2l0
aW9uIGluaXRpYWxHcmlkSXRlbVJvd1N0YXJ0KCkgeyByZXR1cm4gR3JpZFBvc2l0aW9uKCk7IH0K
ICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRlbVJvd0VuZCgpIHsgcmV0dXJu
IEdyaWRQb3NpdGlvbigpOyB9Ci0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8K
KyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCiAgICAgc3RhdGljIHVuc2lnbmVk
IGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsgfQogCkBAIC0yMTUwLDQxICsxNjA0LDMyNSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbFJlZ2lvblRo
cmVhZCgpIHsgcmV0dXJuIG51bGxBdG9tOyB9CiAgICAgc3RhdGljIFJlZ2lvbkZyYWdtZW50IGlu
aXRpYWxSZWdpb25GcmFnbWVudCgpIHsgcmV0dXJuIEF1dG9SZWdpb25GcmFnbWVudDsgfQogCi0g
ICAgLy8gS2VlcCB0aGVzZSBhdCB0aGUgZW5kLgogICAgIHN0YXRpYyBJbnRTaXplIGluaXRpYWxJ
bml0aWFsTGV0dGVyKCkgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgc3RhdGljIExpbmVDbGFt
cFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9CiAg
ICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRT
Tk9ORTsgfQotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgc3RhdGljIFRleHRTaXpl
QWRqdXN0bWVudCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiBUZXh0U2l6ZUFkanVz
dG1lbnQoKTsgfQotI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wg
aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKKwog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdo
bGlnaHRDb2xvcigpOwogI2VuZGlmCisKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xs
aW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBp
bml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVnaW9ucygpOwogI2VuZGlmCisKICAgICBz
dGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEZpbHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQorCiAjaWYg
RU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgaW5pdGlhbEJhY2tkcm9wRmlsdGVyKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmlsdGVy
T3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CiAjZW5kaWYKKwogI2lmIEVOQUJMRShDU1Nf
Q09NUE9TSVRJTkcpCiAgICAgc3RhdGljIEJsZW5kTW9kZSBpbml0aWFsQmxlbmRNb2RlKCkgeyBy
ZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CiAgICAgc3RhdGljIElzb2xhdGlvbiBpbml0aWFsSXNv
bGF0aW9uKCkgeyByZXR1cm4gSXNvbGF0aW9uQXV0bzsgfQogI2VuZGlmCiAKLSAgICBib29sIGlz
UGxhY2Vob2xkZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2lzUGxhY2Vob2xkZXJTdHlsZTsgfQotICAgIHZvaWQgc2V0SXNQbGFjZWhvbGRlclN0eWxlKCkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2lzUGxhY2Vob2xkZXJTdHlsZSwgdHJ1
ZSk7IH0KKyAgICBib29sIGlzUGxhY2Vob2xkZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmlzUGxhY2Vob2xkZXJTdHlsZTsgfQorICAgIHZvaWQgc2V0SXNQ
bGFjZWhvbGRlclN0eWxlKCkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGlzUGxh
Y2Vob2xkZXJTdHlsZSwgdHJ1ZSk7IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgbm9uaW5oZXJp
dGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVuZGVyU3R5
bGUsIG5vbmluaGVyaXRlZF9mbGFncyk7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3Io
Y29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yLCB2KTsgfQorICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYp
OyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJUb3BD
b2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtPdXRs
aW5lQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
dWx0aUNvbCwgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IsIHYp
OyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFz
aXNDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4
dEZpbGxDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExp
bmtUZXh0U3Ryb2tlQ29sb3IsIHYpOyB9CisKKyAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZy
b20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLnNldFVu
aWNvZGVCaWRpKHBhcmVudC0+bV9ub25Jbmhlcml0ZWRGbGFncy51bmljb2RlQmlkaSgpKTsgfQor
ICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0
b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxl
ZnQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFk
b3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0OworICAg
IHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVu
aXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBjb25zdDsKKyAgICB2b2lkIGdldFNoYWRvd0lu
bGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9naWNh
bExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgY29uc3Q7CisgICAgdm9pZCBnZXRTaGFk
b3dCbG9ja0RpcmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3Q7CisKKyAgICBzdGF0aWMg
Q29sb3IgaW52YWxpZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9y
JiBib3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVy
LmxlZnQoKS5jb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGJvcmRlclJpZ2h0Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+Ym9yZGVyLnJpZ2h0KCkuY29sb3IoKTsgfQor
ICAgIGNvbnN0IENvbG9yJiBib3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91
bmREYXRhLT5ib3JkZXIudG9wKCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBib3JkZXJC
b3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5ib3JkZXIuYm90dG9t
KCkuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmREYXRhLT5jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBjb2xv
cigpIGNvbnN0OworICAgIGNvbnN0IENvbG9yJiBjb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tdWx0aUNvbC0+cnVsZS5jb2xvcigpOyB9Cisg
ICAgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZERhdGEtPm91dGxpbmUuY29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiB0ZXh0RW1waGFzaXND
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0Nv
bG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHRl
eHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRT
dHJva2VDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbG9yKCkgY29uc3Q7
CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7
IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xv
cjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlclJpZ2h0
Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVy
Qm90dG9tQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9y
ZGVyVG9wQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua091dGxp
bmVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT52aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB0ZXh0RGVjb3JhdGlvbkNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRp
b25Db2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1Rl
eHREZWNvcmF0aW9uQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0RW1w
aGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRM
aW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtUZXh0RmlsbENvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtU
ZXh0U3Ryb2tlQ29sb3I7IH0KKworICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZsb29kQ29sb3IoKTsgfQorICAgIGNv
bnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdo
dGluZ0NvbG9yKCk7IH0KIAogcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3Mg
eworICAgICAgICBOb25Jbmhlcml0ZWRGbGFncygpOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mg
PT0gb3RoZXIubV9mbGFnczsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5o
ZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICE9IG90aGVyLm1fZmxh
Z3M7IH0KKworICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IE5vbkluaGVy
aXRlZEZsYWdzJik7CisKKyAgICAgICAgRU92ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxv
d1hPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgb3ZlcmZs
b3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WCwgb3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZz
ZXQpOyB9CisKKyAgICAgICAgRU92ZXJmbG93IG92ZXJmbG93WSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFsdWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZz
ZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92ZXJmbG93WShFT3ZlcmZsb3cgb3ZlcmZsb3dZKSB7
IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpOyB9
CisKKyAgICAgICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNs
ZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNsZWFyT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBz
ZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBkYXRlVmFsdWUoY2xlYXIsIGNsZWFyTWFzaywgY2xl
YXJPZmZzZXQpOyB9CisKKyAgICAgICAgRURpc3BsYXkgZWZmZWN0aXZlRGlzcGxheSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgZWZm
ZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0RWZmZWN0aXZlRGlzcGxh
eShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5KSB7IHVwZGF0ZVZhbHVlKGVmZmVjdGl2ZURpc3Bs
YXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0KTsgfQorCisgICAgICAgIEVQ
b3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQb3NpdGlvbj4o
Z2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3NpdGlvbk9mZnNldCkpOyB9CisgICAgICAgIHZvaWQg
c2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0aW9uKSB7IHVwZGF0ZVZhbHVlKHBvc2l0aW9uLCBw
b3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0KTsgfQorCisgICAgICAgIEVEaXNwbGF5IG9yaWdp
bmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1
ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBz
ZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KSB7IHVwZGF0ZVZhbHVl
KG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1hc2ssIG9yaWdpbmFsRGlzcGxheU9mZnNldCk7IH0K
KworICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZhbHVlKHVuaWNvZGVCaWRpTWFzaywgdW5pY29kZUJp
ZGlPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSB1
bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1bmljb2RlQmlkaSwgdW5pY29kZUJpZGlNYXNrLCB1
bmljb2RlQmlkaU9mZnNldCk7IH0KKworICAgICAgICBib29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBj
b25zdCB7IHJldHVybiBnZXRCb29sZWFuKGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQpOyB9CisgICAg
ICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4o
dmFsdWUsIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQpOyB9CisKKyAgICAgICAgRVZlcnRpY2FsQWxp
Z24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWZXJ0aWNhbEFs
aWduPihnZXRWYWx1ZSh2ZXJ0aWNhbEFsaWduTWFzaywgdmVydGljYWxBbGlnbk9mZnNldCkpOyB9
CisgICAgICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFs
aWduKSB7IHVwZGF0ZVZhbHVlKHZlcnRpY2FsQWxpZ24sIHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0
aWNhbEFsaWduT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRl
ZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGV4cGxpY2l0SW5oZXJpdGFu
Y2VPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3Bl
cnRpZXMoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBleHBsaWNpdEluaGVyaXRh
bmNlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJu
IGZsb2F0aW5nKCkgIT0gTm9GbG9hdDsgfQorICAgICAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxvYXQ+KGdldFZhbHVlKGZsb2F0aW5nTWFzaywgZmxv
YXRpbmdPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCBmbG9hdGlu
ZykgeyB1cGRhdGVWYWx1ZShmbG9hdGluZywgZmxvYXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCk7
IH0KKworICAgICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0
dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgZ2V0VmFsdWUocHNldWRvQml0c01hc2ssIHBzZXVk
b0JpdHNPZmZzZXQpOyB9CisgICAgICAgIGJvb2wgaGFzUHNldWRvU3R5bGUoUHNldWRvSWQpIGNv
bnN0OworICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKKyAgICAgICAg
dm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQpOworCisgICAgICAgIEVUYWJsZUxh
eW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUYWJsZUxheW91
dD4oZ2V0VmFsdWUodGFibGVMYXlvdXRCaXRNYXNrLCB0YWJsZUxheW91dE9mZnNldCkpOyB9Cisg
ICAgICAgIHZvaWQgc2V0VGFibGVMYXlvdXQoRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KSB7IHVw
ZGF0ZVZhbHVlKHRhYmxlTGF5b3V0LCB0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zm
c2V0KTsgfQorCisgICAgICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFBzZXVkb0lkPihnZXRWYWx1ZShzdHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZz
ZXQpKTsgfQorICAgICAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsg
dXBkYXRlVmFsdWUoc3R5bGVUeXBlLCBzdHlsZVR5cGVNYXNrLCBzdHlsZVR5cGVPZmZzZXQpOyB9
CisKKyAgICAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oaXNV
bmlxdWVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SXNVbmlxdWUoKSB7IHVwZGF0ZUJvb2xl
YW4odHJ1ZSwgaXNVbmlxdWVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBlbXB0eVN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihlbXB0eVN0YXRlT2Zmc2V0KTsgIH0KKyAgICAgICAg
dm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgZW1w
dHlTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIGdldEJvb2xlYW4oZmlyc3RDaGlsZFN0YXRlT2Zmc2V0KTsgIH0KKyAgICAgICAg
dm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVl
LCBmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4obGFzdENoaWxkU3RhdGVPZmZzZXQpOyAgfQor
ICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVh
bih2YWx1ZSwgbGFzdENoaWxkU3RhdGVPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3Rl
ZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGFmZmVjdGVkQnlIb3Zlck9mZnNl
dCk7IH0KKyAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyB1cGRh
dGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQpOyB9CisKKyAgICAgICAgYm9v
bCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihhZmZlY3RlZEJ5
QWN0aXZlT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2
YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0KTsgfQor
CisgICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGFmZmVjdGVkQnlEcmFnT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFn
KGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgYWZmZWN0ZWRCeURyYWdPZmZzZXQp
OyB9CisKKyAgICAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGlz
TGlua09mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyB1cGRh
dGVCb29sZWFuKHZhbHVlLCBpc0xpbmtPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb24oYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBoYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgaGFzRXhwbGljaXRseVNl
dFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihoYXNFeHBsaWNpdGx5U2V0
V3JpdGluZ01vZGVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldFdy
aXRpbmdNb2RlKGJvb2wgdmFsdWUpIHsgdXBkYXRlQm9vbGVhbih2YWx1ZSwgaGFzRXhwbGljaXRs
eVNldFdyaXRpbmdNb2RlT2Zmc2V0KTsgfQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxh
Z3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9uSW5oZXJpdGVkRmxh
Z3MsIG1fZmxhZ3MpOyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3RlZEJ5
QWN0aXZlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0OyB9
CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnSXNhZmZlY3RlZEJ5SG92ZXIoKSB7IHJldHVy
biBvbmVCaXRNYXNrIDw8IGFmZmVjdGVkQnlIb3Zlck9mZnNldDsgfQorICAgICAgICBzdGF0aWMg
dWludDY0X3QgZmxhZ1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgeyByZXR1cm4gb25lQml0
TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOyB9CisgICAgICAgIHN0YXRp
YyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpIHsgcmV0dXJuIGZsYWdGaXJzdENo
aWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBz
ZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxhZ0xhc3RDaGlsZFN0YXRlKCkgfCBm
bGFnSXNVbmlxdWUoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCB1cGRhdGVCb29s
ZWFuKGJvb2wsIHVpbnQ2NF90IG9mZnNldCk7CisgICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1aW50
NjRfdCBvZmZzZXQpIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVZhbHVlKHVpbnQ4X3QgbmV3
VmFsdWUsIHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrLCB1aW50NjRfdCBvZmZzZXQp
OworICAgICAgICB1bnNpZ25lZCBnZXRWYWx1ZSh1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50
TWFzaywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgICAgICBzdGF0aWMgdWludDY0X3Qg
ZmxhZ0lzVW5pcXVlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBpc1VuaXF1ZU9mZnNldDsgfQor
ICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0ZpcnN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9u
ZUJpdE1hc2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50
NjRfdCBmbGFnTGFzdENoaWxkU3RhdGUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGxhc3RDaGls
ZFN0YXRlT2Zmc2V0OyB9CisKKyAgICAgICAgLy8gVG8gdHlwZSB0aGUgYml0IG1hc2sgcHJvcGVy
bHkgb24gNjRiaXRzLgorICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgb25lQml0TWFzayA9
IDB4MTsKKworICAgICAgICAvLyBCeXRlIDEuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBvdmVyZmxvd0JpdENvdW50ID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG92
ZXJmbG93TWFzayA9IChvbmVCaXRNYXNrIDw8IG92ZXJmbG93Qml0Q291bnQpIC0gMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG92ZXJmbG93WE9mZnNldCA9IDA7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1lPZmZzZXQgPSBvdmVyZmxvd1hPZmZzZXQgKyBv
dmVyZmxvd0JpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2xlYXJCaXRD
b3VudCA9IDI7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBjbGVhck1hc2sgPSAob25l
Qml0TWFzayA8PCBjbGVhckJpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBjbGVhck9mZnNldCA9IG92ZXJmbG93WU9mZnNldCArIG92ZXJmbG93Qml0Q291bnQ7CisK
KyAgICAgICAgLy8gQnl0ZSAyLgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlzcGxh
eUJpdENvdW50ID0gNTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRpc3BsYXlNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgZGlzcGxheUJpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0ID0gY2xlYXJPZmZzZXQgKyBjbGVh
ckJpdENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcG9zaXRpb25CaXRDb3Vu
dCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBwb3NpdGlvbk1hc2sgPSAob25l
Qml0TWFzayA8PCBwb3NpdGlvbkJpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IGVmZmVjdGl2ZURpc3BsYXlPZmZzZXQgKyBkaXNwbGF5
Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSAzLgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0ID0gcG9zaXRpb25PZmZzZXQgKyBwb3NpdGlvbkJp
dENvdW50OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5pY29kZUJpZGlCaXRDb3Vu
dCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB1bmljb2RlQmlkaU1hc2sgPSAo
b25lQml0TWFzayA8PCB1bmljb2RlQmlkaUJpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB1bmljb2RlQmlkaU9mZnNldCA9IG9yaWdpbmFsRGlzcGxheU9mZnNldCAr
IGRpc3BsYXlCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDQuCisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBmbG9hdGluZ0JpdENvdW50ID0gMjsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IGZsb2F0aW5nTWFzayA9IChvbmVCaXRNYXNrIDw8IGZsb2F0aW5nQml0Q291bnQp
IC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZsb2F0aW5nT2Zmc2V0ID0gdW5p
Y29kZUJpZGlPZmZzZXQgKyB1bmljb2RlQmlkaUJpdENvdW50OworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaGFzRXhwbGljaXRseVNldERpcmVjdGlvbkJpdGNvdW50ID0gMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb25PZmZzZXQg
PSBmbG9hdGluZ09mZnNldCArIGZsb2F0aW5nQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVCaXRjb3VudCA9IDE7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGVPZmZz
ZXQgPSBoYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uT2Zmc2V0ICsgaGFzRXhwbGljaXRseVNldERp
cmVjdGlvbkJpdGNvdW50OworCisgICAgICAgIC8vIEJ5dGUgNS4KKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudCA9IDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0ID0gaGFzRXhwbGlj
aXRseVNldFdyaXRpbmdNb2RlT2Zmc2V0ICsgaGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlQml0
Y291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWJsZUxheW91dEJpdENvdW50
ID0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRhYmxlTGF5b3V0Qml0TWFzayA9
IG9uZUJpdE1hc2s7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWJsZUxheW91dE9m
ZnNldCA9IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQgKyBleHBsaWNpdEluaGVyaXRhbmNlQml0
Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQml0Q291
bnQgPSA0OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnblBhZGRp
bmcgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGlnbkFuZFBh
ZGRpbmdCaXRDb3VudCA9IHZlcnRpY2FsQWxpZ25CaXRDb3VudCArIHZlcnRpY2FsQWxpZ25QYWRk
aW5nOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmVydGljYWxBbGlnbk1hc2sgPSAo
b25lQml0TWFzayA8PCB2ZXJ0aWNhbEFsaWduQml0Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSB0YWJsZUxheW91dE9mZnNldCAr
IHRhYmxlTGF5b3V0Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA2LgorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0JpdENvdW50ID0gNzsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IHBzZXVkb0JpdHNNYXNrID0gKG9uZUJpdE1hc2sgPDwgcHNldWRvQml0
c0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRz
T2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCArIHZlcnRpY2FsQWxpZ25CaXRDb3VudDsKKwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaGFzVmlld3BvcnRVbml0c0JpdENvdW50ID0g
MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNr
ID0gKG9uZUJpdE1hc2sgPDwgaGFzVmlld3BvcnRVbml0c0JpdENvdW50KSAtIDE7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoYXNWaWV3cG9ydFVuaXRzT2Zmc2V0ID0gcHNldWRvQml0
c09mZnNldCArIHBzZXVkb0JpdHNCaXRDb3VudDsKKworICAgICAgICAvLyBCeXRlIDcuCisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVCaXRDb3VudCA9IDY7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVQYWRkaW5nID0gMjsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudCA9IHN0eWxlVHlw
ZUJpdENvdW50ICsgc3R5bGVUeXBlUGFkZGluZzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2
NF90IHN0eWxlVHlwZU1hc2sgPSAob25lQml0TWFzayA8PCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0
Q291bnQpIC0gMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0eWxlVHlwZU9mZnNl
dCA9IGhhc1ZpZXdwb3J0VW5pdHNCaXRDb3VudCArIGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7CisK
KyAgICAgICAgLy8gQnl0ZSA4LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaXNVbmlx
dWVPZmZzZXQgPSBzdHlsZVR5cGVPZmZzZXQgKyBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQ7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBlbXB0eVN0YXRlT2Zmc2V0ID0gaXNVbmlx
dWVPZmZzZXQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmlyc3RDaGlsZFN0
YXRlT2Zmc2V0ID0gZW1wdHlTdGF0ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCA9IGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgPSBs
YXN0Q2hpbGRTdGF0ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBh
ZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0ID0gYWZmZWN0ZWRCeUhvdmVyT2Zmc2V0ICsgMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlEcmFnT2Zmc2V0ID0gYWZmZWN0ZWRC
eUFjdGl2ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc0xpbmtP
ZmZzZXQgPSBhZmZlY3RlZEJ5RHJhZ09mZnNldCArIDE7CisKKyAgICAgICAgLy8gNjAgYml0cyBh
cmUgYXNzaWduZWQuIFRoZXJlIGFyZSA0IGJpdHMgYXZhaWxhYmxlIGN1cnJlbnRseSB1c2VkIGFz
IHBhZGRpbmcgdG8gaW1wcm92ZSBjb2RlIGdlbmVyYXRpb24uCisgICAgICAgIC8vIElmIHlvdSBh
ZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgUmVu
ZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkuCisgICAgICAgIHVpbnQ2NF90IG1fZmxh
Z3MgeyAwIH07CisgICAgfTsKKworICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7CisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0OworICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAx
OyAvLyBFRW1wdHlDZWxsCisgICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gRUNh
cHRpb25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5cGUgOiA3OyAvLyBFTGlzdFN0
eWxlVHlwZQorICAgICAgICB1bnNpZ25lZCBsaXN0U3R5bGVQb3NpdGlvbiA6IDE7IC8vIEVMaXN0
U3R5bGVQb3NpdGlvbgorICAgICAgICB1bnNpZ25lZCB2aXNpYmlsaXR5IDogMjsgLy8gRVZpc2li
aWxpdHkKKyAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsgLy8gRVRleHRBbGlnbgorICAg
ICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gRVRleHRUcmFuc2Zvcm0KKyAgICAg
ICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25zIDogVGV4dERlY29yYXRpb25CaXRzOworICAgICAg
ICB1bnNpZ25lZCBjdXJzb3IgOiA2OyAvLyBFQ3Vyc29yCisjaWYgRU5BQkxFKENVUlNPUl9WSVNJ
QklMSVRZKQorICAgICAgICB1bnNpZ25lZCBjdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29y
VmlzaWJpbGl0eQorI2VuZGlmCisgICAgICAgIHVuc2lnbmVkIGRpcmVjdGlvbiA6IDE7IC8vIFRl
eHREaXJlY3Rpb24KKyAgICAgICAgdW5zaWduZWQgd2hpdGVTcGFjZSA6IDM7IC8vIEVXaGl0ZVNw
YWNlCisgICAgICAgIC8vIDMyIGJpdHMKKyAgICAgICAgdW5zaWduZWQgYm9yZGVyQ29sbGFwc2Ug
OiAxOyAvLyBFQm9yZGVyQ29sbGFwc2UKKyAgICAgICAgdW5zaWduZWQgYm94RGlyZWN0aW9uIDog
MTsgLy8gRUJveERpcmVjdGlvbiAoQ1NTMyBib3hfZGlyZWN0aW9uIHByb3BlcnR5LCBmbGV4aWJs
ZSBib3ggbGF5b3V0IG1vZHVsZSkKKworICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKKyAg
ICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgorICAgICAgICB1bnNpZ25l
ZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVzdEJpdHM7CisgICAgICAgIHVuc2ln
bmVkIHBvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cworICAgICAgICB1bnNpZ25l
ZCBpbnNpZGVMaW5rIDogMjsgLy8gRUluc2lkZUxpbmsKKyAgICAgICAgdW5zaWduZWQgaW5zaWRl
RGVmYXVsdEJ1dHRvbiA6IDE7CisgICAgICAgIC8vIDQ0IGJpdHMKKworICAgICAgICAvLyBDU1Mg
VGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAg
ICAgICB1bnNpZ25lZCB3cml0aW5nTW9kZSA6IDI7IC8vIFdyaXRpbmdNb2RlCisgICAgICAgIC8v
IDQ2IGJpdHMKKyAgICB9OworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIHRvIGlt
cGxlbWVudCB0aGUgcmVwbGFjZSBvcGVyYXRpb24uCisgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5
bGUmLCBSZW5kZXJTdHlsZSYmKTsKKworICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCk7IH0KKwor
ICAgIGJvb2wgaGFzQXV0b0xlZnRBbmRSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxlZnQoKS5pc0F1
dG8oKSAmJiByaWdodCgpLmlzQXV0bygpOyB9CisgICAgYm9vbCBoYXNBdXRvVG9wQW5kQm90dG9t
KCkgY29uc3QgeyByZXR1cm4gdG9wKCkuaXNBdXRvKCkgJiYgYm90dG9tKCkuaXNBdXRvKCk7IH0K
KworICAgIHZvaWQgc2V0Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+LCBib29s
IGFkZCk7CisKKyAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3Qg
U2hhZG93RGF0YSopIGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5UmVwbGFjZWRU
eXBlKEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNw
bGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSk7Cisg
ICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5R3JpZEJveChFRGlzcGxheSk7CisgICAgc3RhdGljIGJv
b2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkpOworCisgICAgQ29sb3IgY29s
b3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykg
Y29uc3Q7CisKICAgICBib29sIGNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0OwogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVu
ZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBj
b25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29uc3Qg
UmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
KSBjb25zdDsKQEAgLTIxOTMsMTAyICsxOTMxLDE0MyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hh
bmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5
bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsK
ICAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHls
ZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Owog
Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yLCB2KTsgfQot
ICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xv
ciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9y
ZGVyUmlnaHRDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9t
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRW
aXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yLCB2KTsgfQotICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbXVsdGlDb2wsIG1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHREZWNvcmF0aW9u
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92
aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVk
TGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yLCB2KTsgfQotICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHYpOyB9Ci0KLSAg
ICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkg
eyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VW5pY29kZUJpZGkocGFyZW50LT5ub25pbmhlcml0ZWRf
ZmxhZ3MudW5pY29kZUJpZGkoKSk7IH0KLSAgICB2b2lkIGdldFNoYWRvd0V4dGVudChjb25zdCBT
aGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5p
dCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdDsKLSAgICBMYXlvdXRCb3hFeHRlbnQg
Z2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSopIGNvbnN0OwotICAgIHZvaWQg
Z2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYg
bGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0OwotICAgIHZvaWQgZ2V0U2hhZG93VmVydGlj
YWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYg
Ym90dG9tKSBjb25zdDsKLSAgICB2b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0LCBMYXlvdXRV
bml0JiBsb2dpY2FsUmlnaHQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dp
Y2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywg
bG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7Ci0gICAgfQotICAgIHZvaWQgZ2V0U2hhZG93Qmxv
Y2tEaXJlY3Rpb25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4
dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpv
bnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOwotICAgIH0KKyAg
ICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKKyAgICBEYXRhUmVmPFN0eWxlQm94RGF0YT4g
bV9ib3hEYXRhOworICAgIERhdGFSZWY8U3R5bGVWaXN1YWxEYXRhPiBtX3Zpc3VhbERhdGE7Cisg
ICAgRGF0YVJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBtX2JhY2tncm91bmREYXRhOworICAgIERh
dGFSZWY8U3R5bGVTdXJyb3VuZERhdGE+IG1fc3Vycm91bmREYXRhOworICAgIERhdGFSZWY8U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YTsKKyAgICBOb25J
bmhlcml0ZWRGbGFncyBtX25vbkluaGVyaXRlZEZsYWdzOwogCi0gICAgYm9vbCBpc0Rpc3BsYXlS
ZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09IElOTElORV9CT1ggfHwgZGlz
cGxheSA9PSBJTkxJTkVfRkxFWAotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAg
ICAgICB8fCBkaXNwbGF5ID09IElOTElORV9HUklECi0jZW5kaWYKLSAgICAgICAgICAgIHx8IGRp
c3BsYXkgPT0gSU5MSU5FX1RBQkxFOwotICAgIH0KKyAgICAvLyBpbmhlcml0ZWQgYXR0cmlidXRl
cworICAgIERhdGFSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gbV9yYXJlSW5oZXJpdGVkRGF0
YTsKKyAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gbV9pbmhlcml0ZWREYXRhOworICAg
IEluaGVyaXRlZEZsYWdzIG1faW5oZXJpdGVkRmxhZ3M7CiAKLSAgICBib29sIGlzRGlzcGxheUlu
bGluZVR5cGUoRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBk
aXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7Ci0gICAg
fQorICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8gc3R5bGVzCisgICAgc3RkOjp1bmlx
dWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRvU3R5bGVzOwogCi0gICAgYm9v
bCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5KSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYOwot
ICAgIH0KKyAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2Z1N0eWxlOwogCi0gICAgYm9v
bCBpc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0Ci0gICAgewotI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwg
ZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5B
QkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBm
YWxzZSB9OwogI2VuZGlmCi0gICAgfQorfTsKIAotICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVP
ckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
c0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3BsYXlHcmlkQm94KGRpc3BsYXkp
OwotICAgIH0KK2ludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50LCBjb25zdCBSZW5kZXJTdHls
ZSYpOworZmxvYXQgYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20oZmxvYXQsIGNvbnN0IFJlbmRl
clN0eWxlJik7CitMYXlvdXRVbml0IGFkanVzdExheW91dFVuaXRGb3JBYnNvbHV0ZVpvb20oTGF5
b3V0VW5pdCwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAotICAgIC8vIENvbG9yIGFjY2Vzc29ycyBh
cmUgYWxsIHByaXZhdGUgdG8gbWFrZSBzdXJlIGNhbGxlcnMgdXNlIHZpc2l0ZWREZXBlbmRlbnRD
b2xvciBpbnN0ZWFkIHRvIGFjY2VzcyB0aGVtLgotICAgIHN0YXRpYyBDb2xvciBpbnZhbGlkQ29s
b3IoKSB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGJvcmRlckxlZnRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLmNvbG9yKCk7IH0KLSAg
ICBjb25zdCBDb2xvciYgYm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGJvcmRlclRvcENv
bG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5jb2xvcigpOyB9Ci0g
ICAgY29uc3QgQ29sb3ImIGJvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5ib3R0b20oKS5jb2xvcigpOyB9Ci0gICAgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+Y29sb3IoKTsgfQotICAgIGNv
bnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OwotICAgIGNvbnN0IENvbG9yJiBjb2x1bW5SdWxlQ29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9y
dWxlLmNvbG9yKCk7IH0KLSAgICBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuY29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9y
JiB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB0ZXh0RmlsbENvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3I7IH0KLSAgICBjb25z
dCBDb2xvciYgdGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbG9y
KCkgY29uc3Q7Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCYWNrZ3Jv
dW5kQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3Io
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRl
ckxlZnRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0Jv
cmRlclJpZ2h0Q29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3JkZXJCb3R0
b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtCb3Jk
ZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0
ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtPdXRs
aW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVk
TGlua091dGxpbmVDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua0NvbHVtblJ1
bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29s
LT5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHRleHRE
ZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rVGV4dERl
Y29yYXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zp
c2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVk
TGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlua1Rl
eHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVk
TGlua1RleHRTdHJva2VDb2xvcjsgfQorRUJvcmRlclN0eWxlIGNvbGxhcHNlZEJvcmRlclN0eWxl
KEVCb3JkZXJTdHlsZSk7CiAKLSAgICBDb2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBj
b2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKK2Jvb2wgcHNldWRvRWxlbWVu
dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqKTsKIAotICAgIGNvbnN0IENvbG9y
JiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xvcigpOyB9Ci0g
ICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZs
b29kQ29sb3IoKTsgfQotICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7IH0KK2lubGluZSBSZW5kZXJTdHlsZTo6
Tm9uSW5oZXJpdGVkRmxhZ3M6Ok5vbkluaGVyaXRlZEZsYWdzKCkKK3sKKyAgICAvLyBBbGwgdGhl
c2UgaW5pdGlhbCB2YWx1ZXMgbmVlZCB0byBiZSB6ZXJvIHNvIHRoYXQgemVyby1pbml0aWFsaXpp
bmcgbV9mbGFncyBpcyBjb3JyZWN0LgorICAgIEFTU0VSVCghaW5pdGlhbE92ZXJmbG93WCgpKTsK
KyAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7CisgICAgQVNTRVJUKCFpbml0aWFsQ2xl
YXIoKSk7CisgICAgQVNTRVJUKCFpbml0aWFsRGlzcGxheSgpKTsKKyAgICBBU1NFUlQoIWluaXRp
YWxVbmljb2RlQmlkaSgpKTsKKyAgICBBU1NFUlQoIWluaXRpYWxQb3NpdGlvbigpKTsKKyAgICBB
U1NFUlQoIWluaXRpYWxWZXJ0aWNhbEFsaWduKCkpOworICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0
aW5nKCkpOworICAgIEFTU0VSVCghaW5pdGlhbFRhYmxlTGF5b3V0KCkpOworfQogCi0gICAgdm9p
ZCBhcHBlbmRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4pOwotfTsKK2lubGlu
ZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6Y29weU5vbkluaGVyaXRlZEZy
b20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKQoreworICAgIC8vIE9ubHkgYSBzdWJz
ZXQgaXMgY29waWVkIGJlY2F1c2UgTm9uSW5oZXJpdGVkRmxhZ3MgY29udGFpbnMgYSBidW5jaCBv
ZiBzdHVmZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KKyAgICB1aW50NjRfdCBub25Jbmhl
cml0ZWRNYXNrID0gb3ZlcmZsb3dNYXNrIDw8IG92ZXJmbG93WE9mZnNldAorICAgICAgICB8IG92
ZXJmbG93TWFzayA8PCBvdmVyZmxvd1lPZmZzZXQKKyAgICAgICAgfCBjbGVhck1hc2sgPDwgY2xl
YXJPZmZzZXQKKyAgICAgICAgfCBkaXNwbGF5TWFzayA8PCBlZmZlY3RpdmVEaXNwbGF5T2Zmc2V0
CisgICAgICAgIHwgcG9zaXRpb25NYXNrIDw8IHBvc2l0aW9uT2Zmc2V0CisgICAgICAgIHwgZGlz
cGxheU1hc2sgPDwgb3JpZ2luYWxEaXNwbGF5T2Zmc2V0CisgICAgICAgIHwgdW5pY29kZUJpZGlN
YXNrIDw8IHVuaWNvZGVCaWRpT2Zmc2V0CisgICAgICAgIHwgdmVydGljYWxBbGlnbk1hc2sgPDwg
dmVydGljYWxBbGlnbk9mZnNldAorICAgICAgICB8IGZsb2F0aW5nTWFzayA8PCBmbG9hdGluZ09m
ZnNldAorICAgICAgICB8IG9uZUJpdE1hc2sgPDwgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldAor
ICAgICAgICB8IHRhYmxlTGF5b3V0Qml0TWFzayA8PCB0YWJsZUxheW91dE9mZnNldAorICAgICAg
ICB8IGhhc1ZpZXdwb3J0VW5pdHNCaXRNYXNrIDw8IGhhc1ZpZXdwb3J0VW5pdHNPZmZzZXQ7CisK
KyAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9uSW5oZXJpdGVkTWFzaykgfCAob3RoZXIubV9m
bGFncyAmIG5vbkluaGVyaXRlZE1hc2spOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QK
K3sKKyAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOworICAgIEFTU0VSVChwc2V1ZG8gPCBG
SVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7CisgICAgcmV0dXJuIChvbmVCaXRNYXNrIDw8IChwc2V1
ZG9CaXRzT2Zmc2V0IC0gMSArIHBzZXVkbykpICYgbV9mbGFnczsKK30KKworaW5saW5lIHZvaWQg
UmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZShQc2V1ZG9J
ZCBwc2V1ZG8pCit7CisgICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKKyAgICBBU1NFUlQo
cHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOworICAgIG1fZmxhZ3MgfD0gb25lQml0
TWFzayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOworfQorCitpbmxpbmUgdm9p
ZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyhQc2V1
ZG9JZFNldCBwc2V1ZG9JZFNldCkKK3sKKyAgICBBU1NFUlQocHNldWRvSWRTZXQpOworICAgIHVp
bnQ2NF90IHJhd1BzZXVkb0lkU2V0ID0gcHNldWRvSWRTZXQuZGF0YSgpOworICAgIEFTU0VSVCgo
cmF3UHNldWRvSWRTZXQgJiBQVUJMSUNfUFNFVURPSURfTUFTSykgPT0gcmF3UHNldWRvSWRTZXQp
OworICAgIHN0YXRpY19hc3NlcnQocHNldWRvQml0c09mZnNldCA+PSAxLCAiKHBzZXVkb0JpdHNP
ZmZzZXQgLSAxKSBzaG91bGQgYmUgdmFsaWQuIik7CisgICAgbV9mbGFncyB8PSAoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhd1BzZXVkb0lkU2V0KSA8PCAocHNldWRvQml0c09mZnNldCAtIDEpKTsK
K30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjp1cGRhdGVC
b29sZWFuKGJvb2wgaXNTZXQsIHVpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBpZiAoaXNTZXQpCisg
ICAgICAgIG1fZmxhZ3MgfD0gKG9uZUJpdE1hc2sgPDwgb2Zmc2V0KTsKKyAgICBlbHNlCisgICAg
ICAgIG1fZmxhZ3MgJj0gfihvbmVCaXRNYXNrIDw8IG9mZnNldCk7Cit9CisKK2lubGluZSBib29s
IFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6Z2V0Qm9vbGVhbih1aW50NjRfdCBvZmZz
ZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmxhZ3MgJiAob25lQml0TWFzayA8PCBvZmZzZXQp
OworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnVwZGF0
ZVZhbHVlKHVpbnQ4X3QgbmV3VmFsdWUsIHVpbnQ2NF90IHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNr
LCB1aW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNTRVJUKCEobmV3VmFsdWUgJiB+cG9zaXRpb25J
bmRlcGVuZGVudE1hc2spKTsKKyAgICB1aW50NjRfdCBwb3NpdGlvbkRlcGVuZGVudE1hc2sgPSBw
b3NpdGlvbkluZGVwZW5kZW50TWFzayA8PCBvZmZzZXQ7CisgICAgbV9mbGFncyA9IChtX2ZsYWdz
ICYgfnBvc2l0aW9uRGVwZW5kZW50TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1Zh
bHVlKSA8PCBvZmZzZXQpOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6SW5oZXJpdGVk
RmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiBlbXB0eUNlbGxzID09IG90aGVyLmVtcHR5Q2VsbHMKKyAgICAgICAgJiYgY2Fw
dGlvblNpZGUgPT0gb3RoZXIuY2FwdGlvblNpZGUKKyAgICAgICAgJiYgbGlzdFN0eWxlVHlwZSA9
PSBvdGhlci5saXN0U3R5bGVUeXBlCisgICAgICAgICYmIGxpc3RTdHlsZVBvc2l0aW9uID09IG90
aGVyLmxpc3RTdHlsZVBvc2l0aW9uCisgICAgICAgICYmIHZpc2liaWxpdHkgPT0gb3RoZXIudmlz
aWJpbGl0eQorICAgICAgICAmJiB0ZXh0QWxpZ24gPT0gb3RoZXIudGV4dEFsaWduCisgICAgICAg
ICYmIHRleHRUcmFuc2Zvcm0gPT0gb3RoZXIudGV4dFRyYW5zZm9ybQorICAgICAgICAmJiB0ZXh0
RGVjb3JhdGlvbnMgPT0gb3RoZXIudGV4dERlY29yYXRpb25zCisgICAgICAgICYmIGN1cnNvciA9
PSBvdGhlci5jdXJzb3IKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCisgICAgICAgICYm
IGN1cnNvclZpc2liaWxpdHkgPT0gb3RoZXIuY3Vyc29yVmlzaWJpbGl0eQorI2VuZGlmCisgICAg
ICAgICYmIGRpcmVjdGlvbiA9PSBvdGhlci5kaXJlY3Rpb24KKyAgICAgICAgJiYgd2hpdGVTcGFj
ZSA9PSBvdGhlci53aGl0ZVNwYWNlCisgICAgICAgICYmIGJvcmRlckNvbGxhcHNlID09IG90aGVy
LmJvcmRlckNvbGxhcHNlCisgICAgICAgICYmIGJveERpcmVjdGlvbiA9PSBvdGhlci5ib3hEaXJl
Y3Rpb24KKyAgICAgICAgJiYgcnRsT3JkZXJpbmcgPT0gb3RoZXIucnRsT3JkZXJpbmcKKyAgICAg
ICAgJiYgcHJpbnRDb2xvckFkanVzdCA9PSBvdGhlci5wcmludENvbG9yQWRqdXN0CisgICAgICAg
ICYmIHBvaW50ZXJFdmVudHMgPT0gb3RoZXIucG9pbnRlckV2ZW50cworICAgICAgICAmJiBpbnNp
ZGVMaW5rID09IG90aGVyLmluc2lkZUxpbmsKKyAgICAgICAgJiYgaW5zaWRlRGVmYXVsdEJ1dHRv
biA9PSBvdGhlci5pbnNpZGVEZWZhdWx0QnV0dG9uCisgICAgICAgICYmIHdyaXRpbmdNb2RlID09
IG90aGVyLndyaXRpbmdNb2RlOworfQorCitpbmxpbmUgdW5zaWduZWQgUmVuZGVyU3R5bGU6Ok5v
bkluaGVyaXRlZEZsYWdzOjpnZXRWYWx1ZSh1aW50NjRfdCBwb3NpdGlvbkluZGVwZW5kZW50TWFz
aywgdWludDY0X3Qgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKG1fZmxhZ3MgPj4gb2Zmc2V0KSAmIHBvc2l0aW9uSW5kZXBlbmRlbnRNYXNrKTsKK30K
IAogaW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50IHZhbHVlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7CkBAIC0yMzI1LDUwICsyMTA0LDI1NiBAQCBpbmxpbmUgRUJvcmRl
clN0eWxlIGNvbGxhcHNlZEJvcmRlclN0eWxlKEVCb3JkZXJTdHlsZSBzdHlsZSkKICAgICByZXR1
cm4gc3R5bGU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRab29tKGZsb2F0IGYp
CitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzQmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciku
aXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJbWFnZSgpOworfQorCitpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKIHsKLSAgICBzZXRF
ZmZlY3RpdmVab29tKGVmZmVjdGl2ZVpvb20oKSAqIGYpOwotICAgIGlmIChjb21wYXJlRXF1YWwo
dmlzdWFsLT5tX3pvb20sIGYpKQorICAgIC8vIE5vd3JhcCBhbmQgcHJlIGRvbid0IGF1dG9tYXRp
Y2FsbHkgd3JhcC4KKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBOT1dSQVAgJiYgd2hpdGVTcGFj
ZSAhPSBQUkU7Cit9CisKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpwcmVzZXJ2ZU5ld2xpbmUo
RVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK3sKKyAgICAvLyBOb3JtYWwgYW5kIG5vd3JhcCBkbyBu
b3QgcHJlc2VydmUgbmV3bGluZXMuCisgICAgcmV0dXJuIHdoaXRlU3BhY2UgIT0gTk9STUFMICYm
IHdoaXRlU3BhY2UgIT0gTk9XUkFQOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29s
bGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQoreworICAgIC8vIFByZSBhbmQgcHJld3Jh
cCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4KKyAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdz
ICE9IFBSRV9XUkFQOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNDb2xsYXBzaWJs
ZVdoaXRlU3BhY2UoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAgIHN3aXRjaCAoY2hhcmFj
dGVyKSB7CisgICAgY2FzZSAnICc6CisgICAgY2FzZSAnXHQnOgorICAgICAgICByZXR1cm4gY29s
bGFwc2VXaGl0ZVNwYWNlKCk7CisgICAgY2FzZSAnXG4nOgorICAgICAgICByZXR1cm4gIXByZXNl
cnZlTmV3bGluZSgpOworICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2
aXN1YWwuYWNjZXNzKCktPm1fem9vbSA9IGY7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
d2hpdGVTcGFjZSgpID09IFBSRV9XUkFQIHx8IGxpbmVCcmVhaygpID09IExpbmVCcmVha0FmdGVy
V2hpdGVTcGFjZTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFrV29yZHMoKSBj
b25zdAoreworICAgIHJldHVybiB3b3JkQnJlYWsoKSA9PSBCcmVha1dvcmRCcmVhayB8fCBvdmVy
Zmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93V3JhcDsKK30KKworaW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdAoreworICAgIGF1dG8gYXhpcyA9IGNv
bHVtbkF4aXMoKTsKKyAgICByZXR1cm4gYXhpcyA9PSBBdXRvQ29sdW1uQXhpcyB8fCBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID09IChheGlzID09IEhvcml6b250YWxDb2x1bW5BeGlzKTsKK30K
KworaW5saW5lIEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0
aW9uKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0
YS0+aW1hZ2VPcmllbnRhdGlvbik7CisjZWxzZQorICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbjsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TG9naWNh
bFdpZHRoKExlbmd0aCYmIGxvZ2ljYWxXaWR0aCkKK3sKKyAgICBpZiAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKKyAgICAgICAgc2V0V2lkdGgoV1RGTW92ZShsb2dpY2FsV2lkdGgpKTsKKyAg
ICBlbHNlCisgICAgICAgIHNldEhlaWdodChXVEZNb3ZlKGxvZ2ljYWxXaWR0aCkpOworfQorCitp
bmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TG9naWNhbEhlaWdodChMZW5ndGgmJiBsb2dpY2Fs
SGVpZ2h0KQoreworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBz
ZXRIZWlnaHQoV1RGTW92ZShsb2dpY2FsSGVpZ2h0KSk7CisgICAgZWxzZQorICAgICAgICBzZXRX
aWR0aChXVEZNb3ZlKGxvZ2ljYWxIZWlnaHQpKTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5
bGU6OnNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplJiYgc2l6ZSkKK3sKKyAgICBhdXRvIHRvcExl
ZnQgPSBzaXplOworICAgIHNldEJvcmRlclRvcExlZnRSYWRpdXMoV1RGTW92ZSh0b3BMZWZ0KSk7
CisgICAgYXV0byB0b3BSaWdodCA9IHNpemU7CisgICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
V1RGTW92ZSh0b3BSaWdodCkpOworICAgIGF1dG8gYm90dG9tTGVmdCA9IHNpemU7CisgICAgc2V0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhXVEZNb3ZlKGJvdHRvbUxlZnQpKTsKKyAgICBzZXRCb3Jk
ZXJCb3R0b21SaWdodFJhZGl1cyhXVEZNb3ZlKHNpemUpKTsKK30KKworaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHNl
dEJvcmRlclJhZGl1cyhMZW5ndGhTaXplIHsgeyBzaXplLndpZHRoKCksIEZpeGVkIH0sIHsgc2l6
ZS5oZWlnaHQoKSwgRml4ZWQgfSB9KTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNl
dFpvb20oZmxvYXQgem9vbUxldmVsKQoreworICAgIHNldEVmZmVjdGl2ZVpvb20oZWZmZWN0aXZl
Wm9vbSgpICogem9vbUxldmVsKTsKKyAgICBpZiAoY29tcGFyZUVxdWFsKG1fdmlzdWFsRGF0YS0+
em9vbSwgem9vbUxldmVsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fdmlzdWFsRGF0
YS5hY2Nlc3MoKS56b29tID0gem9vbUxldmVsOwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxp
bmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0RWZmZWN0aXZlWm9vbShmbG9hdCBmKQoraW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OnNldEVmZmVjdGl2ZVpvb20oZmxvYXQgem9vbUxldmVsKQogewotICAg
IGlmIChjb21wYXJlRXF1YWwocmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSwgZikp
CisgICAgaWYgKGNvbXBhcmVFcXVhbChtX3JhcmVJbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVab29t
LCB6b29tTGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmFyZUluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fZWZmZWN0aXZlWm9vbSA9IGY7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS5lZmZlY3RpdmVab29tID0gem9vbUxldmVsOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKGNvbXBhcmVFcXVhbChyYXJlSW5o
ZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0
T3JpZW50YXRpb24pKSkKKyAgICBpZiAoY29tcGFyZUVxdWFsKG1fcmFyZUluaGVyaXRlZERhdGEt
PnRleHRPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHRPcmllbnRhdGlvbikp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS50ZXh0T3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dE9yaWVudGF0aW9u
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVz
dEJhY2tncm91bmRMYXllcnMoKQoreworICAgIGlmIChiYWNrZ3JvdW5kTGF5ZXJzKCkubmV4dCgp
KSB7CisgICAgICAgIGVuc3VyZUJhY2tncm91bmRMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsK
KyAgICAgICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsK
KyAgICB9Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RNYXNrTGF5ZXJzKCkK
K3sKKyAgICBpZiAobWFza0xheWVycygpLm5leHQoKSkgeworICAgICAgICBlbnN1cmVNYXNrTGF5
ZXJzKCkuY3VsbEVtcHR5TGF5ZXJzKCk7CisgICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5maWxs
VW5zZXRQcm9wZXJ0aWVzKCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6
Y2xlYXJBbmltYXRpb25zKCkKK3sKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmFuaW1hdGlvbnMgPSBudWxscHRyOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Y2xl
YXJUcmFuc2l0aW9ucygpCit7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50
cmFuc2l0aW9ucyA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRT
aGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYgdmFsdWUpCit7CisgICAgaWYgKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnNoYXBlT3V0c2lkZSA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuc2hhcGVPdXRzaWRlID0gV1RG
TW92ZSh2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdl
VGhyZXNob2xkKGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQpCit7CisgICAgZmxvYXQgY2xhbXBl
ZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRvPGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xk
LCAwLCAxKTsKKyAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlSW1hZ2VU
aHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdlVGhyZXNob2xkKTsKK30KIAotICAgIHJhcmVJbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RleHRPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0ZXh0T3JpZW50YXRpb24pOworaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXBQ
YXRoKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit7CisgICAgaWYgKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG9wZXJhdGlvbikKKyAgICAgICAgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jbGlwUGF0aCA9IFdURk1vdmUob3BlcmF0aW9u
KTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OndpbGxDaGFuZ2VDcmVhdGVzU3RhY2tp
bmdDb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbENoYW5nZSgpICYmIHdpbGxDaGFu
Z2UoKS0+Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCk7Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGlzcGxh
eSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sKKyAgICAgICAgfHwgZGlz
cGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSgpID09IFRBQkxFX0NBUFRJT04KKyAgICAg
ICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRFTTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6OnNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHYpCit7CisgICAgaWYgKHYgPT0gd3JpdGlu
Z01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1faW5oZXJpdGVkRmxhZ3Mud3Jp
dGluZ01vZGUgPSB2OwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgdm9pZCBSZW5kZXJT
dHlsZTo6Z2V0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRv
d0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwgbG9naWNhbFJpZ2h0KSA6IGdl
dFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7
Cit9CisKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4
dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxU
b3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxv
Z2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5IGRpc3BsYXkpCit7CisgICAgcmV0dXJuIGRp
c3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5
ID09IElOTElORV9GTEVYCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgfHwg
ZGlzcGxheSA9PSBJTkxJTkVfR1JJRAorI2VuZGlmCisgICAgICAgIHx8IGRpc3BsYXkgPT0gSU5M
SU5FX1RBQkxFOworfQorCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5l
VHlwZShFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8
fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7Cit9CisKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5KQoreworICAgIHJl
dHVybiBkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWDsKK30KKworaW5s
aW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkK
K3sKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHJldHVybiBkaXNwbGF5ID09IEdS
SUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRp
c3BsYXkpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK3sK
KyAgICByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVCb3goZGlzcGxheSkgfHwgaXNEaXNwbGF5R3Jp
ZEJveChkaXNwbGF5KTsKK30KKwogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0FueVB1Ymxp
Y1BzZXVkb1N0eWxlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5o
YXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsKKyAgICByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFn
cy5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5
bGU6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QKIHsKLSAgICByZXR1cm4g
bm9uaW5oZXJpdGVkX2ZsYWdzLmhhc1BzZXVkb1N0eWxlKHBzZXVkbyk7CisgICAgcmV0dXJuIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuaGFzUHNldWRvU3R5bGUocHNldWRvKTsKIH0KIAogaW5saW5lIHZv
aWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykKIHsKLSAg
ICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzUHNldWRvU3R5bGUocHNldWRvKTsKKyAgICBtX25v
bkluaGVyaXRlZEZsYWdzLnNldEhhc1BzZXVkb1N0eWxlKHBzZXVkbyk7CiB9CiAKIGlubGluZSB2
b2lkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQgcHNldWRvSWRT
ZXQpCiB7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEhhc1BzZXVkb1N0eWxlcyhwc2V1ZG9J
ZFNldCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5zZXRIYXNQc2V1ZG9TdHlsZXMocHNldWRv
SWRTZXQpOworfQorCitpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94UmVmbGVjdChSZWZQ
dHI8U3R5bGVSZWZsZWN0aW9uPiYmIHJlZmxlY3QpCit7CisgICAgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBib3hSZWZsZWN0LCBXVEZNb3ZlKHJlZmxlY3QpKTsKIH0KIAogaW5saW5l
IGJvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5jcHAKaW5kZXggNmMwMmU1MDhhZjFhYTM4YjIyYzJmMjM5OWZkZDUyNDdhZTM0MWM5Zi4uZTQ2
OGY4OWQ4MTEzYzg4ZDYwZTU0MTJhMGFiZjBjMmZiYjllMDE1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCkBAIC00OSw0NiArNDks
NDYgQEAgUmVmPFNWR1JlbmRlclN0eWxlPiBTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0
eWxlKCkKIH0KIAogU1ZHUmVuZGVyU3R5bGU6OlNWR1JlbmRlclN0eWxlKCkKLSAgICA6IGZpbGwo
ZGVmYXVsdFNWR1N0eWxlKCkuZmlsbCkKLSAgICAsIHN0cm9rZShkZWZhdWx0U1ZHU3R5bGUoKS5z
dHJva2UpCi0gICAgLCB0ZXh0KGRlZmF1bHRTVkdTdHlsZSgpLnRleHQpCi0gICAgLCBpbmhlcml0
ZWRSZXNvdXJjZXMoZGVmYXVsdFNWR1N0eWxlKCkuaW5oZXJpdGVkUmVzb3VyY2VzKQotICAgICwg
c3RvcHMoZGVmYXVsdFNWR1N0eWxlKCkuc3RvcHMpCi0gICAgLCBtaXNjKGRlZmF1bHRTVkdTdHls
ZSgpLm1pc2MpCi0gICAgLCBzaGFkb3dTVkcoZGVmYXVsdFNWR1N0eWxlKCkuc2hhZG93U1ZHKQot
ICAgICwgbGF5b3V0KGRlZmF1bHRTVkdTdHlsZSgpLmxheW91dCkKLSAgICAsIHJlc291cmNlcyhk
ZWZhdWx0U1ZHU3R5bGUoKS5yZXNvdXJjZXMpCisgICAgOiBtX2ZpbGxEYXRhKGRlZmF1bHRTVkdT
dHlsZSgpLm1fZmlsbERhdGEpCisgICAgLCBtX3N0cm9rZURhdGEoZGVmYXVsdFNWR1N0eWxlKCku
bV9zdHJva2VEYXRhKQorICAgICwgbV90ZXh0RGF0YShkZWZhdWx0U1ZHU3R5bGUoKS5tX3RleHRE
YXRhKQorICAgICwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9p
bmhlcml0ZWRSZXNvdXJjZURhdGEpCisgICAgLCBtX3N0b3BEYXRhKGRlZmF1bHRTVkdTdHlsZSgp
Lm1fc3RvcERhdGEpCisgICAgLCBtX21pc2NEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fbWlzY0Rh
dGEpCisgICAgLCBtX3NoYWRvd0RhdGEoZGVmYXVsdFNWR1N0eWxlKCkubV9zaGFkb3dEYXRhKQor
ICAgICwgbV9sYXlvdXREYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fbGF5b3V0RGF0YSkKKyAgICAs
IG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGRlZmF1bHRTVkdTdHlsZSgpLm1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhKQogewogICAgIHNldEJpdERlZmF1bHRzKCk7CiB9CiAKIFNWR1JlbmRl
clN0eWxlOjpTVkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0VHlwZSkKLSAgICA6IGZpbGwoU3R5
bGVGaWxsRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBzdHJva2UoU3R5bGVTdHJva2VEYXRhOjpjcmVh
dGUoKSkKLSAgICAsIHRleHQoU3R5bGVUZXh0RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBpbmhlcml0
ZWRSZXNvdXJjZXMoU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQotICAgICwg
c3RvcHMoU3R5bGVTdG9wRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtaXNjKFN0eWxlTWlzY0RhdGE6
OmNyZWF0ZSgpKQotICAgICwgc2hhZG93U1ZHKFN0eWxlU2hhZG93U1ZHRGF0YTo6Y3JlYXRlKCkp
Ci0gICAgLCBsYXlvdXQoU3R5bGVMYXlvdXREYXRhOjpjcmVhdGUoKSkKLSAgICAsIHJlc291cmNl
cyhTdHlsZVJlc291cmNlRGF0YTo6Y3JlYXRlKCkpCisgICAgOiBtX2ZpbGxEYXRhKFN0eWxlRmls
bERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9zdHJva2VEYXRhKFN0eWxlU3Ryb2tlRGF0YTo6Y3Jl
YXRlKCkpCisgICAgLCBtX3RleHREYXRhKFN0eWxlVGV4dERhdGE6OmNyZWF0ZSgpKQorICAgICwg
bV9pbmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6OmNyZWF0
ZSgpKQorICAgICwgbV9zdG9wRGF0YShTdHlsZVN0b3BEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1f
bWlzY0RhdGEoU3R5bGVNaXNjRGF0YTo6Y3JlYXRlKCkpCisgICAgLCBtX3NoYWRvd0RhdGEoU3R5
bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fbGF5b3V0RGF0YShTdHlsZUxheW91
dERhdGE6OmNyZWF0ZSgpKQorICAgICwgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEoU3R5bGVS
ZXNvdXJjZURhdGE6OmNyZWF0ZSgpKQogewogICAgIHNldEJpdERlZmF1bHRzKCk7CiB9CiAKIGlu
bGluZSBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVuZGVyU3R5bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTVkdSZW5kZXJTdHlsZT4oKQotICAgICwgc3ZnX2lu
aGVyaXRlZF9mbGFncyhvdGhlci5zdmdfaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncyhvdGhlci5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgZmlsbChv
dGhlci5maWxsKQotICAgICwgc3Ryb2tlKG90aGVyLnN0cm9rZSkKLSAgICAsIHRleHQob3RoZXIu
dGV4dCkKLSAgICAsIGluaGVyaXRlZFJlc291cmNlcyhvdGhlci5pbmhlcml0ZWRSZXNvdXJjZXMp
Ci0gICAgLCBzdG9wcyhvdGhlci5zdG9wcykKLSAgICAsIG1pc2Mob3RoZXIubWlzYykKLSAgICAs
IHNoYWRvd1NWRyhvdGhlci5zaGFkb3dTVkcpCi0gICAgLCBsYXlvdXQob3RoZXIubGF5b3V0KQot
ICAgICwgcmVzb3VyY2VzKG90aGVyLnJlc291cmNlcykKKyAgICAsIG1faW5oZXJpdGVkRmxhZ3Mo
b3RoZXIubV9pbmhlcml0ZWRGbGFncykKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mob3RoZXIu
bV9ub25Jbmhlcml0ZWRGbGFncykKKyAgICAsIG1fZmlsbERhdGEob3RoZXIubV9maWxsRGF0YSkK
KyAgICAsIG1fc3Ryb2tlRGF0YShvdGhlci5tX3N0cm9rZURhdGEpCisgICAgLCBtX3RleHREYXRh
KG90aGVyLm1fdGV4dERhdGEpCisgICAgLCBtX2luaGVyaXRlZFJlc291cmNlRGF0YShvdGhlci5t
X2luaGVyaXRlZFJlc291cmNlRGF0YSkKKyAgICAsIG1fc3RvcERhdGEob3RoZXIubV9zdG9wRGF0
YSkKKyAgICAsIG1fbWlzY0RhdGEob3RoZXIubV9taXNjRGF0YSkKKyAgICAsIG1fc2hhZG93RGF0
YShvdGhlci5tX3NoYWRvd0RhdGEpCisgICAgLCBtX2xheW91dERhdGEob3RoZXIubV9sYXlvdXRE
YXRhKQorICAgICwgbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGEob3RoZXIubV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGEpCiB7CiB9CiAKQEAgLTEwMyw0OSArMTAzLDQ2IEBAIFNWR1JlbmRlclN0
eWxlOjp+U1ZHUmVuZGVyU3R5bGUoKQogCiBib29sIFNWR1JlbmRlclN0eWxlOjpvcGVyYXRvcj09
KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZmlsbCA9
PSBvdGhlci5maWxsCi0gICAgICAgICYmIHN0cm9rZSA9PSBvdGhlci5zdHJva2UKLSAgICAgICAg
JiYgdGV4dCA9PSBvdGhlci50ZXh0Ci0gICAgICAgICYmIHN0b3BzID09IG90aGVyLnN0b3BzCi0g
ICAgICAgICYmIG1pc2MgPT0gb3RoZXIubWlzYwotICAgICAgICAmJiBzaGFkb3dTVkcgPT0gb3Ro
ZXIuc2hhZG93U1ZHCi0gICAgICAgICYmIGxheW91dCA9PSBvdGhlci5sYXlvdXQKLSAgICAgICAg
JiYgaW5oZXJpdGVkUmVzb3VyY2VzID09IG90aGVyLmluaGVyaXRlZFJlc291cmNlcwotICAgICAg
ICAmJiByZXNvdXJjZXMgPT0gb3RoZXIucmVzb3VyY2VzCi0gICAgICAgICYmIHN2Z19pbmhlcml0
ZWRfZmxhZ3MgPT0gb3RoZXIuc3ZnX2luaGVyaXRlZF9mbGFncwotICAgICAgICAmJiBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzID09IG90aGVyLnN2Z19ub25pbmhlcml0ZWRfZmxhZ3M7CisgICAgcmV0
dXJuIG1fZmlsbERhdGEgPT0gb3RoZXIubV9maWxsRGF0YQorICAgICAgICAmJiBtX3N0cm9rZURh
dGEgPT0gb3RoZXIubV9zdHJva2VEYXRhCisgICAgICAgICYmIG1fdGV4dERhdGEgPT0gb3RoZXIu
bV90ZXh0RGF0YQorICAgICAgICAmJiBtX3N0b3BEYXRhID09IG90aGVyLm1fc3RvcERhdGEKKyAg
ICAgICAgJiYgbV9taXNjRGF0YSA9PSBvdGhlci5tX21pc2NEYXRhCisgICAgICAgICYmIG1fc2hh
ZG93RGF0YSA9PSBvdGhlci5tX3NoYWRvd0RhdGEKKyAgICAgICAgJiYgbV9sYXlvdXREYXRhID09
IG90aGVyLm1fbGF5b3V0RGF0YQorICAgICAgICAmJiBtX2luaGVyaXRlZFJlc291cmNlRGF0YSA9
PSBvdGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YQorICAgICAgICAmJiBtX25vbkluaGVyaXRl
ZFJlc291cmNlRGF0YSA9PSBvdGhlci5tX25vbkluaGVyaXRlZFJlc291cmNlRGF0YQorICAgICAg
ICAmJiBtX2luaGVyaXRlZEZsYWdzID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MKKyAgICAgICAg
JiYgbV9ub25Jbmhlcml0ZWRGbGFncyA9PSBvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzOwogfQog
Ci1ib29sIFNWR1JlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJT
dHlsZSogb3RoZXIpIGNvbnN0Citib29sIFNWR1JlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVh
bChjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbGwg
IT0gb3RoZXItPmZpbGwKLSAgICAgICAgfHwgc3Ryb2tlICE9IG90aGVyLT5zdHJva2UKLSAgICAg
ICAgfHwgdGV4dCAhPSBvdGhlci0+dGV4dAotICAgICAgICB8fCBpbmhlcml0ZWRSZXNvdXJjZXMg
IT0gb3RoZXItPmluaGVyaXRlZFJlc291cmNlcwotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2Zs
YWdzICE9IG90aGVyLT5zdmdfaW5oZXJpdGVkX2ZsYWdzOworICAgIHJldHVybiBtX2ZpbGxEYXRh
ICE9IG90aGVyLm1fZmlsbERhdGEKKyAgICAgICAgfHwgbV9zdHJva2VEYXRhICE9IG90aGVyLm1f
c3Ryb2tlRGF0YQorICAgICAgICB8fCBtX3RleHREYXRhICE9IG90aGVyLm1fdGV4dERhdGEKKyAg
ICAgICAgfHwgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgIT0gb3RoZXIubV9pbmhlcml0ZWRSZXNv
dXJjZURhdGEKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncyAhPSBvdGhlci5tX2luaGVyaXRl
ZEZsYWdzOwogfQogCi12b2lkIFNWR1JlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBTVkdS
ZW5kZXJTdHlsZSogc3ZnSW5oZXJpdFBhcmVudCkKK3ZvaWQgU1ZHUmVuZGVyU3R5bGU6OmluaGVy
aXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikKIHsKLSAgICBpZiAoIXN2Z0luaGVy
aXRQYXJlbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBtX2ZpbGxEYXRhID0gb3RoZXIubV9maWxs
RGF0YTsKKyAgICBtX3N0cm9rZURhdGEgPSBvdGhlci5tX3N0cm9rZURhdGE7CisgICAgbV90ZXh0
RGF0YSA9IG90aGVyLm1fdGV4dERhdGE7CisgICAgbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEgPSBv
dGhlci5tX2luaGVyaXRlZFJlc291cmNlRGF0YTsKIAotICAgIGZpbGwgPSBzdmdJbmhlcml0UGFy
ZW50LT5maWxsOwotICAgIHN0cm9rZSA9IHN2Z0luaGVyaXRQYXJlbnQtPnN0cm9rZTsKLSAgICB0
ZXh0ID0gc3ZnSW5oZXJpdFBhcmVudC0+dGV4dDsKLSAgICBpbmhlcml0ZWRSZXNvdXJjZXMgPSBz
dmdJbmhlcml0UGFyZW50LT5pbmhlcml0ZWRSZXNvdXJjZXM7Ci0KLSAgICBzdmdfaW5oZXJpdGVk
X2ZsYWdzID0gc3ZnSW5oZXJpdFBhcmVudC0+c3ZnX2luaGVyaXRlZF9mbGFnczsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzID0gb3RoZXIubV9pbmhlcml0ZWRGbGFnczsKIH0KIAotdm9pZCBTVkdSZW5k
ZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVy
KQordm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZHUmVu
ZGVyU3R5bGUmIG90aGVyKQogewotICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MgPSBvdGhlci0+
c3ZnX25vbmluaGVyaXRlZF9mbGFnczsKLSAgICBzdG9wcyA9IG90aGVyLT5zdG9wczsKLSAgICBt
aXNjID0gb3RoZXItPm1pc2M7Ci0gICAgc2hhZG93U1ZHID0gb3RoZXItPnNoYWRvd1NWRzsKLSAg
ICBsYXlvdXQgPSBvdGhlci0+bGF5b3V0OwotICAgIHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJj
ZXM7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncyA9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3M7
CisgICAgbV9zdG9wRGF0YSA9IG90aGVyLm1fc3RvcERhdGE7CisgICAgbV9taXNjRGF0YSA9IG90
aGVyLm1fbWlzY0RhdGE7CisgICAgbV9zaGFkb3dEYXRhID0gb3RoZXIubV9zaGFkb3dEYXRhOwor
ICAgIG1fbGF5b3V0RGF0YSA9IG90aGVyLm1fbGF5b3V0RGF0YTsKKyAgICBtX25vbkluaGVyaXRl
ZFJlc291cmNlRGF0YSA9IG90aGVyLm1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogfQogCiBW
ZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3Jk
ZXIoKSBjb25zdApAQCAtMTg4LDEwNCArMTg1LDEwNCBAQCBWZWN0b3I8UGFpbnRUeXBlLCAzPiBT
VkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdAogICAgIHJldHVy
biBwYWludE9yZGVyOwogfQogCi1TdHlsZURpZmZlcmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRpZmYo
Y29uc3QgU1ZHUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAorU3R5bGVEaWZmZXJlbmNlIFNWR1Jl
bmRlclN0eWxlOjpkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKIHsKICAg
ICAvLyBOT1RFOiBBbGwgY29tcGFyaXNpb25zIHRoYXQgbWF5IHJldHVybiBTdHlsZURpZmZlcmVu
Y2VMYXlvdXQgaGF2ZSB0byBnbyBiZWZvcmUgdGhvc2Ugd2hvIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50CiAKICAgICAvLyBJZiBrZXJuaW5nIGNoYW5nZXMsIHdlIG5lZWQgYSByZWxheW91
dCwgdG8gZm9yY2UgU1ZHQ2hhcmFjdGVyRGF0YSB0byBiZSByZWNhbGN1bGF0ZWQgaW4gdGhlIFNW
R1Jvb3RJbmxpbmVCb3guCi0gICAgaWYgKHRleHQgIT0gb3RoZXItPnRleHQpCisgICAgaWYgKG1f
dGV4dERhdGEgIT0gb3RoZXIubV90ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVy
ZW5jZUxheW91dDsKIAogICAgIC8vIElmIHJlc291cmNlcyBjaGFuZ2UsIHdlIG5lZWQgYSByZWxh
eW91dCwgYXMgdGhlIHByZXNlbmNlIG9mIHJlc291cmNlcyBpbmZsdWVuY2VzIHRoZSByZXBhaW50
IHJlY3QuCi0gICAgaWYgKHJlc291cmNlcyAhPSBvdGhlci0+cmVzb3VyY2VzKQorICAgIGlmICht
X25vbkluaGVyaXRlZFJlc291cmNlRGF0YSAhPSBvdGhlci5tX25vbkluaGVyaXRlZFJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIElm
IG1hcmtlcnMgY2hhbmdlLCB3ZSBuZWVkIGEgcmVsYXlvdXQsIGFzIG1hcmtlciBib3VuZGFyaWVz
IGFyZSBjYWNoZWQgaW4gUmVuZGVyU1ZHUGF0aC4KLSAgICBpZiAoaW5oZXJpdGVkUmVzb3VyY2Vz
ICE9IG90aGVyLT5pbmhlcml0ZWRSZXNvdXJjZXMpCisgICAgaWYgKG1faW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhICE9IG90aGVyLm1faW5oZXJpdGVkUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gQWxsIHRleHQgcmVsYXRlZCBwcm9wZXJ0
aWVzIGluZmx1ZW5jZSBsYXlvdXQuCi0gICAgaWYgKHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRB
bmNob3IgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IKLSAgICAgICAg
fHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgIT0gb3Ro
ZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCi0gICAg
ICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCAhPSBv
dGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCi0gICAg
ICAgIHx8IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50QmFzZWxpbmUgIT0gb3Ro
ZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50QmFzZWxpbmUKLSAgICAgICAg
fHwgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lICE9IG90aGVyLT5z
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUKLSAgICAgICAgfHwgc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0ICE9IG90aGVyLT5zdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQpCisgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dEFuY2hvciAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3IKKyAgICAgICAg
fHwgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsICE9IG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCisgICAgICAgIHx8IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZQorICAgICAgICB8fCBtX25vbkluaGVy
aXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmUgIT0gb3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lCisgICAgICAgIHx8IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCAhPSBvdGhlci5tX25vbkluaGVyaXRlZEZs
YWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VMYXlvdXQ7CiAKICAgICAvLyBUZXh0IHJlbGF0ZWQgcHJvcGVydGllcyBpbmZsdWVuY2UgbGF5
b3V0LgotICAgIGJvb2wgbWlzY05vdEVxdWFsID0gbWlzYyAhPSBvdGhlci0+bWlzYzsKLSAgICBp
ZiAobWlzY05vdEVxdWFsICYmIG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZSAhPSBvdGhlci0+bWlz
Yy0+YmFzZWxpbmVTaGlmdFZhbHVlKQorICAgIGJvb2wgbWlzY05vdEVxdWFsID0gbV9taXNjRGF0
YSAhPSBvdGhlci5tX21pc2NEYXRhOworICAgIGlmIChtaXNjTm90RXF1YWwgJiYgbV9taXNjRGF0
YS0+YmFzZWxpbmVTaGlmdFZhbHVlICE9IG90aGVyLm1fbWlzY0RhdGEtPmJhc2VsaW5lU2hpZnRW
YWx1ZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgIC8vIFRo
ZXNlIHByb3BlcnRpZXMgYWZmZWN0IHRoZSBjYWNoZWQgc3Ryb2tlIGJvdW5kaW5nIGJveCByZWN0
cy4KLSAgICBpZiAoc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGUgIT0gb3RoZXItPnN2Z19p
bmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlCi0gICAgICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3Mu
X2pvaW5TdHlsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fam9pblN0eWxlKQorICAg
IGlmIChtX2luaGVyaXRlZEZsYWdzLmNhcFN0eWxlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
Y2FwU3R5bGUKKyAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5qb2luU3R5bGUgIT0gb3RoZXIu
bV9pbmhlcml0ZWRGbGFncy5qb2luU3R5bGUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VMYXlvdXQ7CiAKICAgICAvLyBTaGFkb3cgY2hhbmdlcyByZXF1aXJlIHJlbGF5b3V0cywgYXMg
dGhleSBhZmZlY3QgdGhlIHJlcGFpbnQgcmVjdHMuCi0gICAgaWYgKHNoYWRvd1NWRyAhPSBvdGhl
ci0+c2hhZG93U1ZHKQorICAgIGlmIChtX3NoYWRvd0RhdGEgIT0gb3RoZXIubV9zaGFkb3dEYXRh
KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gVGhlIHgg
b3IgeSBwcm9wZXJ0aWVzIHJlcXVpcmUgcmVsYXlvdXQuCi0gICAgaWYgKGxheW91dCAhPSBvdGhl
ci0+bGF5b3V0KQorICAgIGlmIChtX2xheW91dERhdGEgIT0gb3RoZXIubV9sYXlvdXREYXRhKQog
ICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OyAKIAogICAgIC8vIFNvbWUgc3Ry
b2tlIHByb3BlcnRpZXMsIHJlcXVpcmVzIHJlbGF5b3V0cywgYXMgdGhlIGNhY2hlZCBzdHJva2Ug
Ym91bmRhcmllcyBuZWVkIHRvIGJlIHJlY2FsY3VsYXRlZC4KLSAgICBpZiAoc3Ryb2tlICE9IG90
aGVyLT5zdHJva2UpIHsKLSAgICAgICAgaWYgKHN0cm9rZS0+d2lkdGggIT0gb3RoZXItPnN0cm9r
ZS0+d2lkdGgKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+cGFpbnRUeXBlICE9IG90aGVyLT5zdHJv
a2UtPnBhaW50VHlwZQotICAgICAgICAgICAgfHwgc3Ryb2tlLT5wYWludENvbG9yICE9IG90aGVy
LT5zdHJva2UtPnBhaW50Q29sb3IKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+cGFpbnRVcmkgIT0g
b3RoZXItPnN0cm9rZS0+cGFpbnRVcmkKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+bWl0ZXJMaW1p
dCAhPSBvdGhlci0+c3Ryb2tlLT5taXRlckxpbWl0Ci0gICAgICAgICAgICB8fCBzdHJva2UtPmRh
c2hBcnJheSAhPSBvdGhlci0+c3Ryb2tlLT5kYXNoQXJyYXkKLSAgICAgICAgICAgIHx8IHN0cm9r
ZS0+ZGFzaE9mZnNldCAhPSBvdGhlci0+c3Ryb2tlLT5kYXNoT2Zmc2V0Ci0gICAgICAgICAgICB8
fCBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVk
TGlua1BhaW50Q29sb3IKLSAgICAgICAgICAgIHx8IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFVy
aSAhPSBvdGhlci0+c3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJpCi0gICAgICAgICAgICB8fCBz
dHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlICE9IG90aGVyLT5zdHJva2UtPnZpc2l0ZWRMaW5r
UGFpbnRUeXBlKQorICAgIGlmIChtX3N0cm9rZURhdGEgIT0gb3RoZXIubV9zdHJva2VEYXRhKSB7
CisgICAgICAgIGlmIChtX3N0cm9rZURhdGEtPndpZHRoICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+
d2lkdGgKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlICE9IG90aGVyLm1f
c3Ryb2tlRGF0YS0+cGFpbnRUeXBlCisgICAgICAgICAgICB8fCBtX3N0cm9rZURhdGEtPnBhaW50
Q29sb3IgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5wYWludENvbG9yCisgICAgICAgICAgICB8fCBt
X3N0cm9rZURhdGEtPnBhaW50VXJpICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+cGFpbnRVcmkKKyAg
ICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdCAhPSBvdGhlci5tX3N0cm9rZURh
dGEtPm1pdGVyTGltaXQKKyAgICAgICAgICAgIHx8IG1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5ICE9
IG90aGVyLm1fc3Ryb2tlRGF0YS0+ZGFzaEFycmF5CisgICAgICAgICAgICB8fCBtX3N0cm9rZURh
dGEtPmRhc2hPZmZzZXQgIT0gb3RoZXIubV9zdHJva2VEYXRhLT5kYXNoT2Zmc2V0CisgICAgICAg
ICAgICB8fCBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvciAhPSBvdGhlci5tX3N0
cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcgorICAgICAgICAgICAgfHwgbV9zdHJva2VE
YXRhLT52aXNpdGVkTGlua1BhaW50VXJpICE9IG90aGVyLm1fc3Ryb2tlRGF0YS0+dmlzaXRlZExp
bmtQYWludFVyaQorICAgICAgICAgICAgfHwgbV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50
VHlwZSAhPSBvdGhlci5tX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKQogICAgICAg
ICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAogICAgICAgICAvLyBPbmx5IHRo
ZSBzdHJva2Utb3BhY2l0eSBjYXNlIHJlbWFpbnMsIHdoZXJlIHdlIG9ubHkgbmVlZCBhIHJlcGFp
bnQuCi0gICAgICAgIEFTU0VSVChzdHJva2UtPm9wYWNpdHkgIT0gb3RoZXItPnN0cm9rZS0+b3Bh
Y2l0eSk7CisgICAgICAgIEFTU0VSVChtX3N0cm9rZURhdGEtPm9wYWNpdHkgIT0gb3RoZXIubV9z
dHJva2VEYXRhLT5vcGFjaXR5KTsKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFp
bnQ7CiAgICAgfQogCiAgICAgLy8gdmVjdG9yLWVmZmVjdCBjaGFuZ2VzIHJlcXVpcmUgYSByZS1s
YXlvdXQuCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ICE9
IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCkKKyAgICBpZiAo
bV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QgIT0gb3RoZXIubV9ub25J
bmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHls
ZURpZmZlcmVuY2VMYXlvdXQ7CiAKICAgICAvLyBOT1RFOiBBbGwgY29tcGFyaXNpb25zIGJlbG93
IG1heSBvbmx5IHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50CiAKICAgICAvLyBQYWludGlu
ZyByZWxhdGVkIHByb3BlcnRpZXMgb25seSBuZWVkIHJlcGFpbnRzLiAKICAgICBpZiAobWlzY05v
dEVxdWFsKSB7Ci0gICAgICAgIGlmIChtaXNjLT5mbG9vZENvbG9yICE9IG90aGVyLT5taXNjLT5m
bG9vZENvbG9yCi0gICAgICAgICAgICB8fCBtaXNjLT5mbG9vZE9wYWNpdHkgIT0gb3RoZXItPm1p
c2MtPmZsb29kT3BhY2l0eQotICAgICAgICAgICAgfHwgbWlzYy0+bGlnaHRpbmdDb2xvciAhPSBv
dGhlci0+bWlzYy0+bGlnaHRpbmdDb2xvcikKKyAgICAgICAgaWYgKG1fbWlzY0RhdGEtPmZsb29k
Q29sb3IgIT0gb3RoZXIubV9taXNjRGF0YS0+Zmxvb2RDb2xvcgorICAgICAgICAgICAgfHwgbV9t
aXNjRGF0YS0+Zmxvb2RPcGFjaXR5ICE9IG90aGVyLm1fbWlzY0RhdGEtPmZsb29kT3BhY2l0eQor
ICAgICAgICAgICAgfHwgbV9taXNjRGF0YS0+bGlnaHRpbmdDb2xvciAhPSBvdGhlci5tX21pc2NE
YXRhLT5saWdodGluZ0NvbG9yKQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJl
cGFpbnQ7CiAgICAgfQogCi0gICAgLy8gSWYgZmlsbCBjaGFuZ2VzLCB3ZSBqdXN0IG5lZWQgdG8g
cmVwYWludC4gRmlsbCBib3VuZGFyaWVzIGFyZSBub3QgaW5mbHVlbmNlZCBieSB0aGlzLCBvbmx5
IGJ5IHRoZSBQYXRoLCB0aGF0IFJlbmRlclNWR1BhdGggY29udGFpbnMuCi0gICAgaWYgKGZpbGwt
PnBhaW50VHlwZSAhPSBvdGhlci0+ZmlsbC0+cGFpbnRUeXBlIHx8IGZpbGwtPnBhaW50Q29sb3Ig
IT0gb3RoZXItPmZpbGwtPnBhaW50Q29sb3IKLSAgICAgICAgfHwgZmlsbC0+cGFpbnRVcmkgIT0g
b3RoZXItPmZpbGwtPnBhaW50VXJpIHx8IGZpbGwtPm9wYWNpdHkgIT0gb3RoZXItPmZpbGwtPm9w
YWNpdHkpCisgICAgLy8gSWYgZmlsbCBkYXRhIGNoYW5nZXMsIHdlIGp1c3QgbmVlZCB0byByZXBh
aW50LiBGaWxsIGJvdW5kYXJpZXMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5IHRoaXMsIG9ubHkgYnkg
dGhlIFBhdGgsIHRoYXQgUmVuZGVyU1ZHUGF0aCBjb250YWlucy4KKyAgICBpZiAobV9maWxsRGF0
YS0+cGFpbnRUeXBlICE9IG90aGVyLm1fZmlsbERhdGEtPnBhaW50VHlwZSB8fCBtX2ZpbGxEYXRh
LT5wYWludENvbG9yICE9IG90aGVyLm1fZmlsbERhdGEtPnBhaW50Q29sb3IKKyAgICAgICAgfHwg
bV9maWxsRGF0YS0+cGFpbnRVcmkgIT0gb3RoZXIubV9maWxsRGF0YS0+cGFpbnRVcmkgfHwgbV9m
aWxsRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX2ZpbGxEYXRhLT5vcGFjaXR5KQogICAgICAgICBy
ZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIAogICAgIC8vIElmIGdyYWRpZW50IHN0b3Bz
IGNoYW5nZSwgd2UganVzdCBuZWVkIHRvIHJlcGFpbnQuIFN0eWxlIHVwZGF0ZXMgYXJlIGFscmVh
ZHkgaGFuZGxlZCB0aHJvdWdoIFJlbmRlclNWR0dyYWRpZW50U1RvcC4KLSAgICBpZiAoc3RvcHMg
IT0gb3RoZXItPnN0b3BzKQorICAgIGlmIChtX3N0b3BEYXRhICE9IG90aGVyLm1fc3RvcERhdGEp
CiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCiAgICAgLy8gQ2hhbmdl
cyBvZiB0aGVzZSBmbGFncyBvbmx5IGNhdXNlIHJlcGFpbnRzLgotICAgIGlmIChzdmdfaW5oZXJp
dGVkX2ZsYWdzLl9jb2xvclJlbmRlcmluZyAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5f
Y29sb3JSZW5kZXJpbmcKLSAgICAgICAgfHwgc3ZnX2luaGVyaXRlZF9mbGFncy5fc2hhcGVSZW5k
ZXJpbmcgIT0gb3RoZXItPnN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBlUmVuZGVyaW5nCi0gICAg
ICAgIHx8IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlICE9IG90aGVyLT5zdmdfaW5oZXJp
dGVkX2ZsYWdzLl9jbGlwUnVsZQotICAgICAgICB8fCBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9maWxs
UnVsZSAhPSBvdGhlci0+c3ZnX2luaGVyaXRlZF9mbGFncy5fZmlsbFJ1bGUKLSAgICAgICAgfHwg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uICE9IG90aGVyLT5zdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24KLSAgICAgICAgfHwgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyAhPSBvdGhlci0+c3ZnX2luaGVyaXRl
ZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycykKKyAgICBpZiAobV9pbmhlcml0ZWRG
bGFncy5jb2xvclJlbmRlcmluZyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVy
aW5nCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgIT0gb3RoZXIu
bV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZworICAgICAgICB8fCBtX2luaGVyaXRlZEZs
YWdzLmNsaXBSdWxlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUKKyAgICAgICAg
fHwgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmZp
bGxSdWxlCisgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uICE9
IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHx8IG1f
aW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyAhPSBvdGhlci5tX2luaGVy
aXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpCiAgICAgICAgIHJldHVybiBTdHls
ZURpZmZlcmVuY2VSZXBhaW50OwogCi0gICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5i
dWZmZXJlZFJlbmRlcmluZyAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZl
cmVkUmVuZGVyaW5nKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZl
cmVkUmVuZGVyaW5nICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVmZmVy
ZWRSZW5kZXJpbmcpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCi0g
ICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSAhPSBvdGhlci0+c3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlKQorICAgIGlmIChtX25vbkluaGVyaXRlZEZsYWdz
LmZsYWdCaXRzLm1hc2tUeXBlICE9IG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
bWFza1R5cGUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCiAgICAg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZUVxdWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRleCAzOTE5NzVhNThiOTUwZTdkNjc0YjY4YTdi
ZmE2NTNhN2Y3ODc0MTZmLi42NjlhMmMwOTgzZTJhMmIyNGRjYWZlODU3MzE3YjkyNGIxNDQ4MWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICAgIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQg
KEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDU1NWYWx1
ZUxpc3QuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5o
IgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTMyLDI1ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEludFJlY3Q7Ci1jbGFzcyBSZW5kZXJP
YmplY3Q7Ci0KLWNsYXNzIFNWR1JlbmRlclN0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUmVu
ZGVyU3R5bGU+IHsgICAgCitjbGFzcyBTVkdSZW5kZXJTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFNWR1JlbmRlclN0eWxlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHls
ZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7CiAgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZW5kZXJTdHlsZSk7IH0KICAgICBS
ZWY8U1ZHUmVuZGVyU3R5bGU+IGNvcHkoKSBjb25zdDsKICAgICB+U1ZHUmVuZGVyU3R5bGUoKTsK
IAotICAgIGJvb2wgaW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25z
dDsKLSAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlKik7Ci0gICAgdm9p
ZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSopOworICAgIGJvb2wg
aW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2b2lk
IGluaGVyaXRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7CisgICAgdm9pZCBjb3B5Tm9uSW5o
ZXJpdGVkRnJvbShjb25zdCBTVkdSZW5kZXJTdHlsZSYpOwogCi0gICAgU3R5bGVEaWZmZXJlbmNl
IGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBTdHlsZURpZmZlcmVuY2Ug
ZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFNWR1JlbmRlclN0eWxlJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIC8vIEluaXRpYWwgdmFsdWVzIGZvciBhbGwg
dGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgRUFsaWdubWVudEJhc2VsaW5lIGluaXRpYWxBbGln
bm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFCX0FVVE87IH0KQEAgLTg0LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxvb2RPcGFjaXR5KCkgeyByZXR1cm4gMTsg
fQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxvb2RDb2xvcigpIHsgcmV0dXJuIENvbG9yKDAs
IDAsIDApOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1
cm4gQ29sb3IoMjU1LCAyNTUsIDI1NSk7IH0KLSAgICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlh
bFNoYWRvdygpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNo
YWRvdygpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxDbGlw
cGVyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5p
dGlhbE1hc2tlclJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3Ry
aW5nIGluaXRpYWxNYXJrZXJTdGFydFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAg
LTkyLDI4NyArODcsMTIyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJr
ZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIEVNYXNrVHlw
ZSBpbml0aWFsTWFza1R5cGUoKSB7IHJldHVybiBNVF9MVU1JTkFOQ0U7IH0KICAgICBzdGF0aWMg
UGFpbnRPcmRlciBpbml0aWFsUGFpbnRPcmRlcigpIHsgcmV0dXJuIFBhaW50T3JkZXJOb3JtYWw7
IH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVl
KCkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgICAgIHJl
dHVybiBsZW5ndGg7Ci0gICAgfQotCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxL
ZXJuaW5nKCkKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAg
bGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAg
ICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0
aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRp
YWxLZXJuaW5nKCk7CiAKICAgICAvLyBTVkcgQ1NTIFByb3BlcnR5IHNldHRlcnMKLSAgICB2b2lk
IHNldEFsaWdubWVudEJhc2VsaW5lKEVBbGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRCYXNlbGluZSA9IHZhbDsgfQotICAgIHZvaWQgc2V0
RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNlbGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRl
ZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRCYXNlbGlu
ZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jh
c2VsaW5lU2hpZnQgPSB2YWw7IH0KLSAgICB2b2lkIHNldFZlY3RvckVmZmVjdChFVmVjdG9yRWZm
ZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IHZhbDsg
fQotICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJpbmcoRUJ1ZmZlcmVkUmVuZGVyaW5nIHZhbCkg
eyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KLSAg
ICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2Nh
cFN0eWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDbGlwUnVsZShXaW5kUnVsZSB2YWwpIHsgc3Zn
X2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldENvbG9ySW50
ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdz
Ll9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0KLSAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFn
cy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JS
ZW5kZXJpbmcoRUNvbG9yUmVuZGVyaW5nIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xv
clJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFsKSB7
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxlID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRKb2lu
U3R5bGUoTGluZUpvaW4gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2pvaW5TdHlsZSA9IHZh
bDsgfQotICAgIHZvaWQgc2V0U2hhcGVSZW5kZXJpbmcoRVNoYXBlUmVuZGVyaW5nIHZhbCkgeyBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0
VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFu
Y2hvciA9IHZhbDsgfQotICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoRUds
eXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uVmVydGlj
YWwoRUdseXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0TWFza1R5cGUoRU1hc2tUeXBl
IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgPSB2YWw7IH0KLSAgICB2
b2lkIHNldFBhaW50T3JkZXIoUGFpbnRPcmRlciB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5w
YWludE9yZGVyID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRDeChjb25zdCBMZW5ndGgmIG9iaikKLSAg
ICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+Y3ggPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91
dC5hY2Nlc3MoKS0+Y3ggPSBvYmo7Ci0gICAgfQotICAgIHZvaWQgc2V0Q3koY29uc3QgTGVuZ3Ro
JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPmN5ID09IG9iaikpCi0gICAgICAg
ICAgICBsYXlvdXQuYWNjZXNzKCktPmN5ID0gb2JqOwotICAgIH0KLSAgICB2b2lkIHNldFIoY29u
c3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShsYXlvdXQtPnIgPT0gb2JqKSkK
LSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+ciA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBz
ZXRSeChjb25zdCBMZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKGxheW91dC0+cngg
PT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+cnggPSBvYmo7Ci0gICAgfQot
ICAgIHZvaWQgc2V0UnkoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShs
YXlvdXQtPnJ5ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNjZXNzKCktPnJ5ID0gb2Jq
OwotICAgIH0KLSAgICB2b2lkIHNldFgoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAg
ICBpZiAoIShsYXlvdXQtPnggPT0gb2JqKSkKLSAgICAgICAgICAgIGxheW91dC5hY2Nlc3MoKS0+
eCA9IG9iajsKLSAgICB9Ci0gICAgdm9pZCBzZXRZKGNvbnN0IExlbmd0aCYgb2JqKQotICAgIHsK
LSAgICAgICAgaWYgKCEobGF5b3V0LT55ID09IG9iaikpCi0gICAgICAgICAgICBsYXlvdXQuYWNj
ZXNzKCktPnkgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBv
YmopCi0gICAgewotICAgICAgICBpZiAoIShmaWxsLT5vcGFjaXR5ID09IG9iaikpCi0gICAgICAg
ICAgICBmaWxsLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0
RmlsbFBhaW50KFNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0
cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9W
aXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCi0gICAgewotICAgICAgICBpZiAoYXBwbHlUb1JlZ3Vs
YXJTdHlsZSkgewotICAgICAgICAgICAgaWYgKCEoZmlsbC0+cGFpbnRUeXBlID09IHR5cGUpKQot
ICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50VHlwZSA9IHR5cGU7Ci0gICAgICAg
ICAgICBpZiAoIShmaWxsLT5wYWludENvbG9yID09IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBm
aWxsLmFjY2VzcygpLT5wYWludENvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICBpZiAoIShmaWxs
LT5wYWludFVyaSA9PSB1cmkpKQotICAgICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPnBhaW50
VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHls
ZSkgewotICAgICAgICAgICAgaWYgKCEoZmlsbC0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlw
ZSkpCi0gICAgICAgICAgICAgICAgZmlsbC5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFR5cGUg
PSB0eXBlOwotICAgICAgICAgICAgaWYgKCEoZmlsbC0+dmlzaXRlZExpbmtQYWludENvbG9yID09
IGNvbG9yKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1BhaW50
Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIGlmICghKGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRV
cmkgPT0gdXJpKSkKLSAgICAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT52aXNpdGVkTGlua1Bh
aW50VXJpID0gdXJpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VPcGFj
aXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+b3BhY2l0eSA9PSBv
YmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwotICAgIH0K
LQotICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9y
JiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRy
dWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAg
IGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnBh
aW50VHlwZSA9PSB0eXBlKSkKLSAgICAgICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnBhaW50
VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50Q29sb3IgPT0gY29s
b3IpKQotICAgICAgICAgICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRDb2xvciA9IGNvbG9y
OwotICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT5wYWludFVyaSA9PSB1cmkpKQotICAgICAgICAg
ICAgICAgIHN0cm9rZS5hY2Nlc3MoKS0+cGFpbnRVcmkgPSB1cmk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIShzdHJv
a2UtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5cGUpKQotICAgICAgICAgICAgICAgIHN0cm9r
ZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgaWYg
KCEoc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0gY29sb3IpKQotICAgICAgICAgICAg
ICAgIHN0cm9rZS5hY2Nlc3MoKS0+dmlzaXRlZExpbmtQYWludENvbG9yID0gY29sb3I7Ci0gICAg
ICAgICAgICBpZiAoIShzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKLSAgICAg
ICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPSB1cmk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0cm9rZURhc2hBcnJheShjb25zdCBWZWN0
b3I8U1ZHTGVuZ3RoVmFsdWU+JiBvYmopCi0gICAgewotICAgICAgICBpZiAoIShzdHJva2UtPmRh
c2hBcnJheSA9PSBvYmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5kYXNoQXJyYXkg
PSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTdHJva2VNaXRlckxpbWl0KGZsb2F0IG9iaikK
LSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+bWl0ZXJMaW1pdCA9PSBvYmopKQotICAgICAg
ICAgICAgc3Ryb2tlLmFjY2VzcygpLT5taXRlckxpbWl0ID0gb2JqOwotICAgIH0KLQotICAgIHZv
aWQgc2V0U3Ryb2tlV2lkdGgoY29uc3QgTGVuZ3RoJiBvYmopCi0gICAgewotICAgICAgICBpZiAo
IShzdHJva2UtPndpZHRoID09IG9iaikpCi0gICAgICAgICAgICBzdHJva2UuYWNjZXNzKCktPndp
ZHRoID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChjb25zdCBM
ZW5ndGgmIG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0cm9rZS0+ZGFzaE9mZnNldCA9PSBv
YmopKQotICAgICAgICAgICAgc3Ryb2tlLmFjY2VzcygpLT5kYXNoT2Zmc2V0ID0gb2JqOwotICAg
IH0KLQotICAgIHZvaWQgc2V0S2VybmluZyhjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb2JqKQotICAg
IHsKLSAgICAgICAgaWYgKCEodGV4dC0+a2VybmluZyA9PSBvYmopKQotICAgICAgICAgICAgdGV4
dC5hY2Nlc3MoKS0+a2VybmluZyA9IG9iajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFN0b3BPcGFj
aXR5KGZsb2F0IG9iaikKLSAgICB7Ci0gICAgICAgIGlmICghKHN0b3BzLT5vcGFjaXR5ID09IG9i
aikpCi0gICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+b3BhY2l0eSA9IG9iajsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEoc3RvcHMtPmNvbG9yID09IG9iaikpCi0gICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+
Y29sb3IgPSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgb2Jq
KQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+Zmxvb2RPcGFjaXR5ID09IG9iaikpCi0gICAg
ICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZE9wYWNpdHkgPSBvYmo7Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBvYmopCi0gICAgewotICAgICAgICBpZiAo
IShtaXNjLT5mbG9vZENvbG9yID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5m
bG9vZENvbG9yID0gb2JqOwotICAgIH0KLQotICAgIHZvaWQgc2V0TGlnaHRpbmdDb2xvcihjb25z
dCBDb2xvciYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+bGlnaHRpbmdDb2xvciA9
PSBvYmopKQotICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+bGlnaHRpbmdDb2xvciA9IG9iajsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnRWYWx1ZShjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgb2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEobWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVl
ID09IG9iaikpCi0gICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5iYXNlbGluZVNoaWZ0VmFsdWUg
PSBvYmo7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRv
d0RhdGE+IG9iaikgeyBzaGFkb3dTVkcuYWNjZXNzKCktPnNoYWRvdyA9IFdURk1vdmUob2JqKTsg
fQorICAgIHZvaWQgc2V0QWxpZ25tZW50QmFzZWxpbmUoRUFsaWdubWVudEJhc2VsaW5lIHZhbCkg
eyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmFsaWdubWVudEJhc2VsaW5lID0gdmFsOyB9
CisgICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5lKEVEb21pbmFudEJhc2VsaW5lIHZhbCkgeyBt
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmRvbWluYW50QmFzZWxpbmUgPSB2YWw7IH0KKyAg
ICB2b2lkIHNldEJhc2VsaW5lU2hpZnQoRUJhc2VsaW5lU2hpZnQgdmFsKSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCA9IHZhbDsgfQorICAgIHZvaWQgc2V0VmVj
dG9yRWZmZWN0KEVWZWN0b3JFZmZlY3QgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMudmVjdG9yRWZmZWN0ID0gdmFsOyB9CisgICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhF
QnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYnVm
ZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFs
KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwU3R5bGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldENsaXBS
dWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlID0gdmFsOyB9Cisg
ICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24oRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsg
bV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0KKyAgICB2b2lkIHNl
dENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoRUNvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9p
bmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzID0gdmFsOyB9CisgICAgdm9p
ZCBzZXRDb2xvclJlbmRlcmluZyhFQ29sb3JSZW5kZXJpbmcgdmFsKSB7IG1faW5oZXJpdGVkRmxh
Z3MuY29sb3JSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxl
IHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlID0gdmFsOyB9CisgICAgdm9pZCBzZXRK
b2luU3R5bGUoTGluZUpvaW4gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3Muam9pblN0eWxlID0gdmFs
OyB9CisgICAgdm9pZCBzZXRTaGFwZVJlbmRlcmluZyhFU2hhcGVSZW5kZXJpbmcgdmFsKSB7IG1f
aW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSB2YWw7IH0KKyAgICB2b2lkIHNldFRleHRB
bmNob3IoRVRleHRBbmNob3IgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IHZh
bDsgfQorICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoRUdseXBoT3JpZW50
YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwg
PSB2YWw7IH0KKyAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25WZXJ0aWNhbChFR2x5cGhPcmll
bnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwg
PSB2YWw7IH0KKyAgICB2b2lkIHNldE1hc2tUeXBlKEVNYXNrVHlwZSB2YWwpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9IHZhbDsgfQorICAgIHZvaWQgc2V0UGFpbnRP
cmRlcihQYWludE9yZGVyIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLnBhaW50T3JkZXIgPSB2YWw7
IH0KKyAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0Q3koY29uc3Qg
TGVuZ3RoJik7CisgICAgdm9pZCBzZXRSKGNvbnN0IExlbmd0aCYpOworICAgIHZvaWQgc2V0Ungo
Y29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRSeShjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lk
IHNldFgoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRZKGNvbnN0IExlbmd0aCYpOworICAg
IHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxvYXQpOworICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1Bh
aW50VHlwZSwgY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVn
dWxhclN0eWxlID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKTsK
KyAgICB2b2lkIHNldFN0cm9rZU9wYWNpdHkoZmxvYXQpOworICAgIHZvaWQgc2V0U3Ryb2tlUGFp
bnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFw
cGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0g
ZmFsc2UpOworCisgICAgdm9pZCBzZXRTdHJva2VEYXNoQXJyYXkoY29uc3QgVmVjdG9yPFNWR0xl
bmd0aFZhbHVlPiYpOworICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCk7CisgICAg
dm9pZCBzZXRTdHJva2VXaWR0aChjb25zdCBMZW5ndGgmKTsKKyAgICB2b2lkIHNldFN0cm9rZURh
c2hPZmZzZXQoY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBzZXRLZXJuaW5nKGNvbnN0IFNWR0xl
bmd0aFZhbHVlJik7CisgICAgdm9pZCBzZXRTdG9wT3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBz
ZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9h
dCk7CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRM
aWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0VmFs
dWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKKworICAgIHZvaWQgc2V0U2hhZG93KHN0ZDo6dW5p
cXVlX3B0cjxTaGFkb3dEYXRhPiYmIGRhdGEpIHsgbV9zaGFkb3dEYXRhLmFjY2VzcygpLnNoYWRv
dyA9IFdURk1vdmUoZGF0YSk7IH0KIAogICAgIC8vIFNldHRlcnMgZm9yIG5vbi1pbmhlcml0ZWQg
cmVzb3VyY2VzCi0gICAgdm9pZCBzZXRDbGlwcGVyUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBvYmop
Ci0gICAgewotICAgICAgICBpZiAoIShyZXNvdXJjZXMtPmNsaXBwZXIgPT0gb2JqKSkKLSAgICAg
ICAgICAgIHJlc291cmNlcy5hY2Nlc3MoKS0+Y2xpcHBlciA9IG9iajsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmluZyYgb2JqKQotICAgIHsKLSAgICAgICAg
aWYgKCEocmVzb3VyY2VzLT5tYXNrZXIgPT0gb2JqKSkKLSAgICAgICAgICAgIHJlc291cmNlcy5h
Y2Nlc3MoKS0+bWFza2VyID0gb2JqOwotICAgIH0KKyAgICB2b2lkIHNldENsaXBwZXJSZXNvdXJj
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldE1hc2tlclJlc291cmNlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gU2V0dGVycyBmb3IgaW5oZXJpdGVkIHJlc291cmNlcwotICAgIHZvaWQg
c2V0TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAgICB7Ci0gICAgICAg
IGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyU3RhcnQgPT0gb2JqKSkKLSAgICAgICAg
ICAgIGluaGVyaXRlZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2VyU3RhcnQgPSBvYmo7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikKLSAg
ICB7Ci0gICAgICAgIGlmICghKGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyTWlkID09IG9iaikp
Ci0gICAgICAgICAgICBpbmhlcml0ZWRSZXNvdXJjZXMuYWNjZXNzKCktPm1hcmtlck1pZCA9IG9i
ajsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYg
b2JqKQotICAgIHsKLSAgICAgICAgaWYgKCEoaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJrZXJFbmQg
PT0gb2JqKSkKLSAgICAgICAgICAgIGluaGVyaXRlZFJlc291cmNlcy5hY2Nlc3MoKS0+bWFya2Vy
RW5kID0gb2JqOwotICAgIH0KKyAgICB2b2lkIHNldE1hcmtlclN0YXJ0UmVzb3VyY2UoY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldE1hcmtlckVuZFJlc291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8g
UmVhZCBhY2Nlc3NvcnMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwotICAgIEVBbGlnbm1lbnRCYXNl
bGluZSBhbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChFQWxpZ25tZW50QmFzZWxp
bmUpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYWxpZ25tZW50QmFzZWxpbmU7IH0KLSAgICBF
RG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVEb21p
bmFudEJhc2VsaW5lKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmU7
IH0KLSAgICBFQmFzZWxpbmVTaGlmdCBiYXNlbGluZVNoaWZ0KCkgY29uc3QgeyByZXR1cm4gKEVC
YXNlbGluZVNoaWZ0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQ7IH0K
LSAgICBFVmVjdG9yRWZmZWN0IHZlY3RvckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIChFVmVjdG9y
RWZmZWN0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdDsgfQotICAgIEVC
dWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFQnVm
ZmVyZWRSZW5kZXJpbmcpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmlu
ZzsgfQotICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUNhcCkgc3Zn
X2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGU7IH0KLSAgICBXaW5kUnVsZSBjbGlwUnVsZSgpIGNv
bnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGU7IH0K
LSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVy
cG9sYXRpb247IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczsgfQotICAgIEVDb2xvclJlbmRlcmlu
ZyBjb2xvclJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChFQ29sb3JSZW5kZXJpbmcpIHN2Z19p
bmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nOyB9Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUo
KSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxl
OyB9Ci0gICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGU7IH0KLSAgICBFU2hhcGVSZW5kZXJpbmcgc2hh
cGVSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRVNoYXBlUmVuZGVyaW5nKSBzdmdfaW5oZXJp
dGVkX2ZsYWdzLl9zaGFwZVJlbmRlcmluZzsgfQotICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3Io
KSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3IpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRB
bmNob3I7IH0KLSAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFn
cy5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw7IH0KLSAgICBFR2x5cGhPcmllbnRhdGlvbiBn
bHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRp
b24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQotICAg
IGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gZmlsbC0+b3BhY2l0eTsgfQotICAg
IGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwt
PnBhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVy
aSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50VXJpOyB9ICAgIAotICAgIGZsb2F0IHN0cm9r
ZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBT
VkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFp
bnRUeXBlOyB9Ci0gICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdHJva2UtPnBhaW50Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50
VXJpKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5wYWludFVyaTsgfQotICAgIFZlY3RvcjxTVkdM
ZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5kYXNo
QXJyYXk7IH0KLSAgICBmbG9hdCBzdHJva2VNaXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gc3Ry
b2tlLT5taXRlckxpbWl0OyB9Ci0gICAgY29uc3QgTGVuZ3RoJiBzdHJva2VXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHN0cm9rZS0+d2lkdGg7IH0KLSAgICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPmRhc2hPZmZzZXQ7IH0KLSAgICBTVkdMZW5n
dGhWYWx1ZSBrZXJuaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dC0+a2VybmluZzsgfQotICAgIGZs
b2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3RvcHMtPm9wYWNpdHk7IH0KLSAgICBj
b25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3RvcHMtPmNvbG9yOyB9Ci0g
ICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RPcGFjaXR5
OyB9Ci0gICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5m
bG9vZENvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgYmFzZWxpbmVT
aGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+YmFzZWxpbmVTaGlmdFZhbHVlOyB9Ci0g
ICAgU2hhZG93RGF0YSogc2hhZG93KCkgY29uc3QgeyByZXR1cm4gc2hhZG93U1ZHLT5zaGFkb3cu
Z2V0KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5j
eDsgfQotICAgIGNvbnN0IExlbmd0aCYgY3koKSBjb25zdCB7IHJldHVybiBsYXlvdXQtPmN5OyB9
Ci0gICAgY29uc3QgTGVuZ3RoJiByKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5yOyB9Ci0gICAg
Y29uc3QgTGVuZ3RoJiByeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+cng7IH0KLSAgICBjb25z
dCBMZW5ndGgmIHJ5KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0LT5yeTsgfQotICAgIGNvbnN0IExl
bmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+eDsgfQotICAgIGNvbnN0IExlbmd0aCYg
eSgpIGNvbnN0IHsgcmV0dXJuIGxheW91dC0+eTsgfQotICAgIFN0cmluZyBjbGlwcGVyUmVzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMtPmNsaXBwZXI7IH0KLSAgICBTdHJpbmcgbWFz
a2VyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMtPm1hc2tlcjsgfQotICAgIFN0
cmluZyBtYXJrZXJTdGFydFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3Vy
Y2VzLT5tYXJrZXJTdGFydDsgfQotICAgIFN0cmluZyBtYXJrZXJNaWRSZXNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyTWlkOyB9Ci0gICAgU3RyaW5nIG1h
cmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5tYXJr
ZXJFbmQ7IH0KLSAgICBFTWFza1R5cGUgbWFza1R5cGUoKSBjb25zdCB7IHJldHVybiAoRU1hc2tU
eXBlKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGU7IH0KLSAgICBQYWludE9yZGVy
IHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgc3ZnX2luaGVyaXRlZF9m
bGFncy5wYWludE9yZGVyOyB9CisgICAgRUFsaWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2Vs
aW5lKCkgY29uc3QgeyByZXR1cm4gKEVBbGlnbm1lbnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRG
bGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZTsgfQorICAgIEVEb21pbmFudEJhc2VsaW5l
IGRvbWluYW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZTsgfQorICAgIEVCYXNl
bGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQoKSBjb25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQp
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdDsgfQorICAgIEVWZWN0
b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMudmVjdG9yRWZmZWN0OyB9CisgICAgRUJ1ZmZlcmVk
UmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJl
bmRlcmluZykgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZzsg
fQorICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUNhcCkgbV9pbmhl
cml0ZWRGbGFncy5jYXBTdHlsZTsgfQorICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlOyB9CisgICAgRUNvbG9y
SW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiAoRUNvbG9y
SW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRpb247IH0KKyAg
ICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7
IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzOyB9CisgICAgRUNvbG9yUmVuZGVyaW5nIGNvbG9yUmVuZGVyaW5nKCkg
Y29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmluZykgbV9pbmhlcml0ZWRGbGFncy5jb2xvclJl
bmRlcmluZzsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRS
dWxlKSBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlOyB9CisgICAgTGluZUpvaW4gam9pblN0eWxl
KCkgY29uc3QgeyByZXR1cm4gKExpbmVKb2luKSBtX2luaGVyaXRlZEZsYWdzLmpvaW5TdHlsZTsg
fQorICAgIEVTaGFwZVJlbmRlcmluZyBzaGFwZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChF
U2hhcGVSZW5kZXJpbmcpIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmc7IH0KKyAgICBF
VGV4dEFuY2hvciB0ZXh0QW5jaG9yKCkgY29uc3QgeyByZXR1cm4gKEVUZXh0QW5jaG9yKSBtX2lu
aGVyaXRlZEZsYWdzLnRleHRBbmNob3I7IH0KKyAgICBFR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmllbnRhdGlvbikg
bV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDsgfQorICAgIEVHbHlw
aE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIChF
R2x5cGhPcmllbnRhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uVmVydGlj
YWw7IH0KKyAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEt
Pm9wYWNpdHk7IH0KKyAgICBjb25zdCBTVkdQYWludFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFR5cGU7IH0KKyAgICBjb25zdCBDb2xvciYgZmls
bFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludENvbG9yOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBmaWxsUGFpbnRVcmkoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRh
LT5wYWludFVyaTsgfSAgICAKKyAgICBmbG9hdCBzdHJva2VPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdHJva2VEYXRhLT5vcGFjaXR5OyB9CisgICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJv
a2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnBhaW50VHlwZTsgfQor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHJv
a2VEYXRhLT5wYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiBzdHJva2VQYWludFVyaSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+cGFpbnRVcmk7IH0KKyAgICBWZWN0b3I8U1ZH
TGVuZ3RoVmFsdWU+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0
YS0+ZGFzaEFycmF5OyB9CisgICAgZmxvYXQgc3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Ryb2tlRGF0YS0+bWl0ZXJMaW1pdDsgfQorICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPndpZHRoOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5k
YXNoT2Zmc2V0OyB9CisgICAgU1ZHTGVuZ3RoVmFsdWUga2VybmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dERhdGEtPmtlcm5pbmc7IH0KKyAgICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcERhdGEtPm9wYWNpdHk7IH0KKyAgICBjb25zdCBDb2xvciYgc3RvcENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9wRGF0YS0+Y29sb3I7IH0KKyAgICBmbG9hdCBmbG9vZE9w
YWNpdHkoKSBjb25zdCB7IHJldHVybiBtX21pc2NEYXRhLT5mbG9vZE9wYWNpdHk7IH0KKyAgICBj
b25zdCBDb2xvciYgZmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWlzY0RhdGEtPmZsb29k
Q29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbWlzY0RhdGEtPmxpZ2h0aW5nQ29sb3I7IH0KKyAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGlu
ZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX21pc2NEYXRhLT5iYXNlbGluZVNoaWZ0VmFs
dWU7IH0KKyAgICBTaGFkb3dEYXRhKiBzaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0Rh
dGEtPnNoYWRvdy5nZXQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgY3goKSBjb25zdCB7IHJldHVy
biBtX2xheW91dERhdGEtPmN4OyB9CisgICAgY29uc3QgTGVuZ3RoJiBjeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0RGF0YS0+Y3k7IH0KKyAgICBjb25zdCBMZW5ndGgmIHIoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dERhdGEtPnI7IH0KKyAgICBjb25zdCBMZW5ndGgmIHJ4KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXREYXRhLT5yeDsgfQorICAgIGNvbnN0IExlbmd0aCYgcnkoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dERhdGEtPnJ5OyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXREYXRhLT54OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXREYXRhLT55OyB9CisgICAgY29uc3QgU3RyaW5nJiBjbGlwcGVyUmVz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+Y2xpcHBl
cjsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFza2VyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+bWFza2VyOyB9CisgICAgY29uc3QgU3RyaW5nJiBt
YXJrZXJTdGFydFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURh
dGEtPm1hcmtlclN0YXJ0OyB9CisgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJNaWRSZXNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJNaWQ7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIG1hcmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhl
cml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlckVuZDsgfQorICAgIEVNYXNrVHlwZSBtYXNrVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIChFTWFza1R5cGUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
bWFza1R5cGU7IH0KKyAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAo
UGFpbnRPcmRlcikgbV9pbmhlcml0ZWRGbGFncy5wYWludE9yZGVyOyB9CiAgICAgVmVjdG9yPFBh
aW50VHlwZSwgMz4gcGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdDsKIAotICAgIGNvbnN0
IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
ZmlsbC0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExp
bmtGaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRD
b2xvcjsgfQotICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtGaWxsUGFpbnRVcmkoKSBjb25z
dCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50VXJpOyB9Ci0gICAgY29uc3QgU1ZHUGFp
bnRUeXBlJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9r
ZS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtT
dHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50
Q29sb3I7IH0KLSAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBj
b25zdCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7IH0KKyAgICBjb25zdCBT
VkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgY29uc3QgQ29sb3ImIHZpc2l0
ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT52aXNpdGVk
TGlua1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50
VXJpKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQor
ICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgY29u
c3QgQ29sb3ImIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yOyB9CisgICAgY29uc3QgU3RyaW5nJiB2
aXNpdGVkTGlua1N0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT52
aXNpdGVkTGlua1BhaW50VXJpOyB9CiAKICAgICAvLyBjb252ZW5pZW5jZQogICAgIGJvb2wgaGFz
Q2xpcHBlcigpIGNvbnN0IHsgcmV0dXJuICFjbGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0K
QEAgLTM4MywxMDcgKzIxMywzMTEgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsbCgpIGNvbnN0
IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBTVkdfUEFJTlRUWVBFX05PTkU7IH0KICAgICBi
b29sIGlzb2xhdGVzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBoYXNNYXNrZXIoKSB8fCBzaGFk
b3coKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gaW5oZXJpdAorcHJpdmF0ZToKKyAgICBTVkdS
ZW5kZXJTdHlsZSgpOworICAgIFNWR1JlbmRlclN0eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7
CisKKyAgICBlbnVtIENyZWF0ZURlZmF1bHRUeXBlIHsgQ3JlYXRlRGVmYXVsdCB9OworICAgIFNW
R1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRUeXBlKTsgLy8gVXNlZCB0byBjcmVhdGUgdGhlIGRl
ZmF1bHQgc3R5bGUuCisKKyAgICB2b2lkIHNldEJpdERlZmF1bHRzKCk7CisKICAgICBzdHJ1Y3Qg
SW5oZXJpdGVkRmxhZ3MgewotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVk
RmxhZ3MmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKF9jb2xv
clJlbmRlcmluZyA9PSBvdGhlci5fY29sb3JSZW5kZXJpbmcpCi0gICAgICAgICAgICAgICAgJiYg
KF9zaGFwZVJlbmRlcmluZyA9PSBvdGhlci5fc2hhcGVSZW5kZXJpbmcpCi0gICAgICAgICAgICAg
ICAgJiYgKF9jbGlwUnVsZSA9PSBvdGhlci5fY2xpcFJ1bGUpCi0gICAgICAgICAgICAgICAgJiYg
KF9maWxsUnVsZSA9PSBvdGhlci5fZmlsbFJ1bGUpCi0gICAgICAgICAgICAgICAgJiYgKF9jYXBT
dHlsZSA9PSBvdGhlci5fY2FwU3R5bGUpCi0gICAgICAgICAgICAgICAgJiYgKF9qb2luU3R5bGUg
PT0gb3RoZXIuX2pvaW5TdHlsZSkKLSAgICAgICAgICAgICAgICAmJiAoX3RleHRBbmNob3IgPT0g
b3RoZXIuX3RleHRBbmNob3IpCi0gICAgICAgICAgICAgICAgJiYgKF9jb2xvckludGVycG9sYXRp
b24gPT0gb3RoZXIuX2NvbG9ySW50ZXJwb2xhdGlvbikKLSAgICAgICAgICAgICAgICAmJiAoX2Nv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPT0gb3RoZXIuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMpCi0gICAgICAgICAgICAgICAgJiYgKF9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9PSBv
dGhlci5fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpCi0gICAgICAgICAgICAgICAgJiYgKF9n
bHlwaE9yaWVudGF0aW9uVmVydGljYWwgPT0gb3RoZXIuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNh
bCkKLSAgICAgICAgICAgICAgICAmJiAocGFpbnRPcmRlciA9PSBvdGhlci5wYWludE9yZGVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFn
cyYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIF9jb2xvclJlbmRlcmluZyA6
IDI7IC8vIEVDb2xvclJlbmRlcmluZwotICAgICAgICB1bnNpZ25lZCBfc2hhcGVSZW5kZXJpbmcg
OiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcgCi0gICAgICAgIHVuc2lnbmVkIF9jbGlwUnVsZSA6IDE7
IC8vIFdpbmRSdWxlCi0gICAgICAgIHVuc2lnbmVkIF9maWxsUnVsZSA6IDE7IC8vIFdpbmRSdWxl
Ci0gICAgICAgIHVuc2lnbmVkIF9jYXBTdHlsZSA6IDI7IC8vIExpbmVDYXAKLSAgICAgICAgdW5z
aWduZWQgX2pvaW5TdHlsZSA6IDI7IC8vIExpbmVKb2luCi0gICAgICAgIHVuc2lnbmVkIF90ZXh0
QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IKLSAgICAgICAgdW5zaWduZWQgX2NvbG9ySW50ZXJw
b2xhdGlvbiA6IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KLSAgICAgICAgdW5zaWduZWQgX2Nv
bG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0aW9uCi0gICAg
ICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IDM7IC8vIEVHbHlwaE9y
aWVudGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwgOiAz
OyAvLyBFR2x5cGhPcmllbnRhdGlvbgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5o
ZXJpdGVkRmxhZ3MmKSBjb25zdDsKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVy
aXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKwor
ICAgICAgICB1bnNpZ25lZCBjb2xvclJlbmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZwor
ICAgICAgICB1bnNpZ25lZCBzaGFwZVJlbmRlcmluZyA6IDI7IC8vIEVTaGFwZVJlbmRlcmluZwor
ICAgICAgICB1bnNpZ25lZCBjbGlwUnVsZSA6IDE7IC8vIFdpbmRSdWxlCisgICAgICAgIHVuc2ln
bmVkIGZpbGxSdWxlIDogMTsgLy8gV2luZFJ1bGUKKyAgICAgICAgdW5zaWduZWQgY2FwU3R5bGUg
OiAyOyAvLyBMaW5lQ2FwCisgICAgICAgIHVuc2lnbmVkIGpvaW5TdHlsZSA6IDI7IC8vIExpbmVK
b2luCisgICAgICAgIHVuc2lnbmVkIHRleHRBbmNob3IgOiAyOyAvLyBFVGV4dEFuY2hvcgorICAg
ICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb24gOiAyOyAvLyBFQ29sb3JJbnRlcnBvbGF0
aW9uCisgICAgICAgIHVuc2lnbmVkIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBF
Q29sb3JJbnRlcnBvbGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGdseXBoT3JpZW50YXRpb25Ib3Jp
em9udGFsIDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KKyAgICAgICAgdW5zaWduZWQgZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsIDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KICAgICAgICAgdW5z
aWduZWQgcGFpbnRPcmRlciA6IDM7IC8vIFBhaW50T3JkZXIKLSAgICB9IHN2Z19pbmhlcml0ZWRf
ZmxhZ3M7CisgICAgfTsKIAotICAgIC8vIGRvbid0IGluaGVyaXQKICAgICBzdHJ1Y3QgTm9uSW5o
ZXJpdGVkRmxhZ3MgewogICAgICAgICAvLyAzMiBiaXQgbm9uLWluaGVyaXRlZCwgZG9uJ3QgYWRk
IHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRvciB3aWxsIGJyZWFrLgotICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVy
biBfbmlmbGFncyA9PSBvdGhlci5fbmlmbGFnczsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyAh
PSBvdGhlci5fbmlmbGFnczsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5o
ZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFncyA9PSBvdGhlci5mbGFnczsg
fQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVy
KSBjb25zdCB7IHJldHVybiBmbGFncyAhPSBvdGhlci5mbGFnczsgfQogCiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgX2FsaWdu
bWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lIAotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIF9kb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUKLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBfYmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNo
aWZ0Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgX3ZlY3RvckVmZmVjdDogMTsgLy8gRVZlY3Rv
ckVmZmVjdAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudEJhc2VsaW5lIDogNDsg
Ly8gRUFsaWdubWVudEJhc2VsaW5lCisgICAgICAgICAgICAgICAgdW5zaWduZWQgZG9taW5hbnRC
YXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5lCisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgdmVjdG9yRWZmZWN0OiAxOyAvLyBFVmVjdG9yRWZmZWN0CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYnVmZmVyZWRSZW5kZXJpbmc6IDI7IC8vIEVCdWZmZXJlZFJlbmRlcmluZwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hc2tUeXBlOiAxOyAvLyBFTWFza1R5cGUKICAgICAg
ICAgICAgICAgICAvLyAxOCBiaXRzIHVudXNlZAotICAgICAgICAgICAgfSBmOwotICAgICAgICAg
ICAgdWludDMyX3QgX25pZmxhZ3M7CisgICAgICAgICAgICB9IGZsYWdCaXRzOworICAgICAgICAg
ICAgdWludDMyX3QgZmxhZ3M7CiAgICAgICAgIH07Ci0gICAgfSBzdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzOworICAgIH07CisKKyAgICBJbmhlcml0ZWRGbGFncyBtX2luaGVyaXRlZEZsYWdzOworICAg
IE5vbkluaGVyaXRlZEZsYWdzIG1fbm9uSW5oZXJpdGVkRmxhZ3M7CiAKICAgICAvLyBpbmhlcml0
ZWQgYXR0cmlidXRlcwotICAgIERhdGFSZWY8U3R5bGVGaWxsRGF0YT4gZmlsbDsKLSAgICBEYXRh
UmVmPFN0eWxlU3Ryb2tlRGF0YT4gc3Ryb2tlOwotICAgIERhdGFSZWY8U3R5bGVUZXh0RGF0YT4g
dGV4dDsKLSAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBpbmhlcml0ZWRS
ZXNvdXJjZXM7CisgICAgRGF0YVJlZjxTdHlsZUZpbGxEYXRhPiBtX2ZpbGxEYXRhOworICAgIERh
dGFSZWY8U3R5bGVTdHJva2VEYXRhPiBtX3N0cm9rZURhdGE7CisgICAgRGF0YVJlZjxTdHlsZVRl
eHREYXRhPiBtX3RleHREYXRhOworICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURh
dGE+IG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogCiAgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRy
aWJ1dGVzCi0gICAgRGF0YVJlZjxTdHlsZVN0b3BEYXRhPiBzdG9wczsKLSAgICBEYXRhUmVmPFN0
eWxlTWlzY0RhdGE+IG1pc2M7Ci0gICAgRGF0YVJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IHNoYWRv
d1NWRzsKLSAgICBEYXRhUmVmPFN0eWxlTGF5b3V0RGF0YT4gbGF5b3V0OwotICAgIERhdGFSZWY8
U3R5bGVSZXNvdXJjZURhdGE+IHJlc291cmNlczsKLQotcHJpdmF0ZToKLSAgICBlbnVtIENyZWF0
ZURlZmF1bHRUeXBlIHsgQ3JlYXRlRGVmYXVsdCB9OwotICAgICAgICAKLSAgICBTVkdSZW5kZXJT
dHlsZSgpOwotICAgIFNWR1JlbmRlclN0eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJik7Ci0gICAg
U1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFR5cGUpOyAvLyBVc2VkIHRvIGNyZWF0ZSB0aGUg
ZGVmYXVsdCBzdHlsZS4KKyAgICBEYXRhUmVmPFN0eWxlU3RvcERhdGE+IG1fc3RvcERhdGE7Cisg
ICAgRGF0YVJlZjxTdHlsZU1pc2NEYXRhPiBtX21pc2NEYXRhOworICAgIERhdGFSZWY8U3R5bGVT
aGFkb3dTVkdEYXRhPiBtX3NoYWRvd0RhdGE7CisgICAgRGF0YVJlZjxTdHlsZUxheW91dERhdGE+
IG1fbGF5b3V0RGF0YTsKKyAgICBEYXRhUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBtX25vbkluaGVy
aXRlZFJlc291cmNlRGF0YTsKK307CiAKLSAgICB2b2lkIHNldEJpdERlZmF1bHRzKCkKLSAgICB7
Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlID0gaW5pdGlhbENsaXBSdWxl
KCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9yUmVuZGVyaW5nID0gaW5pdGlh
bENvbG9yUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2ZpbGxSdWxl
ID0gaW5pdGlhbEZpbGxSdWxlKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3NoYXBl
UmVuZGVyaW5nID0gaW5pdGlhbFNoYXBlUmVuZGVyaW5nKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX3RleHRBbmNob3IgPSBpbml0aWFsVGV4dEFuY2hvcigpOwotICAgICAgICBzdmdf
aW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZSA9IGluaXRpYWxDYXBTdHlsZSgpOwotICAgICAgICBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUgPSBpbml0aWFsSm9pblN0eWxlKCk7Ci0gICAg
ICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xv
ckludGVycG9sYXRpb24oKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRl
cnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCk7Ci0g
ICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0g
aW5pdGlhbEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCk7Ci0gICAgICAgIHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0
aW9uVmVydGljYWwoKTsKLSAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5wYWludE9yZGVyID0g
aW5pdGlhbFBhaW50T3JkZXIoKTsKLQotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLl9u
aWZsYWdzID0gMDsKLSAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9hbGlnbm1lbnRC
YXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOwotICAgICAgICBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGlu
ZSgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSBp
bml0aWFsQmFzZWxpbmVTaGlmdCgpOwotICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X3ZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKLSAgICAgICAgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVuZGVy
aW5nKCk7Ci0gICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSA9IGluaXRp
YWxNYXNrVHlwZSgpOworaW5saW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0
aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkKK3sKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Cisg
ICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Cisg
ICAgcmV0dXJuIGxlbmd0aDsKK30KKworaW5saW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0
eWxlOjppbml0aWFsS2VybmluZygpCit7CisgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOworICAg
IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOworICAg
IHJldHVybiBsZW5ndGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPmN4ID09IGxl
bmd0aCkpCisgICAgICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5jeCA9IGxlbmd0aDsKK30KKwor
aW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEN5KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
eworICAgIGlmICghKG1fbGF5b3V0RGF0YS0+Y3kgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlv
dXREYXRhLmFjY2VzcygpLmN5ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJT
dHlsZTo6c2V0Uihjb25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERh
dGEtPnIgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnIgPSBsZW5n
dGg7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRSeChjb25zdCBMZW5ndGgm
IGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnJ4ID09IGxlbmd0aCkpCisgICAg
ICAgIG1fbGF5b3V0RGF0YS5hY2Nlc3MoKS5yeCA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldFJ5KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIGlmICgh
KG1fbGF5b3V0RGF0YS0+cnkgPT0gbGVuZ3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2Vz
cygpLnJ5ID0gbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0WChj
b25zdCBMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICBpZiAoIShtX2xheW91dERhdGEtPnggPT0gbGVu
Z3RoKSkKKyAgICAgICAgbV9sYXlvdXREYXRhLmFjY2VzcygpLnggPSBsZW5ndGg7Cit9CisKK2lu
bGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRZKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorewor
ICAgIGlmICghKG1fbGF5b3V0RGF0YS0+eSA9PSBsZW5ndGgpKQorICAgICAgICBtX2xheW91dERh
dGEuYWNjZXNzKCkueSA9IGxlbmd0aDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6
OnNldEZpbGxPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9maWxsRGF0YS0+
b3BhY2l0eSA9PSBvcGFjaXR5KSkKKyAgICAgICAgbV9maWxsRGF0YS5hY2Nlc3MoKS5vcGFjaXR5
ID0gb3BhY2l0eTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldEZpbGxQYWlu
dChTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVy
aSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxl
KQoreworICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7CisgICAgICAgIGlmICghKG1fZmls
bERhdGEtPnBhaW50VHlwZSA9PSB0eXBlKSkKKyAgICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNz
KCkucGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+cGFpbnRDb2xv
ciA9PSBjb2xvcikpCisgICAgICAgICAgICBtX2ZpbGxEYXRhLmFjY2VzcygpLnBhaW50Q29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgaWYgKCEobV9maWxsRGF0YS0+cGFpbnRVcmkgPT0gdXJpKSkKKyAg
ICAgICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkucGFpbnRVcmkgPSB1cmk7CiAgICAgfQotfTsK
KyAgICBpZiAoYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUpIHsKKyAgICAgICAgaWYgKCEobV9maWxs
RGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUgPT0gdHlwZSkpCisgICAgICAgICAgICBtX2ZpbGxE
YXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEo
bV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludENvbG9yID09IGNvbG9yKSkKKyAgICAgICAgICAg
IG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludENvbG9yID0gY29sb3I7CisgICAg
ICAgIGlmICghKG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkKKyAgICAg
ICAgICAgIG1fZmlsbERhdGEuYWNjZXNzKCkudmlzaXRlZExpbmtQYWludFVyaSA9IHVyaTsKKyAg
ICB9Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdHJva2VPcGFjaXR5KGZs
b2F0IG9wYWNpdHkpCit7CisgICAgaWYgKCEobV9zdHJva2VEYXRhLT5vcGFjaXR5ID09IG9wYWNp
dHkpKQorICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkub3BhY2l0eSA9IG9wYWNpdHk7Cit9
CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdHJva2VQYWludChTVkdQYWludFR5
cGUgdHlwZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBs
eVRvUmVndWxhclN0eWxlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlKQoreworICAgIGlm
IChhcHBseVRvUmVndWxhclN0eWxlKSB7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+cGFp
bnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnBhaW50
VHlwZSA9IHR5cGU7CisgICAgICAgIGlmICghKG1fc3Ryb2tlRGF0YS0+cGFpbnRDb2xvciA9PSBj
b2xvcikpCisgICAgICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkucGFpbnRDb2xvciA9IGNv
bG9yOworICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnBhaW50VXJpID09IHVyaSkpCisgICAg
ICAgICAgICBtX3N0cm9rZURhdGEuYWNjZXNzKCkucGFpbnRVcmkgPSB1cmk7CisgICAgfQorICAg
IGlmIChhcHBseVRvVmlzaXRlZExpbmtTdHlsZSkgeworICAgICAgICBpZiAoIShtX3N0cm9rZURh
dGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlID09IHR5cGUpKQorICAgICAgICAgICAgbV9zdHJva2VE
YXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRUeXBlID0gdHlwZTsKKyAgICAgICAgaWYgKCEo
bV9zdHJva2VEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3IgPT0gY29sb3IpKQorICAgICAgICAg
ICAgbV9zdHJva2VEYXRhLmFjY2VzcygpLnZpc2l0ZWRMaW5rUGFpbnRDb2xvciA9IGNvbG9yOwor
ICAgICAgICBpZiAoIShtX3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRVcmkgPT0gdXJpKSkK
KyAgICAgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3MoKS52aXNpdGVkTGlua1BhaW50VXJpID0g
dXJpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldFN0cm9rZURh
c2hBcnJheShjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBhcnJheSkKK3sKKyAgICBpZiAo
IShtX3N0cm9rZURhdGEtPmRhc2hBcnJheSA9PSBhcnJheSkpCisgICAgICAgIG1fc3Ryb2tlRGF0
YS5hY2Nlc3MoKS5kYXNoQXJyYXkgPSBhcnJheTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVy
U3R5bGU6OnNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQgbGltaXQpCit7CisgICAgaWYgKCEobV9z
dHJva2VEYXRhLT5taXRlckxpbWl0ID09IGxpbWl0KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFj
Y2VzcygpLm1pdGVyTGltaXQgPSBsaW1pdDsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5
bGU6OnNldFN0cm9rZVdpZHRoKGNvbnN0IExlbmd0aCYgd2lkdGgpCit7CisgICAgaWYgKCEobV9z
dHJva2VEYXRhLT53aWR0aCA9PSB3aWR0aCkpCisgICAgICAgIG1fc3Ryb2tlRGF0YS5hY2Nlc3Mo
KS53aWR0aCA9IHdpZHRoOworfQorCitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0U3Ry
b2tlRGFzaE9mZnNldChjb25zdCBMZW5ndGgmIG9mZnNldCkKK3sKKyAgICBpZiAoIShtX3N0cm9r
ZURhdGEtPmRhc2hPZmZzZXQgPT0gb2Zmc2V0KSkKKyAgICAgICAgbV9zdHJva2VEYXRhLmFjY2Vz
cygpLmRhc2hPZmZzZXQgPSBvZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxl
OjpzZXRLZXJuaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBrZXJuaW5nKQoreworICAgIGlmICgh
KG1fdGV4dERhdGEtPmtlcm5pbmcgPT0ga2VybmluZykpCisgICAgICAgIG1fdGV4dERhdGEuYWNj
ZXNzKCkua2VybmluZyA9IGtlcm5pbmc7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxl
OjpzZXRTdG9wT3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAgIGlmICghKG1fc3RvcERhdGEt
Pm9wYWNpdHkgPT0gb3BhY2l0eSkpCisgICAgICAgIG1fc3RvcERhdGEuYWNjZXNzKCkub3BhY2l0
eSA9IG9wYWNpdHk7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRTdG9wQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmICghKG1fc3RvcERhdGEtPmNvbG9yID09
IGNvbG9yKSkKKyAgICAgICAgbV9zdG9wRGF0YS5hY2Nlc3MoKS5jb2xvciA9IGNvbG9yOworfQor
CitpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IG9wYWNp
dHkpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+Zmxvb2RPcGFjaXR5ID09IG9wYWNpdHkpKQor
ICAgICAgICBtX21pc2NEYXRhLmFjY2VzcygpLmZsb29kT3BhY2l0eSA9IG9wYWNpdHk7Cit9CisK
K2lubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5mbG9vZENvbG9yID09IGNvbG9yKSkKKyAg
ICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5mbG9vZENvbG9yID0gY29sb3I7Cit9CisKK2lubGlu
ZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKK3sKKyAgICBpZiAoIShtX21pc2NEYXRhLT5saWdodGluZ0NvbG9yID09IGNvbG9yKSkKKyAg
ICAgICAgbV9taXNjRGF0YS5hY2Nlc3MoKS5saWdodGluZ0NvbG9yID0gY29sb3I7Cit9CisKK2lu
bGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRCYXNlbGluZVNoaWZ0VmFsdWUoY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHNoaWZ0VmFsdWUpCit7CisgICAgaWYgKCEobV9taXNjRGF0YS0+YmFzZWxp
bmVTaGlmdFZhbHVlID09IHNoaWZ0VmFsdWUpKQorICAgICAgICBtX21pc2NEYXRhLmFjY2Vzcygp
LmJhc2VsaW5lU2hpZnRWYWx1ZSA9IHNoaWZ0VmFsdWU7Cit9CisKK2lubGluZSB2b2lkIFNWR1Jl
bmRlclN0eWxlOjpzZXRDbGlwcGVyUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKK3sK
KyAgICBpZiAoIShtX25vbkluaGVyaXRlZFJlc291cmNlRGF0YS0+Y2xpcHBlciA9PSByZXNvdXJj
ZSkpCisgICAgICAgIG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLmNsaXBwZXIg
PSByZXNvdXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hc2tlclJl
c291cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAgaWYgKCEobV9ub25Jbmhlcml0
ZWRSZXNvdXJjZURhdGEtPm1hc2tlciA9PSByZXNvdXJjZSkpCisgICAgICAgIG1fbm9uSW5oZXJp
dGVkUmVzb3VyY2VEYXRhLmFjY2VzcygpLm1hc2tlciA9IHJlc291cmNlOworfQorCitpbmxpbmUg
dm9pZCBTVkdSZW5kZXJTdHlsZTo6c2V0TWFya2VyU3RhcnRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IHJlc291cmNlKQoreworICAgIGlmICghKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJT
dGFydCA9PSByZXNvdXJjZSkpCisgICAgICAgIG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLmFjY2Vz
cygpLm1hcmtlclN0YXJ0ID0gcmVzb3VyY2U7Cit9CisKK2lubGluZSB2b2lkIFNWR1JlbmRlclN0
eWxlOjpzZXRNYXJrZXJNaWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQoreworICAg
IGlmICghKG1faW5oZXJpdGVkUmVzb3VyY2VEYXRhLT5tYXJrZXJNaWQgPT0gcmVzb3VyY2UpKQor
ICAgICAgICBtX2luaGVyaXRlZFJlc291cmNlRGF0YS5hY2Nlc3MoKS5tYXJrZXJNaWQgPSByZXNv
dXJjZTsKK30KKworaW5saW5lIHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hcmtlckVuZFJlc291
cmNlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCit7CisgICAgaWYgKCEobV9pbmhlcml0ZWRSZXNv
dXJjZURhdGEtPm1hcmtlckVuZCA9PSByZXNvdXJjZSkpCisgICAgICAgIG1faW5oZXJpdGVkUmVz
b3VyY2VEYXRhLmFjY2VzcygpLm1hcmtlckVuZCA9IHJlc291cmNlOworfQorCitpbmxpbmUgdm9p
ZCBTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMoKQoreworICAgIG1faW5oZXJpdGVkRmxh
Z3MuY2xpcFJ1bGUgPSBpbml0aWFsQ2xpcFJ1bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNv
bG9yUmVuZGVyaW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5maWxsUnVsZSA9IGluaXRpYWxGaWxsUnVsZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
c2hhcGVSZW5kZXJpbmcgPSBpbml0aWFsU2hhcGVSZW5kZXJpbmcoKTsKKyAgICBtX2luaGVyaXRl
ZEZsYWdzLnRleHRBbmNob3IgPSBpbml0aWFsVGV4dEFuY2hvcigpOworICAgIG1faW5oZXJpdGVk
RmxhZ3MuY2FwU3R5bGUgPSBpbml0aWFsQ2FwU3R5bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
LmpvaW5TdHlsZSA9IGluaXRpYWxKb2luU3R5bGUoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNv
bG9ySW50ZXJwb2xhdGlvbiA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb24oKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPSBpbml0aWFsQ29sb3JJbnRl
cnBvbGF0aW9uRmlsdGVycygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlv
bkhvcml6b250YWwgPSBpbml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKTsKKyAgICBt
X2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IGluaXRpYWxHbHlwaE9y
aWVudGF0aW9uVmVydGljYWwoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnBhaW50T3JkZXIgPSBp
bml0aWFsUGFpbnRPcmRlcigpOworCisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFncyA9IDA7
CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IGlu
aXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMuZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFudEJhc2VsaW5lKCk7CisgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ID0gaW5pdGlhbEJhc2VsaW5l
U2hpZnQoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9
IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRz
LmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7CisgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOwor
fQorCitpbmxpbmUgYm9vbCBTVkdSZW5kZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9y
PT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb2xv
clJlbmRlcmluZyA9PSBvdGhlci5jb2xvclJlbmRlcmluZworICAgICAgICAmJiBzaGFwZVJlbmRl
cmluZyA9PSBvdGhlci5zaGFwZVJlbmRlcmluZworICAgICAgICAmJiBjbGlwUnVsZSA9PSBvdGhl
ci5jbGlwUnVsZQorICAgICAgICAmJiBmaWxsUnVsZSA9PSBvdGhlci5maWxsUnVsZQorICAgICAg
ICAmJiBjYXBTdHlsZSA9PSBvdGhlci5jYXBTdHlsZQorICAgICAgICAmJiBqb2luU3R5bGUgPT0g
b3RoZXIuam9pblN0eWxlCisgICAgICAgICYmIHRleHRBbmNob3IgPT0gb3RoZXIudGV4dEFuY2hv
cgorICAgICAgICAmJiBjb2xvckludGVycG9sYXRpb24gPT0gb3RoZXIuY29sb3JJbnRlcnBvbGF0
aW9uCisgICAgICAgICYmIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPT0gb3RoZXIuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycworICAgICAgICAmJiBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCA9PSBvdGhlci5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAorICAgICAgICAmJiBnbHlwaE9y
aWVudGF0aW9uVmVydGljYWwgPT0gb3RoZXIuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCisgICAg
ICAgICYmIHBhaW50T3JkZXIgPT0gb3RoZXIucGFpbnRPcmRlcjsKK30KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgK
aW5kZXggNmQ3NjdhZTIzNzM3ZGI2Zjc4M2YyMjQ5ZTQ5MGVjOTA2YTMzYjhlOC4uYjc0OWEyNmMw
Y2E1YWNmYzYyZWYyZjNlY2JiZWQzZTQ5NTc4ZjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2hhcGVWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXBlVmFsdWU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWZQdHI8QmFz
aWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCisgICAgc3RhdGljIFJlZjxTaGFw
ZVZhbHVlPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVWYWx1ZShXVEZNb3Zl
KHNoYXBlKSwgY3NzQm94KSk7CiAgICAgfQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUoYm94U2hhcGUpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBp
bWFnZSkKKyAgICBzdGF0aWMgUmVmPFNoYXBlVmFsdWU+IGNyZWF0ZShSZWY8U3R5bGVJbWFnZT4m
JiBpbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXBlVmFsdWUo
V1RGTW92ZShpbWFnZSkpKTsKICAgICB9CkBAIC03MiwxNCArNzIsMTQgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBTaGFwZVZhbHVlKFJlZlB0cjxCYXNpY1NoYXBlPiYmIHNoYXBl
LCBDU1NCb3hUeXBlIGNzc0JveCkKKyAgICBTaGFwZVZhbHVlKFJlZjxCYXNpY1NoYXBlPiYmIHNo
YXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6U2hhcGUpCiAg
ICAgICAgICwgbV9zaGFwZShXVEZNb3ZlKHNoYXBlKSkKICAgICAgICAgLCBtX2Nzc0JveChjc3NC
b3gpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFNoYXBlVmFsdWUoUmVmUHRyPFN0eWxl
SW1hZ2U+JiYgaW1hZ2UpCisgICAgZXhwbGljaXQgU2hhcGVWYWx1ZShSZWY8U3R5bGVJbWFnZT4m
JiBpbWFnZSkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6SW1hZ2UpCiAgICAgICAgICwgbV9pbWFn
ZShXVEZNb3ZlKGltYWdlKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKaW5kZXggMWJhMzZjNGE4ZDBkM2Jl
YzMxZjQzMmEwNmZmZjNjODNmMmFkZTRiYS4uYWUzODM1Yzc5YmJhOGQwOTZiMTNiNzBkZDU2ZTk1
ZjQ4MWYxNzc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQmFja2dyb3VuZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCwxNiArMjgsMTYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5k
RGF0YSgpCi0gICAgOiBtX2JhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKLSAgICAsIG1f
Y29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICA6IGJhY2tn
cm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKKyAgICAsIGNvbG9yKFJlbmRlclN0eWxlOjppbml0
aWFsQmFja2dyb3VuZENvbG9yKCkpCiB7CiB9CiAKLWlubGluZSBTdHlsZUJhY2tncm91bmREYXRh
OjpTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pCitpbmxp
bmUgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJh
Y2tncm91bmREYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0
YT4oKQotICAgICwgbV9iYWNrZ3JvdW5kKG8ubV9iYWNrZ3JvdW5kKQotICAgICwgbV9jb2xvcihv
Lm1fY29sb3IpCi0gICAgLCBtX291dGxpbmUoby5tX291dGxpbmUpCisgICAgLCBiYWNrZ3JvdW5k
KG90aGVyLmJhY2tncm91bmQpCisgICAgLCBjb2xvcihvdGhlci5jb2xvcikKKyAgICAsIG91dGxp
bmUob3RoZXIub3V0bGluZSkKIHsKIH0KIApAQCAtNDYsMTggKzQ2LDE4IEBAIFJlZjxTdHlsZUJh
Y2tncm91bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKCp0aGlzKSk7CiB9CiAKLWJvb2wg
U3R5bGVCYWNrZ3JvdW5kRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUJhY2tncm91bmREYXRh
JiBvKSBjb25zdAorYm9vbCBTdHlsZUJhY2tncm91bmREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0
eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tncm91
bmQgPT0gby5tX2JhY2tncm91bmQgJiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9vdXRsaW5l
ID09IG8ubV9vdXRsaW5lOworICAgIHJldHVybiBiYWNrZ3JvdW5kID09IG90aGVyLmJhY2tncm91
bmQgJiYgY29sb3IgPT0gb3RoZXIuY29sb3IgJiYgb3V0bGluZSA9PSBvdGhlci5vdXRsaW5lOwog
fQogCiBib29sIFN0eWxlQmFja2dyb3VuZERhdGE6OmlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNv
bnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2JhY2tn
cm91bmQgIT0gb3RoZXIubV9iYWNrZ3JvdW5kIHx8IG1fY29sb3IgIT0gb3RoZXIubV9jb2xvcikK
KyAgICBpZiAoYmFja2dyb3VuZCAhPSBvdGhlci5iYWNrZ3JvdW5kIHx8IGNvbG9yICE9IG90aGVy
LmNvbG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX291dGxpbmUuaXNWaXNp
YmxlKCkgJiYgIW90aGVyLm1fb3V0bGluZS5pc1Zpc2libGUoKSkKKyAgICBpZiAoIW91dGxpbmUu
aXNWaXNpYmxlKCkgJiYgIW90aGVyLm91dGxpbmUuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBtX291dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lOworICAgIHJl
dHVybiBvdXRsaW5lID09IG90aGVyLm91dGxpbmU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tn
cm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3Jv
dW5kRGF0YS5oCmluZGV4IDE0NDc3N2FhMGViOTVjMjVhNGFmZDEyM2Q0OGRiYzU3YjM2ZGJkNzMu
LjliOTVlZTBjYWI5OTFkNmZkZmIwYjU2ZGVkYTFjODBhZWU4OTQ0MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBHcmFoYW0g
RGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwyOSAr
MzYsMTkgQEAgY2xhc3MgU3R5bGVCYWNrZ3JvdW5kRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
eWxlQmFja2dyb3VuZERhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlQmFja2dy
b3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5k
RGF0YSk7IH0KICAgICBSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OwotICAg
IH5TdHlsZUJhY2tncm91bmREYXRhKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dy
b3VuZERhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVCYWNrZ3Jv
dW5kRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAg
ICBib29sIGlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEm
KSBjb25zdDsKIAotICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZDsgfQotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3I7IH0KLSAgICBjb25zdCBPdXRsaW5lVmFsdWUmIG91dGxpbmUoKSBjb25zdCB7
IHJldHVybiBtX291dGxpbmU7IH0KKyAgICBGaWxsTGF5ZXIgYmFja2dyb3VuZDsKKyAgICBDb2xv
ciBjb2xvcjsKKyAgICBPdXRsaW5lVmFsdWUgb3V0bGluZTsKIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgUmVuZGVyU3R5bGU7Ci0KICAgICBTdHlsZUJhY2tncm91bmREYXRhKCk7Ci0gICAg
U3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJik7IAotCi0gICAg
RmlsbExheWVyIG1fYmFja2dyb3VuZDsKLSAgICBDb2xvciBtX2NvbG9yOwotICAgIE91dGxpbmVW
YWx1ZSBtX291dGxpbmU7CisgICAgU3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tn
cm91bmREYXRhJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggZjcw
NjkxYmM2YTE1MzM1NzRhZTFmYjE1ZDI3MmEyMTEzZjczNWFkYy4uNjkyMzk1YjFlMzUwZjFjYTBk
M2ZkOTNiMWQ1ZTU0ZDE2YmZiNWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBDYWNoZWRJ
bWFnZSogU3R5bGVDYWNoZWRJbWFnZTo6Y2FjaGVkSW1hZ2UoKSBjb25zdAogCiBSZWY8Q1NTVmFs
dWU+IFN0eWxlQ2FjaGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29u
c3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBtX2Nzc1Zh
bHVlLmNvcHlSZWYoKTsKIH0KIAogYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YS5oCmluZGV4IGM2ZmZhNzU2OTU5NmMzZTk0YjFjZDNiYzMyNjM3YzAxMjMyZDMwZjgu
Ljg4ZjE4MzFjNGQ1MWNiNzM5Njk1MDljOWMyNTU1MzJhMmIwMjdkMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0
YS5oCkBAIC0zNSw1MCArMzUsNDEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGEpOyB9CiAgICAgUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPiBjb3B5
KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgq
dGhpcykpOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhJiBvKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9jb250YWlu
c1ZhcmlhYmxlcyAhPSBvLm1fY29udGFpbnNWYXJpYWJsZXMpCisgICAgICAgIGlmIChjb250YWlu
c1ZhcmlhYmxlcyAhPSBvdGhlci5jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlcy5zaXplKCkgIT0gby5tX3Zh
bHVlcy5zaXplKCkpCisKKyAgICAgICAgaWYgKHZhbHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVz
LnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZv
ciAoV1RGOjpLZXlWYWx1ZVBhaXI8QXRvbWljU3RyaW5nLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4+IGVudHJ5IDogbV92YWx1ZXMpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBvdGhlciA9IG8ubV92YWx1ZXMuZ2V0KGVudHJ5LmtleSk7Ci0gICAg
ICAgICAgICBpZiAoIW90aGVyIHx8ICFlbnRyeS52YWx1ZS0+ZXF1YWxzKCpvdGhlcikpCisKKyAg
ICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgYXV0byBvdGhl
ckVudHJ5ID0gb3RoZXIudmFsdWVzLmZpbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgIGlmIChv
dGhlckVudHJ5ID09IG90aGVyLnZhbHVlcy5lbmQoKSB8fCAhZW50cnkudmFsdWUtPmVxdWFscygq
b3RoZXJFbnRyeS0+dmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQorCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSAmbykgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0g
ICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiB2YWx1ZSkKKyAgICB2b2lkIHNl
dEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIG1fdmFsdWVzLnNldChu
YW1lLCB2YWx1ZSk7CiAgICAgICAgIGlmICh2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKLSAg
ICAgICAgICAgIG1fY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOworICAgICAgICAgICAgY29udGFp
bnNWYXJpYWJsZXMgPSB0cnVlOworICAgICAgICB2YWx1ZXMuc2V0KG5hbWUsIFdURk1vdmUodmFs
dWUpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gZ2V0Q3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWVzLmdldChuYW1lKTsgfQotICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIHZhbHVl
cygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9Ci0gICAgCi0gICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0
eShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmNvbnRh
aW5zKG5hbWUpOyB9Ci0gICAgCi0gICAgYm9vbCBjb250YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGFpbnNWYXJpYWJsZXM7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zVmFyaWFi
bGVzKGJvb2wgY29udGFpbnNWYXJpYWJsZXMpIHsgbV9jb250YWluc1ZhcmlhYmxlcyA9IGNvbnRh
aW5zVmFyaWFibGVzOyB9Ci0KLSAgICBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwIG1fdmFsdWVzOwot
ICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CisgICAgQ3VzdG9tUHJvcGVy
dHlWYWx1ZU1hcCB2YWx1ZXM7CisgICAgYm9vbCBjb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoKQotICAg
ICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkKLSAgICB7IH0KKyAg
ICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0gZGVmYXVsdDsKICAgICBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpCiAgICAgICAg
IDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKQotICAgICAgICAsIG1fdmFs
dWVzKEN1c3RvbVByb3BlcnR5VmFsdWVNYXAob3RoZXIubV92YWx1ZXMpKQotICAgICAgICAsIG1f
Y29udGFpbnNWYXJpYWJsZXMob3RoZXIubV9jb250YWluc1ZhcmlhYmxlcykKKyAgICAgICAgLCB2
YWx1ZXMob3RoZXIudmFsdWVzKQorICAgICAgICAsIGNvbnRhaW5zVmFyaWFibGVzKG90aGVyLmNv
bnRhaW5zVmFyaWFibGVzKQogICAgIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmNwcAppbmRleCAzMmY3ODA1ZWJjZjY1NjBhYWQ0NjllZmFmYzVhZWQzMmNjOTZhNWZmLi4x
ZmFmYTJkODg5NmQ3MTMyMzgyOTI2MTVmNWNkNDBkZWNkZTU2OTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhLmNwcApAQCAtMjgsOCArMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhKCkKICAgICA6IGZsZXgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hGbGV4KCkpCi0g
ICAgLCBmbGV4X2dyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94RmxleEdyb3VwKCkpCi0gICAg
LCBvcmRpbmFsX2dyb3VwKFJlbmRlclN0eWxlOjppbml0aWFsQm94T3JkaW5hbEdyb3VwKCkpCisg
ICAgLCBmbGV4R3JvdXAoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hGbGV4R3JvdXAoKSkKKyAgICAs
IG9yZGluYWxHcm91cChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yZGluYWxHcm91cCgpKQogICAg
ICwgYWxpZ24oUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hBbGlnbigpKQogICAgICwgcGFjayhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJveFBhY2soKSkKICAgICAsIG9yaWVudChSZW5kZXJTdHlsZTo6aW5p
dGlhbEJveE9yaWVudCgpKQpAQCAtMzcsMTUgKzM3LDE1IEBAIFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKCkKIHsKIH0KIAotaW5s
aW5lIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhKGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgbykKK2lubGlu
ZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxl
Qm94RGF0YShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG90aGVyKQogICAg
IDogUmVmQ291bnRlZDxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+KCkKLSAgICAsIGZs
ZXgoby5mbGV4KQotICAgICwgZmxleF9ncm91cChvLmZsZXhfZ3JvdXApCi0gICAgLCBvcmRpbmFs
X2dyb3VwKG8ub3JkaW5hbF9ncm91cCkKLSAgICAsIGFsaWduKG8uYWxpZ24pCi0gICAgLCBwYWNr
KG8ucGFjaykKLSAgICAsIG9yaWVudChvLm9yaWVudCkKLSAgICAsIGxpbmVzKG8ubGluZXMpCisg
ICAgLCBmbGV4KG90aGVyLmZsZXgpCisgICAgLCBmbGV4R3JvdXAob3RoZXIuZmxleEdyb3VwKQor
ICAgICwgb3JkaW5hbEdyb3VwKG90aGVyLm9yZGluYWxHcm91cCkKKyAgICAsIGFsaWduKG90aGVy
LmFsaWduKQorICAgICwgcGFjayhvdGhlci5wYWNrKQorICAgICwgb3JpZW50KG90aGVyLm9yaWVu
dCkKKyAgICAsIGxpbmVzKG90aGVyLmxpbmVzKQogewogfQogCkBAIC01NCwxMSArNTQsMTEgQEAg
UmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZURl
cHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6
Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikg
Y29uc3QKIHsKLSAgICByZXR1cm4gZmxleCA9PSBvLmZsZXggJiYgZmxleF9ncm91cCA9PSBvLmZs
ZXhfZ3JvdXAgJiYKLSAgICAgICAgICAgb3JkaW5hbF9ncm91cCA9PSBvLm9yZGluYWxfZ3JvdXAg
JiYgYWxpZ24gPT0gby5hbGlnbiAmJgotICAgICAgICAgICBwYWNrID09IG8ucGFjayAmJiBvcmll
bnQgPT0gby5vcmllbnQgJiYgbGluZXMgPT0gby5saW5lczsKKyAgICByZXR1cm4gZmxleCA9PSBv
dGhlci5mbGV4ICYmIGZsZXhHcm91cCA9PSBvdGhlci5mbGV4R3JvdXAKKyAgICAgICAgJiYgb3Jk
aW5hbEdyb3VwID09IG90aGVyLm9yZGluYWxHcm91cCAmJiBhbGlnbiA9PSBvdGhlci5hbGlnbgor
ICAgICAgICAmJiBwYWNrID09IG90aGVyLnBhY2sgJiYgb3JpZW50ID09IG90aGVyLm9yaWVudCAm
JiBsaW5lcyA9PSBvdGhlci5saW5lczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDdmMDAwYmJlYmY3Y2ZkYWU0ZDZkYTk5Nzdi
MjQwYzg1ZmMyNGNmMzAuLjMzMGNmNjQ3MzRkY2E3NWRiNWY4OWVlNzY2Y2I0ZGM5MTcxYWVjN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKQEAgLTM1LDE0ICszNSwxNCBAQCBwdWJs
aWM6CiAgICAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0
OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGEmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
ICAgIH0KIAogICAgIGZsb2F0IGZsZXg7Ci0gICAgdW5zaWduZWQgaW50IGZsZXhfZ3JvdXA7Ci0g
ICAgdW5zaWduZWQgaW50IG9yZGluYWxfZ3JvdXA7CisgICAgdW5zaWduZWQgZmxleEdyb3VwOwor
ICAgIHVuc2lnbmVkIG9yZGluYWxHcm91cDsKIAogICAgIHVuc2lnbmVkIGFsaWduIDogMzsgLy8g
RUJveEFsaWdubWVudAogICAgIHVuc2lnbmVkIHBhY2s6IDI7IC8vIEVCb3hQYWNrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCmluZGV4
IGIwZDNiZTExMDE1ZTQ3OWZmYWMwYWExNTAxNTBmZjdkMTg1YzIwYzIuLjIwZGJjMDhlNjYyNzM4
NmRhZTMzNDVhM2Y1MmVmZmEyNWIyYjM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCkBAIC0yNiwxOSArMjYsMTUgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZUZpbHRlckRhdGEuaCIKIAotI2luY2x1
ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTdHlsZUZpbHRlckRhdGE6OlN0eWxlRmlsdGVyRGF0YSgpCi0gICAg
OiBtX29wZXJhdGlvbnMoKQogewogfQogCi1pbmxpbmUgU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZp
bHRlckRhdGEoY29uc3QgU3R5bGVGaWx0ZXJEYXRhJiBvKQoraW5saW5lIFN0eWxlRmlsdGVyRGF0
YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgb3RoZXIpCiAgICAgOiBS
ZWZDb3VudGVkPFN0eWxlRmlsdGVyRGF0YT4oKQotICAgICwgbV9vcGVyYXRpb25zKG8ubV9vcGVy
YXRpb25zKQorICAgICwgb3BlcmF0aW9ucyhvdGhlci5vcGVyYXRpb25zKQogewogfQogCkBAIC00
Nyw5ICs0Myw5IEBAIFJlZjxTdHlsZUZpbHRlckRhdGE+IFN0eWxlRmlsdGVyRGF0YTo6Y29weSgp
IGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGaWx0ZXJEYXRhKCp0aGlzKSk7
CiB9CiAKLWJvb2wgU3R5bGVGaWx0ZXJEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVy
RGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVGaWx0ZXJEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0
eWxlRmlsdGVyRGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9ucyA9
PSBvLm1fb3BlcmF0aW9uczsKKyAgICByZXR1cm4gb3BlcmF0aW9ucyA9PSBvdGhlci5vcGVyYXRp
b25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKaW5kZXggYzk2ZTMxZWUwM2NlZWQ0OGI1
MWQ0MmEzMTU3YWFhOGZlOTIxYzUzZC4uYThiYTgzMWUyYzI1NWQ3ZTgyYmU4M2ZhNTU5MzI4YzEy
ZjRhZmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmlsdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZp
bHRlckRhdGEuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwogICAgIH0KIAotICAgIEZpbHRlck9wZXJhdGlvbnMgbV9vcGVyYXRpb25zOwor
ICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKIAogcHJpdmF0ZToKICAgICBTdHlsZUZp
bHRlckRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZsZXhpYmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVGbGV4aWJsZUJveERhdGEuY3BwCmluZGV4IDk5ZTU1ZWI3ZTY0NjlkOWQ2NTQ1NWY2OWUx
YzJkMjhhMjk3Y2JiNzUuLmE4MjE4NDQ1YTE3NjcyMWViOWFiZGQyZmMyOGU4NGVmNDlmMzBlMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxl
eGlibGVCb3hEYXRhLmNwcApAQCAtMzEsMjEgKzMxLDIxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFN0eWxlRmxleGlibGVCb3hEYXRhOjpTdHlsZUZsZXhpYmxlQm94RGF0YSgpCi0gICAgOiBt
X2ZsZXhHcm93KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEdyb3coKSkKLSAgICAsIG1fZmxleFNo
cmluayhSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhTaHJpbmsoKSkKLSAgICAsIG1fZmxleEJhc2lz
KFJlbmRlclN0eWxlOjppbml0aWFsRmxleEJhc2lzKCkpCi0gICAgLCBtX2ZsZXhEaXJlY3Rpb24o
UmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uKCkpCi0gICAgLCBtX2ZsZXhXcmFwKFJl
bmRlclN0eWxlOjppbml0aWFsRmxleFdyYXAoKSkKKyAgICA6IGZsZXhHcm93KFJlbmRlclN0eWxl
Ojppbml0aWFsRmxleEdyb3coKSkKKyAgICAsIGZsZXhTaHJpbmsoUmVuZGVyU3R5bGU6OmluaXRp
YWxGbGV4U2hyaW5rKCkpCisgICAgLCBmbGV4QmFzaXMoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4
QmFzaXMoKSkKKyAgICAsIGZsZXhEaXJlY3Rpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4RGly
ZWN0aW9uKCkpCisgICAgLCBmbGV4V3JhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhXcmFwKCkp
CiB7CiB9CiAKLWlubGluZSBTdHlsZUZsZXhpYmxlQm94RGF0YTo6U3R5bGVGbGV4aWJsZUJveERh
dGEoY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8pCitpbmxpbmUgU3R5bGVGbGV4aWJsZUJv
eERhdGE6OlN0eWxlRmxleGlibGVCb3hEYXRhKGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBv
dGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVGbGV4aWJsZUJveERhdGE+KCkKLSAgICAsIG1f
ZmxleEdyb3coby5tX2ZsZXhHcm93KQotICAgICwgbV9mbGV4U2hyaW5rKG8ubV9mbGV4U2hyaW5r
KQotICAgICwgbV9mbGV4QmFzaXMoby5tX2ZsZXhCYXNpcykKLSAgICAsIG1fZmxleERpcmVjdGlv
bihvLm1fZmxleERpcmVjdGlvbikKLSAgICAsIG1fZmxleFdyYXAoby5tX2ZsZXhXcmFwKQorICAg
ICwgZmxleEdyb3cob3RoZXIuZmxleEdyb3cpCisgICAgLCBmbGV4U2hyaW5rKG90aGVyLmZsZXhT
aHJpbmspCisgICAgLCBmbGV4QmFzaXMob3RoZXIuZmxleEJhc2lzKQorICAgICwgZmxleERpcmVj
dGlvbihvdGhlci5mbGV4RGlyZWN0aW9uKQorICAgICwgZmxleFdyYXAob3RoZXIuZmxleFdyYXAp
CiB7CiB9CiAKQEAgLTU0LDEwICs1NCwxMCBAQCBSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IFN0
eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZUZsZXhpYmxlQm94RGF0YSgqdGhpcykpOwogfQogCi1ib29sIFN0eWxlRmxleGlibGVC
b3hEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAor
Ym9vbCBTdHlsZUZsZXhpYmxlQm94RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxl
Qm94RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZmxleEdyb3cgPT0gby5tX2Zs
ZXhHcm93ICYmIG1fZmxleFNocmluayA9PSBvLm1fZmxleFNocmluayAmJiBtX2ZsZXhCYXNpcyA9
PSBvLm1fZmxleEJhc2lzCi0gICAgICAgICYmIG1fZmxleERpcmVjdGlvbiA9PSBvLm1fZmxleERp
cmVjdGlvbiAmJiBtX2ZsZXhXcmFwID09IG8ubV9mbGV4V3JhcDsKKyAgICByZXR1cm4gZmxleEdy
b3cgPT0gb3RoZXIuZmxleEdyb3cgJiYgZmxleFNocmluayA9PSBvdGhlci5mbGV4U2hyaW5rICYm
IGZsZXhCYXNpcyA9PSBvdGhlci5mbGV4QmFzaXMKKyAgICAgICAgJiYgZmxleERpcmVjdGlvbiA9
PSBvdGhlci5mbGV4RGlyZWN0aW9uICYmIGZsZXhXcmFwID09IG90aGVyLmZsZXhXcmFwOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4
aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhp
YmxlQm94RGF0YS5oCmluZGV4IDMyMzhiODZmMmZiNTAwZGRmNGE4MDJlYTM5MDJiMDhhNjE3MGQ4
NjkuLmY1NGQ4NTkwNGI5NGI0ZWFmNzM3MjQwNzE3MWJmZmQzYmZlMzVmNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5o
CkBAIC00MiwxMiArNDIsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
KTsKICAgICB9CiAKLSAgICBmbG9hdCBtX2ZsZXhHcm93OwotICAgIGZsb2F0IG1fZmxleFNocmlu
azsKLSAgICBMZW5ndGggbV9mbGV4QmFzaXM7CisgICAgZmxvYXQgZmxleEdyb3c7CisgICAgZmxv
YXQgZmxleFNocmluazsKKyAgICBMZW5ndGggZmxleEJhc2lzOwogCi0gICAgdW5zaWduZWQgbV9m
bGV4RGlyZWN0aW9uIDogMjsgLy8gRUZsZXhEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBtX2ZsZXhX
cmFwIDogMjsgLy8gRUZsZXhXcmFwCisgICAgdW5zaWduZWQgZmxleERpcmVjdGlvbiA6IDI7IC8v
IEVGbGV4RGlyZWN0aW9uCisgICAgdW5zaWduZWQgZmxleFdyYXAgOiAyOyAvLyBFRmxleFdyYXAK
IAogcHJpdmF0ZToKICAgICBTdHlsZUZsZXhpYmxlQm94RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4
IDJjODRiMmY1NjdmMDdhMTk1OGM3MGU2NmI2ZjNmNGZjN2Q2OGZlMjIuLmIwMDYzNzgxNGVhM2I0
YjcxNjAxNzkwM2RmY2RkZmUyNGJhMzBiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZShSZWY8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkKIAogUmVmPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZElt
YWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSY+KG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJu
IG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5jb3B5UmVmKCk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0
ZWRJbWFnZTo6aXNQZW5kaW5nKCkgY29uc3QKQEAgLTU2LDcgKzU2LDcgQEAgRmxvYXRTaXplIFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgZmxvYXQgbXUKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgIGlmIChtX2ZpeGVkU2l6
ZSkgewotICAgICAgICBGbG9hdFNpemUgZml4ZWRTaXplID0gY29uc3RfY2FzdDxDU1NJbWFnZUdl
bmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5maXhlZFNpemUoKnJl
bmRlcmVyKTsKKyAgICAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZSA9IG1faW1hZ2VHZW5lcmF0b3JW
YWx1ZS0+Zml4ZWRTaXplKCpyZW5kZXJlcik7CiAgICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEu
MGYpCiAgICAgICAgICAgICByZXR1cm4gZml4ZWRTaXplOwogCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCiBSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHJlbmRlcmVyKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKS5pbWFnZSgqcmVuZGVyZXIsIHNpemUp
OworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmltYWdlKCpyZW5kZXJlciwgc2l6
ZSk7CiB9CiAKIGJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCmluZGV4IDU0ODA2MDQ0MDMwYTZhOWRjODBl
ZDc0YjI0ODdmODM3ZDU4ZjM0MzUuLmMxNDFlZjdlYWFiN2M0OTVhMjhhZTRkODYzM2U5ODMzM2Yz
MzE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdy
aWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlk
RGF0YS5jcHAKQEAgLTMzLDU5ICszMyw1OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHls
ZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKCkKLSAgICA6IG1fZ3JpZENvbHVtbnMoUmVuZGVyU3R5
bGU6OmluaXRpYWxHcmlkQ29sdW1ucygpKQotICAgICwgbV9ncmlkUm93cyhSZW5kZXJTdHlsZTo6
aW5pdGlhbEdyaWRSb3dzKCkpCi0gICAgLCBtX25hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0
eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1fbmFtZWRHcmlkUm93
TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKQotICAgICwgbV9v
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJl
bmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0gICAgLCBtX2F1
dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3Jp
ZENvbHVtbkxpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZFJvd0xpbmVzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMoKSkKLSAgICAsIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKQot
ICAgICwgbV9ncmlkQXV0b0Zsb3coUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0Zsb3coKSkK
LSAgICAsIG1fZ3JpZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9Sb3dzKCkp
Ci0gICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvQ29s
dW1ucygpKQotICAgICwgbV9uYW1lZEdyaWRBcmVhKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRH
cmlkQXJlYSgpKQotICAgICwgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKLSAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpCi0gICAgLCBtX2dy
aWRDb2x1bW5HYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1uR2FwKCkpCi0gICAgLCBt
X2dyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93R2FwKCkpCi0gICAgLCBtX2dy
aWRBdXRvUmVwZWF0Q29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJh
Y2tzKCkpCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvUmVwZWF0VHJhY2tzKCkpCi0gICAgLCBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9u
UG9pbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkp
Ci0gICAgLCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCi0gICAgLCBtX2F1dG9SZXBlYXRDb2x1
bW5zVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpKQotICAgICwg
bV9hdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5
cGUoKSkKKyAgICA6IGdyaWRDb2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMo
KSkKKyAgICAsIGdyaWRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZFJvd3MoKSkKKyAgICAs
IG5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1u
TGluZXMoKSkKKyAgICAsIG5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFt
ZWRHcmlkUm93TGluZXMoKSkKKyAgICAsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpKQorICAgICwgb3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3Jp
ZFJvd0xpbmVzKCkpCisgICAgLCBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVy
U3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKQorICAgICwgYXV0b1JlcGVhdE5h
bWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkK
KyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6
OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSkKKyAgICAsIGF1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoKSkKKyAgICAsIGdyaWRBdXRvRmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvRmxvdygpKQorICAgICwgZ3JpZEF1dG9Sb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEF1dG9Sb3dzKCkpCisgICAgLCBncmlkQXV0b0NvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxH
cmlkQXV0b0NvbHVtbnMoKSkKKyAgICAsIG5hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRp
YWxOYW1lZEdyaWRBcmVhKCkpCisgICAgLCBuYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKKyAgICAsIG5hbWVkR3JpZEFyZWFDb2x1
bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKQorICAgICwg
Z3JpZENvbHVtbkdhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5HYXAoKSkKKyAgICAs
IGdyaWRSb3dHYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93R2FwKCkpCisgICAgLCBncmlk
QXV0b1JlcGVhdENvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFRyYWNr
cygpKQorICAgICwgZ3JpZEF1dG9SZXBlYXRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1
dG9SZXBlYXRUcmFja3MoKSkKKyAgICAsIGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkpCisgICAg
LCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1
dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpKQorICAgICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKFJl
bmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkpCisgICAgLCBhdXRvUmVwZWF0
Um93c1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKIHsKIH0K
IAogaW5saW5lIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0
YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVHcmlkRGF0YT4oKQotICAgICwgbV9ncmlkQ29s
dW1ucyhvLm1fZ3JpZENvbHVtbnMpCi0gICAgLCBtX2dyaWRSb3dzKG8ubV9ncmlkUm93cykKLSAg
ICAsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMoby5tX25hbWVkR3JpZENvbHVtbkxpbmVzKQotICAg
ICwgbV9uYW1lZEdyaWRSb3dMaW5lcyhvLm1fbmFtZWRHcmlkUm93TGluZXMpCi0gICAgLCBtX29y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KQotICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRS
b3dMaW5lcykKLSAgICAsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRv
UmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMpCi0gICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRS
b3dMaW5lcyhvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKQotICAgICwgbV9hdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVk
R3JpZENvbHVtbkxpbmVzKQotICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKQotICAgICwgbV9ncmlk
QXV0b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKLSAgICAsIG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlk
QXV0b1Jvd3MpCi0gICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQot
ICAgICwgbV9uYW1lZEdyaWRBcmVhKG8ubV9uYW1lZEdyaWRBcmVhKQotICAgICwgbV9uYW1lZEdy
aWRBcmVhUm93Q291bnQoby5tX25hbWVkR3JpZEFyZWFSb3dDb3VudCkKLSAgICAsIG1fbmFtZWRH
cmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQpCi0gICAgLCBt
X2dyaWRDb2x1bW5HYXAoby5tX2dyaWRDb2x1bW5HYXApCi0gICAgLCBtX2dyaWRSb3dHYXAoby5t
X2dyaWRSb3dHYXApCi0gICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyhvLm1fZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zKQotICAgICwgbV9ncmlkQXV0b1JlcGVhdFJvd3Moby5tX2dyaWRBdXRvUmVw
ZWF0Um93cykKLSAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChvLm1fYXV0
b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkKLSAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNl
cnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCkKLSAgICAsIG1fYXV0
b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUpCi0gICAgLCBtX2F1
dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0b1JlcGVhdFJvd3NUeXBlKQorICAgICwgZ3JpZENvbHVt
bnMoby5ncmlkQ29sdW1ucykKKyAgICAsIGdyaWRSb3dzKG8uZ3JpZFJvd3MpCisgICAgLCBuYW1l
ZEdyaWRDb2x1bW5MaW5lcyhvLm5hbWVkR3JpZENvbHVtbkxpbmVzKQorICAgICwgbmFtZWRHcmlk
Um93TGluZXMoby5uYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIG9yZGVyZWROYW1lZEdyaWRDb2x1
bW5MaW5lcyhvLm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykKKyAgICAsIG9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcyhvLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIGF1dG9SZXBl
YXROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLmF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcykK
KyAgICAsIGF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLmF1dG9SZXBlYXROYW1lZEdyaWRS
b3dMaW5lcykKKyAgICAsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoby5h
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQorICAgICwgYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhvLmF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMpCisgICAgLCBncmlkQXV0b0Zsb3coby5ncmlkQXV0b0Zsb3cpCisgICAgLCBncmlkQXV0b1Jv
d3Moby5ncmlkQXV0b1Jvd3MpCisgICAgLCBncmlkQXV0b0NvbHVtbnMoby5ncmlkQXV0b0NvbHVt
bnMpCisgICAgLCBuYW1lZEdyaWRBcmVhKG8ubmFtZWRHcmlkQXJlYSkKKyAgICAsIG5hbWVkR3Jp
ZEFyZWFSb3dDb3VudChvLm5hbWVkR3JpZEFyZWFSb3dDb3VudCkKKyAgICAsIG5hbWVkR3JpZEFy
ZWFDb2x1bW5Db3VudChvLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCkKKyAgICAsIGdyaWRDb2x1
bW5HYXAoby5ncmlkQ29sdW1uR2FwKQorICAgICwgZ3JpZFJvd0dhcChvLmdyaWRSb3dHYXApCisg
ICAgLCBncmlkQXV0b1JlcGVhdENvbHVtbnMoby5ncmlkQXV0b1JlcGVhdENvbHVtbnMpCisgICAg
LCBncmlkQXV0b1JlcGVhdFJvd3Moby5ncmlkQXV0b1JlcGVhdFJvd3MpCisgICAgLCBhdXRvUmVw
ZWF0Q29sdW1uc0luc2VydGlvblBvaW50KG8uYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2lu
dCkKKyAgICAsIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoby5hdXRvUmVwZWF0Um93c0lu
c2VydGlvblBvaW50KQorICAgICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8uYXV0b1JlcGVhdENv
bHVtbnNUeXBlKQorICAgICwgYXV0b1JlcGVhdFJvd3NUeXBlKG8uYXV0b1JlcGVhdFJvd3NUeXBl
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuaAppbmRleCAxNDRlZmFiOGJjOGZhYzdmYzdjNTdmMzQzM2QzMmNjYmFhYTg5ODRjLi5iMTFm
MzBhNWM2ZjQ0ZTZjNzI0MzhjOWNmZmI5M2NkZjEyZGMxZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTQ4LDE4ICs0OCwxOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0
CiAgICAgewogICAgICAgICAvLyBGSVhNRTogY29tcGFyaW5nIHR3byBoYXNoZXMgZG9lc24ndCBs
b29rIGdyZWF0IGZvciBwZXJmb3JtYW5jZS4gU29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCBnb2lu
ZyBmb3J3YXJkLgotICAgICAgICByZXR1cm4gbV9ncmlkQ29sdW1ucyA9PSBvLm1fZ3JpZENvbHVt
bnMgJiYgbV9ncmlkUm93cyA9PSBvLm1fZ3JpZFJvd3MKLSAgICAgICAgICAgICYmIG1fZ3JpZEF1
dG9GbG93ID09IG8ubV9ncmlkQXV0b0Zsb3cgJiYgbV9ncmlkQXV0b1Jvd3MgPT0gby5tX2dyaWRB
dXRvUm93cyAmJiBtX2dyaWRBdXRvQ29sdW1ucyA9PSBvLm1fZ3JpZEF1dG9Db2x1bW5zCi0gICAg
ICAgICAgICAmJiBtX25hbWVkR3JpZENvbHVtbkxpbmVzID09IG8ubV9uYW1lZEdyaWRDb2x1bW5M
aW5lcyAmJiBtX25hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9uYW1lZEdyaWRSb3dMaW5lcwotICAg
ICAgICAgICAgJiYgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX2F1dG9S
ZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5l
cyA9PSBvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzCi0gICAgICAgICAgICAmJiBtX2F1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX2F1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgJiYgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzID09IG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzCi0gICAgICAg
ICAgICAmJiBtX25hbWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEgJiYgbV9uYW1lZEdy
aWRBcmVhID09IG8ubV9uYW1lZEdyaWRBcmVhCi0gICAgICAgICAgICAmJiBtX25hbWVkR3JpZEFy
ZWFSb3dDb3VudCA9PSBvLm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50ICYmIG1fbmFtZWRHcmlkQXJl
YUNvbHVtbkNvdW50ID09IG8ubV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQKLSAgICAgICAgICAg
ICYmIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9vcmRlcmVkTmFtZWRHcmlkUm93
TGluZXMgJiYgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX29yZGVyZWROYW1l
ZEdyaWRDb2x1bW5MaW5lcwotICAgICAgICAgICAgJiYgbV9ncmlkQ29sdW1uR2FwID09IG8ubV9n
cmlkQ29sdW1uR2FwICYmIG1fZ3JpZFJvd0dhcCA9PSBvLm1fZ3JpZFJvd0dhcAotICAgICAgICAg
ICAgJiYgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMgPT0gby5tX2dyaWRBdXRvUmVwZWF0Q29sdW1u
cyAmJiBtX2dyaWRBdXRvUmVwZWF0Um93cyA9PSBvLm1fZ3JpZEF1dG9SZXBlYXRSb3dzCi0gICAg
ICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5tX2F1dG9S
ZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgJiYgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBv
aW50ID09IG8ubV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50Ci0gICAgICAgICAgICAmJiBt
X2F1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIG1f
YXV0b1JlcGVhdFJvd3NUeXBlID09IG8ubV9hdXRvUmVwZWF0Um93c1R5cGU7CisgICAgICAgIHJl
dHVybiBncmlkQ29sdW1ucyA9PSBvLmdyaWRDb2x1bW5zICYmIGdyaWRSb3dzID09IG8uZ3JpZFJv
d3MKKyAgICAgICAgICAgICYmIGdyaWRBdXRvRmxvdyA9PSBvLmdyaWRBdXRvRmxvdyAmJiBncmlk
QXV0b1Jvd3MgPT0gby5ncmlkQXV0b1Jvd3MgJiYgZ3JpZEF1dG9Db2x1bW5zID09IG8uZ3JpZEF1
dG9Db2x1bW5zCisgICAgICAgICAgICAmJiBuYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm5hbWVk
R3JpZENvbHVtbkxpbmVzICYmIG5hbWVkR3JpZFJvd0xpbmVzID09IG8ubmFtZWRHcmlkUm93TGlu
ZXMKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLmF1
dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBhdXRvUmVwZWF0TmFtZWRHcmlkUm93TGlu
ZXMgPT0gby5hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIGF1dG9S
ZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5hdXRvUmVwZWF0T3JkZXJlZE5h
bWVkR3JpZENvbHVtbkxpbmVzICYmIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMg
PT0gby5hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzCisgICAgICAgICAgICAmJiBu
YW1lZEdyaWRBcmVhID09IG8ubmFtZWRHcmlkQXJlYSAmJiBuYW1lZEdyaWRBcmVhID09IG8ubmFt
ZWRHcmlkQXJlYQorICAgICAgICAgICAgJiYgbmFtZWRHcmlkQXJlYVJvd0NvdW50ID09IG8ubmFt
ZWRHcmlkQXJlYVJvd0NvdW50ICYmIG5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCA9PSBvLm5hbWVk
R3JpZEFyZWFDb2x1bW5Db3VudAorICAgICAgICAgICAgJiYgb3JkZXJlZE5hbWVkR3JpZFJvd0xp
bmVzID09IG8ub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzICYmIG9yZGVyZWROYW1lZEdyaWRDb2x1
bW5MaW5lcyA9PSBvLm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcworICAgICAgICAgICAgJiYg
Z3JpZENvbHVtbkdhcCA9PSBvLmdyaWRDb2x1bW5HYXAgJiYgZ3JpZFJvd0dhcCA9PSBvLmdyaWRS
b3dHYXAKKyAgICAgICAgICAgICYmIGdyaWRBdXRvUmVwZWF0Q29sdW1ucyA9PSBvLmdyaWRBdXRv
UmVwZWF0Q29sdW1ucyAmJiBncmlkQXV0b1JlcGVhdFJvd3MgPT0gby5ncmlkQXV0b1JlcGVhdFJv
d3MKKyAgICAgICAgICAgICYmIGF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5h
dXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50ICYmIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9u
UG9pbnQgPT0gby5hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50CisgICAgICAgICAgICAmJiBh
dXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5hdXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1Jl
cGVhdFJvd3NUeXBlID09IG8uYXV0b1JlcGVhdFJvd3NUeXBlOwogICAgIH0KIAogICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBjb25zdApAQCAtNjcsNDMgKzY3LDQy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQogCi0gICAg
Ly8gRklYTUU6IFVwZGF0ZSB0aGUgbmFtaW5nIG9mIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzLgot
ICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRDb2x1bW5zOwotICAgIFZlY3RvcjxHcmlk
VHJhY2tTaXplPiBtX2dyaWRSb3dzOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQ29s
dW1uczsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZFJvd3M7CiAKLSAgICBOYW1lZEdy
aWRMaW5lc01hcCBtX25hbWVkR3JpZENvbHVtbkxpbmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFw
IG1fbmFtZWRHcmlkUm93TGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkQ29s
dW1uTGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkUm93TGluZXM7CiAKLSAg
ICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7
Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
OworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
czsKIAotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxp
bmVzOwotICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVz
OwotICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVw
ZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgTmFtZWRHcmlkTGluZXNNYXAgYXV0b1JlcGVh
dE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5l
c01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzOwogCi0gICAgdW5zaWduZWQg
bV9ncmlkQXV0b0Zsb3cgOiBHcmlkQXV0b0Zsb3dCaXRzOworICAgIHVuc2lnbmVkIGdyaWRBdXRv
RmxvdyA6IEdyaWRBdXRvRmxvd0JpdHM7CiAKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9n
cmlkQXV0b1Jvd3M7Ci0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fZ3JpZEF1dG9Db2x1bW5z
OworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQXV0b1Jvd3M7CisgICAgVmVjdG9yPEdy
aWRUcmFja1NpemU+IGdyaWRBdXRvQ29sdW1uczsKIAotICAgIE5hbWVkR3JpZEFyZWFNYXAgbV9u
YW1lZEdyaWRBcmVhOwotICAgIC8vIEJlY2F1c2UgbV9uYW1lZEdyaWRBcmVhIGRvZXNuJ3Qgc3Rv
cmUgdGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBrZWVwIHRyYWNrCisgICAgTmFt
ZWRHcmlkQXJlYU1hcCBuYW1lZEdyaWRBcmVhOworICAgIC8vIEJlY2F1c2UgbmFtZWRHcmlkQXJl
YSBkb2Vzbid0IHN0b3JlIHRoZSB1bm5hbWVkIGdyaWQgYXJlYXMsIHdlIG5lZWQgdG8ga2VlcCB0
cmFjawogICAgIC8vIG9mIHRoZSBleHBsaWNpdCBncmlkIHNpemUgZGVmaW5lZCBieSBib3RoIG5h
bWVkIGFuZCB1bm5hbWVkIGdyaWQgYXJlYXMuCi0gICAgdW5zaWduZWQgbV9uYW1lZEdyaWRBcmVh
Um93Q291bnQ7Ci0gICAgdW5zaWduZWQgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7CisgICAg
dW5zaWduZWQgbmFtZWRHcmlkQXJlYVJvd0NvdW50OworICAgIHVuc2lnbmVkIG5hbWVkR3JpZEFy
ZWFDb2x1bW5Db3VudDsKIAotICAgIExlbmd0aCBtX2dyaWRDb2x1bW5HYXA7Ci0gICAgTGVuZ3Ro
IG1fZ3JpZFJvd0dhcDsKKyAgICBMZW5ndGggZ3JpZENvbHVtbkdhcDsKKyAgICBMZW5ndGggZ3Jp
ZFJvd0dhcDsKIAotICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRBdXRvUmVwZWF0Q29s
dW1uczsKLSAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQXV0b1JlcGVhdFJvd3M7Cisg
ICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRBdXRvUmVwZWF0Q29sdW1uczsKKyAgICBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZEF1dG9SZXBlYXRSb3dzOwogCi0gICAgdW5zaWduZWQgbV9h
dXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OwotICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVh
dFJvd3NJbnNlcnRpb25Qb2ludDsKKyAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1uc0luc2Vy
dGlvblBvaW50OworICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7CiAK
LSAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZTsKLSAgICBBdXRvUmVw
ZWF0VHlwZSBtX2F1dG9SZXBlYXRSb3dzVHlwZTsKKyAgICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVw
ZWF0Q29sdW1uc1R5cGU7CisgICAgQXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFJvd3NUeXBlOwog
CiBwcml2YXRlOgogICAgIFN0eWxlR3JpZERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwCmluZGV4IDEwMmJlOTA4ZDc2
Y2RkNmZmYTE3MmQ0YTJhMmEyMjZkZTViM2I1Y2QuLmMyZGI4ZTc0ODI1YjIwMWU0MTc0NDcxZGZk
MjE0NTY2MzY3NDdlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcApAQCAtMjcsNiArMjcsNyBAQAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTdHlsZUdyaWRJdGVtRGF0YS5oIgogCkBAIC0zNywxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3R5bGVHcmlkSXRlbURhdGE6OlN0eWxlR3JpZEl0ZW1EYXRhKCkKLSAgICA6
IG1fZ3JpZENvbHVtblN0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1Db2x1bW5TdGFy
dCgpKQotICAgICwgbV9ncmlkQ29sdW1uRW5kKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEl0ZW1D
b2x1bW5FbmQoKSkKLSAgICAsIG1fZ3JpZFJvd1N0YXJ0KFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEl0ZW1Sb3dTdGFydCgpKQotICAgICwgbV9ncmlkUm93RW5kKFJlbmRlclN0eWxlOjppbml0aWFs
R3JpZEl0ZW1Sb3dFbmQoKSkKKyAgICA6IGdyaWRDb2x1bW5TdGFydChSZW5kZXJTdHlsZTo6aW5p
dGlhbEdyaWRJdGVtQ29sdW1uU3RhcnQoKSkKKyAgICAsIGdyaWRDb2x1bW5FbmQoUmVuZGVyU3R5
bGU6OmluaXRpYWxHcmlkSXRlbUNvbHVtbkVuZCgpKQorICAgICwgZ3JpZFJvd1N0YXJ0KFJlbmRl
clN0eWxlOjppbml0aWFsR3JpZEl0ZW1Sb3dTdGFydCgpKQorICAgICwgZ3JpZFJvd0VuZChSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRJdGVtUm93RW5kKCkpCiB7CiB9CiAKIGlubGluZSBTdHlsZUdy
aWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEoY29uc3QgU3R5bGVHcmlkSXRlbURhdGEmIG8p
CiAgICAgOiBSZWZDb3VudGVkPFN0eWxlR3JpZEl0ZW1EYXRhPigpCi0gICAgLCBtX2dyaWRDb2x1
bW5TdGFydChvLm1fZ3JpZENvbHVtblN0YXJ0KQotICAgICwgbV9ncmlkQ29sdW1uRW5kKG8ubV9n
cmlkQ29sdW1uRW5kKQotICAgICwgbV9ncmlkUm93U3RhcnQoby5tX2dyaWRSb3dTdGFydCkKLSAg
ICAsIG1fZ3JpZFJvd0VuZChvLm1fZ3JpZFJvd0VuZCkKKyAgICAsIGdyaWRDb2x1bW5TdGFydChv
LmdyaWRDb2x1bW5TdGFydCkKKyAgICAsIGdyaWRDb2x1bW5FbmQoby5ncmlkQ29sdW1uRW5kKQor
ICAgICwgZ3JpZFJvd1N0YXJ0KG8uZ3JpZFJvd1N0YXJ0KQorICAgICwgZ3JpZFJvd0VuZChvLmdy
aWRSb3dFbmQpCiB7CiB9CiAKQEAgLTYwLDQgKzYxLDQgQEAgUmVmPFN0eWxlR3JpZEl0ZW1EYXRh
PiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSgpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICovCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKaW5k
ZXggOGIyOGQ5NGI0MWIyOWIwMDIxNGNkYzY0ZWJmMTYxNzQwN2FlMGRkNi4uODBjODRmYzczMWUy
ZmNiZmZkZmY1MDgzZTIzY2MyMGExNGU4NGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3JpZENvbHVtblN0YXJ0ID09IG8ubV9ncmlk
Q29sdW1uU3RhcnQgJiYgbV9ncmlkQ29sdW1uRW5kID09IG8ubV9ncmlkQ29sdW1uRW5kCi0gICAg
ICAgICAgICAmJiBtX2dyaWRSb3dTdGFydCA9PSBvLm1fZ3JpZFJvd1N0YXJ0ICYmIG1fZ3JpZFJv
d0VuZCA9PSBvLm1fZ3JpZFJvd0VuZDsKKyAgICAgICAgcmV0dXJuIGdyaWRDb2x1bW5TdGFydCA9
PSBvLmdyaWRDb2x1bW5TdGFydCAmJiBncmlkQ29sdW1uRW5kID09IG8uZ3JpZENvbHVtbkVuZAor
ICAgICAgICAgICAgJiYgZ3JpZFJvd1N0YXJ0ID09IG8uZ3JpZFJvd1N0YXJ0ICYmIGdyaWRSb3dF
bmQgPT0gby5ncmlkUm93RW5kOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZUdyaWRJdGVtRGF0YSYgbykgY29uc3QKQEAgLTU0LDEwICs1NCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KIAotICAgIEdyaWRQb3NpdGlvbiBt
X2dyaWRDb2x1bW5TdGFydDsKLSAgICBHcmlkUG9zaXRpb24gbV9ncmlkQ29sdW1uRW5kOwotICAg
IEdyaWRQb3NpdGlvbiBtX2dyaWRSb3dTdGFydDsKLSAgICBHcmlkUG9zaXRpb24gbV9ncmlkUm93
RW5kOworICAgIEdyaWRQb3NpdGlvbiBncmlkQ29sdW1uU3RhcnQ7CisgICAgR3JpZFBvc2l0aW9u
IGdyaWRDb2x1bW5FbmQ7CisgICAgR3JpZFBvc2l0aW9uIGdyaWRSb3dTdGFydDsKKyAgICBHcmlk
UG9zaXRpb24gZ3JpZFJvd0VuZDsKIAogcHJpdmF0ZToKICAgICBTdHlsZUdyaWRJdGVtRGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJp
dGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0
ZWREYXRhLmNwcAppbmRleCA2MzM5ZjZkZGViMTdjOTc1YTE3ODhhYjFjOGRhNDMyNmVmMWU4NTkx
Li5hNWUzNTdlZTkzMTIzZjEyZDc0MjZmMDczMDA2NzVhMTIxZmFiNTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcApA
QCAtMjcsOSArMjcsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUluaGVyaXRlZERh
dGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCi0gICAgOiBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
KFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSkKLSAgICAsIHZl
cnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJT
cGFjaW5nKCkpCi0gICAgLCBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWln
aHQoKSkKKyAgICA6IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFs
SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSkKKyAgICAsIHZlcnRpY2FsQm9yZGVyU3BhY2luZyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKQorICAgICwgbGluZUhl
aWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKICNpZiBFTkFCTEUoVEVYVF9B
VVRPU0laSU5HKQogICAgICwgc3BlY2lmaWVkTGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSkKICNlbmRpZgpAQCAtMzgsMTUgKzM4LDExIEBAIFN0eWxlSW5oZXJpdGVk
RGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKIHsKIH0KIAotU3R5bGVJbmhlcml0ZWREYXRhOjp+
U3R5bGVJbmhlcml0ZWREYXRhKCkKLXsKLX0KLQogaW5saW5lIFN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJl
ZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPigpCi0gICAgLCBob3Jpem9udGFsX2JvcmRlcl9z
cGFjaW5nKG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykKLSAgICAsIHZlcnRpY2FsX2JvcmRl
cl9zcGFjaW5nKG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmcpCi0gICAgLCBsaW5lX2hlaWdodChv
LmxpbmVfaGVpZ2h0KQorICAgICwgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoby5ob3Jpem9udGFs
Qm9yZGVyU3BhY2luZykKKyAgICAsIHZlcnRpY2FsQm9yZGVyU3BhY2luZyhvLnZlcnRpY2FsQm9y
ZGVyU3BhY2luZykKKyAgICAsIGxpbmVIZWlnaHQoby5saW5lSGVpZ2h0KQogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCiAgICAgLCBzcGVjaWZpZWRMaW5lSGVpZ2h0KG8uc3BlY2lmaWVkTGlu
ZUhlaWdodCkKICNlbmRpZgpAQCAtNjMsMTUgKzU5LDE1IEBAIFJlZjxTdHlsZUluaGVyaXRlZERh
dGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CiAKIGJvb2wgU3R5bGVJbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsK
LSAgICByZXR1cm4gbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdodAorICAgIHJldHVybiBsaW5l
SGVpZ2h0ID09IG8ubGluZUhlaWdodAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
ICAgICYmIHNwZWNpZmllZExpbmVIZWlnaHQgPT0gby5zcGVjaWZpZWRMaW5lSGVpZ2h0CiAjZW5k
aWYKICAgICAgICAgJiYgZm9udENhc2NhZGUgPT0gby5mb250Q2FzY2FkZQogICAgICAgICAmJiBj
b2xvciA9PSBvLmNvbG9yCiAgICAgICAgICYmIHZpc2l0ZWRMaW5rQ29sb3IgPT0gby52aXNpdGVk
TGlua0NvbG9yCi0gICAgICAgICYmIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gby5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgICYmIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5n
ID09IG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAgICAgICYmIGhvcml6b250YWxCb3Jk
ZXJTcGFjaW5nID09IG8uaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcKKyAgICAgICAgJiYgdmVydGlj
YWxCb3JkZXJTcGFjaW5nID09IG8udmVydGljYWxCb3JkZXJTcGFjaW5nOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbmhlcml0ZWREYXRhLmgKaW5kZXggMjliZmNiNDQzYTBkZTA4MDlmNDRlY2E0ZGYxM2Rj
MjI2ZjcyYTgyOC4uZDY1NTU4MzVhYzhlMDkzMDUwNjA1NWRmYzhiMTlhMjg4OTI4MDE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERh
dGEuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0yNyw5ICsyNyw2IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGb250Q2FzY2Fk
ZS5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNywyMCArMzQsMTQgQEAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQogICAgIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+
IGNvcHkoKSBjb25zdDsKLSAgICB+U3R5bGVJbmhlcml0ZWREYXRhKCk7CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZUluaGVyaXRlZERhdGEmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U3R5bGVJbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KIAotICAgIGZsb2F0IGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmc7Ci0gICAgZmxvYXQg
dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNwYWNp
bmc7CisgICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nOwogCi0gICAgLy8gY291bGQgYmUg
cGFja2VkIGluIGEgc2hvcnQgYnV0IGRvZXNuJ3QKLSAgICAvLyBtYWtlIGEgZGlmZmVyZW5jZSBj
dXJyZW50bHkgYmVjYXVzZSBvZiBwYWRkaW5nCi0gICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OworICAg
IExlbmd0aCBsaW5lSGVpZ2h0OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgTGVu
Z3RoIHNwZWNpZmllZExpbmVIZWlnaHQ7CiAjZW5kaWYKQEAgLTYyLDYgKzUzLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTdHlsZUluaGVyaXRlZERhdGEoKTsKICAgICBTdHlsZUluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgU3R5bGVJbmhlcml0ZWREYXRhJikgPSBkZWxldGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUNvbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVs
dGlDb2xEYXRhLmNwcAppbmRleCA1YzkwZTIwYTE4MGQyYWFkNmE0Zjk3OTBkMGQ0YWJlNzU0Zjc2
NDc0Li5iN2U3OTRmODRiMzk3Y2ZkOGI2YTQ5YWFmZTFmN2ZiOThiNzc5MjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjcsMzMgKzI3LDMxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxl
TXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YSgpCi0gICAgOiBtX3dpZHRoKDApCi0gICAg
LCBtX2NvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSkKLSAgICAsIG1fZ2Fw
KDApCi0gICAgLCBtX2F1dG9XaWR0aCh0cnVlKQotICAgICwgbV9hdXRvQ291bnQodHJ1ZSkKLSAg
ICAsIG1fbm9ybWFsR2FwKHRydWUpCi0gICAgLCBtX2ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2x1bW5GaWxsKCkpCi0gICAgLCBtX2NvbHVtblNwYW4oZmFsc2UpCi0gICAgLCBtX2F4aXMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpCi0gICAgLCBtX3Byb2dyZXNzaW9uKFJlbmRl
clN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSkKKyAgICA6IGNvdW50KFJlbmRlclN0
eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSkKKyAgICAsIGF1dG9XaWR0aCh0cnVlKQorICAgICwg
YXV0b0NvdW50KHRydWUpCisgICAgLCBub3JtYWxHYXAodHJ1ZSkKKyAgICAsIGZpbGwoUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCisgICAgLCBjb2x1bW5TcGFuKGZhbHNlKQorICAg
ICwgYXhpcyhSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkF4aXMoKSkKKyAgICAsIHByb2dyZXNz
aW9uKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSkKIHsKIH0KIAotaW5s
aW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YShjb25zdCBTdHlsZU11bHRp
Q29sRGF0YSYgbykKK2lubGluZSBTdHlsZU11bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEo
Y29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZU11
bHRpQ29sRGF0YT4oKQotICAgICwgbV93aWR0aChvLm1fd2lkdGgpCi0gICAgLCBtX2NvdW50KG8u
bV9jb3VudCkKLSAgICAsIG1fZ2FwKG8ubV9nYXApCi0gICAgLCBtX3J1bGUoby5tX3J1bGUpCi0g
ICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKG8ubV92aXNpdGVkTGlua0NvbHVtblJ1
bGVDb2xvcikKLSAgICAsIG1fYXV0b1dpZHRoKG8ubV9hdXRvV2lkdGgpCi0gICAgLCBtX2F1dG9D
b3VudChvLm1fYXV0b0NvdW50KQotICAgICwgbV9ub3JtYWxHYXAoby5tX25vcm1hbEdhcCkKLSAg
ICAsIG1fZmlsbChvLm1fZmlsbCkKLSAgICAsIG1fY29sdW1uU3BhbihvLm1fY29sdW1uU3BhbikK
LSAgICAsIG1fYXhpcyhvLm1fYXhpcykKLSAgICAsIG1fcHJvZ3Jlc3Npb24oby5tX3Byb2dyZXNz
aW9uKQorICAgICwgd2lkdGgob3RoZXIud2lkdGgpCisgICAgLCBjb3VudChvdGhlci5jb3VudCkK
KyAgICAsIGdhcChvdGhlci5nYXApCisgICAgLCBydWxlKG90aGVyLnJ1bGUpCisgICAgLCB2aXNp
dGVkTGlua0NvbHVtblJ1bGVDb2xvcihvdGhlci52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikK
KyAgICAsIGF1dG9XaWR0aChvdGhlci5hdXRvV2lkdGgpCisgICAgLCBhdXRvQ291bnQob3RoZXIu
YXV0b0NvdW50KQorICAgICwgbm9ybWFsR2FwKG90aGVyLm5vcm1hbEdhcCkKKyAgICAsIGZpbGwo
b3RoZXIuZmlsbCkKKyAgICAsIGNvbHVtblNwYW4ob3RoZXIuY29sdW1uU3BhbikKKyAgICAsIGF4
aXMob3RoZXIuYXhpcykKKyAgICAsIHByb2dyZXNzaW9uKG90aGVyLnByb2dyZXNzaW9uKQogewog
fQogCkBAIC02MiwxMyArNjAsMTMgQEAgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBTdHlsZU11bHRp
Q29sRGF0YTo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNdWx0
aUNvbERhdGEoKnRoaXMpKTsKIH0KIAotYm9vbCBTdHlsZU11bHRpQ29sRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVNdWx0aUNvbERh
dGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG90aGVyKSBjb25zdAogewot
ICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX2NvdW50ID09IG8ubV9jb3VudCAm
JiBtX2dhcCA9PSBvLm1fZ2FwCi0gICAgICAgICYmIG1fcnVsZSA9PSBvLm1fcnVsZSAmJiBtX3Zp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID09IG8ubV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xv
cgotICAgICAgICAmJiBtX2F1dG9XaWR0aCA9PSBvLm1fYXV0b1dpZHRoICYmIG1fYXV0b0NvdW50
ID09IG8ubV9hdXRvQ291bnQgJiYgbV9ub3JtYWxHYXAgPT0gby5tX25vcm1hbEdhcAotICAgICAg
ICAmJiBtX2ZpbGwgPT0gby5tX2ZpbGwgJiYgbV9jb2x1bW5TcGFuID09IG8ubV9jb2x1bW5TcGFu
Ci0gICAgICAgICYmIG1fYXhpcyA9PSBvLm1fYXhpcyAmJiBtX3Byb2dyZXNzaW9uID09IG8ubV9w
cm9ncmVzc2lvbjsKKyAgICByZXR1cm4gd2lkdGggPT0gb3RoZXIud2lkdGggJiYgY291bnQgPT0g
b3RoZXIuY291bnQgJiYgZ2FwID09IG90aGVyLmdhcAorICAgICAgICAmJiBydWxlID09IG90aGVy
LnJ1bGUgJiYgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPT0gb3RoZXIudmlzaXRlZExpbmtD
b2x1bW5SdWxlQ29sb3IKKyAgICAgICAgJiYgYXV0b1dpZHRoID09IG90aGVyLmF1dG9XaWR0aCAm
JiBhdXRvQ291bnQgPT0gb3RoZXIuYXV0b0NvdW50ICYmIG5vcm1hbEdhcCA9PSBvdGhlci5ub3Jt
YWxHYXAKKyAgICAgICAgJiYgZmlsbCA9PSBvdGhlci5maWxsICYmIGNvbHVtblNwYW4gPT0gb3Ro
ZXIuY29sdW1uU3BhbgorICAgICAgICAmJiBheGlzID09IG90aGVyLmF4aXMgJiYgcHJvZ3Jlc3Np
b24gPT0gb3RoZXIucHJvZ3Jlc3Npb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgK
aW5kZXggMjkzNGY5ODU1NjdlN2QxMTEzM2E0YzZkZTUzZmUxYTU4ZDQ1MzI3MC4uNWJkZjgxZDUx
N2I5MGQxOTY4Y2QyMmQzNzYxNzdjMjdiYmQ2OTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFt
LmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgsMzIgKzM4LDI5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlDb2xEYXRhKTsgfQogICAgIFJlZjxTdHlsZU11bHRpQ29s
RGF0YT4gY29weSgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZU11bHRpQ29sRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxl
TXVsdGlDb2xEYXRhICZvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
byk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICB1bnNpZ25lZCBz
aG9ydCBydWxlV2lkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fcnVsZS5zdHlsZSgp
ID09IEJOT05FIHx8IG1fcnVsZS5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIGlmIChydWxl
LnN0eWxlKCkgPT0gQk5PTkUgfHwgcnVsZS5zdHlsZSgpID09IEJISURERU4pCiAgICAgICAgICAg
ICByZXR1cm4gMDsgCi0gICAgICAgIHJldHVybiBtX3J1bGUud2lkdGgoKTsKKyAgICAgICAgcmV0
dXJuIHJ1bGUud2lkdGgoKTsKICAgICB9CiAKLSAgICBmbG9hdCBtX3dpZHRoOwotICAgIHVuc2ln
bmVkIHNob3J0IG1fY291bnQ7Ci0gICAgZmxvYXQgbV9nYXA7Ci0gICAgQm9yZGVyVmFsdWUgbV9y
dWxlOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CisgICAgZmxvYXQg
d2lkdGggeyAwIH07CisgICAgdW5zaWduZWQgc2hvcnQgY291bnQ7CisgICAgZmxvYXQgZ2FwIHsg
MCB9OworICAgIEJvcmRlclZhbHVlIHJ1bGU7CisgICAgQ29sb3IgdmlzaXRlZExpbmtDb2x1bW5S
dWxlQ29sb3I7CiAKLSAgICBib29sIG1fYXV0b1dpZHRoIDogMTsKLSAgICBib29sIG1fYXV0b0Nv
dW50IDogMTsKLSAgICBib29sIG1fbm9ybWFsR2FwIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZpbGwg
OiAxOyAvLyBDb2x1bW5GaWxsCi0gICAgdW5zaWduZWQgbV9jb2x1bW5TcGFuIDogMTsKLSAgICB1
bnNpZ25lZCBtX2F4aXMgOiAyOyAvLyBDb2x1bW5BeGlzCi0gICAgdW5zaWduZWQgbV9wcm9ncmVz
c2lvbiA6IDI7IC8vIENvbHVtblByb2dyZXNzaW9uCisgICAgYm9vbCBhdXRvV2lkdGggOiAxOwor
ICAgIGJvb2wgYXV0b0NvdW50IDogMTsKKyAgICBib29sIG5vcm1hbEdhcCA6IDE7CisgICAgdW5z
aWduZWQgZmlsbCA6IDE7IC8vIENvbHVtbkZpbGwKKyAgICB1bnNpZ25lZCBjb2x1bW5TcGFuIDog
MTsKKyAgICB1bnNpZ25lZCBheGlzIDogMjsgLy8gQ29sdW1uQXhpcworICAgIHVuc2lnbmVkIHBy
b2dyZXNzaW9uIDogMjsgLy8gQ29sdW1uUHJvZ3Jlc3Npb24KIAogcHJpdmF0ZToKICAgICBTdHls
ZU11bHRpQ29sRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGZhMjlhZjBkY2U3MTYwYjk1
OGEzNTdjZGQyODg3NzgxYWI5N2ZkZjcuLmZjNjA1ZDQ4ZmNjODU5MDU4MzkwZGYzOTgyYjViZGIw
NTk4OGI1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IEdy
ZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQdHJzWzJdOwogICAgIExlbmd0aCBsZW5ndGhz
WzJdOwogICAgIGZsb2F0IHNlY29uZEZsb2F0OwotICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzRd
OworICAgIHVuc2lnbmVkIGJpdGZpZWxkc1s0XTsKICAgICBzaG9ydCBwYWdlZE1lZGlhU2hvcnRz
WzJdOwogICAgIHVuc2lnbmVkIHVuc2lnbmVkc1sxXTsKICAgICBzaG9ydCBoeXBoZW5hdGlvblNo
b3J0c1szXTsKQEAgLTczLDEyICs3MywxMiBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICA6IGxpc3RTdHlsZUltYWdlKFJlbmRlclN0eWxlOjpp
bml0aWFsTGlzdFN0eWxlSW1hZ2UoKSkKICAgICAsIHRleHRTdHJva2VXaWR0aChSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0aCgpKQogICAgICwgaW5kZW50KFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dEluZGVudCgpKQotICAgICwgbV9lZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKQotICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhOjpjcmVhdGUoKSkKKyAgICAsIGVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRp
YWxab29tKCkpCisgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
OjpjcmVhdGUoKSkKICAgICAsIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKQog
ICAgICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSkKLSAgICAsIG1faGFz
QXV0b1dpZG93cyh0cnVlKQotICAgICwgbV9oYXNBdXRvT3JwaGFucyh0cnVlKQorICAgICwgaGFz
QXV0b1dpZG93cyh0cnVlKQorICAgICwgaGFzQXV0b09ycGhhbnModHJ1ZSkKICAgICAsIHRleHRT
ZWN1cml0eShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTZWN1cml0eSgpKQogICAgICwgdXNlck1v
ZGlmeShSRUFEX09OTFkpCiAgICAgLCB3b3JkQnJlYWsoUmVuZGVyU3R5bGU6OmluaXRpYWxXb3Jk
QnJlYWsoKSkKQEAgLTkxLDUwICs5MSw1MCBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICAsIHRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lz
RmlsbEZpbGxlZCkKICAgICAsIHRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya05vbmUp
CiAgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBU
ZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KQotICAgICwgbV90ZXh0T3JpZW50YXRpb24oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQpKQorICAgICwgdGV4dE9yaWVu
dGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0T3JpZW50YXRpb246Ok1peGVkKSkKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICwgbV90ZXh0SW5kZW50TGluZShSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCi0gICAgLCBtX3RleHRJbmRlbnRUeXBlKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEluZGVudFR5cGUoKSkKKyAgICAsIHRleHRJbmRlbnRMaW5lKFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dEluZGVudExpbmUoKSkKKyAgICAsIHRleHRJbmRlbnRUeXBlKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudFR5cGUoKSkKICNlbmRpZgotICAgICwgbV9saW5l
Qm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVCb3hDb250YWluKCkpCisgICAgLCBs
aW5lQm94Q29udGFpbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVCb3hDb250YWluKCkpCiAjaWYg
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSkKKyAgICAsIGltYWdlT3JpZW50
YXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkpCiAjZW5kaWYKLSAg
ICAsIG1faW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygp
KQotICAgICwgbV9saW5lU25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCi0gICAg
LCBtX2xpbmVBbGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigpKQorICAgICwgaW1h
Z2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKQorICAgICwg
bGluZVNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCgpKQorICAgICwgbGluZUFsaWdu
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWduKCkpCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykKICAgICAsIHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoUmVu
ZGVyU3R5bGU6OmluaXRpYWxVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkpCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNv
dXJjZShSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpKQotICAgICwg
bV9pbWFnZVJlc29sdXRpb25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9u
U25hcCgpKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU291cmNlKFJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCisgICAgLCBpbWFnZVJlc29sdXRpb25TbmFwKFJlbmRl
clN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKLSAgICAsIG1fdGV4dEFsaWduTGFzdChSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRBbGlnbkxhc3QoKSkKLSAgICAsIG1fdGV4dEp1c3RpZnkoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0SnVzdGlmeSgpKQotI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICwgbV90ZXh0RGVjb3JhdGlv
blNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSkKLSAgICAsIG1f
dGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFVuZGVybGluZVBv
c2l0aW9uKCkpCi0gICAgLCBtX3J1YnlQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQ
b3NpdGlvbigpKQotICAgICwgbV90ZXh0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29t
KCkpCisgICAgLCB0ZXh0QWxpZ25MYXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduTGFz
dCgpKQorICAgICwgdGV4dEp1c3RpZnkoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgp
KQorI2VuZGlmCisgICAgLCB0ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0RGVjb3JhdGlvblNraXAoKSkKKyAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpKQorICAgICwgcnVieVBvc2l0aW9u
KFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpCisgICAgLCB0ZXh0Wm9vbShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgdG91
Y2hDYWxsb3V0RW5hYmxlZChSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQo
KSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWlsaW5n
V29yZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFpbGluZ1dv
cmQoKSkpCiAjZW5kaWYKLSAgICAsIG1faGFuZ2luZ1B1bmN0dWF0aW9uKFJlbmRlclN0eWxlOjpp
bml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCkpCisgICAgLCBoYW5naW5nUHVuY3R1YXRpb24oUmVu
ZGVyU3R5bGU6OmluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSkKICAgICAsIGh5cGhlbmF0aW9u
TGltaXRCZWZvcmUoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoLTEpCiAgICAgLCBo
eXBoZW5hdGlvbkxpbWl0TGluZXMoLTEpCi0gICAgLCBtX2xpbmVHcmlkKFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUdyaWQoKSkKLSAgICAsIG1fdGFiU2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRh
YlNpemUoKSkKKyAgICAsIGxpbmVHcmlkKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSkK
KyAgICAsIHRhYlNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJTaXplKCkpCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKICAgICAsIHRleHRTaXplQWRqdXN0KFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dFNpemVBZGp1c3QoKSkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xV
VElPTikKLSAgICAsIG1faW1hZ2VSZXNvbHV0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VS
ZXNvbHV0aW9uKCkpCisgICAgLCBpbWFnZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJ
bWFnZVJlc29sdXRpb24oKSkKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
LCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9y
KCkpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwg
dGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpv
LnRleHRTaGFkb3cpIDogbnVsbHB0cikKICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQog
ICAgICwgaW5kZW50KG8uaW5kZW50KQotICAgICwgbV9lZmZlY3RpdmVab29tKG8ubV9lZmZlY3Rp
dmVab29tKQotICAgICwgbV9jdXN0b21Qcm9wZXJ0aWVzKG8ubV9jdXN0b21Qcm9wZXJ0aWVzKQor
ICAgICwgZWZmZWN0aXZlWm9vbShvLmVmZmVjdGl2ZVpvb20pCisgICAgLCBjdXN0b21Qcm9wZXJ0
aWVzKG8uY3VzdG9tUHJvcGVydGllcykKICAgICAsIHdpZG93cyhvLndpZG93cykKICAgICAsIG9y
cGhhbnMoby5vcnBoYW5zKQotICAgICwgbV9oYXNBdXRvV2lkb3dzKG8ubV9oYXNBdXRvV2lkb3dz
KQotICAgICwgbV9oYXNBdXRvT3JwaGFucyhvLm1faGFzQXV0b09ycGhhbnMpCisgICAgLCBoYXNB
dXRvV2lkb3dzKG8uaGFzQXV0b1dpZG93cykKKyAgICAsIGhhc0F1dG9PcnBoYW5zKG8uaGFzQXV0
b09ycGhhbnMpCiAgICAgLCB0ZXh0U2VjdXJpdHkoby50ZXh0U2VjdXJpdHkpCiAgICAgLCB1c2Vy
TW9kaWZ5KG8udXNlck1vZGlmeSkKICAgICAsIHdvcmRCcmVhayhvLndvcmRCcmVhaykKQEAgLTE3
Myw1MiArMTczLDUyIEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB0ZXh0RW1waGFz
aXNGaWxsKG8udGV4dEVtcGhhc2lzRmlsbCkKICAgICAsIHRleHRFbXBoYXNpc01hcmsoby50ZXh0
RW1waGFzaXNNYXJrKQogICAgICwgdGV4dEVtcGhhc2lzUG9zaXRpb24oby50ZXh0RW1waGFzaXNQ
b3NpdGlvbikKLSAgICAsIG1fdGV4dE9yaWVudGF0aW9uKG8ubV90ZXh0T3JpZW50YXRpb24pCisg
ICAgLCB0ZXh0T3JpZW50YXRpb24oby50ZXh0T3JpZW50YXRpb24pCiAjaWYgRU5BQkxFKENTUzNf
VEVYVCkKLSAgICAsIG1fdGV4dEluZGVudExpbmUoby5tX3RleHRJbmRlbnRMaW5lKQotICAgICwg
bV90ZXh0SW5kZW50VHlwZShvLm1fdGV4dEluZGVudFR5cGUpCisgICAgLCB0ZXh0SW5kZW50TGlu
ZShvLnRleHRJbmRlbnRMaW5lKQorICAgICwgdGV4dEluZGVudFR5cGUoby50ZXh0SW5kZW50VHlw
ZSkKICNlbmRpZgotICAgICwgbV9saW5lQm94Q29udGFpbihvLm1fbGluZUJveENvbnRhaW4pCisg
ICAgLCBsaW5lQm94Q29udGFpbihvLmxpbmVCb3hDb250YWluKQogI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oby5tX2ltYWdlT3JpZW50
YXRpb24pCisgICAgLCBpbWFnZU9yaWVudGF0aW9uKG8uaW1hZ2VPcmllbnRhdGlvbikKICNlbmRp
ZgotICAgICwgbV9pbWFnZVJlbmRlcmluZyhvLm1faW1hZ2VSZW5kZXJpbmcpCi0gICAgLCBtX2xp
bmVTbmFwKG8ubV9saW5lU25hcCkKLSAgICAsIG1fbGluZUFsaWduKG8ubV9saW5lQWxpZ24pCisg
ICAgLCBpbWFnZVJlbmRlcmluZyhvLmltYWdlUmVuZGVyaW5nKQorICAgICwgbGluZVNuYXAoby5s
aW5lU25hcCkKKyAgICAsIGxpbmVBbGlnbihvLmxpbmVBbGlnbikKICNpZiBFTkFCTEUoQUNDRUxF
UkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGlu
ZyhvLnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1JFU09MVVRJT04pCi0gICAgLCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZShvLm1faW1hZ2VS
ZXNvbHV0aW9uU291cmNlKQotICAgICwgbV9pbWFnZVJlc29sdXRpb25TbmFwKG8ubV9pbWFnZVJl
c29sdXRpb25TbmFwKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU291cmNlKG8uaW1hZ2VSZXNvbHV0
aW9uU291cmNlKQorICAgICwgaW1hZ2VSZXNvbHV0aW9uU25hcChvLmltYWdlUmVzb2x1dGlvblNu
YXApCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICwgbV90ZXh0QWxpZ25MYXN0
KG8ubV90ZXh0QWxpZ25MYXN0KQotICAgICwgbV90ZXh0SnVzdGlmeShvLm1fdGV4dEp1c3RpZnkp
Ci0jZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU2tpcChvLm1fdGV4
dERlY29yYXRpb25Ta2lwKQotICAgICwgbV90ZXh0VW5kZXJsaW5lUG9zaXRpb24oby5tX3RleHRV
bmRlcmxpbmVQb3NpdGlvbikKLSAgICAsIG1fcnVieVBvc2l0aW9uKG8ubV9ydWJ5UG9zaXRpb24p
Ci0gICAgLCBtX3RleHRab29tKG8ubV90ZXh0Wm9vbSkKKyAgICAsIHRleHRBbGlnbkxhc3Qoby50
ZXh0QWxpZ25MYXN0KQorICAgICwgdGV4dEp1c3RpZnkoby50ZXh0SnVzdGlmeSkKKyNlbmRpZgor
ICAgICwgdGV4dERlY29yYXRpb25Ta2lwKG8udGV4dERlY29yYXRpb25Ta2lwKQorICAgICwgdGV4
dFVuZGVybGluZVBvc2l0aW9uKG8udGV4dFVuZGVybGluZVBvc2l0aW9uKQorICAgICwgcnVieVBv
c2l0aW9uKG8ucnVieVBvc2l0aW9uKQorICAgICwgdGV4dFpvb20oby50ZXh0Wm9vbSkKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgLCB0b3VjaENhbGxvdXRFbmFibGVkKG8udG91Y2hDYWxsb3V0RW5h
YmxlZCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKICAgICAsIHRyYWls
aW5nV29yZChvLnRyYWlsaW5nV29yZCkKICNlbmRpZgotICAgICwgbV9oYW5naW5nUHVuY3R1YXRp
b24oby5tX2hhbmdpbmdQdW5jdHVhdGlvbikKKyAgICAsIGhhbmdpbmdQdW5jdHVhdGlvbihvLmhh
bmdpbmdQdW5jdHVhdGlvbikKICAgICAsIGh5cGhlbmF0aW9uU3RyaW5nKG8uaHlwaGVuYXRpb25T
dHJpbmcpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKG8uaHlwaGVuYXRpb25MaW1pdEJl
Zm9yZSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcihvLmh5cGhlbmF0aW9uTGltaXRBZnRl
cikKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5lcyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykK
ICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50ZXh0RW1waGFzaXNDdXN0b21NYXJrKQot
ICAgICwgbV9saW5lR3JpZChvLm1fbGluZUdyaWQpCi0gICAgLCBtX3RhYlNpemUoby5tX3RhYlNp
emUpCisgICAgLCBsaW5lR3JpZChvLmxpbmVHcmlkKQorICAgICwgdGFiU2l6ZShvLnRhYlNpemUp
CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAsIHRleHRTaXplQWRqdXN0KG8udGV4
dFNpemVBZGp1c3QpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0g
ICAgLCBtX2ltYWdlUmVzb2x1dGlvbihvLm1faW1hZ2VSZXNvbHV0aW9uKQorICAgICwgaW1hZ2VS
ZXNvbHV0aW9uKG8uaW1hZ2VSZXNvbHV0aW9uKQogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICAsIHRhcEhpZ2hsaWdodENvbG9yKG8udGFwSGlnaGxpZ2h0Q29sb3IpCkBAIC0y
NTAsMTEgKzI1MCwxMSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YSh0ZXh0U2hhZG93LCBvLnRleHRTaGFkb3cpCiAgICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JEYXRhKQogICAgICAgICAm
JiBpbmRlbnQgPT0gby5pbmRlbnQKLSAgICAgICAgJiYgbV9lZmZlY3RpdmVab29tID09IG8ubV9l
ZmZlY3RpdmVab29tCisgICAgICAgICYmIGVmZmVjdGl2ZVpvb20gPT0gby5lZmZlY3RpdmVab29t
CiAgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93cwogICAgICAgICAmJiBvcnBoYW5zID09IG8u
b3JwaGFucwotICAgICAgICAmJiBtX2hhc0F1dG9XaWRvd3MgPT0gby5tX2hhc0F1dG9XaWRvd3MK
LSAgICAgICAgJiYgbV9oYXNBdXRvT3JwaGFucyA9PSBvLm1faGFzQXV0b09ycGhhbnMKKyAgICAg
ICAgJiYgaGFzQXV0b1dpZG93cyA9PSBvLmhhc0F1dG9XaWRvd3MKKyAgICAgICAgJiYgaGFzQXV0
b09ycGhhbnMgPT0gby5oYXNBdXRvT3JwaGFucwogICAgICAgICAmJiB0ZXh0U2VjdXJpdHkgPT0g
by50ZXh0U2VjdXJpdHkKICAgICAgICAgJiYgdXNlck1vZGlmeSA9PSBvLnVzZXJNb2RpZnkKICAg
ICAgICAgJiYgd29yZEJyZWFrID09IG8ud29yZEJyZWFrCkBAIC0yNzYsNDQgKzI3Niw0NCBAQCBi
b29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzRmlsbCA9PSBvLnRl
eHRFbXBoYXNpc0ZpbGwKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzTWFyayA9PSBvLnRleHRFbXBo
YXNpc01hcmsKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzUG9zaXRpb24gPT0gby50ZXh0RW1waGFz
aXNQb3NpdGlvbgotICAgICAgICAmJiBtX3RleHRPcmllbnRhdGlvbiA9PSBvLm1fdGV4dE9yaWVu
dGF0aW9uCisgICAgICAgICYmIHRleHRPcmllbnRhdGlvbiA9PSBvLnRleHRPcmllbnRhdGlvbgog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAgICYmIG1fdGV4dEluZGVudExpbmUgPT0gby5t
X3RleHRJbmRlbnRMaW5lCi0gICAgICAgICYmIG1fdGV4dEluZGVudFR5cGUgPT0gby5tX3RleHRJ
bmRlbnRUeXBlCisgICAgICAgICYmIHRleHRJbmRlbnRMaW5lID09IG8udGV4dEluZGVudExpbmUK
KyAgICAgICAgJiYgdGV4dEluZGVudFR5cGUgPT0gby50ZXh0SW5kZW50VHlwZQogI2VuZGlmCi0g
ICAgICAgICYmIG1fbGluZUJveENvbnRhaW4gPT0gby5tX2xpbmVCb3hDb250YWluCisgICAgICAg
ICYmIGxpbmVCb3hDb250YWluID09IG8ubGluZUJveENvbnRhaW4KICNpZiBQTEFURk9STShJT1Mp
CiAgICAgICAgICYmIHRvdWNoQ2FsbG91dEVuYWJsZWQgPT0gby50b3VjaENhbGxvdXRFbmFibGVk
CiAjZW5kaWYKICAgICAgICAgJiYgaHlwaGVuYXRpb25TdHJpbmcgPT0gby5oeXBoZW5hdGlvblN0
cmluZwogICAgICAgICAmJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrID09IG8udGV4dEVtcGhhc2lz
Q3VzdG9tTWFyawogICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHF1b3Rlcywgby5x
dW90ZXMpCi0gICAgICAgICYmIG1fdGFiU2l6ZSA9PSBvLm1fdGFiU2l6ZQotICAgICAgICAmJiBt
X2xpbmVHcmlkID09IG8ubV9saW5lR3JpZAorICAgICAgICAmJiB0YWJTaXplID09IG8udGFiU2l6
ZQorICAgICAgICAmJiBsaW5lR3JpZCA9PSBvLmxpbmVHcmlkCiAjaWYgRU5BQkxFKENTU19JTUFH
RV9PUklFTlRBVElPTikKLSAgICAgICAgJiYgbV9pbWFnZU9yaWVudGF0aW9uID09IG8ubV9pbWFn
ZU9yaWVudGF0aW9uCisgICAgICAgICYmIGltYWdlT3JpZW50YXRpb24gPT0gby5pbWFnZU9yaWVu
dGF0aW9uCiAjZW5kaWYKLSAgICAgICAgJiYgbV9pbWFnZVJlbmRlcmluZyA9PSBvLm1faW1hZ2VS
ZW5kZXJpbmcKKyAgICAgICAgJiYgaW1hZ2VSZW5kZXJpbmcgPT0gby5pbWFnZVJlbmRlcmluZwog
I2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICAgICAgJiYgbV9pbWFnZVJlc29s
dXRpb25Tb3VyY2UgPT0gby5tX2ltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgICAgICAmJiBtX2lt
YWdlUmVzb2x1dGlvblNuYXAgPT0gby5tX2ltYWdlUmVzb2x1dGlvblNuYXAKLSAgICAgICAgJiYg
bV9pbWFnZVJlc29sdXRpb24gPT0gby5tX2ltYWdlUmVzb2x1dGlvbgorICAgICAgICAmJiBpbWFn
ZVJlc29sdXRpb25Tb3VyY2UgPT0gby5pbWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICAgICAgJiYg
aW1hZ2VSZXNvbHV0aW9uU25hcCA9PSBvLmltYWdlUmVzb2x1dGlvblNuYXAKKyAgICAgICAgJiYg
aW1hZ2VSZXNvbHV0aW9uID09IG8uaW1hZ2VSZXNvbHV0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgICAgICAmJiBtX3RleHRBbGlnbkxhc3QgPT0gby5tX3RleHRBbGlnbkxh
c3QKLSAgICAgICAgJiYgbV90ZXh0SnVzdGlmeSA9PSBvLm1fdGV4dEp1c3RpZnkKKyAgICAgICAg
JiYgdGV4dEFsaWduTGFzdCA9PSBvLnRleHRBbGlnbkxhc3QKKyAgICAgICAgJiYgdGV4dEp1c3Rp
ZnkgPT0gby50ZXh0SnVzdGlmeQogI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICAgICAmJiBtX3Rl
eHREZWNvcmF0aW9uU2tpcCA9PSBvLm1fdGV4dERlY29yYXRpb25Ta2lwCi0gICAgICAgICYmIG1f
dGV4dFVuZGVybGluZVBvc2l0aW9uID09IG8ubV90ZXh0VW5kZXJsaW5lUG9zaXRpb24KLSAgICAg
ICAgJiYgbV9ydWJ5UG9zaXRpb24gPT0gby5tX3J1YnlQb3NpdGlvbgotICAgICAgICAmJiBtX3Rl
eHRab29tID09IG8ubV90ZXh0Wm9vbQotICAgICAgICAmJiBtX2xpbmVTbmFwID09IG8ubV9saW5l
U25hcAotICAgICAgICAmJiBtX2xpbmVBbGlnbiA9PSBvLm1fbGluZUFsaWduCisgICAgICAgICYm
IHRleHREZWNvcmF0aW9uU2tpcCA9PSBvLnRleHREZWNvcmF0aW9uU2tpcAorICAgICAgICAmJiB0
ZXh0VW5kZXJsaW5lUG9zaXRpb24gPT0gby50ZXh0VW5kZXJsaW5lUG9zaXRpb24KKyAgICAgICAg
JiYgcnVieVBvc2l0aW9uID09IG8ucnVieVBvc2l0aW9uCisgICAgICAgICYmIHRleHRab29tID09
IG8udGV4dFpvb20KKyAgICAgICAgJiYgbGluZVNuYXAgPT0gby5saW5lU25hcAorICAgICAgICAm
JiBsaW5lQWxpZ24gPT0gby5saW5lQWxpZ24KICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQp
CiAgICAgICAgICYmIHRyYWlsaW5nV29yZCA9PSBvLnRyYWlsaW5nV29yZAogI2VuZGlmCi0gICAg
ICAgICYmIG1faGFuZ2luZ1B1bmN0dWF0aW9uID09IG8ubV9oYW5naW5nUHVuY3R1YXRpb24KLSAg
ICAgICAgJiYgbV9jdXN0b21Qcm9wZXJ0aWVzID09IG8ubV9jdXN0b21Qcm9wZXJ0aWVzCisgICAg
ICAgICYmIGhhbmdpbmdQdW5jdHVhdGlvbiA9PSBvLmhhbmdpbmdQdW5jdHVhdGlvbgorICAgICAg
ICAmJiBjdXN0b21Qcm9wZXJ0aWVzID09IG8uY3VzdG9tUHJvcGVydGllcwogICAgICAgICAmJiBh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKGxpc3RTdHlsZUltYWdlLCBvLmxpc3RTdHlsZUltYWdlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgKaW5kZXggMTJiN2UzOWEzYWE5YzRlYjdmODgyYmZhYzYwOWM3ZjI5
MjA5ODdkNy4uMmZmMjdjOTg1MGYzYTA2MDgwM2M0YTA0NTRiNjg3YTc1ODUzY2Y1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5oCkBAIC03MiwxNyArNzIsMTcgQEAgcHVibGljOgogICAgIAogICAgIFJlZlB0cjxD
dXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0aCBpbmRlbnQ7Ci0gICAgZmxvYXQgbV9l
ZmZlY3RpdmVab29tOworICAgIGZsb2F0IGVmZmVjdGl2ZVpvb207CiAgICAgCiAgICAgTGVuZ3Ro
IHdvcmRTcGFjaW5nOwogCi0gICAgRGF0YVJlZjxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4gbV9j
dXN0b21Qcm9wZXJ0aWVzOworICAgIERhdGFSZWY8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+IGN1
c3RvbVByb3BlcnRpZXM7CiAKICAgICAvLyBQYWdlZCBtZWRpYSBwcm9wZXJ0aWVzLgogICAgIHNo
b3J0IHdpZG93czsKICAgICBzaG9ydCBvcnBoYW5zOwotICAgIHVuc2lnbmVkIG1faGFzQXV0b1dp
ZG93cyA6IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNBdXRvT3JwaGFucyA6IDE7CisgICAgdW5zaWdu
ZWQgaGFzQXV0b1dpZG93cyA6IDE7CisgICAgdW5zaWduZWQgaGFzQXV0b09ycGhhbnMgOiAxOwog
ICAgIAogICAgIHVuc2lnbmVkIHRleHRTZWN1cml0eSA6IDI7IC8vIEVUZXh0U2VjdXJpdHkKICAg
ICB1bnNpZ25lZCB1c2VyTW9kaWZ5IDogMjsgLy8gRVVzZXJNb2RpZnkgKGVkaXRpbmcpCkBAIC05
NywzNCArOTcsMzQgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHRleHRFbXBoYXNpc0ZpbGwgOiAx
OyAvLyBUZXh0RW1waGFzaXNGaWxsCiAgICAgdW5zaWduZWQgdGV4dEVtcGhhc2lzTWFyayA6IDM7
IC8vIFRleHRFbXBoYXNpc01hcmsKICAgICB1bnNpZ25lZCB0ZXh0RW1waGFzaXNQb3NpdGlvbiA6
IDQ7IC8vIFRleHRFbXBoYXNpc1Bvc2l0aW9uCi0gICAgdW5zaWduZWQgbV90ZXh0T3JpZW50YXRp
b24gOiAyOyAvLyBUZXh0T3JpZW50YXRpb24KKyAgICB1bnNpZ25lZCB0ZXh0T3JpZW50YXRpb24g
OiAyOyAvLyBUZXh0T3JpZW50YXRpb24KICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIHVuc2ln
bmVkIG1fdGV4dEluZGVudExpbmUgOiAxOyAvLyBUZXh0SW5kZW50TGluZQotICAgIHVuc2lnbmVk
IG1fdGV4dEluZGVudFR5cGUgOiAxOyAvLyBUZXh0SW5kZW50VHlwZQorICAgIHVuc2lnbmVkIHRl
eHRJbmRlbnRMaW5lIDogMTsgLy8gVGV4dEluZGVudExpbmUKKyAgICB1bnNpZ25lZCB0ZXh0SW5k
ZW50VHlwZSA6IDE7IC8vIFRleHRJbmRlbnRUeXBlCiAjZW5kaWYKLSAgICB1bnNpZ25lZCBtX2xp
bmVCb3hDb250YWluOiA3OyAvLyBMaW5lQm94Q29udGFpbgorICAgIHVuc2lnbmVkIGxpbmVCb3hD
b250YWluOiA3OyAvLyBMaW5lQm94Q29udGFpbgogICAgIC8vIENTUyBJbWFnZSBWYWx1ZXMgTGV2
ZWwgMwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgdW5zaWduZWQgbV9p
bWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25l
ZCBpbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0KICNlbmRpZgot
ICAgIHVuc2lnbmVkIG1faW1hZ2VSZW5kZXJpbmcgOiAzOyAvLyBFSW1hZ2VSZW5kZXJpbmcKLSAg
ICB1bnNpZ25lZCBtX2xpbmVTbmFwIDogMjsgLy8gTGluZVNuYXAKLSAgICB1bnNpZ25lZCBtX2xp
bmVBbGlnbiA6IDE7IC8vIExpbmVBbGlnbgorICAgIHVuc2lnbmVkIGltYWdlUmVuZGVyaW5nIDog
MzsgLy8gRUltYWdlUmVuZGVyaW5nCisgICAgdW5zaWduZWQgbGluZVNuYXAgOiAyOyAvLyBMaW5l
U25hcAorICAgIHVuc2lnbmVkIGxpbmVBbGlnbiA6IDE7IC8vIExpbmVBbGlnbgogI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgdW5zaWduZWQgdXNlVG91Y2hP
dmVyZmxvd1Njcm9sbGluZzogMTsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xV
VElPTikKLSAgICB1bnNpZ25lZCBtX2ltYWdlUmVzb2x1dGlvblNvdXJjZSA6IDE7IC8vIEltYWdl
UmVzb2x1dGlvblNvdXJjZQotICAgIHVuc2lnbmVkIG1faW1hZ2VSZXNvbHV0aW9uU25hcCA6IDE7
IC8vIEltYWdlUmVzb2x1dGlvblNuYXAKKyAgICB1bnNpZ25lZCBpbWFnZVJlc29sdXRpb25Tb3Vy
Y2UgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25Tb3VyY2UKKyAgICB1bnNpZ25lZCBpbWFnZVJlc29s
dXRpb25TbmFwIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU25hcAogI2VuZGlmCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKLSAgICB1bnNpZ25lZCBtX3RleHRBbGlnbkxhc3QgOiAzOyAvLyBUZXh0QWxp
Z25MYXN0Ci0gICAgdW5zaWduZWQgbV90ZXh0SnVzdGlmeSA6IDI7IC8vIFRleHRKdXN0aWZ5Ci0j
ZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgdW5zaWduZWQgbV90ZXh0RGVjb3JhdGlvblNraXAgOiA1
OyAvLyBUZXh0RGVjb3JhdGlvblNraXAKLSAgICB1bnNpZ25lZCBtX3RleHRVbmRlcmxpbmVQb3Np
dGlvbiA6IDM7IC8vIFRleHRVbmRlcmxpbmVQb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fcnVieVBv
c2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV90ZXh0Wm9vbTogMTsg
Ly8gVGV4dFpvb20KKyAgICB1bnNpZ25lZCB0ZXh0QWxpZ25MYXN0IDogMzsgLy8gVGV4dEFsaWdu
TGFzdAorICAgIHVuc2lnbmVkIHRleHRKdXN0aWZ5IDogMjsgLy8gVGV4dEp1c3RpZnkKKyNlbmRp
ZgorICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uU2tpcCA6IDU7IC8vIFRleHREZWNvcmF0aW9u
U2tpcAorICAgIHVuc2lnbmVkIHRleHRVbmRlcmxpbmVQb3NpdGlvbiA6IDM7IC8vIFRleHRVbmRl
cmxpbmVQb3NpdGlvbgorICAgIHVuc2lnbmVkIHJ1YnlQb3NpdGlvbiA6IDI7IC8vIFJ1YnlQb3Np
dGlvbgorICAgIHVuc2lnbmVkIHRleHRab29tOiAxOyAvLyBUZXh0Wm9vbQogCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIHVuc2lnbmVkIHRvdWNoQ2FsbG91dEVuYWJsZWQgOiAxOwpAQCAtMTM0LDcg
KzEzNCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0cmFpbGluZ1dvcmQgOiAxOwogI2VuZGlm
CiAKLSAgICB1bnNpZ25lZCBtX2hhbmdpbmdQdW5jdHVhdGlvbiA6IDQ7CisgICAgdW5zaWduZWQg
aGFuZ2luZ1B1bmN0dWF0aW9uIDogNDsKIAogICAgIEF0b21pY1N0cmluZyBoeXBoZW5hdGlvblN0
cmluZzsKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlOwpAQCAtMTQ0LDE1ICsxNDQs
MTUgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwog
ICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CiAKLSAgICBBdG9taWNTdHJpbmcgbV9saW5l
R3JpZDsKLSAgICB1bnNpZ25lZCBtX3RhYlNpemU7CisgICAgQXRvbWljU3RyaW5nIGxpbmVHcmlk
OworICAgIHVuc2lnbmVkIHRhYlNpemU7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQog
ICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIGZsb2F0IG1faW1hZ2VSZXNvbHV0aW9uOwor
ICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA0YTdmN2U2ODcwMTk4Y2MwOWYyNDZi
MDZkNzRjMTk5YmM4MTUyNzg3Li42NTE0MjAwOTlmOTc4MDA1MmFiZTBlNDI2MTRiZDBkNDM3YTRm
ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3LDE3NCArMzcsMTc0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQotICAgIDogbV9vcGFjaXR5KFJlbmRlclN0eWxlOjpp
bml0aWFsT3BhY2l0eSgpKQotICAgICwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0
eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKQotICAgICwgbV9hc3BlY3RSYXRp
b051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpCi0g
ICAgLCBtX3BlcnNwZWN0aXZlKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmUoKSkKLSAg
ICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5YKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVP
cmlnaW5YKCkpCi0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWShSZW5kZXJTdHlsZTo6aW5pdGlh
bFBlcnNwZWN0aXZlT3JpZ2luWSgpKQorICAgIDogb3BhY2l0eShSZW5kZXJTdHlsZTo6aW5pdGlh
bE9wYWNpdHkoKSkKKyAgICAsIGFzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6Omlu
aXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpCisgICAgLCBhc3BlY3RSYXRpb051bWVyYXRv
cihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpCisgICAgLCBwZXJz
cGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlKCkpCisgICAgLCBwZXJzcGVj
dGl2ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSkKKyAg
ICAsIHBlcnNwZWN0aXZlT3JpZ2luWShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3Jp
Z2luWSgpKQogICAgICwgbGluZUNsYW1wKFJlbmRlclN0eWxlOjppbml0aWFsTGluZUNsYW1wKCkp
Ci0gICAgLCBtX2luaXRpYWxMZXR0ZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxJbml0aWFsTGV0dGVy
KCkpCi0gICAgLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveChTdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9mbGV4aWJsZUJveChTdHlsZUZsZXhpYmxlQm94
RGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX21hcnF1ZWUoU3R5bGVNYXJxdWVlRGF0YTo6Y3JlYXRl
KCkpCi0gICAgLCBtX211bHRpQ29sKFN0eWxlTXVsdGlDb2xEYXRhOjpjcmVhdGUoKSkKLSAgICAs
IG1fdHJhbnNmb3JtKFN0eWxlVHJhbnNmb3JtRGF0YTo6Y3JlYXRlKCkpCi0gICAgLCBtX2ZpbHRl
cihTdHlsZUZpbHRlckRhdGE6OmNyZWF0ZSgpKQorICAgICwgaW5pdGlhbExldHRlcihSZW5kZXJT
dHlsZTo6aW5pdGlhbEluaXRpYWxMZXR0ZXIoKSkKKyAgICAsIGRlcHJlY2F0ZWRGbGV4aWJsZUJv
eChTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQorICAgICwgZmxleGli
bGVCb3goU3R5bGVGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSgpKQorICAgICwgbWFycXVlZShTdHls
ZU1hcnF1ZWVEYXRhOjpjcmVhdGUoKSkKKyAgICAsIG11bHRpQ29sKFN0eWxlTXVsdGlDb2xEYXRh
OjpjcmVhdGUoKSkKKyAgICAsIHRyYW5zZm9ybShTdHlsZVRyYW5zZm9ybURhdGE6OmNyZWF0ZSgp
KQorICAgICwgZmlsdGVyKFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRlKCkpCiAjaWYgRU5BQkxFKEZJ
TFRFUlNfTEVWRUxfMikKLSAgICAsIG1fYmFja2Ryb3BGaWx0ZXIoU3R5bGVGaWx0ZXJEYXRhOjpj
cmVhdGUoKSkKKyAgICAsIGJhY2tkcm9wRmlsdGVyKFN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRlKCkp
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgICwgbV9ncmlkKFN0eWxl
R3JpZERhdGE6OmNyZWF0ZSgpKQotICAgICwgbV9ncmlkSXRlbShTdHlsZUdyaWRJdGVtRGF0YTo6
Y3JlYXRlKCkpCisgICAgLCBncmlkKFN0eWxlR3JpZERhdGE6OmNyZWF0ZSgpKQorICAgICwgZ3Jp
ZEl0ZW0oU3R5bGVHcmlkSXRlbURhdGE6OmNyZWF0ZSgpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLSAgICAsIG1fc2Nyb2xsU25hcFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9y
dDo6Y3JlYXRlKCkpCi0gICAgLCBtX3Njcm9sbFNuYXBBcmVhKFN0eWxlU2Nyb2xsU25hcEFyZWE6
OmNyZWF0ZSgpKQorICAgICwgc2Nyb2xsU25hcFBvcnQoU3R5bGVTY3JvbGxTbmFwUG9ydDo6Y3Jl
YXRlKCkpCisgICAgLCBzY3JvbGxTbmFwQXJlYShTdHlsZVNjcm9sbFNuYXBBcmVhOjpjcmVhdGUo
KSkKICNlbmRpZgotICAgICwgbV93aWxsQ2hhbmdlKFJlbmRlclN0eWxlOjppbml0aWFsV2lsbENo
YW5nZSgpKQotICAgICwgbV9tYXNrKEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkKLSAgICAsIG1f
b2JqZWN0UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpKQotICAg
ICwgbV9zaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZU91dHNpZGUoKSkKLSAg
ICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQotICAg
ICwgbV9zaGFwZUltYWdlVGhyZXNob2xkKFJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRo
cmVzaG9sZCgpKQotICAgICwgbV9jbGlwUGF0aChSZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRo
KCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0
aWFsQmFja2dyb3VuZENvbG9yKCkpCi0gICAgLCBtX29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFs
T3JkZXIoKSkKLSAgICAsIG1fZmxvd1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJl
YWQoKSkKLSAgICAsIG1fcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhy
ZWFkKCkpCi0gICAgLCBtX2FsaWduQ29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbnRlbnRB
bGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25JdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbERlZmF1
bHRBbGlnbm1lbnQoKSkKLSAgICAsIG1fYWxpZ25TZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2Vs
ZkFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlh
bENvbnRlbnRBbGlnbm1lbnQoKSkKLSAgICAsIG1fanVzdGlmeUl0ZW1zKFJlbmRlclN0eWxlOjpp
bml0aWFsU2VsZkFsaWdubWVudCgpKQotICAgICwgbV9qdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6
aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKKyAgICAsIHdpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6Omlu
aXRpYWxXaWxsQ2hhbmdlKCkpCisgICAgLCBtYXNrKEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkK
KyAgICAsIG9iamVjdFBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsT2JqZWN0UG9zaXRpb24o
KSkKKyAgICAsIHNoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlT3V0c2lkZSgp
KQorICAgICwgc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZU1hcmdpbigpKQor
ICAgICwgc2hhcGVJbWFnZVRocmVzaG9sZChSZW5kZXJTdHlsZTo6aW5pdGlhbFNoYXBlSW1hZ2VU
aHJlc2hvbGQoKSkKKyAgICAsIGNsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgo
KSkKKyAgICAsIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFs
QmFja2dyb3VuZENvbG9yKCkpCisgICAgLCBvcmRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVy
KCkpCisgICAgLCBmbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVhZCgpKQor
ICAgICwgcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCisg
ICAgLCBhbGlnbkNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkp
CisgICAgLCBhbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsRGVmYXVsdEFsaWdubWVudCgp
KQorICAgICwgYWxpZ25TZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQor
ICAgICwganVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50
KCkpCisgICAgLCBqdXN0aWZ5SXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50
KCkpCisgICAgLCBqdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQo
KSkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgbV90b3VjaEFjdGlvbihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUb3VjaEFjdGlvbigpKSkKKyAgICAs
IHRvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRv
dWNoQWN0aW9uKCkpKQogI2VuZGlmCi0gICAgLCBtX3JlZ2lvbkZyYWdtZW50KFJlbmRlclN0eWxl
Ojppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKLSAgICAsIG1fcGFnZVNpemVUeXBlKFBBR0VfU0la
RV9BVVRPKQotICAgICwgbV90cmFuc2Zvcm1TdHlsZTNEKFJlbmRlclN0eWxlOjppbml0aWFsVHJh
bnNmb3JtU3R5bGUzRCgpKQotICAgICwgbV9iYWNrZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6
OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50KFJlbmRl
clN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKKyAgICAsIHBhZ2VTaXplVHlwZShQQUdF
X1NJWkVfQVVUTykKKyAgICAsIHRyYW5zZm9ybVN0eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRpYWxU
cmFuc2Zvcm1TdHlsZTNEKCkpCisgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkoUmVuZGVyU3R5bGU6
OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkKICAgICAsIHVzZXJEcmFnKFJlbmRlclN0eWxl
Ojppbml0aWFsVXNlckRyYWcoKSkKICAgICAsIHRleHRPdmVyZmxvdyhSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRPdmVyZmxvdygpKQogICAgICwgbWFyZ2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNF
KQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShNQ09MTEFQU0UpCi0gICAgLCBtX2FwcGVhcmFu
Y2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlKCkpCi0gICAgLCBtX2JvcmRlckZpdChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgpKQotICAgICwgbV90ZXh0Q29tYmluZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRDb21iaW5lKCkpCi0gICAgLCBtX3RleHREZWNvcmF0aW9uU3R5
bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkpCi0gICAgLCBtX2Fz
cGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKQorICAg
ICwgYXBwZWFyYW5jZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkKKyAgICAsIGJv
cmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgpKQorICAgICwgdGV4dENvbWJp
bmUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgpKQorICAgICwgdGV4dERlY29yYXRp
b25TdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkKKyAgICAs
IGFzcGVjdFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKQog
I2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQotICAgICwgbV9pc29sYXRpb24oUmVuZGVy
U3R5bGU6OmluaXRpYWxJc29sYXRpb24oKSkKKyAgICAsIGVmZmVjdGl2ZUJsZW5kTW9kZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQorICAgICwgaXNvbGF0aW9uKFJlbmRlclN0eWxl
Ojppbml0aWFsSXNvbGF0aW9uKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAg
ICwgbV9hcHBsZVBheUJ1dHRvblN0eWxlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHls
ZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9uU3R5bGUoKSkpCi0gICAgLCBtX2FwcGxlUGF5QnV0dG9u
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBsZVBheUJ1
dHRvblR5cGUoKSkpCisgICAgLCBhcHBsZVBheUJ1dHRvblN0eWxlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGxlUGF5QnV0dG9uU3R5bGUoKSkpCisgICAgLCBh
cHBsZVBheUJ1dHRvblR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0
aWFsQXBwbGVQYXlCdXR0b25UeXBlKCkpKQogI2VuZGlmCi0gICAgLCBtX29iamVjdEZpdChSZW5k
ZXJTdHlsZTo6aW5pdGlhbE9iamVjdEZpdCgpKQotICAgICwgbV9icmVha0JlZm9yZShSZW5kZXJT
dHlsZTo6aW5pdGlhbEJyZWFrQmV0d2VlbigpKQotICAgICwgbV9icmVha0FmdGVyKFJlbmRlclN0
eWxlOjppbml0aWFsQnJlYWtCZXR3ZWVuKCkpCi0gICAgLCBtX2JyZWFrSW5zaWRlKFJlbmRlclN0
eWxlOjppbml0aWFsQnJlYWtJbnNpZGUoKSkKLSAgICAsIG1fcmVzaXplKFJlbmRlclN0eWxlOjpp
bml0aWFsUmVzaXplKCkpCi0gICAgLCBtX2hhc0F0dHJDb250ZW50KGZhbHNlKQotICAgICwgbV9p
c1BsYWNlaG9sZGVyU3R5bGUoZmFsc2UpCisgICAgLCBvYmplY3RGaXQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxPYmplY3RGaXQoKSkKKyAgICAsIGJyZWFrQmVmb3JlKFJlbmRlclN0eWxlOjppbml0aWFs
QnJlYWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0FmdGVyKFJlbmRlclN0eWxlOjppbml0aWFsQnJl
YWtCZXR3ZWVuKCkpCisgICAgLCBicmVha0luc2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJyZWFr
SW5zaWRlKCkpCisgICAgLCByZXNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxSZXNpemUoKSkKKyAg
ICAsIGhhc0F0dHJDb250ZW50KGZhbHNlKQorICAgICwgaXNQbGFjZWhvbGRlclN0eWxlKGZhbHNl
KQogewotICAgIG1fbWFza0JveEltYWdlLnNldE1hc2tEZWZhdWx0cygpOworICAgIG1hc2tCb3hJ
bWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKIH0KIAogaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4o
KQotICAgICwgbV9vcGFjaXR5KG8ubV9vcGFjaXR5KQotICAgICwgbV9hc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yKG8ubV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKQotICAgICwgbV9hc3BlY3RSYXRpb051
bWVyYXRvcihvLm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IpCi0gICAgLCBtX3BlcnNwZWN0aXZlKG8u
bV9wZXJzcGVjdGl2ZSkKLSAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5YKG8ubV9wZXJzcGVjdGl2
ZU9yaWdpblgpCi0gICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWShvLm1fcGVyc3BlY3RpdmVPcmln
aW5ZKQorICAgICwgb3BhY2l0eShvLm9wYWNpdHkpCisgICAgLCBhc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKG8uYXNwZWN0UmF0aW9EZW5vbWluYXRvcikKKyAgICAsIGFzcGVjdFJhdGlvTnVtZXJhdG9y
KG8uYXNwZWN0UmF0aW9OdW1lcmF0b3IpCisgICAgLCBwZXJzcGVjdGl2ZShvLnBlcnNwZWN0aXZl
KQorICAgICwgcGVyc3BlY3RpdmVPcmlnaW5YKG8ucGVyc3BlY3RpdmVPcmlnaW5YKQorICAgICwg
cGVyc3BlY3RpdmVPcmlnaW5ZKG8ucGVyc3BlY3RpdmVPcmlnaW5ZKQogICAgICwgbGluZUNsYW1w
KG8ubGluZUNsYW1wKQotICAgICwgbV9pbml0aWFsTGV0dGVyKG8ubV9pbml0aWFsTGV0dGVyKQot
ICAgICwgbV9kZXByZWNhdGVkRmxleGlibGVCb3goby5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkK
LSAgICAsIG1fZmxleGlibGVCb3goby5tX2ZsZXhpYmxlQm94KQotICAgICwgbV9tYXJxdWVlKG8u
bV9tYXJxdWVlKQotICAgICwgbV9tdWx0aUNvbChvLm1fbXVsdGlDb2wpCi0gICAgLCBtX3RyYW5z
Zm9ybShvLm1fdHJhbnNmb3JtKQotICAgICwgbV9maWx0ZXIoby5tX2ZpbHRlcikKKyAgICAsIGlu
aXRpYWxMZXR0ZXIoby5pbml0aWFsTGV0dGVyKQorICAgICwgZGVwcmVjYXRlZEZsZXhpYmxlQm94
KG8uZGVwcmVjYXRlZEZsZXhpYmxlQm94KQorICAgICwgZmxleGlibGVCb3goby5mbGV4aWJsZUJv
eCkKKyAgICAsIG1hcnF1ZWUoby5tYXJxdWVlKQorICAgICwgbXVsdGlDb2woby5tdWx0aUNvbCkK
KyAgICAsIHRyYW5zZm9ybShvLnRyYW5zZm9ybSkKKyAgICAsIGZpbHRlcihvLmZpbHRlcikKICNp
ZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgICwgbV9iYWNrZHJvcEZpbHRlcihvLm1fYmFj
a2Ryb3BGaWx0ZXIpCisgICAgLCBiYWNrZHJvcEZpbHRlcihvLmJhY2tkcm9wRmlsdGVyKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICAsIG1fZ3JpZChvLm1fZ3JpZCkK
LSAgICAsIG1fZ3JpZEl0ZW0oby5tX2dyaWRJdGVtKQorICAgICwgZ3JpZChvLmdyaWQpCisgICAg
LCBncmlkSXRlbShvLmdyaWRJdGVtKQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKLSAgICAsIG1fc2Nyb2xsU25hcFBvcnQoby5tX3Njcm9sbFNuYXBQb3J0KQotICAgICwgbV9z
Y3JvbGxTbmFwQXJlYShvLm1fc2Nyb2xsU25hcEFyZWEpCisgICAgLCBzY3JvbGxTbmFwUG9ydChv
LnNjcm9sbFNuYXBQb3J0KQorICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkK
ICNlbmRpZgotICAgICwgbV9jb250ZW50KG8ubV9jb250ZW50ID8gby5tX2NvbnRlbnQtPmNsb25l
KCkgOiBudWxscHRyKQotICAgICwgbV9jb3VudGVyRGlyZWN0aXZlcyhvLm1fY291bnRlckRpcmVj
dGl2ZXMgPyBjbG9uZSgqby5tX2NvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCi0gICAgLCBt
X2FsdFRleHQoby5tX2FsdFRleHQpCi0gICAgLCBtX2JveFNoYWRvdyhvLm1fYm94U2hhZG93ID8g
c3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5tX2JveFNoYWRvdykgOiBudWxscHRyKQot
ICAgICwgbV93aWxsQ2hhbmdlKG8ubV93aWxsQ2hhbmdlKQotICAgICwgbV9ib3hSZWZsZWN0KG8u
bV9ib3hSZWZsZWN0KQotICAgICwgbV9hbmltYXRpb25zKG8ubV9hbmltYXRpb25zID8gc3RkOjpt
YWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5tX2FuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAg
ICAsIG1fdHJhbnNpdGlvbnMoby5tX3RyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmlt
YXRpb25MaXN0Pigqby5tX3RyYW5zaXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCBtX21hc2soby5t
X21hc2spCi0gICAgLCBtX21hc2tCb3hJbWFnZShvLm1fbWFza0JveEltYWdlKQotICAgICwgbV9w
YWdlU2l6ZShvLm1fcGFnZVNpemUpCi0gICAgLCBtX29iamVjdFBvc2l0aW9uKG8ubV9vYmplY3RQ
b3NpdGlvbikKLSAgICAsIG1fc2hhcGVPdXRzaWRlKG8ubV9zaGFwZU91dHNpZGUpCi0gICAgLCBt
X3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1hcmdpbikKLSAgICAsIG1fc2hhcGVJbWFnZVRocmVzaG9s
ZChvLm1fc2hhcGVJbWFnZVRocmVzaG9sZCkKLSAgICAsIG1fY2xpcFBhdGgoby5tX2NsaXBQYXRo
KQotICAgICwgbV90ZXh0RGVjb3JhdGlvbkNvbG9yKG8ubV90ZXh0RGVjb3JhdGlvbkNvbG9yKQot
ICAgICwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rVGV4
dERlY29yYXRpb25Db2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5t
X3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQotICAgICwgbV92aXNpdGVkTGlua091dGxpbmVD
b2xvcihvLm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9y
ZGVyTGVmdENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcikKLSAgICAsIG1fdmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ip
Ci0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVy
VG9wQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ioby5tX3Zpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCi0gICAgLCBtX29yZGVyKG8ubV9vcmRlcikKLSAgICAs
IG1fZmxvd1RocmVhZChvLm1fZmxvd1RocmVhZCkKLSAgICAsIG1fcmVnaW9uVGhyZWFkKG8ubV9y
ZWdpb25UaHJlYWQpCi0gICAgLCBtX2FsaWduQ29udGVudChvLm1fYWxpZ25Db250ZW50KQotICAg
ICwgbV9hbGlnbkl0ZW1zKG8ubV9hbGlnbkl0ZW1zKQotICAgICwgbV9hbGlnblNlbGYoby5tX2Fs
aWduU2VsZikKLSAgICAsIG1fanVzdGlmeUNvbnRlbnQoby5tX2p1c3RpZnlDb250ZW50KQotICAg
ICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJdGVtcykKLSAgICAsIG1fanVzdGlmeVNlbGYo
by5tX2p1c3RpZnlTZWxmKQorICAgICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNs
b25lKCkgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0
aXZlcyA/IGNsb25lKCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCisgICAgLCBhbHRU
ZXh0KG8uYWx0VGV4dCkKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB3aWxsQ2hh
bmdlKG8ud2lsbENoYW5nZSkKKyAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQorICAgICwg
YW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlv
bnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51
bGxwdHIpCisgICAgLCBtYXNrKG8ubWFzaykKKyAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJ
bWFnZSkKKyAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCisgICAgLCBvYmplY3RQb3NpdGlvbihv
Lm9iamVjdFBvc2l0aW9uKQorICAgICwgc2hhcGVPdXRzaWRlKG8uc2hhcGVPdXRzaWRlKQorICAg
ICwgc2hhcGVNYXJnaW4oby5zaGFwZU1hcmdpbikKKyAgICAsIHNoYXBlSW1hZ2VUaHJlc2hvbGQo
by5zaGFwZUltYWdlVGhyZXNob2xkKQorICAgICwgY2xpcFBhdGgoby5jbGlwUGF0aCkKKyAgICAs
IHRleHREZWNvcmF0aW9uQ29sb3Ioby50ZXh0RGVjb3JhdGlvbkNvbG9yKQorICAgICwgdmlzaXRl
ZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yKG8udmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9y
KQorICAgICwgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby52aXNpdGVkTGlua0JhY2tncm91
bmRDb2xvcikKKyAgICAsIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKG8udmlzaXRlZExpbmtPdXRs
aW5lQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihvLnZpc2l0ZWRMaW5r
Qm9yZGVyTGVmdENvbG9yKQorICAgICwgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8udmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQorICAgICwgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
cihvLnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCisgICAgLCB2aXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yKG8udmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcikKKyAgICAsIG9yZGVyKG8u
b3JkZXIpCisgICAgLCBmbG93VGhyZWFkKG8uZmxvd1RocmVhZCkKKyAgICAsIHJlZ2lvblRocmVh
ZChvLnJlZ2lvblRocmVhZCkKKyAgICAsIGFsaWduQ29udGVudChvLmFsaWduQ29udGVudCkKKyAg
ICAsIGFsaWduSXRlbXMoby5hbGlnbkl0ZW1zKQorICAgICwgYWxpZ25TZWxmKG8uYWxpZ25TZWxm
KQorICAgICwganVzdGlmeUNvbnRlbnQoby5qdXN0aWZ5Q29udGVudCkKKyAgICAsIGp1c3RpZnlJ
dGVtcyhvLmp1c3RpZnlJdGVtcykKKyAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIG1fdG91Y2hBY3Rpb24oby5tX3RvdWNoQWN0
aW9uKQorICAgICwgdG91Y2hBY3Rpb24oby50b3VjaEFjdGlvbikKICNlbmRpZgotICAgICwgbV9y
ZWdpb25GcmFnbWVudChvLm1fcmVnaW9uRnJhZ21lbnQpCi0gICAgLCBtX3BhZ2VTaXplVHlwZShv
Lm1fcGFnZVNpemVUeXBlKQotICAgICwgbV90cmFuc2Zvcm1TdHlsZTNEKG8ubV90cmFuc2Zvcm1T
dHlsZTNEKQotICAgICwgbV9iYWNrZmFjZVZpc2liaWxpdHkoby5tX2JhY2tmYWNlVmlzaWJpbGl0
eSkKKyAgICAsIHJlZ2lvbkZyYWdtZW50KG8ucmVnaW9uRnJhZ21lbnQpCisgICAgLCBwYWdlU2l6
ZVR5cGUoby5wYWdlU2l6ZVR5cGUpCisgICAgLCB0cmFuc2Zvcm1TdHlsZTNEKG8udHJhbnNmb3Jt
U3R5bGUzRCkKKyAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShvLmJhY2tmYWNlVmlzaWJpbGl0eSkK
ICAgICAsIHVzZXJEcmFnKG8udXNlckRyYWcpCiAgICAgLCB0ZXh0T3ZlcmZsb3coby50ZXh0T3Zl
cmZsb3cpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShvLm1hcmdpbkJlZm9yZUNvbGxhcHNl
KQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShvLm1hcmdpbkFmdGVyQ29sbGFwc2UpCi0gICAg
LCBtX2FwcGVhcmFuY2Uoby5tX2FwcGVhcmFuY2UpCi0gICAgLCBtX2JvcmRlckZpdChvLm1fYm9y
ZGVyRml0KQotICAgICwgbV90ZXh0Q29tYmluZShvLm1fdGV4dENvbWJpbmUpCi0gICAgLCBtX3Rl
eHREZWNvcmF0aW9uU3R5bGUoby5tX3RleHREZWNvcmF0aW9uU3R5bGUpCi0gICAgLCBtX2FzcGVj
dFJhdGlvVHlwZShvLm1fYXNwZWN0UmF0aW9UeXBlKQorICAgICwgYXBwZWFyYW5jZShvLmFwcGVh
cmFuY2UpCisgICAgLCBib3JkZXJGaXQoby5ib3JkZXJGaXQpCisgICAgLCB0ZXh0Q29tYmluZShv
LnRleHRDb21iaW5lKQorICAgICwgdGV4dERlY29yYXRpb25TdHlsZShvLnRleHREZWNvcmF0aW9u
U3R5bGUpCisgICAgLCBhc3BlY3RSYXRpb1R5cGUoby5hc3BlY3RSYXRpb1R5cGUpCiAjaWYgRU5B
QkxFKENTU19DT01QT1NJVElORykKLSAgICAsIG1fZWZmZWN0aXZlQmxlbmRNb2RlKG8ubV9lZmZl
Y3RpdmVCbGVuZE1vZGUpCi0gICAgLCBtX2lzb2xhdGlvbihvLm1faXNvbGF0aW9uKQorICAgICwg
ZWZmZWN0aXZlQmxlbmRNb2RlKG8uZWZmZWN0aXZlQmxlbmRNb2RlKQorICAgICwgaXNvbGF0aW9u
KG8uaXNvbGF0aW9uKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAsIG1fYXBw
bGVQYXlCdXR0b25TdHlsZShvLm1fYXBwbGVQYXlCdXR0b25TdHlsZSkKLSAgICAsIG1fYXBwbGVQ
YXlCdXR0b25UeXBlKG8ubV9hcHBsZVBheUJ1dHRvblR5cGUpCisgICAgLCBhcHBsZVBheUJ1dHRv
blN0eWxlKG8uYXBwbGVQYXlCdXR0b25TdHlsZSkKKyAgICAsIGFwcGxlUGF5QnV0dG9uVHlwZShv
LmFwcGxlUGF5QnV0dG9uVHlwZSkKICNlbmRpZgotICAgICwgbV9vYmplY3RGaXQoby5tX29iamVj
dEZpdCkKLSAgICAsIG1fYnJlYWtCZWZvcmUoby5tX2JyZWFrQmVmb3JlKQotICAgICwgbV9icmVh
a0FmdGVyKG8ubV9icmVha0FmdGVyKQotICAgICwgbV9icmVha0luc2lkZShvLm1fYnJlYWtJbnNp
ZGUpCi0gICAgLCBtX3Jlc2l6ZShvLm1fcmVzaXplKQotICAgICwgbV9oYXNBdHRyQ29udGVudChv
Lm1faGFzQXR0ckNvbnRlbnQpCi0gICAgLCBtX2lzUGxhY2Vob2xkZXJTdHlsZShvLm1faXNQbGFj
ZWhvbGRlclN0eWxlKQorICAgICwgb2JqZWN0Rml0KG8ub2JqZWN0Rml0KQorICAgICwgYnJlYWtC
ZWZvcmUoby5icmVha0JlZm9yZSkKKyAgICAsIGJyZWFrQWZ0ZXIoby5icmVha0FmdGVyKQorICAg
ICwgYnJlYWtJbnNpZGUoby5icmVha0luc2lkZSkKKyAgICAsIHJlc2l6ZShvLnJlc2l6ZSkKKyAg
ICAsIGhhc0F0dHJDb250ZW50KG8uaGFzQXR0ckNvbnRlbnQpCisgICAgLCBpc1BsYWNlaG9sZGVy
U3R5bGUoby5pc1BsYWNlaG9sZGVyU3R5bGUpCiB7CiB9CiAKQEAgLTIxOSwxMjMgKzIxOSwxMjMg
QEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6flN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEo
KQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcGFjaXR5
ID09IG8ubV9vcGFjaXR5Ci0gICAgICAgICYmIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBv
Lm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcgotICAgICAgICAmJiBtX2FzcGVjdFJhdGlvTnVtZXJh
dG9yID09IG8ubV9hc3BlY3RSYXRpb051bWVyYXRvcgotICAgICAgICAmJiBtX3BlcnNwZWN0aXZl
ID09IG8ubV9wZXJzcGVjdGl2ZQotICAgICAgICAmJiBtX3BlcnNwZWN0aXZlT3JpZ2luWCA9PSBv
Lm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5ZID09
IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkKKyAgICByZXR1cm4gb3BhY2l0eSA9PSBvLm9wYWNpdHkK
KyAgICAgICAgJiYgYXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBvLmFzcGVjdFJhdGlvRGVub21p
bmF0b3IKKyAgICAgICAgJiYgYXNwZWN0UmF0aW9OdW1lcmF0b3IgPT0gby5hc3BlY3RSYXRpb051
bWVyYXRvcgorICAgICAgICAmJiBwZXJzcGVjdGl2ZSA9PSBvLnBlcnNwZWN0aXZlCisgICAgICAg
ICYmIHBlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLnBlcnNwZWN0aXZlT3JpZ2luWAorICAgICAgICAm
JiBwZXJzcGVjdGl2ZU9yaWdpblkgPT0gby5wZXJzcGVjdGl2ZU9yaWdpblkKICAgICAgICAgJiYg
bGluZUNsYW1wID09IG8ubGluZUNsYW1wCi0gICAgICAgICYmIG1faW5pdGlhbExldHRlciA9PSBv
Lm1faW5pdGlhbExldHRlcgorICAgICAgICAmJiBpbml0aWFsTGV0dGVyID09IG8uaW5pdGlhbExl
dHRlcgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgJiYgbV9kYXNoYm9h
cmRSZWdpb25zID09IG8ubV9kYXNoYm9hcmRSZWdpb25zCisgICAgICAgICYmIGRhc2hib2FyZFJl
Z2lvbnMgPT0gby5kYXNoYm9hcmRSZWdpb25zCiAjZW5kaWYKLSAgICAgICAgJiYgbV9kZXByZWNh
dGVkRmxleGlibGVCb3ggPT0gby5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveAotICAgICAgICAmJiBt
X2ZsZXhpYmxlQm94ID09IG8ubV9mbGV4aWJsZUJveAotICAgICAgICAmJiBtX21hcnF1ZWUgPT0g
by5tX21hcnF1ZWUKLSAgICAgICAgJiYgbV9tdWx0aUNvbCA9PSBvLm1fbXVsdGlDb2wKLSAgICAg
ICAgJiYgbV90cmFuc2Zvcm0gPT0gby5tX3RyYW5zZm9ybQotICAgICAgICAmJiBtX2ZpbHRlciA9
PSBvLm1fZmlsdGVyCisgICAgICAgICYmIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCA9PSBvLmRlcHJl
Y2F0ZWRGbGV4aWJsZUJveAorICAgICAgICAmJiBmbGV4aWJsZUJveCA9PSBvLmZsZXhpYmxlQm94
CisgICAgICAgICYmIG1hcnF1ZWUgPT0gby5tYXJxdWVlCisgICAgICAgICYmIG11bHRpQ29sID09
IG8ubXVsdGlDb2wKKyAgICAgICAgJiYgdHJhbnNmb3JtID09IG8udHJhbnNmb3JtCisgICAgICAg
ICYmIGZpbHRlciA9PSBvLmZpbHRlcgogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCi0gICAg
ICAgICYmIG1fYmFja2Ryb3BGaWx0ZXIgPT0gby5tX2JhY2tkcm9wRmlsdGVyCisgICAgICAgICYm
IGJhY2tkcm9wRmlsdGVyID09IG8uYmFja2Ryb3BGaWx0ZXIKICNlbmRpZgogI2lmIEVOQUJMRShD
U1NfR1JJRF9MQVlPVVQpCi0gICAgICAgICYmIG1fZ3JpZCA9PSBvLm1fZ3JpZAotICAgICAgICAm
JiBtX2dyaWRJdGVtID09IG8ubV9ncmlkSXRlbQorICAgICAgICAmJiBncmlkID09IG8uZ3JpZAor
ICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJdGVtCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQotICAgICAgICAmJiBtX3Njcm9sbFNuYXBQb3J0ID09IG8ubV9zY3JvbGxT
bmFwUG9ydAotICAgICAgICAmJiBtX3Njcm9sbFNuYXBBcmVhID09IG8ubV9zY3JvbGxTbmFwQXJl
YQorICAgICAgICAmJiBzY3JvbGxTbmFwUG9ydCA9PSBvLnNjcm9sbFNuYXBQb3J0CisgICAgICAg
ICYmIHNjcm9sbFNuYXBBcmVhID09IG8uc2Nyb2xsU25hcEFyZWEKICNlbmRpZgogICAgICAgICAm
JiBjb250ZW50RGF0YUVxdWl2YWxlbnQobykKLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX2NvdW50ZXJEaXJlY3RpdmVzLCBvLm1fY291bnRlckRpcmVjdGl2ZXMpCi0gICAgICAg
ICYmIG1fYWx0VGV4dCA9PSBvLm1fYWx0VGV4dAotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1
YWxEYXRhKG1fYm94U2hhZG93LCBvLm1fYm94U2hhZG93KQotICAgICAgICAmJiBhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG1fd2lsbENoYW5nZSwgby5tX3dpbGxDaGFuZ2UpCi0gICAgICAgICYmIGFy
ZVBvaW50aW5nVG9FcXVhbERhdGEobV9ib3hSZWZsZWN0LCBvLm1fYm94UmVmbGVjdCkKLSAgICAg
ICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX2FuaW1hdGlvbnMsIG8ubV9hbmltYXRpb25z
KQotICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fdHJhbnNpdGlvbnMsIG8ubV90
cmFuc2l0aW9ucykKLSAgICAgICAgJiYgbV9tYXNrID09IG8ubV9tYXNrCi0gICAgICAgICYmIG1f
bWFza0JveEltYWdlID09IG8ubV9tYXNrQm94SW1hZ2UKLSAgICAgICAgJiYgbV9wYWdlU2l6ZSA9
PSBvLm1fcGFnZVNpemUKLSAgICAgICAgJiYgbV9vYmplY3RQb3NpdGlvbiA9PSBvLm1fb2JqZWN0
UG9zaXRpb24KLSAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3NoYXBlT3V0c2lk
ZSwgby5tX3NoYXBlT3V0c2lkZSkKLSAgICAgICAgJiYgbV9zaGFwZU1hcmdpbiA9PSBvLm1fc2hh
cGVNYXJnaW4KLSAgICAgICAgJiYgbV9zaGFwZUltYWdlVGhyZXNob2xkID09IG8ubV9zaGFwZUlt
YWdlVGhyZXNob2xkCi0gICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9jbGlwUGF0
aCwgby5tX2NsaXBQYXRoKQotICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uQ29sb3IgPT0gby5t
X3RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua1RleHREZWNvcmF0
aW9uQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcgotICAgICAgICAm
JiBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yID09IG8ubV92aXNpdGVkTGlua0JhY2tncm91
bmRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yID09IG8ubV92aXNp
dGVkTGlua091dGxpbmVDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0
ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
Ci0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA9PSBvLm1fdmlzaXRlZExp
bmtCb3JkZXJUb3BDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IKLSAgICAgICAgJiYgbV9vcmRl
ciA9PSBvLm1fb3JkZXIKLSAgICAgICAgJiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFk
Ci0gICAgICAgICYmIG1fYWxpZ25Db250ZW50ID09IG8ubV9hbGlnbkNvbnRlbnQKLSAgICAgICAg
JiYgbV9hbGlnbkl0ZW1zID09IG8ubV9hbGlnbkl0ZW1zCi0gICAgICAgICYmIG1fYWxpZ25TZWxm
ID09IG8ubV9hbGlnblNlbGYKLSAgICAgICAgJiYgbV9qdXN0aWZ5Q29udGVudCA9PSBvLm1fanVz
dGlmeUNvbnRlbnQKLSAgICAgICAgJiYgbV9qdXN0aWZ5SXRlbXMgPT0gby5tX2p1c3RpZnlJdGVt
cwotICAgICAgICAmJiBtX2p1c3RpZnlTZWxmID09IG8ubV9qdXN0aWZ5U2VsZgotICAgICAgICAm
JiBtX3JlZ2lvblRocmVhZCA9PSBvLm1fcmVnaW9uVGhyZWFkCi0gICAgICAgICYmIG1fcmVnaW9u
RnJhZ21lbnQgPT0gby5tX3JlZ2lvbkZyYWdtZW50Ci0gICAgICAgICYmIG1fcGFnZVNpemVUeXBl
ID09IG8ubV9wYWdlU2l6ZVR5cGUKLSAgICAgICAgJiYgbV90cmFuc2Zvcm1TdHlsZTNEID09IG8u
bV90cmFuc2Zvcm1TdHlsZTNECi0gICAgICAgICYmIG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IG8u
bV9iYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShj
b3VudGVyRGlyZWN0aXZlcywgby5jb3VudGVyRGlyZWN0aXZlcykKKyAgICAgICAgJiYgYWx0VGV4
dCA9PSBvLmFsdFRleHQKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShib3hTaGFk
b3csIG8uYm94U2hhZG93KQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKHdpbGxD
aGFuZ2UsIG8ud2lsbENoYW5nZSkKKyAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShi
b3hSZWZsZWN0LCBvLmJveFJlZmxlY3QpCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERh
dGEoYW5pbWF0aW9ucywgby5hbmltYXRpb25zKQorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1
YWxEYXRhKHRyYW5zaXRpb25zLCBvLnRyYW5zaXRpb25zKQorICAgICAgICAmJiBtYXNrID09IG8u
bWFzaworICAgICAgICAmJiBtYXNrQm94SW1hZ2UgPT0gby5tYXNrQm94SW1hZ2UKKyAgICAgICAg
JiYgcGFnZVNpemUgPT0gby5wYWdlU2l6ZQorICAgICAgICAmJiBvYmplY3RQb3NpdGlvbiA9PSBv
Lm9iamVjdFBvc2l0aW9uCisgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoc2hhcGVP
dXRzaWRlLCBvLnNoYXBlT3V0c2lkZSkKKyAgICAgICAgJiYgc2hhcGVNYXJnaW4gPT0gby5zaGFw
ZU1hcmdpbgorICAgICAgICAmJiBzaGFwZUltYWdlVGhyZXNob2xkID09IG8uc2hhcGVJbWFnZVRo
cmVzaG9sZAorICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKGNsaXBQYXRoLCBvLmNs
aXBQYXRoKQorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbkNvbG9yID09IG8udGV4dERlY29yYXRp
b25Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IgPT0gby52
aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IgPT0gby52aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcgorICAgICAgICAmJiB2
aXNpdGVkTGlua091dGxpbmVDb2xvciA9PSBvLnZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yCisgICAg
ICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID09IG8udmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3IKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yID09IG8udmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlclRvcENvbG9yCisgICAgICAgICYmIHZpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby52aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yCisg
ICAgICAgICYmIG9yZGVyID09IG8ub3JkZXIKKyAgICAgICAgJiYgZmxvd1RocmVhZCA9PSBvLmZs
b3dUaHJlYWQKKyAgICAgICAgJiYgYWxpZ25Db250ZW50ID09IG8uYWxpZ25Db250ZW50CisgICAg
ICAgICYmIGFsaWduSXRlbXMgPT0gby5hbGlnbkl0ZW1zCisgICAgICAgICYmIGFsaWduU2VsZiA9
PSBvLmFsaWduU2VsZgorICAgICAgICAmJiBqdXN0aWZ5Q29udGVudCA9PSBvLmp1c3RpZnlDb250
ZW50CisgICAgICAgICYmIGp1c3RpZnlJdGVtcyA9PSBvLmp1c3RpZnlJdGVtcworICAgICAgICAm
JiBqdXN0aWZ5U2VsZiA9PSBvLmp1c3RpZnlTZWxmCisgICAgICAgICYmIHJlZ2lvblRocmVhZCA9
PSBvLnJlZ2lvblRocmVhZAorICAgICAgICAmJiByZWdpb25GcmFnbWVudCA9PSBvLnJlZ2lvbkZy
YWdtZW50CisgICAgICAgICYmIHBhZ2VTaXplVHlwZSA9PSBvLnBhZ2VTaXplVHlwZQorICAgICAg
ICAmJiB0cmFuc2Zvcm1TdHlsZTNEID09IG8udHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAmJiBi
YWNrZmFjZVZpc2liaWxpdHkgPT0gby5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgJiYgdXNl
ckRyYWcgPT0gby51c2VyRHJhZwogICAgICAgICAmJiB0ZXh0T3ZlcmZsb3cgPT0gby50ZXh0T3Zl
cmZsb3cKICAgICAgICAgJiYgbWFyZ2luQmVmb3JlQ29sbGFwc2UgPT0gby5tYXJnaW5CZWZvcmVD
b2xsYXBzZQogICAgICAgICAmJiBtYXJnaW5BZnRlckNvbGxhcHNlID09IG8ubWFyZ2luQWZ0ZXJD
b2xsYXBzZQotICAgICAgICAmJiBtX2FwcGVhcmFuY2UgPT0gby5tX2FwcGVhcmFuY2UKLSAgICAg
ICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRlckZpdAotICAgICAgICAmJiBtX3RleHRDb21i
aW5lID09IG8ubV90ZXh0Q29tYmluZQotICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUg
PT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgJiYgYXBwZWFyYW5jZSA9PSBvLmFw
cGVhcmFuY2UKKyAgICAgICAgJiYgYm9yZGVyRml0ID09IG8uYm9yZGVyRml0CisgICAgICAgICYm
IHRleHRDb21iaW5lID09IG8udGV4dENvbWJpbmUKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25T
dHlsZSA9PSBvLnRleHREZWNvcmF0aW9uU3R5bGUKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgICAgICAmJiBtX3RvdWNoQWN0aW9uID09IG8ubV90b3VjaEFjdGlvbgorICAgICAgICAmJiB0
b3VjaEFjdGlvbiA9PSBvLnRvdWNoQWN0aW9uCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0NPTVBP
U0lUSU5HKQotICAgICAgICAmJiBtX2VmZmVjdGl2ZUJsZW5kTW9kZSA9PSBvLm1fZWZmZWN0aXZl
QmxlbmRNb2RlCi0gICAgICAgICYmIG1faXNvbGF0aW9uID09IG8ubV9pc29sYXRpb24KKyAgICAg
ICAgJiYgZWZmZWN0aXZlQmxlbmRNb2RlID09IG8uZWZmZWN0aXZlQmxlbmRNb2RlCisgICAgICAg
ICYmIGlzb2xhdGlvbiA9PSBvLmlzb2xhdGlvbgogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKLSAgICAgICAgJiYgbV9hcHBsZVBheUJ1dHRvblN0eWxlID09IG8ubV9hcHBsZVBheUJ1dHRv
blN0eWxlCi0gICAgICAgICYmIG1fYXBwbGVQYXlCdXR0b25UeXBlID09IG8ubV9hcHBsZVBheUJ1
dHRvblR5cGUKKyAgICAgICAgJiYgYXBwbGVQYXlCdXR0b25TdHlsZSA9PSBvLmFwcGxlUGF5QnV0
dG9uU3R5bGUKKyAgICAgICAgJiYgYXBwbGVQYXlCdXR0b25UeXBlID09IG8uYXBwbGVQYXlCdXR0
b25UeXBlCiAjZW5kaWYKLSAgICAgICAgJiYgbV9hc3BlY3RSYXRpb1R5cGUgPT0gby5tX2FzcGVj
dFJhdGlvVHlwZQotICAgICAgICAmJiBtX29iamVjdEZpdCA9PSBvLm1fb2JqZWN0Rml0Ci0gICAg
ICAgICYmIG1fYnJlYWtBZnRlciA9PSBvLm1fYnJlYWtBZnRlcgotICAgICAgICAmJiBtX2JyZWFr
QmVmb3JlID09IG8ubV9icmVha0JlZm9yZQotICAgICAgICAmJiBtX2JyZWFrSW5zaWRlID09IG8u
bV9icmVha0luc2lkZQotICAgICAgICAmJiBtX3Jlc2l6ZSA9PSBvLm1fcmVzaXplCi0gICAgICAg
ICYmIG1faGFzQXR0ckNvbnRlbnQgPT0gby5tX2hhc0F0dHJDb250ZW50Ci0gICAgICAgICYmIG1f
aXNQbGFjZWhvbGRlclN0eWxlID09IG8ubV9pc1BsYWNlaG9sZGVyU3R5bGU7CisgICAgICAgICYm
IGFzcGVjdFJhdGlvVHlwZSA9PSBvLmFzcGVjdFJhdGlvVHlwZQorICAgICAgICAmJiBvYmplY3RG
aXQgPT0gby5vYmplY3RGaXQKKyAgICAgICAgJiYgYnJlYWtBZnRlciA9PSBvLmJyZWFrQWZ0ZXIK
KyAgICAgICAgJiYgYnJlYWtCZWZvcmUgPT0gby5icmVha0JlZm9yZQorICAgICAgICAmJiBicmVh
a0luc2lkZSA9PSBvLmJyZWFrSW5zaWRlCisgICAgICAgICYmIHJlc2l6ZSA9PSBvLnJlc2l6ZQor
ICAgICAgICAmJiBoYXNBdHRyQ29udGVudCA9PSBvLmhhc0F0dHJDb250ZW50CisgICAgICAgICYm
IGlzUGxhY2Vob2xkZXJTdHlsZSA9PSBvLmlzUGxhY2Vob2xkZXJTdHlsZTsKIH0KIAotYm9vbCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKK2Jvb2wgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEmIG90aGVyKSBjb25zdAogewotICAgIENvbnRlbnREYXRhKiBhID0gbV9jb250ZW50Lmdl
dCgpOwotICAgIENvbnRlbnREYXRhKiBiID0gby5tX2NvbnRlbnQuZ2V0KCk7Ci0KKyAgICBhdXRv
KiBhID0gY29udGVudC5nZXQoKTsKKyAgICBhdXRvKiBiID0gb3RoZXIuY29udGVudC5nZXQoKTsK
ICAgICB3aGlsZSAoYSAmJiBiICYmICphID09ICpiKSB7CiAgICAgICAgIGEgPSBhLT5uZXh0KCk7
CiAgICAgICAgIGIgPSBiLT5uZXh0KCk7CiAgICAgfQotCiAgICAgcmV0dXJuICFhICYmICFiOwog
fQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Omhhc0ZpbHRlcnMoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2ZpbHRlci5nZXQoKSAmJiAhbV9maWx0ZXItPm1fb3BlcmF0aW9ucy5p
c0VtcHR5KCk7CisgICAgcmV0dXJuICFmaWx0ZXItPm9wZXJhdGlvbnMuaXNFbXB0eSgpOwogfQog
CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKKwogYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpoYXNCYWNrZHJvcEZpbHRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tk
cm9wRmlsdGVyLmdldCgpICYmICFtX2JhY2tkcm9wRmlsdGVyLT5tX29wZXJhdGlvbnMuaXNFbXB0
eSgpOworICAgIHJldHVybiAhYmFja2Ryb3BGaWx0ZXItPm9wZXJhdGlvbnMuaXNFbXB0eSgpOwog
fQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
aW5kZXggMDRjMDliYWRmZmY4OTlmMzc0YTM0ODY1ZWFlY2FmNTkzYWI1OWUwZS4uYmY5YmEyMDc0
NTBjNWRhYmM0OTY3NzdlYjFkMzZmNTdiOWI5ODZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEdyYWhh
bSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ0LDM0
ICs0NCwyNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25MaXN0Owor
Y2xhc3MgQ29udGVudERhdGE7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhOwogY2xhc3MgU3R5bGVGaWx0ZXJEYXRhOwogY2xhc3MgU3R5bGVG
bGV4aWJsZUJveERhdGE7Ci0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKIGNsYXNzIFN0eWxl
R3JpZERhdGE7CiBjbGFzcyBTdHlsZUdyaWRJdGVtRGF0YTsKLSNlbmRpZgogY2xhc3MgU3R5bGVN
YXJxdWVlRGF0YTsKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhOwogY2xhc3MgU3R5bGVSZWZsZWN0
aW9uOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKLWNsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YTsKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9ydDsKIGNs
YXNzIFN0eWxlU2Nyb2xsU25hcEFyZWE7Ci0jZW5kaWYKK2NsYXNzIFN0eWxlU2Nyb2xsU25hcFBv
cnQ7CitjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7CiAKLWNsYXNzIENvbnRlbnREYXRhOwogc3Ry
dWN0IExlbmd0aFNpemU7Ci0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiBzdHJ1Y3Qg
U3R5bGVEYXNoYm9hcmRSZWdpb247Ci0jZW5kaWYKIAogLy8gUGFnZSBzaXplIHR5cGUuCi0vLyBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjptX3BhZ2VTaXplIGlzIG1lYW5pbmdmdWwgb25seSB3
aGVuIAotLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6bV9wYWdlU2l6ZVR5cGUgaXMgUEFH
RV9TSVpFX1JFU09MVkVELgorLy8gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6cGFnZVNpemUg
aXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4KKy8vIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnBh
Z2VTaXplVHlwZSBpcyBQQUdFX1NJWkVfUkVTT0xWRUQuCiBlbnVtIFBhZ2VTaXplVHlwZSB7CiAg
ICAgUEFHRV9TSVpFX0FVVE8sIC8vIHNpemU6IGF1dG8KICAgICBQQUdFX1NJWkVfQVVUT19MQU5E
U0NBUEUsIC8vIHNpemU6IGxhbmRzY2FwZQpAQCAtODksMTQ0ICs4MiwxNDcgQEAgcHVibGljOgog
ICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KIAogICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmlsdGVycygpIGNvbnN0OworCiAj
aWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICBib29sIGhhc0JhY2tkcm9wRmlsdGVycygp
IGNvbnN0OwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9v
cGFjaXR5IDwgMTsgfQogCi0gICAgYm9vbCBoYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucyB8fCBtX3RyYW5zaXRpb25zOyB9CisgICAgYm9vbCBo
YXNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gb3BhY2l0eSA8IDE7IH0KIAotICAgIGZsb2F0IG1f
b3BhY2l0eTsKKyAgICBib29sIGhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gYW5pbWF0aW9ucyB8fCB0cmFuc2l0aW9uczsgfQogCi0gICAgZmxvYXQgbV9hc3BlY3RS
YXRpb0Rlbm9taW5hdG9yOwotICAgIGZsb2F0IG1fYXNwZWN0UmF0aW9OdW1lcmF0b3I7CisgICAg
ZmxvYXQgb3BhY2l0eTsKIAotICAgIGZsb2F0IG1fcGVyc3BlY3RpdmU7Ci0gICAgTGVuZ3RoIG1f
cGVyc3BlY3RpdmVPcmlnaW5YOwotICAgIExlbmd0aCBtX3BlcnNwZWN0aXZlT3JpZ2luWTsKKyAg
ICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9yOworICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVt
ZXJhdG9yOworCisgICAgZmxvYXQgcGVyc3BlY3RpdmU7CisgICAgTGVuZ3RoIHBlcnNwZWN0aXZl
T3JpZ2luWDsKKyAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5ZOwogCiAgICAgTGluZUNsYW1w
VmFsdWUgbGluZUNsYW1wOyAvLyBBbiBBcHBsZSBleHRlbnNpb24uCiAgICAgCi0gICAgSW50U2l6
ZSBtX2luaXRpYWxMZXR0ZXI7CisgICAgSW50U2l6ZSBpbml0aWFsTGV0dGVyOwogCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4g
bV9kYXNoYm9hcmRSZWdpb25zOworICAgIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZGFz
aGJvYXJkUmVnaW9uczsKICNlbmRpZgogCi0gICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGE+IG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94OyAvLyBGbGV4aWJsZSBib3ggcHJv
cGVydGllcwotICAgIERhdGFSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IG1fZmxleGlibGVCb3g7
Ci0gICAgRGF0YVJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBtX21hcnF1ZWU7IC8vIE1hcnF1ZWUgcHJv
cGVydGllcwotICAgIERhdGFSZWY8U3R5bGVNdWx0aUNvbERhdGE+IG1fbXVsdGlDb2w7IC8vICBD
U1MzIG11bHRpY29sIHByb3BlcnRpZXMKLSAgICBEYXRhUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4g
bV90cmFuc2Zvcm07IC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIChyb3RhdGUsIHNjYWxlLCBza2V3
LCBldGMuKQotICAgIERhdGFSZWY8U3R5bGVGaWx0ZXJEYXRhPiBtX2ZpbHRlcjsgLy8gRmlsdGVy
IG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZURl
cHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGRlcHJlY2F0ZWRGbGV4aWJsZUJveDsgLy8gRmxleGli
bGUgYm94IHByb3BlcnRpZXMKKyAgICBEYXRhUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBmbGV4
aWJsZUJveDsKKyAgICBEYXRhUmVmPFN0eWxlTWFycXVlZURhdGE+IG1hcnF1ZWU7IC8vIE1hcnF1
ZWUgcHJvcGVydGllcworICAgIERhdGFSZWY8U3R5bGVNdWx0aUNvbERhdGE+IG11bHRpQ29sOyAv
LyAgQ1NTMyBtdWx0aWNvbCBwcm9wZXJ0aWVzCisgICAgRGF0YVJlZjxTdHlsZVRyYW5zZm9ybURh
dGE+IHRyYW5zZm9ybTsgLy8gVHJhbnNmb3JtIHByb3BlcnRpZXMgKHJvdGF0ZSwgc2NhbGUsIHNr
ZXcsIGV0Yy4pCisgICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+IGZpbHRlcjsgLy8gRmlsdGVy
IG9wZXJhdGlvbnMgKHVybCwgc2VwaWEsIGJsdXIsIGV0Yy4pCisKICNpZiBFTkFCTEUoRklMVEVS
U19MRVZFTF8yKQotICAgIERhdGFSZWY8U3R5bGVGaWx0ZXJEYXRhPiBtX2JhY2tkcm9wRmlsdGVy
OyAvLyBGaWx0ZXIgb3BlcmF0aW9ucyAodXJsLCBzZXBpYSwgYmx1ciwgZXRjLikKKyAgICBEYXRh
UmVmPFN0eWxlRmlsdGVyRGF0YT4gYmFja2Ryb3BGaWx0ZXI7IC8vIEZpbHRlciBvcGVyYXRpb25z
ICh1cmwsIHNlcGlhLCBibHVyLCBldGMuKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0dSSURf
TEFZT1VUKQotICAgIERhdGFSZWY8U3R5bGVHcmlkRGF0YT4gbV9ncmlkOwotICAgIERhdGFSZWY8
U3R5bGVHcmlkSXRlbURhdGE+IG1fZ3JpZEl0ZW07CisgICAgRGF0YVJlZjxTdHlsZUdyaWREYXRh
PiBncmlkOworICAgIERhdGFSZWY8U3R5bGVHcmlkSXRlbURhdGE+IGdyaWRJdGVtOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIERhdGFSZWY8U3R5bGVTY3JvbGxT
bmFwUG9ydD4gbV9zY3JvbGxTbmFwUG9ydDsKLSAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFy
ZWE+IG1fc2Nyb2xsU25hcEFyZWE7CisgICAgRGF0YVJlZjxTdHlsZVNjcm9sbFNuYXBQb3J0PiBz
Y3JvbGxTbmFwUG9ydDsKKyAgICBEYXRhUmVmPFN0eWxlU2Nyb2xsU25hcEFyZWE+IHNjcm9sbFNu
YXBBcmVhOwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IG1fY29u
dGVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gbV9jb3VudGVy
RGlyZWN0aXZlczsKLSAgICBTdHJpbmcgbV9hbHRUZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RGF0YT4gY29udGVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVjdGl2
ZU1hcD4gY291bnRlckRpcmVjdGl2ZXM7CisgICAgU3RyaW5nIGFsdFRleHQ7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9ib3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRl
Y29yYXRpb25zLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBib3hTaGFkb3c7IC8v
IEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgogCi0gICAgUmVmUHRyPFdpbGxDaGFuZ2VEYXRh
PiBtX3dpbGxDaGFuZ2U7IC8vIE51bGwgaW5kaWNhdGVzICdhdXRvJy4KKyAgICBSZWZQdHI8V2ls
bENoYW5nZURhdGE+IHdpbGxDaGFuZ2U7IC8vIE51bGwgaW5kaWNhdGVzICdhdXRvJy4KICAgICAK
LSAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBtX2JveFJlZmxlY3Q7CisgICAgUmVmUHRyPFN0
eWxlUmVmbGVjdGlvbj4gYm94UmVmbGVjdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRp
b25MaXN0PiBtX2FuaW1hdGlvbnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+
IG1fdHJhbnNpdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IGFuaW1h
dGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IHRyYW5zaXRpb25zOwog
Ci0gICAgRmlsbExheWVyIG1fbWFzazsKLSAgICBOaW5lUGllY2VJbWFnZSBtX21hc2tCb3hJbWFn
ZTsKKyAgICBGaWxsTGF5ZXIgbWFzazsKKyAgICBOaW5lUGllY2VJbWFnZSBtYXNrQm94SW1hZ2U7
CiAKLSAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7Ci0gICAgTGVuZ3RoUG9pbnQgbV9vYmplY3RQ
b3NpdGlvbjsKKyAgICBMZW5ndGhTaXplIHBhZ2VTaXplOworICAgIExlbmd0aFBvaW50IG9iamVj
dFBvc2l0aW9uOwogCi0gICAgUmVmUHRyPFNoYXBlVmFsdWU+IG1fc2hhcGVPdXRzaWRlOwotICAg
IExlbmd0aCBtX3NoYXBlTWFyZ2luOwotICAgIGZsb2F0IG1fc2hhcGVJbWFnZVRocmVzaG9sZDsK
KyAgICBSZWZQdHI8U2hhcGVWYWx1ZT4gc2hhcGVPdXRzaWRlOworICAgIExlbmd0aCBzaGFwZU1h
cmdpbjsKKyAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkOwogCi0gICAgUmVmUHRyPENsaXBQ
YXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRoOworICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4g
Y2xpcFBhdGg7CiAKLSAgICBDb2xvciBtX3RleHREZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3Ig
bV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlu
a0JhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOwot
ICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclRv
cENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBD
b2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dERlY29y
YXRpb25Db2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKKyAgICBD
b2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRl
ckxlZnRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7CisgICAg
Q29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yOwogCi0gICAgaW50IG1fb3JkZXI7CisgICAgaW50IG9yZGVyOwogCi0g
ICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKLSAgICBBdG9taWNTdHJpbmcgbV9yZWdpb25U
aHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIGZsb3dUaHJlYWQ7CisgICAgQXRvbWljU3RyaW5nIHJl
Z2lvblRocmVhZDsKIAotICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgbV9hbGlnbkNvbnRl
bnQ7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduSXRlbXM7Ci0gICAgU3R5bGVT
ZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduU2VsZjsKLSAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnRE
YXRhIG1fanVzdGlmeUNvbnRlbnQ7Ci0gICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3Rp
ZnlJdGVtczsKLSAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlmeVNlbGY7CisgICAg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGlnbkNvbnRlbnQ7CisgICAgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSBhbGlnbkl0ZW1zOworICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25T
ZWxmOworICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEganVzdGlmeUNvbnRlbnQ7CisgICAg
U3R5bGVTZWxmQWxpZ25tZW50RGF0YSBqdXN0aWZ5SXRlbXM7CisgICAgU3R5bGVTZWxmQWxpZ25t
ZW50RGF0YSBqdXN0aWZ5U2VsZjsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdW5z
aWduZWQgbV90b3VjaEFjdGlvbiA6IDE7IC8vIFRvdWNoQWN0aW9uCisgICAgdW5zaWduZWQgdG91
Y2hBY3Rpb24gOiAxOyAvLyBUb3VjaEFjdGlvbgogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCBtX3Jl
Z2lvbkZyYWdtZW50IDogMTsgLy8gUmVnaW9uRnJhZ21lbnQKKyAgICB1bnNpZ25lZCByZWdpb25G
cmFnbWVudCA6IDE7IC8vIFJlZ2lvbkZyYWdtZW50CiAKLSAgICB1bnNpZ25lZCBtX3BhZ2VTaXpl
VHlwZSA6IDI7IC8vIFBhZ2VTaXplVHlwZQotICAgIHVuc2lnbmVkIG1fdHJhbnNmb3JtU3R5bGUz
RCA6IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECi0gICAgdW5zaWduZWQgbV9iYWNrZmFjZVZpc2li
aWxpdHkgOiAxOyAvLyBFQmFja2ZhY2VWaXNpYmlsaXR5CisgICAgdW5zaWduZWQgcGFnZVNpemVU
eXBlIDogMjsgLy8gUGFnZVNpemVUeXBlCisgICAgdW5zaWduZWQgdHJhbnNmb3JtU3R5bGUzRCA6
IDE7IC8vIEVUcmFuc2Zvcm1TdHlsZTNECisgICAgdW5zaWduZWQgYmFja2ZhY2VWaXNpYmlsaXR5
IDogMTsgLy8gRUJhY2tmYWNlVmlzaWJpbGl0eQogCiAKICAgICB1bnNpZ25lZCB1c2VyRHJhZyA6
IDI7IC8vIEVVc2VyRHJhZwogICAgIHVuc2lnbmVkIHRleHRPdmVyZmxvdyA6IDE7IC8vIFdoZXRo
ZXIgb3Igbm90IGxpbmVzIHRoYXQgc3BpbGwgb3V0IHNob3VsZCBiZSB0cnVuY2F0ZWQgd2l0aCAi
Li4uIgogICAgIHVuc2lnbmVkIG1hcmdpbkJlZm9yZUNvbGxhcHNlIDogMjsgLy8gRU1hcmdpbkNv
bGxhcHNlCiAgICAgdW5zaWduZWQgbWFyZ2luQWZ0ZXJDb2xsYXBzZSA6IDI7IC8vIEVNYXJnaW5D
b2xsYXBzZQotICAgIHVuc2lnbmVkIG1fYXBwZWFyYW5jZSA6IDY7IC8vIEVBcHBlYXJhbmNlCi0g
ICAgdW5zaWduZWQgbV9ib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0Ci0gICAgdW5zaWduZWQg
bV90ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1jb21iaW5lIHByb3BlcnRpZXMKKyAgICB1
bnNpZ25lZCBhcHBlYXJhbmNlIDogNjsgLy8gRUFwcGVhcmFuY2UKKyAgICB1bnNpZ25lZCBib3Jk
ZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0CisgICAgdW5zaWduZWQgdGV4dENvbWJpbmUgOiAxOyAv
LyBDU1MzIHRleHQtY29tYmluZSBwcm9wZXJ0aWVzCiAKLSAgICB1bnNpZ25lZCBtX3RleHREZWNv
cmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0RGVjb3JhdGlvblN0eWxlCisgICAgdW5zaWduZWQgdGV4
dERlY29yYXRpb25TdHlsZSA6IDM7IC8vIFRleHREZWNvcmF0aW9uU3R5bGUKIAotICAgIHVuc2ln
bmVkIG1fYXNwZWN0UmF0aW9UeXBlIDogMjsKKyAgICB1bnNpZ25lZCBhc3BlY3RSYXRpb1R5cGUg
OiAyOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICB1bnNpZ25lZCBtX2VmZmVj
dGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQotICAgIHVuc2lnbmVkIG1faXNvbGF0aW9u
IDogMTsgLy8gSXNvbGF0aW9uCisgICAgdW5zaWduZWQgZWZmZWN0aXZlQmxlbmRNb2RlOiA1OyAv
LyBFQmxlbmRNb2RlCisgICAgdW5zaWduZWQgaXNvbGF0aW9uIDogMTsgLy8gSXNvbGF0aW9uCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgdW5zaWduZWQgbV9hcHBsZVBheUJ1
dHRvblN0eWxlIDogMjsKLSAgICB1bnNpZ25lZCBtX2FwcGxlUGF5QnV0dG9uVHlwZSA6IDM7Cisg
ICAgdW5zaWduZWQgYXBwbGVQYXlCdXR0b25TdHlsZSA6IDI7CisgICAgdW5zaWduZWQgYXBwbGVQ
YXlCdXR0b25UeXBlIDogMzsKICNlbmRpZgogCi0gICAgdW5zaWduZWQgbV9vYmplY3RGaXQgOiAz
OyAvLyBPYmplY3RGaXQKKyAgICB1bnNpZ25lZCBvYmplY3RGaXQgOiAzOyAvLyBPYmplY3RGaXQK
ICAgICAKLSAgICB1bnNpZ25lZCBtX2JyZWFrQmVmb3JlIDogNDsgLy8gQnJlYWtCZXR3ZWVuCi0g
ICAgdW5zaWduZWQgbV9icmVha0FmdGVyIDogNDsKLSAgICB1bnNpZ25lZCBtX2JyZWFrSW5zaWRl
IDogMzsgLy8gQnJlYWtJbnNpZGUKLSAgICB1bnNpZ25lZCBtX3Jlc2l6ZSA6IDI7IC8vIEVSZXNp
emUKKyAgICB1bnNpZ25lZCBicmVha0JlZm9yZSA6IDQ7IC8vIEJyZWFrQmV0d2VlbgorICAgIHVu
c2lnbmVkIGJyZWFrQWZ0ZXIgOiA0OworICAgIHVuc2lnbmVkIGJyZWFrSW5zaWRlIDogMzsgLy8g
QnJlYWtJbnNpZGUKKyAgICB1bnNpZ25lZCByZXNpemUgOiAyOyAvLyBFUmVzaXplCiAKLSAgICB1
bnNpZ25lZCBtX2hhc0F0dHJDb250ZW50IDogMTsKKyAgICB1bnNpZ25lZCBoYXNBdHRyQ29udGVu
dCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX2lzUGxhY2Vob2xkZXJTdHlsZSA6IDE7CisgICAgdW5z
aWduZWQgaXNQbGFjZWhvbGRlclN0eWxlIDogMTsKIAogcHJpdmF0ZToKICAgICBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCmluZGV4IGVhZjMxMGI2M2Q2MWFkMWNjMTA0OGIw
YzY4MmFjZmVkNTJkOWFmYTYuLmVhZjdhNmE0MzdlOTM2MTE2ODNiZTZhMWE5ZTQzYmEwMDgwYTM5
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5z
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRy
YW5zZm9ybURhdGEuY3BwCkBAIC0yNywxOSArMjcsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoKQotICAgIDogbV9vcGVy
YXRpb25zKFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtKCkpCi0gICAgLCBtX3goUmVuZGVy
U3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkpCi0gICAgLCBtX3koUmVuZGVyU3R5bGU6
OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkpCi0gICAgLCBtX3ooUmVuZGVyU3R5bGU6OmluaXRp
YWxUcmFuc2Zvcm1PcmlnaW5aKCkpCisgICAgOiBvcGVyYXRpb25zKFJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNmb3JtKCkpCisgICAgLCB4KFJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3Jp
Z2luWCgpKQorICAgICwgeShSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSkK
KyAgICAsIHooUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aKCkpCiB7CiB9CiAK
LWlubGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNmb3JtRGF0YShjb25zdCBTdHls
ZVRyYW5zZm9ybURhdGEmIG8pCitpbmxpbmUgU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5z
Zm9ybURhdGEoY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50
ZWQ8U3R5bGVUcmFuc2Zvcm1EYXRhPigpCi0gICAgLCBtX29wZXJhdGlvbnMoby5tX29wZXJhdGlv
bnMpCi0gICAgLCBtX3goby5tX3gpCi0gICAgLCBtX3koby5tX3kpCi0gICAgLCBtX3ooby5tX3op
CisgICAgLCBvcGVyYXRpb25zKG90aGVyLm9wZXJhdGlvbnMpCisgICAgLCB4KG90aGVyLngpCisg
ICAgLCB5KG90aGVyLnkpCisgICAgLCB6KG90aGVyLnopCiB7CiB9CiAKQEAgLTQ4LDkgKzQ4LDkg
QEAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gU3R5bGVUcmFuc2Zvcm1EYXRhOjpjb3B5KCkgY29u
c3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRyYW5zZm9ybURhdGEoKnRoaXMpKTsK
IH0KIAotYm9vbCBTdHlsZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFu
c2Zvcm1EYXRhJiBvKSBjb25zdAorYm9vbCBTdHlsZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV94
ID09IG8ubV94ICYmIG1feSA9PSBvLm1feSAmJiBtX3ogPT0gby5tX3ogJiYgbV9vcGVyYXRpb25z
ID09IG8ubV9vcGVyYXRpb25zOworICAgIHJldHVybiB4ID09IG90aGVyLnggJiYgeSA9PSBvdGhl
ci55ICYmIHogPT0gb3RoZXIueiAmJiBvcGVyYXRpb25zID09IG90aGVyLm9wZXJhdGlvbnM7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaAppbmRleCAyZWEwNzk1YjZhZWRjMTUwMzRm
N2JmMjhmM2Q4ZmEzNjIyZWVkOGNhLi42YjQ2YTM1NmI0MWZjMWI2MTIzZTgyYzQ3ZDIxMDYwM2Fh
YWM5MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVU
cmFuc2Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VHJhbnNmb3JtRGF0YS5oCkBAIC0zNiwxOCArMzYsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlVHJhbnNmb3JtRGF0YSk7IH0KICAgICBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkg
Y29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBv
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBv
KSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNpemUoKTsgfQorICAgIGJvb2wgaGFz
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gb3BlcmF0aW9ucy5zaXplKCk7IH0KIAotICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgbV9vcGVyYXRpb25zOwotICAgIExlbmd0aCBtX3g7Ci0gICAgTGVu
Z3RoIG1feTsKLSAgICBmbG9hdCBtX3o7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRp
b25zOworICAgIExlbmd0aCB4OworICAgIExlbmd0aCB5OworICAgIGZsb2F0IHo7CiAKIHByaXZh
dGU6CiAgICAgU3R5bGVUcmFuc2Zvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCmluZGV4IDI1NmMxNTQ5NWZhNmUwMGM3
YWNjMGIxZGRiN2I3MGZmYzgyMjBiMmUuLjEwZmQ1ODg4ZjdmN2I2Nzg3NTQ0ZGQxMWViOGY3ZWVh
ZGIwMTgwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVZpc3VhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVZpc3VhbERhdGEuY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0
eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6IGhhc0NsaXAoZmFsc2UpCiAg
ICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkp
Ci0gICAgLCBtX3pvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCisgICAgLCB6b29tKFJl
bmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewogfQogCkBAIC0zNywxMiArMzcsMTIgQEAgU3R5
bGVWaXN1YWxEYXRhOjp+U3R5bGVWaXN1YWxEYXRhKCkKIHsKIH0KIAotaW5saW5lIFN0eWxlVmlz
dWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgbykKK2lubGlu
ZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEm
IG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVZpc3VhbERhdGE+KCkKLSAgICAsIGNsaXAo
by5jbGlwKQotICAgICwgaGFzQ2xpcChvLmhhc0NsaXApCi0gICAgLCB0ZXh0RGVjb3JhdGlvbihv
LnRleHREZWNvcmF0aW9uKQotICAgICwgbV96b29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KQorICAgICwgY2xpcChvdGhlci5jbGlwKQorICAgICwgaGFzQ2xpcChvdGhlci5oYXNDbGlwKQor
ICAgICwgdGV4dERlY29yYXRpb24ob3RoZXIudGV4dERlY29yYXRpb24pCisgICAgLCB6b29tKFJl
bmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKaW5kZXggYTZmNjhlZmQwNTBhN2RhMDhl
NjU1NzAxNjU1MDAwYWEwOGFkZmI0Mi4uZDQxOGFjYjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4
OGE4Y2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZp
c3VhbERhdGEuaApAQCAtMzcsMTkgKzM3LDE5IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVWaXN1
YWxEYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0eWxlVmlzdWFsRGF0YSgpOwogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgbykgY29uc3QKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBjbGlwID09IG8uY2xpcAotICAgICAgICAgICAgJiYgaGFzQ2xpcCA9PSBvLmhh
c0NsaXAKLSAgICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uID09IG8udGV4dERlY29yYXRpb24K
LSAgICAgICAgICAgICYmIG1fem9vbSA9PSBvLm1fem9vbTsKKyAgICAgICAgcmV0dXJuIGNsaXAg
PT0gb3RoZXIuY2xpcAorICAgICAgICAgICAgJiYgaGFzQ2xpcCA9PSBvdGhlci5oYXNDbGlwCisg
ICAgICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbiA9PSBvdGhlci50ZXh0RGVjb3JhdGlvbgorICAg
ICAgICAgICAgJiYgem9vbSA9PSBvdGhlci56b29tOwogICAgIH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8p
OyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsK
ICAgICBib29sIGhhc0NsaXAgOiAxOwogICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uIDogVGV4
dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRlZmluZWQgKm9ubHkqIGJ5IHRo
aXMgZWxlbWVudC4KLSAgICBmbG9hdCBtX3pvb207CisgICAgZmxvYXQgem9vbTsKIAogcHJpdmF0
ZToKICAgICBTdHlsZVZpc3VhbERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVBlbmRpbmdSZXNvdXJjZXMuY3BwCmluZGV4IGY3NDkzMzkwMzQyMDk1Y2UzMTc0MWNjZDJjMDAz
YTNmMmI2NDcyNzIuLjEwMzE5ZjgyM2VkMDMxNGIyZWIzODI1ODkwYmVjMzU3MDcwMzE1ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcApAQCAt
NjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBsb2FkUGVuZGluZ0ltYWdlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgYwogCiB2b2lkIGxvYWRQZW5kaW5n
UmVzb3VyY2VzKFJlbmRlclN0eWxlJiBzdHlsZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBF
bGVtZW50KiBlbGVtZW50KQogewotICAgIGZvciAoYXV0byogYmFja2dyb3VuZExheWVyID0gc3R5
bGUuYmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7IGJhY2tncm91bmRMYXllciA9
IGJhY2tncm91bmRMYXllci0+bmV4dCgpKQorICAgIGZvciAoYXV0byogYmFja2dyb3VuZExheWVy
ID0gJnN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsgYmFja2dyb3VuZExheWVyOyBiYWNrZ3JvdW5k
TGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkKICAgICAgICAgbG9hZFBlbmRpbmdJbWFn
ZShkb2N1bWVudCwgYmFja2dyb3VuZExheWVyLT5pbWFnZSgpLCBlbGVtZW50KTsKIAogICAgIGZv
ciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsg
Y29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IEVsZW1lbnQqCiAgICAgaWYgKGF1dG8qIHJlZmxlY3Rpb24gPSBzdHlsZS5i
b3hSZWZsZWN0KCkpCiAgICAgICAgIGxvYWRQZW5kaW5nSW1hZ2UoZG9jdW1lbnQsIHJlZmxlY3Rp
b24tPm1hc2soKS5pbWFnZSgpLCBlbGVtZW50KTsKIAotICAgIGZvciAoYXV0byogbWFza0xheWVy
ID0gc3R5bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+
bmV4dCgpKQorICAgIGZvciAoYXV0byogbWFza0xheWVyID0gJnN0eWxlLm1hc2tMYXllcnMoKTsg
bWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5leHQoKSkKICAgICAgICAgbG9hZFBl
bmRpbmdJbWFnZShkb2N1bWVudCwgbWFza0xheWVyLT5pbWFnZSgpLCBlbGVtZW50KTsKIAogICAg
IGlmIChzdHlsZS5zaGFwZU91dHNpZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZmUyOGZkNGVh
NWU1MDdlYjg2YjgzZTcxYWQ2ODA5ZjMwNjY5Mzg3NC4uNGU5YjJlMjcyZDJkMzlkYWE4MGRhMGNj
YTQzZGQyZmEwOTg5YzEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE4NDksNyArMTg0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAg
ICAgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQodGhpcyk7
CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCgqdGhpcyk7CiAg
ICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQ0ZTUwYjg3YWUwNmMwNDljN2YwY2I0M2Ni
ZTViNTgwMzMyNzJjMGIuLjRkMTE3MGJiZTFjNDI1M2MyNWEzNzhlZjkwMmJkYjEyZTk2NDQ0YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTM0NzAsOCArMzQ3MCw4IEBA
IC0gKHZvaWQpX2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzooRnJhbWVW
aWV3KilmcmFtZVZpZXcgZGFzaGJvYXJkCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW2tp
dCgmZnJhbWVWaWV3LT5mcmFtZSgpKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHdpZGdldDogZnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAg
IGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7Ci0gICAgICAgICAgICBbc2VsZiBfYWRkU2Ny
b2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lk
Z2V0LmdldCgpKSBkYXNoYm9hcmRSZWdpb25zOnJlZ2lvbnNdOworICAgICAgICBpZiAoaXM8RnJh
bWVWaWV3Pih3aWRnZXQpKSB7CisgICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9h
cmRSZWdpb25zRm9yRnJhbWVWaWV3OiZkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldC5nZXQoKSkg
ZGFzaGJvYXJkUmVnaW9uczpyZWdpb25zXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IDlhODczNThiMDg1NDM1MThkODA0NjYzMWI1MTkzMDNlMGEzMWM0YTcu
LmRmMWE1N2JhNDk0Y2IwNzIzMjFhNjcyYjk5MDJjMDgzYmE4ZTNhNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDU3
LDcgKzQ1Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHR1CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYW5pbWF0aW9uT2JqZWN0LT5maWxsTW9kZSgpKTsKICAgICBlbmNv
ZGVyIDw8IGFuaW1hdGlvbk9iamVjdC0+ZHVyYXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGFuaW1h
dGlvbk9iamVjdC0+aXRlcmF0aW9uQ291bnQoKTsKLSAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihl
bmNvZGVyLCBhbmltYXRpb25PYmplY3QtPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCkpOworICAgIGVu
Y29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIGFuaW1hdGlvbk9iamVjdC0+dGltaW5nRnVuY3Rp
b24oKSk7CiAKICAgICBjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYga2V5ZnJhbWVzID0gYW5pbWF0
aW9uLmtleWZyYW1lcygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVy
dHkoKSk7CkBAIC01MjcsNyArNTI3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBw
ZXJBbmltYXRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4dHVyZU1hcHAKICAgICBh
bmltYXRpb25PYmplY3QtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICBhbmltYXRpb25PYmpl
Y3QtPnNldEl0ZXJhdGlvbkNvdW50KGl0ZXJhdGlvbkNvdW50KTsKICAgICBpZiAodGltaW5nRnVu
Y3Rpb24pCi0gICAgICAgIGFuaW1hdGlvbk9iamVjdC0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5n
RnVuY3Rpb24pOworICAgICAgICBhbmltYXRpb25PYmplY3QtPnNldFRpbWluZ0Z1bmN0aW9uKFdU
Rk1vdmUodGltaW5nRnVuY3Rpb24pKTsKIAogICAgIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwcm9wZXJ0eSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4ubW0KaW5kZXggYmFlOTZiNmEyY2RkZjliYjJjODA5MTFmNzZhNmY0NDhhY2RkZjI0Yi4u
ODUwOWFlNjUwMjRkNGVlNTkyZWQxMjVhMTIxMjE0MGYwN2ZjZTMxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQpAQCAtNjY2LDcgKzY2Niw3IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6
Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgICAg
ICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2Ut
PnRlc3RUcmlnZ2VyKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHBsdWdpblZpZXcoKS0+ZnJh
bWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQucHRyKCkpOworICAgIHBsdWdpblZpZXcoKS0+
ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQpOwogICAgIHJldHVybiB3aWRnZXQ7CiB9
CiAK
</data>
<flag name="review"
          id="320850"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>